@clubmed/trident-ui 1.3.0-beta.2 → 1.3.0-beta.4
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/CHANGELOG.md +879 -864
- package/molecules/Tabs/Tab.d.ts +1 -1
- package/molecules/Tabs/Tab.js +51 -49
- package/molecules/Tabs/Tab.js.map +1 -1
- package/molecules/Tabs/TabPanel.js +31 -29
- package/molecules/Tabs/TabPanel.js.map +1 -1
- package/molecules/Tabs/Tabs.js +7 -9
- package/molecules/Tabs/Tabs.js.map +1 -1
- package/molecules/Tabs/context/TabControl.d.ts +29 -27
- package/molecules/Tabs/context/TabControl.js +67 -66
- package/molecules/Tabs/context/TabControl.js.map +1 -1
- package/molecules/Tabs/hooks/tabControl.d.ts +25 -14
- package/molecules/Tabs/hooks/tabControl.js +26 -23
- package/molecules/Tabs/hooks/tabControl.js.map +1 -1
- package/package.json +12 -12
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TabControl.js","sources":["../../../../lib/molecules/Tabs/context/TabControl.tsx"],"sourcesContent":["'use client';\n\nimport {\n type Dispatch,\n type
|
1
|
+
{"version":3,"file":"TabControl.js","sources":["../../../../lib/molecules/Tabs/context/TabControl.tsx"],"sourcesContent":["'use client';\n\nimport {\n createContext,\n type Dispatch,\n type PropsWithChildren,\n type RefObject,\n useCallback,\n useId,\n useReducer,\n} 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} as const;\n\nfunction tabsReducer(state: TabsState, action: TabsAction): TabsState {\n if (action.type in actions) {\n const actionFunction = actions[action.type] as (\n state: TabsState,\n action: TabsAction,\n ) => 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 (\n <TabControlContext.Provider value={{ ...state, dispatch, register, unregister }}>\n {children}\n </TabControlContext.Provider>\n );\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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"}
|
@@ -4,30 +4,41 @@ export declare const useTabDispatch: () => import("react").Dispatch<{
|
|
4
4
|
type: "update";
|
5
5
|
payload: number;
|
6
6
|
} | {
|
7
|
-
type: "
|
8
|
-
|
9
|
-
|
10
|
-
}
|
11
|
-
|
12
|
-
|
13
|
-
|
7
|
+
type: "unregister";
|
8
|
+
payload: {
|
9
|
+
value: number;
|
10
|
+
};
|
11
|
+
} | {
|
12
|
+
type: "start" | "end" | "next" | "previous";
|
13
|
+
} | {
|
14
|
+
type: "register";
|
15
|
+
payload: {
|
16
|
+
value: number;
|
17
|
+
ref: RefObject<HTMLElement>;
|
18
|
+
};
|
14
19
|
}>;
|
20
|
+
export declare const useTabsUid: () => string;
|
15
21
|
interface Props<T extends HTMLElement> {
|
16
22
|
value: number;
|
17
23
|
ref: RefObject<T>;
|
18
24
|
}
|
19
|
-
export declare
|
25
|
+
export declare function useRegisterTabControl<T extends HTMLElement>({ value, ref }: Props<T>): import("react").Dispatch<{
|
20
26
|
type: "update";
|
21
27
|
payload: number;
|
22
28
|
} | {
|
23
|
-
type: "
|
24
|
-
|
25
|
-
|
29
|
+
type: "unregister";
|
30
|
+
payload: {
|
31
|
+
value: number;
|
32
|
+
};
|
26
33
|
} | {
|
27
|
-
type: "start";
|
34
|
+
type: "start" | "end" | "next" | "previous";
|
28
35
|
} | {
|
29
|
-
type: "
|
36
|
+
type: "register";
|
37
|
+
payload: {
|
38
|
+
value: number;
|
39
|
+
ref: RefObject<HTMLElement>;
|
40
|
+
};
|
30
41
|
}>;
|
31
|
-
export declare const
|
42
|
+
export declare const useTabControls: () => Map<number, RefObject<HTMLElement>>;
|
32
43
|
export declare const useActiveTabControl: () => readonly [number, RefObject<HTMLElement> | undefined];
|
33
44
|
export {};
|
@@ -1,31 +1,34 @@
|
|
1
|
-
import { useContext as e, useEffect as
|
2
|
-
import {
|
3
|
-
const
|
4
|
-
const { value: t } = e(
|
1
|
+
import { useContext as e, useEffect as u } from "react";
|
2
|
+
import { TabControlContext as r } from "../context/TabControl.js";
|
3
|
+
const b = () => {
|
4
|
+
const { value: t } = e(r);
|
5
|
+
return t;
|
6
|
+
}, T = () => {
|
7
|
+
const { dispatch: t } = e(r);
|
5
8
|
return t;
|
6
9
|
}, f = () => {
|
7
|
-
const {
|
10
|
+
const { uid: t } = e(r);
|
8
11
|
return t;
|
9
|
-
}
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
}
|
18
|
-
const { refs: t } = e(u);
|
12
|
+
};
|
13
|
+
function p({ value: t, ref: s }) {
|
14
|
+
const { dispatch: c, register: n, unregister: o } = e(r);
|
15
|
+
return u(() => (n(t, s), () => {
|
16
|
+
o(t);
|
17
|
+
}), [t, s, n, o]), c;
|
18
|
+
}
|
19
|
+
const C = () => {
|
20
|
+
const { refs: t } = e(r);
|
19
21
|
return t;
|
20
|
-
},
|
21
|
-
const { value: t
|
22
|
-
return [t,
|
22
|
+
}, d = () => {
|
23
|
+
const { value: t, refs: s } = e(r);
|
24
|
+
return [t, s.get(t)];
|
23
25
|
};
|
24
26
|
export {
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
27
|
+
b as useActiveTab,
|
28
|
+
d as useActiveTabControl,
|
29
|
+
p as useRegisterTabControl,
|
30
|
+
C as useTabControls,
|
31
|
+
T as useTabDispatch,
|
32
|
+
f as useTabsUid
|
30
33
|
};
|
31
34
|
//# sourceMappingURL=tabControl.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"tabControl.js","sources":["../../../../lib/molecules/Tabs/hooks/tabControl.ts"],"sourcesContent":["import { useContext, useEffect
|
1
|
+
{"version":3,"file":"tabControl.js","sources":["../../../../lib/molecules/Tabs/hooks/tabControl.ts"],"sourcesContent":["import { type RefObject, useContext, useEffect } from 'react';\n\nimport { TabControlContext } from '../context/TabControl';\n\nexport const useActiveTab = () => {\n const { value } = useContext(TabControlContext);\n\n return value;\n};\n\nexport const useTabDispatch = () => {\n const { dispatch } = useContext(TabControlContext);\n\n return dispatch;\n};\n\nexport const useTabsUid = () => {\n const { uid } = useContext(TabControlContext);\n\n return uid;\n};\n\ninterface Props<T extends HTMLElement> {\n value: number;\n ref: RefObject<T>;\n}\n\nexport function useRegisterTabControl<T extends HTMLElement>({ value, ref }: Props<T>) {\n const { dispatch, register, unregister } = useContext(TabControlContext);\n\n useEffect(() => {\n register(value, ref);\n\n return () => {\n unregister(value);\n };\n }, [value, ref, register, unregister]);\n\n return dispatch;\n}\n\nexport const useTabControls = () => {\n const { refs } = useContext(TabControlContext);\n\n return refs;\n};\n\nexport const useActiveTabControl = () => {\n const { value, refs } = useContext(TabControlContext);\n\n return [value, refs.get(value)] as const;\n};\n"],"names":["useActiveTab","value","useContext","TabControlContext","useTabDispatch","dispatch","useTabsUid","uid","useRegisterTabControl","ref","register","unregister","useEffect","useTabControls","refs","useActiveTabControl"],"mappings":";;AAIO,MAAMA,IAAe,MAAM;AAChC,QAAM,EAAE,OAAAC,EAAA,IAAUC,EAAWC,CAAiB;AAEvC,SAAAF;AACT,GAEaG,IAAiB,MAAM;AAClC,QAAM,EAAE,UAAAC,EAAA,IAAaH,EAAWC,CAAiB;AAE1C,SAAAE;AACT,GAEaC,IAAa,MAAM;AAC9B,QAAM,EAAE,KAAAC,EAAA,IAAQL,EAAWC,CAAiB;AAErC,SAAAI;AACT;AAOO,SAASC,EAA6C,EAAE,OAAAP,GAAO,KAAAQ,KAAiB;AACrF,QAAM,EAAE,UAAAJ,GAAU,UAAAK,GAAU,YAAAC,EAAW,IAAIT,EAAWC,CAAiB;AAEvE,SAAAS,EAAU,OACRF,EAAST,GAAOQ,CAAG,GAEZ,MAAM;AACX,IAAAE,EAAWV,CAAK;AAAA,EAAA,IAEjB,CAACA,GAAOQ,GAAKC,GAAUC,CAAU,CAAC,GAE9BN;AACT;AAEO,MAAMQ,IAAiB,MAAM;AAClC,QAAM,EAAE,MAAAC,EAAA,IAASZ,EAAWC,CAAiB;AAEtC,SAAAW;AACT,GAEaC,IAAsB,MAAM;AACvC,QAAM,EAAE,OAAAd,GAAO,MAAAa,EAAK,IAAIZ,EAAWC,CAAiB;AAEpD,SAAO,CAACF,GAAOa,EAAK,IAAIb,CAAK,CAAC;AAChC;"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@clubmed/trident-ui",
|
3
|
-
"version": "1.3.0-beta.
|
3
|
+
"version": "1.3.0-beta.4",
|
4
4
|
"type": "module",
|
5
5
|
"description": "Shared ClubMed React UI components",
|
6
6
|
"keywords": [
|
@@ -18,7 +18,7 @@
|
|
18
18
|
"license": "BSD-3-Clause",
|
19
19
|
"repository": {
|
20
20
|
"type": "git",
|
21
|
-
"url": "https://scm.clubmed.com/clubmed/
|
21
|
+
"url": "https://scm.clubmed.com/clubmed/ui/trident-ui.git"
|
22
22
|
},
|
23
23
|
"main": "index.js",
|
24
24
|
"exports": {
|
@@ -31,16 +31,16 @@
|
|
31
31
|
"import": "./atoms/Icons/index.js",
|
32
32
|
"default": "./atoms/Icons/index.js"
|
33
33
|
},
|
34
|
-
"./atoms/Icons/svg": {
|
35
|
-
"types": "./atoms/Icons/svg/index.d.ts",
|
36
|
-
"import": "./atoms/Icons/svg/index.js",
|
37
|
-
"default": "./atoms/Icons/svg/index.js"
|
38
|
-
},
|
39
34
|
"./atoms/Icons/svg-use": {
|
40
35
|
"types": "./atoms/Icons/svg-use/index.d.ts",
|
41
36
|
"import": "./atoms/Icons/svg-use/index.js",
|
42
37
|
"default": "./atoms/Icons/svg-use/index.js"
|
43
38
|
},
|
39
|
+
"./atoms/Icons/svg": {
|
40
|
+
"types": "./atoms/Icons/svg/index.d.ts",
|
41
|
+
"import": "./atoms/Icons/svg/index.js",
|
42
|
+
"default": "./atoms/Icons/svg/index.js"
|
43
|
+
},
|
44
44
|
"./molecules/Tabs": {
|
45
45
|
"types": "./molecules/Tabs/index.d.ts",
|
46
46
|
"import": "./molecules/Tabs/index.js",
|
@@ -51,16 +51,16 @@
|
|
51
51
|
"import": "./molecules/Forms/Checkboxes/index.js",
|
52
52
|
"default": "./molecules/Forms/Checkboxes/index.js"
|
53
53
|
},
|
54
|
-
"./molecules/Forms/Password": {
|
55
|
-
"types": "./molecules/Forms/Password/index.d.ts",
|
56
|
-
"import": "./molecules/Forms/Password/index.js",
|
57
|
-
"default": "./molecules/Forms/Password/index.js"
|
58
|
-
},
|
59
54
|
"./molecules/Forms/Radios": {
|
60
55
|
"types": "./molecules/Forms/Radios/index.d.ts",
|
61
56
|
"import": "./molecules/Forms/Radios/index.js",
|
62
57
|
"default": "./molecules/Forms/Radios/index.js"
|
63
58
|
},
|
59
|
+
"./molecules/Forms/Password": {
|
60
|
+
"types": "./molecules/Forms/Password/index.d.ts",
|
61
|
+
"import": "./molecules/Forms/Password/index.js",
|
62
|
+
"default": "./molecules/Forms/Password/index.js"
|
63
|
+
},
|
64
64
|
"./fonts/*": "./fonts/*",
|
65
65
|
"./atoms/*": {
|
66
66
|
"types": "./atoms/*.d.ts",
|