@ensolid/radix 0.0.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 (169) hide show
  1. package/dist/components/Accordion/Accordion.d.ts +79 -0
  2. package/dist/components/Accordion/Accordion.d.ts.map +1 -0
  3. package/dist/components/Accordion/Accordion.js +193 -0
  4. package/dist/components/Accordion/Accordion.js.map +1 -0
  5. package/dist/components/Accordion/index.d.ts +2 -0
  6. package/dist/components/Accordion/index.d.ts.map +1 -0
  7. package/dist/components/AlertDialog/AlertDialog.d.ts +89 -0
  8. package/dist/components/AlertDialog/AlertDialog.d.ts.map +1 -0
  9. package/dist/components/AlertDialog/AlertDialog.js +235 -0
  10. package/dist/components/AlertDialog/AlertDialog.js.map +1 -0
  11. package/dist/components/AlertDialog/index.d.ts +2 -0
  12. package/dist/components/AlertDialog/index.d.ts.map +1 -0
  13. package/dist/components/AspectRatio/AspectRatio.d.ts +14 -0
  14. package/dist/components/AspectRatio/AspectRatio.d.ts.map +1 -0
  15. package/dist/components/AspectRatio/AspectRatio.js +25 -0
  16. package/dist/components/AspectRatio/AspectRatio.js.map +1 -0
  17. package/dist/components/AspectRatio/index.d.ts +2 -0
  18. package/dist/components/AspectRatio/index.d.ts.map +1 -0
  19. package/dist/components/Avatar/Avatar.d.ts +41 -0
  20. package/dist/components/Avatar/Avatar.d.ts.map +1 -0
  21. package/dist/components/Avatar/Avatar.js +144 -0
  22. package/dist/components/Avatar/Avatar.js.map +1 -0
  23. package/dist/components/Avatar/index.d.ts +2 -0
  24. package/dist/components/Avatar/index.d.ts.map +1 -0
  25. package/dist/components/Checkbox/Checkbox.d.ts +27 -0
  26. package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
  27. package/dist/components/Checkbox/Checkbox.js +49 -0
  28. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  29. package/dist/components/Checkbox/index.d.ts +2 -0
  30. package/dist/components/Checkbox/index.d.ts.map +1 -0
  31. package/dist/components/Collapsible/Collapsible.d.ts +54 -0
  32. package/dist/components/Collapsible/Collapsible.d.ts.map +1 -0
  33. package/dist/components/Collapsible/Collapsible.js +110 -0
  34. package/dist/components/Collapsible/Collapsible.js.map +1 -0
  35. package/dist/components/Collapsible/index.d.ts +2 -0
  36. package/dist/components/Collapsible/index.d.ts.map +1 -0
  37. package/dist/components/ContextMenu/ContextMenu.d.ts +89 -0
  38. package/dist/components/ContextMenu/ContextMenu.d.ts.map +1 -0
  39. package/dist/components/ContextMenu/ContextMenu.js +263 -0
  40. package/dist/components/ContextMenu/ContextMenu.js.map +1 -0
  41. package/dist/components/ContextMenu/index.d.ts +2 -0
  42. package/dist/components/ContextMenu/index.d.ts.map +1 -0
  43. package/dist/components/Dialog/Dialog.d.ts +87 -0
  44. package/dist/components/Dialog/Dialog.d.ts.map +1 -0
  45. package/dist/components/Dialog/Dialog.js +218 -0
  46. package/dist/components/Dialog/Dialog.js.map +1 -0
  47. package/dist/components/Dialog/index.d.ts +2 -0
  48. package/dist/components/Dialog/index.d.ts.map +1 -0
  49. package/dist/components/DropdownMenu/DropdownMenu.d.ts +81 -0
  50. package/dist/components/DropdownMenu/DropdownMenu.d.ts.map +1 -0
  51. package/dist/components/DropdownMenu/DropdownMenu.js +244 -0
  52. package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -0
  53. package/dist/components/DropdownMenu/index.d.ts +2 -0
  54. package/dist/components/DropdownMenu/index.d.ts.map +1 -0
  55. package/dist/components/HoverCard/HoverCard.d.ts +63 -0
  56. package/dist/components/HoverCard/HoverCard.d.ts.map +1 -0
  57. package/dist/components/HoverCard/HoverCard.js +199 -0
  58. package/dist/components/HoverCard/HoverCard.js.map +1 -0
  59. package/dist/components/HoverCard/index.d.ts +2 -0
  60. package/dist/components/HoverCard/index.d.ts.map +1 -0
  61. package/dist/components/Label/Label.d.ts +14 -0
  62. package/dist/components/Label/Label.d.ts.map +1 -0
  63. package/dist/components/Label/Label.js +23 -0
  64. package/dist/components/Label/Label.js.map +1 -0
  65. package/dist/components/Label/index.d.ts +2 -0
  66. package/dist/components/Label/index.d.ts.map +1 -0
  67. package/dist/components/Menubar/Menubar.d.ts +85 -0
  68. package/dist/components/Menubar/Menubar.d.ts.map +1 -0
  69. package/dist/components/Menubar/Menubar.js +299 -0
  70. package/dist/components/Menubar/Menubar.js.map +1 -0
  71. package/dist/components/Menubar/index.d.ts +2 -0
  72. package/dist/components/Menubar/index.d.ts.map +1 -0
  73. package/dist/components/NavigationMenu/NavigationMenu.d.ts +105 -0
  74. package/dist/components/NavigationMenu/NavigationMenu.d.ts.map +1 -0
  75. package/dist/components/NavigationMenu/NavigationMenu.js +320 -0
  76. package/dist/components/NavigationMenu/NavigationMenu.js.map +1 -0
  77. package/dist/components/NavigationMenu/index.d.ts +2 -0
  78. package/dist/components/NavigationMenu/index.d.ts.map +1 -0
  79. package/dist/components/Popover/Popover.d.ts +52 -0
  80. package/dist/components/Popover/Popover.d.ts.map +1 -0
  81. package/dist/components/Popover/Popover.js +176 -0
  82. package/dist/components/Popover/Popover.js.map +1 -0
  83. package/dist/components/Popover/index.d.ts +2 -0
  84. package/dist/components/Popover/index.d.ts.map +1 -0
  85. package/dist/components/Progress/Progress.d.ts +19 -0
  86. package/dist/components/Progress/Progress.d.ts.map +1 -0
  87. package/dist/components/Progress/Progress.js +44 -0
  88. package/dist/components/Progress/Progress.js.map +1 -0
  89. package/dist/components/Progress/index.d.ts +2 -0
  90. package/dist/components/Progress/index.d.ts.map +1 -0
  91. package/dist/components/RadioGroup/RadioGroup.d.ts +54 -0
  92. package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -0
  93. package/dist/components/RadioGroup/RadioGroup.js +100 -0
  94. package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
  95. package/dist/components/RadioGroup/index.d.ts +2 -0
  96. package/dist/components/RadioGroup/index.d.ts.map +1 -0
  97. package/dist/components/ScrollArea/ScrollArea.d.ts +58 -0
  98. package/dist/components/ScrollArea/ScrollArea.d.ts.map +1 -0
  99. package/dist/components/ScrollArea/ScrollArea.js +91 -0
  100. package/dist/components/ScrollArea/ScrollArea.js.map +1 -0
  101. package/dist/components/ScrollArea/index.d.ts +2 -0
  102. package/dist/components/ScrollArea/index.d.ts.map +1 -0
  103. package/dist/components/Select/Select.d.ts +80 -0
  104. package/dist/components/Select/Select.d.ts.map +1 -0
  105. package/dist/components/Select/Select.js +240 -0
  106. package/dist/components/Select/Select.js.map +1 -0
  107. package/dist/components/Select/index.d.ts +2 -0
  108. package/dist/components/Select/index.d.ts.map +1 -0
  109. package/dist/components/Separator/Separator.d.ts +15 -0
  110. package/dist/components/Separator/Separator.d.ts.map +1 -0
  111. package/dist/components/Separator/Separator.js +30 -0
  112. package/dist/components/Separator/Separator.js.map +1 -0
  113. package/dist/components/Separator/index.d.ts +2 -0
  114. package/dist/components/Separator/index.d.ts.map +1 -0
  115. package/dist/components/Slider/Slider.d.ts +37 -0
  116. package/dist/components/Slider/Slider.d.ts.map +1 -0
  117. package/dist/components/Slider/Slider.js +63 -0
  118. package/dist/components/Slider/Slider.js.map +1 -0
  119. package/dist/components/Slider/index.d.ts +2 -0
  120. package/dist/components/Slider/index.d.ts.map +1 -0
  121. package/dist/components/Switch/Switch.d.ts +27 -0
  122. package/dist/components/Switch/Switch.d.ts.map +1 -0
  123. package/dist/components/Switch/Switch.js +50 -0
  124. package/dist/components/Switch/Switch.js.map +1 -0
  125. package/dist/components/Switch/index.d.ts +2 -0
  126. package/dist/components/Switch/index.d.ts.map +1 -0
  127. package/dist/components/Tabs/Tabs.d.ts +72 -0
  128. package/dist/components/Tabs/Tabs.d.ts.map +1 -0
  129. package/dist/components/Tabs/Tabs.js +150 -0
  130. package/dist/components/Tabs/Tabs.js.map +1 -0
  131. package/dist/components/Tabs/index.d.ts +2 -0
  132. package/dist/components/Tabs/index.d.ts.map +1 -0
  133. package/dist/components/Toggle/Toggle.d.ts +22 -0
  134. package/dist/components/Toggle/Toggle.d.ts.map +1 -0
  135. package/dist/components/Toggle/Toggle.js +51 -0
  136. package/dist/components/Toggle/Toggle.js.map +1 -0
  137. package/dist/components/Toggle/index.d.ts +2 -0
  138. package/dist/components/Toggle/index.d.ts.map +1 -0
  139. package/dist/components/ToggleGroup/ToggleGroup.d.ts +67 -0
  140. package/dist/components/ToggleGroup/ToggleGroup.d.ts.map +1 -0
  141. package/dist/components/ToggleGroup/ToggleGroup.js +119 -0
  142. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -0
  143. package/dist/components/ToggleGroup/index.d.ts +2 -0
  144. package/dist/components/ToggleGroup/index.d.ts.map +1 -0
  145. package/dist/components/Toolbar/Toolbar.d.ts +82 -0
  146. package/dist/components/Toolbar/Toolbar.d.ts.map +1 -0
  147. package/dist/components/Toolbar/Toolbar.js +110 -0
  148. package/dist/components/Toolbar/Toolbar.js.map +1 -0
  149. package/dist/components/Toolbar/index.d.ts +2 -0
  150. package/dist/components/Toolbar/index.d.ts.map +1 -0
  151. package/dist/components/Tooltip/Tooltip.d.ts +56 -0
  152. package/dist/components/Tooltip/Tooltip.d.ts.map +1 -0
  153. package/dist/components/Tooltip/Tooltip.js +155 -0
  154. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  155. package/dist/components/Tooltip/index.d.ts +2 -0
  156. package/dist/components/Tooltip/index.d.ts.map +1 -0
  157. package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +9 -0
  158. package/dist/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -0
  159. package/dist/components/VisuallyHidden/VisuallyHidden.js +23 -0
  160. package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -0
  161. package/dist/components/VisuallyHidden/index.d.ts +2 -0
  162. package/dist/components/VisuallyHidden/index.d.ts.map +1 -0
  163. package/dist/components/index.d.ts +28 -0
  164. package/dist/components/index.d.ts.map +1 -0
  165. package/dist/index.d.ts +2 -0
  166. package/dist/index.d.ts.map +1 -0
  167. package/dist/index.js +140 -0
  168. package/dist/index.js.map +1 -0
  169. package/package.json +97 -0
