@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
@@ -1,26 +1,44 @@
1
+ import { L10N_MESSAGE_ITEM_CREATE, L10N_MESSAGE_ITEM_UPDATE_KEY, L10N_MESSAGE_ITEM_UPDATE_VALUE, L10N_MESSAGE_OBJECT_CREATE, L10N_MESSAGE_OBJECT_UPDATE, L10N_SYMBOL } from "./l10n.model.mjs";
2
+ import { isPlainObject } from "@oscarpalmer/atoms/is";
1
3
  import { getString } from "@oscarpalmer/atoms/string";
2
- //#region src/js/l10n.ts
3
- var OuiLocalizations = class {
4
- defaults;
5
- keys;
6
- values = {};
7
- constructor(defaults) {
8
- this.defaults = defaults;
9
- this.keys = new Set(Object.keys(defaults));
10
- }
11
- get(element, key, localizations) {
12
- return getLocalization(this, element, key, localizations);
13
- }
14
- set(first, second) {
15
- updateLocalizations(this, typeof first === "string" ? { [first]: second } : first, this.values);
4
+ //#region src/js/l10n/index.ts
5
+ function OuiLocalizations(defaults) {
6
+ this[L10N_SYMBOL] = {
7
+ defaults,
8
+ keys: new Set(Object.keys(defaults)),
9
+ values: {}
10
+ };
11
+ }
12
+ OuiLocalizations.prototype.get = getLocalizationValue;
13
+ OuiLocalizations.prototype.set = setLocalizationValues;
14
+ Object.defineProperties(OuiLocalizations.prototype, {
15
+ defaults: {
16
+ enumerable: true,
17
+ get: getDefaults
18
+ },
19
+ keys: {
20
+ enumerable: true,
21
+ get: getKeys
16
22
  }
17
- };
23
+ });
24
+ function createLocalizations(defaults) {
25
+ if (!isPlainObject(defaults) || Object.keys(defaults).length === 0) throw new Error(L10N_MESSAGE_OBJECT_CREATE);
26
+ if (!Object.values(defaults).every(isValidLocalization)) throw new Error(L10N_MESSAGE_ITEM_CREATE);
27
+ return new OuiLocalizations(defaults);
28
+ }
29
+ function getDefaults() {
30
+ return { ...this[L10N_SYMBOL].defaults };
31
+ }
32
+ function getKeys() {
33
+ return [...this[L10N_SYMBOL].keys];
34
+ }
18
35
  function getLanguage(element) {
19
36
  return (element.closest("[lang]")?.getAttribute("lang") ?? document.documentElement.lang).toLowerCase();
20
37
  }
21
38
  function getLocalization(localizations, element, key, value) {
22
39
  const language = getLanguage(element);
23
- const values = [value, localizations.values];
40
+ const state = localizations[L10N_SYMBOL];
41
+ const values = [value, state.values];
24
42
  const { length } = values;
25
43
  let localization;
26
44
  let shortLanguage;
@@ -33,10 +51,13 @@ function getLocalization(localizations, element, key, value) {
33
51
  localization = value?.[shortLanguage]?.[key];
34
52
  if (localization != null) break;
35
53
  }
36
- return localization ?? localizations.defaults[key];
54
+ return localization ?? state.defaults[key];
37
55
  }
38
- function getLocalizations(defaults) {
39
- return new OuiLocalizations(defaults);
56
+ function getLocalizationValue(element, key, localizations) {
57
+ return getLocalization(this, element, key, localizations);
58
+ }
59
+ function isValidLocalization(value) {
60
+ return typeof value === "string" || typeof value === "function";
40
61
  }
41
62
  function localize(localization, data, parameters) {
42
63
  if (typeof localization === "function") return localization(...parameters);
@@ -50,9 +71,13 @@ function localize(localization, data, parameters) {
50
71
  }
51
72
  return localized;
52
73
  }
74
+ function setLocalizationValues(first, second) {
75
+ updateLocalizations(this, typeof first === "string" ? { [first]: second } : first, this[L10N_SYMBOL].values);
76
+ }
53
77
  function updateLocalizations(instance, values, destination, onAfter) {
54
- if (typeof values !== "object" || values == null) return;
55
- const localizations = destination ?? instance.values;
78
+ if (typeof values !== "object" || values == null) throw new Error(L10N_MESSAGE_OBJECT_UPDATE);
79
+ const state = instance[L10N_SYMBOL];
80
+ const localizations = destination ?? state.values;
56
81
  const languages = Object.keys(values);
57
82
  const languagesLength = languages.length;
58
83
  let updated = false;
@@ -68,7 +93,9 @@ function updateLocalizations(instance, values, destination, onAfter) {
68
93
  const key = keys[keysIndex];
69
94
  const keyValue = languageValue[key];
70
95
  const normalizedKey = key.toLowerCase();
71
- if (instance.keys.has(normalizedKey) && (typeof keyValue === "string" || typeof keyValue === "function")) {
96
+ if (!state.keys.has(normalizedKey)) throw new Error(L10N_MESSAGE_ITEM_UPDATE_KEY);
97
+ if (!isValidLocalization(keyValue)) throw new Error(L10N_MESSAGE_ITEM_UPDATE_VALUE);
98
+ if (state.keys.has(normalizedKey) && isValidLocalization(keyValue)) {
72
99
  updated = true;
73
100
  localizations[normalizedLanguage][normalizedKey] = keyValue;
74
101
  }
@@ -77,4 +104,4 @@ function updateLocalizations(instance, values, destination, onAfter) {
77
104
  if (updated && typeof onAfter === "function") onAfter();
78
105
  }
79
106
  //#endregion
80
- export { OuiLocalizations, getLanguage, getLocalization, getLocalizations, localize, updateLocalizations };
107
+ export { createLocalizations, getLanguage, getLocalization, localize, updateLocalizations };
@@ -0,0 +1,2 @@
1
+ import { a as L10N_MESSAGE_OBJECT_UPDATE, c as OuiLocalizations, i as L10N_MESSAGE_OBJECT_CREATE, l as OuiLocalizationsState, n as L10N_MESSAGE_ITEM_UPDATE_KEY, o as L10N_SYMBOL, r as L10N_MESSAGE_ITEM_UPDATE_VALUE, s as OuiLocalizationParameters, t as L10N_MESSAGE_ITEM_CREATE, u as OuiLocalizationsValues } from "../l10n.model-D6a9frgl.mjs";
2
+ export { L10N_MESSAGE_ITEM_CREATE, L10N_MESSAGE_ITEM_UPDATE_KEY, L10N_MESSAGE_ITEM_UPDATE_VALUE, L10N_MESSAGE_OBJECT_CREATE, L10N_MESSAGE_OBJECT_UPDATE, L10N_SYMBOL, OuiLocalizationParameters, OuiLocalizations, OuiLocalizationsState, OuiLocalizationsValues };
@@ -0,0 +1,9 @@
1
+ //#region src/js/l10n/l10n.model.ts
2
+ const L10N_MESSAGE_ITEM_CREATE = "Localization item must be a string or a function.";
3
+ const L10N_MESSAGE_ITEM_UPDATE_KEY = "Localization item key must be known.";
4
+ const L10N_MESSAGE_ITEM_UPDATE_VALUE = "Localization item value must be a string or a function.";
5
+ const L10N_MESSAGE_OBJECT_CREATE = "Default localizations must be a non-empty plain object.";
6
+ const L10N_MESSAGE_OBJECT_UPDATE = "Localizations update object must be a plain object.";
7
+ const L10N_SYMBOL = Symbol("l10n");
8
+ //#endregion
9
+ export { L10N_MESSAGE_ITEM_CREATE, L10N_MESSAGE_ITEM_UPDATE_KEY, L10N_MESSAGE_ITEM_UPDATE_VALUE, L10N_MESSAGE_OBJECT_CREATE, L10N_MESSAGE_OBJECT_UPDATE, L10N_SYMBOL };
@@ -0,0 +1,26 @@
1
+ import { GenericCallback } from "@oscarpalmer/atoms/models";
2
+ //#region src/js/l10n/l10n.model.d.ts
3
+ type OuiLocalizationParameters<Localization> = Localization extends GenericCallback ? Parameters<Localization> : never;
4
+ type OuiLocalizations<Localizations extends OuiLocalizationsValues> = {
5
+ [L10N_SYMBOL]: OuiLocalizationsState<Localizations>;
6
+ get defaults(): Localizations;
7
+ get keys(): Set<keyof Localizations>;
8
+ get values(): Record<string, Partial<Localizations>>;
9
+ get<Key extends keyof Localizations>(element: Element, key: Key, localizations: Record<string, Partial<Localizations>>): string | GenericCallback;
10
+ set(language: string, localizations: Partial<Localizations>): void;
11
+ set(localizations: Record<string, Partial<Localizations>>): void;
12
+ };
13
+ type OuiLocalizationsState<Localizations extends OuiLocalizationsValues> = {
14
+ readonly defaults: Localizations;
15
+ readonly keys: Set<string>;
16
+ readonly values: Record<string, Partial<Localizations>>;
17
+ };
18
+ type OuiLocalizationsValues = Record<string, string | GenericCallback>;
19
+ declare const L10N_MESSAGE_ITEM_CREATE = "Localization item must be a string or a function.";
20
+ declare const L10N_MESSAGE_ITEM_UPDATE_KEY = "Localization item key must be known.";
21
+ declare const L10N_MESSAGE_ITEM_UPDATE_VALUE = "Localization item value must be a string or a function.";
22
+ declare const L10N_MESSAGE_OBJECT_CREATE = "Default localizations must be a non-empty plain object.";
23
+ declare const L10N_MESSAGE_OBJECT_UPDATE = "Localizations update object must be a plain object.";
24
+ declare const L10N_SYMBOL: unique symbol;
25
+ //#endregion
26
+ export { L10N_MESSAGE_OBJECT_UPDATE as a, OuiLocalizations as c, L10N_MESSAGE_OBJECT_CREATE as i, OuiLocalizationsState as l, L10N_MESSAGE_ITEM_UPDATE_KEY as n, L10N_SYMBOL as o, L10N_MESSAGE_ITEM_UPDATE_VALUE as r, OuiLocalizationParameters as s, L10N_MESSAGE_ITEM_CREATE as t, OuiLocalizationsValues as u };
@@ -1,2 +1,2 @@
1
- import { i as LISTBOX_TAGNAME, n as LISTBOX_MESSAGES, r as LISTBOX_SELECTORS, t as LISTBOX_ATTRIBUTES } from "../constants.listbox-DRsXUxd3.mjs";
2
- export { LISTBOX_ATTRIBUTES, LISTBOX_MESSAGES, LISTBOX_SELECTORS, LISTBOX_TAGNAME };
1
+ import { a as listboxSelectors, i as listboxMessages, n as LISTBOX_TAGNAME, r as listboxAttributes, t as LISTBOX_SYMBOL } from "../constants.listbox-C5Ap6Ag_.mjs";
2
+ export { LISTBOX_SYMBOL, LISTBOX_TAGNAME, listboxAttributes, listboxMessages, listboxSelectors };
@@ -1,5 +1,6 @@
1
1
  //#region src/js/listbox/constants.listbox.ts
2
2
  const LISTBOX_TAGNAME = "oui-listbox";
3
+ const LISTBOX_SYMBOL = Symbol(LISTBOX_TAGNAME);
3
4
  const attributeContent = `${LISTBOX_TAGNAME}-content`;
4
5
  const attributeFilter = `${LISTBOX_TAGNAME}-filter`;
5
6
  const attributeFilterInput = `${attributeFilter}-input`;
@@ -10,13 +11,8 @@ const attributeList = `${LISTBOX_TAGNAME}-list`;
10
11
  const attributeListEmpty = `${attributeList}-empty`;
11
12
  const attributeMessage = `${LISTBOX_TAGNAME}-message`;
12
13
  const attributeOption = `${LISTBOX_TAGNAME}-option`;
13
- const attributeOptionActive = `${LISTBOX_TAGNAME}-option-active`;
14
- const messageLabel = `<${LISTBOX_TAGNAME}> must contain a <label> element for the <select> element`;
15
- const messageSelect = `<${LISTBOX_TAGNAME}> must contain a valid <select> element`;
16
- const selectorFilter = `[${attributeFilterInput}]`;
17
- const selectorOption = `[${attributeOption}]`;
18
- const LISTBOX_ATTRIBUTES = {
19
- active: attributeOptionActive,
14
+ const listboxAttributes = {
15
+ active: `${LISTBOX_TAGNAME}-option-active`,
20
16
  content: attributeContent,
21
17
  empty: attributeListEmpty,
22
18
  filter: attributeFilter,
@@ -28,13 +24,13 @@ const LISTBOX_ATTRIBUTES = {
28
24
  message: attributeMessage,
29
25
  option: attributeOption
30
26
  };
31
- const LISTBOX_MESSAGES = {
32
- label: messageLabel,
33
- select: messageSelect
27
+ const listboxMessages = {
28
+ label: `<${LISTBOX_TAGNAME}> must contain a <label> element for the <select> element`,
29
+ select: `<${LISTBOX_TAGNAME}> must contain a valid <select> element`
34
30
  };
35
- const LISTBOX_SELECTORS = {
36
- filter: selectorFilter,
37
- option: selectorOption
31
+ const listboxSelectors = {
32
+ filter: `[${attributeFilterInput}]`,
33
+ option: `[${attributeOption}]`
38
34
  };
39
35
  //#endregion
40
- export { LISTBOX_ATTRIBUTES, LISTBOX_MESSAGES, LISTBOX_SELECTORS, LISTBOX_TAGNAME };
36
+ export { LISTBOX_SYMBOL, LISTBOX_TAGNAME, listboxAttributes, listboxMessages, listboxSelectors };
@@ -1,8 +1,7 @@
1
- import { c as OuiListboxPreview, l as OuiListboxState } from "../listbox.model-CRReGOmu.mjs";
1
+ import { c as OuiListboxPreview, l as OuiListboxState } from "../listbox.model-CuBOj4qe.mjs";
2
2
  //#region src/js/listbox/event.listbox.d.ts
3
- declare function onListboxEnter(state: OuiListboxState): void;
4
- declare function onListboxFilter(preview: OuiListboxPreview, state: OuiListboxState, _: boolean, active?: HTMLElement): void;
5
- declare function onListboxNavigation(preview: OuiListboxPreview, state: OuiListboxState, active?: HTMLElement): void;
6
- declare function onListboxToggle(state: OuiListboxState): void;
7
- //#endregion
8
- export { onListboxEnter, onListboxFilter, onListboxNavigation, onListboxToggle };
3
+ export declare function onListboxEnter(state: OuiListboxState): void;
4
+ export declare function onListboxFilter(preview: OuiListboxPreview, state: OuiListboxState, _: boolean, active?: HTMLElement): void;
5
+ export declare function onListboxNavigation(preview: OuiListboxPreview, state: OuiListboxState, active?: HTMLElement): void;
6
+ export declare function onListboxToggle(state: OuiListboxState): void;
7
+ //#endregion
@@ -1,2 +1,48 @@
1
- import { d as onListboxNavigation, f as onListboxToggle, l as onListboxEnter, u as onListboxFilter } from "../misc.listbox-Cyz2CRDy.mjs";
1
+ import { n as filterListbox, s as toggleListboxOption, t as applyListboxSelection, y as updateListboxPreview } from "../listbox.data-BQyZGKgr.mjs";
2
+ import { processListboxKeydown } from "../internal/listbox/listbox.event.mjs";
3
+ import { LISTBOX_SYMBOL, LISTBOX_TAGNAME, listboxSelectors } from "./constants.listbox.mjs";
4
+ import { on } from "@oscarpalmer/toretto/event";
5
+ import { findAncestor } from "@oscarpalmer/toretto/find";
6
+ //#region src/js/listbox/event.listbox.ts
7
+ function onListboxClick(event) {
8
+ const listbox = findAncestor(event, LISTBOX_TAGNAME);
9
+ const state = listbox?.[LISTBOX_SYMBOL];
10
+ if (listbox == null || state == null) return;
11
+ const option = findAncestor(event, listboxSelectors.option);
12
+ if (option == null) return;
13
+ const { disabled, filter, readonly } = state.component;
14
+ if (disabled) filter.element.focus();
15
+ else if (readonly) updateListboxPreview("none", state, option, false);
16
+ else toggleListboxOption(state, option);
17
+ }
18
+ function onListboxEnter(state) {
19
+ if (!state.component.disabled && !state.component.readonly) toggleListboxOption(state, state.component.active);
20
+ }
21
+ function onListboxFilter(preview, state, _, active) {
22
+ updateListboxPreview(preview, state, active);
23
+ }
24
+ function onListboxInput(event) {
25
+ const state = findAncestor(event, LISTBOX_TAGNAME)?.[LISTBOX_SYMBOL];
26
+ if (state?.component.filter.element === event.target) filterListbox(event.inputType, state);
27
+ }
28
+ function onListboxKeydown(event) {
29
+ const state = findAncestor(event, LISTBOX_TAGNAME)?.[LISTBOX_SYMBOL];
30
+ if (state?.component.filter.element === event.target) processListboxKeydown(event, state);
31
+ }
32
+ function onListboxNavigation(preview, state, active) {
33
+ if (state.component.multiple || state.component.readonly) updateListboxPreview(preview, state, active);
34
+ else applyListboxSelection({
35
+ state,
36
+ option: active,
37
+ added: true,
38
+ selected: active == null ? [] : [active]
39
+ });
40
+ }
41
+ function onListboxToggle(state) {
42
+ state.component.filter.element.focus();
43
+ }
44
+ on(document, "click", onListboxClick);
45
+ on(document, "input", onListboxInput);
46
+ on(document, "keydown", onListboxKeydown, { passive: false });
47
+ //#endregion
2
48
  export { onListboxEnter, onListboxFilter, onListboxNavigation, onListboxToggle };
@@ -1,14 +1,16 @@
1
- import { o as OuiListboxLocalizations } from "../listbox.model-CRReGOmu.mjs";
2
- import { i as LISTBOX_TAGNAME } from "../constants.listbox-DRsXUxd3.mjs";
3
- import { n as setListboxLocalizations } from "../misc.listbox-gnoJhrTr.mjs";
1
+ import { l as OuiListboxState, o as OuiListboxLocalizations } from "../listbox.model-CuBOj4qe.mjs";
2
+ import { n as LISTBOX_TAGNAME, t as LISTBOX_SYMBOL } from "../constants.listbox-C5Ap6Ag_.mjs";
3
+ import { n as setListboxLocalizations } from "../misc.listbox-CtoGvXQo.mjs";
4
4
  //#region src/js/listbox/index.d.ts
5
5
  declare global {
6
6
  interface HTMLElementTagNameMap {
7
7
  [LISTBOX_TAGNAME]: OuiListboxElement;
8
8
  }
9
9
  }
10
- declare class OuiListboxElement extends HTMLElement {
11
- #private;
10
+ export interface OuiListboxElement {
11
+ [LISTBOX_SYMBOL]: OuiListboxState;
12
+ }
13
+ export declare class OuiListboxElement extends HTMLElement {
12
14
  static formAssociated: boolean;
13
15
  static observedAttributes: string[];
14
16
  /**
@@ -151,4 +153,4 @@ declare class OuiListboxElement extends HTMLElement {
151
153
  setLocalizations(localizations: Record<string, Partial<OuiListboxLocalizations>>): void;
152
154
  }
153
155
  //#endregion
154
- export { OuiListboxElement, setListboxLocalizations };
156
+ export { setListboxLocalizations };
@@ -1,7 +1,7 @@
1
- import { C as setListboxDisabled, D as setListboxReadonly, O as setListboxRequired, T as setListboxLimit, a as setListboxValue, o as setListboxValues, w as setListboxFilter } from "../listbox.data-C7CRa5Ya.mjs";
1
+ import { C as setListboxDisabled, D as setListboxReadonly, O as setListboxRequired, T as setListboxLimit, a as setListboxValue, o as setListboxValues, w as setListboxFilter } from "../listbox.data-BQyZGKgr.mjs";
2
2
  import { attachListbox, detachListbox } from "../internal/listbox/listbox.state.mjs";
3
- import { LISTBOX_TAGNAME } from "./constants.listbox.mjs";
4
- import { c as onDetachListbox, i as createListboxState, n as setListboxLocalizations, o as listboxStates, r as updateListboxLocalizations, s as onAttachListbox } from "../misc.listbox-Cyz2CRDy.mjs";
3
+ import { LISTBOX_SYMBOL, LISTBOX_TAGNAME } from "./constants.listbox.mjs";
4
+ import { c as onDetachListbox, i as initializeListbox, n as setListboxLocalizations, o as listboxes, r as updateListboxLocalizations, s as onAttachListbox } from "../misc.listbox-CjfBUbHD.mjs";
5
5
  import { getAttribute } from "@oscarpalmer/toretto/attribute";
6
6
  import { parse } from "@oscarpalmer/atoms/string";
7
7
  //#region src/js/listbox/index.ts
@@ -13,68 +13,65 @@ var OuiListboxElement = class extends HTMLElement {
13
13
  "required",
14
14
  "value"
15
15
  ];
16
- #internals;
17
- #restored;
18
- #state;
19
16
  /**
20
17
  * Is the listbox disabled?
21
18
  */
22
19
  get disabled() {
23
- return this.#state?.disabled ?? false;
20
+ return this[LISTBOX_SYMBOL].component?.disabled ?? false;
24
21
  }
25
22
  /**
26
23
  * Should the listbox be disabled?
27
24
  */
28
25
  set disabled(value) {
29
- if (typeof value === "boolean" && value !== this.disabled) setListboxDisabled(this.#state, value);
26
+ if (typeof value === "boolean" && value !== this.disabled) setListboxDisabled(this[LISTBOX_SYMBOL], value);
30
27
  }
31
28
  /**
32
29
  * Current filter value
33
30
  */
34
31
  get filter() {
35
- return this.#state.filter.element.value;
32
+ return this[LISTBOX_SYMBOL].component?.filter.element.value ?? "";
36
33
  }
37
34
  /**
38
35
  * Set the filter value
39
36
  */
40
37
  set filter(value) {
41
- setListboxFilter(this.#state, value);
38
+ setListboxFilter(this[LISTBOX_SYMBOL], value);
42
39
  }
43
40
  /**
44
41
  * Form element associated with the listbox
45
42
  */
46
43
  get form() {
47
- return this.#internals.form;
44
+ return this[LISTBOX_SYMBOL].form.internals.form;
48
45
  }
49
46
  /**
50
47
  * Label elements associated with the listbox
51
48
  */
52
49
  get labels() {
53
- return this.#internals.labels;
50
+ return this[LISTBOX_SYMBOL].form.internals.labels;
54
51
  }
55
52
  /**
56
53
  * Maximum number of selected options
57
54
  */
58
55
  get max() {
59
- return this.#state?.max;
56
+ return this[LISTBOX_SYMBOL].component?.max;
60
57
  }
61
58
  /**
62
59
  * Set the maximum number of selected options
63
60
  */
64
61
  set max(value) {
65
- setListboxLimit("max", this.#state, value);
62
+ setListboxLimit("max", this[LISTBOX_SYMBOL], value);
66
63
  }
67
64
  /**
68
65
  * Minimum number of selected options
69
66
  */
70
67
  get min() {
71
- return this.#state?.min;
68
+ return this[LISTBOX_SYMBOL].component?.min;
72
69
  }
73
70
  /**
74
71
  * Set the minimum number of selected options
75
72
  */
76
73
  set min(value) {
77
- setListboxLimit("min", this.#state, value);
74
+ setListboxLimit("min", this[LISTBOX_SYMBOL], value);
78
75
  }
79
76
  /**
80
77
  * Does the listbox allow multiple values?
@@ -92,87 +89,91 @@ var OuiListboxElement = class extends HTMLElement {
92
89
  * Is the listbox readonly?
93
90
  */
94
91
  get readonly() {
95
- return this.#state?.readonly ?? false;
92
+ return this[LISTBOX_SYMBOL].component?.readonly ?? false;
96
93
  }
97
94
  /**
98
95
  * Should the listbox be readonly?
99
96
  */
100
97
  set readonly(value) {
101
- if (typeof value === "boolean" && value !== this.readonly) setListboxReadonly(this.#state, value);
98
+ if (typeof value === "boolean" && value !== this.readonly) setListboxReadonly(this[LISTBOX_SYMBOL], value);
102
99
  }
103
100
  /**
104
101
  * Is the listbox required?
105
102
  */
106
103
  get required() {
107
- return this.#state?.required ?? false;
104
+ return this[LISTBOX_SYMBOL].component?.required ?? false;
108
105
  }
109
106
  /**
110
107
  * Should the listbox be required?
111
108
  */
112
109
  set required(value) {
113
- if (typeof value === "boolean" && value !== this.required) setListboxRequired(this.#state, value);
110
+ if (typeof value === "boolean" && value !== this.required) setListboxRequired(this[LISTBOX_SYMBOL], value);
114
111
  }
115
112
  /**
116
113
  * Selected options
117
114
  */
118
115
  get selected() {
119
- return this.#state.options.selected.slice();
116
+ return this[LISTBOX_SYMBOL].component?.options.selected.slice() ?? [];
120
117
  }
121
118
  /**
122
119
  * Validation message for the listbox
123
120
  */
124
121
  get validationMessage() {
125
- return this.#internals.validationMessage;
122
+ return this[LISTBOX_SYMBOL].form.internals.validationMessage;
126
123
  }
127
124
  /**
128
125
  * Validity state for the listbox
129
126
  */
130
127
  get validity() {
131
- return this.#internals.validity;
128
+ return this[LISTBOX_SYMBOL].form.internals.validity;
132
129
  }
133
130
  /**
134
131
  * Current value
135
132
  */
136
133
  get value() {
137
- return this.#state.values.current[0];
134
+ return this[LISTBOX_SYMBOL].component?.values.current[0] ?? "";
138
135
  }
139
136
  /**
140
137
  * Set the value
141
138
  */
142
139
  set value(value) {
143
- setListboxValue(this.#state, value);
140
+ setListboxValue(this[LISTBOX_SYMBOL], value);
144
141
  }
145
142
  /**
146
143
  * Current values
147
144
  */
148
145
  get values() {
149
- return this.#state.values.current.slice();
146
+ return this[LISTBOX_SYMBOL].component?.values.current.slice() ?? [];
150
147
  }
151
148
  /**
152
149
  * Set the values
153
150
  */
154
151
  set values(values) {
155
- setListboxValues(this.#state, values);
152
+ setListboxValues(this[LISTBOX_SYMBOL], values);
156
153
  }
157
154
  /**
158
155
  * Can the listbox be validated?
159
156
  */
160
157
  get willValidate() {
161
- return this.#internals.willValidate;
158
+ return this[LISTBOX_SYMBOL].form.internals.willValidate;
162
159
  }
163
160
  constructor() {
164
161
  super();
165
- this.#internals = this.attachInternals();
162
+ this[LISTBOX_SYMBOL] = {
163
+ component: null,
164
+ form: { internals: this.attachInternals() }
165
+ };
166
166
  }
167
167
  attributeChangedCallback(name, _, value) {
168
- if (this.#state == null) return;
168
+ const state = this[LISTBOX_SYMBOL];
169
+ if (state.component == null) return;
169
170
  switch (name) {
170
171
  case "required":
171
172
  this[name] = this.hasAttribute(name);
172
173
  break;
173
174
  case "max":
174
175
  case "min":
175
- setListboxLimit(name, this.#state, value);
176
+ setListboxLimit(name, state, value);
176
177
  break;
177
178
  case "value": this.value = value ?? "";
178
179
  }
@@ -183,33 +184,36 @@ var OuiListboxElement = class extends HTMLElement {
183
184
  * @returns `true` if the listbox is valid, otherwise `false`
184
185
  */
185
186
  checkValidity() {
186
- return this.#internals.checkValidity();
187
+ return this[LISTBOX_SYMBOL].form.internals.checkValidity();
187
188
  }
188
189
  /**
189
190
  * Clear all selected options
190
191
  */
191
192
  clear() {
192
- setListboxValues(this.#state, []);
193
+ setListboxValues(this[LISTBOX_SYMBOL], []);
193
194
  }
194
195
  connectedCallback() {
195
- if (this.#state == null) this.#initialize();
196
- else attachListbox(this.#state, listboxStates, onAttachListbox);
196
+ const state = this[LISTBOX_SYMBOL];
197
+ if (state.component == null) initializeListbox(this, state);
198
+ else attachListbox(state, listboxes, onAttachListbox);
197
199
  }
198
200
  disconnectedCallback() {
199
- if (this.#state != null) detachListbox(this.#state, listboxStates, onDetachListbox);
201
+ const state = this[LISTBOX_SYMBOL];
202
+ if (state.component != null) detachListbox(state, listboxes, onDetachListbox);
200
203
  }
201
204
  formDisabledCallback(disabled) {
202
205
  this.disabled = disabled;
203
206
  }
204
207
  formResetCallback() {
205
- setListboxValues(this.#state, this.#state.values.initial);
208
+ const state = this[LISTBOX_SYMBOL];
209
+ setListboxValues(state, state.component.values.initial);
206
210
  }
207
211
  formStateRestoreCallback(state, reason) {
208
212
  if (reason !== "restore") return;
209
213
  const parsed = typeof state === "string" ? parse(state) : void 0;
210
214
  if (!Array.isArray(parsed)) return;
211
- if (this.#state == null) this.#restored = parsed;
212
- else setListboxValues(this.#state, parsed);
215
+ if (this[LISTBOX_SYMBOL]?.component == null) this[LISTBOX_SYMBOL].form.restored = parsed;
216
+ else setListboxValues(this[LISTBOX_SYMBOL], parsed);
213
217
  }
214
218
  /**
215
219
  * Check if the listbox is valid and report any validation errors
@@ -217,7 +221,7 @@ var OuiListboxElement = class extends HTMLElement {
217
221
  * @returns `true` if the listbox is valid, otherwise `false`
218
222
  */
219
223
  reportValidity() {
220
- return this.#internals.reportValidity();
224
+ return this[LISTBOX_SYMBOL].form.internals.reportValidity();
221
225
  }
222
226
  /**
223
227
  * Set a custom validation message for the listbox
@@ -225,17 +229,11 @@ var OuiListboxElement = class extends HTMLElement {
225
229
  * @param message Validation message
226
230
  */
227
231
  setCustomValidity(message) {
228
- this.#internals.setValidity({ customError: message !== "" }, message, this);
232
+ this[LISTBOX_SYMBOL].form.internals.setValidity({ customError: message !== "" }, message, this);
229
233
  }
230
234
  setLocalizations(first, second) {
231
- updateListboxLocalizations(this.#state.localizations.global, this.#state.localizations.component, first, second);
232
- }
233
- #initialize() {
234
- this.#state = createListboxState(this, this.#internals);
235
- if (this.#restored != null) {
236
- setListboxValues(this.#state, this.#restored);
237
- this.#restored = void 0;
238
- }
235
+ const { localizations } = this[LISTBOX_SYMBOL].component;
236
+ updateListboxLocalizations(localizations.global, localizations.component, first, second);
239
237
  }
240
238
  };
241
239
  customElements.define(LISTBOX_TAGNAME, OuiListboxElement);
@@ -1,2 +1,2 @@
1
- import { n as setListboxLocalizations, r as updateListboxLocalizations, t as getListboxId } from "../misc.listbox-gnoJhrTr.mjs";
1
+ import { n as setListboxLocalizations, r as updateListboxLocalizations, t as getListboxId } from "../misc.listbox-CtoGvXQo.mjs";
2
2
  export { getListboxId, setListboxLocalizations, updateListboxLocalizations };
@@ -1,2 +1,2 @@
1
- import { n as setListboxLocalizations, r as updateListboxLocalizations, t as getListboxId } from "../misc.listbox-Cyz2CRDy.mjs";
1
+ import { n as setListboxLocalizations, r as updateListboxLocalizations, t as getListboxId } from "../misc.listbox-CjfBUbHD.mjs";
2
2
  export { getListboxId, setListboxLocalizations, updateListboxLocalizations };
@@ -1,11 +1,9 @@
1
- import { t as OuiLocalizations } from "../l10n-Bn-7RcwR.mjs";
2
- import { l as OuiListboxState, o as OuiListboxLocalizations, u as OuiListboxStates } from "../listbox.model-CRReGOmu.mjs";
3
- import { OuiListboxElement } from "./index.mjs";
1
+ import { c as OuiLocalizations } from "../l10n.model-D6a9frgl.mjs";
2
+ import { l as OuiListboxState, o as OuiListboxLocalizations } from "../listbox.model-CuBOj4qe.mjs";
4
3
  //#region src/js/listbox/state.listbox.d.ts
5
- declare function createListboxState(element: OuiListboxElement, internals: ElementInternals): OuiListboxState;
6
- declare function onAttachListbox(state: OuiListboxState): void;
7
- declare function onDetachListbox(state: OuiListboxState): void;
8
- declare const listboxLocalizations: OuiLocalizations<OuiListboxLocalizations>;
9
- declare const listboxStates: OuiListboxStates;
10
- //#endregion
11
- export { createListboxState, listboxLocalizations, listboxStates, onAttachListbox, onDetachListbox };
4
+ export declare function initializeListbox(element: HTMLElement, state: OuiListboxState): void;
5
+ export declare function onAttachListbox(state: OuiListboxState): void;
6
+ export declare function onDetachListbox(state: OuiListboxState): void;
7
+ export declare const listboxLocalizations: OuiLocalizations<OuiListboxLocalizations>;
8
+ export declare const listboxes: Set<OuiListboxState>;
9
+ //#endregion
@@ -1,2 +1,2 @@
1
- import { a as listboxLocalizations, c as onDetachListbox, i as createListboxState, o as listboxStates, s as onAttachListbox } from "../misc.listbox-Cyz2CRDy.mjs";
2
- export { createListboxState, listboxLocalizations, listboxStates, onAttachListbox, onDetachListbox };
1
+ import { a as listboxLocalizations, c as onDetachListbox, i as initializeListbox, o as listboxes, s as onAttachListbox } from "../misc.listbox-CjfBUbHD.mjs";
2
+ export { initializeListbox, listboxLocalizations, listboxes, onAttachListbox, onDetachListbox };