@jerry-fd/ui 0.3.8 → 0.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/antd-data-table.js +1 -1
- package/package.json +1 -1
package/antd-data-table.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {b,c as c$1,i as i$1,e as e$1,f as f$1,g as g$1,k as k$1}from'./chunk-IFQYYBK3.js';import {a,b as b$1,e,c,d}from'./chunk-M2VWZ5UW.js';import {g,h,l,o,f,n,p,m,j,i,k,M,r,s,A,t,B,C as C$1,E,D,F,H}from'./chunk-ZLJEIJBZ.js';import'./chunk-WOT6VMZA.js';import {Card,Table,ConfigProvider,Pagination,Tooltip,Checkbox}from'antd';import C from'react';import {createStore,useStore}from'zustand';import {persist}from'zustand/middleware';import {immer}from'zustand/middleware/immer';import {useShallow}from'zustand/react/shallow';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {AnimatePresence,m as m$1}from'motion/react';import {ArrowDownToLine,RefreshCw}from'lucide-react';var ht={tableSize:"middle",columnVisibility:{}},qe={tabStates:{},activeTabId:"",loading:false,exporting:false},st=(t,r)=>{t.tabStates[r]||(t.tabStates[r]={...ht});},be=t=>t.tabStates[t.activeTabId]??ht,Xe=(t,r)=>({...qe,activeTabId:r??"",setActiveTab:e=>t(a=>{a.activeTabId=e,st(a,e);}),setTableSize:e=>t(a=>{let o=a.activeTabId;st(a,o),a.tabStates[o].tableSize=e;}),setColumnVisibility:(e,a)=>t(o=>{let i=o.activeTabId;st(o,i),o.tabStates[i].columnVisibility[e]=a;}),setColumnVisibilityState:e=>t(a=>{let o=a.activeTabId;st(a,o);let i=a.tabStates[o].columnVisibility;a.tabStates[o].columnVisibility=typeof e=="function"?e(i):e;}),toggleColumnVisibility:e=>t(a=>{let o=a.activeTabId;st(a,o);let i=a.tabStates[o].columnVisibility[e];a.tabStates[o].columnVisibility[e]=!i;}),setLoading:e=>t({loading:e}),setExporting:e=>t({exporting:e}),resetCurrentTabState:()=>t(e=>{let a=e.activeTabId;e.tabStates[a]={...ht};})}),Ze=(t,r)=>createStore()(persist(immer(e=>Xe(e,r)),{name:t,partialize:e=>({tabStates:e.tabStates})})),xt=C.createContext(null),Je=["id","action","actions"],Te=C.createContext({});function fe({storageKey:t,initialTabId:r,alwaysShowingColumns:e,children:a$1}){let o=C.useRef(null);o.current||(o.current=Ze(t,r)),C.useEffect(()=>{let n=o.current;n&&!n.getState().activeTabId&&n.getState().setActiveTab(r);},[r]);let i=C.useMemo(()=>({alwaysShowingColumns:e??Je}),[e]);return jsx(Te.Provider,{value:i,children:jsx(xt.Provider,{value:o.current,children:jsx(ConfigProvider,{theme:a,children:a$1})})})}function ge(){return C.useContext(Te)}function Y(t){let r=C.useContext(xt);if(!r)throw new Error("useDataTableStore must be used within DataTableProvider");return useStore(r,t)}function Tt(){let t=C.useContext(xt);if(!t)throw new Error("useCurrentTabUIState must be used within DataTableProvider");return useStore(t,useShallow(r=>be(r)))}function Se(){return Y(t=>be(t).tableSize)}var ta={small:"min-h-22",middle:"min-h-30",large:"min-h-38"};function De({count:t,size:r="small",classNames:e,columns:a,scroll:o}){let i=C.useCallback(()=>ea(a,ta[r]),[a,r]);return jsx(Table,{rowKey:"id",size:r,rowHoverable:false,classNames:e,dataSource:Array.from({length:t},(n,s)=>({id:s})),pagination:false,scroll:o,children:a.map((n,s)=>jsx(Table.Column,{dataIndex:n.dataIndex,width:n.width,title:jsx(i$1,{className:"h-22 w-full animate-none bg-bg-antd"}),render:i,onCell:()=>s===0?{colSpan:a.length}:{colSpan:0}},n.dataIndex))})}var Ce=16;function ea(t,r){let e=t.length,o=`calc((100% - ${Ce*(e-1)}px) / ${e})`,i=t.some(n=>n.skeleton==="avatar"||n.skeleton==="double-line");return jsx("div",{className:f("flex items-center",r),style:{gap:`${Ce}px`},children:t.map((n,s)=>{let c=n?.key??s;return jsx("div",{style:{width:o},children:aa(n.skeleton,i)},c)})})}function aa(t,r){switch(t){case "avatar":return jsx(ra,{});case "double-line":return jsx(na,{});case "group":return jsx(ia,{needAlignment:r});default:return jsx(oa,{needAlignment:r})}}function oa({needAlignment:t}){return jsxs("div",{className:"grid h-full gap-4",children:[t&&jsx("div",{className:"h-12 w-1"}),jsx(i$1,{className:"h-10"})]})}function ra(){return jsxs("div",{className:"flex w-full items-center gap-6",children:[jsx(i$1,{className:"shrink-0 rounded-full",style:{width:"var(--avatar-size, 32px)",height:"var(--avatar-size, 32px)"}}),jsxs("div",{className:"grid flex-1 gap-4",children:[jsx(i$1,{className:"h-12 w-[60%]"}),jsx(i$1,{className:"h-10"})]})]})}function na(){return jsxs("div",{className:"grid h-full w-full gap-4 py-4",children:[jsx(i$1,{className:"h-12 w-[60%]"}),jsx(i$1,{className:"h-10"})]})}function ia({needAlignment:t}){return jsxs("div",{className:"grid h-full gap-4",children:[t&&jsx("div",{className:"h-12 w-1"}),jsxs("div",{className:"flex w-full items-center gap-4",children:[jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"})]})]})}function he({className:t,options:r,...e}){return jsx(e$1,{className:f("w-full",t),...e,children:jsx(f$1,{variant:"line",size:"medium",className:"w-full px-12",children:r?.map(a=>jsx(g$1,{value:a.value,className:"py-8",children:a.label},a.id??a.value))})})}function Re({value:t,className:r,onChange:e,...a}){let o=b$1(),[i,n]=C.useState(false),s=C.useMemo(()=>[{groupType:"radio",value:t,options:[{label:o("large"),value:"large"},{label:o("middle"),value:"middle"},{label:o("compact"),value:"small"}],onValueChange:e}],[e,o,t]);return jsx(k$1,{side:"bottom",align:"end",collisionPadding:6,items:s,className:"min-w-100",open:i,onOpenChange:n,children:jsxs(M,{mode:"stroke",variant:"neutral",size:"small",className:f("gap-0",r,i&&"active"),...a,children:[jsx(Tooltip,{title:o("density"),mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})}),jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"size-16",viewBox:"0 0 1024 1024",children:jsx("path",{d:"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z"})})]})})}function ft(t){return t.key?String(t.key):Array.isArray(t.dataIndex)?t.dataIndex.join("."):String(t.dataIndex)}function ca(t){return typeof t=="string"&&t.length>0}function ve(t){return [Array.isArray(t.dataIndex)?t.dataIndex.join(" "):typeof t.dataIndex=="string"?t.dataIndex:null,typeof t.title=="string"?t.title:null,t.key!==null?String(t.key):null].filter(ca)}function we({disabled:t$1,columns:r$1}){let e=b$1(),{alwaysShowingColumns:a}=ge(),[o,i]=C.useState(false),{columnVisibility:n}=Tt(),s$1=Y(l=>l.setColumnVisibilityState),c=C.useCallback((l,d)=>{s$1(u=>({...u,[l]:d}));},[s$1]);return jsxs(r,{open:o,onOpenChange:i,children:[jsx(s,{asChild:true,children:jsx(M,{mode:"stroke",variant:"neutral",size:"small",className:f(o&&"active","relative gap-0"),disabled:t$1,startContent:jsx(A,{}),children:jsx(Tooltip,{title:e("column_set"),mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})})})}),jsx(t,{align:"end",side:"bottom",arrow:false,className:"w-fit rounded-xl p-0",sideOffset:6,children:jsxs(B,{children:[jsx(C$1,{autoFocus:true,placeholder:"Search..."}),jsx(E,{children:e("no_results")}),jsx(D,{className:"max-h-256",children:jsx(F,{children:r$1.map(l=>{let d=ft(l),u=n[d]!==false;return jsxs(H,{keywords:ve(l),onSelect:()=>c(d,!u),className:"group flex items-center gap-6",value:d,disabled:a?.includes(d),children:[jsx(Checkbox,{checked:u,tabIndex:-1,className:f("mr-4 opacity-100")}),jsx("span",{children:l.title})]},d)})})})]})})]})}function ga(t){return typeof t=="string"?{type:t,key:t}:t.type==="custom"?{type:"custom",key:t.key,hidden:t.hidden,render:t.render}:{type:t.type,key:t.key??t.type,hidden:t.hidden,btnProps:t.btnProps,tooltip:t.tooltip}}function Sa({btnProps:t,tooltip:r,disabled:e,loading:a,syncing:o,onAction:i}){let n=b$1(),s=r??n("refresh");return jsx(M,{mode:"stroke",variant:"neutral",startContent:jsx(RefreshCw,{}),loading:o||a,disabled:e||a||o,className:"gap-0",onClick:()=>i({action:"data_refresh"}),...t,children:jsx(Tooltip,{title:s,mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})})})}function ya(){let t=Se()??"small",r=Y(e=>e.setTableSize);return jsx(Re,{value:t,onChange:r})}function Ca({columns:t}){return jsx(we,{columns:t})}function Da({btnProps:t,disabled:r,loading:e,onAction:a}){let o=b$1();return jsx(M,{variant:"primary",startContent:jsx(ArrowDownToLine,{}),loading:e,disabled:r||e,onClick:()=>a({action:"data_export"}),...t,children:o("data_export")})}var ha={initial:{opacity:0,scale:.85,x:10,originX:1},animate:{opacity:1,scale:1,x:0,originX:1},exit:{opacity:0,scale:.85,x:10,originX:1}},xa={ease:[.26,.08,.25,1],duration:.25};function Ie({items:t,columns:r,disabled:e,loading:a,exporting:o,syncing:i,filter:n,onAction:s,className:c}){let l=C.useMemo(()=>t.map(p=>ga(p)),[t]),d=C.useMemo(()=>l.filter(p=>!p.hidden),[l]),u=C.useCallback(p=>{s?.(p);},[s]),E=C.useMemo(()=>({disabled:e,loading:a,exporting:o,columns:r,onAction:u}),[e,a,o,r,u]),y=p=>{let S={btnProps:p.btnProps,tooltip:p.tooltip,disabled:e,loading:a,onAction:u};switch(p.type){case "data_refresh":return jsx(Sa,{...S,syncing:i});case "size_setting":return jsx(ya,{});case "column_setting":return jsx(Ca,{columns:r});case "data_export":return jsx(Da,{...S,loading:o});case "custom":return p.render?.(E);case "filter_btn":return n;default:return null}};return jsx("div",{className:f("flex items-center gap-8",c),children:jsx(AnimatePresence,{mode:"popLayout",initial:false,children:d.map(p=>jsx(m$1.div,{layout:true,variants:ha,initial:"initial",animate:"animate",exit:"exit",transition:xa,children:y(p)},p.key))})})}var Pt=["data_refresh","size_setting","column_setting","filter_btn"];function Ae(t){return t.filter(r=>r.filter!==void 0).map(r=>{let{filter:e,dataIndex:a,title:o}=r,i=Array.isArray(a)?a.join("."):a,n=e.displayName??(typeof o=="string"?o:i);return {...e,columnId:i,displayName:n}})}function ze(t){return t.map(({filter:r,...e})=>e)}var Ra=31,va=44,Pa=250,wa=350,Ia={},wt=(t,r)=>{if(!t)return 0;let e=t.querySelectorAll(':scope > [data-id^="data-table-card-"]'),a=0;return e.forEach(o=>{let i=o.getAttribute("data-id")==="data-table-card-content";a+=i?0:o.clientHeight;}),document.documentElement.clientHeight-r-window.scrollY-Ra-va-a-3};function Fe(t,r,{x:e="max-content",y:a,...o}=Ia){let[i,n]=C.useState(a),s=C.useRef(0),c=C.useRef(null);return C.useLayoutEffect(()=>(s.current=t.current?.offsetTop??0,c.current||(c.current=c$1(()=>{s.current=t.current?.offsetTop??0,n(wt(t.current,s.current));},Pa,false,true)),window.addEventListener("resize",c.current),()=>{c.current&&(window.removeEventListener("resize",c.current),c.current.cancel());}),[t]),C.useEffect(()=>{if(a!==void 0)return;n(wt(t.current,s.current));let l=setTimeout(()=>{n(wt(t.current,s.current));},wa);return ()=>{clearTimeout(l);}},[a,r,t]),{x:e,y:i,...o}}var Fa={pagination:{root:"m-0 py-16 px-8 [&_.ant-pagination-total-text]:mr-auto"},body:{cell:"px-12!"}},Na={root:"m-0 flex w-full [&_.ant-pagination-total-text]:ps-12 [&_.ant-pagination-total-text]:mr-auto"},ka={initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0}},Ba={initial:{opacity:0,y:24},animate:{opacity:1,y:0},exit:{opacity:0,y:-24}},_a={ease:[.26,.08,.25,1],duration:.3};function Oa({id:t,activeTabId:r,tabList:e$1,title:a,icon:o$1,description:i$1,variant:n$1,classNames:s,slots:c$1,columns:l$1,filters:d$1,defaultFilters:u,total:E,pagination:y,defaultPagination:p$1,loading:S,syncing:N,exporting:R,disabled:M,animated:B=true,style:U,toolbarItems:_,onTabChange:H,onChange:O,onFiltersChange:ut,onToolbarAction:pt,...g$1}){let I=b$1(),G=Y(w=>w.setActiveTab),ot=Y(w=>w.activeTabId),{tableSize:j$1,columnVisibility:h$1}=Tt();C.useEffect(()=>{t&&t!==ot&&G(t);},[t,ot,G]);let Z=C.useMemo(()=>l$1.filter(w=>w.hidden!==true),[l$1]),J=C.useMemo(()=>ze(Z),[Z]),Q=C.useMemo(()=>Ae(l$1),[l$1]),[V,W]=e({filters:d$1,defaultFilters:u,onFiltersChange:ut}),rt=C.useMemo(()=>J.filter(w=>h$1[ft(w)]!==false),[J,h$1]),L=C.useRef({pagination:{},filters:{},sorter:{},extra:{action:"paginate",currentDataSource:[]}}),[mt,St]=C.useState(()=>({current:y?.current??p$1?.current??1,pageSize:y?.pageSize??p$1?.pageSize??10})),b=C.useCallback(w=>I("pagination_total").replace("{total}",String(w)),[I]),v=C.useCallback((w,yt,nt,Ve)=>{let{pagination:Le,filters:Ke,sorter:Ue,extra:He}=L.current={...L.current,filters:yt,sorter:nt,extra:Ve};O?.(Le,Ke,Ue,He);},[O]),P=C.useCallback((w,yt)=>{let nt={current:w,pageSize:yt};L.current={...L.current,pagination:nt},St(nt),O?.(nt,L.current.filters,L.current.sorter,L.current.extra);},[O]),A=C.useMemo(()=>({disabled:S||M||N,size:j$1==="large"?"middle":j$1,...p$1,showTotal:b,onChange:P,onShowSizeChange:P,...y,...mt,total:E}),[S,N,M,j$1,b,y,P,p$1,mt,E]),q=C.useMemo(()=>({...Fa,header:{cell:g$1.bordered?"p-12":"px-12 py-10 border-t border-stroke-antd first:border-l last:border-r"}}),[g$1.bordered]),tt=e$1&&Array.isArray(e$1),bt=Math.min(A.pageSize??A.defaultPageSize??10,15),Oe=!!(S&&rt.some(w=>w.skeleton)),Ee=Q.length!==0,Bt=V&&V.length!==0,_t=C.useRef(null),Ot=Fe(_t,`${V?.length}-${r??t}`,g$1.scroll),Et=Oe?jsx(De,{id:`${t}-skeleton`,columns:rt,size:j$1,count:bt,classNames:q,scroll:Ot}):jsx(Table,{id:`${t}-data-table`,columns:rt,classNames:q,pagination:false,size:j$1,loading:S,showSorterTooltip:false,onChange:v,...g$1,scroll:Ot}),Me=n$1==="accent",Mt=jsx(c,{columns:Q,filters:V,actions:W,"data-id":"data-table-active-filters",className:"flex flex-wrap gap-6 px-12 pt-16",disabled:N||S,enableAutoClose:true});return jsxs(g,{ref:_t,className:f("relative h-full max-h-[calc(100vh-80px)] overflow-hidden rounded-2xl",s?.root),style:U,variant:n$1,children:[jsxs(h,{"data-id":"data-table-card-header",className:f("data-table-card-header grow-0 px-14 pt-12 pb-10",Me&&"pt-10",tt&&"border-b-0",s?.cardHeader),children:[jsxs(l,{className:f("flex items-center gap-12",s?.cardHeading),children:[o$1&&jsx(o,{className:f("size-34 border border-stone-200 bg-stone-100 text-text-sub",!!(a&&i$1)&&"size-44 [&_svg]:size-24",s?.cardIcon),children:o$1}),a&&jsxs("div",{className:f(i$1&&"flex flex-col gap-4"),children:[jsx(n,{children:a}),i$1&&jsx(p,{children:i$1})]})]}),jsx(m,{className:s?.cardToolbar,children:jsx(Ie,{onAction:pt,items:_??Pt,loading:S,syncing:N,disabled:M,exporting:R,filter:Ee&&jsx(d,{columns:Q,filters:V,actions:W,align:"end",enableAutoBack:true},`${t}-filter`),columns:Z})})]}),c$1?.cardSummary&&jsx(j,{"data-id":"data-table-card-summary",className:f("grow-0 p-16",s?.cardSummary),children:c$1.cardSummary}),tt&&jsx(j,{"data-id":"data-table-card-tabs",className:"grow-0 p-0",children:jsx(he,{value:r,options:e$1,onValueChange:H})}),jsx(AnimatePresence,{initial:false,children:Bt&&jsx(m$1.div,{"data-id":"data-table-card-filter-values",variants:ka,initial:"initial",animate:"animate",exit:"exit",children:jsx(j,{className:"p-0",children:Mt})},r)}),jsxs(i,{"data-id":"data-table-card-content",className:f("relative grow overflow-hidden px-12 py-16 pb-63",N&&"pointer-events-none",s?.cardContent),children:[c$1?.tableSummary&&jsx(j,{className:f("grow-0 p-0 pb-16",s?.tableSummary),children:c$1.tableSummary}),B?jsx(AnimatePresence,{mode:"popLayout",initial:false,children:jsx(m$1.div,{variants:Ba,initial:"initial",animate:"animate",exit:"exit",transition:_a,children:Et},r)}):jsxs(Fragment,{children:[Bt&&jsx("div",{className:"mb-16",children:Mt}),Et]})]}),jsx(k,{"data-id":"data-table-card-pager",className:"flex min-h-64 w-full grow-0 items-center justify-between",children:jsx(Pagination,{classNames:Na,...A})}),c$1?.cardFooter&&jsx(k,{"data-id":"data-table-card-footer",className:f("grow-0 p-16",s?.cardFooter),children:c$1.cardFooter})]})}var Ea=import.meta.env?.VITE_MOCK_API_SSR??true;function Ma({storageKey:t,alwaysShowingColumns:r,...e}){let{tableStateStorageKey:a,pagination:o}=b(),i=t??a??"APP_UI_TABLE_CONFIG";if(Ea)return jsx(fe,{initialTabId:e.activeTabId??e.id,storageKey:i,alwaysShowingColumns:r,children:jsx(Oa,{defaultPagination:o,...e})});let{title:n,port:s,host:c,url:l,method:d,...u}=Va(e);return jsx(Card,{title:n,children:jsx(Table,{id:e.id,...u})})}function Va(t){let r=t.columns.map(({render:e,port:a,host:o,method:i,...n})=>({...n}));return {...t,columns:r}}var It={dateFormat:"YYYY-MM-DD",paginationKeys:{current:"current",pageSize:"pageSize"},sorterKeys:{field:"sortField",order:"sortOrder"},filtersKey:"filters",orderValues:{ascend:"asc",descend:"desc"},fieldMapping:{}};function At(t,r){return r[t]??t}function Ka(t){return t!==null&&typeof t=="object"&&"$d"in t&&typeof t.format=="function"}function zt(t,r){return t==null?null:Ka(t)?t.format(r):typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:String(t)}function Ua(t,r={}){let e={...It,...r},{pagination:a,filters:o,sorter:i}=t,n={};a.current!==void 0&&(n[e.paginationKeys.current]=a.current),a.pageSize!==void 0&&(n[e.paginationKeys.pageSize]=a.pageSize);let s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(n[e.sorterKeys.field]=String(s.field),n[e.sorterKeys.order]=e.orderValues[s.order]??s.order);let c={};for(let l of o){let d=At(l.columnId,e.fieldMapping);c[d]=l.values.map(u=>zt(u,e.dateFormat));}return Object.keys(c).length>0&&(n[e.filtersKey]=c),n}function dt(t,r={}){let e={...It,...r},{pagination:a,filters:o,sorter:i}=t,n={};a.current!==void 0&&(n[e.paginationKeys.current]=a.current),a.pageSize!==void 0&&(n[e.paginationKeys.pageSize]=a.pageSize);let s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(n[e.sorterKeys.field]=String(s.field),n[e.sorterKeys.order]=e.orderValues[s.order]??s.order);for(let c of o){let l=At(c.columnId,e.fieldMapping),d=c.values.map(u=>zt(u,e.dateFormat));n[l]=d.length===1?d[0]:d;}return n}function _e(t,r={}){let e={...It,...r},{pagination:a,filters:o,sorter:i}=t,n=new URLSearchParams;a.current!==void 0&&n.set(e.paginationKeys.current,String(a.current)),a.pageSize!==void 0&&n.set(e.paginationKeys.pageSize,String(a.pageSize));let s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(n.set(e.sorterKeys.field,String(s.field)),n.set(e.sorterKeys.order,e.orderValues[s.order]??s.order));for(let c of o){let l=At(c.columnId,e.fieldMapping),d=c.values.map(u=>zt(u,e.dateFormat));n.set(l,d.join(","));}return n.toString()}function Ha(t,r={}){let e=_e(t,r);return new URLSearchParams(e)}var Ft=[],Nt={current:1,pageSize:10},Ga={};function $a(){return {filters:Ft,pagination:Nt,sorter:{},extra:{action:"paginate",currentDataSource:[]}}}function Ya(t){let r=new Map,e=$a();for(let a of t)r.set(a.value,{filters:a.defaultFilters??a.filters??e.filters,pagination:a.defaultPagination??a.pagination??e.pagination,sorter:a.defaultSorter??e.sorter,extra:e.extra});return r}function kt({fireOnMount:t=true,active:r,defaultActive:e,tabList:a,onTabChange:o,onTableChange:i,onToolbarAction:n}){let[s,c]=C.useState(()=>e??a[0]?.value??""),l=r??s,[d,u]=C.useState(()=>Ya(a)),E=C.useMemo(()=>a.find(b=>b.value===l)??a[0],[l,a]),{id:y,fireOnMount:p=t,loading:S,syncing:N,exporting:R,disabled:M,serializeOptions:B=Ga,serializeFn:U=dt,defaultFilters:_,defaultPagination:H,defaultSorter:O,filters:ut,pagination:pt,onChange:g,onToolbarAction:I,value:G,label:ot,...j}=E;C.useEffect(()=>{d.has(l)||u(b=>{if(b.has(l))return b;let v=new Map(b);return v.set(l,{filters:_??Ft,pagination:H??Nt,sorter:O??{},extra:{action:"paginate",currentDataSource:[]}}),v});},[l,d,_,H,O]);let h=C.useMemo(()=>d.get(l)??{filters:_??Ft,pagination:H??Nt,sorter:O??{},extra:{action:"paginate",currentDataSource:[]}},[d,l,_,H,O]),Z=C.useRef(i),J=C.useRef(n),Q=C.useRef(g),V=C.useRef(I);Z.current=i,J.current=n,Q.current=g,V.current=I;let W=C.useRef(new Map);C.useEffect(()=>{W.current.has(l)||W.current.set(l,!p);},[l,p]);let rt=C.useCallback(b=>{c(b),o?.(b);},[o]),L=C.useCallback(b=>{u(v=>{let P=new Map(v),A=P.get(l);if(!A)return v;let q=typeof b=="function"?b(A.filters):b;return P.set(l,{...A,filters:q,pagination:{...A.pagination,current:1}}),P});},[l]),mt=C.useCallback((b,v,P,A)=>{u(q=>{let tt=new Map(q),bt=tt.get(l);return bt?(tt.set(l,{...bt,pagination:b,sorter:P,extra:A}),tt):q});},[l]),St=C.useCallback(b=>{if(b.action==="data_export"){let v={pagination:h.pagination,filters:h.filters,sorter:h.sorter,extra:h.extra},P=U(v,B),A={action:b.action,payload:P};V.current?.(A),J.current?.(y,A);return}V.current?.(b),J.current?.(y,b);},[y,h,U,B]);return C.useEffect(()=>{if(W.current.get(l)){W.current.set(l,false);return}let v={pagination:h.pagination,filters:h.filters,sorter:h.sorter,extra:h.extra},P=U(v,B);Q.current?.(P,v),Z.current?.(y,P,v);},[l,y,h,U,B]),{activeTabId:l,tabList:a,onTabChange:rt,id:y,loading:S,syncing:N,exporting:R,disabled:M||N||R,filters:h.filters,pagination:h.pagination,onFiltersChange:L,onChange:mt,onToolbarAction:St,...j}}var ja=[],Wa={},qa={action:"paginate",currentDataSource:[]},Xa={current:1,pageSize:10};function Za({id:t,fireOnMount:r=true,defaultFilters:e=ja,defaultPagination:a=Xa,defaultSorter:o=Wa,serializeOptions:i={},loading:n,exporting:s,disabled:c,serializeFn:l=dt,onChange:d,onToolbarAction:u}={}){let E=C.useRef(!r),y=C.useRef(d),p=C.useRef(u);y.current=d,p.current=u;let[S,N]=C.useState(e),[R,M]=C.useState(a),[B,U]=C.useState(o),[_,H]=C.useState(qa),O=C.useCallback(g=>{N(I=>typeof g=="function"?g(I):g),M(I=>({...I,current:1}));},[]),ut=C.useCallback((g,I,G,ot)=>{M(g),U(G),H(ot);},[]),pt=C.useCallback(g=>{if(g.action==="data_export"){let G=l({pagination:R,filters:S,sorter:B,extra:_},i);p.current?.({action:g.action,payload:G});return}p.current?.(g);},[S,R,B,_,l,i]);return C.useEffect(()=>{if(E.current){E.current=false;return}let g={pagination:R,filters:S,sorter:B,extra:_},I=l(g,i);y.current?.(I,g);},[R,S,B,_,l,i]),{id:t,loading:n,exporting:s,disabled:c||s,filters:S,pagination:R,onFiltersChange:O,onChange:ut,onToolbarAction:pt}}var Ja=[];function Qa(t={}){let{id:r="default",onChange:e,onToolbarAction:a,...o}=t,i=C.useRef(e),n=C.useRef(a);i.current=e,n.current=a;let s=C.useCallback((N,R,M)=>{i.current?.(R,M);},[]),c=C.useCallback((N,R)=>{n.current?.(R);},[]),l=C.useMemo(()=>[{id:r,value:r,label:"",columns:Ja,total:o.total,defaultFilters:o.defaultFilters,defaultPagination:o.defaultPagination,defaultSorter:o.defaultSorter,serializeOptions:o.serializeOptions,toolbarItems:o.toolbarItems,slots:o.slots,serializeFn:o.serializeFn,syncing:o.syncing,loading:o.loading,exporting:o.exporting,disabled:o.disabled}],[r,o.total,o.defaultFilters,o.toolbarItems,o.slots,o.defaultPagination,o.defaultSorter,o.serializeOptions,o.serializeFn,o.syncing,o.loading,o.exporting,o.disabled]),d=kt({fireOnMount:t.fireOnMount,tabList:l,onTableChange:s,onToolbarAction:c}),{activeTabId:u,tabList:E,columns:y,onTabChange:p,...S}=d;return S}
|
|
1
|
+
import {b,c as c$1,i as i$1,e as e$1,f as f$1,g as g$1,k as k$1}from'./chunk-IFQYYBK3.js';import {a,b as b$1,e,c,d}from'./chunk-M2VWZ5UW.js';import {g,h,l,o,f,n,p,m,j,i,k,M,r,s,A,t,B,C as C$1,E,D,F,H}from'./chunk-ZLJEIJBZ.js';import'./chunk-WOT6VMZA.js';import {Card,Table,ConfigProvider,Pagination,Tooltip,Checkbox}from'antd';import C from'react';import {createStore,useStore}from'zustand';import {persist}from'zustand/middleware';import {immer}from'zustand/middleware/immer';import {useShallow}from'zustand/react/shallow';import {jsx,jsxs,Fragment}from'react/jsx-runtime';import {AnimatePresence,m as m$1}from'motion/react';import {ArrowDownToLine,RefreshCw}from'lucide-react';var ht={tableSize:"middle",columnVisibility:{}},qe={tabStates:{},activeTabId:"",loading:false,exporting:false},st=(t,r)=>{t.tabStates[r]||(t.tabStates[r]={...ht});},be=t=>t.tabStates[t.activeTabId]??ht,Xe=(t,r)=>({...qe,activeTabId:r??"",setActiveTab:e=>t(a=>{a.activeTabId=e,st(a,e);}),setTableSize:e=>t(a=>{let o=a.activeTabId;st(a,o),a.tabStates[o].tableSize=e;}),setColumnVisibility:(e,a)=>t(o=>{let i=o.activeTabId;st(o,i),o.tabStates[i].columnVisibility[e]=a;}),setColumnVisibilityState:e=>t(a=>{let o=a.activeTabId;st(a,o);let i=a.tabStates[o].columnVisibility;a.tabStates[o].columnVisibility=typeof e=="function"?e(i):e;}),toggleColumnVisibility:e=>t(a=>{let o=a.activeTabId;st(a,o);let i=a.tabStates[o].columnVisibility[e];a.tabStates[o].columnVisibility[e]=!i;}),setLoading:e=>t({loading:e}),setExporting:e=>t({exporting:e}),resetCurrentTabState:()=>t(e=>{let a=e.activeTabId;e.tabStates[a]={...ht};})}),Ze=(t,r)=>createStore()(persist(immer(e=>Xe(e,r)),{name:t,partialize:e=>({tabStates:e.tabStates})})),xt=C.createContext(null),Je=["id","action","actions"],Te=C.createContext({});function fe({storageKey:t,initialTabId:r,alwaysShowingColumns:e,children:a$1}){let o=C.useRef(null);o.current||(o.current=Ze(t,r)),C.useEffect(()=>{let n=o.current;n&&!n.getState().activeTabId&&n.getState().setActiveTab(r);},[r]);let i=C.useMemo(()=>({alwaysShowingColumns:e??Je}),[e]);return jsx(Te.Provider,{value:i,children:jsx(xt.Provider,{value:o.current,children:jsx(ConfigProvider,{theme:a,children:a$1})})})}function ge(){return C.useContext(Te)}function Y(t){let r=C.useContext(xt);if(!r)throw new Error("useDataTableStore must be used within DataTableProvider");return useStore(r,t)}function Tt(){let t=C.useContext(xt);if(!t)throw new Error("useCurrentTabUIState must be used within DataTableProvider");return useStore(t,useShallow(r=>be(r)))}function ye(){return Y(t=>be(t).tableSize)}var ta={small:"min-h-22",middle:"min-h-30",large:"min-h-38"};function De({count:t,size:r="small",classNames:e,columns:a,scroll:o}){let i=C.useCallback(()=>ea(a,ta[r]),[a,r]);return jsx(Table,{rowKey:"id",size:r,rowHoverable:false,classNames:e,dataSource:Array.from({length:t},(n,s)=>({id:s})),pagination:false,scroll:o,children:a.map((n,s)=>jsx(Table.Column,{dataIndex:n.dataIndex,width:n.width,title:jsx(i$1,{className:"h-22 w-full animate-none bg-bg-antd"}),render:i,onCell:()=>s===0?{colSpan:a.length}:{colSpan:0}},n.dataIndex))})}var Ce=16;function ea(t,r){let e=t.length,o=`calc((100% - ${Ce*(e-1)}px) / ${e})`,i=t.some(n=>n.skeleton==="avatar"||n.skeleton==="double-line");return jsx("div",{className:f("flex items-center",r),style:{gap:`${Ce}px`},children:t.map((n,s)=>{let c=n?.key??s;return jsx("div",{style:{width:o},children:aa(n.skeleton,i)},c)})})}function aa(t,r){switch(t){case "avatar":return jsx(ra,{});case "double-line":return jsx(na,{});case "group":return jsx(ia,{needAlignment:r});default:return jsx(oa,{needAlignment:r})}}function oa({needAlignment:t}){return jsxs("div",{className:"grid h-full gap-4",children:[t&&jsx("div",{className:"h-12 w-1"}),jsx(i$1,{className:"h-10"})]})}function ra(){return jsxs("div",{className:"flex w-full items-center gap-6",children:[jsx(i$1,{className:"shrink-0 rounded-full",style:{width:"var(--avatar-size, 32px)",height:"var(--avatar-size, 32px)"}}),jsxs("div",{className:"grid flex-1 gap-4",children:[jsx(i$1,{className:"h-12 w-[60%]"}),jsx(i$1,{className:"h-10"})]})]})}function na(){return jsxs("div",{className:"grid h-full w-full gap-4 py-4",children:[jsx(i$1,{className:"h-12 w-[60%]"}),jsx(i$1,{className:"h-10"})]})}function ia({needAlignment:t}){return jsxs("div",{className:"grid h-full gap-4",children:[t&&jsx("div",{className:"h-12 w-1"}),jsxs("div",{className:"flex w-full items-center gap-4",children:[jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"}),jsx(i$1,{className:"h-10 w-[20%]"})]})]})}function he({className:t,options:r,...e}){return jsx(e$1,{className:f("w-full",t),...e,children:jsx(f$1,{variant:"line",size:"medium",className:"w-full px-12",children:r?.map(a=>jsx(g$1,{value:a.value,className:"py-8",children:a.label},a.id??a.value))})})}function Re({value:t,className:r,onChange:e,...a}){let o=b$1(),[i,n]=C.useState(false),s=C.useMemo(()=>[{groupType:"radio",value:t,options:[{label:o("large"),value:"large"},{label:o("middle"),value:"middle"},{label:o("compact"),value:"small"}],onValueChange:e}],[e,o,t]);return jsx(k$1,{side:"bottom",align:"end",collisionPadding:6,items:s,className:"min-w-100",open:i,onOpenChange:n,children:jsxs(M,{mode:"stroke",variant:"neutral",size:"small",className:f("gap-0",r,i&&"active"),...a,children:[jsx(Tooltip,{title:o("density"),mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})}),jsx("svg",{xmlns:"http://www.w3.org/2000/svg",className:"size-16",viewBox:"0 0 1024 1024",children:jsx("path",{d:"M840 836H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zm0-724H184c-4.4 0-8 3.6-8 8v60c0 4.4 3.6 8 8 8h656c4.4 0 8-3.6 8-8v-60c0-4.4-3.6-8-8-8zM610.8 378c6 0 9.4-7 5.7-11.7L515.7 238.7a7.14 7.14 0 0 0-11.3 0L403.6 366.3a7.23 7.23 0 0 0 5.7 11.7H476v268h-62.8c-6 0-9.4 7-5.7 11.7l100.8 127.5c2.9 3.7 8.5 3.7 11.3 0l100.8-127.5c3.7-4.7.4-11.7-5.7-11.7H548V378h62.8z"})})]})})}function ft(t){return t.key?String(t.key):Array.isArray(t.dataIndex)?t.dataIndex.join("."):String(t.dataIndex)}function ca(t){return typeof t=="string"&&t.length>0}function ve(t){return [Array.isArray(t.dataIndex)?t.dataIndex.join(" "):typeof t.dataIndex=="string"?t.dataIndex:null,typeof t.title=="string"?t.title:null,t.key!==null?String(t.key):null].filter(ca)}function we({disabled:t$1,columns:r$1}){let e=b$1(),{alwaysShowingColumns:a}=ge(),[o,i]=C.useState(false),{columnVisibility:n}=Tt(),s$1=Y(l=>l.setColumnVisibilityState),c=C.useCallback((l,d)=>{s$1(u=>({...u,[l]:d}));},[s$1]);return jsxs(r,{open:o,onOpenChange:i,children:[jsx(s,{asChild:true,children:jsx(M,{mode:"stroke",variant:"neutral",size:"small",className:f(o&&"active","relative gap-0"),disabled:t$1,startContent:jsx(A,{}),children:jsx(Tooltip,{title:e("column_set"),mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})})})}),jsx(t,{align:"end",side:"bottom",arrow:false,className:"w-fit rounded-xl p-0",sideOffset:6,children:jsxs(B,{children:[jsx(C$1,{autoFocus:true,placeholder:"Search..."}),jsx(E,{children:e("no_results")}),jsx(D,{className:"max-h-256",children:jsx(F,{children:r$1.map(l=>{let d=ft(l),u=n[d]!==false;return jsxs(H,{keywords:ve(l),onSelect:()=>c(d,!u),className:"group flex items-center gap-6",value:d,disabled:a?.includes(d),children:[jsx(Checkbox,{checked:u,tabIndex:-1,className:f("mr-4 opacity-100")}),jsx("span",{children:l.title})]},d)})})})]})})]})}function ga(t){return typeof t=="string"?{type:t,key:t}:t.type==="custom"?{type:"custom",key:t.key,hidden:t.hidden,render:t.render}:{type:t.type,key:t.key??t.type,hidden:t.hidden,btnProps:t.btnProps,tooltip:t.tooltip}}function ya({btnProps:t,tooltip:r,disabled:e,loading:a,syncing:o,onAction:i}){let n=b$1(),s=r??n("refresh");return jsx(M,{mode:"stroke",variant:"neutral",startContent:jsx(RefreshCw,{}),loading:o||a,disabled:e||a||o,className:"gap-0",onClick:()=>i({action:"data_refresh"}),...t,children:jsx(Tooltip,{title:s,mouseEnterDelay:1,children:jsx("div",{className:"absolute inset-0"})})})}function Sa(){let t=ye()??"small",r=Y(e=>e.setTableSize);return jsx(Re,{value:t,onChange:r})}function Ca({columns:t}){return jsx(we,{columns:t})}function Da({btnProps:t,disabled:r,loading:e,onAction:a}){let o=b$1();return jsx(M,{variant:"primary",startContent:jsx(ArrowDownToLine,{}),loading:e,disabled:r||e,onClick:()=>a({action:"data_export"}),...t,children:o("data_export")})}var ha={initial:{opacity:0,scale:.85,x:10,originX:1},animate:{opacity:1,scale:1,x:0,originX:1},exit:{opacity:0,scale:.85,x:10,originX:1}},xa={ease:[.26,.08,.25,1],duration:.25};function Ie({items:t,columns:r,disabled:e,loading:a,exporting:o,syncing:i,filter:n,onAction:s,className:c}){let l=C.useMemo(()=>t.map(p=>ga(p)),[t]),d=C.useMemo(()=>l.filter(p=>!p.hidden),[l]),u=C.useCallback(p=>{s?.(p);},[s]),E=C.useMemo(()=>({disabled:e,loading:a,exporting:o,columns:r,onAction:u}),[e,a,o,r,u]),S=p=>{let y={btnProps:p.btnProps,tooltip:p.tooltip,disabled:e,loading:a,onAction:u};switch(p.type){case "data_refresh":return jsx(ya,{...y,syncing:i});case "size_setting":return jsx(Sa,{});case "column_setting":return jsx(Ca,{columns:r});case "data_export":return jsx(Da,{...y,loading:o});case "custom":return p.render?.(E);case "filter_btn":return n;default:return null}};return jsx("div",{className:f("flex items-center gap-8",c),children:jsx(AnimatePresence,{mode:"popLayout",initial:false,children:d.map(p=>jsx(m$1.div,{layout:true,variants:ha,initial:"initial",animate:"animate",exit:"exit",transition:xa,children:S(p)},p.key))})})}var Pt=["data_refresh","size_setting","column_setting","filter_btn"];function Ae(t){return t.filter(r=>r.filter!==void 0).map(r=>{let{filter:e,dataIndex:a,title:o}=r,i=Array.isArray(a)?a.join("."):a,n=e.displayName??(typeof o=="string"?o:i);return {...e,columnId:i,displayName:n}})}function ze(t){return t.map(({filter:r,...e})=>e)}var Ra=31,va=44,Pa=250,wa=350,Ia={},wt=(t,r)=>{if(!t)return 0;let e=t.querySelectorAll(':scope [data-id^="data-table-card-"]'),a=0;return e.forEach(o=>{let i=o.getAttribute("data-id")==="data-table-card-content";a+=i?0:o.clientHeight;}),document.documentElement.clientHeight-r-window.scrollY-Ra-va-a-3};function Fe(t,r,{x:e="max-content",y:a,...o}=Ia){let[i,n]=C.useState(a),s=C.useRef(0),c=C.useRef(null);return C.useLayoutEffect(()=>(s.current=t.current?.offsetTop??0,c.current||(c.current=c$1(()=>{s.current=t.current?.offsetTop??0,n(wt(t.current,s.current));},Pa,false,true)),window.addEventListener("resize",c.current),()=>{c.current&&(window.removeEventListener("resize",c.current),c.current.cancel());}),[t]),C.useEffect(()=>{if(a!==void 0)return;n(wt(t.current,s.current));let l=setTimeout(()=>{n(wt(t.current,s.current));},wa);return ()=>{clearTimeout(l);}},[a,r,t]),{x:e,y:i,...o}}var Fa={pagination:{root:"m-0 py-16 px-8 [&_.ant-pagination-total-text]:mr-auto"},body:{cell:"px-12!"}},Na={root:"m-0 flex w-full [&_.ant-pagination-total-text]:ps-12 [&_.ant-pagination-total-text]:mr-auto"},ka={initial:{height:0,opacity:0},animate:{height:"auto",opacity:1},exit:{height:0,opacity:0}},Ba={initial:{opacity:0,y:24},animate:{opacity:1,y:0},exit:{opacity:0,y:-24}},_a={ease:[.26,.08,.25,1],duration:.3};function Oa({id:t,activeTabId:r,tabList:e$1,title:a,icon:o$1,description:i$1,variant:n$1,classNames:s,slots:c$1,columns:l$1,filters:d$1,defaultFilters:u,total:E,pagination:S,defaultPagination:p$1,loading:y,syncing:N,exporting:R,disabled:M,animated:B=true,style:U,toolbarItems:_,onTabChange:H,onChange:O,onFiltersChange:ut,onToolbarAction:pt,...g$1}){let I=b$1(),G=Y(w=>w.setActiveTab),ot=Y(w=>w.activeTabId),{tableSize:j$1,columnVisibility:h$1}=Tt();C.useEffect(()=>{t&&t!==ot&&G(t);},[t,ot,G]);let Z=C.useMemo(()=>l$1.filter(w=>w.hidden!==true),[l$1]),J=C.useMemo(()=>ze(Z),[Z]),Q=C.useMemo(()=>Ae(l$1),[l$1]),[V,W]=e({filters:d$1,defaultFilters:u,onFiltersChange:ut}),rt=C.useMemo(()=>J.filter(w=>h$1[ft(w)]!==false),[J,h$1]),L=C.useRef({pagination:{},filters:{},sorter:{},extra:{action:"paginate",currentDataSource:[]}}),[mt,yt]=C.useState(()=>({current:S?.current??p$1?.current??1,pageSize:S?.pageSize??p$1?.pageSize??10})),b=C.useCallback(w=>I("pagination_total").replace("{total}",String(w)),[I]),v=C.useCallback((w,St,nt,Ve)=>{let{pagination:Le,filters:Ke,sorter:Ue,extra:He}=L.current={...L.current,filters:St,sorter:nt,extra:Ve};O?.(Le,Ke,Ue,He);},[O]),P=C.useCallback((w,St)=>{let nt={current:w,pageSize:St};L.current={...L.current,pagination:nt},yt(nt),O?.(nt,L.current.filters,L.current.sorter,L.current.extra);},[O]),A=C.useMemo(()=>({disabled:y||M||N,size:j$1==="large"?"middle":j$1,...p$1,showTotal:b,onChange:P,onShowSizeChange:P,...S,...mt,total:E}),[y,N,M,j$1,b,S,P,p$1,mt,E]),q=C.useMemo(()=>({...Fa,header:{cell:g$1.bordered?"p-12":"px-12 py-10 border-t border-stroke-antd first:border-l last:border-r"}}),[g$1.bordered]),tt=e$1&&Array.isArray(e$1),bt=Math.min(A.pageSize??A.defaultPageSize??10,15),Oe=!!(y&&rt.some(w=>w.skeleton)),Ee=Q.length!==0,Bt=V&&V.length!==0,_t=C.useRef(null),Ot=Fe(_t,`${V?.length}-${r??t}`,g$1.scroll),Et=Oe?jsx(De,{id:`${t}-skeleton`,columns:rt,size:j$1,count:bt,classNames:q,scroll:Ot}):jsx(Table,{id:`${t}-data-table`,columns:rt,classNames:q,pagination:false,size:j$1,loading:y,showSorterTooltip:false,onChange:v,...g$1,scroll:Ot}),Me=n$1==="accent",Mt=jsx(c,{columns:Q,filters:V,actions:W,"data-id":"data-table-active-filters",className:"flex flex-wrap gap-6 px-12 pt-16",disabled:N||y,enableAutoClose:true});return jsxs(g,{ref:_t,className:f("relative h-full max-h-[calc(100vh-80px)] overflow-hidden rounded-2xl",s?.root),style:U,variant:n$1,children:[jsxs(h,{"data-id":"data-table-card-header",className:f("data-table-card-header grow-0 px-14 pt-12 pb-10",Me&&"pt-10",tt&&"border-b-0",s?.cardHeader),children:[jsxs(l,{className:f("flex items-center gap-12",s?.cardHeading),children:[o$1&&jsx(o,{className:f("size-34 border border-stone-200 bg-stone-100 text-text-sub",!!(a&&i$1)&&"size-44 [&_svg]:size-24",s?.cardIcon),children:o$1}),a&&jsxs("div",{className:f(i$1&&"flex flex-col gap-4"),children:[jsx(n,{children:a}),i$1&&jsx(p,{children:i$1})]})]}),jsx(m,{className:s?.cardToolbar,children:jsx(Ie,{onAction:pt,items:_??Pt,loading:y,syncing:N,disabled:M,exporting:R,filter:Ee&&jsx(d,{columns:Q,filters:V,actions:W,align:"end",enableAutoBack:true},`${t}-filter`),columns:Z})})]}),c$1?.cardSummary&&jsx(j,{"data-id":"data-table-card-summary",className:f("grow-0 p-16",s?.cardSummary),children:c$1.cardSummary}),tt&&jsx(j,{"data-id":"data-table-card-tabs",className:"grow-0 p-0",children:jsx(he,{value:r,options:e$1,onValueChange:H})}),jsx(AnimatePresence,{initial:false,children:Bt&&jsx(m$1.div,{"data-id":"data-table-card-filter-values",variants:ka,initial:"initial",animate:"animate",exit:"exit",children:jsx(j,{className:"p-0",children:Mt})},r)}),jsxs(i,{"data-id":"data-table-card-content",className:f("relative grow overflow-hidden px-12 py-16 pb-63",N&&"pointer-events-none",s?.cardContent),children:[c$1?.tableSummary&&jsx(j,{"data-id":"data-table-card-table-summary",className:f("grow-0 p-0 pb-16",s?.tableSummary),children:c$1.tableSummary}),B?jsx(AnimatePresence,{mode:"popLayout",initial:false,children:jsx(m$1.div,{variants:Ba,initial:"initial",animate:"animate",exit:"exit",transition:_a,children:Et},r)}):jsxs(Fragment,{children:[Bt&&jsx("div",{className:"mb-16",children:Mt}),Et]})]}),jsx(k,{"data-id":"data-table-card-pager",className:"flex min-h-64 w-full grow-0 items-center justify-between",children:jsx(Pagination,{classNames:Na,...A})}),c$1?.cardFooter&&jsx(k,{"data-id":"data-table-card-footer",className:f("grow-0 p-16",s?.cardFooter),children:c$1.cardFooter})]})}var Ea=import.meta.env?.VITE_MOCK_API_SSR??true;function Ma({storageKey:t,alwaysShowingColumns:r,...e}){let{tableStateStorageKey:a,pagination:o}=b(),i=t??a??"APP_UI_TABLE_CONFIG";if(Ea)return jsx(fe,{initialTabId:e.activeTabId??e.id,storageKey:i,alwaysShowingColumns:r,children:jsx(Oa,{defaultPagination:o,...e})});let{title:n,port:s,host:c,url:l,method:d,...u}=Va(e);return jsx(Card,{title:n,children:jsx(Table,{id:e.id,...u})})}function Va(t){let r=t.columns.map(({render:e,port:a,host:o,method:i,...n})=>({...n}));return {...t,columns:r}}var It={dateFormat:"YYYY-MM-DD",paginationKeys:{current:"current",pageSize:"pageSize"},sorterKeys:{field:"sortField",order:"sortOrder"},filtersKey:"filters",orderValues:{ascend:"asc",descend:"desc"},fieldMapping:{}};function At(t,r){return r[t]??t}function Ka(t){return t!==null&&typeof t=="object"&&"$d"in t&&typeof t.format=="function"}function zt(t,r){return t==null?null:Ka(t)?t.format(r):typeof t=="string"||typeof t=="number"||typeof t=="boolean"?t:String(t)}function Ua(t,r={}){let e={...It,...r},{pagination:a,filters:o,sorter:i}=t,n={};a.current!==void 0&&(n[e.paginationKeys.current]=a.current),a.pageSize!==void 0&&(n[e.paginationKeys.pageSize]=a.pageSize);let s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(n[e.sorterKeys.field]=String(s.field),n[e.sorterKeys.order]=e.orderValues[s.order]??s.order);let c={};for(let l of o){let d=At(l.columnId,e.fieldMapping);c[d]=l.values.map(u=>zt(u,e.dateFormat));}return Object.keys(c).length>0&&(n[e.filtersKey]=c),n}function dt(t,r={}){let e={...It,...r},{pagination:a,filters:o,sorter:i}=t,n={};a.current!==void 0&&(n[e.paginationKeys.current]=a.current),a.pageSize!==void 0&&(n[e.paginationKeys.pageSize]=a.pageSize);let s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(n[e.sorterKeys.field]=String(s.field),n[e.sorterKeys.order]=e.orderValues[s.order]??s.order);for(let c of o){let l=At(c.columnId,e.fieldMapping),d=c.values.map(u=>zt(u,e.dateFormat));n[l]=d.length===1?d[0]:d;}return n}function _e(t,r={}){let e={...It,...r},{pagination:a,filters:o,sorter:i}=t,n=new URLSearchParams;a.current!==void 0&&n.set(e.paginationKeys.current,String(a.current)),a.pageSize!==void 0&&n.set(e.paginationKeys.pageSize,String(a.pageSize));let s=Array.isArray(i)?i[0]:i;s?.field&&s?.order&&(n.set(e.sorterKeys.field,String(s.field)),n.set(e.sorterKeys.order,e.orderValues[s.order]??s.order));for(let c of o){let l=At(c.columnId,e.fieldMapping),d=c.values.map(u=>zt(u,e.dateFormat));n.set(l,d.join(","));}return n.toString()}function Ha(t,r={}){let e=_e(t,r);return new URLSearchParams(e)}var Ft=[],Nt={current:1,pageSize:10},Ga={};function $a(){return {filters:Ft,pagination:Nt,sorter:{},extra:{action:"paginate",currentDataSource:[]}}}function Ya(t){let r=new Map,e=$a();for(let a of t)r.set(a.value,{filters:a.defaultFilters??a.filters??e.filters,pagination:a.defaultPagination??a.pagination??e.pagination,sorter:a.defaultSorter??e.sorter,extra:e.extra});return r}function kt({fireOnMount:t=true,active:r,defaultActive:e,tabList:a,onTabChange:o,onTableChange:i,onToolbarAction:n}){let[s,c]=C.useState(()=>e??a[0]?.value??""),l=r??s,[d,u]=C.useState(()=>Ya(a)),E=C.useMemo(()=>a.find(b=>b.value===l)??a[0],[l,a]),{id:S,fireOnMount:p=t,loading:y,syncing:N,exporting:R,disabled:M,serializeOptions:B=Ga,serializeFn:U=dt,defaultFilters:_,defaultPagination:H,defaultSorter:O,filters:ut,pagination:pt,onChange:g,onToolbarAction:I,value:G,label:ot,...j}=E;C.useEffect(()=>{d.has(l)||u(b=>{if(b.has(l))return b;let v=new Map(b);return v.set(l,{filters:_??Ft,pagination:H??Nt,sorter:O??{},extra:{action:"paginate",currentDataSource:[]}}),v});},[l,d,_,H,O]);let h=C.useMemo(()=>d.get(l)??{filters:_??Ft,pagination:H??Nt,sorter:O??{},extra:{action:"paginate",currentDataSource:[]}},[d,l,_,H,O]),Z=C.useRef(i),J=C.useRef(n),Q=C.useRef(g),V=C.useRef(I);Z.current=i,J.current=n,Q.current=g,V.current=I;let W=C.useRef(new Map);C.useEffect(()=>{W.current.has(l)||W.current.set(l,!p);},[l,p]);let rt=C.useCallback(b=>{c(b),o?.(b);},[o]),L=C.useCallback(b=>{u(v=>{let P=new Map(v),A=P.get(l);if(!A)return v;let q=typeof b=="function"?b(A.filters):b;return P.set(l,{...A,filters:q,pagination:{...A.pagination,current:1}}),P});},[l]),mt=C.useCallback((b,v,P,A)=>{u(q=>{let tt=new Map(q),bt=tt.get(l);return bt?(tt.set(l,{...bt,pagination:b,sorter:P,extra:A}),tt):q});},[l]),yt=C.useCallback(b=>{if(b.action==="data_export"){let v={pagination:h.pagination,filters:h.filters,sorter:h.sorter,extra:h.extra},P=U(v,B),A={action:b.action,payload:P};V.current?.(A),J.current?.(S,A);return}V.current?.(b),J.current?.(S,b);},[S,h,U,B]);return C.useEffect(()=>{if(W.current.get(l)){W.current.set(l,false);return}let v={pagination:h.pagination,filters:h.filters,sorter:h.sorter,extra:h.extra},P=U(v,B);Q.current?.(P,v),Z.current?.(S,P,v);},[l,S,h,U,B]),{activeTabId:l,tabList:a,onTabChange:rt,id:S,loading:y,syncing:N,exporting:R,disabled:M||N||R,filters:h.filters,pagination:h.pagination,onFiltersChange:L,onChange:mt,onToolbarAction:yt,...j}}var ja=[],Wa={},qa={action:"paginate",currentDataSource:[]},Xa={current:1,pageSize:10};function Za({id:t,fireOnMount:r=true,defaultFilters:e=ja,defaultPagination:a=Xa,defaultSorter:o=Wa,serializeOptions:i={},loading:n,exporting:s,disabled:c,serializeFn:l=dt,onChange:d,onToolbarAction:u}={}){let E=C.useRef(!r),S=C.useRef(d),p=C.useRef(u);S.current=d,p.current=u;let[y,N]=C.useState(e),[R,M]=C.useState(a),[B,U]=C.useState(o),[_,H]=C.useState(qa),O=C.useCallback(g=>{N(I=>typeof g=="function"?g(I):g),M(I=>({...I,current:1}));},[]),ut=C.useCallback((g,I,G,ot)=>{M(g),U(G),H(ot);},[]),pt=C.useCallback(g=>{if(g.action==="data_export"){let G=l({pagination:R,filters:y,sorter:B,extra:_},i);p.current?.({action:g.action,payload:G});return}p.current?.(g);},[y,R,B,_,l,i]);return C.useEffect(()=>{if(E.current){E.current=false;return}let g={pagination:R,filters:y,sorter:B,extra:_},I=l(g,i);S.current?.(I,g);},[R,y,B,_,l,i]),{id:t,loading:n,exporting:s,disabled:c||s,filters:y,pagination:R,onFiltersChange:O,onChange:ut,onToolbarAction:pt}}var Ja=[];function Qa(t={}){let{id:r="default",onChange:e,onToolbarAction:a,...o}=t,i=C.useRef(e),n=C.useRef(a);i.current=e,n.current=a;let s=C.useCallback((N,R,M)=>{i.current?.(R,M);},[]),c=C.useCallback((N,R)=>{n.current?.(R);},[]),l=C.useMemo(()=>[{id:r,value:r,label:"",columns:Ja,total:o.total,defaultFilters:o.defaultFilters,defaultPagination:o.defaultPagination,defaultSorter:o.defaultSorter,serializeOptions:o.serializeOptions,toolbarItems:o.toolbarItems,slots:o.slots,serializeFn:o.serializeFn,syncing:o.syncing,loading:o.loading,exporting:o.exporting,disabled:o.disabled}],[r,o.total,o.defaultFilters,o.toolbarItems,o.slots,o.defaultPagination,o.defaultSorter,o.serializeOptions,o.serializeFn,o.syncing,o.loading,o.exporting,o.disabled]),d=kt({fireOnMount:t.fireOnMount,tabList:l,onTableChange:s,onToolbarAction:c}),{activeTabId:u,tabList:E,columns:S,onTabChange:p,...y}=d;return y}
|
|
2
2
|
export{Pt as DEFAULT_TOOLBAR_ITEMS,Ma as DataTable,Ua as serializeForPost,dt as serializeForPostFlat,_e as serializeForURL,Ha as serializeToURLSearchParams,Za as useDataTableState,Qa as useDataTableStateAdapter,kt as useTabsDataTableState};
|