Skip to content

Commit fbfb4da

Browse files
Wendellvthinkxie
authored andcommitted
feat(module:collapse): support nzExtra (#3177)
* feat(module:collapse): support extra * docs: add extra demo
1 parent 4260a40 commit fbfb4da

10 files changed

Lines changed: 84 additions & 5 deletions

File tree

components/collapse/demo/extra.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
order: 5
3+
title:
4+
zh-CN: 额外节点
5+
en-US: Extra Node
6+
---
7+
8+
## zh-CN
9+
10+
你可以通过 `nzExtra` 来指定面板右上角的额外内容。
11+
12+
## en-US
13+
14+
You can use `nzExtra` to put extra elements in the top right corner.

components/collapse/demo/extra.ts

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
import { Component } from '@angular/core';
2+
3+
@Component({
4+
selector: 'nz-demo-collapse-extra',
5+
template: `
6+
<nz-collapse>
7+
<nz-collapse-panel
8+
*ngFor="let panel of panels"
9+
[nzHeader]="panel.name"
10+
[nzActive]="panel.active"
11+
[nzExtra]="extraTpl"
12+
[nzDisabled]="panel.disabled"
13+
>
14+
<p style="margin:0;">
15+
A dog is a type of domesticated animal. Known for its loyalty and faithfulness, it can be found as a welcome
16+
guest in many households across the world.
17+
</p>
18+
</nz-collapse-panel>
19+
</nz-collapse>
20+
<ng-template #extraTpl>
21+
<i nz-icon nzType="setting"></i>
22+
</ng-template>
23+
`,
24+
styles: []
25+
})
26+
export class NzDemoCollapseExtraComponent {
27+
panels = [
28+
{
29+
active: true,
30+
name: 'This is panel header 1',
31+
disabled: false
32+
},
33+
{
34+
active: false,
35+
disabled: false,
36+
name: 'This is panel header 2'
37+
},
38+
{
39+
active: false,
40+
disabled: true,
41+
name: 'This is panel header 3'
42+
}
43+
];
44+
}

components/collapse/doc/index.en-US.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@ A content area which can be collapsed and expanded.
2727
| -------- | ----------- | ---- | ------- |
2828
| `[nzDisabled]` | If `true`, panel cannot be opened or closed | `boolean` | `false` |
2929
| `[nzHeader]` | Title of the panel | `string|TemplateRef<void>` | - |
30+
| `[nzExpandedIcon]` | Customize an icon for toggle | `string|TemplateRef<void>` | - |
31+
| `[nzExtra]` | Extra element in the corner | `string|TemplateRef<void>` | - |
3032
| `[nzShowArrow]` | Display arrow or not | `boolean` | `true` |
3133
| `[nzActive]` | Active status of panel, double binding | `boolean` | - |
3234
| `(nzActiveChange)` | Callback function of the active status | `EventEmitter<boolean>` | - |
33-
| `[nzExpandedIcon]` | Customize an icon for toggle | `string|TemplateRef<void>` | - |

components/collapse/doc/index.zh-CN.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ cols: 1
2828
| --- | --- | --- | --- |
2929
| `[nzDisabled]` | 禁用后的面板展开与否将无法通过用户交互改变 | `boolean` | `false` |
3030
| `[nzHeader]` | 面板头内容 | `string|TemplateRef<void>` | - |
31+
| `[nzExpandedIcon]` | 自定义切换图标 | `string|TemplateRef<void>` | - |
32+
| `[nzExtra]` | 自定义渲染每个面板右上角的内容 | `string|TemplateRef<void>` | - |
3133
| `[nzShowArrow]` | 是否展示箭头 | `boolean` | `true` |
3234
| `[nzActive]` | 面板是否展开,可双向绑定 | `boolean` | - |
3335
| `(nzActiveChange)` | 面板展开回调 | `EventEmitter<boolean>` | - |
34-
| `[nzExpandedIcon]` | 自定义切换图标 | `string|TemplateRef<void>` | - |

components/collapse/nz-collapse-panel.component.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55
</ng-container>
66
</ng-container>
77
<ng-container *nzStringTemplateOutlet="nzHeader">{{ nzHeader }}</ng-container>
8+
<div class="ant-collapse-extra" *ngIf="nzExtra">
9+
<ng-container *nzStringTemplateOutlet="nzExtra">{{ nzExtra }}</ng-container>
10+
</div>
811
</div>
912
<div class="ant-collapse-content"
1013
[class.ant-collapse-content-active]="nzActive"

components/collapse/nz-collapse-panel.component.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export class NzCollapsePanelComponent implements OnInit, OnDestroy {
4040
@Input() @InputBoolean() @HostBinding('class.ant-collapse-item-active') nzActive = false;
4141
@Input() @InputBoolean() @HostBinding('class.ant-collapse-item-disabled') nzDisabled = false;
4242
@Input() @InputBoolean() nzShowArrow = true;
43+
@Input() nzExtra: string | TemplateRef<void>;
4344
@Input() nzHeader: string | TemplateRef<void>;
4445
@Input() nzExpandedIcon: string | TemplateRef<void>;
4546
@Output() readonly nzActiveChange = new EventEmitter<boolean>();

components/collapse/nz-collapse.spec.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,16 @@ describe('collapse', () => {
129129
fixture.detectChanges();
130130
expect(panels[0].nativeElement.querySelector('.ant-collapse-header').innerText).toBe('string');
131131
});
132+
it('should extra work', () => {
133+
fixture.detectChanges();
134+
expect(panels[0].nativeElement.querySelector('.ant-collapse-extra')).toBeFalsy();
135+
136+
testComponent.showExtra = 'Extra';
137+
fixture.detectChanges();
138+
const extraEl = panels[0].nativeElement.querySelector('.ant-collapse-extra');
139+
expect(extraEl!).not.toBeFalsy();
140+
expect(extraEl!.innerText).toBe('Extra');
141+
});
132142
});
133143
describe('collapse template', () => {
134144
let fixture: ComponentFixture<NzTestCollapseTemplateComponent>;
@@ -171,6 +181,7 @@ describe('collapse', () => {
171181
(nzActiveChange)="active01Change($event)"
172182
[nzHeader]="header"
173183
[nzShowArrow]="showArrow"
184+
[nzExtra]="showExtra"
174185
>
175186
<p>Panel01</p>
176187
</nz-collapse-panel>
@@ -188,7 +199,7 @@ export class NzTestCollapseBasicComponent {
188199
active01 = false;
189200
active02 = false;
190201
showArrow = true;
191-
// showExtra = '';
202+
showExtra = '';
192203
header = 'string';
193204
active01Change = jasmine.createSpy('active01 callback');
194205
active02Change = jasmine.createSpy('active02 callback');

components/collapse/style/index.less

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,10 @@
4444
}
4545
}
4646

47+
.@{collapse-prefix-cls}-extra {
48+
float: right;
49+
}
50+
4751
&:focus {
4852
outline: none;
4953
}

components/style/themes/default.less

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -526,7 +526,7 @@
526526

527527
// Collapse
528528
// ---
529-
@collapse-header-padding: 12px 0 12px 40px;
529+
@collapse-header-padding: 12px 16px 12px 40px;
530530
@collapse-header-bg: @background-color-light;
531531
@collapse-content-padding: @padding-md;
532532
@collapse-content-bg: @component-background;

scripts/site/_site/doc/theme.less

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -494,7 +494,7 @@
494494

495495
// Collapse
496496
// ---
497-
@collapse-header-padding: 12px 0 12px 40px;
497+
@collapse-header-padding: 12px 16px 12px 40px;
498498
@collapse-header-bg: @background-color-light;
499499
@collapse-content-padding: @padding-md;
500500
@collapse-content-bg: @component-background;

0 commit comments

Comments
 (0)