@m3e/web 2.2.0 → 2.2.1

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 (69) hide show
  1. package/README.md +2 -2
  2. package/dist/all.js +166 -63
  3. package/dist/all.js.map +1 -1
  4. package/dist/all.min.js +45 -45
  5. package/dist/all.min.js.map +1 -1
  6. package/dist/autocomplete.js +55 -15
  7. package/dist/autocomplete.js.map +1 -1
  8. package/dist/autocomplete.min.js +1 -1
  9. package/dist/autocomplete.min.js.map +1 -1
  10. package/dist/core.js +1 -1
  11. package/dist/core.js.map +1 -1
  12. package/dist/core.min.js.map +1 -1
  13. package/dist/css-custom-data.json +806 -806
  14. package/dist/custom-elements.json +12497 -12242
  15. package/dist/datepicker.js +36 -15
  16. package/dist/datepicker.js.map +1 -1
  17. package/dist/datepicker.min.js +1 -1
  18. package/dist/datepicker.min.js.map +1 -1
  19. package/dist/drawer-container.js +10 -4
  20. package/dist/drawer-container.js.map +1 -1
  21. package/dist/drawer-container.min.js +1 -1
  22. package/dist/drawer-container.min.js.map +1 -1
  23. package/dist/html-custom-data.json +252 -252
  24. package/dist/nav-bar.js +17 -7
  25. package/dist/nav-bar.js.map +1 -1
  26. package/dist/nav-bar.min.js +1 -1
  27. package/dist/nav-bar.min.js.map +1 -1
  28. package/dist/option.js +1 -1
  29. package/dist/option.js.map +1 -1
  30. package/dist/option.min.js +1 -1
  31. package/dist/option.min.js.map +1 -1
  32. package/dist/search.js +27 -11
  33. package/dist/search.js.map +1 -1
  34. package/dist/search.min.js +1 -1
  35. package/dist/search.min.js.map +1 -1
  36. package/dist/segmented-button.js +2 -2
  37. package/dist/segmented-button.js.map +1 -1
  38. package/dist/segmented-button.min.js.map +1 -1
  39. package/dist/select.js +1 -1
  40. package/dist/select.js.map +1 -1
  41. package/dist/select.min.js +1 -1
  42. package/dist/select.min.js.map +1 -1
  43. package/dist/split-button.js +1 -1
  44. package/dist/split-button.js.map +1 -1
  45. package/dist/split-button.min.js.map +1 -1
  46. package/dist/src/autocomplete/AutocompleteElement.d.ts +5 -0
  47. package/dist/src/autocomplete/AutocompleteElement.d.ts.map +1 -1
  48. package/dist/src/core/shared/utils/registerStyleSheet.d.ts +1 -1
  49. package/dist/src/datepicker/DatepickerElement.d.ts +3 -1
  50. package/dist/src/datepicker/DatepickerElement.d.ts.map +1 -1
  51. package/dist/src/drawer-container/DrawerContainerElement.d.ts +2 -2
  52. package/dist/src/drawer-container/DrawerContainerElement.d.ts.map +1 -1
  53. package/dist/src/nav-bar/NavBarElement.d.ts +3 -1
  54. package/dist/src/nav-bar/NavBarElement.d.ts.map +1 -1
  55. package/dist/src/search/SearchViewElement.d.ts +5 -1
  56. package/dist/src/search/SearchViewElement.d.ts.map +1 -1
  57. package/dist/src/segmented-button/ButtonSegmentElement.d.ts +2 -2
  58. package/dist/src/split-button/SplitButtonElement.d.ts +1 -1
  59. package/dist/src/stepper/StepperElement.d.ts +3 -1
  60. package/dist/src/stepper/StepperElement.d.ts.map +1 -1
  61. package/dist/src/switch/SwitchElement.d.ts +2 -2
  62. package/dist/stepper.js +17 -7
  63. package/dist/stepper.js.map +1 -1
  64. package/dist/stepper.min.js +1 -1
  65. package/dist/stepper.min.js.map +1 -1
  66. package/dist/switch.js +2 -2
  67. package/dist/switch.js.map +1 -1
  68. package/dist/switch.min.js.map +1 -1
  69. package/package.json +1 -1
@@ -10,7 +10,7 @@ import { EventAttribute, HtmlFor, MutationController, setCustomState, deleteCust
10
10
  import { ListKeyManager, M3eLiveAnnouncer } from '@m3e/web/core/a11y';
11
11
  import { M3eOptGroupElement } from '@m3e/web/option';
12
12
 
13
- var _M3eAutocompleteElement_instances, _M3eAutocompleteElement_id, _M3eAutocompleteElement_menuId, _M3eAutocompleteElement_clone, _M3eAutocompleteElement_ignoreFocusVisible, _M3eAutocompleteElement_menu, _M3eAutocompleteElement_ignoreHideMenuOnBlur, _M3eAutocompleteElement_inputChanged, _M3eAutocompleteElement_hasFocus, _M3eAutocompleteElement_mutationAbortController, _M3eAutocompleteElement_clickHandler, _M3eAutocompleteElement_formFieldPointerDownHandler, _M3eAutocompleteElement_focusHandler, _M3eAutocompleteElement_blurHandler, _M3eAutocompleteElement_keyDownHandler, _M3eAutocompleteElement_inputHandler, _M3eAutocompleteElement_changeHandler, _M3eAutocompleteElement_menuToggleHandler, _M3eAutocompleteElement_menuPointerDownHandler, _M3eAutocompleteElement_options_get, _M3eAutocompleteElement_input_get, _M3eAutocompleteElement_hasNoDataSlot_get, _M3eAutocompleteElement_hasLoadingSlot_get, _M3eAutocompleteElement_shouldShowMenu_get, _M3eAutocompleteElement_formField_get, _M3eAutocompleteElement_handleMutation, _M3eAutocompleteElement_handleClick, _M3eAutocompleteElement_handleFormFieldPointerDown, _M3eAutocompleteElement_handleFocus, _M3eAutocompleteElement_handleBlur, _M3eAutocompleteElement_handleInput, _M3eAutocompleteElement_handleChange, _M3eAutocompleteElement_handleKeyDown, _M3eAutocompleteElement_handleMenuPointerDown, _M3eAutocompleteElement_handleMenuToggle, _M3eAutocompleteElement_destroyMenu, _M3eAutocompleteElement_showMenu, _M3eAutocompleteElement_projectClone, _M3eAutocompleteElement_updateMenuState, _M3eAutocompleteElement_hideMenu, _M3eAutocompleteElement_activateOption, _M3eAutocompleteElement_updateSelectionState, _M3eAutocompleteElement_selectOption, _M3eAutocompleteElement_filterOption, _M3eAutocompleteElement_filterOptions, _M3eAutocompleteElement_announceResults, _M3eAutocompleteElement_autoActivate, _M3eAutocompleteElement_deactivateOption;
13
+ var _M3eAutocompleteElement_instances, _M3eAutocompleteElement_id, _M3eAutocompleteElement_menuId, _M3eAutocompleteElement_clone, _M3eAutocompleteElement_ignoreFocusVisible, _M3eAutocompleteElement_menu, _M3eAutocompleteElement_ignoreHideMenuOnBlur, _M3eAutocompleteElement_inputChanged, _M3eAutocompleteElement_hasFocus, _M3eAutocompleteElement_mutationAbortController, _M3eAutocompleteElement_clickHandler, _M3eAutocompleteElement_formFieldPointerDownHandler, _M3eAutocompleteElement_focusHandler, _M3eAutocompleteElement_blurHandler, _M3eAutocompleteElement_keyDownHandler, _M3eAutocompleteElement_inputHandler, _M3eAutocompleteElement_changeHandler, _M3eAutocompleteElement_menuToggleHandler, _M3eAutocompleteElement_menuPointerDownHandler, _M3eAutocompleteElement_options_get, _M3eAutocompleteElement_input_get, _M3eAutocompleteElement_hasNoDataSlot_get, _M3eAutocompleteElement_hasLoadingSlot_get, _M3eAutocompleteElement_shouldShowMenu_get, _M3eAutocompleteElement_formField_get, _M3eAutocompleteElement_handleMutation, _M3eAutocompleteElement_handleClick, _M3eAutocompleteElement_handleFormFieldPointerDown, _M3eAutocompleteElement_handleFocus, _M3eAutocompleteElement_handleBlur, _M3eAutocompleteElement_handleInput, _M3eAutocompleteElement_handleChange, _M3eAutocompleteElement_handleKeyDown, _M3eAutocompleteElement_handleMenuPointerDown, _M3eAutocompleteElement_handleMenuToggle, _M3eAutocompleteElement_destroyMenu, _M3eAutocompleteElement_showMenu, _M3eAutocompleteElement_projectClone, _M3eAutocompleteElement_updateMenuState, _M3eAutocompleteElement_hideMenu, _M3eAutocompleteElement_activateOption, _M3eAutocompleteElement_updateSelectionState, _M3eAutocompleteElement_selectOption, _M3eAutocompleteElement_filterOption, _M3eAutocompleteElement_filterOptions, _M3eAutocompleteElement_clearOptions, _M3eAutocompleteElement_announceResults, _M3eAutocompleteElement_autoActivate, _M3eAutocompleteElement_deactivateOption;
14
14
  var M3eAutocompleteElement_1;
15
15
  /**
16
16
  * Enhances a text input with suggested options.
@@ -57,6 +57,7 @@ var M3eAutocompleteElement_1;
57
57
  *
58
58
  * @fires toggle - Emitted when the options menu opens or closes.
59
59
  * @fires query - Emitted when the input is focused or when the user modifies its value.
60
+ * @fires change - Emitted when the committed value changes due to selecting an option or clearing the input.
60
61
  */
61
62
  let M3eAutocompleteElement = M3eAutocompleteElement_1 = class M3eAutocompleteElement extends EventAttribute(HtmlFor(LitElement), "query") {
62
63
  constructor() {
@@ -101,7 +102,7 @@ let M3eAutocompleteElement = M3eAutocompleteElement_1 = class M3eAutocompleteEle
101
102
  /** @private */
102
103
  _M3eAutocompleteElement_menuPointerDownHandler.set(this, e => __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_handleMenuPointerDown).call(this, e));
103
104
  /** @private */
104
- this._listKeyManager = new ListKeyManager().withWrap().withHomeAndEnd().withPageUpAndDown().withVerticalOrientation().withSkipPredicate(item => item.disabled || item.hidden).onActiveItemChange(() => {
105
+ this._listKeyManager = new ListKeyManager().withWrap().withHomeAndEnd().withPageUpAndDown().withVerticalOrientation().withSkipPredicate(item => item.disabled || item.hidden === true).onActiveItemChange(() => {
105
106
  if (this._listKeyManager.activeItem) {
106
107
  __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_activateOption).call(this, this._listKeyManager.activeItem);
107
108
  }
@@ -178,6 +179,15 @@ let M3eAutocompleteElement = M3eAutocompleteElement_1 = class M3eAutocompleteEle
178
179
  get options() {
179
180
  return this._options ?? [];
180
181
  }
182
+ /** The selected option. */
183
+ get selected() {
184
+ return this.options.find(x => x.selected) ?? null;
185
+ }
186
+ /** The selected (enabled) value. */
187
+ get value() {
188
+ const selected = this.selected;
189
+ return selected && !selected.disabled ? selected.value : null;
190
+ }
181
191
  /** @inheritdoc */
182
192
  attach(control) {
183
193
  if (!(control instanceof HTMLInputElement)) return;
@@ -217,6 +227,11 @@ let M3eAutocompleteElement = M3eAutocompleteElement_1 = class M3eAutocompleteEle
217
227
  clear(restoreFocus = false) {
218
228
  if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get)) return;
219
229
  __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).value = "";
230
+ if (__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_clearOptions).call(this)) {
231
+ this.dispatchEvent(new Event("change", {
232
+ bubbles: true
233
+ }));
234
+ }
220
235
  __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_filterOptions).call(this);
221
236
  if (restoreFocus) {
222
237
  __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).focus();
@@ -291,7 +306,7 @@ _M3eAutocompleteElement_hasLoadingSlot_get = function _M3eAutocompleteElement_ha
291
306
  return (__classPrivateFieldGet(this, _M3eAutocompleteElement_clone, "f")?.querySelector("[slot='loading']") ?? null) !== null;
292
307
  };
293
308
  _M3eAutocompleteElement_shouldShowMenu_get = function _M3eAutocompleteElement_shouldShowMenu_get() {
294
- return __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_options_get).some(x => !x.hidden) || this.loading && !this.hideLoading && this.loadingLabel.length > 0 || !this.loading && !this.hideNoData && this.noDataLabel.length > 0;
309
+ return __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_options_get).some(x => x.hidden === false) || this.loading && !this.hideLoading && this.loadingLabel.length > 0 || !this.loading && !this.hideNoData && this.noDataLabel.length > 0;
295
310
  };
