@oscarpalmer/oui 0.39.0 → 0.41.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/README.md +1 -1
- package/dist/css/color-picker.css +80 -69
- package/dist/css/listbox.css +169 -0
- package/dist/js/color-picker/color-picker.constants.d.mts +2 -0
- package/dist/js/color-picker/{constants.color-picker.mjs → color-picker.constants.mjs} +7 -4
- package/dist/js/color-picker/{dom.color-picker.d.mts → color-picker.dom.d.mts} +2 -2
- package/dist/js/color-picker/{dom.color-picker.mjs → color-picker.dom.mjs} +33 -16
- package/dist/js/color-picker/{event.color-picker.d.mts → color-picker.event.d.mts} +3 -3
- package/dist/js/color-picker/color-picker.event.mjs +233 -0
- package/dist/js/color-picker/{form.color-picker.d.mts → color-picker.form.d.mts} +2 -2
- package/dist/js/color-picker/{form.color-picker.mjs → color-picker.form.mjs} +9 -8
- package/dist/js/color-picker/color-picker.misc.d.mts +2 -0
- package/dist/js/color-picker/color-picker.misc.mjs +104 -0
- package/dist/js/color-picker/color-picker.model.d.mts +2 -0
- package/dist/js/color-picker/{models.color-picker.mjs → color-picker.model.mjs} +1 -1
- package/dist/js/color-picker/{output.color-picker.d.mts → color-picker.output.d.mts} +2 -2
- package/dist/js/color-picker/{output.color-picker.mjs → color-picker.output.mjs} +19 -18
- package/dist/js/color-picker/color-picker.state.d.mts +8 -0
- package/dist/js/color-picker/color-picker.state.mjs +168 -0
- package/dist/js/color-picker/index.d.mts +172 -2
- package/dist/js/color-picker/index.mjs +66 -59
- package/dist/js/color-picker.constants-BZgXQr5o.d.mts +177 -0
- package/dist/js/color-picker.misc-BIS3R6jk.d.mts +31 -0
- package/dist/js/combobox/combobox.constants.d.mts +2 -0
- package/dist/js/combobox/{constants.combobox.mjs → combobox.constants.mjs} +21 -21
- package/dist/js/combobox/combobox.dom.d.mts +25 -0
- package/dist/js/combobox/{dom.combobox.mjs → combobox.dom.mjs} +51 -49
- package/dist/js/combobox/{event.combobox.d.mts → combobox.event.d.mts} +9 -9
- package/dist/js/combobox/{event.combobox.mjs → combobox.event.mjs} +1 -1
- package/dist/js/combobox/combobox.misc.d.mts +2 -0
- package/dist/js/combobox/combobox.misc.mjs +2 -0
- package/dist/js/combobox/combobox.model.d.mts +2 -0
- package/dist/js/combobox/combobox.state.d.mts +9 -0
- package/dist/js/combobox/combobox.state.mjs +2 -0
- package/dist/js/combobox/index.d.mts +152 -2
- package/dist/js/combobox/index.mjs +54 -55
- package/dist/js/combobox.constants-Hb3bqqQJ.d.mts +19 -0
- package/dist/js/combobox.misc-DRDFk6X8.d.mts +26 -0
- package/dist/js/combobox.model-gjEI2VqZ.d.mts +46 -0
- package/dist/js/{state.combobox-BWDFHwoi.mjs → combobox.state-AstCICiH.mjs} +109 -106
- package/dist/js/dialog/dialog.model.d.mts +2 -0
- package/dist/js/dialog/dialog.model.mjs +11 -0
- package/dist/js/dialog/index.d.mts +12 -0
- package/dist/js/dialog/index.mjs +123 -0
- package/dist/js/dialog.model-HVzYWoDo.d.mts +45 -0
- package/dist/js/floatable/floatable.embedded.d.mts +2 -2
- package/dist/js/floatable/floatable.embedded.mjs +64 -92
- package/dist/js/floatable/floatable.model.d.mts +2 -0
- package/dist/js/floatable/floatable.model.mjs +23 -0
- package/dist/js/floatable/floatable.standalone.d.mts +2 -1
- package/dist/js/floatable.embedded-ncshL3Sa.d.mts +17 -0
- package/dist/js/{floatable.embedded-DQYkXt8X.d.mts → floatable.model-DXsQgoU7.d.mts} +13 -20
- package/dist/js/focus-trap/focus-trap.embedded.d.mts +2 -2
- package/dist/js/focus-trap/focus-trap.embedded.mjs +117 -138
- package/dist/js/focus-trap/focus-trap.model.d.mts +2 -0
- package/dist/js/focus-trap/focus-trap.model.mjs +15 -0
- package/dist/js/focus-trap/focus-trap.standalone.d.mts +2 -1
- package/dist/js/focus-trap.embedded-DpcPkP7c.d.mts +13 -0
- package/dist/js/{focus-trap.embedded-CjyFQYow.d.mts → focus-trap.model-CpltX5B5.d.mts} +16 -18
- package/dist/js/index.d.mts +26 -14
- package/dist/js/index.mjs +18 -17
- package/dist/js/internal/attributable.d.mts +1 -1
- package/dist/js/internal/attributable.mjs +3 -2
- package/dist/js/internal/draggable/draggable.model.d.mts +2 -0
- package/dist/js/internal/draggable/draggable.model.mjs +37 -0
- package/dist/js/internal/draggable/index.d.mts +13 -0
- package/dist/js/internal/draggable/index.mjs +243 -0
- package/dist/js/internal/l10n/index.d.mts +5 -0
- package/dist/js/internal/l10n/index.mjs +147 -0
- package/dist/js/internal/l10n/l10n.model.d.mts +2 -0
- package/dist/js/internal/l10n/l10n.model.mjs +12 -0
- package/dist/js/internal/misc.d.mts +3 -2
- package/dist/js/internal/misc.mjs +4 -6
- package/dist/js/internal/navigable/index.d.mts +6 -0
- package/dist/js/internal/navigable/index.mjs +125 -0
- package/dist/js/internal/navigable/navigable.model.d.mts +2 -0
- package/dist/js/internal/navigable/navigable.model.mjs +18 -0
- package/dist/js/internal/option-list/option-list.constants.d.mts +8 -0
- package/dist/js/internal/option-list/option-list.constants.mjs +22 -0
- package/dist/js/internal/option-list/option-list.data.d.mts +21 -0
- package/dist/js/internal/option-list/option-list.data.mjs +2 -0
- package/dist/js/internal/option-list/option-list.dom.d.mts +18 -0
- package/dist/js/internal/option-list/option-list.dom.mjs +2 -0
- package/dist/js/internal/option-list/option-list.event.d.mts +6 -0
- package/dist/js/internal/option-list/option-list.event.mjs +66 -0
- package/dist/js/internal/option-list/option-list.form.d.mts +7 -0
- package/dist/js/internal/option-list/option-list.form.mjs +53 -0
- package/dist/js/internal/option-list/option-list.misc.d.mts +13 -0
- package/dist/js/internal/option-list/option-list.misc.mjs +2 -0
- package/dist/js/internal/option-list/option-list.model.d.mts +2 -0
- package/dist/js/internal/option-list/option-list.state.d.mts +8 -0
- package/dist/js/internal/option-list/option-list.state.mjs +39 -0
- package/dist/js/l10n/index.d.mts +3 -0
- package/dist/js/l10n/index.mjs +2 -0
- package/dist/js/l10n.model-D1E1u35L.d.mts +54 -0
- package/dist/js/listbox/index.d.mts +9 -18
- package/dist/js/listbox/index.mjs +49 -52
- package/dist/js/listbox/listbox.constants.d.mts +2 -0
- package/dist/js/listbox/{constants.listbox.mjs → listbox.constants.mjs} +11 -15
- package/dist/js/listbox/listbox.dom.d.mts +5 -0
- package/dist/js/listbox/listbox.dom.mjs +2 -0
- package/dist/js/listbox/listbox.event.d.mts +9 -0
- package/dist/js/listbox/listbox.event.mjs +2 -0
- package/dist/js/listbox/listbox.misc.d.mts +2 -0
- package/dist/js/listbox/listbox.misc.mjs +2 -0
- package/dist/js/listbox/listbox.model.d.mts +2 -0
- package/dist/js/listbox/listbox.model.mjs +1 -0
- package/dist/js/listbox/listbox.state.d.mts +9 -0
- package/dist/js/listbox/listbox.state.mjs +2 -0
- package/dist/js/listbox.constants-DOBMwKup.d.mts +9 -0
- package/dist/js/listbox.misc-DwfB4Mu_.d.mts +24 -0
- package/dist/js/listbox.model-C0MYWXZe.d.mts +20 -0
- package/dist/js/listbox.state-BrN296BM.mjs +240 -0
- package/dist/js/menu/index.mjs +171 -0
- package/dist/js/menu/menu.model.d.mts +33 -0
- package/dist/js/menu/menu.model.mjs +15 -0
- package/dist/js/movable/movable.embedded.d.mts +2 -2
- package/dist/js/movable/movable.embedded.mjs +77 -86
- package/dist/js/movable/movable.model.d.mts +2 -0
- package/dist/js/movable/movable.model.mjs +12 -0
- package/dist/js/movable/movable.standalone.d.mts +2 -1
- package/dist/js/movable.embedded-C1bDTLGs.d.mts +11 -0
- package/dist/js/movable.model-D9nnPWKk.d.mts +186 -0
- package/dist/js/navigable.model-BqoR6iBv.d.mts +44 -0
- package/dist/js/option-list.data-CgMyUwPc.mjs +441 -0
- package/dist/js/option-list.model-CCPUlPeX.d.mts +169 -0
- package/dist/js/popover/index.d.mts +12 -0
- package/dist/js/{popover.mjs → popover/index.mjs} +41 -51
- package/dist/js/popover/popover.model.d.mts +2 -0
- package/dist/js/popover/popover.model.mjs +12 -0
- package/dist/js/popover.model-DiLdz0Hc.d.mts +38 -0
- package/dist/js/resizable/resizable.embedded.d.mts +2 -2
- package/dist/js/resizable/resizable.embedded.mjs +43 -58
- package/dist/js/resizable/resizable.model.d.mts +2 -0
- package/dist/js/resizable/resizable.model.mjs +21 -0
- package/dist/js/resizable/resizable.standalone.d.mts +2 -1
- package/dist/js/resizable.embedded-BemH-7Re.d.mts +11 -0
- package/dist/js/resizable.model-YEtcC9li.d.mts +46 -0
- package/dist/js/sortable/sortable.embedded.d.mts +2 -2
- package/dist/js/sortable/sortable.embedded.mjs +111 -116
- package/dist/js/sortable/sortable.model.d.mts +2 -0
- package/dist/js/sortable/sortable.model.mjs +24 -0
- package/dist/js/sortable/sortable.standalone.d.mts +2 -1
- package/dist/js/sortable.embedded-CrEGff9k.d.mts +11 -0
- package/dist/js/{splitter.d.mts → splitter/index.d.mts} +6 -4
- package/dist/js/{splitter.mjs → splitter/index.mjs} +90 -128
- package/dist/js/splitter/splitter.model.d.mts +2 -0
- package/dist/js/splitter/splitter.model.mjs +37 -0
- package/dist/js/splitter.model-C24W6eZ7.d.mts +57 -0
- package/dist/js/{tabs.d.mts → tabs/index.d.mts} +8 -8
- package/dist/js/{tabs.mjs → tabs/index.mjs} +58 -58
- package/dist/js/tabs/tabs.model.d.mts +2 -0
- package/dist/js/tabs/tabs.model.mjs +18 -0
- package/dist/js/tabs.model-BHPy7fPo.d.mts +40 -0
- package/dist/js/toolbar/index.mjs +27 -0
- package/dist/js/toolbar/toolbar.model.d.mts +11 -0
- package/dist/js/toolbar/toolbar.model.mjs +7 -0
- package/dist/js/tooltip/index.d.mts +19 -0
- package/dist/js/{tooltip.mjs → tooltip/index.mjs} +61 -86
- package/dist/js/tooltip/tooltip.model.d.mts +2 -0
- package/dist/js/tooltip/tooltip.model.mjs +15 -0
- package/dist/js/tooltip.model-BpNStw5z.d.mts +37 -0
- package/package.json +30 -24
- package/dist/js/color-picker/constants.color-picker.d.mts +0 -2
- package/dist/js/color-picker/event.color-picker.mjs +0 -2
- package/dist/js/color-picker/misc.color-picker.d.mts +0 -2
- package/dist/js/color-picker/misc.color-picker.mjs +0 -2
- package/dist/js/color-picker/models.color-picker.d.mts +0 -2
- package/dist/js/color-picker/state.color-picker.d.mts +0 -8
- package/dist/js/color-picker/state.color-picker.mjs +0 -2
- package/dist/js/combobox/constants.combobox.d.mts +0 -2
- package/dist/js/combobox/dom.combobox.d.mts +0 -26
- package/dist/js/combobox/misc.combobox.d.mts +0 -2
- package/dist/js/combobox/misc.combobox.mjs +0 -2
- package/dist/js/combobox/models.combobox.d.mts +0 -43
- package/dist/js/combobox/state.combobox.d.mts +0 -11
- package/dist/js/combobox/state.combobox.mjs +0 -2
- package/dist/js/constants.color-picker-B-gFjL8m.d.mts +0 -364
- package/dist/js/constants.combobox-8EMRmv09.d.mts +0 -18
- package/dist/js/constants.listbox-DGnX32kv.d.mts +0 -8
- package/dist/js/dialog.d.mts +0 -47
- package/dist/js/dialog.mjs +0 -131
- package/dist/js/draggable-B5-70SZm.d.mts +0 -155
- package/dist/js/event.color-picker-BEpq0Adu.mjs +0 -485
- package/dist/js/index-C5D3-oiI.d.mts +0 -177
- package/dist/js/internal/draggable.d.mts +0 -2
- package/dist/js/internal/draggable.mjs +0 -265
- package/dist/js/internal/listbox/listbox.constants.d.mts +0 -8
- package/dist/js/internal/listbox/listbox.constants.mjs +0 -22
- package/dist/js/internal/listbox/listbox.data.d.mts +0 -19
- package/dist/js/internal/listbox/listbox.data.mjs +0 -2
- package/dist/js/internal/listbox/listbox.dom.d.mts +0 -65
- package/dist/js/internal/listbox/listbox.dom.mjs +0 -2
- package/dist/js/internal/listbox/listbox.event.d.mts +0 -4
- package/dist/js/internal/listbox/listbox.event.mjs +0 -63
- package/dist/js/internal/listbox/listbox.form.d.mts +0 -5
- package/dist/js/internal/listbox/listbox.form.mjs +0 -53
- package/dist/js/internal/listbox/listbox.misc.d.mts +0 -11
- package/dist/js/internal/listbox/listbox.misc.mjs +0 -2
- package/dist/js/internal/listbox/listbox.model.d.mts +0 -2
- package/dist/js/internal/listbox/listbox.state.d.mts +0 -6
- package/dist/js/internal/listbox/listbox.state.mjs +0 -40
- package/dist/js/internal/navigable.d.mts +0 -36
- package/dist/js/internal/navigable.mjs +0 -135
- package/dist/js/l10n-Bn-7RcwR.d.mts +0 -20
- package/dist/js/l10n.d.mts +0 -2
- package/dist/js/l10n.mjs +0 -80
- package/dist/js/listbox/constants.listbox.d.mts +0 -2
- package/dist/js/listbox/event.listbox.d.mts +0 -7
- package/dist/js/listbox/event.listbox.mjs +0 -2
- package/dist/js/listbox/misc.listbox.d.mts +0 -2
- package/dist/js/listbox/misc.listbox.mjs +0 -2
- package/dist/js/listbox/state.listbox.d.mts +0 -10
- package/dist/js/listbox/state.listbox.mjs +0 -2
- package/dist/js/listbox.data-DQ7-x2uY.mjs +0 -425
- package/dist/js/listbox.model-BHPA7GM4.d.mts +0 -125
- package/dist/js/menu.mjs +0 -172
- package/dist/js/misc.listbox-DKB-j0UK.mjs +0 -196
- package/dist/js/misc.listbox-mZMuYOxg.d.mts +0 -20
- package/dist/js/popover.d.mts +0 -38
- package/dist/js/resizable.embedded-dvhdfQgt.d.mts +0 -34
- package/dist/js/toolbar.mjs +0 -31
- package/dist/js/tooltip.d.mts +0 -45
- /package/dist/js/combobox/{models.combobox.mjs → combobox.model.mjs} +0 -0
- /package/dist/js/internal/{listbox/listbox.model.mjs → option-list/option-list.model.mjs} +0 -0
- /package/dist/js/{menu.d.mts → menu/index.d.mts} +0 -0
- /package/dist/js/{toolbar.d.mts → toolbar/index.d.mts} +0 -0
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
import { optionListScrollOptions } from "./internal/option-list/option-list.constants.mjs";
|
|
2
|
+
import { updateOptionListForm, updateOptionListValidity } from "./internal/option-list/option-list.form.mjs";
|
|
3
|
+
import { setAria } from "@oscarpalmer/toretto/aria";
|
|
4
|
+
import { setAttribute } from "@oscarpalmer/toretto/attribute";
|
|
5
|
+
import { dispatch } from "@oscarpalmer/toretto/event";
|
|
6
|
+
import { filter } from "@oscarpalmer/atoms/array/filter";
|
|
7
|
+
import { createElement } from "@oscarpalmer/toretto/create";
|
|
8
|
+
import { getString } from "@oscarpalmer/atoms/string";
|
|
9
|
+
import { getData } from "@oscarpalmer/toretto/data";
|
|
10
|
+
//#region src/js/internal/option-list/option-list.misc.ts
|
|
11
|
+
function generateOptionListIds(prefix, select) {
|
|
12
|
+
const elements = [...select.children].flatMap((child) => child instanceof HTMLOptGroupElement ? [child, ...filter([...child.children], (groupChild) => groupChild instanceof HTMLOptionElement)] : child instanceof HTMLOptionElement ? [child] : []);
|
|
13
|
+
const { length } = elements;
|
|
14
|
+
for (let index = 0; index < length; index += 1) {
|
|
15
|
+
const element = elements[index];
|
|
16
|
+
if (element.id === "") element.id = `${prefix}${element instanceof HTMLOptGroupElement ? "_group_" : "_option_"}${index}`;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function getOptionListVisibleOptions(state) {
|
|
20
|
+
return state.component.options.all.filter((option) => !option.hidden);
|
|
21
|
+
}
|
|
22
|
+
function setOptionListDisabled(state, value) {
|
|
23
|
+
state.component.filter.element.readOnly = state.component.readonly || value;
|
|
24
|
+
setProperties("disabled", state, value);
|
|
25
|
+
}
|
|
26
|
+
function setOptionListFilter(state, value) {
|
|
27
|
+
if (typeof value !== "string") return;
|
|
28
|
+
const { filter } = state.component;
|
|
29
|
+
const type = value.length < filter.element.value.length ? "deleteContentBackward" : "insertText";
|
|
30
|
+
filter.element.value = value;
|
|
31
|
+
filterOptionList(type, state);
|
|
32
|
+
}
|
|
33
|
+
function setOptionListLimit(type, state, value) {
|
|
34
|
+
const { component } = state;
|
|
35
|
+
let actual = value;
|
|
36
|
+
if (typeof actual === "string") actual = Number.parseInt(actual, 10);
|
|
37
|
+
if (typeof actual === "number" && !Number.isNaN(actual) && actual >= 0 ? actual !== component[type] : actual == null) {
|
|
38
|
+
component[type] = actual;
|
|
39
|
+
setAttribute(component.host, type, actual);
|
|
40
|
+
updateOptionListValidity(state);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function setOptionListMultiple(element, value) {
|
|
44
|
+
if (value) element.setAttribute("multiple", "");
|
|
45
|
+
else element.removeAttribute("multiple");
|
|
46
|
+
}
|
|
47
|
+
function setProperties(key, state, value) {
|
|
48
|
+
const { component } = state;
|
|
49
|
+
const { elements } = component;
|
|
50
|
+
component[key] = value;
|
|
51
|
+
const { length } = elements;
|
|
52
|
+
for (let index = 0; index < length; index += 1) {
|
|
53
|
+
const element = elements[index];
|
|
54
|
+
if (element == null) continue;
|
|
55
|
+
setAria(element, key, key !== "readonly" || !(element instanceof HTMLButtonElement) ? value : void 0);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function setOptionListReadonly(state, value) {
|
|
59
|
+
const { disabled, filter } = state.component;
|
|
60
|
+
filter.element.readOnly = disabled || value;
|
|
61
|
+
setProperties("readonly", state, value);
|
|
62
|
+
}
|
|
63
|
+
function setOptionListRequired(state, value) {
|
|
64
|
+
setProperties("required", state, value);
|
|
65
|
+
updateOptionListValidity(state);
|
|
66
|
+
}
|
|
67
|
+
//#endregion
|
|
68
|
+
//#region src/js/internal/option-list/option-list.dom.ts
|
|
69
|
+
function createOptionListContent(parameters) {
|
|
70
|
+
const element = createElement("div", { attribute: { [parameters.attributes.content]: "" } });
|
|
71
|
+
const filter = createOptionListFilter(parameters);
|
|
72
|
+
const list = createOptionListList(parameters);
|
|
73
|
+
const message = createOptionListMessage(parameters.attributes.message);
|
|
74
|
+
const value = createOptionListValueLabel(parameters.id);
|
|
75
|
+
if (filter != null) element.append(filter.container);
|
|
76
|
+
element.append(list.element, message, value);
|
|
77
|
+
return {
|
|
78
|
+
element,
|
|
79
|
+
filter,
|
|
80
|
+
list,
|
|
81
|
+
message,
|
|
82
|
+
value
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
function createOptionListFilter(parameters) {
|
|
86
|
+
if (parameters.type === "autocomplete") return;
|
|
87
|
+
const container = createElement("div", { attribute: { [parameters.attributes.filter]: "" } });
|
|
88
|
+
const element = createOptionListInput(parameters, "");
|
|
89
|
+
setAttribute(element, parameters.attributes.input, "");
|
|
90
|
+
container.append(element);
|
|
91
|
+
return {
|
|
92
|
+
container,
|
|
93
|
+
element
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function createOptionListGroup(parameters) {
|
|
97
|
+
const { group, groupOptions, selected, type } = parameters;
|
|
98
|
+
const element = createElement("li", {
|
|
99
|
+
aria: { label: group.label },
|
|
100
|
+
property: { role: "group" }
|
|
101
|
+
});
|
|
102
|
+
const list = createElement("ul", { property: { role: "none" } });
|
|
103
|
+
const header = createOptionListHeader(parameters, group);
|
|
104
|
+
element.append(header, list);
|
|
105
|
+
return {
|
|
106
|
+
element,
|
|
107
|
+
header,
|
|
108
|
+
options: createOptionListOptions({
|
|
109
|
+
list,
|
|
110
|
+
selected,
|
|
111
|
+
type,
|
|
112
|
+
group: header.id,
|
|
113
|
+
options: groupOptions,
|
|
114
|
+
original: parameters.original
|
|
115
|
+
})
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
function createOptionListHeader(parameters, group) {
|
|
119
|
+
return createElement("div", {
|
|
120
|
+
aria: { hidden: true },
|
|
121
|
+
attribute: { [parameters.original.attributes.header]: "" },
|
|
122
|
+
property: {
|
|
123
|
+
id: group.id,
|
|
124
|
+
textContent: group.label
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
function createOptionListInput(parameters, value) {
|
|
129
|
+
const { autocomplete, id, label, listbox, type } = parameters;
|
|
130
|
+
const isAutocomplete = type === "autocomplete";
|
|
131
|
+
const input = createElement("input", {
|
|
132
|
+
aria: {
|
|
133
|
+
autocomplete: autocomplete.value,
|
|
134
|
+
controls: `${id}_list`,
|
|
135
|
+
haspopup: isAutocomplete ? "listbox" : void 0,
|
|
136
|
+
labelledby: label.id
|
|
137
|
+
},
|
|
138
|
+
attribute: {
|
|
139
|
+
autocorrect: "off",
|
|
140
|
+
autocomplete: "off",
|
|
141
|
+
form: "",
|
|
142
|
+
inputmode: "text",
|
|
143
|
+
spellcheck: "false"
|
|
144
|
+
},
|
|
145
|
+
property: {
|
|
146
|
+
id,
|
|
147
|
+
value,
|
|
148
|
+
role: isAutocomplete || listbox ? "combobox" : "searchbox",
|
|
149
|
+
type: "text"
|
|
150
|
+
}
|
|
151
|
+
});
|
|
152
|
+
if (isAutocomplete || listbox) setAria(input, "expanded", listbox);
|
|
153
|
+
return input;
|
|
154
|
+
}
|
|
155
|
+
function createOptionListList(parameters) {
|
|
156
|
+
const { attributes, id, label, multiple, select, type } = parameters;
|
|
157
|
+
const element = createElement("ul", {
|
|
158
|
+
aria: {
|
|
159
|
+
labelledby: label.id,
|
|
160
|
+
multiselectable: multiple
|
|
161
|
+
},
|
|
162
|
+
attribute: {
|
|
163
|
+
[attributes.list]: "",
|
|
164
|
+
tabindex: -1
|
|
165
|
+
},
|
|
166
|
+
property: {
|
|
167
|
+
id: `${id}_list`,
|
|
168
|
+
role: "listbox"
|
|
169
|
+
}
|
|
170
|
+
});
|
|
171
|
+
const children = [...select.children];
|
|
172
|
+
const childrenLength = children.length;
|
|
173
|
+
const options = [];
|
|
174
|
+
const selected = [];
|
|
175
|
+
let groups;
|
|
176
|
+
for (let childIndex = 0; childIndex < childrenLength; childIndex += 1) {
|
|
177
|
+
const child = children[childIndex];
|
|
178
|
+
if (child instanceof HTMLOptionElement) {
|
|
179
|
+
const option = createOptionListOption({
|
|
180
|
+
type,
|
|
181
|
+
option: child,
|
|
182
|
+
original: parameters,
|
|
183
|
+
index: childIndex
|
|
184
|
+
});
|
|
185
|
+
element.append(option);
|
|
186
|
+
options.push(option);
|
|
187
|
+
if (child.selected) selected.push(option);
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
if (!(child instanceof HTMLOptGroupElement)) continue;
|
|
191
|
+
const group = createOptionListGroup({
|
|
192
|
+
selected,
|
|
193
|
+
type,
|
|
194
|
+
group: child,
|
|
195
|
+
groupOptions: [...child.children],
|
|
196
|
+
original: parameters
|
|
197
|
+
});
|
|
198
|
+
groups ??= [];
|
|
199
|
+
element.append(group.element);
|
|
200
|
+
groups.push(group);
|
|
201
|
+
options.push(...group.options);
|
|
202
|
+
}
|
|
203
|
+
return {
|
|
204
|
+
element,
|
|
205
|
+
groups,
|
|
206
|
+
options: {
|
|
207
|
+
selected,
|
|
208
|
+
all: options
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
function createOptionListMessage(attribute) {
|
|
213
|
+
return createElement("div", {
|
|
214
|
+
aria: { live: "polite" },
|
|
215
|
+
attribute: { [attribute]: "" },
|
|
216
|
+
property: {
|
|
217
|
+
hidden: true,
|
|
218
|
+
role: "status"
|
|
219
|
+
}
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
function createOptionListOption(parameters) {
|
|
223
|
+
const { group, option, original } = parameters;
|
|
224
|
+
return createElement("li", {
|
|
225
|
+
aria: { selected: (parameters.type === "select" || !original.autocomplete.none) && option.selected },
|
|
226
|
+
attribute: { [original.attributes.option]: "" },
|
|
227
|
+
data: {
|
|
228
|
+
group,
|
|
229
|
+
value: option.value
|
|
230
|
+
},
|
|
231
|
+
property: {
|
|
232
|
+
id: option.id,
|
|
233
|
+
role: "option",
|
|
234
|
+
textContent: option.textContent
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
function createOptionListOptions(parameters) {
|
|
239
|
+
const { group, list, options, original, selected, type } = parameters;
|
|
240
|
+
const items = [];
|
|
241
|
+
for (let index = 0; index < options.length; index += 1) {
|
|
242
|
+
const option = options[index];
|
|
243
|
+
const item = createOptionListOption({
|
|
244
|
+
group,
|
|
245
|
+
index,
|
|
246
|
+
option,
|
|
247
|
+
original,
|
|
248
|
+
type
|
|
249
|
+
});
|
|
250
|
+
items.push(item);
|
|
251
|
+
if (option.selected) selected.push(item);
|
|
252
|
+
list.append(item);
|
|
253
|
+
}
|
|
254
|
+
return items;
|
|
255
|
+
}
|
|
256
|
+
function createOptionListValueLabel(id) {
|
|
257
|
+
return createElement("span", { property: {
|
|
258
|
+
hidden: true,
|
|
259
|
+
id: `${id}_value`
|
|
260
|
+
} });
|
|
261
|
+
}
|
|
262
|
+
function updateOptionListMessage(state) {
|
|
263
|
+
const { attributes, host, localizations, message } = state.component;
|
|
264
|
+
const visible = getOptionListVisibleOptions(state).length;
|
|
265
|
+
setAttribute(message, attributes.hidden, visible > 0 ? "" : void 0);
|
|
266
|
+
let parameters = [];
|
|
267
|
+
let key;
|
|
268
|
+
if (visible === 0) key = "empty";
|
|
269
|
+
else {
|
|
270
|
+
key = "results";
|
|
271
|
+
parameters = [visible];
|
|
272
|
+
}
|
|
273
|
+
message.textContent = localizations.localize(key, {
|
|
274
|
+
arguments: parameters,
|
|
275
|
+
element: host
|
|
276
|
+
});
|
|
277
|
+
message.hidden = false;
|
|
278
|
+
}
|
|
279
|
+
function updateOptionListPreview(preview, state, active, scroll) {
|
|
280
|
+
const { attributes, callbacks, content, filter, options } = state.component;
|
|
281
|
+
const { length } = options.all;
|
|
282
|
+
for (let index = 0; index < length; index += 1) {
|
|
283
|
+
const option = options.all[index];
|
|
284
|
+
setAttribute(option, attributes.active, option === active ? "" : void 0);
|
|
285
|
+
}
|
|
286
|
+
state.component.active = active;
|
|
287
|
+
setAria(filter.element, "activedescendant", content.checkVisibility() ? active?.id : void 0);
|
|
288
|
+
if (scroll ?? true) active?.scrollIntoView(optionListScrollOptions);
|
|
289
|
+
if (preview !== "none") callbacks.data.onPreview(preview, state, active);
|
|
290
|
+
}
|
|
291
|
+
function updateOptionListValueLabel(state) {
|
|
292
|
+
const { autocomplete, filter, listbox, localizations, host, options, multiple, values } = state.component;
|
|
293
|
+
let label;
|
|
294
|
+
if (multiple) label = localizations.localize("selected", {
|
|
295
|
+
arguments: [options.selected.length],
|
|
296
|
+
element: host
|
|
297
|
+
});
|
|
298
|
+
else label = autocomplete.none && !listbox ? filter.element.value : options.selected[0]?.textContent ?? "";
|
|
299
|
+
values.label.textContent = label;
|
|
300
|
+
}
|
|
301
|
+
//#endregion
|
|
302
|
+
//#region src/js/internal/option-list/option-list.data.ts
|
|
303
|
+
function applyOptionListSelection(parameters) {
|
|
304
|
+
const { added, emit, option, scroll, selected, state } = parameters;
|
|
305
|
+
const { component } = state;
|
|
306
|
+
const { autocomplete, callbacks, filter, listbox, options, type } = component;
|
|
307
|
+
const { length } = options.all;
|
|
308
|
+
for (let index = 0; index < length; index += 1) {
|
|
309
|
+
const option = options.all[index];
|
|
310
|
+
setAria(option, "selected", (type === "select" || !autocomplete.none) && (selected ?? options.selected).includes(option));
|
|
311
|
+
}
|
|
312
|
+
const values = parameters.values ?? (autocomplete.none && !listbox ? [filter.element.value] : (selected ?? options.selected).map((option) => getData(option, "value", false) ?? ""));
|
|
313
|
+
if (values.length === 0) values.push("");
|
|
314
|
+
if (selected != null) options.selected = selected;
|
|
315
|
+
if (!(values.length === component.values.current.length ? values.some((value) => !component.values.current.includes(value)) : true)) return;
|
|
316
|
+
updateOptionListForm(state, values, emit);
|
|
317
|
+
updateOptionListMessage(state);
|
|
318
|
+
updateOptionListPreview("set", state, option, scroll);
|
|
319
|
+
updateOptionListValueLabel(state);
|
|
320
|
+
callbacks.data.onApply(state, option, values, added, selected, emit);
|
|
321
|
+
}
|
|
322
|
+
function filterOptionList(type, state) {
|
|
323
|
+
const { callbacks, disabled, filter, host, readonly } = state.component;
|
|
324
|
+
if (disabled || readonly) return;
|
|
325
|
+
const update = filter.element.value !== filter.value;
|
|
326
|
+
const option = filterOptionListOptions(state);
|
|
327
|
+
let preview;
|
|
328
|
+
if (type.includes("delete")) preview = "none";
|
|
329
|
+
else if (type.includes("insert")) preview = "typed";
|
|
330
|
+
if (preview != null) callbacks.data.onFilter(preview, state, update, option);
|
|
331
|
+
if (update) {
|
|
332
|
+
filter.value = filter.element.value;
|
|
333
|
+
dispatch(host, "input");
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
function filterOptionListOption(state, value, textContent) {
|
|
337
|
+
const { options } = state.component;
|
|
338
|
+
const filterTextContent = textContent ?? false;
|
|
339
|
+
const filter = getString(value).toLocaleLowerCase();
|
|
340
|
+
filterOptionListOptions(state);
|
|
341
|
+
const { length } = options.all;
|
|
342
|
+
let match;
|
|
343
|
+
for (let index = 0; index < length; index += 1) {
|
|
344
|
+
const option = options.all[index];
|
|
345
|
+
if ((filterTextContent ? option.textContent : getData(option, "value", false) ?? "").toLocaleLowerCase() === filter) {
|
|
346
|
+
match = option;
|
|
347
|
+
break;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return match;
|
|
351
|
+
}
|
|
352
|
+
function filterOptionListOptions(state) {
|
|
353
|
+
function filterOptions(options) {
|
|
354
|
+
const { length } = options;
|
|
355
|
+
let count = 0;
|
|
356
|
+
for (let index = 0; index < length; index += 1) {
|
|
357
|
+
const option = options[index];
|
|
358
|
+
option.hidden = (type === "select" || !autocomplete.none) && !option.textContent.toLocaleLowerCase().includes(value);
|
|
359
|
+
if (!option.hidden) {
|
|
360
|
+
count += 1;
|
|
361
|
+
visible.push(option);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
return count === 0;
|
|
365
|
+
}
|
|
366
|
+
const { active, attributes, autocomplete, filter, groups, list, options, type } = state.component;
|
|
367
|
+
const value = filter.element.value.toLocaleLowerCase();
|
|
368
|
+
const visible = [];
|
|
369
|
+
if (groups == null) filterOptions(options.all);
|
|
370
|
+
else {
|
|
371
|
+
const groupsLength = groups.length;
|
|
372
|
+
for (let groupIndex = 0; groupIndex < groupsLength; groupIndex += 1) {
|
|
373
|
+
const { element, options } = groups[groupIndex];
|
|
374
|
+
element.hidden = filterOptions(options);
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
setAttribute(list, attributes.empty, visible.length === 0 ? "" : void 0);
|
|
378
|
+
updateOptionListMessage(state);
|
|
379
|
+
return active != null && visible.includes(active) ? active : visible[0];
|
|
380
|
+
}
|
|
381
|
+
function setOptionListValue(state, value, emit) {
|
|
382
|
+
const { autocomplete, listbox } = state.component;
|
|
383
|
+
if (autocomplete.none && !listbox) {
|
|
384
|
+
setOptionListFilter(state, getString(value));
|
|
385
|
+
return;
|
|
386
|
+
}
|
|
387
|
+
if (filterOptionListOption(state, value) != null) setOptionListValues(state, [value], emit);
|
|
388
|
+
}
|
|
389
|
+
function setOptionListValues(state, value, emit) {
|
|
390
|
+
if (!Array.isArray(value)) return;
|
|
391
|
+
const { autocomplete, listbox, multiple, options } = state.component;
|
|
392
|
+
const values = (multiple ? value : value.slice(0, 1)).map((value) => getString(value).toLocaleLowerCase());
|
|
393
|
+
if (values.length === 0) values.push("");
|
|
394
|
+
if (autocomplete.none && !listbox) {
|
|
395
|
+
setOptionListValue(state, values[0], emit);
|
|
396
|
+
return;
|
|
397
|
+
}
|
|
398
|
+
const { length } = options.all;
|
|
399
|
+
const selected = [];
|
|
400
|
+
for (let index = 0; index < length; index += 1) {
|
|
401
|
+
const option = options.all[index];
|
|
402
|
+
if (values.includes(getData(option, "value", false)?.toLocaleLowerCase() ?? "")) selected.push(option);
|
|
403
|
+
}
|
|
404
|
+
applyOptionListSelection({
|
|
405
|
+
emit,
|
|
406
|
+
selected,
|
|
407
|
+
state,
|
|
408
|
+
added: true,
|
|
409
|
+
option: selected[0] ?? options.all[0],
|
|
410
|
+
values: autocomplete.none && !listbox ? values : void 0
|
|
411
|
+
});
|
|
412
|
+
}
|
|
413
|
+
function toggleOptionListOption(state, option) {
|
|
414
|
+
const { autocomplete, callbacks, listbox, multiple, options } = state.component;
|
|
415
|
+
if (option == null || !multiple && options.selected.includes(option)) {
|
|
416
|
+
callbacks.data.onToggle(state);
|
|
417
|
+
return;
|
|
418
|
+
}
|
|
419
|
+
const selected = options.selected.slice();
|
|
420
|
+
let added = true;
|
|
421
|
+
if (multiple) {
|
|
422
|
+
const index = selected.indexOf(option);
|
|
423
|
+
if (index === -1) selected.push(option);
|
|
424
|
+
else {
|
|
425
|
+
added = false;
|
|
426
|
+
selected.splice(index, 1);
|
|
427
|
+
}
|
|
428
|
+
} else selected.splice(0, selected.length, option);
|
|
429
|
+
const values = autocomplete.none && !listbox && option != null ? [option.textContent] : void 0;
|
|
430
|
+
applyOptionListSelection({
|
|
431
|
+
added,
|
|
432
|
+
option,
|
|
433
|
+
selected,
|
|
434
|
+
state,
|
|
435
|
+
values,
|
|
436
|
+
scroll: false
|
|
437
|
+
});
|
|
438
|
+
callbacks.data.onToggle(state);
|
|
439
|
+
}
|
|
440
|
+
//#endregion
|
|
441
|
+
export { setOptionListDisabled as C, setOptionListReadonly as D, setOptionListMultiple as E, setOptionListRequired as O, getOptionListVisibleOptions as S, setOptionListLimit as T, createOptionListValueLabel as _, setOptionListValue as a, updateOptionListValueLabel as b, createOptionListContent as c, createOptionListHeader as d, createOptionListInput as f, createOptionListOptions as g, createOptionListOption as h, filterOptionListOptions as i, createOptionListFilter as l, createOptionListMessage as m, filterOptionList as n, setOptionListValues as o, createOptionListList as p, filterOptionListOption as r, toggleOptionListOption as s, applyOptionListSelection as t, createOptionListGroup as u, updateOptionListMessage as v, setOptionListFilter as w, generateOptionListIds as x, updateOptionListPreview as y };
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import { _ as OuiLocalizationsValues, p as OuiLocalizations } from "./l10n.model-D1E1u35L.mjs";
|
|
2
|
+
import { PlainObject } from "@oscarpalmer/atoms/models";
|
|
3
|
+
import { RemovableEventListener } from "@oscarpalmer/toretto/models";
|
|
4
|
+
//#region src/js/internal/option-list/option-list.model.d.ts
|
|
5
|
+
type CreateOptionListContent = {
|
|
6
|
+
element: HTMLDivElement;
|
|
7
|
+
filter?: CreateOptionListFilter;
|
|
8
|
+
list: CreateOptionListList;
|
|
9
|
+
message: HTMLDivElement;
|
|
10
|
+
value: HTMLSpanElement;
|
|
11
|
+
};
|
|
12
|
+
type CreateOptionListContentParameters = {
|
|
13
|
+
attributes: OptionListAttributes;
|
|
14
|
+
autocomplete: OptionListAutoComplete;
|
|
15
|
+
element: Element;
|
|
16
|
+
id: string;
|
|
17
|
+
label: HTMLLabelElement;
|
|
18
|
+
listbox: boolean;
|
|
19
|
+
multiple: boolean;
|
|
20
|
+
select: HTMLSelectElement;
|
|
21
|
+
type: OptionListType;
|
|
22
|
+
};
|
|
23
|
+
type CreateOptionListFilter = {
|
|
24
|
+
container: Element;
|
|
25
|
+
element: HTMLInputElement;
|
|
26
|
+
};
|
|
27
|
+
type CreateOptionListGroupParameters = {
|
|
28
|
+
group: HTMLOptGroupElement;
|
|
29
|
+
groupOptions: HTMLOptionElement[];
|
|
30
|
+
original: CreateOptionListContentParameters;
|
|
31
|
+
selected: Element[];
|
|
32
|
+
type: OptionListType;
|
|
33
|
+
};
|
|
34
|
+
type CreateOptionListList = {
|
|
35
|
+
element: HTMLUListElement;
|
|
36
|
+
groups?: OptionListGroup[];
|
|
37
|
+
options: OptionListOptions;
|
|
38
|
+
};
|
|
39
|
+
type CreateOptionListOptionParameters = {
|
|
40
|
+
group?: string;
|
|
41
|
+
index: number;
|
|
42
|
+
option: HTMLOptionElement;
|
|
43
|
+
original: CreateOptionListContentParameters;
|
|
44
|
+
type: OptionListType;
|
|
45
|
+
};
|
|
46
|
+
type CreateOptionListOptionsParameters = {
|
|
47
|
+
group?: string;
|
|
48
|
+
list: Element;
|
|
49
|
+
options: HTMLOptionElement[];
|
|
50
|
+
original: CreateOptionListContentParameters;
|
|
51
|
+
selected: Element[];
|
|
52
|
+
type: OptionListType;
|
|
53
|
+
};
|
|
54
|
+
type OptionListAttributes = {
|
|
55
|
+
active: string;
|
|
56
|
+
content: string;
|
|
57
|
+
empty: string;
|
|
58
|
+
filter: string;
|
|
59
|
+
group: string;
|
|
60
|
+
header: string;
|
|
61
|
+
hidden: string;
|
|
62
|
+
input: string;
|
|
63
|
+
list: string;
|
|
64
|
+
message: string;
|
|
65
|
+
option: string;
|
|
66
|
+
};
|
|
67
|
+
type OptionListAutoComplete = Record<OptionListAutoCompleteType, boolean> & {
|
|
68
|
+
value?: OptionListAutoCompleteType;
|
|
69
|
+
};
|
|
70
|
+
type OptionListAutoCompleteType = "both" | "inline" | "list" | "none";
|
|
71
|
+
type OptionListCallbacks<State extends PlainObject, Localizations extends OuiLocalizationsValues> = {
|
|
72
|
+
data: OptionListCallbacksData<State, Localizations>;
|
|
73
|
+
keydown: OptionListCallbacksKeydown<State, Localizations>;
|
|
74
|
+
};
|
|
75
|
+
type OptionListCallbacksData<State extends PlainObject, Localizations extends OuiLocalizationsValues> = {
|
|
76
|
+
onApply: OptionListCallbacksDataOnApply<State, Localizations>;
|
|
77
|
+
onFilter: OptionListCallbacksDataOnFilter<State, Localizations>;
|
|
78
|
+
onForm: (state: OptionListState<State, Localizations>) => void;
|
|
79
|
+
onPreview: OptionListCallbacksDataOnPreview<State, Localizations>;
|
|
80
|
+
onToggle: (state: OptionListState<State, Localizations>) => void;
|
|
81
|
+
};
|
|
82
|
+
type OptionListCallbacksDataOnApply<State extends PlainObject, Localizations extends OuiLocalizationsValues> = (state: OptionListState<State, Localizations>, option: Element | undefined, values: string[], added: boolean, selected?: Element[], emit?: boolean) => void;
|
|
83
|
+
type OptionListCallbacksDataOnFilter<State extends PlainObject, Localizations extends OuiLocalizationsValues> = (preview: OptionListPreview, state: OptionListState<State, Localizations>, update: boolean, active?: Element, emit?: boolean) => void;
|
|
84
|
+
type OptionListCallbacksDataOnPreview<State extends PlainObject, Localizations extends OuiLocalizationsValues> = (preview: OptionListPreview, state: OptionListState<State, Localizations>, active?: Element) => void;
|
|
85
|
+
type OptionListCallbacksKeydown<State extends PlainObject, Localizations extends OuiLocalizationsValues> = {
|
|
86
|
+
onActivation?: (state: OptionListState<State, Localizations>) => void;
|
|
87
|
+
onEnter?: (state: OptionListState<State, Localizations>) => void;
|
|
88
|
+
onEscape?: (state: OptionListState<State, Localizations>) => void;
|
|
89
|
+
onNavigation: OptionListCallbacksDataOnNavigation<State, Localizations>;
|
|
90
|
+
onSelection?: (state: OptionListState<State, Localizations>) => void;
|
|
91
|
+
onTab?: (state: OptionListState<State, Localizations>) => void;
|
|
92
|
+
onToggle?: (state: OptionListState<State, Localizations>) => void;
|
|
93
|
+
preventActivation?: (state: OptionListState<State, Localizations>) => boolean;
|
|
94
|
+
skipNavigation?: (state: OptionListState<State, Localizations>) => boolean;
|
|
95
|
+
};
|
|
96
|
+
type OptionListCallbacksDataOnNavigation<State extends PlainObject, Localizations extends OuiLocalizationsValues> = (preview: OptionListPreview, state: OptionListState<State, Localizations>, active?: HTMLElement) => void;
|
|
97
|
+
type OptionListFilter = {
|
|
98
|
+
element: HTMLInputElement;
|
|
99
|
+
value: string;
|
|
100
|
+
};
|
|
101
|
+
type OptionListGroup = {
|
|
102
|
+
element: HTMLElement;
|
|
103
|
+
header: HTMLElement;
|
|
104
|
+
options: HTMLElement[];
|
|
105
|
+
};
|
|
106
|
+
type OptionListLabel = {
|
|
107
|
+
element: HTMLLabelElement;
|
|
108
|
+
id: string;
|
|
109
|
+
};
|
|
110
|
+
type OptionListLocalizationValues = {
|
|
111
|
+
empty: string | (() => string);
|
|
112
|
+
input: string | (() => string);
|
|
113
|
+
invalid: string | (() => string);
|
|
114
|
+
max: string | ((max: number) => string);
|
|
115
|
+
min: string | ((min: number) => string);
|
|
116
|
+
remove: string | ((label: string, value: string) => string);
|
|
117
|
+
results: string | ((amount: number) => string);
|
|
118
|
+
selected: string | ((amount: number) => string);
|
|
119
|
+
};
|
|
120
|
+
type OptionListOptions = {
|
|
121
|
+
all: HTMLElement[];
|
|
122
|
+
selected: HTMLElement[];
|
|
123
|
+
};
|
|
124
|
+
type OptionListPreview = "none" | "set" | "typed";
|
|
125
|
+
type OptionListState<State extends PlainObject, Localizations extends OuiLocalizationsValues> = {
|
|
126
|
+
component: OptionListStateComponent<State, Localizations>;
|
|
127
|
+
form: OptionListStateForm;
|
|
128
|
+
};
|
|
129
|
+
type OptionListStateComponent<State extends PlainObject, Localizations extends OuiLocalizationsValues> = {
|
|
130
|
+
active?: HTMLElement;
|
|
131
|
+
attributes: OptionListAttributes;
|
|
132
|
+
autocomplete: OptionListAutoComplete;
|
|
133
|
+
callbacks: OptionListCallbacks<State, Localizations>;
|
|
134
|
+
content: HTMLDivElement;
|
|
135
|
+
disabled: boolean;
|
|
136
|
+
elements: Array<Element | undefined>;
|
|
137
|
+
filter: OptionListFilter;
|
|
138
|
+
groups?: OptionListGroup[];
|
|
139
|
+
host: Element;
|
|
140
|
+
id: string;
|
|
141
|
+
label: OptionListLabel;
|
|
142
|
+
list: HTMLUListElement;
|
|
143
|
+
listbox: boolean;
|
|
144
|
+
listeners: RemovableEventListener[];
|
|
145
|
+
localizations: OuiLocalizations<OptionListLocalizationValues & Localizations>;
|
|
146
|
+
max?: number;
|
|
147
|
+
min?: number;
|
|
148
|
+
message: HTMLElement;
|
|
149
|
+
multiple: boolean;
|
|
150
|
+
name: string;
|
|
151
|
+
options: OptionListOptions;
|
|
152
|
+
readonly: boolean;
|
|
153
|
+
required: boolean;
|
|
154
|
+
select: HTMLSelectElement;
|
|
155
|
+
type: OptionListType;
|
|
156
|
+
values: OptionListValues;
|
|
157
|
+
} & State;
|
|
158
|
+
type OptionListStateForm = {
|
|
159
|
+
internals: ElementInternals;
|
|
160
|
+
restored?: unknown[];
|
|
161
|
+
};
|
|
162
|
+
type OptionListType = "autocomplete" | "select";
|
|
163
|
+
type OptionListValues = {
|
|
164
|
+
current: string[];
|
|
165
|
+
initial: string[];
|
|
166
|
+
label: Element;
|
|
167
|
+
};
|
|
168
|
+
//#endregion
|
|
169
|
+
export { OptionListType as _, CreateOptionListList as a, OptionListAttributes as c, OptionListCallbacks as d, OptionListGroup as f, OptionListState as g, OptionListPreview as h, CreateOptionListGroupParameters as i, OptionListAutoComplete as l, OptionListOptions as m, CreateOptionListContentParameters as n, CreateOptionListOptionParameters as o, OptionListLocalizationValues as p, CreateOptionListFilter as r, CreateOptionListOptionsParameters as s, CreateOptionListContent as t, OptionListAutoCompleteType as u };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { n as OuiPopoverState, t as OuiPopover } from "../popover.model-DiLdz0Hc.mjs";
|
|
2
|
+
//#region src/js/popover/index.d.ts
|
|
3
|
+
declare function OuiPopover(this: OuiPopover, state: OuiPopoverState): void;
|
|
4
|
+
/**
|
|
5
|
+
* Get the _OuiPopover_ for an element
|
|
6
|
+
*
|
|
7
|
+
* @param element Element to get _OuiPopover_ for
|
|
8
|
+
* @returns _OuiPopover_ instance
|
|
9
|
+
*/
|
|
10
|
+
export declare function getPopover(element: Element): OuiPopover | undefined;
|
|
11
|
+
//#endregion
|
|
12
|
+
export type { OuiPopover };
|