@vertz/ui-primitives 0.2.22 → 0.2.23

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 (91) hide show
  1. package/dist/shared/chunk-3h1mxp95.js +148 -0
  2. package/dist/shared/chunk-3kwh27dv.js +135 -0
  3. package/dist/shared/chunk-4894pmy6.js +184 -0
  4. package/dist/shared/chunk-67sn29eh.js +125 -0
  5. package/dist/shared/chunk-7cb3z0s8.js +287 -0
  6. package/dist/shared/chunk-8c01c8mb.js +217 -0
  7. package/dist/shared/chunk-99tk72t3.js +69 -0
  8. package/dist/shared/chunk-9gfp3ffv.js +204 -0
  9. package/dist/shared/chunk-b25npqer.js +149 -0
  10. package/dist/shared/chunk-cgb2j94g.js +141 -0
  11. package/dist/shared/chunk-e1jcf22s.js +79 -0
  12. package/dist/shared/chunk-e3h0ddmx.js +168 -0
  13. package/dist/shared/chunk-f2vx4tpw.js +168 -0
  14. package/dist/shared/chunk-h3v10x04.js +271 -0
  15. package/dist/shared/chunk-hdvdfd1c.js +96 -0
  16. package/dist/shared/{chunk-dhyr0s9n.js → chunk-j902w020.js} +1 -1
  17. package/dist/shared/chunk-jdygp28a.js +260 -0
  18. package/dist/shared/chunk-jqre4qtw.js +180 -0
  19. package/dist/shared/{chunk-k8nabsxm.js → chunk-mgr904ap.js} +74 -34
  20. package/dist/shared/chunk-mr1tb0dp.js +167 -0
  21. package/dist/shared/chunk-nj420k31.js +54 -0
  22. package/dist/shared/chunk-p0x7hgv6.js +181 -0
  23. package/dist/shared/{chunk-w9dag6ce.js → chunk-pn6shbcs.js} +132 -80
  24. package/dist/shared/chunk-pzx0vpq1.js +223 -0
  25. package/dist/shared/chunk-tn0m98j8.js +42 -0
  26. package/dist/shared/{chunk-myq79qew.js → chunk-ttb2tt03.js} +47 -27
  27. package/dist/shared/chunk-vy874zxe.js +68 -0
  28. package/dist/shared/chunk-ww7k2azn.js +297 -0
  29. package/dist/shared/{chunk-jda3v59q.js → chunk-xa1b96mb.js} +2 -2
  30. package/dist/shared/chunk-xs6gp369.js +245 -0
  31. package/dist/shared/chunk-y4mmmayp.js +206 -0
  32. package/dist/src/accordion/accordion.js +1 -1
  33. package/dist/src/alert-dialog/alert-dialog.js +1 -1
  34. package/dist/src/badge/badge.js +1 -1
  35. package/dist/src/button/button.js +1 -1
  36. package/dist/src/calendar/calendar.js +1 -1
  37. package/dist/src/carousel/carousel.js +1 -1
  38. package/dist/src/checkbox/checkbox.js +1 -1
  39. package/dist/src/collapsible/collapsible.js +1 -1
  40. package/dist/src/combobox/combobox.js +1 -1
  41. package/dist/src/command/command.js +1 -1
  42. package/dist/src/context-menu/context-menu.js +1 -1
  43. package/dist/src/date-picker/date-picker.js +1 -1
  44. package/dist/src/dialog/dialog.js +1 -1
  45. package/dist/src/dropdown-menu/dropdown-menu.js +1 -1
  46. package/dist/src/hover-card/hover-card.js +1 -1
  47. package/dist/src/index.d.ts +14 -1
  48. package/dist/src/index.js +5595 -4310
  49. package/dist/src/menu/menu.js +1 -1
  50. package/dist/src/menubar/menubar.js +1 -1
  51. package/dist/src/navigation-menu/navigation-menu.js +1 -1
  52. package/dist/src/popover/popover.js +1 -1
  53. package/dist/src/progress/progress.js +1 -1
  54. package/dist/src/radio/radio.js +1 -1
  55. package/dist/src/resizable-panel/resizable-panel.js +1 -1
  56. package/dist/src/scroll-area/scroll-area.js +1 -1
  57. package/dist/src/select/select.js +1 -1
  58. package/dist/src/sheet/sheet.js +1 -1
  59. package/dist/src/slider/slider.js +1 -1
  60. package/dist/src/switch/switch.js +1 -1
  61. package/dist/src/tabs/tabs.js +1 -1
  62. package/dist/src/toggle/toggle.js +1 -1
  63. package/dist/src/toggle-group/toggle-group.js +1 -1
  64. package/dist/src/tooltip/tooltip.js +1 -1
  65. package/package.json +3 -3
  66. package/dist/shared/chunk-07yzsaaw.js +0 -165
  67. package/dist/shared/chunk-279bzynx.js +0 -132
  68. package/dist/shared/chunk-27xs9apd.js +0 -288
  69. package/dist/shared/chunk-2k8gxzdf.js +0 -151
  70. package/dist/shared/chunk-3rp73gkd.js +0 -175
  71. package/dist/shared/chunk-4rf1m34c.js +0 -267
  72. package/dist/shared/chunk-7bxsf80c.js +0 -60
  73. package/dist/shared/chunk-8qtexw5s.js +0 -199
  74. package/dist/shared/chunk-9ezgd78r.js +0 -142
  75. package/dist/shared/chunk-ajpj10z0.js +0 -282
  76. package/dist/shared/chunk-c46v0fsw.js +0 -117
  77. package/dist/shared/chunk-e4mm5e59.js +0 -178
  78. package/dist/shared/chunk-fqa5bwn1.js +0 -128
  79. package/dist/shared/chunk-g8hnc95b.js +0 -219
  80. package/dist/shared/chunk-j2tdpxgc.js +0 -185
  81. package/dist/shared/chunk-kcnq15je.js +0 -175
  82. package/dist/shared/chunk-mqs4qq0b.js +0 -46
  83. package/dist/shared/chunk-pg2yjn8f.js +0 -88
  84. package/dist/shared/chunk-rb53v045.js +0 -71
  85. package/dist/shared/chunk-s6a2yph8.js +0 -239
  86. package/dist/shared/chunk-vhx3sqw6.js +0 -196
  87. package/dist/shared/chunk-w318par6.js +0 -204
  88. package/dist/shared/chunk-wcdq7bew.js +0 -133
  89. package/dist/shared/chunk-z0gwkzgp.js +0 -34
  90. package/dist/shared/chunk-z850et33.js +0 -161
  91. package/dist/shared/chunk-zyfc6cx3.js +0 -61
