Skip to content

Commit c771368

Browse files
committed
refactor(aria/accordion): fix up toggle icons
1 parent d2a3251 commit c771368

File tree

8 files changed

+65
-81
lines changed

8 files changed

+65
-81
lines changed

src/aria/accordion/accordion.spec.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {ChangeDetectionStrategy, Component, computed, signal, viewChildren} from '@angular/core';
1+
import {ChangeDetectionStrategy, Component, signal, viewChildren} from '@angular/core';
22
import {ComponentFixture, TestBed} from '@angular/core/testing';
33
import {provideFakeDirectionality, runAccessibilityChecks} from '@angular/cdk/testing/private';
44
import {_IdGenerator} from '@angular/cdk/a11y';

src/components-examples/aria/accordion/accordion-configurable/accordion-configurable-example.html

Lines changed: 21 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -13,75 +13,25 @@
1313
[softDisabled]="softDisabled.value"
1414
[wrap]="wrap.value"
1515
>
16-
<div class="example-accordion">
17-
<h3 class="example-accordion-header">
18-
<button ngAccordionTrigger class="example-accordion-trigger" [panel]="panel1">
19-
Item 1 Trigger
20-
<mat-icon aria-hidden="true">{{expansionIcon(panel1)}}</mat-icon>
21-
</button>
22-
</h3>
23-
<div ngAccordionPanel #panel1="ngAccordionPanel" class="example-accordion-panel">
24-
<ng-template ngAccordionContent>
25-
<p>This is the content for Item 1.</p>
26-
<button>Focusable Button</button>
27-
</ng-template>
28-
</div>
29-
</div>
30-
31-
<div class="example-accordion">
32-
<h3 class="example-accordion-header">
33-
<button ngAccordionTrigger class="example-accordion-trigger" [panel]="panel2" disabled [expanded]="true">
34-
Item 2 Trigger (disabled)
35-
<mat-icon aria-hidden="true">{{expansionIcon(panel2)}}</mat-icon>
36-
</button>
37-
</h3>
38-
<div ngAccordionPanel #panel2="ngAccordionPanel" class="example-accordion-panel">
39-
<ng-template ngAccordionContent>
40-
<p>This is the content for Item 2.</p>
41-
<label>Input inside panel: <input type="text" /></label>
42-
</ng-template>
43-
</div>
44-
</div>
45-
46-
<div class="example-accordion">
47-
<h3 class="example-accordion-header">
48-
<button ngAccordionTrigger class="example-accordion-trigger" [panel]="panel3">
49-
Item 3 Trigger
50-
<mat-icon aria-hidden="true">{{expansionIcon(panel3)}}</mat-icon>
51-
</button>
52-
</h3>
53-
<div ngAccordionPanel #panel3="ngAccordionPanel" class="example-accordion-panel">
54-
<ng-template ngAccordionContent>
55-
<p>This is the content for Item 3.</p>
56-
</ng-template>
57-
</div>
58-
</div>
59-
60-
<div class="example-accordion">
61-
<h3 class="example-accordion-header">
62-
<button ngAccordionTrigger class="example-accordion-trigger" [panel]="panel4">
63-
Item 4 Trigger
64-
<mat-icon aria-hidden="true">{{expansionIcon(panel4)}}</mat-icon>
65-
</button>
66-
</h3>
67-
<div ngAccordionPanel #panel4="ngAccordionPanel" class="example-accordion-panel">
68-
<ng-template ngAccordionContent>
69-
<p>This is the content for Item 4</p>
70-
</ng-template>
71-
</div>
72-
</div>
73-
74-
<div class="example-accordion">
75-
<h3 class="example-accordion-header">
76-
<button ngAccordionTrigger class="example-accordion-trigger" [panel]="panel5">
77-
Item 5 Trigger
78-
<mat-icon aria-hidden="true">{{expansionIcon(panel5)}}</mat-icon>
79-
</button>
80-
</h3>
81-
<div ngAccordionPanel #panel5="ngAccordionPanel" class="example-accordion-panel">
82-
<ng-template ngAccordionContent>
83-
<p>This is the content for Item 5</p>
84-
</ng-template>
85-
</div>
86-
</div>
16+
@for (item of items(); track item.panelId) {
17+
<div class="example-accordion">
18+
<h3 class="example-accordion-header">
19+
<button ngAccordionTrigger
20+
#trigger="ngAccordionTrigger"
21+
class="example-accordion-trigger"
22+
[disabled]="item.disabled()"
23+
[(expanded)]="item.expanded"
24+
[panel]="panel">
25+
{{item.header}}
26+
<mat-icon aria-hidden="true">{{trigger.expanded() ? 'expand_less' : 'expand_more'}}</mat-icon>
27+
</button>
28+
</h3>
29+
<div ngAccordionPanel #panel="ngAccordionPanel" class="example-accordion-panel">
30+
<ng-template ngAccordionContent>
31+
<p>{{item.content}}</p>
32+
<label>Input inside panel: <input type="text" /></label>
33+
</ng-template>
34+
</div>
35+
</div>
36+
}
8737
</div>

