@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,89 @@
1
+ import { Component, JSX } from 'solid-js';
2
+ interface ContextMenuContextValue {
3
+ open: () => boolean;
4
+ setOpen: (open: boolean) => void;
5
+ triggerRef: () => HTMLElement | undefined;
6
+ setTriggerRef: (ref: HTMLElement | undefined) => void;
7
+ setContentElement: (el: HTMLElement | undefined) => void;
8
+ position: () => {
9
+ x: number;
10
+ y: number;
11
+ } | undefined;
12
+ setPosition: (pos: {
13
+ x: number;
14
+ y: number;
15
+ } | undefined) => void;
16
+ }
17
+ export declare const useContextMenuContext: () => ContextMenuContextValue;
18
+ export interface ContextMenuProps extends JSX.HTMLAttributes<HTMLDivElement> {
19
+ /**
20
+ * 是否打开
21
+ */
22
+ open?: boolean;
23
+ /**
24
+ * 默认打开状态
25
+ */
26
+ defaultOpen?: boolean;
27
+ /**
28
+ * 打开状态变化回调
29
+ */
30
+ onOpenChange?: (open: boolean) => void;
31
+ /**
32
+ * 子元素
33
+ */
34
+ children?: JSX.Element;
35
+ }
36
+ export interface ContextMenuComponent extends Component<ContextMenuProps> {
37
+ Trigger: Component<ContextMenuTriggerProps>;
38
+ Content: Component<ContextMenuContentProps>;
39
+ Item: Component<ContextMenuItemProps>;
40
+ Label: Component<ContextMenuLabelProps>;
41
+ Separator: Component<ContextMenuSeparatorProps>;
42
+ }
43
+ export declare const ContextMenu: ContextMenuComponent;
44
+ export interface ContextMenuTriggerProps extends JSX.HTMLAttributes<HTMLDivElement> {
45
+ /**
46
+ * 子元素
47
+ */
48
+ children?: JSX.Element;
49
+ /**
50
+ * 是否作为子元素传递
51
+ */
52
+ asChild?: boolean;
53
+ }
54
+ export declare const ContextMenuTrigger: Component<ContextMenuTriggerProps>;
55
+ export interface ContextMenuContentProps extends JSX.HTMLAttributes<HTMLDivElement> {
56
+ /**
57
+ * 子元素
58
+ */
59
+ children?: JSX.Element;
60
+ }
61
+ export declare const ContextMenuContent: Component<ContextMenuContentProps>;
62
+ export interface ContextMenuItemProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {
63
+ /**
64
+ * 子元素
65
+ */
66
+ children?: JSX.Element;
67
+ /**
68
+ * 是否禁用
69
+ * @default false
70
+ */
71
+ disabled?: boolean;
72
+ /**
73
+ * 是否作为子元素传递
74
+ */
75
+ asChild?: boolean;
76
+ }
77
+ export declare const ContextMenuItem: Component<ContextMenuItemProps>;
78
+ export interface ContextMenuLabelProps extends JSX.HTMLAttributes<HTMLDivElement> {
79
+ /**
80
+ * 子元素
81
+ */
82
+ children?: JSX.Element;
83
+ }
84
+ export declare const ContextMenuLabel: Component<ContextMenuLabelProps>;
85
+ export interface ContextMenuSeparatorProps extends JSX.HTMLAttributes<HTMLHRElement> {
86
+ }
87
+ export declare const ContextMenuSeparator: Component<ContextMenuSeparatorProps>;
88
+ export {};
89
+ //# sourceMappingURL=ContextMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextMenu.d.ts","sourceRoot":"","sources":["../../../src/components/ContextMenu/ContextMenu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,263 @@
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>`), _tmpl$2 = /* @__PURE__ */ template(`<div role=menu>`), _tmpl$3 = /* @__PURE__ */ template(`<button type=button role=menuitem>`), _tmpl$4 = /* @__PURE__ */ template(`<div role=menuitem>`), _tmpl$5 = /* @__PURE__ */ template(`<hr role=separator>`);
4
+ const ContextMenuContext = createContext();
5
+ const useContextMenuContext = () => {
6
+ const context = useContext(ContextMenuContext);
7
+ if (!context) {
8
+ throw new Error("ContextMenu components must be used within ContextMenu");
9
+ }
10
+ return context;
11
+ };
12
+ const ContextMenuBase = (props) => {
13
+ const [local] = splitProps(props, ["open", "defaultOpen", "onOpenChange", "children"]);
14
+ const [internalOpen, setInternalOpen] = createSignal(local.open ?? local.defaultOpen ?? false);
15
+ const [triggerRef, setTriggerRef] = createSignal();
16
+ const [position, setPosition] = createSignal();
17
+ const isControlled = () => local.open !== void 0;
18
+ const open = () => isControlled() ? local.open : internalOpen();
19
+ const handleOpenChange = (newOpen) => {
20
+ if (!isControlled()) {
21
+ setInternalOpen(newOpen);
22
+ }
23
+ if (!newOpen) {
24
+ setPosition(void 0);
25
+ }
26
+ local.onOpenChange?.(newOpen);
27
+ };
28
+ let contentElement;
29
+ const setContentElement = (el) => {
30
+ contentElement = el;
31
+ };
32
+ const handleClickOutside = (e) => {
33
+ if (open() && !isServer) {
34
+ const target = e.target;
35
+ const trigger = triggerRef();
36
+ if (trigger && contentElement) {
37
+ if (!trigger.contains(target) && !contentElement.contains(target)) {
38
+ handleOpenChange(false);
39
+ }
40
+ }
41
+ }
42
+ };
43
+ const handleKeyDown = (e) => {
44
+ if (e.key === "Escape" && open()) {
45
+ handleOpenChange(false);
46
+ }
47
+ };
48
+ createEffect(() => {
49
+ if (!isServer) {
50
+ if (open()) {
51
+ setTimeout(() => {
52
+ document.addEventListener("keydown", handleKeyDown);
53
+ document.addEventListener("mousedown", handleClickOutside);
54
+ }, 0);
55
+ } else {
56
+ document.removeEventListener("keydown", handleKeyDown);
57
+ document.removeEventListener("mousedown", handleClickOutside);
58
+ }
59
+ }
60
+ });
61
+ onCleanup(() => {
62
+ if (!isServer) {
63
+ document.removeEventListener("keydown", handleKeyDown);
64
+ document.removeEventListener("mousedown", handleClickOutside);
65
+ }
66
+ });
67
+ const contextValue = {
68
+ open,
69
+ setOpen: handleOpenChange,
70
+ triggerRef,
71
+ setTriggerRef,
72
+ setContentElement,
73
+ position,
74
+ setPosition
75
+ };
76
+ return createComponent(ContextMenuContext.Provider, {
77
+ value: contextValue,
78
+ get children() {
79
+ return local.children;
80
+ }
81
+ });
82
+ };
83
+ const ContextMenu = Object.assign(ContextMenuBase, {
84
+ Trigger: null,
85
+ Content: null,
86
+ Item: null,
87
+ Label: null,
88
+ Separator: null
89
+ });
90
+ const ContextMenuTrigger = (props) => {
91
+ const [local, others] = splitProps(props, ["children", "asChild", "class", "onContextMenu"]);
92
+ const context = useContextMenuContext();
93
+ let triggerElement;
94
+ const handleContextMenu = (e) => {
95
+ if (typeof local.onContextMenu === "function") {
96
+ local.onContextMenu(e);
97
+ }
98
+ e.preventDefault();
99
+ const pos = {
100
+ x: e.clientX,
101
+ y: e.clientY
102
+ };
103
+ context.setPosition(pos);
104
+ context.setOpen(true);
105
+ };
106
+ onMount(() => {
107
+ if (triggerElement) {
108
+ context.setTriggerRef(triggerElement);
109
+ }
110
+ });
111
+ return (() => {
112
+ var _el$ = _tmpl$();
113
+ _el$.$$contextmenu = handleContextMenu;
114
+ var _ref$ = triggerElement;
115
+ typeof _ref$ === "function" ? use(_ref$, _el$) : triggerElement = _el$;
116
+ spread(_el$, mergeProps({
117
+ get ["class"]() {
118
+ return local.class;
119
+ }
120
+ }, others), false, true);
121
+ insert(_el$, () => local.children);
122
+ return _el$;
123
+ })();
124
+ };
125
+ const ContextMenuContent = (props) => {
126
+ const [local, others] = splitProps(props, ["class", "children"]);
127
+ const context = useContextMenuContext();
128
+ let contentElement;
129
+ const updatePosition = () => {
130
+ if (!isServer && contentElement && context.position()) {
131
+ const pos = context.position();
132
+ const contentRect = contentElement.getBoundingClientRect();
133
+ const viewportWidth = window.innerWidth;
134
+ const viewportHeight = window.innerHeight;
135
+ let finalTop = pos.y;
136
+ let finalLeft = pos.x;
137
+ if (pos.x + contentRect.width > viewportWidth) {
138
+ finalLeft = viewportWidth - contentRect.width - 16;
139
+ }
140
+ if (pos.y + contentRect.height > viewportHeight) {
141
+ finalTop = pos.y - contentRect.height;
142
+ }
143
+ contentElement.style.top = `${finalTop}px`;
144
+ contentElement.style.left = `${finalLeft}px`;
145
+ }
146
+ };
147
+ onMount(() => {
148
+ if (contentElement) {
149
+ context.setContentElement(contentElement);
150
+ }
151
+ });
152
+ createEffect(() => {
153
+ if (context.open() && !isServer && context.position()) {
154
+ requestAnimationFrame(() => {
155
+ updatePosition();
156
+ });
157
+ }
158
+ });
159
+ return createComponent(Show, {
160
+ get when() {
161
+ return context.open();
162
+ },
163
+ get children() {
164
+ return createComponent(Portal, {
165
+ get mount() {
166
+ return !isServer ? document.body : void 0;
167
+ },
168
+ get children() {
169
+ var _el$2 = _tmpl$2();
170
+ var _ref$2 = contentElement;
171
+ typeof _ref$2 === "function" ? use(_ref$2, _el$2) : contentElement = _el$2;
172
+ spread(_el$2, mergeProps({
173
+ get ["class"]() {
174
+ return `fixed z-50 ${local.class || ""}`;
175
+ },
176
+ get ["data-state"]() {
177
+ return context.open() ? "open" : "closed";
178
+ },
179
+ get style() {
180
+ return {
181
+ top: context.position() ? `${context.position().y}px` : "0px",
182
+ left: context.position() ? `${context.position().x}px` : "0px"
183
+ };
184
+ }
185
+ }, others), false, true);
186
+ insert(_el$2, () => local.children);
187
+ return _el$2;
188
+ }
189
+ });
190
+ }
191
+ });
192
+ };
193
+ const ContextMenuItem = (props) => {
194
+ const [local, others] = splitProps(props, ["children", "disabled", "asChild", "class", "onClick"]);
195
+ const handleClick = (e) => {
196
+ if (local.disabled) {
197
+ e.preventDefault();
198
+ e.stopPropagation();
199
+ return;
200
+ }
201
+ if (typeof local.onClick === "function") {
202
+ local.onClick(e);
203
+ }
204
+ };
205
+ return (() => {
206
+ var _el$3 = _tmpl$3();
207
+ _el$3.$$click = handleClick;
208
+ spread(_el$3, mergeProps({
209
+ get ["class"]() {
210
+ return local.class;
211
+ },
212
+ get disabled() {
213
+ return local.disabled;
214
+ },
215
+ get ["data-disabled"]() {
216
+ return local.disabled ? "" : void 0;
217
+ }
218
+ }, others), false, true);
219
+ insert(_el$3, () => local.children);
220
+ return _el$3;
221
+ })();
222
+ };
223
+ const ContextMenuLabel = (props) => {
224
+ const [local, others] = splitProps(props, ["children", "class"]);
225
+ return (() => {
226
+ var _el$4 = _tmpl$4();
227
+ spread(_el$4, mergeProps({
228
+ get ["class"]() {
229
+ return local.class;
230
+ }
231
+ }, others), false, true);
232
+ insert(_el$4, () => local.children);
233
+ return _el$4;
234
+ })();
235
+ };
236
+ const ContextMenuSeparator = (props) => {
237
+ const [local, others] = splitProps(props, ["class"]);
238
+ return (() => {
239
+ var _el$5 = _tmpl$5();
240
+ spread(_el$5, mergeProps({
241
+ get ["class"]() {
242
+ return local.class;
243
+ }
244
+ }, others), false, false);
245
+ return _el$5;
246
+ })();
247
+ };
248
+ ContextMenu.Trigger = ContextMenuTrigger;
249
+ ContextMenu.Content = ContextMenuContent;
250
+ ContextMenu.Item = ContextMenuItem;
251
+ ContextMenu.Label = ContextMenuLabel;
252
+ ContextMenu.Separator = ContextMenuSeparator;
253
+ delegateEvents(["contextmenu", "click"]);
254
+ export {
255
+ ContextMenu,
256
+ ContextMenuContent,
257
+ ContextMenuItem,
258
+ ContextMenuLabel,
259
+ ContextMenuSeparator,
260
+ ContextMenuTrigger,
261
+ useContextMenuContext
262
+ };
263
+ //# sourceMappingURL=ContextMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextMenu.js","sources":["../../../src/components/ContextMenu/ContextMenu.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 ContextMenuContextValue {\n open: () => boolean;\n setOpen: (open: boolean) => void;\n triggerRef: () => HTMLElement | undefined;\n setTriggerRef: (ref: HTMLElement | undefined) => void;\n setContentElement: (el: HTMLElement | undefined) => void;\n position: () => { x: number; y: number } | undefined;\n setPosition: (pos: { x: number; y: number } | undefined) => void;\n}\n\nconst ContextMenuContext = createContext<ContextMenuContextValue>();\n\nexport const useContextMenuContext = () => {\n const context = useContext(ContextMenuContext);\n if (!context) {\n throw new Error('ContextMenu components must be used within ContextMenu');\n }\n return context;\n};\n\nexport interface ContextMenuProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 是否打开\n */\n open?: boolean;\n /**\n * 默认打开状态\n */\n defaultOpen?: boolean;\n /**\n * 打开状态变化回调\n */\n onOpenChange?: (open: boolean) => void;\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nconst ContextMenuBase: Component<ContextMenuProps> = (props) => {\n const [local] = splitProps(props, [\n 'open',\n 'defaultOpen',\n 'onOpenChange',\n 'children',\n ]);\n\n const [internalOpen, setInternalOpen] = createSignal(\n local.open ?? local.defaultOpen ?? false\n );\n const [triggerRef, setTriggerRef] = createSignal<HTMLElement | undefined>();\n const [position, setPosition] = createSignal<{ x: number; y: number } | undefined>();\n\n const isControlled = () => local.open !== undefined;\n const open = () => (isControlled() ? local.open! : internalOpen());\n\n const handleOpenChange = (newOpen: boolean) => {\n if (!isControlled()) {\n setInternalOpen(newOpen);\n }\n if (!newOpen) {\n setPosition(undefined);\n }\n local.onOpenChange?.(newOpen);\n };\n\n // 点击外部关闭\n let contentElement: HTMLElement | undefined;\n const setContentElement = (el: HTMLElement | undefined) => {\n contentElement = el;\n };\n\n const handleClickOutside = (e: MouseEvent) => {\n if (open() && !isServer) {\n const target = e.target as HTMLElement;\n const trigger = triggerRef();\n\n if (trigger && contentElement) {\n if (!trigger.contains(target) && !contentElement.contains(target)) {\n handleOpenChange(false);\n }\n }\n }\n };\n\n // ESC 键关闭\n const handleKeyDown = (e: KeyboardEvent) => {\n if (e.key === 'Escape' && open()) {\n handleOpenChange(false);\n }\n };\n\n createEffect(() => {\n if (!isServer) {\n if (open()) {\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: ContextMenuContextValue = {\n open,\n setOpen: handleOpenChange,\n triggerRef,\n setTriggerRef,\n setContentElement,\n position,\n setPosition,\n };\n\n return (\n <ContextMenuContext.Provider value={contextValue}>\n {local.children}\n </ContextMenuContext.Provider>\n );\n};\n\nexport interface ContextMenuComponent extends Component<ContextMenuProps> {\n Trigger: Component<ContextMenuTriggerProps>;\n Content: Component<ContextMenuContentProps>;\n Item: Component<ContextMenuItemProps>;\n Label: Component<ContextMenuLabelProps>;\n Separator: Component<ContextMenuSeparatorProps>;\n}\n\nexport const ContextMenu = Object.assign(ContextMenuBase, {\n Trigger: null as unknown as Component<ContextMenuTriggerProps>,\n Content: null as unknown as Component<ContextMenuContentProps>,\n Item: null as unknown as Component<ContextMenuItemProps>,\n Label: null as unknown as Component<ContextMenuLabelProps>,\n Separator: null as unknown as Component<ContextMenuSeparatorProps>,\n}) as ContextMenuComponent;\n\nexport interface ContextMenuTriggerProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n /**\n * 是否作为子元素传递\n */\n asChild?: boolean;\n}\n\nexport const ContextMenuTrigger: Component<ContextMenuTriggerProps> = (props) => {\n const [local, others] = splitProps(props, ['children', 'asChild', 'class', 'onContextMenu']);\n const context = useContextMenuContext();\n let triggerElement: HTMLDivElement | undefined;\n\n const handleContextMenu: JSX.EventHandler<HTMLDivElement, MouseEvent> = (e) => {\n if (typeof local.onContextMenu === 'function') {\n local.onContextMenu(e as any);\n }\n e.preventDefault();\n const pos = { x: e.clientX, y: e.clientY };\n context.setPosition(pos);\n context.setOpen(true);\n };\n\n onMount(() => {\n if (triggerElement) {\n context.setTriggerRef(triggerElement);\n }\n });\n\n return (\n <div\n ref={triggerElement}\n class={local.class}\n onContextMenu={handleContextMenu}\n {...others}\n >\n {local.children}\n </div>\n );\n};\n\nexport interface ContextMenuContentProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const ContextMenuContent: Component<ContextMenuContentProps> = (props) => {\n const [local, others] = splitProps(props, ['class', 'children'] as const);\n const context = useContextMenuContext();\n let contentElement: HTMLDivElement | undefined;\n\n const updatePosition = () => {\n if (!isServer && contentElement && context.position()) {\n const pos = context.position()!;\n const contentRect = contentElement.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n let finalTop = pos.y;\n let finalLeft = pos.x;\n\n // 如果右侧超出,则左对齐\n if (pos.x + contentRect.width > viewportWidth) {\n finalLeft = viewportWidth - contentRect.width - 16;\n }\n\n // 如果下方超出,则在上方显示\n if (pos.y + contentRect.height > viewportHeight) {\n finalTop = pos.y - contentRect.height;\n }\n\n contentElement.style.top = `${finalTop}px`;\n contentElement.style.left = `${finalLeft}px`;\n }\n };\n\n onMount(() => {\n if (contentElement) {\n context.setContentElement(contentElement);\n }\n });\n\n createEffect(() => {\n if (context.open() && !isServer && context.position()) {\n requestAnimationFrame(() => {\n updatePosition();\n });\n }\n });\n\n return (\n <Show when={context.open()}>\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={context.open() ? 'open' : 'closed'}\n style={{\n top: context.position() ? `${context.position()!.y}px` : '0px',\n left: context.position() ? `${context.position()!.x}px` : '0px',\n }}\n {...others}\n >\n {local.children}\n </div>\n </Portal>\n </Show>\n );\n};\n\nexport interface ContextMenuItemProps 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 ContextMenuItem: Component<ContextMenuItemProps> = (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 ContextMenuLabelProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const ContextMenuLabel: Component<ContextMenuLabelProps> = (props) => {\n const [local, others] = splitProps(props, ['children', 'class']);\n\n return (\n <div\n role=\"menuitem\"\n class={local.class}\n {...others}\n >\n {local.children}\n </div>\n );\n};\n\nexport interface ContextMenuSeparatorProps extends JSX.HTMLAttributes<HTMLHRElement> {\n}\n\nexport const ContextMenuSeparator: Component<ContextMenuSeparatorProps> = (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\nContextMenu.Trigger = ContextMenuTrigger;\nContextMenu.Content = ContextMenuContent;\nContextMenu.Item = ContextMenuItem;\nContextMenu.Label = ContextMenuLabel;\nContextMenu.Separator = ContextMenuSeparator;\n\n"],"names":["ContextMenuContext","createContext","useContextMenuContext","context","useContext","Error","ContextMenuBase","props","local","splitProps","internalOpen","setInternalOpen","createSignal","open","defaultOpen","triggerRef","setTriggerRef","position","setPosition","isControlled","undefined","handleOpenChange","newOpen","onOpenChange","contentElement","setContentElement","el","handleClickOutside","e","isServer","target","trigger","contains","handleKeyDown","key","createEffect","setTimeout","document","addEventListener","removeEventListener","onCleanup","contextValue","setOpen","_$createComponent","Provider","value","children","ContextMenu","Object","assign","Trigger","Content","Item","Label","Separator","ContextMenuTrigger","others","triggerElement","handleContextMenu","onContextMenu","preventDefault","pos","x","clientX","y","clientY","onMount","_el$","_tmpl$","$$contextmenu","_ref$","_$use","_$spread","_$mergeProps","class","_$insert","ContextMenuContent","updatePosition","contentRect","getBoundingClientRect","viewportWidth","window","innerWidth","viewportHeight","innerHeight","finalTop","finalLeft","width","height","style","top","left","requestAnimationFrame","Show","when","Portal","mount","body","_el$2","_tmpl$2","_ref$2","ContextMenuItem","handleClick","disabled","stopPropagation","onClick","_el$3","_tmpl$3","$$click","ContextMenuLabel","_el$4","_tmpl$4","ContextMenuSeparator","_el$5","_tmpl$5","_$delegateEvents"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './ContextMenu';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ContextMenu/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
@@ -0,0 +1,87 @@
1
+ import { Component, JSX } from 'solid-js';
2
+ interface DialogContextValue {
3
+ open: () => boolean;
4
+ setOpen: (open: boolean) => void;
5
+ modal: boolean;
6
+ }
7
+ export declare const useDialogContext: () => DialogContextValue;
8
+ export interface DialogProps extends JSX.HTMLAttributes<HTMLDivElement> {
9
+ /**
10
+ * 是否打开
11
+ */
12
+ open?: boolean;
13
+ /**
14
+ * 默认打开状态
15
+ */
16
+ defaultOpen?: boolean;
17
+ /**
18
+ * 打开状态变化回调
19
+ */
20
+ onOpenChange?: (open: boolean) => void;
21
+ /**
22
+ * 是否模态对话框
23
+ * @default true
24
+ */
25
+ modal?: boolean;
26
+ /**
27
+ * 子元素
28
+ */
29
+ children?: JSX.Element;
30
+ }
31
+ export interface DialogComponent extends Component<DialogProps> {
32
+ Trigger: Component<DialogTriggerProps>;
33
+ Overlay: Component<DialogOverlayProps>;
34
+ Content: Component<DialogContentProps>;
35
+ Title: Component<DialogTitleProps>;
36
+ Description: Component<DialogDescriptionProps>;
37
+ Close: Component<DialogCloseProps>;
38
+ }
39
+ export declare const Dialog: DialogComponent;
40
+ export interface DialogTriggerProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {
41
+ /**
42
+ * 子元素
43
+ */
44
+ children?: JSX.Element;
45
+ /**
46
+ * 对话框实例(通过 asChild 模式传递)
47
+ */
48
+ asChild?: boolean;
49
+ }
50
+ export declare const DialogTrigger: Component<DialogTriggerProps>;
51
+ export interface DialogContentProps extends JSX.HTMLAttributes<HTMLDivElement> {
52
+ /**
53
+ * 子元素
54
+ */
55
+ children?: JSX.Element;
56
+ }
57
+ export interface DialogOverlayProps extends JSX.HTMLAttributes<HTMLDivElement> {
58
+ /**
59
+ * 子元素
60
+ */
61
+ children?: JSX.Element;
62
+ }
63
+ export declare const DialogOverlay: Component<DialogOverlayProps>;
64
+ export declare const DialogContent: Component<DialogContentProps>;
65
+ export interface DialogTitleProps extends JSX.HTMLAttributes<HTMLHeadingElement> {
66
+ /**
67
+ * 标题文本
68
+ */
69
+ children?: JSX.Element;
70
+ }
71
+ export declare const DialogTitle: Component<DialogTitleProps>;
72
+ export interface DialogDescriptionProps extends JSX.HTMLAttributes<HTMLParagraphElement> {
73
+ /**
74
+ * 描述文本
75
+ */
76
+ children?: JSX.Element;
77
+ }
78
+ export declare const DialogDescription: Component<DialogDescriptionProps>;
79
+ export interface DialogCloseProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {
80
+ /**
81
+ * 子元素
82
+ */
83
+ children?: JSX.Element;
84
+ }
85
+ export declare const DialogClose: Component<DialogCloseProps>;
86
+ export {};
87
+ //# sourceMappingURL=Dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../src/components/Dialog/Dialog.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/C,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,OAAO,CAAC;IACpB,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC;CAChB;AAID,eAAO,MAAM,gBAAgB,0BAM5B,CAAC;AAEF,MAAM,WAAW,WAAY,SAAQ,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC;IACrE;;OAEG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACxB;AAyED,MAAM,WAAW,eAAgB,SAAQ,SAAS,CAAC,WAAW,CAAC;IAC7D,OAAO,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACvC,OAAO,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACvC,OAAO,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACvC,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACnC,WAAW,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAC/C,KAAK,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;CACpC;AAED,eAAO,MAAM,MAAM,EAOb,eAAe,CAAC;AAEtB,MAAM,WAAW,kBACf,SAAQ,GAAG,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IACnD;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,kBAAkB,CAqBvD,CAAC;AAEF,MAAM,WAAW,kBAAmB,SAAQ,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5E;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAmB,SAAQ,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5E;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,kBAAkB,CAwBvD,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,SAAS,CAAC,kBAAkB,CAoBvD,CAAC;AAEF,MAAM,WAAW,gBACf,SAAQ,GAAG,CAAC,cAAc,CAAC,kBAAkB,CAAC;IAC9C;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,gBAAgB,CAQnD,CAAC;AAEF,MAAM,WAAW,sBACf,SAAQ,GAAG,CAAC,cAAc,CAAC,oBAAoB,CAAC;IAChD;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,iBAAiB,EAAE,SAAS,CAAC,sBAAsB,CAQ/D,CAAC;AAEF,MAAM,WAAW,gBACf,SAAQ,GAAG,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IACnD;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,gBAAgB,CAgBnD,CAAC"}