@m3e/web 2.3.0 → 2.3.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.
@@ -1034,6 +1034,33 @@
1034
1034
  ],
1035
1035
  "references": []
1036
1036
  },
1037
+ {
1038
+ "name": "m3e-divider",
1039
+ "description": "A thin line that separates content in lists or other containers.\n---\n\n\n### **CSS Properties:**\n - **--m3e-divider-thickness** - Thickness of the divider line. _(default: undefined)_\n- **--m3e-divider-color** - Color of the divider line. _(default: undefined)_\n- **--m3e-divider-inset-size** - When inset, fallback inset size used when no specific start or end inset is provided. _(default: undefined)_\n- **--m3e-divider-inset-start-size** - When inset, leading inset size. _(default: undefined)_\n- **--m3e-divider-inset-end-size** - When inset, trailing inset size. _(default: undefined)_",
1040
+ "attributes": [
1041
+ {
1042
+ "name": "inset",
1043
+ "description": "Whether the divider is indented with equal padding on both sides.",
1044
+ "values": []
1045
+ },
1046
+ {
1047
+ "name": "inset-start",
1048
+ "description": "Whether the divider is indented with padding on the leading side.",
1049
+ "values": []
1050
+ },
1051
+ {
1052
+ "name": "inset-end",
1053
+ "description": "Whether the divider is indented with padding on the trailing side.",
1054
+ "values": []
1055
+ },
1056
+ {
1057
+ "name": "vertical",
1058
+ "description": "Whether the divider is vertically aligned with adjacent content.",
1059
+ "values": []
1060
+ }
1061
+ ],
1062
+ "references": []
1063
+ },
1037
1064
  {
1038
1065
  "name": "m3e-drawer-container",
1039
1066
  "description": "A container for one or two sliding drawers.\n---\n\n\n### **Events:**\n - **change** - Emitted when the state of the start or end drawers change.\n\n### **Slots:**\n - _default_ - Renders the main content.\n- **start** - Renders the start drawer.\n- **end** - Renders the end drawer.\n\n### **CSS Properties:**\n - **--m3e-drawer-container-color** - The background color of the drawer container. _(default: undefined)_\n- **--m3e-drawer-container-elevation** - The elevation level of the drawer container. _(default: undefined)_\n- **--m3e-drawer-container-width** - The width of the drawer container. _(default: undefined)_\n- **--m3e-drawer-container-scrim-opacity** - The opacity of the scrim behind the drawer. _(default: undefined)_\n- **--m3e-modal-drawer-start-shape** - The shape of the drawer's start edge (typically left in LTR). _(default: undefined)_\n- **--m3e-modal-drawer-end-shape** - The shape of the drawer's end edge (typically right in LTR). _(default: undefined)_\n- **--m3e-modal-drawer-container-color** - The background color of the modal drawer container. _(default: undefined)_\n- **--m3e-modal-drawer-elevation** - The elevation level of the modal drawer container. _(default: undefined)_\n- **--m3e-drawer-divider-color** - The color of the divider between drawer sections. _(default: undefined)_\n- **--m3e-drawer-divider-thickness** - The thickness of the divider line. _(default: undefined)_",
@@ -1083,33 +1110,6 @@
1083
1110
  ],
1084
1111
  "references": []
1085
1112
  },
1086
- {
1087
- "name": "m3e-divider",
1088
- "description": "A thin line that separates content in lists or other containers.\n---\n\n\n### **CSS Properties:**\n - **--m3e-divider-thickness** - Thickness of the divider line. _(default: undefined)_\n- **--m3e-divider-color** - Color of the divider line. _(default: undefined)_\n- **--m3e-divider-inset-size** - When inset, fallback inset size used when no specific start or end inset is provided. _(default: undefined)_\n- **--m3e-divider-inset-start-size** - When inset, leading inset size. _(default: undefined)_\n- **--m3e-divider-inset-end-size** - When inset, trailing inset size. _(default: undefined)_",
1089
- "attributes": [
1090
- {
1091
- "name": "inset",
1092
- "description": "Whether the divider is indented with equal padding on both sides.",
1093
- "values": []
1094
- },
1095
- {
1096
- "name": "inset-start",
1097
- "description": "Whether the divider is indented with padding on the leading side.",
1098
- "values": []
1099
- },
1100
- {
1101
- "name": "inset-end",
1102
- "description": "Whether the divider is indented with padding on the trailing side.",
1103
- "values": []
1104
- },
1105
- {
1106
- "name": "vertical",
1107
- "description": "Whether the divider is vertically aligned with adjacent content.",
1108
- "values": []
1109
- }
1110
- ],
1111
- "references": []
1112
- },
1113
1113
  {
1114
1114
  "name": "m3e-accordion",
1115
1115
  "description": "Combines multiple expansion panels in to an accordion.\n---\n\n\n### **Slots:**\n - _default_ - Renders the panels of the accordion.",
@@ -2653,6 +2653,33 @@
2653
2653
  ],
2654
2654
  "references": []
2655
2655
  },
2656
+ {
2657
+ "name": "m3e-textarea-autosize",
2658
+ "description": "A non-visual element used to automatically resize a `textarea` to fit its content.\n---\n\n\n### **Methods:**\n - **attach(control: _HTMLElement_): _void_** - Attaches the element to an interactive control.\n- **detach(): _void_** - Detaches the element from its current interactive control.\n- **resizeToFitContent(force: _boolean_): _void_** - Resize the `textarea` to fit its content.\n- **reset()** - Resets the `textarea` to its original size.",
2659
+ "attributes": [
2660
+ {
2661
+ "name": "disabled",
2662
+ "description": "Whether auto-sizing is disabled.",
2663
+ "values": []
2664
+ },
2665
+ {
2666
+ "name": "for",
2667
+ "description": "The identifier of the interactive control to which this element is attached.",
2668
+ "values": []
2669
+ },
2670
+ {
2671
+ "name": "max-rows",
2672
+ "description": "The maximum amount of rows in the `textarea`.",
2673
+ "values": []
2674
+ },
2675
+ {
2676
+ "name": "min-rows",
2677
+ "description": "The minimum amount of rows in the `textarea`.",
2678
+ "values": []
2679
+ }
2680
+ ],
2681
+ "references": []
2682
+ },
2656
2683
  {
2657
2684
  "name": "m3e-tab",
2658
2685
  "description": "An interactive element that, when activated, presents an associated tab panel.\n---\n\n\n### **Events:**\n - **input** - Emitted when the selected state changes.\n- **change** - Emitted when the selected state changes.\n- **click** - Emitted when the element is clicked.\n\n### **Methods:**\n - **attach(control: _HTMLElement_): _void_** - Attaches the element to an interactive control.\n- **detach(): _void_** - Detaches the element from its current interactive control.\n\n### **Slots:**\n - _default_ - Renders the label of the tab.\n- **icon** - Renders an icon before the tab's label.\n\n### **CSS Properties:**\n - **--m3e-tab-font-size** - Font size for tab label. _(default: undefined)_\n- **--m3e-tab-font-weight** - Font weight for tab label. _(default: undefined)_\n- **--m3e-tab-line-height** - Line height for tab label. _(default: undefined)_\n- **--m3e-tab-tracking** - Letter spacing for tab label. _(default: undefined)_\n- **--m3e-tab-padding-start** - Padding on the inline start of the tab. _(default: undefined)_\n- **--m3e-tab-padding-end** - Padding on the inline end of the tab. _(default: undefined)_\n- **--m3e-tab-focus-ring-shape** - Border radius for the focus ring. _(default: undefined)_\n- **--m3e-tab-selected-color** - Text color for selected tab. _(default: undefined)_\n- **--m3e-tab-selected-container-hover-color** - Hover state-layer color for selected tab. _(default: undefined)_\n- **--m3e-tab-selected-container-focus-color** - Focus state-layer color for selected tab. _(default: undefined)_\n- **--m3e-tab-selected-ripple-color** - Ripple color for selected tab. _(default: undefined)_\n- **--m3e-tab-unselected-color** - Text color for unselected tab. _(default: undefined)_\n- **--m3e-tab-unselected-container-hover-color** - Hover state-layer color for unselected tab. _(default: undefined)_\n- **--m3e-tab-unselected-container-focus-color** - Focus state-layer color for unselected tab. _(default: undefined)_\n- **--m3e-tab-unselected-ripple-color** - Ripple color for unselected tab. _(default: undefined)_\n- **--m3e-tab-disabled-color** - Text color for disabled tab. _(default: undefined)_\n- **--m3e-tab-disabled-opacity** - Text opacity for disabled tab. _(default: undefined)_\n- **--m3e-tab-spacing** - Column gap between icon and label. _(default: undefined)_\n- **--m3e-tab-icon-size** - Font size for slotted icon. _(default: undefined)_",
@@ -2718,33 +2745,6 @@
2718
2745
  ],
2719
2746
  "references": []
2720
2747
  },