@@ -0,0 +1,299 @@
1
+ import { delegateEvents, isServer, createComponent, template, spread, mergeProps, insert, Portal, use } from "solid-js/web";
2
+ import { createContext, splitProps, createSignal, createEffect, onCleanup, onMount, Show, useContext } from "solid-js";
3
+ var _tmpl$ = /* @__PURE__ */ template(`<div role=menubar>`), _tmpl$2 = /* @__PURE__ */ template(`<div>`), _tmpl$3 = /* @__PURE__ */ template(`<button type=button role=menuitem>`), _tmpl$4 = /* @__PURE__ */ template(`<div role=menu style=top:0px;left:0px>`), _tmpl$5 = /* @__PURE__ */ template(`<hr role=separator>`);
4
+ const MenubarContext = createContext();
5
+ const useMenubarContext = () => {
6
+ const context = useContext(MenubarContext);
7
+ if (!context) {
8
+ throw new Error("Menubar components must be used within Menubar");
9
+ }
10
+ return context;
11
+ };
12
+ const MenubarBase = (props) => {
13
+ const [local, others] = splitProps(props, ["value", "defaultValue", "onValueChange", "class", "children"]);
14
+ const [internalValue, setInternalValue] = createSignal(local.value ?? local.defaultValue);
15
+ const [triggerRefs, setTriggerRefs] = createSignal(/* @__PURE__ */ new Map());
16
+ const contentElements = /* @__PURE__ */ new Map();
17
+ const isControlled = () => local.value !== void 0;
18
+ const value = () => isControlled() ? local.value : internalValue();
19
+ const handleValueChange = (newValue) => {
20
+ if (!isControlled()) {
21
+ setInternalValue(newValue);
22
+ }
23
+ local.onValueChange?.(newValue);
24
+ };
25
+ const setTriggerRef = (menuValue, ref) => {
26
+ const refs = new Map(triggerRefs());
27
+ if (ref) {
28
+ refs.set(menuValue, ref);
29
+ } else {
30
+ refs.delete(menuValue);
31
+ }
32
+ setTriggerRefs(refs);
33
+ };
34
+ const setContentElement = (menuValue, el) => {
35
+ if (el) {
36
+ contentElements.set(menuValue, el);
37
+ } else {
38
+ contentElements.delete(menuValue);
39
+ }
40
+ };
41
+ const handleClickOutside = (e) => {
42
+ const currentValue = value();
43
+ if (currentValue && !isServer) {
44
+ const target = e.target;
45
+ const trigger = triggerRefs().get(currentValue);
46
+ const content = contentElements.get(currentValue);
47
+ if (trigger && content) {
48
+ if (!trigger.contains(target) && !content.contains(target)) {
49
+ handleValueChange(void 0);
50
+ }
51
+ }
52
+ }
53
+ };
54
+ const handleKeyDown = (e) => {
55
+ if (e.key === "Escape" && value()) {
56
+ handleValueChange(void 0);
57
+ }
58
+ };
59
+ createEffect(() => {
60
+ if (!isServer) {
61
+ if (value()) {
62
+ setTimeout(() => {
63
+ document.addEventListener("keydown", handleKeyDown);
64
+ document.addEventListener("mousedown", handleClickOutside);
65
+ }, 0);
66
+ } else {
67
+ document.removeEventListener("keydown", handleKeyDown);
68
+ document.removeEventListener("mousedown", handleClickOutside);
69
+ }
70
+ }
71
+ });
72
+ onCleanup(() => {
73
+ if (!isServer) {
74
+ document.removeEventListener("keydown", handleKeyDown);
75
+ document.removeEventListener("mousedown", handleClickOutside);
76
+ }
77
+ });
78
+ const contextValue = {
79
+ value,
80
+ setValue: handleValueChange,
81
+ triggerRefs,
82
+ setTriggerRef,
83
+ setContentElement
84
+ };
85
+ return createComponent(MenubarContext.Provider, {
86
+ value: contextValue,
87
+ get children() {
88
+ var _el$ = _tmpl$();
89
+ spread(_el$, mergeProps({
90
+ get ["class"]() {
91
+ return local.class;
92
+ }
93
+ }, others), false, true);
94
+ insert(_el$, () => local.children);
95
+ return _el$;
96
+ }
97
+ });
98
+ };
99
+ const Menubar = Object.assign(MenubarBase, {
100
+ Menu: null,
101
+ Trigger: null,
102
+ Content: null,
103
+ Item: null,
104
+ Separator: null
105
+ });
106
+ const MenubarMenu = (props) => {
107
+ const [local, others] = splitProps(props, ["value", "class", "children"]);
108
+ return (() => {
109
+ var _el$2 = _tmpl$2();
110
+ spread(_el$2, mergeProps({
111
+ get ["class"]() {
112
+ return local.class;
113
+ },
114
+ get ["data-value"]() {
115
+ return local.value;
116
+ }
117
+ }, others), false, true);
118
+ insert(_el$2, () => local.children);
119
+ return _el$2;
120
+ })();
121
+ };
122
+ const MenubarTrigger = (props) => {
123
+ const [local, others] = splitProps(props, ["children", "asChild", "class", "onClick"]);
124
+ const context = useMenubarContext();
125
+ let triggerElement;
126
+ let menuValue;
127
+ onMount(() => {
128
+ if (triggerElement) {
129
+ const parent = triggerElement.closest("[data-value]");
130
+ if (parent) {
131
+ menuValue = parent.getAttribute("data-value") || void 0;
132
+ if (menuValue) {
133
+ context.setTriggerRef(menuValue, triggerElement);
134
+ }
135
+ }
136
+ }
137
+ });
138
+ const isOpen = () => context.value() === menuValue;
139
+ const handleClick = (e) => {
140
+ if (typeof local.onClick === "function") {
141
+ local.onClick(e);
142
+ }
143
+ if (menuValue) {
144
+ context.setValue(isOpen() ? void 0 : menuValue);
145
+ }
146
+ };
147
+ return (() => {
148
+ var _el$3 = _tmpl$3();
149
+ _el$3.$$click = handleClick;
150
+ var _ref$ = triggerElement;
151
+ typeof _ref$ === "function" ? use(_ref$, _el$3) : triggerElement = _el$3;
152
+ spread(_el$3, mergeProps({
153
+ get ["class"]() {
154
+ return local.class;
155
+ },
156
+ get ["aria-expanded"]() {
157
+ return isOpen();
158
+ },
159
+ get ["data-state"]() {
160
+ return isOpen() ? "open" : "closed";
161
+ }
162
+ }, others), false, true);
163
+ insert(_el$3, () => local.children);
164
+ return _el$3;
165
+ })();
166
+ };
167
+ const MenubarContent = (props) => {
168
+ const [local, others] = splitProps(props, ["class", "children"]);
169
+ const context = useMenubarContext();
170
+ let contentElement;
171
+ let menuValue;
172
+ onMount(() => {
173
+ if (contentElement) {
174
+ const parent = contentElement.closest("[data-value]");
175
+ if (parent) {
176
+ menuValue = parent.getAttribute("data-value") || void 0;
177
+ if (menuValue) {
178
+ context.setContentElement(menuValue, contentElement);
179
+ }
180
+ }
181
+ }
182
+ });
183
+ const isOpen = () => menuValue ? context.value() === menuValue : false;
184
+ const updatePosition = () => {
185
+ if (!isServer && contentElement && menuValue) {
186
+ const trigger = context.triggerRefs().get(menuValue);
187
+ if (trigger) {
188
+ const rect = trigger.getBoundingClientRect();
189
+ const contentRect = contentElement.getBoundingClientRect();
190
+ const top = rect.bottom + 8;
191
+ const left = rect.left;
192
+ const viewportWidth = window.innerWidth;
193
+ const viewportHeight = window.innerHeight;
194
+ let finalTop = top;
195
+ let finalLeft = left;
196
+ if (left + contentRect.width > viewportWidth) {
197
+ finalLeft = viewportWidth - contentRect.width - 16;
198
+ }
199
+ if (top + contentRect.height > viewportHeight) {
200
+ finalTop = rect.top - contentRect.height - 8;
201
+ }
202
+ contentElement.style.top = `${finalTop}px`;
203
+ contentElement.style.left = `${finalLeft}px`;
204
+ }
205
+ }
206
+ };
207
+ createEffect(() => {
208
+ if (isOpen() && !isServer) {
209
+ requestAnimationFrame(() => {
210
+ updatePosition();
211
+ });
212
+ }
213
+ });
214
+ return createComponent(Show, {
215
+ get when() {
216
+ return isOpen();
217
+ },
218
+ get children() {
219
+ return createComponent(Portal, {
220
+ get mount() {
221
+ return !isServer ? document.body : void 0;
222
+ },
223
+ get children() {
224
+ var _el$4 = _tmpl$4();
225
+ var _ref$2 = contentElement;
226
+ typeof _ref$2 === "function" ? use(_ref$2, _el$4) : contentElement = _el$4;
227
+ spread(_el$4, mergeProps({
228
+ get ["class"]() {
229
+ return `fixed z-50 ${local.class || ""}`;
230
+ },
231
+ get ["data-state"]() {
232
+ return isOpen() ? "open" : "closed";
233
+ }
234
+ }, others), false, true);
235
+ insert(_el$4, () => local.children);
236
+ return _el$4;
237
+ }
238
+ });
239
+ }
240
+ });
241
+ };
242
+ const MenubarItem = (props) => {
243
+ const [local, others] = splitProps(props, ["children", "disabled", "asChild", "class", "onClick"]);
244
+ const handleClick = (e) => {
245
+ if (local.disabled) {
246
+ e.preventDefault();
247
+ e.stopPropagation();
248
+ return;
249
+ }
250
+ if (typeof local.onClick === "function") {
251
+ local.onClick(e);
252
+ }
253
+ };
254
+ return (() => {
255
+ var _el$5 = _tmpl$3();
256
+ _el$5.$$click = handleClick;
257
+ spread(_el$5, mergeProps({
258
+ get ["class"]() {
259
+ return local.class;
260
+ },
261
+ get disabled() {
262
+ return local.disabled;
263
+ },
264
+ get ["data-disabled"]() {
265
+ return local.disabled ? "" : void 0;
266
+ }
267
+ }, others), false, true);
268
+ insert(_el$5, () => local.children);
269
+ return _el$5;
270
+ })();
271
+ };
272
+ const MenubarSeparator = (props) => {
273
+ const [local, others] = splitProps(props, ["class"]);
274
+ return (() => {
275
+ var _el$6 = _tmpl$5();
276
+ spread(_el$6, mergeProps({
277
+ get ["class"]() {
278
+ return local.class;
279
+ }
280
+ }, others), false, false);
281
+ return _el$6;
282
+ })();
283
+ };
284
+ Menubar.Menu = MenubarMenu;
285
+ Menubar.Trigger = MenubarTrigger;
286
+ Menubar.Content = MenubarContent;
287
+ Menubar.Item = MenubarItem;
288
+ Menubar.Separator = MenubarSeparator;
289
+ delegateEvents(["click"]);
290
+ export {
291
+ Menubar,
292
+ MenubarContent,
293
+ MenubarItem,
294
+ MenubarMenu,
295
+ MenubarSeparator,
296
+ MenubarTrigger,
297
+ useMenubarContext
298
+ };
299
+ //# sourceMappingURL=Menubar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menubar.js","sources":["../../../src/components/Menubar/Menubar.tsx"],"sourcesContent":["import { splitProps, createSignal, createContext, useContext, Show, onMount, onCleanup, createEffect } from 'solid-js';\nimport { Portal, isServer } from 'solid-js/web';\nimport type { Component, JSX } from 'solid-js';\n\ninterface MenubarContextValue {\n value: () => string | undefined;\n setValue: (value: string | undefined) => void;\n triggerRefs: () => Map<string, HTMLElement>;\n setTriggerRef: (value: string, ref: HTMLElement | undefined) => void;\n setContentElement: (value: string, el: HTMLElement | undefined) => void;\n}\n\nconst MenubarContext = createContext<MenubarContextValue>();\n\nexport const useMenubarContext = () => {\n const context = useContext(MenubarContext);\n if (!context) {\n throw new Error('Menubar components must be used within Menubar');\n }\n return context;\n};\n\nexport interface MenubarProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 当前打开的值\n */\n value?: string;\n /**\n * 默认打开的值\n */\n defaultValue?: string;\n /**\n * 值变化回调\n */\n onValueChange?: (value: string | undefined) => void;\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nconst MenubarBase: Component<MenubarProps> = (props) => {\n const [local, others] = splitProps(props, [\n 'value',\n 'defaultValue',\n 'onValueChange',\n 'class',\n 'children',\n ]);\n\n const [internalValue, setInternalValue] = createSignal<string | undefined>(\n local.value ?? local.defaultValue\n );\n const [triggerRefs, setTriggerRefs] = createSignal<Map<string, HTMLElement>>(new Map());\n const contentElements = new Map<string, HTMLElement>();\n\n const isControlled = () => local.value !== undefined;\n const value = () => (isControlled() ? local.value : internalValue());\n\n const handleValueChange = (newValue: string | undefined) => {\n if (!isControlled()) {\n setInternalValue(newValue);\n }\n local.onValueChange?.(newValue);\n };\n\n const setTriggerRef = (menuValue: string, ref: HTMLElement | undefined) => {\n const refs = new Map(triggerRefs());\n if (ref) {\n refs.set(menuValue, ref);\n } else {\n refs.delete(menuValue);\n }\n setTriggerRefs(refs);\n };\n\n const setContentElement = (menuValue: string, el: HTMLElement | undefined) => {\n if (el) {\n contentElements.set(menuValue, el);\n } else {\n contentElements.delete(menuValue);\n }\n };\n\n // 点击外部关闭\n const handleClickOutside = (e: MouseEvent) => {\n const currentValue = value();\n if (currentValue && !isServer) {\n const target = e.target as HTMLElement;\n const trigger = triggerRefs().get(currentValue);\n const content = contentElements.get(currentValue);\n\n if (trigger && content) {\n if (!trigger.contains(target) && !content.contains(target)) {\n handleValueChange(undefined);\n }\n }\n }\n };\n\n // ESC 键关闭\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && value()) {\n handleValueChange(undefined);\n }\n };\n\n createEffect(() => {\n if (!isServer) {\n if (value()) {\n setTimeout(() => {\n document.addEventListener('keydown', handleKeyDown);\n document.addEventListener('mousedown', handleClickOutside);\n }, 0);\n } else {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('mousedown', handleClickOutside);\n }\n }\n });\n\n onCleanup(() => {\n if (!isServer) {\n document.removeEventListener('keydown', handleKeyDown);\n document.removeEventListener('mousedown', handleClickOutside);\n }\n });\n\n const contextValue: MenubarContextValue = {\n value,\n setValue: handleValueChange,\n triggerRefs,\n setTriggerRef,\n setContentElement,\n };\n\n return (\n <MenubarContext.Provider value={contextValue}>\n <div\n class={local.class}\n role=\"menubar\"\n {...others}\n >\n {local.children}\n </div>\n </MenubarContext.Provider>\n );\n};\n\nexport interface MenubarComponent extends Component<MenubarProps> {\n Menu: Component<MenubarMenuProps>;\n Trigger: Component<MenubarTriggerProps>;\n Content: Component<MenubarContentProps>;\n Item: Component<MenubarItemProps>;\n Separator: Component<MenubarSeparatorProps>;\n}\n\nexport const Menubar = Object.assign(MenubarBase, {\n Menu: null as unknown as Component<MenubarMenuProps>,\n Trigger: null as unknown as Component<MenubarTriggerProps>,\n Content: null as unknown as Component<MenubarContentProps>,\n Item: null as unknown as Component<MenubarItemProps>,\n Separator: null as unknown as Component<MenubarSeparatorProps>,\n}) as MenubarComponent;\n\nexport interface MenubarMenuProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 菜单的值\n */\n value: string;\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const MenubarMenu: Component<MenubarMenuProps> = (props) => {\n const [local, others] = splitProps(props, ['value', 'class', 'children']);\n\n return (\n <div\n class={local.class}\n data-value={local.value}\n {...others}\n >\n {local.children}\n </div>\n );\n};\n\nexport interface MenubarTriggerProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n /**\n * 是否作为子元素传递\n */\n asChild?: boolean;\n}\n\nexport const MenubarTrigger: Component<MenubarTriggerProps> = (props) => {\n const [local, others] = splitProps(props, ['children', 'asChild', 'class', 'onClick']);\n const context = useMenubarContext();\n let triggerElement: HTMLButtonElement | undefined;\n let menuValue: string | undefined;\n\n // 从父元素获取 value\n onMount(() => {\n if (triggerElement) {\n const parent = triggerElement.closest('[data-value]');\n if (parent) {\n menuValue = parent.getAttribute('data-value') || undefined;\n if (menuValue) {\n context.setTriggerRef(menuValue, triggerElement);\n }\n }\n }\n });\n\n const isOpen = () => context.value() === menuValue;\n\n const handleClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (e) => {\n if (typeof local.onClick === 'function') {\n local.onClick(e);\n }\n if (menuValue) {\n context.setValue(isOpen() ? undefined : menuValue);\n }\n };\n\n return (\n <button\n type=\"button\"\n ref={triggerElement}\n role=\"menuitem\"\n class={local.class}\n onClick={handleClick}\n aria-expanded={isOpen()}\n data-state={isOpen() ? 'open' : 'closed'}\n {...others}\n >\n {local.children}\n </button>\n );\n};\n\nexport interface MenubarContentProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const MenubarContent: Component<MenubarContentProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children'] as const);\n const context = useMenubarContext();\n let contentElement: HTMLDivElement | undefined;\n let menuValue: string | undefined;\n\n onMount(() => {\n if (contentElement) {\n const parent = contentElement.closest('[data-value]');\n if (parent) {\n menuValue = parent.getAttribute('data-value') || undefined;\n if (menuValue) {\n context.setContentElement(menuValue, contentElement);\n }\n }\n }\n });\n\n const isOpen = () => menuValue ? context.value() === menuValue : false;\n\n const updatePosition = () => {\n if (!isServer && contentElement && menuValue) {\n const trigger = context.triggerRefs().get(menuValue);\n if (trigger) {\n const rect = trigger.getBoundingClientRect();\n const contentRect = contentElement.getBoundingClientRect();\n\n const top = rect.bottom + 8;\n const left = rect.left;\n\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n let finalTop = top;\n let finalLeft = left;\n\n if (left + contentRect.width > viewportWidth) {\n finalLeft = viewportWidth - contentRect.width - 16;\n }\n\n if (top + contentRect.height > viewportHeight) {\n finalTop = rect.top - contentRect.height - 8;\n }\n\n contentElement.style.top = `${finalTop}px`;\n contentElement.style.left = `${finalLeft}px`;\n }\n }\n };\n\n createEffect(() => {\n if (isOpen() && !isServer) {\n requestAnimationFrame(() => {\n updatePosition();\n });\n }\n });\n\n return (\n <Show when={isOpen()}>\n <Portal mount={!isServer ? document.body : undefined}>\n <div\n ref={contentElement}\n role=\"menu\"\n class={`fixed z-50 ${local.class || ''}`}\n data-state={isOpen() ? 'open' : 'closed'}\n style={{ top: '0px', left: '0px' }}\n {...others}\n >\n {local.children}\n </div>\n </Portal>\n </Show>\n );\n};\n\nexport interface MenubarItemProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n /**\n * 是否禁用\n * @default false\n */\n disabled?: boolean;\n /**\n * 是否作为子元素传递\n */\n asChild?: boolean;\n}\n\nexport const MenubarItem: Component<MenubarItemProps> = (props) => {\n const [local, others] = splitProps(props, ['children', 'disabled', 'asChild', 'class', 'onClick']);\n\n const handleClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (e) => {\n if (local.disabled) {\n e.preventDefault();\n e.stopPropagation();\n return;\n }\n if (typeof local.onClick === 'function') {\n local.onClick(e);\n }\n };\n\n return (\n <button\n type=\"button\"\n role=\"menuitem\"\n class={local.class}\n disabled={local.disabled}\n onClick={handleClick}\n data-disabled={local.disabled ? '' : undefined}\n {...others}\n >\n {local.children}\n </button>\n );\n};\n\nexport interface MenubarSeparatorProps extends JSX.HTMLAttributes<HTMLHRElement> {\n}\n\nexport const MenubarSeparator: Component<MenubarSeparatorProps> = (props) => {\n const [local, others] = splitProps(props, ['class']);\n\n return (\n <hr\n role=\"separator\"\n class={local.class}\n {...others}\n />\n );\n};\n\nMenubar.Menu = MenubarMenu;\nMenubar.Trigger = MenubarTrigger;\nMenubar.Content = MenubarContent;\nMenubar.Item = MenubarItem;\nMenubar.Separator = MenubarSeparator;\n\n"],"names":["MenubarContext","createContext","useMenubarContext","context","useContext","Error","MenubarBase","props","local","others","splitProps","internalValue","setInternalValue","createSignal","value","defaultValue","triggerRefs","setTriggerRefs","Map","contentElements","isControlled","undefined","handleValueChange","newValue","onValueChange","setTriggerRef","menuValue","ref","refs","set","delete","setContentElement","el","handleClickOutside","e","currentValue","isServer","target","trigger","get","content","contains","handleKeyDown","key","createEffect","setTimeout","document","addEventListener","removeEventListener","onCleanup","contextValue","setValue","_$createComponent","Provider","children","_el$","_tmpl$","_$spread","_$mergeProps","class","_$insert","Menubar","Object","assign","Menu","Trigger","Content","Item","Separator","MenubarMenu","_el$2","_tmpl$2","MenubarTrigger","triggerElement","onMount","parent","closest","getAttribute","isOpen","handleClick","onClick","_el$3","_tmpl$3","$$click","_ref$","_$use","MenubarContent","contentElement","updatePosition","rect","getBoundingClientRect","contentRect","top","bottom","left","viewportWidth","window","innerWidth","viewportHeight","innerHeight","finalTop","finalLeft","width","height","style","requestAnimationFrame","Show","when","Portal","mount","body","_el$4","_tmpl$4","_ref$2","MenubarItem","disabled","preventDefault","stopPropagation","_el$5","MenubarSeparator","_el$6","_tmpl$5","_$delegateEvents"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './Menubar';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Menubar/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC"}
@@ -0,0 +1,105 @@
1
+ import { Component, JSX } from 'solid-js';
2
+ interface NavigationMenuContextValue {
3
+ value: () => string | undefined;
4
+ setValue: (value: string | undefined) => void;
5
+ triggerRefs: () => Map<string, HTMLElement>;
6
+ setTriggerRef: (value: string, ref: HTMLElement | undefined) => void;
7
+ setContentElement: (value: string, el: HTMLElement | undefined) => void;
8
+ }
9
+ export declare const useNavigationMenuContext: () => NavigationMenuContextValue;
10
+ export interface NavigationMenuProps extends JSX.HTMLAttributes<HTMLElement> {
11
+ /**
12
+ * 当前打开的值
13
+ */
14
+ value?: string;
15
+ /**
16
+ * 默认打开的值
17
+ */
18
+ defaultValue?: string;
19
+ /**
20
+ * 值变化回调
21
+ */
22
+ onValueChange?: (value: string | undefined) => void;
23
+ /**
24
+ * 方向
25
+ * @default 'horizontal'
26
+ */
27
+ orientation?: 'horizontal' | 'vertical';
28
+ /**
29
+ * 子元素
30
+ */
31
+ children?: JSX.Element;
32
+ }
33
+ export interface NavigationMenuComponent extends Component<NavigationMenuProps> {
34
+ List: Component<NavigationMenuListProps>;
35
+ Item: Component<NavigationMenuItemProps>;
36
+ Trigger: Component<NavigationMenuTriggerProps>;
37
+ Content: Component<NavigationMenuContentProps>;
38
+ Link: Component<NavigationMenuLinkProps>;
39
+ Indicator: Component<NavigationMenuIndicatorProps>;
40
+ Viewport: Component<NavigationMenuViewportProps>;
41
+ }
42
+ export declare const NavigationMenu: NavigationMenuComponent;
43
+ export interface NavigationMenuListProps extends JSX.HTMLAttributes<HTMLUListElement> {
44
+ /**
45
+ * 子元素
46
+ */
47
+ children?: JSX.Element;
48
+ }
49
+ export declare const NavigationMenuList: Component<NavigationMenuListProps>;
50
+ export interface NavigationMenuItemProps extends JSX.LiHTMLAttributes<HTMLLIElement> {
51
+ /**
52
+ * 项的值
53
+ */
54
+ value: string;
55
+ /**
56
+ * 子元素
57
+ */
58
+ children?: JSX.Element;
59
+ }
60
+ export declare const NavigationMenuItem: Component<NavigationMenuItemProps>;
61
+ export interface NavigationMenuTriggerProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {
62
+ /**
63
+ * 子元素
64
+ */
65
+ children?: JSX.Element;
66
+ /**
67
+ * 是否作为子元素传递
68
+ */
69
+ asChild?: boolean;
70
+ }
71
+ export declare const NavigationMenuTrigger: Component<NavigationMenuTriggerProps>;
72
+ export interface NavigationMenuContentProps extends JSX.HTMLAttributes<HTMLDivElement> {
73
+ /**
74
+ * 子元素
75
+ */
76
+ children?: JSX.Element;
77
+ }
78
+ export declare const NavigationMenuContent: Component<NavigationMenuContentProps>;
79
+ export interface NavigationMenuLinkProps extends JSX.AnchorHTMLAttributes<HTMLAnchorElement> {
80
+ /**
81
+ * 子元素
82
+ */
83
+ children?: JSX.Element;
84
+ /**
85
+ * 是否作为子元素传递
86
+ */
87
+ asChild?: boolean;
88
+ }
89
+ export declare const NavigationMenuLink: Component<NavigationMenuLinkProps>;
90
+ export interface NavigationMenuIndicatorProps extends JSX.HTMLAttributes<HTMLDivElement> {
91
+ /**
92
+ * 子元素
93
+ */
94
+ children?: JSX.Element;
95
+ }
96
+ export declare const NavigationMenuIndicator: Component<NavigationMenuIndicatorProps>;
97
+ export interface NavigationMenuViewportProps extends JSX.HTMLAttributes<HTMLDivElement> {
98
+ /**
99
+ * 子元素
100
+ */
101
+ children?: JSX.Element;
102
+ }
103
+ export declare const NavigationMenuViewport: Component<NavigationMenuViewportProps>;
104
+ export {};
105
+ //# sourceMappingURL=NavigationMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NavigationMenu.d.ts","sourceRoot":"","sources":["../../../src/components/NavigationMenu/NavigationMenu.tsx"],"names":[],"mappings":"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"}