@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,322 +0,0 @@
1
- import { round } from "@oscarpalmer/atoms/math";
2
- import { clamp } from "@oscarpalmer/atoms/number";
3
- import { setAria } from "@oscarpalmer/toretto/aria";
4
- import { getAttribute, setAttribute } from "@oscarpalmer/toretto/attribute";
5
- import { createElement } from "@oscarpalmer/toretto/create";
6
- import { getEventPosition, on } from "@oscarpalmer/toretto/event";
7
- import { findAncestor } from "@oscarpalmer/toretto/find";
8
- import { setStyle, toggleStyles } from "@oscarpalmer/toretto/style";
9
- import supportsTouch from "@oscarpalmer/toretto/touch";
10
- import { isNullableOrWhitespace } from "@oscarpalmer/atoms/is";
11
- //#region src/js/splitter.ts
12
- const ATTRIBUTE_MAX = "max";
13
- const ATTRIBUTE_MIN = "min";
14
- const ATTRIBUTE_SIZE = "size";
15
- const ATTRIBUTE_TYPE = "type";
16
- var OuiSplitter = class {
17
- element;
18
- handle;
19
- panels;
20
- rectangle;
21
- separator;
22
- types;
23
- values;
24
- constructor(element, panels) {
25
- this.element = element;
26
- this.panels = panels;
27
- if (isNullableOrWhitespace(element.id)) element.id = `oui_splitter_${++index}`;
28
- this.values = getValues(element);
29
- this.handle = createHandle();
30
- this.rectangle = element.getBoundingClientRect();
31
- this.separator = createSeparator(this);
32
- this.separator.append(this.handle);
33
- panels[0].insertAdjacentElement("afterend", this.separator);
34
- this.updateOrientation();
35
- this.updateValues();
36
- }
37
- updateConnections(add) {
38
- const method = METHODS_CONNECT[add];
39
- MAPPED_ELEMENTS[method](this.element, this);
40
- MAPPED_ELEMENTS[method](this.handle, this);
41
- MAPPED_ELEMENTS[method](this.separator, this);
42
- if (this.types.auto) RESIZE_OBSERVER[METHODS_OBSERVE[add]](this.element);
43
- }
44
- updateOrientation() {
45
- this.types = getTypes(this);
46
- if (this.types.auto) RESIZE_OBSERVER.observe(this.element);
47
- else RESIZE_OBSERVER.unobserve(this.element);
48
- setAttribute(this.element, ATTRIBUTE_HORIZONTAL, this.types.horizontal ? "" : void 0);
49
- setAriaOrientation(this);
50
- }
51
- updateValues() {
52
- this.values = getValues(this.element);
53
- requestAnimationFrame(() => {
54
- setSize(this, this.values.now.current);
55
- setAriaValue(this);
56
- });
57
- }
58
- };
59
- var OuiSplitterElement = class extends HTMLElement {
60
- static observedAttributes = [
61
- ATTRIBUTE_MAX,
62
- ATTRIBUTE_MIN,
63
- ATTRIBUTE_SIZE,
64
- ATTRIBUTE_TYPE
65
- ];
66
- #splitter;
67
- /**
68
- * Maximum size for the first panel
69
- */
70
- get max() {
71
- return this.#splitter.values.max;
72
- }
73
- /**
74
- * Maximum size for the first panel
75
- */
76
- set max(value) {
77
- if (typeof value === "number") setAttribute(this, ATTRIBUTE_MAX, value.toString());
78
- }
79
- /**
80
- * Minimum size for the first panel
81
- */
82
- get min() {
83
- return this.#splitter.values.min;
84
- }
85
- /**
86
- * Minimum size for the first panel
87
- */
88
- set min(value) {
89
- if (typeof value === "number") setAttribute(this, ATTRIBUTE_MIN, value.toString());
90
- }
91
- /**
92
- * Current size for the first panel
93
- */
94
- get size() {
95
- return this.#splitter.values.now.current;
96
- }
97
- /**
98
- * Current size for the first panel
99
- */
100
- set size(value) {
101
- if (typeof value === "number") setAttribute(this, ATTRIBUTE_SIZE, value.toString());
102
- }
103
- /**
104
- * Orientation of the splitter
105
- */
106
- get type() {
107
- return getAttribute(this, ATTRIBUTE_TYPE) ?? "vertical";
108
- }
109
- /**
110
- * Orientation of the splitter
111
- */
112
- set type(value) {
113
- setAttribute(this, ATTRIBUTE_TYPE, value);
114
- }
115
- constructor() {
116
- super();
117
- const panels = [...this.children].filter((child) => child instanceof Element);
118
- if (panels.length !== 2) throw new Error(MESSAGE);
119
- this.#splitter = new OuiSplitter(this, panels);
120
- }
121
- connectedCallback() {
122
- this.#splitter.updateConnections(1);
123
- }
124
- disconnectedCallback() {
125
- this.#splitter.updateConnections(0);
126
- }
127
- attributeChangedCallback(name) {
128
- switch (name) {
129
- case ATTRIBUTE_MAX:
130
- case ATTRIBUTE_MIN:
131
- case ATTRIBUTE_SIZE:
132
- this.#splitter.updateValues();
133
- break;
134
- case ATTRIBUTE_TYPE: this.#splitter.updateOrientation();
135
- }
136
- }
137
- };
138
- function createHandle() {
139
- return createElement("span", {
140
- aria: { hidden: true },
141
- attribute: { [ATTRIBUTE_HANDLE]: "" }
142
- });
143
- }
144
- function createSeparator(splitter) {
145
- return createElement("div", {
146
- aria: {
147
- controls: splitter.element.id,
148
- label: "Resize panels"
149
- },
150
- attribute: { [ATTRIBUTE_SEPARATOR]: "" },
151
- property: {
152
- role: "separator",
153
- tabIndex: 0
154
- }
155
- });
156
- }
157
- function getContained(min, value, max) {
158
- return round(clamp(value, min, max), VALUE_DECIMALS);
159
- }
160
- function getSize(splitter, value) {
161
- const { height, left, top, width } = splitter.rectangle;
162
- const fraction = (value - (splitter.types.horizontal ? top : left)) / (splitter.types.horizontal ? height : width);
163
- return getContained(splitter.values.min, fraction, splitter.values.max);
164
- }
165
- function getTypes(splitter, width, height) {
166
- const type = getAttribute(splitter.element, "type");
167
- if (type === "horizontal") return {
168
- auto: false,
169
- horizontal: true
170
- };
171
- if (type === "auto") return {
172
- auto: true,
173
- horizontal: (height ?? splitter.rectangle.height) > (width ?? splitter.rectangle.width)
174
- };
175
- return {
176
- auto: false,
177
- horizontal: false
178
- };
179
- }
180
- function getValue(element, name, defaultValue) {
181
- const value = getAttribute(element, name);
182
- if (isNullableOrWhitespace(value)) return defaultValue;
183
- const parsed = Number.parseFloat(value);
184
- if (Number.isNaN(parsed)) return defaultValue;
185
- if (parsed < 0) return defaultValue;
186
- return parsed > 1 ? parsed / NAVIGATION_MAXIMUM_TOTAL : parsed;
187
- }
188
- function getValues(element) {
189
- const values = {
190
- max: getValue(element, ATTRIBUTE_MAX, NAVIGATION_MAXIMUM_PERCENTAGE),
191
- min: getValue(element, ATTRIBUTE_MIN, NAVIGATION_MINIMUM_PERCENTAGE),
192
- now: {
193
- current: .5,
194
- previous: .5
195
- }
196
- };
197
- const value = getContained(values.min, getValue(element, ATTRIBUTE_SIZE, values.now.current), values.max);
198
- values.now.current = value;
199
- values.now.previous = value;
200
- return values;
201
- }
202
- function onEnd(reset) {
203
- if (splitter == null) return;
204
- splitter.handle.removeAttribute(ATTRIBUTE_ACTIVE);
205
- splitter.separator.removeAttribute(ATTRIBUTE_ACTIVE);
206
- if (reset) setSize(splitter, splitter.values.now.previous);
207
- else splitter.values.now.previous = splitter.values.now.current;
208
- splitter = void 0;
209
- STYLING_TOGGLER.remove();
210
- }
211
- function onKeydown(event) {
212
- switch (true) {
213
- case KEYS_ALL.has(event.key):
214
- onNavigate(event);
215
- break;
216
- case event.key === "Escape": onEnd(true);
217
- }
218
- }
219
- function onNavigate(event) {
220
- const splitter = MAPPED_ELEMENTS.get(findAncestor(event, "[oui-splitter-separator]"));
221
- if (splitter == null) return;
222
- const { types, values } = splitter;
223
- if (KEYS_ABSOLUTE.has(event.key)) {
224
- setSize(splitter, event.key === "End" ? values.max : values.min, true);
225
- return;
226
- }
227
- if (types.horizontal && !KEYS_HORIZONTAL.has(event.key) || !(types.horizontal || KEYS_VERTICAL.has(event.key))) return;
228
- const offset = KEYS_NEGATIVE.has(event.key) ? -1 : 1;
229
- setSize(splitter, getContained(values.min, values.now.current + offset * NAVIGATION_MODIFIER, values.max), true);
230
- }
231
- function onObservation(entries) {
232
- if (frame != null) cancelAnimationFrame(frame);
233
- frame = requestAnimationFrame(() => {
234
- for (const entry of entries) {
235
- const splitter = MAPPED_ELEMENTS.get(entry.target);
236
- if (splitter == null) return;
237
- splitter.types = getTypes(splitter, entry.contentRect.width, entry.contentRect.height);
238
- setAttribute(splitter.element, ATTRIBUTE_HORIZONTAL, splitter.types.horizontal ? "" : void 0);
239
- setAriaOrientation(splitter);
240
- }
241
- frame = void 0;
242
- });
243
- }
244
- function onPointerdown(event) {
245
- if (supportsTouch.value ? event.type === "mousedown" : event.type === "touchstart") return;
246
- splitter = MAPPED_ELEMENTS.get(findAncestor(event, SELECTOR_HANDLE));
247
- if (splitter == null) return;
248
- if (supportsTouch.value) event.preventDefault();
249
- setAttribute(splitter.handle, ATTRIBUTE_ACTIVE, "");
250
- setAttribute(splitter.separator, ATTRIBUTE_ACTIVE, "");
251
- splitter.rectangle = splitter.element.getBoundingClientRect();
252
- STYLING_TOGGLER.set();
253
- }
254
- function onPointermove(event) {
255
- if (splitter == null) return;
256
- const position = getEventPosition(event);
257
- if (position != null) {
258
- splitter.values.now.current = getSize(splitter, splitter.types.horizontal ? position.y : position.x);
259
- setSize(splitter, splitter.values.now.current);
260
- }
261
- }
262
- function onPointerup() {
263
- if (splitter != null) onEnd(false);
264
- }
265
- function setAriaOrientation(splitter) {
266
- setAria(splitter.separator, "orientation", splitter.types.horizontal ? "horizontal" : "vertical");
267
- }
268
- function setAriaValue(splitter) {
269
- setAria(splitter.separator, {
270
- valuemax: splitter.values.max,
271
- valuemin: splitter.values.min,
272
- valuenow: splitter.values.now.current
273
- });
274
- }
275
- function setSize(splitter, size, previous) {
276
- splitter.values.now.current = size;
277
- if (previous) splitter.values.now.previous = size;
278
- setStyle(splitter.element, "--oui-splitter-size", `${size}`);
279
- setAriaValue(splitter);
280
- }
281
- const TAGNAME = "oui-splitter";
282
- const ATTRIBUTE_ACTIVE = `${TAGNAME}-active`;
283
- const ATTRIBUTE_HANDLE = `${TAGNAME}-handle`;
284
- const ATTRIBUTE_HORIZONTAL = `${TAGNAME}-horizontal`;
285
- const ATTRIBUTE_SEPARATOR = `${TAGNAME}-separator`;
286
- const KEYS_ABSOLUTE = /* @__PURE__ */ new Set(["End", "Home"]);
287
- const KEYS_HORIZONTAL = /* @__PURE__ */ new Set(["ArrowDown", "ArrowUp"]);
288
- const KEYS_NEGATIVE = /* @__PURE__ */ new Set(["ArrowLeft", "ArrowUp"]);
289
- const KEYS_VERTICAL = /* @__PURE__ */ new Set(["ArrowLeft", "ArrowRight"]);
290
- const KEYS_ALL = /* @__PURE__ */ new Set([
291
- ...KEYS_ABSOLUTE,
292
- ...KEYS_HORIZONTAL,
293
- ...KEYS_VERTICAL
294
- ]);
295
- const MAPPED_ELEMENTS = /* @__PURE__ */ new WeakMap();
296
- const MESSAGE = `<${TAGNAME}> must have exactly two panels.`;
297
- const METHODS_CONNECT = ["delete", "set"];
298
- const METHODS_OBSERVE = ["unobserve", "observe"];
299
- const NAVIGATION_MAXIMUM_PERCENTAGE = .9;
300
- const NAVIGATION_MAXIMUM_TOTAL = 100;
301
- const NAVIGATION_MINIMUM_PERCENTAGE = .1;
302
- const NAVIGATION_MODIFIER = .05;
303
- const RESIZE_OBSERVER = new ResizeObserver(onObservation);
304
- const SELECTOR_HANDLE = `[${ATTRIBUTE_HANDLE}]`;
305
- const STYLING_TOGGLER = toggleStyles(document.body, {
306
- touchAction: "none",
307
- userSelect: "none",
308
- webkitUserSelect: "none"
309
- });
310
- const VALUE_DECIMALS = 6;
311
- let index = 0;
312
- let frame;
313
- let splitter;
314
- on(document, "keydown", onKeydown);
315
- on(document, "mousedown", onPointerdown);
316
- on(document, "pointermove", onPointermove);
317
- on(document, "pointerup", onPointerup);
318
- on(document, "touchcancel", onPointerup);
319
- on(document, "touchstart", onPointerdown, { passive: false });
320
- customElements.define(TAGNAME, OuiSplitterElement);
321
- //#endregion
322
- export { OuiSplitterElement };
@@ -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-Bct4U5Dm.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 };
package/src/css/a11y.scss DELETED
@@ -1,13 +0,0 @@
1
- /*! https://github.com/oscarpalmer/oui */
2
-
3
- @use './mixins/misc.mixins.scss' as miscMixins;
4
-
5
- .oui-vh {
6
- :where(&) {
7
- position: absolute !important;
8
- }
9
-
10
- :where(&:not(:active, :focus, :focus-within)) {
11
- @include miscMixins.visually-hidden;
12
- }
13
- }
@@ -1,62 +0,0 @@
1
- /*! https://github.com/oscarpalmer/oui */
2
-
3
- @use './mixins/badge.mixins.scss' as badgeMixins;
4
-
5
- .oui {
6
- :where(&-pill, &-tag) {
7
- @include badgeMixins.badge;
8
- }
9
-
10
- :where(&-pill) {
11
- border-radius: 3em;
12
- padding: 0.5em 1em;
13
- }
14
-
15
- :where(&-tag) {
16
- border-radius: 0.25em;
17
- padding: 0.5em 0.75em;
18
- }
19
-
20
- :where(&-pill--small, &-tag--small) {
21
- font-size: 0.875em;
22
- }
23
-
24
- :where(&-pill--tiny, &-tag--tiny) {
25
- color: color-mix(in oklab, var(--oui-foreground, var(--oui-gray-8)), transparent 12.5%);
26
- font-size: 0.75em;
27
- }
28
-
29
- :where(&-pill--tiny) {
30
- padding: 0.25em 0.75em;
31
- }
32
-
33
- :where(&-tag--tiny) {
34
- padding: 0.25em 0.5em;
35
- }
36
-
37
- // Colors
38
-
39
- :where(&-pill--blue, &-tag--blue) {
40
- @include badgeMixins.badge-blue;
41
- }
42
-
43
- :where(&-pill--green, &-tag--green) {
44
- @include badgeMixins.badge-green;
45
- }
46
-
47
- :where(&-pill--orange, &-tag--orange) {
48
- @include badgeMixins.badge-orange;
49
- }
50
-
51
- :where(&-pill--purple, &-tag--purple) {
52
- @include badgeMixins.badge-purple;
53
- }
54
-
55
- :where(&-pill--red, &-tag--red) {
56
- @include badgeMixins.badge-red;
57
- }
58
-
59
- :where(&-pill--yellow, &-tag--yellow) {
60
- @include badgeMixins.badge-yellow;
61
- }
62
- }
@@ -1,50 +0,0 @@
1
- /*! https://github.com/oscarpalmer/oui */
2
-
3
- @use './mixins/button.mixins.scss' as buttonMixins;
4
-
5
- .oui-button {
6
- :where(&) {
7
- @include buttonMixins.button;
8
- }
9
-
10
- :where(&--blue) {
11
- @include buttonMixins.button-blue;
12
- }
13
-
14
- :where(&--green) {
15
- @include buttonMixins.button-green;
16
- }
17
-
18
- :where(&--orange) {
19
- @include buttonMixins.button-orange;
20
- }
21
-
22
- :where(&--purple) {
23
- @include buttonMixins.button-purple;
24
- }
25
-
26
- :where(&--red) {
27
- @include buttonMixins.button-red;
28
- }
29
-
30
- :where(&--yellow) {
31
- @include buttonMixins.button-yellow;
32
- }
33
-
34
- :where(&--rounded) {
35
- padding: 0.5em 1em;
36
- flex-wrap: nowrap;
37
- border-radius: 5em;
38
- white-space: nowrap;
39
- }
40
-
41
- :where(&--small) {
42
- font-size: 0.875em;
43
- }
44
-
45
- :where(&--tiny) {
46
- --oui-foreground-percentage: 12.5%;
47
-
48
- font-size: 0.75em;
49
- }
50
- }