@mortenbrudvik/waveui 0.15.0 → 0.17.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 +339 -40
- 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 +405 -219
- package/dist/components/data-display/List.mjs.map +1 -1
- package/dist/components/data-display/List.registry.cjs +1 -1
- package/dist/components/data-display/List.registry.cjs.map +1 -1
- package/dist/components/data-display/List.registry.mjs +12 -6
- package/dist/components/data-display/List.registry.mjs.map +1 -1
- package/dist/components/input/Combobox.cjs +1 -1
- package/dist/components/input/Combobox.cjs.map +1 -1
- package/dist/components/input/Combobox.mjs +163 -148
- package/dist/components/input/Combobox.mjs.map +1 -1
- package/dist/components/input/Dropdown.cjs +1 -1
- package/dist/components/input/Dropdown.cjs.map +1 -1
- package/dist/components/input/Dropdown.mjs +132 -117
- package/dist/components/input/Dropdown.mjs.map +1 -1
- package/dist/components/input/Label.cjs +1 -1
- package/dist/components/input/Label.cjs.map +1 -1
- package/dist/components/input/Label.mjs +1 -0
- package/dist/components/input/Label.mjs.map +1 -1
- package/dist/components/input/Listbox.cjs +1 -1
- package/dist/components/input/Listbox.cjs.map +1 -1
- package/dist/components/input/Listbox.mjs +90 -78
- package/dist/components/input/Listbox.mjs.map +1 -1
- package/dist/components/input/Option.cjs +1 -1
- package/dist/components/input/Option.cjs.map +1 -1
- package/dist/components/input/Option.data.cjs +2 -0
- package/dist/components/input/Option.data.cjs.map +1 -0
- package/dist/components/input/Option.data.mjs +114 -0
- package/dist/components/input/Option.data.mjs.map +1 -0
- package/dist/components/input/Option.mjs +21 -17
- package/dist/components/input/Option.mjs.map +1 -1
- package/dist/components/layout/FlatTree.cjs +2 -0
- package/dist/components/layout/FlatTree.cjs.map +1 -0
- package/dist/components/layout/FlatTree.context.cjs +2 -0
- package/dist/components/layout/FlatTree.context.cjs.map +1 -0
- package/dist/components/layout/FlatTree.context.mjs +20 -0
- package/dist/components/layout/FlatTree.context.mjs.map +1 -0
- package/dist/components/layout/FlatTree.item.cjs +2 -0
- package/dist/components/layout/FlatTree.item.cjs.map +1 -0
- package/dist/components/layout/FlatTree.item.mjs +90 -0
- package/dist/components/layout/FlatTree.item.mjs.map +1 -0
- package/dist/components/layout/FlatTree.mjs +276 -0
- package/dist/components/layout/FlatTree.mjs.map +1 -0
- package/dist/components/layout/Tree.core.cjs +1 -1
- package/dist/components/layout/Tree.core.cjs.map +1 -1
- package/dist/components/layout/Tree.core.mjs +166 -165
- package/dist/components/layout/Tree.core.mjs.map +1 -1
- package/dist/components/layout/Tree.selection.cjs +1 -1
- package/dist/components/layout/Tree.selection.cjs.map +1 -1
- package/dist/components/layout/Tree.selection.mjs +11 -57
- package/dist/components/layout/Tree.selection.mjs.map +1 -1
- package/dist/components/layout/useFlatTree.cjs +2 -0
- package/dist/components/layout/useFlatTree.cjs.map +1 -0
- package/dist/components/layout/useFlatTree.mjs +83 -0
- package/dist/components/layout/useFlatTree.mjs.map +1 -0
- package/dist/components/portal/Portal.cjs +1 -1
- package/dist/components/portal/Portal.cjs.map +1 -1
- package/dist/components/portal/Portal.mjs +12 -11
- package/dist/components/portal/Portal.mjs.map +1 -1
- package/dist/components/provider/WaveProvider.cjs +1 -1
- package/dist/components/provider/WaveProvider.cjs.map +1 -1
- package/dist/components/provider/WaveProvider.mjs +59 -35
- package/dist/components/provider/WaveProvider.mjs.map +1 -1
- package/dist/components/table/DataGrid.cjs +1 -1
- package/dist/components/table/DataGrid.cjs.map +1 -1
- package/dist/components/table/DataGrid.context.cjs +2 -0
- package/dist/components/table/DataGrid.context.cjs.map +1 -0
- package/dist/components/table/DataGrid.context.mjs +74 -0
- package/dist/components/table/DataGrid.context.mjs.map +1 -0
- package/dist/components/table/DataGrid.header.cjs +2 -0
- package/dist/components/table/DataGrid.header.cjs.map +1 -0
- package/dist/components/table/DataGrid.header.mjs +168 -0
- package/dist/components/table/DataGrid.header.mjs.map +1 -0
- package/dist/components/table/DataGrid.mjs +488 -591
- package/dist/components/table/DataGrid.mjs.map +1 -1
- package/dist/components/table/DataGrid.sizing.cjs +2 -0
- package/dist/components/table/DataGrid.sizing.cjs.map +1 -0
- package/dist/components/table/DataGrid.sizing.mjs +187 -0
- package/dist/components/table/DataGrid.sizing.mjs.map +1 -0
- package/dist/components/table/DataGrid.store.cjs +2 -0
- package/dist/components/table/DataGrid.store.cjs.map +1 -0
- package/dist/components/table/DataGrid.store.mjs +108 -0
- package/dist/components/table/DataGrid.store.mjs.map +1 -0
- package/dist/components/table/DataGrid.window.cjs +2 -0
- package/dist/components/table/DataGrid.window.cjs.map +1 -0
- package/dist/components/table/DataGrid.window.mjs +165 -0
- package/dist/components/table/DataGrid.window.mjs.map +1 -0
- package/dist/components/table/Table.cjs +1 -1
- package/dist/components/table/Table.cjs.map +1 -1
- package/dist/components/table/Table.mjs +74 -72
- package/dist/components/table/Table.mjs.map +1 -1
- package/dist/components/table/Table.resize.cjs +2 -0
- package/dist/components/table/Table.resize.cjs.map +1 -0
- package/dist/components/table/Table.resize.mjs +98 -0
- package/dist/components/table/Table.resize.mjs.map +1 -0
- package/dist/components/table/useGridNavigation.cjs +1 -1
- package/dist/components/table/useGridNavigation.cjs.map +1 -1
- package/dist/components/table/useGridNavigation.mjs +343 -140
- package/dist/components/table/useGridNavigation.mjs.map +1 -1
- package/dist/components/table/useTableColumnSizing.cjs +2 -0
- package/dist/components/table/useTableColumnSizing.cjs.map +1 -0
- package/dist/components/table/useTableColumnSizing.mjs +76 -0
- package/dist/components/table/useTableColumnSizing.mjs.map +1 -0
- package/dist/components/table/useTableFeatures.cjs +2 -0
- package/dist/components/table/useTableFeatures.cjs.map +1 -0
- package/dist/components/table/useTableFeatures.mjs +110 -0
- package/dist/components/table/useTableFeatures.mjs.map +1 -0
- package/dist/components/table/useTableSelection.cjs +2 -0
- package/dist/components/table/useTableSelection.cjs.map +1 -0
- package/dist/components/table/useTableSelection.mjs +39 -0
- package/dist/components/table/useTableSelection.mjs.map +1 -0
- package/dist/components/table/useTableSort.cjs +2 -0
- package/dist/components/table/useTableSort.cjs.map +1 -0
- package/dist/components/table/useTableSort.mjs +58 -0
- package/dist/components/table/useTableSort.mjs.map +1 -0
- package/dist/components/typography/Text.cjs +1 -1
- package/dist/components/typography/Text.cjs.map +1 -1
- package/dist/components/typography/Text.mjs +11 -7
- package/dist/components/typography/Text.mjs.map +1 -1
- package/dist/hooks/useActiveDescendant.cjs +1 -1
- package/dist/hooks/useActiveDescendant.cjs.map +1 -1
- package/dist/hooks/useActiveDescendant.mjs +33 -25
- package/dist/hooks/useActiveDescendant.mjs.map +1 -1
- package/dist/hooks/useListbox.cjs +1 -1
- package/dist/hooks/useListbox.cjs.map +1 -1
- package/dist/hooks/useListbox.mjs +140 -130
- package/dist/hooks/useListbox.mjs.map +1 -1
- package/dist/hooks/useRovingTabIndex.cjs +1 -1
- package/dist/hooks/useRovingTabIndex.cjs.map +1 -1
- package/dist/hooks/useRovingTabIndex.mjs +1 -1
- package/dist/hooks/useRovingTabIndex.mjs.map +1 -1
- package/dist/hooks/useSelection.cjs +2 -0
- package/dist/hooks/useSelection.cjs.map +1 -0
- package/dist/hooks/useSelection.mjs +57 -0
- package/dist/hooks/useSelection.mjs.map +1 -0
- package/dist/hooks/useVirtualWindow.cjs +2 -0
- package/dist/hooks/useVirtualWindow.cjs.map +1 -0
- package/dist/hooks/useVirtualWindow.mjs +102 -0
- package/dist/hooks/useVirtualWindow.mjs.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1799 -63
- package/dist/index.d.ts +1799 -63
- package/dist/index.mjs +150 -136
- package/dist/lib/brand.cjs +2 -0
- package/dist/lib/brand.cjs.map +1 -0
- package/dist/lib/brand.mjs +358 -0
- package/dist/lib/brand.mjs.map +1 -0
- package/dist/lib/classNames.cjs +1 -1
- package/dist/lib/classNames.cjs.map +1 -1
- package/dist/lib/classNames.mjs +68 -49
- package/dist/lib/classNames.mjs.map +1 -1
- package/dist/lib/cn.cjs +1 -1
- package/dist/lib/cn.cjs.map +1 -1
- package/dist/lib/cn.mjs +5 -1
- package/dist/lib/cn.mjs.map +1 -1
- package/dist/lib/columnSizing.cjs +2 -0
- package/dist/lib/columnSizing.cjs.map +1 -0
- package/dist/lib/columnSizing.mjs +27 -0
- package/dist/lib/columnSizing.mjs.map +1 -0
- package/dist/lib/flatTree.cjs +2 -0
- package/dist/lib/flatTree.cjs.map +1 -0
- package/dist/lib/flatTree.mjs +118 -0
- package/dist/lib/flatTree.mjs.map +1 -0
- package/dist/lib/selection.cjs +2 -0
- package/dist/lib/selection.cjs.map +1 -0
- package/dist/lib/selection.mjs +28 -0
- package/dist/lib/selection.mjs.map +1 -0
- package/dist/lib/tokens.cjs +2 -0
- package/dist/lib/tokens.cjs.map +1 -0
- package/dist/lib/tokens.mjs +43 -0
- package/dist/lib/tokens.mjs.map +1 -0
- package/dist/lib/treeCascade.cjs +2 -0
- package/dist/lib/treeCascade.cjs.map +1 -0
- package/dist/lib/treeCascade.mjs +52 -0
- package/dist/lib/treeCascade.mjs.map +1 -0
- package/dist/lib/virtual.cjs +2 -0
- package/dist/lib/virtual.cjs.map +1 -0
- package/dist/lib/virtual.mjs +54 -0
- package/dist/lib/virtual.mjs.map +1 -0
- package/dist/lib/waveTokens.cjs +2 -0
- package/dist/lib/waveTokens.cjs.map +1 -0
- package/dist/lib/waveTokens.mjs +24 -0
- package/dist/lib/waveTokens.mjs.map +1 -0
- package/dist/styles.css +1 -1
- package/package.json +3 -1
- package/src/styles/tokens.css +210 -10
|
@@ -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"),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=_;
|
|
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("../../lib/selection.cjs"),u=require("./useGridNavigation.cjs"),d=require("../../lib/styles.cjs"),f=require("../../lib/events.cjs"),p=require("./Table.shared.cjs"),m=require("./DataGrid.sizing.cjs"),h=require("./DataGrid.window.cjs"),g=require("./DataGrid.store.cjs"),_=require("./DataGrid.context.cjs"),v=require("./DataGrid.header.cjs");let y=require("react");y=e.__toESM(y,1);let b=require("react/jsx-runtime");var x=[],S=[];function C(e){return e===void 0?void 0:Array.from(e)}function w(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function ee(e,t,n){if(n.length===0)return e;let r=new Set(e),i=l.summarizeSelection(r,n).all?l.clearIds(r,n):l.selectAllIds(r,n),a=new Set(t);return[...Array.from(i).filter(e=>!a.has(e)),...t.filter(e=>i.has(e))]}function te({key:e,node:t}){return(0,b.jsx)(y.Fragment,{children:t},e)}function ne(e){return n.flattenChildren(e).filter(({node:e})=>y.isValidElement(e)).length}function T(e){return r.resolveDeprecatedProp(`DataGrid`,e.columnId,e.id,`columns[].id`,`columns[].columnId`)}function re(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 ie={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 E(e){let{items:d,getRowId:f,isSelectionDisabled:p,sort:re,defaultSort:ie,sortColumn:E,defaultSortColumn:D,sortDirection:A,defaultSortDirection:j,onSortChange:M,selectionMode:N=`none`,selectedItems:oe,defaultSelectedItems:P,onSelectedItemsChange:F,selectedKeys:I,defaultSelectedKeys:L,onSelectionChange:R,labels:z,selectOnRowClick:se=!1,selectionAppearance:ce=`brand`,subtleSelection:B=!1,columns:V,resizableColumns:le=!1,columnSizingOptions:H,columnWidths:ue,defaultColumnWidths:de,onColumnWidthsChange:fe,virtualWindow:pe,containerProps:me,children:U,className:he,style:ge,onKeyDown:_e,onFocus:ve,onBlur:ye,onPointerDownCapture:be,ref:xe,...Se}=e,W=d!==void 0,Ce=re!==void 0||ie!==void 0,G=!Ce&&!W,[we,Te]=y.useState(!G);!G&&!we&&Te(!0);let Ee=we||!G,De=E!==void 0||A!==void 0;E!==void 0&&r.warnDeprecated(`DataGrid`,`sortColumn`,`sort`),A!==void 0&&r.warnDeprecated(`DataGrid`,`sortDirection`,`sort`),D!==void 0&&r.warnDeprecated(`DataGrid`,`defaultSortColumn`,`defaultSort`),j!==void 0&&r.warnDeprecated(`DataGrid`,`defaultSortDirection`,`defaultSort`);let Oe=De||D!==void 0||j!==void 0,ke=Ce&&Oe,Ae=!G&&!Ce&&Oe;y.useEffect(()=>{ke?r.warnOnce(`DataGrid:mixed-sort`,"DataGrid: do not mix `sort`/`defaultSort` with the deprecated `sortColumn`/`sortDirection`/`defaultSortColumn`/`defaultSortDirection`. `sort`/`defaultSort` win."):Ae&&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`.")},[ke,Ae]),y.useEffect(()=>{G&&(E!==void 0&&A===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."):A!==void 0&&E===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."))},[G,E,A]);let[je,Me]=y.useState(()=>({column:D??``,direction:j??`ascending`})),Ne=y.useMemo(()=>{if(E===void 0&&A===void 0)return;let e=E??je.column;return e===``?null:{columnId:e,direction:A??je.direction}},[E,A,je]),Pe=y.useMemo(()=>D?{columnId:D,direction:j??`ascending`}:null,[D,j]),Fe=G?Ne:re,Ie=Pe;ie===void 0?Ae&&(Ie=null):Ie=ie;let Le=y.useRef(void 0),[Re,ze]=o.useControllable(Fe,Ie,e=>{e&&(G&&Me(t=>t.column===e.columnId&&t.direction===e.direction?t:{column:e.columnId,direction:e.direction}),M&&(Ee?M(e,Le.current):M(e.columnId,e.direction)))}),Be=y.useCallback((e,t)=>{Le.current={event:t};try{ze(t=>({columnId:e,direction:t?.columnId===e&&t.direction===`ascending`?`descending`:`ascending`}))}finally{Le.current=void 0}},[ze]),Ve=y.useMemo(()=>({sort:Re,requestSort:Be}),[Re,Be]);R!==void 0&&r.warnDeprecated(`DataGrid`,`onSelectionChange`,`onSelectedItemsChange`);let He=y.useMemo(()=>C(I),[I]),Ue=y.useMemo(()=>C(L),[L]),We=r.resolveDeprecatedProp(`DataGrid`,oe,He,`selectedKeys`,`selectedItems`),Ge=r.resolveDeprecatedProp(`DataGrid`,P,Ue,`defaultSelectedKeys`,`defaultSelectedItems`)??x,Ke=y.useRef(void 0),[qe,Je]=o.useControllable(We,Ge,e=>{F?.([...e],Ke.current),R?.(new Set(e))}),Ye=y.useCallback((e,t)=>{Ke.current={event:e};try{Je(t)}finally{Ke.current=void 0}},[Je]),K=y.useMemo(()=>{if(d===void 0)return null;let e=new Set;return d.map((t,n)=>{let r=f?f(t):String(n),i=e.has(r)?`${r}\u0000${n}`:r;return e.add(i),{item:t,index:n,rowId:r,key:i}})},[d,f]),q=N!==`none`,J=y.useMemo(()=>K===null||!p||!q?null:K.map(e=>p(e.item,e.index)),[K,p,q]),Xe=y.useMemo(()=>{if(K===null||!q)return null;let e=new Set;if(J)for(let t of K)J[t.index]&&e.add(t.rowId);return{ids:K.map(e=>e.rowId),disabled:e}},[K,J,q]),Y=N===`single`,[X]=y.useState(()=>g.createSelectionStore(qe,Y,Xe));y.useLayoutEffect(()=>{X.setUniverse(Xe)},[X,Xe]),y.useLayoutEffect(()=>{X.setSelected(qe)},[X,qe]),y.useLayoutEffect(()=>{X.setSingleMode(Y)},[X,Y]);let Ze=y.useCallback((e,t)=>{Ye(t,t=>{let n;if(W){let r=new Set(Y?t.slice(0,1):t);n=Array.from(l.toggleId(r,e,Y?`single`:`multiple`,{allowEmpty:!0}))}else{let r=X.prune(t);n=Y?r[0]===e?[]:[e]:r.includes(e)?r.filter(t=>t!==e):[...r,e]}return w(n,t)?t:n})},[W,Y,Ye,X]),Qe=qe.length;y.useEffect(()=>{Y&&Qe>1&&r.warnOnce(`DataGrid:single-several-selected`,`DataGrid: a single-selection grid (selectionMode "single") has ${Qe} selected row ids; only ${W?`the first one`:`the first one that is rendered`} is selected. Pass at most one id in \`selectedItems\`/\`defaultSelectedItems\`, or use selectionMode="multiple".`)},[Y,Qe,W]);let $e=y.useCallback(e=>{Ye(e,e=>{let t;if(W)t=ee(e,X.getUniverseIds(),X.getSelectableIds());else{let n=new Set(X.prune(e)),r=X.getRegistered(),i=r.filter(e=>!X.isDisabled(e));t=i.length>0&&i.every(e=>n.has(e))?r.filter(e=>X.isDisabled(e)&&n.has(e)):r.filter(e=>!X.isDisabled(e)||n.has(e))}return w(t,e)?e:t})},[W,Ye,X]),et=s.useId(`wave-datagrid-selection`),tt=z?.selectAll??`Select all rows`,nt=z?.selectionHeader??`Selection`,rt=y.useMemo(()=>({selectionMode:N,store:X,toggleRow:Ze,toggleAll:$e,radioName:et,selectAllLabel:tt,selectionHeaderLabel:nt,selectOnRowClick:se,selectionAppearance:ce,subtleSelection:B}),[N,X,Ze,$e,et,tt,nt,se,ce,B]),it=Re?.columnId,at=Re?.direction,ot=y.useMemo(()=>{if(W&&it!==void 0&&V)return V.find(e=>T(e)===it)?.compare},[W,it,V]),st=y.useMemo(()=>{if(K===null||!ot)return K;let e=ot;return K.slice().sort(at===`descending`?(t,n)=>-e(t.item,n.item):(t,n)=>e(t.item,n.item))},[K,ot,at]),ct=y.useMemo(()=>{if(!V||!W)return null;let e=V.map((e,t)=>T(e)??t);return t=>(0,b.jsx)(k,{children:V.map((n,r)=>(0,b.jsx)(ae,{children:n.renderCell?.(t)},e[r]))})},[V,W]),lt=y.useMemo(()=>({rows:st,renderColumnsRow:ct,selectionDisabled:J}),[st,ct,J]),ut=V?.some(e=>e.columnId===void 0&&e.id===void 0)??!1;y.useEffect(()=>{ut&&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`.")},[ut]);let dt=V?n.flattenChildren(U):[],ft=e=>dt.find(({node:t})=>n.isElementOfType(t,e))?.node,pt=ft(v.DataGridHeader),mt=ft(O),ht=n.isElementOfType(mt,O)?mt.props.children:void 0,gt=pe!==void 0&&W&&V!==void 0&&(ht===void 0||typeof ht==`function`)?pe:null,Z=gt!==null,_t=n.isElementOfType(pt,v.DataGridHeader)?ne(pt.props.children):1,vt=d?.length??0,{gridRef:yt,gridProps:bt,activeRowIndex:xt,pendingRowIndex:St}=u.useGridNavigation({model:h.getWindowNavigationModel(gt,vt,_t)}),Q=h.useDataGridWindow({virtualWindow:gt,ignored:pe!==void 0&&!Z,rows:st,headerRowCount:_t,columnCount:(V?.length??0)+ +!!q,activeRowIndex:xt,pendingRowIndex:St}),Ct=c.useMergedRefs(xe,yt,Q.tableRef),wt=e=>{bt.onFocus(e),Q.onFocus(e)},Tt=e=>{bt.onBlur(e),Q.onBlur(e)},Et=le||H!==void 0||ue!==void 0||de!==void 0,Dt=Et&&!(V&&W);y.useEffect(()=>{Dt&&r.warnOnce(`DataGrid:resizable-columns-require-columns`,"DataGrid: `resizableColumns`, `columnSizingOptions`, `columnWidths` and `defaultColumnWidths` need the `columns` prop together with `items`, and are ignored without them. Render the grid from `items` and `columns`.")},[Dt]);let Ot=Et&&!Dt||Z,kt=y.useMemo(()=>Ot&&V?V.map(T):S,[Ot,V]),$=m.useDataGridColumnSizing({enabled:Ot,resizable:le,columnIds:kt,selectionColumn:N!==`none`,columnSizingOptions:H,columnWidths:ue,defaultColumnWidths:de,onColumnWidthsChange:fe,resizeColumnLabel:z?.resizeColumn,columnWidthText:z?.columnWidth}),At=U,jt=V&&pt===void 0?(0,b.jsx)(v.DataGridHeader,{children:(0,b.jsx)(`tr`,{children:V.map((e,t)=>{let n=T(e);return(0,b.jsx)(v.DataGridHeaderCell,{columnId:n,sortable:e.sortable??e.compare!==void 0,children:e.renderHeaderCell?e.renderHeaderCell():e.label},n??t)})})},`wave-generated-header`):null,Mt=V&&W&&mt===void 0?(0,b.jsx)(O,{},`wave-generated-body`):null;if(jt||Mt||$.colgroup){let e=({node:e})=>n.isElementOfType(e,`caption`),t=dt.filter(t=>!e(t)),r=Mt?t.findIndex(({node:e})=>n.isElementOfType(e,`tfoot`)):-1,i=r>=0?r:t.length;At=[...dt.filter(e).map(te),$.colgroup,jt,...t.slice(0,i).map(te),Mt,...t.slice(i).map(te)]}let{className:Nt,"aria-label":Pt,"aria-labelledby":Ft,ref:It,...Lt}=me??{},Rt=c.useMergedRefs(It,Q.scrollerRef,gt?.scrollRef),zt=Lt.role!==void 0,Bt=!zt&&(Pt!==void 0||Ft!==void 0);return y.useEffect(()=>{Bt&&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.')},[Bt]),(0,b.jsx)(_.DataGridContext.Provider,{value:rt,children:(0,b.jsx)(_.DataGridSortContext.Provider,{value:Ve,children:(0,b.jsx)(_.DataGridItemsContext.Provider,{value:lt,children:(0,b.jsx)(_.DataGridRowContext.Provider,{value:null,children:(0,b.jsx)(_.DataGridRowIdContext.Provider,{value:null,children:(0,b.jsx)(_.DataGridItemSelectionDisabledContext.Provider,{value:void 0,children:(0,b.jsx)(m.DataGridResizeContext.Provider,{value:$.resizeContext,children:(0,b.jsx)(m.DataGridFixedLayoutContext.Provider,{value:$.colgroup!==null,children:(0,b.jsx)(`div`,{tabIndex:Z?-1:void 0,...Lt,ref:Rt,"aria-label":zt?Pt:void 0,"aria-labelledby":zt?Ft:void 0,className:t.cn(a.dataGridClassNames.container,`overflow-x-auto rounded-md border border-border`,Z&&`[overflow-anchor:none]`,Nt),children:(0,b.jsx)(`table`,{ref:Ct,role:`grid`,"aria-multiselectable":N===`multiple`||void 0,"aria-rowcount":Z?vt+_t:void 0,"data-selection-appearance":ce,"data-subtle-selection":B?``:void 0,"data-resizing":$.resizing?``:void 0,className:t.cn(a.dataGridClassNames.root,`w-full border-separate border-spacing-0`,B&&`group/grid`,he),style:$.tableStyle?{...$.tableStyle,...ge}:ge,...Se,onKeyDown:i.composeEventHandlers(_e,bt.onKeyDown),onFocus:i.composeEventHandlers(ve,wt,{checkDefaultPrevented:!1}),onBlur:i.composeEventHandlers(ye,Tt,{checkDefaultPrevented:!1}),onPointerDownCapture:i.composeEventHandlers(be,Q.onPointerDownCapture),children:(0,b.jsx)(h.DataGridWindowContext.Provider,{value:Q.context,children:(0,b.jsx)(h.DataGridWindowRowContext.Provider,{value:null,children:At})})})})})})})})})})})})}E.displayName=`DataGrid`;var D=y.memo(function({item:e,index:t,rowId:n,selectionDisabled:r,render:i,position:a,ariaRowIndex:o,height:s}){let c=y.useMemo(()=>a===void 0||o===void 0?null:{index:a,ariaRowIndex:o,height:s},[a,o,s]);return(0,b.jsx)(_.DataGridRowIdContext.Provider,{value:n,children:(0,b.jsx)(_.DataGridItemSelectionDisabledContext.Provider,{value:r,children:(0,b.jsx)(h.DataGridWindowRowContext.Provider,{value:c,children:i(e,t)})})})}),O=({children:e,className:n,ref:i,...o})=>{let s=y.useContext(_.DataGridItemsContext),c=y.useContext(h.DataGridWindowContext),l=s?.rows??null,u=typeof e==`function`&&l===null;y.useEffect(()=>{u&&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.")},[u]);let d=s?.selectionDisabled??null,f=e=>{if(!e||!l)return null;if(c){let{headerRowCount:t,virtualWindow:n}=c;return h.renderWindowRows(c,l.length,r=>{let i=l[r];return(0,b.jsx)(D,{item:i.item,index:i.index,rowId:i.rowId,selectionDisabled:d?.[i.index],render:e,position:r,ariaRowIndex:r+t+1,height:n.itemSize},`row:${i.key}`)})}return l.map(t=>(0,b.jsx)(D,{item:t.item,index:t.index,rowId:t.rowId,selectionDisabled:d?.[t.index],render:e},t.key))},p;return p=typeof e==`function`?f(e):e===void 0?f(s?.renderColumnsRow??null):e,(0,b.jsx)(_.DataGridSectionContext.Provider,{value:`body`,children:(0,b.jsx)(`tbody`,{ref:i,className:t.cn(a.dataGridBodyClassNames.root,n),...o,children:p})})};O.displayName=`DataGridBody`;var k=({rowId:e,selectionLabel:o,selectionCellProps:c,children:l,className:u,style:p,onClick:m,onKeyDown:g,ref:x,...S})=>{let{selectionMode:C,store:w,toggleRow:ee,selectOnRowClick:ne,selectionAppearance:T}=_.useDataGridContext(`DataGrid.Row`),E=y.useContext(h.DataGridWindowRowContext),D=y.useContext(_.DataGridRowIdContext),O=e??D??void 0,k=y.useContext(_.DataGridSectionContext),j=y.useContext(_.DataGridHeaderRowHintContext),M=k===`header`,N=C!==`none`&&!M,oe=s.useId(`wave-datagrid-row-label`),P=n.flattenChildren(l),F;for(let{node:e}of P)if(v.isSelectionCellElement(e)){F=e.props;break}let I=F!==void 0,L=y.useContext(_.DataGridItemSelectionDisabledContext),R=F?.disabled??c?.disabled,z=R??L??!1,se=F?.invisible??c?.invisible??!1,ce=F?.[`aria-labelledby`],B=F?.[`aria-label`]??c?.[`aria-label`]??o,V=C===`single`,le=y.useCallback(()=>O!==void 0&&w.isSelected(O,V),[O,w,V]),H=y.useSyncExternalStore(w.subscribe,le,le);y.useLayoutEffect(()=>{if(O===void 0||M)return;let e=w.register(O);return r.isDev&&w.countRegistrations(O)>1&&re(O),e},[w,O,M]),y.useLayoutEffect(()=>{if(O!==void 0&&!M&&z)return w.disable(O)},[w,O,M,z]),y.useEffect(()=>{N&&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.")},[N,O]);let ue=N&&O!==void 0&&L!==void 0&&R!==void 0&&R!==L;y.useEffect(()=>{if(!ue)return;let e=e=>e?`disabled`:`enabled`;r.warnOnce(`DataGrid:selection-disabled-mismatch`,`DataGrid: the selection cell of row "${O}" is ${e(z)} (\`DataGrid.SelectionCell disabled\` or \`selectionCellProps.disabled\`), but \`isSelectionDisabled\` says its item is ${e(!z)}. Select-all skips a row that either one disables, and the row's control follows its cell: make them agree, or leave the cell's \`disabled\` unset to take it from \`isSelectionDisabled\`.`)},[ue,O,z]);let de=N&&e!==void 0&&D!==null&&e!==D;y.useEffect(()=>{de?r.warnOnce(`DataGrid.Row:row-id-mismatch`,"DataGrid.Row: a row rendered from the grid's `items` sets its own `rowId`, which differs from its item's id (`getRowId`, by default the item's index). Select-all and its checkbox use the ids from `getRowId`, so the row is outside them and select-all selects ids that no row has. Pass a `getRowId` that returns the row's id, and leave out `rowId`."):N&&O!==void 0&&D===null&&w.isOutsideUniverse(O)&&r.warnOnce(`DataGrid.Row:row-id-outside-items`,"DataGrid.Row: a selectable row in a grid with `items` has a `rowId` that is no item's id (`getRowId`, by default the item's index). Select-all and its checkbox use the ids of `items`, so the row is outside them. Render the rows from `items` (a `DataGrid.Body` render function, or `columns`) with a `getRowId` that returns their ids.")},[de,N,O,D,w]);let fe=N&&O!==void 0&&B===void 0&&ce===void 0,pe=e=>{if(!N||O===void 0||e.key!==` `)return;let t=e.target;(t===e.currentTarget||t.parentElement===e.currentTarget)&&(e.preventDefault(),z||ee(O,e.nativeEvent))},me=e=>{if(!ne||!N||O===void 0||z)return;let t=e.currentTarget;f.isForeignEvent(e,{isOwnPart:e=>e.parentElement===t})||f.endsTextSelection(e)||ee(O,e.nativeEvent)},U,he=-1;if(fe){let e=P.findIndex(({node:e})=>n.isElementOfType(e,ae,`td`,`th`));if(e>=0){let t=P[e].node;U=t.props.id??oe,t.props.id===void 0&&(he=e)}}let ge=P.map(({key:e,node:t},n)=>te({key:e,node:n===he?y.cloneElement(t,{id:oe}):t})),_e=fe&&U===void 0;y.useEffect(()=>{_e&&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).')},[_e]);let ve=ce??U,ye=B??(ve===void 0?`Select row`:void 0),be=y.useMemo(()=>({selectionCellProps:c,hasSelectionCell:I,rowId:N?O:void 0,isSelected:H,disabled:z,invisible:se,ariaLabel:ye,ariaLabelledBy:ve}),[c,I,N,O,H,z,se,ye,ve]),xe=null;return!I&&M&&C!==`none`?xe=(0,b.jsx)(v.DataGridSelectionHeaderSlot,{selectionMode:C,initialFirst:j,cellProps:c}):!I&&N&&(xe=(0,b.jsx)(A,{component:`DataGrid.Row`})),(0,b.jsx)(_.DataGridRowContext.Provider,{value:be,children:(0,b.jsxs)(`tr`,{ref:x,className:t.cn(a.dataGridRowClassNames.root,`group/table-row`,!M&&ie[T],N&&H&&d.forcedColors.selectedContainer,u),"aria-selected":N?H:void 0,"data-selected":N&&H?``:void 0,...S,style:E?.height===void 0?p:{...p,height:E.height},...E&&{"aria-rowindex":E.ariaRowIndex,"data-row-index":E.index},onClick:i.composeEventHandlers(m,me),onKeyDown:i.composeEventHandlers(g,pe),children:[xe,ge]})})};k.displayName=`DataGridRow`;function A({component:e,stableClassName:n,className:r,controlRef:i,"aria-describedby":o,ref:s,...c}){let{selectionMode:l,toggleRow:u,radioName:f,subtleSelection:m}=_.useDataGridContext(e),g=_.useDataGridRowContext(e),v=y.useContext(h.DataGridWindowRowContext)?.index!==void 0,{rowId:x}=g,S=l===`single`;return(0,b.jsx)(`td`,{role:`gridcell`,...c,ref:s,"data-selection-cell":``,className:t.cn(n,a.dataGridRowClassNames.selectionCell,p.SELECTION_CELL_CLASSES,v&&`py-0 align-middle`,d.focusRingInset,g.selectionCellProps?.className,r),children:x!==void 0&&l!==`none`&&(0,b.jsx)(p.TableSelectionControl,{ref:i,type:S?`radio`:`checkbox`,name:S?f:void 0,form:S?``:void 0,checked:g.isSelected,disabled:g.disabled,invisible:g.invisible,subtle:m,onChange:e=>u(x,e.nativeEvent),"aria-label":g.ariaLabel,"aria-labelledby":g.ariaLabelledBy,"aria-describedby":o,className:a.dataGridRowClassNames.selectionControl})})}var j=({disabled:e,invisible:n,className:i,"aria-label":o,"aria-labelledby":s,"aria-describedby":c,controlRef:l,ref:u,...d})=>{let{selectionMode:f}=_.useDataGridContext(`DataGrid.SelectionCell`),p=y.useContext(_.DataGridSectionContext),m=y.useContext(_.DataGridHeaderRowHintContext),h=y.useContext(_.DataGridRowContext),g=f===`none`,x=!g&&h!==null&&!h.hasSelectionCell;if(y.useEffect(()=>{g&&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.')},[g]),y.useEffect(()=>{x&&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).`)},[x]),g)return null;if(p===`header`){let r=h?.selectionCellProps;return(0,b.jsx)(v.DataGridSelectionHeaderSlot,{ref:u,selectionMode:f,initialFirst:m,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,b.jsx)(A,{...d,ref:u,component:`DataGrid.SelectionCell`,stableClassName:a.dataGridSelectionCellClassNames.root,className:i,controlRef:l,"aria-describedby":c})};j.displayName=`DataGridSelectionCell`,p.markTablePart(j,`dataGridSelectionCell`);var ae=({children:e,className:n,ref:r,...i})=>{let o=y.useContext(m.DataGridFixedLayoutContext),s=y.useContext(h.DataGridWindowRowContext)?.index!==void 0;return(0,b.jsx)(`td`,{ref:r,role:`gridcell`,className:t.cn(a.dataGridCellClassNames.root,v.cellBase,`relative text-body-1`,(o||s)&&`overflow-hidden text-ellipsis whitespace-nowrap`,s&&`py-0 align-middle`,d.focusRingInset,n),...i,children:e})};ae.displayName=`DataGridCell`;var M=Object.assign(E,{Header:v.DataGridHeader,HeaderCell:v.DataGridHeaderCell,Body:O,Row:k,Cell:ae,SelectionCell:j});exports.DataGrid=M,exports.DataGridBody=O,exports.DataGridCell=ae,exports.DataGridHeader=v.DataGridHeader,exports.DataGridHeaderCell=v.DataGridHeaderCell,exports.DataGridRow=k,exports.DataGridSelectionCell=j,exports.createSelectionStore=g.createSelectionStore;
|
|
2
2
|
//# sourceMappingURL=DataGrid.cjs.map
|