@mortenbrudvik/waveui 0.12.0 → 0.14.0
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/README.md +362 -60
- package/dist/components/data-display/Avatar.cjs +1 -1
- package/dist/components/data-display/Avatar.cjs.map +1 -1
- package/dist/components/data-display/Avatar.colors.cjs +2 -0
- package/dist/components/data-display/Avatar.colors.cjs.map +1 -0
- package/dist/components/data-display/Avatar.colors.mjs +45 -0
- package/dist/components/data-display/Avatar.colors.mjs.map +1 -0
- package/dist/components/data-display/Avatar.context.cjs +1 -1
- package/dist/components/data-display/Avatar.context.cjs.map +1 -1
- package/dist/components/data-display/Avatar.context.mjs +4 -2
- package/dist/components/data-display/Avatar.context.mjs.map +1 -1
- package/dist/components/data-display/Avatar.mjs +103 -96
- package/dist/components/data-display/Avatar.mjs.map +1 -1
- package/dist/components/data-display/Avatar.sizes.cjs +2 -0
- package/dist/components/data-display/Avatar.sizes.cjs.map +1 -0
- package/dist/components/data-display/Avatar.sizes.mjs +41 -0
- package/dist/components/data-display/Avatar.sizes.mjs.map +1 -0
- package/dist/components/data-display/AvatarGroup.cjs +1 -1
- package/dist/components/data-display/AvatarGroup.cjs.map +1 -1
- package/dist/components/data-display/AvatarGroup.context.cjs +2 -0
- package/dist/components/data-display/AvatarGroup.context.cjs.map +1 -0
- package/dist/components/data-display/AvatarGroup.context.mjs +9 -0
- package/dist/components/data-display/AvatarGroup.context.mjs.map +1 -0
- package/dist/components/data-display/AvatarGroup.mjs +65 -122
- package/dist/components/data-display/AvatarGroup.mjs.map +1 -1
- package/dist/components/data-display/AvatarGroup.partition.cjs +2 -0
- package/dist/components/data-display/AvatarGroup.partition.cjs.map +1 -0
- package/dist/components/data-display/AvatarGroup.partition.mjs +14 -0
- package/dist/components/data-display/AvatarGroup.partition.mjs.map +1 -0
- package/dist/components/data-display/AvatarGroup.parts.cjs +2 -0
- package/dist/components/data-display/AvatarGroup.parts.cjs.map +1 -0
- package/dist/components/data-display/AvatarGroup.parts.mjs +178 -0
- package/dist/components/data-display/AvatarGroup.parts.mjs.map +1 -0
- package/dist/components/data-display/InteractionTag.cjs +1 -1
- package/dist/components/data-display/InteractionTag.cjs.map +1 -1
- package/dist/components/data-display/InteractionTag.mjs +36 -33
- package/dist/components/data-display/InteractionTag.mjs.map +1 -1
- package/dist/components/data-display/List.cjs +1 -1
- package/dist/components/data-display/List.cjs.map +1 -1
- package/dist/components/data-display/List.mjs +245 -195
- package/dist/components/data-display/List.mjs.map +1 -1
- package/dist/components/data-display/List.registry.cjs.map +1 -1
- package/dist/components/data-display/List.registry.mjs.map +1 -1
- package/dist/components/data-display/Persona.cjs +1 -1
- package/dist/components/data-display/Persona.cjs.map +1 -1
- package/dist/components/data-display/Persona.mjs +96 -37
- package/dist/components/data-display/Persona.mjs.map +1 -1
- package/dist/components/data-display/PresenceBadge.cjs +1 -1
- package/dist/components/data-display/PresenceBadge.cjs.map +1 -1
- package/dist/components/data-display/PresenceBadge.mjs +42 -28
- package/dist/components/data-display/PresenceBadge.mjs.map +1 -1
- package/dist/components/data-display/Tag.cjs +1 -1
- package/dist/components/data-display/Tag.cjs.map +1 -1
- package/dist/components/data-display/Tag.mjs +111 -108
- package/dist/components/data-display/Tag.mjs.map +1 -1
- package/dist/components/layout/Card.cjs +1 -1
- package/dist/components/layout/Card.cjs.map +1 -1
- package/dist/components/layout/Card.context.cjs +2 -0
- package/dist/components/layout/Card.context.cjs.map +1 -0
- package/dist/components/layout/Card.context.mjs +14 -0
- package/dist/components/layout/Card.context.mjs.map +1 -0
- package/dist/components/layout/Card.mjs +138 -92
- package/dist/components/layout/Card.mjs.map +1 -1
- package/dist/components/layout/Card.preview.cjs +2 -0
- package/dist/components/layout/Card.preview.cjs.map +1 -0
- package/dist/components/layout/Card.preview.mjs +22 -0
- package/dist/components/layout/Card.preview.mjs.map +1 -0
- package/dist/components/layout/Carousel.button.cjs +2 -0
- package/dist/components/layout/Carousel.button.cjs.map +1 -0
- package/dist/components/layout/Carousel.button.mjs +34 -0
- package/dist/components/layout/Carousel.button.mjs.map +1 -0
- package/dist/components/layout/Carousel.cjs +1 -1
- package/dist/components/layout/Carousel.cjs.map +1 -1
- package/dist/components/layout/Carousel.context.cjs +2 -0
- package/dist/components/layout/Carousel.context.cjs.map +1 -0
- package/dist/components/layout/Carousel.context.mjs +24 -0
- package/dist/components/layout/Carousel.context.mjs.map +1 -0
- package/dist/components/layout/Carousel.drag.cjs +2 -0
- package/dist/components/layout/Carousel.drag.cjs.map +1 -0
- package/dist/components/layout/Carousel.drag.mjs +79 -0
- package/dist/components/layout/Carousel.drag.mjs.map +1 -0
- package/dist/components/layout/Carousel.groups.cjs +2 -0
- package/dist/components/layout/Carousel.groups.cjs.map +1 -0
- package/dist/components/layout/Carousel.groups.mjs +23 -0
- package/dist/components/layout/Carousel.groups.mjs.map +1 -0
- package/dist/components/layout/Carousel.mjs +288 -150
- package/dist/components/layout/Carousel.mjs.map +1 -1
- package/dist/components/layout/Carousel.styles.cjs +2 -0
- package/dist/components/layout/Carousel.styles.cjs.map +1 -0
- package/dist/components/layout/Carousel.styles.mjs +30 -0
- package/dist/components/layout/Carousel.styles.mjs.map +1 -0
- package/dist/components/layout/Overflow.cjs +1 -1
- package/dist/components/layout/Overflow.cjs.map +1 -1
- package/dist/components/layout/Overflow.mjs +240 -192
- package/dist/components/layout/Overflow.mjs.map +1 -1
- package/dist/components/layout/Overflow.store.cjs +2 -0
- package/dist/components/layout/Overflow.store.cjs.map +1 -0
- package/dist/components/layout/Overflow.store.mjs +209 -0
- package/dist/components/layout/Overflow.store.mjs.map +1 -0
- package/dist/components/layout/TabList.cjs +1 -1
- package/dist/components/layout/TabList.cjs.map +1 -1
- package/dist/components/layout/TabList.mjs +163 -124
- package/dist/components/layout/TabList.mjs.map +1 -1
- package/dist/components/navigation/Breadcrumb.cjs +1 -1
- package/dist/components/navigation/Breadcrumb.cjs.map +1 -1
- package/dist/components/navigation/Breadcrumb.mjs +239 -84
- package/dist/components/navigation/Breadcrumb.mjs.map +1 -1
- package/dist/components/overlays/Dialog.slots.cjs +1 -1
- package/dist/components/overlays/Dialog.slots.cjs.map +1 -1
- package/dist/components/overlays/Dialog.slots.mjs +19 -15
- package/dist/components/overlays/Dialog.slots.mjs.map +1 -1
- package/dist/components/overlays/TeachingPopover.cjs +1 -1
- package/dist/components/overlays/TeachingPopover.cjs.map +1 -1
- package/dist/components/overlays/TeachingPopover.context.cjs +2 -0
- package/dist/components/overlays/TeachingPopover.context.cjs.map +1 -0
- package/dist/components/overlays/TeachingPopover.context.mjs +51 -0
- package/dist/components/overlays/TeachingPopover.context.mjs.map +1 -0
- package/dist/components/overlays/TeachingPopover.mjs +15 -185
- package/dist/components/overlays/TeachingPopover.mjs.map +1 -1
- package/dist/components/overlays/TeachingPopover.parts.cjs +2 -0
- package/dist/components/overlays/TeachingPopover.parts.cjs.map +1 -0
- package/dist/components/overlays/TeachingPopover.parts.mjs +398 -0
- package/dist/components/overlays/TeachingPopover.parts.mjs.map +1 -0
- package/dist/components/overlays/TeachingPopover.root.cjs +2 -0
- package/dist/components/overlays/TeachingPopover.root.cjs.map +1 -0
- package/dist/components/overlays/TeachingPopover.root.mjs +150 -0
- package/dist/components/overlays/TeachingPopover.root.mjs.map +1 -0
- package/dist/components/overlays/TeachingPopover.stack.cjs +2 -0
- package/dist/components/overlays/TeachingPopover.stack.cjs.map +1 -0
- package/dist/components/overlays/TeachingPopover.stack.mjs +86 -0
- package/dist/components/overlays/TeachingPopover.stack.mjs.map +1 -0
- package/dist/components/table/DataGrid.cjs +1 -1
- package/dist/components/table/DataGrid.cjs.map +1 -1
- package/dist/components/table/DataGrid.mjs +540 -311
- package/dist/components/table/DataGrid.mjs.map +1 -1
- package/dist/components/table/Table.cjs +1 -1
- package/dist/components/table/Table.cjs.map +1 -1
- package/dist/components/table/Table.mjs +183 -60
- package/dist/components/table/Table.mjs.map +1 -1
- package/dist/components/table/Table.shared.cjs +2 -0
- package/dist/components/table/Table.shared.cjs.map +1 -0
- package/dist/components/table/Table.shared.mjs +65 -0
- package/dist/components/table/Table.shared.mjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +2299 -213
- package/dist/index.d.ts +2299 -213
- package/dist/index.mjs +135 -127
- package/dist/lib/breadcrumb.cjs +2 -0
- package/dist/lib/breadcrumb.cjs.map +1 -0
- package/dist/lib/breadcrumb.mjs +26 -0
- package/dist/lib/breadcrumb.mjs.map +1 -0
- package/dist/lib/classNames.cjs +1 -1
- package/dist/lib/classNames.cjs.map +1 -1
- package/dist/lib/classNames.mjs +143 -95
- package/dist/lib/classNames.mjs.map +1 -1
- package/dist/lib/events.cjs +1 -1
- package/dist/lib/events.cjs.map +1 -1
- package/dist/lib/events.mjs +35 -8
- package/dist/lib/events.mjs.map +1 -1
- package/dist/lib/icons.cjs +1 -1
- package/dist/lib/icons.cjs.map +1 -1
- package/dist/lib/icons.mjs +34 -20
- package/dist/lib/icons.mjs.map +1 -1
- package/dist/lib/initials.cjs +2 -0
- package/dist/lib/initials.cjs.map +1 -0
- package/dist/lib/initials.mjs +21 -0
- package/dist/lib/initials.mjs.map +1 -0
- package/dist/lib/table.cjs +2 -0
- package/dist/lib/table.cjs.map +1 -0
- package/dist/lib/table.mjs +16 -0
- package/dist/lib/table.mjs.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +1 -1
- package/src/styles/tokens.css +102 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use client";const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/cn.cjs"),n=require("../../lib/children.cjs"),r=require("../../lib/dev.cjs"),i=require("../../lib/composeEventHandlers.cjs"),a=require("../../lib/classNames.cjs"),o=require("../../hooks/useControllable.cjs"),s=require("../../hooks/useId.cjs"),c=require("../../hooks/useMergedRefs.cjs"),l=require("./useGridNavigation.cjs"),u=require("../../lib/styles.cjs");let d=require("react");d=e.__toESM(d,1);let f=require("react/jsx-runtime");var p=`Select all rows`,m=`Selection`;function h(e,t=!1){let n=new Set(e),r=new Map,i=0,a=`none`,o=t,s,c=new Set,l=new Set,u=e=>{for(let t of Array.from(e))t()},d=()=>{if(s!==void 0)return s;let e=null;for(let t of n){if(r.has(t)){e=t;break}e??=t}return s=e,e},f=e=>{if(n.size<2||!n.has(e))return;let t=s;s=void 0,o&&d()!==t&&u(c)},p=()=>{let e=i===0?`none`:i===r.size?`all`:`some`;e!==a&&(a=e,u(l))},m=e=>t=>(e.add(t),()=>{e.delete(t)});return{subscribe:m(c),subscribeSelectAll:m(l),register(e){let t=r.get(e)??0;r.set(e,t+1),t===0&&n.has(e)&&(i+=1),p(),t===0&&f(e);let a=!1;return()=>{if(a)return;a=!0;let t=(r.get(e)??0)-1;if(t>0){r.set(e,t);return}r.delete(e),n.has(e)&&--i,p(),f(e)}},setSelected(e){let t=new Set(e);if(!(t.size===n.size&&e.every(e=>n.has(e)))){n=t,s=void 0,i=0;for(let e of t)r.has(e)&&(i+=1);u(c),p()}},setSingleMode(e){o=e},isSelected(e,t=!1){return t?d()===e:n.has(e)},countRegistrations(e){return r.get(e)??0},getSelectAllState(){return a},getRegistered(){return Array.from(r.keys())},prune(e){return e.filter(e=>r.has(e))}}}function g(){let e=new Map,t=new Set,n=null,r=()=>{let r=null,i=null;for(let[t,a]of e){let o=a();if(!o){if(n!==null&&e.has(n))return;continue}(!i||o.compareDocumentPosition(i)&Node.DOCUMENT_POSITION_FOLLOWING)&&(r=t,i=o)}if(r===null&&(r=e.keys().next().value??null),r!==n){n=r;for(let e of Array.from(t))e()}};return{subscribe(e){return t.add(e),()=>{t.delete(e)}},register(t,n){return e.set(t,n),r(),()=>{e.delete(t),r()}},getFirst:()=>n,refresh:r}}var _=d.createContext(null),v=d.createContext(null),y=d.createContext(`body`),b=d.createContext(null),x=d.createContext(!0),S={selectionMode:`none`,store:h([]),toggleRow:()=>{},toggleAll:()=>{},radioName:``,selectAllLabel:p,selectionHeaderLabel:m},C={sort:null,requestSort:()=>{}};function w(e){return d.useContext(_)||(r.reportMissingContext(e,`DataGrid`),S)}function T(e){return d.useContext(v)||(r.reportMissingContext(e,`DataGrid`),C)}var E=[];function D(e){return e===void 0?void 0:Array.from(e)}function O(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function k({key:e,node:t}){return(0,f.jsx)(d.Fragment,{children:t},e)}function ee(e){r.warnOnce(`DataGrid:duplicate-rowId:${e}`,`DataGrid: several rows share the rowId "${e}". Row ids must be unique within a DataGrid; rows with the same rowId are selected and deselected together.`)}var A=`px-4 py-3 border-b border-border`,j=`w-10 px-3 py-3 border-b border-border`,M=`accent-primary cursor-pointer`,N=e=>{let{sort:u,defaultSort:g,sortColumn:y,defaultSortColumn:b,sortDirection:x,defaultSortDirection:S,onSortChange:C,selectionMode:w=`none`,selectedItems:T,defaultSelectedItems:ee,onSelectedItemsChange:A,selectedKeys:j,defaultSelectedKeys:M,onSelectionChange:N,labels:P,columns:F,containerProps:I,children:L,className:z,onKeyDown:V,onFocus:H,onBlur:U,ref:te,...ne}=e,W=u!==void 0||g!==void 0,[re,ie]=d.useState(W);W&&!re&&ie(!0);let ae=re||W,oe=y!==void 0||x!==void 0;y!==void 0&&r.warnDeprecated(`DataGrid`,`sortColumn`,`sort`),x!==void 0&&r.warnDeprecated(`DataGrid`,`sortDirection`,`sort`),b!==void 0&&r.warnDeprecated(`DataGrid`,`defaultSortColumn`,`defaultSort`),S!==void 0&&r.warnDeprecated(`DataGrid`,`defaultSortDirection`,`defaultSort`);let se=W&&(oe||b!==void 0||S!==void 0);d.useEffect(()=>{se&&r.warnOnce(`DataGrid:mixed-sort`,"DataGrid: do not mix `sort`/`defaultSort` with the deprecated `sortColumn`/`sortDirection`/`defaultSortColumn`/`defaultSortDirection`. `sort`/`defaultSort` win.")},[se]),d.useEffect(()=>{W||(y!==void 0&&x===void 0?r.warnOnce(`DataGrid:sortColumn-without-sortDirection`,"DataGrid: `sortColumn` is controlled but `sortDirection` is not (mixed control). The direction is kept internally and toggles on repeated clicks, as in 0.4. Pass `sort` (`{ columnId, direction }`) to control both."):x!==void 0&&y===void 0&&r.warnOnce(`DataGrid:sortDirection-without-sortColumn`,"DataGrid: `sortDirection` is controlled but `sortColumn` is not (mixed control). The column is kept internally and follows the clicked header, as in 0.4. Pass `sort` (`{ columnId, direction }`) to control both."))},[W,y,x]);let[G,ce]=d.useState(()=>({column:b??``,direction:S??`ascending`})),le=d.useMemo(()=>{if(y===void 0&&x===void 0)return;let e=y??G.column;return e===``?null:{columnId:e,direction:x??G.direction}},[y,x,G]),ue=d.useMemo(()=>b?{columnId:b,direction:S??`ascending`}:null,[b,S]),de=W?u:le,fe=g===void 0?ue:g,[pe,me]=o.useControllable(de,fe,e=>{e&&(W||ce(t=>t.column===e.columnId&&t.direction===e.direction?t:{column:e.columnId,direction:e.direction}),C&&(ae?C(e):C(e.columnId,e.direction)))}),he=d.useCallback(e=>{me(t=>({columnId:e,direction:t?.columnId===e&&t.direction===`ascending`?`descending`:`ascending`}))},[me]),ge=d.useMemo(()=>({sort:pe,requestSort:he}),[pe,he]);N!==void 0&&r.warnDeprecated(`DataGrid`,`onSelectionChange`,`onSelectedItemsChange`);let _e=d.useMemo(()=>D(j),[j]),ve=d.useMemo(()=>D(M),[M]),ye=r.resolveDeprecatedProp(`DataGrid`,T,_e,`selectedKeys`,`selectedItems`),be=r.resolveDeprecatedProp(`DataGrid`,ee,ve,`defaultSelectedKeys`,`defaultSelectedItems`)??E,[K,q]=o.useControllable(ye,be,e=>{A?.([...e]),N?.(new Set(e))}),J=w===`single`,[Y]=d.useState(()=>h(K,J));d.useLayoutEffect(()=>{Y.setSelected(K)},[Y,K]),d.useLayoutEffect(()=>{Y.setSingleMode(J)},[Y,J]);let xe=d.useCallback(e=>{q(t=>{let n=Y.prune(t),r;return r=J?n[0]===e?[]:[e]:n.includes(e)?n.filter(t=>t!==e):[...n,e],O(r,t)?t:r})},[J,q,Y]),X=K.length;d.useEffect(()=>{J&&X>1&&r.warnOnce(`DataGrid:single-several-selected`,`DataGrid: a single-selection grid (selectionMode "single") has ${X} selected row ids; only the first one that is rendered is selected. Pass at most one id in \`selectedItems\`/\`defaultSelectedItems\`, or use selectionMode="multiple".`)},[J,X]);let Se=d.useCallback(()=>{q(e=>{let t=Y.prune(e),n=Y.getRegistered(),r=n.length>0&&n.every(e=>t.includes(e))?[]:n;return O(r,e)?e:r})},[q,Y]),Ce=s.useId(`wave-datagrid-selection`),we=P?.selectAll??p,Te=P?.selectionHeader??m,Ee=d.useMemo(()=>({selectionMode:w,store:Y,toggleRow:xe,toggleAll:Se,radioName:Ce,selectAllLabel:we,selectionHeaderLabel:Te}),[w,Y,xe,Se,Ce,we,Te]),{gridRef:De,gridProps:Z}=l.useGridNavigation(),Oe=c.useMergedRefs(te,De),ke=L,Q=F?n.flattenChildren(L):[];if(F&&!Q.some(({node:e})=>n.isElementOfType(e,R))){let e=({node:e})=>n.isElementOfType(e,`caption`);ke=(0,f.jsxs)(f.Fragment,{children:[Q.filter(e).map(k),(0,f.jsx)(R,{children:(0,f.jsx)(`tr`,{children:F.map(e=>(0,f.jsx)(B,{columnId:e.id,sortable:e.sortable,children:e.label},e.id))})}),Q.filter(t=>!e(t)).map(k)]})}let{className:Ae,"aria-label":je,"aria-labelledby":Me,...Ne}=I??{},$=Ne.role!==void 0,Pe=!$&&(je!==void 0||Me!==void 0);return d.useEffect(()=>{Pe&&r.warnOnce(`DataGrid:container-name-without-role`,'DataGrid: `containerProps["aria-label"]`/`["aria-labelledby"]` is ignored because the wrapper has no role. Name the grid itself (`aria-label` on DataGrid), or pass a `role` (e.g. "region") in `containerProps` too.')},[Pe]),(0,f.jsx)(_.Provider,{value:Ee,children:(0,f.jsx)(v.Provider,{value:ge,children:(0,f.jsx)(`div`,{...Ne,"aria-label":$?je:void 0,"aria-labelledby":$?Me:void 0,className:t.cn(a.dataGridClassNames.container,`overflow-x-auto rounded-md border border-border`,Ae),children:(0,f.jsx)(`table`,{ref:Oe,role:`grid`,"aria-multiselectable":w===`multiple`||void 0,className:t.cn(a.dataGridClassNames.root,`w-full border-separate border-spacing-0`,z),...ne,onKeyDown:i.composeEventHandlers(V,Z.onKeyDown),onFocus:i.composeEventHandlers(H,Z.onFocus,{checkDefaultPrevented:!1}),onBlur:i.composeEventHandlers(U,Z.onBlur,{checkDefaultPrevented:!1}),children:ke})})})})};N.displayName=`DataGrid`;function P({selectionMode:e,ref:n}){let{store:r,toggleAll:i,selectAllLabel:o,selectionHeaderLabel:s}=w(`DataGrid.Header`),c=d.useSyncExternalStore(r.subscribeSelectAll,r.getSelectAllState,r.getSelectAllState),l=d.useRef(null),[p,m]=d.useState(0);return d.useLayoutEffect(()=>{l.current&&(l.current.indeterminate=c===`some`)},[c,p]),(0,f.jsx)(`th`,{ref:n,scope:`col`,"data-selection-cell":``,className:t.cn(a.dataGridHeaderClassNames.selectionCell,j,`text-start`,u.focusRingInset),children:e===`multiple`?(0,f.jsx)(`input`,{ref:l,type:`checkbox`,"aria-label":o,checked:c===`all`,onChange:()=>{m(e=>e+1),i()},className:t.cn(a.dataGridHeaderClassNames.selectAllCheckbox,M,u.focusRingInset)}):(0,f.jsx)(`span`,{className:`sr-only`,children:s})})}var F={subscribe:()=>()=>{},register:()=>()=>{},getFirst:()=>null,refresh:()=>{}};function I({selectionMode:e,initialFirst:n}){let r=d.useContext(b)??F,[i]=d.useState(()=>({})),o=d.useRef(null),s=d.useCallback(()=>{let e=r.getFirst();return e===null?n:e===i},[r,i,n]),c=d.useCallback(()=>n,[n]),l=d.useSyncExternalStore(r.subscribe,s,c);return d.useLayoutEffect(()=>r.register(i,()=>o.current),[r,i]),l?(0,f.jsx)(P,{ref:o,selectionMode:e}):(0,f.jsx)(`td`,{ref:o,"data-selection-cell":``,className:t.cn(a.dataGridHeaderClassNames.selectionCell,j,u.focusRingInset)})}function L(e,t){let r=!0,i=e=>d.Children.map(e,e=>{if(n.isElementOfType(e,d.Fragment))return d.cloneElement(e,void 0,i(e.props.children));if(!d.isValidElement(e))return e;let a=r;if(r=!1,n.isElementOfType(e,`tr`)){let n=t===`none`?null:(0,f.jsx)(I,{selectionMode:t,initialFirst:a});return d.cloneElement(e,void 0,n,e.props.children)}return(0,f.jsx)(x.Provider,{value:a,children:e})});return i(e)}var R=({children:e,className:n,ref:i,...o})=>{let{selectionMode:s}=w(`DataGrid.Header`),[l,u]=d.useState(null),p=c.useMergedRefs(i,u),[m]=d.useState(g),h=L(e,s);return d.useLayoutEffect(()=>{m.refresh()}),d.useEffect(()=>{r.isDev&&l&&s!==`none`&&Array.from(l.rows).some(e=>e.cells.length>0&&!e.cells[0].hasAttribute(`data-selection-cell`))&&r.warnOnce(`DataGrid.Header:missing-selection-cell`,"DataGrid.Header: a header row has no selection column header cell, so the header has one column fewer than the selectable rows. Render header rows as `<tr>` children of DataGrid.Header (a Fragment is fine), or use `DataGrid.Row` for a header row that another component renders.")}),(0,f.jsx)(y.Provider,{value:`header`,children:(0,f.jsx)(b.Provider,{value:m,children:(0,f.jsx)(`thead`,{ref:p,className:t.cn(a.dataGridHeaderClassNames.root,`bg-card`,n),...o,children:h})})})};R.displayName=`DataGridHeader`;var z=e=>(0,f.jsx)(`svg`,{className:t.cn(a.dataGridHeaderCellClassNames.sortIcon,`h-3 w-3 shrink-0`),viewBox:`0 0 12 12`,fill:`currentColor`,"aria-hidden":`true`,focusable:`false`,children:e===`ascending`?(0,f.jsx)(`path`,{d:`M6 2L10 8H2L6 2Z`}):(0,f.jsx)(`path`,{d:`M6 10L2 4H10L6 10Z`})}),B=({columnId:e,sortable:n=!1,children:o,className:s,onClick:c,ref:l,...p})=>{let{sort:m,requestSort:h}=T(`DataGrid.HeaderCell`),g=n&&e?e:void 0,_=g!==void 0&&m?.columnId===g?m.direction:null,v=e=>{let t=e.currentTarget.firstElementChild;g!==void 0&&t?.localName===`button`&&t.contains(e.target)&&h(g)};return d.useEffect(()=>{n&&!e&&r.warnOnce(`DataGrid.HeaderCell:sortable-without-columnId`,"DataGrid.HeaderCell: `sortable` needs a `columnId`; the header is rendered as not sortable.")},[n,e]),(0,f.jsx)(`th`,{ref:l,scope:`col`,"aria-sort":g===void 0?void 0:_??`none`,className:t.cn(a.dataGridHeaderCellClassNames.root,A,`text-start align-middle font-semibold text-caption-1 uppercase tracking-wider`,u.focusRingInset,g!==void 0&&`p-0 hover:bg-subtle-hover`,s),...p,onClick:g===void 0?c:i.composeEventHandlers(c,v),children:g===void 0?(0,f.jsx)(`span`,{className:`inline-flex items-center gap-1`,children:o}):(0,f.jsxs)(`button`,{type:`button`,className:t.cn(a.dataGridHeaderCellClassNames.button,`inline-flex w-full cursor-pointer select-none items-center gap-1 border-0 bg-transparent px-4 py-3 text-start text-inherit [font:inherit] uppercase tracking-wider`,u.focusRingInset),children:[o,_&&z(_)]})})};B.displayName=`DataGridHeaderCell`;var V=({children:e,className:n,ref:r,...i})=>(0,f.jsx)(y.Provider,{value:`body`,children:(0,f.jsx)(`tbody`,{ref:r,className:t.cn(a.dataGridBodyClassNames.root,n),...i,children:e})});V.displayName=`DataGridBody`;var H=({rowId:e,selectionLabel:o,children:c,className:l,onKeyDown:p,ref:m,...h})=>{let{selectionMode:g,store:_,toggleRow:v,radioName:b}=w(`DataGrid.Row`),S=d.useContext(y),C=d.useContext(x),T=S===`header`,E=g!==`none`&&!T,D=s.useId(`wave-datagrid-row-label`),O=g===`single`,A=d.useCallback(()=>e!==void 0&&_.isSelected(e,O),[e,_,O]),N=d.useSyncExternalStore(_.subscribe,A,A);d.useLayoutEffect(()=>{if(e===void 0||T)return;let t=_.register(e);return r.isDev&&_.countRegistrations(e)>1&&ee(e),t},[_,e,T]),d.useEffect(()=>{E&&e===void 0&&r.warnOnce(`DataGrid.Row:missing-rowId`,"DataGrid.Row: a selectable grid needs a `rowId` on every row; this row has no selection control.")},[E,e]);let P=E&&e!==void 0&&o===void 0,F=t=>{if(!E||e===void 0||t.key!==` `)return;let n=t.target;(n===t.currentTarget||n.parentElement===t.currentTarget)&&(t.preventDefault(),v(e))},L=n.flattenChildren(c),R,z=-1;if(P){let e=L.findIndex(({node:e})=>n.isElementOfType(e,U,`td`,`th`));if(e>=0){let t=L[e].node;R=t.props.id??D,t.props.id===void 0&&(z=e)}}let B=L.map(({key:e,node:t},n)=>k({key:e,node:n===z?d.cloneElement(t,{id:D}):t})),V=P&&R===void 0;d.useEffect(()=>{V&&r.warnOnce(`DataGrid.Row:selection-label`,'DataGrid.Row: no child is a `DataGrid.Cell`, `<td>` or `<th>` element, so the row selection control is named "Select row". Pass `selectionLabel` (a cell rendered by another component is not seen).')},[V]);let H=null;return T&&g!==`none`?H=(0,f.jsx)(I,{selectionMode:g,initialFirst:C}):E&&(H=(0,f.jsx)(`td`,{role:`gridcell`,"data-selection-cell":``,className:t.cn(a.dataGridRowClassNames.selectionCell,j,u.focusRingInset),children:e!==void 0&&(0,f.jsx)(`input`,{type:g===`multiple`?`checkbox`:`radio`,name:g===`single`?b:void 0,form:g===`single`?``:void 0,checked:N,onChange:()=>v(e),"aria-label":o??(R?void 0:`Select row`),"aria-labelledby":o===void 0?R:void 0,className:t.cn(a.dataGridRowClassNames.selectionControl,M,`focus-visible:outline-2 focus-visible:-outline-offset-2 focus-visible:outline-ring`)})})),(0,f.jsxs)(`tr`,{ref:m,className:t.cn(a.dataGridRowClassNames.root,!T&&`hover:bg-subtle-hover data-[selected]:bg-selected transition-colors motion-reduce:transition-none`,E&&N&&u.forcedColors.selectedContainer,l),"aria-selected":E?N:void 0,"data-selected":E&&N?``:void 0,...h,onKeyDown:i.composeEventHandlers(p,F),children:[H,B]})};H.displayName=`DataGridRow`;var U=({children:e,className:n,ref:r,...i})=>(0,f.jsx)(`td`,{ref:r,role:`gridcell`,className:t.cn(a.dataGridCellClassNames.root,A,`text-body-1`,u.focusRingInset,n),...i,children:e});U.displayName=`DataGridCell`;var te=Object.assign(N,{Header:R,HeaderCell:B,Body:V,Row:H,Cell:U});exports.DataGrid=te,exports.DataGridBody=V,exports.DataGridCell=U,exports.DataGridHeader=R,exports.DataGridHeaderCell=B,exports.DataGridRow=H,exports.createSelectionStore=h;
|
|
1
|
+
"use client";const e=require("../../_virtual/_rolldown/runtime.cjs"),t=require("../../lib/cn.cjs"),n=require("../../lib/children.cjs"),r=require("../../lib/dev.cjs"),i=require("../../lib/composeEventHandlers.cjs"),a=require("../../lib/classNames.cjs"),o=require("../../hooks/useControllable.cjs"),s=require("../../hooks/useId.cjs"),c=require("../../hooks/useMergedRefs.cjs"),l=require("./useGridNavigation.cjs"),u=require("../../lib/styles.cjs"),d=require("../../lib/events.cjs"),f=require("./Table.shared.cjs");let p=require("react");p=e.__toESM(p,1);let m=require("react/jsx-runtime");var h=`Select all rows`,g=`Selection`;function _(e,t=!1){let n=new Set(e),r=new Map,i=new Map,a=0,o=0,s=`none`,c=t,l,u=new Set,d=new Set,f=e=>{for(let t of Array.from(e))t()},p=()=>{if(l!==void 0)return l;let e=null;for(let t of n){if(r.has(t)){e=t;break}e??=t}return l=e,e},m=e=>{if(n.size<2||!n.has(e))return;let t=l;l=void 0,c&&p()!==t&&f(u)},h=()=>{let e=o===0?`none`:o===a?`all`:`some`;e!==s&&(s=e,f(d))},g=e=>r.has(e)&&!i.has(e),_=(e,t)=>{let r=g(e);t();let i=g(e);if(r===i)return;let s=i?1:-1;a+=s,n.has(e)&&(o+=s)},v=(e,t,n)=>{let r=(e.get(t)??0)+n;r>0?e.set(t,r):e.delete(t)},y=e=>t=>(e.add(t),()=>{e.delete(t)});return{subscribe:y(u),subscribeSelectAll:y(d),register(e){let t=!r.has(e);_(e,()=>v(r,e,1)),h(),t&&m(e);let n=!1;return()=>{n||(n=!0,_(e,()=>v(r,e,-1)),!r.has(e)&&(h(),m(e)))}},disable(e){_(e,()=>v(i,e,1)),h();let t=!1;return()=>{t||(t=!0,_(e,()=>v(i,e,-1)),h())}},isDisabled(e){return i.has(e)},setSelected(e){let t=new Set(e);if(!(t.size===n.size&&e.every(e=>n.has(e)))){n=t,l=void 0,o=0;for(let e of t)g(e)&&(o+=1);f(u),h()}},setSingleMode(e){c=e},isSelected(e,t=!1){return t?p()===e:n.has(e)},countRegistrations(e){return r.get(e)??0},getSelectAllState(){return s},getRegistered(){return Array.from(r.keys())},prune(e){return e.filter(e=>r.has(e))}}}function v(){let e=new Map,t=new Set,n=null,r=()=>{let r=null,i=null;for(let[t,a]of e){let o=a();if(!o){if(n!==null&&e.has(n))return;continue}(!i||o.compareDocumentPosition(i)&Node.DOCUMENT_POSITION_FOLLOWING)&&(r=t,i=o)}if(r===null&&(r=e.keys().next().value??null),r!==n){n=r;for(let e of Array.from(t))e()}};return{subscribe(e){return t.add(e),()=>{t.delete(e)}},register(t,n){return e.set(t,n),r(),()=>{e.delete(t),r()}},getFirst:()=>n,refresh:r}}var y=p.createContext(null),b=p.createContext(null),x=p.createContext(`body`),S=p.createContext(null),C=p.createContext(!0),w=p.createContext(null),ee=p.createContext(null),T=p.createContext(null),E={selectionMode:`none`,store:_([]),toggleRow:()=>{},toggleAll:()=>{},radioName:``,selectAllLabel:h,selectionHeaderLabel:g,selectOnRowClick:!1,selectionAppearance:`brand`,subtleSelection:!1},D={sort:null,requestSort:()=>{}},O={selectionCellProps:void 0,hasSelectionCell:!0,rowId:void 0,isSelected:!1,disabled:!1,invisible:!1,ariaLabel:void 0,ariaLabelledBy:void 0};function k(e){return p.useContext(y)||(r.reportMissingContext(e,`DataGrid`),E)}function te(e){return p.useContext(T)||(r.reportMissingContext(e,`DataGrid.Row`),O)}function ne(e){return p.useContext(b)||(r.reportMissingContext(e,`DataGrid`),D)}var A=[];function j(e){return e===void 0?void 0:Array.from(e)}function M(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function re({key:e,node:t}){return(0,m.jsx)(p.Fragment,{children:t},e)}function N(e){return r.resolveDeprecatedProp(`DataGrid`,e.columnId,e.id,`columns[].id`,`columns[].columnId`)}function ie(e){r.warnOnce(`DataGrid:duplicate-rowId:${e}`,`DataGrid: several rows share the rowId "${e}". Row ids must be unique within a DataGrid; rows with the same rowId are selected and deselected together.`)}var P=`px-4 py-3 border-b border-border`,ae={brand:`hover:bg-subtle-hover data-[selected]:bg-selected transition-colors motion-reduce:transition-none`,neutral:`hover:bg-subtle-hover data-[selected]:bg-subtle-selected transition-colors motion-reduce:transition-none`,none:`hover:bg-subtle-hover transition-colors motion-reduce:transition-none`};function F(e){return f.getTablePartKind(e)===`dataGridSelectionCell`}function I(e){let{items:u,getRowId:d,sort:f,defaultSort:v,sortColumn:x,defaultSortColumn:S,sortDirection:C,defaultSortDirection:E,onSortChange:D,selectionMode:O=`none`,selectedItems:k,defaultSelectedItems:te,onSelectedItemsChange:ne,selectedKeys:ie,defaultSelectedKeys:P,onSelectionChange:ae,labels:F,selectOnRowClick:I=!1,selectionAppearance:L=`brand`,subtleSelection:R=!1,columns:z,containerProps:oe,children:H,className:se,onKeyDown:G,onFocus:ce,onBlur:q,ref:le,...ue}=e,J=u!==void 0,Y=f!==void 0||v!==void 0,X=!Y&&!J,[de,Z]=p.useState(!X);!X&&!de&&Z(!0);let fe=de||!X,pe=x!==void 0||C!==void 0;x!==void 0&&r.warnDeprecated(`DataGrid`,`sortColumn`,`sort`),C!==void 0&&r.warnDeprecated(`DataGrid`,`sortDirection`,`sort`),S!==void 0&&r.warnDeprecated(`DataGrid`,`defaultSortColumn`,`defaultSort`),E!==void 0&&r.warnDeprecated(`DataGrid`,`defaultSortDirection`,`defaultSort`);let me=pe||S!==void 0||E!==void 0,he=Y&&me,ge=!X&&!Y&&me;p.useEffect(()=>{he?r.warnOnce(`DataGrid:mixed-sort`,"DataGrid: do not mix `sort`/`defaultSort` with the deprecated `sortColumn`/`sortDirection`/`defaultSortColumn`/`defaultSortDirection`. `sort`/`defaultSort` win."):ge&&r.warnOnce(`DataGrid:items-deprecated-sort`,"DataGrid: the deprecated `sortColumn`/`sortDirection`/`defaultSortColumn`/`defaultSortDirection` do not apply to a grid with `items` and are ignored. Pass `sort` or `defaultSort`.")},[he,ge]),p.useEffect(()=>{X&&(x!==void 0&&C===void 0?r.warnOnce(`DataGrid:sortColumn-without-sortDirection`,"DataGrid: `sortColumn` is controlled but `sortDirection` is not (mixed control). The direction is kept internally and toggles on repeated clicks, as in 0.4. Pass `sort` (`{ columnId, direction }`) to control both."):C!==void 0&&x===void 0&&r.warnOnce(`DataGrid:sortDirection-without-sortColumn`,"DataGrid: `sortDirection` is controlled but `sortColumn` is not (mixed control). The column is kept internally and follows the clicked header, as in 0.4. Pass `sort` (`{ columnId, direction }`) to control both."))},[X,x,C]);let[_e,ve]=p.useState(()=>({column:S??``,direction:E??`ascending`})),ye=p.useMemo(()=>{if(x===void 0&&C===void 0)return;let e=x??_e.column;return e===``?null:{columnId:e,direction:C??_e.direction}},[x,C,_e]),be=p.useMemo(()=>S?{columnId:S,direction:E??`ascending`}:null,[S,E]),xe=X?ye:f,Se=be;v===void 0?ge&&(Se=null):Se=v;let Ce=p.useRef(void 0),[we,Te]=o.useControllable(xe,Se,e=>{e&&(X&&ve(t=>t.column===e.columnId&&t.direction===e.direction?t:{column:e.columnId,direction:e.direction}),D&&(fe?D(e,Ce.current):D(e.columnId,e.direction)))}),Ee=p.useCallback((e,t)=>{Ce.current={event:t};try{Te(t=>({columnId:e,direction:t?.columnId===e&&t.direction===`ascending`?`descending`:`ascending`}))}finally{Ce.current=void 0}},[Te]),De=p.useMemo(()=>({sort:we,requestSort:Ee}),[we,Ee]);ae!==void 0&&r.warnDeprecated(`DataGrid`,`onSelectionChange`,`onSelectedItemsChange`);let Oe=p.useMemo(()=>j(ie),[ie]),ke=p.useMemo(()=>j(P),[P]),Ae=r.resolveDeprecatedProp(`DataGrid`,k,Oe,`selectedKeys`,`selectedItems`),je=r.resolveDeprecatedProp(`DataGrid`,te,ke,`defaultSelectedKeys`,`defaultSelectedItems`)??A,Me=p.useRef(void 0),[Ne,Pe]=o.useControllable(Ae,je,e=>{ne?.([...e],Me.current),ae?.(new Set(e))}),Fe=p.useCallback((e,t)=>{Me.current={event:e};try{Pe(t)}finally{Me.current=void 0}},[Pe]),Q=O===`single`,[$]=p.useState(()=>_(Ne,Q));p.useLayoutEffect(()=>{$.setSelected(Ne)},[$,Ne]),p.useLayoutEffect(()=>{$.setSingleMode(Q)},[$,Q]);let Ie=p.useCallback((e,t)=>{Fe(t,t=>{let n=$.prune(t),r;return r=Q?n[0]===e?[]:[e]:n.includes(e)?n.filter(t=>t!==e):[...n,e],M(r,t)?t:r})},[Q,Fe,$]),Le=Ne.length;p.useEffect(()=>{Q&&Le>1&&r.warnOnce(`DataGrid:single-several-selected`,`DataGrid: a single-selection grid (selectionMode "single") has ${Le} selected row ids; only the first one that is rendered is selected. Pass at most one id in \`selectedItems\`/\`defaultSelectedItems\`, or use selectionMode="multiple".`)},[Q,Le]);let Re=p.useCallback(e=>{Fe(e,e=>{let t=new Set($.prune(e)),n=$.getRegistered(),r=n.filter(e=>!$.isDisabled(e)),i=r.length>0&&r.every(e=>t.has(e))?n.filter(e=>$.isDisabled(e)&&t.has(e)):n.filter(e=>!$.isDisabled(e)||t.has(e));return M(i,e)?e:i})},[Fe,$]),ze=s.useId(`wave-datagrid-selection`),Be=F?.selectAll??h,Ve=F?.selectionHeader??g,He=p.useMemo(()=>({selectionMode:O,store:$,toggleRow:Ie,toggleAll:Re,radioName:ze,selectAllLabel:Be,selectionHeaderLabel:Ve,selectOnRowClick:I,selectionAppearance:L,subtleSelection:R}),[O,$,Ie,Re,ze,Be,Ve,I,L,R]),{gridRef:Ue,gridProps:We}=l.useGridNavigation(),Ge=c.useMergedRefs(le,Ue),Ke=p.useMemo(()=>{if(u===void 0)return null;let e=new Set;return u.map((t,n)=>{let r=d?d(t):String(n),i=e.has(r)?`${r}\u0000${n}`:r;return e.add(i),{item:t,index:n,rowId:r,key:i}})},[u,d]),qe=we?.columnId,Je=we?.direction,Ye=p.useMemo(()=>{if(J&&qe!==void 0&&z)return z.find(e=>N(e)===qe)?.compare},[J,qe,z]),Xe=p.useMemo(()=>{if(Ke===null||!Ye)return Ke;let e=Ye;return Ke.slice().sort(Je===`descending`?(t,n)=>-e(t.item,n.item):(t,n)=>e(t.item,n.item))},[Ke,Ye,Je]),Ze=p.useMemo(()=>{if(!z||!J)return null;let e=z.map((e,t)=>N(e)??t);return t=>(0,m.jsx)(W,{children:z.map((n,r)=>(0,m.jsx)(K,{children:n.renderCell?.(t)},e[r]))})},[z,J]),Qe=p.useMemo(()=>({rows:Xe,renderColumnsRow:Ze}),[Xe,Ze]),$e=z?.some(e=>e.columnId===void 0&&e.id===void 0)??!1;p.useEffect(()=>{$e&&r.warnOnce(`DataGrid:column-without-columnId`,"DataGrid: a column in `columns` has no `columnId` (nor the deprecated `id`), so its header cannot sort. Give every column a unique `columnId`.")},[$e]);let et=H,tt=z?n.flattenChildren(H):[],nt=e=>tt.some(({node:t})=>n.isElementOfType(t,e)),rt=z&&!nt(B)?(0,m.jsx)(B,{children:(0,m.jsx)(`tr`,{children:z.map((e,t)=>{let n=N(e);return(0,m.jsx)(V,{columnId:n,sortable:e.sortable??e.compare!==void 0,children:e.renderHeaderCell?e.renderHeaderCell():e.label},n??t)})})},`wave-generated-header`):null,it=z&&J&&!nt(U)?(0,m.jsx)(U,{},`wave-generated-body`):null;if(rt||it){let e=({node:e})=>n.isElementOfType(e,`caption`),t=tt.filter(t=>!e(t)),r=it?t.findIndex(({node:e})=>n.isElementOfType(e,`tfoot`)):-1,i=r>=0?r:t.length;et=[...tt.filter(e).map(re),rt,...t.slice(0,i).map(re),it,...t.slice(i).map(re)]}let{className:at,"aria-label":ot,"aria-labelledby":st,...ct}=oe??{},lt=ct.role!==void 0,ut=!lt&&(ot!==void 0||st!==void 0);return p.useEffect(()=>{ut&&r.warnOnce(`DataGrid:container-name-without-role`,'DataGrid: `containerProps["aria-label"]`/`["aria-labelledby"]` is ignored because the wrapper has no role. Name the grid itself (`aria-label` on DataGrid), or pass a `role` (e.g. "region") in `containerProps` too.')},[ut]),(0,m.jsx)(y.Provider,{value:He,children:(0,m.jsx)(b.Provider,{value:De,children:(0,m.jsx)(w.Provider,{value:Qe,children:(0,m.jsx)(T.Provider,{value:null,children:(0,m.jsx)(ee.Provider,{value:null,children:(0,m.jsx)(`div`,{...ct,"aria-label":lt?ot:void 0,"aria-labelledby":lt?st:void 0,className:t.cn(a.dataGridClassNames.container,`overflow-x-auto rounded-md border border-border`,at),children:(0,m.jsx)(`table`,{ref:Ge,role:`grid`,"aria-multiselectable":O===`multiple`||void 0,"data-selection-appearance":L,"data-subtle-selection":R?``:void 0,className:t.cn(a.dataGridClassNames.root,`w-full border-separate border-spacing-0`,R&&`group/grid`,se),...ue,onKeyDown:i.composeEventHandlers(G,We.onKeyDown),onFocus:i.composeEventHandlers(ce,We.onFocus,{checkDefaultPrevented:!1}),onBlur:i.composeEventHandlers(q,We.onBlur,{checkDefaultPrevented:!1}),children:et})})})})})})})}I.displayName=`DataGrid`;function L({selectionMode:e,stableClassName:n,cellProps:r,ref:i}){let{store:o,toggleAll:s,selectAllLabel:c,selectionHeaderLabel:l,subtleSelection:d}=k(`DataGrid.Header`),h=p.useSyncExternalStore(o.subscribeSelectAll,o.getSelectAllState,o.getSelectAllState),{className:g,disabled:_,invisible:v,controlRef:y,"aria-label":b,"aria-labelledby":x,"aria-describedby":S,...C}=r??{},w=!1;return h===`all`?w=!0:h===`some`&&(w=`mixed`),(0,m.jsx)(`th`,{scope:`col`,...C,ref:i,"data-selection-cell":``,className:t.cn(n,a.dataGridHeaderClassNames.selectionCell,f.SELECTION_CELL_CLASSES,`text-start`,u.focusRingInset,g),children:e===`multiple`?(0,m.jsx)(f.TableSelectionControl,{ref:y,type:`checkbox`,"aria-label":b??(x===void 0?c:void 0),"aria-labelledby":x,"aria-describedby":S,checked:w,disabled:_,invisible:v,subtle:d,reveal:`grid`,onChange:e=>s(e.nativeEvent),className:a.dataGridHeaderClassNames.selectAllCheckbox}):(0,m.jsx)(`span`,{className:`sr-only`,children:l})})}var R={subscribe:()=>()=>{},register:()=>()=>{},getFirst:()=>null,refresh:()=>{}};function z({selectionMode:e,initialFirst:n,stableClassName:r,cellProps:i,ref:o}){let s=p.useContext(S)??R,[l]=p.useState(()=>({})),d=p.useRef(null),h=c.useMergedRefs(d,o),g=p.useCallback(()=>{let e=s.getFirst();return e===null?n:e===l},[s,l,n]),_=p.useCallback(()=>n,[n]),v=p.useSyncExternalStore(s.subscribe,g,_);if(p.useLayoutEffect(()=>s.register(l,()=>d.current),[s,l]),v)return(0,m.jsx)(L,{ref:h,selectionMode:e,stableClassName:r,cellProps:i});let{className:y,disabled:b,invisible:x,controlRef:C,"aria-label":w,"aria-labelledby":ee,"aria-describedby":T,...E}=i??{};return(0,m.jsx)(`td`,{...E,ref:h,"data-selection-cell":``,className:t.cn(r,a.dataGridHeaderClassNames.selectionCell,f.SELECTION_CELL_CLASSES,u.focusRingInset,y)})}function oe(e,t){let r=!0,i=e=>p.Children.map(e,e=>{if(n.isElementOfType(e,p.Fragment))return p.cloneElement(e,void 0,i(e.props.children));if(!p.isValidElement(e))return e;let a=r;if(r=!1,n.isElementOfType(e,`tr`)){let r=e.props.children,i=t===`none`||n.flattenChildren(r).some(({node:e})=>F(e))?null:(0,m.jsx)(z,{selectionMode:t,initialFirst:a});return p.cloneElement(e,void 0,i,(0,m.jsx)(C.Provider,{value:a,children:r}))}return(0,m.jsx)(C.Provider,{value:a,children:e})});return i(e)}var B=({children:e,className:n,ref:i,...o})=>{let{selectionMode:s}=k(`DataGrid.Header`),[l,u]=p.useState(null),d=c.useMergedRefs(i,u),[f]=p.useState(v),h=oe(e,s);return p.useLayoutEffect(()=>{f.refresh()}),p.useEffect(()=>{if(!r.isDev||!l||s===`none`)return;let e=Array.from(l.rows,e=>Array.from(e.cells).filter(e=>e.hasAttribute(`data-selection-cell`)));e.some((e,t)=>e.length===0&&l.rows[t].cells.length>0)&&r.warnOnce(`DataGrid.Header:missing-selection-cell`,"DataGrid.Header: a header row has no selection column header cell, so the header has one column fewer than the selectable rows. Render header rows as `<tr>` children of DataGrid.Header (a Fragment is fine), or use `DataGrid.Row` for a header row that another component renders."),e.some(e=>e.length>1)&&r.warnOnce(`DataGrid.Header:several-selection-cells`,`DataGrid.Header: a header row has more than one selection cell. A DataGrid.SelectionCell rendered by another component is not seen, so the row also gets the automatic cell: render DataGrid.SelectionCell as a child of the row (a Fragment is fine).`)}),(0,m.jsx)(x.Provider,{value:`header`,children:(0,m.jsx)(S.Provider,{value:f,children:(0,m.jsx)(`thead`,{ref:d,className:t.cn(a.dataGridHeaderClassNames.root,`bg-card`,n),...o,children:h})})})};B.displayName=`DataGridHeader`;var V=({columnId:e,sortable:n=!1,sortIcon:o,children:s,className:c,onClick:l,ref:d,...h})=>{let{sort:g,requestSort:_}=ne(`DataGrid.HeaderCell`),v=n&&e?e:void 0,y=v!==void 0&&g?.columnId===v?g.direction:null,b=e=>{let t=e.currentTarget.firstElementChild;v!==void 0&&t?.localName===`button`&&t.contains(e.target)&&_(v,e.nativeEvent)};return p.useEffect(()=>{n&&!e&&r.warnOnce(`DataGrid.HeaderCell:sortable-without-columnId`,"DataGrid.HeaderCell: `sortable` needs a `columnId`; the header is rendered as not sortable.")},[n,e]),(0,m.jsx)(`th`,{ref:d,scope:`col`,"aria-sort":v===void 0?void 0:y??`none`,className:t.cn(a.dataGridHeaderCellClassNames.root,P,`text-start align-middle font-semibold text-caption-1 uppercase tracking-wider`,u.focusRingInset,v!==void 0&&`p-0 hover:bg-subtle-hover`,c),...h,onClick:v===void 0?l:i.composeEventHandlers(l,b),children:v===void 0?(0,m.jsx)(`span`,{className:`inline-flex items-center gap-1`,children:s}):(0,m.jsx)(f.TableSortButton,{component:`DataGrid.HeaderCell`,direction:y,sortIcon:o,className:a.dataGridHeaderCellClassNames.button,iconClassName:a.dataGridHeaderCellClassNames.sortIcon,children:s})})};V.displayName=`DataGridHeaderCell`;var H=p.memo(function({item:e,index:t,rowId:n,render:r}){return(0,m.jsx)(ee.Provider,{value:n,children:r(e,t)})}),U=({children:e,className:n,ref:i,...o})=>{let s=p.useContext(w),c=s?.rows??null,l=typeof e==`function`&&c===null;p.useEffect(()=>{l&&r.warnOnce(`DataGrid.Body:render-without-items`,"DataGrid.Body: a render function child renders one row per item of the DataGrid's `items`, which is not set, so the body has no rows.")},[l]);let u=e=>e&&c?.map(t=>(0,m.jsx)(H,{item:t.item,index:t.index,rowId:t.rowId,render:e},t.key)),d;return d=typeof e==`function`?u(e):e===void 0?u(s?.renderColumnsRow??null):e,(0,m.jsx)(x.Provider,{value:`body`,children:(0,m.jsx)(`tbody`,{ref:i,className:t.cn(a.dataGridBodyClassNames.root,n),...o,children:d})})};U.displayName=`DataGridBody`;var W=({rowId:e,selectionLabel:o,selectionCellProps:c,children:l,className:f,onClick:h,onKeyDown:g,ref:_,...v})=>{let{selectionMode:y,store:b,toggleRow:S,selectOnRowClick:w,selectionAppearance:E}=k(`DataGrid.Row`),D=p.useContext(ee),O=e??D??void 0,te=p.useContext(x),ne=p.useContext(C),A=te===`header`,j=y!==`none`&&!A,M=s.useId(`wave-datagrid-row-label`),N=n.flattenChildren(l),P;for(let{node:e}of N)if(F(e)){P=e.props;break}let I=P!==void 0,L=P?.disabled??c?.disabled??!1,R=P?.invisible??c?.invisible??!1,oe=P?.[`aria-labelledby`],B=P?.[`aria-label`]??c?.[`aria-label`]??o,V=y===`single`,H=p.useCallback(()=>O!==void 0&&b.isSelected(O,V),[O,b,V]),U=p.useSyncExternalStore(b.subscribe,H,H);p.useLayoutEffect(()=>{if(O===void 0||A)return;let e=b.register(O);return r.isDev&&b.countRegistrations(O)>1&&ie(O),e},[b,O,A]),p.useLayoutEffect(()=>{if(O!==void 0&&!A&&L)return b.disable(O)},[b,O,A,L]),p.useEffect(()=>{j&&O===void 0&&r.warnOnce(`DataGrid.Row:missing-rowId`,"DataGrid.Row: a selectable grid needs a `rowId` on every row; this row has no selection control.")},[j,O]);let W=j&&O!==void 0&&B===void 0&&oe===void 0,G=e=>{if(!j||O===void 0||e.key!==` `)return;let t=e.target;(t===e.currentTarget||t.parentElement===e.currentTarget)&&(e.preventDefault(),L||S(O,e.nativeEvent))},ce=e=>{if(!w||!j||O===void 0||L)return;let t=e.currentTarget;d.isForeignEvent(e,{isOwnPart:e=>e.parentElement===t})||d.endsTextSelection(e)||S(O,e.nativeEvent)},q,le=-1;if(W){let e=N.findIndex(({node:e})=>n.isElementOfType(e,K,`td`,`th`));if(e>=0){let t=N[e].node;q=t.props.id??M,t.props.id===void 0&&(le=e)}}let ue=N.map(({key:e,node:t},n)=>re({key:e,node:n===le?p.cloneElement(t,{id:M}):t})),J=W&&q===void 0;p.useEffect(()=>{J&&r.warnOnce(`DataGrid.Row:selection-label`,'DataGrid.Row: no child is a `DataGrid.Cell`, `<td>` or `<th>` element, so the row selection control is named "Select row". Pass `selectionLabel` (a cell rendered by another component is not seen).')},[J]);let Y=oe??q,X=B??(Y===void 0?`Select row`:void 0),de=p.useMemo(()=>({selectionCellProps:c,hasSelectionCell:I,rowId:j?O:void 0,isSelected:U,disabled:L,invisible:R,ariaLabel:X,ariaLabelledBy:Y}),[c,I,j,O,U,L,R,X,Y]),Z=null;return!I&&A&&y!==`none`?Z=(0,m.jsx)(z,{selectionMode:y,initialFirst:ne,cellProps:c}):!I&&j&&(Z=(0,m.jsx)(se,{component:`DataGrid.Row`})),(0,m.jsx)(T.Provider,{value:de,children:(0,m.jsxs)(`tr`,{ref:_,className:t.cn(a.dataGridRowClassNames.root,`group/table-row`,!A&&ae[E],j&&U&&u.forcedColors.selectedContainer,f),"aria-selected":j?U:void 0,"data-selected":j&&U?``:void 0,...v,onClick:i.composeEventHandlers(h,ce),onKeyDown:i.composeEventHandlers(g,G),children:[Z,ue]})})};W.displayName=`DataGridRow`;function se({component:e,stableClassName:n,className:r,controlRef:i,"aria-describedby":o,ref:s,...c}){let{selectionMode:l,toggleRow:d,radioName:p,subtleSelection:h}=k(e),g=te(e),{rowId:_}=g,v=l===`single`;return(0,m.jsx)(`td`,{role:`gridcell`,...c,ref:s,"data-selection-cell":``,className:t.cn(n,a.dataGridRowClassNames.selectionCell,f.SELECTION_CELL_CLASSES,u.focusRingInset,g.selectionCellProps?.className,r),children:_!==void 0&&l!==`none`&&(0,m.jsx)(f.TableSelectionControl,{ref:i,type:v?`radio`:`checkbox`,name:v?p:void 0,form:v?``:void 0,checked:g.isSelected,disabled:g.disabled,invisible:g.invisible,subtle:h,onChange:e=>d(_,e.nativeEvent),"aria-label":g.ariaLabel,"aria-labelledby":g.ariaLabelledBy,"aria-describedby":o,className:a.dataGridRowClassNames.selectionControl})})}var G=({disabled:e,invisible:n,className:i,"aria-label":o,"aria-labelledby":s,"aria-describedby":c,controlRef:l,ref:u,...d})=>{let{selectionMode:f}=k(`DataGrid.SelectionCell`),h=p.useContext(x),g=p.useContext(C),_=p.useContext(T),v=f===`none`,y=!v&&_!==null&&!_.hasSelectionCell;if(p.useEffect(()=>{v&&r.warnOnce(`DataGrid.SelectionCell:not-selectable`,'DataGrid.SelectionCell: the grid has no row selection (`selectionMode` is "none"), so the cell renders nothing. Set `selectionMode` on the DataGrid, or remove the cell.')},[v]),p.useEffect(()=>{y&&r.warnOnce(`DataGrid.SelectionCell:unseen`,`DataGrid.SelectionCell: rendered by another component, so its DataGrid.Row did not see it and added its own selection cell. Render DataGrid.SelectionCell as a child of DataGrid.Row (a Fragment is fine).`)},[y]),v)return null;if(h===`header`){let r=_?.selectionCellProps;return(0,m.jsx)(z,{ref:u,selectionMode:f,initialFirst:g,stableClassName:a.dataGridSelectionCellClassNames.root,cellProps:{...d,className:t.cn(r?.className,i),disabled:e??r?.disabled,invisible:n??r?.invisible,"aria-label":o??r?.[`aria-label`],"aria-labelledby":s,"aria-describedby":c,controlRef:l}})}return(0,m.jsx)(se,{...d,ref:u,component:`DataGrid.SelectionCell`,stableClassName:a.dataGridSelectionCellClassNames.root,className:i,controlRef:l,"aria-describedby":c})};G.displayName=`DataGridSelectionCell`,f.markTablePart(G,`dataGridSelectionCell`);var K=({children:e,className:n,ref:r,...i})=>(0,m.jsx)(`td`,{ref:r,role:`gridcell`,className:t.cn(a.dataGridCellClassNames.root,P,`relative text-body-1`,u.focusRingInset,n),...i,children:e});K.displayName=`DataGridCell`;var ce=Object.assign(I,{Header:B,HeaderCell:V,Body:U,Row:W,Cell:K,SelectionCell:G});exports.DataGrid=ce,exports.DataGridBody=U,exports.DataGridCell=K,exports.DataGridHeader=B,exports.DataGridHeaderCell=V,exports.DataGridRow=W,exports.DataGridSelectionCell=G,exports.createSelectionStore=_;
|
|
2
2
|
//# sourceMappingURL=DataGrid.cjs.map
|