@cryptlex/web-components 6.6.37 → 6.6.39

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.
@@ -1,2 +1,2 @@
1
- "use client";import{jsx as t,Fragment as F,jsxs as m}from"react/jsx-runtime";import{parseAbsolute as H,getLocalTimeZone as V}from"@internationalized/date";import{createContext as _e,useState as O,useMemo as K,useEffect as X,useContext as $e,useRef as ye,Fragment as je}from"react";import{Button as y}from"./button.js";import{useSensors as qe,useSensor as ue,PointerSensor as Ee,KeyboardSensor as ke,DndContext as He,closestCenter as Ve,DragOverlay as Ke}from"@dnd-kit/core";import{sortableKeyboardCoordinates as Be,SortableContext as Qe,verticalListSortingStrategy as Ge,arrayMove as Ue,useSortable as Ze}from"@dnd-kit/sortable";import{CSS as Xe}from"@dnd-kit/utilities";import{useQuery as Ye,useInfiniteQuery as Je}from"@tanstack/react-query";import{createColumnHelper as we,useReactTable as We,getCoreRowModel as et,flexRender as U}from"@tanstack/react-table";import{useLocalStorage as B}from"@uidotdev/usehooks";import{merge as tt}from"lodash-es";import{Badge as de}from"./badge.js";import{DatePicker as Q}from"./date-picker.js";import{EasyMenu as R,MenuItem as A}from"./menu.js";import{MultiSelect as nt}from"./multi-select.js";import{NumberField as rt}from"./numberfield.js";import{PopoverTrigger as at,Popover as ot}from"./popover.js";import{TextField as it}from"./textfield.js";import{formatDate as j}from"../utilities/date.js";import{useProjectName as Y,useResourceFormatter as J,ALL_OS as st}from"../utilities/resources.js";import{classNames as x}from"../utilities/theme.js";import{IcInfo as lt,IcMoreVertical as ct,IcRefresh as ut,IcMenu as dt,IcLayoutGrid as mt,IcColumns as gt,IcGrip as pt,IcFirst as ft,IcLeft as bt,IcRight as ht,IcLast as vt,IcSortAsc as St,IcSortDesc as yt,IcSortNone as wt,IcCheck as me,IcMinus as Nt,IcAccount as xt,IcLicense as Ct,IcDate as It,IcFile as Pt,IcFilter as Tt}from"./icons.js";import{MultipleIdSearchInput as At}from"./id-search.js";import{Loader as Ne}from"./loader.js";import{SearchField as Dt}from"./searchfield.js";import{Table as Ft,TableHeader as Ot,TableRow as ge,TableHead as Rt,TableBody as zt,TableCell as Mt}from"./table.js";import{CountryName as Lt}from"../utilities/countries.js";import{Duration as _t}from"../utilities/duration.js";import{formatDays as $t,formatFilesize as jt,formatNumber as qt}from"../utilities/numbers.js";import{Checkbox as pe}from"./checkbox.js";import{TooltipTrigger as Et,Tooltip as kt}from"./tooltip.js";import{getSubscriptionStartTriggerLabel as Ht,ALL_LICENSE_TYPES as Vt}from"./select-options.js";import{useCtxClient as Kt}from"../utilities/ctx-client.js";import{ControlledDialogProvider as Bt,useControlledDialog as xe}from"./dialog.js";import"class-variance-authority";import"react-aria-components";import"clsx";import"@icons-pack/react-simple-icons";import"./calendar.js";import"./form.js";import"./card.js";import"./datefield.js";import"../utilities/form.js";import"../utilities/form-context.js";import"@tanstack/react-form";import"./list-box.js";import"./select.js";import"./kbd.js";import"../utilities/string.js";import"../utilities/empty-option.js";function Qt(e){return e?e.desc?`-${e.id}`:`+${e.id}`:"-createdAt"}const Ce=we(),Gt=[Ce.accessor("checkbox",{header:({table:e})=>t(pe,{isIndeterminate:e.getIsSomeRowsSelected()&&!e.getIsAllPageRowsSelected(),isSelected:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected(),onChange:()=>e.toggleAllPageRowsSelected(),"aria-label":"Select all",size:"sm"}),cell:({row:e})=>t(pe,{isSelected:e.getIsSelected(),onChange:()=>e.toggleSelected(),"aria-label":"Select row",size:"sm"}),enableSorting:!1,enableHiding:!1})],C="TableActions";function Ut(e){return e.length===0?[]:[Ce.accessor(C,{header:"Actions",id:C,enableHiding:!1,cell:({row:r})=>t(rn,{label:t(ct,{}),data:r.original,items:e}),enableSorting:!1})]}function lr(){return we()}function cr({path:e,pathParameters:r,columns:a,filterConfig:o,columnsToHideByDefault:u={},allowSelection:n=!1,initialFilters:c=[],previewFilters:i,tableActions:s,Card:d,onRowNavigate:h,disableTableView:b}){const[S,z]=O({pagination:{pageIndex:0,pageSize:20},sorting:[]}),{sorting:M,pagination:P}=S,[g,p]=O(""),[f,w]=O({}),[D,$]=O(c),ee=K(()=>D.filter(l=>l.active!==!1).map(l=>l.operator==="between"&&Array.isArray(l.value)&&l.value.length===2?{[l.property]:{gte:l.value[0],lte:l.value[1]}}:Array.isArray(l.value)?{[l.property]:{[l.operator]:l.value.join(",")}}:{[l.property]:{[l.operator]:l.value}}).reduce((l,v)=>tt(l,v),{}),[D]),q={...D,page:P.pageIndex+1,limit:P.pageSize,sort:Qt(M[0]),search:g},Ae=Kt(),te=["get",e,q],E=`${e}_ctx`,[ne,re]=B(`${E}_column_order_preference`,[]),[ae,De]=B(`${E}_column_visibility_preference`,{id:!1,...u}),[Fe,Oe]=B(`${E}_view_mode_preference`,b?"card":"table"),T=b?"card":Fe,k=l=>{z(v=>({...v,...l}))};async function oe(l){const v=await Ae.GET(e,{params:{query:{page:l,limit:P.pageSize,sort:q.sort,search:q.search,...ee},path:r}});return{data:v.data??[],total:Number.parseInt(v.response.headers.get("Pagination-Count")||"0"),nextPage:l+1}}const L=Ye({queryKey:[...te,"table"],enabled:T==="table",queryFn:()=>oe(P.pageIndex+1),placeholderData:l=>l}),N=Je({queryKey:[...te,"card"],enabled:T==="card",initialPageParam:1,queryFn:({pageParam:l})=>oe(l),getNextPageParam:(l,v)=>v.flatMap(Le=>Le.data).length<l.total?l.nextPage:void 0}),ie=K(()=>T==="table"?L.data?.data??[]:N.data?.pages.flatMap(l=>l.data)??[],[T,L.data,N.data]),se=K(()=>T==="table"?L.data?.total??0:N.data?.pages[0]?.total??0,[T,L.data,N.data]),le=T==="table"?L:{...N,data:{data:ie,total:se},isLoading:N.isLoading,isFetching:N.isFetching,isError:N.isError,error:N.error,refetch:N.refetch},Re=s.filter(W),ze=[...n?Gt:[],...a,...Ut(Re??[])];function Me(l){return typeof l=="function"}function _(l,v){return Me(l)?l(v):l}const ce=We({data:ie,columns:ze,getCoreRowModel:et(),rowCount:se,manualPagination:!0,onPaginationChange:l=>{k({pagination:_(l,P)})},manualSorting:!0,onSortingChange:l=>{w({}),k({sorting:[..._(l,M)]})},manualFiltering:!0,onColumnVisibilityChange:l=>{De(_(l,ae))},onRowSelectionChange:l=>{w(_(l,f))},onColumnOrderChange:l=>{re(_(l,ne))},state:{sorting:M,columnVisibility:ae,pagination:P,rowSelection:f,columnOrder:ne},meta:{refetch:le.refetch}});return X(()=>{const l=ce.getAllLeafColumns();re([...l.filter(v=>v.id!==C).map(v=>v.id),...l.filter(v=>v.id===C).map(v=>v.id)])},[]),{tableState:S,updateTableState:k,query:le,setSearchQuery:p,searchQuery:g,tanTable:ce,mergedFilters:ee,filters:D,setFilters:$,filterConfig:o,tableActions:s,pathParameters:r,viewMode:T,setViewMode:Oe,Card:d,allowSelection:n,previewFilters:i,infiniteQuery:N,disableTableView:b,onRowNavigate:h}}const Ie=_e(null);function I(){const e=$e(Ie);if(!e)throw Error("DataTable should be used within DataTableProvider.");return e}function ur({children:e,...r}){return t(Ie.Provider,{value:r,children:e})}function dr({className:e,cardGridClassName:r,...a}){const{query:o,tanTable:u,viewMode:n,tableActions:c,Card:i}=I(),s=c.filter(W);return t(F,{children:m(Bt,{children:[t(Wt,{}),m("section",{...a,className:x(`z-20 flex flex-col ${n==="table"?"border rounded-md":""}`,e),children:[m("div",{className:"w-full overflow-auto relative rounded-md [scrollbar-width:none]",tabIndex:0,children:[o.isLoading&&t(fe,{className:"cursor-wait",children:t(Ne,{})}),!o.isLoading&&u.getRowModel().rows.length===0&&t(fe,{className:"cursor-not-allowed",children:!o.isFetching&&(o.isError?m("span",{className:"flex gap-3 justify-center items-center",children:[t(lt,{}),t("span",{children:o.error?.message})]}):o.data?.data?.length===0?t(F,{children:"No results found."}):t(F,{children:"Unknown error. Please contact customer support."}))}),!o.isLoading&&u.getRowModel().rows.length!==0&&(n==="card"&&i?t(Zt,{className:r,Card:i,actions:s}):t(tn,{className:"w-full"}))]}),n==="table"&&m("div",{className:"flex w-full justify-between border-t gap-icon py-2 px-icon bg-elevation-mid rounded-b-md overflow-x-auto",children:[m("div",{className:"flex gap-icon",children:[t(Xt,{}),t(Jt,{})]}),t(Yt,{})]})]})]})})}function Zt({Card:e,actions:r,className:a,...o}){const{tanTable:u,allowSelection:n}=I(),{infiniteQuery:c}=I(),i=ye(null);return X(()=>{const s=i.current;if(!s)return;const d=new IntersectionObserver(h=>{h[0].isIntersecting&&c.hasNextPage&&!c.isFetchingNextPage&&c.fetchNextPage()},{threshold:.1});return d.observe(s),()=>d.disconnect()},[c.hasNextPage,c.isFetchingNextPage]),m("div",{...o,className:x(a,"grid grid-cols-1 lg:grid-cols-2 gap-icon"),children:[u.getRowModel().rows.map(s=>{const d={isSelected:s.getIsSelected(),onToggle:()=>s.toggleSelected(),allowSelection:n};return t(je,{children:e(s.original,r,d)},s.id)}),t("div",{ref:i,className:"col-span-full h-4 flex items-center justify-center",children:c.isFetchingNextPage&&t(Ne,{})})]})}function fe({children:e,className:r}){return m(F,{children:[t("span",{className:x(r,"absolute top-0 bg-elevation-1 text-foreground z-20 size-full body-sm flex items-center justify-center"),children:e}),t("span",{className:"relative h-full w-0 block"})]})}function Xt(){if(Y()==="customer-portal")return null;const{tanTable:r}=I(),[a,o]=O(null),u=J(),n=qe(ue(Ee),ue(ke,{coordinateGetter:Be}));return t(He,{sensors:n,collisionDetection:Ve,onDragStart:i=>{const{active:s}=i;o(s.id.toString())},onDragEnd:i=>{const{active:s,over:d}=i;if(d&&s.id!==d.id){const h=r.getState().columnOrder,b=h.indexOf(s.id.toString()),S=h.indexOf(d.id.toString());r.setColumnOrder([...Ue(h,b,S)])}o(null)},children:m(Qe,{items:r.getState().columnOrder,strategy:Ge,children:[m(R,{label:m(F,{children:[t(gt,{className:"inline align-bottom me-1"}),"Columns"]}),selectionMode:"multiple",size:"sm",items:r.getAllFlatColumns(),selectedKeys:r.getVisibleFlatColumns().map(i=>i.id),children:[t(A,{onAction:()=>r.toggleAllColumnsVisible(),className:"italic",children:"(select all)"}),r.getState().columnOrder.map(i=>{const s=r.getAllFlatColumns().find(d=>d.id===i);return!s||s.id==="checkbox"||s.id===C?null:t(c,{column:s},s.id)})]}),t(Ke,{children:a?t("div",{className:"opacity-70 border-2 border-primary",children:u(a)}):null})]})});function c({column:i}){const{attributes:s,listeners:d,setNodeRef:h,transform:b,transition:S}=Ze({id:i.id}),z={transform:Xe.Transform.toString(b),transition:S,zIndex:"999"};return m(A,{ref:h,style:z,...s,id:i.id,onAction:()=>i.toggleVisibility(),isDisabled:!i.getCanHide(),className:"flex items-center",children:[t(pt,{...d,className:"size-icon cursor-grab"}),Z(i),i.getIsSorted()&&t(Pe,{className:"size-icon",direction:i.getIsSorted()})]})}}function Yt(){const{tanTable:e}=I(),r=e.getRowCount();return m("div",{className:"flex items-center gap-2",children:[t("span",{className:"whitespace-nowrap body-sm text-muted",children:`${e.getState().pagination.pageIndex*e.getState().pagination.pageSize+1} - ${Math.min((e.getState().pagination.pageIndex+1)*e.getState().pagination.pageSize,r)} of ${r?.toLocaleString()}`}),(e.getCanNextPage()||e.getCanPreviousPage())&&m(F,{children:[t(y,{"aria-label":"First page",onPress:()=>e.firstPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon-sm",children:t(ft,{})}),t(y,{"aria-label":"Previous page",onPress:()=>e.previousPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon-sm",children:t(bt,{})}),t(y,{"aria-label":"Next page",onPress:()=>e.nextPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon-sm",children:t(ht,{})}),t(y,{"aria-label":"Last page",onClick:()=>e.lastPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon-sm",children:t(vt,{})})]})]})}function Jt(){if(Y()==="customer-portal")return null;const{tanTable:r}=I(),a=[10,20,30,40,50];return t(R,{label:r.getState().pagination.pageSize.toString(),selectionMode:"single",size:"sm",selectedKeys:[r.getState().pagination.pageSize.toString()],items:a.map(o=>({id:o.toString(),value:o})),children:o=>t(A,{onAction:()=>r.setPageSize(o.value),children:o.value})})}function Wt(){const{query:e,tanTable:r,searchQuery:a,setSearchQuery:o,tableActions:u,viewMode:n,setViewMode:c,Card:i,previewFilters:s,disableTableView:d}=I(),h=r.getSelectedRowModel().rows.length>0,b=u.filter(S=>S.resourceType!=="single").filter(S=>S.resourceType==="multiple"===h);return m("section",{className:"flex justify-between my-0 mb-icon gap-icon overflow-x-auto py-1",children:[m("div",{className:"flex gap-icon",children:[t(y,{"aria-label":"Refresh",isPending:e.isFetching,onClick:()=>e.refetch(),variant:"neutral",size:"icon",children:t(ut,{})}),t(Dt,{value:a,onChange:o}),t(cn,{previewFilters:s})]}),m("div",{className:"flex gap-icon",children:[t(nn,{items:b,isFetching:e.isFetching}),i&&!d&&m("div",{className:"flex gap-1 bg-elevation-1 rounded-md overflow-hidden",children:[t(y,{variant:n==="table"?"primary":"neutral",size:"icon",onPress:()=>c("table"),"aria-label":"Table view",className:"border-none",children:t(dt,{})}),t(y,{variant:n==="card"?"primary":"neutral",size:"icon",onPress:()=>c("card"),"aria-label":"Card view",className:"border-none",children:t(mt,{})})]})]})]})}function Pe({direction:e,...r}){return e==="asc"?t(St,{className:"size-3.5",...r}):e==="desc"?t(yt,{className:"size-3.5",...r}):t(wt,{className:"size-3.5",...r})}function Z(e){const r=J(),a=e.columnDef.header;return typeof a=="string"?a:r(e.id)}function en(e){const r=e.column.columnDef.meta?.displayType,a=e.getValue();if(a==null)return null;switch(r){case"date":return t("span",{className:"tabular-nums",children:j(a)});case"number":return t("span",{className:"block text-right tabular-nums",children:qt(a)});case"boolean":return t(de,{variant:a?"success":"destructive",className:"capitalize",children:String(a)});case"badge":return t(de,{className:"w-full",children:String(a)});case"country":return t(Lt,{value:a});case"enum":return t("span",{className:"uppercase w-full",children:String(a)});case"fileSize":return jt(a);case"days":return $t(a);case"os":return st[a]??a;case"licenseType":return Vt[a]??a;case"subscriptionInterval":return _t.formatISODuration(a);case"subscriptionStartTrigger":return Ht(a);default:return String(a)}}function be({header:e}){const r=e.column.columnDef.header;return typeof r=="string"||!r?Z(e.column):typeof r=="function"?typeof r(e.getContext())=="string"?Z(e.column):U(r,e.getContext()):U(r,e.getContext())}function tn({className:e}){const{tanTable:r,onRowNavigate:a}=I(),o=(u,n,c="z-50")=>x("text-left body-sm font-medium whitespace-nowrap",u&&`sticky right-0 ${c} text-center justify-center`,n);return m(Ft,{className:x("table-auto border-0 rounded-md",e),children:[t(Ot,{className:"sticky top-0 z-10 rounded-md",children:r.getHeaderGroups().map(u=>t(ge,{children:u.headers.map(n=>m(Rt,{scope:"col",colSpan:n.colSpan,className:o(n.id===C,(n.id===C,"bg-elevation-mid")),children:[!n.column.getCanSort()&&!n.isPlaceholder&&t("div",{className:x("w-full flex items-center gap-1 text-xs uppercase",n.id===C?"justify-center":"justify-start"),children:t(be,{header:n})}),n.column.getCanSort()&&m(y,{variant:"ghost",size:"none",className:x("w-full p-1 rounded-md uppercase text-muted text-xs",n.id===C?"justify-center":"justify-start",n.column.getIsSorted()?"text-primary":""),onPress:n.column.getToggleSortingHandler(),children:[t("span",{children:t(be,{header:n})}),n.column.getIsSorted()&&t(Pe,{direction:n.column.getIsSorted()})]})]},n.id))},u.id))}),t(zt,{children:r.getRowModel().rows.map(u=>t(ge,{className:x("transition-colors bg-elevation-1 data-[selected=true]:bg-primary/10 hover:bg-muted-foreground/20",a&&"cursor-pointer focus-visible:outline focus-visible:outline-ring"),"data-selected":u.getIsSelected(),...a&&{role:"link",tabIndex:0,onClick:n=>{n.target.closest('a, button, input, select, textarea, [role="button"]')||a(u.original)},onKeyDown:n=>{n.key==="Enter"&&a(u.original)}},children:u.getVisibleCells().map(n=>{const c=n.column.id===C,i=n.column.columnDef.meta?.displayType?en(n):U(n.column.columnDef.cell,n.getContext());return t(Mt,{className:x(o(c,c?"bg-elevation-1":"","z-1"),c&&"flex justify-center items-center"),children:i},n.id)})},u.id))})]})}function he(e){return e.resourceType==="none"}function W(e){return e.resourceType==="single"}function ve(e){return e.resourceType==="multiple"}function nn({items:e,isFetching:r}){const{openDialog:a,closeDialog:o}=xe(),{tanTable:u}=I();function n(i,s){return i.isDisabled?he(i)?i.isDisabled():ve(i)?i.isDisabled(s):!1:!1}const c=u.getSelectedRowModel().rows.map(i=>i.original);return t(F,{children:e.map((i,s)=>{const d=i.icon,h=n(i,c)||r;return m(y,{"aria-label":i.label,type:"button",isDisabled:h,className:"animate-in fade-in slide-in-from-right-15 duration-300 transition-transform",onPress:b=>{const S={event:b,openDialog:a,closeDialog:o};he(i)?i.onPress(S):ve(i)&&i.onPress({...S,data:c})},variant:i.variant??"neutral",children:[d&&t(d,{"aria-hidden":!0}),t("span",{children:i.label})]},`${i.label}-${s}`)})})}function rn({label:e,items:r,data:a}){const{openDialog:o,closeDialog:u}=xe();return r.length<4?t("div",{className:"flex items-center gap-2",children:r.map((n,c)=>{const i=n.icon,s=typeof n.label=="function"?n.label(a):n.label;return m(Et,{children:[t(y,{"aria-label":typeof s=="string"?s:void 0,isDisabled:n.isDisabled?.(a)??!1,variant:"ghost",size:"icon",onPress:()=>{const d={openDialog:o,closeDialog:u};n.onPress({...d,data:a})},children:t(i,{className:"size-icon"})}),t(kt,{children:s})]},`${c}-${typeof s=="string"?s:""}`)})}):t(R,{"aria-label":"Actions",label:e,size:"icon",children:r.map((n,c)=>{const i=n.icon,s=typeof n.label=="function"?n.label(a):n.label;return m(A,{id:typeof s=="string"?s:void 0,isDisabled:n.isDisabled?.(a)??!1,onAction:()=>{const d={openDialog:o,closeDialog:u};W(n)&&n.onPress({...d,data:a})},children:[t(i,{className:"size-icon"}),s]},`${c}-${typeof s=="string"?s:""}`)})})}const mr=["eq","ne","cn","nc","sw","ew","in","nin","gt","gte","lt","lte","between"],Se={eq:"equal to",ne:"not equal to",cn:"contains",nc:"does not contain",sw:"starts with",ew:"ends with",in:"includes",nin:"does not include",gt:"greater than",gte:"greater than or equal to",lt:"less than",lte:"less than or equal to",between:"between"},an={eq:"=",ne:"≠",cn:"contains",nc:"!contains",sw:"starts with",ew:"ends with",in:"in",nin:"not in",gt:">",gte:"≥",lt:"<",lte:"≤",between:"↔"};function G(e,r){const a=`${r}-${Date.now()}`,o=Te[e][0];switch(e){case"bool":return{id:a,type:e,property:r,operator:o,value:!0};case"string":return{id:a,type:e,property:r,operator:o,value:""};case"date":return{id:a,type:e,property:r,operator:o,value:o==="between"?[new Date().toISOString(),new Date().toISOString()]:new Date().toISOString()};case"id":return{id:a,type:e,property:r,operator:o,value:""};case"id-search":return{id:a,type:e,property:r,operator:o,value:[]};case"enum":return{id:a,type:e,property:r,operator:o,value:new Set};case"number":return{id:a,type:e,property:r,operator:o,value:0}}}const Te={bool:["eq"],enum:["in","nin"],id:["in","nin"],"id-search":["in","nin"],string:["eq","ne","cn","nc","sw","ew","in","nin"],date:["between","lt","gt"],number:["eq","ne","gt","gte","lt","lte"]};function on(e){switch(e.type){case"string":case"id":return e.value??"";case"number":return e.value?.toString()??"";case"bool":return e.value?"true":"false";case"date":if(Array.isArray(e.value)){const[r,a]=e.value;return`${j(r,{dateStyle:"short"})??""} – ${j(a,{dateStyle:"short"})??""}`}return e.value?j(e.value,{dateStyle:"short"})??"":"";case"enum":return e.value&&e.value.size>0?`${e.value.size} selected`:"";case"id-search":return e.value&&e.value.length>0?e.value.length===1?"1 item":`${e.value.length} items`:""}}function sn({filter:e,filterConfig:r,pathParameters:a,onChange:o}){if(e.type==="string"||e.type==="id")return t(it,{autoFocus:!0,value:e.value??"",onChange:o,"aria-label":"Filter value"});if(e.type==="number")return t(rt,{autoFocus:!0,value:e.value,onChange:o,"aria-label":"Filter value"});if(e.type==="bool")return m(R,{autoFocus:!0,label:e.value?"True":"False",variant:"neutral","aria-label":"Filter value",children:[t(A,{onAction:()=>o(!0),children:"True"}),t(A,{onAction:()=>o(!1),children:"False"})]});if(e.type==="date"){if(e.operator==="between"){const[n,c]=Array.isArray(e.value)?e.value:[new Date().toISOString(),new Date().toISOString()],i=H(n,V()),s=H(c,V());return m("div",{className:"flex flex-col gap-icon",children:[t(Q,{autoFocus:!0,hideTimeZone:!0,label:"From",value:i,onChange:d=>o([d?d.toAbsoluteString():n,c])}),t(Q,{hideTimeZone:!0,label:"To",value:s,onChange:d=>o([n,d?d.toAbsoluteString():c])})]})}const u=e.value&&!Array.isArray(e.value)?H(e.value,V()):null;return t(Q,{autoFocus:!0,hideTimeZone:!0,value:u,onChange:n=>o(n?n.toAbsoluteString():new Date().toISOString()),"aria-label":"Filter date"})}if(e.type==="enum"){const u=r[e.property];return u.type!=="enum"?null:t(nt,{autoFocus:!0,items:u.options,value:e.value??new Set,onChange:o,"aria-label":"Filter value"})}if(e.type==="id-search"){const u=r[e.property];if(u.type!=="id-search")return null;const n=a?{path:a,query:{}}:void 0;return t(At,{autoFocus:!0,path:u.path,accessor:u.accessor,defaultParams:n,value:e.value??[],onChange:o,"aria-label":"Filter value"})}return null}function ln({filter:e,filterConfig:r,pathParameters:a,resourceFormatter:o,onRemove:u,onUpdate:n,isOpen:c,onOpenChange:i}){const s=Te[e.type],d=on(e),h=Y();return m(at,{isOpen:c,onOpenChange:i,children:[t("div",{className:"relative",children:m(y,{type:"button",variant:e.active===!1?"neutral":"primary_neutral",className:"animate-in slide-in-from-left-10 fade-in",children:[t("span",{className:"font-medium",children:o(e.property)}),h!=="customer-portal"&&t("span",{children:an[e.operator]}),h!=="customer-portal"&&d&&t("span",{children:d}),e.active!==!1&&t("span",{className:"size-2 z-100 rounded-full bg-primary ms-1"})]})}),t(ot,{className:"p-icon min-w-48",children:m("div",{className:"flex flex-col gap-icon",children:[s.length>1&&t(R,{label:Se[e.operator],variant:"neutral","aria-label":"Change operator",children:s.map(b=>t(A,{onAction:()=>n({operator:b}),children:Se[b]},b))}),t(sn,{filter:e,filterConfig:r,pathParameters:a,onChange:b=>n({value:b})}),t(y,{type:"button",variant:"neutral",className:"self-end",onPress:u,"aria-label":`Remove ${o(e.property)} filter`,children:"Clear"})]})})]})}function cn({className:e,previewFilters:r,...a}){const{filters:o,query:u,setFilters:n,filterConfig:c,pathParameters:i}=I(),s=J(),d=Object.keys(c).filter(g=>!o.some(p=>p.property===g)).sort(),[h,b]=O(null),S=ye(!1);X(()=>{if(!S.current&&o.length===0){const g=[];r&&r.length>0&&g.push(...r.filter(p=>c[p]).map(p=>({...G(c[p].type,p),active:!1,isPreview:!0}))),g.length>0&&n(g)}S.current=!0},[]);const z=(g,p)=>{const f=G(g,p);n([...o,f]),b(f.id)},M=g=>{o.find(f=>f.id===g)?.isPreview?n(o.map(f=>f.id===g?{...G(c[f.property].type,f.property),active:!1,isPreview:!0}:f)):n(o.filter(f=>f.id!==g))},P=(g,p)=>{n(o.map(f=>{if(f.id!==g)return f;let w=p.value!==void 0?p.value:f.value;const D=p.operator??f.operator;if(f.type==="date"&&p.operator!==void 0)if(D==="between"&&!Array.isArray(w)){const $=typeof w=="string"?w:new Date().toISOString();w=[$,$]}else D!=="between"&&Array.isArray(w)&&(w=w[0]??new Date().toISOString());return{...f,...p,value:w,active:!0}}))};return m("section",{...a,className:x("flex flex-wrap gap-icon items-center",e),children:[o.filter(g=>g.property in c).map(g=>t(ln,{filter:g,filterConfig:c,pathParameters:i,resourceFormatter:s,onRemove:()=>M(g.id),onUpdate:p=>P(g.id,p),isOpen:h===g.id,onOpenChange:p=>b(p?g.id:null)},g.id)),d.length>0&&t(R,{label:t(Tt,{}),isDisabled:u.isPending,variant:"neutral","aria-label":"Add filter",children:d.map(g=>{const p=c[g].type,f=un[p];return m(A,{className:"!justify-between",onAction:()=>z(p,g),children:[s(g),t(f,{})]},g)})})]})}const un={"id-search":Pt,bool:me,date:It,enum:Ct,id:xt,number:Nt,string:me};export{Se as C,cn as D,dr as DataTable,Ie as DataTableContext,ur as DataTableProvider,mr as F,lr as getColumnHelper,I as useDataTable,cr as useDataTableState};
1
+ "use client";import{jsx as t,Fragment as O,jsxs as g}from"react/jsx-runtime";import{parseAbsolute as V,getLocalTimeZone as k}from"@internationalized/date";import{createContext as Le,useState as F,useMemo as K,useEffect as X,useContext as _e,useRef as Se,Fragment as $e}from"react";import{Button as y}from"./button.js";import{useSensors as Ee,useSensor as ue,PointerSensor as je,KeyboardSensor as qe,DndContext as He,closestCenter as Ve,DragOverlay as ke}from"@dnd-kit/core";import{sortableKeyboardCoordinates as Ke,SortableContext as Be,verticalListSortingStrategy as Qe,arrayMove as Ge,useSortable as Ue}from"@dnd-kit/sortable";import{CSS as Ze}from"@dnd-kit/utilities";import{useQuery as Xe,useInfiniteQuery as Ye}from"@tanstack/react-query";import{createColumnHelper as ye,useReactTable as Je,getCoreRowModel as We,flexRender as U}from"@tanstack/react-table";import{useLocalStorage as B}from"@uidotdev/usehooks";import{merge as et}from"lodash-es";import{Badge as de}from"./badge.js";import{DatePicker as Q}from"./date-picker.js";import{EasyMenu as R,MenuItem as A}from"./menu.js";import{MultiSelect as tt}from"./multi-select.js";import{NumberField as nt}from"./numberfield.js";import{PopoverTrigger as rt,Popover as at}from"./popover.js";import{TextField as it}from"./textfield.js";import{formatDate as E}from"../utilities/date.js";import{useProjectName as Y,useResourceFormatter as J,ALL_OS as ot}from"../utilities/resources.js";import{classNames as I}from"../utilities/theme.js";import{IcMoreVertical as st,IcRefresh as lt,IcMenu as ct,IcLayoutGrid as ut,IcColumns as dt,IcGrip as mt,IcFirst as gt,IcLeft as pt,IcRight as ft,IcLast as bt,IcInfo as ht,IcSortAsc as vt,IcSortDesc as St,IcSortNone as yt,IcCheck as me,IcMinus as wt,IcAccount as xt,IcLicense as Nt,IcDate as Ct,IcFile as It,IcFilter as Pt}from"./icons.js";import{MultipleIdSearchInput as Tt}from"./id-search.js";import{Loader as we}from"./loader.js";import{SearchField as At}from"./searchfield.js";import{Table as Dt,TableHeader as Ft,TableRow as ge,TableHead as Ot,TableBody as Rt,TableCell as zt}from"./table.js";import{CountryName as Mt}from"../utilities/countries.js";import{Duration as Lt}from"../utilities/duration.js";import{formatDays as _t,formatFilesize as $t,formatNumber as Et}from"../utilities/numbers.js";import{Checkbox as pe}from"./checkbox.js";import{TooltipTrigger as jt,Tooltip as qt}from"./tooltip.js";import{getSubscriptionStartTriggerLabel as Ht,ALL_LICENSE_TYPES as Vt}from"./select-options.js";import{useCtxClient as kt}from"../utilities/ctx-client.js";import{ControlledDialogProvider as Kt,useControlledDialog as xe}from"./dialog.js";import"class-variance-authority";import"react-aria-components";import"clsx";import"@icons-pack/react-simple-icons";import"./calendar.js";import"./form.js";import"./card.js";import"./datefield.js";import"../utilities/form.js";import"../utilities/form-context.js";import"@tanstack/react-form";import"./list-box.js";import"./select.js";import"./kbd.js";import"../utilities/string.js";import"../utilities/empty-option.js";function Bt(e){return e?e.desc?`-${e.id}`:`+${e.id}`:"-createdAt"}const Ne=ye(),Qt=[Ne.accessor("checkbox",{header:({table:e})=>t(pe,{isIndeterminate:e.getIsSomeRowsSelected()&&!e.getIsAllPageRowsSelected(),isSelected:e.getIsAllPageRowsSelected()||e.getIsSomePageRowsSelected(),onChange:()=>e.toggleAllPageRowsSelected(),"aria-label":"Select all",size:"sm"}),cell:({row:e})=>t(pe,{isSelected:e.getIsSelected(),onChange:()=>e.toggleSelected(),"aria-label":"Select row",size:"sm"}),enableSorting:!1,enableHiding:!1})],N="TableActions";function Gt(e){return e.length===0?[]:[Ne.accessor(N,{header:"Actions",id:N,enableHiding:!1,cell:({row:r})=>t(nn,{label:t(st,{}),data:r.original,items:e}),enableSorting:!1})]}function sr(){return ye()}function lr({path:e,pathParameters:r,columns:a,filterConfig:i,columnsToHideByDefault:u={},allowSelection:n=!1,initialFilters:c=[],previewFilters:o,tableActions:s,Card:d,onRowNavigate:h,disableTableView:b}){const[S,z]=F({pagination:{pageIndex:0,pageSize:20},sorting:[]}),{sorting:M,pagination:P}=S,[m,p]=F(""),[f,w]=F({}),[D,$]=F(c),ee=K(()=>D.filter(l=>l.active!==!1).map(l=>l.operator==="between"&&Array.isArray(l.value)&&l.value.length===2?{[l.property]:{gte:l.value[0],lte:l.value[1]}}:Array.isArray(l.value)?{[l.property]:{[l.operator]:l.value.join(",")}}:{[l.property]:{[l.operator]:l.value}}).reduce((l,v)=>et(l,v),{}),[D]),j={...D,page:P.pageIndex+1,limit:P.pageSize,sort:Bt(M[0]),search:m},Te=kt(),te=["get",e,j],q=`${e}_ctx`,[ne,re]=B(`${q}_column_order_preference`,[]),[ae,Ae]=B(`${q}_column_visibility_preference`,{id:!1,...u}),[De,Fe]=B(`${q}_view_mode_preference`,b?"card":"table"),T=b?"card":De,H=l=>{z(v=>({...v,...l}))};async function ie(l){const v=await Te.GET(e,{params:{query:{page:l,limit:P.pageSize,sort:j.sort,search:j.search,...ee},path:r}});return{data:v.data??[],total:Number.parseInt(v.response.headers.get("Pagination-Count")||"0"),nextPage:l+1}}const L=Xe({queryKey:[...te,"table"],enabled:T==="table",queryFn:()=>ie(P.pageIndex+1),placeholderData:l=>l}),x=Ye({queryKey:[...te,"card"],enabled:T==="card",initialPageParam:1,queryFn:({pageParam:l})=>ie(l),getNextPageParam:(l,v)=>v.flatMap(Me=>Me.data).length<l.total?l.nextPage:void 0}),oe=K(()=>T==="table"?L.data?.data??[]:x.data?.pages.flatMap(l=>l.data)??[],[T,L.data,x.data]),se=K(()=>T==="table"?L.data?.total??0:x.data?.pages[0]?.total??0,[T,L.data,x.data]),le=T==="table"?L:{...x,data:{data:oe,total:se},isLoading:x.isLoading,isFetching:x.isFetching,isError:x.isError,error:x.error,refetch:x.refetch},Oe=s.filter(W),Re=[...n?Qt:[],...a,...Gt(Oe??[])];function ze(l){return typeof l=="function"}function _(l,v){return ze(l)?l(v):l}const ce=Je({data:oe,columns:Re,getCoreRowModel:We(),rowCount:se,manualPagination:!0,onPaginationChange:l=>{H({pagination:_(l,P)})},manualSorting:!0,onSortingChange:l=>{w({}),H({sorting:[..._(l,M)]})},manualFiltering:!0,onColumnVisibilityChange:l=>{Ae(_(l,ae))},onRowSelectionChange:l=>{w(_(l,f))},onColumnOrderChange:l=>{re(_(l,ne))},state:{sorting:M,columnVisibility:ae,pagination:P,rowSelection:f,columnOrder:ne},meta:{refetch:le.refetch}});return X(()=>{const l=ce.getAllLeafColumns();re([...l.filter(v=>v.id!==N).map(v=>v.id),...l.filter(v=>v.id===N).map(v=>v.id)])},[]),{tableState:S,updateTableState:H,query:le,setSearchQuery:p,searchQuery:m,tanTable:ce,mergedFilters:ee,filters:D,setFilters:$,filterConfig:i,tableActions:s,pathParameters:r,viewMode:T,setViewMode:Fe,Card:d,allowSelection:n,previewFilters:o,infiniteQuery:x,disableTableView:b,onRowNavigate:h}}const Ce=Le(null);function C(){const e=_e(Ce);if(!e)throw Error("DataTable should be used within DataTableProvider.");return e}function cr({children:e,...r}){return t(Ce.Provider,{value:r,children:e})}function ur({className:e,cardGridClassName:r,...a}){const{query:i,tanTable:u,viewMode:n,tableActions:c,Card:o}=C(),s=c.filter(W),d=n==="card"&&!!o;function h(){return i.isFetching?null:i.isError?g("span",{className:"flex gap-3 items-center",children:[t(ht,{}),t("span",{children:i.error?.message})]}):i.data?.data?.length===0?t(O,{children:"No results found."}):t(O,{children:"Unknown error. Please contact customer support."})}function b(){return i.isLoading?t("div",{className:"body-sm flex items-center justify-center min-h-32",children:t(we,{})}):u.getRowModel().rows.length===0?t("div",{className:"body-sm flex items-center justify-center min-h-32 text-muted",children:t(h,{})}):d?t(Ut,{className:r,Card:o,actions:s}):t(en,{className:"w-full"})}return t(O,{children:g(Kt,{children:[t(Jt,{}),g("section",{...a,className:I("z-20 flex flex-col",n==="table"?"border rounded-md":"",e),children:[t("div",{className:"w-full overflow-auto relative rounded-md [scrollbar-width:none]",tabIndex:0,children:t(b,{})}),n==="table"&&g("div",{className:"flex w-full justify-between border-t gap-icon py-2 px-icon bg-elevation-mid rounded-b-md overflow-x-auto",children:[g("div",{className:"flex gap-icon",children:[t(Zt,{}),t(Yt,{})]}),t(Xt,{})]})]})]})})}function Ut({Card:e,actions:r,className:a,...i}){const{tanTable:u,allowSelection:n}=C(),{infiniteQuery:c}=C(),o=Se(null);return X(()=>{const s=o.current;if(!s)return;const d=new IntersectionObserver(h=>{h[0].isIntersecting&&c.hasNextPage&&!c.isFetchingNextPage&&c.fetchNextPage()},{threshold:.1});return d.observe(s),()=>d.disconnect()},[c.hasNextPage,c.isFetchingNextPage]),g("div",{...i,className:I(a,"grid grid-cols-1 lg:grid-cols-2 gap-icon"),children:[u.getRowModel().rows.map(s=>{const d={isSelected:s.getIsSelected(),onToggle:()=>s.toggleSelected(),allowSelection:n};return t($e,{children:e(s.original,r,d)},s.id)}),t("div",{ref:o,className:"col-span-full h-4 flex items-center justify-center",children:c.isFetchingNextPage&&t(we,{})})]})}function Zt(){if(Y()==="customer-portal")return null;const{tanTable:r}=C(),[a,i]=F(null),u=J(),n=Ee(ue(je),ue(qe,{coordinateGetter:Ke}));return t(He,{sensors:n,collisionDetection:Ve,onDragStart:o=>{const{active:s}=o;i(s.id.toString())},onDragEnd:o=>{const{active:s,over:d}=o;if(d&&s.id!==d.id){const h=r.getState().columnOrder,b=h.indexOf(s.id.toString()),S=h.indexOf(d.id.toString());r.setColumnOrder([...Ge(h,b,S)])}i(null)},children:g(Be,{items:r.getState().columnOrder,strategy:Qe,children:[g(R,{label:g(O,{children:[t(dt,{className:"inline align-bottom me-1"}),"Columns"]}),selectionMode:"multiple",size:"sm",items:r.getAllFlatColumns(),selectedKeys:r.getVisibleFlatColumns().map(o=>o.id),children:[t(A,{onAction:()=>r.toggleAllColumnsVisible(),className:"italic",children:"(select all)"}),r.getState().columnOrder.map(o=>{const s=r.getAllFlatColumns().find(d=>d.id===o);return!s||s.id==="checkbox"||s.id===N?null:t(c,{column:s},s.id)})]}),t(ke,{children:a?t("div",{className:"opacity-70 border-2 border-primary",children:u(a)}):null})]})});function c({column:o}){const{attributes:s,listeners:d,setNodeRef:h,transform:b,transition:S}=Ue({id:o.id}),z={transform:Ze.Transform.toString(b),transition:S,zIndex:"999"};return g(A,{ref:h,style:z,...s,id:o.id,onAction:()=>o.toggleVisibility(),isDisabled:!o.getCanHide(),className:"flex items-center",children:[t(mt,{...d,className:"size-icon cursor-grab"}),Z(o),o.getIsSorted()&&t(Ie,{className:"size-icon",direction:o.getIsSorted()})]})}}function Xt(){const{tanTable:e}=C(),r=e.getRowCount();return g("div",{className:"flex items-center gap-2",children:[t("span",{className:"whitespace-nowrap body-sm text-muted",children:`${e.getState().pagination.pageIndex*e.getState().pagination.pageSize+1} - ${Math.min((e.getState().pagination.pageIndex+1)*e.getState().pagination.pageSize,r)} of ${r?.toLocaleString()}`}),(e.getCanNextPage()||e.getCanPreviousPage())&&g(O,{children:[t(y,{"aria-label":"First page",onPress:()=>e.firstPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon-sm",children:t(gt,{})}),t(y,{"aria-label":"Previous page",onPress:()=>e.previousPage(),isDisabled:!e.getCanPreviousPage(),variant:"neutral",size:"icon-sm",children:t(pt,{})}),t(y,{"aria-label":"Next page",onPress:()=>e.nextPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon-sm",children:t(ft,{})}),t(y,{"aria-label":"Last page",onClick:()=>e.lastPage(),isDisabled:!e.getCanNextPage(),variant:"neutral",size:"icon-sm",children:t(bt,{})})]})]})}function Yt(){if(Y()==="customer-portal")return null;const{tanTable:r}=C(),a=[10,20,30,40,50];return t(R,{label:r.getState().pagination.pageSize.toString(),selectionMode:"single",size:"sm",selectedKeys:[r.getState().pagination.pageSize.toString()],items:a.map(i=>({id:i.toString(),value:i})),children:i=>t(A,{onAction:()=>r.setPageSize(i.value),children:i.value})})}function Jt(){const{query:e,tanTable:r,searchQuery:a,setSearchQuery:i,tableActions:u,viewMode:n,setViewMode:c,Card:o,previewFilters:s,disableTableView:d}=C(),h=r.getSelectedRowModel().rows.length>0,b=u.filter(S=>S.resourceType!=="single").filter(S=>S.resourceType==="multiple"===h);return g("section",{className:"flex justify-between my-0 mb-icon gap-icon overflow-x-auto py-1",children:[g("div",{className:"flex gap-icon",children:[t(y,{"aria-label":"Refresh",isPending:e.isFetching,onClick:()=>e.refetch(),variant:"neutral",size:"icon",children:t(lt,{})}),t(At,{value:a,onChange:i}),t(ln,{previewFilters:s})]}),g("div",{className:"flex gap-icon",children:[t(tn,{items:b,isFetching:e.isFetching}),o&&!d&&g("div",{className:"flex gap-1 bg-elevation-1 rounded-md overflow-hidden",children:[t(y,{variant:n==="table"?"primary":"neutral",size:"icon",onPress:()=>c("table"),"aria-label":"Table view",className:"border-none",children:t(ct,{})}),t(y,{variant:n==="card"?"primary":"neutral",size:"icon",onPress:()=>c("card"),"aria-label":"Card view",className:"border-none",children:t(ut,{})})]})]})]})}function Ie({direction:e,...r}){return e==="asc"?t(vt,{className:"size-3.5",...r}):e==="desc"?t(St,{className:"size-3.5",...r}):t(yt,{className:"size-3.5",...r})}function Z(e){const r=J(),a=e.columnDef.header;return typeof a=="string"?a:r(e.id)}function Wt(e){const r=e.column.columnDef.meta?.displayType,a=e.getValue();if(a==null)return null;switch(r){case"date":return t("span",{className:"tabular-nums",children:E(a)});case"number":return t("span",{className:"block text-right tabular-nums",children:Et(a)});case"boolean":return t(de,{variant:a?"success":"destructive",className:"capitalize",children:String(a)});case"badge":return t(de,{className:"w-full",children:String(a)});case"country":return t(Mt,{value:a});case"enum":return t("span",{className:"uppercase w-full",children:String(a)});case"fileSize":return $t(a);case"days":return _t(a);case"os":return ot[a]??a;case"licenseType":return Vt[a]??a;case"subscriptionInterval":return Lt.formatISODuration(a);case"subscriptionStartTrigger":return Ht(a);default:return String(a)}}function fe({header:e}){const r=e.column.columnDef.header;return typeof r=="string"||!r?Z(e.column):typeof r=="function"?typeof r(e.getContext())=="string"?Z(e.column):U(r,e.getContext()):U(r,e.getContext())}function en({className:e}){const{tanTable:r,onRowNavigate:a}=C(),i=(u,n,c="z-50")=>I("text-left body-sm font-medium whitespace-nowrap",u&&`sticky right-0 ${c} text-center justify-center`,n);return g(Dt,{className:I("table-auto border-0 rounded-md",e),children:[t(Ft,{className:"sticky top-0 z-10 rounded-md",children:r.getHeaderGroups().map(u=>t(ge,{children:u.headers.map(n=>g(Ot,{scope:"col",colSpan:n.colSpan,className:i(n.id===N,(n.id===N,"bg-elevation-mid")),children:[!n.column.getCanSort()&&!n.isPlaceholder&&t("div",{className:I("w-full flex items-center gap-1 text-xs uppercase",n.id===N?"justify-center":"justify-start"),children:t(fe,{header:n})}),n.column.getCanSort()&&g(y,{variant:"ghost",size:"none",className:I("w-full p-1 rounded-md uppercase text-muted text-xs",n.id===N?"justify-center":"justify-start",n.column.getIsSorted()?"text-primary":""),onPress:n.column.getToggleSortingHandler(),children:[t("span",{children:t(fe,{header:n})}),n.column.getIsSorted()&&t(Ie,{direction:n.column.getIsSorted()})]})]},n.id))},u.id))}),t(Rt,{children:r.getRowModel().rows.map(u=>t(ge,{className:I("transition-colors bg-elevation-1 data-[selected=true]:bg-primary/10 hover:bg-muted-foreground/20",a&&"cursor-pointer focus-visible:outline focus-visible:outline-ring"),"data-selected":u.getIsSelected(),...a&&{role:"link",tabIndex:0,onClick:n=>{n.target.closest('a, button, input, select, textarea, [role="button"]')||a(u.original)},onKeyDown:n=>{n.key==="Enter"&&a(u.original)}},children:u.getVisibleCells().map(n=>{const c=n.column.id===N,o=n.column.columnDef.meta?.displayType?Wt(n):U(n.column.columnDef.cell,n.getContext());return t(zt,{className:I(i(c,c?"bg-elevation-1":"","z-1"),c&&"flex justify-center items-center"),children:o},n.id)})},u.id))})]})}function be(e){return e.resourceType==="none"}function W(e){return e.resourceType==="single"}function he(e){return e.resourceType==="multiple"}function tn({items:e,isFetching:r}){const{openDialog:a,closeDialog:i}=xe(),{tanTable:u}=C();function n(o,s){return o.isDisabled?be(o)?o.isDisabled():he(o)?o.isDisabled(s):!1:!1}const c=u.getSelectedRowModel().rows.map(o=>o.original);return t(O,{children:e.map((o,s)=>{const d=o.icon,h=n(o,c)||r;return g(y,{"aria-label":o.label,type:"button",isDisabled:h,className:"animate-in fade-in slide-in-from-right-15 duration-300 transition-transform",onPress:b=>{const S={event:b,openDialog:a,closeDialog:i};be(o)?o.onPress(S):he(o)&&o.onPress({...S,data:c})},variant:o.variant??"neutral",children:[d&&t(d,{"aria-hidden":!0}),t("span",{children:o.label})]},`${o.label}-${s}`)})})}function nn({label:e,items:r,data:a}){const{openDialog:i,closeDialog:u}=xe();return r.length<4?t("div",{className:"flex items-center gap-2",children:r.map((n,c)=>{const o=n.icon,s=typeof n.label=="function"?n.label(a):n.label;return g(jt,{children:[t(y,{"aria-label":typeof s=="string"?s:void 0,isDisabled:n.isDisabled?.(a)??!1,variant:"ghost",size:"icon",onPress:()=>{const d={openDialog:i,closeDialog:u};n.onPress({...d,data:a})},children:t(o,{className:"size-icon"})}),t(qt,{children:s})]},`${c}-${typeof s=="string"?s:""}`)})}):t(R,{"aria-label":"Actions",label:e,size:"icon",children:r.map((n,c)=>{const o=n.icon,s=typeof n.label=="function"?n.label(a):n.label;return g(A,{id:typeof s=="string"?s:void 0,isDisabled:n.isDisabled?.(a)??!1,onAction:()=>{const d={openDialog:i,closeDialog:u};W(n)&&n.onPress({...d,data:a})},children:[t(o,{className:"size-icon"}),s]},`${c}-${typeof s=="string"?s:""}`)})})}const dr=["eq","ne","cn","nc","sw","ew","in","nin","gt","gte","lt","lte","between"],ve={eq:"equal to",ne:"not equal to",cn:"contains",nc:"does not contain",sw:"starts with",ew:"ends with",in:"includes",nin:"does not include",gt:"greater than",gte:"greater than or equal to",lt:"less than",lte:"less than or equal to",between:"between"},rn={eq:"=",ne:"≠",cn:"contains",nc:"!contains",sw:"starts with",ew:"ends with",in:"in",nin:"not in",gt:">",gte:"≥",lt:"<",lte:"≤",between:"↔"};function G(e,r){const a=`${r}-${Date.now()}`,i=Pe[e][0];switch(e){case"bool":return{id:a,type:e,property:r,operator:i,value:!0};case"string":return{id:a,type:e,property:r,operator:i,value:""};case"date":return{id:a,type:e,property:r,operator:i,value:i==="between"?[new Date().toISOString(),new Date().toISOString()]:new Date().toISOString()};case"id":return{id:a,type:e,property:r,operator:i,value:""};case"id-search":return{id:a,type:e,property:r,operator:i,value:[]};case"enum":return{id:a,type:e,property:r,operator:i,value:new Set};case"number":return{id:a,type:e,property:r,operator:i,value:0}}}const Pe={bool:["eq"],enum:["in","nin"],id:["in","nin"],"id-search":["in","nin"],string:["eq","ne","cn","nc","sw","ew","in","nin"],date:["between","lt","gt"],number:["eq","ne","gt","gte","lt","lte"]};function an(e){switch(e.type){case"string":case"id":return e.value??"";case"number":return e.value?.toString()??"";case"bool":return e.value?"true":"false";case"date":if(Array.isArray(e.value)){const[r,a]=e.value;return`${E(r,{dateStyle:"short"})??""} – ${E(a,{dateStyle:"short"})??""}`}return e.value?E(e.value,{dateStyle:"short"})??"":"";case"enum":return e.value&&e.value.size>0?`${e.value.size} selected`:"";case"id-search":return e.value&&e.value.length>0?e.value.length===1?"1 item":`${e.value.length} items`:""}}function on({filter:e,filterConfig:r,pathParameters:a,onChange:i}){if(e.type==="string"||e.type==="id")return t(it,{autoFocus:!0,value:e.value??"",onChange:i,"aria-label":"Filter value"});if(e.type==="number")return t(nt,{autoFocus:!0,value:e.value,onChange:i,"aria-label":"Filter value"});if(e.type==="bool")return g(R,{autoFocus:!0,label:e.value?"True":"False",variant:"neutral","aria-label":"Filter value",children:[t(A,{onAction:()=>i(!0),children:"True"}),t(A,{onAction:()=>i(!1),children:"False"})]});if(e.type==="date"){if(e.operator==="between"){const[n,c]=Array.isArray(e.value)?e.value:[new Date().toISOString(),new Date().toISOString()],o=V(n,k()),s=V(c,k());return g("div",{className:"flex flex-col gap-icon",children:[t(Q,{autoFocus:!0,hideTimeZone:!0,label:"From",value:o,onChange:d=>i([d?d.toAbsoluteString():n,c])}),t(Q,{hideTimeZone:!0,label:"To",value:s,onChange:d=>i([n,d?d.toAbsoluteString():c])})]})}const u=e.value&&!Array.isArray(e.value)?V(e.value,k()):null;return t(Q,{autoFocus:!0,hideTimeZone:!0,value:u,onChange:n=>i(n?n.toAbsoluteString():new Date().toISOString()),"aria-label":"Filter date"})}if(e.type==="enum"){const u=r[e.property];return u.type!=="enum"?null:t(tt,{autoFocus:!0,items:u.options,value:e.value??new Set,onChange:i,"aria-label":"Filter value"})}if(e.type==="id-search"){const u=r[e.property];if(u.type!=="id-search")return null;const n=a?{path:a,query:{}}:void 0;return t(Tt,{autoFocus:!0,path:u.path,accessor:u.accessor,defaultParams:n,value:e.value??[],onChange:i,"aria-label":"Filter value"})}return null}function sn({filter:e,filterConfig:r,pathParameters:a,resourceFormatter:i,onRemove:u,onUpdate:n,isOpen:c,onOpenChange:o}){const s=Pe[e.type],d=an(e),h=Y();return g(rt,{isOpen:c,onOpenChange:o,children:[t("div",{className:"relative",children:g(y,{type:"button",variant:e.active===!1?"neutral":"primary_neutral",className:"animate-in slide-in-from-left-10 fade-in",children:[t("span",{className:"font-medium",children:i(e.property)}),h!=="customer-portal"&&t("span",{children:rn[e.operator]}),h!=="customer-portal"&&d&&t("span",{children:d}),e.active!==!1&&t("span",{className:"size-2 z-100 rounded-full bg-primary ms-1"})]})}),t(at,{className:"p-icon min-w-48",children:g("div",{className:"flex flex-col gap-icon",children:[s.length>1&&t(R,{label:ve[e.operator],variant:"neutral","aria-label":"Change operator",children:s.map(b=>t(A,{onAction:()=>n({operator:b}),children:ve[b]},b))}),t(on,{filter:e,filterConfig:r,pathParameters:a,onChange:b=>n({value:b})}),t(y,{type:"button",variant:"neutral",className:"self-end",onPress:u,"aria-label":`Remove ${i(e.property)} filter`,children:"Clear"})]})})]})}function ln({className:e,previewFilters:r,...a}){const{filters:i,query:u,setFilters:n,filterConfig:c,pathParameters:o}=C(),s=J(),d=Object.keys(c).filter(m=>!i.some(p=>p.property===m)).sort(),[h,b]=F(null),S=Se(!1);X(()=>{if(!S.current&&i.length===0){const m=[];r&&r.length>0&&m.push(...r.filter(p=>c[p]).map(p=>({...G(c[p].type,p),active:!1,isPreview:!0}))),m.length>0&&n(m)}S.current=!0},[]);const z=(m,p)=>{const f=G(m,p);n([...i,f]),b(f.id)},M=m=>{i.find(f=>f.id===m)?.isPreview?n(i.map(f=>f.id===m?{...G(c[f.property].type,f.property),active:!1,isPreview:!0}:f)):n(i.filter(f=>f.id!==m))},P=(m,p)=>{n(i.map(f=>{if(f.id!==m)return f;let w=p.value!==void 0?p.value:f.value;const D=p.operator??f.operator;if(f.type==="date"&&p.operator!==void 0)if(D==="between"&&!Array.isArray(w)){const $=typeof w=="string"?w:new Date().toISOString();w=[$,$]}else D!=="between"&&Array.isArray(w)&&(w=w[0]??new Date().toISOString());return{...f,...p,value:w,active:!0}}))};return g("section",{...a,className:I("flex flex-wrap gap-icon items-center",e),children:[i.filter(m=>m.property in c).map(m=>t(sn,{filter:m,filterConfig:c,pathParameters:o,resourceFormatter:s,onRemove:()=>M(m.id),onUpdate:p=>P(m.id,p),isOpen:h===m.id,onOpenChange:p=>b(p?m.id:null)},m.id)),d.length>0&&t(R,{label:t(Pt,{}),isDisabled:u.isPending,variant:"neutral","aria-label":"Add filter",children:d.map(m=>{const p=c[m].type,f=cn[p];return g(A,{className:"!justify-between",onAction:()=>z(p,m),children:[s(m),t(f,{})]},m)})})]})}const cn={"id-search":It,bool:me,date:Ct,enum:Nt,id:xt,number:wt,string:me};export{ve as C,ln as D,ur as DataTable,Ce as DataTableContext,cr as DataTableProvider,dr as F,sr as getColumnHelper,C as useDataTable,lr as useDataTableState};
2
2
  //# sourceMappingURL=data-table.js.map