296
311
  _M3eAutocompleteElement_formField_get = function _M3eAutocompleteElement_formField_get() {
297
312
  return this.control?.closest("m3e-form-field") ?? null;
@@ -371,6 +386,11 @@ _M3eAutocompleteElement_handleInput = function _M3eAutocompleteElement_handleInp
371
386
  bubbles: true,
372
387
  composed: true
373
388
  }));
389
+ if (__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).value === "" && __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_clearOptions).call(this)) {
390
+ this.dispatchEvent(new Event("change", {
391
+ bubbles: true
392
+ }));
393
+ }
374
394
  __classPrivateFieldSet(this, _M3eAutocompleteElement_inputChanged, true, "f");
375
395
  try {
376
396
  if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")) {
@@ -387,8 +407,15 @@ _M3eAutocompleteElement_handleInput = function _M3eAutocompleteElement_handleInp
387
407
  }
388
408
  };
389
409
  _M3eAutocompleteElement_handleChange = function _M3eAutocompleteElement_handleChange() {
390
- if (__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get) && this.required && !__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_options_get).some(x => x.selected && !x.disabled)) {
391
- __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).value = "";
410
+ if (__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get)) {
411
+ const selected = this.selected;
412
+ if (this.required) {
413
+ __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).value = selected?.label ?? "";
414
+ } else if (selected && selected.label !== __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).value && __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_clearOptions).call(this)) {
415
+ this.dispatchEvent(new Event("change", {
416
+ bubbles: true
417
+ }));
418
+ }
392
419
  }
393
420
  };
394
421
  _M3eAutocompleteElement_handleKeyDown = function _M3eAutocompleteElement_handleKeyDown(e) {
@@ -494,6 +521,7 @@ _M3eAutocompleteElement_destroyMenu = function _M3eAutocompleteElement_destroyMe
494
521
  __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).ariaExpanded = "false";
495
522
  __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).removeAttribute("aria-controls");
496
523
  __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).removeAttribute("aria-owns");
524
+ __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).removeAttribute("aria-activedescendant");
497
525
  }
498
526
  this.requestUpdate();
499
527
  __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_formField_get)?.notifyControlStateChange();
@@ -501,6 +529,9 @@ _M3eAutocompleteElement_destroyMenu = function _M3eAutocompleteElement_destroyMe
501
529
  oldState: e.oldState,
502
530
  newState: e.newState
503
531
  }));
532
+ if (__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get)?.slot === "input" && __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).parentElement?.tagName === "M3E-INPUT-CHIP-SET") {
533
+ __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_clearOptions).call(this);
534
+ }
504
535
  };
505
536
  _M3eAutocompleteElement_showMenu = function _M3eAutocompleteElement_showMenu() {
506
537
  if (__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f") || !__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get) || __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).readOnly || __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).disabled) return;
@@ -553,7 +584,6 @@ _M3eAutocompleteElement_updateMenuState = function _M3eAutocompleteElement_updat
553
584
  };
554
585
  _M3eAutocompleteElement_hideMenu = function _M3eAutocompleteElement_hideMenu() {
555
586
  __classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")?.hide();
556
- __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get)?.removeAttribute("aria-activedescendant");
557
587
  };
558
588
  _M3eAutocompleteElement_activateOption = function _M3eAutocompleteElement_activateOption(option, forceFocusVisible = false) {
559
589
  if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get)) return;
@@ -599,8 +629,11 @@ async function _M3eAutocompleteElement_selectOption(option) {
599
629
  await this.updateComplete;
600
630
  }
601
631
  if (__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get)) {
602
- __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).value = option.value;
632
+ __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).value = option.label;
603
633
  }
634
+ this.dispatchEvent(new Event("change", {
635
+ bubbles: true
636
+ }));
604
637
  __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_formField_get)?.notifyControlStateChange(true);
605
638
  };
606
639
  _M3eAutocompleteElement_filterOption = function _M3eAutocompleteElement_filterOption(clone, option, term, exactTerm) {
@@ -628,7 +661,7 @@ _M3eAutocompleteElement_filterOption = function _M3eAutocompleteElement_filterOp
628
661
  };
629
662
  _M3eAutocompleteElement_filterOptions = function _M3eAutocompleteElement_filterOptions() {
630
663
  if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get)) return 0;
631
- const oldCount = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_options_get).filter(x => !x.hidden).length;
664
+ const oldCount = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_options_get).filter(x => x.hidden === false).length;
632
665
  const shouldAnnounce = !this.loading && __classPrivateFieldGet(this, _M3eAutocompleteElement_inputChanged, "f");
633
666
  __classPrivateFieldSet(this, _M3eAutocompleteElement_inputChanged, false, "f");
634
667
  const exactTerm = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).value;
@@ -640,7 +673,7 @@ _M3eAutocompleteElement_filterOptions = function _M3eAutocompleteElement_filterO
640
673
  const clone = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_options_get)[i];
641
674
  const option = this._options[i];
642
675
  clone.hidden = !__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_filterOption).call(this, clone, option, term, exactTerm);
643
- if (clone.hidden) {
676
+ if (clone.hidden === true) {
644
677
  __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_deactivateOption).call(this, clone);
645
678
  deleteCustomState(clone, "-first");
646
679
  deleteCustomState(clone, "-last");
@@ -660,17 +693,13 @@ _M3eAutocompleteElement_filterOptions = function _M3eAutocompleteElement_filterO
660
693
  last = clone;
661
694
  }
662
695
  }
663
- if (clone.selected && option.value !== exactTerm) {
664
- clone.selected = false;
665
- __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_updateSelectionState).call(this, clone);
666
- }
667
696
  }
668
697
  if (__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")) {
669
698
  __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_updateMenuState).call(this, __classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f"), newCount);
670
699
  }
671
700
  const groups = __classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")?.querySelectorAll("m3e-optgroup") ?? __classPrivateFieldGet(this, _M3eAutocompleteElement_clone, "f")?.querySelectorAll("m3e-optgroup") ?? [];
672
701
  for (const group of groups) {
673
- group.hidden = [...group.querySelectorAll("m3e-option")].every(x => x.hidden);
702
+ group.hidden = [...group.querySelectorAll("m3e-option")].every(x => x.hidden === true);
674
703
  }
675
704
  if (shouldAnnounce) {
676
705
  __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_announceResults).call(this, oldCount, newCount);
@@ -678,6 +707,17 @@ _M3eAutocompleteElement_filterOptions = function _M3eAutocompleteElement_filterO
678
707
  __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_autoActivate).call(this);
679
708
  return newCount;
680
709
  };
710
+ _M3eAutocompleteElement_clearOptions = function _M3eAutocompleteElement_clearOptions() {
711
+ const selected = this._listKeyManager.items.filter(x => x.selected);
712
+ if (selected.length > 0) {
713
+ selected.forEach(x => {
714
+ x.selected = false;
715
+ __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_updateSelectionState).call(this, x);
716
+ });
717
+ return true;
718
+ }
719
+ return false;
720
+ };
681
721
  _M3eAutocompleteElement_announceResults = function _M3eAutocompleteElement_announceResults(oldCount, newCount) {
682
722
  if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_hasFocus, "f")) return;
683
723
  if (newCount == 0) {
@@ -693,7 +733,7 @@ _M3eAutocompleteElement_announceResults = function _M3eAutocompleteElement_annou
693
733
  };
