@oneplatformdev/ui 0.1.99-beta.286 → 0.1.99-beta.287
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/Combobox/Combobox.js +44 -45
- package/Combobox/Combobox.js.map +1 -1
- package/package.json +4 -4
package/Combobox/Combobox.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { jsx as q, jsxs as
|
|
1
|
+
import { jsx as q, jsxs as we } from "react/jsx-runtime";
|
|
2
2
|
import { useState as d, useCallback as u, useEffect as $, useRef as J, useMemo as H, useImperativeHandle as Ce, useLayoutEffect as Me } from "react";
|
|
3
3
|
import { useDebounceCallback as Ae } from "@oneplatformdev/hooks";
|
|
4
4
|
import { DEFAULT_COMBOBOX_TYPE as xe } from "./Combobox.types.js";
|
|
@@ -27,14 +27,14 @@ function Be(o) {
|
|
|
27
27
|
defaultNodeMuted: ie,
|
|
28
28
|
defaultNodeInteractive: le,
|
|
29
29
|
forcePointerSelect: ue
|
|
30
|
-
} = o, v = o.type ?? xe, [fe, z] = d(!1), [h,
|
|
31
|
-
const r = (
|
|
30
|
+
} = o, v = o.type ?? xe, [fe, z] = d(!1), [h, w] = d(!1), [k, A] = d(!1), [C, x] = d(!1), [g, L] = d(""), [S, O] = d(/* @__PURE__ */ new Map()), [p, de] = d([]), [he, me] = d([]), M = u((e) => {
|
|
31
|
+
const r = (t) => {
|
|
32
32
|
const n = [], s = (c) => {
|
|
33
33
|
if (c)
|
|
34
34
|
for (const l of c)
|
|
35
35
|
n.push(l), l.items && l.items.length && s(l.items);
|
|
36
36
|
};
|
|
37
|
-
s(
|
|
37
|
+
s(t), me((c) => {
|
|
38
38
|
if (!n.find((a) => !!f && String(a.value) === String(f))) {
|
|
39
39
|
const i = ((S.size ? Array.from(S.values()) : void 0) || c).find((j) => !!f && String(j.value) === String(f));
|
|
40
40
|
if (i) return [i, ...n];
|
|
@@ -42,8 +42,8 @@ function Be(o) {
|
|
|
42
42
|
return n;
|
|
43
43
|
});
|
|
44
44
|
};
|
|
45
|
-
de((
|
|
46
|
-
const n = typeof
|
|
45
|
+
de((t) => {
|
|
46
|
+
const n = typeof e == "function" ? e(t) : e;
|
|
47
47
|
return r(n), O((s) => {
|
|
48
48
|
const c = new Map(s), l = Array.isArray(f) ? f : [f];
|
|
49
49
|
for (const a of l) {
|
|
@@ -58,23 +58,22 @@ function Be(o) {
|
|
|
58
58
|
$(() => {
|
|
59
59
|
N?.length && M(N);
|
|
60
60
|
}, [N]);
|
|
61
|
-
const
|
|
62
|
-
|
|
63
|
-
const
|
|
64
|
-
return R.current =
|
|
61
|
+
const b = J(0), R = J(null), E = u(() => {
|
|
62
|
+
b.current += 1, R.current?.abort();
|
|
63
|
+
const e = new AbortController();
|
|
64
|
+
return R.current = e, { id: b.current, signal: e.signal };
|
|
65
65
|
}, []);
|
|
66
66
|
$(() => () => R.current?.abort(), []);
|
|
67
|
-
const X = H(() => !!g && !p.length && !h, [h, p.length, g]), U = H(() => !p.length && !h, [h, p.length, g]), I = u((
|
|
67
|
+
const X = H(() => !!g && !p.length && !h, [h, p.length, g]), U = H(() => !p.length && !h, [h, p.length, g]), I = u((e) => {
|
|
68
68
|
o.type === "single" && (O((r) => {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
return e.has(t.value) ? e = /* @__PURE__ */ new Map() : e.set(t.value, t), n ? o.onChange?.(void 0) : o.onChange?.(t.value), e;
|
|
69
|
+
const t = r.has(e.value), n = /* @__PURE__ */ new Map();
|
|
70
|
+
return t ? o.onChange?.(void 0) : (n.set(e.value, e), o.onChange?.(e.value)), n;
|
|
72
71
|
}), x(!1)), o.type === "multi" && O((r) => {
|
|
73
|
-
const
|
|
74
|
-
return
|
|
72
|
+
const t = new Map(r);
|
|
73
|
+
return t.has(e.value) ? t.delete(e.value) : t.set(e.value, e), o.onChange?.(Array.from(t.keys())), t;
|
|
75
74
|
});
|
|
76
75
|
}, [o.type, o.onChange]), m = H(() => {
|
|
77
|
-
const
|
|
76
|
+
const e = {
|
|
78
77
|
options: p,
|
|
79
78
|
setOptions: M,
|
|
80
79
|
search: g || "",
|
|
@@ -83,21 +82,21 @@ function Be(o) {
|
|
|
83
82
|
open: C,
|
|
84
83
|
setOpen: x,
|
|
85
84
|
loading: h,
|
|
86
|
-
setLoading:
|
|
85
|
+
setLoading: w,
|
|
87
86
|
isEmptyList: U,
|
|
88
87
|
isSearchedEmptyList: X,
|
|
89
88
|
placeholder: T
|
|
90
89
|
}, r = Array.from(S.values());
|
|
91
90
|
if (v === "multi")
|
|
92
|
-
return { ...
|
|
91
|
+
return { ...e, type: "multi", selectedOption: r, setSelectedOption: (s) => {
|
|
93
92
|
O((c) => {
|
|
94
93
|
const l = Array.from(c.values()), a = typeof s == "function" ? s(l) : s;
|
|
95
94
|
return a ? new Map(a.map((i) => [i.value, i])) : /* @__PURE__ */ new Map();
|
|
96
95
|
});
|
|
97
96
|
} };
|
|
98
97
|
if (v === "single") {
|
|
99
|
-
const
|
|
100
|
-
return { ...
|
|
98
|
+
const t = r[0];
|
|
99
|
+
return { ...e, type: "single", selectedOption: t, setSelectedOption: (s) => {
|
|
101
100
|
O((c) => {
|
|
102
101
|
const [l] = Array.from(c.values()), a = typeof s == "function" ? s(l) : s, i = /* @__PURE__ */ new Map();
|
|
103
102
|
return a && i.set(a.value, a), i;
|
|
@@ -107,51 +106,51 @@ function Be(o) {
|
|
|
107
106
|
throw new Error(`Combobox type ${v} is not supported`);
|
|
108
107
|
}, [T, h, C, p, g, S, U, X, M, I, o.type]);
|
|
109
108
|
Ce(o.imperativeRef, () => m, [m]);
|
|
110
|
-
const D = u(async (
|
|
111
|
-
const
|
|
112
|
-
if (!
|
|
113
|
-
return Array.isArray(
|
|
114
|
-
}, [y, m]), _ = u(async (
|
|
109
|
+
const D = u(async (e, r) => {
|
|
110
|
+
const t = await y(e, r, m);
|
|
111
|
+
if (!t) throw new Error("Expected loadData to return data");
|
|
112
|
+
return Array.isArray(t) ? { data: t, total: t.length } : t;
|
|
113
|
+
}, [y, m]), _ = u(async (e = "") => {
|
|
115
114
|
if (!y) return;
|
|
116
|
-
const { id: r, signal:
|
|
115
|
+
const { id: r, signal: t } = E();
|
|
117
116
|
try {
|
|
118
|
-
|
|
119
|
-
const n = await D({ search:
|
|
120
|
-
if (r !==
|
|
117
|
+
w(!0), A(!1);
|
|
118
|
+
const n = await D({ search: e }, t);
|
|
119
|
+
if (r !== b.current) return;
|
|
121
120
|
M(n.data), G(n.total), V(n.data.length);
|
|
122
121
|
} catch (n) {
|
|
123
122
|
console.error("Unexpected error while get option:", n);
|
|
124
123
|
} finally {
|
|
125
|
-
r ===
|
|
124
|
+
r === b.current && w(!1);
|
|
126
125
|
}
|
|
127
126
|
}, [E, D, y]), pe = u(async () => {
|
|
128
127
|
if (!y || !B || h || k) return;
|
|
129
|
-
const { id:
|
|
128
|
+
const { id: e, signal: r } = E();
|
|
130
129
|
try {
|
|
131
130
|
A(!0);
|
|
132
|
-
const
|
|
131
|
+
const t = await D(
|
|
133
132
|
{ search: g, offset: F },
|
|
134
133
|
r
|
|
135
134
|
);
|
|
136
|
-
M((n) => [...n, ...
|
|
137
|
-
} catch (
|
|
138
|
-
console.error("Unexpected error while load more option:",
|
|
135
|
+
M((n) => [...n, ...t.data]), G(t.total), V((n) => n + t.data.length);
|
|
136
|
+
} catch (t) {
|
|
137
|
+
console.error("Unexpected error while load more option:", t);
|
|
139
138
|
} finally {
|
|
140
|
-
|
|
139
|
+
e === b.current && A(!1);
|
|
141
140
|
}
|
|
142
141
|
}, [E, D, B, y, h, k, F, g]), ye = Ae(_, 600, {
|
|
143
142
|
leading: !1,
|
|
144
143
|
trailing: !0
|
|
145
|
-
}), ve = u((
|
|
146
|
-
|
|
144
|
+
}), ve = u((e) => {
|
|
145
|
+
w(!0), L(e), ye(e);
|
|
147
146
|
}, []), Se = u(() => {
|
|
148
147
|
o.onChange(void 0), O(/* @__PURE__ */ new Map()), x(!1);
|
|
149
148
|
}, [o.onChange]), Y = u(() => {
|
|
150
|
-
R.current?.abort(),
|
|
151
|
-
}, []), Oe = u(async (
|
|
152
|
-
if (x(
|
|
149
|
+
R.current?.abort(), b.current += 1, L(""), w(!1), A(!1);
|
|
150
|
+
}, []), Oe = u(async (e) => {
|
|
151
|
+
if (x(e), !e) return Y();
|
|
153
152
|
_(), L("");
|
|
154
|
-
}, [Y, _]),
|
|
153
|
+
}, [Y, _]), be = u(async () => {
|
|
155
154
|
if (o.onMount) {
|
|
156
155
|
z(!0);
|
|
157
156
|
try {
|
|
@@ -162,8 +161,8 @@ function Be(o) {
|
|
|
162
161
|
}
|
|
163
162
|
}, [o.onMount, m]);
|
|
164
163
|
return Me(() => {
|
|
165
|
-
|
|
166
|
-
}, []), /* @__PURE__ */ q("div", { className: "w-full", children: /* @__PURE__ */
|
|
164
|
+
be();
|
|
165
|
+
}, []), /* @__PURE__ */ q("div", { className: "w-full", children: /* @__PURE__ */ we(
|
|
167
166
|
Ee,
|
|
168
167
|
{
|
|
169
168
|
open: C,
|
package/Combobox/Combobox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.js","sources":["../../src/Combobox/Combobox.tsx"],"sourcesContent":["import {\r\n Dispatch, JSX,\r\n SetStateAction,\r\n useCallback,\r\n useEffect, useImperativeHandle,\r\n useLayoutEffect,\r\n useMemo, useRef,\r\n useState,\r\n} from 'react';\r\nimport { Popover } from '../Popover';\r\nimport { useDebounceCallback } from '@oneplatformdev/hooks';\r\nimport {\r\n ComboboxCallbackStateParams, ComboboxCallbackStateParamsRenderHandler,\r\n ComboboxOption,\r\n ComboboxProps, ComboboxSelectedType,\r\n DEFAULT_COMBOBOX_TYPE, MultiComboboxProps, SingleComboboxProps,\r\n} from './Combobox.types';\r\nimport { ComboboxRenderTrigger } from \"./ComboboxRenderTrigger\";\r\nimport { ComboboxRenderContent } from \"./ComboboxRenderContent\";\r\n\r\nexport function Combobox<Data extends object>(props: SingleComboboxProps<Data>): JSX.Element;\r\nexport function Combobox<Data extends object>(props: MultiComboboxProps<Data>): JSX.Element;\r\n\r\nexport function Combobox<Data extends object = object>(\r\n props: ComboboxProps<Data, 'single'> | ComboboxProps<Data, 'multi'>\r\n): JSX.Element {\r\n const {\r\n value,\r\n options: itemOptions,\r\n placeholder,\r\n disabled,\r\n searchLabel,\r\n emptyLabel,\r\n loadData,\r\n renderTrigger,\r\n commandInputAction,\r\n renderList,\r\n listHeadAction,\r\n listFooterAction,\r\n emptyAction,\r\n slotProps,\r\n defaultNodeOpen,\r\n defaultNodeDisabled,\r\n defaultNodeMatched,\r\n defaultNodeMuted,\r\n defaultNodeInteractive,\r\n forcePointerSelect,\r\n } = props;\r\n\r\n const type: ComboboxSelectedType = props.type ?? DEFAULT_COMBOBOX_TYPE;\r\n type StateSingle = ComboboxCallbackStateParams<Data, 'single'>;\r\n type StateMulti = ComboboxCallbackStateParams<Data, 'multi'>;\r\n type State = StateSingle | StateMulti;\r\n\r\n const [ initialLoading, setInitialLoading ] = useState(false);\r\n const [ loading, setLoading ] = useState(false);\r\n const [loadingMore, setLoadingMore] = useState(false);\r\n\r\n const [ open, setOpen ] = useState(false);\r\n const [ searchTerm, setSearchTerm ] = useState('');\r\n\r\n const [ selectedOptions, setSelectedOptions ] = useState<\r\n Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>\r\n >(new Map());\r\n\r\n const [ options, _setOptions ] = useState<ComboboxOption<Data>[]>([]);\r\n const [ flattenOptions, setFlattenOptions ] = useState<ComboboxOption<Data>[]>([]);\r\n const setOptions: Dispatch<SetStateAction<ComboboxOption<Data>[]>> = useCallback((stater) => {\r\n const flatten = (next: ComboboxOption<Data>[]) => {\r\n const res: ComboboxOption<Data>[] = [];\r\n const walk = (nodes?: ComboboxOption<Data>[]) => {\r\n if (!nodes) return;\r\n for (const node of nodes) {\r\n res.push(node);\r\n if (node.items && node.items.length) walk(node.items);\r\n }\r\n };\r\n walk(next);\r\n setFlattenOptions((prev) => {\r\n const isIncludedInRes = res.find(o => !!value && String(o.value) === String(value));\r\n\r\n if (!isIncludedInRes) {\r\n const selectedOption = selectedOptions.size ? Array.from(selectedOptions.values()) : undefined;\r\n const current = (selectedOption || prev).find(o => !!value && String(o.value) === String(value))\r\n if (current) return [ current, ...res ];\r\n }\r\n\r\n return res;\r\n });\r\n }\r\n _setOptions((prev) => {\r\n const next: ComboboxOption<Data>[] = typeof stater === 'function' ? stater(prev) : stater;\r\n flatten(next);\r\n setSelectedOptions(prevSelections => {\r\n const nextSelections = new Map(prevSelections);\r\n const vls = Array.isArray(value) ? value : [value];\r\n for (const v of vls) {\r\n if(!v) continue;\r\n if(nextSelections.has(v)) continue;\r\n const o = next.find(o => String(o.value).toLowerCase() === String(v).toLowerCase());\r\n if(!o) continue;\r\n nextSelections.set(o.value, o);\r\n }\r\n return nextSelections;\r\n })\r\n return next;\r\n });\r\n }, [ selectedOptions, value ])\r\n\r\n const [total, setTotal] = useState<number>(0);\r\n const [offset, setOffset] = useState<number>(0);\r\n const hasNext = offset < total;\r\n\r\n useEffect(() => {\r\n itemOptions?.length && setOptions(itemOptions);\r\n }, [ itemOptions ]);\r\n\r\n const requestIdRef = useRef(0);\r\n const abortRef = useRef<AbortController>(null);\r\n const beginRequest = useCallback(() => {\r\n requestIdRef.current += 1;\r\n abortRef.current?.abort();\r\n const ac = new AbortController();\r\n abortRef.current = ac;\r\n return { id: requestIdRef.current, signal: ac.signal };\r\n }, []);\r\n useEffect(() => {\r\n return () => abortRef.current?.abort();\r\n }, []);\r\n\r\n const isSearchedEmptyList = useMemo(() => {\r\n return Boolean(searchTerm) && !options.length && !loading;\r\n }, [ loading, options.length, searchTerm ])\r\n\r\n const isEmptyList = useMemo(() => {\r\n return !options.length && !loading;\r\n }, [ loading, options.length, searchTerm ])\r\n\r\n const onChangeOption = useCallback((option: ComboboxOption<Data>) => {\r\n if(props.type === 'single') {\r\n setSelectedOptions(prev => {\r\n let next = new Map(prev);\r\n const isSelected = next.has(option.value);\r\n\r\n if(next.has(option.value)) next = new Map();\r\n else next.set(option.value, option);\r\n\r\n if(isSelected) props.onChange?.(undefined);\r\n else props.onChange?.(option.value);\r\n\r\n return next;\r\n });\r\n setOpen(false);\r\n }\r\n\r\n if(props.type === 'multi') {\r\n setSelectedOptions(prev => {\r\n const next = new Map(prev);\r\n if(next.has(option.value)) next.delete(option.value);\r\n else next.set(option.value, option);\r\n props.onChange?.(Array.from(next.keys()));\r\n return next;\r\n });\r\n }\r\n }, [props.type, props.onChange]);\r\n\r\n const callbackStateParams = useMemo((): State => {\r\n const base = {\r\n options,\r\n setOptions,\r\n search: searchTerm || '',\r\n setSearch: setSearchTerm,\r\n onChangeOption,\r\n open,\r\n setOpen,\r\n loading,\r\n setLoading,\r\n isEmptyList,\r\n isSearchedEmptyList,\r\n placeholder,\r\n }\r\n\r\n const selectedOptionArray = Array.from(selectedOptions.values());\r\n\r\n if(type === 'multi') {\r\n const selectedOption = selectedOptionArray\r\n const setSelectedOption: Dispatch<SetStateAction<ComboboxOption<Data>[] | undefined>> = (value) => {\r\n setSelectedOptions((prevSet) => {\r\n const prevStateArray = Array.from(prevSet.values());\r\n const nextStateArray = typeof value === 'function'\r\n ? (value as (prev: ComboboxOption<Data>[]) => ComboboxOption<Data>[])(prevStateArray)\r\n : value;\r\n if (!nextStateArray) return new Map();\r\n return new Map(nextStateArray.map(o => [o.value, o]));\r\n });\r\n };\r\n return { ...base, type: 'multi', selectedOption, setSelectedOption } satisfies StateMulti;\r\n }\r\n\r\n if(type === 'single') {\r\n const selectedOption = selectedOptionArray[0]\r\n const setSelectedOption: Dispatch<SetStateAction<ComboboxOption<Data> | undefined>> = (value) => {\r\n setSelectedOptions((prevSet) => {\r\n const [currentSingle] = Array.from(prevSet.values());\r\n const nextValue = typeof value === 'function'\r\n ? (value as (prev: ComboboxOption<Data> | undefined) => ComboboxOption<Data> | undefined)(currentSingle)\r\n : value;\r\n\r\n const nextMap = new Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>();\r\n if (nextValue) nextMap.set(nextValue.value, nextValue);\r\n return nextMap;\r\n });\r\n };\r\n return { ...base, type: 'single', selectedOption, setSelectedOption } satisfies StateSingle;\r\n }\r\n\r\n throw new Error(`Combobox type ${type} is not supported`);\r\n }, [ placeholder, loading, open, options, searchTerm, selectedOptions, isEmptyList, isSearchedEmptyList, setOptions, onChangeOption, props.type ]);\r\n useImperativeHandle(props.imperativeRef, () => callbackStateParams, [callbackStateParams]);\r\n\r\n const fetchData = useCallback(async (\r\n params: Parameters<typeof loadData>[0],\r\n signal: AbortSignal,\r\n ) => {\r\n const fetchedData = await loadData(params, signal, callbackStateParams);\r\n if (!fetchedData) throw new Error('Expected loadData to return data');\r\n return Array.isArray(fetchedData)\r\n ? { data: fetchedData, total: fetchedData.length }\r\n : fetchedData;\r\n }, [loadData, callbackStateParams]);\r\n\r\n const loadFirst = useCallback(async (value: string = '') => {\r\n if (!loadData) return;\r\n const { id, signal } = beginRequest();\r\n try {\r\n setLoading(true);\r\n setLoadingMore(false);\r\n\r\n const result = await fetchData({ search: value }, signal);\r\n if (id !== requestIdRef.current) return;\r\n\r\n setOptions(result.data);\r\n setTotal(result.total);\r\n setOffset(result.data.length);\r\n } catch (error) {\r\n console.error('Unexpected error while get option:', error);\r\n } finally {\r\n if (id === requestIdRef.current) setLoading(false);\r\n }\r\n }, [beginRequest, fetchData, loadData]);\r\n\r\n const loadMore = useCallback(async () => {\r\n if (!loadData) return;\r\n if (!hasNext || loading || loadingMore) return;\r\n const { id, signal } = beginRequest();\r\n try {\r\n setLoadingMore(true);\r\n const result = await fetchData(\r\n { search: searchTerm, offset },\r\n signal\r\n );\r\n setOptions((prev) => [...prev, ...result.data]);\r\n setTotal(result.total);\r\n setOffset((prev) => prev + result.data.length);\r\n } catch (error) {\r\n console.error('Unexpected error while load more option:', error);\r\n } finally {\r\n if (id === requestIdRef.current) setLoadingMore(false);\r\n }\r\n }, [beginRequest, fetchData, hasNext, loadData, loading, loadingMore, offset, searchTerm]);\r\n\r\n const debouncedGetData = useDebounceCallback(loadFirst, 600, {\r\n leading: false,\r\n trailing: true,\r\n });\r\n\r\n const handleSearchChange = useCallback((value: string) => {\r\n setLoading(true);\r\n setSearchTerm(value);\r\n debouncedGetData(value);\r\n }, []);\r\n\r\n const handleClearSelections = useCallback(() => {\r\n props.onChange(undefined);\r\n setSelectedOptions(new Map());\r\n setOpen(false);\r\n }, [props.onChange]);\r\n\r\n const handleReset = useCallback(() => {\r\n abortRef.current?.abort();\r\n requestIdRef.current += 1;\r\n setSearchTerm(\"\");\r\n setLoading(false);\r\n setLoadingMore(false);\r\n }, []);\r\n\r\n const handlePopoverOpen = useCallback(async (next: boolean) => {\r\n setOpen(next);\r\n if(!next) return handleReset();\r\n void loadFirst();\r\n setSearchTerm('');\r\n }, [handleReset, loadFirst]);\r\n\r\n const runOnMount = useCallback(async () => {\r\n if (!props.onMount) return;\r\n setInitialLoading(true);\r\n try {\r\n if (type === 'multi') {\r\n await (props as MultiComboboxProps<Data>).onMount?.(callbackStateParams as StateMulti);\r\n } else {\r\n await (props as SingleComboboxProps<Data>).onMount?.(callbackStateParams as StateSingle);\r\n }\r\n } finally {\r\n setInitialLoading(false);\r\n }\r\n }, [ props.onMount, callbackStateParams ]);\r\n useLayoutEffect(() => {\r\n runOnMount();\r\n }, []);\r\n\r\n return (\r\n <div className=\"w-full\">\r\n <Popover\r\n open={open}\r\n onOpenChange={handlePopoverOpen}\r\n modal={slotProps?.popover?.modal}\r\n >\r\n <ComboboxRenderTrigger\r\n value={value}\r\n type={type}\r\n open={open}\r\n initialLoading={initialLoading}\r\n selectedOptions={selectedOptions}\r\n flattenOptions={flattenOptions}\r\n onSelect={onChangeOption}\r\n onClearSelections={handleClearSelections}\r\n callbackStateParams={callbackStateParams}\r\n renderTrigger={renderTrigger as ComboboxCallbackStateParamsRenderHandler<Data>}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n />\r\n\r\n <ComboboxRenderContent\r\n open={open}\r\n value={value}\r\n type={type}\r\n options={options}\r\n search={searchTerm}\r\n onSearch={handleSearchChange}\r\n onSelect={onChangeOption}\r\n onLoadMore={loadMore}\r\n hasNext={hasNext}\r\n loading={loading}\r\n loadingMore={loadingMore}\r\n isEmptyList={isEmptyList}\r\n callbackStateParams={callbackStateParams}\r\n commandInputAction={commandInputAction as ComboboxCallbackStateParamsRenderHandler<Data>}\r\n renderList={renderList as ComboboxCallbackStateParamsRenderHandler<Data>}\r\n listHeadAction={listHeadAction as ComboboxCallbackStateParamsRenderHandler<Data>}\r\n listFooterAction={listFooterAction as ComboboxCallbackStateParamsRenderHandler<Data>}\r\n emptyAction={emptyAction as ComboboxCallbackStateParamsRenderHandler<Data>}\r\n slotProps={slotProps}\r\n searchLabel={searchLabel}\r\n emptyLabel={emptyLabel}\r\n defaultNodeOpen={defaultNodeOpen}\r\n defaultNodeDisabled={defaultNodeDisabled}\r\n defaultNodeMatched={defaultNodeMatched}\r\n defaultNodeMuted={defaultNodeMuted}\r\n defaultNodeInteractive={defaultNodeInteractive}\r\n forcePointerSelect={forcePointerSelect}\r\n popoverContainer={slotProps?.popover?.container}\r\n />\r\n </Popover>\r\n </div>\r\n );\r\n}\r\n"],"names":["Combobox","props","value","itemOptions","placeholder","disabled","searchLabel","emptyLabel","loadData","renderTrigger","commandInputAction","renderList","listHeadAction","listFooterAction","emptyAction","slotProps","defaultNodeOpen","defaultNodeDisabled","defaultNodeMatched","defaultNodeMuted","defaultNodeInteractive","forcePointerSelect","type","DEFAULT_COMBOBOX_TYPE","initialLoading","setInitialLoading","useState","loading","setLoading","loadingMore","setLoadingMore","open","setOpen","searchTerm","setSearchTerm","selectedOptions","setSelectedOptions","options","_setOptions","flattenOptions","setFlattenOptions","setOptions","useCallback","stater","flatten","next","res","walk","nodes","node","prev","o","current","prevSelections","nextSelections","vls","v","total","setTotal","offset","setOffset","hasNext","useEffect","requestIdRef","useRef","abortRef","beginRequest","ac","isSearchedEmptyList","useMemo","isEmptyList","onChangeOption","option","isSelected","callbackStateParams","base","selectedOptionArray","prevSet","prevStateArray","nextStateArray","selectedOption","currentSingle","nextValue","nextMap","useImperativeHandle","fetchData","params","signal","fetchedData","loadFirst","id","result","error","loadMore","debouncedGetData","useDebounceCallback","handleSearchChange","handleClearSelections","handleReset","handlePopoverOpen","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 {\r\n Dispatch, JSX,\r\n SetStateAction,\r\n useCallback,\r\n useEffect, useImperativeHandle,\r\n useLayoutEffect,\r\n useMemo, useRef,\r\n useState,\r\n} from 'react';\r\nimport { Popover } from '../Popover';\r\nimport { useDebounceCallback } from '@oneplatformdev/hooks';\r\nimport {\r\n ComboboxCallbackStateParams, ComboboxCallbackStateParamsRenderHandler,\r\n ComboboxOption,\r\n ComboboxProps, ComboboxSelectedType,\r\n DEFAULT_COMBOBOX_TYPE, MultiComboboxProps, SingleComboboxProps,\r\n} from './Combobox.types';\r\nimport { ComboboxRenderTrigger } from \"./ComboboxRenderTrigger\";\r\nimport { ComboboxRenderContent } from \"./ComboboxRenderContent\";\r\n\r\nexport function Combobox<Data extends object>(props: SingleComboboxProps<Data>): JSX.Element;\r\nexport function Combobox<Data extends object>(props: MultiComboboxProps<Data>): JSX.Element;\r\n\r\nexport function Combobox<Data extends object = object>(\r\n props: ComboboxProps<Data, 'single'> | ComboboxProps<Data, 'multi'>\r\n): JSX.Element {\r\n const {\r\n value,\r\n options: itemOptions,\r\n placeholder,\r\n disabled,\r\n searchLabel,\r\n emptyLabel,\r\n loadData,\r\n renderTrigger,\r\n commandInputAction,\r\n renderList,\r\n listHeadAction,\r\n listFooterAction,\r\n emptyAction,\r\n slotProps,\r\n defaultNodeOpen,\r\n defaultNodeDisabled,\r\n defaultNodeMatched,\r\n defaultNodeMuted,\r\n defaultNodeInteractive,\r\n forcePointerSelect,\r\n } = props;\r\n\r\n const type: ComboboxSelectedType = props.type ?? DEFAULT_COMBOBOX_TYPE;\r\n type StateSingle = ComboboxCallbackStateParams<Data, 'single'>;\r\n type StateMulti = ComboboxCallbackStateParams<Data, 'multi'>;\r\n type State = StateSingle | StateMulti;\r\n\r\n const [ initialLoading, setInitialLoading ] = useState(false);\r\n const [ loading, setLoading ] = useState(false);\r\n const [loadingMore, setLoadingMore] = useState(false);\r\n\r\n const [ open, setOpen ] = useState(false);\r\n const [ searchTerm, setSearchTerm ] = useState('');\r\n\r\n const [ selectedOptions, setSelectedOptions ] = useState<\r\n Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>\r\n >(new Map());\r\n\r\n const [ options, _setOptions ] = useState<ComboboxOption<Data>[]>([]);\r\n const [ flattenOptions, setFlattenOptions ] = useState<ComboboxOption<Data>[]>([]);\r\n const setOptions: Dispatch<SetStateAction<ComboboxOption<Data>[]>> = useCallback((stater) => {\r\n const flatten = (next: ComboboxOption<Data>[]) => {\r\n const res: ComboboxOption<Data>[] = [];\r\n const walk = (nodes?: ComboboxOption<Data>[]) => {\r\n if (!nodes) return;\r\n for (const node of nodes) {\r\n res.push(node);\r\n if (node.items && node.items.length) walk(node.items);\r\n }\r\n };\r\n walk(next);\r\n setFlattenOptions((prev) => {\r\n const isIncludedInRes = res.find(o => !!value && String(o.value) === String(value));\r\n\r\n if (!isIncludedInRes) {\r\n const selectedOption = selectedOptions.size ? Array.from(selectedOptions.values()) : undefined;\r\n const current = (selectedOption || prev).find(o => !!value && String(o.value) === String(value))\r\n if (current) return [ current, ...res ];\r\n }\r\n\r\n return res;\r\n });\r\n }\r\n _setOptions((prev) => {\r\n const next: ComboboxOption<Data>[] = typeof stater === 'function' ? stater(prev) : stater;\r\n flatten(next);\r\n setSelectedOptions(prevSelections => {\r\n const nextSelections = new Map(prevSelections);\r\n const vls = Array.isArray(value) ? value : [value];\r\n for (const v of vls) {\r\n if(!v) continue;\r\n if(nextSelections.has(v)) continue;\r\n const o = next.find(o => String(o.value).toLowerCase() === String(v).toLowerCase());\r\n if(!o) continue;\r\n nextSelections.set(o.value, o);\r\n }\r\n return nextSelections;\r\n })\r\n return next;\r\n });\r\n }, [ selectedOptions, value ])\r\n\r\n const [total, setTotal] = useState<number>(0);\r\n const [offset, setOffset] = useState<number>(0);\r\n const hasNext = offset < total;\r\n\r\n useEffect(() => {\r\n itemOptions?.length && setOptions(itemOptions);\r\n }, [ itemOptions ]);\r\n\r\n const requestIdRef = useRef(0);\r\n const abortRef = useRef<AbortController>(null);\r\n const beginRequest = useCallback(() => {\r\n requestIdRef.current += 1;\r\n abortRef.current?.abort();\r\n const ac = new AbortController();\r\n abortRef.current = ac;\r\n return { id: requestIdRef.current, signal: ac.signal };\r\n }, []);\r\n useEffect(() => {\r\n return () => abortRef.current?.abort();\r\n }, []);\r\n\r\n const isSearchedEmptyList = useMemo(() => {\r\n return Boolean(searchTerm) && !options.length && !loading;\r\n }, [ loading, options.length, searchTerm ])\r\n\r\n const isEmptyList = useMemo(() => {\r\n return !options.length && !loading;\r\n }, [ loading, options.length, searchTerm ])\r\n\r\n const onChangeOption = useCallback((option: ComboboxOption<Data>) => {\r\n if(props.type === 'single') {\r\n setSelectedOptions(prev => {\r\n const isSelected = prev.has(option.value);\r\n const next = new Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>();\r\n\r\n if(isSelected) props.onChange?.(undefined);\r\n else {\r\n next.set(option.value, option);\r\n props.onChange?.(option.value);\r\n }\r\n\r\n return next;\r\n });\r\n setOpen(false);\r\n }\r\n\r\n if(props.type === 'multi') {\r\n setSelectedOptions(prev => {\r\n const next = new Map(prev);\r\n if(next.has(option.value)) next.delete(option.value);\r\n else next.set(option.value, option);\r\n props.onChange?.(Array.from(next.keys()));\r\n return next;\r\n });\r\n }\r\n }, [props.type, props.onChange]);\r\n\r\n const callbackStateParams = useMemo((): State => {\r\n const base = {\r\n options,\r\n setOptions,\r\n search: searchTerm || '',\r\n setSearch: setSearchTerm,\r\n onChangeOption,\r\n open,\r\n setOpen,\r\n loading,\r\n setLoading,\r\n isEmptyList,\r\n isSearchedEmptyList,\r\n placeholder,\r\n }\r\n\r\n const selectedOptionArray = Array.from(selectedOptions.values());\r\n\r\n if(type === 'multi') {\r\n const selectedOption = selectedOptionArray\r\n const setSelectedOption: Dispatch<SetStateAction<ComboboxOption<Data>[] | undefined>> = (value) => {\r\n setSelectedOptions((prevSet) => {\r\n const prevStateArray = Array.from(prevSet.values());\r\n const nextStateArray = typeof value === 'function'\r\n ? (value as (prev: ComboboxOption<Data>[]) => ComboboxOption<Data>[])(prevStateArray)\r\n : value;\r\n if (!nextStateArray) return new Map();\r\n return new Map(nextStateArray.map(o => [o.value, o]));\r\n });\r\n };\r\n return { ...base, type: 'multi', selectedOption, setSelectedOption } satisfies StateMulti;\r\n }\r\n\r\n if(type === 'single') {\r\n const selectedOption = selectedOptionArray[0]\r\n const setSelectedOption: Dispatch<SetStateAction<ComboboxOption<Data> | undefined>> = (value) => {\r\n setSelectedOptions((prevSet) => {\r\n const [currentSingle] = Array.from(prevSet.values());\r\n const nextValue = typeof value === 'function'\r\n ? (value as (prev: ComboboxOption<Data> | undefined) => ComboboxOption<Data> | undefined)(currentSingle)\r\n : value;\r\n\r\n const nextMap = new Map<ComboboxOption<Data>['value'], ComboboxOption<Data>>();\r\n if (nextValue) nextMap.set(nextValue.value, nextValue);\r\n return nextMap;\r\n });\r\n };\r\n return { ...base, type: 'single', selectedOption, setSelectedOption } satisfies StateSingle;\r\n }\r\n\r\n throw new Error(`Combobox type ${type} is not supported`);\r\n }, [ placeholder, loading, open, options, searchTerm, selectedOptions, isEmptyList, isSearchedEmptyList, setOptions, onChangeOption, props.type ]);\r\n useImperativeHandle(props.imperativeRef, () => callbackStateParams, [callbackStateParams]);\r\n\r\n const fetchData = useCallback(async (\r\n params: Parameters<typeof loadData>[0],\r\n signal: AbortSignal,\r\n ) => {\r\n const fetchedData = await loadData(params, signal, callbackStateParams);\r\n if (!fetchedData) throw new Error('Expected loadData to return data');\r\n return Array.isArray(fetchedData)\r\n ? { data: fetchedData, total: fetchedData.length }\r\n : fetchedData;\r\n }, [loadData, callbackStateParams]);\r\n\r\n const loadFirst = useCallback(async (value: string = '') => {\r\n if (!loadData) return;\r\n const { id, signal } = beginRequest();\r\n try {\r\n setLoading(true);\r\n setLoadingMore(false);\r\n\r\n const result = await fetchData({ search: value }, signal);\r\n if (id !== requestIdRef.current) return;\r\n\r\n setOptions(result.data);\r\n setTotal(result.total);\r\n setOffset(result.data.length);\r\n } catch (error) {\r\n console.error('Unexpected error while get option:', error);\r\n } finally {\r\n if (id === requestIdRef.current) setLoading(false);\r\n }\r\n }, [beginRequest, fetchData, loadData]);\r\n\r\n const loadMore = useCallback(async () => {\r\n if (!loadData) return;\r\n if (!hasNext || loading || loadingMore) return;\r\n const { id, signal } = beginRequest();\r\n try {\r\n setLoadingMore(true);\r\n const result = await fetchData(\r\n { search: searchTerm, offset },\r\n signal\r\n );\r\n setOptions((prev) => [...prev, ...result.data]);\r\n setTotal(result.total);\r\n setOffset((prev) => prev + result.data.length);\r\n } catch (error) {\r\n console.error('Unexpected error while load more option:', error);\r\n } finally {\r\n if (id === requestIdRef.current) setLoadingMore(false);\r\n }\r\n }, [beginRequest, fetchData, hasNext, loadData, loading, loadingMore, offset, searchTerm]);\r\n\r\n const debouncedGetData = useDebounceCallback(loadFirst, 600, {\r\n leading: false,\r\n trailing: true,\r\n });\r\n\r\n const handleSearchChange = useCallback((value: string) => {\r\n setLoading(true);\r\n setSearchTerm(value);\r\n debouncedGetData(value);\r\n }, []);\r\n\r\n const handleClearSelections = useCallback(() => {\r\n props.onChange(undefined);\r\n setSelectedOptions(new Map());\r\n setOpen(false);\r\n }, [props.onChange]);\r\n\r\n const handleReset = useCallback(() => {\r\n abortRef.current?.abort();\r\n requestIdRef.current += 1;\r\n setSearchTerm(\"\");\r\n setLoading(false);\r\n setLoadingMore(false);\r\n }, []);\r\n\r\n const handlePopoverOpen = useCallback(async (next: boolean) => {\r\n setOpen(next);\r\n if(!next) return handleReset();\r\n void loadFirst();\r\n setSearchTerm('');\r\n }, [handleReset, loadFirst]);\r\n\r\n const runOnMount = useCallback(async () => {\r\n if (!props.onMount) return;\r\n setInitialLoading(true);\r\n try {\r\n if (type === 'multi') {\r\n await (props as MultiComboboxProps<Data>).onMount?.(callbackStateParams as StateMulti);\r\n } else {\r\n await (props as SingleComboboxProps<Data>).onMount?.(callbackStateParams as StateSingle);\r\n }\r\n } finally {\r\n setInitialLoading(false);\r\n }\r\n }, [ props.onMount, callbackStateParams ]);\r\n useLayoutEffect(() => {\r\n runOnMount();\r\n }, []);\r\n\r\n return (\r\n <div className=\"w-full\">\r\n <Popover\r\n open={open}\r\n onOpenChange={handlePopoverOpen}\r\n modal={slotProps?.popover?.modal}\r\n >\r\n <ComboboxRenderTrigger\r\n value={value}\r\n type={type}\r\n open={open}\r\n initialLoading={initialLoading}\r\n selectedOptions={selectedOptions}\r\n flattenOptions={flattenOptions}\r\n onSelect={onChangeOption}\r\n onClearSelections={handleClearSelections}\r\n callbackStateParams={callbackStateParams}\r\n renderTrigger={renderTrigger as ComboboxCallbackStateParamsRenderHandler<Data>}\r\n placeholder={placeholder}\r\n disabled={disabled}\r\n />\r\n\r\n <ComboboxRenderContent\r\n open={open}\r\n value={value}\r\n type={type}\r\n options={options}\r\n search={searchTerm}\r\n onSearch={handleSearchChange}\r\n onSelect={onChangeOption}\r\n onLoadMore={loadMore}\r\n hasNext={hasNext}\r\n loading={loading}\r\n loadingMore={loadingMore}\r\n isEmptyList={isEmptyList}\r\n callbackStateParams={callbackStateParams}\r\n commandInputAction={commandInputAction as ComboboxCallbackStateParamsRenderHandler<Data>}\r\n renderList={renderList as ComboboxCallbackStateParamsRenderHandler<Data>}\r\n listHeadAction={listHeadAction as ComboboxCallbackStateParamsRenderHandler<Data>}\r\n listFooterAction={listFooterAction as ComboboxCallbackStateParamsRenderHandler<Data>}\r\n emptyAction={emptyAction as ComboboxCallbackStateParamsRenderHandler<Data>}\r\n slotProps={slotProps}\r\n searchLabel={searchLabel}\r\n emptyLabel={emptyLabel}\r\n defaultNodeOpen={defaultNodeOpen}\r\n defaultNodeDisabled={defaultNodeDisabled}\r\n defaultNodeMatched={defaultNodeMatched}\r\n defaultNodeMuted={defaultNodeMuted}\r\n defaultNodeInteractive={defaultNodeInteractive}\r\n forcePointerSelect={forcePointerSelect}\r\n popoverContainer={slotProps?.popover?.container}\r\n />\r\n </Popover>\r\n </div>\r\n );\r\n}\r\n"],"names":["Combobox","props","value","itemOptions","placeholder","disabled","searchLabel","emptyLabel","loadData","renderTrigger","commandInputAction","renderList","listHeadAction","listFooterAction","emptyAction","slotProps","defaultNodeOpen","defaultNodeDisabled","defaultNodeMatched","defaultNodeMuted","defaultNodeInteractive","forcePointerSelect","type","DEFAULT_COMBOBOX_TYPE","initialLoading","setInitialLoading","useState","loading","setLoading","loadingMore","setLoadingMore","open","setOpen","searchTerm","setSearchTerm","selectedOptions","setSelectedOptions","options","_setOptions","flattenOptions","setFlattenOptions","setOptions","useCallback","stater","flatten","next","res","walk","nodes","node","prev","o","current","prevSelections","nextSelections","vls","v","total","setTotal","offset","setOffset","hasNext","useEffect","requestIdRef","useRef","abortRef","beginRequest","ac","isSearchedEmptyList","useMemo","isEmptyList","onChangeOption","option","isSelected","callbackStateParams","base","selectedOptionArray","prevSet","prevStateArray","nextStateArray","selectedOption","currentSingle","nextValue","nextMap","useImperativeHandle","fetchData","params","signal","fetchedData","loadFirst","id","result","error","loadMore","debouncedGetData","useDebounceCallback","handleSearchChange","handleClearSelections","handleReset","handlePopoverOpen","runOnMount","useLayoutEffect","jsx","jsxs","Popover","ComboboxRenderTrigger","ComboboxRenderContent"],"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.287",
|
|
4
4
|
"description": "UI component library for OnePlatform",
|
|
5
5
|
"author": "One Platform Development Team",
|
|
6
6
|
"keywords": [
|
|
@@ -109,9 +109,9 @@
|
|
|
109
109
|
"recharts": "^3.2.0",
|
|
110
110
|
"sonner": "^2.0.7",
|
|
111
111
|
"vaul": "^1.1.2",
|
|
112
|
-
"@oneplatformdev/tokens": "^0.1.99-beta.
|
|
113
|
-
"@oneplatformdev/utils": "^0.1.99-beta.
|
|
114
|
-
"@oneplatformdev/hooks": "^0.1.99-beta.
|
|
112
|
+
"@oneplatformdev/tokens": "^0.1.99-beta.287",
|
|
113
|
+
"@oneplatformdev/utils": "^0.1.99-beta.287",
|
|
114
|
+
"@oneplatformdev/hooks": "^0.1.99-beta.287"
|
|
115
115
|
},
|
|
116
116
|
"scripts": {
|
|
117
117
|
"chromatic": "chromatic"
|