@m3e/web 2.0.5 → 2.1.0
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.
- package/dist/all.js +773 -473
- package/dist/all.js.map +1 -1
- package/dist/all.min.js +52 -58
- package/dist/all.min.js.map +1 -1
- package/dist/autocomplete.js +342 -69
- package/dist/autocomplete.js.map +1 -1
- package/dist/autocomplete.min.js +1 -1
- package/dist/autocomplete.min.js.map +1 -1
- package/dist/chips.js +18 -4
- package/dist/chips.js.map +1 -1
- package/dist/chips.min.js +1 -1
- package/dist/chips.min.js.map +1 -1
- package/dist/core-a11y.js +3 -118
- package/dist/core-a11y.js.map +1 -1
- package/dist/core-a11y.min.js +13 -4
- package/dist/core-a11y.min.js.map +1 -1
- package/dist/core-anchoring.js +193 -1
- package/dist/core-anchoring.js.map +1 -1
- package/dist/core-anchoring.min.js +1 -1
- package/dist/core-anchoring.min.js.map +1 -1
- package/dist/core.js +119 -91
- package/dist/core.js.map +1 -1
- package/dist/core.min.js +1 -1
- package/dist/core.min.js.map +1 -1
- package/dist/css-custom-data.json +406 -326
- package/dist/custom-elements.json +4321 -3297
- package/dist/html-custom-data.json +169 -94
- package/dist/loading-indicator.js +1 -0
- package/dist/loading-indicator.js.map +1 -1
- package/dist/loading-indicator.min.js +1 -1
- package/dist/loading-indicator.min.js.map +1 -1
- package/dist/menu.js +1 -1
- package/dist/menu.js.map +1 -1
- package/dist/menu.min.js +1 -1
- package/dist/menu.min.js.map +1 -1
- package/dist/option.js +94 -121
- package/dist/option.js.map +1 -1
- package/dist/option.min.js +1 -1
- package/dist/option.min.js.map +1 -1
- package/dist/progress-indicator.js +2 -0
- package/dist/progress-indicator.js.map +1 -1
- package/dist/progress-indicator.min.js +2 -2
- package/dist/progress-indicator.min.js.map +1 -1
- package/dist/select.js +59 -23
- package/dist/select.js.map +1 -1
- package/dist/select.min.js +1 -1
- package/dist/select.min.js.map +1 -1
- package/dist/src/autocomplete/AutocompleteElement.d.ts +71 -2
- package/dist/src/autocomplete/AutocompleteElement.d.ts.map +1 -1
- package/dist/src/autocomplete/AutocompleteFilterMode.d.ts +3 -0
- package/dist/src/autocomplete/AutocompleteFilterMode.d.ts.map +1 -0
- package/dist/src/autocomplete/QueryEventDetail.d.ts +12 -0
- package/dist/src/autocomplete/QueryEventDetail.d.ts.map +1 -0
- package/dist/src/autocomplete/index.d.ts +2 -0
- package/dist/src/autocomplete/index.d.ts.map +1 -1
- package/dist/src/chips/ChipElement.d.ts +2 -0
- package/dist/src/chips/ChipElement.d.ts.map +1 -1
- package/dist/src/chips/InputChipSetChangeEventDetail.d.ts +13 -0
- package/dist/src/chips/InputChipSetChangeEventDetail.d.ts.map +1 -0
- package/dist/src/chips/InputChipSetElement.d.ts +10 -0
- package/dist/src/chips/InputChipSetElement.d.ts.map +1 -1
- package/dist/src/chips/index.d.ts +1 -0
- package/dist/src/chips/index.d.ts.map +1 -1
- package/dist/src/core/a11y/FocusTrapElement.d.ts +1 -1
- package/dist/src/core/a11y/list-key/ListKeyManager.d.ts.map +1 -1
- package/dist/src/core/a11y/list-key/RadioKeyManager.d.ts +1 -2
- package/dist/src/core/a11y/list-key/RadioKeyManager.d.ts.map +1 -1
- package/dist/src/core/a11y/list-key/SelectionManager.d.ts +1 -2
- package/dist/src/core/a11y/list-key/SelectionManager.d.ts.map +1 -1
- package/dist/src/core/a11y/list-key/Typeahead.d.ts.map +1 -1
- package/dist/src/core/anchoring/FloatingPanelElement.d.ts +74 -0
- package/dist/src/core/anchoring/FloatingPanelElement.d.ts.map +1 -0
- package/dist/src/core/anchoring/index.d.ts +1 -0
- package/dist/src/core/anchoring/index.d.ts.map +1 -1
- package/dist/src/core/shared/controllers/MutationController.d.ts.map +1 -1
- package/dist/src/core/shared/controllers/ResizeController.d.ts.map +1 -1
- package/dist/src/core/shared/mixins/AttachInternals.d.ts.map +1 -1
- package/dist/src/core/shared/primitives/TextHighlightElement.d.ts +9 -2
- package/dist/src/core/shared/primitives/TextHighlightElement.d.ts.map +1 -1
- package/dist/src/core/shared/primitives/TextHighlightMode.d.ts +3 -0
- package/dist/src/core/shared/primitives/TextHighlightMode.d.ts.map +1 -0
- package/dist/src/core/shared/primitives/index.d.ts +2 -1
- package/dist/src/core/shared/primitives/index.d.ts.map +1 -1
- package/dist/src/loading-indicator/LoadingIndicatorElement.d.ts.map +1 -1
- package/dist/src/menu/MenuItemElementBase.d.ts.map +1 -1
- package/dist/src/option/OptionElement.d.ts +21 -1
- package/dist/src/option/OptionElement.d.ts.map +1 -1
- package/dist/src/option/OptionPanelElement.d.ts +11 -34
- package/dist/src/option/OptionPanelElement.d.ts.map +1 -1
- package/dist/src/option/OptionPanelState.d.ts +3 -0
- package/dist/src/option/OptionPanelState.d.ts.map +1 -0
- package/dist/src/option/index.d.ts +1 -0
- package/dist/src/option/index.d.ts.map +1 -1
- package/dist/src/progress-indicator/CircularProgressIndicatorElement.d.ts.map +1 -1
- package/dist/src/progress-indicator/LinearProgressIndicatorElement.d.ts.map +1 -1
- package/dist/src/select/SelectElement.d.ts +3 -2
- package/dist/src/select/SelectElement.d.ts.map +1 -1
- package/dist/src/toc/TocElement.d.ts.map +1 -1
- package/dist/toc.js +0 -1
- package/dist/toc.js.map +1 -1
- package/dist/toc.min.js +1 -1
- package/dist/toc.min.js.map +1 -1
- package/package.json +1 -1
- package/dist/datepicker.js +0 -2346
- package/dist/datepicker.js.map +0 -1
- package/dist/datepicker.min.js +0 -102
- package/dist/datepicker.min.js.map +0 -1
- package/dist/src/core/shared/decorators/component.d.ts +0 -19
- package/dist/src/core/shared/decorators/component.d.ts.map +0 -1
- package/dist/src/core/shared/decorators/element.d.ts +0 -19
- package/dist/src/core/shared/decorators/element.d.ts.map +0 -1
- package/dist/src/core/shared/utils/getState.d.ts +0 -15
- package/dist/src/core/shared/utils/getState.d.ts.map +0 -1
- package/dist/src/datepicker/CalendarElement.d.ts +0 -203
- package/dist/src/datepicker/CalendarElement.d.ts.map +0 -1
- package/dist/src/datepicker/CalendarView.d.ts +0 -3
- package/dist/src/datepicker/CalendarView.d.ts.map +0 -1
- package/dist/src/datepicker/CalendarViewElementBase.d.ts +0 -28
- package/dist/src/datepicker/CalendarViewElementBase.d.ts.map +0 -1
- package/dist/src/datepicker/DateAdapter.d.ts +0 -4
- package/dist/src/datepicker/DateAdapter.d.ts.map +0 -1
- package/dist/src/datepicker/DatepickerElement.d.ts +0 -180
- package/dist/src/datepicker/DatepickerElement.d.ts.map +0 -1
- package/dist/src/datepicker/DatepickerToggleElement.d.ts +0 -21
- package/dist/src/datepicker/DatepickerToggleElement.d.ts.map +0 -1
- package/dist/src/datepicker/DatepickerVariant.d.ts +0 -3
- package/dist/src/datepicker/DatepickerVariant.d.ts.map +0 -1
- package/dist/src/datepicker/MonthViewElement.d.ts +0 -35
- package/dist/src/datepicker/MonthViewElement.d.ts.map +0 -1
- package/dist/src/datepicker/MultiYearViewElement.d.ts +0 -27
- package/dist/src/datepicker/MultiYearViewElement.d.ts.map +0 -1
- package/dist/src/datepicker/YearViewElement.d.ts +0 -27
- package/dist/src/datepicker/YearViewElement.d.ts.map +0 -1
- package/dist/src/datepicker/index.d.ts +0 -10
- package/dist/src/datepicker/index.d.ts.map +0 -1
- package/dist/src/datepicker/utils.d.ts +0 -26
- package/dist/src/datepicker/utils.d.ts.map +0 -1
package/dist/autocomplete.js
CHANGED
|
@@ -5,8 +5,9 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { LitElement, html, css } from 'lit';
|
|
7
7
|
import { property } from 'lit/decorators.js';
|
|
8
|
-
import { HtmlFor,
|
|
9
|
-
import { ListKeyManager } from '@m3e/web/core/a11y';
|
|
8
|
+
import { HtmlFor, MutationController, setCustomState, deleteCustomState, customElement, prefersReducedMotion, scrollIntoViewIfNeeded, forcedColorsActive, addCustomState } from '@m3e/web/core';
|
|
9
|
+
import { ListKeyManager, M3eLiveAnnouncer } from '@m3e/web/core/a11y';
|
|
10
|
+
import { M3eOptGroupElement } from '@m3e/web/option';
|
|
10
11
|
|
|
11
12
|
/******************************************************************************
|
|
12
13
|
Copyright (c) Microsoft Corporation.
|
|
@@ -47,7 +48,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
|
|
|
47
48
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
48
49
|
};
|
|
49
50
|
|
|
50
|
-
var _M3eAutocompleteElement_instances, _M3eAutocompleteElement_id, _M3eAutocompleteElement_menuId, _M3eAutocompleteElement_ignoreFocusVisible, _M3eAutocompleteElement_menu,
|
|
51
|
+
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_minMenuWidth_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_updateMenuState, _M3eAutocompleteElement_hideMenu, _M3eAutocompleteElement_activateOption, _M3eAutocompleteElement_updateSelectionState, _M3eAutocompleteElement_selectOption, _M3eAutocompleteElement_filterOption, _M3eAutocompleteElement_filterOptions, _M3eAutocompleteElement_announceResults, _M3eAutocompleteElement_autoActivate, _M3eAutocompleteElement_deactivateOption;
|
|
51
52
|
var M3eAutocompleteElement_1;
|
|
52
53
|
/**
|
|
53
54
|
* Enhances a text input with suggested options.
|
|
@@ -76,30 +77,49 @@ var M3eAutocompleteElement_1;
|
|
|
76
77
|
* @tag m3e-autocomplete
|
|
77
78
|
*
|
|
78
79
|
* @attr auto-activate - Whether the first option should be automatically activated.
|
|
80
|
+
* @attr case-sensitive - Whether filtering is case sensitive.
|
|
81
|
+
* @attr filter - Mode in which to filter options.
|
|
79
82
|
* @attr hide-selection-indicator - Whether to hide the selection indicator.
|
|
83
|
+
* @attr hide-loading - Whether to hide the menu when loading options.
|
|
84
|
+
* @attr hide-no-data - Whether to hide the menu when there are no options to show.
|
|
85
|
+
* @attr loading - Whether options are being loaded.
|
|
86
|
+
* @attr loading-label - The text announced and presented when loading options.
|
|
87
|
+
* @attr no-data-label - The text announced and presented when no options are available for the current term.
|
|
80
88
|
* @attr required - Whether the user is required to make a selection when interacting with the autocomplete.
|
|
89
|
+
* @attr results-label - The text announced when available options change for the current term.
|
|
81
90
|
*
|
|
82
91
|
* @slot - Renders the options of the autocomplete.
|
|
92
|
+
* @slot loading - Renders content when loading options.
|
|
93
|
+
* @slot no-data - Renders content when there are no options to show.
|
|
83
94
|
*
|
|
84
95
|
* @fires toggle - Emitted when the options menu opens or closes.
|
|
96
|
+
* @fires query - Emitted when the input is focused or when the user modifies its value.
|
|
85
97
|
*/
|
|
86
98
|
let M3eAutocompleteElement = M3eAutocompleteElement_1 = class M3eAutocompleteElement extends HtmlFor(LitElement) {
|
|
87
99
|
constructor() {
|
|
88
|
-
super(
|
|
100
|
+
super();
|
|
89
101
|
_M3eAutocompleteElement_instances.add(this);
|
|
90
102
|
/** @private */
|
|
91
103
|
_M3eAutocompleteElement_id.set(this, `m3e-autocomplete-${M3eAutocompleteElement_1.__nextId}`);
|
|
92
104
|
/** @private */
|
|
93
105
|
_M3eAutocompleteElement_menuId.set(this, `${__classPrivateFieldGet(this, _M3eAutocompleteElement_id, "f")}-menu`);
|
|
94
106
|
/** @private */
|
|
107
|
+
this._options = new Array();
|
|
108
|
+
/** @private */
|
|
109
|
+
_M3eAutocompleteElement_clone.set(this, void 0);
|
|
110
|
+
/** @private */
|
|
95
111
|
_M3eAutocompleteElement_ignoreFocusVisible.set(this, false);
|
|
96
112
|
/** @private */
|
|
97
113
|
_M3eAutocompleteElement_menu.set(this, void 0);
|
|
98
114
|
/** @private */
|
|
99
|
-
_M3eAutocompleteElement_textHighlight.set(this, void 0);
|
|
100
|
-
/** @private */
|
|
101
115
|
_M3eAutocompleteElement_ignoreHideMenuOnBlur.set(this, false);
|
|
102
116
|
/** @private */
|
|
117
|
+
_M3eAutocompleteElement_inputChanged.set(this, false);
|
|
118
|
+
/** @private */
|
|
119
|
+
_M3eAutocompleteElement_hasFocus.set(this, false);
|
|
120
|
+
/** @private */
|
|
121
|
+
_M3eAutocompleteElement_mutationAbortController.set(this, void 0);
|
|
122
|
+
/** @private */
|
|
103
123
|
_M3eAutocompleteElement_clickHandler.set(this, () => __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_handleClick).call(this));
|
|
104
124
|
/** @private */
|
|
105
125
|
_M3eAutocompleteElement_formFieldPointerDownHandler.set(this, () => __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_handleFormFieldPointerDown).call(this));
|
|
@@ -118,7 +138,7 @@ let M3eAutocompleteElement = M3eAutocompleteElement_1 = class M3eAutocompleteEle
|
|
|
118
138
|
/** @private */
|
|
119
139
|
_M3eAutocompleteElement_menuPointerDownHandler.set(this, e => __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_handleMenuPointerDown).call(this, e));
|
|
120
140
|
/** @private */
|
|
121
|
-
this._listKeyManager = new ListKeyManager().withWrap().withHomeAndEnd().withPageUpAndDown().withVerticalOrientation().withSkipPredicate(item => item.disabled || item.
|
|
141
|
+
this._listKeyManager = new ListKeyManager().withWrap().withHomeAndEnd().withPageUpAndDown().withVerticalOrientation().withSkipPredicate(item => item.disabled || item.hidden).onActiveItemChange(() => {
|
|
122
142
|
if (this._listKeyManager.activeItem) {
|
|
123
143
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_activateOption).call(this, this._listKeyManager.activeItem);
|
|
124
144
|
}
|
|
@@ -138,10 +158,57 @@ let M3eAutocompleteElement = M3eAutocompleteElement_1 = class M3eAutocompleteEle
|
|
|
138
158
|
* @default false
|
|
139
159
|
*/
|
|
140
160
|
this.autoActivate = false;
|
|
161
|
+
/**
|
|
162
|
+
* Whether filtering is case sensitive.
|
|
163
|
+
* @default false
|
|
164
|
+
*/
|
|
165
|
+
this.caseSensitive = false;
|
|
166
|
+
/**
|
|
167
|
+
* Mode in which to filter options.
|
|
168
|
+
* @default "contains"
|
|
169
|
+
*/
|
|
170
|
+
this.filter = "contains";
|
|
171
|
+
/**
|
|
172
|
+
* Whether options are being loaded.
|
|
173
|
+
* @default false
|
|
174
|
+
*/
|
|
175
|
+
this.loading = false;
|
|
176
|
+
/**
|
|
177
|
+
* Whether to hide the menu when there are no options to show.
|
|
178
|
+
* @default false
|
|
179
|
+
*/
|
|
180
|
+
this.hideNoData = false;
|
|
181
|
+
/**
|
|
182
|
+
* Whether to hide the menu when loading options.
|
|
183
|
+
* @default false
|
|
184
|
+
*/
|
|
185
|
+
this.hideLoading = false;
|
|
186
|
+
/**
|
|
187
|
+
* The text announced and presented when loading options.
|
|
188
|
+
* @default "Loading..."
|
|
189
|
+
*/
|
|
190
|
+
this.loadingLabel = "Loading...";
|
|
191
|
+
/**
|
|
192
|
+
* The text announced and presented when no options are available for the current term.
|
|
193
|
+
* @default "No options"
|
|
194
|
+
*/
|
|
195
|
+
this.noDataLabel = "No options";
|
|
196
|
+
/**
|
|
197
|
+
* The text announced when available options change for the current term.
|
|
198
|
+
* @default (count) => `${count} options`
|
|
199
|
+
*/
|
|
200
|
+
this.resultsLabel = count => `${count} options`;
|
|
201
|
+
new MutationController(this, {
|
|
202
|
+
config: {
|
|
203
|
+
childList: true,
|
|
204
|
+
subtree: true
|
|
205
|
+
},
|
|
206
|
+
callback: () => __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_handleMutation).call(this)
|
|
207
|
+
});
|
|
141
208
|
}
|
|
142
209
|
/** The options that can be selected. */
|
|
143
210
|
get options() {
|
|
144
|
-
return this.
|
|
211
|
+
return this._options ?? [];
|
|
145
212
|
}
|
|
146
213
|
/** @inheritdoc */
|
|
147
214
|
attach(control) {
|
|
@@ -182,9 +249,6 @@ let M3eAutocompleteElement = M3eAutocompleteElement_1 = class M3eAutocompleteEle
|
|
|
182
249
|
clear(restoreFocus = false) {
|
|
183
250
|
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get)) return;
|
|
184
251
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).value = "";
|
|
185
|
-
if (__classPrivateFieldGet(this, _M3eAutocompleteElement_textHighlight, "f")) {
|
|
186
|
-
__classPrivateFieldGet(this, _M3eAutocompleteElement_textHighlight, "f").term = "";
|
|
187
|
-
}
|
|
188
252
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_filterOptions).call(this);
|
|
189
253
|
if (restoreFocus) {
|
|
190
254
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).focus();
|
|
@@ -193,16 +257,49 @@ let M3eAutocompleteElement = M3eAutocompleteElement_1 = class M3eAutocompleteEle
|
|
|
193
257
|
}
|
|
194
258
|
}
|
|
195
259
|
/** @inheritdoc */
|
|
260
|
+
connectedCallback() {
|
|
261
|
+
super.connectedCallback();
|
|
262
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_handleMutation).call(this);
|
|
263
|
+
}
|
|
264
|
+
/** @inheritdoc */
|
|
265
|
+
update(changedProperties) {
|
|
266
|
+
super.update(changedProperties);
|
|
267
|
+
if (changedProperties.has("hideNoData") && this.hideNoData && __classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")) {
|
|
268
|
+
setCustomState(__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f"), "-no-data", false);
|
|
269
|
+
}
|
|
270
|
+
if (changedProperties.has("loading")) {
|
|
271
|
+
if (this.loading) {
|
|
272
|
+
if (__classPrivateFieldGet(this, _M3eAutocompleteElement_hasFocus, "f")) {
|
|
273
|
+
if (this.loadingLabel) {
|
|
274
|
+
M3eLiveAnnouncer.announce(this.loadingLabel, "polite");
|
|
275
|
+
}
|
|
276
|
+
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f") && __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_shouldShowMenu_get)) {
|
|
277
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_showMenu).call(this);
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
} else if (__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f") && !__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_shouldShowMenu_get)) {
|
|
281
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_hideMenu).call(this);
|
|
282
|
+
} else if (__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")) {
|
|
283
|
+
deleteCustomState(__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f"), "-loading");
|
|
284
|
+
} else if (__classPrivateFieldGet(this, _M3eAutocompleteElement_hasFocus, "f")) {
|
|
285
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_showMenu).call(this);
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
/** @inheritdoc */
|
|
196
290
|
render() {
|
|
197
|
-
return html`<div class="options"
|
|
291
|
+
return html`<div class="options" aria-hidden="true"><slot></slot></div>`;
|
|
198
292
|
}
|
|
199
293
|
};
|
|
200
294
|
_M3eAutocompleteElement_id = new WeakMap();
|
|
201
295
|
_M3eAutocompleteElement_menuId = new WeakMap();
|
|
296
|
+
_M3eAutocompleteElement_clone = new WeakMap();
|
|
202
297
|
_M3eAutocompleteElement_ignoreFocusVisible = new WeakMap();
|
|
203
298
|
_M3eAutocompleteElement_menu = new WeakMap();
|
|
204
|
-
_M3eAutocompleteElement_textHighlight = new WeakMap();
|
|
205
299
|
_M3eAutocompleteElement_ignoreHideMenuOnBlur = new WeakMap();
|
|
300
|
+
_M3eAutocompleteElement_inputChanged = new WeakMap();
|
|
301
|
+
_M3eAutocompleteElement_hasFocus = new WeakMap();
|
|
302
|
+
_M3eAutocompleteElement_mutationAbortController = new WeakMap();
|
|
206
303
|
_M3eAutocompleteElement_clickHandler = new WeakMap();
|
|
207
304
|
_M3eAutocompleteElement_formFieldPointerDownHandler = new WeakMap();
|
|
208
305
|
_M3eAutocompleteElement_focusHandler = new WeakMap();
|
|
@@ -213,11 +310,20 @@ _M3eAutocompleteElement_changeHandler = new WeakMap();
|
|
|
213
310
|
_M3eAutocompleteElement_menuToggleHandler = new WeakMap();
|
|
214
311
|
_M3eAutocompleteElement_menuPointerDownHandler = new WeakMap();
|
|
215
312
|
_M3eAutocompleteElement_instances = new WeakSet();
|
|
313
|
+
_M3eAutocompleteElement_options_get = function _M3eAutocompleteElement_options_get() {
|
|
314
|
+
return this._listKeyManager?.items ?? [];
|
|
315
|
+
};
|
|
216
316
|
_M3eAutocompleteElement_input_get = function _M3eAutocompleteElement_input_get() {
|
|
217
317
|
return this.control ? this.control : null;
|
|
218
318
|
};
|
|
219
|
-
|
|
220
|
-
return this
|
|
319
|
+
_M3eAutocompleteElement_hasNoDataSlot_get = function _M3eAutocompleteElement_hasNoDataSlot_get() {
|
|
320
|
+
return (__classPrivateFieldGet(this, _M3eAutocompleteElement_clone, "f")?.querySelector("[slot='no-data']") ?? null) !== null;
|
|
321
|
+
};
|
|
322
|
+
_M3eAutocompleteElement_hasLoadingSlot_get = function _M3eAutocompleteElement_hasLoadingSlot_get() {
|
|
323
|
+
return (__classPrivateFieldGet(this, _M3eAutocompleteElement_clone, "f")?.querySelector("[slot='loading']") ?? null) !== null;
|
|
324
|
+
};
|
|
325
|
+
_M3eAutocompleteElement_shouldShowMenu_get = function _M3eAutocompleteElement_shouldShowMenu_get() {
|
|
326
|
+
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;
|
|
221
327
|
};
|
|
222
328
|
_M3eAutocompleteElement_minMenuWidth_get = function _M3eAutocompleteElement_minMenuWidth_get() {
|
|
223
329
|
const formField = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_formField_get);
|
|
@@ -226,15 +332,43 @@ _M3eAutocompleteElement_minMenuWidth_get = function _M3eAutocompleteElement_minM
|
|
|
226
332
|
_M3eAutocompleteElement_formField_get = function _M3eAutocompleteElement_formField_get() {
|
|
227
333
|
return this.control?.closest("m3e-form-field") ?? null;
|
|
228
334
|
};
|
|
229
|
-
|
|
230
|
-
|
|
335
|
+
_M3eAutocompleteElement_handleMutation = /** @private */
|
|
336
|
+
async function _M3eAutocompleteElement_handleMutation() {
|
|
337
|
+
if (__classPrivateFieldGet(this, _M3eAutocompleteElement_mutationAbortController, "f")) {
|
|
338
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_mutationAbortController, "f").abort();
|
|
339
|
+
}
|
|
340
|
+
const mutationAbortController = new AbortController();
|
|
341
|
+
__classPrivateFieldSet(this, _M3eAutocompleteElement_mutationAbortController, mutationAbortController, "f");
|
|
342
|
+
const options = [...this.querySelectorAll("m3e-option")];
|
|
343
|
+
for (const option of options) {
|
|
344
|
+
if (mutationAbortController.signal.aborted) {
|
|
345
|
+
break;
|
|
346
|
+
}
|
|
347
|
+
if (option.isUpdatePending) {
|
|
348
|
+
await option.updateComplete;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
if (mutationAbortController.signal.aborted) {
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
this._options = options;
|
|
355
|
+
__classPrivateFieldSet(this, _M3eAutocompleteElement_clone, this.cloneNode(true), "f");
|
|
231
356
|
const {
|
|
232
357
|
added
|
|
233
|
-
} = this._listKeyManager.setItems([...this.querySelectorAll("m3e-option")]);
|
|
358
|
+
} = this._listKeyManager.setItems([...__classPrivateFieldGet(this, _M3eAutocompleteElement_clone, "f").querySelectorAll("m3e-option")]);
|
|
234
359
|
added.forEach(x => {
|
|
235
360
|
x.id = x.id || `${__classPrivateFieldGet(this, _M3eAutocompleteElement_id, "f")}-option-${this._listKeyManager.items.indexOf(x)}`;
|
|
236
361
|
setCustomState(x, "-hide-selection-indicator", this.hideSelectionIndicator);
|
|
237
362
|
});
|
|
363
|
+
if (__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")) {
|
|
364
|
+
const count = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_filterOptions).call(this);
|
|
365
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f").replaceChildren(...__classPrivateFieldGet(this, _M3eAutocompleteElement_clone, "f").childNodes);
|
|
366
|
+
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_shouldShowMenu_get)) {
|
|
367
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_hideMenu).call(this);
|
|
368
|
+
} else {
|
|
369
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_updateMenuState).call(this, __classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f"), count);
|
|
370
|
+
}
|
|
371
|
+
}
|
|
238
372
|
};
|
|
239
373
|
_M3eAutocompleteElement_handleClick = function _M3eAutocompleteElement_handleClick() {
|
|
240
374
|
__classPrivateFieldSet(this, _M3eAutocompleteElement_ignoreFocusVisible, true, "f");
|
|
@@ -244,10 +378,21 @@ _M3eAutocompleteElement_handleFormFieldPointerDown = function _M3eAutocompleteEl
|
|
|
244
378
|
__classPrivateFieldSet(this, _M3eAutocompleteElement_ignoreHideMenuOnBlur, true, "f");
|
|
245
379
|
};
|
|
246
380
|
_M3eAutocompleteElement_handleFocus = function _M3eAutocompleteElement_handleFocus() {
|
|
381
|
+
__classPrivateFieldSet(this, _M3eAutocompleteElement_hasFocus, true, "f");
|
|
247
382
|
__classPrivateFieldSet(this, _M3eAutocompleteElement_ignoreFocusVisible, true, "f");
|
|
383
|
+
if (this.options.length == 0 && !this.control.readOnly) {
|
|
384
|
+
this.dispatchEvent(new CustomEvent("query", {
|
|
385
|
+
detail: {
|
|
386
|
+
term: __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get)?.value ?? ""
|
|
387
|
+
},
|
|
388
|
+
bubbles: true,
|
|
389
|
+
composed: true
|
|
390
|
+
}));
|
|
391
|
+
}
|
|
248
392
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_showMenu).call(this);
|
|
249
393
|
};
|
|
250
394
|
_M3eAutocompleteElement_handleBlur = function _M3eAutocompleteElement_handleBlur() {
|
|
395
|
+
__classPrivateFieldSet(this, _M3eAutocompleteElement_hasFocus, false, "f");
|
|
251
396
|
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_ignoreHideMenuOnBlur, "f")) {
|
|
252
397
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_hideMenu).call(this);
|
|
253
398
|
}
|
|
@@ -255,19 +400,30 @@ _M3eAutocompleteElement_handleBlur = function _M3eAutocompleteElement_handleBlur
|
|
|
255
400
|
};
|
|
256
401
|
_M3eAutocompleteElement_handleInput = function _M3eAutocompleteElement_handleInput(e) {
|
|
257
402
|
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get) || e.defaultPrevented) return;
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
}
|
|
265
|
-
|
|
403
|
+
this.dispatchEvent(new CustomEvent("query", {
|
|
404
|
+
detail: {
|
|
405
|
+
term: __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).value
|
|
406
|
+
},
|
|
407
|
+
bubbles: true,
|
|
408
|
+
composed: true
|
|
409
|
+
}));
|
|
410
|
+
__classPrivateFieldSet(this, _M3eAutocompleteElement_inputChanged, true, "f");
|
|
411
|
+
try {
|
|
412
|
+
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")) {
|
|
413
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_showMenu).call(this);
|
|
414
|
+
} else {
|
|
415
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_filterOptions).call(this);
|
|
416
|
+
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_shouldShowMenu_get)) {
|
|
417
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_hideMenu).call(this);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
} finally {
|
|
421
|
+
__classPrivateFieldSet(this, _M3eAutocompleteElement_inputChanged, false, "f");
|
|
422
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_formField_get)?.notifyControlStateChange(true);
|
|
266
423
|
}
|
|
267
|
-
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_formField_get)?.notifyControlStateChange(true);
|
|
268
424
|
};
|
|
269
425
|
_M3eAutocompleteElement_handleChange = function _M3eAutocompleteElement_handleChange() {
|
|
270
|
-
if (__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get) && this.required && !this.
|
|
426
|
+
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)) {
|
|
271
427
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).value = "";
|
|
272
428
|
}
|
|
273
429
|
};
|
|
@@ -342,7 +498,7 @@ _M3eAutocompleteElement_handleMenuPointerDown = function _M3eAutocompleteElement
|
|
|
342
498
|
_M3eAutocompleteElement_handleMenuToggle = function _M3eAutocompleteElement_handleMenuToggle(e) {
|
|
343
499
|
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")) return;
|
|
344
500
|
if (e.newState !== "closed") {
|
|
345
|
-
const option = this.
|
|
501
|
+
const option = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_options_get).find(x => x.selected && !x.disabled);
|
|
346
502
|
if (option) {
|
|
347
503
|
this._listKeyManager.setActiveItem(option);
|
|
348
504
|
scrollIntoViewIfNeeded(option, __classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f"));
|
|
@@ -364,14 +520,12 @@ _M3eAutocompleteElement_handleMenuToggle = function _M3eAutocompleteElement_hand
|
|
|
364
520
|
}
|
|
365
521
|
};
|
|
366
522
|
_M3eAutocompleteElement_destroyMenu = function _M3eAutocompleteElement_destroyMenu(e) {
|
|
367
|
-
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")
|
|
368
|
-
|
|
369
|
-
__classPrivateFieldGet(this, _M3eAutocompleteElement_textHighlight, "f").remove();
|
|
523
|
+
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")) return;
|
|
524
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_clone, "f")?.replaceChildren(...__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f").childNodes);
|
|
370
525
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f").remove();
|
|
371
526
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f").removeEventListener("toggle", __classPrivateFieldGet(this, _M3eAutocompleteElement_menuToggleHandler, "f"));
|
|
372
527
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f").removeEventListener("pointerdown", __classPrivateFieldGet(this, _M3eAutocompleteElement_menuPointerDownHandler, "f"));
|
|
373
528
|
__classPrivateFieldSet(this, _M3eAutocompleteElement_menu, undefined, "f");
|
|
374
|
-
__classPrivateFieldSet(this, _M3eAutocompleteElement_textHighlight, undefined, "f");
|
|
375
529
|
if (__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get)) {
|
|
376
530
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).ariaExpanded = "false";
|
|
377
531
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).removeAttribute("aria-controls");
|
|
@@ -385,20 +539,32 @@ _M3eAutocompleteElement_destroyMenu = function _M3eAutocompleteElement_destroyMe
|
|
|
385
539
|
}));
|
|
386
540
|
};
|
|
387
541
|
_M3eAutocompleteElement_showMenu = function _M3eAutocompleteElement_showMenu() {
|
|
388
|
-
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
|
|
389
|
-
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_filterOptions).call(this);
|
|
542
|
+
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;
|
|
543
|
+
const count = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_filterOptions).call(this);
|
|
544
|
+
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_shouldShowMenu_get)) return;
|
|
390
545
|
__classPrivateFieldSet(this, _M3eAutocompleteElement_menu, document.createElement("m3e-option-panel"), "f");
|
|
391
546
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f").id = __classPrivateFieldGet(this, _M3eAutocompleteElement_menuId, "f");
|
|
392
547
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f").style.overflowX = "hidden";
|
|
393
548
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f").style.minWidth = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_minMenuWidth_get);
|
|
394
549
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f").addEventListener("toggle", __classPrivateFieldGet(this, _M3eAutocompleteElement_menuToggleHandler, "f"));
|
|
395
550
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f").addEventListener("pointerdown", __classPrivateFieldGet(this, _M3eAutocompleteElement_menuPointerDownHandler, "f"));
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
551
|
+
if (__classPrivateFieldGet(this, _M3eAutocompleteElement_clone, "f")) {
|
|
552
|
+
const children = [...__classPrivateFieldGet(this, _M3eAutocompleteElement_clone, "f").childNodes];
|
|
553
|
+
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_hasNoDataSlot_get) && this.noDataLabel) {
|
|
554
|
+
const noDataSpan = document.createElement("span");
|
|
555
|
+
noDataSpan.slot = "no-data";
|
|
556
|
+
noDataSpan.textContent = this.noDataLabel;
|
|
557
|
+
children.push(noDataSpan);
|
|
558
|
+
}
|
|
559
|
+
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_hasLoadingSlot_get) && this.loadingLabel) {
|
|
560
|
+
const loadingSpan = document.createElement("span");
|
|
561
|
+
loadingSpan.slot = "loading";
|
|
562
|
+
loadingSpan.textContent = this.loadingLabel;
|
|
563
|
+
children.push(loadingSpan);
|
|
564
|
+
}
|
|
565
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f").replaceChildren(...children);
|
|
401
566
|
}
|
|
567
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_updateMenuState).call(this, __classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f"), count);
|
|
402
568
|
(__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_formField_get) ?? __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get)).insertAdjacentElement("afterend", __classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f"));
|
|
403
569
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).setAttribute("aria-controls", __classPrivateFieldGet(this, _M3eAutocompleteElement_menuId, "f"));
|
|
404
570
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).setAttribute("aria-owns", __classPrivateFieldGet(this, _M3eAutocompleteElement_menuId, "f"));
|
|
@@ -409,6 +575,10 @@ _M3eAutocompleteElement_showMenu = function _M3eAutocompleteElement_showMenu() {
|
|
|
409
575
|
const input = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get);
|
|
410
576
|
setTimeout(() => __classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")?.show(input, __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_formField_get)?.menuAnchor));
|
|
411
577
|
};
|
|
578
|
+
_M3eAutocompleteElement_updateMenuState = function _M3eAutocompleteElement_updateMenuState(menu, count) {
|
|
579
|
+
setCustomState(menu, "-loading", this.loading);
|
|
580
|
+
setCustomState(menu, "-no-data", count == 0);
|
|
581
|
+
};
|
|
412
582
|
_M3eAutocompleteElement_hideMenu = function _M3eAutocompleteElement_hideMenu() {
|
|
413
583
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")?.hide();
|
|
414
584
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get)?.removeAttribute("aria-activedescendant");
|
|
@@ -422,7 +592,7 @@ _M3eAutocompleteElement_activateOption = function _M3eAutocompleteElement_activa
|
|
|
422
592
|
behavior: "instant"
|
|
423
593
|
});
|
|
424
594
|
const focusVisible = forceFocusVisible || !__classPrivateFieldGet(this, _M3eAutocompleteElement_ignoreFocusVisible, "f") && (__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).matches(":focus-visible") || forcedColorsActive());
|
|
425
|
-
this.
|
|
595
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_options_get).forEach(x => {
|
|
426
596
|
const active = x === option && focusVisible;
|
|
427
597
|
if (active) {
|
|
428
598
|
x.focusRing?.show();
|
|
@@ -434,56 +604,124 @@ _M3eAutocompleteElement_activateOption = function _M3eAutocompleteElement_activa
|
|
|
434
604
|
});
|
|
435
605
|
}
|
|
436
606
|
};
|
|
437
|
-
|
|
607
|
+
_M3eAutocompleteElement_updateSelectionState = /** @private */
|
|
608
|
+
async function _M3eAutocompleteElement_updateSelectionState(clone) {
|
|
609
|
+
const option = this._options[this._listKeyManager.items.indexOf(clone)];
|
|
610
|
+
if (option) {
|
|
611
|
+
option.selected = clone.selected;
|
|
612
|
+
if (option.isUpdatePending) {
|
|
613
|
+
await option.updateComplete;
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
};
|
|
617
|
+
_M3eAutocompleteElement_selectOption = /** @private */
|
|
618
|
+
async function _M3eAutocompleteElement_selectOption(option) {
|
|
438
619
|
if (option.selected) return;
|
|
439
620
|
option.selected = true;
|
|
440
|
-
|
|
621
|
+
await __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_updateSelectionState).call(this, option);
|
|
622
|
+
if (option.isUpdatePending) {
|
|
623
|
+
await option.updateComplete;
|
|
624
|
+
}
|
|
441
625
|
this.requestUpdate();
|
|
626
|
+
if (this.isUpdatePending) {
|
|
627
|
+
await this.updateComplete;
|
|
628
|
+
}
|
|
442
629
|
if (__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get)) {
|
|
443
630
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).value = option.value;
|
|
444
631
|
}
|
|
445
632
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_formField_get)?.notifyControlStateChange(true);
|
|
446
633
|
};
|
|
634
|
+
_M3eAutocompleteElement_filterOption = function _M3eAutocompleteElement_filterOption(clone, option, term, exactTerm) {
|
|
635
|
+
const value = this.caseSensitive ? option.value : option.value.toLowerCase();
|
|
636
|
+
switch (this.filter) {
|
|
637
|
+
case "starts-with":
|
|
638
|
+
clone.term = exactTerm;
|
|
639
|
+
clone.highlightMode = this.filter;
|
|
640
|
+
return value.startsWith(term);
|
|
641
|
+
case "ends-with":
|
|
642
|
+
clone.term = exactTerm;
|
|
643
|
+
clone.highlightMode = this.filter;
|
|
644
|
+
return value.endsWith(term);
|
|
645
|
+
case "contains":
|
|
646
|
+
clone.term = exactTerm;
|
|
647
|
+
clone.highlightMode = this.filter;
|
|
648
|
+
return value.includes(term);
|
|
649
|
+
case "none":
|
|
650
|
+
clone.disableHighlight = true;
|
|
651
|
+
return true;
|
|
652
|
+
default:
|
|
653
|
+
clone.disableHighlight = true;
|
|
654
|
+
return this.filter(option, exactTerm);
|
|
655
|
+
}
|
|
656
|
+
};
|
|
447
657
|
_M3eAutocompleteElement_filterOptions = function _M3eAutocompleteElement_filterOptions() {
|
|
448
|
-
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get)) return;
|
|
449
|
-
const
|
|
658
|
+
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get)) return 0;
|
|
659
|
+
const oldCount = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_options_get).filter(x => !x.hidden).length;
|
|
660
|
+
const shouldAnnounce = !this.loading && __classPrivateFieldGet(this, _M3eAutocompleteElement_inputChanged, "f");
|
|
661
|
+
__classPrivateFieldSet(this, _M3eAutocompleteElement_inputChanged, false, "f");
|
|
662
|
+
const exactTerm = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_input_get).value;
|
|
663
|
+
const term = this.caseSensitive ? exactTerm : exactTerm.toLocaleLowerCase();
|
|
664
|
+
let newCount = 0;
|
|
450
665
|
let first = false;
|
|
451
666
|
let last;
|
|
452
|
-
for (
|
|
453
|
-
const
|
|
454
|
-
const
|
|
455
|
-
|
|
456
|
-
if (hidden) {
|
|
457
|
-
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_deactivateOption).call(this,
|
|
458
|
-
deleteCustomState(
|
|
459
|
-
deleteCustomState(
|
|
460
|
-
} else if (!first) {
|
|
461
|
-
addCustomState(option, "-first");
|
|
462
|
-
first = true;
|
|
463
|
-
addCustomState(option, "-last");
|
|
464
|
-
last = option;
|
|
667
|
+
for (let i = 0; i < __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_options_get).length; i++) {
|
|
668
|
+
const clone = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_options_get)[i];
|
|
669
|
+
const option = this._options[i];
|
|
670
|
+
clone.hidden = !__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_filterOption).call(this, clone, option, term, exactTerm);
|
|
671
|
+
if (clone.hidden) {
|
|
672
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_deactivateOption).call(this, clone);
|
|
673
|
+
deleteCustomState(clone, "-first");
|
|
674
|
+
deleteCustomState(clone, "-last");
|
|
465
675
|
} else {
|
|
466
|
-
|
|
467
|
-
if (
|
|
468
|
-
|
|
676
|
+
newCount++;
|
|
677
|
+
if (!first && !(clone.parentElement instanceof M3eOptGroupElement)) {
|
|
678
|
+
addCustomState(clone, "-first");
|
|
679
|
+
first = true;
|
|
680
|
+
addCustomState(clone, "-last");
|
|
681
|
+
last = clone;
|
|
682
|
+
} else {
|
|
683
|
+
deleteCustomState(clone, "-first");
|
|
684
|
+
if (last) {
|
|
685
|
+
deleteCustomState(last, "-last");
|
|
686
|
+
}
|
|
687
|
+
addCustomState(clone, "-last");
|
|
688
|
+
last = clone;
|
|
469
689
|
}
|
|
470
|
-
addCustomState(option, "-last");
|
|
471
|
-
last = option;
|
|
472
690
|
}
|
|
473
|
-
if (
|
|
474
|
-
|
|
691
|
+
if (clone.selected && option.value !== exactTerm) {
|
|
692
|
+
clone.selected = false;
|
|
693
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_updateSelectionState).call(this, clone);
|
|
475
694
|
}
|
|
476
695
|
}
|
|
477
|
-
|
|
696
|
+
if (__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")) {
|
|
697
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_updateMenuState).call(this, __classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f"), newCount);
|
|
698
|
+
}
|
|
699
|
+
const groups = __classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")?.querySelectorAll("m3e-optgroup") ?? __classPrivateFieldGet(this, _M3eAutocompleteElement_clone, "f")?.querySelectorAll("m3e-optgroup") ?? [];
|
|
478
700
|
for (const group of groups) {
|
|
479
|
-
|
|
480
|
-
|
|
701
|
+
group.hidden = [...group.querySelectorAll("m3e-option")].every(x => x.hidden);
|
|
702
|
+
}
|
|
703
|
+
if (shouldAnnounce) {
|
|
704
|
+
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_announceResults).call(this, oldCount, newCount);
|
|
481
705
|
}
|
|
482
706
|
__classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "m", _M3eAutocompleteElement_autoActivate).call(this);
|
|
707
|
+
return newCount;
|
|
708
|
+
};
|
|
709
|
+
_M3eAutocompleteElement_announceResults = function _M3eAutocompleteElement_announceResults(oldCount, newCount) {
|
|
710
|
+
if (!__classPrivateFieldGet(this, _M3eAutocompleteElement_hasFocus, "f")) return;
|
|
711
|
+
if (newCount == 0) {
|
|
712
|
+
if (oldCount > 0 && this.noDataLabel) {
|
|
713
|
+
M3eLiveAnnouncer.announce(this.noDataLabel, "polite");
|
|
714
|
+
}
|
|
715
|
+
} else if (oldCount != newCount) {
|
|
716
|
+
const message = this.resultsLabel instanceof Function ? this.resultsLabel(newCount) : this.resultsLabel;
|
|
717
|
+
if (message) {
|
|
718
|
+
M3eLiveAnnouncer.announce(message, "polite");
|
|
719
|
+
}
|
|
720
|
+
}
|
|
483
721
|
};
|
|
484
722
|
_M3eAutocompleteElement_autoActivate = function _M3eAutocompleteElement_autoActivate() {
|
|
485
723
|
if (this.autoActivate && (!this._listKeyManager.activeItem || !this._listKeyManager.activeItem.selected)) {
|
|
486
|
-
const option = this.
|
|
724
|
+
const option = __classPrivateFieldGet(this, _M3eAutocompleteElement_instances, "a", _M3eAutocompleteElement_options_get).find(x => !x.disabled && !x.hidden);
|
|
487
725
|
if (option) {
|
|
488
726
|
this._listKeyManager.setActiveItem(option);
|
|
489
727
|
if (__classPrivateFieldGet(this, _M3eAutocompleteElement_menu, "f")) {
|
|
@@ -519,6 +757,41 @@ __decorate([property({
|
|
|
519
757
|
attribute: "auto-activate",
|
|
520
758
|
type: Boolean
|
|
521
759
|
})], M3eAutocompleteElement.prototype, "autoActivate", void 0);
|
|
760
|
+
__decorate([property({
|
|
761
|
+
attribute: "case-sensitive",
|
|
762
|
+
type: Boolean
|
|
763
|
+
})], M3eAutocompleteElement.prototype, "caseSensitive", void 0);
|
|
764
|
+
__decorate([property({
|
|
765
|
+
converter: {
|
|
766
|
+
fromAttribute(value) {
|
|
767
|
+
if (value === null) return "contains";
|
|
768
|
+
if (value === "starts-with" || value === "ends-with" || value === "contains" || value === "none") {
|
|
769
|
+
return value;
|
|
770
|
+
}
|
|
771
|
+
return "contains";
|
|
772
|
+
}
|
|
773
|
+
}
|
|
774
|
+
})], M3eAutocompleteElement.prototype, "filter", void 0);
|
|
775
|
+
__decorate([property({
|
|
776
|
+
type: Boolean
|
|
777
|
+
})], M3eAutocompleteElement.prototype, "loading", void 0);
|
|
778
|
+
__decorate([property({
|
|
779
|
+
attribute: "hide-no-data",
|
|
780
|
+
type: Boolean
|
|
781
|
+
})], M3eAutocompleteElement.prototype, "hideNoData", void 0);
|
|
782
|
+
__decorate([property({
|
|
783
|
+
attribute: "hide-loading",
|
|
784
|
+
type: Boolean
|
|
785
|
+
})], M3eAutocompleteElement.prototype, "hideLoading", void 0);
|
|
786
|
+
__decorate([property({
|
|
787
|
+
attribute: "loading-label"
|
|
788
|
+
})], M3eAutocompleteElement.prototype, "loadingLabel", void 0);
|
|
789
|
+
__decorate([property({
|
|
790
|
+
attribute: "no-data-label"
|
|
791
|
+
})], M3eAutocompleteElement.prototype, "noDataLabel", void 0);
|
|
792
|
+
__decorate([property({
|
|
793
|
+
attribute: "results-label"
|
|
794
|
+
})], M3eAutocompleteElement.prototype, "resultsLabel", void 0);
|
|
522
795
|
M3eAutocompleteElement = M3eAutocompleteElement_1 = __decorate([customElement("m3e-autocomplete")], M3eAutocompleteElement);
|
|
523
796
|
|
|
524
797
|
export { M3eAutocompleteElement };
|