694
734
  _M3eAutocompleteElement_autoActivate = function _M3eAutocompleteElement_autoActivate() {
695
735
  if (this.autoActivate && (!this._listKeyManager.activeItem || !this._listKeyManager.activeItem.selected)) {
696
- const option = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_options_get).find(x => !x.disabled && !x.hidden);
736
+ const option = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_options_get).find(x => !x.disabled && x.hidden === false);
697
737
  if (option) {
698
738
  this._listKeyManager.setActiveItem(option);
699
739
  if (__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")) {
@@ -1 +1 @@
1
- {"version":3,"file":"autocomplete.js","sources":["../../src/autocomplete/AutocompleteElement.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { css, CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\n\r\nimport {\r\n HtmlFor,\r\n prefersReducedMotion,\r\n scrollIntoViewIfNeeded,\r\n forcedColorsActive,\r\n setCustomState,\r\n deleteCustomState,\r\n addCustomState,\r\n customElement,\r\n MutationController,\r\n EventAttribute,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { ListKeyManager, M3eLiveAnnouncer } from \"@m3e/web/core/a11y\";\r\nimport { M3eOptGroupElement, M3eOptionElement, M3eOptionPanelElement } from \"@m3e/web/option\";\r\nimport type { M3eFormFieldElement } from \"@m3e/web/form-field\";\r\n\r\nimport { AutocompleteFilterMode } from \"./AutocompleteFilterMode\";\r\nimport { AutocompleteQueryEventDetail } from \"./AutocompleteQueryEventDetail\";\r\n\r\n/**\r\n * Enhances a text input with suggested options.\r\n *\r\n * @description\r\n * The `m3e-autocomplete` component augments a text input field with a dynamically positioned menu of filterable suggestions,\r\n * following Material Design 3 principles. It provides real-time filtering, keyboard navigation, automatic option activation,\r\n * and text highlighting to guide user selection. The component manages focus, selection state, and menu visibility while\r\n * integrating seamlessly with form field containers and supporting both required and optional selection modes.\r\n *\r\n * @example\r\n * The following example illustrates use of the `m3e-autocomplete` paired with a `m3e-form-field`.\r\n * ```html\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"fruit\">Choose your favorite fruit</label>\r\n * <input id=\"fruit\" />\r\n * </m3e-form-field>\r\n * <m3e-autocomplete for=\"fruit\">\r\n * <m3e-option>Apples</m3e-option>\r\n * <m3e-option>Oranges</m3e-option>\r\n * <m3e-option>Bananas</m3e-option>\r\n * <m3e-option>Grapes</m3e-option>\r\n * </m3e-autocomplete>\r\n * ```\r\n *\r\n * @tag m3e-autocomplete\r\n *\r\n * @attr auto-activate - Whether the first option should be automatically activated.\r\n * @attr case-sensitive - Whether filtering is case sensitive.\r\n * @attr filter - Mode in which to filter options.\r\n * @attr hide-selection-indicator - Whether to hide the selection indicator.\r\n * @attr hide-loading - Whether to hide the menu when loading options.\r\n * @attr hide-no-data - Whether to hide the menu when there are no options to show.\r\n * @attr loading - Whether options are being loaded.\r\n * @attr loading-label - The text announced and presented when loading options.\r\n * @attr no-data-label - The text announced and presented when no options are available for the current term.\r\n * @attr panel-class - Class or list of classes to be applied to the autocomplete's overlay panel.\r\n * @attr required - Whether the user is required to make a selection when interacting with the autocomplete.\r\n * @attr results-label - The text announced when available options change for the current term.\r\n *\r\n * @slot - Renders the options of the autocomplete.\r\n * @slot loading - Renders content when loading options.\r\n * @slot no-data - Renders content when there are no options to show.\r\n *\r\n * @fires toggle - Emitted when the options menu opens or closes.\r\n * @fires query - Emitted when the input is focused or when the user modifies its value.\r\n */\r\n@customElement(\"m3e-autocomplete\")\r\nexport class M3eAutocompleteElement extends EventAttribute(HtmlFor(LitElement), \"query\") {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: contents;\r\n }\r\n .options {\r\n display: none;\r\n }\r\n `;\r\n\r\n /** @private */ private static __nextId = 0;\r\n\r\n /** @private */ readonly #id = `m3e-autocomplete-${M3eAutocompleteElement.__nextId}`;\r\n /** @private */ readonly #menuId = `${this.#id}-menu`;\r\n /** @private */ private _options = new Array<M3eOptionElement>();\r\n /** @private */ #clone?: HTMLElement;\r\n /** @private */ #ignoreFocusVisible = false;\r\n /** @private */ #menu?: M3eOptionPanelElement;\r\n /** @private */ #ignoreHideMenuOnBlur = false;\r\n /** @private */ #inputChanged = false;\r\n /** @private */ #hasFocus = false;\r\n /** @private */ #mutationAbortController?: AbortController;\r\n\r\n /** @private */ readonly #clickHandler = () => this.#handleClick();\r\n /** @private */ readonly #formFieldPointerDownHandler = () => this.#handleFormFieldPointerDown();\r\n /** @private */ readonly #focusHandler = () => this.#handleFocus();\r\n /** @private */ readonly #blurHandler = () => this.#handleBlur();\r\n /** @private */ readonly #keyDownHandler = (e: KeyboardEvent) => this.#handleKeyDown(e);\r\n /** @private */ readonly #inputHandler = (e: Event) => this.#handleInput(e);\r\n /** @private */ readonly #changeHandler = () => this.#handleChange();\r\n /** @private */ readonly #menuToggleHandler = (e: ToggleEvent) => this.#handleMenuToggle(e);\r\n /** @private */ readonly #menuPointerDownHandler = (e: PointerEvent) => this.#handleMenuPointerDown(e);\r\n\r\n /** @private */ private readonly _listKeyManager = new ListKeyManager<M3eOptionElement>()\r\n .withWrap()\r\n .withHomeAndEnd()\r\n .withPageUpAndDown()\r\n .withVerticalOrientation()\r\n .withSkipPredicate((item) => item.disabled || item.hidden)\r\n .onActiveItemChange(() => {\r\n if (this._listKeyManager.activeItem) {\r\n this.#activateOption(this._listKeyManager.activeItem);\r\n }\r\n });\r\n\r\n constructor() {\r\n super();\r\n\r\n new MutationController(this, {\r\n config: {\r\n childList: true,\r\n subtree: true,\r\n },\r\n callback: () => this.#handleMutation(),\r\n });\r\n }\r\n\r\n /**\r\n * Whether to hide the selection indicator.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-selection-indicator\", type: Boolean }) hideSelectionIndicator = false;\r\n\r\n /**\r\n * Whether the user is required to make a selection when interacting with the autocomplete.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) required = false;\r\n\r\n /**\r\n * Whether the first option should be automatically activated.\r\n * @default false\r\n */\r\n @property({ attribute: \"auto-activate\", type: Boolean }) autoActivate = false;\r\n\r\n /**\r\n * Whether filtering is case sensitive.\r\n * @default false\r\n */\r\n @property({ attribute: \"case-sensitive\", type: Boolean }) caseSensitive = false;\r\n\r\n /**\r\n * Mode in which to filter options.\r\n * @default \"contains\"\r\n */\r\n @property({\r\n converter: {\r\n fromAttribute(value: string | null): AutocompleteFilterMode {\r\n if (value === null) return \"contains\";\r\n if (value === \"starts-with\" || value === \"ends-with\" || value === \"contains\" || value === \"none\") {\r\n return value;\r\n }\r\n return \"contains\";\r\n },\r\n },\r\n })\r\n filter: AutocompleteFilterMode | ((option: M3eOptionElement, term: string) => boolean) = \"contains\";\r\n\r\n /**\r\n * Whether options are being loaded.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) loading = false;\r\n\r\n /**\r\n * Whether to hide the menu when there are no options to show.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-no-data\", type: Boolean }) hideNoData = false;\r\n\r\n /**\r\n * Whether to hide the menu when loading options.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-loading\", type: Boolean }) hideLoading = false;\r\n\r\n /**\r\n * The text announced and presented when loading options.\r\n * @default \"Loading...\"\r\n */\r\n @property({ attribute: \"loading-label\" }) loadingLabel = \"Loading...\";\r\n\r\n /**\r\n * The text announced and presented when no options are available for the current term.\r\n * @default \"No options\"\r\n */\r\n @property({ attribute: \"no-data-label\" }) noDataLabel = \"No options\";\r\n\r\n /**\r\n * The text announced when available options change for the current term.\r\n * @default (count) => `${count} options`\r\n */\r\n @property({ attribute: \"results-label\" }) resultsLabel: string | ((count: number) => string) = (count) =>\r\n `${count} options`;\r\n\r\n /**\r\n * Class or list of classes to be applied to the autocomplete's overlay panel.\r\n * @default \"\"\r\n */\r\n @property({ attribute: \"panel-class\" }) panelClass = \"\";\r\n\r\n /** The options that can be selected. */\r\n get options(): readonly M3eOptionElement[] {\r\n return this._options ?? [];\r\n }\r\n\r\n /** @private */\r\n get #options(): readonly M3eOptionElement[] {\r\n return this._listKeyManager?.items ?? [];\r\n }\r\n\r\n /** @private */\r\n get #input(): HTMLInputElement | null {\r\n return this.control ? <HTMLInputElement>this.control : null;\r\n }\r\n\r\n /** @private */\r\n get #hasNoDataSlot(): boolean {\r\n return (this.#clone?.querySelector(\"[slot='no-data']\") ?? null) !== null;\r\n }\r\n\r\n /** @private */\r\n get #hasLoadingSlot(): boolean {\r\n return (this.#clone?.querySelector(\"[slot='loading']\") ?? null) !== null;\r\n }\r\n\r\n /** @private */\r\n get #shouldShowMenu(): boolean {\r\n return (\r\n this.#options.some((x) => !x.hidden) ||\r\n (this.loading && !this.hideLoading && this.loadingLabel.length > 0) ||\r\n (!this.loading && !this.hideNoData && this.noDataLabel.length > 0)\r\n );\r\n }\r\n\r\n /** @private */\r\n get #formField(): M3eFormFieldElement | null {\r\n return this.control?.closest(\"m3e-form-field\") ?? null;\r\n }\r\n\r\n /** @inheritdoc */\r\n override attach(control: HTMLElement): void {\r\n if (!(control instanceof HTMLInputElement)) return;\r\n\r\n super.attach(control);\r\n\r\n control.autocomplete = \"off\";\r\n control.role = \"combobox\";\r\n control.ariaAutoComplete = \"list\";\r\n control.ariaExpanded = \"false\";\r\n\r\n control.addEventListener(\"click\", this.#clickHandler);\r\n control.addEventListener(\"focus\", this.#focusHandler);\r\n control.addEventListener(\"blur\", this.#blurHandler);\r\n control.addEventListener(\"keydown\", this.#keyDownHandler);\r\n control.addEventListener(\"input\", this.#inputHandler);\r\n control.addEventListener(\"change\", this.#changeHandler);\r\n\r\n this.#formField?.addEventListener(\"pointerdown\", this.#formFieldPointerDownHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override detach(): void {\r\n if (this.control) {\r\n this.#formField?.removeEventListener(\"pointerdown\", this.#formFieldPointerDownHandler);\r\n\r\n this.control.role = null;\r\n this.control.ariaAutoComplete = null;\r\n this.control.ariaExpanded = null;\r\n\r\n this.control.removeEventListener(\"click\", this.#clickHandler);\r\n this.control.removeEventListener(\"focus\", this.#focusHandler);\r\n this.control.removeEventListener(\"blur\", this.#blurHandler);\r\n this.control.removeEventListener(\"keydown\", this.#keyDownHandler);\r\n this.control.removeEventListener(\"input\", this.#inputHandler);\r\n this.control.removeEventListener(\"change\", this.#changeHandler);\r\n }\r\n super.detach();\r\n }\r\n\r\n /**\r\n * Clears the value of the element.\r\n * @param [restoreFocus=false] Whether to restore input focus.\r\n */\r\n clear(restoreFocus = false): void {\r\n if (!this.#input) return;\r\n\r\n this.#input.value = \"\";\r\n this.#filterOptions();\r\n\r\n if (restoreFocus) {\r\n this.#input.focus();\r\n } else {\r\n this.#hideMenu();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n this.#handleMutation();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues<this>): void {\r\n super.update(changedProperties);\r\n\r\n if (changedProperties.has(\"hideNoData\") && this.hideNoData && this.#menu) {\r\n setCustomState(this.#menu, \"-no-data\", false);\r\n }\r\n\r\n if (changedProperties.has(\"loading\")) {\r\n if (this.loading) {\r\n if (this.#hasFocus) {\r\n if (this.loadingLabel) {\r\n M3eLiveAnnouncer.announce(this.loadingLabel, \"polite\");\r\n }\r\n if (!this.#menu && this.#shouldShowMenu) {\r\n this.#showMenu();\r\n }\r\n }\r\n } else if (this.#menu && !this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n } else if (this.#menu) {\r\n deleteCustomState(this.#menu, \"-loading\");\r\n } else if (this.#hasFocus) {\r\n this.#showMenu();\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"options\" aria-hidden=\"true\">\r\n <slot></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n async #handleMutation(): Promise<void> {\r\n if (this.#mutationAbortController) {\r\n this.#mutationAbortController.abort();\r\n }\r\n const mutationAbortController = new AbortController();\r\n this.#mutationAbortController = mutationAbortController;\r\n\r\n const options = [...this.querySelectorAll(\"m3e-option\")];\r\n\r\n for (const option of options) {\r\n if (mutationAbortController.signal.aborted) {\r\n break;\r\n }\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n }\r\n\r\n if (mutationAbortController.signal.aborted) {\r\n return;\r\n }\r\n\r\n this._options = options;\r\n\r\n this.#clone = <HTMLElement>this.cloneNode(true);\r\n\r\n const { added } = this._listKeyManager.setItems([...this.#clone.querySelectorAll(\"m3e-option\")]);\r\n added.forEach((x) => {\r\n x.id = x.id || `${this.#id}-option-${this._listKeyManager.items.indexOf(x)}`;\r\n setCustomState(x, \"-hide-selection-indicator\", this.hideSelectionIndicator);\r\n });\r\n\r\n if (this.#menu) {\r\n const count = this.#filterOptions();\r\n this.#projectClone();\r\n if (!this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n } else {\r\n this.#updateMenuState(this.#menu, count);\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClick(): void {\r\n this.#ignoreFocusVisible = true;\r\n this.#showMenu();\r\n }\r\n\r\n /** @private */\r\n #handleFormFieldPointerDown(): void {\r\n this.#ignoreHideMenuOnBlur = true;\r\n }\r\n\r\n /** @private */\r\n #handleFocus(): void {\r\n this.#hasFocus = true;\r\n this.#ignoreFocusVisible = true;\r\n\r\n if (this.options.length == 0 && !(<HTMLInputElement>this.control).readOnly) {\r\n this.dispatchEvent(\r\n new CustomEvent<AutocompleteQueryEventDetail>(\"query\", {\r\n detail: { term: this.#input?.value ?? \"\" },\r\n bubbles: true,\r\n composed: true,\r\n }),\r\n );\r\n }\r\n\r\n this.#showMenu();\r\n }\r\n\r\n /** @private */\r\n #handleBlur(): void {\r\n this.#hasFocus = false;\r\n if (!this.#ignoreHideMenuOnBlur) {\r\n this.#hideMenu();\r\n }\r\n this.#ignoreHideMenuOnBlur = false;\r\n }\r\n\r\n /** @private */\r\n #handleInput(e: Event): void {\r\n if (!this.#input || e.defaultPrevented) return;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent<AutocompleteQueryEventDetail>(\"query\", {\r\n detail: { term: this.#input.value },\r\n bubbles: true,\r\n composed: true,\r\n }),\r\n );\r\n\r\n this.#inputChanged = true;\r\n try {\r\n if (!this.#menu) {\r\n this.#showMenu();\r\n } else {\r\n this.#filterOptions();\r\n if (!this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n }\r\n }\r\n } finally {\r\n this.#inputChanged = false;\r\n this.#formField?.notifyControlStateChange(true);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleChange(): void {\r\n if (this.#input && this.required && !this.#options.some((x) => x.selected && !x.disabled)) {\r\n this.#input.value = \"\";\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyDown(e: KeyboardEvent): void {\r\n if (e.defaultPrevented) return;\r\n\r\n this.#ignoreFocusVisible = false;\r\n\r\n switch (e.key) {\r\n case \"Backspace\":\r\n case \"Delete\":\r\n if (this.#input && !this.#input.value) {\r\n this.#hideMenu();\r\n }\r\n break;\r\n\r\n case \"Enter\":\r\n if (this.#menu && this._listKeyManager.activeItem) {\r\n e.preventDefault();\r\n this.#selectOption(this._listKeyManager.activeItem);\r\n if (!prefersReducedMotion()) {\r\n setTimeout(() => this.#hideMenu(), 150);\r\n } else {\r\n this.#hideMenu();\r\n }\r\n } else if (this.#menu) {\r\n setTimeout(() => {\r\n if (this.#input && !this.#input.value) {\r\n this.#hideMenu();\r\n }\r\n });\r\n }\r\n break;\r\n\r\n case \"Escape\":\r\n case \"Tab\":\r\n this.#hideMenu();\r\n break;\r\n\r\n case \"Up\":\r\n case \"ArrowUp\":\r\n if (e.altKey) {\r\n this.#hideMenu();\r\n } else {\r\n this._listKeyManager.onKeyDown(e);\r\n }\r\n break;\r\n\r\n case \"Down\":\r\n case \"ArrowDown\":\r\n if (!this.#menu) {\r\n this.#showMenu();\r\n e.preventDefault();\r\n } else {\r\n this._listKeyManager.onKeyDown(e);\r\n }\r\n break;\r\n\r\n default:\r\n this._listKeyManager.onKeyDown(e);\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuPointerDown(e: PointerEvent): void {\r\n if (e.button === 2) return;\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n\r\n const option = <M3eOptionElement | undefined>(\r\n e.composedPath().find((x) => x instanceof HTMLElement && x.tagName === \"M3E-OPTION\")\r\n );\r\n\r\n if (option && !option.disabled) {\r\n this._listKeyManager.setActiveItem(option);\r\n this.#selectOption(option);\r\n if (!prefersReducedMotion()) {\r\n setTimeout(() => this.#hideMenu(), 150);\r\n } else {\r\n this.#hideMenu();\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuToggle(e: ToggleEvent): void {\r\n if (!this.#menu) return;\r\n\r\n if (e.newState !== \"closed\") {\r\n const option = this.#options.find((x) => x.selected && !x.disabled);\r\n if (option) {\r\n this._listKeyManager.setActiveItem(option);\r\n scrollIntoViewIfNeeded(option, this.#menu);\r\n } else {\r\n this.#autoActivate();\r\n }\r\n\r\n this.dispatchEvent(\r\n new ToggleEvent(\"toggle\", {\r\n oldState: e.oldState,\r\n newState: e.newState,\r\n }),\r\n );\r\n } else {\r\n if (prefersReducedMotion()) {\r\n this.#destroyMenu(e);\r\n } else {\r\n // NOTE: use transitionend is preferred but doesn't fire when used here.\r\n // This is a workaround until that is fixed.\r\n setTimeout(() => this.#destroyMenu(e), 100);\r\n }\r\n }\r\n }\r\n\r\n /** @private*/\r\n #destroyMenu(e: ToggleEvent): void {\r\n if (!this.#menu) return;\r\n\r\n this.#clone?.replaceChildren(...this.#menu.childNodes);\r\n\r\n this.#menu.remove();\r\n this.#menu.removeEventListener(\"toggle\", this.#menuToggleHandler);\r\n this.#menu.removeEventListener(\"pointerdown\", this.#menuPointerDownHandler);\r\n this.#menu = undefined;\r\n\r\n if (this.#input) {\r\n this.#input.ariaExpanded = \"false\";\r\n this.#input.removeAttribute(\"aria-controls\");\r\n this.#input.removeAttribute(\"aria-owns\");\r\n }\r\n this.requestUpdate();\r\n\r\n this.#formField?.notifyControlStateChange();\r\n\r\n this.dispatchEvent(\r\n new ToggleEvent(\"toggle\", {\r\n oldState: e.oldState,\r\n newState: e.newState,\r\n }),\r\n );\r\n }\r\n\r\n /** @private */\r\n #showMenu(): void {\r\n if (this.#menu || !this.#input || this.#input.readOnly || this.#input.disabled) return;\r\n\r\n const count = this.#filterOptions();\r\n\r\n if (!this.#shouldShowMenu) return;\r\n\r\n this.#menu = document.createElement(\"m3e-option-panel\");\r\n this.#menu.id = this.#menuId;\r\n\r\n if (this.panelClass) {\r\n for (const klass of this.panelClass\r\n .split(/\\s+/)\r\n .map((d) => d.trim())\r\n .filter(Boolean)) {\r\n this.#menu.classList.add(klass);\r\n }\r\n }\r\n\r\n this.#menu.style.overflowX = \"hidden\";\r\n this.#menu.scrollStrategy = \"reposition\";\r\n this.#menu.fitAnchorWidth = true;\r\n this.#menu.addEventListener(\"toggle\", this.#menuToggleHandler);\r\n this.#menu.addEventListener(\"pointerdown\", this.#menuPointerDownHandler);\r\n\r\n this.#projectClone();\r\n\r\n this.#updateMenuState(this.#menu, count);\r\n\r\n (this.#formField ?? this.#input).insertAdjacentElement(\"afterend\", this.#menu);\r\n\r\n this.#input.setAttribute(\"aria-controls\", this.#menuId);\r\n this.#input.setAttribute(\"aria-owns\", this.#menuId);\r\n\r\n this.#formField?.notifyControlStateChange();\r\n\r\n if (this._listKeyManager.activeItem && this.autoActivate) {\r\n this.#activateOption(this._listKeyManager.activeItem, true);\r\n }\r\n\r\n const input = this.#input;\r\n setTimeout(() => this.#menu?.show(input, this.#formField?.menuAnchor));\r\n }\r\n\r\n /** @private */\r\n #projectClone(): void {\r\n if (!this.#clone || !this.#menu) return;\r\n const children = [...this.#clone.childNodes];\r\n if (!this.#hasNoDataSlot && this.noDataLabel) {\r\n const noDataSpan = document.createElement(\"span\");\r\n noDataSpan.slot = \"no-data\";\r\n noDataSpan.textContent = this.noDataLabel;\r\n children.push(noDataSpan);\r\n }\r\n if (!this.#hasLoadingSlot && this.loadingLabel) {\r\n const loadingSpan = document.createElement(\"span\");\r\n loadingSpan.slot = \"loading\";\r\n loadingSpan.textContent = this.loadingLabel;\r\n children.push(loadingSpan);\r\n }\r\n this.#menu.replaceChildren(...children);\r\n }\r\n\r\n /** @private */\r\n #updateMenuState(menu: M3eOptionPanelElement, count: number): void {\r\n setCustomState(menu, \"-loading\", this.loading);\r\n setCustomState(menu, \"-no-data\", count == 0);\r\n }\r\n\r\n /** @private */\r\n #hideMenu(): void {\r\n this.#menu?.hide();\r\n this.#input?.removeAttribute(\"aria-activedescendant\");\r\n }\r\n\r\n /** @private */\r\n #activateOption(option: M3eOptionElement, forceFocusVisible = false): void {\r\n if (!this.#input) return;\r\n\r\n this.#input.setAttribute(\"aria-activedescendant\", option.id);\r\n\r\n if (this.#menu) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\r\n\r\n const focusVisible =\r\n forceFocusVisible ||\r\n (!this.#ignoreFocusVisible && (this.#input.matches(\":focus-visible\") || forcedColorsActive()));\r\n\r\n this.#options.forEach((x) => {\r\n const active = x === option && focusVisible;\r\n if (active) {\r\n x.focusRing?.show();\r\n x.stateLayer?.show(\"focused\");\r\n } else {\r\n x.focusRing?.hide();\r\n x.stateLayer?.hide(\"focused\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n /** @private */\r\n async #updateSelectionState(clone: M3eOptionElement): Promise<void> {\r\n const option = this._options[this._listKeyManager.items.indexOf(clone)];\r\n if (option) {\r\n option.selected = clone.selected;\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n async #selectOption(option: M3eOptionElement): Promise<void> {\r\n if (option.selected) return;\r\n\r\n option.selected = true;\r\n await this.#updateSelectionState(option);\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n\r\n this.requestUpdate();\r\n if (this.isUpdatePending) {\r\n await this.updateComplete;\r\n }\r\n\r\n if (this.#input) {\r\n this.#input.value = option.value;\r\n }\r\n\r\n this.#formField?.notifyControlStateChange(true);\r\n }\r\n\r\n /** @private */\r\n #filterOption(clone: M3eOptionElement, option: M3eOptionElement, term: string, exactTerm: string): boolean {\r\n const value = this.caseSensitive ? option.value : option.value.toLowerCase();\r\n switch (this.filter) {\r\n case \"starts-with\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.startsWith(term);\r\n case \"ends-with\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.endsWith(term);\r\n case \"contains\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.includes(term);\r\n case \"none\":\r\n clone.disableHighlight = true;\r\n return true;\r\n default:\r\n clone.disableHighlight = true;\r\n return this.filter(option, exactTerm);\r\n }\r\n }\r\n\r\n /** @private */\r\n #filterOptions(): number {\r\n if (!this.#input) return 0;\r\n\r\n const oldCount = this.#options.filter((x) => !x.hidden).length;\r\n const shouldAnnounce = !this.loading && this.#inputChanged;\r\n this.#inputChanged = false;\r\n\r\n const exactTerm = this.#input.value;\r\n const term = this.caseSensitive ? exactTerm : exactTerm.toLocaleLowerCase();\r\n\r\n let newCount = 0;\r\n let first = false;\r\n let last: M3eOptionElement | undefined;\r\n\r\n for (let i = 0; i < this.#options.length; i++) {\r\n const clone = this.#options[i];\r\n const option = this._options[i];\r\n clone.hidden = !this.#filterOption(clone, option, term, exactTerm);\r\n\r\n if (clone.hidden) {\r\n this.#deactivateOption(clone);\r\n deleteCustomState(clone, \"-first\");\r\n deleteCustomState(clone, \"-last\");\r\n } else {\r\n newCount++;\r\n if (!first && !(clone.parentElement instanceof M3eOptGroupElement)) {\r\n addCustomState(clone, \"-first\");\r\n first = true;\r\n addCustomState(clone, \"-last\");\r\n last = clone;\r\n } else {\r\n deleteCustomState(clone, \"-first\");\r\n if (last) {\r\n deleteCustomState(last, \"-last\");\r\n }\r\n addCustomState(clone, \"-last\");\r\n last = clone;\r\n }\r\n }\r\n\r\n if (clone.selected && option.value !== exactTerm) {\r\n clone.selected = false;\r\n this.#updateSelectionState(clone);\r\n }\r\n }\r\n\r\n if (this.#menu) {\r\n this.#updateMenuState(this.#menu, newCount);\r\n }\r\n\r\n const groups = this.#menu?.querySelectorAll(\"m3e-optgroup\") ?? this.#clone?.querySelectorAll(\"m3e-optgroup\") ?? [];\r\n for (const group of groups) {\r\n group.hidden = [...group.querySelectorAll(\"m3e-option\")].every((x) => x.hidden);\r\n }\r\n\r\n if (shouldAnnounce) {\r\n this.#announceResults(oldCount, newCount);\r\n }\r\n\r\n this.#autoActivate();\r\n return newCount;\r\n }\r\n\r\n /** @private */\r\n #announceResults(oldCount: number, newCount: number): void {\r\n if (!this.#hasFocus) return;\r\n if (newCount == 0) {\r\n if (oldCount > 0 && this.noDataLabel) {\r\n M3eLiveAnnouncer.announce(this.noDataLabel, \"polite\");\r\n }\r\n } else if (oldCount != newCount) {\r\n const message = this.resultsLabel instanceof Function ? this.resultsLabel(newCount) : this.resultsLabel;\r\n if (message) {\r\n M3eLiveAnnouncer.announce(message, \"polite\");\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #autoActivate(): void {\r\n if (this.autoActivate && (!this._listKeyManager.activeItem || !this._listKeyManager.activeItem.selected)) {\r\n const option = this.#options.find((x) => !x.disabled && !x.hidden);\r\n if (option) {\r\n this._listKeyManager.setActiveItem(option);\r\n if (this.#menu) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #deactivateOption(option: M3eOptionElement): void {\r\n option.focusRing?.hide();\r\n option.stateLayer?.hide(\"focused\");\r\n if (option === this._listKeyManager.activeItem) {\r\n this._listKeyManager.updateActiveItem(null);\r\n this.#input?.removeAttribute(\"aria-activedescendant\");\r\n }\r\n }\r\n}\r\n\r\ninterface M3eAutocompleteElementEventMap extends HTMLElementEventMap {\r\n toggle: ToggleEvent;\r\n query: CustomEvent<AutocompleteQueryEventDetail>;\r\n}\r\n\r\nexport interface M3eAutocompleteElement {\r\n addEventListener<K extends keyof M3eAutocompleteElementEventMap>(\r\n type: K,\r\n listener: (this: M3eAutocompleteElement, ev: M3eAutocompleteElementEventMap[K]) => void,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n addEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener<K extends keyof M3eAutocompleteElementEventMap>(\r\n type: K,\r\n listener: (this: M3eAutocompleteElement, ev: M3eAutocompleteElementEventMap[K]) => void,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-autocomplete\": M3eAutocompleteElement;\r\n }\r\n}\r\n"],"names":["M3eAutocompleteElement","M3eAutocompleteElement_1","EventAttribute","HtmlFor","LitElement","constructor","_M3eAutocompleteElement_id","set","__nextId","_M3eAutocompleteElement_menuId","__classPrivateFieldGet","_options","Array","_M3eAutocompleteElement_clone","_M3eAutocompleteElement_ignoreFocusVisible","_M3eAutocompleteElement_menu","_M3eAutocompleteElement_ignoreHideMenuOnBlur","_M3eAutocompleteElement_inputChanged","_M3eAutocompleteElement_hasFocus","_M3eAutocompleteElement_mutationAbortController","_M3eAutocompleteElement_clickHandler","_M3eAutocompleteElement_instances","_M3eAutocompleteElement_handleClick","call","_M3eAutocompleteElement_formFieldPointerDownHandler","_M3eAutocompleteElement_handleFormFieldPointerDown","_M3eAutocompleteElement_focusHandler","_M3eAutocompleteElement_handleFocus","_M3eAutocompleteElement_blurHandler","_M3eAutocompleteElement_handleBlur","_M3eAutocompleteElement_keyDownHandler","e","_M3eAutocompleteElement_inputHandler","_M3eAutocompleteElement_changeHandler","_M3eAutocompleteElement_handleChange","_M3eAutocompleteElement_menuToggleHandler","_M3eAutocompleteElement_menuPointerDownHandler","_listKeyManager","ListKeyManager","withWrap","withHomeAndEnd","withPageUpAndDown","withVerticalOrientation","withSkipPredicate","item","disabled","hidden","onActiveItemChange","activeItem","_M3eAutocompleteElement_activateOption","hideSelectionIndicator","required","autoActivate","caseSensitive","filter","loading","hideNoData","hideLoading","loadingLabel","noDataLabel","resultsLabel","count","panelClass","MutationController","config","childList","subtree","callback","_M3eAutocompleteElement_handleMutation","options","attach","control","HTMLInputElement","autocomplete","role","ariaAutoComplete","ariaExpanded","addEventListener","_M3eAutocompleteElement_formField_get","detach","removeEventListener","clear","restoreFocus","_M3eAutocompleteElement_input_get","value","_M3eAutocompleteElement_filterOptions","focus","_M3eAutocompleteElement_hideMenu","connectedCallback","update","changedProperties","has","setCustomState","M3eLiveAnnouncer","announce","_M3eAutocompleteElement_shouldShowMenu_get","_M3eAutocompleteElement_showMenu","deleteCustomState","render","html","items","querySelector","_M3eAutocompleteElement_options_get","some","x","length","closest","abort","mutationAbortController","AbortController","__classPrivateFieldSet","querySelectorAll","option","signal","aborted","isUpdatePending","updateComplete","cloneNode","added","setItems","forEach","id","indexOf","_M3eAutocompleteElement_projectClone","_M3eAutocompleteElement_updateMenuState","readOnly","dispatchEvent","CustomEvent","detail","term","bubbles","composed","defaultPrevented","notifyControlStateChange","selected","key","preventDefault","_M3eAutocompleteElement_selectOption","prefersReducedMotion","setTimeout","altKey","onKeyDown","button","stopImmediatePropagation","composedPath","find","HTMLElement","tagName","setActiveItem","newState","scrollIntoViewIfNeeded","_M3eAutocompleteElement_autoActivate","ToggleEvent","oldState","_M3eAutocompleteElement_destroyMenu","replaceChildren","childNodes","remove","undefined","removeAttribute","requestUpdate","document","createElement","klass","split","map","d","trim","Boolean","classList","add","style","overflowX","scrollStrategy","fitAnchorWidth","insertAdjacentElement","setAttribute","input","show","menuAnchor","children","_M3eAutocompleteElement_hasNoDataSlot_get","noDataSpan","slot","textContent","push","_M3eAutocompleteElement_hasLoadingSlot_get","loadingSpan","menu","hide","forceFocusVisible","block","behavior","focusVisible","matches","forcedColorsActive","active","focusRing","stateLayer","clone","_M3eAutocompleteElement_updateSelectionState","_M3eAutocompleteElement_filterOption","exactTerm","toLowerCase","highlightMode","startsWith","endsWith","includes","disableHighlight","oldCount","shouldAnnounce","toLocaleLowerCase","newCount","first","last","i","_M3eAutocompleteElement_deactivateOption","parentElement","M3eOptGroupElement","addCustomState","groups","group","every","_M3eAutocompleteElement_announceResults","message","Function","updateActiveItem","styles","css","__decorate","property","attribute","type","prototype","reflect","converter","fromAttribute","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"autocomplete.js","sources":["../../src/autocomplete/AutocompleteElement.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { css, CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property } from \"lit/decorators.js\";\r\n\r\nimport {\r\n HtmlFor,\r\n prefersReducedMotion,\r\n scrollIntoViewIfNeeded,\r\n forcedColorsActive,\r\n setCustomState,\r\n deleteCustomState,\r\n addCustomState,\r\n customElement,\r\n MutationController,\r\n EventAttribute,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { ListKeyManager, M3eLiveAnnouncer } from \"@m3e/web/core/a11y\";\r\nimport { M3eOptGroupElement, M3eOptionElement, M3eOptionPanelElement } from \"@m3e/web/option\";\r\nimport type { M3eFormFieldElement } from \"@m3e/web/form-field\";\r\n\r\nimport { AutocompleteFilterMode } from \"./AutocompleteFilterMode\";\r\nimport { AutocompleteQueryEventDetail } from \"./AutocompleteQueryEventDetail\";\r\n\r\n/**\r\n * Enhances a text input with suggested options.\r\n *\r\n * @description\r\n * The `m3e-autocomplete` component augments a text input field with a dynamically positioned menu of filterable suggestions,\r\n * following Material Design 3 principles. It provides real-time filtering, keyboard navigation, automatic option activation,\r\n * and text highlighting to guide user selection. The component manages focus, selection state, and menu visibility while\r\n * integrating seamlessly with form field containers and supporting both required and optional selection modes.\r\n *\r\n * @example\r\n * The following example illustrates use of the `m3e-autocomplete` paired with a `m3e-form-field`.\r\n * ```html\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"fruit\">Choose your favorite fruit</label>\r\n * <input id=\"fruit\" />\r\n * </m3e-form-field>\r\n * <m3e-autocomplete for=\"fruit\">\r\n * <m3e-option>Apples</m3e-option>\r\n * <m3e-option>Oranges</m3e-option>\r\n * <m3e-option>Bananas</m3e-option>\r\n * <m3e-option>Grapes</m3e-option>\r\n * </m3e-autocomplete>\r\n * ```\r\n *\r\n * @tag m3e-autocomplete\r\n *\r\n * @attr auto-activate - Whether the first option should be automatically activated.\r\n * @attr case-sensitive - Whether filtering is case sensitive.\r\n * @attr filter - Mode in which to filter options.\r\n * @attr hide-selection-indicator - Whether to hide the selection indicator.\r\n * @attr hide-loading - Whether to hide the menu when loading options.\r\n * @attr hide-no-data - Whether to hide the menu when there are no options to show.\r\n * @attr loading - Whether options are being loaded.\r\n * @attr loading-label - The text announced and presented when loading options.\r\n * @attr no-data-label - The text announced and presented when no options are available for the current term.\r\n * @attr panel-class - Class or list of classes to be applied to the autocomplete's overlay panel.\r\n * @attr required - Whether the user is required to make a selection when interacting with the autocomplete.\r\n * @attr results-label - The text announced when available options change for the current term.\r\n *\r\n * @slot - Renders the options of the autocomplete.\r\n * @slot loading - Renders content when loading options.\r\n * @slot no-data - Renders content when there are no options to show.\r\n *\r\n * @fires toggle - Emitted when the options menu opens or closes.\r\n * @fires query - Emitted when the input is focused or when the user modifies its value.\r\n * @fires change - Emitted when the committed value changes due to selecting an option or clearing the input.\r\n */\r\n@customElement(\"m3e-autocomplete\")\r\nexport class M3eAutocompleteElement extends EventAttribute(HtmlFor(LitElement), \"query\") {\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: contents;\r\n }\r\n .options {\r\n display: none;\r\n }\r\n `;\r\n\r\n /** @private */ private static __nextId = 0;\r\n\r\n /** @private */ readonly #id = `m3e-autocomplete-${M3eAutocompleteElement.__nextId}`;\r\n /** @private */ readonly #menuId = `${this.#id}-menu`;\r\n /** @private */ private _options = new Array<M3eOptionElement>();\r\n /** @private */ #clone?: HTMLElement;\r\n /** @private */ #ignoreFocusVisible = false;\r\n /** @private */ #menu?: M3eOptionPanelElement;\r\n /** @private */ #ignoreHideMenuOnBlur = false;\r\n /** @private */ #inputChanged = false;\r\n /** @private */ #hasFocus = false;\r\n /** @private */ #mutationAbortController?: AbortController;\r\n\r\n /** @private */ readonly #clickHandler = () => this.#handleClick();\r\n /** @private */ readonly #formFieldPointerDownHandler = () => this.#handleFormFieldPointerDown();\r\n /** @private */ readonly #focusHandler = () => this.#handleFocus();\r\n /** @private */ readonly #blurHandler = () => this.#handleBlur();\r\n /** @private */ readonly #keyDownHandler = (e: KeyboardEvent) => this.#handleKeyDown(e);\r\n /** @private */ readonly #inputHandler = (e: Event) => this.#handleInput(e);\r\n /** @private */ readonly #changeHandler = () => this.#handleChange();\r\n /** @private */ readonly #menuToggleHandler = (e: ToggleEvent) => this.#handleMenuToggle(e);\r\n /** @private */ readonly #menuPointerDownHandler = (e: PointerEvent) => this.#handleMenuPointerDown(e);\r\n\r\n /** @private */ private readonly _listKeyManager = new ListKeyManager<M3eOptionElement>()\r\n .withWrap()\r\n .withHomeAndEnd()\r\n .withPageUpAndDown()\r\n .withVerticalOrientation()\r\n .withSkipPredicate((item) => item.disabled || item.hidden === true)\r\n .onActiveItemChange(() => {\r\n if (this._listKeyManager.activeItem) {\r\n this.#activateOption(this._listKeyManager.activeItem);\r\n }\r\n });\r\n\r\n constructor() {\r\n super();\r\n\r\n new MutationController(this, {\r\n config: {\r\n childList: true,\r\n subtree: true,\r\n },\r\n callback: () => this.#handleMutation(),\r\n });\r\n }\r\n\r\n /**\r\n * Whether to hide the selection indicator.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-selection-indicator\", type: Boolean }) hideSelectionIndicator = false;\r\n\r\n /**\r\n * Whether the user is required to make a selection when interacting with the autocomplete.\r\n * @default false\r\n */\r\n @property({ type: Boolean, reflect: true }) required = false;\r\n\r\n /**\r\n * Whether the first option should be automatically activated.\r\n * @default false\r\n */\r\n @property({ attribute: \"auto-activate\", type: Boolean }) autoActivate = false;\r\n\r\n /**\r\n * Whether filtering is case sensitive.\r\n * @default false\r\n */\r\n @property({ attribute: \"case-sensitive\", type: Boolean }) caseSensitive = false;\r\n\r\n /**\r\n * Mode in which to filter options.\r\n * @default \"contains\"\r\n */\r\n @property({\r\n converter: {\r\n fromAttribute(value: string | null): AutocompleteFilterMode {\r\n if (value === null) return \"contains\";\r\n if (value === \"starts-with\" || value === \"ends-with\" || value === \"contains\" || value === \"none\") {\r\n return value;\r\n }\r\n return \"contains\";\r\n },\r\n },\r\n })\r\n filter: AutocompleteFilterMode | ((option: M3eOptionElement, term: string) => boolean) = \"contains\";\r\n\r\n /**\r\n * Whether options are being loaded.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) loading = false;\r\n\r\n /**\r\n * Whether to hide the menu when there are no options to show.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-no-data\", type: Boolean }) hideNoData = false;\r\n\r\n /**\r\n * Whether to hide the menu when loading options.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-loading\", type: Boolean }) hideLoading = false;\r\n\r\n /**\r\n * The text announced and presented when loading options.\r\n * @default \"Loading...\"\r\n */\r\n @property({ attribute: \"loading-label\" }) loadingLabel = \"Loading...\";\r\n\r\n /**\r\n * The text announced and presented when no options are available for the current term.\r\n * @default \"No options\"\r\n */\r\n @property({ attribute: \"no-data-label\" }) noDataLabel = \"No options\";\r\n\r\n /**\r\n * The text announced when available options change for the current term.\r\n * @default (count) => `${count} options`\r\n */\r\n @property({ attribute: \"results-label\" }) resultsLabel: string | ((count: number) => string) = (count) =>\r\n `${count} options`;\r\n\r\n /**\r\n * Class or list of classes to be applied to the autocomplete's overlay panel.\r\n * @default \"\"\r\n */\r\n @property({ attribute: \"panel-class\" }) panelClass = \"\";\r\n\r\n /** The options that can be selected. */\r\n get options(): readonly M3eOptionElement[] {\r\n return this._options ?? [];\r\n }\r\n\r\n /** The selected option. */\r\n get selected(): M3eOptionElement | null {\r\n return this.options.find((x) => x.selected) ?? null;\r\n }\r\n\r\n /** The selected (enabled) value. */\r\n get value(): string | null {\r\n const selected = this.selected;\r\n return selected && !selected.disabled ? selected.value : null;\r\n }\r\n\r\n /** @private */\r\n get #options(): readonly M3eOptionElement[] {\r\n return this._listKeyManager?.items ?? [];\r\n }\r\n\r\n /** @private */\r\n get #input(): HTMLInputElement | null {\r\n return this.control ? <HTMLInputElement>this.control : null;\r\n }\r\n\r\n /** @private */\r\n get #hasNoDataSlot(): boolean {\r\n return (this.#clone?.querySelector(\"[slot='no-data']\") ?? null) !== null;\r\n }\r\n\r\n /** @private */\r\n get #hasLoadingSlot(): boolean {\r\n return (this.#clone?.querySelector(\"[slot='loading']\") ?? null) !== null;\r\n }\r\n\r\n /** @private */\r\n get #shouldShowMenu(): boolean {\r\n return (\r\n this.#options.some((x) => x.hidden === false) ||\r\n (this.loading && !this.hideLoading && this.loadingLabel.length > 0) ||\r\n (!this.loading && !this.hideNoData && this.noDataLabel.length > 0)\r\n );\r\n }\r\n\r\n /** @private */\r\n get #formField(): M3eFormFieldElement | null {\r\n return this.control?.closest(\"m3e-form-field\") ?? null;\r\n }\r\n\r\n /** @inheritdoc */\r\n override attach(control: HTMLElement): void {\r\n if (!(control instanceof HTMLInputElement)) return;\r\n\r\n super.attach(control);\r\n\r\n control.autocomplete = \"off\";\r\n control.role = \"combobox\";\r\n control.ariaAutoComplete = \"list\";\r\n control.ariaExpanded = \"false\";\r\n\r\n control.addEventListener(\"click\", this.#clickHandler);\r\n control.addEventListener(\"focus\", this.#focusHandler);\r\n control.addEventListener(\"blur\", this.#blurHandler);\r\n control.addEventListener(\"keydown\", this.#keyDownHandler);\r\n control.addEventListener(\"input\", this.#inputHandler);\r\n control.addEventListener(\"change\", this.#changeHandler);\r\n\r\n this.#formField?.addEventListener(\"pointerdown\", this.#formFieldPointerDownHandler);\r\n }\r\n\r\n /** @inheritdoc */\r\n override detach(): void {\r\n if (this.control) {\r\n this.#formField?.removeEventListener(\"pointerdown\", this.#formFieldPointerDownHandler);\r\n\r\n this.control.role = null;\r\n this.control.ariaAutoComplete = null;\r\n this.control.ariaExpanded = null;\r\n\r\n this.control.removeEventListener(\"click\", this.#clickHandler);\r\n this.control.removeEventListener(\"focus\", this.#focusHandler);\r\n this.control.removeEventListener(\"blur\", this.#blurHandler);\r\n this.control.removeEventListener(\"keydown\", this.#keyDownHandler);\r\n this.control.removeEventListener(\"input\", this.#inputHandler);\r\n this.control.removeEventListener(\"change\", this.#changeHandler);\r\n }\r\n super.detach();\r\n }\r\n\r\n /**\r\n * Clears the value of the element.\r\n * @param [restoreFocus=false] Whether to restore input focus.\r\n */\r\n clear(restoreFocus = false): void {\r\n if (!this.#input) return;\r\n\r\n this.#input.value = \"\";\r\n if (this.#clearOptions()) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n this.#filterOptions();\r\n\r\n if (restoreFocus) {\r\n this.#input.focus();\r\n } else {\r\n this.#hideMenu();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n this.#handleMutation();\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override update(changedProperties: PropertyValues<this>): void {\r\n super.update(changedProperties);\r\n\r\n if (changedProperties.has(\"hideNoData\") && this.hideNoData && this.#menu) {\r\n setCustomState(this.#menu, \"-no-data\", false);\r\n }\r\n\r\n if (changedProperties.has(\"loading\")) {\r\n if (this.loading) {\r\n if (this.#hasFocus) {\r\n if (this.loadingLabel) {\r\n M3eLiveAnnouncer.announce(this.loadingLabel, \"polite\");\r\n }\r\n if (!this.#menu && this.#shouldShowMenu) {\r\n this.#showMenu();\r\n }\r\n }\r\n } else if (this.#menu && !this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n } else if (this.#menu) {\r\n deleteCustomState(this.#menu, \"-loading\");\r\n } else if (this.#hasFocus) {\r\n this.#showMenu();\r\n }\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html`<div class=\"options\" aria-hidden=\"true\">\r\n <slot></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n async #handleMutation(): Promise<void> {\r\n if (this.#mutationAbortController) {\r\n this.#mutationAbortController.abort();\r\n }\r\n const mutationAbortController = new AbortController();\r\n this.#mutationAbortController = mutationAbortController;\r\n\r\n const options = [...this.querySelectorAll(\"m3e-option\")];\r\n\r\n for (const option of options) {\r\n if (mutationAbortController.signal.aborted) {\r\n break;\r\n }\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n }\r\n\r\n if (mutationAbortController.signal.aborted) {\r\n return;\r\n }\r\n\r\n this._options = options;\r\n\r\n this.#clone = <HTMLElement>this.cloneNode(true);\r\n\r\n const { added } = this._listKeyManager.setItems([...this.#clone.querySelectorAll(\"m3e-option\")]);\r\n added.forEach((x) => {\r\n x.id = x.id || `${this.#id}-option-${this._listKeyManager.items.indexOf(x)}`;\r\n setCustomState(x, \"-hide-selection-indicator\", this.hideSelectionIndicator);\r\n });\r\n\r\n if (this.#menu) {\r\n const count = this.#filterOptions();\r\n this.#projectClone();\r\n if (!this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n } else {\r\n this.#updateMenuState(this.#menu, count);\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClick(): void {\r\n this.#ignoreFocusVisible = true;\r\n this.#showMenu();\r\n }\r\n\r\n /** @private */\r\n #handleFormFieldPointerDown(): void {\r\n this.#ignoreHideMenuOnBlur = true;\r\n }\r\n\r\n /** @private */\r\n #handleFocus(): void {\r\n this.#hasFocus = true;\r\n this.#ignoreFocusVisible = true;\r\n\r\n if (this.options.length == 0 && !(<HTMLInputElement>this.control).readOnly) {\r\n this.dispatchEvent(\r\n new CustomEvent<AutocompleteQueryEventDetail>(\"query\", {\r\n detail: { term: this.#input?.value ?? \"\" },\r\n bubbles: true,\r\n composed: true,\r\n }),\r\n );\r\n }\r\n\r\n this.#showMenu();\r\n }\r\n\r\n /** @private */\r\n #handleBlur(): void {\r\n this.#hasFocus = false;\r\n if (!this.#ignoreHideMenuOnBlur) {\r\n this.#hideMenu();\r\n }\r\n this.#ignoreHideMenuOnBlur = false;\r\n }\r\n\r\n /** @private */\r\n #handleInput(e: Event): void {\r\n if (!this.#input || e.defaultPrevented) return;\r\n\r\n this.dispatchEvent(\r\n new CustomEvent<AutocompleteQueryEventDetail>(\"query\", {\r\n detail: { term: this.#input.value },\r\n bubbles: true,\r\n composed: true,\r\n }),\r\n );\r\n\r\n if (this.#input.value === \"\" && this.#clearOptions()) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n this.#inputChanged = true;\r\n try {\r\n if (!this.#menu) {\r\n this.#showMenu();\r\n } else {\r\n this.#filterOptions();\r\n if (!this.#shouldShowMenu) {\r\n this.#hideMenu();\r\n }\r\n }\r\n } finally {\r\n this.#inputChanged = false;\r\n this.#formField?.notifyControlStateChange(true);\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleChange(): void {\r\n if (this.#input) {\r\n const selected = this.selected;\r\n if (this.required) {\r\n this.#input.value = selected?.label ?? \"\";\r\n } else if (selected && selected.label !== this.#input.value && this.#clearOptions()) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyDown(e: KeyboardEvent): void {\r\n if (e.defaultPrevented) return;\r\n\r\n this.#ignoreFocusVisible = false;\r\n\r\n switch (e.key) {\r\n case \"Backspace\":\r\n case \"Delete\":\r\n if (this.#input && !this.#input.value) {\r\n this.#hideMenu();\r\n }\r\n break;\r\n\r\n case \"Enter\":\r\n if (this.#menu && this._listKeyManager.activeItem) {\r\n e.preventDefault();\r\n this.#selectOption(this._listKeyManager.activeItem);\r\n if (!prefersReducedMotion()) {\r\n setTimeout(() => this.#hideMenu(), 150);\r\n } else {\r\n this.#hideMenu();\r\n }\r\n } else if (this.#menu) {\r\n setTimeout(() => {\r\n if (this.#input && !this.#input.value) {\r\n this.#hideMenu();\r\n }\r\n });\r\n }\r\n break;\r\n\r\n case \"Escape\":\r\n case \"Tab\":\r\n this.#hideMenu();\r\n break;\r\n\r\n case \"Up\":\r\n case \"ArrowUp\":\r\n if (e.altKey) {\r\n this.#hideMenu();\r\n } else {\r\n this._listKeyManager.onKeyDown(e);\r\n }\r\n break;\r\n\r\n case \"Down\":\r\n case \"ArrowDown\":\r\n if (!this.#menu) {\r\n this.#showMenu();\r\n e.preventDefault();\r\n } else {\r\n this._listKeyManager.onKeyDown(e);\r\n }\r\n break;\r\n\r\n default:\r\n this._listKeyManager.onKeyDown(e);\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuPointerDown(e: PointerEvent): void {\r\n if (e.button === 2) return;\r\n e.preventDefault();\r\n e.stopImmediatePropagation();\r\n\r\n const option = <M3eOptionElement | undefined>(\r\n e.composedPath().find((x) => x instanceof HTMLElement && x.tagName === \"M3E-OPTION\")\r\n );\r\n\r\n if (option && !option.disabled) {\r\n this._listKeyManager.setActiveItem(option);\r\n this.#selectOption(option);\r\n if (!prefersReducedMotion()) {\r\n setTimeout(() => this.#hideMenu(), 150);\r\n } else {\r\n this.#hideMenu();\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuToggle(e: ToggleEvent): void {\r\n if (!this.#menu) return;\r\n\r\n if (e.newState !== \"closed\") {\r\n const option = this.#options.find((x) => x.selected && !x.disabled);\r\n if (option) {\r\n this._listKeyManager.setActiveItem(option);\r\n scrollIntoViewIfNeeded(option, this.#menu);\r\n } else {\r\n this.#autoActivate();\r\n }\r\n\r\n this.dispatchEvent(\r\n new ToggleEvent(\"toggle\", {\r\n oldState: e.oldState,\r\n newState: e.newState,\r\n }),\r\n );\r\n } else {\r\n if (prefersReducedMotion()) {\r\n this.#destroyMenu(e);\r\n } else {\r\n // NOTE: use transitionend is preferred but doesn't fire when used here.\r\n // This is a workaround until that is fixed.\r\n setTimeout(() => this.#destroyMenu(e), 100);\r\n }\r\n }\r\n }\r\n\r\n /** @private*/\r\n #destroyMenu(e: ToggleEvent): void {\r\n if (!this.#menu) return;\r\n\r\n this.#clone?.replaceChildren(...this.#menu.childNodes);\r\n\r\n this.#menu.remove();\r\n this.#menu.removeEventListener(\"toggle\", this.#menuToggleHandler);\r\n this.#menu.removeEventListener(\"pointerdown\", this.#menuPointerDownHandler);\r\n this.#menu = undefined;\r\n\r\n if (this.#input) {\r\n this.#input.ariaExpanded = \"false\";\r\n this.#input.removeAttribute(\"aria-controls\");\r\n this.#input.removeAttribute(\"aria-owns\");\r\n this.#input.removeAttribute(\"aria-activedescendant\");\r\n }\r\n this.requestUpdate();\r\n\r\n this.#formField?.notifyControlStateChange();\r\n\r\n this.dispatchEvent(\r\n new ToggleEvent(\"toggle\", {\r\n oldState: e.oldState,\r\n newState: e.newState,\r\n }),\r\n );\r\n\r\n if (this.#input?.slot === \"input\" && this.#input.parentElement?.tagName === \"M3E-INPUT-CHIP-SET\") {\r\n this.#clearOptions();\r\n }\r\n }\r\n\r\n /** @private */\r\n #showMenu(): void {\r\n if (this.#menu || !this.#input || this.#input.readOnly || this.#input.disabled) return;\r\n\r\n const count = this.#filterOptions();\r\n\r\n if (!this.#shouldShowMenu) return;\r\n\r\n this.#menu = document.createElement(\"m3e-option-panel\");\r\n this.#menu.id = this.#menuId;\r\n\r\n if (this.panelClass) {\r\n for (const klass of this.panelClass\r\n .split(/\\s+/)\r\n .map((d) => d.trim())\r\n .filter(Boolean)) {\r\n this.#menu.classList.add(klass);\r\n }\r\n }\r\n\r\n this.#menu.style.overflowX = \"hidden\";\r\n this.#menu.scrollStrategy = \"reposition\";\r\n this.#menu.fitAnchorWidth = true;\r\n this.#menu.addEventListener(\"toggle\", this.#menuToggleHandler);\r\n this.#menu.addEventListener(\"pointerdown\", this.#menuPointerDownHandler);\r\n\r\n this.#projectClone();\r\n\r\n this.#updateMenuState(this.#menu, count);\r\n\r\n (this.#formField ?? this.#input).insertAdjacentElement(\"afterend\", this.#menu);\r\n\r\n this.#input.setAttribute(\"aria-controls\", this.#menuId);\r\n this.#input.setAttribute(\"aria-owns\", this.#menuId);\r\n\r\n this.#formField?.notifyControlStateChange();\r\n\r\n if (this._listKeyManager.activeItem && this.autoActivate) {\r\n this.#activateOption(this._listKeyManager.activeItem, true);\r\n }\r\n\r\n const input = this.#input;\r\n setTimeout(() => this.#menu?.show(input, this.#formField?.menuAnchor));\r\n }\r\n\r\n /** @private */\r\n #projectClone(): void {\r\n if (!this.#clone || !this.#menu) return;\r\n const children = [...this.#clone.childNodes];\r\n if (!this.#hasNoDataSlot && this.noDataLabel) {\r\n const noDataSpan = document.createElement(\"span\");\r\n noDataSpan.slot = \"no-data\";\r\n noDataSpan.textContent = this.noDataLabel;\r\n children.push(noDataSpan);\r\n }\r\n if (!this.#hasLoadingSlot && this.loadingLabel) {\r\n const loadingSpan = document.createElement(\"span\");\r\n loadingSpan.slot = \"loading\";\r\n loadingSpan.textContent = this.loadingLabel;\r\n children.push(loadingSpan);\r\n }\r\n this.#menu.replaceChildren(...children);\r\n }\r\n\r\n /** @private */\r\n #updateMenuState(menu: M3eOptionPanelElement, count: number): void {\r\n setCustomState(menu, \"-loading\", this.loading);\r\n setCustomState(menu, \"-no-data\", count == 0);\r\n }\r\n\r\n /** @private */\r\n #hideMenu(): void {\r\n this.#menu?.hide();\r\n }\r\n\r\n /** @private */\r\n #activateOption(option: M3eOptionElement, forceFocusVisible = false): void {\r\n if (!this.#input) return;\r\n\r\n this.#input.setAttribute(\"aria-activedescendant\", option.id);\r\n\r\n if (this.#menu) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\r\n\r\n const focusVisible =\r\n forceFocusVisible ||\r\n (!this.#ignoreFocusVisible && (this.#input.matches(\":focus-visible\") || forcedColorsActive()));\r\n\r\n this.#options.forEach((x) => {\r\n const active = x === option && focusVisible;\r\n if (active) {\r\n x.focusRing?.show();\r\n x.stateLayer?.show(\"focused\");\r\n } else {\r\n x.focusRing?.hide();\r\n x.stateLayer?.hide(\"focused\");\r\n }\r\n });\r\n }\r\n }\r\n\r\n /** @private */\r\n async #updateSelectionState(clone: M3eOptionElement): Promise<void> {\r\n const option = this._options[this._listKeyManager.items.indexOf(clone)];\r\n if (option) {\r\n option.selected = clone.selected;\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n async #selectOption(option: M3eOptionElement): Promise<void> {\r\n if (option.selected) return;\r\n\r\n option.selected = true;\r\n await this.#updateSelectionState(option);\r\n if (option.isUpdatePending) {\r\n await option.updateComplete;\r\n }\r\n\r\n this.requestUpdate();\r\n if (this.isUpdatePending) {\r\n await this.updateComplete;\r\n }\r\n\r\n if (this.#input) {\r\n this.#input.value = option.label;\r\n }\r\n\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n\r\n this.#formField?.notifyControlStateChange(true);\r\n }\r\n\r\n /** @private */\r\n #filterOption(clone: M3eOptionElement, option: M3eOptionElement, term: string, exactTerm: string): boolean {\r\n const value = this.caseSensitive ? option.value : option.value.toLowerCase();\r\n switch (this.filter) {\r\n case \"starts-with\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.startsWith(term);\r\n case \"ends-with\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.endsWith(term);\r\n case \"contains\":\r\n clone.term = exactTerm;\r\n clone.highlightMode = this.filter;\r\n return value.includes(term);\r\n case \"none\":\r\n clone.disableHighlight = true;\r\n return true;\r\n default:\r\n clone.disableHighlight = true;\r\n return this.filter(option, exactTerm);\r\n }\r\n }\r\n\r\n /** @private */\r\n #filterOptions(): number {\r\n if (!this.#input) return 0;\r\n\r\n const oldCount = this.#options.filter((x) => x.hidden === false).length;\r\n const shouldAnnounce = !this.loading && this.#inputChanged;\r\n this.#inputChanged = false;\r\n\r\n const exactTerm = this.#input.value;\r\n const term = this.caseSensitive ? exactTerm : exactTerm.toLocaleLowerCase();\r\n\r\n let newCount = 0;\r\n let first = false;\r\n let last: M3eOptionElement | undefined;\r\n\r\n for (let i = 0; i < this.#options.length; i++) {\r\n const clone = this.#options[i];\r\n const option = this._options[i];\r\n clone.hidden = !this.#filterOption(clone, option, term, exactTerm);\r\n\r\n if (clone.hidden === true) {\r\n this.#deactivateOption(clone);\r\n deleteCustomState(clone, \"-first\");\r\n deleteCustomState(clone, \"-last\");\r\n } else {\r\n newCount++;\r\n if (!first && !(clone.parentElement instanceof M3eOptGroupElement)) {\r\n addCustomState(clone, \"-first\");\r\n first = true;\r\n addCustomState(clone, \"-last\");\r\n last = clone;\r\n } else {\r\n deleteCustomState(clone, \"-first\");\r\n if (last) {\r\n deleteCustomState(last, \"-last\");\r\n }\r\n addCustomState(clone, \"-last\");\r\n last = clone;\r\n }\r\n }\r\n }\r\n\r\n if (this.#menu) {\r\n this.#updateMenuState(this.#menu, newCount);\r\n }\r\n\r\n const groups = this.#menu?.querySelectorAll(\"m3e-optgroup\") ?? this.#clone?.querySelectorAll(\"m3e-optgroup\") ?? [];\r\n for (const group of groups) {\r\n group.hidden = [...group.querySelectorAll(\"m3e-option\")].every((x) => x.hidden === true);\r\n }\r\n\r\n if (shouldAnnounce) {\r\n this.#announceResults(oldCount, newCount);\r\n }\r\n\r\n this.#autoActivate();\r\n return newCount;\r\n }\r\n\r\n /** @private */\r\n #clearOptions(): boolean {\r\n const selected = this._listKeyManager.items.filter((x) => x.selected);\r\n if (selected.length > 0) {\r\n selected.forEach((x) => {\r\n x.selected = false;\r\n this.#updateSelectionState(x);\r\n });\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /** @private */\r\n #announceResults(oldCount: number, newCount: number): void {\r\n if (!this.#hasFocus) return;\r\n if (newCount == 0) {\r\n if (oldCount > 0 && this.noDataLabel) {\r\n M3eLiveAnnouncer.announce(this.noDataLabel, \"polite\");\r\n }\r\n } else if (oldCount != newCount) {\r\n const message = this.resultsLabel instanceof Function ? this.resultsLabel(newCount) : this.resultsLabel;\r\n if (message) {\r\n M3eLiveAnnouncer.announce(message, \"polite\");\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #autoActivate(): void {\r\n if (this.autoActivate && (!this._listKeyManager.activeItem || !this._listKeyManager.activeItem.selected)) {\r\n const option = this.#options.find((x) => !x.disabled && x.hidden === false);\r\n if (option) {\r\n this._listKeyManager.setActiveItem(option);\r\n if (this.#menu) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\r\n }\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #deactivateOption(option: M3eOptionElement): void {\r\n option.focusRing?.hide();\r\n option.stateLayer?.hide(\"focused\");\r\n if (option === this._listKeyManager.activeItem) {\r\n this._listKeyManager.updateActiveItem(null);\r\n this.#input?.removeAttribute(\"aria-activedescendant\");\r\n }\r\n }\r\n}\r\n\r\ninterface M3eAutocompleteElementEventMap extends HTMLElementEventMap {\r\n toggle: ToggleEvent;\r\n query: CustomEvent<AutocompleteQueryEventDetail>;\r\n}\r\n\r\nexport interface M3eAutocompleteElement {\r\n addEventListener<K extends keyof M3eAutocompleteElementEventMap>(\r\n type: K,\r\n listener: (this: M3eAutocompleteElement, ev: M3eAutocompleteElementEventMap[K]) => void,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n addEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | AddEventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener<K extends keyof M3eAutocompleteElementEventMap>(\r\n type: K,\r\n listener: (this: M3eAutocompleteElement, ev: M3eAutocompleteElementEventMap[K]) => void,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n\r\n removeEventListener(\r\n type: string,\r\n listener: EventListenerOrEventListenerObject,\r\n options?: boolean | EventListenerOptions,\r\n ): void;\r\n}\r\n\r\ndeclare global {\r\n interface HTMLElementTagNameMap {\r\n \"m3e-autocomplete\": M3eAutocompleteElement;\r\n }\r\n}\r\n"],"names":["M3eAutocompleteElement","M3eAutocompleteElement_1","EventAttribute","HtmlFor","LitElement","constructor","_M3eAutocompleteElement_id","set","__nextId","_M3eAutocompleteElement_menuId","__classPrivateFieldGet","_options","Array","_M3eAutocompleteElement_clone","_M3eAutocompleteElement_ignoreFocusVisible","_M3eAutocompleteElement_menu","_M3eAutocompleteElement_ignoreHideMenuOnBlur","_M3eAutocompleteElement_inputChanged","_M3eAutocompleteElement_hasFocus","_M3eAutocompleteElement_mutationAbortController","_M3eAutocompleteElement_clickHandler","_M3eAutocompleteElement_instances","_M3eAutocompleteElement_handleClick","call","_M3eAutocompleteElement_formFieldPointerDownHandler","_M3eAutocompleteElement_handleFormFieldPointerDown","_M3eAutocompleteElement_focusHandler","_M3eAutocompleteElement_handleFocus","_M3eAutocompleteElement_blurHandler","_M3eAutocompleteElement_handleBlur","_M3eAutocompleteElement_keyDownHandler","e","_M3eAutocompleteElement_inputHandler","_M3eAutocompleteElement_changeHandler","_M3eAutocompleteElement_handleChange","_M3eAutocompleteElement_menuToggleHandler","_M3eAutocompleteElement_menuPointerDownHandler","_listKeyManager","ListKeyManager","withWrap","withHomeAndEnd","withPageUpAndDown","withVerticalOrientation","withSkipPredicate","item","disabled","hidden","onActiveItemChange","activeItem","_M3eAutocompleteElement_activateOption","hideSelectionIndicator","required","autoActivate","caseSensitive","filter","loading","hideNoData","hideLoading","loadingLabel","noDataLabel","resultsLabel","count","panelClass","MutationController","config","childList","subtree","callback","_M3eAutocompleteElement_handleMutation","options","selected","find","x","value","attach","control","HTMLInputElement","autocomplete","role","ariaAutoComplete","ariaExpanded","addEventListener","_M3eAutocompleteElement_formField_get","detach","removeEventListener","clear","restoreFocus","_M3eAutocompleteElement_input_get","_M3eAutocompleteElement_clearOptions","dispatchEvent","Event","bubbles","_M3eAutocompleteElement_filterOptions","focus","_M3eAutocompleteElement_hideMenu","connectedCallback","update","changedProperties","has","setCustomState","M3eLiveAnnouncer","announce","_M3eAutocompleteElement_shouldShowMenu_get","_M3eAutocompleteElement_showMenu","deleteCustomState","render","html","items","querySelector","_M3eAutocompleteElement_options_get","some","length","closest","abort","mutationAbortController","AbortController","__classPrivateFieldSet","querySelectorAll","option","signal","aborted","isUpdatePending","updateComplete","cloneNode","added","setItems","forEach","id","indexOf","_M3eAutocompleteElement_projectClone","_M3eAutocompleteElement_updateMenuState","readOnly","CustomEvent","detail","term","composed","defaultPrevented","notifyControlStateChange","label","key","preventDefault","_M3eAutocompleteElement_selectOption","prefersReducedMotion","setTimeout","altKey","onKeyDown","button","stopImmediatePropagation","composedPath","HTMLElement","tagName","setActiveItem","newState","scrollIntoViewIfNeeded","_M3eAutocompleteElement_autoActivate","ToggleEvent","oldState","_M3eAutocompleteElement_destroyMenu","replaceChildren","childNodes","remove","undefined","removeAttribute","requestUpdate","slot","parentElement","document","createElement","klass","split","map","d","trim","Boolean","classList","add","style","overflowX","scrollStrategy","fitAnchorWidth","insertAdjacentElement","setAttribute","input","show","menuAnchor","children","_M3eAutocompleteElement_hasNoDataSlot_get","noDataSpan","textContent","push","_M3eAutocompleteElement_hasLoadingSlot_get","loadingSpan","menu","hide","forceFocusVisible","block","behavior","focusVisible","matches","forcedColorsActive","active","focusRing","stateLayer","clone","_M3eAutocompleteElement_updateSelectionState","_M3eAutocompleteElement_filterOption","exactTerm","toLowerCase","highlightMode","startsWith","endsWith","includes","disableHighlight","oldCount","shouldAnnounce","toLocaleLowerCase","newCount","first","last","i","_M3eAutocompleteElement_deactivateOption","M3eOptGroupElement","addCustomState","groups","group","every","_M3eAutocompleteElement_announceResults","message","Function","updateActiveItem","styles","css","__decorate","property","attribute","type","prototype","reflect","converter","fromAttribute","customElement"],"mappings":"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"}