@box-kite/react 2.2.7 → 2.2.9
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/BOX_AI_CONTEXT.md +76 -0
- package/BOX_KITE_AI_CONTEXT.md +76 -0
- package/analytics.cjs +1 -0
- package/analytics.d.ts +10 -0
- package/analytics.mjs +121 -0
- package/behavior.cjs +1 -1
- package/behavior.mjs +42 -38
- package/box.cjs +1 -1
- package/box.d.ts +9 -0
- package/box.mjs +17 -16
- package/catalog.cjs +1 -1
- package/catalog.mjs +8 -0
- package/client.cjs +1 -1
- package/client.mjs +120 -120
- package/components/accordion.cjs +1 -1
- package/components/accordion.mjs +19 -10
- package/components/agent.cjs +1 -1
- package/components/agent.mjs +21 -8
- package/components/calendar.cjs +1 -1
- package/components/calendar.d.ts +3 -1
- package/components/calendar.mjs +154 -142
- package/components/combobox.cjs +1 -1
- package/components/combobox.mjs +184 -174
- package/components/dashboard.cjs +1 -1
- package/components/dashboard.mjs +183 -170
- package/components/dataGrid/models/columnModel.d.ts +1 -0
- package/components/dataGrid/models/gridModel.d.ts +18 -0
- package/components/dataGrid/models/rangeModel.d.ts +3 -0
- package/components/dataGrid.cjs +3 -3
- package/components/dataGrid.mjs +987 -896
- package/components/dateField.cjs +1 -1
- package/components/dateField.mjs +160 -149
- package/components/datePicker.cjs +1 -1
- package/components/datePicker.mjs +226 -206
- package/components/dialog.cjs +1 -1
- package/components/dialog.mjs +38 -33
- package/components/dropdown.cjs +1 -1
- package/components/dropdown.mjs +107 -93
- package/components/form.cjs +1 -1
- package/components/form.mjs +22 -18
- package/components/menu.cjs +1 -1
- package/components/menu.d.ts +2 -0
- package/components/menu.mjs +196 -175
- package/components/overlay.cjs +1 -1
- package/components/overlay.mjs +7 -7
- package/components/popover.cjs +1 -1
- package/components/popover.mjs +4 -0
- package/components/radioGroup.cjs +1 -1
- package/components/radioGroup.mjs +10 -5
- package/components/slider.cjs +1 -1
- package/components/slider.mjs +84 -83
- package/components/sortableList.cjs +1 -1
- package/components/sortableList.mjs +158 -150
- package/components/swipeItem.cjs +1 -1
- package/components/swipeItem.mjs +92 -84
- package/components/tabs.cjs +1 -1
- package/components/tabs.mjs +10 -5
- package/components/timeZoneSelect.cjs +1 -1
- package/components/timeZoneSelect.mjs +40 -35
- package/components/toaster.cjs +1 -1
- package/components/toaster.mjs +151 -113
- package/dataGridDateParts.cjs +1 -1
- package/dataGridDateParts.mjs +56 -55
- package/dataGridList.cjs +1 -1
- package/dataGridList.mjs +430 -429
- package/effects.cjs +1 -1
- package/effects.mjs +1 -1
- package/interactionListening.cjs +1 -0
- package/interactionListening.mjs +117 -0
- package/interactions.cjs +1 -0
- package/interactions.mjs +25 -0
- package/layer.cjs +1 -1
- package/layer.mjs +68 -66
- package/package.json +132 -68
- package/placement.cjs +1 -1
- package/placement.mjs +10 -10
- package/platform.cjs +1 -1
- package/platform.mjs +44 -25
- package/react/interactions/interactions.d.ts +30 -0
- package/react/popover/usePopoverLayer.d.ts +3 -0
- package/react/useStyles.d.ts +8 -1
- package/react-shared.cjs +1 -1
- package/react-shared.mjs +49 -48
- package/reporting.cjs +1 -0
- package/reporting.mjs +51 -0
- package/scrolling.cjs +1 -1
- package/scrolling.mjs +1 -1
- package/supabase/functions/collect/index.d.ts +30 -0
- package/supabase/functions/collect/index.test.d.ts +1 -0
- package/utils/analytics/analytics.d.ts +72 -0
- package/utils/analytics/analyticsIdentity.d.ts +13 -0
- package/utils/interactions/componentAttribute.d.ts +6 -0
- package/utils/interactions/interactionChannel.d.ts +35 -0
- package/utils/interactions/interactionJson.d.ts +6 -0
- package/utils/interactions/interactionListening.d.ts +6 -0
- package/utils/interactions/interactionTypes.d.ts +224 -0
package/components/dialog.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../
|
|
1
|
+
"use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../platform.cjs"),t=require("../client.cjs"),n=require("../effects.cjs"),r=require("../box.cjs"),i=require("../behavior.cjs"),a=require("../identity.cjs"),o=require("../reporting.cjs"),s=require("./semantics.cjs");let c=require("react"),l=require("react/jsx-runtime");var u=0;function d(r){let{classNames:i,styleElements:a}=t.i({overflow:`hidden`},!1),o=i.slice(1).join(` `);return n.n(()=>{let t=e.n();if(!(!r||!t||!o))return u+=1,t.classList.add(o),()=>{--u,u===0&&t.classList.remove(o)}},[r,o]),a}var f=(0,c.createContext)(null);function p(e){let t=(0,c.useContext)(f);if(!t)throw Error(`<${e}> must be rendered inside a <Dialog>.`);return t}function m(e){return(0,l.jsx)(g,{role:`dialog`,...e})}function h(e){return(0,l.jsx)(g,{role:`alertdialog`,...e,modal:!0,dismissible:!1})}function g(t){let{role:s,trigger:u,children:p,open:m,defaultOpen:h=!1,onOpenChange:g,label:v,labelledBy:y,describedBy:b,modal:x=!0,dismissible:S=!0,lockScroll:C=x,initialFocus:w,props:T,...E}=t,D=a.t(`dialog`),O=E.id??D,[k,A]=o.a({value:m,defaultValue:h,onChange:g,interaction:{component:s===`alertdialog`?`alertDialog`:`dialog`,type:`openChange`}}),[j,M]=(0,c.useState)(null),[N,P]=(0,c.useState)(null),[F,I]=(0,c.useState)(!1),[L,R]=(0,c.useState)({title:0,description:0}),z=d(k&&C);i.n({enabled:k,returnTo:N});let B=(0,c.useCallback)(e=>(R(t=>({...t,[e]:t[e]+1})),()=>R(t=>({...t,[e]:t[e]-1}))),[]),V=(0,c.useMemo)(()=>({titleId:`${O}-title`,descriptionId:`${O}-description`,register:B}),[O,B]);_({dialog:j,isOpen:k,domOpen:F,setDomOpen:I,setOpen:A,modal:x,dismissible:S,triggerElement:N}),n.n(()=>{let t=e.d(w);!k||!t||t.focus()},[k,w]);let H=i.a(e=>{A(e=>!e,{reason:`trigger`,event:e})}),U=(0,c.useMemo)(()=>({ref:P,props:{"aria-expanded":k,"aria-haspopup":`dialog`,"aria-controls":k?O:void 0,onClick:H}}),[O,H,k]),W=E;return(0,l.jsxs)(l.Fragment,{children:[z,u?.(U),(0,l.jsx)(f.Provider,{value:V,children:(0,l.jsx)(r.default,{ref:M,tag:`dialog`,component:`dialog`,...W,id:O,props:{role:s,"aria-label":L.title||y?void 0:v,"aria-labelledby":y??(L.title?V.titleId:void 0),"aria-describedby":b??(L.description?V.descriptionId:void 0),...T},children:p})})]})}function _(t){let{dialog:r,isOpen:a,domOpen:o,setDomOpen:s,setOpen:l,modal:u,dismissible:d,triggerElement:f}=t,p=(0,c.useRef)(`imperative`),m=e.s(),h=d?`any`:`closerequest`;n.n(()=>{!r||a===o||(s(a),a?u?r.showModal():r.show():r.close())},[r,a,o,u,s]),n.n(()=>{if(!r)return;let e=new AbortController;return r.addEventListener(`close`,e=>{s(!1),l(!1,{reason:p.current,event:e}),p.current=`imperative`},{signal:e.signal}),()=>e.abort()},[r,s,l]),n.n(()=>{if(!(!r||!m))return r.setAttribute(`closedby`,h),()=>r.removeAttribute(`closedby`)},[r,m,h]),n.n(()=>{if(!a||!r)return;let t=new AbortController,n=(e,n)=>document.addEventListener(e,n,{signal:t.signal,capture:!0});return n(`keydown`,e=>{e.key===`Escape`&&(p.current=`escape`)}),n(`pointerdown`,t=>{e.f(t,[f])?p.current=`trigger`:!e.f(t,[r])||v(r,t)?p.current=`outside-pointer`:p.current=`imperative`}),()=>t.abort()},[a,r,f]),i.r({enabled:a&&!u&&!m,inside:[r],escapeKey:!0,outsidePointer:!1,onDismiss:(e,t)=>l(!1,{reason:`escape`,event:t})}),n.n(()=>{if(!r||!a||!d||m)return;let t=new AbortController;return document.addEventListener(`pointerdown`,t=>{e.f(t,[f])||e.f(t,[r])&&!v(r,t)||l(!1,{reason:`outside-pointer`,event:t})},{signal:t.signal,capture:!0}),()=>t.abort()},[r,a,d,m,f,l])}function v(e,t){let n=e.getBoundingClientRect();return t.clientX<n.left||t.clientX>n.right||t.clientY<n.top||t.clientY>n.bottom}function y(e){let t=p(`Dialog.Title`);return n.n(()=>t.register(`title`),[t]),(0,l.jsx)(s.H2,{id:t.titleId,component:`dialog.title`,...e})}function b(e){let t=p(`Dialog.Description`);return n.n(()=>t.register(`description`),[t]),(0,l.jsx)(s.P,{id:t.descriptionId,component:`dialog.description`,...e})}y.displayName=`Dialog.Title`,b.displayName=`Dialog.Description`;var x={Title:y,Description:b},S=Object.assign(m,x),C=Object.assign(h,x);m.displayName=`Dialog`,h.displayName=`AlertDialog`,exports.AlertDialog=C,exports.default=S;
|
package/components/dialog.mjs
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { d as e, f as t, n, s as r } from "../platform.mjs";
|
|
3
|
+
import { i } from "../client.mjs";
|
|
4
4
|
import { n as a } from "../effects.mjs";
|
|
5
5
|
import o from "../box.mjs";
|
|
6
|
-
import { a as s,
|
|
7
|
-
import { t as
|
|
6
|
+
import { a as s, n as c, r as l } from "../behavior.mjs";
|
|
7
|
+
import { t as u } from "../identity.mjs";
|
|
8
|
+
import { a as d } from "../reporting.mjs";
|
|
8
9
|
import { H2 as f, P as p } from "./semantics.mjs";
|
|
9
10
|
import { createContext as m, useCallback as h, useContext as g, useMemo as _, useRef as v, useState as y } from "react";
|
|
10
11
|
import { Fragment as b, jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
11
12
|
//#region src/react/dialog/useScrollLock.ts
|
|
12
13
|
var C = 0;
|
|
13
|
-
function w(
|
|
14
|
-
let { classNames:
|
|
14
|
+
function w(e) {
|
|
15
|
+
let { classNames: t, styleElements: r } = i({ overflow: "hidden" }, !1), o = t.slice(1).join(" ");
|
|
15
16
|
return a(() => {
|
|
16
|
-
let
|
|
17
|
-
if (!(!
|
|
18
|
-
--C, C === 0 &&
|
|
17
|
+
let t = n();
|
|
18
|
+
if (!(!e || !t || !o)) return C += 1, t.classList.add(o), () => {
|
|
19
|
+
--C, C === 0 && t.classList.remove(o);
|
|
19
20
|
};
|
|
20
|
-
}, [
|
|
21
|
+
}, [e, o]), r;
|
|
21
22
|
}
|
|
22
23
|
//#endregion
|
|
23
24
|
//#region src/components/dialog.tsx
|
|
@@ -41,16 +42,20 @@ function O(e) {
|
|
|
41
42
|
dismissible: !1
|
|
42
43
|
});
|
|
43
44
|
}
|
|
44
|
-
function k(
|
|
45
|
-
let { role:
|
|
46
|
-
value:
|
|
45
|
+
function k(t) {
|
|
46
|
+
let { role: n, trigger: r, children: i, open: l, defaultOpen: f = !1, onOpenChange: p, label: m, labelledBy: g, describedBy: v, modal: C = !0, dismissible: E = !0, lockScroll: D = C, initialFocus: O, props: k, ...j } = t, M = u("dialog"), N = j.id ?? M, [P, F] = d({
|
|
47
|
+
value: l,
|
|
47
48
|
defaultValue: f,
|
|
48
|
-
onChange: p
|
|
49
|
+
onChange: p,
|
|
50
|
+
interaction: {
|
|
51
|
+
component: n === "alertdialog" ? "alertDialog" : "dialog",
|
|
52
|
+
type: "openChange"
|
|
53
|
+
}
|
|
49
54
|
}), [I, L] = y(null), [R, z] = y(null), [B, V] = y(!1), [H, U] = y({
|
|
50
55
|
title: 0,
|
|
51
56
|
description: 0
|
|
52
57
|
}), W = w(P && D);
|
|
53
|
-
|
|
58
|
+
c({
|
|
54
59
|
enabled: P,
|
|
55
60
|
returnTo: R
|
|
56
61
|
});
|
|
@@ -75,8 +80,8 @@ function k(e) {
|
|
|
75
80
|
dismissible: E,
|
|
76
81
|
triggerElement: R
|
|
77
82
|
}), a(() => {
|
|
78
|
-
let
|
|
79
|
-
!P || !
|
|
83
|
+
let t = e(O);
|
|
84
|
+
!P || !t || t.focus();
|
|
80
85
|
}, [P, O]);
|
|
81
86
|
let q = s((e) => {
|
|
82
87
|
F((e) => !e, {
|
|
@@ -108,7 +113,7 @@ function k(e) {
|
|
|
108
113
|
...Y,
|
|
109
114
|
id: N,
|
|
110
115
|
props: {
|
|
111
|
-
role:
|
|
116
|
+
role: n,
|
|
112
117
|
"aria-label": H.title || g ? void 0 : m,
|
|
113
118
|
"aria-labelledby": g ?? (H.title ? K.titleId : void 0),
|
|
114
119
|
"aria-describedby": v ?? (H.description ? K.descriptionId : void 0),
|
|
@@ -120,14 +125,14 @@ function k(e) {
|
|
|
120
125
|
] });
|
|
121
126
|
}
|
|
122
127
|
function A(e) {
|
|
123
|
-
let { dialog: n, isOpen:
|
|
128
|
+
let { dialog: n, isOpen: i, domOpen: o, setDomOpen: s, setOpen: c, modal: u, dismissible: d, triggerElement: f } = e, p = v("imperative"), m = r(), h = d ? "any" : "closerequest";
|
|
124
129
|
a(() => {
|
|
125
|
-
!n ||
|
|
130
|
+
!n || i === o || (s(i), i ? u ? n.showModal() : n.show() : n.close());
|
|
126
131
|
}, [
|
|
127
132
|
n,
|
|
128
|
-
|
|
133
|
+
i,
|
|
129
134
|
o,
|
|
130
|
-
|
|
135
|
+
u,
|
|
131
136
|
s
|
|
132
137
|
]), a(() => {
|
|
133
138
|
if (!n) return;
|
|
@@ -149,22 +154,22 @@ function A(e) {
|
|
|
149
154
|
m,
|
|
150
155
|
h
|
|
151
156
|
]), a(() => {
|
|
152
|
-
if (!
|
|
153
|
-
let e = new AbortController(),
|
|
157
|
+
if (!i || !n) return;
|
|
158
|
+
let e = new AbortController(), r = (t, n) => document.addEventListener(t, n, {
|
|
154
159
|
signal: e.signal,
|
|
155
160
|
capture: !0
|
|
156
161
|
});
|
|
157
|
-
return
|
|
162
|
+
return r("keydown", (e) => {
|
|
158
163
|
e.key === "Escape" && (p.current = "escape");
|
|
159
|
-
}),
|
|
160
|
-
|
|
164
|
+
}), r("pointerdown", (e) => {
|
|
165
|
+
t(e, [f]) ? p.current = "trigger" : !t(e, [n]) || j(n, e) ? p.current = "outside-pointer" : p.current = "imperative";
|
|
161
166
|
}), () => e.abort();
|
|
162
167
|
}, [
|
|
163
|
-
|
|
168
|
+
i,
|
|
164
169
|
n,
|
|
165
170
|
f
|
|
166
|
-
]),
|
|
167
|
-
enabled:
|
|
171
|
+
]), l({
|
|
172
|
+
enabled: i && !u && !m,
|
|
168
173
|
inside: [n],
|
|
169
174
|
escapeKey: !0,
|
|
170
175
|
outsidePointer: !1,
|
|
@@ -173,10 +178,10 @@ function A(e) {
|
|
|
173
178
|
event: t
|
|
174
179
|
})
|
|
175
180
|
}), a(() => {
|
|
176
|
-
if (!n || !
|
|
181
|
+
if (!n || !i || !d || m) return;
|
|
177
182
|
let e = new AbortController();
|
|
178
183
|
return document.addEventListener("pointerdown", (e) => {
|
|
179
|
-
|
|
184
|
+
t(e, [f]) || t(e, [n]) && !j(n, e) || c(!1, {
|
|
180
185
|
reason: "outside-pointer",
|
|
181
186
|
event: e
|
|
182
187
|
});
|
|
@@ -186,7 +191,7 @@ function A(e) {
|
|
|
186
191
|
}), () => e.abort();
|
|
187
192
|
}, [
|
|
188
193
|
n,
|
|
189
|
-
|
|
194
|
+
i,
|
|
190
195
|
d,
|
|
191
196
|
m,
|
|
192
197
|
f,
|
package/components/dropdown.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../effects.cjs"),t=require("../box.cjs"),n=require("../behavior.cjs"),r=require("../identity.cjs"),i=require("./baseSvg.cjs"),a=require("./button.cjs"),o=require("./flex.cjs"),s=require("./checkbox.cjs"),c=require("./overlay.cjs"),l=require("./presence.cjs"),u=require("./textbox.cjs");let d=require("react"),f=require("react/jsx-runtime");var p=(0,d.createContext)(null);function m(){let e=(0,d.useContext)(p);if(!e)throw Error(`Dropdown sub-components must be used within Dropdown`);return e}var h={item:`dropdown.item`,unselect:`dropdown.unselect`,selectAll:`dropdown.selectAll`};function g({row:e,index:n}){let{valueToUse:r,multiple:i,variant:a,showCheckbox:o,selectRow:c,optionId:l,activeIndex:u,rowRef:d,isRowDisabled:p}=m(),g=e.kind===`item`,_=p(n),v=g?r.includes(e.element.props.value):e.kind===`unselect`&&r.length===0,{value:ee,onClick:y,children:b,...x}=e.element.props,S=o&&i&&g;return(0,f.jsx)(t.default,{ref:d(n),component:h[e.kind],variant:[a,g?{multiple:i,highlighted:n===u}:{highlighted:n===u}],selected:v,...x,id:l(n),children:S?(0,f.jsxs)(f.Fragment,{children:[(0,f.jsx)(s.default,{readOnly:!0,checked:v,me:2,props:{tabIndex:-1,"aria-hidden":!0}}),b]}):b,props:{role:`option`,..._?{"aria-disabled":!0}:{},...x.props,onClick:_?void 0:e=>{y?.(e),c(n,e)}}})}var _=(0,d.memo)(g,(e,t)=>e.row.element===t.row.element&&e.index===t.index);function v(e,t,n){return e?{role:`listbox`,"aria-labelledby":n,...t?{"aria-multiselectable":!0}:{}}:{role:`status`}}function ee(e){let{presence:n,rows:r,emptyItem:i,triggerRef:a,popupRef:o,listboxId:s,labelledBy:l,itemsProps:u}=e,{present:p,ref:h,props:g}=n,{multiple:ee,variant:b}=m(),[x,S]=(0,d.useState)(!1),te=(0,d.useCallback)(e=>S(e===`top`),[]);return(0,f.jsx)(c.default,{ref:o,anchor:a,side:`bottom`,align:`start`,offset:.5,onSideChange:te,children:(0,f.jsxs)(t.default,{ref:h,component:`dropdown.items`,...u,variant:[b,{closed:!p&&!x,closedUp:!p&&x}],id:s,props:{...v(r.length>0,ee,l),...g},children:[r.map((e,t)=>(0,f.jsx)(_,{row:e,index:t},y(e,t))),r.length===0&&i&&(0,f.jsx)(t.default,{component:`dropdown.emptyItem`,variant:b,...i.props})]})})}function y(e,t){return e.kind===`item`?e.element.props.value:`${e.kind}-${t}`}ee.displayName=`DropdownItems`;function b({id:e,value:t,onValueChange:n,placeholder:r,inputRef:i,comboboxProps:a,onOpen:s}){let c=(0,d.useCallback)(e=>n(e.target.value),[n]),l=(0,d.useCallback)(e=>{e.stopPropagation(),s(e)},[s]);return(0,f.jsx)(o.default,{ai:`center`,position:`absolute`,inset:0,p:3,children:(0,f.jsx)(u.default,{clean:!0,id:e,value:t,placeholder:r,onChange:c,ref:i,color:`currentColor`,width:`fit`,props:{role:`combobox`,"aria-autocomplete":`list`,autoComplete:`off`,spellCheck:!1,...a,onClick:l}})})}function x(e){if(e==null)return``;if(typeof e==`object`){let t=e.props?.children;return t==null?``:typeof t==`object`?(Array.isArray(t)?t:[t]).map(e=>x(e)).join(``):t.toString()}return e.toString()}function S(e){return e==null?[]:Array.isArray(e)?e:[e]}function te(e){let t=e?.props?.disabled;return(Array.isArray(t)?t[0]:t)===!0}function ne(e){return e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey}var re=new Set([` `,`Home`,`End`,`ArrowLeft`,`ArrowRight`]);function ie(s,c){let{name:m,defaultValue:h,value:g,defaultOpen:_,multiple:v=!1,isSearchable:y,searchPlaceholder:ie,children:C,hideIcon:w,showCheckbox:ae=!1,label:oe,labelProps:se,itemsProps:ce,iconProps:le,onValueChange:ue,onChange:de,props:fe,...T}=s,E=(0,d.useRef)(void 0),pe=n.a((e,t)=>{ue?.(v?e:e[0],t),de?.(E.current,e)}),me=`value`in s,he=(0,d.useMemo)(()=>me?S(g):void 0,[me,g]),[D,O]=n.i({value:he,defaultValue:()=>S(h),onChange:pe}),[ge,_e]=(0,d.useState)(null),[k,A]=(0,d.useState)(!!_),j=(0,d.useRef)(null),ve=(0,d.useCallback)(e=>{j.current=e},[]),ye=(0,d.useRef)(null),M=(0,d.useRef)(null),N=r.t(`dropdown`),P=T.id??`${N}-trigger`,be=`${N}-listbox`,F=`${N}-label`,I=oe!=null&&oe!==!1,xe=(0,d.useCallback)(e=>`${N}-option-${e}`,[N]),L=n.a((e=!1)=>{A(!1),e||_e(null)}),R=(0,d.useMemo)(()=>(Array.isArray(C)?C:[C]).flatMap(e=>e).filter(Boolean),[C]),z=(0,d.useMemo)(()=>R.filter(e=>e.type?.displayName===`DropdownItem`),[R]),Se=(0,d.useMemo)(()=>{let e=new Map;for(let t of z)e.set(t,x(t));return e},[z]),B=(0,d.useCallback)(e=>Se.get(e)??x(e),[Se]),Ce=y?ge??``:``,V=(0,d.useMemo)(()=>Ce?z.filter(e=>B(e).toLowerCase().includes(Ce.toLowerCase())):z,[Ce,z,B]),H=(0,d.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownUnselect`),[R]),U=(0,d.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownSelectAll`),[R]),we=(0,d.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownEmptyItem`),[R]),W=(0,d.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownDisplay`),[R]),G=(0,d.useMemo)(()=>!y||W?``:z.filter(e=>D.includes(e.props.value)).map(e=>B(e)).join(`, `),[y,W,z,D,B]),Te=!!(U&&v&&V.length>D.length),Ee=!!(H&&V.length>0&&!Te),K=(0,d.useMemo)(()=>{let e=[];Ee&&H&&e.push({kind:`unselect`,element:H}),Te&&U&&e.push({kind:`selectAll`,element:U});for(let t of V)e.push({kind:`item`,element:t});return e},[Ee,H,Te,U,V]),q=(0,d.useCallback)(e=>te(K[e]?.element),[K]),De=(0,d.useCallback)(e=>{let t=K[e];return t?B(t.element):``},[K,B]),Oe=(0,d.useMemo)(()=>{if(y&&(k||G!==``))return null;if(W)return typeof W.props.children==`function`?W.props.children(D,k):W.props.children;let e=V.filter(e=>D.includes(e.props.value));if(v&&e.length>1)return e.map(e=>B(e)).join(`, `);let t=e.at(0);return t?.props.children??t?.props.value??(v?null:H?.props.children)},[v,V,D,H,k,y,G,W,B]),ke=(0,d.useCallback)((e,...t)=>{if(t.length===0)E.current=void 0,O([],{reason:`clear`,event:e});else if(v&&t.length>1)E.current=void 0,O(t.map(e=>e.props.value),{reason:`select-all`,event:e});else if(t.length===1){let n=t[0];if(E.current=n.props.value,v){let t=D.filter(e=>e!==n.props.value),r=t.length!==D.length;r||t.push(n.props.value),O(t,{reason:r?`deselect`:`select`,event:e})}else O([n.props.value],{reason:`select`,event:e})}e.stopPropagation(),v?y&&setTimeout(()=>M.current?.focus(),0):L()},[v,y,D,O,L]),J=n.a((e,t)=>{let n=K[e];!n||q(e)||(n.kind===`unselect`?ke(t):n.kind===`selectAll`?ke(t,...z):ke(t,n.element))}),Ae=e=>{let t=e===`first`?1:-1;for(let n=e===`first`?0:K.length-1;n>=0&&n<K.length;n+=t)if(!q(n))return n;return-1},Y=e=>{let t=K.findIndex(e=>e.kind===`item`&&D.includes(e.element.props.value));return t!==-1&&!q(t)?t:e===`none`?-1:Ae(e)},X=n.t({count:K.length,focusItems:!1,defaultActiveIndex:_?Y(`none`):-1,isDisabled:q,textOf:y?void 0:De,onSelect:J}),je=X.setActiveIndex,Me=(0,d.useCallback)(e=>je(-1,{reason:`programmatic`,event:e}),[je]);n.r({enabled:k,inside:[j,ye],onDismiss:e=>L(e===`escape`)}),n.n({enabled:k,returnTo:y?M:j}),(0,d.useEffect)(()=>{k&&M.current?.focus()},[k]);let Z=X.activeIndex,Ne=X.activeItem;e.n(()=>{!k||Z===-1||Ne()?.scrollIntoView?.({block:`nearest`})},[k,Z,Ne]);let Q=(e,t)=>{A(!0),X.setActiveIndex(e,{reason:`programmatic`,event:t})},Pe=n.a(e=>{k?L():Q(Y(`none`),e)}),Fe=n.a(e=>{k||Q(Y(`none`),e)}),Ie=n.a(e=>{_e(e),k||A(!0),Me()}),Le=e=>{let{key:t}=e;if(y){if(t===`ArrowDown`||t===`ArrowUp`){e.preventDefault(),Q(Y(t===`ArrowUp`?`last`:e.altKey?`none`:`first`),e);return}t===`Escape`&&_e(``);return}if(t===`ArrowDown`||t===`Enter`||t===` `){e.preventDefault(),Q(Y(e.altKey?`none`:`first`),e);return}if(t===`ArrowUp`){e.preventDefault(),Q(Y(`last`),e);return}if(t===`Home`||t===`End`){e.preventDefault(),Q(Ae(t===`Home`?`first`:`last`),e);return}ne(e)&&(A(!0),X.onKeyDown(e))},Re=n.a(e=>{if(fe?.onKeyDown?.(e),!e.defaultPrevented){if(!k){Le(e);return}if(e.key===`Tab`){!v&&X.activeIndex!==-1&&J(X.activeIndex,e),L();return}if(e.altKey&&e.key===`ArrowUp`){e.preventDefault(),X.activeIndex!==-1&&J(X.activeIndex,e),L();return}if(y&&re.has(e.key)){Me(e);return}X.onKeyDown(e)}}),$=K.length>0||!!we,ze=k&&Z!==-1&&$?xe(Z):void 0,Be=X.itemProps,Ve=(0,d.useMemo)(()=>({valueToUse:D,multiple:v,variant:T.variant,showCheckbox:ae,selectRow:J,optionId:xe,activeIndex:Z,rowRef:e=>Be(e).ref,isRowDisabled:q}),[D,v,T.variant,ae,J,xe,Z,Be,q]),He={"aria-expanded":k,"aria-controls":k&&$?be:void 0,"aria-activedescendant":ze,"aria-labelledby":I?F:void 0,...fe,onKeyDown:Re},Ue=D.map(e=>{let t=JSON.stringify(e);return(0,f.jsx)(u.default,{ref:c,name:m,type:`hidden`,value:t??``},t)}),We=!w&&(0,f.jsx)(o.default,{component:`dropdown.icon`,...le,children:(0,f.jsx)(i.default,{viewBox:`0 0 10 6`,width:`0.6rem`,rotate:k?180:0,children:(0,f.jsx)(`path`,{stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`2`,d:`m1 1 4 4 4-4`})})}),Ge=$&&(0,f.jsx)(l.default,{present:k,children:e=>(0,f.jsx)(ee,{presence:e,rows:K,emptyItem:we,triggerRef:j,popupRef:ye,listboxId:be,labelledBy:I?F:P,itemsProps:ce})}),Ke=y?(0,f.jsxs)(t.default,{ref:ve,component:`dropdown`,props:{onClick:Pe},position:`relative`,pe:w?void 0:6,minWidth:k?36:void 0,width:`fit-content`,...T,id:void 0,children:[Ue,(0,f.jsx)(b,{id:P,value:ge??G,onValueChange:Ie,placeholder:k?ie:void 0,inputRef:M,comboboxProps:He,onOpen:Fe}),Oe??(0,f.jsx)(t.default,{tag:`span`,visibility:`hidden`,children:G||`\xA0`}),We]}):(0,f.jsxs)(a.default,{ref:ve,onClick:Pe,component:`dropdown`,type:`button`,props:{tabIndex:0,role:`combobox`,...He},position:`relative`,pe:w?void 0:6,width:`fit-content`,...T,id:P,children:[Ue,Oe??`\xA0`,We]});return(0,f.jsx)(p.Provider,{value:Ve,children:I?(0,f.jsxs)(o.default,{d:`column`,gap:1,width:`fit-content`,...se,children:[(0,f.jsx)(t.default,{tag:`span`,id:F,children:oe}),Ke,Ge]}):(0,f.jsxs)(f.Fragment,{children:[Ke,Ge]})})}function C(e){let t=e=>null;return t.displayName=e,t}var w=(0,d.forwardRef)(ie);w.Item=C(`DropdownItem`),w.Unselect=C(`DropdownUnselect`),w.SelectAll=C(`DropdownSelectAll`),w.EmptyItem=C(`DropdownEmptyItem`),w.Display=C(`DropdownDisplay`),w.displayName=`Dropdown`,exports.default=w;
|
|
1
|
+
"use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../effects.cjs"),t=require("../box.cjs"),n=require("../behavior.cjs"),r=require("../identity.cjs"),i=require("../reporting.cjs"),a=require("./baseSvg.cjs"),o=require("./button.cjs"),s=require("./flex.cjs"),c=require("./checkbox.cjs"),l=require("./overlay.cjs"),u=require("./presence.cjs"),d=require("./textbox.cjs");let f=require("react"),p=require("react/jsx-runtime");var m=(0,f.createContext)(null);function h(){let e=(0,f.useContext)(m);if(!e)throw Error(`Dropdown sub-components must be used within Dropdown`);return e}var ee={item:`dropdown.item`,unselect:`dropdown.unselect`,selectAll:`dropdown.selectAll`};function g({row:e,index:n}){let{valueToUse:r,multiple:i,variant:a,showCheckbox:o,selectRow:s,optionId:l,activeIndex:u,rowRef:d,isRowDisabled:f}=h(),m=e.kind===`item`,g=f(n),_=m?r.includes(e.element.props.value):e.kind===`unselect`&&r.length===0,{value:v,onClick:y,children:b,...x}=e.element.props,S=o&&i&&m;return(0,p.jsx)(t.default,{ref:d(n),component:ee[e.kind],variant:[a,m?{multiple:i,highlighted:n===u}:{highlighted:n===u}],selected:_,...x,id:l(n),children:S?(0,p.jsxs)(p.Fragment,{children:[(0,p.jsx)(c.default,{readOnly:!0,checked:_,me:2,props:{tabIndex:-1,"aria-hidden":!0}}),b]}):b,props:{role:`option`,...g?{"aria-disabled":!0}:{},...x.props,onClick:g?void 0:e=>{y?.(e),s(n,e)}}})}var _=(0,f.memo)(g,(e,t)=>e.row.element===t.row.element&&e.index===t.index);function v(e,t,n){return e?{role:`listbox`,"aria-labelledby":n,...t?{"aria-multiselectable":!0}:{}}:{role:`status`}}function y(e){let{presence:n,rows:r,emptyItem:i,triggerRef:a,popupRef:o,listboxId:s,labelledBy:c,itemsProps:u}=e,{present:d,ref:m,props:ee}=n,{multiple:g,variant:y}=h(),[x,S]=(0,f.useState)(!1),te=(0,f.useCallback)(e=>S(e===`top`),[]);return(0,p.jsx)(l.default,{ref:o,anchor:a,side:`bottom`,align:`start`,offset:.5,onSideChange:te,children:(0,p.jsxs)(t.default,{ref:m,component:`dropdown.items`,...u,variant:[y,{closed:!d&&!x,closedUp:!d&&x}],id:s,props:{...v(r.length>0,g,c),...ee},children:[r.map((e,t)=>(0,p.jsx)(_,{row:e,index:t},b(e,t))),r.length===0&&i&&(0,p.jsx)(t.default,{component:`dropdown.emptyItem`,variant:y,...i.props})]})})}function b(e,t){return e.kind===`item`?e.element.props.value:`${e.kind}-${t}`}y.displayName=`DropdownItems`;function x({id:e,value:t,onValueChange:n,placeholder:r,inputRef:i,comboboxProps:a,onOpen:o}){let c=(0,f.useCallback)(e=>n(e.target.value),[n]),l=(0,f.useCallback)(e=>{e.stopPropagation(),o(e)},[o]);return(0,p.jsx)(s.default,{ai:`center`,position:`absolute`,inset:0,p:3,children:(0,p.jsx)(d.default,{clean:!0,id:e,value:t,placeholder:r,onChange:c,ref:i,color:`currentColor`,width:`fit`,props:{role:`combobox`,"aria-autocomplete":`list`,autoComplete:`off`,spellCheck:!1,...a,onClick:l}})})}function S(e){if(e==null)return``;if(typeof e==`object`){let t=e.props?.children;return t==null?``:typeof t==`object`?(Array.isArray(t)?t:[t]).map(e=>S(e)).join(``):t.toString()}return e.toString()}function te(e){return e==null?[]:Array.isArray(e)?e:[e]}function ne(e){let t=e?.props?.disabled;return(Array.isArray(t)?t[0]:t)===!0}function re(e){return e.key.length===1&&!e.ctrlKey&&!e.metaKey&&!e.altKey}var ie=new Set([` `,`Home`,`End`,`ArrowLeft`,`ArrowRight`]);function ae(c,l){let{name:h,defaultValue:ee,value:g,defaultOpen:_,multiple:v=!1,isSearchable:b,searchPlaceholder:ae,children:C,hideIcon:w,showCheckbox:oe=!1,label:T,labelProps:se,itemsProps:ce,iconProps:le,onValueChange:ue,onChange:de,props:fe,...E}=c,D=(0,f.useRef)(void 0),pe=n.a((e,t)=>{ue?.(v?e:e[0],t),de?.(D.current,e)}),me=`value`in c,he=(0,f.useMemo)(()=>me?te(g):void 0,[me,g]),[O,k]=i.a({value:he,defaultValue:()=>te(ee),onChange:pe,interaction:{component:`dropdown`,type:`valueChange`}}),[ge,_e]=(0,f.useState)(null),[A,ve]=i.a({defaultValue:!!_,interaction:{component:`dropdown`,type:`openChange`}}),j=(0,f.useRef)(null),ye=(0,f.useCallback)(e=>{j.current=e},[]),be=(0,f.useRef)(null),M=(0,f.useRef)(null),N=r.t(`dropdown`),P=E.id??`${N}-trigger`,xe=`${N}-listbox`,F=`${N}-label`,Se=T!=null&&T!==!1,Ce=(0,f.useCallback)(e=>`${N}-option-${e}`,[N]),I=n.a((e,t,n)=>ve(e,{reason:t,event:n})),L=n.a((e,t,n=!1)=>{I(!1,e,t),n||_e(null)}),R=(0,f.useMemo)(()=>(Array.isArray(C)?C:[C]).flatMap(e=>e).filter(Boolean),[C]),z=(0,f.useMemo)(()=>R.filter(e=>e.type?.displayName===`DropdownItem`),[R]),we=(0,f.useMemo)(()=>{let e=new Map;for(let t of z)e.set(t,S(t));return e},[z]),B=(0,f.useCallback)(e=>we.get(e)??S(e),[we]),Te=b?ge??``:``,V=(0,f.useMemo)(()=>Te?z.filter(e=>B(e).toLowerCase().includes(Te.toLowerCase())):z,[Te,z,B]),H=(0,f.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownUnselect`),[R]),U=(0,f.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownSelectAll`),[R]),Ee=(0,f.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownEmptyItem`),[R]),W=(0,f.useMemo)(()=>R.find(e=>e.type?.displayName===`DropdownDisplay`),[R]),G=(0,f.useMemo)(()=>!b||W?``:z.filter(e=>O.includes(e.props.value)).map(e=>B(e)).join(`, `),[b,W,z,O,B]),De=!!(U&&v&&V.length>O.length),Oe=!!(H&&V.length>0&&!De),K=(0,f.useMemo)(()=>{let e=[];Oe&&H&&e.push({kind:`unselect`,element:H}),De&&U&&e.push({kind:`selectAll`,element:U});for(let t of V)e.push({kind:`item`,element:t});return e},[Oe,H,De,U,V]),q=(0,f.useCallback)(e=>ne(K[e]?.element),[K]),ke=(0,f.useCallback)(e=>{let t=K[e];return t?B(t.element):``},[K,B]),Ae=(0,f.useMemo)(()=>{if(b&&(A||G!==``))return null;if(W)return typeof W.props.children==`function`?W.props.children(O,A):W.props.children;let e=V.filter(e=>O.includes(e.props.value));if(v&&e.length>1)return e.map(e=>B(e)).join(`, `);let t=e.at(0);return t?.props.children??t?.props.value??(v?null:H?.props.children)},[v,V,O,H,A,b,G,W,B]),je=(0,f.useCallback)((e,...t)=>{if(t.length===0)D.current=void 0,k([],{reason:`clear`,event:e});else if(v&&t.length>1)D.current=void 0,k(t.map(e=>e.props.value),{reason:`select-all`,event:e});else if(t.length===1){let n=t[0];if(D.current=n.props.value,v){let t=O.filter(e=>e!==n.props.value),r=t.length!==O.length;r||t.push(n.props.value),k(t,{reason:r?`deselect`:`select`,event:e})}else k([n.props.value],{reason:`select`,event:e})}e.stopPropagation(),v?b&&setTimeout(()=>M.current?.focus(),0):L(`select`,e)},[v,b,O,k,L]),J=n.a((e,t)=>{let n=K[e];!n||q(e)||(n.kind===`unselect`?je(t):n.kind===`selectAll`?je(t,...z):je(t,n.element))}),Me=e=>{let t=e===`first`?1:-1;for(let n=e===`first`?0:K.length-1;n>=0&&n<K.length;n+=t)if(!q(n))return n;return-1},Y=e=>{let t=K.findIndex(e=>e.kind===`item`&&O.includes(e.element.props.value));return t!==-1&&!q(t)?t:e===`none`?-1:Me(e)},X=n.t({count:K.length,focusItems:!1,defaultActiveIndex:_?Y(`none`):-1,isDisabled:q,textOf:b?void 0:ke,onSelect:J}),Ne=X.setActiveIndex,Pe=(0,f.useCallback)(e=>Ne(-1,{reason:`programmatic`,event:e}),[Ne]);n.r({enabled:A,inside:[j,be],onDismiss:(e,t)=>L(e,t,e===`escape`)}),n.n({enabled:A,returnTo:b?M:j}),(0,f.useEffect)(()=>{A&&M.current?.focus()},[A]);let Z=X.activeIndex,Fe=X.activeItem;e.n(()=>{!A||Z===-1||Fe()?.scrollIntoView?.({block:`nearest`})},[A,Z,Fe]);let Q=(e,t)=>{I(!0,t.type===`keydown`?`keyboard`:`trigger`,t),X.setActiveIndex(e,{reason:`programmatic`,event:t})},Ie=n.a(e=>{A?L(`trigger`,e):Q(Y(`none`),e)}),Le=n.a(e=>{A||Q(Y(`none`),e)}),Re=n.a(e=>{_e(e),A||I(!0,`input`),Pe()}),ze=e=>{let{key:t}=e;if(b){if(t===`ArrowDown`||t===`ArrowUp`){e.preventDefault(),Q(Y(t===`ArrowUp`?`last`:e.altKey?`none`:`first`),e);return}t===`Escape`&&_e(``);return}if(t===`ArrowDown`||t===`Enter`||t===` `){e.preventDefault(),Q(Y(e.altKey?`none`:`first`),e);return}if(t===`ArrowUp`){e.preventDefault(),Q(Y(`last`),e);return}if(t===`Home`||t===`End`){e.preventDefault(),Q(Me(t===`Home`?`first`:`last`),e);return}re(e)&&(I(!0,`input`,e),X.onKeyDown(e))},Be=n.a(e=>{if(fe?.onKeyDown?.(e),!e.defaultPrevented){if(!A){ze(e);return}if(e.key===`Tab`){!v&&X.activeIndex!==-1&&J(X.activeIndex,e),L(`tab`,e);return}if(e.altKey&&e.key===`ArrowUp`){e.preventDefault(),X.activeIndex!==-1&&J(X.activeIndex,e),L(`keyboard`,e);return}if(b&&ie.has(e.key)){Pe(e);return}X.onKeyDown(e)}}),$=K.length>0||!!Ee,Ve=A&&Z!==-1&&$?Ce(Z):void 0,He=X.itemProps,Ue=(0,f.useMemo)(()=>({valueToUse:O,multiple:v,variant:E.variant,showCheckbox:oe,selectRow:J,optionId:Ce,activeIndex:Z,rowRef:e=>He(e).ref,isRowDisabled:q}),[O,v,E.variant,oe,J,Ce,Z,He,q]),We={"aria-expanded":A,"aria-controls":A&&$?xe:void 0,"aria-activedescendant":Ve,"aria-labelledby":Se?F:void 0,...fe,onKeyDown:Be},Ge=O.map(e=>{let t=JSON.stringify(e);return(0,p.jsx)(d.default,{ref:l,name:h,type:`hidden`,value:t??``},t)}),Ke=!w&&(0,p.jsx)(s.default,{component:`dropdown.icon`,...le,children:(0,p.jsx)(a.default,{viewBox:`0 0 10 6`,width:`0.6rem`,rotate:A?180:0,children:(0,p.jsx)(`path`,{stroke:`currentColor`,strokeLinecap:`round`,strokeLinejoin:`round`,strokeWidth:`2`,d:`m1 1 4 4 4-4`})})}),qe=$&&(0,p.jsx)(u.default,{present:A,children:e=>(0,p.jsx)(y,{presence:e,rows:K,emptyItem:Ee,triggerRef:j,popupRef:be,listboxId:xe,labelledBy:Se?F:P,itemsProps:ce})}),Je=b?(0,p.jsxs)(t.default,{ref:ye,component:`dropdown`,props:{onClick:Ie},position:`relative`,pe:w?void 0:6,minWidth:A?36:void 0,width:`fit-content`,...E,id:void 0,children:[Ge,(0,p.jsx)(x,{id:P,value:ge??G,onValueChange:Re,placeholder:A?ae:void 0,inputRef:M,comboboxProps:We,onOpen:Le}),Ae??(0,p.jsx)(t.default,{tag:`span`,visibility:`hidden`,children:G||`\xA0`}),Ke]}):(0,p.jsxs)(o.default,{ref:ye,onClick:Ie,component:`dropdown`,type:`button`,props:{tabIndex:0,role:`combobox`,...We},position:`relative`,pe:w?void 0:6,width:`fit-content`,...E,id:P,children:[Ge,Ae??`\xA0`,Ke]});return(0,p.jsx)(m.Provider,{value:Ue,children:Se?(0,p.jsxs)(s.default,{d:`column`,gap:1,width:`fit-content`,...se,children:[(0,p.jsx)(t.default,{tag:`span`,id:F,children:T}),Je,qe]}):(0,p.jsxs)(p.Fragment,{children:[Je,qe]})})}function C(e){let t=e=>null;return t.displayName=e,t}var w=(0,f.forwardRef)(ae);w.Item=C(`DropdownItem`),w.Unselect=C(`DropdownUnselect`),w.SelectAll=C(`DropdownSelectAll`),w.EmptyItem=C(`DropdownEmptyItem`),w.Display=C(`DropdownDisplay`),w.displayName=`Dropdown`,exports.default=w;
|
package/components/dropdown.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { n as e } from "../effects.mjs";
|
|
3
3
|
import t from "../box.mjs";
|
|
4
|
-
import { a as n,
|
|
5
|
-
import { t as
|
|
4
|
+
import { a as n, n as r, r as i, t as a } from "../behavior.mjs";
|
|
5
|
+
import { t as o } from "../identity.mjs";
|
|
6
|
+
import { a as s } from "../reporting.mjs";
|
|
6
7
|
import c from "./baseSvg.mjs";
|
|
7
8
|
import ee from "./button.mjs";
|
|
8
9
|
import l from "./flex.mjs";
|
|
@@ -167,34 +168,47 @@ var me = /* @__PURE__ */ new Set([
|
|
|
167
168
|
function E(u, te) {
|
|
168
169
|
let { name: p, defaultValue: m, value: h, defaultOpen: _, multiple: S = !1, isSearchable: C, searchPlaceholder: oe, children: w, hideIcon: T, showCheckbox: ce = !1, label: E, labelProps: D, itemsProps: O, iconProps: he, onValueChange: ge, onChange: _e, props: ve, ...k } = u, A = y(void 0), ye = n((e, t) => {
|
|
169
170
|
ge?.(S ? e : e[0], t), _e?.(A.current, e);
|
|
170
|
-
}), be = "value" in u, xe = v(() => be ? de(h) : void 0, [be, h]), [j, M] =
|
|
171
|
+
}), be = "value" in u, xe = v(() => be ? de(h) : void 0, [be, h]), [j, M] = s({
|
|
171
172
|
value: xe,
|
|
172
173
|
defaultValue: () => de(m),
|
|
173
|
-
onChange: ye
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
}),
|
|
174
|
+
onChange: ye,
|
|
175
|
+
interaction: {
|
|
176
|
+
component: "dropdown",
|
|
177
|
+
type: "valueChange"
|
|
178
|
+
}
|
|
179
|
+
}), [Se, Ce] = re(null), [N, we] = s({
|
|
180
|
+
defaultValue: !!_,
|
|
181
|
+
interaction: {
|
|
182
|
+
component: "dropdown",
|
|
183
|
+
type: "openChange"
|
|
184
|
+
}
|
|
185
|
+
}), P = y(null), Te = g((e) => {
|
|
186
|
+
P.current = e;
|
|
187
|
+
}, []), Ee = y(null), F = y(null), I = o("dropdown"), De = k.id ?? `${I}-trigger`, Oe = `${I}-listbox`, ke = `${I}-label`, Ae = E != null && E !== !1, je = g((e) => `${I}-option-${e}`, [I]), L = n((e, t, n) => we(e, {
|
|
188
|
+
reason: t,
|
|
189
|
+
event: n
|
|
190
|
+
})), R = n((e, t, n = !1) => {
|
|
191
|
+
L(!1, e, t), n || Ce(null);
|
|
192
|
+
}), z = v(() => (Array.isArray(w) ? w : [w]).flatMap((e) => e).filter(Boolean), [w]), B = v(() => z.filter((e) => e.type?.displayName === "DropdownItem"), [z]), Me = v(() => {
|
|
179
193
|
let e = /* @__PURE__ */ new Map();
|
|
180
194
|
for (let t of B) e.set(t, ue(t));
|
|
181
195
|
return e;
|
|
182
|
-
}, [B]), V = g((e) =>
|
|
183
|
-
|
|
196
|
+
}, [B]), V = g((e) => Me.get(e) ?? ue(e), [Me]), Ne = C ? Se ?? "" : "", H = v(() => Ne ? B.filter((e) => V(e).toLowerCase().includes(Ne.toLowerCase())) : B, [
|
|
197
|
+
Ne,
|
|
184
198
|
B,
|
|
185
199
|
V
|
|
186
|
-
]), U = v(() => z.find((e) => e.type?.displayName === "DropdownUnselect"), [z]), W = v(() => z.find((e) => e.type?.displayName === "DropdownSelectAll"), [z]),
|
|
200
|
+
]), U = v(() => z.find((e) => e.type?.displayName === "DropdownUnselect"), [z]), W = v(() => z.find((e) => e.type?.displayName === "DropdownSelectAll"), [z]), Pe = v(() => z.find((e) => e.type?.displayName === "DropdownEmptyItem"), [z]), G = v(() => z.find((e) => e.type?.displayName === "DropdownDisplay"), [z]), K = v(() => !C || G ? "" : B.filter((e) => j.includes(e.props.value)).map((e) => V(e)).join(", "), [
|
|
187
201
|
C,
|
|
188
202
|
G,
|
|
189
203
|
B,
|
|
190
204
|
j,
|
|
191
205
|
V
|
|
192
|
-
]),
|
|
206
|
+
]), Fe = !!(W && S && H.length > j.length), Ie = !!(U && H.length > 0 && !Fe), q = v(() => {
|
|
193
207
|
let e = [];
|
|
194
|
-
|
|
208
|
+
Ie && U && e.push({
|
|
195
209
|
kind: "unselect",
|
|
196
210
|
element: U
|
|
197
|
-
}),
|
|
211
|
+
}), Fe && W && e.push({
|
|
198
212
|
kind: "selectAll",
|
|
199
213
|
element: W
|
|
200
214
|
});
|
|
@@ -204,15 +218,15 @@ function E(u, te) {
|
|
|
204
218
|
});
|
|
205
219
|
return e;
|
|
206
220
|
}, [
|
|
207
|
-
|
|
221
|
+
Ie,
|
|
208
222
|
U,
|
|
209
|
-
|
|
223
|
+
Fe,
|
|
210
224
|
W,
|
|
211
225
|
H
|
|
212
|
-
]), J = g((e) => fe(q[e]?.element), [q]),
|
|
226
|
+
]), J = g((e) => fe(q[e]?.element), [q]), Le = g((e) => {
|
|
213
227
|
let t = q[e];
|
|
214
228
|
return t ? V(t.element) : "";
|
|
215
|
-
}, [q, V]),
|
|
229
|
+
}, [q, V]), Re = v(() => {
|
|
216
230
|
if (C && (N || K !== "")) return null;
|
|
217
231
|
if (G) return typeof G.props.children == "function" ? G.props.children(j, N) : G.props.children;
|
|
218
232
|
let e = H.filter((e) => j.includes(e.props.value));
|
|
@@ -229,7 +243,7 @@ function E(u, te) {
|
|
|
229
243
|
K,
|
|
230
244
|
G,
|
|
231
245
|
V
|
|
232
|
-
]),
|
|
246
|
+
]), ze = g((e, ...t) => {
|
|
233
247
|
if (t.length === 0) A.current = void 0, M([], {
|
|
234
248
|
reason: "clear",
|
|
235
249
|
event: e
|
|
@@ -251,7 +265,7 @@ function E(u, te) {
|
|
|
251
265
|
event: e
|
|
252
266
|
});
|
|
253
267
|
}
|
|
254
|
-
e.stopPropagation(), S ? C && setTimeout(() =>
|
|
268
|
+
e.stopPropagation(), S ? C && setTimeout(() => F.current?.focus(), 0) : R("select", e);
|
|
255
269
|
}, [
|
|
256
270
|
S,
|
|
257
271
|
C,
|
|
@@ -260,55 +274,55 @@ function E(u, te) {
|
|
|
260
274
|
R
|
|
261
275
|
]), Y = n((e, t) => {
|
|
262
276
|
let n = q[e];
|
|
263
|
-
!n || J(e) || (n.kind === "unselect" ?
|
|
264
|
-
}),
|
|
277
|
+
!n || J(e) || (n.kind === "unselect" ? ze(t) : n.kind === "selectAll" ? ze(t, ...B) : ze(t, n.element));
|
|
278
|
+
}), Be = (e) => {
|
|
265
279
|
let t = e === "first" ? 1 : -1;
|
|
266
280
|
for (let n = e === "first" ? 0 : q.length - 1; n >= 0 && n < q.length; n += t) if (!J(n)) return n;
|
|
267
281
|
return -1;
|
|
268
282
|
}, X = (e) => {
|
|
269
283
|
let t = q.findIndex((e) => e.kind === "item" && j.includes(e.element.props.value));
|
|
270
|
-
return t !== -1 && !J(t) ? t : e === "none" ? -1 :
|
|
271
|
-
}, Z =
|
|
284
|
+
return t !== -1 && !J(t) ? t : e === "none" ? -1 : Be(e);
|
|
285
|
+
}, Z = a({
|
|
272
286
|
count: q.length,
|
|
273
287
|
focusItems: !1,
|
|
274
288
|
defaultActiveIndex: _ ? X("none") : -1,
|
|
275
289
|
isDisabled: J,
|
|
276
|
-
textOf: C ? void 0 :
|
|
290
|
+
textOf: C ? void 0 : Le,
|
|
277
291
|
onSelect: Y
|
|
278
|
-
}),
|
|
292
|
+
}), Ve = Z.setActiveIndex, He = g((e) => Ve(-1, {
|
|
279
293
|
reason: "programmatic",
|
|
280
294
|
event: e
|
|
281
|
-
}), [
|
|
282
|
-
|
|
295
|
+
}), [Ve]);
|
|
296
|
+
i({
|
|
283
297
|
enabled: N,
|
|
284
|
-
inside: [
|
|
285
|
-
onDismiss: (e) => R(e === "escape")
|
|
286
|
-
}),
|
|
298
|
+
inside: [P, Ee],
|
|
299
|
+
onDismiss: (e, t) => R(e, t, e === "escape")
|
|
300
|
+
}), r({
|
|
287
301
|
enabled: N,
|
|
288
|
-
returnTo: C ?
|
|
302
|
+
returnTo: C ? F : P
|
|
289
303
|
}), ne(() => {
|
|
290
|
-
N &&
|
|
304
|
+
N && F.current?.focus();
|
|
291
305
|
}, [N]);
|
|
292
|
-
let Q = Z.activeIndex,
|
|
306
|
+
let Q = Z.activeIndex, Ue = Z.activeItem;
|
|
293
307
|
e(() => {
|
|
294
|
-
!N || Q === -1 ||
|
|
308
|
+
!N || Q === -1 || Ue()?.scrollIntoView?.({ block: "nearest" });
|
|
295
309
|
}, [
|
|
296
310
|
N,
|
|
297
311
|
Q,
|
|
298
|
-
|
|
312
|
+
Ue
|
|
299
313
|
]);
|
|
300
314
|
let $ = (e, t) => {
|
|
301
|
-
|
|
315
|
+
L(!0, t.type === "keydown" ? "keyboard" : "trigger", t), Z.setActiveIndex(e, {
|
|
302
316
|
reason: "programmatic",
|
|
303
317
|
event: t
|
|
304
318
|
});
|
|
305
|
-
},
|
|
306
|
-
N ? R() : $(X("none"), e);
|
|
307
|
-
}), We = n((e) => {
|
|
308
|
-
N || $(X("none"), e);
|
|
319
|
+
}, We = n((e) => {
|
|
320
|
+
N ? R("trigger", e) : $(X("none"), e);
|
|
309
321
|
}), Ge = n((e) => {
|
|
310
|
-
|
|
311
|
-
}), Ke = (e) => {
|
|
322
|
+
N || $(X("none"), e);
|
|
323
|
+
}), Ke = n((e) => {
|
|
324
|
+
Ce(e), N || L(!0, "input"), He();
|
|
325
|
+
}), qe = (e) => {
|
|
312
326
|
let { key: t } = e;
|
|
313
327
|
if (C) {
|
|
314
328
|
if (t === "ArrowDown" || t === "ArrowUp") {
|
|
@@ -327,39 +341,39 @@ function E(u, te) {
|
|
|
327
341
|
return;
|
|
328
342
|
}
|
|
329
343
|
if (t === "Home" || t === "End") {
|
|
330
|
-
e.preventDefault(), $(
|
|
344
|
+
e.preventDefault(), $(Be(t === "Home" ? "first" : "last"), e);
|
|
331
345
|
return;
|
|
332
346
|
}
|
|
333
|
-
pe(e) && (
|
|
334
|
-
},
|
|
347
|
+
pe(e) && (L(!0, "input", e), Z.onKeyDown(e));
|
|
348
|
+
}, Je = n((e) => {
|
|
335
349
|
if (ve?.onKeyDown?.(e), !e.defaultPrevented) {
|
|
336
350
|
if (!N) {
|
|
337
|
-
|
|
351
|
+
qe(e);
|
|
338
352
|
return;
|
|
339
353
|
}
|
|
340
354
|
if (e.key === "Tab") {
|
|
341
|
-
!S && Z.activeIndex !== -1 && Y(Z.activeIndex, e), R();
|
|
355
|
+
!S && Z.activeIndex !== -1 && Y(Z.activeIndex, e), R("tab", e);
|
|
342
356
|
return;
|
|
343
357
|
}
|
|
344
358
|
if (e.altKey && e.key === "ArrowUp") {
|
|
345
|
-
e.preventDefault(), Z.activeIndex !== -1 && Y(Z.activeIndex, e), R();
|
|
359
|
+
e.preventDefault(), Z.activeIndex !== -1 && Y(Z.activeIndex, e), R("keyboard", e);
|
|
346
360
|
return;
|
|
347
361
|
}
|
|
348
362
|
if (C && me.has(e.key)) {
|
|
349
|
-
|
|
363
|
+
He(e);
|
|
350
364
|
return;
|
|
351
365
|
}
|
|
352
366
|
Z.onKeyDown(e);
|
|
353
367
|
}
|
|
354
|
-
}),
|
|
368
|
+
}), Ye = q.length > 0 || !!Pe, Xe = N && Q !== -1 && Ye ? je(Q) : void 0, Ze = Z.itemProps, Qe = v(() => ({
|
|
355
369
|
valueToUse: j,
|
|
356
370
|
multiple: S,
|
|
357
371
|
variant: k.variant,
|
|
358
372
|
showCheckbox: ce,
|
|
359
373
|
selectRow: Y,
|
|
360
|
-
optionId:
|
|
374
|
+
optionId: je,
|
|
361
375
|
activeIndex: Q,
|
|
362
|
-
rowRef: (e) =>
|
|
376
|
+
rowRef: (e) => Ze(e).ref,
|
|
363
377
|
isRowDisabled: J
|
|
364
378
|
}), [
|
|
365
379
|
j,
|
|
@@ -367,18 +381,18 @@ function E(u, te) {
|
|
|
367
381
|
k.variant,
|
|
368
382
|
ce,
|
|
369
383
|
Y,
|
|
370
|
-
|
|
384
|
+
je,
|
|
371
385
|
Q,
|
|
372
|
-
|
|
386
|
+
Ze,
|
|
373
387
|
J
|
|
374
|
-
]),
|
|
388
|
+
]), $e = {
|
|
375
389
|
"aria-expanded": N,
|
|
376
|
-
"aria-controls": N &&
|
|
377
|
-
"aria-activedescendant":
|
|
378
|
-
"aria-labelledby":
|
|
390
|
+
"aria-controls": N && Ye ? Oe : void 0,
|
|
391
|
+
"aria-activedescendant": Xe,
|
|
392
|
+
"aria-labelledby": Ae ? ke : void 0,
|
|
379
393
|
...ve,
|
|
380
|
-
onKeyDown:
|
|
381
|
-
},
|
|
394
|
+
onKeyDown: Je
|
|
395
|
+
}, et = j.map((e) => {
|
|
382
396
|
let t = JSON.stringify(e);
|
|
383
397
|
return /* @__PURE__ */ b(f, {
|
|
384
398
|
ref: te,
|
|
@@ -386,7 +400,7 @@ function E(u, te) {
|
|
|
386
400
|
type: "hidden",
|
|
387
401
|
value: t ?? ""
|
|
388
402
|
}, t);
|
|
389
|
-
}),
|
|
403
|
+
}), tt = !T && /* @__PURE__ */ b(l, {
|
|
390
404
|
component: "dropdown.icon",
|
|
391
405
|
...he,
|
|
392
406
|
children: /* @__PURE__ */ b(c, {
|
|
@@ -401,22 +415,22 @@ function E(u, te) {
|
|
|
401
415
|
d: "m1 1 4 4 4-4"
|
|
402
416
|
})
|
|
403
417
|
})
|
|
404
|
-
}),
|
|
418
|
+
}), nt = Ye && /* @__PURE__ */ b(d, {
|
|
405
419
|
present: N,
|
|
406
420
|
children: (e) => /* @__PURE__ */ b(se, {
|
|
407
421
|
presence: e,
|
|
408
422
|
rows: q,
|
|
409
|
-
emptyItem:
|
|
410
|
-
triggerRef:
|
|
411
|
-
popupRef:
|
|
412
|
-
listboxId:
|
|
413
|
-
labelledBy:
|
|
423
|
+
emptyItem: Pe,
|
|
424
|
+
triggerRef: P,
|
|
425
|
+
popupRef: Ee,
|
|
426
|
+
listboxId: Oe,
|
|
427
|
+
labelledBy: Ae ? ke : De,
|
|
414
428
|
itemsProps: O
|
|
415
429
|
})
|
|
416
|
-
}),
|
|
417
|
-
ref:
|
|
430
|
+
}), rt = C ? /* @__PURE__ */ x(t, {
|
|
431
|
+
ref: Te,
|
|
418
432
|
component: "dropdown",
|
|
419
|
-
props: { onClick:
|
|
433
|
+
props: { onClick: We },
|
|
420
434
|
position: "relative",
|
|
421
435
|
pe: T ? void 0 : 6,
|
|
422
436
|
minWidth: N ? 36 : void 0,
|
|
@@ -424,47 +438,47 @@ function E(u, te) {
|
|
|
424
438
|
...k,
|
|
425
439
|
id: void 0,
|
|
426
440
|
children: [
|
|
427
|
-
|
|
441
|
+
et,
|
|
428
442
|
/* @__PURE__ */ b(le, {
|
|
429
|
-
id:
|
|
443
|
+
id: De,
|
|
430
444
|
value: Se ?? K,
|
|
431
|
-
onValueChange:
|
|
445
|
+
onValueChange: Ke,
|
|
432
446
|
placeholder: N ? oe : void 0,
|
|
433
|
-
inputRef:
|
|
434
|
-
comboboxProps:
|
|
435
|
-
onOpen:
|
|
447
|
+
inputRef: F,
|
|
448
|
+
comboboxProps: $e,
|
|
449
|
+
onOpen: Ge
|
|
436
450
|
}),
|
|
437
|
-
|
|
451
|
+
Re ?? /* @__PURE__ */ b(t, {
|
|
438
452
|
tag: "span",
|
|
439
453
|
visibility: "hidden",
|
|
440
454
|
children: K || "\xA0"
|
|
441
455
|
}),
|
|
442
|
-
|
|
456
|
+
tt
|
|
443
457
|
]
|
|
444
458
|
}) : /* @__PURE__ */ x(ee, {
|
|
445
|
-
ref:
|
|
446
|
-
onClick:
|
|
459
|
+
ref: Te,
|
|
460
|
+
onClick: We,
|
|
447
461
|
component: "dropdown",
|
|
448
462
|
type: "button",
|
|
449
463
|
props: {
|
|
450
464
|
tabIndex: 0,
|
|
451
465
|
role: "combobox",
|
|
452
|
-
|
|
466
|
+
...$e
|
|
453
467
|
},
|
|
454
468
|
position: "relative",
|
|
455
469
|
pe: T ? void 0 : 6,
|
|
456
470
|
width: "fit-content",
|
|
457
471
|
...k,
|
|
458
|
-
id:
|
|
472
|
+
id: De,
|
|
459
473
|
children: [
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
474
|
+
et,
|
|
475
|
+
Re ?? "\xA0",
|
|
476
|
+
tt
|
|
463
477
|
]
|
|
464
478
|
});
|
|
465
479
|
return /* @__PURE__ */ b(ae.Provider, {
|
|
466
|
-
value:
|
|
467
|
-
children:
|
|
480
|
+
value: Qe,
|
|
481
|
+
children: Ae ? /* @__PURE__ */ x(l, {
|
|
468
482
|
d: "column",
|
|
469
483
|
gap: 1,
|
|
470
484
|
width: "fit-content",
|
|
@@ -472,13 +486,13 @@ function E(u, te) {
|
|
|
472
486
|
children: [
|
|
473
487
|
/* @__PURE__ */ b(t, {
|
|
474
488
|
tag: "span",
|
|
475
|
-
id:
|
|
489
|
+
id: ke,
|
|
476
490
|
children: E
|
|
477
491
|
}),
|
|
478
|
-
|
|
479
|
-
|
|
492
|
+
rt,
|
|
493
|
+
nt
|
|
480
494
|
]
|
|
481
|
-
}) : /* @__PURE__ */ x(ie, { children: [
|
|
495
|
+
}) : /* @__PURE__ */ x(ie, { children: [rt, nt] })
|
|
482
496
|
});
|
|
483
497
|
}
|
|
484
498
|
function D(e) {
|
package/components/form.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../box.cjs");let
|
|
1
|
+
"use client";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require("../box.cjs"),t=require("../reporting.cjs");let n=require("react"),r=require("react/jsx-runtime");var i;(function(e){function t(e){let t=Array.from(e.elements).reduce((e,t)=>{let n=t.name;return n?(e[n]||(e[n]=[]),e[n].push(t),e):e},{});return Object.entries(t).reduce((e,[t,r])=>{if(r.length===1){let i=r[0];n(e,t,i.type===`checkbox`||i.type===`radio`?i.checked:i.value)}else n(e,t,r.reduce((e,t)=>(t.type===`checkbox`||t.type===`radio`?t.checked&&e.push(t.value):e.push(t.value),e),[]));return e},{})}e.getFormEntries=t;function n(e,t,n){if(t.includes(`.`)){let r=t.split(`.`),i=e;r.forEach((e,t)=>{if(r.length>t+1){let t=e.match(/^(.+)\[(\d)\]$/);if(t){let[,e,n]=t;i[e]=i[e]||[],i[e][n]=i[e][n]||{},i=i[e][n]}else i[e]=i[e]||{},i=i[e]}else i[e]=n})}else e[t]=n}})(i||={});var a=i;function o(i){let{onSubmit:o,props:s,...c}=i,l=(0,n.useRef)(null),u=t.i(`form`),d=(0,n.useCallback)(e=>{e.preventDefault();let t=a.getFormEntries(l.current);o(t,e),u(`submit`,Object.keys(t),{reason:`submit`,event:e})},[o,u]),f={...s,onSubmit:d,ref:l};return(0,r.jsx)(e.default,{tag:`form`,...c,props:f})}o.displayName=`Form`,exports.default=o;
|