@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.
Files changed (264) hide show
  1. package/README.md +1 -1
  2. package/dist/css/badge.css +11 -8
  3. package/dist/css/button.css +106 -14
  4. package/dist/css/color-picker.css +555 -73
  5. package/dist/css/color.css +86 -86
  6. package/dist/css/combobox.css +98 -4
  7. package/dist/css/content.css +7 -6
  8. package/dist/css/floatable.css +1 -3
  9. package/dist/css/form.css +99 -6
  10. package/dist/css/icon.css +99 -0
  11. package/dist/css/listbox.css +3 -0
  12. package/dist/css/message.css +4 -3
  13. package/dist/css/mixins/button.mixins.css +1 -0
  14. package/dist/css/reset.css +1 -1
  15. package/dist/css/tabs.css +95 -3
  16. package/dist/css/typography.css +90 -0
  17. package/dist/js/color-picker/color-picker.constants.d.mts +2 -0
  18. package/dist/js/color-picker/color-picker.constants.mjs +60 -0
  19. package/dist/js/color-picker/color-picker.dom.d.mts +8 -0
  20. package/dist/js/color-picker/color-picker.dom.mjs +191 -0
  21. package/dist/js/color-picker/color-picker.event.d.mts +9 -0
  22. package/dist/js/color-picker/color-picker.event.mjs +2 -0
  23. package/dist/js/color-picker/color-picker.form.d.mts +5 -0
  24. package/dist/js/color-picker/color-picker.form.mjs +27 -0
  25. package/dist/js/color-picker/color-picker.misc.d.mts +2 -0
  26. package/dist/js/color-picker/color-picker.misc.mjs +2 -0
  27. package/dist/js/color-picker/color-picker.model.d.mts +2 -0
  28. package/dist/js/color-picker/color-picker.model.mjs +24 -0
  29. package/dist/js/color-picker/color-picker.output.d.mts +8 -0
  30. package/dist/js/color-picker/color-picker.output.mjs +235 -0
  31. package/dist/js/color-picker/color-picker.state.d.mts +8 -0
  32. package/dist/js/color-picker/color-picker.state.mjs +2 -0
  33. package/dist/js/{color-picker.d.mts → color-picker/index.d.mts} +10 -43
  34. package/dist/js/color-picker/index.mjs +305 -0
  35. package/dist/js/color-picker.constants-D1mxw_Le.d.mts +179 -0
  36. package/dist/js/color-picker.event-Cksj5TvS.mjs +500 -0
  37. package/dist/js/color-picker.misc-CtsXGrOe.d.mts +27 -0
  38. package/dist/js/combobox/combobox.constants.d.mts +2 -0
  39. package/dist/js/combobox/{constants.combobox.mjs → combobox.constants.mjs} +21 -21
  40. package/dist/js/combobox/combobox.dom.d.mts +26 -0
  41. package/dist/js/combobox/{dom.combobox.mjs → combobox.dom.mjs} +44 -37
  42. package/dist/js/combobox/combobox.event.d.mts +22 -0
  43. package/dist/js/combobox/{event.combobox.mjs → combobox.event.mjs} +1 -1
  44. package/dist/js/combobox/combobox.misc.d.mts +2 -0
  45. package/dist/js/combobox/{misc.combobox.mjs → combobox.misc.mjs} +1 -1
  46. package/dist/js/combobox/combobox.model.d.mts +2 -0
  47. package/dist/js/combobox/combobox.state.d.mts +10 -0
  48. package/dist/js/combobox/combobox.state.mjs +2 -0
  49. package/dist/js/combobox/index.d.mts +163 -2
  50. package/dist/js/combobox/index.mjs +53 -52
  51. package/dist/js/combobox.constants-DZVkMP5g.d.mts +19 -0
  52. package/dist/js/combobox.misc-C1tPZZDi.d.mts +22 -0
  53. package/dist/js/{combobox/models.combobox.d.mts → combobox.model-oDV06XCN.d.mts} +6 -6
  54. package/dist/js/{state.combobox-Qm3FWzYW.mjs → combobox.state-BfJ3Hxg8.mjs} +96 -82
  55. package/dist/js/constants.listbox-C5Ap6Ag_.d.mts +9 -0
  56. package/dist/js/dialog/dialog.model.d.mts +2 -0
  57. package/dist/js/dialog/dialog.model.mjs +11 -0
  58. package/dist/js/dialog/index.d.mts +12 -0
  59. package/dist/js/dialog/index.mjs +123 -0
  60. package/dist/js/dialog.model-DX2mndMh.d.mts +45 -0
  61. package/dist/js/floatable/floatable.embedded.d.mts +2 -2
  62. package/dist/js/floatable/floatable.embedded.mjs +64 -92
  63. package/dist/js/floatable/floatable.model.d.mts +2 -0
  64. package/dist/js/floatable/floatable.model.mjs +23 -0
  65. package/dist/js/floatable/floatable.standalone.d.mts +2 -1
  66. package/dist/js/floatable.embedded-MeTyXjFn.d.mts +17 -0
  67. package/dist/js/floatable.model-DXsQgoU7.d.mts +62 -0
  68. package/dist/js/focus-trap/focus-trap.embedded.d.mts +2 -2
  69. package/dist/js/focus-trap/focus-trap.embedded.mjs +112 -134
  70. package/dist/js/focus-trap/focus-trap.model.d.mts +2 -0
  71. package/dist/js/focus-trap/focus-trap.model.mjs +15 -0
  72. package/dist/js/focus-trap/focus-trap.standalone.d.mts +2 -1
  73. package/dist/js/focus-trap.embedded-DIU05m1z.d.mts +13 -0
  74. package/dist/js/{focus-trap.embedded-DR8NpZfr.d.mts → focus-trap.model-BeX6UYlw.d.mts} +16 -18
  75. package/dist/js/index.d.mts +26 -14
  76. package/dist/js/index.mjs +18 -15
  77. package/dist/js/internal/attributable.d.mts +2 -3
  78. package/dist/js/internal/attributable.mjs +3 -2
  79. package/dist/js/internal/draggable/draggable.model.d.mts +2 -0
  80. package/dist/js/internal/draggable/draggable.model.mjs +37 -0
  81. package/dist/js/internal/draggable/index.d.mts +13 -0
  82. package/dist/js/internal/{draggable.mjs → draggable/index.mjs} +83 -114
  83. package/dist/js/internal/listbox/listbox.constants.d.mts +7 -10
  84. package/dist/js/internal/listbox/listbox.constants.mjs +15 -16
  85. package/dist/js/internal/listbox/listbox.data.d.mts +9 -10
  86. package/dist/js/internal/listbox/listbox.data.mjs +1 -1
  87. package/dist/js/internal/listbox/listbox.dom.d.mts +19 -20
  88. package/dist/js/internal/listbox/listbox.dom.mjs +1 -1
  89. package/dist/js/internal/listbox/listbox.event.d.mts +3 -4
  90. package/dist/js/internal/listbox/listbox.event.mjs +23 -20
  91. package/dist/js/internal/listbox/listbox.form.d.mts +4 -5
  92. package/dist/js/internal/listbox/listbox.form.mjs +15 -12
  93. package/dist/js/internal/listbox/listbox.misc.d.mts +10 -11
  94. package/dist/js/internal/listbox/listbox.misc.mjs +1 -1
  95. package/dist/js/internal/listbox/listbox.model.d.mts +2 -2
  96. package/dist/js/internal/listbox/listbox.state.d.mts +5 -6
  97. package/dist/js/internal/listbox/listbox.state.mjs +19 -20
  98. package/dist/js/internal/misc.d.mts +5 -4
  99. package/dist/js/internal/misc.mjs +7 -1
  100. package/dist/js/internal/navigable/index.d.mts +6 -0
  101. package/dist/js/internal/navigable/index.mjs +125 -0
  102. package/dist/js/internal/navigable/navigable.model.d.mts +2 -0
  103. package/dist/js/internal/navigable/navigable.model.mjs +18 -0
  104. package/dist/js/l10n/index.d.mts +9 -0
  105. package/dist/js/{l10n.mjs → l10n/index.mjs} +50 -23
  106. package/dist/js/l10n/l10n.model.d.mts +2 -0
  107. package/dist/js/l10n/l10n.model.mjs +9 -0
  108. package/dist/js/l10n.model-D6a9frgl.d.mts +26 -0
  109. package/dist/js/listbox/constants.listbox.d.mts +2 -2
  110. package/dist/js/listbox/constants.listbox.mjs +10 -14
  111. package/dist/js/listbox/event.listbox.d.mts +6 -7
  112. package/dist/js/listbox/event.listbox.mjs +47 -1
  113. package/dist/js/listbox/index.d.mts +8 -6
  114. package/dist/js/listbox/index.mjs +47 -49
  115. package/dist/js/listbox/misc.listbox.d.mts +1 -1
  116. package/dist/js/listbox/misc.listbox.mjs +1 -1
  117. package/dist/js/listbox/state.listbox.d.mts +8 -10
  118. package/dist/js/listbox/state.listbox.mjs +2 -2
  119. package/dist/js/{listbox.data-C7CRa5Ya.mjs → listbox.data-BQyZGKgr.mjs} +83 -66
  120. package/dist/js/{listbox.model-CRReGOmu.d.mts → listbox.model-CuBOj4qe.d.mts} +15 -11
  121. package/dist/js/menu/index.mjs +167 -0
  122. package/dist/js/menu/menu.model.d.mts +33 -0
  123. package/dist/js/menu/menu.model.mjs +15 -0
  124. package/dist/js/{misc.listbox-Cyz2CRDy.mjs → misc.listbox-CjfBUbHD.mjs} +27 -69
  125. package/dist/js/{misc.listbox-gnoJhrTr.d.mts → misc.listbox-CtoGvXQo.d.mts} +2 -2
  126. package/dist/js/movable/movable.embedded.d.mts +2 -2
  127. package/dist/js/movable/movable.embedded.mjs +60 -72
  128. package/dist/js/movable/movable.model.d.mts +2 -0
  129. package/dist/js/movable/movable.model.mjs +12 -0
  130. package/dist/js/movable/movable.standalone.d.mts +2 -1
  131. package/dist/js/movable.embedded-DoyXLegc.d.mts +11 -0
  132. package/dist/js/movable.model-BHaK_mKw.d.mts +186 -0
  133. package/dist/js/navigable.model-BPOM8DZk.d.mts +44 -0
  134. package/dist/js/popover/index.d.mts +12 -0
  135. package/dist/js/{popover.mjs → popover/index.mjs} +40 -50
  136. package/dist/js/popover/popover.model.d.mts +2 -0
  137. package/dist/js/popover/popover.model.mjs +12 -0
  138. package/dist/js/popover.model-ubKNG612.d.mts +38 -0
  139. package/dist/js/resizable/resizable.embedded.d.mts +2 -2
  140. package/dist/js/resizable/resizable.embedded.mjs +44 -59
  141. package/dist/js/resizable/resizable.model.d.mts +2 -0
  142. package/dist/js/resizable/resizable.model.mjs +21 -0
  143. package/dist/js/resizable/resizable.standalone.d.mts +2 -1
  144. package/dist/js/resizable.embedded-Bf1qBUdt.d.mts +11 -0
  145. package/dist/js/resizable.model-BwzJcTVJ.d.mts +46 -0
  146. package/dist/js/sortable/sortable.embedded.d.mts +2 -2
  147. package/dist/js/sortable/sortable.embedded.mjs +69 -82
  148. package/dist/js/sortable/sortable.model.d.mts +2 -0
  149. package/dist/js/sortable/sortable.model.mjs +24 -0
  150. package/dist/js/sortable/sortable.standalone.d.mts +2 -1
  151. package/dist/js/sortable.embedded-DzBKAwSG.d.mts +11 -0
  152. package/dist/js/{splitter.d.mts → splitter/index.d.mts} +8 -7
  153. package/dist/js/splitter/index.mjs +284 -0
  154. package/dist/js/splitter/splitter.model.d.mts +2 -0
  155. package/dist/js/splitter/splitter.model.mjs +37 -0
  156. package/dist/js/splitter.model-DOLNjLVS.d.mts +57 -0
  157. package/dist/js/{tabs.d.mts → tabs/index.d.mts} +7 -8
  158. package/dist/js/{tabs.mjs → tabs/index.mjs} +58 -58
  159. package/dist/js/tabs/tabs.model.d.mts +2 -0
  160. package/dist/js/tabs/tabs.model.mjs +18 -0
  161. package/dist/js/tabs.model-DRBX_JtI.d.mts +40 -0
  162. package/dist/js/toolbar/index.mjs +27 -0
  163. package/dist/js/toolbar/toolbar.model.d.mts +11 -0
  164. package/dist/js/toolbar/toolbar.model.mjs +7 -0
  165. package/dist/js/tooltip/index.d.mts +19 -0
  166. package/dist/js/{tooltip.mjs → tooltip/index.mjs} +60 -85
  167. package/dist/js/tooltip/tooltip.model.d.mts +2 -0
  168. package/dist/js/tooltip/tooltip.model.mjs +15 -0
  169. package/dist/js/tooltip.model-DRkY_BsL.d.mts +37 -0
  170. package/package.json +43 -37
  171. package/dist/js/color-picker.mjs +0 -924
  172. package/dist/js/combobox/constants.combobox.d.mts +0 -2
  173. package/dist/js/combobox/dom.combobox.d.mts +0 -27
  174. package/dist/js/combobox/event.combobox.d.mts +0 -23
  175. package/dist/js/combobox/misc.combobox.d.mts +0 -2
  176. package/dist/js/combobox/state.combobox.d.mts +0 -12
  177. package/dist/js/combobox/state.combobox.mjs +0 -2
  178. package/dist/js/constants.combobox-DmRAMC64.d.mts +0 -26
  179. package/dist/js/constants.listbox-DRsXUxd3.d.mts +0 -14
  180. package/dist/js/dialog.d.mts +0 -47
  181. package/dist/js/dialog.mjs +0 -131
  182. package/dist/js/draggable-a6w0J1OD.d.mts +0 -154
  183. package/dist/js/floatable.embedded-Bct4U5Dm.d.mts +0 -69
  184. package/dist/js/index-DJdFlTLm.d.mts +0 -177
  185. package/dist/js/internal/draggable.d.mts +0 -2
  186. package/dist/js/internal/navigable.d.mts +0 -37
  187. package/dist/js/internal/navigable.mjs +0 -135
  188. package/dist/js/l10n-Bn-7RcwR.d.mts +0 -20
  189. package/dist/js/l10n.d.mts +0 -2
  190. package/dist/js/menu.mjs +0 -172
  191. package/dist/js/popover.d.mts +0 -38
  192. package/dist/js/resizable.embedded-3qoR0Bjm.d.mts +0 -34
  193. package/dist/js/splitter.mjs +0 -322
  194. package/dist/js/toolbar.mjs +0 -31
  195. package/dist/js/tooltip.d.mts +0 -45
  196. package/src/css/a11y.scss +0 -13
  197. package/src/css/badge.scss +0 -62
  198. package/src/css/button.scss +0 -50
  199. package/src/css/color-picker.scss +0 -344
  200. package/src/css/color.scss +0 -113
  201. package/src/css/combobox.scss +0 -255
  202. package/src/css/content.scss +0 -181
  203. package/src/css/flex.scss +0 -107
  204. package/src/css/floatable.scss +0 -155
  205. package/src/css/form.scss +0 -575
  206. package/src/css/listbox.scss +0 -121
  207. package/src/css/message.scss +0 -74
  208. package/src/css/mixins/badge.mixins.scss +0 -53
  209. package/src/css/mixins/button.mixins.scss +0 -112
  210. package/src/css/mixins/input.mixins.scss +0 -114
  211. package/src/css/mixins/message.mixins.scss +0 -41
  212. package/src/css/mixins/misc.mixins.scss +0 -48
  213. package/src/css/mixins/shadow.mixins.scss +0 -57
  214. package/src/css/reset.scss +0 -392
  215. package/src/css/splitter.scss +0 -89
  216. package/src/css/table.scss +0 -107
  217. package/src/css/tabs.scss +0 -74
  218. package/src/js/color-picker.ts +0 -1653
  219. package/src/js/combobox/constants.combobox.ts +0 -83
  220. package/src/js/combobox/dom.combobox.ts +0 -411
  221. package/src/js/combobox/event.combobox.ts +0 -365
  222. package/src/js/combobox/index.ts +0 -382
  223. package/src/js/combobox/misc.combobox.ts +0 -104
  224. package/src/js/combobox/models.combobox.ts +0 -54
  225. package/src/js/combobox/state.combobox.ts +0 -246
  226. package/src/js/dialog.ts +0 -255
  227. package/src/js/floatable/floatable.embedded.ts +0 -336
  228. package/src/js/floatable/floatable.standalone.ts +0 -6
  229. package/src/js/focus-trap/focus-trap.embedded.ts +0 -411
  230. package/src/js/focus-trap/focus-trap.standalone.ts +0 -1
  231. package/src/js/index.ts +0 -16
  232. package/src/js/internal/attributable.ts +0 -73
  233. package/src/js/internal/draggable.ts +0 -657
  234. package/src/js/internal/listbox/listbox.constants.ts +0 -25
  235. package/src/js/internal/listbox/listbox.data.ts +0 -287
  236. package/src/js/internal/listbox/listbox.dom.ts +0 -446
  237. package/src/js/internal/listbox/listbox.event.ts +0 -129
  238. package/src/js/internal/listbox/listbox.form.ts +0 -125
  239. package/src/js/internal/listbox/listbox.misc.ts +0 -135
  240. package/src/js/internal/listbox/listbox.model.ts +0 -169
  241. package/src/js/internal/listbox/listbox.state.ts +0 -82
  242. package/src/js/internal/misc.ts +0 -27
  243. package/src/js/internal/navigable.ts +0 -317
  244. package/src/js/l10n.ts +0 -192
  245. package/src/js/listbox/constants.listbox.ts +0 -61
  246. package/src/js/listbox/event.listbox.ts +0 -106
  247. package/src/js/listbox/index.ts +0 -364
  248. package/src/js/listbox/misc.listbox.ts +0 -70
  249. package/src/js/listbox/state.listbox.ts +0 -194
  250. package/src/js/menu.ts +0 -348
  251. package/src/js/movable/movable.embedded.ts +0 -318
  252. package/src/js/movable/movable.standalone.ts +0 -2
  253. package/src/js/popover.ts +0 -229
  254. package/src/js/resizable/resizable.embedded.ts +0 -413
  255. package/src/js/resizable/resizable.standalone.ts +0 -5
  256. package/src/js/sortable/sortable.embedded.ts +0 -527
  257. package/src/js/sortable/sortable.standalone.ts +0 -2
  258. package/src/js/splitter.ts +0 -583
  259. package/src/js/tabs.ts +0 -441
  260. package/src/js/toolbar.ts +0 -63
  261. package/src/js/tooltip.ts +0 -367
  262. /package/dist/js/combobox/{models.combobox.mjs → combobox.model.mjs} +0 -0
  263. /package/dist/js/{menu.d.mts → menu/index.d.mts} +0 -0
  264. /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.combobox.ts
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 attributeOptionActive = `${COMBOBOX_TAGNAME}-option-active`;
15
- const COMBOBOX_ATTRIBUTE_SELECTION = `${COMBOBOX_TAGNAME}-selection`;
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 COMBOBOX_MESSAGES = {
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 COMBOBOX_SELECTORS = {
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 { COMBOBOX_ATTRIBUTES, COMBOBOX_ATTRIBUTE_ANCHOR, COMBOBOX_ATTRIBUTE_SELECTION, COMBOBOX_ATTRIBUTE_SELECTION_ITEM, COMBOBOX_AUTOCOMPLETES, COMBOBOX_MESSAGES, COMBOBOX_SELECTORS, COMBOBOX_TAGNAME, messageLabel, messageSelect, selectorAnchor, selectorContent, selectorOption, selectorSelectionItem };
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