@oscarpalmer/oui 0.39.0 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (227) hide show
  1. package/README.md +1 -1
  2. package/dist/css/color-picker.css +80 -69
  3. package/dist/css/listbox.css +169 -0
  4. package/dist/js/color-picker/color-picker.constants.d.mts +2 -0
  5. package/dist/js/color-picker/{constants.color-picker.mjs → color-picker.constants.mjs} +7 -4
  6. package/dist/js/color-picker/{dom.color-picker.d.mts → color-picker.dom.d.mts} +2 -2
  7. package/dist/js/color-picker/{dom.color-picker.mjs → color-picker.dom.mjs} +33 -16
  8. package/dist/js/color-picker/{event.color-picker.d.mts → color-picker.event.d.mts} +3 -3
  9. package/dist/js/color-picker/color-picker.event.mjs +233 -0
  10. package/dist/js/color-picker/{form.color-picker.d.mts → color-picker.form.d.mts} +2 -2
  11. package/dist/js/color-picker/{form.color-picker.mjs → color-picker.form.mjs} +9 -8
  12. package/dist/js/color-picker/color-picker.misc.d.mts +2 -0
  13. package/dist/js/color-picker/color-picker.misc.mjs +104 -0
  14. package/dist/js/color-picker/color-picker.model.d.mts +2 -0
  15. package/dist/js/color-picker/{models.color-picker.mjs → color-picker.model.mjs} +1 -1
  16. package/dist/js/color-picker/{output.color-picker.d.mts → color-picker.output.d.mts} +2 -2
  17. package/dist/js/color-picker/{output.color-picker.mjs → color-picker.output.mjs} +19 -18
  18. package/dist/js/color-picker/color-picker.state.d.mts +8 -0
  19. package/dist/js/color-picker/color-picker.state.mjs +168 -0
  20. package/dist/js/color-picker/index.d.mts +172 -2
  21. package/dist/js/color-picker/index.mjs +66 -59
  22. package/dist/js/color-picker.constants-BZgXQr5o.d.mts +177 -0
  23. package/dist/js/color-picker.misc-BIS3R6jk.d.mts +31 -0
  24. package/dist/js/combobox/combobox.constants.d.mts +2 -0
  25. package/dist/js/combobox/{constants.combobox.mjs → combobox.constants.mjs} +21 -21
  26. package/dist/js/combobox/combobox.dom.d.mts +25 -0
  27. package/dist/js/combobox/{dom.combobox.mjs → combobox.dom.mjs} +51 -49
  28. package/dist/js/combobox/{event.combobox.d.mts → combobox.event.d.mts} +9 -9
  29. package/dist/js/combobox/{event.combobox.mjs → combobox.event.mjs} +1 -1
  30. package/dist/js/combobox/combobox.misc.d.mts +2 -0
  31. package/dist/js/combobox/combobox.misc.mjs +2 -0
  32. package/dist/js/combobox/combobox.model.d.mts +2 -0
  33. package/dist/js/combobox/combobox.state.d.mts +9 -0
  34. package/dist/js/combobox/combobox.state.mjs +2 -0
  35. package/dist/js/combobox/index.d.mts +152 -2
  36. package/dist/js/combobox/index.mjs +54 -55
  37. package/dist/js/combobox.constants-Hb3bqqQJ.d.mts +19 -0
  38. package/dist/js/combobox.misc-DRDFk6X8.d.mts +26 -0
  39. package/dist/js/combobox.model-gjEI2VqZ.d.mts +46 -0
  40. package/dist/js/{state.combobox-BWDFHwoi.mjs → combobox.state-AstCICiH.mjs} +109 -106
  41. package/dist/js/dialog/dialog.model.d.mts +2 -0
  42. package/dist/js/dialog/dialog.model.mjs +11 -0
  43. package/dist/js/dialog/index.d.mts +12 -0
  44. package/dist/js/dialog/index.mjs +123 -0
  45. package/dist/js/dialog.model-HVzYWoDo.d.mts +45 -0
  46. package/dist/js/floatable/floatable.embedded.d.mts +2 -2
  47. package/dist/js/floatable/floatable.embedded.mjs +64 -92
  48. package/dist/js/floatable/floatable.model.d.mts +2 -0
  49. package/dist/js/floatable/floatable.model.mjs +23 -0
  50. package/dist/js/floatable/floatable.standalone.d.mts +2 -1
  51. package/dist/js/floatable.embedded-ncshL3Sa.d.mts +17 -0
  52. package/dist/js/{floatable.embedded-DQYkXt8X.d.mts → floatable.model-DXsQgoU7.d.mts} +13 -20
  53. package/dist/js/focus-trap/focus-trap.embedded.d.mts +2 -2
  54. package/dist/js/focus-trap/focus-trap.embedded.mjs +117 -138
  55. package/dist/js/focus-trap/focus-trap.model.d.mts +2 -0
  56. package/dist/js/focus-trap/focus-trap.model.mjs +15 -0
  57. package/dist/js/focus-trap/focus-trap.standalone.d.mts +2 -1
  58. package/dist/js/focus-trap.embedded-DpcPkP7c.d.mts +13 -0
  59. package/dist/js/{focus-trap.embedded-CjyFQYow.d.mts → focus-trap.model-CpltX5B5.d.mts} +16 -18
  60. package/dist/js/index.d.mts +26 -14
  61. package/dist/js/index.mjs +18 -17
  62. package/dist/js/internal/attributable.d.mts +1 -1
  63. package/dist/js/internal/attributable.mjs +3 -2
  64. package/dist/js/internal/draggable/draggable.model.d.mts +2 -0
  65. package/dist/js/internal/draggable/draggable.model.mjs +37 -0
  66. package/dist/js/internal/draggable/index.d.mts +13 -0
  67. package/dist/js/internal/draggable/index.mjs +243 -0
  68. package/dist/js/internal/l10n/index.d.mts +5 -0
  69. package/dist/js/internal/l10n/index.mjs +147 -0
  70. package/dist/js/internal/l10n/l10n.model.d.mts +2 -0
  71. package/dist/js/internal/l10n/l10n.model.mjs +12 -0
  72. package/dist/js/internal/misc.d.mts +3 -2
  73. package/dist/js/internal/misc.mjs +4 -6
  74. package/dist/js/internal/navigable/index.d.mts +6 -0
  75. package/dist/js/internal/navigable/index.mjs +125 -0
  76. package/dist/js/internal/navigable/navigable.model.d.mts +2 -0
  77. package/dist/js/internal/navigable/navigable.model.mjs +18 -0
  78. package/dist/js/internal/option-list/option-list.constants.d.mts +8 -0
  79. package/dist/js/internal/option-list/option-list.constants.mjs +22 -0
  80. package/dist/js/internal/option-list/option-list.data.d.mts +21 -0
  81. package/dist/js/internal/option-list/option-list.data.mjs +2 -0
  82. package/dist/js/internal/option-list/option-list.dom.d.mts +18 -0
  83. package/dist/js/internal/option-list/option-list.dom.mjs +2 -0
  84. package/dist/js/internal/option-list/option-list.event.d.mts +6 -0
  85. package/dist/js/internal/option-list/option-list.event.mjs +66 -0
  86. package/dist/js/internal/option-list/option-list.form.d.mts +7 -0
  87. package/dist/js/internal/option-list/option-list.form.mjs +53 -0
  88. package/dist/js/internal/option-list/option-list.misc.d.mts +13 -0
  89. package/dist/js/internal/option-list/option-list.misc.mjs +2 -0
  90. package/dist/js/internal/option-list/option-list.model.d.mts +2 -0
  91. package/dist/js/internal/option-list/option-list.state.d.mts +8 -0
  92. package/dist/js/internal/option-list/option-list.state.mjs +39 -0
  93. package/dist/js/l10n/index.d.mts +3 -0
  94. package/dist/js/l10n/index.mjs +2 -0
  95. package/dist/js/l10n.model-D1E1u35L.d.mts +54 -0
  96. package/dist/js/listbox/index.d.mts +9 -18
  97. package/dist/js/listbox/index.mjs +49 -52
  98. package/dist/js/listbox/listbox.constants.d.mts +2 -0
  99. package/dist/js/listbox/{constants.listbox.mjs → listbox.constants.mjs} +11 -15
  100. package/dist/js/listbox/listbox.dom.d.mts +5 -0
  101. package/dist/js/listbox/listbox.dom.mjs +2 -0
  102. package/dist/js/listbox/listbox.event.d.mts +9 -0
  103. package/dist/js/listbox/listbox.event.mjs +2 -0
  104. package/dist/js/listbox/listbox.misc.d.mts +2 -0
  105. package/dist/js/listbox/listbox.misc.mjs +2 -0
  106. package/dist/js/listbox/listbox.model.d.mts +2 -0
  107. package/dist/js/listbox/listbox.model.mjs +1 -0
  108. package/dist/js/listbox/listbox.state.d.mts +9 -0
  109. package/dist/js/listbox/listbox.state.mjs +2 -0
  110. package/dist/js/listbox.constants-DOBMwKup.d.mts +9 -0
  111. package/dist/js/listbox.misc-DwfB4Mu_.d.mts +24 -0
  112. package/dist/js/listbox.model-C0MYWXZe.d.mts +20 -0
  113. package/dist/js/listbox.state-BrN296BM.mjs +240 -0
  114. package/dist/js/menu/index.mjs +171 -0
  115. package/dist/js/menu/menu.model.d.mts +33 -0
  116. package/dist/js/menu/menu.model.mjs +15 -0
  117. package/dist/js/movable/movable.embedded.d.mts +2 -2
  118. package/dist/js/movable/movable.embedded.mjs +77 -86
  119. package/dist/js/movable/movable.model.d.mts +2 -0
  120. package/dist/js/movable/movable.model.mjs +12 -0
  121. package/dist/js/movable/movable.standalone.d.mts +2 -1
  122. package/dist/js/movable.embedded-C1bDTLGs.d.mts +11 -0
  123. package/dist/js/movable.model-D9nnPWKk.d.mts +186 -0
  124. package/dist/js/navigable.model-BqoR6iBv.d.mts +44 -0
  125. package/dist/js/option-list.data-CgMyUwPc.mjs +441 -0
  126. package/dist/js/option-list.model-CCPUlPeX.d.mts +169 -0
  127. package/dist/js/popover/index.d.mts +12 -0
  128. package/dist/js/{popover.mjs → popover/index.mjs} +41 -51
  129. package/dist/js/popover/popover.model.d.mts +2 -0
  130. package/dist/js/popover/popover.model.mjs +12 -0
  131. package/dist/js/popover.model-DiLdz0Hc.d.mts +38 -0
  132. package/dist/js/resizable/resizable.embedded.d.mts +2 -2
  133. package/dist/js/resizable/resizable.embedded.mjs +43 -58
  134. package/dist/js/resizable/resizable.model.d.mts +2 -0
  135. package/dist/js/resizable/resizable.model.mjs +21 -0
  136. package/dist/js/resizable/resizable.standalone.d.mts +2 -1
  137. package/dist/js/resizable.embedded-BemH-7Re.d.mts +11 -0
  138. package/dist/js/resizable.model-YEtcC9li.d.mts +46 -0
  139. package/dist/js/sortable/sortable.embedded.d.mts +2 -2
  140. package/dist/js/sortable/sortable.embedded.mjs +111 -116
  141. package/dist/js/sortable/sortable.model.d.mts +2 -0
  142. package/dist/js/sortable/sortable.model.mjs +24 -0
  143. package/dist/js/sortable/sortable.standalone.d.mts +2 -1
  144. package/dist/js/sortable.embedded-CrEGff9k.d.mts +11 -0
  145. package/dist/js/{splitter.d.mts → splitter/index.d.mts} +6 -4
  146. package/dist/js/{splitter.mjs → splitter/index.mjs} +90 -128
  147. package/dist/js/splitter/splitter.model.d.mts +2 -0
  148. package/dist/js/splitter/splitter.model.mjs +37 -0
  149. package/dist/js/splitter.model-C24W6eZ7.d.mts +57 -0
  150. package/dist/js/{tabs.d.mts → tabs/index.d.mts} +8 -8
  151. package/dist/js/{tabs.mjs → tabs/index.mjs} +58 -58
  152. package/dist/js/tabs/tabs.model.d.mts +2 -0
  153. package/dist/js/tabs/tabs.model.mjs +18 -0
  154. package/dist/js/tabs.model-BHPy7fPo.d.mts +40 -0
  155. package/dist/js/toolbar/index.mjs +27 -0
  156. package/dist/js/toolbar/toolbar.model.d.mts +11 -0
  157. package/dist/js/toolbar/toolbar.model.mjs +7 -0
  158. package/dist/js/tooltip/index.d.mts +19 -0
  159. package/dist/js/{tooltip.mjs → tooltip/index.mjs} +61 -86
  160. package/dist/js/tooltip/tooltip.model.d.mts +2 -0
  161. package/dist/js/tooltip/tooltip.model.mjs +15 -0
  162. package/dist/js/tooltip.model-BpNStw5z.d.mts +37 -0
  163. package/package.json +30 -24
  164. package/dist/js/color-picker/constants.color-picker.d.mts +0 -2
  165. package/dist/js/color-picker/event.color-picker.mjs +0 -2
  166. package/dist/js/color-picker/misc.color-picker.d.mts +0 -2
  167. package/dist/js/color-picker/misc.color-picker.mjs +0 -2
  168. package/dist/js/color-picker/models.color-picker.d.mts +0 -2
  169. package/dist/js/color-picker/state.color-picker.d.mts +0 -8
  170. package/dist/js/color-picker/state.color-picker.mjs +0 -2
  171. package/dist/js/combobox/constants.combobox.d.mts +0 -2
  172. package/dist/js/combobox/dom.combobox.d.mts +0 -26
  173. package/dist/js/combobox/misc.combobox.d.mts +0 -2
  174. package/dist/js/combobox/misc.combobox.mjs +0 -2
  175. package/dist/js/combobox/models.combobox.d.mts +0 -43
  176. package/dist/js/combobox/state.combobox.d.mts +0 -11
  177. package/dist/js/combobox/state.combobox.mjs +0 -2
  178. package/dist/js/constants.color-picker-B-gFjL8m.d.mts +0 -364
  179. package/dist/js/constants.combobox-8EMRmv09.d.mts +0 -18
  180. package/dist/js/constants.listbox-DGnX32kv.d.mts +0 -8
  181. package/dist/js/dialog.d.mts +0 -47
  182. package/dist/js/dialog.mjs +0 -131
  183. package/dist/js/draggable-B5-70SZm.d.mts +0 -155
  184. package/dist/js/event.color-picker-BEpq0Adu.mjs +0 -485
  185. package/dist/js/index-C5D3-oiI.d.mts +0 -177
  186. package/dist/js/internal/draggable.d.mts +0 -2
  187. package/dist/js/internal/draggable.mjs +0 -265
  188. package/dist/js/internal/listbox/listbox.constants.d.mts +0 -8
  189. package/dist/js/internal/listbox/listbox.constants.mjs +0 -22
  190. package/dist/js/internal/listbox/listbox.data.d.mts +0 -19
  191. package/dist/js/internal/listbox/listbox.data.mjs +0 -2
  192. package/dist/js/internal/listbox/listbox.dom.d.mts +0 -65
  193. package/dist/js/internal/listbox/listbox.dom.mjs +0 -2
  194. package/dist/js/internal/listbox/listbox.event.d.mts +0 -4
  195. package/dist/js/internal/listbox/listbox.event.mjs +0 -63
  196. package/dist/js/internal/listbox/listbox.form.d.mts +0 -5
  197. package/dist/js/internal/listbox/listbox.form.mjs +0 -53
  198. package/dist/js/internal/listbox/listbox.misc.d.mts +0 -11
  199. package/dist/js/internal/listbox/listbox.misc.mjs +0 -2
  200. package/dist/js/internal/listbox/listbox.model.d.mts +0 -2
  201. package/dist/js/internal/listbox/listbox.state.d.mts +0 -6
  202. package/dist/js/internal/listbox/listbox.state.mjs +0 -40
  203. package/dist/js/internal/navigable.d.mts +0 -36
  204. package/dist/js/internal/navigable.mjs +0 -135
  205. package/dist/js/l10n-Bn-7RcwR.d.mts +0 -20
  206. package/dist/js/l10n.d.mts +0 -2
  207. package/dist/js/l10n.mjs +0 -80
  208. package/dist/js/listbox/constants.listbox.d.mts +0 -2
  209. package/dist/js/listbox/event.listbox.d.mts +0 -7
  210. package/dist/js/listbox/event.listbox.mjs +0 -2
  211. package/dist/js/listbox/misc.listbox.d.mts +0 -2
  212. package/dist/js/listbox/misc.listbox.mjs +0 -2
  213. package/dist/js/listbox/state.listbox.d.mts +0 -10
  214. package/dist/js/listbox/state.listbox.mjs +0 -2
  215. package/dist/js/listbox.data-DQ7-x2uY.mjs +0 -425
  216. package/dist/js/listbox.model-BHPA7GM4.d.mts +0 -125
  217. package/dist/js/menu.mjs +0 -172
  218. package/dist/js/misc.listbox-DKB-j0UK.mjs +0 -196
  219. package/dist/js/misc.listbox-mZMuYOxg.d.mts +0 -20
  220. package/dist/js/popover.d.mts +0 -38
  221. package/dist/js/resizable.embedded-dvhdfQgt.d.mts +0 -34
  222. package/dist/js/toolbar.mjs +0 -31
  223. package/dist/js/tooltip.d.mts +0 -45
  224. /package/dist/js/combobox/{models.combobox.mjs → combobox.model.mjs} +0 -0
  225. /package/dist/js/internal/{listbox/listbox.model.mjs → option-list/option-list.model.mjs} +0 -0
  226. /package/dist/js/{menu.d.mts → menu/index.d.mts} +0 -0
  227. /package/dist/js/{toolbar.d.mts → toolbar/index.d.mts} +0 -0
