diff --git a/src/aria/accordion/accordion.spec.ts b/src/aria/accordion/accordion.spec.ts index 38635ca4a004..f98361b2a251 100644 --- a/src/aria/accordion/accordion.spec.ts +++ b/src/aria/accordion/accordion.spec.ts @@ -32,7 +32,7 @@ describe('AccordionGroup', () => { const endKey = (target: HTMLElement) => keydown(target, 'End'); interface SetupOptions { - initialValue?: string[]; + initialExpandedPanels?: string[]; multiExpandable?: boolean; disabledGroup?: boolean; disabledItemValues?: string[]; @@ -43,8 +43,8 @@ describe('AccordionGroup', () => { function configureAccordionComponent(opts: SetupOptions = {}) { const testComponent = fixture.componentInstance as AccordionGroupExample; - if (opts.initialValue !== undefined) { - testComponent.value.set(opts.initialValue); + if (opts.initialExpandedPanels !== undefined) { + testComponent.expandedPanels.set(opts.initialExpandedPanels); } if (opts.multiExpandable !== undefined) { testComponent.multiExpandable.set(opts.multiExpandable); @@ -109,7 +109,7 @@ describe('AccordionGroup', () => { }); it('should have aria-expanded="false" when collapsed', () => { - configureAccordionComponent({initialValue: []}); + configureAccordionComponent({initialExpandedPanels: []}); expect(triggerElements[0].getAttribute('aria-expanded')).toBe('false'); expect(triggerElements[1].getAttribute('aria-expanded')).toBe('false'); expect(triggerElements[2].getAttribute('aria-expanded')).toBe('false'); @@ -154,7 +154,7 @@ describe('AccordionGroup', () => { }); it('should have "inert" attribute when collapsed', () => { - configureAccordionComponent({initialValue: []}); + configureAccordionComponent({initialExpandedPanels: []}); expect(panelElements[0].hasAttribute('inert')).toBeTrue(); expect(panelElements[1].hasAttribute('inert')).toBeTrue(); expect(panelElements[2].hasAttribute('inert')).toBeTrue(); @@ -168,36 +168,36 @@ describe('AccordionGroup', () => { configureAccordionComponent({multiExpandable: false}); }); - it('should expand panel on trigger click and update value', () => { + it('should expand panel on trigger click and update expanded panels', () => { click(triggerElements[0]); expect(isTriggerExpanded(triggerElements[0])).toBeTrue(); expect(panelElements[0].hasAttribute('inert')).toBeFalse(); - expect(groupInstance.value()).toEqual(['item-1']); + expect(groupInstance.expandedPanels()).toEqual(['item-1']); }); - it('should collapes panel on trigger click and update value', () => { + it('should collapes panel on trigger click and update expanded panels', () => { click(triggerElements[0]); click(triggerElements[0]); // Collapse expect(isTriggerExpanded(triggerElements[0])).toBeFalse(); expect(panelElements[0].hasAttribute('inert')).toBeTrue(); - expect(groupInstance.value()).toEqual([]); + expect(groupInstance.expandedPanels()).toEqual([]); }); it('should expand one and collapse others', () => { click(triggerElements[0]); expect(isTriggerExpanded(triggerElements[0])).toBeTrue(); - expect(groupInstance.value()).toEqual(['item-1']); + expect(groupInstance.expandedPanels()).toEqual(['item-1']); click(triggerElements[1]); expect(isTriggerExpanded(triggerElements[0])).toBeFalse(); expect(panelElements[0].hasAttribute('inert')).toBeTrue(); expect(isTriggerExpanded(triggerElements[1])).toBeTrue(); expect(panelElements[1].hasAttribute('inert')).toBeFalse(); - expect(groupInstance.value()).toEqual(['item-2']); + expect(groupInstance.expandedPanels()).toEqual(['item-2']); }); it('should allow setting initial value', () => { - configureAccordionComponent({initialValue: ['item-2'], multiExpandable: false}); + configureAccordionComponent({initialExpandedPanels: ['item-2'], multiExpandable: false}); expect(isTriggerExpanded(triggerElements[0])).toBeFalse(); expect(isTriggerExpanded(triggerElements[1])).toBeTrue(); expect(isTriggerExpanded(triggerElements[2])).toBeFalse(); @@ -221,16 +221,21 @@ describe('AccordionGroup', () => { it('should collapse an item without affecting others', () => { click(triggerElements[0]); click(triggerElements[1]); - expect(groupInstance.value()).toEqual(jasmine.arrayWithExactContents(['item-1', 'item-2'])); + expect(groupInstance.expandedPanels()).toEqual( + jasmine.arrayWithExactContents(['item-1', 'item-2']), + ); click(triggerElements[0]); expect(isTriggerExpanded(triggerElements[0])).toBeFalse(); expect(isTriggerExpanded(triggerElements[1])).toBeTrue(); - expect(groupInstance.value()).toEqual(['item-2']); + expect(groupInstance.expandedPanels()).toEqual(['item-2']); }); it('should allow setting initial multiple values', () => { - configureAccordionComponent({initialValue: ['item-1', 'item-3'], multiExpandable: true}); + configureAccordionComponent({ + initialExpandedPanels: ['item-1', 'item-3'], + multiExpandable: true, + }); expect(isTriggerExpanded(triggerElements[0])).toBeTrue(); expect(isTriggerExpanded(triggerElements[1])).toBeFalse(); expect(isTriggerExpanded(triggerElements[2])).toBeTrue(); @@ -242,7 +247,7 @@ describe('AccordionGroup', () => { configureAccordionComponent({disabledItemValues: ['item-1']}); click(triggerElements[0]); expect(isTriggerExpanded(triggerElements[0])).toBeFalse(); - expect(groupInstance.value()).toEqual([]); + expect(groupInstance.expandedPanels()).toEqual([]); expect(triggerElements[0].getAttribute('aria-disabled')).toBe('true'); }); @@ -250,7 +255,7 @@ describe('AccordionGroup', () => { configureAccordionComponent({disabledGroup: true}); click(triggerElements[0]); expect(isTriggerExpanded(triggerElements[0])).toBeFalse(); - expect(groupInstance.value()).toEqual([]); + expect(groupInstance.expandedPanels()).toEqual([]); click(triggerElements[1]); expect(isTriggerExpanded(triggerElements[1])).toBeFalse(); }); @@ -382,22 +387,22 @@ describe('AccordionGroup', () => { template: `
- @for (item of items(); track item.value) { + @for (item of items(); track item.panelId) {
{{ item.content }} @@ -411,12 +416,12 @@ describe('AccordionGroup', () => { }) class AccordionGroupExample { items = signal([ - {value: 'item-1', header: 'Item 1 Header', content: 'Item 1 Content', disabled: false}, - {value: 'item-2', header: 'Item 2 Header', content: 'Item 2 Content', disabled: false}, - {value: 'item-3', header: 'Item 3 Header', content: 'Item 3 Content', disabled: false}, + {panelId: 'item-1', header: 'Item 1 Header', content: 'Item 1 Content', disabled: false}, + {panelId: 'item-2', header: 'Item 2 Header', content: 'Item 2 Content', disabled: false}, + {panelId: 'item-3', header: 'Item 3 Header', content: 'Item 3 Content', disabled: false}, ]); - value = model([]); + expandedPanels = model([]); multiExpandable = signal(false); disabledGroup = signal(false); softDisabled = signal(true); @@ -424,7 +429,7 @@ class AccordionGroupExample { disableItem(itemValue: string, disabled: boolean) { this.items.update(items => - items.map(item => (item.value === itemValue ? {...item, disabled} : item)), + items.map(item => (item.panelId === itemValue ? {...item, disabled} : item)), ); } } diff --git a/src/aria/accordion/accordion.ts b/src/aria/accordion/accordion.ts index 0b21b144578f..ab18db0c5b03 100644 --- a/src/aria/accordion/accordion.ts +++ b/src/aria/accordion/accordion.ts @@ -57,8 +57,8 @@ export class AccordionPanel { /** A global unique identifier for the panel. */ private readonly _id = inject(_IdGenerator).getId('accordion-trigger-', true); - /** A local unique identifier for the panel, used to match with its trigger's value. */ - value = input.required(); + /** A local unique identifier for the panel, used to match with its trigger's `panelId`. */ + panelId = input.required(); /** The parent accordion trigger pattern that controls this panel. This is set by AccordionGroup. */ readonly accordionTrigger: WritableSignal = @@ -67,7 +67,7 @@ export class AccordionPanel { /** The UI pattern instance for this panel. */ readonly _pattern: AccordionPanelPattern = new AccordionPanelPattern({ id: () => this._id, - value: this.value, + panelId: this.panelId, accordionTrigger: () => this.accordionTrigger(), }); @@ -111,8 +111,8 @@ export class AccordionTrigger { /** The parent AccordionGroup. */ private readonly _accordionGroup = inject(AccordionGroup); - /** A local unique identifier for the trigger, used to match with its panel's value. */ - value = input.required(); + /** A local unique identifier for the trigger, used to match with its panel's `panelId`. */ + panelId = input.required(); /** Whether the trigger is disabled. */ disabled = input(false, {transform: booleanAttribute}); @@ -130,7 +130,7 @@ export class AccordionTrigger { /** The UI pattern instance for this trigger. */ readonly _pattern: AccordionTriggerPattern = new AccordionTriggerPattern({ id: () => this._id, - value: this.value, + panelId: this.panelId, disabled: this.disabled, element: () => this._elementRef.nativeElement, accordionGroup: computed(() => this._accordionGroup._pattern), @@ -168,8 +168,8 @@ export class AccordionGroup { /** Whether multiple accordion items can be expanded simultaneously. */ multiExpandable = input(true, {transform: booleanAttribute}); - /** The values of the current selected/expanded accordions. */ - value = model([]); + /** The ids of the current expanded accordion panels. */ + expandedPanels = model([]); /** Whether to allow disabled items to receive focus. */ softDisabled = input(true, {transform: booleanAttribute}); @@ -184,7 +184,7 @@ export class AccordionGroup { // `setDefaultState` in the CDK. activeItem: signal(undefined), items: computed(() => this._triggers().map(trigger => trigger._pattern)), - expandedIds: this.value, + expandedIds: this.expandedPanels, // TODO(ok7sai): Investigate whether an accordion should support horizontal mode. orientation: () => 'vertical', element: () => this._elementRef.nativeElement, @@ -197,7 +197,7 @@ export class AccordionGroup { const panels = this._panels(); for (const trigger of triggers) { - const panel = panels.find(p => p.value() === trigger.value()); + const panel = panels.find(p => p.panelId() === trigger.panelId()); trigger.accordionPanel.set(panel?._pattern); if (panel) { panel.accordionTrigger.set(trigger._pattern); diff --git a/src/aria/private/accordion/accordion.spec.ts b/src/aria/private/accordion/accordion.spec.ts index 00f7f806c252..37bf6e1b71e0 100644 --- a/src/aria/private/accordion/accordion.spec.ts +++ b/src/aria/private/accordion/accordion.spec.ts @@ -80,7 +80,7 @@ describe('Accordion Pattern', () => { id: signal('trigger-1-id'), element: signal(createAccordionTriggerElement()), disabled: signal(false), - value: signal('panel-1'), // Value should match the panel it controls + panelId: signal('panel-1'), // Value should match the panel it controls }, { accordionGroup: signal(groupPattern), @@ -88,7 +88,7 @@ describe('Accordion Pattern', () => { id: signal('trigger-2-id'), element: signal(createAccordionTriggerElement()), disabled: signal(false), - value: signal('panel-2'), + panelId: signal('panel-2'), }, { accordionGroup: signal(groupPattern), @@ -96,7 +96,7 @@ describe('Accordion Pattern', () => { id: signal('trigger-3-id'), element: signal(createAccordionTriggerElement()), disabled: signal(false), - value: signal('panel-3'), + panelId: signal('panel-3'), }, ]; triggerPatterns = [ @@ -111,17 +111,17 @@ describe('Accordion Pattern', () => { panelInputs = [ { id: signal('panel-1-id'), - value: signal('panel-1'), + panelId: signal('panel-1'), accordionTrigger: signal(undefined), }, { id: signal('panel-2-id'), - value: signal('panel-2'), + panelId: signal('panel-2'), accordionTrigger: signal(undefined), }, { id: signal('panel-3-id'), - value: signal('panel-3'), + panelId: signal('panel-3'), accordionTrigger: signal(undefined), }, ]; diff --git a/src/aria/private/accordion/accordion.ts b/src/aria/private/accordion/accordion.ts index 5ce414af8df8..f560b845c653 100644 --- a/src/aria/private/accordion/accordion.ts +++ b/src/aria/private/accordion/accordion.ts @@ -72,8 +72,8 @@ export class AccordionGroupPattern { /** Inputs for the AccordionTriggerPattern. */ export type AccordionTriggerInputs = Omit & Omit & { - /** A local unique identifier for the trigger. */ - value: SignalLike; + /** A local unique identifier for the trigger's corresponding panel. */ + panelId: SignalLike; /** The parent accordion group that controls this trigger. */ accordionGroup: SignalLike; @@ -115,10 +115,10 @@ export class AccordionTriggerPattern { constructor(readonly inputs: AccordionTriggerInputs) { this.id = inputs.id; this.element = inputs.element; - this.value = inputs.value; + this.panelId = inputs.panelId; this.expansionControl = new ExpansionControl({ ...inputs, - expansionId: inputs.value, + expansionId: inputs.panelId, expandable: () => true, expansionManager: inputs.accordionGroup().expansionManager, }); @@ -203,8 +203,8 @@ export interface AccordionPanelInputs { /** A global unique identifier for the panel. */ id: SignalLike; - /** A local unique identifier for the panel, matching its trigger's value. */ - value: SignalLike; + /** A local unique identifier for the panel, matching its trigger's panelId. */ + panelId: SignalLike; /** The parent accordion trigger that controls this panel. */ accordionTrigger: SignalLike; @@ -218,7 +218,7 @@ export class AccordionPanelPattern { constructor(readonly inputs: AccordionPanelInputs) { this.id = inputs.id; - this.value = inputs.value; + this.panelId = inputs.panelId; this.accordionTrigger = inputs.accordionTrigger; this.hidden = computed(() => inputs.accordionTrigger()?.expanded() === false); } diff --git a/src/components-examples/aria/accordion/accordion-configurable/accordion-configurable-example.html b/src/components-examples/aria/accordion/accordion-configurable/accordion-configurable-example.html index f2d4d84e1bbc..489b62ed9a82 100644 --- a/src/components-examples/aria/accordion/accordion-configurable/accordion-configurable-example.html +++ b/src/components-examples/aria/accordion/accordion-configurable/accordion-configurable-example.html @@ -21,16 +21,16 @@ [disabled]="disabled.value" [softDisabled]="softDisabled.value" [wrap]="wrap.value" - [(value)]="expandedIds" + [(expandedPanels)]="expandedIds" >

-

-
+

This is the content for Item 1.

@@ -40,12 +40,12 @@

-

-
+

This is the content for Item 2.

@@ -55,12 +55,12 @@

-

-
+

This is the content for Item 3.

@@ -69,12 +69,12 @@

-

-
+

This is the content for Item 4

@@ -83,12 +83,12 @@

-

-
+

This is the content for Item 5

diff --git a/src/components-examples/aria/accordion/accordion-disabled-focusable/accordion-disabled-focusable-example.html b/src/components-examples/aria/accordion/accordion-disabled-focusable/accordion-disabled-focusable-example.html index 9fd34d37eda7..20ba96f33719 100644 --- a/src/components-examples/aria/accordion/accordion-disabled-focusable/accordion-disabled-focusable-example.html +++ b/src/components-examples/aria/accordion/accordion-disabled-focusable/accordion-disabled-focusable-example.html @@ -3,16 +3,16 @@ class="example-accordion-group" [multiExpandable]="true" [softDisabled]="true" - [(value)]="expandedIds" + [(expandedPanels)]="expandedIds" >

-

-
+

This is the content for Item 1.

@@ -21,12 +21,12 @@

-

-
+

This is the content for Item 2. This should not be expandable if trigger is disabled.

@@ -35,12 +35,12 @@

-

-
+

This is the content for Item 3.

@@ -49,12 +49,12 @@

-

-
+

This is the content for Item 4

@@ -63,12 +63,12 @@

-

-
+

This is the content for Item 5

diff --git a/src/components-examples/aria/accordion/accordion-disabled-skipped/accordion-disabled-skipped-example.html b/src/components-examples/aria/accordion/accordion-disabled-skipped/accordion-disabled-skipped-example.html index a4539fbea483..cc4e6ea61497 100644 --- a/src/components-examples/aria/accordion/accordion-disabled-skipped/accordion-disabled-skipped-example.html +++ b/src/components-examples/aria/accordion/accordion-disabled-skipped/accordion-disabled-skipped-example.html @@ -3,16 +3,16 @@ class="example-accordion-group" [multiExpandable]="true" [softDisabled]="false" - [(value)]="expandedIds" + [(expandedPanels)]="expandedIds" >

-

-
+

This is the content for Item 1.

@@ -21,12 +21,12 @@

-

-
+

This is the content for Item 2. This should not be reachable or expandable.

@@ -35,12 +35,12 @@

-

-
+

This is the content for Item 3.

@@ -49,12 +49,12 @@

-

-
+

This is the content for Item 4

@@ -63,12 +63,12 @@

-

-
+

This is the content for Item 5

diff --git a/src/components-examples/aria/accordion/accordion-disabled/accordion-disabled-example.html b/src/components-examples/aria/accordion/accordion-disabled/accordion-disabled-example.html index c77ba9d15824..e70b472420a1 100644 --- a/src/components-examples/aria/accordion/accordion-disabled/accordion-disabled-example.html +++ b/src/components-examples/aria/accordion/accordion-disabled/accordion-disabled-example.html @@ -1,12 +1,12 @@ -
+

-

-
+

This is the content for Item 1.

@@ -16,12 +16,12 @@

-

-
+

This is the content for Item 2.

@@ -31,12 +31,12 @@

-

-
+

This is the content for Item 3.

@@ -45,12 +45,12 @@

-

-
+

This is the content for Item 4

@@ -59,12 +59,12 @@

-

-
+

This is the content for Item 5

diff --git a/src/components-examples/aria/accordion/accordion-multi-expansion/accordion-multi-expansion-example.html b/src/components-examples/aria/accordion/accordion-multi-expansion/accordion-multi-expansion-example.html index fdcc50516d28..a0056042b9dc 100644 --- a/src/components-examples/aria/accordion/accordion-multi-expansion/accordion-multi-expansion-example.html +++ b/src/components-examples/aria/accordion/accordion-multi-expansion/accordion-multi-expansion-example.html @@ -2,16 +2,16 @@ ngAccordionGroup class="example-accordion-group" [multiExpandable]="true" - [(value)]="expandedIds" + [(expandedPanels)]="expandedIds" >

-

-
+

This is the content for Item 1. Multiple items can be expanded.

@@ -21,12 +21,12 @@

-

-
+

This is the content for Item 2.

@@ -36,14 +36,14 @@

-

@@ -54,14 +54,14 @@

-

@@ -72,14 +72,14 @@

-

diff --git a/src/components-examples/aria/accordion/accordion-single-expansion/accordion-single-expansion-example.html b/src/components-examples/aria/accordion/accordion-single-expansion/accordion-single-expansion-example.html index 0a29a42116f1..16e3129ae9da 100644 --- a/src/components-examples/aria/accordion/accordion-single-expansion/accordion-single-expansion-example.html +++ b/src/components-examples/aria/accordion/accordion-single-expansion/accordion-single-expansion-example.html @@ -2,16 +2,16 @@ ngAccordionGroup class="example-accordion-group" [multiExpandable]="false" - [(value)]="expandedIds" + [(expandedPanels)]="expandedIds" >

-

-
+

This is the content for Item 1.

@@ -21,12 +21,12 @@

-

-
+

This is the content for Item 2.

@@ -36,14 +36,14 @@

-

@@ -54,14 +54,14 @@

-

@@ -72,14 +72,14 @@

-

diff --git a/src/components-examples/aria/accordion/cdk-accordion-configurable/cdk-accordion-configurable-example.html b/src/components-examples/aria/accordion/cdk-accordion-configurable/cdk-accordion-configurable-example.html index d48e5bcf6eca..c2dcc08d4ca7 100644 --- a/src/components-examples/aria/accordion/cdk-accordion-configurable/cdk-accordion-configurable-example.html +++ b/src/components-examples/aria/accordion/cdk-accordion-configurable/cdk-accordion-configurable-example.html @@ -21,16 +21,16 @@ [disabled]="disabled.value" [softDisabled]="softDisabled.value" [wrap]="wrap.value" - [(value)]="expandedIds" + [(expandedPanels)]="expandedIds" >

-

-
+

This is the content for Item 1.

@@ -40,12 +40,12 @@

-

-
+

This is the content for Item 2.

@@ -55,14 +55,14 @@

-

@@ -73,14 +73,14 @@

-

@@ -91,14 +91,14 @@

-