@oneplatformdev/ui 0.1.99-beta.215 → 0.1.99-beta.216
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 +19 -0
- package/Combobox/Combobox.d.ts +4 -2
- package/Combobox/Combobox.d.ts.map +1 -1
- package/Combobox/Combobox.js +121 -99
- package/Combobox/Combobox.js.map +1 -1
- package/Combobox/Combobox.types.d.ts +20 -25
- package/Combobox/Combobox.types.d.ts.map +1 -1
- package/Combobox/Combobox.types.js.map +1 -1
- package/Combobox/ComboboxRenderContent.d.ts +13 -3
- package/Combobox/ComboboxRenderContent.d.ts.map +1 -1
- package/Combobox/ComboboxRenderContent.js +26 -27
- package/Combobox/ComboboxRenderContent.js.map +1 -1
- package/Combobox/ComboboxRenderTrigger.d.ts +8 -3
- package/Combobox/ComboboxRenderTrigger.d.ts.map +1 -1
- package/Combobox/ComboboxRenderTrigger.js +10 -10
- package/Combobox/ComboboxRenderTrigger.js.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,22 @@
|
|
|
1
|
+
## 0.1.99-beta.216 (2026-02-21)
|
|
2
|
+
|
|
3
|
+
### 🚀 Features
|
|
4
|
+
|
|
5
|
+
- **Combobox:** enhance nested options handling with deep space adjustments, toggle logic, and improved icon usage ([c66fc86](https://github.com/oneplatformdev/core-web/commit/c66fc86))
|
|
6
|
+
- **Combobox:** add `type` prop for single/multi-select, update render logic and styling for selection tracking ([9e019e8](https://github.com/oneplatformdev/core-web/commit/9e019e8))
|
|
7
|
+
- **Combobox:** introduce multi-select support with `MultiComboboxProps` and extend type handling for single and multi selection scenarios ([7e6de67](https://github.com/oneplatformdev/core-web/commit/7e6de67))
|
|
8
|
+
- **Combobox:** introduce multi-select support with `MultiComboboxProps` and extend type handling for single and multi selection scenarios ([3993506](https://github.com/oneplatformdev/core-web/commit/3993506))
|
|
9
|
+
|
|
10
|
+
### 🧱 Updated Dependencies
|
|
11
|
+
|
|
12
|
+
- Updated @oneplatformdev/utils to 0.1.99-beta.216
|
|
13
|
+
- Updated @oneplatformdev/hooks to 0.1.99-beta.216
|
|
14
|
+
- Updated @oneplatformdev/tokens to 0.1.99-beta.216
|
|
15
|
+
|
|
16
|
+
### ❤️ Thank You
|
|
17
|
+
|
|
18
|
+
- Bohdan Radchenko
|
|
19
|
+
|
|
1
20
|
## 0.1.99-beta.215 (2026-02-19)
|
|
2
21
|
|
|
3
22
|
### 🩹 Fixes
|
package/Combobox/Combobox.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { JSX } from 'react';
|
|
2
|
+
import { MultiComboboxProps, SingleComboboxProps } from './Combobox.types';
|
|
3
|
+
export declare function Combobox<Data extends object>(props: SingleComboboxProps<Data>): JSX.Element;
|
|
4
|
+
export declare function Combobox<Data extends object>(props: MultiComboboxProps<Data>): JSX.Element;
|
|
3
5
|
//# sourceMappingURL=Combobox.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../src/Combobox/Combobox.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../src/Combobox/Combobox.tsx"],"names":[],"mappings":"AAAA,OAAO,EACK,GAAG,EAOd,MAAM,OAAO,CAAC;AAGf,OAAO,EAIkB,kBAAkB,EAAE,mBAAmB,EAC/D,MAAM,kBAAkB,CAAC;AAI1B,wBAAgB,QAAQ,CAAC,IAAI,SAAS,MAAM,EAAE,KAAK,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;AAC7F,wBAAgB,QAAQ,CAAC,IAAI,SAAS,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC"}
|
package/Combobox/Combobox.js
CHANGED
|
@@ -1,159 +1,181 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useState as h, useCallback as
|
|
3
|
-
import { Popover as
|
|
4
|
-
import { useDebounceCallback as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
|
|
1
|
+
import { jsx as T, jsxs as te } from "react/jsx-runtime";
|
|
2
|
+
import { useState as h, useCallback as g, useEffect as ne, useMemo as k, useImperativeHandle as oe, useLayoutEffect as se } from "react";
|
|
3
|
+
import { Popover as re } from "../Popover/Popover.js";
|
|
4
|
+
import { useDebounceCallback as ae } from "@oneplatformdev/hooks";
|
|
5
|
+
import { DEFAULT_COMBOBOX_TYPE as ie } from "./Combobox.types.js";
|
|
6
|
+
import { ComboboxRenderTrigger as ce } from "./ComboboxRenderTrigger.js";
|
|
7
|
+
import { ComboboxRenderContent as le } from "./ComboboxRenderContent.js";
|
|
8
|
+
function pe(n) {
|
|
8
9
|
const {
|
|
9
|
-
ref: j,
|
|
10
10
|
value: u,
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
options: A,
|
|
12
|
+
placeholder: x,
|
|
13
|
+
disabled: B,
|
|
14
|
+
searchLabel: F,
|
|
15
|
+
emptyLabel: _,
|
|
16
|
+
fetchOptions: j,
|
|
17
|
+
renderTrigger: H,
|
|
18
|
+
commandInputAction: U,
|
|
19
|
+
renderList: z,
|
|
20
|
+
listHeadAction: G,
|
|
21
|
+
listFooterAction: N,
|
|
22
|
+
emptyAction: V,
|
|
23
|
+
slotProps: X
|
|
24
|
+
} = n, y = n.type ?? ie, [Y, P] = h(!1), [f, C] = h(!1), [b, w] = h(!1), [p, L] = h(""), [O, S] = h(/* @__PURE__ */ new Map()), [d, $] = h([]), [q, J] = h([]), v = g((e) => {
|
|
16
25
|
const s = (t) => {
|
|
17
|
-
const
|
|
26
|
+
const r = [], a = (i) => {
|
|
18
27
|
if (i)
|
|
19
28
|
for (const l of i)
|
|
20
|
-
|
|
29
|
+
r.push(l), l.items && l.items.length && a(l.items);
|
|
21
30
|
};
|
|
22
|
-
|
|
23
|
-
if (!
|
|
24
|
-
const c = ((
|
|
25
|
-
if (c) return [c, ...
|
|
31
|
+
a(t), J((i) => {
|
|
32
|
+
if (!r.find((o) => !!u && String(o.value) === String(u))) {
|
|
33
|
+
const c = ((O.size ? Array.from(O.values()) : void 0) || i).find((I) => !!u && String(I.value) === String(u));
|
|
34
|
+
if (c) return [c, ...r];
|
|
26
35
|
}
|
|
27
|
-
return
|
|
36
|
+
return r;
|
|
28
37
|
});
|
|
29
38
|
};
|
|
30
|
-
|
|
31
|
-
const
|
|
32
|
-
return s(
|
|
33
|
-
const i = new Map(
|
|
39
|
+
$((t) => {
|
|
40
|
+
const r = typeof e == "function" ? e(t) : e;
|
|
41
|
+
return s(r), S((a) => {
|
|
42
|
+
const i = new Map(a), l = Array.isArray(u) ? u : [u];
|
|
34
43
|
for (const o of l) {
|
|
35
44
|
if (!o || i.has(o)) continue;
|
|
36
|
-
const c =
|
|
45
|
+
const c = r.find((I) => String(I.value).toLowerCase() === String(o).toLowerCase());
|
|
37
46
|
c && i.set(c.value, c);
|
|
38
47
|
}
|
|
39
48
|
return i;
|
|
40
|
-
}),
|
|
49
|
+
}), r;
|
|
41
50
|
});
|
|
42
|
-
}, [
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}, [
|
|
46
|
-
const
|
|
47
|
-
w(e), e && (
|
|
48
|
-
}, []),
|
|
49
|
-
|
|
51
|
+
}, [O, u]);
|
|
52
|
+
ne(() => {
|
|
53
|
+
A?.length && v(A);
|
|
54
|
+
}, [A]);
|
|
55
|
+
const K = g(async (e) => {
|
|
56
|
+
w(e), e && (R(), L(""));
|
|
57
|
+
}, []), R = g(async (e) => {
|
|
58
|
+
C(!0);
|
|
50
59
|
try {
|
|
51
|
-
const s = await
|
|
60
|
+
const s = await j(e);
|
|
52
61
|
v(s);
|
|
53
62
|
} catch (s) {
|
|
54
63
|
console.error("Unexpected error while get option:", s);
|
|
55
64
|
} finally {
|
|
56
|
-
|
|
65
|
+
C(!1);
|
|
57
66
|
}
|
|
58
|
-
}, [v]),
|
|
67
|
+
}, [v]), Q = ae(R, 1e3, {
|
|
59
68
|
leading: !1,
|
|
60
69
|
trailing: !0
|
|
61
|
-
}),
|
|
62
|
-
|
|
63
|
-
}, []),
|
|
64
|
-
n.type === "single" && (
|
|
70
|
+
}), W = g((e) => {
|
|
71
|
+
C(!0), L(e), Q(e);
|
|
72
|
+
}, []), M = g((e) => {
|
|
73
|
+
n.type === "single" && (S((s) => {
|
|
65
74
|
let t = new Map(s);
|
|
66
|
-
const
|
|
67
|
-
return t.has(e.value) ? t = /* @__PURE__ */ new Map() : t.set(e.value, e),
|
|
68
|
-
}), w(!1)), n.type === "multi" &&
|
|
75
|
+
const r = t.has(e.value);
|
|
76
|
+
return t.has(e.value) ? t = /* @__PURE__ */ new Map() : t.set(e.value, e), r ? n.onChange?.(void 0) : n.onChange?.(e.value), t;
|
|
77
|
+
}), w(!1)), n.type === "multi" && S((s) => {
|
|
69
78
|
const t = new Map(s);
|
|
70
79
|
return t.has(e.value) ? t.delete(e.value) : t.set(e.value, e), n.onChange?.(Array.from(t.keys())), t;
|
|
71
80
|
});
|
|
72
|
-
}, [n.type, n.onChange]),
|
|
73
|
-
n.onChange(void 0),
|
|
74
|
-
}, [n.onChange]),
|
|
81
|
+
}, [n.type, n.onChange]), Z = g(() => {
|
|
82
|
+
n.onChange(void 0), S(/* @__PURE__ */ new Map()), w(!1);
|
|
83
|
+
}, [n.onChange]), D = k(() => !!p && !d.length && !f, [f, d.length, p]), E = k(() => !d.length && !f, [f, d.length, p]), m = k(() => {
|
|
75
84
|
const e = {
|
|
76
85
|
options: d,
|
|
77
86
|
setOptions: v,
|
|
78
|
-
search:
|
|
79
|
-
setSearch:
|
|
80
|
-
onChangeOption:
|
|
81
|
-
open:
|
|
87
|
+
search: p || "",
|
|
88
|
+
setSearch: L,
|
|
89
|
+
onChangeOption: M,
|
|
90
|
+
open: b,
|
|
82
91
|
setOpen: w,
|
|
83
92
|
loading: f,
|
|
84
|
-
setLoading:
|
|
85
|
-
isEmptyList:
|
|
86
|
-
isSearchedEmptyList:
|
|
87
|
-
placeholder:
|
|
88
|
-
}, s = Array.from(
|
|
89
|
-
if (
|
|
90
|
-
return { ...e, type: "multi", selectedOption: s, setSelectedOption: (
|
|
91
|
-
|
|
92
|
-
const l = Array.from(i.values()), o = typeof
|
|
93
|
+
setLoading: C,
|
|
94
|
+
isEmptyList: E,
|
|
95
|
+
isSearchedEmptyList: D,
|
|
96
|
+
placeholder: x
|
|
97
|
+
}, s = Array.from(O.values());
|
|
98
|
+
if (y === "multi")
|
|
99
|
+
return { ...e, type: "multi", selectedOption: s, setSelectedOption: (a) => {
|
|
100
|
+
S((i) => {
|
|
101
|
+
const l = Array.from(i.values()), o = typeof a == "function" ? a(l) : a;
|
|
93
102
|
return o ? new Map(o.map((c) => [c.value, c])) : /* @__PURE__ */ new Map();
|
|
94
103
|
});
|
|
95
104
|
} };
|
|
96
|
-
if (
|
|
105
|
+
if (y === "single") {
|
|
97
106
|
const t = s[0];
|
|
98
|
-
return { ...e, type: "single", selectedOption: t, setSelectedOption: (
|
|
99
|
-
|
|
100
|
-
const [l] = Array.from(i.values()), o = typeof
|
|
107
|
+
return { ...e, type: "single", selectedOption: t, setSelectedOption: (a) => {
|
|
108
|
+
S((i) => {
|
|
109
|
+
const [l] = Array.from(i.values()), o = typeof a == "function" ? a(l) : a, c = /* @__PURE__ */ new Map();
|
|
101
110
|
return o && c.set(o.value, o), c;
|
|
102
111
|
});
|
|
103
112
|
} };
|
|
104
113
|
}
|
|
105
|
-
throw new Error(`Combobox type ${
|
|
106
|
-
}, [
|
|
107
|
-
|
|
108
|
-
const
|
|
109
|
-
if (
|
|
110
|
-
|
|
114
|
+
throw new Error(`Combobox type ${y} is not supported`);
|
|
115
|
+
}, [x, f, b, d, p, O, E, D, v, M, n.type]);
|
|
116
|
+
oe(n.imperativeRef, () => m, [m]);
|
|
117
|
+
const ee = g(async () => {
|
|
118
|
+
if (n.onMount) {
|
|
119
|
+
P(!0);
|
|
111
120
|
try {
|
|
112
|
-
|
|
121
|
+
n.onMount?.(m);
|
|
113
122
|
} finally {
|
|
114
|
-
|
|
123
|
+
P(!1);
|
|
115
124
|
}
|
|
116
125
|
}
|
|
117
|
-
}, [
|
|
118
|
-
return
|
|
119
|
-
|
|
120
|
-
}, []), /* @__PURE__ */
|
|
121
|
-
|
|
126
|
+
}, [n.onMount, m]);
|
|
127
|
+
return se(() => {
|
|
128
|
+
ee();
|
|
129
|
+
}, []), /* @__PURE__ */ T("div", { className: "w-full", children: /* @__PURE__ */ te(
|
|
130
|
+
re,
|
|
122
131
|
{
|
|
123
|
-
open:
|
|
124
|
-
onOpenChange:
|
|
132
|
+
open: b,
|
|
133
|
+
onOpenChange: K,
|
|
125
134
|
children: [
|
|
126
|
-
/* @__PURE__ */
|
|
127
|
-
|
|
135
|
+
/* @__PURE__ */ T(
|
|
136
|
+
ce,
|
|
128
137
|
{
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
138
|
+
value: u,
|
|
139
|
+
type: y,
|
|
140
|
+
open: b,
|
|
141
|
+
initialLoading: Y,
|
|
142
|
+
selectedOptions: O,
|
|
143
|
+
flattenOptions: q,
|
|
144
|
+
onSelect: M,
|
|
145
|
+
onClearSelections: Z,
|
|
146
|
+
callbackStateParams: m,
|
|
147
|
+
renderTrigger: H,
|
|
148
|
+
placeholder: x,
|
|
149
|
+
disabled: B
|
|
137
150
|
}
|
|
138
151
|
),
|
|
139
|
-
/* @__PURE__ */
|
|
140
|
-
|
|
152
|
+
/* @__PURE__ */ T(
|
|
153
|
+
le,
|
|
141
154
|
{
|
|
142
|
-
|
|
155
|
+
value: u,
|
|
156
|
+
type: y,
|
|
143
157
|
options: d,
|
|
144
|
-
search:
|
|
145
|
-
onSearch:
|
|
146
|
-
onSelect:
|
|
147
|
-
callbackStateParams: S,
|
|
158
|
+
search: p,
|
|
159
|
+
onSearch: W,
|
|
160
|
+
onSelect: M,
|
|
148
161
|
loading: f,
|
|
149
|
-
isEmptyList:
|
|
162
|
+
isEmptyList: E,
|
|
163
|
+
callbackStateParams: m,
|
|
164
|
+
commandInputAction: U,
|
|
165
|
+
renderList: z,
|
|
166
|
+
listHeadAction: G,
|
|
167
|
+
listFooterAction: N,
|
|
168
|
+
emptyAction: V,
|
|
169
|
+
slotProps: X,
|
|
170
|
+
searchLabel: F,
|
|
171
|
+
emptyLabel: _
|
|
150
172
|
}
|
|
151
173
|
)
|
|
152
174
|
]
|
|
153
175
|
}
|
|
154
176
|
) });
|
|
155
|
-
}
|
|
177
|
+
}
|
|
156
178
|
export {
|
|
157
|
-
|
|
179
|
+
pe as Combobox
|
|
158
180
|
};
|
|
159
181
|
//# sourceMappingURL=Combobox.js.map
|
package/Combobox/Combobox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.js","sources":["../../src/Combobox/Combobox.tsx"],"sourcesContent":["import {\n Dispatch,\n SetStateAction,\n useCallback,\n useEffect, useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useState,\n} from 'react';\nimport { Popover } from '../Popover';\nimport { useDebounceCallback } from '@oneplatformdev/hooks';\nimport {\n ComboboxCallbackStateParams,\n ComboboxOption,\n ComboboxProps, MultiCComboboxCallbackStateParams, SingleComboboxCallbackStateParams,\n} from './Combobox.types';\nimport { ComboboxRenderTrigger } from \"./ComboboxRenderTrigger\";\nimport { ComboboxRenderContent } from \"./ComboboxRenderContent\";\n\n// TODO: refactor next component | nlt code\nexport const Combobox = <Data extends object = object, >(props: ComboboxProps<Data>) => {\n const {\n ref,\n value,\n placeholder,\n fetchOptions,\n options: itemOptions,\n onMount,\n } = props;\n\n const [ initialLoading, setInitialLoading ] = useState(false);\n const [ loading, setLoading ] = useState(false);\n\n const [ open, setOpen ] = useState(false);\n const [ searchTerm, setSearchTerm ] = useState('');\n\n const [ selectedOptions, setSelectedOptions ] = useState<\n Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>\n >(new Map());\n\n const [ options, _setOptions ] = useState<ComboboxOption<Data>[]>([]);\n const [ flattenOptions, setFlattenOptions ] = useState<ComboboxOption<Data>[]>([]);\n const setOptions: Dispatch<SetStateAction<ComboboxOption<Data>[]>> = useCallback((stater) => {\n const flatten = (next: ComboboxOption<Data>[]) => {\n const res: ComboboxOption<Data>[] = [];\n const walk = (nodes?: ComboboxOption<Data>[]) => {\n if (!nodes) return;\n for (const node of nodes) {\n res.push(node);\n if (node.items && node.items.length) walk(node.items);\n }\n };\n walk(next);\n setFlattenOptions((prev) => {\n const isIncludedInRes = res.find(o => !!value && String(o.value) === String(value));\n\n if (!isIncludedInRes) {\n const selectedOption = selectedOptions.size ? Array.from(selectedOptions.values()) : undefined;\n const current = (selectedOption || prev).find(o => !!value && String(o.value) === String(value))\n if (current) return [ current, ...res ];\n }\n\n return res;\n });\n }\n _setOptions((prev) => {\n const next: ComboboxOption<Data>[] = typeof stater === 'function' ? stater(prev) : stater;\n flatten(next);\n setSelectedOptions(prevSelections => {\n const nextSelections = new Map(prevSelections);\n const vls = Array.isArray(value) ? value : [value];\n for (const v of vls) {\n if(!v) continue;\n if(nextSelections.has(v)) continue;\n const o = next.find(o => String(o.value).toLowerCase() === String(v).toLowerCase());\n if(!o) continue;\n nextSelections.set(o.value, o);\n }\n return nextSelections;\n })\n return next;\n });\n }, [ selectedOptions, value ])\n\n useEffect(() => {\n itemOptions?.length && setOptions(itemOptions);\n }, [ itemOptions ]);\n\n const handlePopoverOpen = useCallback(async (next: boolean) => {\n setOpen(next);\n if(next) {\n void getData();\n setSearchTerm('');\n }\n }, []);\n\n const getData = useCallback(async (search?: string) => {\n setLoading(true);\n try {\n const fetchedOptions = await fetchOptions(search);\n setOptions(fetchedOptions);\n } catch (error) {\n console.error('Unexpected error while get option:', error);\n } finally {\n setLoading(false);\n }\n }, [ setOptions ]);\n const debouncedGetData = useDebounceCallback(getData, 1000, {\n leading: false,\n trailing: true,\n });\n\n const handleSearchChange = useCallback((value: string) => {\n setLoading(true);\n setSearchTerm(value);\n debouncedGetData(value);\n }, []);\n\n const onChangeOption = useCallback((option: ComboboxOption<Data>) => {\n if(props.type === 'single') {\n setSelectedOptions(prev => {\n let next = new Map(prev);\n const isSelected = next.has(option.value);\n\n if(next.has(option.value)) next = new Map();\n else next.set(option.value, option);\n\n if(isSelected) props.onChange?.(undefined);\n else props.onChange?.(option.value);\n\n return next;\n });\n setOpen(false);\n }\n\n if(props.type === 'multi') {\n setSelectedOptions(prev => {\n const next = new Map(prev);\n if(next.has(option.value)) next.delete(option.value);\n else next.set(option.value, option);\n props.onChange?.(Array.from(next.keys()));\n return next;\n });\n }\n }, [props.type, props.onChange]);\n\n const handleClearSelections = useCallback(() => {\n props.onChange(undefined);\n setSelectedOptions(new Map());\n setOpen(false);\n }, [props.onChange]);\n\n const isSearchedEmptyList = useMemo(() => {\n return Boolean(searchTerm) && !options.length && !loading;\n }, [ loading, options.length, searchTerm ])\n\n const isEmptyList = useMemo(() => {\n return !options.length && !loading;\n }, [ loading, options.length, searchTerm ])\n\n const callbackStateParams =\n useMemo((): ComboboxCallbackStateParams<Data> => {\n\n const base = {\n options,\n setOptions,\n search: searchTerm || '',\n setSearch: setSearchTerm,\n onChangeOption,\n open,\n setOpen,\n loading,\n setLoading,\n isEmptyList,\n isSearchedEmptyList,\n placeholder\n }\n\n const selectedOptionArray = Array.from(selectedOptions.values());\n\n if(props.type === 'multi') {\n const selectedOption = selectedOptionArray\n const setSelectedOption: Dispatch<SetStateAction<ComboboxOption<Data>[] | undefined>> = (value) => {\n setSelectedOptions((prevSet) => {\n const prevStateArray = Array.from(prevSet.values());\n const nextStateArray = typeof value === 'function'\n ? (value as (prev: ComboboxOption<Data>[]) => ComboboxOption<Data>[])(prevStateArray)\n : value;\n if (!nextStateArray) return new Map();\n return new Map(nextStateArray.map(o => [o.value, o]));\n });\n };\n return { ...base, type: 'multi', selectedOption, setSelectedOption } satisfies MultiCComboboxCallbackStateParams<Data>;\n }\n\n if(props.type === 'single') {\n const selectedOption = selectedOptionArray[0]\n const setSelectedOption: Dispatch<SetStateAction<ComboboxOption<Data> | undefined>> = (value) => {\n setSelectedOptions((prevSet) => {\n const [currentSingle] = Array.from(prevSet.values());\n const nextValue = typeof value === 'function'\n ? (value as (prev: ComboboxOption<Data> | undefined) => ComboboxOption<Data> | undefined)(currentSingle)\n : value;\n\n const nextMap = new Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>();\n if (nextValue) nextMap.set(nextValue.value, nextValue);\n return nextMap;\n });\n };\n return { ...base, type: 'single', selectedOption, setSelectedOption } satisfies SingleComboboxCallbackStateParams<Data>;\n }\n\n throw new Error(`Combobox type ${props.type} is not supported`);\n\n }, [ placeholder, loading, open, options, searchTerm, selectedOptions, isEmptyList, isSearchedEmptyList, setOptions, onChangeOption, props.type ]);\n useImperativeHandle(ref, () => callbackStateParams, [callbackStateParams]);\n\n const runOnMount = useCallback(async () => {\n if (!onMount) return;\n setInitialLoading(true);\n try {\n await onMount(callbackStateParams);\n } finally {\n setInitialLoading(false);\n }\n }, [ onMount, callbackStateParams ]);\n useLayoutEffect(() => {\n runOnMount();\n }, []);\n\n return (\n <div className=\"w-full\">\n <Popover\n open={open}\n onOpenChange={handlePopoverOpen}\n >\n <ComboboxRenderTrigger\n {...props}\n open={open}\n initialLoading={initialLoading}\n callbackStateParams={callbackStateParams}\n flattenOptions={flattenOptions}\n onSelect={onChangeOption}\n onClearSelections={handleClearSelections}\n selectedOptions={selectedOptions}\n />\n\n <ComboboxRenderContent\n {...props}\n options={options}\n search={searchTerm}\n onSearch={handleSearchChange}\n onSelect={onChangeOption}\n callbackStateParams={callbackStateParams}\n loading={loading}\n isEmptyList={isEmptyList}\n />\n </Popover>\n </div>\n );\n}\n"],"names":["Combobox","props","ref","value","placeholder","fetchOptions","itemOptions","onMount","initialLoading","setInitialLoading","useState","loading","setLoading","open","setOpen","searchTerm","setSearchTerm","selectedOptions","setSelectedOptions","options","_setOptions","flattenOptions","setFlattenOptions","setOptions","useCallback","stater","flatten","next","res","walk","nodes","node","prev","current","o","prevSelections","nextSelections","vls","v","useEffect","handlePopoverOpen","getData","search","fetchedOptions","error","debouncedGetData","useDebounceCallback","handleSearchChange","onChangeOption","option","isSelected","handleClearSelections","isSearchedEmptyList","useMemo","isEmptyList","callbackStateParams","base","selectedOptionArray","prevSet","prevStateArray","nextStateArray","selectedOption","currentSingle","nextValue","nextMap","useImperativeHandle","runOnMount","useLayoutEffect","jsx","jsxs","Popover","ComboboxRenderTrigger","ComboboxRenderContent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Combobox.js","sources":["../../src/Combobox/Combobox.tsx"],"sourcesContent":["import {\n Dispatch, JSX,\n SetStateAction,\n useCallback,\n useEffect, useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useState,\n} from 'react';\nimport { Popover } from '../Popover';\nimport { useDebounceCallback } from '@oneplatformdev/hooks';\nimport {\n ComboboxCallbackStateParams, ComboboxCallbackStateParamsRenderHandler,\n ComboboxOption,\n ComboboxProps, ComboboxSelectedType,\n DEFAULT_COMBOBOX_TYPE, MultiComboboxProps, SingleComboboxProps,\n} from './Combobox.types';\nimport { ComboboxRenderTrigger } from \"./ComboboxRenderTrigger\";\nimport { ComboboxRenderContent } from \"./ComboboxRenderContent\";\n\nexport function Combobox<Data extends object>(props: SingleComboboxProps<Data>): JSX.Element;\nexport function Combobox<Data extends object>(props: MultiComboboxProps<Data>): JSX.Element;\n\nexport function Combobox<Data extends object = object>(\n props: ComboboxProps<Data, 'single'> | ComboboxProps<Data, 'multi'>\n): JSX.Element {\n const {\n value,\n options: itemOptions,\n placeholder,\n disabled,\n searchLabel,\n emptyLabel,\n fetchOptions,\n renderTrigger,\n commandInputAction,\n renderList,\n listHeadAction,\n listFooterAction,\n emptyAction,\n slotProps,\n } = props;\n\n const type: ComboboxSelectedType = props.type ?? DEFAULT_COMBOBOX_TYPE;\n type StateSingle = ComboboxCallbackStateParams<Data, 'single'>;\n type StateMulti = ComboboxCallbackStateParams<Data, 'multi'>;\n type State = StateSingle | StateMulti;\n\n const [ initialLoading, setInitialLoading ] = useState(false);\n const [ loading, setLoading ] = useState(false);\n\n const [ open, setOpen ] = useState(false);\n const [ searchTerm, setSearchTerm ] = useState('');\n\n const [ selectedOptions, setSelectedOptions ] = useState<\n Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>\n >(new Map());\n\n const [ options, _setOptions ] = useState<ComboboxOption<Data>[]>([]);\n const [ flattenOptions, setFlattenOptions ] = useState<ComboboxOption<Data>[]>([]);\n const setOptions: Dispatch<SetStateAction<ComboboxOption<Data>[]>> = useCallback((stater) => {\n const flatten = (next: ComboboxOption<Data>[]) => {\n const res: ComboboxOption<Data>[] = [];\n const walk = (nodes?: ComboboxOption<Data>[]) => {\n if (!nodes) return;\n for (const node of nodes) {\n res.push(node);\n if (node.items && node.items.length) walk(node.items);\n }\n };\n walk(next);\n setFlattenOptions((prev) => {\n const isIncludedInRes = res.find(o => !!value && String(o.value) === String(value));\n\n if (!isIncludedInRes) {\n const selectedOption = selectedOptions.size ? Array.from(selectedOptions.values()) : undefined;\n const current = (selectedOption || prev).find(o => !!value && String(o.value) === String(value))\n if (current) return [ current, ...res ];\n }\n\n return res;\n });\n }\n _setOptions((prev) => {\n const next: ComboboxOption<Data>[] = typeof stater === 'function' ? stater(prev) : stater;\n flatten(next);\n setSelectedOptions(prevSelections => {\n const nextSelections = new Map(prevSelections);\n const vls = Array.isArray(value) ? value : [value];\n for (const v of vls) {\n if(!v) continue;\n if(nextSelections.has(v)) continue;\n const o = next.find(o => String(o.value).toLowerCase() === String(v).toLowerCase());\n if(!o) continue;\n nextSelections.set(o.value, o);\n }\n return nextSelections;\n })\n return next;\n });\n }, [ selectedOptions, value ])\n\n useEffect(() => {\n itemOptions?.length && setOptions(itemOptions);\n }, [ itemOptions ]);\n\n const handlePopoverOpen = useCallback(async (next: boolean) => {\n setOpen(next);\n if(next) {\n void getData();\n setSearchTerm('');\n }\n }, []);\n\n const getData = useCallback(async (search?: string) => {\n setLoading(true);\n try {\n const fetchedOptions = await fetchOptions(search);\n setOptions(fetchedOptions);\n } catch (error) {\n console.error('Unexpected error while get option:', error);\n } finally {\n setLoading(false);\n }\n }, [ setOptions ]);\n const debouncedGetData = useDebounceCallback(getData, 1000, {\n leading: false,\n trailing: true,\n });\n\n const handleSearchChange = useCallback((value: string) => {\n setLoading(true);\n setSearchTerm(value);\n debouncedGetData(value);\n }, []);\n\n const onChangeOption = useCallback((option: ComboboxOption<Data>) => {\n if(props.type === 'single') {\n setSelectedOptions(prev => {\n let next = new Map(prev);\n const isSelected = next.has(option.value);\n\n if(next.has(option.value)) next = new Map();\n else next.set(option.value, option);\n\n if(isSelected) props.onChange?.(undefined);\n else props.onChange?.(option.value);\n\n return next;\n });\n setOpen(false);\n }\n\n if(props.type === 'multi') {\n setSelectedOptions(prev => {\n const next = new Map(prev);\n if(next.has(option.value)) next.delete(option.value);\n else next.set(option.value, option);\n props.onChange?.(Array.from(next.keys()));\n return next;\n });\n }\n }, [props.type, props.onChange]);\n\n const handleClearSelections = useCallback(() => {\n props.onChange(undefined);\n setSelectedOptions(new Map());\n setOpen(false);\n }, [props.onChange]);\n\n const isSearchedEmptyList = useMemo(() => {\n return Boolean(searchTerm) && !options.length && !loading;\n }, [ loading, options.length, searchTerm ])\n\n const isEmptyList = useMemo(() => {\n return !options.length && !loading;\n }, [ loading, options.length, searchTerm ])\n\n const callbackStateParams = useMemo((): State => {\n const base = {\n options,\n setOptions,\n search: searchTerm || '',\n setSearch: setSearchTerm,\n onChangeOption,\n open,\n setOpen,\n loading,\n setLoading,\n isEmptyList,\n isSearchedEmptyList,\n placeholder,\n }\n\n const selectedOptionArray = Array.from(selectedOptions.values());\n\n if(type === 'multi') {\n const selectedOption = selectedOptionArray\n const setSelectedOption: Dispatch<SetStateAction<ComboboxOption<Data>[] | undefined>> = (value) => {\n setSelectedOptions((prevSet) => {\n const prevStateArray = Array.from(prevSet.values());\n const nextStateArray = typeof value === 'function'\n ? (value as (prev: ComboboxOption<Data>[]) => ComboboxOption<Data>[])(prevStateArray)\n : value;\n if (!nextStateArray) return new Map();\n return new Map(nextStateArray.map(o => [o.value, o]));\n });\n };\n return { ...base, type: 'multi', selectedOption, setSelectedOption } satisfies StateMulti;\n }\n\n if(type === 'single') {\n const selectedOption = selectedOptionArray[0]\n const setSelectedOption: Dispatch<SetStateAction<ComboboxOption<Data> | undefined>> = (value) => {\n setSelectedOptions((prevSet) => {\n const [currentSingle] = Array.from(prevSet.values());\n const nextValue = typeof value === 'function'\n ? (value as (prev: ComboboxOption<Data> | undefined) => ComboboxOption<Data> | undefined)(currentSingle)\n : value;\n\n const nextMap = new Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>();\n if (nextValue) nextMap.set(nextValue.value, nextValue);\n return nextMap;\n });\n };\n return { ...base, type: 'single', selectedOption, setSelectedOption } satisfies StateSingle;\n }\n\n throw new Error(`Combobox type ${type} is not supported`);\n\n }, [ placeholder, loading, open, options, searchTerm, selectedOptions, isEmptyList, isSearchedEmptyList, setOptions, onChangeOption, props.type ]);\n useImperativeHandle(props.imperativeRef, () => callbackStateParams, [callbackStateParams]);\n\n const runOnMount = useCallback(async () => {\n if (!props.onMount) return;\n setInitialLoading(true);\n try {\n if (type === 'multi') {\n (props as MultiComboboxProps<Data>).onMount?.(callbackStateParams as StateMulti);\n } else {\n (props as SingleComboboxProps<Data>).onMount?.(callbackStateParams as StateSingle);\n }\n } finally {\n setInitialLoading(false);\n }\n }, [ props.onMount, callbackStateParams ]);\n useLayoutEffect(() => {\n runOnMount();\n }, []);\n\n return (\n <div className=\"w-full\">\n <Popover\n open={open}\n onOpenChange={handlePopoverOpen}\n >\n <ComboboxRenderTrigger\n value={value}\n type={type}\n open={open}\n initialLoading={initialLoading}\n selectedOptions={selectedOptions}\n flattenOptions={flattenOptions}\n onSelect={onChangeOption}\n onClearSelections={handleClearSelections}\n callbackStateParams={callbackStateParams}\n renderTrigger={renderTrigger as ComboboxCallbackStateParamsRenderHandler<Data>}\n placeholder={placeholder}\n disabled={disabled}\n />\n\n <ComboboxRenderContent\n value={value}\n type={type}\n options={options}\n search={searchTerm}\n onSearch={handleSearchChange}\n onSelect={onChangeOption}\n loading={loading}\n isEmptyList={isEmptyList}\n callbackStateParams={callbackStateParams}\n commandInputAction={commandInputAction as ComboboxCallbackStateParamsRenderHandler<Data>}\n renderList={renderList as ComboboxCallbackStateParamsRenderHandler<Data>}\n listHeadAction={listHeadAction as ComboboxCallbackStateParamsRenderHandler<Data>}\n listFooterAction={listFooterAction as ComboboxCallbackStateParamsRenderHandler<Data>}\n emptyAction={emptyAction as ComboboxCallbackStateParamsRenderHandler<Data>}\n slotProps={slotProps}\n searchLabel={searchLabel}\n emptyLabel={emptyLabel}\n />\n </Popover>\n </div>\n );\n}\n"],"names":["Combobox","props","value","itemOptions","placeholder","disabled","searchLabel","emptyLabel","fetchOptions","renderTrigger","commandInputAction","renderList","listHeadAction","listFooterAction","emptyAction","slotProps","type","DEFAULT_COMBOBOX_TYPE","initialLoading","setInitialLoading","useState","loading","setLoading","open","setOpen","searchTerm","setSearchTerm","selectedOptions","setSelectedOptions","options","_setOptions","flattenOptions","setFlattenOptions","setOptions","useCallback","stater","flatten","next","res","walk","nodes","node","prev","current","o","prevSelections","nextSelections","vls","v","useEffect","handlePopoverOpen","getData","search","fetchedOptions","error","debouncedGetData","useDebounceCallback","handleSearchChange","onChangeOption","option","isSelected","handleClearSelections","isSearchedEmptyList","useMemo","isEmptyList","callbackStateParams","base","selectedOptionArray","prevSet","prevStateArray","nextStateArray","selectedOption","currentSingle","nextValue","nextMap","useImperativeHandle","runOnMount","useLayoutEffect","jsx","jsxs","Popover","ComboboxRenderTrigger","ComboboxRenderContent"],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ export interface ComboboxOption<Data extends object = object> {
|
|
|
12
12
|
level?: number;
|
|
13
13
|
matched?: boolean;
|
|
14
14
|
}
|
|
15
|
-
interface
|
|
15
|
+
export interface ComboboxCallbackStateParams<Data extends object = object, T extends ComboboxSelectedType = 'single'> {
|
|
16
16
|
options: ComboboxOption<Data>[];
|
|
17
17
|
setOptions: Dispatch<SetStateAction<ComboboxOption<Data>[]>>;
|
|
18
18
|
search: string;
|
|
@@ -25,18 +25,12 @@ interface ComboboxCallbackStateBaseParams<Data extends object = object> {
|
|
|
25
25
|
isEmptyList: boolean;
|
|
26
26
|
isSearchedEmptyList: boolean;
|
|
27
27
|
placeholder?: string;
|
|
28
|
+
type: T;
|
|
29
|
+
selectedOption: T extends 'single' ? ComboboxOption<Data> | undefined : ComboboxOption<Data>[];
|
|
30
|
+
setSelectedOption: T extends 'single' ? Dispatch<SetStateAction<ComboboxOption<Data> | undefined>> : Dispatch<SetStateAction<ComboboxOption<Data>[] | undefined>>;
|
|
28
31
|
}
|
|
29
|
-
export
|
|
30
|
-
|
|
31
|
-
selectedOption?: ComboboxOption<Data> | undefined;
|
|
32
|
-
setSelectedOption: Dispatch<SetStateAction<ComboboxOption<Data> | undefined>>;
|
|
33
|
-
}
|
|
34
|
-
export interface MultiCComboboxCallbackStateParams<Data extends object = object> extends ComboboxCallbackStateBaseParams<Data> {
|
|
35
|
-
type: 'multi';
|
|
36
|
-
selectedOption?: ComboboxOption<Data>[];
|
|
37
|
-
setSelectedOption: Dispatch<SetStateAction<ComboboxOption<Data>[] | undefined>>;
|
|
38
|
-
}
|
|
39
|
-
export type ComboboxCallbackStateParams<Data extends object = object> = SingleComboboxCallbackStateParams<Data> | MultiCComboboxCallbackStateParams<Data>;
|
|
32
|
+
export type ComboboxCallbackStateParamsUnion<Data extends object = object> = ComboboxCallbackStateParams<Data, 'single'> | ComboboxCallbackStateParams<Data, 'multi'>;
|
|
33
|
+
export type ComboboxCallbackStateParamsRenderHandler<Data extends object = object> = (params: ComboboxCallbackStateParamsUnion<Data>) => ReactNode;
|
|
40
34
|
export interface IComboboxOptionsNodeHandlersProps<Data extends object = object> {
|
|
41
35
|
defaultNodeOpen?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);
|
|
42
36
|
defaultNodeDisabled?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);
|
|
@@ -58,11 +52,12 @@ export interface IComboboxOptionsProps<Data extends object = object> extends Omi
|
|
|
58
52
|
interface IListActionProps extends HTMLAttributes<HTMLDivElement> {
|
|
59
53
|
bordered?: boolean;
|
|
60
54
|
}
|
|
61
|
-
interface ISlotProps {
|
|
55
|
+
export interface ISlotProps {
|
|
62
56
|
listFooterAction?: IListActionProps;
|
|
63
57
|
}
|
|
64
|
-
export interface ComboboxBaseProps<Data extends object = object> extends IComboboxOptionsNodeHandlersProps {
|
|
65
|
-
|
|
58
|
+
export interface ComboboxBaseProps<Data extends object = object, T extends ComboboxSelectedType = 'single'> extends IComboboxOptionsNodeHandlersProps {
|
|
59
|
+
type?: T;
|
|
60
|
+
imperativeRef?: Ref<ComboboxCallbackStateParams<Data, 'single'> | ComboboxCallbackStateParams<Data, 'multi'> | null>;
|
|
66
61
|
placeholder?: string;
|
|
67
62
|
searchLabel?: string;
|
|
68
63
|
disabled?: boolean;
|
|
@@ -71,29 +66,29 @@ export interface ComboboxBaseProps<Data extends object = object> extends ICombob
|
|
|
71
66
|
/** Command Empty list label*/
|
|
72
67
|
emptyLabel?: string;
|
|
73
68
|
/** Command Empty list action */
|
|
74
|
-
emptyAction?: ((params: ComboboxCallbackStateParams<Data>) => ReactNode) | ReactNode;
|
|
69
|
+
emptyAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;
|
|
75
70
|
/** Command Input footer action */
|
|
76
|
-
commandInputAction?: ((params: ComboboxCallbackStateParams<Data>) => ReactNode) | ReactNode;
|
|
71
|
+
commandInputAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;
|
|
77
72
|
/** Command List first element action */
|
|
78
|
-
listHeadAction?: ((params: ComboboxCallbackStateParams<Data>) => ReactNode) | ReactNode;
|
|
73
|
+
listHeadAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;
|
|
79
74
|
/** Command List footer element action */
|
|
80
|
-
listFooterAction?: ((params: ComboboxCallbackStateParams<Data>) => ReactNode) | ReactNode;
|
|
75
|
+
listFooterAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;
|
|
81
76
|
/** Callback for load data on start component */
|
|
82
|
-
onMount?: (params: ComboboxCallbackStateParams<Data>) => Promise<void>;
|
|
83
|
-
renderTrigger?: (params: ComboboxCallbackStateParams<Data>) => ReactNode;
|
|
84
|
-
renderList?: (params: ComboboxCallbackStateParams<Data>) => ReactNode;
|
|
77
|
+
onMount?: (params: ComboboxCallbackStateParams<Data, T>) => Promise<void>;
|
|
78
|
+
renderTrigger?: (params: ComboboxCallbackStateParams<Data, T>) => ReactNode;
|
|
79
|
+
renderList?: (params: ComboboxCallbackStateParams<Data, T>) => ReactNode;
|
|
85
80
|
slotProps?: ISlotProps;
|
|
86
81
|
}
|
|
87
|
-
export interface SingleComboboxProps<Data extends object = object> extends ComboboxBaseProps<Data> {
|
|
82
|
+
export interface SingleComboboxProps<Data extends object = object> extends ComboboxBaseProps<Data, 'single'> {
|
|
88
83
|
type?: 'single';
|
|
89
84
|
value?: string;
|
|
90
85
|
onChange: (value: string | undefined) => void;
|
|
91
86
|
}
|
|
92
|
-
export interface MultiComboboxProps<Data extends object = object> extends ComboboxBaseProps<Data> {
|
|
87
|
+
export interface MultiComboboxProps<Data extends object = object> extends ComboboxBaseProps<Data, 'multi'> {
|
|
93
88
|
type: 'multi';
|
|
94
89
|
value?: string[];
|
|
95
90
|
onChange: (value: string[] | undefined) => void;
|
|
96
91
|
}
|
|
97
|
-
export type ComboboxProps<Data extends object = object> = SingleComboboxProps<Data>
|
|
92
|
+
export type ComboboxProps<Data extends object = object, T extends ComboboxSelectedType = 'single'> = T extends 'single' ? SingleComboboxProps<Data> : MultiComboboxProps<Data>;
|
|
98
93
|
export {};
|
|
99
94
|
//# sourceMappingURL=Combobox.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.types.d.ts","sourceRoot":"","sources":["../../src/Combobox/Combobox.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEjF,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,MAAM,EAAE,CAAC;AAClD,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtD,eAAO,MAAM,qBAAqB,EAAE,oBAA+B,CAAC;AAEpE,MAAM,WAAW,cAAc,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,IAAI,CAAC;IAEZ,KAAK,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,
|
|
1
|
+
{"version":3,"file":"Combobox.types.d.ts","sourceRoot":"","sources":["../../src/Combobox/Combobox.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.types.js","sources":["../../src/Combobox/Combobox.types.ts"],"sourcesContent":["import { Dispatch, HTMLAttributes, ReactNode, Ref, SetStateAction } from 'react';\n\nexport type ComboboxValueType = string | string[];\nexport type ComboboxSelectedType = 'single' | 'multi';\n\nexport const DEFAULT_COMBOBOX_TYPE: ComboboxSelectedType = 'single';\n\nexport interface ComboboxOption<Data extends object = object> {\n value: string;\n label: string;\n node?: Data;\n // tree only\n items?: ComboboxOption<Data>[];\n path?: string[];\n parent?: string;\n level?: number;\n matched?: boolean;\n}\n\
|
|
1
|
+
{"version":3,"file":"Combobox.types.js","sources":["../../src/Combobox/Combobox.types.ts"],"sourcesContent":["import { Dispatch, HTMLAttributes, ReactNode, Ref, SetStateAction } from 'react';\n\nexport type ComboboxValueType = string | string[];\nexport type ComboboxSelectedType = 'single' | 'multi';\n\nexport const DEFAULT_COMBOBOX_TYPE: ComboboxSelectedType = 'single';\n\nexport interface ComboboxOption<Data extends object = object> {\n value: string;\n label: string;\n node?: Data;\n // tree only\n items?: ComboboxOption<Data>[];\n path?: string[];\n parent?: string;\n level?: number;\n matched?: boolean;\n}\n\nexport interface ComboboxCallbackStateParams<\n Data extends object = object,\n T extends ComboboxSelectedType = 'single'\n> {\n options: ComboboxOption<Data>[];\n setOptions: Dispatch<SetStateAction<ComboboxOption<Data>[]>>\n search: string;\n setSearch: Dispatch<SetStateAction<string>>\n onChangeOption: (option: ComboboxOption<Data>) => void;\n open: boolean,\n setOpen: Dispatch<SetStateAction<boolean>>;\n loading: boolean;\n setLoading: Dispatch<SetStateAction<boolean>>;\n isEmptyList: boolean;\n isSearchedEmptyList: boolean;\n placeholder?: string;\n\n type: T;\n selectedOption: T extends 'single'\n ? ComboboxOption<Data> | undefined\n : ComboboxOption<Data>[];\n setSelectedOption: T extends 'single'\n ? Dispatch<SetStateAction<ComboboxOption<Data> | undefined>>\n : Dispatch<SetStateAction<ComboboxOption<Data>[] | undefined>>;\n}\n\nexport type ComboboxCallbackStateParamsUnion<Data extends object = object> = ComboboxCallbackStateParams<Data, 'single'> | ComboboxCallbackStateParams<Data, 'multi'>\nexport type ComboboxCallbackStateParamsRenderHandler<Data extends object = object> = (params:ComboboxCallbackStateParamsUnion<Data>) => ReactNode\n\nexport interface IComboboxOptionsNodeHandlersProps<Data extends object = object> {\n defaultNodeOpen?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);\n defaultNodeDisabled?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);\n defaultNodeMatched?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);\n defaultNodeMuted?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);\n defaultNodeInteractive?: boolean | ((option: ComboboxOption<Data>, deep: number) => boolean | undefined);\n}\n\nexport interface IComboboxOptionsNodeProps<Data extends object = object>\n extends IComboboxOptionsNodeHandlersProps<Data> {\n type: ComboboxSelectedType,\n search?: string;\n value?: ComboboxValueType;\n option: ComboboxOption<Data>;\n onSelect?: (option: ComboboxOption<Data>) => void;\n deep?: number;\n}\n\nexport interface IComboboxOptionsProps<Data extends object = object>\n extends Omit<IComboboxOptionsNodeProps<Data>, 'option'>, IComboboxOptionsNodeHandlersProps<Data> {\n options?: ComboboxOption<Data>[];\n}\n\ninterface IListActionProps extends HTMLAttributes<HTMLDivElement> {\n bordered?: boolean;\n}\nexport interface ISlotProps {\n listFooterAction?: IListActionProps\n}\n\nexport interface ComboboxBaseProps<\n Data extends object = object,\n T extends ComboboxSelectedType = 'single'\n> extends IComboboxOptionsNodeHandlersProps {\n type?: T;\n // ref?: Ref<ComboboxCallbackStateParams<Data, T> | null>;\n imperativeRef?: Ref<\n ComboboxCallbackStateParams<Data, 'single'>\n | ComboboxCallbackStateParams<Data, 'multi'>\n | null\n >;\n placeholder?: string;\n searchLabel?: string;\n disabled?: boolean;\n fetchOptions: (search?: string) => Promise<ComboboxOption<Data>[]>;\n options?: ComboboxOption<Data>[];\n /** Command Empty list label*/\n emptyLabel?: string;\n /** Command Empty list action */\n emptyAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;\n /** Command Input footer action */\n commandInputAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;\n /** Command List first element action */\n listHeadAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;\n /** Command List footer element action */\n listFooterAction?: ((params: ComboboxCallbackStateParams<Data, T>) => ReactNode) | ReactNode;\n /** Callback for load data on start component */\n onMount?: (params: ComboboxCallbackStateParams<Data, T>) => Promise<void>;\n\n renderTrigger?: (params: ComboboxCallbackStateParams<Data, T>) => ReactNode;\n renderList?: (params: ComboboxCallbackStateParams<Data, T>) => ReactNode;\n\n slotProps?: ISlotProps;\n}\n\nexport interface SingleComboboxProps<Data extends object = object>\n extends ComboboxBaseProps<Data, 'single'> {\n type?: 'single';\n value?: string;\n onChange: (value: string | undefined) => void;\n}\nexport interface MultiComboboxProps<Data extends object = object>\n extends ComboboxBaseProps<Data, 'multi'> {\n type: 'multi';\n value?: string[];\n onChange: (value: string[] | undefined) => void;\n}\n\nexport type ComboboxProps<\n Data extends object = object,\n T extends ComboboxSelectedType = 'single'\n> = T extends 'single'\n ? SingleComboboxProps<Data>\n : MultiComboboxProps<Data>;\n"],"names":["DEFAULT_COMBOBOX_TYPE"],"mappings":"AAKO,MAAMA,IAA8C;"}
|
|
@@ -1,12 +1,22 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type ComboboxRenderContentProps<Data extends object = object> =
|
|
1
|
+
import { ComboboxCallbackStateParamsRenderHandler, ComboboxCallbackStateParamsUnion, ComboboxOption, ComboboxProps, ComboboxSelectedType, IComboboxOptionsNodeHandlersProps, ISlotProps } from './Combobox.types';
|
|
2
|
+
type ComboboxRenderContentProps<Data extends object = object> = IComboboxOptionsNodeHandlersProps<Data> & {
|
|
3
|
+
type: ComboboxSelectedType;
|
|
4
|
+
value: ComboboxProps<Data, 'single'>['value'] | ComboboxProps<Data, 'multi'>['value'];
|
|
3
5
|
loading: boolean;
|
|
4
6
|
options: ComboboxOption<Data>[];
|
|
5
7
|
search?: string;
|
|
6
8
|
onSearch?: (term: string) => void;
|
|
7
9
|
isEmptyList?: boolean;
|
|
8
|
-
callbackStateParams: ComboboxCallbackStateParams<Data>;
|
|
9
10
|
onSelect?: (option: ComboboxOption<Data>) => void;
|
|
11
|
+
searchLabel?: string;
|
|
12
|
+
emptyLabel?: string;
|
|
13
|
+
callbackStateParams: ComboboxCallbackStateParamsUnion<Data>;
|
|
14
|
+
commandInputAction?: ComboboxCallbackStateParamsRenderHandler<Data>;
|
|
15
|
+
renderList?: ComboboxCallbackStateParamsRenderHandler<Data>;
|
|
16
|
+
listHeadAction?: ComboboxCallbackStateParamsRenderHandler<Data>;
|
|
17
|
+
listFooterAction?: ComboboxCallbackStateParamsRenderHandler<Data>;
|
|
18
|
+
emptyAction?: ComboboxCallbackStateParamsRenderHandler<Data>;
|
|
19
|
+
slotProps?: ISlotProps;
|
|
10
20
|
};
|
|
11
21
|
export declare const ComboboxRenderContent: <Data extends object = object>(props: ComboboxRenderContentProps<Data>) => import("react/jsx-runtime").JSX.Element;
|
|
12
22
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxRenderContent.d.ts","sourceRoot":"","sources":["../../src/Combobox/ComboboxRenderContent.tsx"],"names":[],"mappings":"AAWA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"ComboboxRenderContent.d.ts","sourceRoot":"","sources":["../../src/Combobox/ComboboxRenderContent.tsx"],"names":[],"mappings":"AAWA,OAAO,EACL,wCAAwC,EACxC,gCAAgC,EAChC,cAAc,EAAE,aAAa,EAC7B,oBAAoB,EAAE,iCAAiC,EACvD,UAAU,EACX,MAAM,kBAAkB,CAAC;AAG1B,KAAK,0BAA0B,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,IAAI,iCAAiC,CAAC,IAAI,CAAC,GAAG;IACxG,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;IAEtF,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAElD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,mBAAmB,EAAE,gCAAgC,CAAC,IAAI,CAAC,CAAC;IAE5D,kBAAkB,CAAC,EAAE,wCAAwC,CAAC,IAAI,CAAC,CAAC;IACpE,UAAU,CAAC,EAAE,wCAAwC,CAAC,IAAI,CAAC,CAAC;IAC5D,cAAc,CAAC,EAAE,wCAAwC,CAAC,IAAI,CAAC,CAAC;IAChE,gBAAgB,CAAC,EAAE,wCAAwC,CAAC,IAAI,CAAC,CAAC;IAClE,WAAW,CAAC,EAAE,wCAAwC,CAAC,IAAI,CAAC,CAAC;IAE7D,SAAS,CAAC,EAAE,UAAU,CAAC;CACxB,CAAA;AAGD,eAAO,MAAM,qBAAqB,GAAI,IAAI,SAAS,MAAM,GAAG,MAAM,EAChE,OAAO,0BAA0B,CAAC,IAAI,CAAC,4CA6HxC,CAAA"}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { jsx as e, jsxs as i, Fragment as u } from "react/jsx-runtime";
|
|
2
|
-
import { LoadingMask as
|
|
2
|
+
import { LoadingMask as M } from "../LoadingMask/LoadingMask.js";
|
|
3
3
|
import "../LoadingMask/RenderLoadingMask.js";
|
|
4
|
-
import { PopoverContent as
|
|
5
|
-
import { Command as
|
|
4
|
+
import { PopoverContent as P } from "../Popover/Popover.js";
|
|
5
|
+
import { Command as j, CommandInput as k, CommandList as E, CommandGroup as O, CommandEmpty as x, CommandItem as R } from "../Command/Command.js";
|
|
6
6
|
import { cn as m } from "@oneplatformdev/utils";
|
|
7
|
-
import { DEFAULT_COMBOBOX_TYPE as B } from "./Combobox.types.js";
|
|
8
7
|
import { ComboboxRenderOptions as D } from "./ComboboxRenderOptions.js";
|
|
9
|
-
const
|
|
8
|
+
const z = (b) => {
|
|
10
9
|
const {
|
|
11
|
-
type: y
|
|
10
|
+
type: y,
|
|
12
11
|
search: p,
|
|
13
12
|
onSearch: C,
|
|
14
13
|
loading: t,
|
|
@@ -17,56 +16,56 @@ const X = (b) => {
|
|
|
17
16
|
options: f = [],
|
|
18
17
|
callbackStateParams: o,
|
|
19
18
|
value: g,
|
|
20
|
-
searchLabel:
|
|
19
|
+
searchLabel: w = "Type to search...",
|
|
21
20
|
emptyLabel: h = "No options",
|
|
22
|
-
emptyAction:
|
|
21
|
+
emptyAction: n,
|
|
23
22
|
commandInputAction: d,
|
|
24
|
-
listHeadAction:
|
|
23
|
+
listHeadAction: r,
|
|
25
24
|
listFooterAction: a,
|
|
26
25
|
slotProps: s = {},
|
|
27
|
-
defaultNodeDisabled:
|
|
26
|
+
defaultNodeDisabled: A,
|
|
28
27
|
defaultNodeMatched: F,
|
|
29
28
|
defaultNodeMuted: L,
|
|
30
29
|
defaultNodeInteractive: v,
|
|
31
30
|
renderList: c
|
|
32
31
|
} = b;
|
|
33
32
|
return /* @__PURE__ */ e(
|
|
34
|
-
|
|
33
|
+
P,
|
|
35
34
|
{
|
|
36
35
|
className: m(
|
|
37
36
|
"w-(--radix-popper-anchor-width) max-w-none p-2"
|
|
38
37
|
),
|
|
39
38
|
align: "start",
|
|
40
|
-
children: /* @__PURE__ */ i(
|
|
39
|
+
children: /* @__PURE__ */ i(j, { shouldFilter: !1, children: [
|
|
41
40
|
/* @__PURE__ */ e(
|
|
42
|
-
|
|
41
|
+
k,
|
|
43
42
|
{
|
|
44
|
-
placeholder:
|
|
43
|
+
placeholder: w,
|
|
45
44
|
value: p,
|
|
46
45
|
onValueChange: C
|
|
47
46
|
}
|
|
48
47
|
),
|
|
49
48
|
typeof d == "function" ? d(o) : d,
|
|
50
|
-
/* @__PURE__ */ e(
|
|
51
|
-
|
|
49
|
+
/* @__PURE__ */ e(E, { children: /* @__PURE__ */ i(
|
|
50
|
+
O,
|
|
52
51
|
{
|
|
53
52
|
className: m(
|
|
54
53
|
!f.length && "p-0 shadow-none",
|
|
55
54
|
"px-0 py-2"
|
|
56
55
|
),
|
|
57
56
|
children: [
|
|
58
|
-
t && /* @__PURE__ */ e(
|
|
59
|
-
!t && l && /* @__PURE__ */ e(u, { children:
|
|
57
|
+
t && /* @__PURE__ */ e(M, { fullWidth: !0 }),
|
|
58
|
+
!t && l && /* @__PURE__ */ e(u, { children: n ? /* @__PURE__ */ i(x, { className: "flex flex-col gap-3 py-5 px-3 items-center", children: [
|
|
60
59
|
/* @__PURE__ */ e("span", { children: h }),
|
|
61
|
-
typeof
|
|
60
|
+
typeof n == "function" ? n(o) : n
|
|
62
61
|
] }) : /* @__PURE__ */ e(x, { children: h }) }),
|
|
63
62
|
!t && !l && /* @__PURE__ */ i(u, { children: [
|
|
64
|
-
|
|
65
|
-
|
|
63
|
+
r && /* @__PURE__ */ e(
|
|
64
|
+
R,
|
|
66
65
|
{
|
|
67
66
|
asChild: !0,
|
|
68
67
|
className: "w-full",
|
|
69
|
-
children: typeof
|
|
68
|
+
children: typeof r == "function" ? r(o) : r
|
|
70
69
|
},
|
|
71
70
|
"combobox-list-head-action"
|
|
72
71
|
),
|
|
@@ -79,7 +78,7 @@ const X = (b) => {
|
|
|
79
78
|
value: g,
|
|
80
79
|
options: f,
|
|
81
80
|
onSelect: N,
|
|
82
|
-
defaultNodeDisabled:
|
|
81
|
+
defaultNodeDisabled: A,
|
|
83
82
|
defaultNodeMatched: F,
|
|
84
83
|
defaultNodeMuted: L,
|
|
85
84
|
defaultNodeInteractive: v
|
|
@@ -94,10 +93,10 @@ const X = (b) => {
|
|
|
94
93
|
{
|
|
95
94
|
"data-slot": "command-footer-wrapper",
|
|
96
95
|
...(() => {
|
|
97
|
-
const { bordered:
|
|
96
|
+
const { bordered: I = !0, ...S } = s?.listFooterAction || {};
|
|
98
97
|
return {
|
|
99
|
-
...
|
|
100
|
-
"data-slot-bordered": JSON.stringify(
|
|
98
|
+
...S,
|
|
99
|
+
"data-slot-bordered": JSON.stringify(I)
|
|
101
100
|
};
|
|
102
101
|
})(),
|
|
103
102
|
className: m(
|
|
@@ -113,6 +112,6 @@ const X = (b) => {
|
|
|
113
112
|
);
|
|
114
113
|
};
|
|
115
114
|
export {
|
|
116
|
-
|
|
115
|
+
z as ComboboxRenderContent
|
|
117
116
|
};
|
|
118
117
|
//# sourceMappingURL=ComboboxRenderContent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxRenderContent.js","sources":["../../src/Combobox/ComboboxRenderContent.tsx"],"sourcesContent":["import { LoadingMask } from '../LoadingMask';\nimport { PopoverContent } from '../Popover';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '../Command';\nimport { cn } from '@oneplatformdev/utils';\nimport {\n
|
|
1
|
+
{"version":3,"file":"ComboboxRenderContent.js","sources":["../../src/Combobox/ComboboxRenderContent.tsx"],"sourcesContent":["import { LoadingMask } from '../LoadingMask';\nimport { PopoverContent } from '../Popover';\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList,\n} from '../Command';\nimport { cn } from '@oneplatformdev/utils';\nimport {\n ComboboxCallbackStateParamsRenderHandler,\n ComboboxCallbackStateParamsUnion,\n ComboboxOption, ComboboxProps,\n ComboboxSelectedType, IComboboxOptionsNodeHandlersProps,\n ISlotProps,\n} from './Combobox.types';\nimport { ComboboxRenderOptions } from './ComboboxRenderOptions';\n\ntype ComboboxRenderContentProps<Data extends object = object> = IComboboxOptionsNodeHandlersProps<Data> & {\n type: ComboboxSelectedType,\n value: ComboboxProps<Data, 'single'>['value'] | ComboboxProps<Data, 'multi'>['value'];\n\n loading: boolean;\n options: ComboboxOption<Data>[];\n search?: string;\n onSearch?: (term: string) => void;\n isEmptyList?: boolean;\n onSelect?: (option: ComboboxOption<Data>) => void;\n\n searchLabel?: string;\n emptyLabel?: string;\n\n callbackStateParams: ComboboxCallbackStateParamsUnion<Data>;\n\n commandInputAction?: ComboboxCallbackStateParamsRenderHandler<Data>;\n renderList?: ComboboxCallbackStateParamsRenderHandler<Data>;\n listHeadAction?: ComboboxCallbackStateParamsRenderHandler<Data>;\n listFooterAction?: ComboboxCallbackStateParamsRenderHandler<Data>;\n emptyAction?: ComboboxCallbackStateParamsRenderHandler<Data>;\n\n slotProps?: ISlotProps;\n}\n\n\nexport const ComboboxRenderContent = <Data extends object = object>(\n props: ComboboxRenderContentProps<Data>\n) => {\n const {\n type,\n search,\n onSearch,\n loading,\n isEmptyList,\n onSelect,\n options = [],\n callbackStateParams,\n value,\n searchLabel = 'Type to search...',\n emptyLabel = 'No options',\n emptyAction,\n commandInputAction,\n listHeadAction,\n listFooterAction,\n slotProps = {},\n defaultNodeDisabled,\n defaultNodeMatched,\n defaultNodeMuted,\n defaultNodeInteractive,\n renderList,\n } = props;\n\n return (\n <PopoverContent\n className={cn(\n \"w-(--radix-popper-anchor-width) max-w-none p-2\"\n )}\n align=\"start\"\n >\n <Command shouldFilter={false}>\n <CommandInput\n placeholder={searchLabel}\n value={search}\n onValueChange={onSearch}\n />\n {typeof commandInputAction === 'function'\n ? commandInputAction(callbackStateParams)\n : commandInputAction}\n\n <CommandList>\n <CommandGroup\n className={cn(\n !options.length && 'p-0 shadow-none',\n 'px-0 py-2',\n )}\n >\n {loading && <LoadingMask fullWidth/>}\n {!loading && isEmptyList && (\n <>\n {emptyAction ? (\n <CommandEmpty className=\"flex flex-col gap-3 py-5 px-3 items-center\">\n <span>{emptyLabel}</span>\n {typeof emptyAction === 'function'\n ? emptyAction(callbackStateParams)\n : emptyAction}\n </CommandEmpty>\n ) : (\n <CommandEmpty>{emptyLabel}</CommandEmpty>\n )}\n </>\n )}\n\n {!loading && !isEmptyList && (\n <>\n {listHeadAction && (\n <CommandItem\n key='combobox-list-head-action'\n asChild\n className='w-full'\n >\n {typeof listHeadAction === 'function'\n ? listHeadAction(callbackStateParams)\n : listHeadAction}\n </CommandItem>\n )}\n\n {renderList && renderList(callbackStateParams)}\n\n {!renderList && (\n <ComboboxRenderOptions\n type={type}\n search={search}\n value={value}\n options={options}\n onSelect={onSelect}\n defaultNodeDisabled={defaultNodeDisabled}\n defaultNodeMatched={defaultNodeMatched}\n defaultNodeMuted={defaultNodeMuted}\n defaultNodeInteractive={defaultNodeInteractive}/>\n )}\n </>\n )}\n\n </CommandGroup>\n </CommandList>\n\n {/*LIST FOOTER ACTION*/}\n {!loading && listFooterAction && !isEmptyList && (\n <div\n data-slot=\"command-footer-wrapper\"\n {...((() => {\n const { bordered = true, ...rest } = slotProps?.listFooterAction || {};\n return {\n ...rest,\n 'data-slot-bordered': JSON.stringify(bordered)\n }\n })())}\n className={cn(\n \"flex w-full items-center gap-2 px-0\",\n (slotProps?.listFooterAction?.bordered ?? true) && 'border-t px-0 pt-2',\n slotProps?.listFooterAction?.className,\n )}\n >\n {typeof listFooterAction === 'function'\n ? listFooterAction(callbackStateParams)\n : listFooterAction}\n </div>\n )}\n </Command>\n </PopoverContent>\n );\n}\n"],"names":["ComboboxRenderContent","props","type","search","onSearch","loading","isEmptyList","onSelect","options","callbackStateParams","value","searchLabel","emptyLabel","emptyAction","commandInputAction","listHeadAction","listFooterAction","slotProps","defaultNodeDisabled","defaultNodeMatched","defaultNodeMuted","defaultNodeInteractive","renderList","jsx","PopoverContent","cn","jsxs","Command","CommandInput","CommandList","CommandGroup","LoadingMask","Fragment","CommandEmpty","CommandItem","ComboboxRenderOptions","bordered","rest"],"mappings":"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"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type ComboboxRenderTriggerProps<Data extends object = object> =
|
|
1
|
+
import { ComboboxCallbackStateParamsRenderHandler, ComboboxCallbackStateParamsUnion, ComboboxOption, ComboboxProps, ComboboxSelectedType } from './Combobox.types';
|
|
2
|
+
type ComboboxRenderTriggerProps<Data extends object = object> = {
|
|
3
|
+
type: ComboboxSelectedType;
|
|
4
|
+
value: ComboboxProps<Data, 'single'>['value'] | ComboboxProps<Data, 'multi'>['value'];
|
|
3
5
|
open: boolean;
|
|
4
6
|
initialLoading: boolean;
|
|
5
|
-
callbackStateParams: ComboboxCallbackStateParams<Data>;
|
|
6
7
|
flattenOptions: ComboboxOption<Data>[];
|
|
7
8
|
selectedOptions?: Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>;
|
|
8
9
|
onSelect?: (option: ComboboxOption<Data>) => void;
|
|
9
10
|
onClearSelections?: () => void;
|
|
11
|
+
callbackStateParams: ComboboxCallbackStateParamsUnion<Data>;
|
|
12
|
+
renderTrigger?: ComboboxCallbackStateParamsRenderHandler<Data>;
|
|
13
|
+
placeholder?: string;
|
|
14
|
+
disabled?: boolean;
|
|
10
15
|
};
|
|
11
16
|
export declare const ComboboxRenderTrigger: <Data extends object>(props: ComboboxRenderTriggerProps<Data>) => import("react/jsx-runtime").JSX.Element;
|
|
12
17
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxRenderTrigger.d.ts","sourceRoot":"","sources":["../../src/Combobox/ComboboxRenderTrigger.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"ComboboxRenderTrigger.d.ts","sourceRoot":"","sources":["../../src/Combobox/ComboboxRenderTrigger.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,wCAAwC,EACxC,gCAAgC,EAChC,cAAc,EACd,aAAa,EAAE,oBAAoB,EAEpC,MAAM,kBAAkB,CAAC;AAS1B,KAAK,0BAA0B,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,IAAI;IAC9D,IAAI,EAAE,oBAAoB,CAAC;IAC3B,KAAK,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC;IACtF,IAAI,EAAE,OAAO,CAAC;IACd,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;IACvC,eAAe,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC;IAClD,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAE/B,mBAAmB,EAAE,gCAAgC,CAAC,IAAI,CAAC,CAAC;IAC5D,aAAa,CAAC,EAAE,wCAAwC,CAAC,IAAI,CAAC,CAAC;IAE/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAA;AAmJD,eAAO,MAAM,qBAAqB,GAAI,IAAI,SAAS,MAAM,EACvD,OAAO,0BAA0B,CAAC,IAAI,CAAC,4CAyCxC,CAAA"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { jsx as r, jsxs as d, Fragment as
|
|
2
|
-
import { DEFAULT_COMBOBOX_TYPE as
|
|
1
|
+
import { jsx as r, jsxs as d, Fragment as b } from "react/jsx-runtime";
|
|
2
|
+
import { DEFAULT_COMBOBOX_TYPE as h } from "./Combobox.types.js";
|
|
3
3
|
import { Button as v } from "../Button/Button.js";
|
|
4
4
|
import "../Button/buttonVariants.js";
|
|
5
5
|
import { useMemo as w } from "react";
|
|
6
6
|
import { cn as u } from "@oneplatformdev/utils";
|
|
7
7
|
import { LoadingMask as x } from "../LoadingMask/LoadingMask.js";
|
|
8
8
|
import "../LoadingMask/RenderLoadingMask.js";
|
|
9
|
-
import { XIcon as
|
|
9
|
+
import { XIcon as f, ChevronDown as y } from "lucide-react";
|
|
10
10
|
import { PopoverTrigger as C } from "../Popover/Popover.js";
|
|
11
11
|
import { ScrollArea as N } from "../ScrollArea/ScrollArea.js";
|
|
12
|
-
const
|
|
12
|
+
const g = (o) => {
|
|
13
13
|
const { value: n, flattenOptions: a = [], selectedOptions: t = /* @__PURE__ */ new Map() } = o;
|
|
14
14
|
return w(() => {
|
|
15
15
|
if (!n) return [];
|
|
@@ -17,7 +17,7 @@ const b = (o) => {
|
|
|
17
17
|
return p.size ? Array.from(p.values()) : i.map((l) => ({ value: l, label: String(l) }));
|
|
18
18
|
}, [n, a, t]);
|
|
19
19
|
}, k = (o) => {
|
|
20
|
-
const { type: n =
|
|
20
|
+
const { type: n = h, placeholder: a, onSelect: t, open: c } = o, i = g(o);
|
|
21
21
|
return i.length ? n === "single" ? /* @__PURE__ */ r("span", { className: "truncate overflow-hidden whitespace-nowrap break-words line-clamp-1 pr-8", children: i[0].label }) : n === "multi" ? /* @__PURE__ */ r(
|
|
22
22
|
N,
|
|
23
23
|
{
|
|
@@ -46,7 +46,7 @@ const b = (o) => {
|
|
|
46
46
|
},
|
|
47
47
|
children: [
|
|
48
48
|
/* @__PURE__ */ r("span", { className: "whitespace-pre-wrap wrap-break-word line-clamp-1", children: e.label }),
|
|
49
|
-
/* @__PURE__ */ r(
|
|
49
|
+
/* @__PURE__ */ r(f, { className: "size-3! shrink-0 text-white!" })
|
|
50
50
|
]
|
|
51
51
|
},
|
|
52
52
|
e.value
|
|
@@ -74,11 +74,11 @@ const b = (o) => {
|
|
|
74
74
|
}
|
|
75
75
|
);
|
|
76
76
|
}, A = (o) => {
|
|
77
|
-
const { open: n, onClearSelections: a } = o, t =
|
|
78
|
-
return n ? t.length ? /* @__PURE__ */ r(m, { onClick: () => a?.(), children: /* @__PURE__ */ r(
|
|
77
|
+
const { open: n, onClearSelections: a } = o, t = g(o);
|
|
78
|
+
return n ? t.length ? /* @__PURE__ */ r(m, { onClick: () => a?.(), children: /* @__PURE__ */ r(f, {}) }) : null : /* @__PURE__ */ r(m, { prevented: !1, children: /* @__PURE__ */ r(y, {}) });
|
|
79
79
|
}, B = (o) => {
|
|
80
80
|
const {
|
|
81
|
-
type: n
|
|
81
|
+
type: n,
|
|
82
82
|
open: a,
|
|
83
83
|
initialLoading: t,
|
|
84
84
|
callbackStateParams: c,
|
|
@@ -106,7 +106,7 @@ const b = (o) => {
|
|
|
106
106
|
children: [
|
|
107
107
|
t && /* @__PURE__ */ r(x, { fullWidth: !0 }),
|
|
108
108
|
!t && e && e(c),
|
|
109
|
-
!t && !e && /* @__PURE__ */ d(
|
|
109
|
+
!t && !e && /* @__PURE__ */ d(b, { children: [
|
|
110
110
|
/* @__PURE__ */ r(k, { ...o }),
|
|
111
111
|
/* @__PURE__ */ r(A, { ...o })
|
|
112
112
|
] })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ComboboxRenderTrigger.js","sources":["../../src/Combobox/ComboboxRenderTrigger.tsx"],"sourcesContent":["import {\n ComboboxCallbackStateParams,\n ComboboxOption,\n ComboboxProps,\n DEFAULT_COMBOBOX_TYPE\n} from \"./Combobox.types\";\nimport { Button } from \"../Button\";\nimport { cn } from \"@oneplatformdev/utils\";\nimport { LoadingMask } from \"../LoadingMask\";\nimport { ChevronDown, XIcon } from \"lucide-react\";\nimport { PopoverTrigger } from \"../Popover\";\nimport { HTMLAttributes, useMemo } from \"react\";\nimport { ScrollArea } from \"../ScrollArea\";\n\ntype ComboboxRenderTriggerProps<Data extends object = object> = ComboboxProps<Data> & {\n open: boolean;\n initialLoading: boolean;\n callbackStateParams: ComboboxCallbackStateParams<Data>;\n flattenOptions: ComboboxOption<Data>[];\n selectedOptions?: Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>;\n onSelect?: (option: ComboboxOption<Data>) => void;\n onClearSelections?: () => void;\n}\n\nconst useValues = <Data extends object>(\n props: ComboboxRenderTriggerProps<Data>\n): ComboboxOption<Data>[] => {\n const { value, flattenOptions = [], selectedOptions = new Map() } = props;\n return useMemo(() => {\n if (!value) return [];\n const selectedOption = Array.from(selectedOptions.values());\n const vls = Array.isArray(value) ? value : [ value ];\n const flattenedOptionValues = flattenOptions.filter(o => {\n return vls.find(v => String(v).toLowerCase() === String(o.value).toLowerCase())\n });\n\n const labels = [ ...flattenedOptionValues, ...selectedOption ]\n .reduce<Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>>((acc, o) => {\n if (!o) return acc;\n if (acc.has(o.value)) return acc;\n acc.set(o.value, { ...o, label: o.label || o.value });\n return acc;\n }, new Map())\n if (!labels.size) return vls.map(v => ({ value: v, label: String(v) }));\n return Array.from(labels.values());\n }, [ value, flattenOptions, selectedOptions ])\n}\n\nconst ComboboxRenderTriggerLabel = <Data extends object = object>(\n props: ComboboxRenderTriggerProps<Data>\n) => {\n const { type = DEFAULT_COMBOBOX_TYPE, placeholder, onSelect, open } = props;\n const values = useValues(props);\n\n if (!values.length) {\n return (\n <span className=\"text-gray-400 whitespace-pre-wrap break-words line-clamp-1 pr-11\">\n {placeholder}\n </span>\n )\n }\n\n if (type === 'single') {\n return (\n <span className=\"truncate overflow-hidden whitespace-nowrap break-words line-clamp-1 pr-8\">\n {values[0].label}\n </span>\n )\n }\n\n if (type === 'multi') {\n return (\n <ScrollArea\n className={cn(\n \"w-full h-auto min-h-5 max-h-20.25\",\n 'overflow-y-auto overflow-x-hidden',\n )}\n slotProps={{\n viewport: {\n className: '[&>div]:block!',\n }\n }}\n >\n <div className=\"p-0 gap-1 flex flex-wrap w-full pr-11\">\n {values.map((item) => {\n if (!item) return null;\n return (\n <div\n key={item.value}\n className={cn(\n 'flex items-center justify-center',\n 'py-1 px-2 min-h-5 w-fit gap-1',\n 'bg-[#9368FF] rounded-sm',\n 'text-[#FCFCFC] leading-none text-xs font-semibold',\n 'cursor-pointer',\n 'truncate',\n )}\n onClick={(e) => {\n if(!open) return;\n e.preventDefault();\n e.stopPropagation();\n onSelect?.(item)\n }}\n >\n <span className='whitespace-pre-wrap wrap-break-word line-clamp-1'>\n {item.label}\n </span>\n <XIcon className='size-3! shrink-0 text-white!'/>\n </div>\n );\n })}\n </div>\n </ScrollArea>\n )\n }\n\n return 'No supported to render'\n}\n\nconst EndAdornmentWrapper = (\n props: HTMLAttributes<HTMLDivElement> & {\n prevented?: boolean;\n }\n) => {\n const { children, prevented = true, onClick, className, ...rest } = props;\n return (\n <div\n {...rest}\n className={cn(\n 'absolute top-1/2 -translate-y-1/2 right-1',\n 'flex items-center justify-center',\n 'w-10 h-10 [&_svg]:size-5!',\n 'opacity-50 cursor-pointer hover:opacity-100',\n className,\n )}\n onClick={(e) => {\n if (!prevented) return onClick?.(e);\n e.stopPropagation();\n e.preventDefault();\n onClick?.(e);\n }}\n >\n {children}\n </div>\n )\n}\nconst ComboboxRenderTriggerEndAdornment = <Data extends object = object>(\n props: ComboboxRenderTriggerProps<Data>\n) => {\n const { open, onClearSelections } = props;\n const values = useValues(props);\n\n if (!open) {\n return (\n <EndAdornmentWrapper prevented={false}>\n <ChevronDown/>\n </EndAdornmentWrapper>\n )\n }\n\n if (!values.length) return null\n\n return (\n <EndAdornmentWrapper onClick={() => onClearSelections?.()}>\n <XIcon/>\n </EndAdornmentWrapper>\n )\n}\n\nexport const ComboboxRenderTrigger = <Data extends object, >(\n props: ComboboxRenderTriggerProps<Data>\n) => {\n const {\n type = DEFAULT_COMBOBOX_TYPE,\n open,\n initialLoading,\n callbackStateParams,\n disabled,\n renderTrigger,\n } = props;\n return (\n <PopoverTrigger asChild className=\"border-input\">\n <Button\n variant={renderTrigger ? 'none' : 'contained'}\n color='secondary'\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\n 'relative w-full justify-between bg-transparent',\n !renderTrigger && 'font-normal text-sm',\n 'border border-border',\n open && 'border-1 outline-hidden ring-1 ring-ring',\n type === 'multi' && 'pr-0',\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring',\n renderTrigger && 'p-0',\n renderTrigger && open && 'p-0 border-1 ring-0 ring-transparent',\n )}\n disabled={disabled || initialLoading}\n >\n {initialLoading && <LoadingMask fullWidth/>}\n {!initialLoading && renderTrigger && renderTrigger(callbackStateParams)}\n {!initialLoading && !renderTrigger && (\n <>\n <ComboboxRenderTriggerLabel {...props} />\n <ComboboxRenderTriggerEndAdornment {...props} />\n </>\n )}\n </Button>\n </PopoverTrigger>\n )\n}\n"],"names":["useValues","props","value","flattenOptions","selectedOptions","useMemo","selectedOption","vls","labels","o","v","acc","ComboboxRenderTriggerLabel","type","DEFAULT_COMBOBOX_TYPE","placeholder","onSelect","open","values","jsx","ScrollArea","cn","item","jsxs","e","XIcon","EndAdornmentWrapper","children","prevented","onClick","className","rest","ComboboxRenderTriggerEndAdornment","onClearSelections","ChevronDown","ComboboxRenderTrigger","initialLoading","callbackStateParams","disabled","renderTrigger","PopoverTrigger","Button","LoadingMask","Fragment"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ComboboxRenderTrigger.js","sources":["../../src/Combobox/ComboboxRenderTrigger.tsx"],"sourcesContent":["import {\n ComboboxCallbackStateParamsRenderHandler,\n ComboboxCallbackStateParamsUnion,\n ComboboxOption,\n ComboboxProps, ComboboxSelectedType,\n DEFAULT_COMBOBOX_TYPE\n} from \"./Combobox.types\";\nimport { Button } from \"../Button\";\nimport { cn } from \"@oneplatformdev/utils\";\nimport { LoadingMask } from \"../LoadingMask\";\nimport { ChevronDown, XIcon } from \"lucide-react\";\nimport { PopoverTrigger } from \"../Popover\";\nimport { HTMLAttributes, useMemo } from \"react\";\nimport { ScrollArea } from \"../ScrollArea\";\n\ntype ComboboxRenderTriggerProps<Data extends object = object> = {\n type: ComboboxSelectedType,\n value: ComboboxProps<Data, 'single'>['value'] | ComboboxProps<Data, 'multi'>['value'];\n open: boolean;\n initialLoading: boolean;\n flattenOptions: ComboboxOption<Data>[];\n selectedOptions?: Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>;\n onSelect?: (option: ComboboxOption<Data>) => void;\n onClearSelections?: () => void;\n\n callbackStateParams: ComboboxCallbackStateParamsUnion<Data>;\n renderTrigger?: ComboboxCallbackStateParamsRenderHandler<Data>;\n\n placeholder?: string;\n disabled?: boolean;\n}\n\nconst useValues = <Data extends object>(\n props: ComboboxRenderTriggerProps<Data>\n): ComboboxOption<Data>[] => {\n const { value, flattenOptions = [], selectedOptions = new Map() } = props;\n return useMemo(() => {\n if (!value) return [];\n const selectedOption = Array.from(selectedOptions.values());\n const vls = Array.isArray(value) ? value : [ value ];\n const flattenedOptionValues = flattenOptions.filter(o => {\n return vls.find(v => String(v).toLowerCase() === String(o.value).toLowerCase())\n });\n\n const labels = [ ...flattenedOptionValues, ...selectedOption ]\n .reduce<Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>>((acc, o) => {\n if (!o) return acc;\n if (acc.has(o.value)) return acc;\n acc.set(o.value, { ...o, label: o.label || o.value });\n return acc;\n }, new Map())\n if (!labels.size) return vls.map(v => ({ value: v, label: String(v) }));\n return Array.from(labels.values());\n }, [ value, flattenOptions, selectedOptions ])\n}\n\nconst ComboboxRenderTriggerLabel = <Data extends object = object>(\n props: ComboboxRenderTriggerProps<Data>\n) => {\n const { type = DEFAULT_COMBOBOX_TYPE, placeholder, onSelect, open } = props;\n const values = useValues(props);\n\n if (!values.length) {\n return (\n <span className=\"text-gray-400 whitespace-pre-wrap break-words line-clamp-1 pr-11\">\n {placeholder}\n </span>\n )\n }\n\n if (type === 'single') {\n return (\n <span className=\"truncate overflow-hidden whitespace-nowrap break-words line-clamp-1 pr-8\">\n {values[0].label}\n </span>\n )\n }\n\n if (type === 'multi') {\n return (\n <ScrollArea\n className={cn(\n \"w-full h-auto min-h-5 max-h-20.25\",\n 'overflow-y-auto overflow-x-hidden',\n )}\n slotProps={{\n viewport: {\n className: '[&>div]:block!',\n }\n }}\n >\n <div className=\"p-0 gap-1 flex flex-wrap w-full pr-11\">\n {values.map((item) => {\n if (!item) return null;\n return (\n <div\n key={item.value}\n className={cn(\n 'flex items-center justify-center',\n 'py-1 px-2 min-h-5 w-fit gap-1',\n 'bg-[#9368FF] rounded-sm',\n 'text-[#FCFCFC] leading-none text-xs font-semibold',\n 'cursor-pointer',\n 'truncate',\n )}\n onClick={(e) => {\n if(!open) return;\n e.preventDefault();\n e.stopPropagation();\n onSelect?.(item)\n }}\n >\n <span className='whitespace-pre-wrap wrap-break-word line-clamp-1'>\n {item.label}\n </span>\n <XIcon className='size-3! shrink-0 text-white!'/>\n </div>\n );\n })}\n </div>\n </ScrollArea>\n )\n }\n\n return 'No supported to render'\n}\n\nconst EndAdornmentWrapper = (\n props: HTMLAttributes<HTMLDivElement> & {\n prevented?: boolean;\n }\n) => {\n const { children, prevented = true, onClick, className, ...rest } = props;\n return (\n <div\n {...rest}\n className={cn(\n 'absolute top-1/2 -translate-y-1/2 right-1',\n 'flex items-center justify-center',\n 'w-10 h-10 [&_svg]:size-5!',\n 'opacity-50 cursor-pointer hover:opacity-100',\n className,\n )}\n onClick={(e) => {\n if (!prevented) return onClick?.(e);\n e.stopPropagation();\n e.preventDefault();\n onClick?.(e);\n }}\n >\n {children}\n </div>\n )\n}\nconst ComboboxRenderTriggerEndAdornment = <Data extends object = object>(\n props: ComboboxRenderTriggerProps<Data>\n) => {\n const { open, onClearSelections } = props;\n const values = useValues(props);\n\n if (!open) {\n return (\n <EndAdornmentWrapper prevented={false}>\n <ChevronDown/>\n </EndAdornmentWrapper>\n )\n }\n\n if (!values.length) return null\n\n return (\n <EndAdornmentWrapper onClick={() => onClearSelections?.()}>\n <XIcon/>\n </EndAdornmentWrapper>\n )\n}\n\nexport const ComboboxRenderTrigger = <Data extends object>(\n props: ComboboxRenderTriggerProps<Data>\n) => {\n const {\n type,\n open,\n initialLoading,\n callbackStateParams,\n disabled,\n renderTrigger,\n } = props;\n\n return (\n <PopoverTrigger asChild className=\"border-input\">\n <Button\n variant={renderTrigger ? 'none' : 'contained'}\n color='secondary'\n role=\"combobox\"\n aria-expanded={open}\n className={cn(\n 'relative w-full justify-between bg-transparent',\n !renderTrigger && 'font-normal text-sm',\n 'border border-border',\n open && 'border-1 outline-hidden ring-1 ring-ring',\n type === 'multi' && 'pr-0',\n 'focus-visible:outline-hidden focus-visible:ring-1 focus-visible:ring-ring',\n renderTrigger && 'p-0',\n renderTrigger && open && 'p-0 border-1 ring-0 ring-transparent',\n )}\n disabled={disabled || initialLoading}\n >\n {initialLoading && <LoadingMask fullWidth/>}\n {!initialLoading && renderTrigger && renderTrigger(callbackStateParams)}\n {!initialLoading && !renderTrigger && (\n <>\n <ComboboxRenderTriggerLabel {...props} />\n <ComboboxRenderTriggerEndAdornment {...props} />\n </>\n )}\n </Button>\n </PopoverTrigger>\n )\n}\n"],"names":["useValues","props","value","flattenOptions","selectedOptions","useMemo","selectedOption","vls","labels","o","v","acc","ComboboxRenderTriggerLabel","type","DEFAULT_COMBOBOX_TYPE","placeholder","onSelect","open","values","jsx","ScrollArea","cn","item","jsxs","e","XIcon","EndAdornmentWrapper","children","prevented","onClick","className","rest","ComboboxRenderTriggerEndAdornment","onClearSelections","ChevronDown","ComboboxRenderTrigger","initialLoading","callbackStateParams","disabled","renderTrigger","PopoverTrigger","Button","LoadingMask","Fragment"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oneplatformdev/ui",
|
|
3
|
-
"version": "0.1.99-beta.
|
|
3
|
+
"version": "0.1.99-beta.216",
|
|
4
4
|
"description": "UI component library for OnePlatform",
|
|
5
5
|
"author": "One Platform Development Team",
|
|
6
6
|
"keywords": [
|
|
@@ -106,9 +106,9 @@
|
|
|
106
106
|
"recharts": "^3.2.0",
|
|
107
107
|
"sonner": "^2.0.7",
|
|
108
108
|
"vaul": "^1.1.2",
|
|
109
|
-
"@oneplatformdev/tokens": "^0.1.99-beta.
|
|
110
|
-
"@oneplatformdev/
|
|
111
|
-
"@oneplatformdev/
|
|
109
|
+
"@oneplatformdev/tokens": "^0.1.99-beta.216",
|
|
110
|
+
"@oneplatformdev/utils": "^0.1.99-beta.216",
|
|
111
|
+
"@oneplatformdev/hooks": "^0.1.99-beta.216"
|
|
112
112
|
},
|
|
113
113
|
"scripts": {
|
|
114
114
|
"chromatic": "chromatic"
|