package/dist/js/menu.mjs DELETED
@@ -1,172 +0,0 @@
1
- import { createEmbeddedFloatable, getOnBeforeToggleListener } from "./floatable/floatable.embedded.mjs";
2
- import { attributable } from "./internal/attributable.mjs";
3
- import { NAVIGABLE_KEYS_HORIZONTAL, NAVIGABLE_KEYS_VERTICAL, getNavigable, updateNavigableFocus } from "./internal/navigable.mjs";
4
- import { setAria, setRole } from "@oscarpalmer/toretto/aria";
5
- import { on } from "@oscarpalmer/toretto/event";
6
- import { setAttribute, setAttributes } from "@oscarpalmer/toretto/attribute";
7
- import { findAncestor } from "@oscarpalmer/toretto/find";
8
- //#region src/js/menu.ts
9
- var OuiMenu = class {
10
- content;
11
- element;
12
- floatable;
13
- navigable;
14
- toggle;
15
- get open() {
16
- return this.floatable.open;
17
- }
18
- constructor(element, navigable) {
19
- this.element = element;
20
- this.navigable = navigable;
21
- this.content = navigable.element;
22
- this.toggle = element.querySelector(SELECTOR_MENU_TOGGLE);
23
- this.floatable = createEmbeddedFloatable(this.toggle, this.content, {
24
- attribute: ATTRIBUTE_MENU_POSITION,
25
- position: findAncestor(element.parentElement, SELECTOR_MENU_CONTENT) == null ? "below-start" : "end-top",
26
- reusable: false
27
- });
28
- this.navigable.listeners.push(getOnBeforeToggleListener(this.content), on(this.content, "click", (event) => {
29
- event.stopPropagation();
30
- if (findAncestor(event, SELECTOR_MENU_TOGGLE) != null) return;
31
- const elements = document.querySelectorAll(SELECTOR_MENU_CONTENT);
32
- for (const element of elements) menus.get(element)?.floatable.hide();
33
- const menu = menus.get(elements[0]);
34
- if (menu != null && event.pointerId === -1) updateNavigableFocus(menu.navigable, true);
35
- }), on(this.content, "toggle", (event) => {
36
- const expanded = event.newState === "open";
37
- if (expanded) {
38
- this.floatable?.update();
39
- updateNavigableFocus(this.navigable, true);
40
- }
41
- setAria(this.toggle, "expanded", expanded);
42
- }));
43
- this.floatable.update();
44
- initializeMenu(this);
45
- updateNavigableFocus(this.navigable, false);
46
- }
47
- destroy() {
48
- this.floatable.destroy();
49
- this.navigable.destroy();
50
- this.floatable = void 0;
51
- this.navigable = void 0;
52
- }
53
- };
54
- var OuiMenubar = class {
55
- element;
56
- navigable;
57
- constructor(element, navigable) {
58
- this.element = element;
59
- this.navigable = navigable;
60
- updateNavigableFocus(this.navigable, false);
61
- }
62
- destroy() {
63
- this.navigable.destroy();
64
- this.navigable = void 0;
65
- }
66
- };
67
- function addInstance(instances, ctor, element, content, options) {
68
- if (!instances.has(content)) instances.set(content, new ctor(element, getNavigable(content, {
69
- ...options,
70
- onDeactivate,
71
- onPreventNavigation,
72
- onShouldActivate,
73
- onShouldDeactivate
74
- })));
75
- }
76
- function addMenu(element) {
77
- const content = element.querySelector(SELECTOR_MENU_CONTENT);
78
- const toggle = element.querySelector(SELECTOR_MENU_TOGGLE);
79
- if (content != null && toggle != null) addInstance(menus, OuiMenu, element, content, {
80
- selector: SELECTOR_MENU_ITEM,
81
- vertical: true
82
- });
83
- }
84
- function addMenubar(element) {
85
- addInstance(menubars, OuiMenubar, element, element, {
86
- role: "menubar",
87
- selector: SELECTOR_MENUBAR_ITEM,
88
- vertical: false
89
- });
90
- }
91
- function getId(element, value) {
92
- let { id } = element;
93
- if (id == null || id.trim().length === 0) {
94
- id = value == null ? `oui_menu_${++index}` : `${value}_toggle`;
95
- element.id = id;
96
- }
97
- return id;
98
- }
99
- function initializeMenu(menu) {
100
- const id = getId(menu.content);
101
- setAttribute(menu.toggle, "popovertarget", id);
102
- setAria(menu.toggle, {
103
- controls: id,
104
- expanded: "false",
105
- haspopup: "menu"
106
- });
107
- setAttributes(menu.content, {
108
- popover: "",
109
- tabindex: "-1"
110
- });
111
- setRole(menu.content, "menu");
112
- }
113
- function onDeactivate(_, navigable) {
114
- const menu = menus.get(navigable.element);
115
- if (menu == null) return;
116
- menu.floatable.hide();
117
- const element = findAncestor(menu.element.parentElement, SELECTORS);
118
- if (element == null) return;
119
- const instance = menubars.get(element) ?? menus.get(element);
120
- if (instance != null) updateNavigableFocus(instance.navigable, true);
121
- }
122
- function onPreventNavigation(_, navigable) {
123
- const instance = menubars.get(navigable.element) ?? menus.get(navigable.element);
124
- return instance == null ? false : findAncestor(instance.element.parentElement, SELECTORS) != null;
125
- }
126
- function onShouldActivate(event, navigable) {
127
- let activate = false;
128
- if (menubars.has(navigable.element)) activate = navigable.orientation === "horizontal" ? NAVIGABLE_KEYS_VERTICAL.has(event.key) : NAVIGABLE_KEYS_HORIZONTAL.has(event.key);
129
- else if (menus.has(navigable.element)) activate = navigable.orientation === "horizontal" ? NAVIGABLE_KEYS_VERTICAL.has(event.key) : event.key === "ArrowRight";
130
- if (activate) {
131
- const target = event.target instanceof HTMLElement && event.target.matches(SELECTOR_MENU_TOGGLE) ? event.target : void 0;
132
- if (target == null) activate = false;
133
- else target.click();
134
- }
135
- return activate;
136
- }
137
- function onShouldDeactivate(event, navigable) {
138
- if (menubars.has(navigable.element)) return;
139
- const menu = menus.get(navigable.element);
140
- if (menu == null) return;
141
- const horizontal = navigable.orientation === "horizontal";
142
- const altKey = horizontal ? "ArrowDown" : "ArrowRight";
143
- const baseKey = horizontal ? "ArrowUp" : "ArrowLeft";
144
- if (event.key === baseKey) return findAncestor(menu.element.parentElement, SELECTOR_MENU_CONTENT) != null;
145
- if (event.key === altKey && event.target instanceof HTMLElement && !event.target.hasAttribute("popovertarget")) return false;
146
- }
147
- function removeInstance(instances, element) {
148
- instances.get(element)?.destroy();
149
- instances.delete(element);
150
- }
151
- function removeMenu(element) {
152
- removeInstance(menus, element);
153
- }
154
- function removeMenubar(element) {
155
- removeInstance(menubars, element);
156
- }
157
- const ATTRIBUTE_MENU = "oui-menu";
158
- const ATTRIBUTE_MENU_POSITION = "oui-menu-position";
159
- const ATTRIBUTE_MENUBAR = "oui-menubar";
160
- const SELECTOR_MENUBAR = `[${ATTRIBUTE_MENUBAR}]`;
161
- const SELECTOR_MENUBAR_ITEM = `:scope > [${ATTRIBUTE_MENUBAR}-item], :scope > * > [${ATTRIBUTE_MENUBAR}-item]`;
162
- const SELECTOR_MENU_CONTENT = `[${ATTRIBUTE_MENU}-content]`;
163
- const SELECTOR_MENU_ITEM = `:scope > [${ATTRIBUTE_MENU}-item], :scope > * > [${ATTRIBUTE_MENU}-item]`;
164
- const SELECTOR_MENU_TOGGLE = `[${ATTRIBUTE_MENU}-toggle]`;
165
- const SELECTORS = `${SELECTOR_MENUBAR}, ${SELECTOR_MENU_CONTENT}`;
166
- const menubars = /* @__PURE__ */ new WeakMap();
167
- const menus = /* @__PURE__ */ new WeakMap();
168
- let index = 0;
169
- attributable(ATTRIBUTE_MENU, addMenu, removeMenu);
170
- attributable(ATTRIBUTE_MENUBAR, addMenubar, removeMenubar);
171
- //#endregion
172
- export {};
@@ -1,196 +0,0 @@
1
- import { getLocalizations, updateLocalizations } from "./l10n.mjs";
2
- import { getBooleanAriaValue } from "./internal/misc.mjs";
3
- import { b as updateListboxValueLabel, c as createListboxContent, n as filterListbox, s as toggleListboxOption, t as applyListboxSelection, v as updateListboxMessage, x as generateListboxIds, y as updateListboxPreview } from "./listbox.data-DQ7-x2uY.mjs";
4
- import { initializeListboxState } from "./internal/listbox/listbox.state.mjs";
5
- import { processListboxKeydown } from "./internal/listbox/listbox.event.mjs";
6
- import { LISTBOX_ATTRIBUTES, LISTBOX_MESSAGES, LISTBOX_SELECTORS, LISTBOX_TAGNAME } from "./listbox/constants.listbox.mjs";
7
- import { on } from "@oscarpalmer/toretto/event";
8
- import { setAttributes } from "@oscarpalmer/toretto/attribute";
9
- import { findAncestor } from "@oscarpalmer/toretto/find";
10
- import { noop } from "@oscarpalmer/atoms/function";
11
- import { getData } from "@oscarpalmer/toretto/data";
12
- //#region src/js/listbox/event.listbox.ts
13
- function onListboxClick(event) {
14
- const listbox = findAncestor(event, LISTBOX_TAGNAME);
15
- const state = listboxStates.map.get(listbox);
16
- if (listbox == null || state == null) return;
17
- const option = findAncestor(event, LISTBOX_SELECTORS.option);
18
- if (option == null) return;
19
- if (state.disabled) state.filter.element.focus();
20
- else if (state.readonly) updateListboxPreview("none", state, option, false);
21
- else toggleListboxOption(state, option);
22
- }
23
- function onListboxEnter(state) {
24
- if (!state.disabled && !state.readonly) toggleListboxOption(state, state.active);
25
- }
26
- function onListboxFilter(preview, state, _, active) {
27
- updateListboxPreview(preview, state, active);
28
- }
29
- function onListboxInput(event) {
30
- const listbox = findAncestor(event, LISTBOX_TAGNAME);
31
- const state = listboxStates.map.get(listbox);
32
- if (state?.filter.element === event.target) filterListbox(event.inputType, state);
33
- }
34
- function onListboxKeydown(event) {
35
- const listbox = findAncestor(event, LISTBOX_TAGNAME);
36
- const state = listboxStates.map.get(listbox);
37
- if (state?.filter.element === event.target) processListboxKeydown(event, state);
38
- }
39
- function onListboxNavigation(preview, state, active) {
40
- if (state.multiple || state.readonly) updateListboxPreview(preview, state, active);
41
- else applyListboxSelection({
42
- state,
43
- option: active,
44
- added: true,
45
- selected: active == null ? [] : [active]
46
- });
47
- }
48
- function onListboxToggle(state) {
49
- state.filter.element.focus();
50
- }
51
- on(document, "click", onListboxClick);
52
- on(document, "input", onListboxInput);
53
- on(document, "keydown", onListboxKeydown, { passive: false });
54
- //#endregion
55
- //#region src/js/listbox/state.listbox.ts
56
- function createListboxState(element, internals) {
57
- const select = element.querySelector("select");
58
- if (select == null) throw new Error(LISTBOX_MESSAGES.select);
59
- const label = element.querySelector(`label[for="${select.id}"]`);
60
- if (label == null) throw new Error(LISTBOX_MESSAGES.label);
61
- element.id = select.id;
62
- const disabled = getBooleanAriaValue(element, "disabled") || select.disabled;
63
- const multiple = element.multiple || select.multiple;
64
- const readonly = getBooleanAriaValue(element, "readonly");
65
- const required = getBooleanAriaValue(element, "required") || select.required;
66
- setAttributes(element, {
67
- autocomplete: "none",
68
- name: select.name === "" ? select.id : select.name
69
- });
70
- const id = getListboxId();
71
- const labelId = label.id;
72
- label.htmlFor = id;
73
- label.id = `${id}_label`;
74
- generateListboxIds(id, select);
75
- const type = "select";
76
- const content = createListboxContent({
77
- element,
78
- id,
79
- label,
80
- multiple,
81
- select,
82
- type,
83
- attributes: LISTBOX_ATTRIBUTES,
84
- autocomplete: listboxAutoComplete,
85
- listbox: true
86
- });
87
- const { selected } = content.list.options;
88
- const values = selected.length === 0 ? [""] : selected.map((option) => getData(option, "value", false) ?? "");
89
- const state = {
90
- disabled,
91
- id,
92
- internals,
93
- message: content.message,
94
- multiple,
95
- readonly,
96
- required,
97
- select,
98
- type,
99
- active: selected[0],
100
- attributes: LISTBOX_ATTRIBUTES,
101
- autocomplete: listboxAutoComplete,
102
- callbacks: listboxCallbacks,
103
- content: content.element,
104
- elements: [element, content.filter.element],
105
- filter: {
106
- element: content.filter.element,
107
- value: ""
108
- },
109
- host: element,
110
- label: {
111
- id: labelId,
112
- element: label
113
- },
114
- list: content.list.element,
115
- listeners: [],
116
- listbox: true,
117
- localizations: {
118
- component: {},
119
- global: listboxLocalizations
120
- },
121
- name: element.name,
122
- options: content.list.options,
123
- values: {
124
- current: values.slice(),
125
- initial: values.slice(),
126
- label: content.value
127
- }
128
- };
129
- return initializeListboxState(state, listboxStates, onAttachListbox);
130
- }
131
- function onAttachListbox(state) {
132
- const { content, select } = state;
133
- select.hidden = true;
134
- select.insertAdjacentElement("afterend", content);
135
- select.remove();
136
- }
137
- function onDetachListbox(state) {
138
- const { content, select } = state;
139
- content.insertAdjacentElement("beforebegin", select);
140
- content.remove();
141
- select.hidden = false;
142
- }
143
- const listboxAutoComplete = {
144
- both: false,
145
- inline: false,
146
- list: false,
147
- none: true
148
- };
149
- const listboxCallbacks = {
150
- data: {
151
- onApply: noop,
152
- onFilter: onListboxFilter,
153
- onForm: noop,
154
- onPreview: noop,
155
- onToggle: onListboxToggle
156
- },
157
- keydown: {
158
- onEnter: onListboxEnter,
159
- onNavigation: onListboxNavigation,
160
- onToggle: onListboxToggle
161
- }
162
- };
163
- const listboxLocalizations = getLocalizations({
164
- empty: "No results found",
165
- input: "",
166
- invalid: "Please select an option from the list",
167
- max: (max) => `Please select fewer options (maximum is ${max})`,
168
- min: (min) => `Please select more options (minimum is ${min})`,
169
- remove: "",
170
- results: (amount) => `${amount} results available`,
171
- selected: (amount) => `${amount} selected`
172
- });
173
- const listboxStates = {
174
- map: /* @__PURE__ */ new WeakMap(),
175
- set: /* @__PURE__ */ new Set()
176
- };
177
- //#endregion
178
- //#region src/js/listbox/misc.listbox.ts
179
- function getListboxId() {
180
- index += 1;
181
- return `oui_listbox_${index}`;
182
- }
183
- function setListboxLocalizations(first, second) {
184
- updateListboxLocalizations(listboxLocalizations, listboxLocalizations.values, first, second);
185
- }
186
- function updateListboxLocalizations(instance, destination, first, second) {
187
- updateLocalizations(instance, typeof first === "string" ? { [first]: second } : first, destination, () => {
188
- for (const state of listboxStates.set) {
189
- updateListboxMessage(state);
190
- updateListboxValueLabel(state);
191
- }
192
- });
193
- }
194
- let index = 0;
195
- //#endregion
196
- export { listboxLocalizations as a, onDetachListbox as c, onListboxNavigation as d, onListboxToggle as f, createListboxState as i, onListboxEnter as l, setListboxLocalizations as n, listboxStates as o, updateListboxLocalizations as r, onAttachListbox as s, getListboxId as t, onListboxFilter as u };
@@ -1,20 +0,0 @@
1
- import { t as OuiLocalizations } from "./l10n-Bn-7RcwR.mjs";
2
- import { o as OuiListboxLocalizations } from "./listbox.model-BHPA7GM4.mjs";
3
- //#region src/js/listbox/misc.listbox.d.ts
4
- declare function getListboxId(): string;
5
- /**
6
- * Set listbox localizations for a specific language
7
- *
8
- * @param language Language code
9
- * @param localizations Localizations for language
10
- */
11
- declare function setListboxLocalizations(language: string, localizations: Partial<OuiListboxLocalizations>): void;
12
- /**
13
- * Set listbox localizations for one or more languages
14
- *
15
- * @param localizations Localizations for one or more languages
16
- */
17
- declare function setListboxLocalizations(localizations: Record<string, Partial<OuiListboxLocalizations>>): void;
18
- declare function updateListboxLocalizations(instance: OuiLocalizations<OuiListboxLocalizations>, destination: Record<string, Partial<OuiListboxLocalizations>>, first: string | Record<string, Partial<OuiListboxLocalizations>>, second?: Partial<OuiListboxLocalizations>): void;
19
- //#endregion
20
- export { setListboxLocalizations as n, updateListboxLocalizations as r, getListboxId as t };
@@ -1,38 +0,0 @@
1
- import { r as OuiFloatable } from "./floatable.embedded-DQYkXt8X.mjs";
2
- import { i as OuiFocusTrap } from "./focus-trap.embedded-CjyFQYow.mjs";
3
- import { RemovableEventListener } from "@oscarpalmer/toretto/models";
4
- //#region src/js/popover.d.ts
5
- declare class OuiPopover {
6
- #private;
7
- /**
8
- * Is the popover open?
9
- */
10
- get open(): boolean;
11
- set open(value: boolean);
12
- constructor(state: OuiPopoverState);
13
- /**
14
- * Closes the popover
15
- */
16
- hide(): void;
17
- /**
18
- * Opens the popover
19
- */
20
- show(): void;
21
- }
22
- type OuiPopoverState = {
23
- anchor: HTMLElement;
24
- content: HTMLElement;
25
- floatable: OuiFloatable;
26
- focusTrap?: OuiFocusTrap;
27
- listeners: RemovableEventListener[];
28
- popover: OuiPopover;
29
- };
30
- /**
31
- * Get the _OuiPopover_ for an element
32
- *
33
- * @param element Element to get _OuiPopover_ for
34
- * @returns _OuiPopover_ instance
35
- */
36
- declare function getPopover(element: HTMLElement): OuiPopover | undefined;
37
- //#endregion
38
- export { type OuiPopover, getPopover };
@@ -1,34 +0,0 @@
1
- import { StyleToggler } from "@oscarpalmer/toretto/style";
2
- //#region src/js/resizable/resizable.embedded.d.ts
3
- type CreateOuiResizableOptions = {
4
- maximumHeight?: number;
5
- maximumWidth?: number;
6
- minimumHeight?: number;
7
- minimumWidth?: number;
8
- };
9
- declare class OuiResizable {
10
- #private;
11
- constructor(state: OuiResizableState);
12
- destroy(): void;
13
- set(): void;
14
- reset(): void;
15
- }
16
- type OuiResizableState = {
17
- element: HTMLElement;
18
- handle: HTMLElement;
19
- height: number;
20
- options: Required<CreateOuiResizableOptions>;
21
- styles: StyleToggler;
22
- width: number;
23
- };
24
- /**
25
- * Creates _(or retrieves)_ a _OuiResizable_ instance for an element
26
- *
27
- * @param element Element to make resizable
28
- * @returns _OuiResizable_ instance
29
- */
30
- declare function createResizable(element: HTMLElement, options?: CreateOuiResizableOptions): OuiResizable;
31
- declare const RESIZABLE_ATTRIBUTE = "oui-resizable";
32
- declare const RESIZABLE_ATTRIBUTE_HANDLE: string;
33
- //#endregion
34
- export { createResizable as a, RESIZABLE_ATTRIBUTE_HANDLE as i, OuiResizable as n, RESIZABLE_ATTRIBUTE as r, CreateOuiResizableOptions as t };
@@ -1,31 +0,0 @@
1
- import { attributable } from "./internal/attributable.mjs";
2
- import { getNavigable, updateNavigableFocus } from "./internal/navigable.mjs";
3
- //#region src/js/toolbar.ts
4
- var OuiToolbar = class {
5
- #navigable;
6
- constructor(navigable) {
7
- this.#navigable = navigable;
8
- updateNavigableFocus(this.#navigable, false);
9
- }
10
- destroy() {
11
- this.#navigable.destroy();
12
- this.#navigable = void 0;
13
- }
14
- };
15
- function addToolbar(element) {
16
- if (!instances.has(element)) instances.set(element, new OuiToolbar(getNavigable(element, {
17
- role: "toolbar",
18
- selector: SELECTOR,
19
- vertical: false
20
- })));
21
- }
22
- function removeToolbar(element) {
23
- instances.get(element)?.destroy();
24
- instances.delete(element);
25
- }
26
- const ATTRIBUTE = "oui-toolbar";
27
- const SELECTOR = `[${ATTRIBUTE}-item]`;
28
- const instances = /* @__PURE__ */ new WeakMap();
29
- attributable(ATTRIBUTE, addToolbar, removeToolbar);
30
- //#endregion
31
- export {};
@@ -1,45 +0,0 @@
1
- import { r as OuiFloatable } from "./floatable.embedded-DQYkXt8X.mjs";
2
- //#region src/js/tooltip.d.ts
3
- declare class OuiTooltip {
4
- #private;
5
- /**
6
- * Is the tooltip open?
7
- */
8
- get open(): boolean;
9
- /**
10
- * Open or close the tooltip
11
- */
12
- set open(value: boolean);
13
- constructor(state: OuiTooltipState);
14
- /**
15
- * Closes the tooltip
16
- */
17
- hide(): void;
18
- /**
19
- * Opens the tooltip
20
- */
21
- show(): void;
22
- }
23
- type OuiTooltipState = {
24
- anchor: HTMLElement;
25
- elements: HTMLElement[];
26
- floatable: OuiFloatable;
27
- timer?: number;
28
- tooltip: OuiTooltip;
29
- };
30
- /**
31
- * Get the _OuiTooltip_ for an element
32
- *
33
- * @param element Element to get _OuiTooltip_ for
34
- * @returns _OuiTooltip_ instance
35
- */
36
- declare function getTooltip(element: HTMLElement): OuiTooltip | undefined;
37
- /**
38
- * Set the delay before showing the tooltip, in milliseconds
39
- *
40
- * _(Default delay is half a second, or 500 milliseconds)_
41
- * @param value Delay in milliseconds
42
- */
43
- declare function setTooltipDelay(value: number): void;
44
- //#endregion
45
- export { type OuiTooltip, getTooltip, setTooltipDelay };
File without changes
File without changes