@tsed/react-formio 3.0.0-alpha.10 → 3.0.0-alpha.11
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/hooks/keyboard.constants.d.ts +38 -0
- package/dist/hooks/keyboard.constants.js +7 -0
- package/dist/hooks/keyboard.constants.js.map +1 -0
- package/dist/hooks/useKeyboardControls.d.ts +12 -0
- package/dist/hooks/useKeyboardControls.js +35 -0
- package/dist/hooks/useKeyboardControls.js.map +1 -0
- package/dist/interfaces/Operation.d.ts +12 -2
- package/dist/molecules/button/Button.d.ts +18 -5
- package/dist/molecules/button/Button.js +29 -30
- package/dist/molecules/button/Button.js.map +1 -1
- package/dist/molecules/card/Card.js +7 -5
- package/dist/molecules/card/Card.js.map +1 -1
- package/dist/molecules/forms/input-tags/InputTags.js +14 -14
- package/dist/molecules/forms/input-tags/InputTags.js.map +1 -1
- package/dist/molecules/table/Table.d.ts +11 -3
- package/dist/molecules/table/Table.js +8 -3
- package/dist/molecules/table/Table.js.map +1 -1
- package/dist/molecules/table/components/DefaultCellOperations.d.ts +12 -4
- package/dist/molecules/table/components/DefaultCellOperations.js +12 -6
- package/dist/molecules/table/components/DefaultCellOperations.js.map +1 -1
- package/dist/molecules/table/components/DefaultOperationButton.d.ts +12 -4
- package/dist/molecules/table/components/DefaultOperationButton.js.map +1 -1
- package/dist/molecules/table/hooks/useTable.d.ts +12 -4
- package/dist/molecules/table/hooks/useTable.js.map +1 -1
- package/dist/molecules/tabs/Tab.d.ts +13 -0
- package/dist/molecules/tabs/Tab.js +67 -0
- package/dist/molecules/tabs/Tab.js.map +1 -0
- package/dist/molecules/tabs/TabList.d.ts +2 -0
- package/dist/molecules/tabs/TabList.js +24 -0
- package/dist/molecules/tabs/TabList.js.map +1 -0
- package/dist/molecules/tabs/TabPanel.d.ts +9 -0
- package/dist/molecules/tabs/TabPanel.js +27 -0
- package/dist/molecules/tabs/TabPanel.js.map +1 -0
- package/dist/molecules/tabs/Tabs.d.ts +4 -16
- package/dist/molecules/tabs/Tabs.js +7 -67
- package/dist/molecules/tabs/Tabs.js.map +1 -1
- package/dist/molecules/tabs/TabsBody.d.ts +1 -0
- package/dist/molecules/tabs/TabsBody.js +10 -0
- package/dist/molecules/tabs/TabsBody.js.map +1 -0
- package/dist/molecules/tabs/TabsLegacy.d.ts +17 -0
- package/dist/molecules/tabs/TabsLegacy.js +49 -0
- package/dist/molecules/tabs/TabsLegacy.js.map +1 -0
- package/dist/molecules/tabs/all.d.ts +5 -0
- package/dist/molecules/tabs/all.js +13 -0
- package/dist/molecules/tabs/all.js.map +1 -0
- package/dist/molecules/tabs/context/TabControl.d.ts +52 -0
- package/dist/molecules/tabs/context/TabControl.js +85 -0
- package/dist/molecules/tabs/context/TabControl.js.map +1 -0
- package/dist/molecules/tabs/hooks/tabControl.d.ts +44 -0
- package/dist/molecules/tabs/hooks/tabControl.js +34 -0
- package/dist/molecules/tabs/hooks/tabControl.js.map +1 -0
- package/dist/organisms/form/actions/FormAction.js.map +1 -0
- package/dist/organisms/form/builder/FormEdit.d.ts +3 -1
- package/dist/organisms/form/builder/FormEdit.js +38 -35
- package/dist/organisms/form/builder/FormEdit.js.map +1 -1
- package/dist/organisms/form/builder/useFormEdit.js +17 -17
- package/dist/organisms/form/builder/useFormEdit.js.map +1 -1
- package/dist/organisms/form/exports/FormExport.d.ts +5 -0
- package/dist/organisms/form/exports/FormExport.js +55 -0
- package/dist/organisms/form/exports/FormExport.js.map +1 -0
- package/dist/organisms/form/preview/FormPreview.d.ts +6 -0
- package/dist/organisms/form/preview/FormPreview.js +11 -0
- package/dist/organisms/form/preview/FormPreview.js.map +1 -0
- package/dist/organisms/table/submissions/SubmissionsTable.d.ts +11 -3
- package/dist/organisms/table/submissions/SubmissionsTable.js +4 -1
- package/dist/organisms/table/submissions/SubmissionsTable.js.map +1 -1
- package/dist/organisms/views/FormViews.d.ts +24 -0
- package/dist/organisms/views/FormViews.js +96 -0
- package/dist/organisms/views/FormViews.js.map +1 -0
- package/package.json +3 -3
- package/src/hooks/keyboard.constants.ts +40 -0
- package/src/hooks/useKeyboardControls.spec.tsx +208 -0
- package/src/hooks/useKeyboardControls.ts +84 -0
- package/src/interfaces/Operation.ts +9 -3
- package/src/molecules/button/Button.tsx +43 -24
- package/src/molecules/card/Card.tsx +4 -0
- package/src/molecules/forms/input-tags/InputTags.tsx +1 -1
- package/src/molecules/pagination/Pagination.stories.tsx +0 -7
- package/src/molecules/table/Table.stories.tsx +34 -1
- package/src/molecules/table/Table.tsx +12 -6
- package/src/molecules/table/components/DefaultCellOperations.tsx +13 -7
- package/src/molecules/table/components/DefaultOperationButton.tsx +5 -4
- package/src/molecules/table/hooks/useTable.tsx +5 -5
- package/src/molecules/tabs/Tab.tsx +106 -0
- package/src/molecules/tabs/TabList.tsx +37 -0
- package/src/molecules/tabs/TabPanel.tsx +37 -0
- package/src/molecules/tabs/Tabs.spec.tsx +126 -73
- package/src/molecules/tabs/Tabs.stories.tsx +298 -65
- package/src/molecules/tabs/Tabs.tsx +10 -81
- package/src/molecules/tabs/TabsBody.tsx +11 -0
- package/src/molecules/tabs/TabsLegacy.stories.tsx +103 -0
- package/src/molecules/tabs/TabsLegacy.tsx +84 -0
- package/src/molecules/tabs/all.ts +5 -0
- package/src/molecules/tabs/context/TabControl.tsx +166 -0
- package/src/molecules/tabs/hooks/tabControl.spec.tsx +388 -0
- package/src/molecules/tabs/hooks/tabControl.ts +52 -0
- package/src/organisms/__fixtures__/form-firstname.fixture.json +1 -0
- package/src/organisms/__fixtures__/form.fixture.json +1 -0
- package/src/organisms/form/actions/FormAction.stories.tsx +422 -0
- package/src/organisms/form/builder/FormEdit.tsx +7 -1
- package/src/organisms/form/builder/useFormEdit.ts +1 -1
- package/src/organisms/form/exports/FormExport.stories.tsx +71 -0
- package/src/organisms/form/exports/FormExport.tsx +58 -0
- package/src/organisms/form/preview/FormPreview.stories.tsx +61 -0
- package/src/organisms/form/preview/FormPreview.tsx +21 -0
- package/src/organisms/table/actions/ActionsTable.stories.tsx +36 -34
- package/src/organisms/table/submissions/SubmissionsTable.stories.tsx +103 -57
- package/src/organisms/table/submissions/SubmissionsTable.tsx +10 -4
- package/src/organisms/views/FormViews.stories.tsx +224 -0
- package/src/organisms/views/FormViews.tsx +146 -0
- package/dist/organisms/form/action/FormAction.js.map +0 -1
- package/src/organisms/form/action/FormAction.stories.tsx +0 -364
- /package/dist/organisms/form/{action → actions}/FormAction.d.ts +0 -0
- /package/dist/organisms/form/{action → actions}/FormAction.js +0 -0
- /package/src/organisms/form/{action → actions}/FormAction.tsx +0 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { jsxs as l, jsx as b } from "react/jsx-runtime";
|
|
2
|
+
import { c as f } from "../../chunks/index.js";
|
|
3
|
+
import { useRef as p, useEffect as v, useCallback as r } from "react";
|
|
4
|
+
import { useKeyboardControls as A } from "../../hooks/useKeyboardControls.js";
|
|
5
|
+
import { registerComponent as E } from "../../registries/components.js";
|
|
6
|
+
import { iconClass as K } from "../../utils/iconClass.js";
|
|
7
|
+
import { useTabsUid as j, useActiveTab as C, useRegisterTabControl as D } from "./hooks/tabControl.js";
|
|
8
|
+
function L({ onClick: s, icon: u, value: e, children: _, className: d, after: T }) {
|
|
9
|
+
const m = j(), a = p(null), o = C(), t = D({ value: e, ref: a }), i = p(o), c = p(o === e);
|
|
10
|
+
c.current = o === e, v(() => {
|
|
11
|
+
var n;
|
|
12
|
+
i.current !== o && e === o && ((n = a.current) == null || n.focus(), s == null || s(e)), i.current !== o && (i.current = o);
|
|
13
|
+
}, [e, s, o]);
|
|
14
|
+
const y = r(() => {
|
|
15
|
+
t({ type: "start" });
|
|
16
|
+
}, [t]), w = r(() => {
|
|
17
|
+
t({ type: "end" });
|
|
18
|
+
}, [t]), x = r(() => {
|
|
19
|
+
t({ type: "previous" });
|
|
20
|
+
}, [t]), h = r(() => {
|
|
21
|
+
t({ type: "next" });
|
|
22
|
+
}, [t]), N = r(() => {
|
|
23
|
+
const n = document.documentElement.dir === "rtl";
|
|
24
|
+
t({ type: n ? "next" : "previous" });
|
|
25
|
+
}, [t]), R = r(() => {
|
|
26
|
+
const n = document.documentElement.dir === "rtl";
|
|
27
|
+
t({ type: n ? "previous" : "next" });
|
|
28
|
+
}, [t]), $ = A({
|
|
29
|
+
start: y,
|
|
30
|
+
end: w,
|
|
31
|
+
up: x,
|
|
32
|
+
down: h,
|
|
33
|
+
left: N,
|
|
34
|
+
right: R
|
|
35
|
+
}), g = r(() => {
|
|
36
|
+
t({ type: "update", payload: e });
|
|
37
|
+
}, [t, e]);
|
|
38
|
+
return /* @__PURE__ */ l("div", { title: "button-wrapper", className: f("tw-tabs__button-wrapper", d, { "-active": c.current }, d), children: [
|
|
39
|
+
/* @__PURE__ */ l(
|
|
40
|
+
"button",
|
|
41
|
+
{
|
|
42
|
+
ref: a,
|
|
43
|
+
id: `Tab_${e}_${m}`,
|
|
44
|
+
"data-name": "Tab",
|
|
45
|
+
title: "button-tab",
|
|
46
|
+
role: "tab",
|
|
47
|
+
"aria-selected": c.current,
|
|
48
|
+
"aria-controls": `TabPanel_${e}_${m}`,
|
|
49
|
+
tabIndex: c.current ? 0 : -1,
|
|
50
|
+
className: "tw-tabs__button",
|
|
51
|
+
onClick: g,
|
|
52
|
+
onKeyDown: $,
|
|
53
|
+
children: [
|
|
54
|
+
u && /* @__PURE__ */ b("i", { className: f(K(void 0, u), "tw-tabs__button-icon") }),
|
|
55
|
+
/* @__PURE__ */ b("span", { className: "tw-tabs__button-label", children: _ }),
|
|
56
|
+
T
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
),
|
|
60
|
+
/* @__PURE__ */ b("div", { className: "tw-tabs__button-border" })
|
|
61
|
+
] });
|
|
62
|
+
}
|
|
63
|
+
E("Tab", L);
|
|
64
|
+
export {
|
|
65
|
+
L as Tab
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=Tab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tab.js","sources":["../../../src/molecules/tabs/Tab.tsx"],"sourcesContent":["import classnames from \"classnames\";\nimport { PropsWithChildren, useCallback, useEffect, useRef } from \"react\";\n\nimport { useKeyboardControls } from \"../../hooks/useKeyboardControls.js\";\nimport { registerComponent } from \"../../registries/components.js\";\nimport { iconClass } from \"../../utils/iconClass.js\";\nimport { useActiveTab, useRegisterTabControl, useTabsUid } from \"./hooks/tabControl.js\";\n\nexport interface TabProps {\n icon?: string;\n isActive?: boolean;\n className?: string;\n after?: React.ReactNode;\n value: number;\n /**\n * on tab select handler\n */\n onClick?: (value: number) => void;\n}\n\nexport function Tab({ onClick, icon, value, children, className, after }: PropsWithChildren<TabProps>) {\n const uid = useTabsUid();\n const ref = useRef<HTMLButtonElement>(null);\n const activeTab = useActiveTab();\n const dispatch = useRegisterTabControl({ value, ref });\n const previousActiveTab = useRef(activeTab);\n\n const isActive = useRef(activeTab === value);\n isActive.current = activeTab === value;\n\n useEffect(() => {\n if (previousActiveTab.current !== activeTab && value === activeTab) {\n ref.current?.focus();\n onClick?.(value);\n }\n if (previousActiveTab.current !== activeTab) {\n previousActiveTab.current = activeTab;\n }\n }, [value, onClick, activeTab]);\n\n const start = useCallback(() => {\n dispatch({ type: \"start\" });\n }, [dispatch]);\n\n const end = useCallback(() => {\n dispatch({ type: \"end\" });\n }, [dispatch]);\n\n const up = useCallback(() => {\n dispatch({ type: \"previous\" });\n }, [dispatch]);\n\n const down = useCallback(() => {\n dispatch({ type: \"next\" });\n }, [dispatch]);\n\n const left = useCallback(() => {\n const isRTL = document.documentElement.dir === \"rtl\";\n\n dispatch({ type: isRTL ? \"next\" : \"previous\" });\n }, [dispatch]);\n\n const right = useCallback(() => {\n const isRTL = document.documentElement.dir === \"rtl\";\n\n dispatch({ type: isRTL ? \"previous\" : \"next\" });\n }, [dispatch]);\n\n const handleKeyDown = useKeyboardControls({\n start,\n end,\n up,\n down,\n left,\n right\n });\n\n const handleClick = useCallback(() => {\n dispatch({ type: \"update\", payload: value });\n }, [dispatch, value]);\n\n return (\n <div title={\"button-wrapper\"} className={classnames(\"tw-tabs__button-wrapper\", className, { \"-active\": isActive.current }, className)}>\n <button\n ref={ref}\n id={`Tab_${value}_${uid}`}\n data-name='Tab'\n title='button-tab'\n role='tab'\n aria-selected={isActive.current}\n aria-controls={`TabPanel_${value}_${uid}`}\n tabIndex={isActive.current ? 0 : -1}\n className={\"tw-tabs__button\"}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {icon && <i className={classnames(iconClass(undefined, icon), \"tw-tabs__button-icon\")} />}\n <span className={\"tw-tabs__button-label\"}>{children}</span>\n {after}\n </button>\n <div className='tw-tabs__button-border' />\n </div>\n );\n}\n\nregisterComponent(\"Tab\", Tab);\n"],"names":["Tab","onClick","icon","value","children","className","after","uid","useTabsUid","ref","useRef","activeTab","useActiveTab","dispatch","useRegisterTabControl","previousActiveTab","isActive","useEffect","_a","start","useCallback","end","up","down","left","isRTL","right","handleKeyDown","useKeyboardControls","handleClick","jsxs","classnames","jsx","iconClass","registerComponent"],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as t, jsxs as o } from "react/jsx-runtime";
|
|
2
|
+
import { Children as m, isValidElement as p } from "react";
|
|
3
|
+
import { registerComponent as f } from "../../registries/components.js";
|
|
4
|
+
function l(n) {
|
|
5
|
+
const s = [], a = [], r = [];
|
|
6
|
+
return m.forEach(n.children, (e) => {
|
|
7
|
+
var i;
|
|
8
|
+
if (p(e) && ((i = e.type) == null ? void 0 : i.name) === "Tab") {
|
|
9
|
+
r.push(e);
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
r.length > 0 ? a.push(e) : s.push(e);
|
|
13
|
+
}), /* @__PURE__ */ t("nav", { className: "tw-tabs__header", children: /* @__PURE__ */ o("div", { className: "tw-tabs__header-wrapper", children: [
|
|
14
|
+
/* @__PURE__ */ t("div", { className: "tw-tabs__header-border" }),
|
|
15
|
+
s,
|
|
16
|
+
/* @__PURE__ */ t("div", { role: "tablist", children: r }),
|
|
17
|
+
a
|
|
18
|
+
] }) });
|
|
19
|
+
}
|
|
20
|
+
f("TabList", l);
|
|
21
|
+
export {
|
|
22
|
+
l as TabList
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=TabList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabList.js","sources":["../../../src/molecules/tabs/TabList.tsx"],"sourcesContent":["import { Children, isValidElement, PropsWithChildren, ReactNode } from \"react\";\n\nimport { registerComponent } from \"../../registries/components.js\";\n\nexport function TabList(props: PropsWithChildren<{}>) {\n const before: ReactNode[] = [];\n const after: ReactNode[] = [];\n const items: ReactNode[] = [];\n\n Children.forEach(props.children, (child) => {\n if (isValidElement(child)) {\n if ((child.type as any)?.name === \"Tab\") {\n items.push(child);\n return;\n }\n }\n\n if (items.length > 0) {\n after.push(child);\n } else {\n before.push(child);\n }\n });\n\n return (\n <nav className='tw-tabs__header'>\n <div className='tw-tabs__header-wrapper'>\n <div className='tw-tabs__header-border' />\n {before}\n <div role='tablist'>{items}</div>\n {after}\n </div>\n </nav>\n );\n}\n\nregisterComponent(\"TabList\", TabList);\n"],"names":["TabList","props","before","after","items","Children","child","isValidElement","_a","jsxs","jsx","registerComponent"],"mappings":";;;AAIO,SAASA,EAAQC,GAA8B;AACpD,QAAMC,IAAsB,CAAC,GACvBC,IAAqB,CAAC,GACtBC,IAAqB,CAAC;AAE5B,SAAAC,EAAS,QAAQJ,EAAM,UAAU,CAACK,MAAU;;AACtC,QAAAC,EAAeD,CAAK,OACjBE,IAAAF,EAAM,SAAN,gBAAAE,EAAoB,UAAS,OAAO;AACvC,MAAAJ,EAAM,KAAKE,CAAK;AAChB;AAAA,IAAA;AAIA,IAAAF,EAAM,SAAS,IACjBD,EAAM,KAAKG,CAAK,IAEhBJ,EAAO,KAAKI,CAAK;AAAA,EACnB,CACD,qBAGE,OAAI,EAAA,WAAU,mBACb,UAAC,gBAAAG,EAAA,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,IAAC,gBAAAC,EAAA,OAAA,EAAI,WAAU,yBAAyB,CAAA;AAAA,IACvCR;AAAA,IACA,gBAAAQ,EAAA,OAAA,EAAI,MAAK,WAAW,UAAMN,GAAA;AAAA,IAC1BD;AAAA,EAAA,EAAA,CACH,EACF,CAAA;AAEJ;AAEAQ,EAAkB,WAAWX,CAAO;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface TabPanelProps {
|
|
2
|
+
className?: string;
|
|
3
|
+
/**
|
|
4
|
+
* Tab panel index<br/>
|
|
5
|
+
* _Can be **0** or **1** indexed_
|
|
6
|
+
*/
|
|
7
|
+
value: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function TabPanel({ value, className, children }: React.PropsWithChildren<TabPanelProps>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import { c as b } from "../../chunks/index.js";
|
|
3
|
+
import { registerComponent as s } from "../../registries/components.js";
|
|
4
|
+
import { useActiveTab as c, useTabsUid as m } from "./hooks/tabControl.js";
|
|
5
|
+
function d({ value: a, className: i, children: n }) {
|
|
6
|
+
const o = c(), t = m(), e = o === a;
|
|
7
|
+
return /* @__PURE__ */ r(
|
|
8
|
+
"div",
|
|
9
|
+
{
|
|
10
|
+
id: `TabPanel_${a}_${t}`,
|
|
11
|
+
"data-name": `TabPanel_${a}`,
|
|
12
|
+
role: "tabpanel",
|
|
13
|
+
"aria-hidden": !e,
|
|
14
|
+
"aria-labelledby": `Tab_${a}_${t}`,
|
|
15
|
+
tabIndex: e ? 0 : -1,
|
|
16
|
+
className: b("tw-tabs__panel", i, {
|
|
17
|
+
"-active": e
|
|
18
|
+
}),
|
|
19
|
+
children: n
|
|
20
|
+
}
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
s("TabPanel", d);
|
|
24
|
+
export {
|
|
25
|
+
d as TabPanel
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=TabPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabPanel.js","sources":["../../../src/molecules/tabs/TabPanel.tsx"],"sourcesContent":["import classnames from \"classnames\";\n\nimport { registerComponent } from \"../../registries/components.js\";\nimport { useActiveTab, useTabsUid } from \"./hooks/tabControl.js\";\n\nexport interface TabPanelProps {\n className?: string;\n /**\n * Tab panel index<br/>\n * _Can be **0** or **1** indexed_\n */\n value: number;\n}\n\nexport function TabPanel({ value, className, children }: React.PropsWithChildren<TabPanelProps>) {\n const tabSelected = useActiveTab();\n const uid = useTabsUid();\n const isActive = tabSelected === value;\n\n return (\n <div\n id={`TabPanel_${value}_${uid}`}\n data-name={`TabPanel_${value}`}\n role='tabpanel'\n aria-hidden={!isActive}\n aria-labelledby={`Tab_${value}_${uid}`}\n tabIndex={isActive ? 0 : -1}\n className={classnames(\"tw-tabs__panel\", className, {\n \"-active\": isActive\n })}\n >\n {children}\n </div>\n );\n}\n\nregisterComponent(\"TabPanel\", TabPanel);\n"],"names":["TabPanel","value","className","children","tabSelected","useActiveTab","uid","useTabsUid","isActive","jsx","classnames","registerComponent"],"mappings":";;;;AAcO,SAASA,EAAS,EAAE,OAAAC,GAAO,WAAAC,GAAW,UAAAC,KAAoD;AAC/F,QAAMC,IAAcC,EAAa,GAC3BC,IAAMC,EAAW,GACjBC,IAAWJ,MAAgBH;AAG/B,SAAA,gBAAAQ;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAI,YAAYR,CAAK,IAAIK,CAAG;AAAA,MAC5B,aAAW,YAAYL,CAAK;AAAA,MAC5B,MAAK;AAAA,MACL,eAAa,CAACO;AAAA,MACd,mBAAiB,OAAOP,CAAK,IAAIK,CAAG;AAAA,MACpC,UAAUE,IAAW,IAAI;AAAA,MACzB,WAAWE,EAAW,kBAAkBR,GAAW;AAAA,QACjD,WAAWM;AAAA,MAAA,CACZ;AAAA,MAEA,UAAAL;AAAA,IAAA;AAAA,EACH;AAEJ;AAEAQ,EAAkB,YAAYX,CAAQ;"}
|
|
@@ -1,19 +1,7 @@
|
|
|
1
|
-
import { PropsWithChildren } from 'react';
|
|
2
|
-
export declare function ButtonTab({ icon, back, onClick, isActive, reverse, children, className, after }: PropsWithChildren<any>): import("react/jsx-runtime").JSX.Element;
|
|
3
|
-
export interface TabsItemProps extends Record<string, any> {
|
|
4
|
-
label?: string;
|
|
5
|
-
icon?: string;
|
|
6
|
-
}
|
|
1
|
+
import { CSSProperties, PropsWithChildren } from 'react';
|
|
7
2
|
export interface TabsProps extends Record<string, any> {
|
|
8
|
-
|
|
9
|
-
AddButton?: any;
|
|
10
|
-
current?: TabsItemProps;
|
|
11
|
-
items?: TabsItemProps[];
|
|
12
|
-
style?: any;
|
|
3
|
+
style?: CSSProperties;
|
|
13
4
|
className?: string;
|
|
14
|
-
|
|
15
|
-
Button?: any;
|
|
16
|
-
onClick?: (item: TabsItemProps) => void;
|
|
17
|
-
i18n?: (f: string) => string;
|
|
5
|
+
selected?: number;
|
|
18
6
|
}
|
|
19
|
-
export declare function Tabs({ style,
|
|
7
|
+
export declare function Tabs({ style, selected, children, className }: PropsWithChildren<TabsProps>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,72 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { jsx as r } from "react/jsx-runtime";
|
|
2
2
|
import { c as i } from "../../chunks/index.js";
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
{
|
|
8
|
-
title: "button-wrapper",
|
|
9
|
-
className: i("tw-tabs__button-wrapper", b ? "-active" : "", s ? "-back" : "", n),
|
|
10
|
-
children: [
|
|
11
|
-
/* @__PURE__ */ e(
|
|
12
|
-
"button",
|
|
13
|
-
{
|
|
14
|
-
title: "button-tab",
|
|
15
|
-
className: i("tw-tabs__button", l ? "-reverse" : "", b ? "-active" : "", s ? "-back" : ""),
|
|
16
|
-
onClick: r,
|
|
17
|
-
children: [
|
|
18
|
-
c && /* @__PURE__ */ t("i", { className: i(p(void 0, c), "tw-tabs__button-icon") }),
|
|
19
|
-
/* @__PURE__ */ t("span", { className: "tw-tabs__button-label", children: o }),
|
|
20
|
-
_
|
|
21
|
-
]
|
|
22
|
-
}
|
|
23
|
-
),
|
|
24
|
-
/* @__PURE__ */ t("div", { className: i("tw-tabs__button-border", b ? "-active" : "") })
|
|
25
|
-
]
|
|
26
|
-
}
|
|
27
|
-
);
|
|
28
|
-
}
|
|
29
|
-
function x({
|
|
30
|
-
style: c,
|
|
31
|
-
current: s,
|
|
32
|
-
items: r = [],
|
|
33
|
-
children: b,
|
|
34
|
-
HeaderChildren: l,
|
|
35
|
-
AddButton: o,
|
|
36
|
-
Button: n = N,
|
|
37
|
-
className: _,
|
|
38
|
-
onClick: w,
|
|
39
|
-
i18n: m = (a) => a,
|
|
40
|
-
...d
|
|
41
|
-
}) {
|
|
42
|
-
return /* @__PURE__ */ e("div", { "data-testid": "tabs-comp", className: `tw-tabs ${_}`, style: c, children: [
|
|
43
|
-
/* @__PURE__ */ e("div", { children: [
|
|
44
|
-
/* @__PURE__ */ t("nav", { className: "tw-tabs__header", children: /* @__PURE__ */ e("div", { className: "tw-tabs__header-wrapper", children: [
|
|
45
|
-
/* @__PURE__ */ t("div", { className: "tw-tabs__header-border" }),
|
|
46
|
-
r.filter((a) => a.label || a.icon).map((a, v) => /* @__PURE__ */ t(
|
|
47
|
-
n,
|
|
48
|
-
{
|
|
49
|
-
back: a.back,
|
|
50
|
-
isActive: (s == null ? void 0 : s.action) === a.action,
|
|
51
|
-
exact: a.exact,
|
|
52
|
-
onClick: () => {
|
|
53
|
-
w && w(a);
|
|
54
|
-
},
|
|
55
|
-
...d,
|
|
56
|
-
...a,
|
|
57
|
-
children: m(a.label || "")
|
|
58
|
-
},
|
|
59
|
-
v
|
|
60
|
-
)),
|
|
61
|
-
o && /* @__PURE__ */ t(o, { ...d, current: s })
|
|
62
|
-
] }) }),
|
|
63
|
-
l && /* @__PURE__ */ t(l, { ...d, current: s })
|
|
64
|
-
] }),
|
|
65
|
-
/* @__PURE__ */ t("div", { title: "tab-body", className: "tw-tabs__body", children: b })
|
|
66
|
-
] });
|
|
3
|
+
import { registerComponent as m } from "../../registries/components.js";
|
|
4
|
+
import { TabsProvider as e } from "./context/TabControl.js";
|
|
5
|
+
function n({ style: t, selected: o, children: s, className: a }) {
|
|
6
|
+
return /* @__PURE__ */ r("div", { "data-testid": "Tabs", className: i("tw-tabs", a), style: t, children: /* @__PURE__ */ r(e, { selected: o, children: s }) });
|
|
67
7
|
}
|
|
8
|
+
m("Tabs", n);
|
|
68
9
|
export {
|
|
69
|
-
|
|
70
|
-
x as Tabs
|
|
10
|
+
n as Tabs
|
|
71
11
|
};
|
|
72
12
|
//# sourceMappingURL=Tabs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tabs.js","sources":["../../../src/molecules/tabs/Tabs.tsx"],"sourcesContent":["import classnames from \"classnames\";\nimport { PropsWithChildren } from \"react\";\n\nimport {
|
|
1
|
+
{"version":3,"file":"Tabs.js","sources":["../../../src/molecules/tabs/Tabs.tsx"],"sourcesContent":["import classnames from \"classnames\";\nimport type { CSSProperties, PropsWithChildren } from \"react\";\n\nimport { registerComponent } from \"../../registries/components.js\";\nimport { TabsProvider } from \"./context/TabControl.js\";\n\nexport interface TabsProps extends Record<string, any> {\n style?: CSSProperties;\n className?: string;\n selected?: number;\n}\n\nexport function Tabs({ style, selected, children, className }: PropsWithChildren<TabsProps>) {\n return (\n <div data-testid={\"Tabs\"} className={classnames(\"tw-tabs\", className)} style={style}>\n <TabsProvider selected={selected}>{children}</TabsProvider>\n </div>\n );\n}\n\nregisterComponent(\"Tabs\", Tabs);\n"],"names":["Tabs","style","selected","children","className","jsx","classnames","TabsProvider","registerComponent"],"mappings":";;;;AAYO,SAASA,EAAK,EAAE,OAAAC,GAAO,UAAAC,GAAU,UAAAC,GAAU,WAAAC,KAA2C;AAC3F,SACG,gBAAAC,EAAA,OAAA,EAAI,eAAa,QAAQ,WAAWC,EAAW,WAAWF,CAAS,GAAG,OAAAH,GACrE,UAAA,gBAAAI,EAACE,GAAa,EAAA,UAAAL,GAAqB,UAAAC,EAAS,CAAA,GAC9C;AAEJ;AAEAK,EAAkB,QAAQR,CAAI;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function TabsBody(props: React.PropsWithChildren<{}>): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { registerComponent as r } from "../../registries/components.js";
|
|
3
|
+
function d(t) {
|
|
4
|
+
return /* @__PURE__ */ o("div", { title: "tabs-body", "data-testid": "TabsBody", className: "tw-tabs__body", children: t.children });
|
|
5
|
+
}
|
|
6
|
+
r("TabsBody", d);
|
|
7
|
+
export {
|
|
8
|
+
d as TabsBody
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=TabsBody.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsBody.js","sources":["../../../src/molecules/tabs/TabsBody.tsx"],"sourcesContent":["import { registerComponent } from \"../../registries/components.js\";\n\nexport function TabsBody(props: React.PropsWithChildren<{}>) {\n return (\n <div title={\"tabs-body\"} data-testid={\"TabsBody\"} className={\"tw-tabs__body\"}>\n {props.children}\n </div>\n );\n}\n\nregisterComponent(\"TabsBody\", TabsBody);\n"],"names":["TabsBody","props","jsx","registerComponent"],"mappings":";;AAEO,SAASA,EAASC,GAAoC;AAEzD,SAAA,gBAAAC,EAAC,SAAI,OAAO,aAAa,eAAa,YAAY,WAAW,iBAC1D,UAAAD,EAAM,SACT,CAAA;AAEJ;AAEAE,EAAkB,YAAYH,CAAQ;"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
export interface TabsItemProps extends Record<string, any> {
|
|
3
|
+
label?: string;
|
|
4
|
+
icon?: string;
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
}
|
|
7
|
+
export interface TabsLegacyProps extends Record<string, any> {
|
|
8
|
+
AddButton?: any;
|
|
9
|
+
current?: TabsItemProps;
|
|
10
|
+
items?: TabsItemProps[];
|
|
11
|
+
style?: CSSProperties;
|
|
12
|
+
className?: string;
|
|
13
|
+
reverse?: boolean;
|
|
14
|
+
onClick?: (item: TabsItemProps) => void;
|
|
15
|
+
i18n?: (f: string) => string;
|
|
16
|
+
}
|
|
17
|
+
export declare function TabsLegacy({ style, current, items, HeaderChildren, AddButton, className, onClick, i18n, reverse, after, ...additionalProps }: TabsLegacyProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsxs as s, jsx as r } from "react/jsx-runtime";
|
|
2
|
+
import "./Tab.js";
|
|
3
|
+
import "./TabList.js";
|
|
4
|
+
import "./TabPanel.js";
|
|
5
|
+
import "./Tabs.js";
|
|
6
|
+
import "./TabsBody.js";
|
|
7
|
+
import { getComponent as a } from "../../registries/components.js";
|
|
8
|
+
function w({
|
|
9
|
+
style: p,
|
|
10
|
+
current: t,
|
|
11
|
+
items: m = [],
|
|
12
|
+
HeaderChildren: e,
|
|
13
|
+
AddButton: l,
|
|
14
|
+
className: h,
|
|
15
|
+
onClick: b,
|
|
16
|
+
i18n: f = (c) => c,
|
|
17
|
+
reverse: u,
|
|
18
|
+
after: v,
|
|
19
|
+
...i
|
|
20
|
+
}) {
|
|
21
|
+
const c = a("Tab"), y = a("TabsBody"), L = a("TabList"), d = a("TabPanel"), g = a("Tabs"), T = m.filter((o) => o.label || o.icon);
|
|
22
|
+
return /* @__PURE__ */ s(g, { className: h, style: p, children: [
|
|
23
|
+
/* @__PURE__ */ s("div", { children: [
|
|
24
|
+
/* @__PURE__ */ s(L, { children: [
|
|
25
|
+
T.map((o, n) => /* @__PURE__ */ r(
|
|
26
|
+
c,
|
|
27
|
+
{
|
|
28
|
+
onClick: () => {
|
|
29
|
+
b && b(o);
|
|
30
|
+
},
|
|
31
|
+
icon: o.icon,
|
|
32
|
+
value: n,
|
|
33
|
+
className: u ? "-reverse" : "",
|
|
34
|
+
after: v,
|
|
35
|
+
children: f(o.label || "")
|
|
36
|
+
},
|
|
37
|
+
n
|
|
38
|
+
)),
|
|
39
|
+
l && /* @__PURE__ */ r(l, { ...i, current: t })
|
|
40
|
+
] }),
|
|
41
|
+
e && /* @__PURE__ */ r(e, { ...i, current: t })
|
|
42
|
+
] }),
|
|
43
|
+
/* @__PURE__ */ r(y, { children: T.map((o, n) => /* @__PURE__ */ r(d, { value: n, children: o.children || o.content }, n)) })
|
|
44
|
+
] });
|
|
45
|
+
}
|
|
46
|
+
export {
|
|
47
|
+
w as TabsLegacy
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=TabsLegacy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabsLegacy.js","sources":["../../../src/molecules/tabs/TabsLegacy.tsx"],"sourcesContent":["import \"./all.js\";\n\nimport { CSSProperties, ReactNode } from \"react\";\n\nimport { getComponent } from \"../../registries/components.js\";\nimport type { Tab as DefaultTab } from \"./Tab.js\";\nimport type { TabList as DefaultTabList } from \"./TabList.js\";\nimport type { TabPanel as DefaultTabPanel } from \"./TabPanel.js\";\nimport type { Tabs as DefaultTabs } from \"./Tabs.js\";\nimport type { TabsBody as DefaultTabsBody } from \"./TabsBody.js\";\n\nexport interface TabsItemProps extends Record<string, any> {\n label?: string;\n icon?: string;\n children?: ReactNode;\n}\n\nexport interface TabsLegacyProps extends Record<string, any> {\n AddButton?: any;\n current?: TabsItemProps;\n items?: TabsItemProps[];\n style?: CSSProperties;\n className?: string;\n reverse?: boolean;\n onClick?: (item: TabsItemProps) => void;\n i18n?: (f: string) => string;\n}\n\nexport function TabsLegacy({\n style,\n current,\n items = [],\n HeaderChildren,\n AddButton,\n className,\n onClick,\n i18n = (f) => f,\n reverse,\n after,\n ...additionalProps\n}: TabsLegacyProps) {\n const Tab = getComponent<typeof DefaultTab>(\"Tab\");\n const TabsBody = getComponent<typeof DefaultTabsBody>(\"TabsBody\");\n const TabList = getComponent<typeof DefaultTabList>(\"TabList\");\n const TabPanel = getComponent<typeof DefaultTabPanel>(\"TabPanel\");\n const Tabs = getComponent<typeof DefaultTabs>(\"Tabs\");\n const tabs = items.filter((item) => item.label || item.icon);\n\n return (\n <Tabs className={className} style={style}>\n <div>\n <TabList>\n {tabs.map((item, index) => {\n return (\n <Tab\n key={index}\n onClick={() => {\n onClick && onClick(item);\n }}\n icon={item.icon}\n value={index}\n className={reverse ? \"-reverse\" : \"\"}\n after={after}\n >\n {i18n(item.label || \"\")}\n </Tab>\n );\n })}\n {AddButton && <AddButton {...additionalProps} current={current} />}\n </TabList>\n {HeaderChildren && <HeaderChildren {...additionalProps} current={current} />}\n </div>\n <TabsBody>\n {tabs.map((item, index) => {\n return (\n <TabPanel key={index} value={index}>\n {item.children || item.content}\n </TabPanel>\n );\n })}\n </TabsBody>\n </Tabs>\n );\n}\n"],"names":["TabsLegacy","style","current","items","HeaderChildren","AddButton","className","onClick","i18n","f","reverse","after","additionalProps","Tab","getComponent","TabsBody","TabList","TabPanel","Tabs","tabs","item","jsxs","index","jsx"],"mappings":";;;;;;;AA4BO,SAASA,EAAW;AAAA,EACzB,OAAAC;AAAA,EACA,SAAAC;AAAA,EACA,OAAAC,IAAQ,CAAC;AAAA,EACT,gBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,MAAAC,IAAO,CAACC,MAAMA;AAAA,EACd,SAAAC;AAAA,EACA,OAAAC;AAAA,EACA,GAAGC;AACL,GAAoB;AACZ,QAAAC,IAAMC,EAAgC,KAAK,GAC3CC,IAAWD,EAAqC,UAAU,GAC1DE,IAAUF,EAAoC,SAAS,GACvDG,IAAWH,EAAqC,UAAU,GAC1DI,IAAOJ,EAAiC,MAAM,GAC9CK,IAAOhB,EAAM,OAAO,CAACiB,MAASA,EAAK,SAASA,EAAK,IAAI;AAGzD,SAAA,gBAAAC,EAACH,GAAK,EAAA,WAAAZ,GAAsB,OAAAL,GAC1B,UAAA;AAAA,IAAA,gBAAAoB,EAAC,OACC,EAAA,UAAA;AAAA,MAAA,gBAAAA,EAACL,GACE,EAAA,UAAA;AAAA,QAAKG,EAAA,IAAI,CAACC,GAAME,MAEb,gBAAAC;AAAA,UAACV;AAAA,UAAA;AAAA,YAEC,SAAS,MAAM;AACb,cAAAN,KAAWA,EAAQa,CAAI;AAAA,YACzB;AAAA,YACA,MAAMA,EAAK;AAAA,YACX,OAAOE;AAAA,YACP,WAAWZ,IAAU,aAAa;AAAA,YAClC,OAAAC;AAAA,YAEC,UAAAH,EAAKY,EAAK,SAAS,EAAE;AAAA,UAAA;AAAA,UATjBE;AAAA,QAUP,CAEH;AAAA,QACAjB,KAAa,gBAAAkB,EAAClB,GAAW,EAAA,GAAGO,GAAiB,SAAAV,EAAkB,CAAA;AAAA,MAAA,GAClE;AAAA,MACCE,KAAkB,gBAAAmB,EAACnB,GAAgB,EAAA,GAAGQ,GAAiB,SAAAV,EAAkB,CAAA;AAAA,IAAA,GAC5E;AAAA,sBACCa,GACE,EAAA,UAAAI,EAAK,IAAI,CAACC,GAAME,MAEb,gBAAAC,EAACN,KAAqB,OAAOK,GAC1B,YAAK,YAAYF,EAAK,WADVE,CAEf,CAEH,EACH,CAAA;AAAA,EAAA,GACF;AAEJ;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Tab as a } from "./Tab.js";
|
|
2
|
+
import { TabList as t } from "./TabList.js";
|
|
3
|
+
import { TabPanel as f } from "./TabPanel.js";
|
|
4
|
+
import { Tabs as p } from "./Tabs.js";
|
|
5
|
+
import { TabsBody as T } from "./TabsBody.js";
|
|
6
|
+
export {
|
|
7
|
+
a as Tab,
|
|
8
|
+
t as TabList,
|
|
9
|
+
f as TabPanel,
|
|
10
|
+
p as Tabs,
|
|
11
|
+
T as TabsBody
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=all.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"all.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Dispatch, PropsWithChildren, RefObject } from 'react';
|
|
2
|
+
type RefTab<T extends HTMLElement = HTMLElement> = RefObject<T>;
|
|
3
|
+
type RefTabs<T extends HTMLElement = HTMLElement> = Map<number, RefTab<T>>;
|
|
4
|
+
type TabsUpdateAction = {
|
|
5
|
+
type: "update";
|
|
6
|
+
payload: number;
|
|
7
|
+
};
|
|
8
|
+
type TabsRegisterAction<T extends HTMLElement = HTMLElement> = {
|
|
9
|
+
type: "register";
|
|
10
|
+
payload: {
|
|
11
|
+
value: number;
|
|
12
|
+
ref: RefObject<T>;
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
type TabsUnregisterAction = {
|
|
16
|
+
type: "unregister";
|
|
17
|
+
payload: {
|
|
18
|
+
value: number;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
type TabsAction<T extends HTMLElement = HTMLElement> = {
|
|
22
|
+
type: "start" | "end" | "previous" | "next";
|
|
23
|
+
} | TabsUpdateAction | TabsRegisterAction<T> | TabsUnregisterAction;
|
|
24
|
+
interface TabsState<T extends HTMLElement = HTMLElement> {
|
|
25
|
+
uid: string;
|
|
26
|
+
value: number;
|
|
27
|
+
refs: RefTabs<T>;
|
|
28
|
+
}
|
|
29
|
+
interface TabControl<T extends HTMLElement = HTMLElement> extends TabsState<T> {
|
|
30
|
+
uid: string;
|
|
31
|
+
value: number;
|
|
32
|
+
refs: RefTabs<T>;
|
|
33
|
+
dispatch: Dispatch<TabsAction>;
|
|
34
|
+
register: (value: number, ref: RefTab<T>) => void;
|
|
35
|
+
unregister: (value: number) => void;
|
|
36
|
+
}
|
|
37
|
+
export declare const TabControlContext: import('react').Context<TabControl<HTMLElement>>;
|
|
38
|
+
export interface TabsProviderProps {
|
|
39
|
+
selected?: number;
|
|
40
|
+
/**
|
|
41
|
+
* The selected tab value
|
|
42
|
+
* @deprecated Min props as no effect on the Tabs component and will be removed in future versions
|
|
43
|
+
*/
|
|
44
|
+
min?: number;
|
|
45
|
+
/**
|
|
46
|
+
* The selected tab value
|
|
47
|
+
* @deprecated Max props as no effect on the Tabs component and will be removed in future versions
|
|
48
|
+
*/
|
|
49
|
+
max?: number;
|
|
50
|
+
}
|
|
51
|
+
export declare function TabsProvider({ selected, children }: PropsWithChildren<TabsProviderProps>): import("react/jsx-runtime").JSX.Element;
|
|
52
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as f } from "react/jsx-runtime";
|
|
3
|
+
import { createContext as p, useId as x, useReducer as y, useCallback as u } from "react";
|
|
4
|
+
function v(e) {
|
|
5
|
+
const n = [...e.refs.keys()], o = (n.findIndex((t) => t === e.value) + 1) % n.length;
|
|
6
|
+
return { ...e, value: n[o] };
|
|
7
|
+
}
|
|
8
|
+
function g(e) {
|
|
9
|
+
const n = [...e.refs.keys()], o = (n.findIndex((t) => t === e.value) - 1 + n.length) % n.length;
|
|
10
|
+
return { ...e, value: n[o] };
|
|
11
|
+
}
|
|
12
|
+
function C(e) {
|
|
13
|
+
const r = [...e.refs.keys()][0];
|
|
14
|
+
return {
|
|
15
|
+
...e,
|
|
16
|
+
value: r
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function k(e) {
|
|
20
|
+
const n = [...e.refs.keys()], r = n[n.length - 1];
|
|
21
|
+
return {
|
|
22
|
+
...e,
|
|
23
|
+
value: r
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function b(e, n) {
|
|
27
|
+
const r = new Map(e.refs);
|
|
28
|
+
return r.delete(n.payload.value), {
|
|
29
|
+
...e,
|
|
30
|
+
refs: r
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
function h(e, n) {
|
|
34
|
+
return {
|
|
35
|
+
...e,
|
|
36
|
+
refs: new Map(e.refs).set(n.payload.value, n.payload.ref)
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function w(e, n) {
|
|
40
|
+
return { ...e, value: n.payload };
|
|
41
|
+
}
|
|
42
|
+
const i = {
|
|
43
|
+
next: v,
|
|
44
|
+
previous: g,
|
|
45
|
+
start: C,
|
|
46
|
+
end: k,
|
|
47
|
+
register: h,
|
|
48
|
+
unregister: b,
|
|
49
|
+
update: w
|
|
50
|
+
};
|
|
51
|
+
function I(e, n) {
|
|
52
|
+
if (n.type in i) {
|
|
53
|
+
const r = i[n.type];
|
|
54
|
+
return r(e, n);
|
|
55
|
+
}
|
|
56
|
+
return e;
|
|
57
|
+
}
|
|
58
|
+
const d = p({
|
|
59
|
+
uid: "",
|
|
60
|
+
value: 0,
|
|
61
|
+
refs: /* @__PURE__ */ new Map(),
|
|
62
|
+
dispatch: () => {
|
|
63
|
+
console.warn("Tab Controller Context dispatch used outside of Provider");
|
|
64
|
+
},
|
|
65
|
+
register: () => {
|
|
66
|
+
console.warn("Tab Controller Context register used outside of Provider");
|
|
67
|
+
},
|
|
68
|
+
unregister: () => {
|
|
69
|
+
console.warn("Tab Controller Context unregister used outside of Provider");
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
d.displayName = "TabControlContext";
|
|
73
|
+
function P({ selected: e = 0, children: n }) {
|
|
74
|
+
const r = x(), [o, t] = y(I, { uid: r, value: e, refs: /* @__PURE__ */ new Map() }), a = u((s, c) => {
|
|
75
|
+
t({ type: "register", payload: { value: s, ref: c } });
|
|
76
|
+
}, []), l = u((s) => {
|
|
77
|
+
t({ type: "unregister", payload: { value: s } });
|
|
78
|
+
}, []);
|
|
79
|
+
return /* @__PURE__ */ f(d.Provider, { value: { ...o, dispatch: t, register: a, unregister: l }, children: n });
|
|
80
|
+
}
|
|
81
|
+
export {
|
|
82
|
+
d as TabControlContext,
|
|
83
|
+
P as TabsProvider
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=TabControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TabControl.js","sources":["../../../../src/molecules/tabs/context/TabControl.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, type Dispatch, type PropsWithChildren, type RefObject, useCallback, useId, useReducer } from \"react\";\n\ntype RefTab<T extends HTMLElement = HTMLElement> = RefObject<T>;\ntype RefTabs<T extends HTMLElement = HTMLElement> = Map<number, RefTab<T>>;\n\ntype TabsUpdateAction = {\n type: \"update\";\n payload: number;\n};\n\ntype TabsRegisterAction<T extends HTMLElement = HTMLElement> = {\n type: \"register\";\n payload: { value: number; ref: RefObject<T> };\n};\n\ntype TabsUnregisterAction = {\n type: \"unregister\";\n payload: { value: number };\n};\n\ntype TabsAction<T extends HTMLElement = HTMLElement> =\n | { type: \"start\" | \"end\" | \"previous\" | \"next\" }\n | TabsUpdateAction\n | TabsRegisterAction<T>\n | TabsUnregisterAction;\n\ninterface TabsState<T extends HTMLElement = HTMLElement> {\n uid: string;\n value: number;\n refs: RefTabs<T>;\n}\n\ninterface TabControl<T extends HTMLElement = HTMLElement> extends TabsState<T> {\n uid: string;\n value: number;\n refs: RefTabs<T>;\n dispatch: Dispatch<TabsAction>;\n register: (value: number, ref: RefTab<T>) => void;\n unregister: (value: number) => void;\n}\n\nfunction next(state: TabsState) {\n const keys = [...state.refs.keys()];\n const index = keys.findIndex((value) => value === state.value);\n const nextIndex = (index + 1) % keys.length;\n\n return { ...state, value: keys[nextIndex] };\n}\n\nfunction previous(state: TabsState) {\n const keys = [...state.refs.keys()];\n const index = keys.findIndex((value) => value === state.value);\n const previousIndex = (index - 1 + keys.length) % keys.length;\n\n return { ...state, value: keys[previousIndex] };\n}\n\nfunction start(state: TabsState) {\n const keys = [...state.refs.keys()];\n const firstIndex = keys[0];\n\n return {\n ...state,\n value: firstIndex\n };\n}\n\nfunction end(state: TabsState) {\n const keys = [...state.refs.keys()];\n const lastIndex = keys[keys.length - 1];\n\n return {\n ...state,\n value: lastIndex\n };\n}\n\nfunction unregister(state: TabsState, action: TabsUnregisterAction) {\n const deletedRefs = new Map(state.refs);\n deletedRefs.delete(action.payload.value);\n\n return {\n ...state,\n refs: deletedRefs\n };\n}\n\nfunction register(state: TabsState, action: TabsRegisterAction) {\n return {\n ...state,\n refs: new Map(state.refs).set(action.payload.value, action.payload.ref)\n };\n}\n\nfunction update(state: TabsState, action: TabsUpdateAction) {\n return { ...state, value: action.payload };\n}\n\nconst actions = {\n next,\n previous,\n start,\n end,\n register,\n unregister,\n update\n};\n\nfunction tabsReducer(state: TabsState, action: TabsAction): TabsState {\n if (action.type in actions) {\n const actionFunction = actions[action.type as keyof typeof actions] as (state: TabsState, action: TabsAction) => TabsState;\n\n return actionFunction(state, action);\n }\n\n return state;\n}\n\nexport const TabControlContext = createContext<TabControl>({\n uid: \"\",\n value: 0,\n refs: new Map(),\n dispatch: () => {\n console.warn(\"Tab Controller Context dispatch used outside of Provider\");\n },\n register: () => {\n console.warn(\"Tab Controller Context register used outside of Provider\");\n },\n unregister: () => {\n console.warn(\"Tab Controller Context unregister used outside of Provider\");\n }\n});\n\nTabControlContext.displayName = \"TabControlContext\";\n\nexport interface TabsProviderProps {\n selected?: number;\n /**\n * The selected tab value\n * @deprecated Min props as no effect on the Tabs component and will be removed in future versions\n */\n min?: number;\n\n /**\n * The selected tab value\n * @deprecated Max props as no effect on the Tabs component and will be removed in future versions\n */\n max?: number;\n}\n\nexport function TabsProvider({ selected = 0, children }: PropsWithChildren<TabsProviderProps>) {\n const uid = useId();\n const [state, dispatch] = useReducer(tabsReducer, { uid, value: selected, refs: new Map() });\n\n const register = useCallback(<T extends HTMLElement>(value: number, ref: RefTab<T>) => {\n dispatch({ type: \"register\", payload: { value, ref } });\n }, []);\n\n const unregister = useCallback((value: number) => {\n dispatch({ type: \"unregister\", payload: { value } });\n }, []);\n\n return <TabControlContext.Provider value={{ ...state, dispatch, register, unregister }}>{children}</TabControlContext.Provider>;\n}\n"],"names":["next","state","keys","nextIndex","value","previous","previousIndex","start","firstIndex","end","lastIndex","unregister","action","deletedRefs","register","update","actions","tabsReducer","actionFunction","TabControlContext","createContext","TabsProvider","selected","children","uid","useId","dispatch","useReducer","useCallback","ref","jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
export declare const useActiveTab: () => number;
|
|
3
|
+
export declare const useTabDispatch: () => import('react').Dispatch<{
|
|
4
|
+
type: "update";
|
|
5
|
+
payload: number;
|
|
6
|
+
} | {
|
|
7
|
+
type: "unregister";
|
|
8
|
+
payload: {
|
|
9
|
+
value: number;
|
|
10
|
+
};
|
|
11
|
+
} | {
|
|
12
|
+
type: "start" | "end" | "previous" | "next";
|
|
13
|
+
} | {
|
|
14
|
+
type: "register";
|
|
15
|
+
payload: {
|
|
16
|
+
value: number;
|
|
17
|
+
ref: RefObject<HTMLElement>;
|
|
18
|
+
};
|
|
19
|
+
}>;
|
|
20
|
+
export declare const useTabsUid: () => string;
|
|
21
|
+
interface Props<T extends HTMLElement> {
|
|
22
|
+
value: number;
|
|
23
|
+
ref: RefObject<T>;
|
|
24
|
+
}
|
|
25
|
+
export declare function useRegisterTabControl<T extends HTMLElement>({ value, ref }: Props<T>): import('react').Dispatch<{
|
|
26
|
+
type: "update";
|
|
27
|
+
payload: number;
|
|
28
|
+
} | {
|
|
29
|
+
type: "unregister";
|
|
30
|
+
payload: {
|
|
31
|
+
value: number;
|
|
32
|
+
};
|
|
33
|
+
} | {
|
|
34
|
+
type: "start" | "end" | "previous" | "next";
|
|
35
|
+
} | {
|
|
36
|
+
type: "register";
|
|
37
|
+
payload: {
|
|
38
|
+
value: number;
|
|
39
|
+
ref: RefObject<HTMLElement>;
|
|
40
|
+
};
|
|
41
|
+
}>;
|
|
42
|
+
export declare const useTabControls: () => Map<number, RefObject<HTMLElement>>;
|
|
43
|
+
export declare const useActiveTabControl: () => readonly [number, RefObject<HTMLElement> | undefined];
|
|
44
|
+
export {};
|