asheeui 0.6.10 → 0.6.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/accordion/Accordion.js +7 -7
- package/dist/components/autocomplete/Autocomplete.d.ts +5 -5
- package/dist/components/autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/components/autocomplete/Autocomplete.js +41 -40
- package/dist/components/carousel/Carousel.js +43 -43
- package/dist/components/chip/Chip.js +8 -8
- package/dist/components/date-picker/DatePicker.d.ts +6 -5
- package/dist/components/date-picker/DatePicker.d.ts.map +1 -1
- package/dist/components/date-picker/DatePicker.js +87 -87
- package/dist/components/marquee/Marquee.js +22 -22
- package/dist/components/multi-select/MultiSelect.d.ts +5 -5
- package/dist/components/multi-select/MultiSelect.d.ts.map +1 -1
- package/dist/components/multi-select/MultiSelect.js +44 -43
- package/dist/components/select/Select.d.ts +5 -5
- package/dist/components/select/Select.d.ts.map +1 -1
- package/dist/components/select/Select.js +53 -52
- package/dist/components/select-menu/SelectMenu.d.ts +15 -3
- package/dist/components/select-menu/SelectMenu.d.ts.map +1 -1
- package/dist/components/select-menu/SelectMenu.js +144 -116
- package/dist/components/select-menu/use-select-floating.d.ts +5 -2
- package/dist/components/select-menu/use-select-floating.d.ts.map +1 -1
- package/dist/components/select-menu/use-select-floating.js +14 -7
- package/dist/components/toast/ToastItem.js +30 -30
- package/dist/components/toast/ToastProvider.d.ts +5 -5
- package/dist/components/toast/ToastProvider.d.ts.map +1 -1
- package/dist/components/toast/ToastProvider.js +66 -66
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/package.json +3 -20
|
@@ -104,11 +104,11 @@ export interface SelectProps extends SelectFieldProps, Omit<SelectConfig, "menu"
|
|
|
104
104
|
* label, description, and message handling, and uses Floating UI for
|
|
105
105
|
* positioning and accessibility.
|
|
106
106
|
*
|
|
107
|
-
* By default, the dropdown menu uses
|
|
108
|
-
* document body level. This ensures the menu escapes CSS containment,
|
|
109
|
-
* clipping, and stacking context issues. The portal can be disabled
|
|
110
|
-
* `menu.portal` prop or `components.select.menu.portal` in the config
|
|
111
|
-
* menu needs to stay within a specific parent container.
|
|
107
|
+
* By default, the dropdown menu uses Floating UI's FloatingPortal to render
|
|
108
|
+
* at the document body level. This ensures the menu escapes CSS containment,
|
|
109
|
+
* overflow clipping, and stacking context issues. The portal can be disabled
|
|
110
|
+
* via the `menu.portal` prop or `components.select.menu.portal` in the config
|
|
111
|
+
* if the menu needs to stay within a specific parent container.
|
|
112
112
|
*
|
|
113
113
|
* @param props - Select configuration options.
|
|
114
114
|
* @param props.options - Available options to select from.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/select/Select.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAEL,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAA0B,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK5E;;;GAGG;AACH,KAAK,gBAAgB,GAAG,IAAI,CAC1B,UAAU,EACR,OAAO,GACP,aAAa,GACb,SAAS,GACT,UAAU,GACV,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,WAAW,GACX,IAAI,GACJ,OAAO,CACV,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,WACf,SAAQ,gBAAgB,EACtB,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAE5B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAE7D;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAEjD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE/B;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoGG;AACH,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/select/Select.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAEL,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AASf,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD,OAAO,KAAK,EACV,UAAU,EACV,gBAAgB,EACjB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAA0B,KAAK,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAK5E;;;GAGG;AACH,KAAK,gBAAgB,GAAG,IAAI,CAC1B,UAAU,EACR,OAAO,GACP,aAAa,GACb,SAAS,GACT,UAAU,GACV,WAAW,GACX,QAAQ,GACR,YAAY,GACZ,WAAW,GACX,IAAI,GACJ,OAAO,CACV,CAAC;AAEF;;;;GAIG;AACH,MAAM,WAAW,WACf,SAAQ,gBAAgB,EACtB,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;IAC5B;;;OAGG;IACH,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAE5B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAExB;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAE7D;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC;IAEjD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAE/B;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,YAAY,CAAC,EAAE,SAAS,CAAC;IAEzB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoGG;AACH,eAAO,MAAM,MAAM,2GA0PlB,CAAC"}
|
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as l, jsxs as g, Fragment as
|
|
3
|
-
import { useClick as
|
|
4
|
-
import { forwardRef as
|
|
5
|
-
import { ChevronDownIcon as
|
|
6
|
-
import { useAsheeConfig as
|
|
7
|
-
import { resolveCascade as p, resolveRadiusKey as
|
|
8
|
-
import { Button as
|
|
9
|
-
import { FieldShell as
|
|
10
|
-
import { SelectMenu as
|
|
2
|
+
import { jsx as l, jsxs as g, Fragment as ve } from "react/jsx-runtime";
|
|
3
|
+
import { useClick as Se, useDismiss as be, useRole as ye, useInteractions as he } from "@floating-ui/react";
|
|
4
|
+
import { forwardRef as xe, useId as Re, useState as k, useMemo as h, useCallback as Ae } from "react";
|
|
5
|
+
import { ChevronDownIcon as Ie } from "../../icons/ChevronDownIcon.js";
|
|
6
|
+
import { useAsheeConfig as Fe } from "../../libs/context.js";
|
|
7
|
+
import { resolveCascade as p, resolveRadiusKey as Ke } from "../../utils/resolve-token.js";
|
|
8
|
+
import { Button as Le } from "../button/Button.js";
|
|
9
|
+
import { FieldShell as Ne } from "../field/FieldShell.js";
|
|
10
|
+
import { SelectMenu as Oe } from "../select-menu/SelectMenu.js";
|
|
11
11
|
import { FALLBACK_SELECT_CONFIG as o } from "./select-config.js";
|
|
12
|
-
import { SELECT_STATUS_BORDER_CLASS as
|
|
13
|
-
import { useSelectFloating as
|
|
12
|
+
import { SELECT_STATUS_BORDER_CLASS as ge } from "./select-styles.js";
|
|
13
|
+
import { useSelectFloating as ke } from "../select-menu/use-select-floating.js";
|
|
14
14
|
import { cn as x } from "../../utils/cn.js";
|
|
15
|
-
const
|
|
15
|
+
const Ee = xe(
|
|
16
16
|
({
|
|
17
17
|
options: v = [],
|
|
18
18
|
value: r,
|
|
19
19
|
onChange: S,
|
|
20
20
|
onValueChange: a,
|
|
21
21
|
size: E,
|
|
22
|
-
radius:
|
|
23
|
-
variant:
|
|
24
|
-
color:
|
|
25
|
-
status:
|
|
26
|
-
label:
|
|
27
|
-
labelAlign:
|
|
22
|
+
radius: P,
|
|
23
|
+
variant: _,
|
|
24
|
+
color: j,
|
|
25
|
+
status: w,
|
|
26
|
+
label: z,
|
|
27
|
+
labelAlign: B,
|
|
28
28
|
description: b,
|
|
29
29
|
message: R,
|
|
30
|
-
required:
|
|
30
|
+
required: D,
|
|
31
31
|
isLoading: A,
|
|
32
32
|
disabled: y,
|
|
33
|
-
isSearch:
|
|
33
|
+
isSearch: M = !1,
|
|
34
34
|
searchPlaceholder: T = "Search options...",
|
|
35
35
|
searchInputName: $ = "select-search",
|
|
36
36
|
initialValue: n,
|
|
@@ -45,73 +45,73 @@ const ke = he(
|
|
|
45
45
|
endContent: J
|
|
46
46
|
}, i) => {
|
|
47
47
|
var O;
|
|
48
|
-
const c =
|
|
48
|
+
const c = Fe(), e = (O = c.components) == null ? void 0 : O.select, X = Re(), d = U ?? X, [u, K] = k(!1), [Y, L] = k(""), Z = p(
|
|
49
49
|
E,
|
|
50
50
|
e == null ? void 0 : e.size,
|
|
51
51
|
void 0,
|
|
52
52
|
o.size
|
|
53
53
|
), C = p(
|
|
54
|
-
|
|
54
|
+
_,
|
|
55
55
|
e == null ? void 0 : e.variant,
|
|
56
56
|
c.defaultVariant,
|
|
57
57
|
o.variant
|
|
58
58
|
), V = p(
|
|
59
|
-
|
|
59
|
+
j,
|
|
60
60
|
e == null ? void 0 : e.color,
|
|
61
61
|
c.defaultColor,
|
|
62
62
|
o.color
|
|
63
|
-
), ee =
|
|
64
|
-
|
|
63
|
+
), ee = Ke(
|
|
64
|
+
P,
|
|
65
65
|
e == null ? void 0 : e.radius,
|
|
66
66
|
c.defaultRadius,
|
|
67
67
|
o.radius
|
|
68
|
-
), m =
|
|
69
|
-
|
|
68
|
+
), m = w ?? o.status, te = p(
|
|
69
|
+
B,
|
|
70
70
|
e == null ? void 0 : e.labelAlign,
|
|
71
71
|
void 0,
|
|
72
72
|
o.labelAlign
|
|
73
|
-
), re = m !== "default" ?
|
|
73
|
+
), re = m !== "default" ? ge[m] : "", s = h(
|
|
74
74
|
() => v.find((t) => t.value === r),
|
|
75
75
|
[v, r]
|
|
76
|
-
), { refs: N, floatingStyles: se, context: f } =
|
|
76
|
+
), { refs: N, floatingStyles: se, context: f, isPositioned: oe } = ke({
|
|
77
77
|
isOpen: u,
|
|
78
78
|
onOpenChange: K,
|
|
79
79
|
disabled: y
|
|
80
|
-
}),
|
|
81
|
-
oe,
|
|
80
|
+
}), le = Se(f, { enabled: !y }), ae = be(f), ne = ye(f, { role: "listbox" }), { getReferenceProps: ie, getFloatingProps: ce } = he([
|
|
82
81
|
le,
|
|
83
|
-
ae
|
|
84
|
-
|
|
82
|
+
ae,
|
|
83
|
+
ne
|
|
84
|
+
]), de = Ae(
|
|
85
85
|
(t) => {
|
|
86
86
|
if (a == null || a(t.value), S) {
|
|
87
|
-
const
|
|
87
|
+
const pe = {
|
|
88
88
|
target: { value: t.value, name: F ?? "" }
|
|
89
89
|
};
|
|
90
|
-
S(
|
|
90
|
+
S(pe);
|
|
91
91
|
}
|
|
92
92
|
K(!1), L("");
|
|
93
93
|
},
|
|
94
94
|
[F, S, a]
|
|
95
|
-
),
|
|
95
|
+
), ue = h(() => s != null && s.label ? s.label : n !== void 0 ? String(n) : I, [s, n, I]), me = h(
|
|
96
96
|
() => r != null ? [r] : [],
|
|
97
97
|
[r]
|
|
98
|
-
),
|
|
98
|
+
), fe = ie();
|
|
99
99
|
return /* @__PURE__ */ l(
|
|
100
|
-
|
|
100
|
+
Ne,
|
|
101
101
|
{
|
|
102
102
|
id: d,
|
|
103
|
-
label:
|
|
103
|
+
label: z,
|
|
104
104
|
labelAlign: te,
|
|
105
105
|
description: b,
|
|
106
106
|
descriptionId: b ? `${d}-description` : void 0,
|
|
107
107
|
message: R,
|
|
108
108
|
messageId: R ? `${d}-message` : void 0,
|
|
109
109
|
status: m,
|
|
110
|
-
required:
|
|
110
|
+
required: D,
|
|
111
111
|
isLoading: A,
|
|
112
112
|
children: /* @__PURE__ */ g("div", { className: "w-full relative inline-block", children: [
|
|
113
113
|
/* @__PURE__ */ l(
|
|
114
|
-
|
|
114
|
+
Le,
|
|
115
115
|
{
|
|
116
116
|
ref: (t) => {
|
|
117
117
|
N.setReference(t), typeof i == "function" ? i(t) : i && (i.current = t);
|
|
@@ -136,10 +136,10 @@ const ke = he(
|
|
|
136
136
|
),
|
|
137
137
|
style: q,
|
|
138
138
|
startContent: H,
|
|
139
|
-
endContent: /* @__PURE__ */ g(
|
|
139
|
+
endContent: /* @__PURE__ */ g(ve, { children: [
|
|
140
140
|
J,
|
|
141
141
|
/* @__PURE__ */ l(
|
|
142
|
-
|
|
142
|
+
Ie,
|
|
143
143
|
{
|
|
144
144
|
className: x(
|
|
145
145
|
"shrink-0 text-foreground/70 transition-transform duration-200",
|
|
@@ -148,7 +148,7 @@ const ke = he(
|
|
|
148
148
|
}
|
|
149
149
|
)
|
|
150
150
|
] }),
|
|
151
|
-
...
|
|
151
|
+
...fe,
|
|
152
152
|
children: /* @__PURE__ */ l(
|
|
153
153
|
"span",
|
|
154
154
|
{
|
|
@@ -156,23 +156,24 @@ const ke = he(
|
|
|
156
156
|
"truncate",
|
|
157
157
|
s || n ? "text-foreground" : "text-foreground/70"
|
|
158
158
|
),
|
|
159
|
-
children:
|
|
159
|
+
children: ue
|
|
160
160
|
}
|
|
161
161
|
)
|
|
162
162
|
}
|
|
163
163
|
),
|
|
164
164
|
/* @__PURE__ */ l(
|
|
165
|
-
|
|
165
|
+
Oe,
|
|
166
166
|
{
|
|
167
167
|
isOpen: u,
|
|
168
168
|
context: f,
|
|
169
169
|
floatingStyles: se,
|
|
170
|
-
getFloatingProps:
|
|
170
|
+
getFloatingProps: ce,
|
|
171
171
|
setFloatingRef: N.setFloating,
|
|
172
|
+
isPositioned: oe,
|
|
172
173
|
options: v,
|
|
173
|
-
selectedValues:
|
|
174
|
-
onSelectMenuOption:
|
|
175
|
-
isSearch:
|
|
174
|
+
selectedValues: me,
|
|
175
|
+
onSelectMenuOption: de,
|
|
176
|
+
isSearch: M,
|
|
176
177
|
searchPlaceholder: T,
|
|
177
178
|
searchInputName: $,
|
|
178
179
|
searchQuery: Y,
|
|
@@ -187,7 +188,7 @@ const ke = he(
|
|
|
187
188
|
);
|
|
188
189
|
}
|
|
189
190
|
);
|
|
190
|
-
|
|
191
|
+
Ee.displayName = "Select";
|
|
191
192
|
export {
|
|
192
|
-
|
|
193
|
+
Ee as Select
|
|
193
194
|
};
|
|
@@ -35,6 +35,17 @@ export interface SelectMenuProps {
|
|
|
35
35
|
* Ref setter for the floating element.
|
|
36
36
|
*/
|
|
37
37
|
setFloatingRef: (node: HTMLElement | null) => void;
|
|
38
|
+
/**
|
|
39
|
+
* Whether the floating element has completed its first position update.
|
|
40
|
+
* When false, the menu stays in the DOM (so Floating UI can measure it)
|
|
41
|
+
* but is hidden (`invisible opacity-0 pointer-events-none`), preventing a
|
|
42
|
+
* visible flash at its initial (0, 0) coordinate. The enter animation
|
|
43
|
+
* classes are only applied once this is true so the reveal and animation
|
|
44
|
+
* start together.
|
|
45
|
+
*
|
|
46
|
+
* @default true
|
|
47
|
+
*/
|
|
48
|
+
isPositioned?: boolean;
|
|
38
49
|
/**
|
|
39
50
|
* Available options to display in the menu.
|
|
40
51
|
*/
|
|
@@ -111,8 +122,8 @@ export interface SelectMenuProps {
|
|
|
111
122
|
* supports custom option rendering, search filtering, and configurable
|
|
112
123
|
* item styles through the cascade resolution system.
|
|
113
124
|
*
|
|
114
|
-
* By default, the menu uses
|
|
115
|
-
* body level. This ensures the menu escapes CSS containment, overflow
|
|
125
|
+
* By default, the menu uses Floating UI's FloatingPortal to render at the
|
|
126
|
+
* document body level. This ensures the menu escapes CSS containment, overflow
|
|
116
127
|
* clipping, and stacking context issues. The portal can be disabled via
|
|
117
128
|
* the `menuProps.portal` prop if the menu needs to stay within a specific
|
|
118
129
|
* parent container. This is typically controlled by the parent component.
|
|
@@ -123,6 +134,7 @@ export interface SelectMenuProps {
|
|
|
123
134
|
* @param props.floatingStyles - CSS styles for positioning.
|
|
124
135
|
* @param props.getFloatingProps - Props getter for the floating element.
|
|
125
136
|
* @param props.setFloatingRef - Ref setter for the floating element.
|
|
137
|
+
* @param props.isPositioned - Whether the floating element has been positioned by Floating UI. Defaults to true.
|
|
126
138
|
* @param props.options - Available options to display.
|
|
127
139
|
* @param props.selectedValues - Currently selected values.
|
|
128
140
|
* @param props.onSelectMenuOption - Callback fired when an option is selected.
|
|
@@ -179,7 +191,7 @@ export interface SelectMenuProps {
|
|
|
179
191
|
* @see Button - The button component used for menu items.
|
|
180
192
|
*/
|
|
181
193
|
export declare const SelectMenu: {
|
|
182
|
-
({ isOpen, context, floatingStyles, getFloatingProps, setFloatingRef, options, selectedValues, onSelectMenuOption, isSearch, searchPlaceholder, searchInputName, searchQuery, onSearchChange, belowList, menuConfig, menuProps, renderOption, initialFocus, returnFocus, }: SelectMenuProps): import("react").JSX.Element | null;
|
|
194
|
+
({ isOpen, context, floatingStyles, getFloatingProps, setFloatingRef, isPositioned, options, selectedValues, onSelectMenuOption, isSearch, searchPlaceholder, searchInputName, searchQuery, onSearchChange, belowList, menuConfig, menuProps, renderOption, initialFocus, returnFocus, }: SelectMenuProps): import("react").JSX.Element | null;
|
|
183
195
|
displayName: string;
|
|
184
196
|
};
|
|
185
197
|
//# sourceMappingURL=SelectMenu.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelectMenu.d.ts","sourceRoot":"","sources":["../../../src/components/select-menu/SelectMenu.tsx"],"names":[],"mappings":"AAUA,OAAO,
|
|
1
|
+
{"version":3,"file":"SelectMenu.d.ts","sourceRoot":"","sources":["../../../src/components/select-menu/SelectMenu.tsx"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAGL,KAAK,SAAS,EAIf,MAAM,OAAO,CAAC;AASf,OAAO,EAEL,KAAK,UAAU,EACf,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAE9B;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG;IACnC;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;OAEG;IACH,OAAO,EAAE,eAAe,CAAC;IAEzB;;OAEG;IACH,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC;IAEpC;;OAEG;IACH,gBAAgB,EAAE,CAChB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAChC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE7B;;OAEG;IACH,cAAc,EAAE,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAEnD;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;OAEG;IACH,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAE5B;;;OAGG;IACH,cAAc,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC;IAErC;;;OAGG;IACH,kBAAkB,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAEvD;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEzC;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;OAEG;IACH,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,EAAE,UAAU,EAAE,OAAO,KAAK,SAAS,CAAC;IAE5E;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IAErD;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAkFD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8EG;AACH,eAAO,MAAM,UAAU;8RAqBpB,eAAe;;CAwMjB,CAAC"}
|
|
@@ -1,161 +1,189 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsx as
|
|
3
|
-
import { FloatingFocusManager as X } from "@floating-ui/react";
|
|
4
|
-
import { useState as
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
2
|
+
import { jsx as l, jsxs as Q, Fragment as J } from "react/jsx-runtime";
|
|
3
|
+
import { FloatingFocusManager as X, FloatingPortal as Y } from "@floating-ui/react";
|
|
4
|
+
import { useState as Z, useEffect as $, useMemo as u, memo as m } from "react";
|
|
5
|
+
import { CheckIcon as p } from "../../icons/CheckIcon.js";
|
|
6
|
+
import { SearchIcon as C } from "../../icons/SearchIcon.js";
|
|
7
|
+
import { useAsheeConfig as g } from "../../libs/context.js";
|
|
8
|
+
import { resolveCascade as o, resolveRadiusKey as P } from "../../utils/resolve-token.js";
|
|
9
|
+
import { Button as tt } from "../button/Button.js";
|
|
10
|
+
import { Input as et } from "../input/Input.js";
|
|
11
|
+
import { FALLBACK_SELECT_MENU_CONFIG as c } from "./select-menu-config.js";
|
|
12
|
+
import { cn as lt } from "../../utils/cn.js";
|
|
13
|
+
const rt = m(function({
|
|
14
|
+
filteredOptions: y,
|
|
15
|
+
selectedValues: w,
|
|
16
|
+
onSelectMenuOption: I,
|
|
17
|
+
renderOption: b,
|
|
18
|
+
itemVariant: N,
|
|
19
|
+
itemColor: i,
|
|
20
|
+
activeItemVariant: S,
|
|
21
|
+
activeItemColor: V,
|
|
22
|
+
radius: s,
|
|
23
|
+
size: f
|
|
24
|
+
}) {
|
|
25
|
+
const k = (r) => w.includes(r);
|
|
26
|
+
return y.length === 0 ? /* @__PURE__ */ l("div", { className: "px-3 py-4 text-xs text-foreground/70 text-center", children: "No options found" }) : /* @__PURE__ */ l(J, { children: y.map((r) => {
|
|
27
|
+
const d = k(r.value);
|
|
28
|
+
return b ? b(r, d) : /* @__PURE__ */ Q(
|
|
29
|
+
tt,
|
|
30
|
+
{
|
|
31
|
+
variant: d ? S : N,
|
|
32
|
+
color: d ? V : i,
|
|
33
|
+
radius: s,
|
|
34
|
+
size: f,
|
|
35
|
+
isDisabled: r.disabled,
|
|
36
|
+
onClick: () => I(r),
|
|
37
|
+
className: "w-full justify-between font-normal text-left transition-colors truncate",
|
|
38
|
+
children: [
|
|
39
|
+
/* @__PURE__ */ l("span", { children: r.label }),
|
|
40
|
+
d && /* @__PURE__ */ l(p, { className: "w-3.5 h-3.5 shrink-0 ml-2" })
|
|
41
|
+
]
|
|
42
|
+
},
|
|
43
|
+
String(r.value)
|
|
44
|
+
);
|
|
45
|
+
}) });
|
|
46
|
+
}), at = ({
|
|
47
|
+
isOpen: v,
|
|
48
|
+
context: y,
|
|
49
|
+
floatingStyles: w,
|
|
50
|
+
getFloatingProps: I,
|
|
51
|
+
setFloatingRef: b,
|
|
52
|
+
isPositioned: N = !0,
|
|
53
|
+
options: i = [],
|
|
54
|
+
selectedValues: S = [],
|
|
55
|
+
onSelectMenuOption: V,
|
|
56
|
+
isSearch: s = !0,
|
|
57
|
+
searchPlaceholder: f = "Search...",
|
|
58
|
+
searchInputName: k = "select-menu-search",
|
|
59
|
+
searchQuery: r,
|
|
60
|
+
onSearchChange: d,
|
|
61
|
+
belowList: z,
|
|
62
|
+
menuConfig: e,
|
|
30
63
|
menuProps: t = {},
|
|
31
|
-
renderOption:
|
|
32
|
-
initialFocus:
|
|
33
|
-
returnFocus:
|
|
64
|
+
renderOption: T,
|
|
65
|
+
initialFocus: j,
|
|
66
|
+
returnFocus: K
|
|
34
67
|
}) => {
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
},
|
|
68
|
+
const h = g(), [R, _] = Z(""), x = r ?? R, n = (a) => {
|
|
69
|
+
d ? d(a) : _(a);
|
|
70
|
+
}, F = o(
|
|
38
71
|
t == null ? void 0 : t.lockScroll,
|
|
39
|
-
|
|
72
|
+
e == null ? void 0 : e.lockScroll,
|
|
40
73
|
void 0,
|
|
41
|
-
|
|
42
|
-
),
|
|
74
|
+
c.lockScroll
|
|
75
|
+
), B = o(
|
|
43
76
|
t == null ? void 0 : t.portal,
|
|
44
|
-
|
|
77
|
+
e == null ? void 0 : e.portal,
|
|
45
78
|
void 0,
|
|
46
|
-
|
|
47
|
-
),
|
|
79
|
+
c.portal
|
|
80
|
+
), O = o(
|
|
48
81
|
t == null ? void 0 : t.portalTarget,
|
|
49
|
-
|
|
82
|
+
e == null ? void 0 : e.portalTarget,
|
|
50
83
|
void 0,
|
|
51
84
|
typeof document < "u" ? document.body : null
|
|
52
85
|
);
|
|
53
|
-
|
|
54
|
-
if (!
|
|
55
|
-
const
|
|
86
|
+
$(() => {
|
|
87
|
+
if (!v || !F) return;
|
|
88
|
+
const a = document.body.style.overflow, q = document.body.style.position, H = document.body.style.width;
|
|
56
89
|
return document.body.style.overflow = "hidden", document.body.style.position = "fixed", document.body.style.width = "100%", () => {
|
|
57
|
-
document.body.style.overflow =
|
|
90
|
+
document.body.style.overflow = a, document.body.style.position = q, document.body.style.width = H;
|
|
58
91
|
};
|
|
59
|
-
}, [
|
|
60
|
-
const
|
|
61
|
-
(
|
|
62
|
-
), [
|
|
92
|
+
}, [v, F]);
|
|
93
|
+
const D = u(() => !s || !x.trim() ? i : i.filter(
|
|
94
|
+
(a) => a.label.toLowerCase().includes(x.toLowerCase())
|
|
95
|
+
), [i, s, x]), G = o(
|
|
63
96
|
t == null ? void 0 : t.itemVariant,
|
|
64
|
-
|
|
97
|
+
e == null ? void 0 : e.itemVariant,
|
|
65
98
|
void 0,
|
|
66
|
-
|
|
67
|
-
),
|
|
99
|
+
c.itemVariant
|
|
100
|
+
), L = o(
|
|
68
101
|
t == null ? void 0 : t.itemColor,
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
),
|
|
102
|
+
e == null ? void 0 : e.itemColor,
|
|
103
|
+
h.defaultColor,
|
|
104
|
+
c.itemColor
|
|
105
|
+
), U = o(
|
|
73
106
|
t == null ? void 0 : t.activeItemVariant,
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
),
|
|
107
|
+
e == null ? void 0 : e.activeItemVariant,
|
|
108
|
+
h.defaultVariant,
|
|
109
|
+
c.activeItemVariant
|
|
110
|
+
), W = o(
|
|
78
111
|
t == null ? void 0 : t.activeItemColor,
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
),
|
|
112
|
+
e == null ? void 0 : e.activeItemColor,
|
|
113
|
+
h.defaultColor,
|
|
114
|
+
c.activeItemColor
|
|
115
|
+
), M = P(
|
|
83
116
|
t == null ? void 0 : t.radius,
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
),
|
|
117
|
+
e == null ? void 0 : e.radius,
|
|
118
|
+
h.defaultRadius,
|
|
119
|
+
c.radius
|
|
120
|
+
), A = o(
|
|
88
121
|
t == null ? void 0 : t.size,
|
|
89
|
-
|
|
122
|
+
e == null ? void 0 : e.size,
|
|
90
123
|
void 0,
|
|
91
|
-
|
|
124
|
+
c.size
|
|
92
125
|
);
|
|
93
|
-
if (!
|
|
94
|
-
const
|
|
126
|
+
if (!v) return null;
|
|
127
|
+
const E = /* @__PURE__ */ l(
|
|
95
128
|
X,
|
|
96
129
|
{
|
|
97
|
-
context:
|
|
130
|
+
context: y,
|
|
98
131
|
modal: !1,
|
|
99
|
-
initialFocus:
|
|
100
|
-
returnFocus:
|
|
101
|
-
children: /* @__PURE__ */
|
|
132
|
+
initialFocus: j,
|
|
133
|
+
returnFocus: K,
|
|
134
|
+
children: /* @__PURE__ */ Q(
|
|
102
135
|
"div",
|
|
103
136
|
{
|
|
104
|
-
ref:
|
|
105
|
-
style: { ...
|
|
106
|
-
className:
|
|
107
|
-
"z-
|
|
108
|
-
"animate-in fade-in-0 zoom-in-95 slide-in-from-top-1 duration-150 ease-out",
|
|
137
|
+
ref: b,
|
|
138
|
+
style: { ...w },
|
|
139
|
+
className: lt(
|
|
140
|
+
"z-30 w-full outline-none max-h-60 shadow-xl bg-background border border-border p-1 flex flex-col gap-0.5 overflow-y-auto scrollable-hidden",
|
|
141
|
+
N ? "animate-in fade-in-0 zoom-in-95 slide-in-from-top-1 duration-150 ease-out" : "invisible opacity-0 pointer-events-none",
|
|
109
142
|
t == null ? void 0 : t.className
|
|
110
143
|
),
|
|
111
|
-
...
|
|
144
|
+
...I(),
|
|
112
145
|
children: [
|
|
113
|
-
|
|
114
|
-
|
|
146
|
+
s && /* @__PURE__ */ l("div", { className: "w-full p-1 mb-1 sticky top-0 z-10 border-b border-border", children: /* @__PURE__ */ l(
|
|
147
|
+
et,
|
|
115
148
|
{
|
|
116
|
-
name:
|
|
149
|
+
name: k,
|
|
117
150
|
type: "text",
|
|
118
151
|
variant: "bordered",
|
|
119
|
-
radius:
|
|
120
|
-
color:
|
|
121
|
-
size:
|
|
122
|
-
value:
|
|
123
|
-
onChange: (
|
|
124
|
-
startContent: /* @__PURE__ */
|
|
125
|
-
placeholder:
|
|
152
|
+
radius: M,
|
|
153
|
+
color: L,
|
|
154
|
+
size: A,
|
|
155
|
+
value: x,
|
|
156
|
+
onChange: (a) => n(a.target.value),
|
|
157
|
+
startContent: /* @__PURE__ */ l(C, { className: "w-3.5 h-3.5 text-foreground/70" }),
|
|
158
|
+
placeholder: f,
|
|
126
159
|
autoFocus: !0,
|
|
127
160
|
className: "w-full pl-8 h-8 text-xs bg-secondary/30 border-none focus-visible:ring-0"
|
|
128
161
|
}
|
|
129
162
|
) }),
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
},
|
|
147
|
-
String(e.value)
|
|
148
|
-
);
|
|
149
|
-
}),
|
|
150
|
-
h && /* @__PURE__ */ a("div", { className: "border-t border-border pt-1 mt-1", children: h })
|
|
163
|
+
/* @__PURE__ */ l(
|
|
164
|
+
rt,
|
|
165
|
+
{
|
|
166
|
+
filteredOptions: D,
|
|
167
|
+
selectedValues: S,
|
|
168
|
+
onSelectMenuOption: V,
|
|
169
|
+
renderOption: T,
|
|
170
|
+
itemVariant: G,
|
|
171
|
+
itemColor: L,
|
|
172
|
+
activeItemVariant: U,
|
|
173
|
+
activeItemColor: W,
|
|
174
|
+
radius: M,
|
|
175
|
+
size: A
|
|
176
|
+
}
|
|
177
|
+
),
|
|
178
|
+
z && /* @__PURE__ */ l("div", { className: "border-t border-border pt-1 mt-1", children: z })
|
|
151
179
|
]
|
|
152
180
|
}
|
|
153
181
|
)
|
|
154
182
|
}
|
|
155
183
|
);
|
|
156
|
-
return
|
|
184
|
+
return B ? /* @__PURE__ */ l(Y, { root: O, children: E }) : E;
|
|
157
185
|
};
|
|
158
|
-
|
|
186
|
+
at.displayName = "SelectMenu";
|
|
159
187
|
export {
|
|
160
|
-
|
|
188
|
+
at as SelectMenu
|
|
161
189
|
};
|
|
@@ -56,7 +56,9 @@ export interface UseSelectFloatingProps {
|
|
|
56
56
|
* This hook configures Floating UI with sensible defaults for dropdown
|
|
57
57
|
* components. It handles automatic position updates, viewport edge detection
|
|
58
58
|
* via flip and shift middleware, and optional width matching of the
|
|
59
|
-
* reference element.
|
|
59
|
+
* reference element. Positioning uses `strategy: "fixed"` with Floating
|
|
60
|
+
* UI's event-driven `autoUpdate` tracking so portaled menus stay aligned
|
|
61
|
+
* while the page scrolls without paying per-frame re-render cost.
|
|
60
62
|
*
|
|
61
63
|
* @param props - Configuration options for the floating element.
|
|
62
64
|
* @param props.isOpen - Whether the floating element is open.
|
|
@@ -66,7 +68,8 @@ export interface UseSelectFloatingProps {
|
|
|
66
68
|
* @param props.offsetDistance - Distance from reference in pixels. Defaults to 4.
|
|
67
69
|
* @param props.padding - Viewport padding for shift middleware. Defaults to 8.
|
|
68
70
|
* @param props.matchReferenceWidth - Whether to match reference width. Defaults to true.
|
|
69
|
-
* @returns The Floating UI context including refs, styles, and
|
|
71
|
+
* @returns The Floating UI context including refs, styles, middleware, and
|
|
72
|
+
* the `isPositioned` flag for gating initial-render visibility.
|
|
70
73
|
*
|
|
71
74
|
* @example
|
|
72
75
|
* ```tsx
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-select-floating.d.ts","sourceRoot":"","sources":["../../../src/components/select-menu/use-select-floating.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"use-select-floating.d.ts","sourceRoot":"","sources":["../../../src/components/select-menu/use-select-floating.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAKL,KAAK,SAAS,EAEd,KAAK,iBAAiB,EAEvB,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,MAAM,EAAE,OAAO,CAAC;IAEhB;;;OAGG;IACH,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAEtC;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,WAAW,EAAE,EACrE,MAAM,EACN,YAAY,EACZ,QAAgB,EAChB,SAA0B,EAC1B,cAAkB,EAClB,OAAW,EACX,mBAA0B,GAC3B,EAAE,sBAAsB,GAAG,iBAAiB,CAAC,CAAC,CAAC,CA6B/C"}
|