@oscarpalmer/oui 0.35.0 → 0.37.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 (128) hide show
  1. package/dist/css/badge.css +18 -15
  2. package/dist/css/button.css +35 -31
  3. package/dist/css/color.css +20 -20
  4. package/dist/css/combobox.css +134 -35
  5. package/dist/css/content.css +29 -10
  6. package/dist/css/floatable.css +10 -10
  7. package/dist/css/form.css +393 -129
  8. package/dist/css/listbox.css +176 -0
  9. package/dist/css/message.css +13 -10
  10. package/dist/css/reset.css +29 -88
  11. package/dist/css/splitter.css +2 -2
  12. package/dist/css/tabs.css +103 -0
  13. package/dist/js/combobox/constants.combobox.d.mts +2 -2
  14. package/dist/js/combobox/constants.combobox.mjs +40 -33
  15. package/dist/js/combobox/dom.combobox.d.mts +8 -91
  16. package/dist/js/combobox/dom.combobox.mjs +204 -2
  17. package/dist/js/combobox/event.combobox.d.mts +14 -8
  18. package/dist/js/combobox/event.combobox.mjs +2 -2
  19. package/dist/js/combobox/index.d.mts +1 -1
  20. package/dist/js/combobox/index.mjs +20 -18
  21. package/dist/js/combobox/misc.combobox.d.mts +2 -2
  22. package/dist/js/combobox/misc.combobox.mjs +2 -2
  23. package/dist/js/combobox/models.combobox.d.mts +44 -2
  24. package/dist/js/combobox/state.combobox.d.mts +9 -10
  25. package/dist/js/combobox/state.combobox.mjs +2 -2
  26. package/dist/js/constants.combobox-DmRAMC64.d.mts +26 -0
  27. package/dist/js/constants.listbox-DRsXUxd3.d.mts +14 -0
  28. package/dist/js/focus-trap/focus-trap.embedded.mjs +6 -10
  29. package/dist/js/index-EfkUSals.d.mts +139 -0
  30. package/dist/js/index.d.mts +5 -2
  31. package/dist/js/index.mjs +5 -2
  32. package/dist/js/internal/attributable.mjs +4 -3
  33. package/dist/js/internal/draggable.mjs +16 -22
  34. package/dist/js/internal/listbox/listbox.constants.d.mts +11 -0
  35. package/dist/js/internal/listbox/listbox.constants.mjs +23 -0
  36. package/dist/js/internal/listbox/listbox.data.d.mts +20 -0
  37. package/dist/js/internal/listbox/listbox.data.mjs +2 -0
  38. package/dist/js/internal/listbox/listbox.dom.d.mts +66 -0
  39. package/dist/js/internal/listbox/listbox.dom.mjs +2 -0
  40. package/dist/js/internal/listbox/listbox.event.d.mts +5 -0
  41. package/dist/js/internal/listbox/listbox.event.mjs +63 -0
  42. package/dist/js/internal/listbox/listbox.form.d.mts +6 -0
  43. package/dist/js/internal/listbox/listbox.form.mjs +52 -0
  44. package/dist/js/internal/listbox/listbox.misc.d.mts +12 -0
  45. package/dist/js/internal/listbox/listbox.misc.mjs +2 -0
  46. package/dist/js/internal/listbox/listbox.model.d.mts +2 -0
  47. package/dist/js/internal/listbox/listbox.model.mjs +1 -0
  48. package/dist/js/internal/listbox/listbox.state.d.mts +7 -0
  49. package/dist/js/internal/listbox/listbox.state.mjs +40 -0
  50. package/dist/js/internal/misc.d.mts +6 -0
  51. package/dist/js/internal/misc.mjs +13 -0
  52. package/dist/js/internal/navigable.d.mts +11 -5
  53. package/dist/js/internal/navigable.mjs +44 -18
  54. package/dist/js/l10n-Bn-7RcwR.d.mts +20 -0
  55. package/dist/js/l10n.d.mts +2 -20
  56. package/dist/js/listbox/constants.listbox.d.mts +2 -0
  57. package/dist/js/listbox/constants.listbox.mjs +40 -0
  58. package/dist/js/listbox/event.listbox.d.mts +8 -0
  59. package/dist/js/listbox/event.listbox.mjs +2 -0
  60. package/dist/js/listbox/index.d.mts +116 -0
  61. package/dist/js/listbox/index.mjs +189 -0
  62. package/dist/js/listbox/misc.listbox.d.mts +2 -0
  63. package/dist/js/listbox/misc.listbox.mjs +2 -0
  64. package/dist/js/listbox/state.listbox.d.mts +11 -0
  65. package/dist/js/listbox/state.listbox.mjs +2 -0
  66. package/dist/js/listbox.data-BWd0PCy7.mjs +424 -0
  67. package/dist/js/listbox.model-CRReGOmu.d.mts +125 -0
  68. package/dist/js/misc.listbox-BI-XsTOf.mjs +197 -0
  69. package/dist/js/misc.listbox-gnoJhrTr.d.mts +20 -0
  70. package/dist/js/movable/movable.embedded.mjs +3 -6
  71. package/dist/js/resizable/resizable.embedded.mjs +16 -26
  72. package/dist/js/sortable/sortable.embedded.mjs +4 -2
  73. package/dist/js/splitter.mjs +15 -12
  74. package/dist/js/state.combobox-4xq0FPCF.mjs +365 -0
  75. package/dist/js/tabs.d.mts +25 -0
  76. package/dist/js/tabs.mjs +240 -0
  77. package/dist/js/tooltip.mjs +13 -12
  78. package/package.json +7 -3
  79. package/src/css/badge.scss +6 -18
  80. package/src/css/button.scss +6 -45
  81. package/src/css/color.scss +20 -20
  82. package/src/css/combobox.scss +21 -52
  83. package/src/css/content.scss +30 -3
  84. package/src/css/floatable.scss +17 -17
  85. package/src/css/form.scss +84 -72
  86. package/src/css/listbox.scss +120 -0
  87. package/src/css/message.scss +13 -28
  88. package/src/css/mixins.scss +253 -28
  89. package/src/css/reset.scss +37 -86
  90. package/src/css/splitter.scss +2 -2
  91. package/src/css/tabs.scss +85 -0
  92. package/src/js/combobox/constants.combobox.ts +46 -25
  93. package/src/js/combobox/dom.combobox.ts +36 -454
  94. package/src/js/combobox/event.combobox.ts +129 -218
  95. package/src/js/combobox/index.ts +37 -30
  96. package/src/js/combobox/misc.combobox.ts +30 -114
  97. package/src/js/combobox/models.combobox.ts +7 -47
  98. package/src/js/combobox/state.combobox.ts +126 -127
  99. package/src/js/focus-trap/focus-trap.embedded.ts +11 -19
  100. package/src/js/index.ts +2 -0
  101. package/src/js/internal/draggable.ts +29 -33
  102. package/src/js/internal/listbox/listbox.constants.ts +25 -0
  103. package/src/js/{combobox/data.combobox.ts → internal/listbox/listbox.data.ts} +94 -43
  104. package/src/js/internal/listbox/listbox.dom.ts +445 -0
  105. package/src/js/internal/listbox/listbox.event.ts +129 -0
  106. package/src/js/{combobox/form.combobox.ts → internal/listbox/listbox.form.ts} +13 -14
  107. package/src/js/internal/listbox/listbox.misc.ts +135 -0
  108. package/src/js/internal/listbox/listbox.model.ts +169 -0
  109. package/src/js/internal/listbox/listbox.state.ts +82 -0
  110. package/src/js/internal/misc.ts +27 -0
  111. package/src/js/internal/navigable.ts +80 -23
  112. package/src/js/l10n.ts +8 -8
  113. package/src/js/listbox/constants.listbox.ts +61 -0
  114. package/src/js/listbox/event.listbox.ts +106 -0
  115. package/src/js/listbox/index.ts +302 -0
  116. package/src/js/listbox/misc.listbox.ts +70 -0
  117. package/src/js/listbox/state.listbox.ts +196 -0
  118. package/src/js/movable/movable.embedded.ts +11 -13
  119. package/src/js/resizable/resizable.embedded.ts +25 -39
  120. package/src/js/splitter.ts +21 -18
  121. package/src/js/tabs.ts +447 -0
  122. package/src/js/tooltip.ts +20 -17
  123. package/dist/js/combobox/data.combobox.d.mts +0 -18
  124. package/dist/js/combobox/data.combobox.mjs +0 -2
  125. package/dist/js/combobox/form.combobox.d.mts +0 -6
  126. package/dist/js/combobox/form.combobox.mjs +0 -2
  127. package/dist/js/constants.combobox-h_kyDegw.d.mts +0 -248
  128. package/dist/js/data.combobox-B8HMkDOh.mjs +0 -1030
