@fluentui/web-components 3.0.0-rc.11 → 3.0.0-rc.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (33) hide show
  1. package/CHANGELOG.md +20 -2
  2. package/custom-elements.json +1091 -288
  3. package/dist/esm/accordion/accordion.d.ts +2 -1
  4. package/dist/esm/accordion/accordion.js +52 -49
  5. package/dist/esm/accordion/accordion.js.map +1 -1
  6. package/dist/esm/accordion-item/accordion-item.options.d.ts +11 -1
  7. package/dist/esm/accordion-item/accordion-item.options.js +12 -0
  8. package/dist/esm/accordion-item/accordion-item.options.js.map +1 -1
  9. package/dist/esm/index.d.ts +2 -2
  10. package/dist/esm/index.js +2 -2
  11. package/dist/esm/index.js.map +1 -1
  12. package/dist/esm/menu-list/index.d.ts +1 -0
  13. package/dist/esm/menu-list/index.js +1 -0
  14. package/dist/esm/menu-list/index.js.map +1 -1
  15. package/dist/esm/menu-list/menu-list.base.d.ts +76 -0
  16. package/dist/esm/menu-list/menu-list.base.js +251 -0
  17. package/dist/esm/menu-list/menu-list.base.js.map +1 -0
  18. package/dist/esm/menu-list/menu-list.d.ts +3 -70
  19. package/dist/esm/menu-list/menu-list.js +3 -244
  20. package/dist/esm/menu-list/menu-list.js.map +1 -1
  21. package/dist/esm/radio-group/index.d.ts +1 -0
  22. package/dist/esm/radio-group/index.js +1 -0
  23. package/dist/esm/radio-group/index.js.map +1 -1
  24. package/dist/esm/radio-group/radio-group.base.d.ts +285 -0
  25. package/dist/esm/radio-group/radio-group.base.js +497 -0
  26. package/dist/esm/radio-group/radio-group.base.js.map +1 -0
  27. package/dist/esm/radio-group/radio-group.d.ts +4 -280
  28. package/dist/esm/radio-group/radio-group.js +4 -491
  29. package/dist/esm/radio-group/radio-group.js.map +1 -1
  30. package/dist/web-components.d.ts +1847 -1828
  31. package/dist/web-components.js +95 -77
  32. package/dist/web-components.min.js +150 -150
  33. package/package.json +1 -1
