@vertz/ui-primitives 0.2.21 → 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 (97) hide show
  1. package/dist/shared/{chunk-q8dm19a5.js → chunk-2db2dnp3.js} +0 -1
  2. package/dist/shared/chunk-3h1mxp95.js +148 -0
  3. package/dist/shared/chunk-3kwh27dv.js +135 -0
  4. package/dist/shared/chunk-4894pmy6.js +184 -0
  5. package/dist/shared/{chunk-v9qddmh9.js → chunk-56reyd5r.js} +20 -29
  6. package/dist/shared/chunk-67sn29eh.js +125 -0
  7. package/dist/shared/chunk-7cb3z0s8.js +287 -0
  8. package/dist/shared/chunk-8c01c8mb.js +217 -0
  9. package/dist/shared/chunk-99tk72t3.js +69 -0
  10. package/dist/shared/chunk-9gfp3ffv.js +204 -0
  11. package/dist/shared/chunk-b25npqer.js +149 -0
  12. package/dist/shared/chunk-cgb2j94g.js +141 -0
  13. package/dist/shared/chunk-e1jcf22s.js +79 -0
  14. package/dist/shared/chunk-e3h0ddmx.js +168 -0
  15. package/dist/shared/chunk-f2vx4tpw.js +168 -0
  16. package/dist/shared/chunk-h3v10x04.js +271 -0
  17. package/dist/shared/chunk-hdvdfd1c.js +96 -0
  18. package/dist/shared/{chunk-zf0rhm9e.js → chunk-j902w020.js} +1 -1
  19. package/dist/shared/chunk-jdygp28a.js +260 -0
  20. package/dist/shared/chunk-jqre4qtw.js +180 -0
  21. package/dist/shared/{chunk-pvy0tcd7.js → chunk-mgr904ap.js} +75 -35
  22. package/dist/shared/chunk-mr1tb0dp.js +167 -0
  23. package/dist/shared/chunk-nj420k31.js +54 -0
  24. package/dist/shared/chunk-p0x7hgv6.js +181 -0
  25. package/dist/shared/{chunk-gzgyfhz6.js → chunk-pn6shbcs.js} +134 -82
  26. package/dist/shared/chunk-pzx0vpq1.js +223 -0
  27. package/dist/shared/chunk-tn0m98j8.js +42 -0
  28. package/dist/shared/{chunk-g67tnd19.js → chunk-ttb2tt03.js} +49 -29
  29. package/dist/shared/{chunk-vvjyx7fe.js → chunk-vevfhpc9.js} +1 -1
  30. package/dist/shared/chunk-vy874zxe.js +68 -0
  31. package/dist/shared/chunk-ww7k2azn.js +297 -0
  32. package/dist/shared/{chunk-f501vw7e.js → chunk-xa1b96mb.js} +2 -2
  33. package/dist/shared/chunk-xs6gp369.js +245 -0
  34. package/dist/shared/chunk-y4mmmayp.js +206 -0
  35. package/dist/src/accordion/accordion.js +1 -1
  36. package/dist/src/alert-dialog/alert-dialog.js +1 -1
  37. package/dist/src/badge/badge.js +1 -1
  38. package/dist/src/button/button.js +1 -1
  39. package/dist/src/calendar/calendar.js +1 -1
  40. package/dist/src/carousel/carousel.js +1 -1
  41. package/dist/src/checkbox/checkbox.js +1 -1
  42. package/dist/src/collapsible/collapsible.js +1 -1
  43. package/dist/src/combobox/combobox.js +1 -1
  44. package/dist/src/command/command.js +1 -1
  45. package/dist/src/context-menu/context-menu.js +1 -1
  46. package/dist/src/date-picker/date-picker.js +1 -1
  47. package/dist/src/dialog/dialog.js +1 -1
  48. package/dist/src/dropdown-menu/dropdown-menu.js +1 -1
  49. package/dist/src/hover-card/hover-card.js +1 -1
  50. package/dist/src/index.d.ts +281 -106
  51. package/dist/src/index.js +5779 -4266
  52. package/dist/src/menu/menu.js +1 -1
  53. package/dist/src/menubar/menubar.js +1 -1
  54. package/dist/src/navigation-menu/navigation-menu.js +1 -1
  55. package/dist/src/popover/popover.js +1 -1
  56. package/dist/src/progress/progress.js +1 -1
  57. package/dist/src/radio/radio.js +1 -1
  58. package/dist/src/resizable-panel/resizable-panel.js +1 -1
  59. package/dist/src/scroll-area/scroll-area.js +1 -1
  60. package/dist/src/select/select.js +1 -1
  61. package/dist/src/sheet/sheet.js +1 -1
  62. package/dist/src/slider/slider.js +1 -1
  63. package/dist/src/switch/switch.js +1 -1
  64. package/dist/src/tabs/tabs.js +1 -1
  65. package/dist/src/toast/toast.js +1 -1
  66. package/dist/src/toggle/toggle.js +1 -1
  67. package/dist/src/toggle-group/toggle-group.js +1 -1
  68. package/dist/src/tooltip/tooltip.js +1 -1
  69. package/dist/src/utils.d.ts +1 -1
  70. package/dist/src/utils.js +3 -3
  71. package/package.json +3 -3
  72. package/dist/shared/chunk-0gn67thm.js +0 -88
  73. package/dist/shared/chunk-1dzcjmfq.js +0 -46
  74. package/dist/shared/chunk-1hv9yd28.js +0 -178
  75. package/dist/shared/chunk-2d05qxdw.js +0 -282
  76. package/dist/shared/chunk-4jnweh3m.js +0 -165
  77. package/dist/shared/chunk-90hmpm0w.js +0 -34
  78. package/dist/shared/chunk-ac86qw7a.js +0 -71
  79. package/dist/shared/chunk-b02fkvts.js +0 -128
  80. package/dist/shared/chunk-bsx59bv9.js +0 -61
  81. package/dist/shared/chunk-cm2akzrm.js +0 -161
  82. package/dist/shared/chunk-cvms20w3.js +0 -132
  83. package/dist/shared/chunk-d8n8mggh.js +0 -239
  84. package/dist/shared/chunk-er9625ar.js +0 -204
  85. package/dist/shared/chunk-ewxzhtej.js +0 -117
  86. package/dist/shared/chunk-ey4485fh.js +0 -196
  87. package/dist/shared/chunk-gbxbkmte.js +0 -175
  88. package/dist/shared/chunk-je7tqf67.js +0 -133
  89. package/dist/shared/chunk-kr5qg80z.js +0 -288
  90. package/dist/shared/chunk-kytkmdpc.js +0 -199
  91. package/dist/shared/chunk-q2q20y9a.js +0 -60
  92. package/dist/shared/chunk-q9fgfgh9.js +0 -267
  93. package/dist/shared/chunk-qfk1ycfw.js +0 -142
  94. package/dist/shared/chunk-te4pdqnh.js +0 -219
  95. package/dist/shared/chunk-vm37m55w.js +0 -175
  96. package/dist/shared/chunk-y5vdb6br.js +0 -151
  97. package/dist/shared/chunk-ztvj60xp.js +0 -185