@@ -1,88 +0,0 @@
1
- import {
2
- setDataState
3
- } from "./chunk-vevfhpc9.js";
4
- import {
5
- uniqueId
6
- } from "./chunk-8y1jf6xr.js";
7
- import {
8
- applyAttrs
9
- } from "./chunk-2db2dnp3.js";
10
-
11
- // src/progress/progress.tsx
12
- import { __append, __element, __enterChildren, __exitChildren, __styleStr } from "@vertz/ui/internals";
13
- import { ref, signal } from "@vertz/ui";
14
- function dataStateFor(pct) {
15
- if (pct >= 100)
16
- return "complete";
17
- if (pct > 0)
18
- return "loading";
19
- return "idle";
20
- }
21
- function ProgressBar(defaultValue, min, max, initialPct, indicatorRef) {
22
- return (() => {
23
- const __el0 = __element("div");
24
- __el0.setAttribute("role", "progressbar");
25
- {
26
- const __v = uniqueId("progress");
27
- if (__v != null && __v !== false)
28
- __el0.setAttribute("id", __v === true ? "" : __v);
29
- }
30
- {
31
- const __v = String(defaultValue);
32
- if (__v != null && __v !== false)
33
- __el0.setAttribute("aria-valuenow", __v === true ? "" : __v);
34
- }
35
- {
36
- const __v = String(min);
37
- if (__v != null && __v !== false)
38
- __el0.setAttribute("aria-valuemin", __v === true ? "" : __v);
39
- }
40
- {
41
- const __v = String(max);
42
- if (__v != null && __v !== false)
43
- __el0.setAttribute("aria-valuemax", __v === true ? "" : __v);
44
- }
45
- {
46
- const __v = dataStateFor(initialPct);
47
- if (__v != null && __v !== false)
48
- __el0.setAttribute("data-state", __v === true ? "" : __v);
49
- }
50
- __enterChildren(__el0);
51
- __append(__el0, (() => {
52
- const __el1 = __element("div");
53
- indicatorRef.current = __el1;
54
- __el1.setAttribute("data-part", "indicator");
55
- {
56
- const __v = `width: ${initialPct}%`;
57
- if (__v != null && __v !== false)
58
- __el1.setAttribute("style", typeof __v === "object" ? __styleStr(__v) : __v === true ? "" : String(__v));
59
- }
60
- return __el1;
61
- })());
62
- __exitChildren();
63
- return __el0;
64
- })();
65
- }
66
- function ProgressRoot(options = {}) {
67
- const { defaultValue = 0, min = 0, max = 100, ...attrs } = options;
68
- const state = { value: signal(defaultValue) };
69
- const indicatorRef = ref();
70
- const initialPct = (defaultValue - min) / (max - min) * 100;
71
- const root = ProgressBar(defaultValue, min, max, initialPct, indicatorRef);
72
- const indicator = indicatorRef.current;
73
- applyAttrs(root, attrs);
74
- function setValue(val) {
75
- const clamped = Math.min(max, Math.max(min, val));
76
- state.value.value = clamped;
77
- root.setAttribute("aria-valuenow", String(clamped));
78
- const pct = (clamped - min) / (max - min) * 100;
79
- indicator.style.width = `${pct}%`;
80
- setDataState(root, dataStateFor(pct));
81
- }
82
- return { root, indicator, state, setValue };
83
- }
84
- var Progress = {
85
- Root: ProgressRoot
86
- };
87
-
88
- export { Progress };
@@ -1,71 +0,0 @@
1
- import {
2
- Keys,
3
- isKey
4
- } from "./chunk-7867pr13.js";
5
- import {
6
- uniqueId
7
- } from "./chunk-8y1jf6xr.js";
8
- import {
9
- applyAttrs
10
- } from "./chunk-2db2dnp3.js";
11
-
12
- // src/checkbox/checkbox.tsx
13
- import { computed, signal } from "@vertz/ui";
14
- import { __attr, __element, __on } from "@vertz/ui/internals";
15
- function dataStateFor(checked) {
16
- if (checked === "mixed")
17
- return "indeterminate";
18
- return checked ? "checked" : "unchecked";
19
- }
20
- function ariaCheckedFor(checked) {
21
- if (checked === "mixed")
22
- return "mixed";
23
- return String(checked);
24
- }
25
- function CheckboxRoot(options = {}) {
26
- const { defaultChecked = false, disabled = false, onCheckedChange, ...attrs } = options;
27
- const checked = signal(defaultChecked, "checked");
28
- function toggle() {
29
- if (disabled)
30
- return;
31
- checked.value = checked.value === "mixed" ? true : !checked.value;
32
- onCheckedChange?.(checked.value);
33
- }
34
- const el = computed(() => (() => {
35
- const __el0 = __element("button");
36
- __el0.setAttribute("type", "button");
37
- __el0.setAttribute("role", "checkbox");
38
- {
39
- const __v = uniqueId("checkbox");
40
- if (__v != null && __v !== false)
41
- __el0.setAttribute("id", __v === true ? "" : __v);
42
- }
43
- __attr(__el0, "aria-checked", () => ariaCheckedFor(checked.value));
44
- __attr(__el0, "data-state", () => dataStateFor(checked.value));
45
- {
46
- const __v = disabled;
47
- if (__v != null && __v !== false)
48
- __el0.setAttribute("disabled", __v === true ? "" : __v);
49
- }
50
- {
51
- const __v = disabled ? "true" : undefined;
52
- if (__v != null && __v !== false)
53
- __el0.setAttribute("aria-disabled", __v === true ? "" : __v);
54
- }
55
- __on(__el0, "click", toggle);
56
- __on(__el0, "keydown", (e) => {
57
- if (isKey(e, Keys.Space)) {
58
- e.preventDefault();
59
- toggle();
60
- }
61
- });
62
- return __el0;
63
- })());
64
- applyAttrs(el.value, attrs);
65
- return el.value;
66
- }
67
- var Checkbox = {
68
- Root: CheckboxRoot
69
- };
70
-
71
- export { Checkbox };
@@ -1,239 +0,0 @@
1
- import {
2
- Keys,
3
- isKey
4
- } from "./chunk-7867pr13.js";
5
- import {
6
- setHidden
7
- } from "./chunk-vevfhpc9.js";
8
- import {
9
- uniqueId
10
- } from "./chunk-8y1jf6xr.js";
11
- import {
12
- applyAttrs
13
- } from "./chunk-2db2dnp3.js";
14
-
15
- // src/command/command.tsx
16
- import { __element, __enterChildren, __exitChildren, __insert, __on } from "@vertz/ui/internals";
17
- import { signal } from "@vertz/ui";
18
- function CommandRoot(options = {}) {
19
- const { filter: customFilter, onSelect, onInputChange, placeholder, ...attrs } = options;
20
- const listId = uniqueId("command-list");
21
- const state = {
22
- inputValue: signal(""),
23
- activeIndex: signal(0)
24
- };
25
- const allItems = [];
26
- const groups = new Map;
27
- const defaultFilter = (value, search) => {
28
- return value.toLowerCase().includes(search.toLowerCase());
29
- };
30
- const filterFn = customFilter ?? defaultFilter;
31
- function getVisibleItems() {
32
- return allItems.filter((item) => item.getAttribute("aria-hidden") !== "true");
33
- }
34
- function updateActiveItem() {
35
- const visible = getVisibleItems();
36
- const activeIdx = state.activeIndex.peek();
37
- for (const item of allItems) {
38
- item.setAttribute("aria-selected", "false");
39
- }
40
- if (visible.length > 0 && activeIdx >= 0 && activeIdx < visible.length) {
41
- visible[activeIdx]?.setAttribute("aria-selected", "true");
42
- }
43
- }
44
- function runFilter() {
45
- const search = state.inputValue.peek();
46
- let visibleCount = 0;
47
- for (const item of allItems) {
48
- const value = item.getAttribute("data-value") ?? "";
49
- const text = item.textContent ?? "";
50
- const keywords = item.getAttribute("data-keywords") ?? "";
51
- const searchable = `${value} ${text} ${keywords}`;
52
- const matches = search === "" || filterFn(searchable, search);
53
- setHidden(item, !matches);
54
- if (matches)
55
- visibleCount++;
56
- }
57
- for (const [groupEl, group] of groups) {
58
- const hasVisible = group.items.some((item) => item.getAttribute("aria-hidden") !== "true");
59
- setHidden(group.heading, !hasVisible);
60
- if (!hasVisible) {
61
- groupEl.style.display = "none";
62
- } else {
63
- groupEl.style.display = "";
64
- }
65
- }
66
- setHidden(empty, visibleCount > 0);
67
- state.activeIndex.value = 0;
68
- updateActiveItem();
69
- }
70
- const input = (() => {
71
- const __el0 = __element("input");
72
- __el0.setAttribute("type", "text");
73
- __el0.setAttribute("role", "combobox");
74
- __el0.setAttribute("aria-autocomplete", "list");
75
- __el0.setAttribute("aria-expanded", "true");
76
- {
77
- const __v = listId;
78
- if (__v != null && __v !== false)
79
- __el0.setAttribute("aria-controls", __v === true ? "" : __v);
80
- }
81
- {
82
- const __v = placeholder;
83
- if (__v != null && __v !== false)
84
- __el0.setAttribute("placeholder", __v === true ? "" : __v);
85
- }
86
- __on(__el0, "input", () => {
87
- state.inputValue.value = input.value;
88
- onInputChange?.(input.value);
89
- runFilter();
90
- });
91
- __on(__el0, "keydown", (event) => {
92
- const visible = getVisibleItems();
93
- if (isKey(event, Keys.ArrowDown)) {
94
- event.preventDefault();
95
- const next = Math.min(state.activeIndex.peek() + 1, visible.length - 1);
96
- state.activeIndex.value = next;
97
- updateActiveItem();
98
- return;
99
- }
100
- if (isKey(event, Keys.ArrowUp)) {
101
- event.preventDefault();
102
- const prev = Math.max(state.activeIndex.peek() - 1, 0);
103
- state.activeIndex.value = prev;
104
- updateActiveItem();
105
- return;
106
- }
107
- if (isKey(event, Keys.Enter)) {
108
- event.preventDefault();
109
- const active = visible[state.activeIndex.peek()];
110
- if (active) {
111
- const val = active.getAttribute("data-value");
112
- if (val !== null) {
113
- onSelect?.(val);
114
- }
115
- }
116
- return;
117
- }
118
- if (isKey(event, Keys.Escape)) {
119
- event.preventDefault();
120
- input.value = "";
121
- state.inputValue.value = "";
122
- onInputChange?.("");
123
- runFilter();
124
- }
125
- });
126
- return __el0;
127
- })();
128
- const list = (() => {
129
- const __el1 = __element("div");
130
- __el1.setAttribute("role", "listbox");
131
- {
132
- const __v = listId;
133
- if (__v != null && __v !== false)
134
- __el1.setAttribute("id", __v === true ? "" : __v);
135
- }
136
- return __el1;
137
- })();
138
- const empty = (() => {
139
- const __el2 = __element("div");
140
- __el2.setAttribute("aria-hidden", "true");
141
- __el2.setAttribute("style", "display: none");
142
- return __el2;
143
- })();
144
- const root = (() => {
145
- const __el3 = __element("div");
146
- __enterChildren(__el3);
147
- __insert(__el3, input);
148
- __insert(__el3, list);
149
- __insert(__el3, empty);
150
- __exitChildren();
151
- return __el3;
152
- })();
153
- applyAttrs(root, attrs);
154
- function createItem(value, label, keywords, parent) {
155
- const item = (() => {
156
- const __el4 = __element("div");
157
- __el4.setAttribute("role", "option");
158
- {
159
- const __v = value;
160
- if (__v != null && __v !== false)
161
- __el4.setAttribute("data-value", __v === true ? "" : __v);
162
- }
163
- __el4.setAttribute("aria-selected", "false");
164
- {
165
- const __v = keywords && keywords.length > 0 ? keywords.join(" ") : undefined;
166
- if (__v != null && __v !== false)
167
- __el4.setAttribute("data-keywords", __v === true ? "" : __v);
168
- }
169
- __on(__el4, "click", () => {
170
- onSelect?.(value);
171
- });
172
- __enterChildren(__el4);
173
- __insert(__el4, label ?? value);
174
- __exitChildren();
175
- return __el4;
176
- })();
177
- allItems.push(item);
178
- (parent ?? list).appendChild(item);
179
- updateActiveItem();
180
- return item;
181
- }
182
- function Item(value, label, keywords) {
183
- return createItem(value, label, keywords);
184
- }
185
- function Group(label) {
186
- const headingId = uniqueId("command-group");
187
- const heading = (() => {
188
- const __el5 = __element("div");
189
- {
190
- const __v = headingId;
191
- if (__v != null && __v !== false)
192
- __el5.setAttribute("id", __v === true ? "" : __v);
193
- }
194
- __enterChildren(__el5);
195
- __insert(__el5, label);
196
- __exitChildren();
197
- return __el5;
198
- })();
199
- const el = (() => {
200
- const __el6 = __element("div");
201
- __el6.setAttribute("role", "group");
202
- {
203
- const __v = headingId;
204
- if (__v != null && __v !== false)
205
- __el6.setAttribute("aria-labelledby", __v === true ? "" : __v);
206
- }
207
- __enterChildren(__el6);
208
- __insert(__el6, heading);
209
- __exitChildren();
210
- return __el6;
211
- })();
212
- const groupItems = [];
213
- groups.set(el, { heading, items: groupItems });
214
- list.appendChild(el);
215
- return {
216
- el,
217
- Item: (value, itemLabel, keywords) => {
218
- const item = createItem(value, itemLabel, keywords, el);
219
- groupItems.push(item);
220
- return item;
221
- }
222
- };
223
- }
224
- function Separator() {
225
- const hr = (() => {
226
- const __el7 = __element("hr");
227
- __el7.setAttribute("role", "separator");
228
- return __el7;
229
- })();
230
- list.appendChild(hr);
231
- return hr;
232
- }
233
- return { root, input, list, empty, state, Item, Group, Separator };
234
- }
235
- var Command = {
236
- Root: CommandRoot
237
- };
238
-
239
- export { Command };
@@ -1,196 +0,0 @@
1
- import {
2
- Keys,
3
- isKey
4
- } from "./chunk-7867pr13.js";
5
- import {
6
- setDataState,
7
- setExpanded,
8
- setHidden,
9
- setHiddenAnimated,
10
- setSelected
11
- } from "./chunk-vevfhpc9.js";
12
- import {
13
- linkedIds
14
- } from "./chunk-8y1jf6xr.js";
15
- import {
16
- applyAttrs
17
- } from "./chunk-2db2dnp3.js";
18
-
19
- // src/combobox/combobox.tsx
20
- import { __element, __enterChildren, __exitChildren, __insert, __on } from "@vertz/ui/internals";
21
- import { signal } from "@vertz/ui";
22
- function ComboboxRoot(options = {}) {
23
- const { defaultValue = "", onValueChange, onInputChange, ...attrs } = options;
24
- const ids = linkedIds("combobox");
25
- const state = {
26
- open: signal(false),
27
- value: signal(defaultValue),
28
- inputValue: signal(defaultValue),
29
- activeIndex: signal(-1)
30
- };
31
- const optionElements = [];
32
- function open() {
33
- state.open.value = true;
34
- setExpanded(input, true);
35
- setHidden(listbox, false);
36
- setDataState(listbox, "open");
37
- }
38
- function close() {
39
- state.open.value = false;
40
- state.activeIndex.value = -1;
41
- setExpanded(input, false);
42
- setDataState(listbox, "closed");
43
- setHiddenAnimated(listbox, true);
44
- updateActiveDescendant(-1);
45
- }
46
- function selectOption(value) {
47
- state.value.value = value;
48
- state.inputValue.value = value;
49
- input.value = value;
50
- for (const opt of optionElements) {
51
- const isActive = opt.getAttribute("data-value") === value;
52
- setSelected(opt, isActive);
53
- setDataState(opt, isActive ? "active" : "inactive");
54
- }
55
- onValueChange?.(value);
56
- close();
57
- input.focus();
58
- }
59
- function updateActiveDescendant(index) {
60
- const opt = optionElements[index];
61
- if (index >= 0 && opt) {
62
- input.setAttribute("aria-activedescendant", opt.id);
63
- for (let i = 0;i < optionElements.length; i++) {
64
- const el = optionElements[i];
65
- if (el)
66
- setDataState(el, i === index ? "active" : "inactive");
67
- }
68
- } else {
69
- input.removeAttribute("aria-activedescendant");
70
- }
71
- }
72
- const input = (() => {
73
- const __el0 = __element("input");
74
- __el0.setAttribute("type", "text");
75
- __el0.setAttribute("role", "combobox");
76
- __el0.setAttribute("aria-autocomplete", "list");
77
- {
78
- const __v = ids.contentId;
79
- if (__v != null && __v !== false)
80
- __el0.setAttribute("aria-controls", __v === true ? "" : __v);
81
- }
82
- __el0.setAttribute("aria-haspopup", "listbox");
83
- {
84
- const __v = ids.triggerId;
85
- if (__v != null && __v !== false)
86
- __el0.setAttribute("id", __v === true ? "" : __v);
87
- }
88
- {
89
- const __v = defaultValue;
90
- if (__v != null && __v !== false)
91
- __el0.setAttribute("value", __v === true ? "" : __v);
92
- }
93
- __el0.setAttribute("aria-expanded", "false");
94
- __on(__el0, "input", () => {
95
- state.inputValue.value = input.value;
96
- onInputChange?.(input.value);
97
- if (!state.open.peek())
98
- open();
99
- });
100
- __on(__el0, "focus", () => {
101
- if (!state.open.peek() && input.value.length > 0)
102
- open();
103
- });
104
- __on(__el0, "keydown", (event) => {
105
- if (isKey(event, Keys.Escape)) {
106
- event.preventDefault();
107
- close();
108
- return;
109
- }
110
- if (isKey(event, Keys.ArrowDown)) {
111
- event.preventDefault();
112
- if (!state.open.peek()) {
113
- open();
114
- }
115
- const next = Math.min(state.activeIndex.peek() + 1, optionElements.length - 1);
116
- state.activeIndex.value = next;
117
- updateActiveDescendant(next);
118
- return;
119
- }
120
- if (isKey(event, Keys.ArrowUp)) {
121
- event.preventDefault();
122
- const prev = Math.max(state.activeIndex.peek() - 1, 0);
123
- state.activeIndex.value = prev;
124
- updateActiveDescendant(prev);
125
- return;
126
- }
127
- if (isKey(event, Keys.Enter)) {
128
- event.preventDefault();
129
- const idx = state.activeIndex.peek();
130
- if (idx >= 0 && idx < optionElements.length) {
131
- const val = optionElements[idx]?.getAttribute("data-value");
132
- if (val != null)
133
- selectOption(val);
134
- }
135
- return;
136
- }
137
- });
138
- return __el0;
139
- })();
140
- const listbox = (() => {
141
- const __el1 = __element("div");
142
- __el1.setAttribute("role", "listbox");
143
- {
144
- const __v = ids.contentId;
145
- if (__v != null && __v !== false)
146
- __el1.setAttribute("id", __v === true ? "" : __v);
147
- }
148
- __el1.setAttribute("aria-hidden", "true");
149
- __el1.setAttribute("data-state", "closed");
150
- __el1.setAttribute("style", "display: none");
151
- return __el1;
152
- })();
153
- function Option(value, label) {
154
- const optId = `${ids.contentId}-opt-${optionElements.length}`;
155
- const isSelectedOpt = value === defaultValue;
156
- const opt = (() => {
157
- const __el2 = __element("div");
158
- __el2.setAttribute("role", "option");
159
- {
160
- const __v = optId;
161
- if (__v != null && __v !== false)
162
- __el2.setAttribute("id", __v === true ? "" : __v);
163
- }
164
- {
165
- const __v = value;
166
- if (__v != null && __v !== false)
167
- __el2.setAttribute("data-value", __v === true ? "" : __v);
168
- }
169
- {
170
- const __v = isSelectedOpt ? "true" : "false";
171
- if (__v != null && __v !== false)
172
- __el2.setAttribute("aria-selected", __v === true ? "" : __v);
173
- }
174
- {
175
- const __v = isSelectedOpt ? "active" : "inactive";
176
- if (__v != null && __v !== false)
177
- __el2.setAttribute("data-state", __v === true ? "" : __v);
178
- }
179
- __on(__el2, "click", () => selectOption(value));
180
- __enterChildren(__el2);
181
- __insert(__el2, label ?? value);
182
- __exitChildren();
183
- return __el2;
184
- })();
185
- optionElements.push(opt);
186
- listbox.appendChild(opt);
187
- return opt;
188
- }
189
- applyAttrs(input, attrs);
190
- return { input, listbox, state, Option };
191
- }
192
- var Combobox = {
193
- Root: ComboboxRoot
194
- };
195
-
196
- export { Combobox };