@oscarpalmer/oui 0.38.0 → 0.40.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/badge.css +11 -8
- package/dist/css/button.css +106 -14
- package/dist/css/color-picker.css +555 -73
- package/dist/css/color.css +86 -86
- package/dist/css/combobox.css +98 -4
- package/dist/css/content.css +7 -6
- package/dist/css/floatable.css +1 -3
- package/dist/css/form.css +99 -6
- package/dist/css/icon.css +99 -0
- package/dist/css/listbox.css +3 -0
- package/dist/css/message.css +4 -3
- package/dist/css/mixins/button.mixins.css +1 -0
- package/dist/css/reset.css +1 -1
- package/dist/css/tabs.css +95 -3
- package/dist/css/typography.css +90 -0
- package/dist/js/color-picker/color-picker.constants.d.mts +2 -0
- package/dist/js/color-picker/color-picker.constants.mjs +60 -0
- package/dist/js/color-picker/color-picker.dom.d.mts +8 -0
- package/dist/js/color-picker/color-picker.dom.mjs +191 -0
- package/dist/js/color-picker/color-picker.event.d.mts +9 -0
- package/dist/js/color-picker/color-picker.event.mjs +2 -0
- package/dist/js/color-picker/color-picker.form.d.mts +5 -0
- package/dist/js/color-picker/color-picker.form.mjs +27 -0
- package/dist/js/color-picker/color-picker.misc.d.mts +2 -0
- package/dist/js/color-picker/color-picker.misc.mjs +2 -0
- package/dist/js/color-picker/color-picker.model.d.mts +2 -0
- package/dist/js/color-picker/color-picker.model.mjs +24 -0
- package/dist/js/color-picker/color-picker.output.d.mts +8 -0
- package/dist/js/color-picker/color-picker.output.mjs +235 -0
- package/dist/js/color-picker/color-picker.state.d.mts +8 -0
- package/dist/js/color-picker/color-picker.state.mjs +2 -0
- package/dist/js/{color-picker.d.mts → color-picker/index.d.mts} +10 -43
- package/dist/js/color-picker/index.mjs +305 -0
- package/dist/js/color-picker.constants-D1mxw_Le.d.mts +179 -0
- package/dist/js/color-picker.event-Cksj5TvS.mjs +500 -0
- package/dist/js/color-picker.misc-CtsXGrOe.d.mts +27 -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 +26 -0
- package/dist/js/combobox/{dom.combobox.mjs → combobox.dom.mjs} +44 -37
- package/dist/js/combobox/combobox.event.d.mts +22 -0
- 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/{misc.combobox.mjs → combobox.misc.mjs} +1 -1
- package/dist/js/combobox/combobox.model.d.mts +2 -0
- package/dist/js/combobox/combobox.state.d.mts +10 -0
- package/dist/js/combobox/combobox.state.mjs +2 -0
- package/dist/js/combobox/index.d.mts +163 -2
- package/dist/js/combobox/index.mjs +53 -52
- package/dist/js/combobox.constants-DZVkMP5g.d.mts +19 -0
- package/dist/js/combobox.misc-C1tPZZDi.d.mts +22 -0
- package/dist/js/{combobox/models.combobox.d.mts → combobox.model-oDV06XCN.d.mts} +6 -6
- package/dist/js/{state.combobox-Qm3FWzYW.mjs → combobox.state-BfJ3Hxg8.mjs} +96 -82
- package/dist/js/constants.listbox-C5Ap6Ag_.d.mts +9 -0
- 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-DX2mndMh.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-MeTyXjFn.d.mts +17 -0
- package/dist/js/floatable.model-DXsQgoU7.d.mts +62 -0
- package/dist/js/focus-trap/focus-trap.embedded.d.mts +2 -2
- package/dist/js/focus-trap/focus-trap.embedded.mjs +112 -134
- 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-DIU05m1z.d.mts +13 -0
- package/dist/js/{focus-trap.embedded-DR8NpZfr.d.mts → focus-trap.model-BeX6UYlw.d.mts} +16 -18
- package/dist/js/index.d.mts +26 -14
- package/dist/js/index.mjs +18 -15
- package/dist/js/internal/attributable.d.mts +2 -3
- 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.mjs → draggable/index.mjs} +83 -114
- package/dist/js/internal/listbox/listbox.constants.d.mts +7 -10
- package/dist/js/internal/listbox/listbox.constants.mjs +15 -16
- package/dist/js/internal/listbox/listbox.data.d.mts +9 -10
- package/dist/js/internal/listbox/listbox.data.mjs +1 -1
- package/dist/js/internal/listbox/listbox.dom.d.mts +19 -20
- package/dist/js/internal/listbox/listbox.dom.mjs +1 -1
- package/dist/js/internal/listbox/listbox.event.d.mts +3 -4
- package/dist/js/internal/listbox/listbox.event.mjs +23 -20
- package/dist/js/internal/listbox/listbox.form.d.mts +4 -5
- package/dist/js/internal/listbox/listbox.form.mjs +15 -12
- package/dist/js/internal/listbox/listbox.misc.d.mts +10 -11
- package/dist/js/internal/listbox/listbox.misc.mjs +1 -1
- package/dist/js/internal/listbox/listbox.model.d.mts +2 -2
- package/dist/js/internal/listbox/listbox.state.d.mts +5 -6
- package/dist/js/internal/listbox/listbox.state.mjs +19 -20
- package/dist/js/internal/misc.d.mts +5 -4
- package/dist/js/internal/misc.mjs +7 -1
- 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/l10n/index.d.mts +9 -0
- package/dist/js/{l10n.mjs → l10n/index.mjs} +50 -23
- package/dist/js/l10n/l10n.model.d.mts +2 -0
- package/dist/js/l10n/l10n.model.mjs +9 -0
- package/dist/js/l10n.model-D6a9frgl.d.mts +26 -0
- package/dist/js/listbox/constants.listbox.d.mts +2 -2
- package/dist/js/listbox/constants.listbox.mjs +10 -14
- package/dist/js/listbox/event.listbox.d.mts +6 -7
- package/dist/js/listbox/event.listbox.mjs +47 -1
- package/dist/js/listbox/index.d.mts +8 -6
- package/dist/js/listbox/index.mjs +47 -49
- package/dist/js/listbox/misc.listbox.d.mts +1 -1
- package/dist/js/listbox/misc.listbox.mjs +1 -1
- package/dist/js/listbox/state.listbox.d.mts +8 -10
- package/dist/js/listbox/state.listbox.mjs +2 -2
- package/dist/js/{listbox.data-C7CRa5Ya.mjs → listbox.data-BQyZGKgr.mjs} +83 -66
- package/dist/js/{listbox.model-CRReGOmu.d.mts → listbox.model-CuBOj4qe.d.mts} +15 -11
- package/dist/js/menu/index.mjs +167 -0
- package/dist/js/menu/menu.model.d.mts +33 -0
- package/dist/js/menu/menu.model.mjs +15 -0
- package/dist/js/{misc.listbox-Cyz2CRDy.mjs → misc.listbox-CjfBUbHD.mjs} +27 -69
- package/dist/js/{misc.listbox-gnoJhrTr.d.mts → misc.listbox-CtoGvXQo.d.mts} +2 -2
- package/dist/js/movable/movable.embedded.d.mts +2 -2
- package/dist/js/movable/movable.embedded.mjs +60 -72
- 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-DoyXLegc.d.mts +11 -0
- package/dist/js/movable.model-BHaK_mKw.d.mts +186 -0
- package/dist/js/navigable.model-BPOM8DZk.d.mts +44 -0
- package/dist/js/popover/index.d.mts +12 -0
- package/dist/js/{popover.mjs → popover/index.mjs} +40 -50
- package/dist/js/popover/popover.model.d.mts +2 -0
- package/dist/js/popover/popover.model.mjs +12 -0
- package/dist/js/popover.model-ubKNG612.d.mts +38 -0
- package/dist/js/resizable/resizable.embedded.d.mts +2 -2
- package/dist/js/resizable/resizable.embedded.mjs +44 -59
- 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-Bf1qBUdt.d.mts +11 -0
- package/dist/js/resizable.model-BwzJcTVJ.d.mts +46 -0
- package/dist/js/sortable/sortable.embedded.d.mts +2 -2
- package/dist/js/sortable/sortable.embedded.mjs +69 -82
- 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-DzBKAwSG.d.mts +11 -0
- package/dist/js/{splitter.d.mts → splitter/index.d.mts} +8 -7
- package/dist/js/splitter/index.mjs +284 -0
- package/dist/js/splitter/splitter.model.d.mts +2 -0
- package/dist/js/splitter/splitter.model.mjs +37 -0
- package/dist/js/splitter.model-DOLNjLVS.d.mts +57 -0
- package/dist/js/{tabs.d.mts → tabs/index.d.mts} +7 -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-DRBX_JtI.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} +60 -85
- package/dist/js/tooltip/tooltip.model.d.mts +2 -0
- package/dist/js/tooltip/tooltip.model.mjs +15 -0
- package/dist/js/tooltip.model-DRkY_BsL.d.mts +37 -0
- package/package.json +43 -37
- package/dist/js/color-picker.mjs +0 -924
- package/dist/js/combobox/constants.combobox.d.mts +0 -2
- package/dist/js/combobox/dom.combobox.d.mts +0 -27
- package/dist/js/combobox/event.combobox.d.mts +0 -23
- package/dist/js/combobox/misc.combobox.d.mts +0 -2
- package/dist/js/combobox/state.combobox.d.mts +0 -12
- package/dist/js/combobox/state.combobox.mjs +0 -2
- package/dist/js/constants.combobox-DmRAMC64.d.mts +0 -26
- package/dist/js/constants.listbox-DRsXUxd3.d.mts +0 -14
- package/dist/js/dialog.d.mts +0 -47
- package/dist/js/dialog.mjs +0 -131
- package/dist/js/draggable-a6w0J1OD.d.mts +0 -154
- package/dist/js/floatable.embedded-Bct4U5Dm.d.mts +0 -69
- package/dist/js/index-DJdFlTLm.d.mts +0 -177
- package/dist/js/internal/draggable.d.mts +0 -2
- package/dist/js/internal/navigable.d.mts +0 -37
- 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/menu.mjs +0 -172
- package/dist/js/popover.d.mts +0 -38
- package/dist/js/resizable.embedded-3qoR0Bjm.d.mts +0 -34
- package/dist/js/splitter.mjs +0 -322
- package/dist/js/toolbar.mjs +0 -31
- package/dist/js/tooltip.d.mts +0 -45
- package/src/css/a11y.scss +0 -13
- package/src/css/badge.scss +0 -62
- package/src/css/button.scss +0 -50
- package/src/css/color-picker.scss +0 -344
- package/src/css/color.scss +0 -113
- package/src/css/combobox.scss +0 -255
- package/src/css/content.scss +0 -181
- package/src/css/flex.scss +0 -107
- package/src/css/floatable.scss +0 -155
- package/src/css/form.scss +0 -575
- package/src/css/listbox.scss +0 -121
- package/src/css/message.scss +0 -74
- package/src/css/mixins/badge.mixins.scss +0 -53
- package/src/css/mixins/button.mixins.scss +0 -112
- package/src/css/mixins/input.mixins.scss +0 -114
- package/src/css/mixins/message.mixins.scss +0 -41
- package/src/css/mixins/misc.mixins.scss +0 -48
- package/src/css/mixins/shadow.mixins.scss +0 -57
- package/src/css/reset.scss +0 -392
- package/src/css/splitter.scss +0 -89
- package/src/css/table.scss +0 -107
- package/src/css/tabs.scss +0 -74
- package/src/js/color-picker.ts +0 -1653
- package/src/js/combobox/constants.combobox.ts +0 -83
- package/src/js/combobox/dom.combobox.ts +0 -411
- package/src/js/combobox/event.combobox.ts +0 -365
- package/src/js/combobox/index.ts +0 -382
- package/src/js/combobox/misc.combobox.ts +0 -104
- package/src/js/combobox/models.combobox.ts +0 -54
- package/src/js/combobox/state.combobox.ts +0 -246
- package/src/js/dialog.ts +0 -255
- package/src/js/floatable/floatable.embedded.ts +0 -336
- package/src/js/floatable/floatable.standalone.ts +0 -6
- package/src/js/focus-trap/focus-trap.embedded.ts +0 -411
- package/src/js/focus-trap/focus-trap.standalone.ts +0 -1
- package/src/js/index.ts +0 -16
- package/src/js/internal/attributable.ts +0 -73
- package/src/js/internal/draggable.ts +0 -657
- package/src/js/internal/listbox/listbox.constants.ts +0 -25
- package/src/js/internal/listbox/listbox.data.ts +0 -287
- package/src/js/internal/listbox/listbox.dom.ts +0 -446
- package/src/js/internal/listbox/listbox.event.ts +0 -129
- package/src/js/internal/listbox/listbox.form.ts +0 -125
- package/src/js/internal/listbox/listbox.misc.ts +0 -135
- package/src/js/internal/listbox/listbox.model.ts +0 -169
- package/src/js/internal/listbox/listbox.state.ts +0 -82
- package/src/js/internal/misc.ts +0 -27
- package/src/js/internal/navigable.ts +0 -317
- package/src/js/l10n.ts +0 -192
- package/src/js/listbox/constants.listbox.ts +0 -61
- package/src/js/listbox/event.listbox.ts +0 -106
- package/src/js/listbox/index.ts +0 -364
- package/src/js/listbox/misc.listbox.ts +0 -70
- package/src/js/listbox/state.listbox.ts +0 -194
- package/src/js/menu.ts +0 -348
- package/src/js/movable/movable.embedded.ts +0 -318
- package/src/js/movable/movable.standalone.ts +0 -2
- package/src/js/popover.ts +0 -229
- package/src/js/resizable/resizable.embedded.ts +0 -413
- package/src/js/resizable/resizable.standalone.ts +0 -5
- package/src/js/sortable/sortable.embedded.ts +0 -527
- package/src/js/sortable/sortable.standalone.ts +0 -2
- package/src/js/splitter.ts +0 -583
- package/src/js/tabs.ts +0 -441
- package/src/js/toolbar.ts +0 -63
- package/src/js/tooltip.ts +0 -367
- /package/dist/js/combobox/{models.combobox.mjs → combobox.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,500 @@
|
|
|
1
|
+
import { createEmbeddedFloatable } from "./floatable/floatable.embedded.mjs";
|
|
2
|
+
import { getLocalization, localize, updateLocalizations } from "./l10n/index.mjs";
|
|
3
|
+
import { COLOR_PICKER_ATTRIBUTE_COPY_ERROR, COLOR_PICKER_ATTRIBUTE_COPY_SUCCESS, COLOR_PICKER_EXPRESSION_HEX_PREFIX, COLOR_PICKER_INPUT_TYPES, COLOR_PICKER_KEYS, COLOR_PICKER_MESSAGE_INPUT, COLOR_PICKER_MESSAGE_LABEL, COLOR_PICKER_OUTPUTS, COLOR_PICKER_SELECTOR_COPY, COLOR_PICKER_SELECTOR_INPUT, COLOR_PICKER_SELECTOR_OUTPUT_INPUT, COLOR_PICKER_SELECTOR_WELL, COLOR_PICKER_SELECTOR_WELL_KNOB, COLOR_PICKER_SYMBOL, COLOR_PICKER_TAGNAME, colorPickerLocalizations } from "./color-picker/color-picker.constants.mjs";
|
|
4
|
+
import { copyValue } from "./internal/misc.mjs";
|
|
5
|
+
import { OuiColorPickerEvent } from "./color-picker/color-picker.model.mjs";
|
|
6
|
+
import { updateColorPickerForm, updateColorPickerValidity } from "./color-picker/color-picker.form.mjs";
|
|
7
|
+
import { getColorPickerOutputFormat, updateColorPickerOutputCopyLabel, updateColorPickerOutputInputs, updateColorPickerOutputLabels } from "./color-picker/color-picker.output.mjs";
|
|
8
|
+
import { createColorPickerAnchor, createColorPickerContent } from "./color-picker/color-picker.dom.mjs";
|
|
9
|
+
import { getAria, setAria } from "@oscarpalmer/toretto/aria";
|
|
10
|
+
import { getAttribute, setAttribute, setAttributes } from "@oscarpalmer/toretto/attribute";
|
|
11
|
+
import { dispatch, getEventPosition, on } from "@oscarpalmer/toretto/event";
|
|
12
|
+
import { findAncestor } from "@oscarpalmer/toretto/find";
|
|
13
|
+
import { toggleStyles } from "@oscarpalmer/toretto/style";
|
|
14
|
+
import { clamp } from "@oscarpalmer/atoms/number";
|
|
15
|
+
import { supportsTouch } from "@oscarpalmer/toretto/touch";
|
|
16
|
+
import { createElement } from "@oscarpalmer/toretto/create";
|
|
17
|
+
import { getColor, getForegroundColor, isHexColor, isHslColor, isHslaColor, isHwbColor, isHwbaColor, isRgbColor, isRgbaColor } from "@oscarpalmer/atoms/color";
|
|
18
|
+
import { setProperty } from "@oscarpalmer/toretto/property";
|
|
19
|
+
//#region src/js/color-picker/color-picker.state.ts
|
|
20
|
+
function attachColorPicker(state) {
|
|
21
|
+
const { component } = state;
|
|
22
|
+
const { anchor, content, host, id, inline, input, label, listeners, style } = state.component;
|
|
23
|
+
if (!inline) {
|
|
24
|
+
component.floatable = createEmbeddedFloatable(anchor.container ?? anchor.container, content.element, {
|
|
25
|
+
position: "below-start",
|
|
26
|
+
reusable: false
|
|
27
|
+
});
|
|
28
|
+
component.floatable.update();
|
|
29
|
+
}
|
|
30
|
+
const labelId = `${id}_label`;
|
|
31
|
+
setAria(host, {
|
|
32
|
+
describedby: getAria(input, "describedby"),
|
|
33
|
+
labelledby: labelId
|
|
34
|
+
});
|
|
35
|
+
setAttributes(host, { name: input.name === "" ? input.id : input.name });
|
|
36
|
+
label.element.htmlFor = anchor.input.id;
|
|
37
|
+
label.element.id = labelId;
|
|
38
|
+
if (anchor.toggle != null) setAria(anchor.toggle, "expanded", false);
|
|
39
|
+
input.before(style, anchor.container, content.element);
|
|
40
|
+
input.remove();
|
|
41
|
+
listeners.push(on(host, "focusout", () => {
|
|
42
|
+
setTimeout(() => {
|
|
43
|
+
if (colorPickerMovement.parameters == null && !host.contains(document.activeElement)) component.floatable?.hide();
|
|
44
|
+
});
|
|
45
|
+
}), on(anchor.input, "change", () => {
|
|
46
|
+
onColorPickerInput(state);
|
|
47
|
+
}), on(anchor.input, "input", () => {
|
|
48
|
+
onColorPickerInput(state);
|
|
49
|
+
}), on(content.element, "beforetoggle", (event) => {
|
|
50
|
+
if (component.disabled) event.preventDefault();
|
|
51
|
+
}, { passive: false }), on(content.element, "toggle", (event) => {
|
|
52
|
+
const open = event.newState === "open";
|
|
53
|
+
if (anchor.toggle != null) setAria(anchor.toggle, "expanded", open);
|
|
54
|
+
if (open) content.well.knob.focus();
|
|
55
|
+
}), on(content.hue.input, "input", () => {
|
|
56
|
+
onColorPickerHue(state);
|
|
57
|
+
}));
|
|
58
|
+
if (content.opacity != null) listeners.push(on(content.opacity.input, "input", () => {
|
|
59
|
+
onColorPickerOpacity(state);
|
|
60
|
+
}));
|
|
61
|
+
if (content.output?.toggle != null) listeners.push(on(content.element, "change", (event) => {
|
|
62
|
+
onColorPickerOutputValue(event, state);
|
|
63
|
+
}), on(content.element, "input", (event) => {
|
|
64
|
+
onColorPickerOutputValue(event, state);
|
|
65
|
+
}), on(content.output.toggle, "change", () => {
|
|
66
|
+
onColorPickerOutputFormat(state);
|
|
67
|
+
}));
|
|
68
|
+
colorPickers.add(state);
|
|
69
|
+
}
|
|
70
|
+
function detachColorPicker(state) {
|
|
71
|
+
const { component } = state;
|
|
72
|
+
const { anchor, content, floatable, host, input, label, style } = component;
|
|
73
|
+
floatable?.destroy();
|
|
74
|
+
setAria(host, {
|
|
75
|
+
describedby: void 0,
|
|
76
|
+
labelledby: void 0
|
|
77
|
+
});
|
|
78
|
+
setAttributes(host, { name: void 0 });
|
|
79
|
+
label.element.htmlFor = input.id;
|
|
80
|
+
label.element.id = label.id;
|
|
81
|
+
anchor.container.before(input);
|
|
82
|
+
anchor.container.remove();
|
|
83
|
+
content.element.remove();
|
|
84
|
+
style.remove();
|
|
85
|
+
const listeners = component.listeners.splice(0);
|
|
86
|
+
const { length } = listeners;
|
|
87
|
+
for (let index = 0; index < length; index += 1) listeners[index]();
|
|
88
|
+
colorPickers.delete(state);
|
|
89
|
+
}
|
|
90
|
+
function initializeColorPicker(colorPicker) {
|
|
91
|
+
const state = colorPicker[COLOR_PICKER_SYMBOL];
|
|
92
|
+
colorPicker[COLOR_PICKER_SYMBOL].component = initializeColorPickerComponent(colorPicker, state);
|
|
93
|
+
if (state.form.restored != null) {
|
|
94
|
+
colorPicker.value = state.form.restored;
|
|
95
|
+
state.form.restored = void 0;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function initializeColorPickerComponent(element, state) {
|
|
99
|
+
const input = element.querySelector("input");
|
|
100
|
+
if (input == null || !COLOR_PICKER_INPUT_TYPES.has(input.type)) throw new Error(COLOR_PICKER_MESSAGE_INPUT);
|
|
101
|
+
const label = element.querySelector(`label[for="${input.id}"]`);
|
|
102
|
+
if (label == null) throw new Error(COLOR_PICKER_MESSAGE_LABEL);
|
|
103
|
+
element.id = input.id;
|
|
104
|
+
const id = getColorPickerId();
|
|
105
|
+
const labelId = label.id;
|
|
106
|
+
const alpha = element.hasAttribute("alpha");
|
|
107
|
+
const color = getColor(input.value);
|
|
108
|
+
const copy = element.hasAttribute("copy");
|
|
109
|
+
const disabled = element.hasAttribute("disabled") || input.disabled;
|
|
110
|
+
const inline = element.hasAttribute("inline");
|
|
111
|
+
const output = getColorPickerOutput(element);
|
|
112
|
+
const readonly = element.hasAttribute("readonly") || input.readOnly;
|
|
113
|
+
const required = element.hasAttribute("required") || input.required;
|
|
114
|
+
const parameters = {
|
|
115
|
+
alpha,
|
|
116
|
+
color,
|
|
117
|
+
copy,
|
|
118
|
+
id,
|
|
119
|
+
inline,
|
|
120
|
+
input,
|
|
121
|
+
output
|
|
122
|
+
};
|
|
123
|
+
const anchor = createColorPickerAnchor(parameters);
|
|
124
|
+
const content = createColorPickerContent(parameters);
|
|
125
|
+
const formatted = color.toHexString(alpha);
|
|
126
|
+
state.component = {
|
|
127
|
+
alpha,
|
|
128
|
+
anchor,
|
|
129
|
+
content,
|
|
130
|
+
copy,
|
|
131
|
+
disabled,
|
|
132
|
+
id,
|
|
133
|
+
inline,
|
|
134
|
+
input,
|
|
135
|
+
output,
|
|
136
|
+
readonly,
|
|
137
|
+
required,
|
|
138
|
+
color: {
|
|
139
|
+
foreground: "",
|
|
140
|
+
value: color
|
|
141
|
+
},
|
|
142
|
+
host: element,
|
|
143
|
+
label: {
|
|
144
|
+
element: label,
|
|
145
|
+
id: labelId
|
|
146
|
+
},
|
|
147
|
+
listeners: [],
|
|
148
|
+
localizations: {
|
|
149
|
+
component: {},
|
|
150
|
+
global: colorPickerLocalizations
|
|
151
|
+
},
|
|
152
|
+
style: createElement("style"),
|
|
153
|
+
value: {
|
|
154
|
+
current: formatted,
|
|
155
|
+
initial: formatted
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
attachColorPicker(state);
|
|
159
|
+
setAttributes(element, {
|
|
160
|
+
output,
|
|
161
|
+
alpha: alpha ? "" : void 0,
|
|
162
|
+
copy: copy ? "" : void 0,
|
|
163
|
+
inline: inline ? "" : void 0
|
|
164
|
+
});
|
|
165
|
+
setColorPickerDisabled(state, "disabled", disabled);
|
|
166
|
+
setColorPickerDisabled(state, "readonly", readonly);
|
|
167
|
+
setColorPickerRequired(state, required);
|
|
168
|
+
setColorPickerValues(state, false);
|
|
169
|
+
updateColorPickerLabels(state);
|
|
170
|
+
updateColorPickerValidity(state, isHexColor(state.component.value.current, alpha));
|
|
171
|
+
return state.component;
|
|
172
|
+
}
|
|
173
|
+
const colorPickers = /* @__PURE__ */ new Set();
|
|
174
|
+
//#endregion
|
|
175
|
+
//#region src/js/color-picker/color-picker.misc.ts
|
|
176
|
+
function getColorPickerId() {
|
|
177
|
+
index += 1;
|
|
178
|
+
return `oui_color_picker_${index}`;
|
|
179
|
+
}
|
|
180
|
+
function getColorPickerOutput(element) {
|
|
181
|
+
const attribute = getAttribute(element, "output");
|
|
182
|
+
return COLOR_PICKER_OUTPUTS.has(attribute) ? attribute : "none";
|
|
183
|
+
}
|
|
184
|
+
function getColorPickerValueType(state, value) {
|
|
185
|
+
const { alpha } = state.component;
|
|
186
|
+
switch (true) {
|
|
187
|
+
case isHexColor(value, alpha): return alpha ? "hexa" : "hex";
|
|
188
|
+
case isHslColor(value): return "hsl";
|
|
189
|
+
case isHslaColor(value): return "hsla";
|
|
190
|
+
case isHwbColor(value): return "hwb";
|
|
191
|
+
case isHwbaColor(value): return "hwba";
|
|
192
|
+
case isRgbColor(value): return "rgb";
|
|
193
|
+
case isRgbaColor(value): return "rgba";
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
function setColorPickerLocalizations(first, second) {
|
|
197
|
+
updateColorPickerLocalizations(colorPickerLocalizations, colorPickerLocalizations.values, first, second);
|
|
198
|
+
}
|
|
199
|
+
function setColorPickerDisabled(state, type, value) {
|
|
200
|
+
const { component } = state;
|
|
201
|
+
component[type] = value;
|
|
202
|
+
setAria(component.host, type, value);
|
|
203
|
+
component.anchor.input.readOnly = value;
|
|
204
|
+
setAria(component.anchor.input, type, value);
|
|
205
|
+
setProperty(component.content.hue.input, "disabled", component.disabled || component.readonly);
|
|
206
|
+
if (component.anchor.toggle != null) setAria(component.anchor.toggle, "disabled", component.disabled);
|
|
207
|
+
if (component.content.opacity != null) setProperty(component.content.opacity.input, "disabled", component.disabled || component.readonly);
|
|
208
|
+
}
|
|
209
|
+
function setColorPickerRequired(state, value) {
|
|
210
|
+
const { component } = state;
|
|
211
|
+
component.required = value;
|
|
212
|
+
setAria(component.host, "required", value);
|
|
213
|
+
setAria(component.anchor.input, "required", value);
|
|
214
|
+
updateColorPickerValidity(state, isHexColor(component.value.current, component.alpha));
|
|
215
|
+
}
|
|
216
|
+
function setColorPickerValue(state, value, type) {
|
|
217
|
+
if (state == null) return;
|
|
218
|
+
const actual = type ?? getColorPickerValueType(state, value);
|
|
219
|
+
if (actual == null || type != null && type !== actual) return;
|
|
220
|
+
state.component.color.value[actual] = value;
|
|
221
|
+
setColorPickerValues(state, true);
|
|
222
|
+
}
|
|
223
|
+
function setColorPickerValues(state, focus, input) {
|
|
224
|
+
const { component } = state;
|
|
225
|
+
const { anchor, color, content, host, style } = component;
|
|
226
|
+
color.foreground = getForegroundColor(color.value).hex;
|
|
227
|
+
const { alpha, hex, hsl, rgb } = color.value;
|
|
228
|
+
const { hue, lightness, saturation } = hsl;
|
|
229
|
+
const { blue, green, red } = rgb;
|
|
230
|
+
const value = input ?? color.value.toHexString(component.alpha);
|
|
231
|
+
anchor.input.value = value;
|
|
232
|
+
content.hue.input.valueAsNumber = hue;
|
|
233
|
+
if (content.opacity != null) content.opacity.input.valueAsNumber = alpha;
|
|
234
|
+
component.value.current = value;
|
|
235
|
+
style.textContent = `#${host.id} {
|
|
236
|
+
--oui-color-picker-alpha: ${alpha};
|
|
237
|
+
--oui-color-picker-blue: ${blue};
|
|
238
|
+
--oui-color-picker-green: ${green};
|
|
239
|
+
--oui-color-picker-foreground: #${color.foreground};
|
|
240
|
+
--oui-color-picker-hex: #${hex};
|
|
241
|
+
--oui-color-picker-hue: ${hue};
|
|
242
|
+
--oui-color-picker-lightness: ${lightness};
|
|
243
|
+
--oui-color-picker-red: ${red};
|
|
244
|
+
--oui-color-picker-saturation: ${saturation};
|
|
245
|
+
}`;
|
|
246
|
+
updateColorPickerForm(state, isHexColor(component.value.current, component.alpha));
|
|
247
|
+
updateColorPickerOutputInputs(state);
|
|
248
|
+
updateColorPickerWell(state);
|
|
249
|
+
if (focus) content.well.knob.focus();
|
|
250
|
+
}
|
|
251
|
+
function updateColorPickerLabels(state) {
|
|
252
|
+
const { anchor, content, host, localizations } = state.component;
|
|
253
|
+
const { component, global } = localizations;
|
|
254
|
+
if (anchor.toggle != null) setAria(anchor.toggle, "label", localize(getLocalization(global, host, "toggle", component), {}, []));
|
|
255
|
+
content.hue.label.textContent = localize(getLocalization(global, host, "hue", component), {}, []);
|
|
256
|
+
content.well.label.textContent = localize(getLocalization(global, host, "wellLabel", component), {}, []);
|
|
257
|
+
updateColorPickerOutputLabels(state);
|
|
258
|
+
updateColorPickerWell(state);
|
|
259
|
+
if (content.opacity != null) content.opacity.label.textContent = localize(getLocalization(global, host, "opacity", component), {}, []);
|
|
260
|
+
}
|
|
261
|
+
function updateColorPickerLocalizations(instance, destination, first, second) {
|
|
262
|
+
updateLocalizations(instance, typeof first === "string" ? { [first]: second } : first, destination, () => {
|
|
263
|
+
for (const state of colorPickers) updateColorPickerLabels(state);
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
function updateColorPickerWell(state) {
|
|
267
|
+
const { color, content, host, localizations } = state.component;
|
|
268
|
+
const { component, global } = localizations;
|
|
269
|
+
const { lightness, saturation } = color.value.hsl;
|
|
270
|
+
setAria(content.well.knob, "valuetext", localize(getLocalization(global, host, "wellValue", component), {
|
|
271
|
+
lightness,
|
|
272
|
+
saturation
|
|
273
|
+
}, [lightness, saturation]));
|
|
274
|
+
}
|
|
275
|
+
let index = 0;
|
|
276
|
+
//#endregion
|
|
277
|
+
//#region src/js/color-picker/color-picker.event.ts
|
|
278
|
+
function cancelMove(parameters) {
|
|
279
|
+
parameters.state.component.color.value.hexa = parameters.value;
|
|
280
|
+
setColorPickerValues(parameters.state, true);
|
|
281
|
+
colorPickerMovement.parameters = void 0;
|
|
282
|
+
styleToggler.remove();
|
|
283
|
+
}
|
|
284
|
+
function onClick(event) {
|
|
285
|
+
const button = findAncestor(event, COLOR_PICKER_SELECTOR_COPY);
|
|
286
|
+
if (!(button instanceof HTMLButtonElement)) return;
|
|
287
|
+
setAttributes(button, {
|
|
288
|
+
[COLOR_PICKER_ATTRIBUTE_COPY_ERROR]: void 0,
|
|
289
|
+
[COLOR_PICKER_ATTRIBUTE_COPY_SUCCESS]: void 0
|
|
290
|
+
});
|
|
291
|
+
const state = findAncestor(event, COLOR_PICKER_TAGNAME)?.[COLOR_PICKER_SYMBOL];
|
|
292
|
+
if (state == null || state.component.disabled) return;
|
|
293
|
+
const { component } = state;
|
|
294
|
+
const copy = button.dataset.color == null ? component.content.output?.copy : component.anchor.copy;
|
|
295
|
+
if (copy == null) return;
|
|
296
|
+
if (copy.timer != null) {
|
|
297
|
+
clearTimeout(copy.timer);
|
|
298
|
+
copy.timer = void 0;
|
|
299
|
+
}
|
|
300
|
+
const color = button.dataset.color ?? getColorPickerOutputFormat(state);
|
|
301
|
+
if (color == null) return;
|
|
302
|
+
let value;
|
|
303
|
+
switch (color) {
|
|
304
|
+
case "hex":
|
|
305
|
+
value = component.color.value.toHexString(component.alpha);
|
|
306
|
+
break;
|
|
307
|
+
case "hsl":
|
|
308
|
+
value = component.color.value.toHslString(component.alpha);
|
|
309
|
+
break;
|
|
310
|
+
case "hwb":
|
|
311
|
+
value = component.color.value.toHwbString(component.alpha);
|
|
312
|
+
break;
|
|
313
|
+
case "rgb": value = component.color.value.toRgbString(component.alpha);
|
|
314
|
+
}
|
|
315
|
+
if (value != null) copyValue(value, () => {
|
|
316
|
+
updateColorPickerCopy(copy, COLOR_PICKER_ATTRIBUTE_COPY_SUCCESS);
|
|
317
|
+
}, () => {
|
|
318
|
+
updateColorPickerCopy(copy, COLOR_PICKER_ATTRIBUTE_COPY_ERROR);
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
function onColorPickerHue(state) {
|
|
322
|
+
const { component } = state;
|
|
323
|
+
const hue = component.content.hue.input.valueAsNumber;
|
|
324
|
+
component.color.value.hsla = {
|
|
325
|
+
...component.color.value.hsla,
|
|
326
|
+
hue
|
|
327
|
+
};
|
|
328
|
+
setColorPickerValues(state, false);
|
|
329
|
+
}
|
|
330
|
+
function onColorPickerInput(state) {
|
|
331
|
+
const { component } = state;
|
|
332
|
+
const { alpha, anchor, color, host } = component;
|
|
333
|
+
const value = anchor.input.value.replace(COLOR_PICKER_EXPRESSION_HEX_PREFIX, "");
|
|
334
|
+
if (value.toLowerCase() === (alpha ? color.value.hexa : color.value.hex).toLowerCase()) return;
|
|
335
|
+
component.value.current = anchor.input.value;
|
|
336
|
+
const { length } = value;
|
|
337
|
+
let valid;
|
|
338
|
+
if (alpha) valid = isHexColor(value, true) && (length === 4 || length === 8);
|
|
339
|
+
else valid = isHexColor(value) && (length === 3 || length === 6);
|
|
340
|
+
if (valid) {
|
|
341
|
+
if (length === 3 || length === 6) color.value.hex = value;
|
|
342
|
+
else color.value.hexa = value;
|
|
343
|
+
}
|
|
344
|
+
setColorPickerValues(state, false, anchor.input.value);
|
|
345
|
+
dispatch(host, new OuiColorPickerEvent("oui:input", color.value, valid));
|
|
346
|
+
}
|
|
347
|
+
function onColorPickerOpacity(state) {
|
|
348
|
+
const { component } = state;
|
|
349
|
+
const opacity = component.content.opacity?.input.valueAsNumber;
|
|
350
|
+
if (opacity == null) return;
|
|
351
|
+
component.color.value.alpha = opacity;
|
|
352
|
+
setColorPickerValues(state, false);
|
|
353
|
+
}
|
|
354
|
+
function onColorPickerOutputFormat(state) {
|
|
355
|
+
const { content } = state.component;
|
|
356
|
+
const { items, toggle } = content.output ?? {};
|
|
357
|
+
if (items == null || toggle == null) return;
|
|
358
|
+
const attribute = `${COLOR_PICKER_TAGNAME}-output-${toggle.value}`;
|
|
359
|
+
for (const item of items) item.hidden = !item.hasAttribute(attribute);
|
|
360
|
+
if (content.output?.copy != null) updateColorPickerOutputCopyLabel(state, content.output.copy.button);
|
|
361
|
+
}
|
|
362
|
+
function onColorPickerOutputValue(event, state) {
|
|
363
|
+
const input = findAncestor(event, COLOR_PICKER_SELECTOR_OUTPUT_INPUT);
|
|
364
|
+
if (!(input instanceof HTMLInputElement)) return;
|
|
365
|
+
const color = input.dataset.color;
|
|
366
|
+
const property = input.dataset.property;
|
|
367
|
+
if (color == null || property == null) return;
|
|
368
|
+
if (outputTimer != null) clearTimeout(outputTimer);
|
|
369
|
+
outputTimer = setTimeout(() => {
|
|
370
|
+
outputTimer = void 0;
|
|
371
|
+
state.component.color.value[color] = {
|
|
372
|
+
...state.component.color.value[color],
|
|
373
|
+
[property]: input.valueAsNumber
|
|
374
|
+
};
|
|
375
|
+
setColorPickerValues(state, false);
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
function onEnter(state) {
|
|
379
|
+
const { component, form } = state;
|
|
380
|
+
const { alpha, anchor, color } = component;
|
|
381
|
+
const input = anchor.input.value.replace(COLOR_PICKER_EXPRESSION_HEX_PREFIX, "");
|
|
382
|
+
const short = alpha ? input.length === 4 : input.length === 3;
|
|
383
|
+
if (isHexColor(input, alpha) && short) anchor.input.value = color.value.toHexString(alpha);
|
|
384
|
+
form.internals.form?.requestSubmit();
|
|
385
|
+
}
|
|
386
|
+
function onKeydown(event) {
|
|
387
|
+
if (colorPickerMovement.parameters != null && event.key === "Escape") {
|
|
388
|
+
cancelMove(colorPickerMovement.parameters);
|
|
389
|
+
return;
|
|
390
|
+
}
|
|
391
|
+
const knob = findAncestor(event, COLOR_PICKER_SELECTOR_WELL_KNOB);
|
|
392
|
+
if (!(event.key === "Enter" && findAncestor(event, COLOR_PICKER_SELECTOR_INPUT) != null || COLOR_PICKER_KEYS.has(event.key) && knob != null)) return;
|
|
393
|
+
const state = findAncestor(event, COLOR_PICKER_TAGNAME)?.[COLOR_PICKER_SYMBOL];
|
|
394
|
+
if (state == null || state.component.disabled || state.component.readonly) return;
|
|
395
|
+
event.preventDefault();
|
|
396
|
+
const { component } = state;
|
|
397
|
+
if (event.key === "Enter") {
|
|
398
|
+
onEnter(state);
|
|
399
|
+
return;
|
|
400
|
+
}
|
|
401
|
+
if (knob == null) return;
|
|
402
|
+
const modifier = event.shiftKey ? 10 : 1;
|
|
403
|
+
let { lightness, saturation } = component.color.value.hsl;
|
|
404
|
+
switch (event.key) {
|
|
405
|
+
case "ArrowDown":
|
|
406
|
+
lightness -= 1 * modifier;
|
|
407
|
+
break;
|
|
408
|
+
case "ArrowLeft":
|
|
409
|
+
saturation -= 1 * modifier;
|
|
410
|
+
break;
|
|
411
|
+
case "ArrowRight":
|
|
412
|
+
saturation += 1 * modifier;
|
|
413
|
+
break;
|
|
414
|
+
case "ArrowUp":
|
|
415
|
+
lightness += 1 * modifier;
|
|
416
|
+
break;
|
|
417
|
+
case "End":
|
|
418
|
+
lightness = 0;
|
|
419
|
+
break;
|
|
420
|
+
case "Home":
|
|
421
|
+
lightness = 100;
|
|
422
|
+
break;
|
|
423
|
+
case "PageDown":
|
|
424
|
+
lightness -= 10;
|
|
425
|
+
break;
|
|
426
|
+
case "PageUp": lightness += 10;
|
|
427
|
+
}
|
|
428
|
+
component.color.value.hsl = {
|
|
429
|
+
...state.component.color.value.hsl,
|
|
430
|
+
lightness: clamp(lightness, 0, 100),
|
|
431
|
+
saturation: clamp(saturation, 0, 100)
|
|
432
|
+
};
|
|
433
|
+
setColorPickerValues(state, false);
|
|
434
|
+
}
|
|
435
|
+
function onPointerdown(event) {
|
|
436
|
+
if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey || (supportsTouch.value ? event.type === "mousedown" : event.type === "touchstart" || event.button !== 0)) return;
|
|
437
|
+
const well = findAncestor(event, COLOR_PICKER_SELECTOR_WELL);
|
|
438
|
+
if (well == null) return;
|
|
439
|
+
const element = findAncestor(event, COLOR_PICKER_TAGNAME);
|
|
440
|
+
if (element == null) return;
|
|
441
|
+
if (supportsTouch.value) event.preventDefault();
|
|
442
|
+
if (getEventPosition(event) == null) return;
|
|
443
|
+
const state = element?.[COLOR_PICKER_SYMBOL];
|
|
444
|
+
if (state == null || state.component.disabled || state.component.readonly) return;
|
|
445
|
+
colorPickerMovement.parameters = {
|
|
446
|
+
state,
|
|
447
|
+
rectangle: well.getBoundingClientRect(),
|
|
448
|
+
value: state.component.color.value.hexa
|
|
449
|
+
};
|
|
450
|
+
styleToggler.set();
|
|
451
|
+
}
|
|
452
|
+
function onPointermove(event) {
|
|
453
|
+
if (colorPickerMovement.parameters == null) return;
|
|
454
|
+
const position = getEventPosition(event);
|
|
455
|
+
if (position != null) updateColorPickerValues(colorPickerMovement.parameters, position);
|
|
456
|
+
}
|
|
457
|
+
function onPointerup(event) {
|
|
458
|
+
if (colorPickerMovement.parameters == null) return;
|
|
459
|
+
const position = getEventPosition(event);
|
|
460
|
+
if (position != null) updateColorPickerValues(colorPickerMovement.parameters, position);
|
|
461
|
+
colorPickerMovement.parameters = void 0;
|
|
462
|
+
styleToggler.remove();
|
|
463
|
+
}
|
|
464
|
+
function updateColorPickerCopy(copy, attribute) {
|
|
465
|
+
const { button } = copy;
|
|
466
|
+
setAttribute(button, attribute, "");
|
|
467
|
+
copy.timer = setTimeout(() => {
|
|
468
|
+
copy.timer = void 0;
|
|
469
|
+
setAttribute(button, attribute, void 0);
|
|
470
|
+
}, styleTime);
|
|
471
|
+
}
|
|
472
|
+
function updateColorPickerValues(parameters, position) {
|
|
473
|
+
const { rectangle, state } = parameters;
|
|
474
|
+
const { x, y } = position;
|
|
475
|
+
const top = clamp((y - rectangle.top) / rectangle.height, 0, 1);
|
|
476
|
+
const left = clamp((x - rectangle.left) / rectangle.width, 0, 1);
|
|
477
|
+
state.component.color.value.hsl = {
|
|
478
|
+
...state.component.color.value.hsl,
|
|
479
|
+
lightness: (1 - top) * 100,
|
|
480
|
+
saturation: left * 100
|
|
481
|
+
};
|
|
482
|
+
setColorPickerValues(state, true);
|
|
483
|
+
}
|
|
484
|
+
const styleToggler = toggleStyles(document.body, {
|
|
485
|
+
touchAction: "none",
|
|
486
|
+
userSelect: "none",
|
|
487
|
+
webkitUserSelect: "none"
|
|
488
|
+
});
|
|
489
|
+
const colorPickerMovement = {};
|
|
490
|
+
const styleTime = 2500;
|
|
491
|
+
let outputTimer;
|
|
492
|
+
on(document, "click", onClick);
|
|
493
|
+
on(document, "keydown", onKeydown, { passive: false });
|
|
494
|
+
on(document, "mousedown", onPointerdown);
|
|
495
|
+
on(document, "pointermove", onPointermove);
|
|
496
|
+
on(document, "pointerup", onPointerup);
|
|
497
|
+
on(document, "touchcancel", onPointerup);
|
|
498
|
+
on(document, "touchstart", onPointerdown, { passive: false });
|
|
499
|
+
//#endregion
|
|
500
|
+
export { attachColorPicker as _, onColorPickerOutputFormat as a, initializeColorPicker as b, getColorPickerOutput as c, setColorPickerLocalizations as d, setColorPickerRequired as f, updateColorPickerLocalizations as g, updateColorPickerLabels as h, onColorPickerOpacity as i, getColorPickerValueType as l, setColorPickerValues as m, onColorPickerHue as n, onColorPickerOutputValue as o, setColorPickerValue as p, onColorPickerInput as r, getColorPickerId as s, colorPickerMovement as t, setColorPickerDisabled as u, colorPickers as v, initializeColorPickerComponent as x, detachColorPicker as y };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { c as OuiLocalizations } from "./l10n.model-D6a9frgl.mjs";
|
|
2
|
+
import { H as OuiColorPickerValueType, N as OuiColorPickerLocalizations, R as OuiColorPickerOutputType, S as GenericOuiColorPickerElement, z as OuiColorPickerState } from "./color-picker.constants-D1mxw_Le.mjs";
|
|
3
|
+
//#region src/js/color-picker/color-picker.misc.d.ts
|
|
4
|
+
declare function getColorPickerId(): string;
|
|
5
|
+
declare function getColorPickerOutput(element: GenericOuiColorPickerElement): OuiColorPickerOutputType;
|
|
6
|
+
declare function getColorPickerValueType(state: OuiColorPickerState, value: unknown): OuiColorPickerValueType | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Set localizations for a specific language
|
|
9
|
+
*
|
|
10
|
+
* @param language Language code
|
|
11
|
+
* @param localizations Localizations for language
|
|
12
|
+
*/
|
|
13
|
+
declare function setColorPickerLocalizations(language: string, localizations: Partial<OuiColorPickerLocalizations>): void;
|
|
14
|
+
/**
|
|
15
|
+
* Set localizations for one or more languages
|
|
16
|
+
*
|
|
17
|
+
* @param localizations Localizations for one or more languages
|
|
18
|
+
*/
|
|
19
|
+
declare function setColorPickerLocalizations(localizations: Record<string, Partial<OuiColorPickerLocalizations>>): void;
|
|
20
|
+
declare function setColorPickerDisabled(state: OuiColorPickerState, type: "disabled" | "readonly", value: boolean): void;
|
|
21
|
+
declare function setColorPickerRequired(state: OuiColorPickerState, value: boolean): void;
|
|
22
|
+
declare function setColorPickerValue<Type extends OuiColorPickerValueType>(state: OuiColorPickerState, value: unknown, type?: Type): void;
|
|
23
|
+
declare function setColorPickerValues(state: OuiColorPickerState, focus: boolean, input?: string): void;
|
|
24
|
+
declare function updateColorPickerLabels(state: OuiColorPickerState): void;
|
|
25
|
+
declare function updateColorPickerLocalizations(instance: OuiLocalizations<OuiColorPickerLocalizations>, destination: Record<string, Partial<OuiColorPickerLocalizations>>, first: string | Record<string, Partial<OuiColorPickerLocalizations>>, second?: Partial<OuiColorPickerLocalizations>): void;
|
|
26
|
+
//#endregion
|
|
27
|
+
export { setColorPickerLocalizations as a, setColorPickerValues as c, setColorPickerDisabled as i, updateColorPickerLabels as l, getColorPickerOutput as n, setColorPickerRequired as o, getColorPickerValueType as r, setColorPickerValue as s, getColorPickerId as t, updateColorPickerLocalizations as u };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as COMBOBOX_SYMBOL, c as comboboxMessages, d as messageSelect, f as selectorAnchor, h as selectorSelectionItem, i as COMBOBOX_AUTOCOMPLETES, l as comboboxSelectors, m as selectorOption, n as COMBOBOX_ATTRIBUTE_SELECTION, o as COMBOBOX_TAGNAME, p as selectorContent, r as COMBOBOX_ATTRIBUTE_SELECTION_ITEM, s as comboboxAttributes, t as COMBOBOX_ATTRIBUTE_ANCHOR, u as messageLabel } from "../combobox.constants-DZVkMP5g.mjs";
|
|
2
|
+
export { COMBOBOX_ATTRIBUTE_ANCHOR, COMBOBOX_ATTRIBUTE_SELECTION, COMBOBOX_ATTRIBUTE_SELECTION_ITEM, COMBOBOX_AUTOCOMPLETES, COMBOBOX_SYMBOL, COMBOBOX_TAGNAME, comboboxAttributes, comboboxMessages, comboboxSelectors, messageLabel, messageSelect, selectorAnchor, selectorContent, selectorOption, selectorSelectionItem };
|
|
@@ -1,6 +1,15 @@
|
|
|
1
|
-
//#region src/js/combobox/constants.
|
|
1
|
+
//#region src/js/combobox/combobox.constants.ts
|
|
2
2
|
const COMBOBOX_TAGNAME = "oui-combobox";
|
|
3
3
|
const COMBOBOX_ATTRIBUTE_ANCHOR = `${COMBOBOX_TAGNAME}-anchor`;
|
|
4
|
+
const COMBOBOX_ATTRIBUTE_SELECTION = `${COMBOBOX_TAGNAME}-selection`;
|
|
5
|
+
const COMBOBOX_ATTRIBUTE_SELECTION_ITEM = `${COMBOBOX_TAGNAME}-selection-item`;
|
|
6
|
+
const COMBOBOX_AUTOCOMPLETES = /* @__PURE__ */ new Set([
|
|
7
|
+
"both",
|
|
8
|
+
"inline",
|
|
9
|
+
"list",
|
|
10
|
+
"none"
|
|
11
|
+
]);
|
|
12
|
+
const COMBOBOX_SYMBOL = Symbol(COMBOBOX_TAGNAME);
|
|
4
13
|
const attributeContent = `${COMBOBOX_TAGNAME}-content`;
|
|
5
14
|
const attributeFilter = `${COMBOBOX_TAGNAME}-filter`;
|
|
6
15
|
const attributeFilterInput = `${attributeFilter}-input`;
|
|
@@ -11,23 +20,8 @@ const attributeList = `${COMBOBOX_TAGNAME}-list`;
|
|
|
11
20
|
const attributeListEmpty = `${attributeList}-empty`;
|
|
12
21
|
const attributeMessage = `${COMBOBOX_TAGNAME}-message`;
|
|
13
22
|
const attributeOption = `${COMBOBOX_TAGNAME}-option`;
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
const COMBOBOX_ATTRIBUTE_SELECTION_ITEM = `${COMBOBOX_TAGNAME}-selection-item`;
|
|
17
|
-
const COMBOBOX_AUTOCOMPLETES = /* @__PURE__ */ new Set([
|
|
18
|
-
"both",
|
|
19
|
-
"inline",
|
|
20
|
-
"list",
|
|
21
|
-
"none"
|
|
22
|
-
]);
|
|
23
|
-
const messageLabel = `<${COMBOBOX_TAGNAME}> must contain a <label> element for the <select> element`;
|
|
24
|
-
const messageSelect = `<${COMBOBOX_TAGNAME}> must contain a valid <select> element`;
|
|
25
|
-
const selectorAnchor = `[${COMBOBOX_ATTRIBUTE_ANCHOR}]`;
|
|
26
|
-
const selectorContent = `[${attributeContent}]`;
|
|
27
|
-
const selectorOption = `[${attributeOption}]`;
|
|
28
|
-
const selectorSelectionItem = `[${COMBOBOX_ATTRIBUTE_SELECTION_ITEM}]`;
|
|
29
|
-
const COMBOBOX_ATTRIBUTES = {
|
|
30
|
-
active: attributeOptionActive,
|
|
23
|
+
const comboboxAttributes = {
|
|
24
|
+
active: `${COMBOBOX_TAGNAME}-option-active`,
|
|
31
25
|
content: attributeContent,
|
|
32
26
|
empty: attributeListEmpty,
|
|
33
27
|
filter: attributeFilter,
|
|
@@ -39,15 +33,21 @@ const COMBOBOX_ATTRIBUTES = {
|
|
|
39
33
|
message: attributeMessage,
|
|
40
34
|
option: attributeOption
|
|
41
35
|
};
|
|
42
|
-
const
|
|
36
|
+
const messageLabel = `<${COMBOBOX_TAGNAME}> must contain a <label> element for the <select> element`;
|
|
37
|
+
const messageSelect = `<${COMBOBOX_TAGNAME}> must contain a valid <select> element`;
|
|
38
|
+
const comboboxMessages = {
|
|
43
39
|
label: messageLabel,
|
|
44
40
|
select: messageSelect
|
|
45
41
|
};
|
|
46
|
-
const
|
|
42
|
+
const selectorAnchor = `[${COMBOBOX_ATTRIBUTE_ANCHOR}]`;
|
|
43
|
+
const selectorContent = `[${attributeContent}]`;
|
|
44
|
+
const selectorOption = `[${attributeOption}]`;
|
|
45
|
+
const selectorSelectionItem = `[${COMBOBOX_ATTRIBUTE_SELECTION_ITEM}]`;
|
|
46
|
+
const comboboxSelectors = {
|
|
47
47
|
anchor: selectorAnchor,
|
|
48
48
|
content: selectorContent,
|
|
49
49
|
selectionItem: selectorSelectionItem,
|
|
50
50
|
option: selectorOption
|
|
51
51
|
};
|
|
52
52
|
//#endregion
|
|
53
|
-
export {
|
|
53
|
+
export { COMBOBOX_ATTRIBUTE_ANCHOR, COMBOBOX_ATTRIBUTE_SELECTION, COMBOBOX_ATTRIBUTE_SELECTION_ITEM, COMBOBOX_AUTOCOMPLETES, COMBOBOX_SYMBOL, COMBOBOX_TAGNAME, comboboxAttributes, comboboxMessages, comboboxSelectors, messageLabel, messageSelect, selectorAnchor, selectorContent, selectorOption, selectorSelectionItem };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { c as OuiListboxPreview } from "../listbox.model-CuBOj4qe.mjs";
|
|
2
|
+
import { CreateListboxContent, CreateListboxContentParameters } from "../internal/listbox/listbox.dom.mjs";
|
|
3
|
+
import { c as OuiComboboxState, o as OuiComboboxSelection, s as OuiComboboxSelectionItem } from "../combobox.model-oDV06XCN.mjs";
|
|
4
|
+
//#region src/js/combobox/combobox.dom.d.ts
|
|
5
|
+
type CreateAnchor = {
|
|
6
|
+
container?: HTMLElement;
|
|
7
|
+
element: HTMLElement;
|
|
8
|
+
selection?: OuiComboboxSelection;
|
|
9
|
+
};
|
|
10
|
+
type CreateSelectionItemsParameters = {
|
|
11
|
+
container: HTMLElement;
|
|
12
|
+
items: OuiComboboxSelectionItem[];
|
|
13
|
+
options: HTMLElement[];
|
|
14
|
+
state?: OuiComboboxState;
|
|
15
|
+
};
|
|
16
|
+
export declare function createComboboxAnchor(parameters: CreateListboxContentParameters): CreateAnchor;
|
|
17
|
+
export declare function createComboboxButton(parameters: CreateListboxContentParameters): CreateAnchor;
|
|
18
|
+
export declare function createComboboxContent(parameters: CreateListboxContentParameters): CreateListboxContent;
|
|
19
|
+
export declare function createComboboxSelection(id: string, select: HTMLSelectElement): OuiComboboxSelection;
|
|
20
|
+
export declare function createComboboxSelectionItem(option: HTMLElement, state?: OuiComboboxState): OuiComboboxSelectionItem;
|
|
21
|
+
export declare function createComboboxSelectionItems(parameters: CreateSelectionItemsParameters): void;
|
|
22
|
+
export declare function updateComboboxTabindices(state: OuiComboboxState, active?: HTMLElement): void;
|
|
23
|
+
export declare function updateComboboxAutocomplete(preview: OuiListboxPreview, state: OuiComboboxState, active?: HTMLElement): void;
|
|
24
|
+
export declare function updateComboboxSelection(state: OuiComboboxState, active: HTMLElement | undefined, added: boolean, selected?: HTMLElement[]): void;
|
|
25
|
+
export declare function updateComboboxSelectionItems(state: OuiComboboxState): void;
|
|
26
|
+
//#endregion
|