2721
- {
2722
- "name": "m3e-textarea-autosize",
2723
- "description": "A non-visual element used to automatically resize a `textarea` to fit its content.\n---\n\n\n### **Methods:**\n - **attach(control: _HTMLElement_): _void_** - Attaches the element to an interactive control.\n- **detach(): _void_** - Detaches the element from its current interactive control.\n- **resizeToFitContent(force: _boolean_): _void_** - Resize the `textarea` to fit its content.\n- **reset()** - Resets the `textarea` to its original size.",
2724
- "attributes": [
2725
- {
2726
- "name": "disabled",
2727
- "description": "Whether auto-sizing is disabled.",
2728
- "values": []
2729
- },
2730
- {
2731
- "name": "for",
2732
- "description": "The identifier of the interactive control to which this element is attached.",
2733
- "values": []
2734
- },
2735
- {
2736
- "name": "max-rows",
2737
- "description": "The maximum amount of rows in the `textarea`.",
2738
- "values": []
2739
- },
2740
- {
2741
- "name": "min-rows",
2742
- "description": "The minimum amount of rows in the `textarea`.",
2743
- "values": []
2744
- }
2745
- ],
2746
- "references": []
2747
- },
2748
2748
  {
2749
2749
  "name": "m3e-theme",
2750
2750
  "description": "A non-visual element responsible for application-level theming.\n---\n\n\n### **Events:**\n - **change** - Dispatched when the theme changes.",
package/dist/select.js CHANGED
@@ -9,7 +9,7 @@ import { query, property } from 'lit/decorators.js';
9
9
  import { Focusable, Labelled, RequiredConstraintValidation, Dirty, Touched, Required, ConstraintValidation, FormAssociated, Disabled, AttachInternals, Role, MutationController, formValue, setCustomState, prefersReducedMotion, scrollIntoViewIfNeeded, deleteCustomState, addCustomState, forcedColorsActive, DesignToken, customElement } from '@m3e/web/core';
10
10
  import { ListKeyManager } from '@m3e/web/core/a11y';
11
11
 
12
- var _M3eSelectElement_instances, _M3eSelectElement_clone, _M3eSelectElement_menu, _M3eSelectElement_ignoreKeyUp, _M3eSelectElement_ignoreFocusVisible, _M3eSelectElement_id, _M3eSelectElement_listId, _M3eSelectElement_clickHandler, _M3eSelectElement_keyDownHandler, _M3eSelectElement_keyUpHandler, _M3eSelectElement_menuToggleHandler, _M3eSelectElement_menuPointerDownHandler, _M3eSelectElement_options_get, _M3eSelectElement_selected_get, _M3eSelectElement_formField_get, _M3eSelectElement_handleMutation, _M3eSelectElement_handleClick, _M3eSelectElement_handleKeyDown, _M3eSelectElement_handleKeyUp, _M3eSelectElement_handleMenuPointerDown, _M3eSelectElement_handleMenuToggle, _M3eSelectElement_destroyMenu, _M3eSelectElement_toggleMenu, _M3eSelectElement_showMenu, _M3eSelectElement_hideMenu, _M3eSelectElement_activateOption, _M3eSelectElement_updateSelectionState, _M3eSelectElement_selectOption;
12
+ var _M3eSelectElement_instances, _M3eSelectElement_clone, _M3eSelectElement_menu, _M3eSelectElement_ignoreKeyUp, _M3eSelectElement_ignoreFocusVisible, _M3eSelectElement_id, _M3eSelectElement_listId, _M3eSelectElement_clickHandler, _M3eSelectElement_keyDownHandler, _M3eSelectElement_keyUpHandler, _M3eSelectElement_menuToggleHandler, _M3eSelectElement_menuPointerDownHandler, _M3eSelectElement_menuPointerUpHandler, _M3eSelectElement_menuPressedOption, _M3eSelectElement_options_get, _M3eSelectElement_selected_get, _M3eSelectElement_formField_get, _M3eSelectElement_handleMutation, _M3eSelectElement_handleClick, _M3eSelectElement_handleKeyDown, _M3eSelectElement_handleKeyUp, _M3eSelectElement_handleMenuPointerDown, _M3eSelectElement_handleMenuPointerUp, _M3eSelectElement_handleMenuToggle, _M3eSelectElement_destroyMenu, _M3eSelectElement_toggleMenu, _M3eSelectElement_showMenu, _M3eSelectElement_hideMenu, _M3eSelectElement_activateOption, _M3eSelectElement_updateSelectionState, _M3eSelectElement_selectOption;
13
13
  var M3eSelectElement_1;
14
14
  /**
15
15
  * A form control that allows users to select a value from a set of predefined options.
@@ -93,6 +93,10 @@ let M3eSelectElement = M3eSelectElement_1 = class M3eSelectElement extends Focus
93
93
  /** @private */
94
94
  _M3eSelectElement_menuPointerDownHandler.set(this, e => __classPrivateFieldGet(this, _M3eSelectElement_instances, "m", _M3eSelectElement_handleMenuPointerDown).call(this, e));
95
95
  /** @private */
96
+ _M3eSelectElement_menuPointerUpHandler.set(this, e => __classPrivateFieldGet(this, _M3eSelectElement_instances, "m", _M3eSelectElement_handleMenuPointerUp).call(this, e));
97
+ /** @private */
98
+ _M3eSelectElement_menuPressedOption.set(this, void 0);
99
+ /** @private */
96
100
  this._listKeyManager = new ListKeyManager().withWrap().withHomeAndEnd().withPageUpAndDown().withVerticalOrientation().withTypeahead().onActiveItemChange(() => {
97
101
  if (this._listKeyManager.activeItem) {
98
102
  __classPrivateFieldGet(this, _M3eSelectElement_instances, "m", _M3eSelectElement_activateOption).call(this, this._listKeyManager.activeItem);
@@ -142,7 +146,7 @@ let M3eSelectElement = M3eSelectElement_1 = class M3eSelectElement extends Focus
142
146
  }
143
147
  }
144
148
  /** @inheritdoc @internal */
145
- get [(_M3eSelectElement_clone = new WeakMap(), _M3eSelectElement_menu = new WeakMap(), _M3eSelectElement_ignoreKeyUp = new WeakMap(), _M3eSelectElement_ignoreFocusVisible = new WeakMap(), _M3eSelectElement_id = new WeakMap(), _M3eSelectElement_listId = new WeakMap(), _M3eSelectElement_clickHandler = new WeakMap(), _M3eSelectElement_keyDownHandler = new WeakMap(), _M3eSelectElement_keyUpHandler = new WeakMap(), _M3eSelectElement_menuToggleHandler = new WeakMap(), _M3eSelectElement_menuPointerDownHandler = new WeakMap(), _M3eSelectElement_instances = new WeakSet(), _M3eSelectElement_options_get = function _M3eSelectElement_options_get() {
149
+ get [(_M3eSelectElement_clone = new WeakMap(), _M3eSelectElement_menu = new WeakMap(), _M3eSelectElement_ignoreKeyUp = new WeakMap(), _M3eSelectElement_ignoreFocusVisible = new WeakMap(), _M3eSelectElement_id = new WeakMap(), _M3eSelectElement_listId = new WeakMap(), _M3eSelectElement_clickHandler = new WeakMap(), _M3eSelectElement_keyDownHandler = new WeakMap(), _M3eSelectElement_keyUpHandler = new WeakMap(), _M3eSelectElement_menuToggleHandler = new WeakMap(), _M3eSelectElement_menuPointerDownHandler = new WeakMap(), _M3eSelectElement_menuPointerUpHandler = new WeakMap(), _M3eSelectElement_menuPressedOption = new WeakMap(), _M3eSelectElement_instances = new WeakSet(), _M3eSelectElement_options_get = function _M3eSelectElement_options_get() {
146
150
  return this._listKeyManager?.items ?? [];
147
151
  }, _M3eSelectElement_selected_get = function _M3eSelectElement_selected_get() {
148
152
  return __classPrivateFieldGet(this, _M3eSelectElement_instances, "a", _M3eSelectElement_options_get).filter(x => x.selected);
@@ -321,23 +325,36 @@ _M3eSelectElement_handleKeyUp = function _M3eSelectElement_handleKeyUp(e) {
321
325
  }
322
326
  };
323
327
  _M3eSelectElement_handleMenuPointerDown = function _M3eSelectElement_handleMenuPointerDown(e) {
328
+ __classPrivateFieldSet(this, _M3eSelectElement_menuPressedOption, undefined, "f");
324
329
  if (e.button === 2) return;
330
+ // Prevent click to avoid stealing focus.
325
331
  e.preventDefault();
326
332
  e.stopImmediatePropagation();
327
333
  const option = e.composedPath().find(x => x instanceof HTMLElement && x.tagName === "M3E-OPTION");
328
334
  if (option && !option.disabled) {
335
+ __classPrivateFieldSet(this, _M3eSelectElement_menuPressedOption, option, "f");
336
+ }
337
+ };
338
+ _M3eSelectElement_handleMenuPointerUp = function _M3eSelectElement_handleMenuPointerUp(e) {
339
+ const pressedOption = __classPrivateFieldGet(this, _M3eSelectElement_menuPressedOption, "f");
340
+ __classPrivateFieldSet(this, _M3eSelectElement_menuPressedOption, undefined, "f");
341
+ if (e.button === 2) return;
342
+ if (!pressedOption) return;
343
+ const option = e.composedPath().find(x => x instanceof HTMLElement && x.tagName === "M3E-OPTION");
344
+ if (option === pressedOption) {
329
345
  __classPrivateFieldGet(this, _M3eSelectElement_instances, "m", _M3eSelectElement_selectOption).call(this, option);
330
346
  this._listKeyManager.setActiveItem(option);
331
- if (!this.multi) {
332
- if (!prefersReducedMotion()) {
333
- setTimeout(() => __classPrivateFieldGet(this, _M3eSelectElement_instances, "m", _M3eSelectElement_hideMenu).call(this), 150);
334
- } else {
335
- __classPrivateFieldGet(this, _M3eSelectElement_instances, "m", _M3eSelectElement_hideMenu).call(this);
336
- }
337
- } else {
347
+ if (this.multi) {
338
348
  this.requestUpdate();
339
349
  }
340
350
  }
351
+ if (!this.multi) {
352
+ if (!prefersReducedMotion()) {
353
+ setTimeout(() => __classPrivateFieldGet(this, _M3eSelectElement_instances, "m", _M3eSelectElement_hideMenu).call(this), 150);
354
+ } else {
355
+ __classPrivateFieldGet(this, _M3eSelectElement_instances, "m", _M3eSelectElement_hideMenu).call(this);
356
+ }
357
+ }
341
358
  };
342
359
  _M3eSelectElement_handleMenuToggle = function _M3eSelectElement_handleMenuToggle(e) {
343
360
  if (!__classPrivateFieldGet(this, _M3eSelectElement_menu, "f")) return;
@@ -370,6 +387,7 @@ _M3eSelectElement_destroyMenu = function _M3eSelectElement_destroyMenu(e) {
370
387
  __classPrivateFieldGet(this, _M3eSelectElement_menu, "f").remove();
371
388
  __classPrivateFieldGet(this, _M3eSelectElement_menu, "f").removeEventListener("toggle", __classPrivateFieldGet(this, _M3eSelectElement_menuToggleHandler, "f"));
372
389
  __classPrivateFieldGet(this, _M3eSelectElement_menu, "f").removeEventListener("pointerdown", __classPrivateFieldGet(this, _M3eSelectElement_menuPointerDownHandler, "f"));
390
+ __classPrivateFieldGet(this, _M3eSelectElement_menu, "f").removeEventListener("pointerup", __classPrivateFieldGet(this, _M3eSelectElement_menuPointerUpHandler, "f"));
373
391
  __classPrivateFieldSet(this, _M3eSelectElement_menu, undefined, "f");
374
392
  this.ariaExpanded = "false";
375
393
  this.removeAttribute("aria-controls");
@@ -407,6 +425,7 @@ _M3eSelectElement_showMenu = function _M3eSelectElement_showMenu() {
407
425
  __classPrivateFieldGet(this, _M3eSelectElement_menu, "f").fitAnchorWidth = true;
408
426
  __classPrivateFieldGet(this, _M3eSelectElement_menu, "f").addEventListener("toggle", __classPrivateFieldGet(this, _M3eSelectElement_menuToggleHandler, "f"));
409
427
  __classPrivateFieldGet(this, _M3eSelectElement_menu, "f").addEventListener("pointerdown", __classPrivateFieldGet(this, _M3eSelectElement_menuPointerDownHandler, "f"));
428
+ __classPrivateFieldGet(this, _M3eSelectElement_menu, "f").addEventListener("pointerup", __classPrivateFieldGet(this, _M3eSelectElement_menuPointerUpHandler, "f"));
410
429
  if (__classPrivateFieldGet(this, _M3eSelectElement_clone, "f")) {
411
430
  __classPrivateFieldGet(this, _M3eSelectElement_menu, "f").replaceChildren(...__classPrivateFieldGet(this, _M3eSelectElement_clone, "f").childNodes);
412
431
  }
@@ -1 +1 @@
1
- {"version":3,"file":"select.js","sources":["../../src/select/SelectElement.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { css, CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property, query } from \"lit/decorators.js\";\r\n\r\nimport {\r\n AttachInternals,\r\n Labelled,\r\n ConstraintValidation,\r\n Dirty,\r\n Disabled,\r\n FormAssociated,\r\n Required,\r\n RequiredConstraintValidation,\r\n Touched,\r\n DesignToken,\r\n formValue,\r\n M3eFocusRingElement,\r\n scrollIntoViewIfNeeded,\r\n Role,\r\n Focusable,\r\n prefersReducedMotion,\r\n forcedColorsActive,\r\n deleteCustomState,\r\n addCustomState,\r\n setCustomState,\r\n customElement,\r\n MutationController,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { ListKeyManager } from \"@m3e/web/core/a11y\";\r\n\r\nimport type { M3eFormFieldElement, FormFieldControl } from \"@m3e/web/form-field\";\r\nimport { M3eOptionElement, M3eOptionPanelElement } from \"@m3e/web/option\";\r\n\r\n/**\r\n * A form control that allows users to select a value from a set of predefined options.\r\n *\r\n * @description\r\n * The `m3e-select` component follows Material Design 3 principles and provides a comprehensive\r\n * selection interface for capturing user input. It supports both single and multiple selection modes,\r\n * customizable validation states, and accessible keyboard navigation. The component integrates seamlessly\r\n * with form field containers and dynamically positions its option list menu to ensure optimal viewport\r\n * visibility. Selection changes are communicated through standard form events, enabling predictable integration\r\n * with form submission and reactive state management systems.\r\n *\r\n * @example\r\n * The following demonstrates a `m3e-select` component wrapped in a `m3e-form-field` with a slotted label.\r\n * The label is associated with the select via the `for` and `id` attributes, ensuring accessible form semantics.\r\n * Each `m3e-option` defines an option within the dropdown.\r\n *\r\n * ```html\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"select\">Choose your favorite fruit</label>\r\n * <m3e-select id=\"select\">\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-select>\r\n * </m3e-form-field>\r\n * ```\r\n *\r\n * @tag m3e-select\r\n *\r\n * @slot - Renders the options of the select.\r\n * @slot arrow - Renders the dropdown arrow.\r\n * @slot value - Renders the selected value(s).\r\n *\r\n * @attr disabled - Whether the element is disabled.\r\n * @attr hide-selection-indicator - Whether to hide the selection indicator for single select options.\r\n * @attr multi - Whether multiple options can be selected.\r\n * @attr name - The name that identifies the element when submitting the associated form.\r\n * @attr panel-class - Class or list of classes to be applied to the select's overlay panel.\r\n * @attr required - Whether the element is required.\r\n *\r\n * @fires input - Emitted when the selected state changes.\r\n * @fires change - Emitted when the selected state changes.\r\n *\r\n * @cssprop --m3e-form-field-font-size - The font size of the select control.\r\n * @cssprop --m3e-form-field-font-weight - The font weight of the select control.\r\n * @cssprop --m3e-form-field-line-height - The line height of the select control.\r\n * @cssprop --m3e-form-field-tracking - The letter spacing of the select control.\r\n * @cssprop --m3e-select-container-shape - The corner radius of the select container.\r\n * @cssprop --m3e-select-disabled-color - The text color when the select is disabled.\r\n * @cssprop --m3e-select-disabled-color-opacity - The opacity level applied to the disabled text color.\r\n * @cssprop --m3e-select-icon-size - The size of the dropdown arrow icon.\r\n */\r\n@customElement(\"m3e-select\")\r\nexport class M3eSelectElement\r\n extends Focusable(\r\n Labelled(\r\n RequiredConstraintValidation(\r\n Dirty(\r\n Touched(\r\n Required(ConstraintValidation(FormAssociated(Disabled(AttachInternals(Role(LitElement, \"combobox\")))))),\r\n ),\r\n ),\r\n ),\r\n ),\r\n )\r\n implements FormFieldControl\r\n{\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: inline-flex;\r\n vertical-align: middle;\r\n outline: none;\r\n position: relative;\r\n font-size: var(--m3e-form-field-font-size, ${DesignToken.typescale.standard.body.large.fontSize});\r\n font-weight: var(--m3e-form-field-font-weight, ${DesignToken.typescale.standard.body.large.fontWeight});\r\n line-height: var(--m3e-form-field-line-height, ${DesignToken.typescale.standard.body.large.lineHeight});\r\n letter-spacing: var(--m3e-form-field-tracking, ${DesignToken.typescale.standard.body.large.tracking});\r\n min-height: var(--m3e-form-field-line-height, ${DesignToken.typescale.standard.body.large.lineHeight});\r\n border-radius: var(--m3e-select-container-shape, ${DesignToken.shape.corner.extraSmall});\r\n }\r\n :host(:not(:disabled)) {\r\n cursor: pointer;\r\n }\r\n :host(:disabled) {\r\n color: color-mix(\r\n in srgb,\r\n var(--m3e-select-disabled-color, ${DesignToken.color.onSurface}) var(--m3e-select-disabled-color-opacity, 38%),\r\n transparent\r\n );\r\n }\r\n .options {\r\n display: none;\r\n }\r\n .base {\r\n flex: 1 1 auto;\r\n display: inline-flex;\r\n align-items: center;\r\n overflow: hidden;\r\n }\r\n .arrow-wrapper {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n margin-top: var(--_select-arrow-margin-top);\r\n }\r\n ::slotted([slot=\"arrow\"]),\r\n .arrow {\r\n vertical-align: middle;\r\n width: 1em;\r\n height: 1em;\r\n font-size: var(--m3e-select-icon-size, 1.5rem);\r\n }\r\n :host(:state(-open)) .focus-ring {\r\n display: none;\r\n }\r\n `;\r\n\r\n /** @private */ static __nextId = 0;\r\n\r\n /** @private */ private _options = new Array<M3eOptionElement>();\r\n /** @private */ #clone?: HTMLElement;\r\n\r\n /** @private */ #menu?: M3eOptionPanelElement;\r\n /** @private */ #ignoreKeyUp = false;\r\n /** @private */ #ignoreFocusVisible = false;\r\n\r\n /** @private */ readonly #id = `m3e-select-${M3eSelectElement.__nextId++}`;\r\n /** @private */ readonly #listId = `${this.#id}-list`;\r\n\r\n /** @private */ readonly #clickHandler = (e: Event) => this.#handleClick(e);\r\n /** @private */ readonly #keyDownHandler = (e: KeyboardEvent) => this.#handleKeyDown(e);\r\n /** @private */ readonly #keyUpHandler = (e: KeyboardEvent) => this.#handleKeyUp(e);\r\n /** @private */ readonly #menuToggleHandler = (e: ToggleEvent) => this.#handleMenuToggle(e);\r\n /** @private */ readonly #menuPointerDownHandler = (e: MouseEvent) => 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 .withTypeahead()\r\n .onActiveItemChange(() => {\r\n if (this._listKeyManager.activeItem) {\r\n this.#activateOption(this._listKeyManager.activeItem);\r\n }\r\n });\r\n\r\n /** @private */ @query(\".focus-ring\") private readonly _focusRing?: M3eFocusRingElement;\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 for single select options.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-selection-indicator\", type: Boolean }) hideSelectionIndicator = false;\r\n\r\n /**\r\n * Whether multiple options can be selected.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) multi = false;\r\n\r\n /**\r\n * Class or list of classes to be applied to the select's overlay panel.\r\n * @default \"\"\r\n */\r\n @property({ attribute: \"panel-class\" }) panelClass = \"\";\r\n\r\n get #options(): readonly M3eOptionElement[] {\r\n return this._listKeyManager?.items ?? [];\r\n }\r\n\r\n get #selected(): readonly M3eOptionElement[] {\r\n return this.#options.filter((x) => x.selected);\r\n }\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(s). */\r\n get selected(): readonly M3eOptionElement[] {\r\n return this.options.filter((x) => x.selected);\r\n }\r\n\r\n /** The selected (enabled) value(s). */\r\n get value(): string | readonly string[] | null {\r\n const values = this.selected.filter((x) => !x.disabled).map((x) => x.value);\r\n switch (values.length) {\r\n case 0:\r\n return null;\r\n case 1:\r\n return values[0];\r\n default:\r\n return values;\r\n }\r\n }\r\n\r\n /** @inheritdoc @internal */\r\n override get [formValue]() {\r\n const values = this.value;\r\n if (Array.isArray(values)) {\r\n const data = new FormData();\r\n for (const value of values) {\r\n data.append(this.name, value);\r\n }\r\n return data;\r\n }\r\n return <string | null>values;\r\n }\r\n\r\n /** @inheritdoc */\r\n get shouldLabelFloat(): boolean {\r\n return this.selected.filter((x) => !x.isEmpty).length > 0;\r\n }\r\n\r\n /** @private */\r\n get #formField(): M3eFormFieldElement | null {\r\n return this.closest(\"m3e-form-field\");\r\n }\r\n\r\n /** @inheritdoc */\r\n onContainerClick(): void {\r\n this.#ignoreFocusVisible = true;\r\n this.#toggleMenu();\r\n this.focus({ preventScroll: true });\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 const selected = this.#selected;\r\n const willChange = selected.length > 0;\r\n\r\n if (willChange) {\r\n selected.forEach((x) => {\r\n x.selected = false;\r\n this.#updateSelectionState(x);\r\n });\r\n this.requestUpdate();\r\n }\r\n\r\n this.#hideMenu();\r\n\r\n if (willChange) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n if (restoreFocus) {\r\n this.focus();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n\r\n this.ariaHasPopup = \"listbox\";\r\n this.ariaExpanded = \"false\";\r\n\r\n this.addEventListener(\"click\", this.#clickHandler);\r\n this.addEventListener(\"keydown\", this.#keyDownHandler);\r\n this.addEventListener(\"keyup\", this.#keyUpHandler);\r\n\r\n this.#handleMutation();\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n this.removeEventListener(\"click\", this.#clickHandler);\r\n this.removeEventListener(\"keydown\", this.#keyDownHandler);\r\n this.removeEventListener(\"keyup\", this.#keyUpHandler);\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(\"hideSelectionIndicator\")) {\r\n this.#options.forEach((x) => setCustomState(x, \"-hide-selection-indicator\", this.hideSelectionIndicator));\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override firstUpdated(_changedProperties: PropertyValues<this>): void {\r\n super.firstUpdated(_changedProperties);\r\n\r\n this._focusRing?.attach(this);\r\n\r\n if (this.#formField && this._focusRing) {\r\n this._focusRing.style.display = \"none\";\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html` <m3e-focus-ring class=\"focus-ring\"></m3e-focus-ring>\r\n <div class=\"base\">\r\n <m3e-text-overflow>\r\n <slot name=\"value\">\r\n ${this.selected\r\n .filter((x) => !x.isEmpty)\r\n .map((x, i) => (i > 0 ? html`<span>, </span>${x.label}` : x.label))}\r\n </slot>\r\n </m3e-text-overflow>\r\n <div class=\"arrow-wrapper\" aria-hidden=\"true\">\r\n <slot name=\"arrow\">\r\n <svg class=\"arrow\" viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path d=\"M480-360 280-560h400L480-360Z\" />\r\n </svg>\r\n </slot>\r\n </div>\r\n </div>\r\n <div class=\"options\" aria-hidden=\"true\">\r\n <slot></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #handleMutation(): void {\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 this._options = [...this.querySelectorAll(\"m3e-option\")];\r\n\r\n this.#formField?.notifyControlStateChange();\r\n if (this.#menu) {\r\n this.#menu.replaceChildren(...this.#clone.childNodes);\r\n if (this._options.length == 0) {\r\n this.#hideMenu();\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClick(e: Event): void {\r\n if (e.defaultPrevented || this.disabled) return;\r\n this.#toggleMenu();\r\n }\r\n\r\n /** @private */\r\n #handleKeyDown(e: KeyboardEvent): void {\r\n if (e.defaultPrevented) return;\r\n this.#ignoreFocusVisible = false;\r\n\r\n switch (e.key) {\r\n case \" \":\r\n case \"Enter\":\r\n e.preventDefault();\r\n if (!this.multi) {\r\n if (this.#menu && this._listKeyManager.activeItem) {\r\n this.#selectOption(this._listKeyManager.activeItem);\r\n }\r\n if (this.#menu?.isOpen) {\r\n if (!prefersReducedMotion()) {\r\n setTimeout(() => this.#hideMenu(), 150);\r\n } else {\r\n this.#hideMenu();\r\n }\r\n } else {\r\n this.#showMenu();\r\n }\r\n } else if (!this.#menu) {\r\n this.#ignoreKeyUp = true;\r\n this.#toggleMenu();\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 \"Down\":\r\n case \"ArrowDown\":\r\n if (this.multi && !this.#menu) {\r\n this.#toggleMenu();\r\n } else {\r\n this._listKeyManager.onKeyDown(e);\r\n if (!this.#menu && this._listKeyManager.activeItem) {\r\n this.#selectOption(this._listKeyManager.activeItem);\r\n }\r\n }\r\n break;\r\n\r\n default:\r\n this._listKeyManager.onKeyDown(e);\r\n if (!this.multi && !this.#menu && this._listKeyManager.activeItem) {\r\n this.#selectOption(this._listKeyManager.activeItem);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyUp(e: KeyboardEvent): void {\r\n if (e.defaultPrevented) return;\r\n\r\n if (this.#ignoreKeyUp) {\r\n this.#ignoreKeyUp = false;\r\n return;\r\n }\r\n\r\n switch (e.key) {\r\n case \" \":\r\n case \"Enter\":\r\n if (!this.multi) return;\r\n e.preventDefault();\r\n if (this.#menu && this._listKeyManager.activeItem) {\r\n this.#selectOption(this._listKeyManager.activeItem);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuPointerDown(e: MouseEvent): 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.#selectOption(option);\r\n this._listKeyManager.setActiveItem(option);\r\n\r\n if (!this.multi) {\r\n if (!prefersReducedMotion()) {\r\n setTimeout(() => this.#hideMenu(), 150);\r\n } else {\r\n this.#hideMenu();\r\n }\r\n } else {\r\n this.requestUpdate();\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.#selected.find((x) => !x.disabled) ?? this._listKeyManager.items.find((x) => !x.disabled);\r\n this._listKeyManager.setActiveItem(option);\r\n if (option) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\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 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 this.ariaExpanded = \"false\";\r\n this.removeAttribute(\"aria-controls\");\r\n this.removeAttribute(\"aria-owns\");\r\n this.removeAttribute(\"aria-activedescendant\");\r\n this.requestUpdate();\r\n\r\n deleteCustomState(this, \"-open\");\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 #toggleMenu(): void {\r\n if (this.disabled) return;\r\n if (this.#menu) {\r\n this.#hideMenu();\r\n } else {\r\n this.#showMenu();\r\n }\r\n }\r\n\r\n /** @private */\r\n #showMenu(): void {\r\n if (this.#menu || this._options.length == 0) return;\r\n\r\n this.#menu = document.createElement(\"m3e-option-panel\");\r\n if (this.multi) {\r\n this.#menu.ariaMultiSelectable = \"true\";\r\n }\r\n\r\n this.#menu.id = this.#listId;\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.fitAnchorWidth = true;\r\n this.#menu.addEventListener(\"toggle\", this.#menuToggleHandler);\r\n this.#menu.addEventListener(\"pointerdown\", this.#menuPointerDownHandler);\r\n\r\n if (this.#clone) {\r\n this.#menu.replaceChildren(...this.#clone.childNodes);\r\n }\r\n\r\n (this.#formField ?? this).insertAdjacentElement(\"afterend\", this.#menu);\r\n\r\n this.ariaExpanded = \"true\";\r\n this.setAttribute(\"aria-controls\", this.#listId);\r\n this.setAttribute(\"aria-owns\", this.#listId);\r\n this.#formField?.notifyControlStateChange();\r\n\r\n setTimeout(() => {\r\n this.#menu?.show(this, this.#formField?.menuAnchor);\r\n addCustomState(this, \"-open\");\r\n });\r\n }\r\n\r\n /** @private */\r\n #hideMenu(): void {\r\n if (!this.#menu) return;\r\n\r\n this.#menu.hide();\r\n deleteCustomState(this, \"-open\");\r\n }\r\n\r\n /** @private */\r\n #activateOption(option: M3eOptionElement): void {\r\n this.setAttribute(\"aria-activedescendant\", option.id);\r\n if (this.#menu) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\r\n\r\n const focusVisible = !this.#ignoreFocusVisible && (this.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 #updateSelectionState(clone: M3eOptionElement): void {\r\n const option = this._options[this._listKeyManager.items.indexOf(clone)];\r\n if (option) {\r\n option.selected = clone.selected;\r\n }\r\n }\r\n\r\n /** @private */\r\n #selectOption(option: M3eOptionElement): void {\r\n const selected = this.multi ? !option.selected : true;\r\n if (option.selected === selected) return;\r\n\r\n option.selected = selected;\r\n this.#updateSelectionState(option);\r\n\r\n if (this.dispatchEvent(new Event(\"input\", { bubbles: true, composed: true, cancelable: true }))) {\r\n if (!this.multi) {\r\n this.#selected\r\n .filter((x) => x !== option)\r\n .forEach((x) => {\r\n x.selected = false;\r\n this.#updateSelectionState(x);\r\n });\r\n }\r\n\r\n this.requestUpdate();\r\n this.#formField?.notifyControlStateChange();\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n } else {\r\n option.selected = !selected;\r\n this.#updateSelectionState(option);\r\n }\r\n }\r\n}\r\n\r\ninterface M3eSelectElementEventMap extends HTMLElementEventMap {\r\n toggle: ToggleEvent;\r\n}\r\n\r\nexport interface M3eSelectElement {\r\n addEventListener<K extends keyof M3eSelectElementEventMap>(\r\n type: K,\r\n listener: (this: M3eSelectElement, ev: M3eSelectElementEventMap[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 M3eSelectElementEventMap>(\r\n type: K,\r\n listener: (this: M3eSelectElement, ev: M3eSelectElementEventMap[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-select\": M3eSelectElement;\r\n }\r\n}\r\n"],"names":["M3eSelectElement","M3eSelectElement_1","Focusable","Labelled","RequiredConstraintValidation","Dirty","Touched","Required","ConstraintValidation","FormAssociated","Disabled","AttachInternals","Role","LitElement","constructor","_options","Array","_M3eSelectElement_clone","set","_M3eSelectElement_menu","_M3eSelectElement_ignoreKeyUp","_M3eSelectElement_ignoreFocusVisible","_M3eSelectElement_id","__nextId","_M3eSelectElement_listId","__classPrivateFieldGet","_M3eSelectElement_clickHandler","e","call","_M3eSelectElement_keyDownHandler","_M3eSelectElement_keyUpHandler","_M3eSelectElement_menuToggleHandler","_M3eSelectElement_menuPointerDownHandler","_listKeyManager","ListKeyManager","withWrap","withHomeAndEnd","withPageUpAndDown","withVerticalOrientation","withTypeahead","onActiveItemChange","activeItem","_M3eSelectElement_instances","_M3eSelectElement_activateOption","hideSelectionIndicator","multi","panelClass","MutationController","config","childList","subtree","callback","_M3eSelectElement_handleMutation","options","selected","filter","x","value","values","disabled","map","length","WeakMap","WeakSet","_M3eSelectElement_options_get","items","_M3eSelectElement_selected_get","formValue","isArray","data","FormData","append","name","shouldLabelFloat","isEmpty","onContainerClick","__classPrivateFieldSet","_M3eSelectElement_toggleMenu","focus","preventScroll","clear","restoreFocus","willChange","forEach","_M3eSelectElement_updateSelectionState","requestUpdate","_M3eSelectElement_hideMenu","dispatchEvent","Event","bubbles","connectedCallback","ariaHasPopup","ariaExpanded","addEventListener","disconnectedCallback","removeEventListener","update","changedProperties","has","setCustomState","firstUpdated","_changedProperties","_focusRing","attach","_M3eSelectElement_formField_get","style","display","render","html","i","label","closest","cloneNode","added","setItems","querySelectorAll","id","indexOf","notifyControlStateChange","replaceChildren","childNodes","defaultPrevented","key","preventDefault","_M3eSelectElement_selectOption","isOpen","prefersReducedMotion","setTimeout","_M3eSelectElement_showMenu","onKeyDown","button","stopImmediatePropagation","option","composedPath","find","HTMLElement","tagName","setActiveItem","newState","scrollIntoViewIfNeeded","block","behavior","ToggleEvent","oldState","_M3eSelectElement_destroyMenu","remove","undefined","removeAttribute","deleteCustomState","document","createElement","ariaMultiSelectable","klass","split","d","trim","Boolean","classList","add","overflowX","fitAnchorWidth","insertAdjacentElement","setAttribute","show","menuAnchor","addCustomState","hide","focusVisible","matches","forcedColorsActive","active","focusRing","stateLayer","clone","composed","cancelable","styles","css","DesignToken","typescale","standard","body","large","fontSize","fontWeight","lineHeight","tracking","shape","corner","extraSmall","color","onSurface","__decorate","query","prototype","property","attribute","type","customElement"],"mappings":"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"}
1
+ {"version":3,"file":"select.js","sources":["../../src/select/SelectElement.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unsafe-declaration-merging */\r\nimport { css, CSSResultGroup, html, LitElement, PropertyValues } from \"lit\";\r\nimport { property, query } from \"lit/decorators.js\";\r\n\r\nimport {\r\n AttachInternals,\r\n Labelled,\r\n ConstraintValidation,\r\n Dirty,\r\n Disabled,\r\n FormAssociated,\r\n Required,\r\n RequiredConstraintValidation,\r\n Touched,\r\n DesignToken,\r\n formValue,\r\n M3eFocusRingElement,\r\n scrollIntoViewIfNeeded,\r\n Role,\r\n Focusable,\r\n prefersReducedMotion,\r\n forcedColorsActive,\r\n deleteCustomState,\r\n addCustomState,\r\n setCustomState,\r\n customElement,\r\n MutationController,\r\n} from \"@m3e/web/core\";\r\n\r\nimport { ListKeyManager } from \"@m3e/web/core/a11y\";\r\n\r\nimport type { M3eFormFieldElement, FormFieldControl } from \"@m3e/web/form-field\";\r\nimport { M3eOptionElement, M3eOptionPanelElement } from \"@m3e/web/option\";\r\n\r\n/**\r\n * A form control that allows users to select a value from a set of predefined options.\r\n *\r\n * @description\r\n * The `m3e-select` component follows Material Design 3 principles and provides a comprehensive\r\n * selection interface for capturing user input. It supports both single and multiple selection modes,\r\n * customizable validation states, and accessible keyboard navigation. The component integrates seamlessly\r\n * with form field containers and dynamically positions its option list menu to ensure optimal viewport\r\n * visibility. Selection changes are communicated through standard form events, enabling predictable integration\r\n * with form submission and reactive state management systems.\r\n *\r\n * @example\r\n * The following demonstrates a `m3e-select` component wrapped in a `m3e-form-field` with a slotted label.\r\n * The label is associated with the select via the `for` and `id` attributes, ensuring accessible form semantics.\r\n * Each `m3e-option` defines an option within the dropdown.\r\n *\r\n * ```html\r\n * <m3e-form-field>\r\n * <label slot=\"label\" for=\"select\">Choose your favorite fruit</label>\r\n * <m3e-select id=\"select\">\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-select>\r\n * </m3e-form-field>\r\n * ```\r\n *\r\n * @tag m3e-select\r\n *\r\n * @slot - Renders the options of the select.\r\n * @slot arrow - Renders the dropdown arrow.\r\n * @slot value - Renders the selected value(s).\r\n *\r\n * @attr disabled - Whether the element is disabled.\r\n * @attr hide-selection-indicator - Whether to hide the selection indicator for single select options.\r\n * @attr multi - Whether multiple options can be selected.\r\n * @attr name - The name that identifies the element when submitting the associated form.\r\n * @attr panel-class - Class or list of classes to be applied to the select's overlay panel.\r\n * @attr required - Whether the element is required.\r\n *\r\n * @fires input - Emitted when the selected state changes.\r\n * @fires change - Emitted when the selected state changes.\r\n *\r\n * @cssprop --m3e-form-field-font-size - The font size of the select control.\r\n * @cssprop --m3e-form-field-font-weight - The font weight of the select control.\r\n * @cssprop --m3e-form-field-line-height - The line height of the select control.\r\n * @cssprop --m3e-form-field-tracking - The letter spacing of the select control.\r\n * @cssprop --m3e-select-container-shape - The corner radius of the select container.\r\n * @cssprop --m3e-select-disabled-color - The text color when the select is disabled.\r\n * @cssprop --m3e-select-disabled-color-opacity - The opacity level applied to the disabled text color.\r\n * @cssprop --m3e-select-icon-size - The size of the dropdown arrow icon.\r\n */\r\n@customElement(\"m3e-select\")\r\nexport class M3eSelectElement\r\n extends Focusable(\r\n Labelled(\r\n RequiredConstraintValidation(\r\n Dirty(\r\n Touched(\r\n Required(ConstraintValidation(FormAssociated(Disabled(AttachInternals(Role(LitElement, \"combobox\")))))),\r\n ),\r\n ),\r\n ),\r\n ),\r\n )\r\n implements FormFieldControl\r\n{\r\n /** The styles of the element. */\r\n static override styles: CSSResultGroup = css`\r\n :host {\r\n display: inline-flex;\r\n vertical-align: middle;\r\n outline: none;\r\n position: relative;\r\n font-size: var(--m3e-form-field-font-size, ${DesignToken.typescale.standard.body.large.fontSize});\r\n font-weight: var(--m3e-form-field-font-weight, ${DesignToken.typescale.standard.body.large.fontWeight});\r\n line-height: var(--m3e-form-field-line-height, ${DesignToken.typescale.standard.body.large.lineHeight});\r\n letter-spacing: var(--m3e-form-field-tracking, ${DesignToken.typescale.standard.body.large.tracking});\r\n min-height: var(--m3e-form-field-line-height, ${DesignToken.typescale.standard.body.large.lineHeight});\r\n border-radius: var(--m3e-select-container-shape, ${DesignToken.shape.corner.extraSmall});\r\n }\r\n :host(:not(:disabled)) {\r\n cursor: pointer;\r\n }\r\n :host(:disabled) {\r\n color: color-mix(\r\n in srgb,\r\n var(--m3e-select-disabled-color, ${DesignToken.color.onSurface}) var(--m3e-select-disabled-color-opacity, 38%),\r\n transparent\r\n );\r\n }\r\n .options {\r\n display: none;\r\n }\r\n .base {\r\n flex: 1 1 auto;\r\n display: inline-flex;\r\n align-items: center;\r\n overflow: hidden;\r\n }\r\n .arrow-wrapper {\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n margin-top: var(--_select-arrow-margin-top);\r\n }\r\n ::slotted([slot=\"arrow\"]),\r\n .arrow {\r\n vertical-align: middle;\r\n width: 1em;\r\n height: 1em;\r\n font-size: var(--m3e-select-icon-size, 1.5rem);\r\n }\r\n :host(:state(-open)) .focus-ring {\r\n display: none;\r\n }\r\n `;\r\n\r\n /** @private */ static __nextId = 0;\r\n\r\n /** @private */ private _options = new Array<M3eOptionElement>();\r\n /** @private */ #clone?: HTMLElement;\r\n\r\n /** @private */ #menu?: M3eOptionPanelElement;\r\n /** @private */ #ignoreKeyUp = false;\r\n /** @private */ #ignoreFocusVisible = false;\r\n\r\n /** @private */ readonly #id = `m3e-select-${M3eSelectElement.__nextId++}`;\r\n /** @private */ readonly #listId = `${this.#id}-list`;\r\n\r\n /** @private */ readonly #clickHandler = (e: Event) => this.#handleClick(e);\r\n /** @private */ readonly #keyDownHandler = (e: KeyboardEvent) => this.#handleKeyDown(e);\r\n /** @private */ readonly #keyUpHandler = (e: KeyboardEvent) => this.#handleKeyUp(e);\r\n /** @private */ readonly #menuToggleHandler = (e: ToggleEvent) => this.#handleMenuToggle(e);\r\n /** @private */ readonly #menuPointerDownHandler = (e: PointerEvent) => this.#handleMenuPointerDown(e);\r\n /** @private */ readonly #menuPointerUpHandler = (e: PointerEvent) => this.#handleMenuPointerUp(e);\r\n /** @private */ #menuPressedOption?: M3eOptionElement;\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 .withTypeahead()\r\n .onActiveItemChange(() => {\r\n if (this._listKeyManager.activeItem) {\r\n this.#activateOption(this._listKeyManager.activeItem);\r\n }\r\n });\r\n\r\n /** @private */ @query(\".focus-ring\") private readonly _focusRing?: M3eFocusRingElement;\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 for single select options.\r\n * @default false\r\n */\r\n @property({ attribute: \"hide-selection-indicator\", type: Boolean }) hideSelectionIndicator = false;\r\n\r\n /**\r\n * Whether multiple options can be selected.\r\n * @default false\r\n */\r\n @property({ type: Boolean }) multi = false;\r\n\r\n /**\r\n * Class or list of classes to be applied to the select's overlay panel.\r\n * @default \"\"\r\n */\r\n @property({ attribute: \"panel-class\" }) panelClass = \"\";\r\n\r\n get #options(): readonly M3eOptionElement[] {\r\n return this._listKeyManager?.items ?? [];\r\n }\r\n\r\n get #selected(): readonly M3eOptionElement[] {\r\n return this.#options.filter((x) => x.selected);\r\n }\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(s). */\r\n get selected(): readonly M3eOptionElement[] {\r\n return this.options.filter((x) => x.selected);\r\n }\r\n\r\n /** The selected (enabled) value(s). */\r\n get value(): string | readonly string[] | null {\r\n const values = this.selected.filter((x) => !x.disabled).map((x) => x.value);\r\n switch (values.length) {\r\n case 0:\r\n return null;\r\n case 1:\r\n return values[0];\r\n default:\r\n return values;\r\n }\r\n }\r\n\r\n /** @inheritdoc @internal */\r\n override get [formValue]() {\r\n const values = this.value;\r\n if (Array.isArray(values)) {\r\n const data = new FormData();\r\n for (const value of values) {\r\n data.append(this.name, value);\r\n }\r\n return data;\r\n }\r\n return <string | null>values;\r\n }\r\n\r\n /** @inheritdoc */\r\n get shouldLabelFloat(): boolean {\r\n return this.selected.filter((x) => !x.isEmpty).length > 0;\r\n }\r\n\r\n /** @private */\r\n get #formField(): M3eFormFieldElement | null {\r\n return this.closest(\"m3e-form-field\");\r\n }\r\n\r\n /** @inheritdoc */\r\n onContainerClick(): void {\r\n this.#ignoreFocusVisible = true;\r\n this.#toggleMenu();\r\n this.focus({ preventScroll: true });\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 const selected = this.#selected;\r\n const willChange = selected.length > 0;\r\n\r\n if (willChange) {\r\n selected.forEach((x) => {\r\n x.selected = false;\r\n this.#updateSelectionState(x);\r\n });\r\n this.requestUpdate();\r\n }\r\n\r\n this.#hideMenu();\r\n\r\n if (willChange) {\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n }\r\n\r\n if (restoreFocus) {\r\n this.focus();\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n override connectedCallback(): void {\r\n super.connectedCallback();\r\n\r\n this.ariaHasPopup = \"listbox\";\r\n this.ariaExpanded = \"false\";\r\n\r\n this.addEventListener(\"click\", this.#clickHandler);\r\n this.addEventListener(\"keydown\", this.#keyDownHandler);\r\n this.addEventListener(\"keyup\", this.#keyUpHandler);\r\n\r\n this.#handleMutation();\r\n }\r\n\r\n /** @inheritdoc */\r\n override disconnectedCallback(): void {\r\n super.disconnectedCallback();\r\n\r\n this.removeEventListener(\"click\", this.#clickHandler);\r\n this.removeEventListener(\"keydown\", this.#keyDownHandler);\r\n this.removeEventListener(\"keyup\", this.#keyUpHandler);\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(\"hideSelectionIndicator\")) {\r\n this.#options.forEach((x) => setCustomState(x, \"-hide-selection-indicator\", this.hideSelectionIndicator));\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override firstUpdated(_changedProperties: PropertyValues<this>): void {\r\n super.firstUpdated(_changedProperties);\r\n\r\n this._focusRing?.attach(this);\r\n\r\n if (this.#formField && this._focusRing) {\r\n this._focusRing.style.display = \"none\";\r\n }\r\n }\r\n\r\n /** @inheritdoc */\r\n protected override render(): unknown {\r\n return html` <m3e-focus-ring class=\"focus-ring\"></m3e-focus-ring>\r\n <div class=\"base\">\r\n <m3e-text-overflow>\r\n <slot name=\"value\">\r\n ${this.selected\r\n .filter((x) => !x.isEmpty)\r\n .map((x, i) => (i > 0 ? html`<span>, </span>${x.label}` : x.label))}\r\n </slot>\r\n </m3e-text-overflow>\r\n <div class=\"arrow-wrapper\" aria-hidden=\"true\">\r\n <slot name=\"arrow\">\r\n <svg class=\"arrow\" viewBox=\"0 -960 960 960\" fill=\"currentColor\">\r\n <path d=\"M480-360 280-560h400L480-360Z\" />\r\n </svg>\r\n </slot>\r\n </div>\r\n </div>\r\n <div class=\"options\" aria-hidden=\"true\">\r\n <slot></slot>\r\n </div>`;\r\n }\r\n\r\n /** @private */\r\n #handleMutation(): void {\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 this._options = [...this.querySelectorAll(\"m3e-option\")];\r\n\r\n this.#formField?.notifyControlStateChange();\r\n if (this.#menu) {\r\n this.#menu.replaceChildren(...this.#clone.childNodes);\r\n if (this._options.length == 0) {\r\n this.#hideMenu();\r\n }\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleClick(e: Event): void {\r\n if (e.defaultPrevented || this.disabled) return;\r\n this.#toggleMenu();\r\n }\r\n\r\n /** @private */\r\n #handleKeyDown(e: KeyboardEvent): void {\r\n if (e.defaultPrevented) return;\r\n this.#ignoreFocusVisible = false;\r\n\r\n switch (e.key) {\r\n case \" \":\r\n case \"Enter\":\r\n e.preventDefault();\r\n if (!this.multi) {\r\n if (this.#menu && this._listKeyManager.activeItem) {\r\n this.#selectOption(this._listKeyManager.activeItem);\r\n }\r\n if (this.#menu?.isOpen) {\r\n if (!prefersReducedMotion()) {\r\n setTimeout(() => this.#hideMenu(), 150);\r\n } else {\r\n this.#hideMenu();\r\n }\r\n } else {\r\n this.#showMenu();\r\n }\r\n } else if (!this.#menu) {\r\n this.#ignoreKeyUp = true;\r\n this.#toggleMenu();\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 \"Down\":\r\n case \"ArrowDown\":\r\n if (this.multi && !this.#menu) {\r\n this.#toggleMenu();\r\n } else {\r\n this._listKeyManager.onKeyDown(e);\r\n if (!this.#menu && this._listKeyManager.activeItem) {\r\n this.#selectOption(this._listKeyManager.activeItem);\r\n }\r\n }\r\n break;\r\n\r\n default:\r\n this._listKeyManager.onKeyDown(e);\r\n if (!this.multi && !this.#menu && this._listKeyManager.activeItem) {\r\n this.#selectOption(this._listKeyManager.activeItem);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleKeyUp(e: KeyboardEvent): void {\r\n if (e.defaultPrevented) return;\r\n\r\n if (this.#ignoreKeyUp) {\r\n this.#ignoreKeyUp = false;\r\n return;\r\n }\r\n\r\n switch (e.key) {\r\n case \" \":\r\n case \"Enter\":\r\n if (!this.multi) return;\r\n e.preventDefault();\r\n if (this.#menu && this._listKeyManager.activeItem) {\r\n this.#selectOption(this._listKeyManager.activeItem);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuPointerDown(e: PointerEvent): void {\r\n this.#menuPressedOption = undefined;\r\n\r\n if (e.button === 2) return;\r\n // Prevent click to avoid stealing focus.\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.#menuPressedOption = option;\r\n }\r\n }\r\n\r\n /** @private */\r\n #handleMenuPointerUp(e: PointerEvent): void {\r\n const pressedOption = this.#menuPressedOption;\r\n this.#menuPressedOption = undefined;\r\n\r\n if (e.button === 2) return;\r\n\r\n if (!pressedOption) return;\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 === pressedOption) {\r\n this.#selectOption(option);\r\n this._listKeyManager.setActiveItem(option);\r\n if (this.multi) {\r\n this.requestUpdate();\r\n }\r\n }\r\n\r\n if (!this.multi) {\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.#selected.find((x) => !x.disabled) ?? this._listKeyManager.items.find((x) => !x.disabled);\r\n this._listKeyManager.setActiveItem(option);\r\n if (option) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\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 this.#menu.remove();\r\n this.#menu.removeEventListener(\"toggle\", this.#menuToggleHandler);\r\n this.#menu.removeEventListener(\"pointerdown\", this.#menuPointerDownHandler);\r\n this.#menu.removeEventListener(\"pointerup\", this.#menuPointerUpHandler);\r\n this.#menu = undefined;\r\n\r\n this.ariaExpanded = \"false\";\r\n this.removeAttribute(\"aria-controls\");\r\n this.removeAttribute(\"aria-owns\");\r\n this.removeAttribute(\"aria-activedescendant\");\r\n this.requestUpdate();\r\n\r\n deleteCustomState(this, \"-open\");\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 #toggleMenu(): void {\r\n if (this.disabled) return;\r\n if (this.#menu) {\r\n this.#hideMenu();\r\n } else {\r\n this.#showMenu();\r\n }\r\n }\r\n\r\n /** @private */\r\n #showMenu(): void {\r\n if (this.#menu || this._options.length == 0) return;\r\n\r\n this.#menu = document.createElement(\"m3e-option-panel\");\r\n if (this.multi) {\r\n this.#menu.ariaMultiSelectable = \"true\";\r\n }\r\n\r\n this.#menu.id = this.#listId;\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.fitAnchorWidth = true;\r\n this.#menu.addEventListener(\"toggle\", this.#menuToggleHandler);\r\n this.#menu.addEventListener(\"pointerdown\", this.#menuPointerDownHandler);\r\n this.#menu.addEventListener(\"pointerup\", this.#menuPointerUpHandler);\r\n\r\n if (this.#clone) {\r\n this.#menu.replaceChildren(...this.#clone.childNodes);\r\n }\r\n\r\n (this.#formField ?? this).insertAdjacentElement(\"afterend\", this.#menu);\r\n\r\n this.ariaExpanded = \"true\";\r\n this.setAttribute(\"aria-controls\", this.#listId);\r\n this.setAttribute(\"aria-owns\", this.#listId);\r\n this.#formField?.notifyControlStateChange();\r\n\r\n setTimeout(() => {\r\n this.#menu?.show(this, this.#formField?.menuAnchor);\r\n addCustomState(this, \"-open\");\r\n });\r\n }\r\n\r\n /** @private */\r\n #hideMenu(): void {\r\n if (!this.#menu) return;\r\n\r\n this.#menu.hide();\r\n deleteCustomState(this, \"-open\");\r\n }\r\n\r\n /** @private */\r\n #activateOption(option: M3eOptionElement): void {\r\n this.setAttribute(\"aria-activedescendant\", option.id);\r\n if (this.#menu) {\r\n scrollIntoViewIfNeeded(option, this.#menu, { block: \"nearest\", behavior: \"instant\" });\r\n\r\n const focusVisible = !this.#ignoreFocusVisible && (this.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 #updateSelectionState(clone: M3eOptionElement): void {\r\n const option = this._options[this._listKeyManager.items.indexOf(clone)];\r\n if (option) {\r\n option.selected = clone.selected;\r\n }\r\n }\r\n\r\n /** @private */\r\n #selectOption(option: M3eOptionElement): void {\r\n const selected = this.multi ? !option.selected : true;\r\n if (option.selected === selected) return;\r\n\r\n option.selected = selected;\r\n this.#updateSelectionState(option);\r\n\r\n if (this.dispatchEvent(new Event(\"input\", { bubbles: true, composed: true, cancelable: true }))) {\r\n if (!this.multi) {\r\n this.#selected\r\n .filter((x) => x !== option)\r\n .forEach((x) => {\r\n x.selected = false;\r\n this.#updateSelectionState(x);\r\n });\r\n }\r\n\r\n this.requestUpdate();\r\n this.#formField?.notifyControlStateChange();\r\n this.dispatchEvent(new Event(\"change\", { bubbles: true }));\r\n } else {\r\n option.selected = !selected;\r\n this.#updateSelectionState(option);\r\n }\r\n }\r\n}\r\n\r\ninterface M3eSelectElementEventMap extends HTMLElementEventMap {\r\n toggle: ToggleEvent;\r\n}\r\n\r\nexport interface M3eSelectElement {\r\n addEventListener<K extends keyof M3eSelectElementEventMap>(\r\n type: K,\r\n listener: (this: M3eSelectElement, ev: M3eSelectElementEventMap[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 M3eSelectElementEventMap>(\r\n type: K,\r\n listener: (this: M3eSelectElement, ev: M3eSelectElementEventMap[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-select\": M3eSelectElement;\r\n }\r\n}\r\n"],"names":["M3eSelectElement","M3eSelectElement_1","Focusable","Labelled","RequiredConstraintValidation","Dirty","Touched","Required","ConstraintValidation","FormAssociated","Disabled","AttachInternals","Role","LitElement","constructor","_options","Array","_M3eSelectElement_clone","set","_M3eSelectElement_menu","_M3eSelectElement_ignoreKeyUp","_M3eSelectElement_ignoreFocusVisible","_M3eSelectElement_id","__nextId","_M3eSelectElement_listId","__classPrivateFieldGet","_M3eSelectElement_clickHandler","e","call","_M3eSelectElement_keyDownHandler","_M3eSelectElement_keyUpHandler","_M3eSelectElement_menuToggleHandler","_M3eSelectElement_menuPointerDownHandler","_M3eSelectElement_menuPointerUpHandler","_M3eSelectElement_menuPressedOption","_listKeyManager","ListKeyManager","withWrap","withHomeAndEnd","withPageUpAndDown","withVerticalOrientation","withTypeahead","onActiveItemChange","activeItem","_M3eSelectElement_instances","_M3eSelectElement_activateOption","hideSelectionIndicator","multi","panelClass","MutationController","config","childList","subtree","callback","_M3eSelectElement_handleMutation","options","selected","filter","x","value","values","disabled","map","length","WeakMap","WeakSet","_M3eSelectElement_options_get","items","_M3eSelectElement_selected_get","formValue","isArray","data","FormData","append","name","shouldLabelFloat","isEmpty","onContainerClick","__classPrivateFieldSet","_M3eSelectElement_toggleMenu","focus","preventScroll","clear","restoreFocus","willChange","forEach","_M3eSelectElement_updateSelectionState","requestUpdate","_M3eSelectElement_hideMenu","dispatchEvent","Event","bubbles","connectedCallback","ariaHasPopup","ariaExpanded","addEventListener","disconnectedCallback","removeEventListener","update","changedProperties","has","setCustomState","firstUpdated","_changedProperties","_focusRing","attach","_M3eSelectElement_formField_get","style","display","render","html","i","label","closest","cloneNode","added","setItems","querySelectorAll","id","indexOf","notifyControlStateChange","replaceChildren","childNodes","defaultPrevented","key","preventDefault","_M3eSelectElement_selectOption","isOpen","prefersReducedMotion","setTimeout","_M3eSelectElement_showMenu","onKeyDown","undefined","button","stopImmediatePropagation","option","composedPath","find","HTMLElement","tagName","pressedOption","setActiveItem","newState","scrollIntoViewIfNeeded","block","behavior","ToggleEvent","oldState","_M3eSelectElement_destroyMenu","remove","removeAttribute","deleteCustomState","document","createElement","ariaMultiSelectable","klass","split","d","trim","Boolean","classList","add","overflowX","fitAnchorWidth","insertAdjacentElement","setAttribute","show","menuAnchor","addCustomState","hide","focusVisible","matches","forcedColorsActive","active","focusRing","stateLayer","clone","composed","cancelable","styles","css","DesignToken","typescale","standard","body","large","fontSize","fontWeight","lineHeight","tracking","shape","corner","extraSmall","color","onSurface","__decorate","query","prototype","property","attribute","type","customElement"],"mappings":"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"}
@@ -3,5 +3,5 @@
3
3
  * Copyright (c) 2025 matraic
4
4
  * See LICENSE file in the project root for full license text.
5
5
  */
6
- import{__classPrivateFieldGet as t,__classPrivateFieldSet as e,__decorate as i}from"tslib";import{LitElement as s,html as a,css as n}from"lit";import{query as l,property as h}from"lit/decorators.js";import{Focusable as o,Labelled as r,RequiredConstraintValidation as c,Dirty as d,Touched as f,Required as m,ConstraintValidation as p,FormAssociated as u,Disabled as v,AttachInternals as g,Role as y,MutationController as w,formValue as b,setCustomState as E,prefersReducedMotion as M,scrollIntoViewIfNeeded as _,deleteCustomState as k,addCustomState as S,forcedColorsActive as C,DesignToken as I,customElement as K}from"@m3e/web/core";import{ListKeyManager as x}from"@m3e/web/core/a11y";var A,L,W,$,T,D,P,U,q,N,O,R,z,H,B,j,F,V,X,Z,G,J,Q,Y,tt,et,it,st,at;let nt=at=class extends(o(r(c(d(f(m(p(u(v(g(y(s,"combobox")))))))))))){constructor(){super(),A.add(this),this._options=new Array,L.set(this,void 0),W.set(this,void 0),$.set(this,!1),T.set(this,!1),D.set(this,"m3e-select-"+at.__nextId++),P.set(this,`${t(this,D,"f")}-list`),U.set(this,e=>t(this,A,"m",F).call(this,e)),q.set(this,e=>t(this,A,"m",V).call(this,e)),N.set(this,e=>t(this,A,"m",X).call(this,e)),O.set(this,e=>t(this,A,"m",G).call(this,e)),R.set(this,e=>t(this,A,"m",Z).call(this,e)),this._listKeyManager=(new x).withWrap().withHomeAndEnd().withPageUpAndDown().withVerticalOrientation().withTypeahead().onActiveItemChange(()=>{this._listKeyManager.activeItem&&t(this,A,"m",et).call(this,this._listKeyManager.activeItem)}),this.hideSelectionIndicator=!1,this.multi=!1,this.panelClass="",new w(this,{config:{childList:!0,subtree:!0},callback:()=>t(this,A,"m",j).call(this)})}get options(){return this._options??[]}get selected(){return this.options.filter(t=>t.selected)}get value(){const t=this.selected.filter(t=>!t.disabled).map(t=>t.value);switch(t.length){case 0:return null;case 1:return t[0];default:return t}}get[(L=new WeakMap,W=new WeakMap,$=new WeakMap,T=new WeakMap,D=new WeakMap,P=new WeakMap,U=new WeakMap,q=new WeakMap,N=new WeakMap,O=new WeakMap,R=new WeakMap,A=new WeakSet,z=function(){return this._listKeyManager?.items??[]},H=function(){return t(this,A,"a",z).filter(t=>t.selected)},b)](){const t=this.value;if(Array.isArray(t)){const e=new FormData;for(const i of t)e.append(this.name,i);return e}return t}get shouldLabelFloat(){return this.selected.filter(t=>!t.isEmpty).length>0}onContainerClick(){e(this,T,!0,"f"),t(this,A,"m",Q).call(this),this.focus({preventScroll:!0})}clear(e=!1){const i=t(this,A,"a",H),s=i.length>0;s&&(i.forEach(e=>{e.selected=!1,t(this,A,"m",it).call(this,e)}),this.requestUpdate()),t(this,A,"m",tt).call(this),s&&this.dispatchEvent(new Event("change",{bubbles:!0})),e&&this.focus()}connectedCallback(){super.connectedCallback(),this.ariaHasPopup="listbox",this.ariaExpanded="false",this.addEventListener("click",t(this,U,"f")),this.addEventListener("keydown",t(this,q,"f")),this.addEventListener("keyup",t(this,N,"f")),t(this,A,"m",j).call(this)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("click",t(this,U,"f")),this.removeEventListener("keydown",t(this,q,"f")),this.removeEventListener("keyup",t(this,N,"f"))}update(e){super.update(e),e.has("hideSelectionIndicator")&&t(this,A,"a",z).forEach(t=>E(t,"-hide-selection-indicator",this.hideSelectionIndicator))}firstUpdated(e){super.firstUpdated(e),this._focusRing?.attach(this),t(this,A,"a",B)&&this._focusRing&&(this._focusRing.style.display="none")}render(){return a`<m3e-focus-ring class="focus-ring"></m3e-focus-ring><div class="base"><m3e-text-overflow><slot name="value">${this.selected.filter(t=>!t.isEmpty).map((t,e)=>e>0?a`<span>, </span>${t.label}`:t.label)}</slot></m3e-text-overflow><div class="arrow-wrapper" aria-hidden="true"><slot name="arrow"><svg class="arrow" viewBox="0 -960 960 960" fill="currentColor"><path d="M480-360 280-560h400L480-360Z"/></svg></slot></div></div><div class="options" aria-hidden="true"><slot></slot></div>`}};B=function(){return this.closest("m3e-form-field")},j=function(){e(this,L,this.cloneNode(!0),"f");const{added:i}=this._listKeyManager.setItems([...t(this,L,"f").querySelectorAll("m3e-option")]);i.forEach(e=>{e.id=e.id||`${t(this,D,"f")}-option-${this._listKeyManager.items.indexOf(e)}`,E(e,"-hide-selection-indicator",this.hideSelectionIndicator)}),this._options=[...this.querySelectorAll("m3e-option")],t(this,A,"a",B)?.notifyControlStateChange(),t(this,W,"f")&&(t(this,W,"f").replaceChildren(...t(this,L,"f").childNodes),0==this._options.length&&t(this,A,"m",tt).call(this))},F=function(e){e.defaultPrevented||this.disabled||t(this,A,"m",Q).call(this)},V=function(i){if(!i.defaultPrevented)switch(e(this,T,!1,"f"),i.key){case" ":case"Enter":i.preventDefault(),this.multi?t(this,W,"f")||(e(this,$,!0,"f"),t(this,A,"m",Q).call(this)):(t(this,W,"f")&&this._listKeyManager.activeItem&&t(this,A,"m",st).call(this,this._listKeyManager.activeItem),t(this,W,"f")?.isOpen?M()?t(this,A,"m",tt).call(this):setTimeout(()=>t(this,A,"m",tt).call(this),150):t(this,A,"m",Y).call(this));break;case"Escape":case"Tab":t(this,A,"m",tt).call(this);break;case"Down":case"ArrowDown":this.multi&&!t(this,W,"f")?t(this,A,"m",Q).call(this):(this._listKeyManager.onKeyDown(i),!t(this,W,"f")&&this._listKeyManager.activeItem&&t(this,A,"m",st).call(this,this._listKeyManager.activeItem));break;default:this._listKeyManager.onKeyDown(i),this.multi||t(this,W,"f")||!this._listKeyManager.activeItem||t(this,A,"m",st).call(this,this._listKeyManager.activeItem)}},X=function(i){if(!i.defaultPrevented)if(t(this,$,"f"))e(this,$,!1,"f");else switch(i.key){case" ":case"Enter":if(!this.multi)return;i.preventDefault(),t(this,W,"f")&&this._listKeyManager.activeItem&&t(this,A,"m",st).call(this,this._listKeyManager.activeItem)}},Z=function(e){if(2===e.button)return;e.preventDefault(),e.stopImmediatePropagation();const i=e.composedPath().find(t=>t instanceof HTMLElement&&"M3E-OPTION"===t.tagName);i&&!i.disabled&&(t(this,A,"m",st).call(this,i),this._listKeyManager.setActiveItem(i),this.multi?this.requestUpdate():M()?t(this,A,"m",tt).call(this):setTimeout(()=>t(this,A,"m",tt).call(this),150))},G=function(e){if(t(this,W,"f"))if("closed"!==e.newState){const i=t(this,A,"a",H).find(t=>!t.disabled)??this._listKeyManager.items.find(t=>!t.disabled);this._listKeyManager.setActiveItem(i),i&&_(i,t(this,W,"f"),{block:"nearest",behavior:"instant"}),this.dispatchEvent(new ToggleEvent("toggle",{oldState:e.oldState,newState:e.newState}))}else M()?t(this,A,"m",J).call(this,e):setTimeout(()=>t(this,A,"m",J).call(this,e),100)},J=function(i){t(this,W,"f")&&(t(this,L,"f")?.replaceChildren(...t(this,W,"f").childNodes),t(this,W,"f").remove(),t(this,W,"f").removeEventListener("toggle",t(this,O,"f")),t(this,W,"f").removeEventListener("pointerdown",t(this,R,"f")),e(this,W,void 0,"f"),this.ariaExpanded="false",this.removeAttribute("aria-controls"),this.removeAttribute("aria-owns"),this.removeAttribute("aria-activedescendant"),this.requestUpdate(),k(this,"-open"),t(this,A,"a",B)?.notifyControlStateChange(),this.dispatchEvent(new ToggleEvent("toggle",{oldState:i.oldState,newState:i.newState})))},Q=function(){this.disabled||(t(this,W,"f")?t(this,A,"m",tt).call(this):t(this,A,"m",Y).call(this))},Y=function(){if(!t(this,W,"f")&&0!=this._options.length){if(e(this,W,document.createElement("m3e-option-panel"),"f"),this.multi&&(t(this,W,"f").ariaMultiSelectable="true"),t(this,W,"f").id=t(this,P,"f"),this.panelClass)for(const e of this.panelClass.split(/\s+/).map(t=>t.trim()).filter(Boolean))t(this,W,"f").classList.add(e);t(this,W,"f").style.overflowX="hidden",t(this,W,"f").fitAnchorWidth=!0,t(this,W,"f").addEventListener("toggle",t(this,O,"f")),t(this,W,"f").addEventListener("pointerdown",t(this,R,"f")),t(this,L,"f")&&t(this,W,"f").replaceChildren(...t(this,L,"f").childNodes),(t(this,A,"a",B)??this).insertAdjacentElement("afterend",t(this,W,"f")),this.ariaExpanded="true",this.setAttribute("aria-controls",t(this,P,"f")),this.setAttribute("aria-owns",t(this,P,"f")),t(this,A,"a",B)?.notifyControlStateChange(),setTimeout(()=>{t(this,W,"f")?.show(this,t(this,A,"a",B)?.menuAnchor),S(this,"-open")})}},tt=function(){t(this,W,"f")&&(t(this,W,"f").hide(),k(this,"-open"))},et=function(e){if(this.setAttribute("aria-activedescendant",e.id),t(this,W,"f")){_(e,t(this,W,"f"),{block:"nearest",behavior:"instant"});const i=!t(this,T,"f")&&(this.matches(":focus-visible")||C());t(this,A,"a",z).forEach(t=>{t===e&&i?(t.focusRing?.show(),t.stateLayer?.show("focused")):(t.focusRing?.hide(),t.stateLayer?.hide("focused"))})}},it=function(t){const e=this._options[this._listKeyManager.items.indexOf(t)];e&&(e.selected=t.selected)},st=function(e){const i=!this.multi||!e.selected;e.selected!==i&&(e.selected=i,t(this,A,"m",it).call(this,e),this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0,cancelable:!0}))?(this.multi||t(this,A,"a",H).filter(t=>t!==e).forEach(e=>{e.selected=!1,t(this,A,"m",it).call(this,e)}),this.requestUpdate(),t(this,A,"a",B)?.notifyControlStateChange(),this.dispatchEvent(new Event("change",{bubbles:!0}))):(e.selected=!i,t(this,A,"m",it).call(this,e)))},nt.styles=n`:host { display: inline-flex; vertical-align: middle; outline: none; position: relative; font-size: var(--m3e-form-field-font-size, ${I.typescale.standard.body.large.fontSize}); font-weight: var(--m3e-form-field-font-weight, ${I.typescale.standard.body.large.fontWeight}); line-height: var(--m3e-form-field-line-height, ${I.typescale.standard.body.large.lineHeight}); letter-spacing: var(--m3e-form-field-tracking, ${I.typescale.standard.body.large.tracking}); min-height: var(--m3e-form-field-line-height, ${I.typescale.standard.body.large.lineHeight}); border-radius: var(--m3e-select-container-shape, ${I.shape.corner.extraSmall}); } :host(:not(:disabled)) { cursor: pointer; } :host(:disabled) { color: color-mix( in srgb, var(--m3e-select-disabled-color, ${I.color.onSurface}) var(--m3e-select-disabled-color-opacity, 38%), transparent ); } .options { display: none; } .base { flex: 1 1 auto; display: inline-flex; align-items: center; overflow: hidden; } .arrow-wrapper { display: flex; align-items: center; justify-content: center; margin-top: var(--_select-arrow-margin-top); } ::slotted([slot="arrow"]), .arrow { vertical-align: middle; width: 1em; height: 1em; font-size: var(--m3e-select-icon-size, 1.5rem); } :host(:state(-open)) .focus-ring { display: none; }`,nt.__nextId=0,i([l(".focus-ring")],nt.prototype,"_focusRing",void 0),i([h({attribute:"hide-selection-indicator",type:Boolean})],nt.prototype,"hideSelectionIndicator",void 0),i([h({type:Boolean})],nt.prototype,"multi",void 0),i([h({attribute:"panel-class"})],nt.prototype,"panelClass",void 0),nt=at=i([K("m3e-select")],nt);export{nt as M3eSelectElement};
6
+ import{__classPrivateFieldGet as t,__classPrivateFieldSet as e,__decorate as i}from"tslib";import{LitElement as s,html as a,css as n}from"lit";import{query as h,property as l}from"lit/decorators.js";import{Focusable as o,Labelled as r,RequiredConstraintValidation as c,Dirty as d,Touched as f,Required as m,ConstraintValidation as p,FormAssociated as u,Disabled as v,AttachInternals as g,Role as w,MutationController as y,formValue as b,setCustomState as E,prefersReducedMotion as M,scrollIntoViewIfNeeded as k,deleteCustomState as _,addCustomState as S,forcedColorsActive as I,DesignToken as C,customElement as K}from"@m3e/web/core";import{ListKeyManager as x}from"@m3e/web/core/a11y";var A,L,W,T,$,P,D,N,O,U,q,H,R,z,B,j,F,V,X,Z,G,J,Q,Y,tt,et,it,st,at,nt,ht,lt;let ot=lt=class extends(o(r(c(d(f(m(p(u(v(g(w(s,"combobox")))))))))))){constructor(){super(),A.add(this),this._options=new Array,L.set(this,void 0),W.set(this,void 0),T.set(this,!1),$.set(this,!1),P.set(this,"m3e-select-"+lt.__nextId++),D.set(this,`${t(this,P,"f")}-list`),N.set(this,e=>t(this,A,"m",X).call(this,e)),O.set(this,e=>t(this,A,"m",Z).call(this,e)),U.set(this,e=>t(this,A,"m",G).call(this,e)),q.set(this,e=>t(this,A,"m",Y).call(this,e)),H.set(this,e=>t(this,A,"m",J).call(this,e)),R.set(this,e=>t(this,A,"m",Q).call(this,e)),z.set(this,void 0),this._listKeyManager=(new x).withWrap().withHomeAndEnd().withPageUpAndDown().withVerticalOrientation().withTypeahead().onActiveItemChange(()=>{this._listKeyManager.activeItem&&t(this,A,"m",at).call(this,this._listKeyManager.activeItem)}),this.hideSelectionIndicator=!1,this.multi=!1,this.panelClass="",new y(this,{config:{childList:!0,subtree:!0},callback:()=>t(this,A,"m",V).call(this)})}get options(){return this._options??[]}get selected(){return this.options.filter(t=>t.selected)}get value(){const t=this.selected.filter(t=>!t.disabled).map(t=>t.value);switch(t.length){case 0:return null;case 1:return t[0];default:return t}}get[(L=new WeakMap,W=new WeakMap,T=new WeakMap,$=new WeakMap,P=new WeakMap,D=new WeakMap,N=new WeakMap,O=new WeakMap,U=new WeakMap,q=new WeakMap,H=new WeakMap,R=new WeakMap,z=new WeakMap,A=new WeakSet,B=function(){return this._listKeyManager?.items??[]},j=function(){return t(this,A,"a",B).filter(t=>t.selected)},b)](){const t=this.value;if(Array.isArray(t)){const e=new FormData;for(const i of t)e.append(this.name,i);return e}return t}get shouldLabelFloat(){return this.selected.filter(t=>!t.isEmpty).length>0}onContainerClick(){e(this,$,!0,"f"),t(this,A,"m",et).call(this),this.focus({preventScroll:!0})}clear(e=!1){const i=t(this,A,"a",j),s=i.length>0;s&&(i.forEach(e=>{e.selected=!1,t(this,A,"m",nt).call(this,e)}),this.requestUpdate()),t(this,A,"m",st).call(this),s&&this.dispatchEvent(new Event("change",{bubbles:!0})),e&&this.focus()}connectedCallback(){super.connectedCallback(),this.ariaHasPopup="listbox",this.ariaExpanded="false",this.addEventListener("click",t(this,N,"f")),this.addEventListener("keydown",t(this,O,"f")),this.addEventListener("keyup",t(this,U,"f")),t(this,A,"m",V).call(this)}disconnectedCallback(){super.disconnectedCallback(),this.removeEventListener("click",t(this,N,"f")),this.removeEventListener("keydown",t(this,O,"f")),this.removeEventListener("keyup",t(this,U,"f"))}update(e){super.update(e),e.has("hideSelectionIndicator")&&t(this,A,"a",B).forEach(t=>E(t,"-hide-selection-indicator",this.hideSelectionIndicator))}firstUpdated(e){super.firstUpdated(e),this._focusRing?.attach(this),t(this,A,"a",F)&&this._focusRing&&(this._focusRing.style.display="none")}render(){return a`<m3e-focus-ring class="focus-ring"></m3e-focus-ring><div class="base"><m3e-text-overflow><slot name="value">${this.selected.filter(t=>!t.isEmpty).map((t,e)=>e>0?a`<span>, </span>${t.label}`:t.label)}</slot></m3e-text-overflow><div class="arrow-wrapper" aria-hidden="true"><slot name="arrow"><svg class="arrow" viewBox="0 -960 960 960" fill="currentColor"><path d="M480-360 280-560h400L480-360Z"/></svg></slot></div></div><div class="options" aria-hidden="true"><slot></slot></div>`}};F=function(){return this.closest("m3e-form-field")},V=function(){e(this,L,this.cloneNode(!0),"f");const{added:i}=this._listKeyManager.setItems([...t(this,L,"f").querySelectorAll("m3e-option")]);i.forEach(e=>{e.id=e.id||`${t(this,P,"f")}-option-${this._listKeyManager.items.indexOf(e)}`,E(e,"-hide-selection-indicator",this.hideSelectionIndicator)}),this._options=[...this.querySelectorAll("m3e-option")],t(this,A,"a",F)?.notifyControlStateChange(),t(this,W,"f")&&(t(this,W,"f").replaceChildren(...t(this,L,"f").childNodes),0==this._options.length&&t(this,A,"m",st).call(this))},X=function(e){e.defaultPrevented||this.disabled||t(this,A,"m",et).call(this)},Z=function(i){if(!i.defaultPrevented)switch(e(this,$,!1,"f"),i.key){case" ":case"Enter":i.preventDefault(),this.multi?t(this,W,"f")||(e(this,T,!0,"f"),t(this,A,"m",et).call(this)):(t(this,W,"f")&&this._listKeyManager.activeItem&&t(this,A,"m",ht).call(this,this._listKeyManager.activeItem),t(this,W,"f")?.isOpen?M()?t(this,A,"m",st).call(this):setTimeout(()=>t(this,A,"m",st).call(this),150):t(this,A,"m",it).call(this));break;case"Escape":case"Tab":t(this,A,"m",st).call(this);break;case"Down":case"ArrowDown":this.multi&&!t(this,W,"f")?t(this,A,"m",et).call(this):(this._listKeyManager.onKeyDown(i),!t(this,W,"f")&&this._listKeyManager.activeItem&&t(this,A,"m",ht).call(this,this._listKeyManager.activeItem));break;default:this._listKeyManager.onKeyDown(i),this.multi||t(this,W,"f")||!this._listKeyManager.activeItem||t(this,A,"m",ht).call(this,this._listKeyManager.activeItem)}},G=function(i){if(!i.defaultPrevented)if(t(this,T,"f"))e(this,T,!1,"f");else switch(i.key){case" ":case"Enter":if(!this.multi)return;i.preventDefault(),t(this,W,"f")&&this._listKeyManager.activeItem&&t(this,A,"m",ht).call(this,this._listKeyManager.activeItem)}},J=function(t){if(e(this,z,void 0,"f"),2===t.button)return;t.preventDefault(),t.stopImmediatePropagation();const i=t.composedPath().find(t=>t instanceof HTMLElement&&"M3E-OPTION"===t.tagName);i&&!i.disabled&&e(this,z,i,"f")},Q=function(i){const s=t(this,z,"f");if(e(this,z,void 0,"f"),2===i.button)return;if(!s)return;const a=i.composedPath().find(t=>t instanceof HTMLElement&&"M3E-OPTION"===t.tagName);a===s&&(t(this,A,"m",ht).call(this,a),this._listKeyManager.setActiveItem(a),this.multi&&this.requestUpdate()),this.multi||(M()?t(this,A,"m",st).call(this):setTimeout(()=>t(this,A,"m",st).call(this),150))},Y=function(e){if(t(this,W,"f"))if("closed"!==e.newState){const i=t(this,A,"a",j).find(t=>!t.disabled)??this._listKeyManager.items.find(t=>!t.disabled);this._listKeyManager.setActiveItem(i),i&&k(i,t(this,W,"f"),{block:"nearest",behavior:"instant"}),this.dispatchEvent(new ToggleEvent("toggle",{oldState:e.oldState,newState:e.newState}))}else M()?t(this,A,"m",tt).call(this,e):setTimeout(()=>t(this,A,"m",tt).call(this,e),100)},tt=function(i){t(this,W,"f")&&(t(this,L,"f")?.replaceChildren(...t(this,W,"f").childNodes),t(this,W,"f").remove(),t(this,W,"f").removeEventListener("toggle",t(this,q,"f")),t(this,W,"f").removeEventListener("pointerdown",t(this,H,"f")),t(this,W,"f").removeEventListener("pointerup",t(this,R,"f")),e(this,W,void 0,"f"),this.ariaExpanded="false",this.removeAttribute("aria-controls"),this.removeAttribute("aria-owns"),this.removeAttribute("aria-activedescendant"),this.requestUpdate(),_(this,"-open"),t(this,A,"a",F)?.notifyControlStateChange(),this.dispatchEvent(new ToggleEvent("toggle",{oldState:i.oldState,newState:i.newState})))},et=function(){this.disabled||(t(this,W,"f")?t(this,A,"m",st).call(this):t(this,A,"m",it).call(this))},it=function(){if(!t(this,W,"f")&&0!=this._options.length){if(e(this,W,document.createElement("m3e-option-panel"),"f"),this.multi&&(t(this,W,"f").ariaMultiSelectable="true"),t(this,W,"f").id=t(this,D,"f"),this.panelClass)for(const e of this.panelClass.split(/\s+/).map(t=>t.trim()).filter(Boolean))t(this,W,"f").classList.add(e);t(this,W,"f").style.overflowX="hidden",t(this,W,"f").fitAnchorWidth=!0,t(this,W,"f").addEventListener("toggle",t(this,q,"f")),t(this,W,"f").addEventListener("pointerdown",t(this,H,"f")),t(this,W,"f").addEventListener("pointerup",t(this,R,"f")),t(this,L,"f")&&t(this,W,"f").replaceChildren(...t(this,L,"f").childNodes),(t(this,A,"a",F)??this).insertAdjacentElement("afterend",t(this,W,"f")),this.ariaExpanded="true",this.setAttribute("aria-controls",t(this,D,"f")),this.setAttribute("aria-owns",t(this,D,"f")),t(this,A,"a",F)?.notifyControlStateChange(),setTimeout(()=>{t(this,W,"f")?.show(this,t(this,A,"a",F)?.menuAnchor),S(this,"-open")})}},st=function(){t(this,W,"f")&&(t(this,W,"f").hide(),_(this,"-open"))},at=function(e){if(this.setAttribute("aria-activedescendant",e.id),t(this,W,"f")){k(e,t(this,W,"f"),{block:"nearest",behavior:"instant"});const i=!t(this,$,"f")&&(this.matches(":focus-visible")||I());t(this,A,"a",B).forEach(t=>{t===e&&i?(t.focusRing?.show(),t.stateLayer?.show("focused")):(t.focusRing?.hide(),t.stateLayer?.hide("focused"))})}},nt=function(t){const e=this._options[this._listKeyManager.items.indexOf(t)];e&&(e.selected=t.selected)},ht=function(e){const i=!this.multi||!e.selected;e.selected!==i&&(e.selected=i,t(this,A,"m",nt).call(this,e),this.dispatchEvent(new Event("input",{bubbles:!0,composed:!0,cancelable:!0}))?(this.multi||t(this,A,"a",j).filter(t=>t!==e).forEach(e=>{e.selected=!1,t(this,A,"m",nt).call(this,e)}),this.requestUpdate(),t(this,A,"a",F)?.notifyControlStateChange(),this.dispatchEvent(new Event("change",{bubbles:!0}))):(e.selected=!i,t(this,A,"m",nt).call(this,e)))},ot.styles=n`:host { display: inline-flex; vertical-align: middle; outline: none; position: relative; font-size: var(--m3e-form-field-font-size, ${C.typescale.standard.body.large.fontSize}); font-weight: var(--m3e-form-field-font-weight, ${C.typescale.standard.body.large.fontWeight}); line-height: var(--m3e-form-field-line-height, ${C.typescale.standard.body.large.lineHeight}); letter-spacing: var(--m3e-form-field-tracking, ${C.typescale.standard.body.large.tracking}); min-height: var(--m3e-form-field-line-height, ${C.typescale.standard.body.large.lineHeight}); border-radius: var(--m3e-select-container-shape, ${C.shape.corner.extraSmall}); } :host(:not(:disabled)) { cursor: pointer; } :host(:disabled) { color: color-mix( in srgb, var(--m3e-select-disabled-color, ${C.color.onSurface}) var(--m3e-select-disabled-color-opacity, 38%), transparent ); } .options { display: none; } .base { flex: 1 1 auto; display: inline-flex; align-items: center; overflow: hidden; } .arrow-wrapper { display: flex; align-items: center; justify-content: center; margin-top: var(--_select-arrow-margin-top); } ::slotted([slot="arrow"]), .arrow { vertical-align: middle; width: 1em; height: 1em; font-size: var(--m3e-select-icon-size, 1.5rem); } :host(:state(-open)) .focus-ring { display: none; }`,ot.__nextId=0,i([h(".focus-ring")],ot.prototype,"_focusRing",void 0),i([l({attribute:"hide-selection-indicator",type:Boolean})],ot.prototype,"hideSelectionIndicator",void 0),i([l({type:Boolean})],ot.prototype,"multi",void 0),i([l({attribute:"panel-class"})],ot.prototype,"panelClass",void 0),ot=lt=i([K("m3e-select")],ot);export{ot as M3eSelectElement};
7
7
  //# sourceMappingURL=select.min.js.map