@@ -0,0 +1,116 @@
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";
4
+ //#region src/js/listbox/index.d.ts
5
+ declare global {
6
+ interface HTMLElementTagNameMap {
7
+ [LISTBOX_TAGNAME]: OuiListboxElement;
8
+ }
9
+ }
10
+ declare class OuiListboxElement extends HTMLElement {
11
+ #private;
12
+ static formAssociated: boolean;
13
+ static observedAttributes: string[];
14
+ /**
15
+ * Is the listbox disabled?
16
+ */
17
+ get disabled(): boolean;
18
+ /**
19
+ * Should the listbox be disabled?
20
+ */
21
+ set disabled(value: boolean);
22
+ /**
23
+ * Current filter value
24
+ */
25
+ get filter(): string;
26
+ /**
27
+ * Set the filter value
28
+ */
29
+ set filter(value: string);
30
+ /**
31
+ * Maximum number of selected options
32
+ */
33
+ get max(): number | undefined;
34
+ /**
35
+ * Set the maximum number of selected options
36
+ */
37
+ set max(value: number);
38
+ /**
39
+ * Minimum number of selected options
40
+ */
41
+ get min(): number | undefined;
42
+ /**
43
+ * Set the minimum number of selected options
44
+ */
45
+ set min(value: number);
46
+ /**
47
+ * Does the listbox allow multiple values?
48
+ */
49
+ get multiple(): boolean;
50
+ /**
51
+ * Name of the listbox
52
+ */
53
+ get name(): string;
54
+ /**
55
+ * Is the listbox readonly?
56
+ */
57
+ get readonly(): boolean;
58
+ /**
59
+ * Should the listbox be readonly?
60
+ */
61
+ set readonly(value: boolean);
62
+ /**
63
+ * Is the listbox required?
64
+ */
65
+ get required(): boolean;
66
+ /**
67
+ * Should the listbox be required?
68
+ */
69
+ set required(value: boolean);
70
+ /**
71
+ * Selected options
72
+ */
73
+ get selected(): HTMLElement[];
74
+ /**
75
+ * Current value
76
+ */
77
+ get value(): string;
78
+ /**
79
+ * Set the value
80
+ */
81
+ set value(value: unknown);
82
+ /**
83
+ * Current values
84
+ */
85
+ get values(): string[];
86
+ /**
87
+ * Set the values
88
+ */
89
+ set values(values: unknown[]);
90
+ constructor();
91
+ attributeChangedCallback(name: string, _: string | null, value: string | null): void;
92
+ /**
93
+ * Clear all selected options
94
+ */
95
+ clear(): void;
96
+ connectedCallback(): void;
97
+ disconnectedCallback(): void;
98
+ formDisabledCallback(disabled: boolean): void;
99
+ formResetCallback(): void;
100
+ formStateRestoreCallback(state: string | File | FormData, reason: unknown): void;
101
+ /**
102
+ * Set listbox localizations for a specific language
103
+ *
104
+ * @param language Language code
105
+ * @param localizations Localizations for language
106
+ */
107
+ setLocalizations(language: string, localizations: Partial<OuiListboxLocalizations>): void;
108
+ /**
109
+ * Set listbox localizations for one or more languages
110
+ *
111
+ * @param localizations Localizations for one or more languages
112
+ */
113
+ setLocalizations(localizations: Record<string, Partial<OuiListboxLocalizations>>): void;
114
+ }
115
+ //#endregion
116
+ export { OuiListboxElement, setListboxLocalizations };
@@ -0,0 +1,189 @@
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-BWd0PCy7.mjs";
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-BI-XsTOf.mjs";
5
+ import { getAttribute } from "@oscarpalmer/toretto/attribute";
6
+ import { parse } from "@oscarpalmer/atoms/string";
7
+ //#region src/js/listbox/index.ts
8
+ var OuiListboxElement = class extends HTMLElement {
9
+ static formAssociated = true;
10
+ static observedAttributes = [
11
+ "max",
12
+ "min",
13
+ "required",
14
+ "value"
15
+ ];
16
+ #internals;
17
+ #restored;
18
+ #state;
19
+ /**
20
+ * Is the listbox disabled?
21
+ */
22
+ get disabled() {
23
+ return this.#state?.disabled ?? false;
24
+ }
25
+ /**
26
+ * Should the listbox be disabled?
27
+ */
28
+ set disabled(value) {
29
+ if (typeof value === "boolean" && value !== this.disabled) setListboxDisabled(this.#state, value);
30
+ }
31
+ /**
32
+ * Current filter value
33
+ */
34
+ get filter() {
35
+ return this.#state.filter.element.value;
36
+ }
37
+ /**
38
+ * Set the filter value
39
+ */
40
+ set filter(value) {
41
+ setListboxFilter(this.#state, value);
42
+ }
43
+ /**
44
+ * Maximum number of selected options
45
+ */
46
+ get max() {
47
+ return this.#state?.max;
48
+ }
49
+ /**
50
+ * Set the maximum number of selected options
51
+ */
52
+ set max(value) {
53
+ setListboxLimit("max", this.#state, value);
54
+ }
55
+ /**
56
+ * Minimum number of selected options
57
+ */
58
+ get min() {
59
+ return this.#state?.min;
60
+ }
61
+ /**
62
+ * Set the minimum number of selected options
63
+ */
64
+ set min(value) {
65
+ setListboxLimit("min", this.#state, value);
66
+ }
67
+ /**
68
+ * Does the listbox allow multiple values?
69
+ */
70
+ get multiple() {
71
+ return this.hasAttribute("multiple");
72
+ }
73
+ /**
74
+ * Name of the listbox
75
+ */
76
+ get name() {
77
+ return getAttribute(this, "name") ?? "";
78
+ }
79
+ /**
80
+ * Is the listbox readonly?
81
+ */
82
+ get readonly() {
83
+ return this.#state?.readonly ?? false;
84
+ }
85
+ /**
86
+ * Should the listbox be readonly?
87
+ */
88
+ set readonly(value) {
89
+ if (typeof value === "boolean" && value !== this.readonly) setListboxReadonly(this.#state, value);
90
+ }
91
+ /**
92
+ * Is the listbox required?
93
+ */
94
+ get required() {
95
+ return this.#state?.required ?? false;
96
+ }
97
+ /**
98
+ * Should the listbox be required?
99
+ */
100
+ set required(value) {
101
+ if (typeof value === "boolean" && value !== this.required) setListboxRequired(this.#state, value);
102
+ }
103
+ /**
104
+ * Selected options
105
+ */
106
+ get selected() {
107
+ return this.#state.options.selected.slice();
108
+ }
109
+ /**
110
+ * Current value
111
+ */
112
+ get value() {
113
+ return this.#state.values.current[0];
114
+ }
115
+ /**
116
+ * Set the value
117
+ */
118
+ set value(value) {
119
+ setListboxValue(this.#state, value);
120
+ }
121
+ /**
122
+ * Current values
123
+ */
124
+ get values() {
125
+ return this.#state.values.current.slice();
126
+ }
127
+ /**
128
+ * Set the values
129
+ */
130
+ set values(values) {
131
+ setListboxValues(this.#state, values);
132
+ }
133
+ constructor() {
134
+ super();
135
+ this.#internals = this.attachInternals();
136
+ }
137
+ attributeChangedCallback(name, _, value) {
138
+ if (this.#state == null) return;
139
+ switch (name) {
140
+ case "required":
141
+ this[name] = this.hasAttribute(name);
142
+ break;
143
+ case "max":
144
+ case "min":
145
+ setListboxLimit(name, this.#state, value);
146
+ break;
147
+ case "value": this.value = value ?? "";
148
+ }
149
+ }
150
+ /**
151
+ * Clear all selected options
152
+ */
153
+ clear() {
154
+ setListboxValues(this.#state, []);
155
+ }
156
+ connectedCallback() {
157
+ if (this.#state == null) this.#initialize();
158
+ else attachListbox(this.#state, listboxStates, onAttachListbox);
159
+ }
160
+ disconnectedCallback() {
161
+ if (this.#state != null) detachListbox(this.#state, listboxStates, onDetachListbox);
162
+ }
163
+ formDisabledCallback(disabled) {
164
+ this.disabled = disabled;
165
+ }
166
+ formResetCallback() {
167
+ setListboxValues(this.#state, this.#state.values.initial);
168
+ }
169
+ formStateRestoreCallback(state, reason) {
170
+ if (reason !== "restore") return;
171
+ const parsed = typeof state === "string" ? parse(state) : void 0;
172
+ if (!Array.isArray(parsed)) return;
173
+ if (this.#state == null) this.#restored = parsed;
174
+ else setListboxValues(this.#state, parsed);
175
+ }
176
+ setLocalizations(first, second) {
177
+ updateListboxLocalizations(this.#state.localizations.global, this.#state.localizations.component, first, second);
178
+ }
179
+ #initialize() {
180
+ this.#state = createListboxState(this, this.#internals);
181
+ if (this.#restored != null) {
182
+ setListboxValues(this.#state, this.#restored);
183
+ this.#restored = void 0;
184
+ }
185
+ }
186
+ };
187
+ customElements.define(LISTBOX_TAGNAME, OuiListboxElement);
188
+ //#endregion
189
+ export { OuiListboxElement, setListboxLocalizations };
@@ -0,0 +1,2 @@
1
+ import { n as setListboxLocalizations, r as updateListboxLocalizations, t as getListboxId } from "../misc.listbox-gnoJhrTr.mjs";
2
+ export { getListboxId, setListboxLocalizations, updateListboxLocalizations };
@@ -0,0 +1,2 @@
1
+ import { n as setListboxLocalizations, r as updateListboxLocalizations, t as getListboxId } from "../misc.listbox-BI-XsTOf.mjs";
2
+ export { getListboxId, setListboxLocalizations, updateListboxLocalizations };
@@ -0,0 +1,11 @@
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";
4
+ //#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 };
@@ -0,0 +1,2 @@
1
+ import { a as listboxLocalizations, c as onDetachListbox, i as createListboxState, o as listboxStates, s as onAttachListbox } from "../misc.listbox-BI-XsTOf.mjs";
2
+ export { createListboxState, listboxLocalizations, listboxStates, onAttachListbox, onDetachListbox };