@@ -1,267 +0,0 @@
1
- import {
2
- createDismiss
3
- } from "./chunk-a6wp8c32.js";
4
- import {
5
- createFloatingPosition
6
- } from "./chunk-0mcr52hc.js";
7
- import {
8
- Keys,
9
- handleListNavigation,
10
- isKey
11
- } from "./chunk-7867pr13.js";
12
- import {
13
- setDataState,
14
- setExpanded,
15
- setHidden,
16
- setHiddenAnimated
17
- } from "./chunk-vvjyx7fe.js";
18
- import {
19
- linkedIds
20
- } from "./chunk-8y1jf6xr.js";
21
- import {
22
- applyAttrs
23
- } from "./chunk-q8dm19a5.js";
24
-
25
- // src/menu/menu.tsx
26
- import { __element, __enterChildren, __exitChildren, __insert, __on } from "@vertz/ui/internals";
27
- import { signal } from "@vertz/ui";
28
- function MenuRoot(options = {}) {
29
- const { onSelect, onOpenChange, positioning, ...attrs } = options;
30
- const ids = linkedIds("menu");
31
- const state = {
32
- open: signal(false),
33
- activeIndex: signal(-1)
34
- };
35
- const items = [];
36
- let floatingCleanup = null;
37
- let dismissCleanup = null;
38
- function handleClickOutside(event) {
39
- const target = event.target;
40
- if (!trigger.contains(target) && !content.contains(target)) {
41
- close();
42
- }
43
- }
44
- function open(activateFirst = false) {
45
- state.open.value = true;
46
- setExpanded(trigger, true);
47
- setHidden(content, false);
48
- setDataState(trigger, "open");
49
- setDataState(content, "open");
50
- onOpenChange?.(true);
51
- if (positioning) {
52
- const ref = positioning.referenceElement ?? trigger;
53
- const result = createFloatingPosition(ref, content, positioning);
54
- floatingCleanup = result.cleanup;
55
- dismissCleanup = createDismiss({
56
- onDismiss: close,
57
- insideElements: [ref, trigger, content],
58
- escapeKey: false
59
- });
60
- } else {
61
- document.addEventListener("mousedown", handleClickOutside);
62
- }
63
- if (activateFirst && items.length > 0) {
64
- state.activeIndex.value = 0;
65
- updateActiveItem(0);
66
- items[0]?.focus();
67
- } else {
68
- state.activeIndex.value = -1;
69
- updateActiveItem(-1);
70
- content.focus();
71
- }
72
- }
73
- function close() {
74
- state.open.value = false;
75
- setExpanded(trigger, false);
76
- setDataState(trigger, "closed");
77
- setDataState(content, "closed");
78
- setHiddenAnimated(content, true);
79
- onOpenChange?.(false);
80
- if (positioning) {
81
- floatingCleanup?.();
82
- floatingCleanup = null;
83
- dismissCleanup?.();
84
- dismissCleanup = null;
85
- } else {
86
- document.removeEventListener("mousedown", handleClickOutside);
87
- }
88
- trigger.focus();
89
- }
90
- function updateActiveItem(index) {
91
- for (let i = 0;i < items.length; i++) {
92
- items[i]?.setAttribute("tabindex", i === index ? "0" : "-1");
93
- }
94
- }
95
- const trigger = (() => {
96
- const __el0 = __element("button");
97
- __el0.setAttribute("type", "button");
98
- {
99
- const __v = ids.triggerId;
100
- if (__v != null && __v !== false)
101
- __el0.setAttribute("id", __v === true ? "" : __v);
102
- }
103
- {
104
- const __v = ids.contentId;
105
- if (__v != null && __v !== false)
106
- __el0.setAttribute("aria-controls", __v === true ? "" : __v);
107
- }
108
- __el0.setAttribute("aria-haspopup", "menu");
109
- __el0.setAttribute("aria-expanded", "false");
110
- __el0.setAttribute("data-state", "closed");
111
- __on(__el0, "click", () => {
112
- if (state.open.peek()) {
113
- close();
114
- } else {
115
- open();
116
- }
117
- });
118
- __on(__el0, "keydown", (event) => {
119
- if (isKey(event, Keys.ArrowDown, Keys.Enter, Keys.Space)) {
120
- event.preventDefault();
121
- if (!state.open.peek())
122
- open(true);
123
- }
124
- });
125
- return __el0;
126
- })();
127
- const content = (() => {
128
- const __el1 = __element("div");
129
- __el1.setAttribute("role", "menu");
130
- __el1.setAttribute("tabindex", "-1");
131
- {
132
- const __v = ids.contentId;
133
- if (__v != null && __v !== false)
134
- __el1.setAttribute("id", __v === true ? "" : __v);
135
- }
136
- __el1.setAttribute("aria-hidden", "true");
137
- __el1.setAttribute("data-state", "closed");
138
- __el1.setAttribute("style", "display: none");
139
- __on(__el1, "keydown", (event) => {
140
- if (isKey(event, Keys.Escape)) {
141
- event.preventDefault();
142
- close();
143
- return;
144
- }
145
- if (isKey(event, Keys.Enter, Keys.Space)) {
146
- event.preventDefault();
147
- const active = items[state.activeIndex.peek()];
148
- if (active) {
149
- const val = active.getAttribute("data-value");
150
- if (val !== null) {
151
- onSelect?.(val);
152
- close();
153
- }
154
- }
155
- return;
156
- }
157
- if (state.activeIndex.peek() === -1) {
158
- if (isKey(event, Keys.ArrowDown)) {
159
- event.preventDefault();
160
- state.activeIndex.value = 0;
161
- updateActiveItem(0);
162
- items[0]?.focus();
163
- return;
164
- }
165
- if (isKey(event, Keys.ArrowUp)) {
166
- event.preventDefault();
167
- const last = items.length - 1;
168
- state.activeIndex.value = last;
169
- updateActiveItem(last);
170
- items[last]?.focus();
171
- return;
172
- }
173
- }
174
- const result = handleListNavigation(event, items, { orientation: "vertical" });
175
- if (result) {
176
- const idx = items.indexOf(result);
177
- if (idx >= 0) {
178
- state.activeIndex.value = idx;
179
- updateActiveItem(idx);
180
- }
181
- return;
182
- }
183
- if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {
184
- const char = event.key.toLowerCase();
185
- const match = items.find((item) => item.textContent?.toLowerCase().startsWith(char));
186
- if (match) {
187
- const idx = items.indexOf(match);
188
- state.activeIndex.value = idx;
189
- updateActiveItem(idx);
190
- match.focus();
191
- }
192
- }
193
- });
194
- return __el1;
195
- })();
196
- function createItem(value, label, parent) {
197
- const item = (() => {
198
- const __el2 = __element("div");
199
- __el2.setAttribute("role", "menuitem");
200
- {
201
- const __v = value;
202
- if (__v != null && __v !== false)
203
- __el2.setAttribute("data-value", __v === true ? "" : __v);
204
- }
205
- __el2.setAttribute("tabindex", "-1");
206
- __on(__el2, "click", () => {
207
- onSelect?.(value);
208
- close();
209
- });
210
- __enterChildren(__el2);
211
- __insert(__el2, label ?? value);
212
- __exitChildren();
213
- return __el2;
214
- })();
215
- items.push(item);
216
- (parent ?? content).appendChild(item);
217
- return item;
218
- }
219
- function Item(value, label) {
220
- return createItem(value, label);
221
- }
222
- function Group(label) {
223
- const el = (() => {
224
- const __el3 = __element("div");
225
- __el3.setAttribute("role", "group");
226
- {
227
- const __v = label;
228
- if (__v != null && __v !== false)
229
- __el3.setAttribute("aria-label", __v === true ? "" : __v);
230
- }
231
- return __el3;
232
- })();
233
- content.appendChild(el);
234
- return {
235
- el,
236
- Item: (value, itemLabel) => createItem(value, itemLabel, el)
237
- };
238
- }
239
- function Separator() {
240
- const hr = (() => {
241
- const __el4 = __element("hr");
242
- __el4.setAttribute("role", "separator");
243
- return __el4;
244
- })();
245
- content.appendChild(hr);
246
- return hr;
247
- }
248
- function Label(text) {
249
- const el = (() => {
250
- const __el5 = __element("div");
251
- __el5.setAttribute("role", "none");
252
- __enterChildren(__el5);
253
- __insert(__el5, text);
254
- __exitChildren();
255
- return __el5;
256
- })();
257
- content.appendChild(el);
258
- return el;
259
- }
260
- applyAttrs(trigger, attrs);
261
- return { trigger, content, state, Item, Group, Separator, Label };
262
- }
263
- var Menu = {
264
- Root: MenuRoot
265
- };
266
-
267
- export { Menu };
@@ -1,142 +0,0 @@
1
- import {
2
- createDismiss
3
- } from "./chunk-a6wp8c32.js";
4
- import {
5
- focusFirst,
6
- saveFocus
7
- } from "./chunk-e2v1c9ex.js";
8
- import {
9
- createFloatingPosition
10
- } from "./chunk-0mcr52hc.js";
11
- import {
12
- Keys,
13
- isKey
14
- } from "./chunk-7867pr13.js";
15
- import {
16
- setDataState,
17
- setExpanded,
18
- setHidden,
19
- setHiddenAnimated
20
- } from "./chunk-vvjyx7fe.js";
21
- import {
22
- linkedIds
23
- } from "./chunk-8y1jf6xr.js";
24
- import {
25
- applyAttrs
26
- } from "./chunk-q8dm19a5.js";
27
-
28
- // src/popover/popover.tsx
29
- import { __element, __on, __styleStr } from "@vertz/ui/internals";
30
- import { signal } from "@vertz/ui";
31
- function PopoverRoot(options = {}) {
32
- const { defaultOpen = false, onOpenChange, positioning, ...attrs } = options;
33
- const ids = linkedIds("popover");
34
- const state = { open: signal(defaultOpen) };
35
- let restoreFocus = null;
36
- let floatingCleanup = null;
37
- let dismissCleanup = null;
38
- function open() {
39
- state.open.value = true;
40
- setExpanded(trigger, true);
41
- setHidden(content, false);
42
- setDataState(trigger, "open");
43
- setDataState(content, "open");
44
- restoreFocus = saveFocus();
45
- queueMicrotask(() => focusFirst(content));
46
- if (positioning) {
47
- const result = createFloatingPosition(trigger, content, positioning);
48
- floatingCleanup = result.cleanup;
49
- dismissCleanup = createDismiss({
50
- onDismiss: close,
51
- insideElements: [trigger, content],
52
- escapeKey: false
53
- });
54
- }
55
- onOpenChange?.(true);
56
- }
57
- function close() {
58
- state.open.value = false;
59
- setExpanded(trigger, false);
60
- setDataState(trigger, "closed");
61
- setDataState(content, "closed");
62
- setHiddenAnimated(content, true);
63
- floatingCleanup?.();
64
- floatingCleanup = null;
65
- dismissCleanup?.();
66
- dismissCleanup = null;
67
- restoreFocus?.();
68
- restoreFocus = null;
69
- onOpenChange?.(false);
70
- }
71
- const trigger = (() => {
72
- const __el0 = __element("button");
73
- __el0.setAttribute("type", "button");
74
- {
75
- const __v = ids.triggerId;
76
- if (__v != null && __v !== false)
77
- __el0.setAttribute("id", __v === true ? "" : __v);
78
- }
79
- {
80
- const __v = ids.contentId;
81
- if (__v != null && __v !== false)
82
- __el0.setAttribute("aria-controls", __v === true ? "" : __v);
83
- }
84
- __el0.setAttribute("aria-haspopup", "dialog");
85
- {
86
- const __v = defaultOpen ? "true" : "false";
87
- if (__v != null && __v !== false)
88
- __el0.setAttribute("aria-expanded", __v === true ? "" : __v);
89
- }
90
- {
91
- const __v = defaultOpen ? "open" : "closed";
92
- if (__v != null && __v !== false)
93
- __el0.setAttribute("data-state", __v === true ? "" : __v);
94
- }
95
- __on(__el0, "click", () => {
96
- if (state.open.peek()) {
97
- close();
98
- } else {
99
- open();
100
- }
101
- });
102
- return __el0;
103
- })();
104
- const content = (() => {
105
- const __el1 = __element("div");
106
- __el1.setAttribute("role", "dialog");
107
- {
108
- const __v = ids.contentId;
109
- if (__v != null && __v !== false)
110
- __el1.setAttribute("id", __v === true ? "" : __v);
111
- }
112
- {
113
- const __v = defaultOpen ? "false" : "true";
114
- if (__v != null && __v !== false)
115
- __el1.setAttribute("aria-hidden", __v === true ? "" : __v);
116
- }
117
- {
118
- const __v = defaultOpen ? "open" : "closed";
119
- if (__v != null && __v !== false)
120
- __el1.setAttribute("data-state", __v === true ? "" : __v);
121
- }
122
- {
123
- const __v = defaultOpen ? "" : "display: none";
124
- if (__v != null && __v !== false)
125
- __el1.setAttribute("style", typeof __v === "object" ? __styleStr(__v) : __v === true ? "" : String(__v));
126
- }
127
- __on(__el1, "keydown", (event) => {
128
- if (isKey(event, Keys.Escape)) {
129
- event.preventDefault();
130
- close();
131
- }
132
- });
133
- return __el1;
134
- })();
135
- applyAttrs(trigger, attrs);
136
- return { trigger, content, state };
137
- }
138
- var Popover = {
139
- Root: PopoverRoot
140
- };
141
-
142
- export { Popover };
@@ -1,219 +0,0 @@
1
- import {
2
- createDismiss
3
- } from "./chunk-a6wp8c32.js";
4
- import {
5
- createFloatingPosition,
6
- virtualElement
7
- } from "./chunk-0mcr52hc.js";
8
- import {
9
- Keys,
10
- handleListNavigation,
11
- isKey
12
- } from "./chunk-7867pr13.js";
13
- import {
14
- setDataState,
15
- setHidden,
16
- setHiddenAnimated
17
- } from "./chunk-vvjyx7fe.js";
18
- import {
19
- uniqueId
20
- } from "./chunk-8y1jf6xr.js";
21
- import {
22
- applyAttrs
23
- } from "./chunk-q8dm19a5.js";
24
-
25
- // src/context-menu/context-menu.tsx
26
- import { __element, __enterChildren, __exitChildren, __insert, __on } from "@vertz/ui/internals";
27
- import { signal } from "@vertz/ui";
28
- function ContextMenuRoot(options = {}) {
29
- const { onSelect, positioning, ...attrs } = options;
30
- const state = {
31
- open: signal(false),
32
- activeIndex: signal(-1)
33
- };
34
- const items = [];
35
- let floatingCleanup = null;
36
- let dismissCleanup = null;
37
- function handleClickOutside(event) {
38
- const target = event.target;
39
- if (!trigger.contains(target) && !content.contains(target)) {
40
- close();
41
- }
42
- }
43
- function updateActiveItem(index) {
44
- for (let i = 0;i < items.length; i++) {
45
- items[i]?.setAttribute("tabindex", i === index ? "0" : "-1");
46
- }
47
- }
48
- function openMenu(x, y) {
49
- state.open.value = true;
50
- setHidden(content, false);
51
- setDataState(content, "open");
52
- if (positioning) {
53
- const result = createFloatingPosition(virtualElement(x, y), content, {
54
- strategy: "fixed",
55
- ...positioning
56
- });
57
- floatingCleanup = result.cleanup;
58
- dismissCleanup = createDismiss({
59
- onDismiss: close,
60
- insideElements: [trigger, content],
61
- escapeKey: false
62
- });
63
- } else {
64
- content.style.left = `${x}px`;
65
- content.style.top = `${y}px`;
66
- document.addEventListener("mousedown", handleClickOutside);
67
- }
68
- state.activeIndex.value = 0;
69
- updateActiveItem(0);
70
- items[0]?.focus();
71
- }
72
- function close() {
73
- state.open.value = false;
74
- setDataState(content, "closed");
75
- setHiddenAnimated(content, true);
76
- if (positioning) {
77
- floatingCleanup?.();
78
- floatingCleanup = null;
79
- dismissCleanup?.();
80
- dismissCleanup = null;
81
- } else {
82
- document.removeEventListener("mousedown", handleClickOutside);
83
- }
84
- }
85
- const trigger = (() => {
86
- const __el0 = __element("div");
87
- __on(__el0, "contextmenu", (event) => {
88
- event.preventDefault();
89
- if (state.open.peek()) {
90
- close();
91
- }
92
- openMenu(event.clientX, event.clientY);
93
- });
94
- return __el0;
95
- })();
96
- const contentId = uniqueId("ctx-menu");
97
- const content = (() => {
98
- const __el1 = __element("div");
99
- __el1.setAttribute("role", "menu");
100
- {
101
- const __v = contentId;
102
- if (__v != null && __v !== false)
103
- __el1.setAttribute("id", __v === true ? "" : __v);
104
- }
105
- __el1.setAttribute("style", "position: fixed; display: none;");
106
- __el1.setAttribute("aria-hidden", "true");
107
- __el1.setAttribute("data-state", "closed");
108
- __on(__el1, "keydown", (event) => {
109
- if (isKey(event, Keys.Escape)) {
110
- event.preventDefault();
111
- close();
112
- return;
113
- }
114
- if (isKey(event, Keys.Enter, Keys.Space)) {
115
- event.preventDefault();
116
- const active = items[state.activeIndex.peek()];
117
- if (active) {
118
- const val = active.getAttribute("data-value");
119
- if (val !== null) {
120
- onSelect?.(val);
121
- close();
122
- }
123
- }
124
- return;
125
- }
126
- const result = handleListNavigation(event, items, { orientation: "vertical" });
127
- if (result) {
128
- const idx = items.indexOf(result);
129
- if (idx >= 0) {
130
- state.activeIndex.value = idx;
131
- updateActiveItem(idx);
132
- }
133
- return;
134
- }
135
- if (event.key.length === 1 && !event.ctrlKey && !event.metaKey && !event.altKey) {
136
- const char = event.key.toLowerCase();
137
- const match = items.find((item) => item.textContent?.toLowerCase().startsWith(char));
138
- if (match) {
139
- const idx = items.indexOf(match);
140
- state.activeIndex.value = idx;
141
- updateActiveItem(idx);
142
- match.focus();
143
- }
144
- }
145
- });
146
- return __el1;
147
- })();
148
- function createItem(value, label, parent) {
149
- const item = (() => {
150
- const __el2 = __element("div");
151
- __el2.setAttribute("role", "menuitem");
152
- {
153
- const __v = value;
154
- if (__v != null && __v !== false)
155
- __el2.setAttribute("data-value", __v === true ? "" : __v);
156
- }
157
- __el2.setAttribute("tabindex", "-1");
158
- __on(__el2, "click", () => {
159
- onSelect?.(value);
160
- close();
161
- });
162
- __enterChildren(__el2);
163
- __insert(__el2, label ?? value);
164
- __exitChildren();
165
- return __el2;
166
- })();
167
- items.push(item);
168
- (parent ?? content).appendChild(item);
169
- return item;
170
- }
171
- function Item(value, label) {
172
- return createItem(value, label);
173
- }
174
- function Group(label) {
175
- const el = (() => {
176
- const __el3 = __element("div");
177
- __el3.setAttribute("role", "group");
178
- {
179
- const __v = label;
180
- if (__v != null && __v !== false)
181
- __el3.setAttribute("aria-label", __v === true ? "" : __v);
182
- }
183
- return __el3;
184
- })();
185
- content.appendChild(el);
186
- return {
187
- el,
188
- Item: (value, itemLabel) => createItem(value, itemLabel, el)
189
- };
190
- }
191
- function Separator() {
192
- const hr = (() => {
193
- const __el4 = __element("hr");
194
- __el4.setAttribute("role", "separator");
195
- return __el4;
196
- })();
197
- content.appendChild(hr);
198
- return hr;
199
- }
200
- function Label(text) {
201
- const el = (() => {
202
- const __el5 = __element("div");
203
- __el5.setAttribute("role", "none");
204
- __enterChildren(__el5);
205
- __insert(__el5, text);
206
- __exitChildren();
207
- return __el5;
208
- })();
209
- content.appendChild(el);
210
- return el;
211
- }
212
- applyAttrs(trigger, attrs);
213
- return { trigger, content, state, Item, Group, Separator, Label };
214
- }
215
- var ContextMenu = {
216
- Root: ContextMenuRoot
217
- };
218
-
219
- export { ContextMenu };