@oneplatformdev/ui 0.1.99-beta.254 → 0.1.99-beta.256
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 +16 -0
- package/Combobox/Combobox.js +97 -95
- package/Combobox/Combobox.js.map +1 -1
- package/Combobox/Combobox.types.d.ts +7 -0
- package/Combobox/Combobox.types.d.ts.map +1 -1
- package/Combobox/Combobox.types.js.map +1 -1
- package/Combobox/ComboboxRenderContent.d.ts +1 -0
- package/Combobox/ComboboxRenderContent.d.ts.map +1 -1
- package/Combobox/ComboboxRenderContent.js +30 -28
- package/Combobox/ComboboxRenderContent.js.map +1 -1
- package/Popover/Popover.d.ts +3 -1
- package/Popover/Popover.d.ts.map +1 -1
- package/Popover/Popover.js +12 -11
- package/Popover/Popover.js.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
## 0.1.99-beta.256 (2026-04-05)
|
|
2
|
+
|
|
3
|
+
### 🧱 Updated Dependencies
|
|
4
|
+
|
|
5
|
+
- Updated @oneplatformdev/utils to 0.1.99-beta.256
|
|
6
|
+
- Updated @oneplatformdev/hooks to 0.1.99-beta.256
|
|
7
|
+
- Updated @oneplatformdev/tokens to 0.1.99-beta.256
|
|
8
|
+
|
|
9
|
+
## 0.1.99-beta.255 (2026-04-05)
|
|
10
|
+
|
|
11
|
+
### 🧱 Updated Dependencies
|
|
12
|
+
|
|
13
|
+
- Updated @oneplatformdev/utils to 0.1.99-beta.255
|
|
14
|
+
- Updated @oneplatformdev/hooks to 0.1.99-beta.255
|
|
15
|
+
- Updated @oneplatformdev/tokens to 0.1.99-beta.255
|
|
16
|
+
|
|
1
17
|
## 0.1.99-beta.254 (2026-03-13)
|
|
2
18
|
|
|
3
19
|
### 🧱 Updated Dependencies
|
package/Combobox/Combobox.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useState as d, useCallback as u, useEffect as
|
|
1
|
+
import { jsx as q, jsxs as be } from "react/jsx-runtime";
|
|
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 { Popover as Ae } from "../Popover/Popover.js";
|
|
4
4
|
import { useDebounceCallback as xe } from "@oneplatformdev/hooks";
|
|
5
5
|
import { DEFAULT_COMBOBOX_TYPE as Le } from "./Combobox.types.js";
|
|
@@ -10,33 +10,33 @@ function Be(o) {
|
|
|
10
10
|
value: f,
|
|
11
11
|
options: N,
|
|
12
12
|
placeholder: T,
|
|
13
|
-
disabled:
|
|
14
|
-
searchLabel:
|
|
15
|
-
emptyLabel:
|
|
16
|
-
loadData:
|
|
17
|
-
renderTrigger:
|
|
18
|
-
commandInputAction:
|
|
19
|
-
renderList:
|
|
20
|
-
listHeadAction:
|
|
21
|
-
listFooterAction:
|
|
22
|
-
emptyAction:
|
|
23
|
-
slotProps:
|
|
13
|
+
disabled: K,
|
|
14
|
+
searchLabel: Q,
|
|
15
|
+
emptyLabel: W,
|
|
16
|
+
loadData: y,
|
|
17
|
+
renderTrigger: Z,
|
|
18
|
+
commandInputAction: ee,
|
|
19
|
+
renderList: te,
|
|
20
|
+
listHeadAction: ne,
|
|
21
|
+
listFooterAction: oe,
|
|
22
|
+
emptyAction: re,
|
|
23
|
+
slotProps: P,
|
|
24
24
|
defaultNodeOpen: ae,
|
|
25
25
|
defaultNodeDisabled: se,
|
|
26
26
|
defaultNodeMatched: ce,
|
|
27
27
|
defaultNodeMuted: ie,
|
|
28
28
|
defaultNodeInteractive: le,
|
|
29
29
|
forcePointerSelect: ue
|
|
30
|
-
} = o,
|
|
30
|
+
} = o, v = o.type ?? Le, [fe, z] = d(!1), [h, b] = 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((t) => {
|
|
31
31
|
const r = (e) => {
|
|
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(e),
|
|
37
|
+
s(e), me((c) => {
|
|
38
38
|
if (!n.find((a) => !!f && String(a.value) === String(f))) {
|
|
39
|
-
const i = ((
|
|
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];
|
|
41
41
|
}
|
|
42
42
|
return n;
|
|
@@ -44,178 +44,180 @@ function Be(o) {
|
|
|
44
44
|
};
|
|
45
45
|
de((e) => {
|
|
46
46
|
const n = typeof t == "function" ? t(e) : t;
|
|
47
|
-
return r(n),
|
|
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) {
|
|
50
50
|
if (!a || c.has(a)) continue;
|
|
51
|
-
const i = n.find((
|
|
51
|
+
const i = n.find((j) => String(j.value).toLowerCase() === String(a).toLowerCase());
|
|
52
52
|
i && c.set(i.value, i);
|
|
53
53
|
}
|
|
54
54
|
return c;
|
|
55
55
|
}), n;
|
|
56
56
|
});
|
|
57
|
-
}, [
|
|
58
|
-
|
|
59
|
-
N?.length &&
|
|
57
|
+
}, [S, f]), [ge, G] = d(0), [F, V] = d(0), B = F < ge;
|
|
58
|
+
$(() => {
|
|
59
|
+
N?.length && M(N);
|
|
60
60
|
}, [N]);
|
|
61
|
-
const w =
|
|
61
|
+
const w = J(0), R = J(null), E = u(() => {
|
|
62
62
|
w.current += 1, R.current?.abort();
|
|
63
63
|
const t = new AbortController();
|
|
64
64
|
return R.current = t, { id: w.current, signal: t.signal };
|
|
65
65
|
}, []);
|
|
66
|
-
|
|
67
|
-
const
|
|
68
|
-
o.type === "single" && (
|
|
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((t) => {
|
|
68
|
+
o.type === "single" && (O((r) => {
|
|
69
69
|
let e = new Map(r);
|
|
70
70
|
const n = e.has(t.value);
|
|
71
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;
|
|
72
|
-
}), x(!1)), o.type === "multi" &&
|
|
72
|
+
}), x(!1)), o.type === "multi" && O((r) => {
|
|
73
73
|
const e = new Map(r);
|
|
74
74
|
return e.has(t.value) ? e.delete(t.value) : e.set(t.value, t), o.onChange?.(Array.from(e.keys())), e;
|
|
75
75
|
});
|
|
76
|
-
}, [o.type, o.onChange]),
|
|
76
|
+
}, [o.type, o.onChange]), m = H(() => {
|
|
77
77
|
const t = {
|
|
78
|
-
options:
|
|
79
|
-
setOptions:
|
|
80
|
-
search:
|
|
78
|
+
options: p,
|
|
79
|
+
setOptions: M,
|
|
80
|
+
search: g || "",
|
|
81
81
|
setSearch: L,
|
|
82
82
|
onChangeOption: I,
|
|
83
|
-
open:
|
|
83
|
+
open: C,
|
|
84
84
|
setOpen: x,
|
|
85
85
|
loading: h,
|
|
86
86
|
setLoading: b,
|
|
87
|
-
isEmptyList:
|
|
88
|
-
isSearchedEmptyList:
|
|
87
|
+
isEmptyList: U,
|
|
88
|
+
isSearchedEmptyList: X,
|
|
89
89
|
placeholder: T
|
|
90
|
-
}, r = Array.from(
|
|
91
|
-
if (
|
|
90
|
+
}, r = Array.from(S.values());
|
|
91
|
+
if (v === "multi")
|
|
92
92
|
return { ...t, type: "multi", selectedOption: r, setSelectedOption: (s) => {
|
|
93
|
-
|
|
93
|
+
O((c) => {
|
|
94
94
|
const l = Array.from(c.values()), a = typeof s == "function" ? s(l) : s;
|
|
95
95
|
return a ? new Map(a.map((i) => [i.value, i])) : /* @__PURE__ */ new Map();
|
|
96
96
|
});
|
|
97
97
|
} };
|
|
98
|
-
if (
|
|
98
|
+
if (v === "single") {
|
|
99
99
|
const e = r[0];
|
|
100
100
|
return { ...t, type: "single", selectedOption: e, setSelectedOption: (s) => {
|
|
101
|
-
|
|
101
|
+
O((c) => {
|
|
102
102
|
const [l] = Array.from(c.values()), a = typeof s == "function" ? s(l) : s, i = /* @__PURE__ */ new Map();
|
|
103
103
|
return a && i.set(a.value, a), i;
|
|
104
104
|
});
|
|
105
105
|
} };
|
|
106
106
|
}
|
|
107
|
-
throw new Error(`Combobox type ${
|
|
108
|
-
}, [T, h,
|
|
109
|
-
|
|
107
|
+
throw new Error(`Combobox type ${v} is not supported`);
|
|
108
|
+
}, [T, h, C, p, g, S, U, X, M, I, o.type]);
|
|
109
|
+
Ce(o.imperativeRef, () => m, [m]);
|
|
110
110
|
const D = u(async (t, r) => {
|
|
111
|
-
const e = await
|
|
111
|
+
const e = await y(t, r, m);
|
|
112
112
|
if (!e) throw new Error("Expected loadData to return data");
|
|
113
113
|
return Array.isArray(e) ? { data: e, total: e.length } : e;
|
|
114
|
-
}, [
|
|
115
|
-
if (!
|
|
114
|
+
}, [y, m]), _ = u(async (t = "") => {
|
|
115
|
+
if (!y) return;
|
|
116
116
|
const { id: r, signal: e } = E();
|
|
117
117
|
try {
|
|
118
118
|
b(!0), A(!1);
|
|
119
119
|
const n = await D({ search: t }, e);
|
|
120
120
|
if (r !== w.current) return;
|
|
121
|
-
|
|
121
|
+
M(n.data), G(n.total), V(n.data.length);
|
|
122
122
|
} catch (n) {
|
|
123
123
|
console.error("Unexpected error while get option:", n);
|
|
124
124
|
} finally {
|
|
125
125
|
r === w.current && b(!1);
|
|
126
126
|
}
|
|
127
|
-
}, [E, D,
|
|
128
|
-
if (!
|
|
127
|
+
}, [E, D, y]), pe = u(async () => {
|
|
128
|
+
if (!y || !B || h || k) return;
|
|
129
129
|
const { id: t, signal: r } = E();
|
|
130
130
|
try {
|
|
131
131
|
A(!0);
|
|
132
132
|
const e = await D(
|
|
133
|
-
{ search:
|
|
133
|
+
{ search: g, offset: F },
|
|
134
134
|
r
|
|
135
135
|
);
|
|
136
|
-
|
|
136
|
+
M((n) => [...n, ...e.data]), G(e.total), V((n) => n + e.data.length);
|
|
137
137
|
} catch (e) {
|
|
138
138
|
console.error("Unexpected error while load more option:", e);
|
|
139
139
|
} finally {
|
|
140
140
|
t === w.current && A(!1);
|
|
141
141
|
}
|
|
142
|
-
}, [E, D,
|
|
142
|
+
}, [E, D, B, y, h, k, F, g]), ye = xe(_, 600, {
|
|
143
143
|
leading: !1,
|
|
144
144
|
trailing: !0
|
|
145
|
-
}),
|
|
146
|
-
b(!0), L(t),
|
|
147
|
-
}, []),
|
|
148
|
-
o.onChange(void 0),
|
|
149
|
-
}, [o.onChange]),
|
|
145
|
+
}), ve = u((t) => {
|
|
146
|
+
b(!0), L(t), ye(t);
|
|
147
|
+
}, []), Se = u(() => {
|
|
148
|
+
o.onChange(void 0), O(/* @__PURE__ */ new Map()), x(!1);
|
|
149
|
+
}, [o.onChange]), Y = u(() => {
|
|
150
150
|
R.current?.abort(), w.current += 1, L(""), b(!1), A(!1);
|
|
151
|
-
}, []),
|
|
152
|
-
if (x(t), !t) return
|
|
153
|
-
|
|
154
|
-
}, [
|
|
151
|
+
}, []), Oe = u(async (t) => {
|
|
152
|
+
if (x(t), !t) return Y();
|
|
153
|
+
_(), L("");
|
|
154
|
+
}, [Y, _]), we = u(async () => {
|
|
155
155
|
if (o.onMount) {
|
|
156
|
-
|
|
156
|
+
z(!0);
|
|
157
157
|
try {
|
|
158
|
-
|
|
158
|
+
v === "multi" ? await o.onMount?.(m) : await o.onMount?.(m);
|
|
159
159
|
} finally {
|
|
160
|
-
|
|
160
|
+
z(!1);
|
|
161
161
|
}
|
|
162
162
|
}
|
|
163
|
-
}, [o.onMount,
|
|
164
|
-
return
|
|
163
|
+
}, [o.onMount, m]);
|
|
164
|
+
return Me(() => {
|
|
165
165
|
we();
|
|
166
|
-
}, []), /* @__PURE__ */
|
|
166
|
+
}, []), /* @__PURE__ */ q("div", { className: "w-full", children: /* @__PURE__ */ be(
|
|
167
167
|
Ae,
|
|
168
168
|
{
|
|
169
|
-
open:
|
|
170
|
-
onOpenChange:
|
|
169
|
+
open: C,
|
|
170
|
+
onOpenChange: Oe,
|
|
171
|
+
modal: P?.popover?.modal,
|
|
171
172
|
children: [
|
|
172
|
-
/* @__PURE__ */
|
|
173
|
+
/* @__PURE__ */ q(
|
|
173
174
|
Re,
|
|
174
175
|
{
|
|
175
176
|
value: f,
|
|
176
|
-
type:
|
|
177
|
-
open:
|
|
177
|
+
type: v,
|
|
178
|
+
open: C,
|
|
178
179
|
initialLoading: fe,
|
|
179
|
-
selectedOptions:
|
|
180
|
+
selectedOptions: S,
|
|
180
181
|
flattenOptions: he,
|
|
181
182
|
onSelect: I,
|
|
182
|
-
onClearSelections:
|
|
183
|
-
callbackStateParams:
|
|
184
|
-
renderTrigger:
|
|
183
|
+
onClearSelections: Se,
|
|
184
|
+
callbackStateParams: m,
|
|
185
|
+
renderTrigger: Z,
|
|
185
186
|
placeholder: T,
|
|
186
|
-
disabled:
|
|
187
|
+
disabled: K
|
|
187
188
|
}
|
|
188
189
|
),
|
|
189
|
-
/* @__PURE__ */
|
|
190
|
+
/* @__PURE__ */ q(
|
|
190
191
|
Ee,
|
|
191
192
|
{
|
|
192
|
-
open:
|
|
193
|
+
open: C,
|
|
193
194
|
value: f,
|
|
194
|
-
type:
|
|
195
|
-
options:
|
|
196
|
-
search:
|
|
197
|
-
onSearch:
|
|
195
|
+
type: v,
|
|
196
|
+
options: p,
|
|
197
|
+
search: g,
|
|
198
|
+
onSearch: ve,
|
|
198
199
|
onSelect: I,
|
|
199
|
-
onLoadMore:
|
|
200
|
-
hasNext:
|
|
200
|
+
onLoadMore: pe,
|
|
201
|
+
hasNext: B,
|
|
201
202
|
loading: h,
|
|
202
|
-
loadingMore:
|
|
203
|
-
isEmptyList:
|
|
204
|
-
callbackStateParams:
|
|
205
|
-
commandInputAction:
|
|
206
|
-
renderList:
|
|
207
|
-
listHeadAction:
|
|
208
|
-
listFooterAction:
|
|
209
|
-
emptyAction:
|
|
210
|
-
slotProps:
|
|
211
|
-
searchLabel:
|
|
212
|
-
emptyLabel:
|
|
203
|
+
loadingMore: k,
|
|
204
|
+
isEmptyList: U,
|
|
205
|
+
callbackStateParams: m,
|
|
206
|
+
commandInputAction: ee,
|
|
207
|
+
renderList: te,
|
|
208
|
+
listHeadAction: ne,
|
|
209
|
+
listFooterAction: oe,
|
|
210
|
+
emptyAction: re,
|
|
211
|
+
slotProps: P,
|
|
212
|
+
searchLabel: Q,
|
|
213
|
+
emptyLabel: W,
|
|
213
214
|
defaultNodeOpen: ae,
|
|
214
215
|
defaultNodeDisabled: se,
|
|
215
216
|
defaultNodeMatched: ce,
|
|
216
217
|
defaultNodeMuted: ie,
|
|
217
218
|
defaultNodeInteractive: le,
|
|
218
|
-
forcePointerSelect: ue
|
|
219
|
+
forcePointerSelect: ue,
|
|
220
|
+
popoverContainer: P?.popover?.container
|
|
219
221
|
}
|
|
220
222
|
)
|
|
221
223
|
]
|
package/Combobox/Combobox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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, useRef,\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 loadData,\n renderTrigger,\n commandInputAction,\n renderList,\n listHeadAction,\n listFooterAction,\n emptyAction,\n slotProps,\n defaultNodeOpen,\n defaultNodeDisabled,\n defaultNodeMatched,\n defaultNodeMuted,\n defaultNodeInteractive,\n forcePointerSelect,\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 const [loadingMore, setLoadingMore] = 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 const [total, setTotal] = useState<number>(0);\n const [offset, setOffset] = useState<number>(0);\n const hasNext = offset < total;\n\n useEffect(() => {\n itemOptions?.length && setOptions(itemOptions);\n }, [ itemOptions ]);\n\n const requestIdRef = useRef(0);\n const abortRef = useRef<AbortController>(null);\n const beginRequest = useCallback(() => {\n requestIdRef.current += 1;\n abortRef.current?.abort();\n const ac = new AbortController();\n abortRef.current = ac;\n return { id: requestIdRef.current, signal: ac.signal };\n }, []);\n useEffect(() => {\n return () => abortRef.current?.abort();\n }, []);\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 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 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 }, [ placeholder, loading, open, options, searchTerm, selectedOptions, isEmptyList, isSearchedEmptyList, setOptions, onChangeOption, props.type ]);\n useImperativeHandle(props.imperativeRef, () => callbackStateParams, [callbackStateParams]);\n\n const fetchData = useCallback(async (\n params: Parameters<typeof loadData>[0],\n signal: AbortSignal,\n ) => {\n const fetchedData = await loadData(params, signal, callbackStateParams);\n if (!fetchedData) throw new Error('Expected loadData to return data');\n return Array.isArray(fetchedData)\n ? { data: fetchedData, total: fetchedData.length }\n : fetchedData;\n }, [loadData, callbackStateParams]);\n\n const loadFirst = useCallback(async (value: string = '') => {\n if (!loadData) return;\n const { id, signal } = beginRequest();\n try {\n setLoading(true);\n setLoadingMore(false);\n\n const result = await fetchData({ search: value }, signal);\n if (id !== requestIdRef.current) return;\n\n setOptions(result.data);\n setTotal(result.total);\n setOffset(result.data.length);\n } catch (error) {\n console.error('Unexpected error while get option:', error);\n } finally {\n if (id === requestIdRef.current) setLoading(false);\n }\n }, [beginRequest, fetchData, loadData]);\n\n const loadMore = useCallback(async () => {\n if (!loadData) return;\n if (!hasNext || loading || loadingMore) return;\n const { id, signal } = beginRequest();\n try {\n setLoadingMore(true);\n const result = await fetchData(\n { search: searchTerm, offset },\n signal\n );\n setOptions((prev) => [...prev, ...result.data]);\n setTotal(result.total);\n setOffset((prev) => prev + result.data.length);\n } catch (error) {\n console.error('Unexpected error while load more option:', error);\n } finally {\n if (id === requestIdRef.current) setLoadingMore(false);\n }\n }, [beginRequest, fetchData, hasNext, loadData, loading, loadingMore, offset, searchTerm]);\n\n const debouncedGetData = useDebounceCallback(loadFirst, 600, {\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 handleClearSelections = useCallback(() => {\n props.onChange(undefined);\n setSelectedOptions(new Map());\n setOpen(false);\n }, [props.onChange]);\n\n const handleReset = useCallback(() => {\n abortRef.current?.abort();\n requestIdRef.current += 1;\n setSearchTerm(\"\");\n setLoading(false);\n setLoadingMore(false);\n }, []);\n\n const handlePopoverOpen = useCallback(async (next: boolean) => {\n setOpen(next);\n if(!next) return handleReset();\n void loadFirst();\n setSearchTerm('');\n }, [handleReset, loadFirst]);\n\n const runOnMount = useCallback(async () => {\n if (!props.onMount) return;\n setInitialLoading(true);\n try {\n if (type === 'multi') {\n await (props as MultiComboboxProps<Data>).onMount?.(callbackStateParams as StateMulti);\n } else {\n await (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 open={open}\n value={value}\n type={type}\n options={options}\n search={searchTerm}\n onSearch={handleSearchChange}\n onSelect={onChangeOption}\n onLoadMore={loadMore}\n hasNext={hasNext}\n loading={loading}\n loadingMore={loadingMore}\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 defaultNodeOpen={defaultNodeOpen}\n defaultNodeDisabled={defaultNodeDisabled}\n defaultNodeMatched={defaultNodeMatched}\n defaultNodeMuted={defaultNodeMuted}\n defaultNodeInteractive={defaultNodeInteractive}\n forcePointerSelect={forcePointerSelect}\n />\n </Popover>\n </div>\n );\n}\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 {\n Dispatch, JSX,\n SetStateAction,\n useCallback,\n useEffect, useImperativeHandle,\n useLayoutEffect,\n useMemo, useRef,\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 loadData,\n renderTrigger,\n commandInputAction,\n renderList,\n listHeadAction,\n listFooterAction,\n emptyAction,\n slotProps,\n defaultNodeOpen,\n defaultNodeDisabled,\n defaultNodeMatched,\n defaultNodeMuted,\n defaultNodeInteractive,\n forcePointerSelect,\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 const [loadingMore, setLoadingMore] = 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 const [total, setTotal] = useState<number>(0);\n const [offset, setOffset] = useState<number>(0);\n const hasNext = offset < total;\n\n useEffect(() => {\n itemOptions?.length && setOptions(itemOptions);\n }, [ itemOptions ]);\n\n const requestIdRef = useRef(0);\n const abortRef = useRef<AbortController>(null);\n const beginRequest = useCallback(() => {\n requestIdRef.current += 1;\n abortRef.current?.abort();\n const ac = new AbortController();\n abortRef.current = ac;\n return { id: requestIdRef.current, signal: ac.signal };\n }, []);\n useEffect(() => {\n return () => abortRef.current?.abort();\n }, []);\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 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 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 }, [ placeholder, loading, open, options, searchTerm, selectedOptions, isEmptyList, isSearchedEmptyList, setOptions, onChangeOption, props.type ]);\n useImperativeHandle(props.imperativeRef, () => callbackStateParams, [callbackStateParams]);\n\n const fetchData = useCallback(async (\n params: Parameters<typeof loadData>[0],\n signal: AbortSignal,\n ) => {\n const fetchedData = await loadData(params, signal, callbackStateParams);\n if (!fetchedData) throw new Error('Expected loadData to return data');\n return Array.isArray(fetchedData)\n ? { data: fetchedData, total: fetchedData.length }\n : fetchedData;\n }, [loadData, callbackStateParams]);\n\n const loadFirst = useCallback(async (value: string = '') => {\n if (!loadData) return;\n const { id, signal } = beginRequest();\n try {\n setLoading(true);\n setLoadingMore(false);\n\n const result = await fetchData({ search: value }, signal);\n if (id !== requestIdRef.current) return;\n\n setOptions(result.data);\n setTotal(result.total);\n setOffset(result.data.length);\n } catch (error) {\n console.error('Unexpected error while get option:', error);\n } finally {\n if (id === requestIdRef.current) setLoading(false);\n }\n }, [beginRequest, fetchData, loadData]);\n\n const loadMore = useCallback(async () => {\n if (!loadData) return;\n if (!hasNext || loading || loadingMore) return;\n const { id, signal } = beginRequest();\n try {\n setLoadingMore(true);\n const result = await fetchData(\n { search: searchTerm, offset },\n signal\n );\n setOptions((prev) => [...prev, ...result.data]);\n setTotal(result.total);\n setOffset((prev) => prev + result.data.length);\n } catch (error) {\n console.error('Unexpected error while load more option:', error);\n } finally {\n if (id === requestIdRef.current) setLoadingMore(false);\n }\n }, [beginRequest, fetchData, hasNext, loadData, loading, loadingMore, offset, searchTerm]);\n\n const debouncedGetData = useDebounceCallback(loadFirst, 600, {\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 handleClearSelections = useCallback(() => {\n props.onChange(undefined);\n setSelectedOptions(new Map());\n setOpen(false);\n }, [props.onChange]);\n\n const handleReset = useCallback(() => {\n abortRef.current?.abort();\n requestIdRef.current += 1;\n setSearchTerm(\"\");\n setLoading(false);\n setLoadingMore(false);\n }, []);\n\n const handlePopoverOpen = useCallback(async (next: boolean) => {\n setOpen(next);\n if(!next) return handleReset();\n void loadFirst();\n setSearchTerm('');\n }, [handleReset, loadFirst]);\n\n const runOnMount = useCallback(async () => {\n if (!props.onMount) return;\n setInitialLoading(true);\n try {\n if (type === 'multi') {\n await (props as MultiComboboxProps<Data>).onMount?.(callbackStateParams as StateMulti);\n } else {\n await (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 modal={slotProps?.popover?.modal}\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 open={open}\n value={value}\n type={type}\n options={options}\n search={searchTerm}\n onSearch={handleSearchChange}\n onSelect={onChangeOption}\n onLoadMore={loadMore}\n hasNext={hasNext}\n loading={loading}\n loadingMore={loadingMore}\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 defaultNodeOpen={defaultNodeOpen}\n defaultNodeDisabled={defaultNodeDisabled}\n defaultNodeMatched={defaultNodeMatched}\n defaultNodeMuted={defaultNodeMuted}\n defaultNodeInteractive={defaultNodeInteractive}\n forcePointerSelect={forcePointerSelect}\n popoverContainer={slotProps?.popover?.container}\n />\n </Popover>\n </div>\n );\n}\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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"}
|
|
@@ -54,7 +54,14 @@ export interface IComboboxOptionsProps<Data extends object = object> extends Omi
|
|
|
54
54
|
interface IListActionProps extends HTMLAttributes<HTMLDivElement> {
|
|
55
55
|
bordered?: boolean;
|
|
56
56
|
}
|
|
57
|
+
interface IPopoverSlotProps {
|
|
58
|
+
/** Set Popover modal mode. Use `true` when Combobox is inside a modal Dialog. */
|
|
59
|
+
modal?: boolean;
|
|
60
|
+
/** Container element for Popover portal. Use to render inside modal Dialog. */
|
|
61
|
+
container?: HTMLElement | null;
|
|
62
|
+
}
|
|
57
63
|
export interface ISlotProps {
|
|
64
|
+
popover?: IPopoverSlotProps;
|
|
58
65
|
listFooterAction?: IListActionProps;
|
|
59
66
|
}
|
|
60
67
|
type ComboboxLoadDataParams = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Combobox.types.d.ts","sourceRoot":"","sources":["../../src/Combobox/Combobox.types.ts"],"names":[],"mappings":"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
|
|
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\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 /** Use onPointerUp instead of cmdk onSelect. Fixes selection inside modal Dialog. */\n forcePointerSelect?: boolean;\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
|
|
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 /** Use onPointerUp instead of cmdk onSelect. Fixes selection inside modal Dialog. */\n forcePointerSelect?: boolean;\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}\ninterface IPopoverSlotProps {\n /** Set Popover modal mode. Use `true` when Combobox is inside a modal Dialog. */\n modal?: boolean;\n /** Container element for Popover portal. Use to render inside modal Dialog. */\n container?: HTMLElement | null;\n}\n\nexport interface ISlotProps {\n popover?: IPopoverSlotProps;\n listFooterAction?: IListActionProps;\n}\n\ntype ComboboxLoadDataParams = { search?: string; offset?: number; }\ntype ComboboxLoadDataResult<Data extends object = object> = { data: ComboboxOption<Data>[]; total: number; }\ntype ComboboxLoadDataReturn<Data extends object = object> = ComboboxOption<Data>[] | ComboboxLoadDataResult<Data>;\ntype ComboboxLoadData<Data extends object = object> = (\n params: ComboboxLoadDataParams,\n signal: AbortSignal,\n controller: ComboboxCallbackStateParams<Data, 'single'> | ComboboxCallbackStateParams<Data, 'multi'>\n) => Promise<ComboboxLoadDataReturn<Data>>;\n\nexport interface ComboboxBaseProps<\n Data extends object = object,\n T extends ComboboxSelectedType = 'single'\n> extends IComboboxOptionsNodeHandlersProps {\n type?: T;\n imperativeRef?: Ref<\n ComboboxCallbackStateParams<Data, 'single'>\n | ComboboxCallbackStateParams<Data, 'multi'>\n | null\n >;\n placeholder?: string;\n searchLabel?: string;\n disabled?: boolean;\n /** Callback for load data on search debounce */\n loadData: ComboboxLoadData<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;"}
|
|
@@ -20,6 +20,7 @@ type ComboboxRenderContentProps<Data extends object = object> = IComboboxOptions
|
|
|
20
20
|
listFooterAction?: ComboboxCallbackStateParamsRenderHandler<Data>;
|
|
21
21
|
emptyAction?: ComboboxCallbackStateParamsRenderHandler<Data>;
|
|
22
22
|
slotProps?: ISlotProps;
|
|
23
|
+
popoverContainer?: HTMLElement | null;
|
|
23
24
|
onLoadMore?: () => Promise<void>;
|
|
24
25
|
};
|
|
25
26
|
export declare const ComboboxRenderContent: <Data extends object = object>(props: ComboboxRenderContentProps<Data>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
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;AAM1B,KAAK,0BAA0B,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,IAC1D,iCAAiC,CAAC,IAAI,CAAC,GACrC;IACF,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,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;IAEjB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IAErB,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;IAEvB,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC,CAAA;AAkBD,eAAO,MAAM,qBAAqB,GAAI,IAAI,SAAS,MAAM,GAAG,MAAM,EAChE,OAAO,0BAA0B,CAAC,IAAI,CAAC,
|
|
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;AAM1B,KAAK,0BAA0B,CAAC,IAAI,SAAS,MAAM,GAAG,MAAM,IAC1D,iCAAiC,CAAC,IAAI,CAAC,GACrC;IACF,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf,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;IAEjB,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IAErB,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;IAEvB,gBAAgB,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IAEtC,UAAU,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAClC,CAAA;AAkBD,eAAO,MAAM,qBAAqB,GAAI,IAAI,SAAS,MAAM,GAAG,MAAM,EAChE,OAAO,0BAA0B,CAAC,IAAI,CAAC,4CAqJxC,CAAA"}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { jsx as e, jsxs as i, Fragment as w } from "react/jsx-runtime";
|
|
2
|
-
import { LoadingMask as
|
|
2
|
+
import { LoadingMask as G } from "../LoadingMask/LoadingMask.js";
|
|
3
3
|
import "../LoadingMask/RenderLoadingMask.js";
|
|
4
|
-
import { PopoverContent as
|
|
5
|
-
import { Command as
|
|
4
|
+
import { PopoverContent as H } from "../Popover/Popover.js";
|
|
5
|
+
import { Command as J, CommandInput as T, CommandList as W, CommandGroup as _, CommandEmpty as y, CommandItem as q } from "../Command/Command.js";
|
|
6
6
|
import { cn as s } from "@oneplatformdev/utils";
|
|
7
|
-
import { ComboboxRenderOptions as
|
|
8
|
-
import { useRef as
|
|
9
|
-
import { useInView as
|
|
10
|
-
import { Skeleton as
|
|
11
|
-
const
|
|
7
|
+
import { ComboboxRenderOptions as z } from "./ComboboxRenderOptions.js";
|
|
8
|
+
import { useRef as B, useEffect as K } from "react";
|
|
9
|
+
import { useInView as Q } from "react-intersection-observer";
|
|
10
|
+
import { Skeleton as U } from "../Skeleton/Skeleton.js";
|
|
11
|
+
const X = (t) => /* @__PURE__ */ e("div", { className: "flex w-full flex-col gap-0", children: Array.from({ length: t.length || 2 }).map((c, m) => /* @__PURE__ */ e(
|
|
12
12
|
"div",
|
|
13
13
|
{
|
|
14
14
|
className: "flex items-center min-h-10 w-full px-4",
|
|
15
|
-
children: /* @__PURE__ */ e("div", { className: s("flex items-center w-full", t.className), children: /* @__PURE__ */ e(
|
|
15
|
+
children: /* @__PURE__ */ e("div", { className: s("flex items-center w-full", t.className), children: /* @__PURE__ */ e(U, { className: "h-4 w-full" }) })
|
|
16
16
|
},
|
|
17
17
|
m
|
|
18
|
-
)) }),
|
|
18
|
+
)) }), ie = (t) => {
|
|
19
19
|
const {
|
|
20
20
|
open: c,
|
|
21
21
|
type: m,
|
|
@@ -41,25 +41,27 @@ const U = (t) => /* @__PURE__ */ e("div", { className: "flex w-full flex-col gap
|
|
|
41
41
|
defaultNodeMuted: R,
|
|
42
42
|
defaultNodeInteractive: k,
|
|
43
43
|
forcePointerSelect: P,
|
|
44
|
+
popoverContainer: E,
|
|
44
45
|
renderList: h,
|
|
45
|
-
onLoadMore:
|
|
46
|
-
} = t, b =
|
|
46
|
+
onLoadMore: V
|
|
47
|
+
} = t, b = B(null), { ref: j, inView: g } = Q({
|
|
47
48
|
root: b.current,
|
|
48
49
|
rootMargin: "0px 0px 200px 0px",
|
|
49
50
|
threshold: 0
|
|
50
51
|
});
|
|
51
|
-
return
|
|
52
|
-
c && g &&
|
|
52
|
+
return K(() => {
|
|
53
|
+
c && g && V?.();
|
|
53
54
|
}, [g, c]), /* @__PURE__ */ e(
|
|
54
|
-
|
|
55
|
+
H,
|
|
55
56
|
{
|
|
56
57
|
className: s(
|
|
57
58
|
"w-(--radix-popper-anchor-width) max-w-none p-2"
|
|
58
59
|
),
|
|
59
60
|
align: "start",
|
|
60
|
-
|
|
61
|
+
container: E,
|
|
62
|
+
children: /* @__PURE__ */ i(J, { shouldFilter: !1, children: [
|
|
61
63
|
/* @__PURE__ */ e(
|
|
62
|
-
|
|
64
|
+
T,
|
|
63
65
|
{
|
|
64
66
|
placeholder: F,
|
|
65
67
|
value: u,
|
|
@@ -67,22 +69,22 @@ const U = (t) => /* @__PURE__ */ e("div", { className: "flex w-full flex-col gap
|
|
|
67
69
|
}
|
|
68
70
|
),
|
|
69
71
|
typeof p == "function" ? p(o) : p,
|
|
70
|
-
/* @__PURE__ */ e(
|
|
71
|
-
|
|
72
|
+
/* @__PURE__ */ e(W, { ref: b, children: /* @__PURE__ */ i(
|
|
73
|
+
_,
|
|
72
74
|
{
|
|
73
75
|
className: s(
|
|
74
76
|
!x.length && "p-0 shadow-none",
|
|
75
77
|
"px-0 py-2"
|
|
76
78
|
),
|
|
77
79
|
children: [
|
|
78
|
-
r && /* @__PURE__ */ e(
|
|
80
|
+
r && /* @__PURE__ */ e(G, { fullWidth: !0 }),
|
|
79
81
|
!r && d && /* @__PURE__ */ e(w, { children: n ? /* @__PURE__ */ i(y, { className: "flex flex-col gap-3 py-5 px-3 items-center", children: [
|
|
80
82
|
/* @__PURE__ */ e("span", { children: N }),
|
|
81
83
|
typeof n == "function" ? n(o) : n
|
|
82
84
|
] }) : /* @__PURE__ */ e(y, { children: N }) }),
|
|
83
85
|
!r && !d && /* @__PURE__ */ i(w, { children: [
|
|
84
86
|
l && /* @__PURE__ */ e(
|
|
85
|
-
|
|
87
|
+
q,
|
|
86
88
|
{
|
|
87
89
|
asChild: !0,
|
|
88
90
|
className: "w-full",
|
|
@@ -92,7 +94,7 @@ const U = (t) => /* @__PURE__ */ e("div", { className: "flex w-full flex-col gap
|
|
|
92
94
|
),
|
|
93
95
|
h && h(o),
|
|
94
96
|
!h && /* @__PURE__ */ e(
|
|
95
|
-
|
|
97
|
+
z,
|
|
96
98
|
{
|
|
97
99
|
type: m,
|
|
98
100
|
search: u,
|
|
@@ -106,8 +108,8 @@ const U = (t) => /* @__PURE__ */ e("div", { className: "flex w-full flex-col gap
|
|
|
106
108
|
forcePointerSelect: P
|
|
107
109
|
}
|
|
108
110
|
),
|
|
109
|
-
v && /* @__PURE__ */ e("div", { ref:
|
|
110
|
-
A && /* @__PURE__ */ e(
|
|
111
|
+
v && /* @__PURE__ */ e("div", { ref: j, className: "h-px w-full" }),
|
|
112
|
+
A && /* @__PURE__ */ e(X, {})
|
|
111
113
|
] })
|
|
112
114
|
]
|
|
113
115
|
}
|
|
@@ -117,10 +119,10 @@ const U = (t) => /* @__PURE__ */ e("div", { className: "flex w-full flex-col gap
|
|
|
117
119
|
{
|
|
118
120
|
"data-slot": "command-footer-wrapper",
|
|
119
121
|
...(() => {
|
|
120
|
-
const { bordered:
|
|
122
|
+
const { bordered: O = !0, ...D } = f?.listFooterAction || {};
|
|
121
123
|
return {
|
|
122
|
-
...
|
|
123
|
-
"data-slot-bordered": JSON.stringify(
|
|
124
|
+
...D,
|
|
125
|
+
"data-slot-bordered": JSON.stringify(O)
|
|
124
126
|
};
|
|
125
127
|
})(),
|
|
126
128
|
className: s(
|
|
@@ -136,6 +138,6 @@ const U = (t) => /* @__PURE__ */ e("div", { className: "flex w-full flex-col gap
|
|
|
136
138
|
);
|
|
137
139
|
};
|
|
138
140
|
export {
|
|
139
|
-
|
|
141
|
+
ie as ComboboxRenderContent
|
|
140
142
|
};
|
|
141
143
|
//# 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 ComboboxCallbackStateParamsRenderHandler,\n ComboboxCallbackStateParamsUnion,\n ComboboxOption, ComboboxProps,\n ComboboxSelectedType, IComboboxOptionsNodeHandlersProps,\n ISlotProps,\n} from './Combobox.types';\nimport { ComboboxRenderOptions } from './ComboboxRenderOptions';\nimport { HTMLAttributes, useEffect, useRef } from \"react\";\nimport { useInView } from \"react-intersection-observer\";\nimport { Skeleton } from \"../Skeleton\";\n\ntype ComboboxRenderContentProps<Data extends object = object> =\n IComboboxOptionsNodeHandlersProps<Data>\n & {\n open?: boolean;\n\n type: ComboboxSelectedType,\n value: ComboboxProps<Data, 'single'>['value'] | ComboboxProps<Data, 'multi'>['value'];\n\n hasNext: boolean;\n\n loading: boolean;\n loadingMore: boolean;\n\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 onLoadMore?: () => Promise<void>;\n}\n\nconst SkeletonItems = (props: HTMLAttributes<HTMLDivElement> & { length?: number }) => (\n <div className=\"flex w-full flex-col gap-0\">\n {Array.from({ length: props.length || 2 }).map((_, i) => (\n <div\n key={i}\n className='flex items-center min-h-10 w-full px-4'\n >\n <div className={cn('flex items-center w-full', props.className)}>\n <Skeleton className='h-4 w-full'/>\n </div>\n </div>\n ))}\n </div>\n);\n\n\nexport const ComboboxRenderContent = <Data extends object = object>(\n props: ComboboxRenderContentProps<Data>\n) => {\n const {\n open,\n type,\n search,\n onSearch,\n hasNext,\n loading,\n loadingMore,\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 forcePointerSelect,\n renderList,\n onLoadMore,\n } = props;\n\n const scrollRootRef = useRef<HTMLDivElement>(null);\n const { ref: sentinelRef, inView } = useInView({\n root: scrollRootRef.current,\n rootMargin: \"0px 0px 200px 0px\",\n threshold: 0,\n });\n\n useEffect(() => {\n if (!open) return;\n if (!inView) return;\n void onLoadMore?.();\n }, [ inView, open ]);\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 ref={scrollRootRef}>\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 forcePointerSelect={forcePointerSelect}/>\n )}\n\n {hasNext && <div ref={sentinelRef} className=\"h-px w-full\"/>}\n {loadingMore && <SkeletonItems />}\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":["SkeletonItems","props","_","i","jsx","cn","Skeleton","ComboboxRenderContent","open","type","search","onSearch","hasNext","loading","loadingMore","isEmptyList","onSelect","options","callbackStateParams","value","searchLabel","emptyLabel","emptyAction","commandInputAction","listHeadAction","listFooterAction","slotProps","defaultNodeDisabled","defaultNodeMatched","defaultNodeMuted","defaultNodeInteractive","forcePointerSelect","renderList","onLoadMore","scrollRootRef","useRef","sentinelRef","inView","useInView","useEffect","PopoverContent","jsxs","Command","CommandInput","CommandList","CommandGroup","LoadingMask","Fragment","CommandEmpty","CommandItem","ComboboxRenderOptions","bordered","rest"],"mappings":"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"}
|
|
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';\nimport { HTMLAttributes, useEffect, useRef } from \"react\";\nimport { useInView } from \"react-intersection-observer\";\nimport { Skeleton } from \"../Skeleton\";\n\ntype ComboboxRenderContentProps<Data extends object = object> =\n IComboboxOptionsNodeHandlersProps<Data>\n & {\n open?: boolean;\n\n type: ComboboxSelectedType,\n value: ComboboxProps<Data, 'single'>['value'] | ComboboxProps<Data, 'multi'>['value'];\n\n hasNext: boolean;\n\n loading: boolean;\n loadingMore: boolean;\n\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 popoverContainer?: HTMLElement | null;\n\n onLoadMore?: () => Promise<void>;\n}\n\nconst SkeletonItems = (props: HTMLAttributes<HTMLDivElement> & { length?: number }) => (\n <div className=\"flex w-full flex-col gap-0\">\n {Array.from({ length: props.length || 2 }).map((_, i) => (\n <div\n key={i}\n className='flex items-center min-h-10 w-full px-4'\n >\n <div className={cn('flex items-center w-full', props.className)}>\n <Skeleton className='h-4 w-full'/>\n </div>\n </div>\n ))}\n </div>\n);\n\n\nexport const ComboboxRenderContent = <Data extends object = object>(\n props: ComboboxRenderContentProps<Data>\n) => {\n const {\n open,\n type,\n search,\n onSearch,\n hasNext,\n loading,\n loadingMore,\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 forcePointerSelect,\n popoverContainer,\n renderList,\n onLoadMore,\n } = props;\n\n const scrollRootRef = useRef<HTMLDivElement>(null);\n const { ref: sentinelRef, inView } = useInView({\n root: scrollRootRef.current,\n rootMargin: \"0px 0px 200px 0px\",\n threshold: 0,\n });\n\n useEffect(() => {\n if (!open) return;\n if (!inView) return;\n void onLoadMore?.();\n }, [ inView, open ]);\n\n return (\n <PopoverContent\n className={cn(\n \"w-(--radix-popper-anchor-width) max-w-none p-2\"\n )}\n align=\"start\"\n container={popoverContainer}\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 ref={scrollRootRef}>\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 forcePointerSelect={forcePointerSelect}/>\n )}\n\n {hasNext && <div ref={sentinelRef} className=\"h-px w-full\"/>}\n {loadingMore && <SkeletonItems />}\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":["SkeletonItems","props","_","i","jsx","cn","Skeleton","ComboboxRenderContent","open","type","search","onSearch","hasNext","loading","loadingMore","isEmptyList","onSelect","options","callbackStateParams","value","searchLabel","emptyLabel","emptyAction","commandInputAction","listHeadAction","listFooterAction","slotProps","defaultNodeDisabled","defaultNodeMatched","defaultNodeMuted","defaultNodeInteractive","forcePointerSelect","popoverContainer","renderList","onLoadMore","scrollRootRef","useRef","sentinelRef","inView","useInView","useEffect","PopoverContent","jsxs","Command","CommandInput","CommandList","CommandGroup","LoadingMask","Fragment","CommandEmpty","CommandItem","ComboboxRenderOptions","bordered","rest"],"mappings":"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"}
|
package/Popover/Popover.d.ts
CHANGED
|
@@ -2,7 +2,9 @@ import * as React from "react";
|
|
|
2
2
|
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
3
3
|
declare function Popover({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Root>): import("react/jsx-runtime").JSX.Element;
|
|
4
4
|
declare function PopoverTrigger({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Trigger>): import("react/jsx-runtime").JSX.Element;
|
|
5
|
-
declare function PopoverContent(props: React.ComponentProps<typeof PopoverPrimitive.Content>
|
|
5
|
+
declare function PopoverContent(props: React.ComponentProps<typeof PopoverPrimitive.Content> & {
|
|
6
|
+
container?: HTMLElement | null;
|
|
7
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
6
8
|
declare function PopoverAnchor({ ...props }: React.ComponentProps<typeof PopoverPrimitive.Anchor>): import("react/jsx-runtime").JSX.Element;
|
|
7
9
|
export { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverPrimitive };
|
|
8
10
|
//# sourceMappingURL=Popover.d.ts.map
|
package/Popover/Popover.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../src/Popover/Popover.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAA;AAI3D,iBAAS,OAAO,CAAC,EACE,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAErE;AAED,iBAAS,cAAc,CAAC,EACE,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,2CAE/E;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"Popover.d.ts","sourceRoot":"","sources":["../../src/Popover/Popover.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,gBAAgB,MAAM,yBAAyB,CAAA;AAI3D,iBAAS,OAAO,CAAC,EACE,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,IAAI,CAAC,2CAErE;AAED,iBAAS,cAAc,CAAC,EACE,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,2CAE/E;AAED,iBAAS,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,OAAO,CAAC,GAAG;IACrF,SAAS,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAChC,2CA+BA;AAED,iBAAS,aAAa,CAAC,EACE,GAAG,KAAK,EACT,EAAE,KAAK,CAAC,cAAc,CAAC,OAAO,gBAAgB,CAAC,MAAM,CAAC,2CAE7E;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAA"}
|
package/Popover/Popover.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as t } from "react/jsx-runtime";
|
|
2
2
|
import * as e from "@radix-ui/react-popover";
|
|
3
|
-
import { cn as
|
|
4
|
-
function
|
|
3
|
+
import { cn as p } from "@oneplatformdev/utils";
|
|
4
|
+
function c({
|
|
5
5
|
...o
|
|
6
6
|
}) {
|
|
7
7
|
return /* @__PURE__ */ t(e.Root, { "data-slot": "popover", ...o });
|
|
@@ -11,22 +11,23 @@ function f({
|
|
|
11
11
|
}) {
|
|
12
12
|
return /* @__PURE__ */ t(e.Trigger, { "data-slot": "popover-trigger", ...o });
|
|
13
13
|
}
|
|
14
|
-
function
|
|
14
|
+
function g(o) {
|
|
15
15
|
const {
|
|
16
16
|
className: r,
|
|
17
17
|
align: a = "center",
|
|
18
18
|
sideOffset: n = 4,
|
|
19
19
|
style: i,
|
|
20
|
-
|
|
20
|
+
container: d,
|
|
21
|
+
...s
|
|
21
22
|
} = o;
|
|
22
|
-
return /* @__PURE__ */ t(e.Portal, { children: /* @__PURE__ */ t(
|
|
23
|
+
return /* @__PURE__ */ t(e.Portal, { container: d, children: /* @__PURE__ */ t(
|
|
23
24
|
e.Content,
|
|
24
25
|
{
|
|
25
26
|
"data-slot": "popover-content",
|
|
26
27
|
align: a,
|
|
27
28
|
sideOffset: n,
|
|
28
|
-
...
|
|
29
|
-
className:
|
|
29
|
+
...s,
|
|
30
|
+
className: p(
|
|
30
31
|
"text-popover-foreground",
|
|
31
32
|
"w-72 origin-(--radix-popover-content-transform-origin) outline-hidden",
|
|
32
33
|
"border p-4 bg-popover rounded-lg",
|
|
@@ -41,15 +42,15 @@ function c(o) {
|
|
|
41
42
|
}
|
|
42
43
|
) });
|
|
43
44
|
}
|
|
44
|
-
function
|
|
45
|
+
function u({
|
|
45
46
|
...o
|
|
46
47
|
}) {
|
|
47
48
|
return /* @__PURE__ */ t(e.Anchor, { "data-slot": "popover-anchor", ...o });
|
|
48
49
|
}
|
|
49
50
|
export {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
c as Popover,
|
|
52
|
+
u as PopoverAnchor,
|
|
53
|
+
g as PopoverContent,
|
|
53
54
|
e as PopoverPrimitive,
|
|
54
55
|
f as PopoverTrigger
|
|
55
56
|
};
|
package/Popover/Popover.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Popover.js","sources":["../../src/Popover/Popover.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@oneplatformdev/utils\"\n\nfunction Popover({\n ...props\n }: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent(props: React.ComponentProps<typeof PopoverPrimitive.Content>) {\n const {\n className,\n align = \"center\",\n sideOffset = 4,\n style,\n ...rest\n } = props;\n return (\n <PopoverPrimitive.Portal>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n {...rest}\n className={cn(\n \"text-popover-foreground\",\n 'w-72 origin-(--radix-popover-content-transform-origin) outline-hidden',\n 'border p-4 bg-popover rounded-lg',\n 'shadow-[1px_1px_10px_rgba(6,8,13,0.06)]',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50',\n className\n )}\n style={{\n pointerEvents: 'auto',\n ...(style || {}),\n }}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n }: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverPrimitive }\n"],"names":["Popover","props","PopoverPrimitive","PopoverTrigger","PopoverContent","className","align","sideOffset","style","rest","jsx","cn","PopoverAnchor"],"mappings":";;;AAOA,SAASA,EAAQ;AAAA,EACE,GAAGC;AACL,GAAuD;AACtE,2BAAQC,EAAiB,MAAjB,EAAsB,aAAU,WAAW,GAAGD,GAAO;AAC/D;AAEA,SAASE,EAAe;AAAA,EACE,GAAGF;AACL,GAA0D;AAChF,2BAAQC,EAAiB,SAAjB,EAAyB,aAAU,mBAAmB,GAAGD,GAAO;AAC1E;AAEA,SAASG,EAAeH,
|
|
1
|
+
{"version":3,"file":"Popover.js","sources":["../../src/Popover/Popover.tsx"],"sourcesContent":["\"use client\"\n\nimport * as React from \"react\"\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\"\n\nimport { cn } from \"@oneplatformdev/utils\"\n\nfunction Popover({\n ...props\n }: React.ComponentProps<typeof PopoverPrimitive.Root>) {\n return <PopoverPrimitive.Root data-slot=\"popover\" {...props} />\n}\n\nfunction PopoverTrigger({\n ...props\n }: React.ComponentProps<typeof PopoverPrimitive.Trigger>) {\n return <PopoverPrimitive.Trigger data-slot=\"popover-trigger\" {...props} />\n}\n\nfunction PopoverContent(props: React.ComponentProps<typeof PopoverPrimitive.Content> & {\n container?: HTMLElement | null;\n}) {\n const {\n className,\n align = \"center\",\n sideOffset = 4,\n style,\n container,\n ...rest\n } = props;\n return (\n <PopoverPrimitive.Portal container={container}>\n <PopoverPrimitive.Content\n data-slot=\"popover-content\"\n align={align}\n sideOffset={sideOffset}\n {...rest}\n className={cn(\n \"text-popover-foreground\",\n 'w-72 origin-(--radix-popover-content-transform-origin) outline-hidden',\n 'border p-4 bg-popover rounded-lg',\n 'shadow-[1px_1px_10px_rgba(6,8,13,0.06)]',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50',\n className\n )}\n style={{\n pointerEvents: 'auto',\n ...(style || {}),\n }}\n />\n </PopoverPrimitive.Portal>\n )\n}\n\nfunction PopoverAnchor({\n ...props\n }: React.ComponentProps<typeof PopoverPrimitive.Anchor>) {\n return <PopoverPrimitive.Anchor data-slot=\"popover-anchor\" {...props} />\n}\n\nexport { Popover, PopoverTrigger, PopoverContent, PopoverAnchor, PopoverPrimitive }\n"],"names":["Popover","props","PopoverPrimitive","PopoverTrigger","PopoverContent","className","align","sideOffset","style","container","rest","jsx","cn","PopoverAnchor"],"mappings":";;;AAOA,SAASA,EAAQ;AAAA,EACE,GAAGC;AACL,GAAuD;AACtE,2BAAQC,EAAiB,MAAjB,EAAsB,aAAU,WAAW,GAAGD,GAAO;AAC/D;AAEA,SAASE,EAAe;AAAA,EACE,GAAGF;AACL,GAA0D;AAChF,2BAAQC,EAAiB,SAAjB,EAAyB,aAAU,mBAAmB,GAAGD,GAAO;AAC1E;AAEA,SAASG,EAAeH,GAErB;AACD,QAAM;AAAA,IACJ,WAAAI;AAAA,IACA,OAAAC,IAAQ;AAAA,IACR,YAAAC,IAAa;AAAA,IACb,OAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,IACDT;AACJ,SACE,gBAAAU,EAACT,EAAiB,QAAjB,EAAwB,WAAAO,GACvB,UAAA,gBAAAE;AAAA,IAACT,EAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV,OAAAI;AAAA,MACA,YAAAC;AAAA,MACC,GAAGG;AAAA,MACJ,WAAWE;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACA;AAAA,QACAP;AAAA,MAAA;AAAA,MAEF,OAAO;AAAA,QACL,eAAe;AAAA,QACf,GAAIG,KAAS,CAAA;AAAA,MAAC;AAAA,IAChB;AAAA,EAAA,GAEJ;AAEJ;AAEA,SAASK,EAAc;AAAA,EACE,GAAGZ;AACL,GAAyD;AAC9E,2BAAQC,EAAiB,QAAjB,EAAwB,aAAU,kBAAkB,GAAGD,GAAO;AACxE;"}
|
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.256",
|
|
4
4
|
"description": "UI component library for OnePlatform",
|
|
5
5
|
"author": "One Platform Development Team",
|
|
6
6
|
"keywords": [
|
|
@@ -107,9 +107,9 @@
|
|
|
107
107
|
"recharts": "^3.2.0",
|
|
108
108
|
"sonner": "^2.0.7",
|
|
109
109
|
"vaul": "^1.1.2",
|
|
110
|
-
"@oneplatformdev/tokens": "^0.1.99-beta.
|
|
111
|
-
"@oneplatformdev/hooks": "^0.1.99-beta.
|
|
112
|
-
"@oneplatformdev/utils": "^0.1.99-beta.
|
|
110
|
+
"@oneplatformdev/tokens": "^0.1.99-beta.256",
|
|
111
|
+
"@oneplatformdev/hooks": "^0.1.99-beta.256",
|
|
112
|
+
"@oneplatformdev/utils": "^0.1.99-beta.256"
|
|
113
113
|
},
|
|
114
114
|
"scripts": {
|
|
115
115
|
"chromatic": "chromatic"
|