@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.
- package/dist/components/Accordion/Accordion.d.ts +79 -0
- package/dist/components/Accordion/Accordion.d.ts.map +1 -0
- package/dist/components/Accordion/Accordion.js +193 -0
- package/dist/components/Accordion/Accordion.js.map +1 -0
- package/dist/components/Accordion/index.d.ts +2 -0
- package/dist/components/Accordion/index.d.ts.map +1 -0
- package/dist/components/AlertDialog/AlertDialog.d.ts +89 -0
- package/dist/components/AlertDialog/AlertDialog.d.ts.map +1 -0
- package/dist/components/AlertDialog/AlertDialog.js +235 -0
- package/dist/components/AlertDialog/AlertDialog.js.map +1 -0
- package/dist/components/AlertDialog/index.d.ts +2 -0
- package/dist/components/AlertDialog/index.d.ts.map +1 -0
- package/dist/components/AspectRatio/AspectRatio.d.ts +14 -0
- package/dist/components/AspectRatio/AspectRatio.d.ts.map +1 -0
- package/dist/components/AspectRatio/AspectRatio.js +25 -0
- package/dist/components/AspectRatio/AspectRatio.js.map +1 -0
- package/dist/components/AspectRatio/index.d.ts +2 -0
- package/dist/components/AspectRatio/index.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.d.ts +41 -0
- package/dist/components/Avatar/Avatar.d.ts.map +1 -0
- package/dist/components/Avatar/Avatar.js +144 -0
- package/dist/components/Avatar/Avatar.js.map +1 -0
- package/dist/components/Avatar/index.d.ts +2 -0
- package/dist/components/Avatar/index.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +27 -0
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -0
- package/dist/components/Checkbox/Checkbox.js +49 -0
- package/dist/components/Checkbox/Checkbox.js.map +1 -0
- package/dist/components/Checkbox/index.d.ts +2 -0
- package/dist/components/Checkbox/index.d.ts.map +1 -0
- package/dist/components/Collapsible/Collapsible.d.ts +54 -0
- package/dist/components/Collapsible/Collapsible.d.ts.map +1 -0
- package/dist/components/Collapsible/Collapsible.js +110 -0
- package/dist/components/Collapsible/Collapsible.js.map +1 -0
- package/dist/components/Collapsible/index.d.ts +2 -0
- package/dist/components/Collapsible/index.d.ts.map +1 -0
- package/dist/components/ContextMenu/ContextMenu.d.ts +89 -0
- package/dist/components/ContextMenu/ContextMenu.d.ts.map +1 -0
- package/dist/components/ContextMenu/ContextMenu.js +263 -0
- package/dist/components/ContextMenu/ContextMenu.js.map +1 -0
- package/dist/components/ContextMenu/index.d.ts +2 -0
- package/dist/components/ContextMenu/index.d.ts.map +1 -0
- package/dist/components/Dialog/Dialog.d.ts +87 -0
- package/dist/components/Dialog/Dialog.d.ts.map +1 -0
- package/dist/components/Dialog/Dialog.js +218 -0
- package/dist/components/Dialog/Dialog.js.map +1 -0
- package/dist/components/Dialog/index.d.ts +2 -0
- package/dist/components/Dialog/index.d.ts.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +81 -0
- package/dist/components/DropdownMenu/DropdownMenu.d.ts.map +1 -0
- package/dist/components/DropdownMenu/DropdownMenu.js +244 -0
- package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -0
- package/dist/components/DropdownMenu/index.d.ts +2 -0
- package/dist/components/DropdownMenu/index.d.ts.map +1 -0
- package/dist/components/HoverCard/HoverCard.d.ts +63 -0
- package/dist/components/HoverCard/HoverCard.d.ts.map +1 -0
- package/dist/components/HoverCard/HoverCard.js +199 -0
- package/dist/components/HoverCard/HoverCard.js.map +1 -0
- package/dist/components/HoverCard/index.d.ts +2 -0
- package/dist/components/HoverCard/index.d.ts.map +1 -0
- package/dist/components/Label/Label.d.ts +14 -0
- package/dist/components/Label/Label.d.ts.map +1 -0
- package/dist/components/Label/Label.js +23 -0
- package/dist/components/Label/Label.js.map +1 -0
- package/dist/components/Label/index.d.ts +2 -0
- package/dist/components/Label/index.d.ts.map +1 -0
- package/dist/components/Menubar/Menubar.d.ts +85 -0
- package/dist/components/Menubar/Menubar.d.ts.map +1 -0
- package/dist/components/Menubar/Menubar.js +299 -0
- package/dist/components/Menubar/Menubar.js.map +1 -0
- package/dist/components/Menubar/index.d.ts +2 -0
- package/dist/components/Menubar/index.d.ts.map +1 -0
- package/dist/components/NavigationMenu/NavigationMenu.d.ts +105 -0
- package/dist/components/NavigationMenu/NavigationMenu.d.ts.map +1 -0
- package/dist/components/NavigationMenu/NavigationMenu.js +320 -0
- package/dist/components/NavigationMenu/NavigationMenu.js.map +1 -0
- package/dist/components/NavigationMenu/index.d.ts +2 -0
- package/dist/components/NavigationMenu/index.d.ts.map +1 -0
- package/dist/components/Popover/Popover.d.ts +52 -0
- package/dist/components/Popover/Popover.d.ts.map +1 -0
- package/dist/components/Popover/Popover.js +176 -0
- package/dist/components/Popover/Popover.js.map +1 -0
- package/dist/components/Popover/index.d.ts +2 -0
- package/dist/components/Popover/index.d.ts.map +1 -0
- package/dist/components/Progress/Progress.d.ts +19 -0
- package/dist/components/Progress/Progress.d.ts.map +1 -0
- package/dist/components/Progress/Progress.js +44 -0
- package/dist/components/Progress/Progress.js.map +1 -0
- package/dist/components/Progress/index.d.ts +2 -0
- package/dist/components/Progress/index.d.ts.map +1 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts +54 -0
- package/dist/components/RadioGroup/RadioGroup.d.ts.map +1 -0
- package/dist/components/RadioGroup/RadioGroup.js +100 -0
- package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
- package/dist/components/RadioGroup/index.d.ts +2 -0
- package/dist/components/RadioGroup/index.d.ts.map +1 -0
- package/dist/components/ScrollArea/ScrollArea.d.ts +58 -0
- package/dist/components/ScrollArea/ScrollArea.d.ts.map +1 -0
- package/dist/components/ScrollArea/ScrollArea.js +91 -0
- package/dist/components/ScrollArea/ScrollArea.js.map +1 -0
- package/dist/components/ScrollArea/index.d.ts +2 -0
- package/dist/components/ScrollArea/index.d.ts.map +1 -0
- package/dist/components/Select/Select.d.ts +80 -0
- package/dist/components/Select/Select.d.ts.map +1 -0
- package/dist/components/Select/Select.js +240 -0
- package/dist/components/Select/Select.js.map +1 -0
- package/dist/components/Select/index.d.ts +2 -0
- package/dist/components/Select/index.d.ts.map +1 -0
- package/dist/components/Separator/Separator.d.ts +15 -0
- package/dist/components/Separator/Separator.d.ts.map +1 -0
- package/dist/components/Separator/Separator.js +30 -0
- package/dist/components/Separator/Separator.js.map +1 -0
- package/dist/components/Separator/index.d.ts +2 -0
- package/dist/components/Separator/index.d.ts.map +1 -0
- package/dist/components/Slider/Slider.d.ts +37 -0
- package/dist/components/Slider/Slider.d.ts.map +1 -0
- package/dist/components/Slider/Slider.js +63 -0
- package/dist/components/Slider/Slider.js.map +1 -0
- package/dist/components/Slider/index.d.ts +2 -0
- package/dist/components/Slider/index.d.ts.map +1 -0
- package/dist/components/Switch/Switch.d.ts +27 -0
- package/dist/components/Switch/Switch.d.ts.map +1 -0
- package/dist/components/Switch/Switch.js +50 -0
- package/dist/components/Switch/Switch.js.map +1 -0
- package/dist/components/Switch/index.d.ts +2 -0
- package/dist/components/Switch/index.d.ts.map +1 -0
- package/dist/components/Tabs/Tabs.d.ts +72 -0
- package/dist/components/Tabs/Tabs.d.ts.map +1 -0
- package/dist/components/Tabs/Tabs.js +150 -0
- package/dist/components/Tabs/Tabs.js.map +1 -0
- package/dist/components/Tabs/index.d.ts +2 -0
- package/dist/components/Tabs/index.d.ts.map +1 -0
- package/dist/components/Toggle/Toggle.d.ts +22 -0
- package/dist/components/Toggle/Toggle.d.ts.map +1 -0
- package/dist/components/Toggle/Toggle.js +51 -0
- package/dist/components/Toggle/Toggle.js.map +1 -0
- package/dist/components/Toggle/index.d.ts +2 -0
- package/dist/components/Toggle/index.d.ts.map +1 -0
- package/dist/components/ToggleGroup/ToggleGroup.d.ts +67 -0
- package/dist/components/ToggleGroup/ToggleGroup.d.ts.map +1 -0
- package/dist/components/ToggleGroup/ToggleGroup.js +119 -0
- package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -0
- package/dist/components/ToggleGroup/index.d.ts +2 -0
- package/dist/components/ToggleGroup/index.d.ts.map +1 -0
- package/dist/components/Toolbar/Toolbar.d.ts +82 -0
- package/dist/components/Toolbar/Toolbar.d.ts.map +1 -0
- package/dist/components/Toolbar/Toolbar.js +110 -0
- package/dist/components/Toolbar/Toolbar.js.map +1 -0
- package/dist/components/Toolbar/index.d.ts +2 -0
- package/dist/components/Toolbar/index.d.ts.map +1 -0
- package/dist/components/Tooltip/Tooltip.d.ts +56 -0
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -0
- package/dist/components/Tooltip/Tooltip.js +155 -0
- package/dist/components/Tooltip/Tooltip.js.map +1 -0
- package/dist/components/Tooltip/index.d.ts +2 -0
- package/dist/components/Tooltip/index.d.ts.map +1 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts +9 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.js +23 -0
- package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -0
- package/dist/components/VisuallyHidden/index.d.ts +2 -0
- package/dist/components/VisuallyHidden/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +28 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +140 -0
- package/dist/index.js.map +1 -0
- package/package.json +97 -0
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { delegateEvents, createComponent, template, spread, mergeProps, insert, memo } from "solid-js/web";
|
|
2
|
+
import { createContext, splitProps, createSignal, useContext } from "solid-js";
|
|
3
|
+
var _tmpl$ = /* @__PURE__ */ template(`<div>`), _tmpl$2 = /* @__PURE__ */ template(`<div role=tablist>`), _tmpl$3 = /* @__PURE__ */ template(`<button type=button role=tab>`), _tmpl$4 = /* @__PURE__ */ template(`<div role=tabpanel>`);
|
|
4
|
+
const TabsContext = createContext();
|
|
5
|
+
const useTabsContext = () => {
|
|
6
|
+
const context = useContext(TabsContext);
|
|
7
|
+
if (!context) {
|
|
8
|
+
throw new Error("Tabs components must be used within Tabs");
|
|
9
|
+
}
|
|
10
|
+
return context;
|
|
11
|
+
};
|
|
12
|
+
const TabsBase = (props) => {
|
|
13
|
+
const [local, others] = splitProps(props, ["value", "defaultValue", "onValueChange", "orientation", "class", "children"]);
|
|
14
|
+
const [internalValue, setInternalValue] = createSignal(local.value ?? local.defaultValue);
|
|
15
|
+
const isControlled = () => local.value !== void 0;
|
|
16
|
+
const value = () => isControlled() ? local.value : internalValue();
|
|
17
|
+
const handleValueChange = (newValue) => {
|
|
18
|
+
if (!isControlled()) {
|
|
19
|
+
setInternalValue(newValue);
|
|
20
|
+
}
|
|
21
|
+
local.onValueChange?.(newValue);
|
|
22
|
+
};
|
|
23
|
+
const contextValue = {
|
|
24
|
+
value,
|
|
25
|
+
setValue: handleValueChange,
|
|
26
|
+
orientation: local.orientation ?? "horizontal"
|
|
27
|
+
};
|
|
28
|
+
return createComponent(TabsContext.Provider, {
|
|
29
|
+
value: contextValue,
|
|
30
|
+
get children() {
|
|
31
|
+
var _el$ = _tmpl$();
|
|
32
|
+
spread(_el$, mergeProps({
|
|
33
|
+
get ["class"]() {
|
|
34
|
+
return local.class;
|
|
35
|
+
},
|
|
36
|
+
get ["data-orientation"]() {
|
|
37
|
+
return contextValue.orientation;
|
|
38
|
+
}
|
|
39
|
+
}, others), false, true);
|
|
40
|
+
insert(_el$, () => local.children);
|
|
41
|
+
return _el$;
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
const Tabs = Object.assign(TabsBase, {
|
|
46
|
+
List: null,
|
|
47
|
+
Trigger: null,
|
|
48
|
+
Content: null
|
|
49
|
+
});
|
|
50
|
+
const TabsList = (props) => {
|
|
51
|
+
const [local, others] = splitProps(props, ["children", "class"]);
|
|
52
|
+
const context = useTabsContext();
|
|
53
|
+
return (() => {
|
|
54
|
+
var _el$2 = _tmpl$2();
|
|
55
|
+
spread(_el$2, mergeProps({
|
|
56
|
+
get ["class"]() {
|
|
57
|
+
return local.class;
|
|
58
|
+
},
|
|
59
|
+
get ["aria-orientation"]() {
|
|
60
|
+
return context.orientation;
|
|
61
|
+
},
|
|
62
|
+
get ["data-orientation"]() {
|
|
63
|
+
return context.orientation;
|
|
64
|
+
}
|
|
65
|
+
}, others), false, true);
|
|
66
|
+
insert(_el$2, () => local.children);
|
|
67
|
+
return _el$2;
|
|
68
|
+
})();
|
|
69
|
+
};
|
|
70
|
+
const TabsTrigger = (props) => {
|
|
71
|
+
const [local, others] = splitProps(props, ["value", "disabled", "children", "class", "onClick"]);
|
|
72
|
+
const context = useTabsContext();
|
|
73
|
+
const isActive = () => context.value() === local.value;
|
|
74
|
+
const handleClick = (e) => {
|
|
75
|
+
if (typeof local.onClick === "function") {
|
|
76
|
+
local.onClick(e);
|
|
77
|
+
}
|
|
78
|
+
if (!local.disabled) {
|
|
79
|
+
context.setValue(local.value);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
return (() => {
|
|
83
|
+
var _el$3 = _tmpl$3();
|
|
84
|
+
_el$3.$$click = handleClick;
|
|
85
|
+
spread(_el$3, mergeProps({
|
|
86
|
+
get ["class"]() {
|
|
87
|
+
return local.class;
|
|
88
|
+
},
|
|
89
|
+
get disabled() {
|
|
90
|
+
return local.disabled;
|
|
91
|
+
},
|
|
92
|
+
get ["aria-selected"]() {
|
|
93
|
+
return isActive();
|
|
94
|
+
},
|
|
95
|
+
get ["aria-controls"]() {
|
|
96
|
+
return `tabpanel-${local.value}`;
|
|
97
|
+
},
|
|
98
|
+
get ["data-state"]() {
|
|
99
|
+
return isActive() ? "active" : "inactive";
|
|
100
|
+
},
|
|
101
|
+
get ["data-disabled"]() {
|
|
102
|
+
return local.disabled ? "" : void 0;
|
|
103
|
+
}
|
|
104
|
+
}, others), false, true);
|
|
105
|
+
insert(_el$3, () => local.children);
|
|
106
|
+
return _el$3;
|
|
107
|
+
})();
|
|
108
|
+
};
|
|
109
|
+
const TabsContent = (props) => {
|
|
110
|
+
const [local, others] = splitProps(props, ["value", "children", "class"]);
|
|
111
|
+
const context = useTabsContext();
|
|
112
|
+
const isActive = () => context.value() === local.value;
|
|
113
|
+
return (() => {
|
|
114
|
+
var _el$4 = _tmpl$4();
|
|
115
|
+
spread(_el$4, mergeProps({
|
|
116
|
+
get id() {
|
|
117
|
+
return `tabpanel-${local.value}`;
|
|
118
|
+
},
|
|
119
|
+
get ["class"]() {
|
|
120
|
+
return local.class;
|
|
121
|
+
},
|
|
122
|
+
get ["aria-labelledby"]() {
|
|
123
|
+
return `tab-${local.value}`;
|
|
124
|
+
},
|
|
125
|
+
get hidden() {
|
|
126
|
+
return !isActive();
|
|
127
|
+
},
|
|
128
|
+
get ["data-state"]() {
|
|
129
|
+
return isActive() ? "active" : "inactive";
|
|
130
|
+
}
|
|
131
|
+
}, others), false, true);
|
|
132
|
+
insert(_el$4, (() => {
|
|
133
|
+
var _c$ = memo(() => !!isActive());
|
|
134
|
+
return () => _c$() && local.children;
|
|
135
|
+
})());
|
|
136
|
+
return _el$4;
|
|
137
|
+
})();
|
|
138
|
+
};
|
|
139
|
+
Tabs.List = TabsList;
|
|
140
|
+
Tabs.Trigger = TabsTrigger;
|
|
141
|
+
Tabs.Content = TabsContent;
|
|
142
|
+
delegateEvents(["click"]);
|
|
143
|
+
export {
|
|
144
|
+
Tabs,
|
|
145
|
+
TabsContent,
|
|
146
|
+
TabsList,
|
|
147
|
+
TabsTrigger,
|
|
148
|
+
useTabsContext
|
|
149
|
+
};
|
|
150
|
+
//# sourceMappingURL=Tabs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tabs.js","sources":["../../../src/components/Tabs/Tabs.tsx"],"sourcesContent":["import { createContext, createSignal, splitProps, useContext } from \"solid-js\";\nimport type { Component, JSX } from \"solid-js\";\n\ninterface TabsContextValue {\n value: () => string | undefined;\n setValue: (value: string) => void;\n orientation?: \"horizontal\" | \"vertical\";\n}\n\nconst TabsContext = createContext<TabsContextValue>();\n\nexport const useTabsContext = () => {\n const context = useContext(TabsContext);\n if (!context) {\n throw new Error(\"Tabs components must be used within Tabs\");\n }\n return context;\n};\n\nexport interface TabsProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 当前激活的标签页值\n */\n value?: string;\n /**\n * 默认激活的标签页值\n */\n defaultValue?: string;\n /**\n * 值变化回调\n */\n onValueChange?: (value: string) => void;\n /**\n * 标签页方向\n * @default 'horizontal'\n */\n orientation?: \"horizontal\" | \"vertical\";\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nconst TabsBase: Component<TabsProps> = (props) => {\n const [local, others] = splitProps(props, [\n \"value\",\n \"defaultValue\",\n \"onValueChange\",\n \"orientation\",\n \"class\",\n \"children\",\n ]);\n\n const [internalValue, setInternalValue] = createSignal<string | undefined>(\n local.value ?? local.defaultValue,\n );\n\n const isControlled = () => local.value !== undefined;\n const value = () => (isControlled() ? local.value : internalValue());\n\n const handleValueChange = (newValue: string) => {\n if (!isControlled()) {\n setInternalValue(newValue);\n }\n local.onValueChange?.(newValue);\n };\n\n const contextValue: TabsContextValue = {\n value,\n setValue: handleValueChange,\n orientation: local.orientation ?? \"horizontal\",\n };\n\n return (\n <TabsContext.Provider value={contextValue}>\n <div\n class={local.class}\n data-orientation={contextValue.orientation}\n {...others}\n >\n {local.children}\n </div>\n </TabsContext.Provider>\n );\n};\n\nexport interface TabsComponent extends Component<TabsProps> {\n List: Component<TabsListProps>;\n Trigger: Component<TabsTriggerProps>;\n Content: Component<TabsContentProps>;\n}\n\nexport const Tabs = Object.assign(TabsBase, {\n List: null as unknown as Component<TabsListProps>,\n Trigger: null as unknown as Component<TabsTriggerProps>,\n Content: null as unknown as Component<TabsContentProps>,\n}) as TabsComponent;\n\nexport interface TabsListProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const TabsList: Component<TabsListProps> = (props) => {\n const [local, others] = splitProps(props, [\"children\", \"class\"]);\n const context = useTabsContext();\n\n return (\n <div\n role=\"tablist\"\n class={local.class}\n aria-orientation={context.orientation}\n data-orientation={context.orientation}\n {...others}\n >\n {local.children}\n </div>\n );\n};\n\nexport interface TabsTriggerProps\n extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * 标签页的值\n */\n value: string;\n /**\n * 是否禁用\n * @default false\n */\n disabled?: boolean;\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const TabsTrigger: Component<TabsTriggerProps> = (props) => {\n const [local, others] = splitProps(props, [\n \"value\",\n \"disabled\",\n \"children\",\n \"class\",\n \"onClick\",\n ]);\n const context = useTabsContext();\n\n const isActive = () => context.value() === local.value;\n\n const handleClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (e) => {\n if (typeof local.onClick === \"function\") {\n local.onClick(e);\n }\n if (!local.disabled) {\n context.setValue(local.value);\n }\n };\n\n return (\n <button\n type=\"button\"\n role=\"tab\"\n class={local.class}\n disabled={local.disabled}\n aria-selected={isActive()}\n aria-controls={`tabpanel-${local.value}`}\n data-state={isActive() ? \"active\" : \"inactive\"}\n data-disabled={local.disabled ? \"\" : undefined}\n onClick={handleClick}\n {...others}\n >\n {local.children}\n </button>\n );\n};\n\nexport interface TabsContentProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 内容对应的标签页值\n */\n value: string;\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nexport const TabsContent: Component<TabsContentProps> = (props) => {\n const [local, others] = splitProps(props, [\"value\", \"children\", \"class\"]);\n const context = useTabsContext();\n\n const isActive = () => context.value() === local.value;\n\n return (\n <div\n role=\"tabpanel\"\n id={`tabpanel-${local.value}`}\n class={local.class}\n aria-labelledby={`tab-${local.value}`}\n hidden={!isActive()}\n data-state={isActive() ? \"active\" : \"inactive\"}\n {...others}\n >\n {isActive() && local.children}\n </div>\n );\n};\n\nTabs.List = TabsList;\nTabs.Trigger = TabsTrigger;\nTabs.Content = TabsContent;\n"],"names":["TabsContext","createContext","useTabsContext","context","useContext","Error","TabsBase","props","local","others","splitProps","internalValue","setInternalValue","createSignal","value","defaultValue","isControlled","undefined","handleValueChange","newValue","onValueChange","contextValue","setValue","orientation","_$createComponent","Provider","children","_el$","_tmpl$","_$spread","_$mergeProps","class","_$insert","Tabs","Object","assign","List","Trigger","Content","TabsList","_el$2","_tmpl$2","TabsTrigger","isActive","handleClick","e","onClick","disabled","_el$3","_tmpl$3","$$click","TabsContent","_el$4","_tmpl$4","id","hidden","_c$","_$memo","_$delegateEvents"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Tabs/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Component, JSX } from 'solid-js';
|
|
2
|
+
export interface ToggleProps extends Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {
|
|
3
|
+
/**
|
|
4
|
+
* 是否按下
|
|
5
|
+
*/
|
|
6
|
+
pressed?: boolean;
|
|
7
|
+
/**
|
|
8
|
+
* 默认按下状态
|
|
9
|
+
*/
|
|
10
|
+
defaultPressed?: boolean;
|
|
11
|
+
/**
|
|
12
|
+
* 按下状态变化回调
|
|
13
|
+
*/
|
|
14
|
+
onPressedChange?: (pressed: boolean) => void;
|
|
15
|
+
/**
|
|
16
|
+
* 是否禁用
|
|
17
|
+
* @default false
|
|
18
|
+
*/
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare const Toggle: Component<ToggleProps>;
|
|
22
|
+
//# sourceMappingURL=Toggle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toggle.d.ts","sourceRoot":"","sources":["../../../src/components/Toggle/Toggle.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEpC,MAAM,WAAW,WAAY,SAAQ,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IAChG;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,MAAM,EAAE,SAAS,CAAC,WAAW,CAoDzC,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { delegateEvents, template, spread, mergeProps, insert } from "solid-js/web";
|
|
2
|
+
import { splitProps, createSignal } from "solid-js";
|
|
3
|
+
var _tmpl$ = /* @__PURE__ */ template(`<button type=button role=switch>`);
|
|
4
|
+
const Toggle = (props) => {
|
|
5
|
+
const [local, others] = splitProps(props, ["pressed", "defaultPressed", "onPressedChange", "disabled", "class", "children", "onClick"]);
|
|
6
|
+
const [internalPressed, setInternalPressed] = createSignal(local.pressed ?? local.defaultPressed ?? false);
|
|
7
|
+
const isControlled = () => local.pressed !== void 0;
|
|
8
|
+
const pressed = () => isControlled() ? local.pressed : internalPressed();
|
|
9
|
+
const handleClick = (e) => {
|
|
10
|
+
if (local.disabled) {
|
|
11
|
+
e.preventDefault();
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (typeof local.onClick === "function") {
|
|
15
|
+
local.onClick(e);
|
|
16
|
+
}
|
|
17
|
+
const newPressed = !pressed();
|
|
18
|
+
if (!isControlled()) {
|
|
19
|
+
setInternalPressed(newPressed);
|
|
20
|
+
}
|
|
21
|
+
local.onPressedChange?.(newPressed);
|
|
22
|
+
};
|
|
23
|
+
return (() => {
|
|
24
|
+
var _el$ = _tmpl$();
|
|
25
|
+
_el$.$$click = handleClick;
|
|
26
|
+
spread(_el$, mergeProps({
|
|
27
|
+
get ["aria-pressed"]() {
|
|
28
|
+
return pressed();
|
|
29
|
+
},
|
|
30
|
+
get disabled() {
|
|
31
|
+
return local.disabled;
|
|
32
|
+
},
|
|
33
|
+
get ["class"]() {
|
|
34
|
+
return local.class;
|
|
35
|
+
},
|
|
36
|
+
get ["data-state"]() {
|
|
37
|
+
return pressed() ? "on" : "off";
|
|
38
|
+
},
|
|
39
|
+
get ["data-disabled"]() {
|
|
40
|
+
return local.disabled ? "" : void 0;
|
|
41
|
+
}
|
|
42
|
+
}, others), false, true);
|
|
43
|
+
insert(_el$, () => local.children);
|
|
44
|
+
return _el$;
|
|
45
|
+
})();
|
|
46
|
+
};
|
|
47
|
+
delegateEvents(["click"]);
|
|
48
|
+
export {
|
|
49
|
+
Toggle
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=Toggle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toggle.js","sources":["../../../src/components/Toggle/Toggle.tsx"],"sourcesContent":["import { splitProps, createSignal } from 'solid-js';\nimport type { Component } from 'solid-js';\nimport type { JSX } from 'solid-js';\n\nexport interface ToggleProps extends Omit<JSX.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'> {\n /**\n * 是否按下\n */\n pressed?: boolean;\n /**\n * 默认按下状态\n */\n defaultPressed?: boolean;\n /**\n * 按下状态变化回调\n */\n onPressedChange?: (pressed: boolean) => void;\n /**\n * 是否禁用\n * @default false\n */\n disabled?: boolean;\n}\n\nexport const Toggle: Component<ToggleProps> = (props) => {\n const [local, others] = splitProps(props, [\n 'pressed',\n 'defaultPressed',\n 'onPressedChange',\n 'disabled',\n 'class',\n 'children',\n 'onClick',\n ]);\n\n const [internalPressed, setInternalPressed] = createSignal(\n local.pressed ?? local.defaultPressed ?? false\n );\n\n const isControlled = () => local.pressed !== undefined;\n const pressed = () => (isControlled() ? local.pressed! : internalPressed());\n\n const handleClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (e) => {\n if (local.disabled) {\n e.preventDefault();\n return;\n }\n\n if (typeof local.onClick === 'function') {\n local.onClick(e);\n }\n\n const newPressed = !pressed();\n \n if (!isControlled()) {\n setInternalPressed(newPressed);\n }\n \n local.onPressedChange?.(newPressed);\n };\n\n return (\n <button\n type=\"button\"\n role=\"switch\"\n aria-pressed={pressed()}\n disabled={local.disabled}\n class={local.class}\n onClick={handleClick}\n data-state={pressed() ? 'on' : 'off'}\n data-disabled={local.disabled ? '' : undefined}\n {...others}\n >\n {local.children}\n </button>\n );\n};\n\n"],"names":["Toggle","props","local","others","splitProps","internalPressed","setInternalPressed","createSignal","pressed","defaultPressed","isControlled","undefined","handleClick","e","disabled","preventDefault","onClick","newPressed","onPressedChange","_el$","_tmpl$","$$click","_$spread","_$mergeProps","class","_$insert","children","_$delegateEvents"],"mappings":";;;AAwBO,MAAMA,SAAkCC,CAAAA,UAAU;AACvD,QAAM,CAACC,OAAOC,MAAM,IAAIC,WAAWH,OAAO,CACxC,WACA,kBACA,mBACA,YACA,SACA,YACA,SAAS,CACV;AAED,QAAM,CAACI,iBAAiBC,kBAAkB,IAAIC,aAC5CL,MAAMM,WAAWN,MAAMO,kBAAkB,KAC3C;AAEA,QAAMC,eAAeA,MAAMR,MAAMM,YAAYG;AAC7C,QAAMH,UAAUA,MAAOE,aAAAA,IAAiBR,MAAMM,UAAWH,gBAAAA;AAEzD,QAAMO,cAAgEC,CAAAA,MAAM;AAC1E,QAAIX,MAAMY,UAAU;AAClBD,QAAEE,eAAAA;AACF;AAAA,IACF;AAEA,QAAI,OAAOb,MAAMc,YAAY,YAAY;AACvCd,YAAMc,QAAQH,CAAC;AAAA,IACjB;AAEA,UAAMI,aAAa,CAACT,QAAAA;AAEpB,QAAI,CAACE,gBAAgB;AACnBJ,yBAAmBW,UAAU;AAAA,IAC/B;AAEAf,UAAMgB,kBAAkBD,UAAU;AAAA,EACpC;AAEA,UAAA,MAAA;AAAA,QAAAE,OAAAC,OAAAA;AAAAD,SAAAE,UAOaT;AAAWU,WAAAH,MAAAI,WAAA;AAAA,MAAA,KAAA,cAAA,IAAA;AAAA,eAHNf,QAAAA;AAAAA,MAAS;AAAA,MAAA,IACvBM,WAAQ;AAAA,eAAEZ,MAAMY;AAAAA,MAAQ;AAAA,MAAA,KAAA,OAAA,IAAA;AAAA,eACjBZ,MAAMsB;AAAAA,MAAK;AAAA,MAAA,KAAA,YAAA,IAAA;AAAA,eAENhB,QAAAA,IAAY,OAAO;AAAA,MAAK;AAAA,MAAA,KAAA,eAAA,IAAA;AAAA,eACrBN,MAAMY,WAAW,KAAKH;AAAAA,MAAS;AAAA,IAAA,GAC1CR,MAAM,GAAA,OAAA,IAAA;AAAAsB,WAAAN,MAAA,MAETjB,MAAMwB,QAAQ;AAAA,WAAAP;AAAAA,EAAA,GAAA;AAGrB;AAAEQ,eAAA,CAAA,OAAA,CAAA;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/Toggle/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Component, JSX } from 'solid-js';
|
|
2
|
+
interface ToggleGroupContextValue {
|
|
3
|
+
value: () => string | string[] | undefined;
|
|
4
|
+
setValue: (value: string) => void;
|
|
5
|
+
type: 'single' | 'multiple';
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare const useToggleGroupContext: () => ToggleGroupContextValue;
|
|
9
|
+
export interface ToggleGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
10
|
+
/**
|
|
11
|
+
* 当前选中的值(单个或数组)
|
|
12
|
+
*/
|
|
13
|
+
value?: string | string[];
|
|
14
|
+
/**
|
|
15
|
+
* 默认选中的值
|
|
16
|
+
*/
|
|
17
|
+
defaultValue?: string | string[];
|
|
18
|
+
/**
|
|
19
|
+
* 值变化回调
|
|
20
|
+
*/
|
|
21
|
+
onValueChange?: (value: string | string[]) => void;
|
|
22
|
+
/**
|
|
23
|
+
* 类型:单个或多个
|
|
24
|
+
* @default 'single'
|
|
25
|
+
*/
|
|
26
|
+
type?: 'single' | 'multiple';
|
|
27
|
+
/**
|
|
28
|
+
* 是否禁用
|
|
29
|
+
* @default false
|
|
30
|
+
*/
|
|
31
|
+
disabled?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* 是否不允许取消选中(仅 single 类型)
|
|
34
|
+
* @default false
|
|
35
|
+
*/
|
|
36
|
+
rovingFocus?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* 子元素
|
|
39
|
+
*/
|
|
40
|
+
children?: JSX.Element;
|
|
41
|
+
}
|
|
42
|
+
export interface ToggleGroupComponent extends Component<ToggleGroupProps> {
|
|
43
|
+
Item: Component<ToggleGroupItemProps>;
|
|
44
|
+
}
|
|
45
|
+
export declare const ToggleGroup: ToggleGroupComponent;
|
|
46
|
+
export interface ToggleGroupItemProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
47
|
+
/**
|
|
48
|
+
* 项的值
|
|
49
|
+
*/
|
|
50
|
+
value: string;
|
|
51
|
+
/**
|
|
52
|
+
* 是否禁用
|
|
53
|
+
* @default false
|
|
54
|
+
*/
|
|
55
|
+
disabled?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* 子元素
|
|
58
|
+
*/
|
|
59
|
+
children?: JSX.Element;
|
|
60
|
+
/**
|
|
61
|
+
* 是否作为子元素传递
|
|
62
|
+
*/
|
|
63
|
+
asChild?: boolean;
|
|
64
|
+
}
|
|
65
|
+
export declare const ToggleGroupItem: Component<ToggleGroupItemProps>;
|
|
66
|
+
export {};
|
|
67
|
+
//# sourceMappingURL=ToggleGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleGroup.d.ts","sourceRoot":"","sources":["../../../src/components/ToggleGroup/ToggleGroup.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/C,UAAU,uBAAuB;IAC/B,KAAK,EAAE,MAAM,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC;IAC3C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAID,eAAO,MAAM,qBAAqB,+BAMjC,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC;IAC1E;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACxB;AA0ED,MAAM,WAAW,oBAAqB,SAAQ,SAAS,CAAC,gBAAgB,CAAC;IACvE,IAAI,EAAE,SAAS,CAAC,oBAAoB,CAAC,CAAC;CACvC;AAED,eAAO,MAAM,WAAW,EAElB,oBAAoB,CAAC;AAE3B,MAAM,WAAW,oBAAqB,SAAQ,GAAG,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IACvF;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IACvB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,eAAe,EAAE,SAAS,CAAC,oBAAoB,CA6C3D,CAAC"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { delegateEvents, createComponent, template, spread, mergeProps, insert } from "solid-js/web";
|
|
2
|
+
import { createContext, splitProps, createSignal, useContext } from "solid-js";
|
|
3
|
+
var _tmpl$ = /* @__PURE__ */ template(`<div role=group>`), _tmpl$2 = /* @__PURE__ */ template(`<button type=button role=button>`);
|
|
4
|
+
const ToggleGroupContext = createContext();
|
|
5
|
+
const useToggleGroupContext = () => {
|
|
6
|
+
const context = useContext(ToggleGroupContext);
|
|
7
|
+
if (!context) {
|
|
8
|
+
throw new Error("ToggleGroup.Item must be used within ToggleGroup");
|
|
9
|
+
}
|
|
10
|
+
return context;
|
|
11
|
+
};
|
|
12
|
+
const ToggleGroupBase = (props) => {
|
|
13
|
+
const [local, others] = splitProps(props, ["value", "defaultValue", "onValueChange", "type", "disabled", "rovingFocus", "class", "children"]);
|
|
14
|
+
const type = () => local.type ?? "single";
|
|
15
|
+
const [internalValue, setInternalValue] = createSignal(local.value ?? local.defaultValue);
|
|
16
|
+
const isControlled = () => local.value !== void 0;
|
|
17
|
+
const value = () => isControlled() ? local.value : internalValue();
|
|
18
|
+
const handleValueChange = (itemValue) => {
|
|
19
|
+
if (local.disabled) return;
|
|
20
|
+
const currentValue = value();
|
|
21
|
+
let newValue;
|
|
22
|
+
if (type() === "single") {
|
|
23
|
+
if (currentValue === itemValue && local.rovingFocus !== true) {
|
|
24
|
+
newValue = "";
|
|
25
|
+
} else {
|
|
26
|
+
newValue = itemValue;
|
|
27
|
+
}
|
|
28
|
+
} else {
|
|
29
|
+
const currentArray = Array.isArray(currentValue) ? currentValue : currentValue ? [currentValue] : [];
|
|
30
|
+
const index = currentArray.indexOf(itemValue);
|
|
31
|
+
if (index > -1) {
|
|
32
|
+
newValue = currentArray.filter((v) => v !== itemValue);
|
|
33
|
+
} else {
|
|
34
|
+
newValue = [...currentArray, itemValue];
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
if (!isControlled()) {
|
|
38
|
+
setInternalValue(newValue);
|
|
39
|
+
}
|
|
40
|
+
local.onValueChange?.(newValue);
|
|
41
|
+
};
|
|
42
|
+
const contextValue = {
|
|
43
|
+
value,
|
|
44
|
+
setValue: handleValueChange,
|
|
45
|
+
type: type(),
|
|
46
|
+
disabled: local.disabled
|
|
47
|
+
};
|
|
48
|
+
return createComponent(ToggleGroupContext.Provider, {
|
|
49
|
+
value: contextValue,
|
|
50
|
+
get children() {
|
|
51
|
+
var _el$ = _tmpl$();
|
|
52
|
+
spread(_el$, mergeProps({
|
|
53
|
+
get ["class"]() {
|
|
54
|
+
return local.class;
|
|
55
|
+
},
|
|
56
|
+
get ["data-disabled"]() {
|
|
57
|
+
return local.disabled ? "" : void 0;
|
|
58
|
+
}
|
|
59
|
+
}, others), false, true);
|
|
60
|
+
insert(_el$, () => local.children);
|
|
61
|
+
return _el$;
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
const ToggleGroup = Object.assign(ToggleGroupBase, {
|
|
66
|
+
Item: null
|
|
67
|
+
});
|
|
68
|
+
const ToggleGroupItem = (props) => {
|
|
69
|
+
const [local, others] = splitProps(props, ["value", "disabled", "asChild", "children", "class", "onClick"]);
|
|
70
|
+
const context = useToggleGroupContext();
|
|
71
|
+
const isSelected = () => {
|
|
72
|
+
const currentValue = context.value();
|
|
73
|
+
if (context.type === "single") {
|
|
74
|
+
return currentValue === local.value;
|
|
75
|
+
} else {
|
|
76
|
+
const currentArray = Array.isArray(currentValue) ? currentValue : [];
|
|
77
|
+
return currentArray.includes(local.value);
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
const handleClick = (e) => {
|
|
81
|
+
if (typeof local.onClick === "function") {
|
|
82
|
+
local.onClick(e);
|
|
83
|
+
}
|
|
84
|
+
if (!local.disabled && !context.disabled) {
|
|
85
|
+
context.setValue(local.value);
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
return (() => {
|
|
89
|
+
var _el$2 = _tmpl$2();
|
|
90
|
+
_el$2.$$click = handleClick;
|
|
91
|
+
spread(_el$2, mergeProps({
|
|
92
|
+
get ["class"]() {
|
|
93
|
+
return local.class;
|
|
94
|
+
},
|
|
95
|
+
get disabled() {
|
|
96
|
+
return local.disabled || context.disabled;
|
|
97
|
+
},
|
|
98
|
+
get ["aria-pressed"]() {
|
|
99
|
+
return isSelected();
|
|
100
|
+
},
|
|
101
|
+
get ["data-state"]() {
|
|
102
|
+
return isSelected() ? "on" : "off";
|
|
103
|
+
},
|
|
104
|
+
get ["data-disabled"]() {
|
|
105
|
+
return local.disabled || context.disabled ? "" : void 0;
|
|
106
|
+
}
|
|
107
|
+
}, others), false, true);
|
|
108
|
+
insert(_el$2, () => local.children);
|
|
109
|
+
return _el$2;
|
|
110
|
+
})();
|
|
111
|
+
};
|
|
112
|
+
ToggleGroup.Item = ToggleGroupItem;
|
|
113
|
+
delegateEvents(["click"]);
|
|
114
|
+
export {
|
|
115
|
+
ToggleGroup,
|
|
116
|
+
ToggleGroupItem,
|
|
117
|
+
useToggleGroupContext
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=ToggleGroup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleGroup.js","sources":["../../../src/components/ToggleGroup/ToggleGroup.tsx"],"sourcesContent":["import { splitProps, createSignal, createContext, useContext } from 'solid-js';\nimport type { Component, JSX } from 'solid-js';\n\ninterface ToggleGroupContextValue {\n value: () => string | string[] | undefined;\n setValue: (value: string) => void;\n type: 'single' | 'multiple';\n disabled?: boolean;\n}\n\nconst ToggleGroupContext = createContext<ToggleGroupContextValue>();\n\nexport const useToggleGroupContext = () => {\n const context = useContext(ToggleGroupContext);\n if (!context) {\n throw new Error('ToggleGroup.Item must be used within ToggleGroup');\n }\n return context;\n};\n\nexport interface ToggleGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {\n /**\n * 当前选中的值(单个或数组)\n */\n value?: string | string[];\n /**\n * 默认选中的值\n */\n defaultValue?: string | string[];\n /**\n * 值变化回调\n */\n onValueChange?: (value: string | string[]) => void;\n /**\n * 类型:单个或多个\n * @default 'single'\n */\n type?: 'single' | 'multiple';\n /**\n * 是否禁用\n * @default false\n */\n disabled?: boolean;\n /**\n * 是否不允许取消选中(仅 single 类型)\n * @default false\n */\n rovingFocus?: boolean;\n /**\n * 子元素\n */\n children?: JSX.Element;\n}\n\nconst ToggleGroupBase: Component<ToggleGroupProps> = (props) => {\n const [local, others] = splitProps(props, [\n 'value',\n 'defaultValue',\n 'onValueChange',\n 'type',\n 'disabled',\n 'rovingFocus',\n 'class',\n 'children',\n ]);\n\n const type = () => local.type ?? 'single';\n\n const [internalValue, setInternalValue] = createSignal<string | string[] | undefined>(\n local.value ?? local.defaultValue\n );\n\n const isControlled = () => local.value !== undefined;\n const value = () => (isControlled() ? local.value : internalValue());\n\n const handleValueChange = (itemValue: string) => {\n if (local.disabled) return;\n\n const currentValue = value();\n let newValue: string | string[];\n\n if (type() === 'single') {\n // 单个模式:如果点击的是已选中的项,则取消选中;否则选中该项\n if (currentValue === itemValue && local.rovingFocus !== true) {\n newValue = '';\n } else {\n newValue = itemValue;\n }\n } else {\n // 多个模式:切换该项的选中状态\n const currentArray = Array.isArray(currentValue) ? currentValue : currentValue ? [currentValue] : [];\n const index = currentArray.indexOf(itemValue);\n if (index > -1) {\n newValue = currentArray.filter((v) => v !== itemValue);\n } else {\n newValue = [...currentArray, itemValue];\n }\n }\n\n if (!isControlled()) {\n setInternalValue(newValue);\n }\n local.onValueChange?.(newValue);\n };\n\n const contextValue: ToggleGroupContextValue = {\n value,\n setValue: handleValueChange,\n type: type(),\n disabled: local.disabled,\n };\n\n return (\n <ToggleGroupContext.Provider value={contextValue}>\n <div\n class={local.class}\n role=\"group\"\n data-disabled={local.disabled ? '' : undefined}\n {...others}\n >\n {local.children}\n </div>\n </ToggleGroupContext.Provider>\n );\n};\n\nexport interface ToggleGroupComponent extends Component<ToggleGroupProps> {\n Item: Component<ToggleGroupItemProps>;\n}\n\nexport const ToggleGroup = Object.assign(ToggleGroupBase, {\n Item: null as unknown as Component<ToggleGroupItemProps>,\n}) as ToggleGroupComponent;\n\nexport interface ToggleGroupItemProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {\n /**\n * 项的值\n */\n value: string;\n /**\n * 是否禁用\n * @default false\n */\n disabled?: boolean;\n /**\n * 子元素\n */\n children?: JSX.Element;\n /**\n * 是否作为子元素传递\n */\n asChild?: boolean;\n}\n\nexport const ToggleGroupItem: Component<ToggleGroupItemProps> = (props) => {\n const [local, others] = splitProps(props, [\n 'value',\n 'disabled',\n 'asChild',\n 'children',\n 'class',\n 'onClick',\n ]);\n const context = useToggleGroupContext();\n\n const isSelected = () => {\n const currentValue = context.value();\n if (context.type === 'single') {\n return currentValue === local.value;\n } else {\n const currentArray = Array.isArray(currentValue) ? currentValue : [];\n return currentArray.includes(local.value);\n }\n };\n\n const handleClick: JSX.EventHandler<HTMLButtonElement, MouseEvent> = (e) => {\n if (typeof local.onClick === 'function') {\n local.onClick(e);\n }\n if (!local.disabled && !context.disabled) {\n context.setValue(local.value);\n }\n };\n\n return (\n <button\n type=\"button\"\n role=\"button\"\n class={local.class}\n disabled={local.disabled || context.disabled}\n onClick={handleClick}\n aria-pressed={isSelected()}\n data-state={isSelected() ? 'on' : 'off'}\n data-disabled={local.disabled || context.disabled ? '' : undefined}\n {...others}\n >\n {local.children}\n </button>\n );\n};\n\nToggleGroup.Item = ToggleGroupItem;\n\n"],"names":["ToggleGroupContext","createContext","useToggleGroupContext","context","useContext","Error","ToggleGroupBase","props","local","others","splitProps","type","internalValue","setInternalValue","createSignal","value","defaultValue","isControlled","undefined","handleValueChange","itemValue","disabled","currentValue","newValue","rovingFocus","currentArray","Array","isArray","index","indexOf","filter","v","onValueChange","contextValue","setValue","_$createComponent","Provider","children","_el$","_tmpl$","_$spread","_$mergeProps","class","_$insert","ToggleGroup","Object","assign","Item","ToggleGroupItem","isSelected","includes","handleClick","e","onClick","_el$2","_tmpl$2","$$click","_$delegateEvents"],"mappings":";;;AAUA,MAAMA,qBAAqBC,cAAAA;AAEpB,MAAMC,wBAAwBA,MAAM;AACzC,QAAMC,UAAUC,WAAWJ,kBAAkB;AAC7C,MAAI,CAACG,SAAS;AACZ,UAAM,IAAIE,MAAM,kDAAkD;AAAA,EACpE;AACA,SAAOF;AACT;AAoCA,MAAMG,kBAAgDC,CAAAA,UAAU;AAC9D,QAAM,CAACC,OAAOC,MAAM,IAAIC,WAAWH,OAAO,CACxC,SACA,gBACA,iBACA,QACA,YACA,eACA,SACA,UAAU,CACX;AAED,QAAMI,OAAOA,MAAMH,MAAMG,QAAQ;AAEjC,QAAM,CAACC,eAAeC,gBAAgB,IAAIC,aACxCN,MAAMO,SAASP,MAAMQ,YACvB;AAEA,QAAMC,eAAeA,MAAMT,MAAMO,UAAUG;AAC3C,QAAMH,QAAQA,MAAOE,aAAAA,IAAiBT,MAAMO,QAAQH,cAAAA;AAEpD,QAAMO,oBAAoBA,CAACC,cAAsB;AAC/C,QAAIZ,MAAMa,SAAU;AAEpB,UAAMC,eAAeP,MAAAA;AACrB,QAAIQ;AAEJ,QAAIZ,KAAAA,MAAW,UAAU;AAEvB,UAAIW,iBAAiBF,aAAaZ,MAAMgB,gBAAgB,MAAM;AAC5DD,mBAAW;AAAA,MACb,OAAO;AACLA,mBAAWH;AAAAA,MACb;AAAA,IACF,OAAO;AAEL,YAAMK,eAAeC,MAAMC,QAAQL,YAAY,IAAIA,eAAeA,eAAe,CAACA,YAAY,IAAI,CAAA;AAClG,YAAMM,QAAQH,aAAaI,QAAQT,SAAS;AAC5C,UAAIQ,QAAQ,IAAI;AACdL,mBAAWE,aAAaK,OAAQC,CAAAA,MAAMA,MAAMX,SAAS;AAAA,MACvD,OAAO;AACLG,mBAAW,CAAC,GAAGE,cAAcL,SAAS;AAAA,MACxC;AAAA,IACF;AAEA,QAAI,CAACH,gBAAgB;AACnBJ,uBAAiBU,QAAQ;AAAA,IAC3B;AACAf,UAAMwB,gBAAgBT,QAAQ;AAAA,EAChC;AAEA,QAAMU,eAAwC;AAAA,IAC5ClB;AAAAA,IACAmB,UAAUf;AAAAA,IACVR,MAAMA,KAAAA;AAAAA,IACNU,UAAUb,MAAMa;AAAAA,EAAAA;AAGlB,SAAAc,gBACGnC,mBAAmBoC,UAAQ;AAAA,IAACrB,OAAOkB;AAAAA,IAAY,IAAAI,WAAA;AAAA,UAAAC,OAAAC,OAAAA;AAAAC,aAAAF,MAAAG,WAAA;AAAA,QAAA,KAAA,OAAA,IAAA;AAAA,iBAErCjC,MAAMkC;AAAAA,QAAK;AAAA,QAAA,KAAA,eAAA,IAAA;AAAA,iBAEHlC,MAAMa,WAAW,KAAKH;AAAAA,QAAS;AAAA,MAAA,GAC1CT,MAAM,GAAA,OAAA,IAAA;AAAAkC,aAAAL,MAAA,MAET9B,MAAM6B,QAAQ;AAAA,aAAAC;AAAAA,IAAA;AAAA,EAAA,CAAA;AAIvB;AAMO,MAAMM,cAAcC,OAAOC,OAAOxC,iBAAiB;AAAA,EACxDyC,MAAM;AACR,CAAC;AAsBM,MAAMC,kBAAoDzC,CAAAA,UAAU;AACzE,QAAM,CAACC,OAAOC,MAAM,IAAIC,WAAWH,OAAO,CACxC,SACA,YACA,WACA,YACA,SACA,SAAS,CACV;AACD,QAAMJ,UAAUD,sBAAAA;AAEhB,QAAM+C,aAAaA,MAAM;AACvB,UAAM3B,eAAenB,QAAQY,MAAAA;AAC7B,QAAIZ,QAAQQ,SAAS,UAAU;AAC7B,aAAOW,iBAAiBd,MAAMO;AAAAA,IAChC,OAAO;AACL,YAAMU,eAAeC,MAAMC,QAAQL,YAAY,IAAIA,eAAe,CAAA;AAClE,aAAOG,aAAayB,SAAS1C,MAAMO,KAAK;AAAA,IAC1C;AAAA,EACF;AAEA,QAAMoC,cAAgEC,CAAAA,MAAM;AAC1E,QAAI,OAAO5C,MAAM6C,YAAY,YAAY;AACvC7C,YAAM6C,QAAQD,CAAC;AAAA,IACjB;AACA,QAAI,CAAC5C,MAAMa,YAAY,CAAClB,QAAQkB,UAAU;AACxClB,cAAQ+B,SAAS1B,MAAMO,KAAK;AAAA,IAC9B;AAAA,EACF;AAEA,UAAA,MAAA;AAAA,QAAAuC,QAAAC,QAAAA;AAAAD,UAAAE,UAMaL;AAAWX,WAAAc,OAAAb,WAAA;AAAA,MAAA,KAAA,OAAA,IAAA;AAAA,eAFbjC,MAAMkC;AAAAA,MAAK;AAAA,MAAA,IAClBrB,WAAQ;AAAA,eAAEb,MAAMa,YAAYlB,QAAQkB;AAAAA,MAAQ;AAAA,MAAA,KAAA,cAAA,IAAA;AAAA,eAE9B4B,WAAAA;AAAAA,MAAY;AAAA,MAAA,KAAA,YAAA,IAAA;AAAA,eACdA,WAAAA,IAAe,OAAO;AAAA,MAAK;AAAA,MAAA,KAAA,eAAA,IAAA;AAAA,eACxBzC,MAAMa,YAAYlB,QAAQkB,WAAW,KAAKH;AAAAA,MAAS;AAAA,IAAA,GAC9DT,MAAM,GAAA,OAAA,IAAA;AAAAkC,WAAAW,OAAA,MAET9C,MAAM6B,QAAQ;AAAA,WAAAiB;AAAAA,EAAA,GAAA;AAGrB;AAEAV,YAAYG,OAAOC;AAAgBS,eAAA,CAAA,OAAA,CAAA;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/ToggleGroup/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Component, JSX } from 'solid-js';
|
|
2
|
+
export interface ToolbarProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
/**
|
|
4
|
+
* 子元素
|
|
5
|
+
*/
|
|
6
|
+
children?: JSX.Element;
|
|
7
|
+
}
|
|
8
|
+
export interface ToolbarComponent extends Component<ToolbarProps> {
|
|
9
|
+
ToggleGroup: Component<ToolbarToggleGroupProps>;
|
|
10
|
+
ToggleItem: Component<ToolbarToggleItemProps>;
|
|
11
|
+
Separator: Component<ToolbarSeparatorProps>;
|
|
12
|
+
Link: Component<ToolbarLinkProps>;
|
|
13
|
+
Button: Component<ToolbarButtonProps>;
|
|
14
|
+
}
|
|
15
|
+
export declare const Toolbar: ToolbarComponent;
|
|
16
|
+
export interface ToolbarToggleGroupProps extends JSX.HTMLAttributes<HTMLDivElement> {
|
|
17
|
+
/**
|
|
18
|
+
* 类型:单个或多个
|
|
19
|
+
* @default 'single'
|
|
20
|
+
*/
|
|
21
|
+
type?: 'single' | 'multiple';
|
|
22
|
+
/**
|
|
23
|
+
* 当前选中的值
|
|
24
|
+
*/
|
|
25
|
+
value?: string | string[];
|
|
26
|
+
/**
|
|
27
|
+
* 默认选中的值
|
|
28
|
+
*/
|
|
29
|
+
defaultValue?: string | string[];
|
|
30
|
+
/**
|
|
31
|
+
* 值变化回调
|
|
32
|
+
*/
|
|
33
|
+
onValueChange?: (value: string | string[]) => void;
|
|
34
|
+
/**
|
|
35
|
+
* 是否禁用
|
|
36
|
+
* @default false
|
|
37
|
+
*/
|
|
38
|
+
disabled?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* 子元素
|
|
41
|
+
*/
|
|
42
|
+
children?: JSX.Element;
|
|
43
|
+
}
|
|
44
|
+
export declare const ToolbarToggleGroup: Component<ToolbarToggleGroupProps>;
|
|
45
|
+
export interface ToolbarToggleItemProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
46
|
+
/**
|
|
47
|
+
* 项的值
|
|
48
|
+
*/
|
|
49
|
+
value: string;
|
|
50
|
+
/**
|
|
51
|
+
* 是否禁用
|
|
52
|
+
* @default false
|
|
53
|
+
*/
|
|
54
|
+
disabled?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* 子元素
|
|
57
|
+
*/
|
|
58
|
+
children?: JSX.Element;
|
|
59
|
+
}
|
|
60
|
+
export declare const ToolbarToggleItem: Component<ToolbarToggleItemProps>;
|
|
61
|
+
export interface ToolbarSeparatorProps extends JSX.HTMLAttributes<HTMLHRElement> {
|
|
62
|
+
}
|
|
63
|
+
export declare const ToolbarSeparator: Component<ToolbarSeparatorProps>;
|
|
64
|
+
export interface ToolbarLinkProps extends JSX.AnchorHTMLAttributes<HTMLAnchorElement> {
|
|
65
|
+
/**
|
|
66
|
+
* 子元素
|
|
67
|
+
*/
|
|
68
|
+
children?: JSX.Element;
|
|
69
|
+
}
|
|
70
|
+
export declare const ToolbarLink: Component<ToolbarLinkProps>;
|
|
71
|
+
export interface ToolbarButtonProps extends JSX.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
72
|
+
/**
|
|
73
|
+
* 子元素
|
|
74
|
+
*/
|
|
75
|
+
children?: JSX.Element;
|
|
76
|
+
/**
|
|
77
|
+
* 是否作为子元素传递
|
|
78
|
+
*/
|
|
79
|
+
asChild?: boolean;
|
|
80
|
+
}
|
|
81
|
+
export declare const ToolbarButton: Component<ToolbarButtonProps>;
|
|
82
|
+
//# sourceMappingURL=Toolbar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toolbar.d.ts","sourceRoot":"","sources":["../../../src/components/Toolbar/Toolbar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/C,MAAM,WAAW,YAAa,SAAQ,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC;IACtE;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,gBAAiB,SAAQ,SAAS,CAAC,YAAY,CAAC;IAC/D,WAAW,EAAE,SAAS,CAAC,uBAAuB,CAAC,CAAC;IAChD,UAAU,EAAE,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAC9C,SAAS,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC5C,IAAI,EAAE,SAAS,CAAC,gBAAgB,CAAC,CAAC;IAClC,MAAM,EAAE,SAAS,CAAC,kBAAkB,CAAC,CAAC;CACvC;AAiBD,eAAO,MAAM,OAAO,EAMd,gBAAgB,CAAC;AAEvB,MAAM,WAAW,uBAAwB,SAAQ,GAAG,CAAC,cAAc,CAAC,cAAc,CAAC;IACjF;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC7B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,kBAAkB,EAAE,SAAS,CAAC,uBAAuB,CAqBjE,CAAC;AAEF,MAAM,WAAW,sBAAuB,SAAQ,GAAG,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IACzF;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,iBAAiB,EAAE,SAAS,CAAC,sBAAsB,CAe/D,CAAC;AAEF,MAAM,WAAW,qBAAsB,SAAQ,GAAG,CAAC,cAAc,CAAC,aAAa,CAAC;CAC/E;AAED,eAAO,MAAM,gBAAgB,EAAE,SAAS,CAAC,qBAAqB,CAU7D,CAAC;AAEF,MAAM,WAAW,gBAAiB,SAAQ,GAAG,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IACnF;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,WAAW,EAAE,SAAS,CAAC,gBAAgB,CAWnD,CAAC;AAEF,MAAM,WAAW,kBAAmB,SAAQ,GAAG,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IACrF;;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,CAYvD,CAAC"}
|