@@ -21,7 +21,7 @@ export declare class Accordion extends FASTElement {
21
21
  * HTML attribute: expand-mode
22
22
  */
23
23
  expandmode: AccordionExpandMode;
24
- expandmodeChanged(prev: AccordionExpandMode, next: AccordionExpandMode): void;
24
+ expandmodeChanged(prev: AccordionExpandMode | undefined, next: AccordionExpandMode): void;
25
25
  /**
26
26
  * @internal
27
27
  */
@@ -73,4 +73,5 @@ export declare class Accordion extends FASTElement {
73
73
  * @returns
74
74
  */
75
75
  private expandedChangedHandler;
76
+ connectedCallback(): void;
76
77
  }
@@ -1,7 +1,7 @@
1
1
  import { __decorate } from "tslib";
2
- import { Observable } from '@microsoft/fast-element';
3
- import { attr, FASTElement, observable } from '@microsoft/fast-element';
4
- import { BaseAccordionItem } from '../accordion-item/accordion-item.base.js';
2
+ import { attr, FASTElement, Observable, observable } from '@microsoft/fast-element';
3
+ import { waitForConnectedDescendants } from '../utils/request-idle-callback.js';
4
+ import { isAccordionItem } from '../accordion-item/accordion-item.options.js';
5
5
  import { AccordionExpandMode } from './accordion.options.js';
6
6
  /**
7
7
  * An Accordion Custom HTML Element
@@ -17,15 +17,6 @@ import { AccordionExpandMode } from './accordion.options.js';
17
17
  export class Accordion extends FASTElement {
18
18
  constructor() {
19
19
  super(...arguments);
20
- /**
21
- * Controls the expand mode of the Accordion, either allowing
22
- * single or multiple item expansion.
23
- * @public
24
- *
25
- * @remarks
26
- * HTML attribute: expand-mode
27
- */
28
- this.expandmode = AccordionExpandMode.multi;
29
20
  this.activeItemIndex = 0;
30
21
  /**
31
22
  * Resets event listeners and sets the `accordionItems` property
@@ -33,25 +24,27 @@ export class Accordion extends FASTElement {
33
24
  * @returns {void}
34
25
  */
35
26
  this.setItems = () => {
36
- if (this.slottedAccordionItems.length === 0) {
37
- return;
38
- }
39
- // Get all existing children and remove event listeners
40
- const children = Array.from(this.children);
41
- this.removeItemListeners(children);
42
- // Resubscribe to the `disabled` attribute of all children
43
- children.forEach((child) => Observable.getNotifier(child).subscribe(this, 'disabled'));
44
- // Add event listeners to each non-disabled AccordionItem
45
- this.accordionItems = children.filter(child => !child.hasAttribute('disabled'));
46
- this.accordionItems.forEach((item, index) => {
47
- item.addEventListener('click', this.expandedChangedHandler);
48
- // Subscribe to the expanded attribute of the item
49
- Observable.getNotifier(item).subscribe(this, 'expanded');
27
+ waitForConnectedDescendants(this, () => {
28
+ if (this.slottedAccordionItems.length === 0) {
29
+ return;
30
+ }
31
+ // Get all existing children and remove event listeners
32
+ const children = Array.from(this.children);
33
+ this.removeItemListeners(children);
34
+ // Resubscribe to the `disabled` attribute of all children
35
+ children.forEach((child) => Observable.getNotifier(child).subscribe(this, 'disabled'));
36
+ // Add event listeners to each non-disabled AccordionItem
37
+ this.accordionItems = children.filter(child => !child.hasAttribute('disabled'));
38
+ this.accordionItems.forEach((item, index) => {
39
+ item.addEventListener('click', this.expandedChangedHandler);
40
+ // Subscribe to the expanded attribute of the item
41
+ Observable.getNotifier(item).subscribe(this, 'expanded');
42
+ });
43
+ if (this.isSingleExpandMode()) {
44
+ const expandedItem = this.findExpandedItem();
45
+ this.setSingleExpandMode(expandedItem);
46
+ }
50
47
  });
51
- if (this.isSingleExpandMode()) {
52
- const expandedItem = this.findExpandedItem();
53
- this.setSingleExpandMode(expandedItem);
54
- }
55
48
  };
56
49
  /**
57
50
  * Removes event listeners from the previous accordion items
@@ -71,7 +64,7 @@ export class Accordion extends FASTElement {
71
64
  */
72
65
  this.expandedChangedHandler = (evt) => {
73
66
  const item = evt.target;
74
- if (item instanceof BaseAccordionItem) {
67
+ if (isAccordionItem(item)) {
75
68
  if (!this.isSingleExpandMode()) {
76
69
  item.expanded = !item.expanded;
77
70
  // setSingleExpandMode sets activeItemIndex on its own
@@ -128,10 +121,11 @@ export class Accordion extends FASTElement {
128
121
  * @returns {void}
129
122
  */
130
123
  findExpandedItem() {
131
- if (this.accordionItems.length === 0) {
124
+ if (!this.accordionItems || this.accordionItems?.length === 0) {
132
125
  return null;
133
126
  }
134
- return (this.accordionItems.find((item) => item instanceof BaseAccordionItem && item.expanded) ?? this.accordionItems[0]);
127
+ return (this.accordionItems.find((item) => isAccordionItem(item) && item.expanded) ??
128
+ this.accordionItems[0]);
135
129
  }
136
130
  /**
137
131
  * Checks if the accordion is in single expand mode
@@ -146,24 +140,33 @@ export class Accordion extends FASTElement {
146
140
  * @returns {void}
147
141
  */
148
142
  setSingleExpandMode(expandedItem) {
149
- if (this.accordionItems.length === 0) {
150
- return;
151
- }
152
- const currentItems = Array.from(this.accordionItems);
153
- this.activeItemIndex = currentItems.indexOf(expandedItem);
154
- currentItems.forEach((item, index) => {
155
- if (item instanceof BaseAccordionItem) {
156
- if (this.activeItemIndex === index) {
157
- item.expanded = true;
158
- item.expandbutton.setAttribute('aria-disabled', 'true');
159
- }
160
- else {
161
- item.expanded = false;
162
- if (!item.hasAttribute('disabled')) {
163
- item.expandbutton.removeAttribute('aria-disabled');
143
+ requestAnimationFrame(() => {
144
+ if (this.accordionItems.length === 0) {
145
+ return;
146
+ }
147
+ const currentItems = Array.from(this.accordionItems);
148
+ this.activeItemIndex = currentItems.indexOf(expandedItem);
149
+ currentItems.forEach((item, index) => {
150
+ if (isAccordionItem(item)) {
151
+ if (this.activeItemIndex === index) {
152
+ item.expanded = true;
153
+ item.expandbutton.setAttribute('aria-disabled', 'true');
154
+ }
155
+ else {
156
+ item.expanded = false;
157
+ if (!item.hasAttribute('disabled')) {
158
+ item.expandbutton.removeAttribute('aria-disabled');
159
+ }
164
160
  }
165
161
  }
166
- }
162
+ });
163
+ });
164
+ }
165
+ connectedCallback() {
166
+ super.connectedCallback();
167
+ requestAnimationFrame(() => {
168
+ this.expandmode = this.expandmode || AccordionExpandMode.multi;
169
+ this.setItems();
167
170
  });
168
171
  }
169
172
  }
@@ -1 +1 @@
1
- {"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../../src/accordion/accordion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"accordion.js","sourceRoot":"","sources":["../../../src/accordion/accordion.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAW,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D;;;;;;;;;;GAUG;AACH,MAAM,OAAO,SAAU,SAAQ,WAAW;IAA1C;;QAmEU,oBAAe,GAAW,CAAC,CAAC;QAiBpC;;;;WAIG;QACK,aAAQ,GAAG,GAAS,EAAE;YAC5B,2BAA2B,CAAC,IAAI,EAAE,GAAG,EAAE;gBACrC,IAAI,IAAI,CAAC,qBAAqB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5C,OAAO;gBACT,CAAC;gBAED,uDAAuD;gBACvD,MAAM,QAAQ,GAAc,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACtD,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;gBAEnC,0DAA0D;gBAC1D,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;gBAEhG,yDAAyD;gBACzD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;gBAChF,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAa,EAAE,KAAa,EAAE,EAAE;oBAC3D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;oBAC5D,kDAAkD;oBAClD,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;oBAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAuB,CAAC;oBAClE,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAwCF;;;WAGG;QACK,wBAAmB,GAAG,CAAC,QAAa,EAAQ,EAAE;YACpD,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAiB,EAAE,KAAa,EAAE,EAAE;gBACpD,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC3D,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAC3D,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF;;;;WAIG;QACK,2BAAsB,GAAkB,CAAC,GAAU,EAAQ,EAAE;YACnE,MAAM,IAAI,GAAG,GAAG,CAAC,MAAqB,CAAC;YAEvC,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;oBAC/B,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC/B,sDAAsD;oBACtD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC3D,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;gBACjC,CAAC;gBAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC;IAUJ,CAAC;IAzLQ,iBAAiB,CAAC,IAAqC,EAAE,IAAyB;QACvF,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;YACtC,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAE7C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QAED,IAAI,IAAI,KAAK,mBAAmB,CAAC,MAAM,EAAE,CAAC;YACxC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;QAED,uCAAuC;QACtC,YAAkC,EAAE,YAAY,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IACrF,CAAC;IAaD;;OAEG;IACI,4BAA4B,CAAC,QAAuB,EAAE,QAAuB;QAClF,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,YAAY,CAAC,MAAW,EAAE,YAAoB;QACnD,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;YAChC,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC;aAAM,IAAI,YAAY,KAAK,UAAU,EAAE,CAAC;YACvC,mDAAmD;YACnD,8DAA8D;YAC9D,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;gBACjD,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAID;;;OAGG;IACK,gBAAgB;QACtB,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,CACL,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAiC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC;YACvG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CACvB,CAAC;IACJ,CAAC;IAmCD;;;OAGG;IACK,kBAAkB;QACxB,OAAO,IAAI,CAAC,UAAU,KAAK,mBAAmB,CAAC,MAAM,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACK,mBAAmB,CAAC,YAAqB;QAC/C,qBAAqB,CAAC,GAAG,EAAE;YACzB,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACrC,OAAO;YACT,CAAC;YACD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;YACrD,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAE1D,YAAY,CAAC,OAAO,CAAC,CAAC,IAAa,EAAE,KAAa,EAAE,EAAE;gBACpD,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC1B,IAAI,IAAI,CAAC,eAAe,KAAK,KAAK,EAAE,CAAC;wBACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;wBACrB,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;oBAC1D,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;wBAEtB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;4BACnC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;wBACrD,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAmCD,iBAAiB;QACf,KAAK,CAAC,iBAAiB,EAAE,CAAC;QAE1B,qBAAqB,CAAC,GAAG,EAAE;YACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAC,KAAK,CAAC;YAC/D,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;CACF;AA1LQ;IADN,IAAI,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC;6CACK;AAyBjC;IADN,UAAU;wDACkC"}
@@ -1,4 +1,5 @@
1
- import type { ValuesOf } from '../utils/index.js';
1
+ import { type ValuesOf } from '../utils/typings.js';
2
+ import type { BaseAccordionItem } from './accordion-item.base.js';
2
3
  /**
3
4
  * An Accordion Item header font size can be small, medium, large, and extra-large
4
5
  */
@@ -25,3 +26,12 @@ export declare const AccordionItemMarkerPosition: {
25
26
  * @public
26
27
  */
27
28
  export type AccordionItemMarkerPosition = ValuesOf<typeof AccordionItemMarkerPosition>;
29
+ /**
30
+ * Predicate function that determines if the element should be considered an accordion item element.
31
+ *
32
+ * @param element - The element to check.
33
+ * @param tagName - The tag name to check against, defaults to '-accordion-item'.
34
+ * @returns True if the element is an accordion item element, false otherwise.
35
+ * @public
36
+ */
37
+ export declare function isAccordionItem(element?: Node | null, tagName?: string): element is BaseAccordionItem;
@@ -1,3 +1,4 @@
1
+ import { isCustomElement } from '../utils/typings.js';
1
2
  /**
2
3
  * An Accordion Item header font size can be small, medium, large, and extra-large
3
4
  */
@@ -14,4 +15,15 @@ export const AccordionItemMarkerPosition = {
14
15
  start: 'start',
15
16
  end: 'end',
16
17
  };
18
+ /**
19
+ * Predicate function that determines if the element should be considered an accordion item element.
20
+ *
21
+ * @param element - The element to check.
22
+ * @param tagName - The tag name to check against, defaults to '-accordion-item'.
23
+ * @returns True if the element is an accordion item element, false otherwise.
24
+ * @public
25
+ */
26
+ export function isAccordionItem(element, tagName = '-accordion-item') {
27
+ return isCustomElement(tagName)(element);
28
+ }
17
29
  //# sourceMappingURL=accordion-item.options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"accordion-item.options.js","sourceRoot":"","sources":["../../../src/accordion-item/accordion-item.options.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,aAAa;CACjB,CAAC;AAQX;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;CACF,CAAC"}
1
+ {"version":3,"file":"accordion-item.options.js","sourceRoot":"","sources":["../../../src/accordion-item/accordion-item.options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAiB,MAAM,qBAAqB,CAAC;AAGrE;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,UAAU,EAAE,aAAa;CACjB,CAAC;AAQX;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;CACF,CAAC;AAQX;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,OAAqB,EACrB,UAAkB,iBAAiB;IAEnC,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;AAC3C,CAAC"}
@@ -28,13 +28,13 @@ export { MenuButton, MenuButtonAppearance, MenuButtonDefinition, MenuButtonShape
28
28
  export type { MenuButtonOptions } from './menu-button/index.js';
29
29
  export { MenuItem, MenuItemDefinition, MenuItemRole, MenuItemStyles, MenuItemTemplate, roleForMenuItem, } from './menu-item/index.js';
30
30
  export type { MenuItemColumnCount, MenuItemOptions } from './menu-item/index.js';
31
- export { MenuList, MenuListDefinition, MenuListStyles, MenuListTemplate } from './menu-list/index.js';
31
+ export { BaseMenuList, MenuList, MenuListDefinition, MenuListStyles, MenuListTemplate } from './menu-list/index.js';
32
32
  export { Menu, MenuDefinition, MenuStyles, MenuTemplate } from './menu/index.js';
33
33
  export { DropdownOption, DropdownOptionDefinition, DropdownOptionStyles, DropdownOptionTemplate, isDropdownOption, type DropdownOptionOptions, } from './option/index.js';
34
34
  export { StartEnd, endSlotTemplate, startSlotTemplate } from './patterns/start-end.js';
35
35
  export type { StartOptions, EndOptions, StartEndOptions } from './patterns/start-end.js';
36
36
  export { BaseProgressBar, ProgressBar, ProgressBarDefinition, ProgressBarShape, ProgressBarStyles, ProgressBarTemplate, ProgressBarThickness, ProgressBarValidationState, } from './progress-bar/index.js';
37
- export { RadioGroup, RadioGroupDefinition, RadioGroupOrientation, RadioGroupStyles, RadioGroupTemplate, } from './radio-group/index.js';
37
+ export { BaseRadioGroup, RadioGroup, RadioGroupDefinition, RadioGroupOrientation, RadioGroupStyles, RadioGroupTemplate, } from './radio-group/index.js';
38
38
  export { Radio, RadioDefinition, RadioStyles, RadioTemplate } from './radio/index.js';
39
39
  export type { RadioControl, RadioOptions } from './radio/index.js';
40
40
  export { BaseRatingDisplay, RatingDisplay, RatingDisplayColor, RatingDisplayDefinition, RatingDisplaySize, RatingDisplayStyles, RatingDisplayTemplate, } from './rating-display/index.js';
package/dist/esm/index.js CHANGED
@@ -22,12 +22,12 @@ export { BaseAnchor, AnchorButton, AnchorButtonAppearance, AnchorButtonDefinitio
22
22
  export { MessageBar, MessageBarDefinition, MessageBarIntent, MessageBarLayout, MessageBarShape, MessageBarStyles, MessageBarTemplate, } from './message-bar/index.js';
23
23
  export { MenuButton, MenuButtonAppearance, MenuButtonDefinition, MenuButtonShape, MenuButtonSize, MenuButtonStyles, MenuButtonTemplate, } from './menu-button/index.js';
24
24
  export { MenuItem, MenuItemDefinition, MenuItemRole, MenuItemStyles, MenuItemTemplate, roleForMenuItem, } from './menu-item/index.js';
25
- export { MenuList, MenuListDefinition, MenuListStyles, MenuListTemplate } from './menu-list/index.js';
25
+ export { BaseMenuList, MenuList, MenuListDefinition, MenuListStyles, MenuListTemplate } from './menu-list/index.js';
26
26
  export { Menu, MenuDefinition, MenuStyles, MenuTemplate } from './menu/index.js';
27
27
  export { DropdownOption, DropdownOptionDefinition, DropdownOptionStyles, DropdownOptionTemplate, isDropdownOption, } from './option/index.js';
28
28
  export { StartEnd, endSlotTemplate, startSlotTemplate } from './patterns/start-end.js';
29
29
  export { BaseProgressBar, ProgressBar, ProgressBarDefinition, ProgressBarShape, ProgressBarStyles, ProgressBarTemplate, ProgressBarThickness, ProgressBarValidationState, } from './progress-bar/index.js';
30
- export { RadioGroup, RadioGroupDefinition, RadioGroupOrientation, RadioGroupStyles, RadioGroupTemplate, } from './radio-group/index.js';
30
+ export { BaseRadioGroup, RadioGroup, RadioGroupDefinition, RadioGroupOrientation, RadioGroupStyles, RadioGroupTemplate, } from './radio-group/index.js';
31
31
  export { Radio, RadioDefinition, RadioStyles, RadioTemplate } from './radio/index.js';
32
32
  export { BaseRatingDisplay, RatingDisplay, RatingDisplayColor, RatingDisplayDefinition, RatingDisplaySize, RatingDisplayStyles, RatingDisplayTemplate, } from './rating-display/index.js';
33
33
  export { Slider, SliderDefinition, SliderMode, SliderOrientation, SliderSize, SliderStyles, SliderTemplate, } from './slider/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,uBAAuB,EACvB,2BAA2B,EAC3B,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,GAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7G,OAAO,EACL,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,cAAc,EACd,UAAU,GACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,KAAK,EACL,eAAe,EACf,UAAU,EACV,eAAe,EACf,UAAU,EACV,SAAS,EACT,WAAW,EACX,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,UAAU,EACV,MAAM,EACN,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,YAAY,EACZ,cAAc,EACd,UAAU,GACX,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,gBAAgB,EAAE,cAAc,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACjH,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChH,OAAO,EACL,WAAW,EACX,OAAO,EACP,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,GACb,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAChH,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,UAAU,EAEV,cAAc,EACd,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,aAAa,EACb,eAAe,EACf,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,SAAS,EACT,KAAK,EACL,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,WAAW,EACX,aAAa,GACd,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5G,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC9G,OAAO,EACL,UAAU,EACV,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,YAAY,GACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,UAAU,EACV,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,QAAQ,EACR,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,eAAe,GAChB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACpH,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACjF,OAAO,EACL,cAAc,EACd,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,gBAAgB,GAEjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEvF,OAAO,EACL,eAAe,EACf,WAAW,EACX,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,cAAc,EACd,UAAU,EACV,oBAAoB,EACpB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtF,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,cAAc,GACf,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,MAAM,EAEN,mBAAmB,EACnB,gBAAgB,EAChB,YAAY,EACZ,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAmB,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpG,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,6BAA6B,EAC7B,qBAAqB,EACrB,gCAAgC,EAChC,8BAA8B,EAC9B,wBAAwB,EACxB,8BAA8B,EAC9B,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,iCAAiC,EACjC,yBAAyB,EACzB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,0CAA0C,CAAC;AAClD,OAAO,EACL,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,YAAY,EACZ,QAAQ,EACR,kBAAkB,EAClB,mCAAmC,EACnC,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,aAAa,EACb,SAAS,EACT,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,aAAa,GACd,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,IAAI,EACJ,SAAS,EACT,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,cAAc,0BAA0B,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAc,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,OAAO,EACP,iBAAiB,EACjB,wBAAwB,EACxB,aAAa,EACb,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtG,OAAO,EACL,0BAA0B,EAC1B,8BAA8B,EAC9B,2BAA2B,EAC3B,kBAAkB,EAClB,4BAA4B,GAC7B,MAAM,sDAAsD,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,3 +1,4 @@
1
+ export { BaseMenuList } from './menu-list.base.js';
1
2
  export { MenuList } from './menu-list.js';
2
3
  export { template as MenuListTemplate } from './menu-list.template.js';
3
4
  export { styles as MenuListStyles } from './menu-list.styles.js';
@@ -1,3 +1,4 @@
1
+ export { BaseMenuList } from './menu-list.base.js';
1
2
  export { MenuList } from './menu-list.js';
2
3
  export { template as MenuListTemplate } from './menu-list.template.js';
3
4
  export { styles as MenuListStyles } from './menu-list.styles.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/menu-list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/menu-list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,QAAQ,IAAI,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACvE,OAAO,EAAE,MAAM,IAAI,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,76 @@
1
+ import { FASTElement } from '@microsoft/fast-element';
2
+ /**
3
+ * A Base Menu List Custom HTML Element.
4
+ * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#menu | ARIA menu }.
5
+ *
6
+ * @public
7
+ */
8
+ export declare class BaseMenuList extends FASTElement {
9
+ /**
10
+ * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
11
+ *
12
+ * @internal
13
+ */
14
+ elementInternals: ElementInternals;
15
+ /**
16
+ * @internal
17
+ */
18
+ items: HTMLElement[];
19
+ protected itemsChanged(oldValue: HTMLElement[], newValue: HTMLElement[]): void;
20
+ protected menuItems: Element[] | undefined;
21
+ /**
22
+ * The index of the focusable element in the items array
23
+ * defaults to -1
24
+ */
25
+ private focusIndex;
26
+ private static focusableElementRoles;
27
+ constructor();
28
+ /**
29
+ * @internal
30
+ */
31
+ connectedCallback(): void;
32
+ /**
33
+ * @internal
34
+ */
35
+ disconnectedCallback(): void;
36
+ /**
37
+ * @internal
38
+ */
39
+ readonly isNestedMenu: () => boolean;
40
+ /**
41
+ * Focuses the first item in the menu.
42
+ *
43
+ * @public
44
+ */
45
+ focus(): void;
46
+ /**
47
+ * @internal
48
+ */
49
+ handleMenuKeyDown(e: KeyboardEvent): void | boolean;
50
+ /**
51
+ * if focus is moving out of the menu, reset to a stable initial state
52
+ * @internal
53
+ */
54
+ handleFocusOut: (e: FocusEvent) => void;
55
+ private handleItemFocus;
56
+ private removeItemListeners;
57
+ private static elementIndent;
58
+ protected setItems(): void;
59
+ /**
60
+ * Method for Observable changes to the hidden attribute of child elements
61
+ */
62
+ handleChange(source: any, propertyName: string): void;
63
+ /**
64
+ * Handle change from child MenuItem element and set radio group behavior
65
+ */
66
+ private changedMenuItemHandler;
67
+ /**
68
+ * check if the item is a menu item
69
+ */
70
+ protected isMenuItemElement: (el: Element) => el is HTMLElement;
71
+ /**
72
+ * check if the item is focusable
73
+ */
74
+ private isFocusableElement;
75
+ private setFocus;
76
+ }
@@ -0,0 +1,251 @@
1
+ import { __decorate } from "tslib";
2
+ import { FASTElement, Observable, observable, Updates } from '@microsoft/fast-element';
3
+ import { isHTMLElement, keyArrowDown, keyArrowUp, keyEnd, keyHome } from '@microsoft/fast-web-utilities';
4
+ import { isMenuItem, MenuItemRole } from '../menu-item/menu-item.options.js';
5
+ /**
6
+ * A Base Menu List Custom HTML Element.
7
+ * Implements the {@link https://www.w3.org/TR/wai-aria-1.1/#menu | ARIA menu }.
8
+ *
9
+ * @public
10
+ */
11
+ export class BaseMenuList extends FASTElement {
12
+ itemsChanged(oldValue, newValue) {
13
+ // only update children after the component is connected and
14
+ // the setItems has run on connectedCallback
15
+ // (menuItems is undefined until then)
16
+ if (this.$fastController.isConnected && this.menuItems !== undefined) {
17
+ this.setItems();
18
+ }
19
+ }
20
+ static { this.focusableElementRoles = MenuItemRole; }
21
+ constructor() {
22
+ super();
23
+ /**
24
+ * The internal {@link https://developer.mozilla.org/docs/Web/API/ElementInternals | `ElementInternals`} instance for the component.
25
+ *
26
+ * @internal
27
+ */
28
+ this.elementInternals = this.attachInternals();
29
+ /**
30
+ * The index of the focusable element in the items array
31
+ * defaults to -1
32
+ */
33
+ this.focusIndex = -1;
34
+ /**
35
+ * @internal
36
+ */
37
+ this.isNestedMenu = () => {
38
+ return (this.parentElement !== null &&
39
+ isHTMLElement(this.parentElement) &&
40
+ this.parentElement.getAttribute('role') === 'menuitem');
41
+ };
42
+ /**
43
+ * if focus is moving out of the menu, reset to a stable initial state
44
+ * @internal
45
+ */
46
+ this.handleFocusOut = (e) => {
47
+ if (!this.contains(e.relatedTarget) && this.menuItems !== undefined) {
48
+ // find our first focusable element
49
+ const focusIndex = this.menuItems.findIndex(this.isFocusableElement);
50
+ // set the current focus index's tabindex to -1
51
+ this.menuItems[this.focusIndex].setAttribute('tabindex', '-1');
52
+ // set the first focusable element tabindex to 0
53
+ this.menuItems[focusIndex].setAttribute('tabindex', '0');
54
+ // set the focus index
55
+ this.focusIndex = focusIndex;
56
+ }
57
+ };
58
+ this.handleItemFocus = (e) => {
59
+ const targetItem = e.target;
60
+ if (this.menuItems !== undefined && targetItem !== this.menuItems[this.focusIndex]) {
61
+ this.menuItems[this.focusIndex].setAttribute('tabindex', '-1');
62
+ this.focusIndex = this.menuItems.indexOf(targetItem);
63
+ targetItem.setAttribute('tabindex', '0');
64
+ }
65
+ };
66
+ /**
67
+ * Handle change from child MenuItem element and set radio group behavior
68
+ */
69
+ this.changedMenuItemHandler = (e) => {
70
+ if (this.menuItems === undefined) {
71
+ return;
72
+ }
73
+ const changedMenuItem = e.target;
74
+ const changeItemIndex = this.menuItems.indexOf(changedMenuItem);
75
+ if (changeItemIndex === -1) {
76
+ return;
77
+ }
78
+ if (changedMenuItem.role === 'menuitemradio' && changedMenuItem.checked === true) {
79
+ for (let i = changeItemIndex - 1; i >= 0; --i) {
80
+ const item = this.menuItems[i];
81
+ const role = item.role;
82
+ if (role === MenuItemRole.menuitemradio) {
83
+ item.checked = false;
84
+ }
85
+ if (role === 'separator') {
86
+ break;
87
+ }
88
+ }
89
+ const maxIndex = this.menuItems.length - 1;
90
+ for (let i = changeItemIndex + 1; i <= maxIndex; ++i) {
91
+ const item = this.menuItems[i];
92
+ const role = item.role;
93
+ if (role === MenuItemRole.menuitemradio) {
94
+ item.checked = false;
95
+ }
96
+ if (role === 'separator') {
97
+ break;
98
+ }
99
+ }
100
+ }
101
+ };
102
+ /**
103
+ * check if the item is a menu item
104
+ */
105
+ this.isMenuItemElement = (el) => {
106
+ return isMenuItem(el) || (isHTMLElement(el) && !!el.role && el.role in BaseMenuList.focusableElementRoles);
107
+ };
108
+ /**
109
+ * check if the item is focusable
110
+ */
111
+ this.isFocusableElement = (el) => {
112
+ return this.isMenuItemElement(el);
113
+ };
114
+ this.elementInternals.role = 'menu';
115
+ }
116
+ /**
117
+ * @internal
118
+ */
119
+ connectedCallback() {
120
+ super.connectedCallback();
121
+ Updates.enqueue(() => {
122
+ // wait until children have had a chance to
123
+ // connect before setting/checking their props/attributes
124
+ this.setItems();
125
+ });
126
+ this.addEventListener('change', this.changedMenuItemHandler);
127
+ }
128
+ /**
129
+ * @internal
130
+ */
131
+ disconnectedCallback() {
132
+ super.disconnectedCallback();
133
+ this.removeItemListeners();
134
+ this.menuItems = undefined;
135
+ this.removeEventListener('change', this.changedMenuItemHandler);
136
+ }
137
+ /**
138
+ * Focuses the first item in the menu.
139
+ *
140
+ * @public
141
+ */
142
+ focus() {
143
+ this.setFocus(0, 1);
144
+ }
145
+ /**
146
+ * @internal
147
+ */
148
+ handleMenuKeyDown(e) {
149
+ if (e.defaultPrevented || this.menuItems === undefined) {
150
+ return;
151
+ }
152
+ switch (e.key) {
153
+ case keyArrowDown:
154
+ // go forward one index
155
+ this.setFocus(this.focusIndex + 1, 1);
156
+ return;
157
+ case keyArrowUp:
158
+ // go back one index
159
+ this.setFocus(this.focusIndex - 1, -1);
160
+ return;
161
+ case keyEnd:
162
+ // set focus on last item
163
+ this.setFocus(this.menuItems.length - 1, -1);
164
+ return;
165
+ case keyHome:
166
+ // set focus on first item
167
+ this.setFocus(0, 1);
168
+ return;
169
+ default:
170
+ // if we are not handling the event, do not prevent default
171
+ return true;
172
+ }
173
+ }
174
+ removeItemListeners(items = this.items) {
175
+ items.forEach(item => {
176
+ item.removeEventListener('focus', this.handleItemFocus);
177
+ Observable.getNotifier(item).unsubscribe(this, 'hidden');
178
+ });
179
+ }
180
+ static elementIndent(el) {
181
+ const role = el.role;
182
+ const startSlot = el.querySelector('[slot=start]');
183
+ if (role && role !== MenuItemRole.menuitem) {
184
+ return startSlot ? 2 : 1;
185
+ }
186
+ return startSlot ? 1 : 0;
187
+ }
188
+ setItems() {
189
+ const children = Array.from(this.children);
190
+ this.removeItemListeners(children);
191
+ children.forEach((child) => Observable.getNotifier(child).subscribe(this, 'hidden'));
192
+ const newItems = children.filter(child => !child.hasAttribute('hidden'));
193
+ this.menuItems = newItems;
194
+ const menuItems = this.menuItems.filter(this.isMenuItemElement);
195
+ // if our focus index is not -1 we have items
196
+ if (menuItems.length) {
197
+ this.focusIndex = 0;
198
+ }
199
+ menuItems.forEach((item, index) => {
200
+ item.setAttribute('tabindex', index === 0 ? '0' : '-1');
201
+ item.addEventListener('focus', this.handleItemFocus);
202
+ });
203
+ /**
204
+ * Set the indent attribute on MenuItem elements based on their
205
+ * position in the MenuList. Each MenuItem element has a data-indent attribute that is
206
+ * used to set the indent of the element's start slot content.
207
+ */
208
+ const filteredMenuListItems = this.menuItems?.filter(this.isMenuItemElement);
209
+ const indent = filteredMenuListItems?.reduce((accum, current) => {
210
+ const elementValue = BaseMenuList.elementIndent(current);
211
+ return Math.max(accum, elementValue);
212
+ }, 0);
213
+ filteredMenuListItems?.forEach((item) => {
214
+ item.dataset.indent = `${indent}`;
215
+ });
216
+ }
217
+ /**
218
+ * Method for Observable changes to the hidden attribute of child elements
219
+ */
220
+ handleChange(source, propertyName) {
221
+ if (propertyName === 'hidden') {
222
+ this.setItems();
223
+ }
224
+ }
225
+ setFocus(focusIndex, adjustment) {
226
+ if (this.menuItems === undefined) {
227
+ return;
228
+ }
229
+ while (focusIndex >= 0 && focusIndex < this.menuItems.length) {
230
+ const child = this.menuItems[focusIndex];
231
+ if (this.isFocusableElement(child)) {
232
+ // change the previous index to -1
233
+ if (this.focusIndex > -1 && this.menuItems.length >= this.focusIndex - 1) {
234
+ this.menuItems[this.focusIndex].setAttribute('tabindex', '-1');
235
+ }
236
+ // update the focus index
237
+ this.focusIndex = focusIndex;
238
+ // update the tabindex of next focusable element
239
+ child.setAttribute('tabindex', '0');
240
+ // focus the element
241
+ child.focus();
242
+ break;
243
+ }
244
+ focusIndex += adjustment;
245
+ }
246
+ }
247
+ }
248
+ __decorate([
249
+ observable
250
+ ], BaseMenuList.prototype, "items", void 0);
251
+ //# sourceMappingURL=menu-list.base.js.map