@neut/ui 0.0.13 → 0.0.14
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/combobox/ComboboxInput/ComboboxInput.js +1 -1
- package/dist/components/combobox/ComboboxInput/ComboboxInput.js.map +1 -1
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.d.ts +36 -3
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.js +35 -7
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.context.js.map +1 -1
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.d.ts +17 -2
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js +61 -35
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.js.map +1 -1
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.styles.d.ts +8 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.styles.js +7 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.styles.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroup/ToggleGroup.types.d.ts +93 -17
- package/dist/components/toggle-group/ToggleGroup/create-change-event-details.d.ts +8 -0
- package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js +25 -0
- package/dist/components/toggle-group/ToggleGroup/create-change-event-details.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroup/index.d.ts +1 -1
- package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.d.ts +17 -0
- package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js +47 -0
- package/dist/components/toggle-group/ToggleGroup/useToggleGroupKeyboard.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.d.ts +9 -1
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js +58 -42
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.js.map +1 -1
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.d.ts +12 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.js +7 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.js.map +1 -0
- package/dist/components/toggle-group/ToggleGroupItem/ToggleGroupItem.types.d.ts +17 -7
- package/dist/components/toggle-group/call-event-handler.d.ts +5 -0
- package/dist/components/toggle-group/call-event-handler.js +9 -0
- package/dist/components/toggle-group/call-event-handler.js.map +1 -0
- package/dist/components/toggle-group/index.d.ts +1 -1
- package/dist/ui.css +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
import { JSX } from 'solid-js';
|
|
2
|
+
import { ToggleGroupValue } from '../ToggleGroup/ToggleGroup.types';
|
|
2
3
|
import { ToggleGroupItemProps } from './ToggleGroupItem.types';
|
|
3
|
-
|
|
4
|
+
/**
|
|
5
|
+
* ToggleGroupItem:ToggleGroup 内的两态按钮。
|
|
6
|
+
*
|
|
7
|
+
* - 选中值由 ToggleGroup 统一持有,点击通过 `ctx.toggleItem` 触发变更
|
|
8
|
+
* - disabled 继承整组状态,可在 item 上单独禁用
|
|
9
|
+
* - roving tabindex:整组只有一个 tab 停靠点,方向键在同组内移动焦点
|
|
10
|
+
*/
|
|
11
|
+
export declare function ToggleGroupItem<TValue extends ToggleGroupValue = ToggleGroupValue>(props: ToggleGroupItemProps<TValue>): JSX.Element;
|
|
@@ -1,72 +1,88 @@
|
|
|
1
1
|
import { clsx as e } from "../../../utils/clsx.js";
|
|
2
2
|
import { toggleVariants as t } from "../../toggle/Toggle/Toggle.styles.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { callEventHandler as n } from "../call-event-handler.js";
|
|
4
|
+
import { useToggleGroupContext as r } from "../ToggleGroup/ToggleGroup.context.js";
|
|
5
|
+
import { toggleGroupItemVariants as i } from "./ToggleGroupItem.styles.js";
|
|
6
|
+
import { delegateEvents as a, insert as o, mergeProps as s, spread as c, template as l, use as u } from "solid-js/web";
|
|
7
|
+
import { mergeProps as d, onCleanup as f, onMount as p, splitProps as m } from "solid-js";
|
|
6
8
|
//#region src/components/toggle-group/ToggleGroupItem/ToggleGroupItem.tsx
|
|
7
|
-
var
|
|
8
|
-
function
|
|
9
|
-
let
|
|
9
|
+
var h = /*#__PURE__*/ l("<button data-slot=toggle-group-item>");
|
|
10
|
+
function g(a) {
|
|
11
|
+
let l = r("ToggleGroupItem"), g = d({ type: "button" }, a), [_, v] = m(g, [
|
|
10
12
|
"value",
|
|
11
13
|
"variant",
|
|
12
14
|
"size",
|
|
13
15
|
"class",
|
|
16
|
+
"classList",
|
|
14
17
|
"disabled",
|
|
18
|
+
"type",
|
|
15
19
|
"onClick",
|
|
16
|
-
"
|
|
17
|
-
"
|
|
18
|
-
]),
|
|
19
|
-
if (
|
|
20
|
-
let e =
|
|
21
|
-
|
|
22
|
-
}, v = (e) => {
|
|
23
|
-
if (d.onKeyDown?.(e), e.defaultPrevented || g() || ![
|
|
24
|
-
"ArrowDown",
|
|
25
|
-
"ArrowRight",
|
|
26
|
-
"ArrowUp",
|
|
27
|
-
"ArrowLeft"
|
|
28
|
-
].includes(e.key)) return;
|
|
29
|
-
e.preventDefault();
|
|
30
|
-
let t = e.currentTarget.closest("[data-slot=\"toggle-group\"]"), n = Array.from(t?.querySelectorAll("[data-slot=\"toggle-group-item\"]") ?? []);
|
|
31
|
-
n.length !== 0 && n[(n.indexOf(e.currentTarget) + (e.key === "ArrowDown" || e.key === "ArrowRight" ? 1 : -1) + n.length) % n.length].focus();
|
|
20
|
+
"onFocus",
|
|
21
|
+
"children"
|
|
22
|
+
]), y, b = () => l.variant() ?? _.variant ?? "default", x = () => l.size() ?? _.size ?? "default", S = () => l.isPressed(_.value), C = () => l.disabled() || !!_.disabled, w = () => {
|
|
23
|
+
if (C()) return -1;
|
|
24
|
+
let e = l.highlightedValue();
|
|
25
|
+
return e === _.value && l.isUsable(_.value) || (e === void 0 || !l.isUsable(e)) && l.isFirstEnabled(_.value) ? 0 : -1;
|
|
32
26
|
};
|
|
33
|
-
return (() => {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
27
|
+
return p(() => {
|
|
28
|
+
f(l.registerItem({
|
|
29
|
+
value: _.value,
|
|
30
|
+
disabled: C,
|
|
31
|
+
element: y
|
|
32
|
+
}));
|
|
33
|
+
}), (() => {
|
|
34
|
+
var r = h();
|
|
35
|
+
return r.addEventListener("focus", (e) => {
|
|
36
|
+
C() || l.setHighlightedValue(_.value), n(_.onFocus, e);
|
|
37
|
+
}), r.$$click = (e) => {
|
|
38
|
+
n(_.onClick, e), !e.defaultPrevented && !C() && l.toggleItem(_.value, e, e.currentTarget);
|
|
39
|
+
}, u((e) => {
|
|
40
|
+
y = e;
|
|
41
|
+
}, r), c(r, s({
|
|
38
42
|
get type() {
|
|
39
|
-
return
|
|
43
|
+
return _.type;
|
|
40
44
|
},
|
|
41
45
|
get disabled() {
|
|
42
|
-
return
|
|
46
|
+
return C();
|
|
47
|
+
},
|
|
48
|
+
get tabindex() {
|
|
49
|
+
return w();
|
|
43
50
|
},
|
|
44
51
|
get "data-variant"() {
|
|
45
|
-
return
|
|
52
|
+
return b();
|
|
46
53
|
},
|
|
47
54
|
get "data-size"() {
|
|
48
|
-
return
|
|
55
|
+
return x();
|
|
49
56
|
},
|
|
50
57
|
get "data-spacing"() {
|
|
51
|
-
return
|
|
58
|
+
return l.spacing();
|
|
52
59
|
},
|
|
53
|
-
get "
|
|
54
|
-
return
|
|
60
|
+
get "data-pressed"() {
|
|
61
|
+
return S() ? "" : null;
|
|
62
|
+
},
|
|
63
|
+
get "data-disabled"() {
|
|
64
|
+
return C() ? "" : null;
|
|
55
65
|
},
|
|
56
66
|
get "data-state"() {
|
|
57
|
-
return
|
|
67
|
+
return S() ? "on" : "off";
|
|
68
|
+
},
|
|
69
|
+
get "aria-pressed"() {
|
|
70
|
+
return S();
|
|
58
71
|
},
|
|
59
72
|
get class() {
|
|
60
|
-
return e(
|
|
61
|
-
variant:
|
|
62
|
-
size:
|
|
63
|
-
}),
|
|
73
|
+
return e(t({
|
|
74
|
+
variant: b(),
|
|
75
|
+
size: x()
|
|
76
|
+
}), i(), _.class);
|
|
77
|
+
},
|
|
78
|
+
get classList() {
|
|
79
|
+
return _.classList;
|
|
64
80
|
}
|
|
65
|
-
},
|
|
81
|
+
}, v), !1, !0), o(r, () => _.children), r;
|
|
66
82
|
})();
|
|
67
83
|
}
|
|
68
|
-
|
|
84
|
+
a(["click"]);
|
|
69
85
|
//#endregion
|
|
70
|
-
export {
|
|
86
|
+
export { g as ToggleGroupItem };
|
|
71
87
|
|
|
72
88
|
//# sourceMappingURL=ToggleGroupItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToggleGroupItem.js","names":["
|
|
1
|
+
{"version":3,"file":"ToggleGroupItem.js","names":["mergeProps","onCleanup","onMount","splitProps","JSX","clsx","toggleVariants","callEventHandler","useToggleGroupContext","ToggleGroupValue","toggleGroupItemVariants","ToggleGroupItemProps","ToggleGroupItem","props","TValue","Element","ctx","merged","type","const","local","rest","elementRef","HTMLButtonElement","variant","size","pressed","isPressed","value","disabled","tabIndex","highlighted","highlightedValue","isUsable","undefined","isFirstEnabled","registerItem","element","_el$","_tmpl$","addEventListener","e","setHighlightedValue","onFocus","$$click","onClick","defaultPrevented","toggleItem","currentTarget","_$use","el","_$spread","_$mergeProps","tabindex","data-variant","data-size","data-spacing","spacing","data-pressed","data-disabled","data-state","aria-pressed","class","classList","_$insert","children","_$delegateEvents"],"sources":["../../../../src/components/toggle-group/ToggleGroupItem/ToggleGroupItem.tsx"],"sourcesContent":["import { mergeProps, onCleanup, onMount, splitProps, type JSX } from \"solid-js\";\nimport { clsx } from \"~/utils\";\nimport { toggleVariants } from \"~/components/toggle/Toggle/Toggle.styles\";\nimport { callEventHandler } from \"../call-event-handler\";\nimport { useToggleGroupContext } from \"../ToggleGroup/ToggleGroup.context\";\nimport type { ToggleGroupValue } from \"../ToggleGroup/ToggleGroup.types\";\nimport { toggleGroupItemVariants } from \"./ToggleGroupItem.styles\";\nimport type { ToggleGroupItemProps } from \"./ToggleGroupItem.types\";\n\n/**\n * ToggleGroupItem:ToggleGroup 内的两态按钮。\n *\n * - 选中值由 ToggleGroup 统一持有,点击通过 `ctx.toggleItem` 触发变更\n * - disabled 继承整组状态,可在 item 上单独禁用\n * - roving tabindex:整组只有一个 tab 停靠点,方向键在同组内移动焦点\n */\nexport function ToggleGroupItem<\n TValue extends ToggleGroupValue = ToggleGroupValue,\n>(props: ToggleGroupItemProps<TValue>): JSX.Element {\n // context 用宽值类型读取:item 无法从父级推导 group 的值类型,\n // 自己的 TValue 始终可以传给宽类型参数\n const ctx = useToggleGroupContext(\"ToggleGroupItem\");\n const merged = mergeProps({ type: \"button\" as const }, props);\n\n const [local, rest] = splitProps(merged, [\n \"value\",\n \"variant\",\n \"size\",\n \"class\",\n \"classList\",\n \"disabled\",\n \"type\",\n \"onClick\",\n \"onFocus\",\n \"children\",\n ]);\n\n let elementRef: HTMLButtonElement | undefined;\n\n // 组级未显式指定 variant/size 时,item 可单独覆盖\n const variant = () => ctx.variant() ?? local.variant ?? \"default\";\n const size = () => ctx.size() ?? local.size ?? \"default\";\n const pressed = () => ctx.isPressed(local.value);\n const disabled = () => ctx.disabled() || !!local.disabled;\n\n // roving tabindex:高亮 item 持 0;高亮缺失或指向不可用 item(disabled/卸载)时,\n // 首个可用 item 持 0 作为键盘起点,避免整组键盘不可达\n const tabIndex = () => {\n if (disabled()) return -1;\n const highlighted = ctx.highlightedValue();\n if (highlighted === local.value && ctx.isUsable(local.value)) return 0;\n if (\n (highlighted === undefined || !ctx.isUsable(highlighted)) &&\n ctx.isFirstEnabled(local.value)\n ) {\n return 0;\n }\n return -1;\n };\n\n onMount(() => {\n onCleanup(\n ctx.registerItem({\n value: local.value,\n disabled,\n element: elementRef!,\n }),\n );\n });\n\n return (\n <button\n ref={(el) => {\n elementRef = el;\n }}\n type={local.type}\n disabled={disabled()}\n tabindex={tabIndex()}\n data-slot=\"toggle-group-item\"\n data-variant={variant()}\n data-size={size()}\n data-spacing={ctx.spacing()}\n data-pressed={pressed() ? \"\" : null}\n data-disabled={disabled() ? \"\" : null}\n data-state={pressed() ? \"on\" : \"off\"}\n aria-pressed={pressed()}\n class={clsx(\n toggleVariants({ variant: variant(), size: size() }),\n toggleGroupItemVariants(),\n local.class,\n )}\n classList={local.classList}\n onClick={(e) => {\n // 用户回调优先,可用 preventDefault() 阻止本次选中\n callEventHandler(local.onClick, e);\n if (!e.defaultPrevented && !disabled()) {\n ctx.toggleItem(local.value, e, e.currentTarget);\n }\n }}\n onFocus={(e) => {\n // 聚焦更新高亮(roving focus 起点)\n if (!disabled()) ctx.setHighlightedValue(local.value);\n callEventHandler(local.onFocus, e);\n }}\n {...rest}\n >\n {local.children}\n </button>\n );\n}\n"],"mappings":";;;;;;;;;AAgBA,SAAgBY,EAEdC,GAAkD;CAGlD,IAAMG,IAAMR,EAAsB,iBAAiB,GAC7CS,IAASjB,EAAW,EAAEkB,MAAM,SAAkB,GAAGL,CAAK,GAEtD,CAACO,GAAOC,KAAQlB,EAAWc,GAAQ;EACvC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CAAU,CACX,GAEGK,GAGEE,UAAgBR,EAAIQ,QAAQ,KAAKJ,EAAMI,WAAW,WAClDC,UAAaT,EAAIS,KAAK,KAAKL,EAAMK,QAAQ,WACzCC,UAAgBV,EAAIW,UAAUP,EAAMQ,KAAK,GACzCC,UAAiBb,EAAIa,SAAS,KAAK,CAAC,CAACT,EAAMS,UAI3CC,UAAiB;EACrB,IAAID,EAAS,GAAG,OAAO;EACvB,IAAME,IAAcf,EAAIgB,iBAAiB;EAQzC,OAPID,MAAgBX,EAAMQ,SAASZ,EAAIiB,SAASb,EAAMQ,KAAK,MAExDG,MAAgBG,KAAAA,KAAa,CAAClB,EAAIiB,SAASF,CAAW,MACvDf,EAAImB,eAAef,EAAMQ,KAAK,IAEvB,IAEF;CACT;CAYA,OAVA1B,QAAc;EACZD,EACEe,EAAIoB,aAAa;GACfR,OAAOR,EAAMQ;GACbC;GACAQ,SAASf;EACX,CAAC,CACH;CACF,CAAC,UAED;EAAA,IAAAgB,IAAAC,EAAA;EAoCmB,OApCnBD,EAAAE,iBAAA,UA6BcC,MAAM;GAGdlC,AADKsB,EAAS,KAAGb,EAAI0B,oBAAoBtB,EAAMQ,KAAK,GACpDrB,EAAiBa,EAAMuB,SAASF,CAAC;EACnC,CAAC,GAAAH,EAAAM,WAXSH,MAAM;GAGd,AADAlC,EAAiBa,EAAMyB,SAASJ,CAAC,GAC7B,CAACA,EAAEK,oBAAoB,CAACjB,EAAS,KACnCb,EAAI+B,WAAW3B,EAAMQ,OAAOa,GAAGA,EAAEO,aAAa;EAElD,GAACC,GA1BKC,MAAO;GACX5B,IAAa4B;EACf,GAACZ,CAAA,GAAAa,EAAAb,GAAAc,EAAA;GAAA,IACDlC,OAAI;IAAA,OAAEE,EAAMF;GAAI;GAAA,IAChBW,WAAQ;IAAA,OAAEA,EAAS;GAAC;GAAA,IACpBwB,WAAQ;IAAA,OAAEvB,EAAS;GAAC;GAAA,IAAA,iBAAA;IAAA,OAENN,EAAQ;GAAC;GAAA,IAAA,cAAA;IAAA,OACZC,EAAK;GAAC;GAAA,IAAA,iBAAA;IAAA,OACHT,EAAIyC,QAAQ;GAAC;GAAA,IAAA,iBAAA;IAAA,OACb/B,EAAQ,IAAI,KAAK;GAAI;GAAA,IAAA,kBAAA;IAAA,OACpBG,EAAS,IAAI,KAAK;GAAI;GAAA,IAAA,eAAA;IAAA,OACzBH,EAAQ,IAAI,OAAO;GAAK;GAAA,IAAA,iBAAA;IAAA,OACtBA,EAAQ;GAAC;GAAA,IAAA,QAAA;IAAA,OAChBrB,EACLC,EAAe;KAAEkB,SAASA,EAAQ;KAAGC,MAAMA,EAAK;IAAE,CAAC,GACnDf,EAAwB,GACxBU,EAAM0C,KACR;GAAC;GAAA,IACDC,YAAS;IAAA,OAAE3C,EAAM2C;GAAS;EAAA,GAatB1C,CAAI,GAAA,IAAA,EAAA,GAAA2C,EAAA1B,SAEPlB,EAAM6C,QAAQ,GAAA3B;CAAA,EAAA,CAAA;AAGrB;AAAC4B,EAAA,CAAA,OAAA,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ToggleGroupItem 位于 ToggleGroup 内时需要的“拼接态”样式。
|
|
3
|
+
*
|
|
4
|
+
* 依赖根元素上的钩子:
|
|
5
|
+
* - `group-data-[spacing=0]/toggle-group`:spacing 为 0 时相邻 item 拼接为整体
|
|
6
|
+
* - `data-[spacing=0]`:item 自身的 data-spacing(shadcn 同样在 item 上输出)
|
|
7
|
+
* - `group-data-horizontal|vertical/toggle-group`:按方向决定首尾圆角/边框
|
|
8
|
+
* - `data-[variant=outline]`:outline 拼接时只保留内侧边框
|
|
9
|
+
*
|
|
10
|
+
* variant / size 的基础样式仍由 `toggleVariants` 提供,这里只补“组合关系”。
|
|
11
|
+
*/
|
|
12
|
+
export declare const toggleGroupItemVariants: (props?: import('class-variance-authority/types').ClassProp | undefined) => string;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { cva as e } from "class-variance-authority";
|
|
2
|
+
//#region src/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.ts
|
|
3
|
+
var t = e("shrink-0 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t");
|
|
4
|
+
//#endregion
|
|
5
|
+
export { t as toggleGroupItemVariants };
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=ToggleGroupItem.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleGroupItem.styles.js","names":[],"sources":["../../../../src/components/toggle-group/ToggleGroupItem/ToggleGroupItem.styles.ts"],"sourcesContent":["import { cva } from \"class-variance-authority\";\n\n/**\n * ToggleGroupItem 位于 ToggleGroup 内时需要的“拼接态”样式。\n *\n * 依赖根元素上的钩子:\n * - `group-data-[spacing=0]/toggle-group`:spacing 为 0 时相邻 item 拼接为整体\n * - `data-[spacing=0]`:item 自身的 data-spacing(shadcn 同样在 item 上输出)\n * - `group-data-horizontal|vertical/toggle-group`:按方向决定首尾圆角/边框\n * - `data-[variant=outline]`:outline 拼接时只保留内侧边框\n *\n * variant / size 的基础样式仍由 `toggleVariants` 提供,这里只补“组合关系”。\n */\nexport const toggleGroupItemVariants = cva(\n \"shrink-0 focus:z-10 focus-visible:z-10 group-data-[spacing=0]/toggle-group:rounded-none group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t\",\n);\n"],"mappings":";;AAaA,IAAa,IAA0B,EACrC,k4BACF"}
|
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
import { VariantProps } from 'class-variance-authority';
|
|
2
2
|
import { ComponentProps } from 'solid-js';
|
|
3
3
|
import { toggleVariants } from '../../toggle/Toggle/Toggle.styles';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
4
|
+
import { HTMLAttributes, PolymorphicProps } from '../../../types';
|
|
5
|
+
import { ToggleGroupValue } from '../ToggleGroup/ToggleGroup.types';
|
|
6
|
+
type BaseToggleGroupItemProps<TValue extends ToggleGroupValue> = VariantProps<typeof toggleVariants> & HTMLAttributes<"button"> & {
|
|
7
|
+
/** 当前 item 的唯一值,类型由泛型参数决定(与所属 ToggleGroup 保持一致) */
|
|
8
|
+
value: TValue;
|
|
9
|
+
/** 组件内部会先处理选中,再调用用户回调(与 tabs 的 trigger 一致) */
|
|
10
|
+
onClick?: ComponentProps<"button">["onClick"];
|
|
11
|
+
/** 聚焦即更新 roving focus 高亮,用户回调会被一并调用 */
|
|
12
|
+
onFocus?: ComponentProps<"button">["onFocus"];
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* 泛型参数约束 `value` 的类型(默认 `string | number`)。
|
|
16
|
+
* 子组件无法从父级 `ToggleGroup` 推导类型,因此这里由 `value` 自身推导,
|
|
17
|
+
* 或显式指定:`<ToggleGroupItem<"bold" | "italic"> value="bold" />`。
|
|
18
|
+
*/
|
|
19
|
+
export type ToggleGroupItemProps<TValue extends ToggleGroupValue = ToggleGroupValue> = PolymorphicProps<"button", BaseToggleGroupItemProps<TValue>, false>;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
//#region src/components/toggle-group/call-event-handler.ts
|
|
2
|
+
function e(e, t) {
|
|
3
|
+
let n = Array.isArray(e) ? e : [e];
|
|
4
|
+
for (let e of n) typeof e == "function" && e(t);
|
|
5
|
+
}
|
|
6
|
+
//#endregion
|
|
7
|
+
export { e as callEventHandler };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=call-event-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"call-event-handler.js","names":[],"sources":["../../../src/components/toggle-group/call-event-handler.ts"],"sourcesContent":["/**\n * 调用用户传入的事件处理器(兼容 Solid 的函数 / 函数数组 / bound 对象形式)。\n * splitProps 提取出的事件类型是 EventHandlerUnion,不能直接调用。\n */\nexport function callEventHandler<E extends Event>(\n handler: unknown,\n event: E,\n): void {\n const list = Array.isArray(handler) ? handler : [handler];\n for (const h of list) {\n if (typeof h === \"function\") (h as (e: E) => void)(event);\n }\n}\n"],"mappings":";AAIA,SAAgB,EACd,GACA,GACM;CACN,IAAM,IAAO,MAAM,QAAQ,CAAO,IAAI,IAAU,CAAC,CAAO;CACxD,KAAK,IAAM,KAAK,GACd,AAAI,OAAO,KAAM,cAAY,EAAsB,CAAK;AAE5D"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { ToggleGroup } from './ToggleGroup';
|
|
2
|
-
export type { ToggleGroupProps, ToggleGroupContextValue } from './ToggleGroup';
|
|
2
|
+
export type { ToggleGroupProps, ToggleGroupValue, ToggleGroupContextValue, ToggleGroupItemEntry, ToggleGroupOrientation, ToggleGroupVariant, ToggleGroupSize, ToggleGroupChangeEventDetails, ToggleGroupChangeEventReason, } from './ToggleGroup';
|
|
3
3
|
export { ToggleGroupItem } from './ToggleGroupItem';
|
|
4
4
|
export type { ToggleGroupItemProps } from './ToggleGroupItem';
|