src/components-examples/aria/accordion/accordion-configurable/accordion-configurable-example.ts

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import {Component} from '@angular/core';
1+
import {Component, signal} from '@angular/core';
22
import {FormControl, ReactiveFormsModule} from '@angular/forms';
33
import {MatCheckboxModule} from '@angular/material/checkbox';
44
import {MatFormFieldModule} from '@angular/material/form-field';
@@ -37,7 +37,41 @@ export class AccordionConfigurableExample {
3737
disabled = new FormControl(false, {nonNullable: true});
3838
softDisabled = new FormControl(true, {nonNullable: true});
3939

40-
expansionIcon(panel: AccordionPanel): string {
41-
return panel ? 'expand_less' : 'expand_more';
42-
}
40+
items = signal([
41+
{
42+
panelId: 'item-1',
43+
header: 'Item 1 Trigger',
44+
content: 'This is the content for Item 1.',
45+
disabled: signal(false),
46+
expanded: signal(false),
47+
},
48+
{
49+
panelId: 'item-2',
50+
header: 'Item 2 Trigger (disabled)',
51+
content: 'This is the content for Item 2.',
52+
disabled: signal(true),
53+
expanded: signal(false),
54+
},
55+
{
56+
panelId: 'item-3',
57+
header: 'Item 3 Trigger',
58+
content: 'This is the content for Item 3.',
59+
disabled: signal(false),
60+
expanded: signal(false),
61+
},
62+
{
63+
panelId: 'item-4',
64+
header: 'Item 4 Trigger',
65+
content: 'This is the content for Item 4.',
66+
disabled: signal(false),
67+
expanded: signal(false),
68+
},
69+
{
70+
panelId: 'item-5',
71+
header: 'Item 5 Trigger',
72+
content: 'This is the content for Item 5.',
73+
disabled: signal(false),
74+
expanded: signal(false),
75+
},
76+
]);
4377
}

src/components-examples/aria/accordion/accordion-disabled-focusable/accordion-disabled-focusable-example.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ import {
1616
})
1717
export class AccordionDisabledFocusableExample {
1818
expansionIcon(panel: AccordionPanel): string {
19-
return panel ? 'expand_less' : 'expand_more';
19+
return panel.visible() ? 'expand_less' : 'expand_more';
2020
}
2121
}

src/components-examples/aria/accordion/accordion-disabled-skipped/accordion-disabled-skipped-example.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ import {
1616
})
1717
export class AccordionDisabledSkippedExample {
1818
expansionIcon(panel: AccordionPanel): string {
19-
return panel ? 'expand_less' : 'expand_more';
19+
return panel.visible() ? 'expand_less' : 'expand_more';
2020
}
2121
}

src/components-examples/aria/accordion/accordion-disabled/accordion-disabled-example.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ import {
1616
})
1717
export class AccordionDisabledExample {
1818
expansionIcon(panel: AccordionPanel): string {
19-
return panel ? 'expand_less' : 'expand_more';
19+
return panel.visible() ? 'expand_less' : 'expand_more';
2020
}
2121
}

src/components-examples/aria/accordion/accordion-multi-expansion/accordion-multi-expansion-example.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ import {
1616
})
1717
export class AccordionMultiExpansionExample {
1818
expansionIcon(panel: AccordionPanel): string {
19-
return panel ? 'expand_less' : 'expand_more';
19+
return panel.visible() ? 'expand_less' : 'expand_more';
2020
}
2121
}

src/components-examples/aria/accordion/accordion-single-expansion/accordion-single-expansion-example.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ import {
1616
})
1717
export class AccordionSingleExpansionExample {
1818
expansionIcon(panel: AccordionPanel): string {
19-
return panel ? 'expand_less' : 'expand_more';
19+
return panel.visible() ? 'expand_less' : 'expand_more';
2020
}
2121
}

0 commit comments

Comments
 (0)