@lax-wp/design-system 0.13.33 → 0.13.34
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/dist/components/button/Button.cjs.js +5 -5
- package/dist/components/button/Button.cjs.js.map +1 -1
- package/dist/components/button/Button.es.js +18 -18
- package/dist/components/button/Button.es.js.map +1 -1
- package/dist/components/button/IconButton.cjs.js +1 -1
- package/dist/components/button/IconButton.cjs.js.map +1 -1
- package/dist/components/button/IconButton.es.js +8 -8
- package/dist/components/button/IconButton.es.js.map +1 -1
- package/dist/components/buttons/option-button/OptionButton.cjs.js +1 -1
- package/dist/components/buttons/option-button/OptionButton.cjs.js.map +1 -1
- package/dist/components/buttons/option-button/OptionButton.es.js +1 -1
- package/dist/components/buttons/option-button/OptionButton.es.js.map +1 -1
- package/dist/components/data-display/comparison/components/Header.cjs.js +1 -1
- package/dist/components/data-display/comparison/components/Header.cjs.js.map +1 -1
- package/dist/components/data-display/comparison/components/Header.es.js +13 -13
- package/dist/components/data-display/comparison/components/Header.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/DataCell.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/rows/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/rows/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/rows/index.es.js +104 -101
- package/dist/components/data-display/infinite-table/body/rows/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/constants.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/constants.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/constants.d.ts +6 -0
- package/dist/components/data-display/infinite-table/constants.es.js +17 -16
- package/dist/components/data-display/infinite-table/constants.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/index.es.js +188 -187
- package/dist/components/data-display/infinite-table/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/useRowHeight.cjs.js +2 -0
- package/dist/components/data-display/infinite-table/useRowHeight.cjs.js.map +1 -0
- package/dist/components/data-display/infinite-table/useRowHeight.d.ts +15 -0
- package/dist/components/data-display/infinite-table/useRowHeight.es.js +24 -0
- package/dist/components/data-display/infinite-table/useRowHeight.es.js.map +1 -0
- package/dist/components/data-display/tag/Tag.cjs.js +1 -1
- package/dist/components/data-display/tag/Tag.cjs.js.map +1 -1
- package/dist/components/data-display/tag/Tag.es.js +11 -9
- package/dist/components/data-display/tag/Tag.es.js.map +1 -1
- package/dist/components/floating-bar/FloatingBar.cjs.js +1 -1
- package/dist/components/floating-bar/FloatingBar.cjs.js.map +1 -1
- package/dist/components/floating-bar/FloatingBar.es.js +9 -9
- package/dist/components/floating-bar/FloatingBar.es.js.map +1 -1
- package/dist/components/forms/base-input-field/BaseInputField.cjs.js +2 -2
- package/dist/components/forms/base-input-field/BaseInputField.cjs.js.map +1 -1
- package/dist/components/forms/base-input-field/BaseInputField.es.js +40 -42
- package/dist/components/forms/base-input-field/BaseInputField.es.js.map +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.cjs.js +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.cjs.js.map +1 -1
- package/dist/components/forms/creatable-select/CreatableSelect.es.js +14 -15
- package/dist/components/forms/creatable-select/CreatableSelect.es.js.map +1 -1
- package/dist/components/forms/currency-input/CurrencyInputField.cjs.js +1 -1
- package/dist/components/forms/currency-input/CurrencyInputField.cjs.js.map +1 -1
- package/dist/components/forms/currency-input/CurrencyInputField.es.js +57 -65
- package/dist/components/forms/currency-input/CurrencyInputField.es.js.map +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.cjs.js +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.cjs.js.map +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.es.js +33 -33
- package/dist/components/forms/date-time-field/DateTimeField.es.js.map +1 -1
- package/dist/components/forms/debounce-input/DebounceInputField.cjs.js +1 -1
- package/dist/components/forms/debounce-input/DebounceInputField.cjs.js.map +1 -1
- package/dist/components/forms/debounce-input/DebounceInputField.es.js +2 -2
- package/dist/components/forms/debounce-input/DebounceInputField.es.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.cjs.js +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.cjs.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.es.js +7 -7
- package/dist/components/forms/dynamic-data-input/DynamicDataInput.es.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js +17 -19
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js.map +1 -1
- package/dist/components/forms/field-options/Item.cjs.js +1 -1
- package/dist/components/forms/field-options/Item.cjs.js.map +1 -1
- package/dist/components/forms/field-options/Item.es.js +5 -5
- package/dist/components/forms/field-options/Item.es.js.map +1 -1
- package/dist/components/forms/formula-input/FormulaInput.cjs.js +1 -1
- package/dist/components/forms/formula-input/FormulaInput.cjs.js.map +1 -1
- package/dist/components/forms/formula-input/FormulaInput.es.js +10 -10
- package/dist/components/forms/formula-input/FormulaInput.es.js.map +1 -1
- package/dist/components/forms/icon-picker/IconPicker.cjs.js +1 -1
- package/dist/components/forms/icon-picker/IconPicker.cjs.js.map +1 -1
- package/dist/components/forms/icon-picker/IconPicker.es.js +42 -57
- package/dist/components/forms/icon-picker/IconPicker.es.js.map +1 -1
- package/dist/components/forms/input-field/InputField.cjs.js.map +1 -1
- package/dist/components/forms/input-field/InputField.es.js.map +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js.map +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.es.js +54 -60
- package/dist/components/forms/master-data-input/MasterDataInputField.es.js.map +1 -1
- package/dist/components/forms/md-input/RichMarkdownInput.cjs.js +3 -3
- package/dist/components/forms/md-input/RichMarkdownInput.cjs.js.map +1 -1
- package/dist/components/forms/md-input/RichMarkdownInput.es.js +63 -63
- package/dist/components/forms/md-input/RichMarkdownInput.es.js.map +1 -1
- package/dist/components/forms/number-input-field/NumberInputField.cjs.js +1 -1
- package/dist/components/forms/number-input-field/NumberInputField.cjs.js.map +1 -1
- package/dist/components/forms/number-input-field/NumberInputField.es.js +5 -5
- package/dist/components/forms/number-input-field/NumberInputField.es.js.map +1 -1
- package/dist/components/forms/percentage-input/PercentageInputField.cjs.js +2 -2
- package/dist/components/forms/percentage-input/PercentageInputField.cjs.js.map +1 -1
- package/dist/components/forms/percentage-input/PercentageInputField.es.js +20 -20
- package/dist/components/forms/percentage-input/PercentageInputField.es.js.map +1 -1
- package/dist/components/forms/search-bar/SearchBar.cjs.js +1 -1
- package/dist/components/forms/search-bar/SearchBar.cjs.js.map +1 -1
- package/dist/components/forms/search-bar/SearchBar.es.js +16 -16
- package/dist/components/forms/search-bar/SearchBar.es.js.map +1 -1
- package/dist/components/forms/select-field/SelectField.cjs.js +2 -2
- package/dist/components/forms/select-field/SelectField.cjs.js.map +1 -1
- package/dist/components/forms/select-field/SelectField.d.ts +4 -0
- package/dist/components/forms/select-field/SelectField.es.js +202 -203
- package/dist/components/forms/select-field/SelectField.es.js.map +1 -1
- package/dist/components/forms/text-area-field/TextAreaField.cjs.js +1 -1
- package/dist/components/forms/text-area-field/TextAreaField.cjs.js.map +1 -1
- package/dist/components/forms/text-area-field/TextAreaField.es.js +14 -14
- package/dist/components/forms/text-area-field/TextAreaField.es.js.map +1 -1
- package/dist/components/forms/toggle/Toggle.cjs.js +1 -1
- package/dist/components/forms/toggle/Toggle.cjs.js.map +1 -1
- package/dist/components/forms/toggle/Toggle.es.js +65 -59
- package/dist/components/forms/toggle/Toggle.es.js.map +1 -1
- package/dist/components/navigation/accordion/Accordion.cjs.js +1 -1
- package/dist/components/navigation/accordion/Accordion.cjs.js.map +1 -1
- package/dist/components/navigation/accordion/Accordion.es.js +5 -5
- package/dist/components/navigation/accordion/Accordion.es.js.map +1 -1
- package/dist/components/navigation/stepper/Stepper.cjs.js +1 -1
- package/dist/components/navigation/stepper/Stepper.cjs.js.map +1 -1
- package/dist/components/navigation/stepper/Stepper.es.js +1 -1
- package/dist/components/navigation/stepper/Stepper.es.js.map +1 -1
- package/dist/components/navigation/tabs/TabOptions.cjs.js +1 -1
- package/dist/components/navigation/tabs/TabOptions.cjs.js.map +1 -1
- package/dist/components/navigation/tabs/TabOptions.es.js +15 -15
- package/dist/components/navigation/tabs/TabOptions.es.js.map +1 -1
- package/dist/components/navigation/tabs/TabSwitch.cjs.js +1 -1
- package/dist/components/navigation/tabs/TabSwitch.cjs.js.map +1 -1
- package/dist/components/navigation/tabs/TabSwitch.es.js +7 -7
- package/dist/components/navigation/tabs/TabSwitch.es.js.map +1 -1
- package/dist/components/navigation/tabs/Tabs.cjs.js +1 -1
- package/dist/components/navigation/tabs/Tabs.cjs.js.map +1 -1
- package/dist/components/navigation/tabs/Tabs.es.js +1 -1
- package/dist/components/navigation/tabs/Tabs.es.js.map +1 -1
- package/dist/components/tooltip/Tooltip.cjs.js +1 -1
- package/dist/components/tooltip/Tooltip.cjs.js.map +1 -1
- package/dist/components/tooltip/Tooltip.es.js +19 -19
- package/dist/components/tooltip/Tooltip.es.js.map +1 -1
- package/dist/components/user-avatar/UserAvatar.cjs.js +1 -1
- package/dist/components/user-avatar/UserAvatar.cjs.js.map +1 -1
- package/dist/components/user-avatar/UserAvatar.d.ts +1 -1
- package/dist/components/user-avatar/UserAvatar.es.js +40 -38
- package/dist/components/user-avatar/UserAvatar.es.js.map +1 -1
- package/dist/components/user-avatar/constants.cjs.js +1 -1
- package/dist/components/user-avatar/constants.cjs.js.map +1 -1
- package/dist/components/user-avatar/constants.d.ts +1 -0
- package/dist/components/user-avatar/constants.es.js +10 -9
- package/dist/components/user-avatar/constants.es.js.map +1 -1
- package/dist/design-system.css +1 -1
- package/package.json +2 -3
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),xs=require("../../../hooks/useCheckbox.cjs.js"),Ss=require("../../../providers/design-system-provider/hooks.cjs.js"),Nt=require("../../../utils/table.cjs.js"),Rt=require("../../button/Button.cjs.js"),bs=require("../../floating-bar/FloatingBar.cjs.js"),be=require("../typography/Typography.cjs.js"),N=require("@dnd-kit/core"),l=require("react"),ps=require("react-virtualized-auto-sizer"),ws=require("react-dom"),At=require("react-table"),Fs=require("./body/index.cjs.js"),Dt=require("./validateCell.cjs.js"),Ts=require("./body/rows/row.cjs.js"),Os=require("./context.cjs.js"),js=require("./CurrencyDropdownPortal.cjs.js"),ys=require("./head/index.cjs.js"),Es=require("./PendingEditsFloatingBar.cjs.js"),h=require("./constants.cjs.js"),ks=require("../empty-state/NoDataFoundWidgets.cjs.js"),Ns=require("../empty-state/NoDataFound.cjs.js"),Rs=require("../../icon/icons.generated.cjs.js"),As=ps.AutoSizer,_t="Create Column",Ds=(_,T)=>`button-admin-${_.toLowerCase().trim().replace(/\s+/g,"-").replace(/[^a-z0-9-_]/g,"")||T}`,_s=l.memo(({tableKey:_,searchConfig:T={search:"",handleSearch:()=>null,allowAStarSearch:!1},filterConfig:a={columnFilters:[],onFilter:()=>null,onRemoveFilter:()=>null,onClearFilter:()=>null,onResetFilter:()=>Promise.resolve({}),asyncRowOptionsFilter:()=>Promise.resolve({})},sortConfig:m={onSort:()=>null,columnSort:{field:"",order:""},onRemoveSort:()=>null},headerConfig:u={showExportButton:null,showFilters:!0,showSorts:!0,showSearch:!0,showTableView:!0,showTableViewAsModal:!1,content:null,postContent:null,preContent:null,isLoading:!1,showDivider:!1},hoverConfig:Mt=null,columns:j,modelName:J,enableMasterDataEnumSuggestions:G=!1,agreementCategoryId:X,agreementDomainId:Y,agreementId:Z,modificationId:Q,lineItemRowId:K,enumSuggestionsData:ee,data:f=[],onRowClick:Lt,showHeader:pe,tableActions:qe,rowOptions:C,hideRowOptionWidth:We,checkboxUtilities:M,isLoading:te=!1,onScroll:It,onScrolling:gt,isColumnConfigurable:le,onAddColumnClick:se,emptyMessage:$e,noDataWidget:ze,buttons:He,onEditColumnClick:Ue,onDeleteColumnClick:Je,onRowTooltipClick:Bt,tooltiptext:Vt,cascadingTableConfig:Pt,originalsOnly:Ct,disableOptionsForRowIndex:qt,tableHeightClass:re="h-[calc(100vh-220px)]",getFullRowDataOnClick:Wt,selectedRowId:$t=null,onRowEdit:R,onBulkRowEdit:L,inlineEditColumns:zt,isResizable:Ht=!0,paginationConfig:ne,dndSortableUtils:ae,multipleContexts:Ge,withSortable:we,withDraggable:Ut,enableRootDrag:Jt,pageSize:Gt=h.DEFAULT_PAGE_SIZE,onCascadingRowExpand:Xt,totalItems:Xe,showRecordCount:Fe=!1,getInnerRowData:Yt,maxLevel:Zt,expandedRows:Qt={},setExpandedRows:Kt,showNewItem:el,rawData:Ye,dragConfig:tl,isOverlayLoading:ll,style:sl={},floatingBarConfig:Te,rowWrapper:rl,rowLinkConfig:nl,isCellClickDisabled:al,setHeaderOnParent:Oe,optimizeTable:cl=!1,multiSelectConfig:ol,headerContextOptions:il,showHeaderContextOptions:ul,setShowHeaderContextOptions:dl,showDataTypeIcon:hl=!1,rowAdditionalActions:ce,rowAdditionalActionsWidth:je,setVisibleHeaders:ye,cellEditing:ml=null,cellEditingValue:fl=null,allowInlineEdit:vl=!1,onFieldOperationFlow:xl,fieldOperationLoading:I=null,onTableActionsReady:Ee,onPendingEditsChange:Ze,onCancelPendingEdits:g})=>{const o=Ss.useTableConfig(),Sl=!!T?.search,Qe=a?.columnFilters?.length>0,q=Sl||Qe,bl=!!M,O=o?.getTableView?.(_)??null,[w,W]=l.useState(O||null),[ke,Ne]=l.useState(!1),[Re,Ke]=l.useState(!1),[pl,et]=l.useState(null),[S,Ae]=l.useState(j),tt=(f.length===0||!S.length)&&!te,[lt,oe]=l.useState(null),[wl,Fl]=l.useState(!1),[Tl,Ol]=l.useState(null),[jl,yl]=l.useState(!1),[El,ie]=l.useState(null),[kl,ue]=l.useState(null),[Nl,st]=l.useState({}),[$,De]=l.useState(null),[Rl,rt]=l.useState(!1),[y,Al]=l.useState(0),_e=l.useRef(null),Me=l.useRef(null),[nt,Dl]=l.useState({width:0,height:0}),[_l,B]=l.useState(null),[E,at]=l.useState(null),[Ml,ct]=l.useState(null),[ot,it]=l.useState(null),[Le,z]=l.useState({}),Ie=l.useRef(!1),de=l.useRef(!1),ge=l.useRef(w);ge.current=w;const ut=l.useRef(o);ut.current=o;const dt=l.useRef(j);dt.current=j;const he=l.useRef(a);he.current=a;const ht=l.useRef(null),mt=l.useRef(()=>({})),ft=l.useRef(()=>({})),[d,k]=l.useState({}),Be=l.useCallback((e,t,r)=>{k(n=>{const c=n[e]?.[t];let i=r.validationError;if(i===void 0){const b=S.find(v=>v.key===t);if(b){const v=Dt.validateCellValue(r.value,b);i=v.isValid?null:v.error||"Invalid"}else i=c?.validationError??null}return{...n,[e]:{...n[e]||{},[t]:{...r,validationError:i??null}}}})},[S]),vt=l.useCallback(()=>Object.values(d).some(e=>Object.keys(e).length>0),[d]);l.useEffect(()=>{Ee&&Ee({addPendingEdit:Be,hasPendingEdits:vt})},[Ee,Be,vt]);const Ll=l.useCallback((e,t)=>{k(r=>{const n={...r};if(n[e]){const{[t]:c,...i}=n[e];Object.keys(i).length===0?delete n[e]:n[e]=i}return n})},[]),Il=l.useCallback((e,t)=>d[e]?.[t],[d]),gl=l.useCallback((e,t)=>!!d[e]?.[t],[d]),xt=l.useCallback(()=>{I||(g&&Object.keys(d).length>0&&g(d),k({}),z({}),B(null))},[I,g,d]),V=l.useCallback((e,t,r)=>{setTimeout(()=>{o?.dispatchEvent?.("SCROLL_TO_TABLE_ROW",{rowIndex:r});const n=S.findIndex(c=>c.key===t);setTimeout(()=>{const c=document.querySelector(`[${h.DATA_ROW_ID_ATTR}="${e}"] [${h.DATA_COLUMN_KEY_ATTR}="${t}"]`);if(c)c.scrollIntoView({behavior:"smooth",block:"center",inline:"center"});else if(n>0){const i=document.querySelector(h.OS_VIEWPORT_SELECTOR);if(i){let b=0;for(let v=0;v<n;v++){const F=S[v];F?.sticky||(b+=F?.width||h.SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK)}b=Math.max(0,b-h.SCROLL_TO_CELL_LEFT_OFFSET),i.scrollTo({left:b,behavior:"smooth"})}}B({rowId:e,columnKey:t})},350)},100)},[S,o]),H=l.useCallback(e=>{let t=!1,r=null;const n={},c=new Set;return Object.entries(e).forEach(([i,b])=>{n[i]={},Object.entries(b).forEach(([v,F])=>{const D=S.find(p=>p.key===v),x=Dt.validateCellValue(F.value,D);x.isValid?n[i][v]={...F,validationError:null}:(t=!0,x.error&&c.add(x.error),r||(r={rowId:i,columnKey:v}),n[i][v]={...F,validationError:x.error})})}),{hasErrors:t,updatedEdits:n,firstError:r,errorTypes:c}},[S]),me=l.useCallback(e=>{const t=e.has("Field required"),r=e.size>(t?1:0);return t&&r?"Missing required field(s) and invalid format detected. Please review highlighted field(s).":t?"Missing required field(s). Please review highlighted field(s).":"Invalid field value(s). Please review highlighted field(s)."},[]),St=l.useCallback(()=>{const{hasErrors:e,updatedEdits:t,firstError:r,errorTypes:n}=H(d);if(e){if(k(t),o?.showNotification?.("error",me(n)),r){const i=f.findIndex(b=>b.id===r.rowId);V(r.rowId,r.columnKey,i)}return}const c=[];Object.entries(d).forEach(([i,b])=>{const v=f.find(F=>F.id===i);if(v){const F={...v},D={};Object.entries(b).forEach(([x,p])=>{F[x]=p.value,D[x]={value:p.value,meta:p.meta}}),c.push({...F,__editedFields:D})}}),c.length>0&&(L?L(c):R&&R(null,null,null,null,null,{isBulk:!0,rows:c})),k({}),z({}),B(null)},[d,f,R,L,H,me,V,o]),Bl=l.useCallback(e=>{if(I)return;const t=d[e];t&&g&&g({[e]:t}),k(r=>{const n={...r};return delete n[e],n}),z(r=>{const n={...r};return Object.keys(n).forEach(c=>{c.startsWith(`${e}-`)&&delete n[c]}),n}),B(null)},[I,g,d]),Vl=l.useCallback(e=>{const t=d[e];if(!t||Object.keys(t).length===0)return;const{hasErrors:r,updatedEdits:n,firstError:c,errorTypes:i}=H({[e]:t});if(r){if(k(x=>({...x,[e]:n[e]})),o?.showNotification?.("error",me(i)),c){const x=f.findIndex(p=>p.id===c.rowId);V(c.rowId,c.columnKey,x)}return}const b=f.find(x=>x.id===e);if(!b)return;const v={...b},F={};Object.entries(t).forEach(([x,p])=>{v[x]=p.value,F[x]={value:p.value,meta:p.meta}});const D={...v,__editedFields:F};L?L([D]):R&&R(null,null,null,null,null,{isBulk:!0,rows:[D]}),k(x=>{const p={...x};return delete p[e],p}),z(x=>{const p={...x};return Object.keys(p).forEach(kt=>{kt.startsWith(`${e}-`)&&delete p[kt]}),p}),B(null)},[d,f,R,L,H,me,V,o]),P=l.useMemo(()=>Object.values(d).reduce((e,t)=>e+Object.keys(t).length,0),[d]);l.useEffect(()=>{Ze?.(P>0,P)},[P,Ze]);const Pl=l.useMemo(()=>{const e=[];return Object.entries(d).forEach(([t,r])=>{const n=f.findIndex(c=>c.id===t);Object.entries(r).forEach(([c,i])=>{const b=S.find(v=>v.key===c);e.push({rowId:t,columnKey:c,fieldName:b?.Header||b?.display_name||c,value:i.value,originalValue:i.originalValue,meta:i.meta,originalMeta:i.originalMeta,rowIndex:n})})}),e},[d,S,f]),Cl=l.useMemo(()=>{const e=new Map;return Object.entries(d).forEach(([t,r])=>{const n=f.findIndex(c=>c.id===t);e.set(t,{rowId:t,rowIndex:n,editCount:Object.keys(r).length})}),Array.from(e.values()).sort((t,r)=>t.rowIndex-r.rowIndex)},[d,f]),ql=l.useCallback(e=>at(e),[]),fe=l.useCallback(()=>at(null),[]),Wl=l.useCallback((e,t)=>{ct({value:e,reference:t}),E?.onSelected&&E.onSelected(e,t),fe()},[E,fe]),$l=l.useCallback(()=>ct(null),[]),zl=l.useCallback(e=>it(e),[]),bt=l.useCallback(()=>it(null),[]),Hl=l.useCallback((e,t)=>{z(r=>({...r,[e]:t}))},[]),Ul=l.useCallback(e=>Le[e],[Le]),Jl=l.useMemo(()=>{const e=re.match(/h-\[(\d+px)\]/);if(e)return e[1];const t=re.match(/h-\[(calc\(.+\))\]/);if(t)return t[1].replace(/([+-])/g," $1 ").replace(/\s+/g," ")},[re]),Gl={isEmpty:tt,isFilters:q,isColumnConfigurable:le,handleOnClick:se,emptyMessage:$e,buttons:He,noDataWidget:ze},Xl=o?.t?.(_t)??_t,ve=q?"No Results Found":$e||"No Data Found",Yl=typeof ve=="string"?o?.t?.(ve)??ve:ve,pt={__isLoading:!0},Zl=new Array(1).fill(pt),Ql=new Array(Gt).fill(pt),U=l.useMemo(()=>S.filter(e=>!!e?.visible),[S]),Kl=At.useTable({columns:cl?U:S,data:[...f,...te?f?.length?Zl:Ql:[]],defaultColumn:{minWidth:h.DEFAULT_COLUMN_MIN_WIDTH,width:h.DEFAULT_COLUMN_WIDTH,maxWidth:h.DEFAULT_COLUMN_MAX_WIDTH}},At.useResizeColumns),{getTableProps:wt,getTableBodyProps:Ft,headerGroups:xe,prepareRow:Tt,rows:A}=Kl;ht.current=xe;const es=JSON.stringify(xe[0]?.headers?.map(e=>e?.Header));l.useEffect(()=>{if(ye){const e=ht.current;ye?.(e?.[0]?.headers?.map(t=>t?.Header)??[])}},[es,ye]);const{checkboxConfig:Ot}=xs.useCheckbox({rows:A,checkedIds:M?.checkedIds,isCheckAllDisabled:M?.isCheckAllDisabled,selectionDisabledRowIds:M?.selectionDisabledRowIds,rawData:Ye,onAllChecked:yl,setCheckedIds:M?.setCheckedIds,checkboxMetadata:M?.checkboxMetadata}),ts=N.useSensors(N.useSensor(N.MouseSensor,{activationConstraint:{distance:h.DND_ACTIVATION_DISTANCE}}),N.useSensor(N.TouchSensor,{activationConstraint:{distance:h.DND_ACTIVATION_DISTANCE}})),ls={easing:h.DROP_ANIMATION_EASING,duration:h.DROP_ANIMATION_DURATION};function ss(){return!Ge?.length||!we?A:Ge.reduce((e,t)=>(e[t]=A.filter(r=>r.original?.type===t),e),{})}ft.current=ss;const rs=e=>{const{active:t}=e;De(A.find(r=>r.original?.id===t?.id)??null)},ns=e=>{const{active:t,over:r}=e;r&&(ae?.checkDndDragEnd&&ae.checkDndDragEnd(t,r,Nl,n=>{st(n),rt(!0),ae.onDragSuccess?.({draggedId:t.id,droppedId:r.id,draggedType:t.data.current?.type,droppedType:r.data.current?.type,updatedList:n,cb:()=>rt(!1)})}),De(null))},as=()=>De(null),cs=e=>{!m?.onSort&&!a?.onFilter||oe(lt===e?null:e)},os=e=>{Ol(e),Fl(!wl),oe(null)},Ve=l.useCallback(()=>{m?.onRemoveSort?m.onRemoveSort():m?.onSort&&m.onSort("","")},[m]),Se=l.useCallback((e=null)=>{et(e),Ne(t=>e?!0:!t)},[]),Pe=l.useCallback(()=>Ke(e=>!e),[]),is=()=>{const e=xe[0]?.headers?.filter(t=>t?.visible!==!1);for(let t=0;t<e.length;t++)if(e[t].sticky)return t-1;return e.length-1},us=l.useCallback(e=>{let t=0;for(let r=e+1;r<U.length;r++)U[r].visible!==!1&&(t+=U[r].width??0);return ce&&(t+=je||h.ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH),C&&(t+=We?0:h.ROW_OPTIONS_COLUMN_WIDTH),t},[U,je,We,ce,C]),jt=()=>{const e=o?.getUserId?.();return{...w||{},name:w?.name||"Untitled View",created_by:w?.created_by||e,filters:w?.filters||a?.columnFilters,id:w?.id||"untitled-view",table_key:w?.table_key||_,columns:w?.columns||j?.map((t,r)=>({name:t.Header,width:t.width,visible:t.visible,sticky:t.sticky,order:r+1,display_name:t.Header,sequence:r+1,Header:t.Header}))}};mt.current=jt;const ds=(e,t)=>{const r=jt();W({...r,columns:r?.columns?.map(n=>n.name===e?{...n,width:t}:n),unsaved:!0})};l.useEffect(()=>{a?.columnFilters?.length>0&&Ne(!0);const e=ge.current;if(JSON.stringify(e?.filters||[])!==JSON.stringify(a?.columnFilters||[])){const t=(e?.filters?.length??0)>0,r=a?.columnFilters?.length>0;if(!(t&&!r&&!de.current)){const c=mt.current();W({...c,filters:JSON.parse(JSON.stringify(a?.columnFilters||[])),unsaved:!0})}de.current=!1}},[a?.columnFilters]);const hs=l.useCallback(e=>{de.current=!0,a?.onRemoveFilter?.(e)},[a?.onRemoveFilter]),ms=l.useCallback(()=>{de.current=!0,a?.onClearFilter?.()},[a?.onClearFilter]);l.useEffect(()=>{m?.columnSort?.field?(Ke(!0),m.columnSort.order==="asc"?(ie(m.columnSort.field),ue(null)):m.columnSort.order==="desc"&&(ue(m.columnSort.field),ie(null))):(ie(null),ue(null))},[m?.columnSort?.field,m?.columnSort?.order]),l.useEffect(()=>{Ae(Nt.mergeViewColumnsWithTableColumns(ge.current?.columns||[],j))},[j]),l.useEffect(()=>{w?.unsaved&&ut.current?.persistTableView?.(w)},[w]),l.useEffect(()=>{st(ft.current())},[A.length]),l.useEffect(()=>{W(O||null),O?.columns&&Ae(Nt.mergeViewColumnsWithTableColumns(O?.columns||[],dt.current)),O?.filters&&O.filters.length>0&&!Ie.current?(requestAnimationFrame(()=>{he.current?.onFilter?.(O.filters)}),Ie.current=!0):O?.filters&&Ie.current&&JSON.stringify(O.filters)!==JSON.stringify(he.current?.columnFilters)&&he.current?.onFilter?.(O.filters)},[O]),l.useEffect(()=>{if(_e.current){const e=new ResizeObserver(t=>Al(t[0].contentRect.width));return e.observe(_e.current),()=>e.disconnect()}},[]),l.useEffect(()=>{if(!Me.current)return;const e=new ResizeObserver(t=>{const{width:r,height:n}=t[0].contentRect;Dl({width:r,height:n})});return e.observe(Me.current),()=>e.disconnect()},[]);const yt=s.jsx(ys.Head,{isResizable:Ht,headerGroups:xe,isCheckbox:bl,checkboxConfig:Ot,isAllChecked:jl,showHeaderOptions:lt??"",setShowHeaderOptions:oe,isShowSortArrowAsc:El,isShowSortArrowDesc:kl,onSort:m?.onSort,onFilter:a?.onFilter,toggleHeaderOption:cs,setIsShowSortArrowAsc:ie,setIsShowSortArrowDesc:ue,toggleDataFilterModal:Se,rowOptions:Array.isArray(C)?C:[],isColumnConfigurable:le??!1,onAddColumnClick:se,onEditColumnClick:Ue,onDeleteColumnClick:Je,tableActions:qe||null,isLoading:te,rowAdditionalActions:ce??null,showPendingEditsColumn:P>0}),Et=s.jsxs(s.Fragment,{children:[Rl||ll?s.jsx("div",{className:"absolute left-0 top-0 w-full h-full z-40 flex items-center justify-center bg-neutral-100 dark:bg-black-700"}):null,s.jsx("div",{...wt(),className:"w-full text-sm text-left text-neutral-500 dark:text-neutral-200 h-full bg-white dark:bg-black-800",children:tt?s.jsxs("div",{className:"z-10",children:[yt,s.jsx("div",{className:"absolute w-full",children:o?.renderEmpty?o.renderEmpty(Gl):s.jsxs("div",{className:"flex flex-col items-center justify-center w-full h-[12rem] text-neutral-900 dark:text-neutral-200 mt-8",children:[ze&&!q?s.jsx(ks.NoDataFoundWidgets,{widgetType:"TABLE"}):s.jsx(Ns.NoDataFound,{text:Yl}),le&&!q?s.jsx("div",{className:"my-4",children:s.jsxs(Rt,{id:"btn-table-shell-create-column",status:"primary",appearance:"ghost",onClick:se,children:[s.jsx(Rs.Add2Icon,{className:"text-white dark:text-white"})," ",Xl]})}):null,!q&&He?.map((e,t)=>s.jsx(Rt,{status:"secondary",id:Ds(e.label,t),onClick:e.onClick,children:o?.t?.(e.label)??e.label},`${e.label}-${t}`))]})})]}):s.jsx(As,{style:{width:"100%",height:"100%"},renderProp:({width:e,height:t})=>{const r=e>0?e:nt.width,n=t>0?t:nt.height;return r>0&&n>0?s.jsx(Fs.Body,{getTableBodyProps:Ft,rows:A,prepareRow:Tt,isLoading:te,onScroll:It,onScrolling:gt,columns:j,width:r,height:n,withSortable:we,allowAstarSearch:T?.allowAStarSearch||!1}):null}})})]}),fs=l.forwardRef((e,t)=>s.jsxs("div",{className:"h-full w-full",...e,ref:t,children:[yt,s.jsx("div",{className:"relative w-full h-full",children:e?.children})]})),vs=l.forwardRef((e,t)=>s.jsx("div",{className:"h-full w-full",...e,ref:t,children:s.jsx("div",{className:"relative w-full h-full",children:e?.children})})),Ce=l.useMemo(()=>o?.renderTableHeader?o.renderTableHeader({tableKey:_,search:T?.search,handleSearch:T?.handleSearch,toggleShowFilters:Se,toggleShowSorts:Pe,filterCounts:a?.columnFilters?.length,columns:j,columnFilters:a?.columnFilters,setSelectedTableView:W,selectedTableView:w,enableTableView:u?.showTableView,modelName:J,enableMasterDataEnumSuggestions:G,onRemoveFilter:a?.onRemoveFilter,onClearFilter:a?.onClearFilter,onFilter:a?.onFilter,data:ee??f,tableHeaders:S,showTableViewAsModal:u?.showTableViewAsModal,additionalOptions:u?.additionalOptions,inlineActions:u?.inlineActions,showFilters:u?.showFilters,showSorts:u?.showSorts,showSearch:u?.showSearch,isLoading:!!u?.isLoading,setTableHeaders:Ae,allowAStarSearch:!!T?.allowAStarSearch,withContent:!!u?.content,setShowFilters:Ne,sort:m?.columnSort,onSort:m?.onSort,onRemoveSort:Ve,showExportButton:u?.showExportButton,agreementCategoryId:X,agreementDomainId:Y,agreementId:Z,modificationId:Q,lineItemRowId:K}):null,[_,T?.search,T?.handleSearch,Se,Pe,a?.columnFilters,j,W,w,u,J,a?.onRemoveFilter,a?.onClearFilter,a?.onFilter,f,ee,S,m?.columnSort,m?.onSort,Ve,o,T?.allowAStarSearch,G,X,Y,Z,Q,K]);return l.useEffect(()=>{Oe&&Oe(Ce)},[Ce,Oe]),s.jsxs(Os.TableContext.Provider,{value:{tableWrapper:fs,tableBodyWrapper:vs,lastNonStickyColumnIndex:is,search:T?.search,columnFilters:a?.columnFilters,onRowClick:Lt,onSort:m?.onSort,onFilter:a?.onFilter,toggleShowFilters:Se,toggleShowSorts:Pe,onRemoveFilter:a?.onRemoveFilter,onClearFilter:a?.onClearFilter,rowOptions:C,checkboxConfig:Ot,onResetFilter:a?.onResetFilter,isColumnConfigurable:le,onAddColumnClick:se,onEditColumnClick:Ue,onDeleteColumnClick:Je,onRowTooltipClick:Bt,tooltiptext:Vt,cascadingTableConfig:Pt,activeInlineEdit:_l,setActiveInlineEdit:B,originalsOnly:Ct,disableOptionsForRowIndex:qt,getFullRowDataOnClick:Wt,selectedRowId:$t,getSumOfNextVisibleColumnWidth:us,onRowEdit:R,inlineEditColumns:zt,tableActions:qe,dndSortableUtils:ae,withSortable:we,withDraggable:Ut,onCascadingRowExpand:Xt,getInnerRowData:Yt,tableHeaders:S,maxLevel:Zt,expandedRows:Qt,setExpandedRows:Kt,showNewItem:el,rawData:Ye,dragConfig:tl,rowWrapper:rl,rowLinkConfig:nl,isCellClickDisabled:al,asyncRowOptionsFilter:a?.asyncRowOptionsFilter,handleUpdateColumnWidth:ds,multiSelectConfig:ol,headerContextOptions:il,showHeaderContextOptions:ul,setShowHeaderContextOptions:dl,headerDivWidth:y,showDataTypeIcon:hl,rowAdditionalActions:ce,hoverConfig:Mt,rowAdditionalActionsWidth:je,cellEditing:ml,cellEditingValue:fl,openMasterDataModal:ql,closeMasterDataModal:fe,selectedMasterData:Ml,clearSelectedMasterData:$l,allowInlineEdit:vl,openCurrencyDropdown:zl,closeCurrencyDropdown:bt,currencyDropdownConfig:ot,selectedCurrenciesMap:Le,setCurrencyForCell:Hl,getCurrencyForCell:Ul,pendingEdits:d,addPendingEdit:Be,removePendingEdit:Ll,getPendingEdit:Il,hasPendingEdit:gl,clearAllPendingEdits:xt,saveAllPendingEdits:St,clearRowPendingEdits:Bl,saveRowPendingEdits:Vl,pendingEditsCount:P,scrollToCell:V,onFieldOperationFlow:xl,fieldOperationLoading:I,validateAllPendingEdits:H},children:[pe?s.jsxs("div",{ref:_e,className:`mb-2 flex w-full min-w-0 gap-2 dark:bg-black-800 ${y<h.TOOLBAR_FIRST_BREAKPOINT?"flex-col items-stretch":"flex-row items-center"}`,children:[s.jsxs("div",{className:`flex items-center gap-x-2 gap-y-1 ${y<h.TOOLBAR_FIRST_BREAKPOINT?"w-full flex-wrap":""} ${u?.content?"min-w-0 flex-1":"shrink-0"}`,children:[u?.content?s.jsx("div",{className:`min-w-0 ${y<h.TOOLBAR_FIRST_BREAKPOINT?"w-full":"flex-1"}`,children:u.content}):null,Fe?s.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-neutral-500 dark:text-neutral-400 flex-shrink-0","aria-hidden":!0,children:[s.jsx("ellipse",{cx:"12",cy:"5",rx:"9",ry:"3"}),s.jsx("path",{d:"M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5"}),s.jsx("path",{d:"M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9"}),s.jsx("path",{d:"M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4"})]}),s.jsx(be.Typography,{size:"small",variant:"semibold",appearance:"title",children:(Xe??f.length).toLocaleString()}),s.jsx(be.Typography,{size:"small",variant:"regular",appearance:"subtitle",children:"total records"})]}):u?.preContent?s.jsx("div",{className:"flex min-w-0 shrink-0 justify-start items-center",children:u.preContent}):null]}),s.jsxs("div",{className:`flex min-w-0 items-center justify-end ${y<h.TOOLBAR_FIRST_BREAKPOINT?"w-full":u?.content?"shrink-0":"flex-1"} ${y<h.TOOLBAR_SECOND_BREAKPOINT?"flex-col":"flex-row"} ${u?.postContent?"gap-2":""}`,children:[Fe&&u?.preContent?s.jsx("div",{className:"flex w-full justify-start items-center",children:u.preContent}):null,s.jsx("div",{className:`flex justify-end items-center min-w-0 ${y<h.TOOLBAR_SECOND_BREAKPOINT||y<h.TOOLBAR_FIRST_BREAKPOINT?"w-full":""}`,children:Ce}),u?.postContent?s.jsx("div",{className:`flex justify-end items-center ${y<h.TOOLBAR_SECOND_BREAKPOINT?"w-full":""}`,children:u.postContent}):null]})]}):null,u?.showDivider?s.jsx("div",{className:"border-b pb-2 w-full dark:bg-black-800"}):null,ke||Re?s.jsx("div",{className:"flex justify-between items-center pb-4 dark:bg-black-800",children:s.jsxs("div",{className:"flex gap-2 items-center",children:[Re&&o?.renderSortItem?o.renderSortItem({sort:m?.columnSort,onRemoveSort:Ve,onSort:m?.onSort,tableHeaders:S,data:f}):null,ke&&Re&&m?.columnSort?.field!==""?s.jsx("div",{className:"h-8 w-[1px] flex-shrink-0 bg-neutral-200"}):null,ke?s.jsxs("div",{className:"flex gap-2 items-center",children:[(Qe||a?.onResetFilter)&&o?.renderActiveFilters&&o.renderActiveFilters({filters:a?.columnFilters,onRemoveFilter:hs,onClearFilter:ms,onResetFilter:a?.onResetFilter,onFilter:a?.onFilter,tableHeaders:S,columnFilters:a?.columnFilters,modelName:J,enableMasterDataEnumSuggestions:G,noSpacing:!0,notionStyle:a?.notionStyle,context:a?.context,data:ee??f,agreementCategoryId:X,agreementDomainId:Y,agreementId:Z,modificationId:Q,lineItemRowId:K}),o?.renderFilterButtons&&o.renderFilterButtons({onClearFilter:a?.onClearFilter,onClose:os,modelName:J,enableMasterDataEnumSuggestions:G,defaultFilterColumn:pl,resetDefaultFilterColumn:()=>et(null),column:Tl,onFilter:a?.onFilter,tableHeaders:S,columnFilters:a?.columnFilters,data:ee??f,notionStyle:a?.notionStyle,context:a?.context,agreementCategoryId:X,agreementDomainId:Y,agreementId:Z,modificationId:Q,lineItemRowId:K})]}):null]})}):null,Te&&Object.keys(Te).length?s.jsx(bs.FloatingBar,{...Te}):null,!pe&&Fe?s.jsxs("div",{className:"flex items-center gap-1.5 mb-2",children:[s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-neutral-500 dark:text-neutral-400 flex-shrink-0","aria-hidden":!0,children:[s.jsx("ellipse",{cx:"12",cy:"5",rx:"9",ry:"3"}),s.jsx("path",{d:"M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5"}),s.jsx("path",{d:"M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9"}),s.jsx("path",{d:"M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4"})]}),s.jsx(be.Typography,{size:"small",variant:"semibold",appearance:"title",children:(Xe??f.length).toLocaleString()}),s.jsx(be.Typography,{size:"small",variant:"regular",appearance:"subtitle",children:"total records"})]}):!pe&&u?.preContent?s.jsx("div",{className:"flex items-center mb-2",children:u.preContent}):null,s.jsx("div",{ref:Me,className:`w-full ${ne?"h-auto":re} rounded-lg relative border overflow-x-hidden`,style:{...ne?{height:f?.length>0?`${(f?.length+1)*41+4}px`:"350px"}:{height:Jl},...sl},children:Jt?Et:s.jsxs(N.DndContext,{sensors:ts,onDragEnd:ns,onDragStart:rs,onDragCancel:as,collisionDetection:N.closestCorners,children:[Et,$?ws.createPortal(s.jsx(N.DragOverlay,{adjustScale:!0,dropAnimation:ls,children:s.jsx("table",{...wt(),className:"w-full text-sm text-left text-neutral-500 dark:text-neutral-200 bg-white dark:bg-black-700 table-auto border-collapse",children:s.jsxs("tbody",{...Ft(),className:"bg-transparent divide-y divide-neutral-200",children:[void Tt($),s.jsx(Ts.Row,{row:$,index:A?.findIndex(e=>e.id===$.original.id)},$.original.id)]})})}),document.getElementById("full-screen-container")||document.body):null]})}),ne&&o?.renderPagination?o.renderPagination(ne):null,o?.renderMasterDataModal&&o.renderMasterDataModal({isVisible:!!E,onSelected:Wl,onClose:fe,masterDataColumnName:E?.masterDataColumnName,masterDataFilters:E?.masterDataFilters,masterDataName:E?.masterDataName,masterDataId:E?.masterDataName,showFilters:!0}),s.jsx(js.CurrencyDropdownPortal,{config:ot,onClose:bt}),s.jsx(Es.PendingEditsFloatingBar,{pendingEditsCount:P,pendingEditsList:Pl,rowsWithPendingEdits:Cl,fieldOperationLoading:I,onClearAll:xt,onSaveAll:St,onScrollToCell:V})]})});exports.InfiniteTable=_s;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react/jsx-runtime"),bs=require("../../../hooks/useCheckbox.cjs.js"),ws=require("../../../providers/design-system-provider/hooks.cjs.js"),kt=require("../../../utils/table.cjs.js"),Nt=require("../../button/Button.cjs.js"),ps=require("../../floating-bar/FloatingBar.cjs.js"),be=require("../typography/Typography.cjs.js"),k=require("@dnd-kit/core"),l=require("react"),Fs=require("react-virtualized-auto-sizer"),Ts=require("react-dom"),At=require("react-table"),Os=require("./body/index.cjs.js"),Dt=require("./validateCell.cjs.js"),js=require("./body/rows/row.cjs.js"),ys=require("./context.cjs.js"),Es=require("./CurrencyDropdownPortal.cjs.js"),Rs=require("./head/index.cjs.js"),ks=require("./PendingEditsFloatingBar.cjs.js"),h=require("./constants.cjs.js"),_t=require("./useRowHeight.cjs.js"),Ns=require("../empty-state/NoDataFoundWidgets.cjs.js"),As=require("../empty-state/NoDataFound.cjs.js"),Ds=require("../../icon/icons.generated.cjs.js"),_s=Fs.AutoSizer,Mt="Create Column",Ms=(_,T)=>`button-admin-${_.toLowerCase().trim().replace(/\s+/g,"-").replace(/[^a-z0-9-_]/g,"")||T}`,Ls=l.memo(({tableKey:_,searchConfig:T={search:"",handleSearch:()=>null,allowAStarSearch:!1},filterConfig:a={columnFilters:[],onFilter:()=>null,onRemoveFilter:()=>null,onClearFilter:()=>null,onResetFilter:()=>Promise.resolve({}),asyncRowOptionsFilter:()=>Promise.resolve({})},sortConfig:m={onSort:()=>null,columnSort:{field:"",order:""},onRemoveSort:()=>null},headerConfig:u={showExportButton:null,showFilters:!0,showSorts:!0,showSearch:!0,showTableView:!0,showTableViewAsModal:!1,content:null,postContent:null,preContent:null,isLoading:!1,showDivider:!1},hoverConfig:Lt=null,columns:j,modelName:J,enableMasterDataEnumSuggestions:G=!1,agreementCategoryId:X,agreementDomainId:Y,agreementId:Z,modificationId:Q,lineItemRowId:K,enumSuggestionsData:ee,data:f=[],onRowClick:gt,showHeader:we,tableActions:qe,rowOptions:C,hideRowOptionWidth:We,checkboxUtilities:M,isLoading:te=!1,onScroll:It,onScrolling:Bt,isColumnConfigurable:le,onAddColumnClick:se,emptyMessage:He,noDataWidget:$e,buttons:ze,onEditColumnClick:Ue,onDeleteColumnClick:Je,onRowTooltipClick:Vt,tooltiptext:Pt,cascadingTableConfig:Ct,originalsOnly:qt,disableOptionsForRowIndex:Wt,tableHeightClass:re="h-[calc(100vh-220px)]",getFullRowDataOnClick:Ht,selectedRowId:$t=null,onRowEdit:N,onBulkRowEdit:L,inlineEditColumns:zt,isResizable:Ut=!0,paginationConfig:ne,dndSortableUtils:ae,multipleContexts:Ge,withSortable:pe,withDraggable:Jt,enableRootDrag:Gt,pageSize:Xt=h.DEFAULT_PAGE_SIZE,onCascadingRowExpand:Yt,totalItems:Xe,showRecordCount:Fe=!1,getInnerRowData:Zt,maxLevel:Qt,expandedRows:Kt={},setExpandedRows:el,showNewItem:tl,rawData:Ye,dragConfig:ll,isOverlayLoading:sl,style:rl={},floatingBarConfig:Te,rowWrapper:nl,rowLinkConfig:al,isCellClickDisabled:cl,setHeaderOnParent:Oe,optimizeTable:ol=!1,multiSelectConfig:il,headerContextOptions:ul,showHeaderContextOptions:dl,setShowHeaderContextOptions:hl,showDataTypeIcon:ml=!1,rowAdditionalActions:ce,rowAdditionalActionsWidth:je,setVisibleHeaders:ye,cellEditing:fl=null,cellEditingValue:vl=null,allowInlineEdit:xl=!1,onFieldOperationFlow:Sl,fieldOperationLoading:g=null,onTableActionsReady:Ee,onPendingEditsChange:Ze,onCancelPendingEdits:I})=>{const o=ws.useTableConfig(),bl=_t.getRowSlotHeight(_t.useRowHeight()),wl=!!T?.search,Qe=a?.columnFilters?.length>0,q=wl||Qe,pl=!!M,O=o?.getTableView?.(_)??null,[p,W]=l.useState(O||null),[Re,ke]=l.useState(!1),[Ne,Ke]=l.useState(!1),[Fl,et]=l.useState(null),[S,Ae]=l.useState(j),tt=(f.length===0||!S.length)&&!te,[lt,oe]=l.useState(null),[Tl,Ol]=l.useState(!1),[jl,yl]=l.useState(null),[El,Rl]=l.useState(!1),[kl,ie]=l.useState(null),[Nl,ue]=l.useState(null),[Al,st]=l.useState({}),[H,De]=l.useState(null),[Dl,rt]=l.useState(!1),[y,_l]=l.useState(0),_e=l.useRef(null),Me=l.useRef(null),[nt,Ml]=l.useState({width:0,height:0}),[Ll,B]=l.useState(null),[E,at]=l.useState(null),[gl,ct]=l.useState(null),[ot,it]=l.useState(null),[Le,$]=l.useState({}),ge=l.useRef(!1),de=l.useRef(!1),Ie=l.useRef(p);Ie.current=p;const ut=l.useRef(o);ut.current=o;const dt=l.useRef(j);dt.current=j;const he=l.useRef(a);he.current=a;const ht=l.useRef(null),mt=l.useRef(()=>({})),ft=l.useRef(()=>({})),[d,R]=l.useState({}),Be=l.useCallback((e,t,r)=>{R(n=>{const c=n[e]?.[t];let i=r.validationError;if(i===void 0){const b=S.find(v=>v.key===t);if(b){const v=Dt.validateCellValue(r.value,b);i=v.isValid?null:v.error||"Invalid"}else i=c?.validationError??null}return{...n,[e]:{...n[e]||{},[t]:{...r,validationError:i??null}}}})},[S]),vt=l.useCallback(()=>Object.values(d).some(e=>Object.keys(e).length>0),[d]);l.useEffect(()=>{Ee&&Ee({addPendingEdit:Be,hasPendingEdits:vt})},[Ee,Be,vt]);const Il=l.useCallback((e,t)=>{R(r=>{const n={...r};if(n[e]){const{[t]:c,...i}=n[e];Object.keys(i).length===0?delete n[e]:n[e]=i}return n})},[]),Bl=l.useCallback((e,t)=>d[e]?.[t],[d]),Vl=l.useCallback((e,t)=>!!d[e]?.[t],[d]),xt=l.useCallback(()=>{g||(I&&Object.keys(d).length>0&&I(d),R({}),$({}),B(null))},[g,I,d]),V=l.useCallback((e,t,r)=>{setTimeout(()=>{o?.dispatchEvent?.("SCROLL_TO_TABLE_ROW",{rowIndex:r});const n=S.findIndex(c=>c.key===t);setTimeout(()=>{const c=document.querySelector(`[${h.DATA_ROW_ID_ATTR}="${e}"] [${h.DATA_COLUMN_KEY_ATTR}="${t}"]`);if(c)c.scrollIntoView({behavior:"smooth",block:"center",inline:"center"});else if(n>0){const i=document.querySelector(h.OS_VIEWPORT_SELECTOR);if(i){let b=0;for(let v=0;v<n;v++){const F=S[v];F?.sticky||(b+=F?.width||h.SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK)}b=Math.max(0,b-h.SCROLL_TO_CELL_LEFT_OFFSET),i.scrollTo({left:b,behavior:"smooth"})}}B({rowId:e,columnKey:t})},350)},100)},[S,o]),z=l.useCallback(e=>{let t=!1,r=null;const n={},c=new Set;return Object.entries(e).forEach(([i,b])=>{n[i]={},Object.entries(b).forEach(([v,F])=>{const D=S.find(w=>w.key===v),x=Dt.validateCellValue(F.value,D);x.isValid?n[i][v]={...F,validationError:null}:(t=!0,x.error&&c.add(x.error),r||(r={rowId:i,columnKey:v}),n[i][v]={...F,validationError:x.error})})}),{hasErrors:t,updatedEdits:n,firstError:r,errorTypes:c}},[S]),me=l.useCallback(e=>{const t=e.has("Field required"),r=e.size>(t?1:0);return t&&r?"Missing required field(s) and invalid format detected. Please review highlighted field(s).":t?"Missing required field(s). Please review highlighted field(s).":"Invalid field value(s). Please review highlighted field(s)."},[]),St=l.useCallback(()=>{const{hasErrors:e,updatedEdits:t,firstError:r,errorTypes:n}=z(d);if(e){if(R(t),o?.showNotification?.("error",me(n)),r){const i=f.findIndex(b=>b.id===r.rowId);V(r.rowId,r.columnKey,i)}return}const c=[];Object.entries(d).forEach(([i,b])=>{const v=f.find(F=>F.id===i);if(v){const F={...v},D={};Object.entries(b).forEach(([x,w])=>{F[x]=w.value,D[x]={value:w.value,meta:w.meta}}),c.push({...F,__editedFields:D})}}),c.length>0&&(L?L(c):N&&N(null,null,null,null,null,{isBulk:!0,rows:c})),R({}),$({}),B(null)},[d,f,N,L,z,me,V,o]),Pl=l.useCallback(e=>{if(g)return;const t=d[e];t&&I&&I({[e]:t}),R(r=>{const n={...r};return delete n[e],n}),$(r=>{const n={...r};return Object.keys(n).forEach(c=>{c.startsWith(`${e}-`)&&delete n[c]}),n}),B(null)},[g,I,d]),Cl=l.useCallback(e=>{const t=d[e];if(!t||Object.keys(t).length===0)return;const{hasErrors:r,updatedEdits:n,firstError:c,errorTypes:i}=z({[e]:t});if(r){if(R(x=>({...x,[e]:n[e]})),o?.showNotification?.("error",me(i)),c){const x=f.findIndex(w=>w.id===c.rowId);V(c.rowId,c.columnKey,x)}return}const b=f.find(x=>x.id===e);if(!b)return;const v={...b},F={};Object.entries(t).forEach(([x,w])=>{v[x]=w.value,F[x]={value:w.value,meta:w.meta}});const D={...v,__editedFields:F};L?L([D]):N&&N(null,null,null,null,null,{isBulk:!0,rows:[D]}),R(x=>{const w={...x};return delete w[e],w}),$(x=>{const w={...x};return Object.keys(w).forEach(Rt=>{Rt.startsWith(`${e}-`)&&delete w[Rt]}),w}),B(null)},[d,f,N,L,z,me,V,o]),P=l.useMemo(()=>Object.values(d).reduce((e,t)=>e+Object.keys(t).length,0),[d]);l.useEffect(()=>{Ze?.(P>0,P)},[P,Ze]);const ql=l.useMemo(()=>{const e=[];return Object.entries(d).forEach(([t,r])=>{const n=f.findIndex(c=>c.id===t);Object.entries(r).forEach(([c,i])=>{const b=S.find(v=>v.key===c);e.push({rowId:t,columnKey:c,fieldName:b?.Header||b?.display_name||c,value:i.value,originalValue:i.originalValue,meta:i.meta,originalMeta:i.originalMeta,rowIndex:n})})}),e},[d,S,f]),Wl=l.useMemo(()=>{const e=new Map;return Object.entries(d).forEach(([t,r])=>{const n=f.findIndex(c=>c.id===t);e.set(t,{rowId:t,rowIndex:n,editCount:Object.keys(r).length})}),Array.from(e.values()).sort((t,r)=>t.rowIndex-r.rowIndex)},[d,f]),Hl=l.useCallback(e=>at(e),[]),fe=l.useCallback(()=>at(null),[]),$l=l.useCallback((e,t)=>{ct({value:e,reference:t}),E?.onSelected&&E.onSelected(e,t),fe()},[E,fe]),zl=l.useCallback(()=>ct(null),[]),Ul=l.useCallback(e=>it(e),[]),bt=l.useCallback(()=>it(null),[]),Jl=l.useCallback((e,t)=>{$(r=>({...r,[e]:t}))},[]),Gl=l.useCallback(e=>Le[e],[Le]),Xl=l.useMemo(()=>{const e=re.match(/h-\[(\d+px)\]/);if(e)return e[1];const t=re.match(/h-\[(calc\(.+\))\]/);if(t)return t[1].replace(/([+-])/g," $1 ").replace(/\s+/g," ")},[re]),Yl={isEmpty:tt,isFilters:q,isColumnConfigurable:le,handleOnClick:se,emptyMessage:He,buttons:ze,noDataWidget:$e},Zl=o?.t?.(Mt)??Mt,ve=q?"No Results Found":He||"No Data Found",Ql=typeof ve=="string"?o?.t?.(ve)??ve:ve,wt={__isLoading:!0},Kl=new Array(1).fill(wt),es=new Array(Xt).fill(wt),U=l.useMemo(()=>S.filter(e=>!!e?.visible),[S]),ts=At.useTable({columns:ol?U:S,data:[...f,...te?f?.length?Kl:es:[]],defaultColumn:{minWidth:h.DEFAULT_COLUMN_MIN_WIDTH,width:h.DEFAULT_COLUMN_WIDTH,maxWidth:h.DEFAULT_COLUMN_MAX_WIDTH}},At.useResizeColumns),{getTableProps:pt,getTableBodyProps:Ft,headerGroups:xe,prepareRow:Tt,rows:A}=ts;ht.current=xe;const ls=JSON.stringify(xe[0]?.headers?.map(e=>e?.Header));l.useEffect(()=>{if(ye){const e=ht.current;ye?.(e?.[0]?.headers?.map(t=>t?.Header)??[])}},[ls,ye]);const{checkboxConfig:Ot}=bs.useCheckbox({rows:A,checkedIds:M?.checkedIds,isCheckAllDisabled:M?.isCheckAllDisabled,selectionDisabledRowIds:M?.selectionDisabledRowIds,rawData:Ye,onAllChecked:Rl,setCheckedIds:M?.setCheckedIds,checkboxMetadata:M?.checkboxMetadata}),ss=k.useSensors(k.useSensor(k.MouseSensor,{activationConstraint:{distance:h.DND_ACTIVATION_DISTANCE}}),k.useSensor(k.TouchSensor,{activationConstraint:{distance:h.DND_ACTIVATION_DISTANCE}})),rs={easing:h.DROP_ANIMATION_EASING,duration:h.DROP_ANIMATION_DURATION};function ns(){return!Ge?.length||!pe?A:Ge.reduce((e,t)=>(e[t]=A.filter(r=>r.original?.type===t),e),{})}ft.current=ns;const as=e=>{const{active:t}=e;De(A.find(r=>r.original?.id===t?.id)??null)},cs=e=>{const{active:t,over:r}=e;r&&(ae?.checkDndDragEnd&&ae.checkDndDragEnd(t,r,Al,n=>{st(n),rt(!0),ae.onDragSuccess?.({draggedId:t.id,droppedId:r.id,draggedType:t.data.current?.type,droppedType:r.data.current?.type,updatedList:n,cb:()=>rt(!1)})}),De(null))},os=()=>De(null),is=e=>{!m?.onSort&&!a?.onFilter||oe(lt===e?null:e)},us=e=>{yl(e),Ol(!Tl),oe(null)},Ve=l.useCallback(()=>{m?.onRemoveSort?m.onRemoveSort():m?.onSort&&m.onSort("","")},[m]),Se=l.useCallback((e=null)=>{et(e),ke(t=>e?!0:!t)},[]),Pe=l.useCallback(()=>Ke(e=>!e),[]),ds=()=>{const e=xe[0]?.headers?.filter(t=>t?.visible!==!1);for(let t=0;t<e.length;t++)if(e[t].sticky)return t-1;return e.length-1},hs=l.useCallback(e=>{let t=0;for(let r=e+1;r<U.length;r++)U[r].visible!==!1&&(t+=U[r].width??0);return ce&&(t+=je||h.ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH),C&&(t+=We?0:h.ROW_OPTIONS_COLUMN_WIDTH),t},[U,je,We,ce,C]),jt=()=>{const e=o?.getUserId?.();return{...p||{},name:p?.name||"Untitled View",created_by:p?.created_by||e,filters:p?.filters||a?.columnFilters,id:p?.id||"untitled-view",table_key:p?.table_key||_,columns:p?.columns||j?.map((t,r)=>({name:t.Header,width:t.width,visible:t.visible,sticky:t.sticky,order:r+1,display_name:t.Header,sequence:r+1,Header:t.Header}))}};mt.current=jt;const ms=(e,t)=>{const r=jt();W({...r,columns:r?.columns?.map(n=>n.name===e?{...n,width:t}:n),unsaved:!0})};l.useEffect(()=>{a?.columnFilters?.length>0&&ke(!0);const e=Ie.current;if(JSON.stringify(e?.filters||[])!==JSON.stringify(a?.columnFilters||[])){const t=(e?.filters?.length??0)>0,r=a?.columnFilters?.length>0;if(!(t&&!r&&!de.current)){const c=mt.current();W({...c,filters:JSON.parse(JSON.stringify(a?.columnFilters||[])),unsaved:!0})}de.current=!1}},[a?.columnFilters]);const fs=l.useCallback(e=>{de.current=!0,a?.onRemoveFilter?.(e)},[a?.onRemoveFilter]),vs=l.useCallback(()=>{de.current=!0,a?.onClearFilter?.()},[a?.onClearFilter]);l.useEffect(()=>{m?.columnSort?.field?(Ke(!0),m.columnSort.order==="asc"?(ie(m.columnSort.field),ue(null)):m.columnSort.order==="desc"&&(ue(m.columnSort.field),ie(null))):(ie(null),ue(null))},[m?.columnSort?.field,m?.columnSort?.order]),l.useEffect(()=>{Ae(kt.mergeViewColumnsWithTableColumns(Ie.current?.columns||[],j))},[j]),l.useEffect(()=>{p?.unsaved&&ut.current?.persistTableView?.(p)},[p]),l.useEffect(()=>{st(ft.current())},[A.length]),l.useEffect(()=>{W(O||null),O?.columns&&Ae(kt.mergeViewColumnsWithTableColumns(O?.columns||[],dt.current)),O?.filters&&O.filters.length>0&&!ge.current?(requestAnimationFrame(()=>{he.current?.onFilter?.(O.filters)}),ge.current=!0):O?.filters&&ge.current&&JSON.stringify(O.filters)!==JSON.stringify(he.current?.columnFilters)&&he.current?.onFilter?.(O.filters)},[O]),l.useEffect(()=>{if(_e.current){const e=new ResizeObserver(t=>_l(t[0].contentRect.width));return e.observe(_e.current),()=>e.disconnect()}},[]),l.useEffect(()=>{if(!Me.current)return;const e=new ResizeObserver(t=>{const{width:r,height:n}=t[0].contentRect;Ml({width:r,height:n})});return e.observe(Me.current),()=>e.disconnect()},[]);const yt=s.jsx(Rs.Head,{isResizable:Ut,headerGroups:xe,isCheckbox:pl,checkboxConfig:Ot,isAllChecked:El,showHeaderOptions:lt??"",setShowHeaderOptions:oe,isShowSortArrowAsc:kl,isShowSortArrowDesc:Nl,onSort:m?.onSort,onFilter:a?.onFilter,toggleHeaderOption:is,setIsShowSortArrowAsc:ie,setIsShowSortArrowDesc:ue,toggleDataFilterModal:Se,rowOptions:Array.isArray(C)?C:[],isColumnConfigurable:le??!1,onAddColumnClick:se,onEditColumnClick:Ue,onDeleteColumnClick:Je,tableActions:qe||null,isLoading:te,rowAdditionalActions:ce??null,showPendingEditsColumn:P>0}),Et=s.jsxs(s.Fragment,{children:[Dl||sl?s.jsx("div",{className:"absolute left-0 top-0 w-full h-full z-40 flex items-center justify-center bg-neutral-100 dark:bg-black-700"}):null,s.jsx("div",{...pt(),className:"w-full text-sm text-left text-neutral-500 dark:text-neutral-200 h-full bg-white dark:bg-black-800",children:tt?s.jsxs("div",{className:"z-10",children:[yt,s.jsx("div",{className:"absolute w-full",children:o?.renderEmpty?o.renderEmpty(Yl):s.jsxs("div",{className:"flex flex-col items-center justify-center w-full h-[12rem] text-neutral-900 dark:text-neutral-200 mt-8",children:[$e&&!q?s.jsx(Ns.NoDataFoundWidgets,{widgetType:"TABLE"}):s.jsx(As.NoDataFound,{text:Ql}),le&&!q?s.jsx("div",{className:"my-4",children:s.jsxs(Nt,{id:"btn-table-shell-create-column",status:"primary",appearance:"ghost",onClick:se,children:[s.jsx(Ds.Add2Icon,{className:"text-white dark:text-white"})," ",Zl]})}):null,!q&&ze?.map((e,t)=>s.jsx(Nt,{status:"secondary",id:Ms(e.label,t),onClick:e.onClick,children:o?.t?.(e.label)??e.label},`${e.label}-${t}`))]})})]}):s.jsx(_s,{style:{width:"100%",height:"100%"},renderProp:({width:e,height:t})=>{const r=e>0?e:nt.width,n=t>0?t:nt.height;return r>0&&n>0?s.jsx(Os.Body,{getTableBodyProps:Ft,rows:A,prepareRow:Tt,isLoading:te,onScroll:It,onScrolling:Bt,columns:j,width:r,height:n,withSortable:pe,allowAstarSearch:T?.allowAStarSearch||!1}):null}})})]}),xs=l.forwardRef((e,t)=>s.jsxs("div",{className:"h-full w-full",...e,ref:t,children:[yt,s.jsx("div",{className:"relative w-full h-full",children:e?.children})]})),Ss=l.forwardRef((e,t)=>s.jsx("div",{className:"h-full w-full",...e,ref:t,children:s.jsx("div",{className:"relative w-full h-full",children:e?.children})})),Ce=l.useMemo(()=>o?.renderTableHeader?o.renderTableHeader({tableKey:_,search:T?.search,handleSearch:T?.handleSearch,toggleShowFilters:Se,toggleShowSorts:Pe,filterCounts:a?.columnFilters?.length,columns:j,columnFilters:a?.columnFilters,setSelectedTableView:W,selectedTableView:p,enableTableView:u?.showTableView,modelName:J,enableMasterDataEnumSuggestions:G,onRemoveFilter:a?.onRemoveFilter,onClearFilter:a?.onClearFilter,onFilter:a?.onFilter,data:ee??f,tableHeaders:S,showTableViewAsModal:u?.showTableViewAsModal,additionalOptions:u?.additionalOptions,inlineActions:u?.inlineActions,showFilters:u?.showFilters,showSorts:u?.showSorts,showSearch:u?.showSearch,isLoading:!!u?.isLoading,setTableHeaders:Ae,allowAStarSearch:!!T?.allowAStarSearch,withContent:!!u?.content,setShowFilters:ke,sort:m?.columnSort,onSort:m?.onSort,onRemoveSort:Ve,showExportButton:u?.showExportButton,agreementCategoryId:X,agreementDomainId:Y,agreementId:Z,modificationId:Q,lineItemRowId:K}):null,[_,T?.search,T?.handleSearch,Se,Pe,a?.columnFilters,j,W,p,u,J,a?.onRemoveFilter,a?.onClearFilter,a?.onFilter,f,ee,S,m?.columnSort,m?.onSort,Ve,o,T?.allowAStarSearch,G,X,Y,Z,Q,K]);return l.useEffect(()=>{Oe&&Oe(Ce)},[Ce,Oe]),s.jsxs(ys.TableContext.Provider,{value:{tableWrapper:xs,tableBodyWrapper:Ss,lastNonStickyColumnIndex:ds,search:T?.search,columnFilters:a?.columnFilters,onRowClick:gt,onSort:m?.onSort,onFilter:a?.onFilter,toggleShowFilters:Se,toggleShowSorts:Pe,onRemoveFilter:a?.onRemoveFilter,onClearFilter:a?.onClearFilter,rowOptions:C,checkboxConfig:Ot,onResetFilter:a?.onResetFilter,isColumnConfigurable:le,onAddColumnClick:se,onEditColumnClick:Ue,onDeleteColumnClick:Je,onRowTooltipClick:Vt,tooltiptext:Pt,cascadingTableConfig:Ct,activeInlineEdit:Ll,setActiveInlineEdit:B,originalsOnly:qt,disableOptionsForRowIndex:Wt,getFullRowDataOnClick:Ht,selectedRowId:$t,getSumOfNextVisibleColumnWidth:hs,onRowEdit:N,inlineEditColumns:zt,tableActions:qe,dndSortableUtils:ae,withSortable:pe,withDraggable:Jt,onCascadingRowExpand:Yt,getInnerRowData:Zt,tableHeaders:S,maxLevel:Qt,expandedRows:Kt,setExpandedRows:el,showNewItem:tl,rawData:Ye,dragConfig:ll,rowWrapper:nl,rowLinkConfig:al,isCellClickDisabled:cl,asyncRowOptionsFilter:a?.asyncRowOptionsFilter,handleUpdateColumnWidth:ms,multiSelectConfig:il,headerContextOptions:ul,showHeaderContextOptions:dl,setShowHeaderContextOptions:hl,headerDivWidth:y,showDataTypeIcon:ml,rowAdditionalActions:ce,hoverConfig:Lt,rowAdditionalActionsWidth:je,cellEditing:fl,cellEditingValue:vl,openMasterDataModal:Hl,closeMasterDataModal:fe,selectedMasterData:gl,clearSelectedMasterData:zl,allowInlineEdit:xl,openCurrencyDropdown:Ul,closeCurrencyDropdown:bt,currencyDropdownConfig:ot,selectedCurrenciesMap:Le,setCurrencyForCell:Jl,getCurrencyForCell:Gl,pendingEdits:d,addPendingEdit:Be,removePendingEdit:Il,getPendingEdit:Bl,hasPendingEdit:Vl,clearAllPendingEdits:xt,saveAllPendingEdits:St,clearRowPendingEdits:Pl,saveRowPendingEdits:Cl,pendingEditsCount:P,scrollToCell:V,onFieldOperationFlow:Sl,fieldOperationLoading:g,validateAllPendingEdits:z},children:[we?s.jsxs("div",{ref:_e,className:`mb-2 flex w-full min-w-0 gap-2 dark:bg-black-800 ${y<h.TOOLBAR_FIRST_BREAKPOINT?"flex-col items-stretch":"flex-row items-center"}`,children:[s.jsxs("div",{className:`flex items-center gap-x-2 gap-y-1 ${y<h.TOOLBAR_FIRST_BREAKPOINT?"w-full flex-wrap":""} ${u?.content?"min-w-0 flex-1":"shrink-0"}`,children:[u?.content?s.jsx("div",{className:`min-w-0 ${y<h.TOOLBAR_FIRST_BREAKPOINT?"w-full":"flex-1"}`,children:u.content}):null,Fe?s.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-neutral-500 dark:text-neutral-400 flex-shrink-0","aria-hidden":!0,children:[s.jsx("ellipse",{cx:"12",cy:"5",rx:"9",ry:"3"}),s.jsx("path",{d:"M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5"}),s.jsx("path",{d:"M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9"}),s.jsx("path",{d:"M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4"})]}),s.jsx(be.Typography,{size:"small",variant:"semibold",appearance:"title",children:(Xe??f.length).toLocaleString()}),s.jsx(be.Typography,{size:"small",variant:"regular",appearance:"subtitle",children:"total records"})]}):u?.preContent?s.jsx("div",{className:"flex min-w-0 shrink-0 justify-start items-center",children:u.preContent}):null]}),s.jsxs("div",{className:`flex min-w-0 items-center justify-end ${y<h.TOOLBAR_FIRST_BREAKPOINT?"w-full":u?.content?"shrink-0":"flex-1"} ${y<h.TOOLBAR_SECOND_BREAKPOINT?"flex-col":"flex-row"} ${u?.postContent?"gap-2":""}`,children:[Fe&&u?.preContent?s.jsx("div",{className:"flex w-full justify-start items-center",children:u.preContent}):null,s.jsx("div",{className:`flex justify-end items-center min-w-0 ${y<h.TOOLBAR_SECOND_BREAKPOINT||y<h.TOOLBAR_FIRST_BREAKPOINT?"w-full":""}`,children:Ce}),u?.postContent?s.jsx("div",{className:`flex justify-end items-center ${y<h.TOOLBAR_SECOND_BREAKPOINT?"w-full":""}`,children:u.postContent}):null]})]}):null,u?.showDivider?s.jsx("div",{className:"border-b pb-2 w-full dark:bg-black-800"}):null,Re||Ne?s.jsx("div",{className:"flex justify-between items-center pb-4 dark:bg-black-800",children:s.jsxs("div",{className:"flex gap-2 items-center",children:[Ne&&o?.renderSortItem?o.renderSortItem({sort:m?.columnSort,onRemoveSort:Ve,onSort:m?.onSort,tableHeaders:S,data:f}):null,Re&&Ne&&m?.columnSort?.field!==""?s.jsx("div",{className:"h-8 w-[1px] flex-shrink-0 bg-neutral-200"}):null,Re?s.jsxs("div",{className:"flex gap-2 items-center",children:[(Qe||a?.onResetFilter)&&o?.renderActiveFilters&&o.renderActiveFilters({filters:a?.columnFilters,onRemoveFilter:fs,onClearFilter:vs,onResetFilter:a?.onResetFilter,onFilter:a?.onFilter,tableHeaders:S,columnFilters:a?.columnFilters,modelName:J,enableMasterDataEnumSuggestions:G,noSpacing:!0,notionStyle:a?.notionStyle,context:a?.context,data:ee??f,agreementCategoryId:X,agreementDomainId:Y,agreementId:Z,modificationId:Q,lineItemRowId:K}),o?.renderFilterButtons&&o.renderFilterButtons({onClearFilter:a?.onClearFilter,onClose:us,modelName:J,enableMasterDataEnumSuggestions:G,defaultFilterColumn:Fl,resetDefaultFilterColumn:()=>et(null),column:jl,onFilter:a?.onFilter,tableHeaders:S,columnFilters:a?.columnFilters,data:ee??f,notionStyle:a?.notionStyle,context:a?.context,agreementCategoryId:X,agreementDomainId:Y,agreementId:Z,modificationId:Q,lineItemRowId:K})]}):null]})}):null,Te&&Object.keys(Te).length?s.jsx(ps.FloatingBar,{...Te}):null,!we&&Fe?s.jsxs("div",{className:"flex items-center gap-1.5 mb-2",children:[s.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:"text-neutral-500 dark:text-neutral-400 flex-shrink-0","aria-hidden":!0,children:[s.jsx("ellipse",{cx:"12",cy:"5",rx:"9",ry:"3"}),s.jsx("path",{d:"M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5"}),s.jsx("path",{d:"M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9"}),s.jsx("path",{d:"M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4"})]}),s.jsx(be.Typography,{size:"small",variant:"semibold",appearance:"title",children:(Xe??f.length).toLocaleString()}),s.jsx(be.Typography,{size:"small",variant:"regular",appearance:"subtitle",children:"total records"})]}):!we&&u?.preContent?s.jsx("div",{className:"flex items-center mb-2",children:u.preContent}):null,s.jsx("div",{ref:Me,className:`w-full ${ne?"h-auto":re} rounded-lg relative border overflow-x-hidden`,style:{...ne?{height:f?.length>0?`${(f?.length+1)*bl+4}px`:"350px"}:{height:Xl},...rl},children:Gt?Et:s.jsxs(k.DndContext,{sensors:ss,onDragEnd:cs,onDragStart:as,onDragCancel:os,collisionDetection:k.closestCorners,children:[Et,H?Ts.createPortal(s.jsx(k.DragOverlay,{adjustScale:!0,dropAnimation:rs,children:s.jsx("table",{...pt(),className:"w-full text-sm text-left text-neutral-500 dark:text-neutral-200 bg-white dark:bg-black-700 table-auto border-collapse",children:s.jsxs("tbody",{...Ft(),className:"bg-transparent divide-y divide-neutral-200",children:[void Tt(H),s.jsx(js.Row,{row:H,index:A?.findIndex(e=>e.id===H.original.id)},H.original.id)]})})}),document.getElementById("full-screen-container")||document.body):null]})}),ne&&o?.renderPagination?o.renderPagination(ne):null,o?.renderMasterDataModal&&o.renderMasterDataModal({isVisible:!!E,onSelected:$l,onClose:fe,masterDataColumnName:E?.masterDataColumnName,masterDataFilters:E?.masterDataFilters,masterDataName:E?.masterDataName,masterDataId:E?.masterDataName,showFilters:!0}),s.jsx(Es.CurrencyDropdownPortal,{config:ot,onClose:bt}),s.jsx(ks.PendingEditsFloatingBar,{pendingEditsCount:P,pendingEditsList:ql,rowsWithPendingEdits:Wl,fieldOperationLoading:g,onClearAll:xt,onSaveAll:St,onScrollToCell:V})]})});exports.InfiniteTable=Ls;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../../../../src/components/data-display/infinite-table/index.tsx"],"sourcesContent":["import { useCheckbox } from '../../../hooks/useCheckbox';\nimport { useTableConfig } from '../../../providers/design-system-provider/hooks';\nimport { mergeViewColumnsWithTableColumns } from '../../../utils/table';\nimport Button from '../../button/Button';\nimport { FloatingBar } from '../../floating-bar/FloatingBar';\nimport { NoDataFound, NoDataFoundWidgets } from '../empty-state';\nimport { Typography } from '../typography/Typography';\nimport { DndContext, DragOverlay, type DragEndEvent, type DragStartEvent, type DropAnimation, MouseSensor, TouchSensor, closestCorners, useSensor, useSensors } from '@dnd-kit/core';\nimport React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { AutoSizer as _AutoSizer } from 'react-virtualized-auto-sizer';\nimport { createPortal } from 'react-dom';\nimport type { Row as ReactTableRow } from 'react-table';\nimport { useResizeColumns, useTable } from 'react-table';\n\nimport { Body } from './body';\nimport { validateCellValue } from './validateCell';\nimport { Row } from './body/rows/row';\nimport { TableContext } from './context';\nimport { CurrencyDropdownPortal } from './CurrencyDropdownPortal';\nimport { Head } from './head';\nimport { PendingEditsFloatingBar } from './PendingEditsFloatingBar';\nimport type { ICurrencyDropdownConfig, IColumn, IMasterDataModalConfig, ITableProps, ITableView, PendingEditsMap, IPendingEdit } from './types';\nimport { Add2Icon } from '../../icon';\nimport {\n TOOLBAR_FIRST_BREAKPOINT,\n TOOLBAR_SECOND_BREAKPOINT,\n DEFAULT_PAGE_SIZE,\n DEFAULT_COLUMN_MIN_WIDTH,\n DEFAULT_COLUMN_WIDTH,\n DEFAULT_COLUMN_MAX_WIDTH,\n DND_ACTIVATION_DISTANCE,\n DROP_ANIMATION_EASING,\n DROP_ANIMATION_DURATION,\n SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK,\n SCROLL_TO_CELL_LEFT_OFFSET,\n ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH,\n ROW_OPTIONS_COLUMN_WIDTH,\n OS_VIEWPORT_SELECTOR,\n DATA_ROW_ID_ATTR,\n DATA_COLUMN_KEY_ATTR,\n} from './constants';\n\nconst AutoSizer = _AutoSizer as unknown as React.ComponentType<{\n renderProp: (size: { width: number; height: number }) => React.ReactNode;\n style?: React.CSSProperties;\n}>;\n\nconst CREATE_COLUMN_LABEL = 'Create Column';\n\nconst getEmptyButtonId = (label: string, index: number): string => {\n const slug = label.toLowerCase().trim().replace(/\\s+/g, '-').replace(/[^a-z0-9-_]/g, '');\n return `button-admin-${slug || index}`;\n};\n\nexport const InfiniteTable = React.memo(\n ({\n tableKey,\n searchConfig = { search: '', handleSearch: () => null, allowAStarSearch: false },\n filterConfig = {\n columnFilters: [],\n onFilter: () => null,\n onRemoveFilter: () => null,\n onClearFilter: () => null,\n onResetFilter: () => Promise.resolve({}),\n asyncRowOptionsFilter: () => Promise.resolve({}),\n },\n sortConfig = { onSort: () => null, columnSort: { field: '', order: '' }, onRemoveSort: () => null },\n headerConfig = {\n showExportButton: null,\n showFilters: true,\n showSorts: true,\n showSearch: true,\n showTableView: true,\n showTableViewAsModal: false,\n content: null,\n postContent: null,\n preContent: null,\n isLoading: false,\n showDivider: false,\n },\n hoverConfig = null,\n columns,\n modelName,\n enableMasterDataEnumSuggestions = false,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n enumSuggestionsData,\n data = [],\n onRowClick,\n showHeader,\n tableActions,\n rowOptions,\n hideRowOptionWidth,\n checkboxUtilities,\n isLoading = false,\n onScroll,\n onScrolling,\n isColumnConfigurable,\n onAddColumnClick,\n emptyMessage,\n noDataWidget,\n buttons,\n onEditColumnClick,\n onDeleteColumnClick,\n onRowTooltipClick,\n tooltiptext,\n cascadingTableConfig,\n originalsOnly,\n disableOptionsForRowIndex,\n tableHeightClass = 'h-[calc(100vh-220px)]',\n getFullRowDataOnClick,\n selectedRowId = null,\n onRowEdit,\n onBulkRowEdit,\n inlineEditColumns,\n isResizable = true,\n paginationConfig,\n dndSortableUtils,\n multipleContexts,\n withSortable,\n withDraggable,\n enableRootDrag,\n pageSize = DEFAULT_PAGE_SIZE,\n onCascadingRowExpand,\n totalItems,\n showRecordCount = false,\n getInnerRowData,\n maxLevel,\n expandedRows = {},\n setExpandedRows,\n showNewItem,\n rawData,\n dragConfig,\n isOverlayLoading,\n style = {},\n floatingBarConfig,\n rowWrapper,\n rowLinkConfig,\n isCellClickDisabled,\n setHeaderOnParent,\n optimizeTable = false,\n multiSelectConfig,\n headerContextOptions,\n showHeaderContextOptions,\n setShowHeaderContextOptions,\n showDataTypeIcon = false,\n rowAdditionalActions,\n rowAdditionalActionsWidth,\n setVisibleHeaders,\n cellEditing = null,\n cellEditingValue = null,\n allowInlineEdit = false,\n onFieldOperationFlow,\n fieldOperationLoading = null,\n onTableActionsReady,\n onPendingEditsChange,\n onCancelPendingEdits,\n }: ITableProps) => {\n const tableConfig = useTableConfig();\n\n const isSearch = Boolean(searchConfig?.search);\n\n const isFilters = filterConfig?.columnFilters?.length > 0;\n const isAnyFilters = isSearch || isFilters;\n\n const isCheckbox = Boolean(checkboxUtilities);\n\n const defaultTableView = tableConfig?.getTableView?.(tableKey as string) ?? null;\n const [selectedTableView, setSelectedTableView] = useState<ITableView | null>(defaultTableView || null);\n const [showFilters, setShowFilters] = useState(false);\n const [showSorts, setShowSorts] = useState(false);\n const [newFilterColumn, setNewFilterColumn] = useState<unknown>(null);\n const [tableHeaders, setTableHeaders] = useState<IColumn[]>(columns);\n const isEmpty = (data.length === 0 || !tableHeaders.length) && !isLoading;\n const [showHeaderOptions, setShowHeaderOptions] = useState<string | null>(null);\n const [showDataFilterModal, setShowDataFilterModal] = useState<boolean>(false);\n const [dataFilterColumn, setDataFilterColumn] = useState<unknown>(null);\n const [isAllChecked, setIsAllChecked] = useState(false);\n const [isShowSortArrowAsc, setIsShowSortArrowAsc] = useState<string | null>(null);\n const [isShowSortArrowDesc, setIsShowSortArrowDesc] = useState<string | null>(null);\n const [sortableListByContext, setSortableListByContext] = useState<Record<string, unknown>>({});\n const [activeItem, setActiveItem] = useState<ReactTableRow<object> | null>(null);\n const [dndLoading, setDndLoading] = useState<boolean>(false);\n const [headerDivWidth, setHeaderDivWidth] = useState(0);\n const headerDivRef = useRef<HTMLDivElement>(null);\n const tableContainerRef = useRef<HTMLDivElement>(null);\n const [tableContainerSize, setTableContainerSize] = useState({ width: 0, height: 0 });\n const [activeInlineEdit, setActiveInlineEdit] = useState<{ rowId: string; columnKey: string } | null>(null);\n const [masterDataModalConfig, setMasterDataModalConfig] = useState<IMasterDataModalConfig | null>(null);\n const [selectedMasterData, setSelectedMasterData] = useState<{ value: unknown; reference: unknown } | null>(null);\n const [currencyDropdownConfig, setCurrencyDropdownConfig] = useState<ICurrencyDropdownConfig | null>(null);\n const [selectedCurrenciesMap, setSelectedCurrenciesMap] = useState<Record<string, string>>({});\n const hasAppliedInitialFilters = useRef(false);\n const userClearedFiltersRef = useRef(false);\n\n const selectedTableViewRef = useRef(selectedTableView);\n selectedTableViewRef.current = selectedTableView;\n const tableConfigRef = useRef(tableConfig);\n tableConfigRef.current = tableConfig;\n const columnsRef = useRef(columns);\n columnsRef.current = columns;\n const filterConfigRef = useRef(filterConfig);\n filterConfigRef.current = filterConfig;\n const headerGroupsRef = useRef<unknown[] | null>(null);\n const resolveTableViewRef = useRef<() => ITableView>(() => ({}) as ITableView);\n const computeListRef = useRef<() => unknown>(() => ({}));\n\n const [pendingEdits, setPendingEdits] = useState<PendingEditsMap>({});\n\n const addPendingEdit = useCallback(\n (rowId: string, columnKey: string, edit: IPendingEdit) => {\n setPendingEdits((prev) => {\n const existingEdit = prev[rowId]?.[columnKey];\n let resolvedValidationError: string | null | undefined = edit.validationError;\n if (resolvedValidationError === undefined) {\n const column = tableHeaders.find((col) => col.key === columnKey);\n if (column) {\n const result = validateCellValue(edit.value, column as { type?: string; is_required?: boolean });\n resolvedValidationError = !result.isValid ? (result.error || 'Invalid') : null;\n } else {\n resolvedValidationError = existingEdit?.validationError ?? null;\n }\n }\n return { ...prev, [rowId]: { ...(prev[rowId] || {}), [columnKey]: { ...edit, validationError: resolvedValidationError ?? null } } };\n });\n },\n [tableHeaders],\n );\n\n const hasPendingEdits = useCallback(() => {\n return Object.values(pendingEdits).some((rowEdits) => Object.keys(rowEdits).length > 0);\n }, [pendingEdits]);\n\n useEffect(() => {\n if (onTableActionsReady) onTableActionsReady({ addPendingEdit: addPendingEdit as (rowId: string, columnKey: string, edit: { value: unknown; originalValue?: unknown; meta?: unknown }) => void, hasPendingEdits });\n }, [onTableActionsReady, addPendingEdit, hasPendingEdits]);\n\n const removePendingEdit = useCallback((rowId: string, columnKey: string) => {\n setPendingEdits((prev) => {\n const newEdits = { ...prev };\n if (newEdits[rowId]) {\n const { [columnKey]: _removed, ...rest } = newEdits[rowId]; void _removed;\n if (Object.keys(rest).length === 0) delete newEdits[rowId];\n else newEdits[rowId] = rest;\n }\n return newEdits;\n });\n }, []);\n\n const getPendingEdit = useCallback(\n (rowId: string, columnKey: string): IPendingEdit | undefined => pendingEdits[rowId]?.[columnKey],\n [pendingEdits],\n );\n\n const hasPendingEdit = useCallback(\n (rowId: string, columnKey: string): boolean => Boolean(pendingEdits[rowId]?.[columnKey]),\n [pendingEdits],\n );\n\n const clearAllPendingEdits = useCallback(() => {\n if (fieldOperationLoading) return;\n if (onCancelPendingEdits && Object.keys(pendingEdits).length > 0) onCancelPendingEdits(pendingEdits);\n setPendingEdits({});\n setSelectedCurrenciesMap({});\n setActiveInlineEdit(null);\n }, [fieldOperationLoading, onCancelPendingEdits, pendingEdits]);\n\n const scrollToCell = useCallback(\n (rowId: string, columnKey: string, rowIndex: number) => {\n setTimeout(() => {\n tableConfig?.dispatchEvent?.('SCROLL_TO_TABLE_ROW', { rowIndex });\n const colIndex = tableHeaders.findIndex((col) => col.key === columnKey);\n setTimeout(() => {\n const cellElement = document.querySelector(`[${DATA_ROW_ID_ATTR}=\"${rowId}\"] [${DATA_COLUMN_KEY_ATTR}=\"${columnKey}\"]`);\n if (cellElement) {\n cellElement.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });\n } else if (colIndex > 0) {\n const scrollContainer = document.querySelector(OS_VIEWPORT_SELECTOR);\n if (scrollContainer) {\n let scrollLeft = 0;\n for (let i = 0; i < colIndex; i++) {\n const col = tableHeaders[i];\n if (!col?.sticky) scrollLeft += col?.width || SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK;\n }\n scrollLeft = Math.max(0, scrollLeft - SCROLL_TO_CELL_LEFT_OFFSET);\n scrollContainer.scrollTo({ left: scrollLeft, behavior: 'smooth' });\n }\n }\n setActiveInlineEdit({ rowId, columnKey });\n }, 350);\n }, 100);\n },\n [tableHeaders, tableConfig],\n );\n\n const validateAllPendingEdits = useCallback(\n (editsToValidate: PendingEditsMap): { hasErrors: boolean; updatedEdits: PendingEditsMap; firstError: { rowId: string; columnKey: string } | null; errorTypes: Set<string> } => {\n let hasErrors = false;\n let firstError: { rowId: string; columnKey: string } | null = null;\n const updatedEdits: PendingEditsMap = {};\n const errorTypes = new Set<string>();\n\n Object.entries(editsToValidate).forEach(([rowId, rowEdits]) => {\n updatedEdits[rowId] = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n const column = tableHeaders.find((col) => col.key === columnKey);\n const result = validateCellValue(edit.value, column as { type?: string; is_required?: boolean });\n if (!result.isValid) {\n hasErrors = true;\n if (result.error) errorTypes.add(result.error);\n if (!firstError) firstError = { rowId, columnKey };\n updatedEdits[rowId][columnKey] = { ...edit, validationError: result.error };\n } else {\n updatedEdits[rowId][columnKey] = { ...edit, validationError: null };\n }\n });\n });\n\n return { hasErrors, updatedEdits, firstError, errorTypes };\n },\n [tableHeaders],\n );\n\n const getValidationToastMessage = useCallback((errorTypes: Set<string>) => {\n const hasRequired = errorTypes.has('Field required');\n const hasFormat = errorTypes.size > (hasRequired ? 1 : 0);\n if (hasRequired && hasFormat) return 'Missing required field(s) and invalid format detected. Please review highlighted field(s).';\n if (hasRequired) return 'Missing required field(s). Please review highlighted field(s).';\n return 'Invalid field value(s). Please review highlighted field(s).';\n }, []);\n\n const saveAllPendingEdits = useCallback(() => {\n const { hasErrors, updatedEdits, firstError, errorTypes } = validateAllPendingEdits(pendingEdits);\n if (hasErrors) {\n setPendingEdits(updatedEdits);\n tableConfig?.showNotification?.('error', getValidationToastMessage(errorTypes));\n if (firstError) {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === firstError!.rowId);\n scrollToCell(firstError!.rowId, firstError!.columnKey, rowIndex);\n }\n return;\n }\n\n const editedRows: Array<Record<string, unknown>> = [];\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const originalRow = data.find((row: Record<string, unknown>) => row.id === rowId);\n if (originalRow) {\n const updatedRow = { ...originalRow };\n const editedFields: Record<string, { value: unknown; meta?: unknown }> = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n updatedRow[columnKey] = edit.value;\n editedFields[columnKey] = { value: edit.value, meta: edit.meta };\n });\n editedRows.push({ ...updatedRow, __editedFields: editedFields });\n }\n });\n\n if (editedRows.length > 0) {\n if (onBulkRowEdit) onBulkRowEdit(editedRows);\n else if (onRowEdit) onRowEdit(null, null, null, null, null, { isBulk: true, rows: editedRows });\n }\n\n setPendingEdits({});\n setSelectedCurrenciesMap({});\n setActiveInlineEdit(null);\n }, [pendingEdits, data, onRowEdit, onBulkRowEdit, validateAllPendingEdits, getValidationToastMessage, scrollToCell, tableConfig]);\n\n const clearRowPendingEdits = useCallback(\n (rowId: string) => {\n if (fieldOperationLoading) return;\n const rowEdits = pendingEdits[rowId];\n if (rowEdits && onCancelPendingEdits) onCancelPendingEdits({ [rowId]: rowEdits });\n setPendingEdits((prev) => { const n = { ...prev }; delete n[rowId]; return n; });\n setSelectedCurrenciesMap((prev) => { const n = { ...prev }; Object.keys(n).forEach((k) => { if (k.startsWith(`${rowId}-`)) delete n[k]; }); return n; });\n setActiveInlineEdit(null);\n },\n [fieldOperationLoading, onCancelPendingEdits, pendingEdits],\n );\n\n const saveRowPendingEdits = useCallback(\n (rowId: string) => {\n const rowEdits = pendingEdits[rowId];\n if (!rowEdits || Object.keys(rowEdits).length === 0) return;\n\n const { hasErrors, updatedEdits, firstError, errorTypes } = validateAllPendingEdits({ [rowId]: rowEdits });\n if (hasErrors) {\n setPendingEdits((prev) => ({ ...prev, [rowId]: updatedEdits[rowId] }));\n tableConfig?.showNotification?.('error', getValidationToastMessage(errorTypes));\n if (firstError) {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === firstError!.rowId);\n scrollToCell(firstError!.rowId, firstError!.columnKey, rowIndex);\n }\n return;\n }\n\n const originalRow = data.find((row: Record<string, unknown>) => row.id === rowId);\n if (!originalRow) return;\n const updatedRow = { ...originalRow };\n const editedFields: Record<string, { value: unknown; meta?: unknown }> = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n updatedRow[columnKey] = edit.value;\n editedFields[columnKey] = { value: edit.value, meta: edit.meta };\n });\n\n const editedRowData = { ...updatedRow, __editedFields: editedFields };\n\n if (onBulkRowEdit) onBulkRowEdit([editedRowData]);\n else if (onRowEdit) onRowEdit(null, null, null, null, null, { isBulk: true, rows: [editedRowData] });\n\n setPendingEdits((prev) => { const n = { ...prev }; delete n[rowId]; return n; });\n setSelectedCurrenciesMap((prev) => { const n = { ...prev }; Object.keys(n).forEach((k) => { if (k.startsWith(`${rowId}-`)) delete n[k]; }); return n; });\n setActiveInlineEdit(null);\n },\n [pendingEdits, data, onRowEdit, onBulkRowEdit, validateAllPendingEdits, getValidationToastMessage, scrollToCell, tableConfig],\n );\n\n const pendingEditsCount = useMemo(() => {\n return Object.values(pendingEdits).reduce((total, rowEdits) => total + Object.keys(rowEdits).length, 0);\n }, [pendingEdits]);\n\n useEffect(() => {\n onPendingEditsChange?.(pendingEditsCount > 0, pendingEditsCount);\n }, [pendingEditsCount, onPendingEditsChange]);\n\n const pendingEditsList = useMemo(() => {\n const list: Array<{ rowId: string; columnKey: string; fieldName: string; value: unknown; originalValue: unknown; meta?: IPendingEdit['meta']; originalMeta?: IPendingEdit['originalMeta']; rowIndex: number }> = [];\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === rowId);\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n const column = tableHeaders.find((col) => col.key === columnKey);\n list.push({ rowId, columnKey, fieldName: column?.Header || column?.display_name || columnKey, value: edit.value, originalValue: edit.originalValue, meta: edit.meta, originalMeta: edit.originalMeta, rowIndex });\n });\n });\n return list;\n }, [pendingEdits, tableHeaders, data]);\n\n const rowsWithPendingEdits = useMemo(() => {\n const rowsMap = new Map<string, { rowId: string; rowIndex: number; editCount: number }>();\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === rowId);\n rowsMap.set(rowId, { rowId, rowIndex, editCount: Object.keys(rowEdits).length });\n });\n return Array.from(rowsMap.values()).sort((a, b) => a.rowIndex - b.rowIndex);\n }, [pendingEdits, data]);\n\n const openMasterDataModal = useCallback((config: IMasterDataModalConfig) => setMasterDataModalConfig(config), []);\n const closeMasterDataModal = useCallback(() => setMasterDataModalConfig(null), []);\n\n const handleMasterDataSelected = useCallback(\n (value: unknown, row?: unknown) => {\n setSelectedMasterData({ value, reference: row });\n if (masterDataModalConfig?.onSelected) masterDataModalConfig.onSelected(value, row);\n closeMasterDataModal();\n },\n [masterDataModalConfig, closeMasterDataModal],\n );\n\n const clearSelectedMasterData = useCallback(() => setSelectedMasterData(null), []);\n\n const openCurrencyDropdown = useCallback((config: ICurrencyDropdownConfig) => setCurrencyDropdownConfig(config), []);\n const closeCurrencyDropdown = useCallback(() => setCurrencyDropdownConfig(null), []);\n\n const setCurrencyForCell = useCallback((cellKey: string, currency: string) => {\n setSelectedCurrenciesMap((prev) => ({ ...prev, [cellKey]: currency }));\n }, []);\n\n const getCurrencyForCell = useCallback(\n (cellKey: string): string | undefined => selectedCurrenciesMap[cellKey],\n [selectedCurrenciesMap],\n );\n\n const fallbackHeight = useMemo(() => {\n const pxMatch = tableHeightClass.match(/h-\\[(\\d+px)\\]/);\n if (pxMatch) return pxMatch[1];\n const calcMatch = tableHeightClass.match(/h-\\[(calc\\(.+\\))\\]/);\n if (calcMatch) return calcMatch[1].replace(/([+-])/g, ' $1 ').replace(/\\s+/g, ' ');\n return undefined;\n }, [tableHeightClass]);\n\n const emptySwitchProps = {\n isEmpty,\n isFilters: isAnyFilters,\n isColumnConfigurable,\n handleOnClick: onAddColumnClick,\n emptyMessage,\n buttons,\n noDataWidget,\n };\n const translatedCreateColumnLabel = tableConfig?.t?.(CREATE_COLUMN_LABEL) ?? CREATE_COLUMN_LABEL;\n const defaultEmptyText = isAnyFilters ? 'No Results Found' : emptyMessage || 'No Data Found';\n const resolvedEmptyText = typeof defaultEmptyText === 'string' ? (tableConfig?.t?.(defaultEmptyText) ?? defaultEmptyText) : defaultEmptyText;\n\n const loaderData = { __isLoading: true };\n const cellLoaders = new Array(1).fill(loaderData);\n const tableLoaders = new Array(pageSize).fill(loaderData);\n\n const visibleColumns = useMemo(() => tableHeaders.filter((header) => Boolean(header?.visible)), [tableHeaders]);\n\n const table = useTable(\n {\n columns: optimizeTable ? visibleColumns : tableHeaders,\n data: [...data, ...(isLoading ? (data?.length ? cellLoaders : tableLoaders) : [])],\n defaultColumn: { minWidth: DEFAULT_COLUMN_MIN_WIDTH, width: DEFAULT_COLUMN_WIDTH, maxWidth: DEFAULT_COLUMN_MAX_WIDTH },\n },\n useResizeColumns,\n );\n\n const { getTableProps, getTableBodyProps, headerGroups, prepareRow, rows } = table;\n headerGroupsRef.current = headerGroups;\n\n const headerKeys = JSON.stringify(headerGroups[0]?.headers?.map((header) => (header as unknown as Record<string, unknown>)?.Header));\n useEffect(() => {\n if (setVisibleHeaders) {\n const groups = headerGroupsRef.current as Array<{ headers?: Array<Record<string, unknown>> }> | null;\n setVisibleHeaders?.(groups?.[0]?.headers?.map((header) => header?.Header as string) ?? []);\n }\n }, [headerKeys, setVisibleHeaders]);\n\n const { checkboxConfig } = useCheckbox({\n rows: rows as never,\n checkedIds: checkboxUtilities?.checkedIds as string[],\n isCheckAllDisabled: checkboxUtilities?.isCheckAllDisabled,\n selectionDisabledRowIds: checkboxUtilities?.selectionDisabledRowIds,\n rawData,\n onAllChecked: setIsAllChecked,\n setCheckedIds: checkboxUtilities?.setCheckedIds as (ids: string[]) => void,\n checkboxMetadata: checkboxUtilities?.checkboxMetadata as { checkedIds: string[]; tooltip: string; highlight: string },\n });\n\n const sensors = useSensors(\n useSensor(MouseSensor, { activationConstraint: { distance: DND_ACTIVATION_DISTANCE } }),\n useSensor(TouchSensor, { activationConstraint: { distance: DND_ACTIVATION_DISTANCE } }),\n );\n\n const dropAnimation: DropAnimation = { easing: DROP_ANIMATION_EASING, duration: DROP_ANIMATION_DURATION };\n\n function computeList() {\n if (!multipleContexts?.length || !withSortable) return rows;\n return multipleContexts.reduce((acc: Record<string, unknown>, contextKey: string) => {\n acc[contextKey] = rows.filter((e) => (e.original as Record<string, unknown>)?.type === contextKey);\n return acc;\n }, {});\n }\n computeListRef.current = computeList;\n\n const handleDragStart = (event: DragStartEvent) => {\n const { active } = event;\n setActiveItem(rows.find((item) => (item.original as Record<string, unknown>)?.id === active?.id) ?? null);\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over) return;\n if (dndSortableUtils?.checkDndDragEnd) {\n dndSortableUtils.checkDndDragEnd(active, over, sortableListByContext, (newState: Record<string, unknown>) => {\n setSortableListByContext(newState as Record<string, unknown>);\n setDndLoading(true);\n dndSortableUtils.onDragSuccess?.({\n draggedId: active.id as string,\n droppedId: over.id as string,\n draggedType: (active.data.current as Record<string, unknown>)?.type,\n droppedType: (over.data.current as Record<string, unknown>)?.type,\n updatedList: newState,\n cb: () => setDndLoading(false),\n });\n });\n }\n setActiveItem(null);\n };\n\n const handleDragCancel = () => setActiveItem(null);\n\n const toggleHeaderOption = (key: string) => {\n if (!sortConfig?.onSort && !filterConfig?.onFilter) return;\n if (showHeaderOptions === key) setShowHeaderOptions(null);\n else setShowHeaderOptions(key);\n };\n\n const toggleDataFilterModal = (col: unknown) => {\n setDataFilterColumn(col);\n setShowDataFilterModal(!showDataFilterModal);\n setShowHeaderOptions(null);\n };\n\n const handleRemoveSort = useCallback(() => {\n if (sortConfig?.onRemoveSort) sortConfig.onRemoveSort();\n else if (sortConfig?.onSort) sortConfig.onSort('', '');\n }, [sortConfig]);\n\n const toggleShowFilters = useCallback((col: unknown = null) => {\n setNewFilterColumn(col);\n setShowFilters(prev => col ? true : !prev);\n }, []);\n const toggleShowSorts = useCallback(() => setShowSorts(prev => !prev), []);\n\n const lastNonStickyColumnIndex = () => {\n const reverseHeaders = (headerGroups[0]?.headers as unknown as Array<Record<string, unknown>>)?.filter((header) => header?.visible !== false);\n for (let i = 0; i < reverseHeaders.length; i++) {\n if (reverseHeaders[i].sticky) return i - 1;\n }\n return reverseHeaders.length - 1;\n };\n\n const getSumOfNextVisibleColumnWidth = useCallback(\n (currentIndex: number) => {\n let sum = 0;\n for (let i = currentIndex + 1; i < visibleColumns.length; i++) {\n if (visibleColumns[i].visible !== false) sum += visibleColumns[i].width ?? 0;\n }\n if (rowAdditionalActions) sum += rowAdditionalActionsWidth || ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH;\n if (rowOptions) sum += hideRowOptionWidth ? 0 : ROW_OPTIONS_COLUMN_WIDTH;\n return sum;\n },\n [visibleColumns, rowAdditionalActionsWidth, hideRowOptionWidth, rowAdditionalActions, rowOptions],\n );\n\n const resolveTableView = (): ITableView => {\n const userId = tableConfig?.getUserId?.();\n return {\n ...(selectedTableView || {}),\n name: selectedTableView?.name || 'Untitled View',\n created_by: selectedTableView?.created_by || userId,\n filters: selectedTableView?.filters || filterConfig?.columnFilters,\n id: selectedTableView?.id || 'untitled-view',\n table_key: selectedTableView?.table_key || tableKey,\n columns: selectedTableView?.columns || columns?.map((column, index) => ({\n name: column.Header,\n width: column.width,\n visible: column.visible,\n sticky: column.sticky,\n order: index + 1,\n display_name: column.Header,\n sequence: index + 1,\n Header: column.Header,\n })),\n };\n };\n resolveTableViewRef.current = resolveTableView;\n\n const handleUpdateColumnWidth = (columnName: string, width: number) => {\n const updatedTableView = resolveTableView();\n setSelectedTableView({\n ...updatedTableView,\n columns: updatedTableView?.columns?.map((column) => (column.name === columnName ? { ...column, width } : column)),\n unsaved: true,\n });\n };\n\n useEffect(() => {\n if (filterConfig?.columnFilters?.length > 0) setShowFilters(true);\n const currentView = selectedTableViewRef.current;\n if (JSON.stringify(currentView?.filters || []) !== JSON.stringify(filterConfig?.columnFilters || [])) {\n const hasViewFilters = (currentView?.filters?.length ?? 0) > 0;\n const hasConfigFilters = filterConfig?.columnFilters?.length > 0;\n // Skip sync only during the initial load window where the view already has filters\n // but they haven't propagated to columnFilters yet. If the user explicitly cleared\n // filters from ActiveFilters (X button or Clear), we must propagate the empty state.\n const isClearingFilters = hasViewFilters && !hasConfigFilters && !userClearedFiltersRef.current;\n if (!isClearingFilters) {\n const updatedTableView = resolveTableViewRef.current();\n setSelectedTableView({ ...updatedTableView, filters: JSON.parse(JSON.stringify(filterConfig?.columnFilters || [])), unsaved: true });\n }\n userClearedFiltersRef.current = false;\n }\n }, [filterConfig?.columnFilters]);\n\n const handleActiveRemoveFilter = useCallback(\n (key: string) => {\n userClearedFiltersRef.current = true;\n filterConfig?.onRemoveFilter?.(key);\n },\n [filterConfig?.onRemoveFilter],\n );\n\n const handleActiveClearFilter = useCallback(() => {\n userClearedFiltersRef.current = true;\n filterConfig?.onClearFilter?.();\n }, [filterConfig?.onClearFilter]);\n\n useEffect(() => {\n if (sortConfig?.columnSort?.field) {\n setShowSorts(true);\n if (sortConfig.columnSort.order === 'asc') { setIsShowSortArrowAsc(sortConfig.columnSort.field); setIsShowSortArrowDesc(null); }\n else if (sortConfig.columnSort.order === 'desc') { setIsShowSortArrowDesc(sortConfig.columnSort.field); setIsShowSortArrowAsc(null); }\n } else { setIsShowSortArrowAsc(null); setIsShowSortArrowDesc(null); }\n }, [sortConfig?.columnSort?.field, sortConfig?.columnSort?.order]);\n\n useEffect(() => {\n setTableHeaders(mergeViewColumnsWithTableColumns(selectedTableViewRef.current?.columns || [], columns));\n }, [columns]);\n\n useEffect(() => {\n if (selectedTableView?.unsaved) tableConfigRef.current?.persistTableView?.(selectedTableView);\n }, [selectedTableView]);\n\n useEffect(() => { setSortableListByContext(computeListRef.current() as Record<string, unknown>); }, [rows.length]);\n\n useEffect(() => {\n setSelectedTableView(defaultTableView || null);\n if (defaultTableView?.columns) {\n setTableHeaders(mergeViewColumnsWithTableColumns(defaultTableView?.columns || [], columnsRef.current));\n }\n if (defaultTableView?.filters && defaultTableView.filters.length > 0 && !hasAppliedInitialFilters.current) {\n requestAnimationFrame(() => { filterConfigRef.current?.onFilter?.(defaultTableView.filters); });\n hasAppliedInitialFilters.current = true;\n } else if (defaultTableView?.filters && hasAppliedInitialFilters.current) {\n const filtersAreDifferent = JSON.stringify(defaultTableView.filters) !== JSON.stringify(filterConfigRef.current?.columnFilters);\n if (filtersAreDifferent) filterConfigRef.current?.onFilter?.(defaultTableView.filters);\n }\n }, [defaultTableView]);\n\n useEffect(() => {\n if (headerDivRef.current) {\n const resizeObserver = new ResizeObserver((entries) => setHeaderDivWidth(entries[0].contentRect.width));\n resizeObserver.observe(headerDivRef.current);\n return () => resizeObserver.disconnect();\n }\n }, []);\n\n useEffect(() => {\n if (!tableContainerRef.current) return;\n const resizeObserver = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect;\n setTableContainerSize({ width, height });\n });\n resizeObserver.observe(tableContainerRef.current);\n return () => resizeObserver.disconnect();\n }, []);\n\n const tableHeader = (\n <Head\n isResizable={isResizable}\n headerGroups={headerGroups as never}\n isCheckbox={isCheckbox}\n checkboxConfig={checkboxConfig}\n isAllChecked={isAllChecked}\n showHeaderOptions={showHeaderOptions ?? ''}\n setShowHeaderOptions={setShowHeaderOptions}\n isShowSortArrowAsc={isShowSortArrowAsc}\n isShowSortArrowDesc={isShowSortArrowDesc}\n onSort={sortConfig?.onSort as ((field: string, order?: string) => void) | undefined}\n onFilter={filterConfig?.onFilter}\n toggleHeaderOption={toggleHeaderOption}\n setIsShowSortArrowAsc={setIsShowSortArrowAsc}\n setIsShowSortArrowDesc={setIsShowSortArrowDesc}\n toggleDataFilterModal={toggleShowFilters}\n rowOptions={(Array.isArray(rowOptions) ? rowOptions : []) as unknown[]}\n isColumnConfigurable={isColumnConfigurable ?? false}\n onAddColumnClick={onAddColumnClick as (column: { id: string; key: string; [k: string]: unknown }) => void}\n onEditColumnClick={onEditColumnClick as (column: { id: string; key: string; [k: string]: unknown }) => void}\n onDeleteColumnClick={onDeleteColumnClick as (column: { id: string; key: string; [k: string]: unknown }) => void}\n tableActions={(tableActions || null)}\n isLoading={isLoading}\n rowAdditionalActions={(rowAdditionalActions ?? null) as (() => React.ReactNode) | null}\n showPendingEditsColumn={pendingEditsCount > 0}\n />\n );\n\n const tableView = (\n <>\n {dndLoading || isOverlayLoading ? (\n <div className='absolute left-0 top-0 w-full h-full z-40 flex items-center justify-center bg-neutral-100 dark:bg-black-700' />\n ) : null}\n <div\n {...getTableProps()}\n className='w-full text-sm text-left text-neutral-500 dark:text-neutral-200 h-full bg-white dark:bg-black-800'\n >\n {isEmpty ? (\n <div className='z-10'>\n {tableHeader}\n <div className='absolute w-full'>\n {tableConfig?.renderEmpty ? tableConfig.renderEmpty(emptySwitchProps) : (\n <div className='flex flex-col items-center justify-center w-full h-[12rem] text-neutral-900 dark:text-neutral-200 mt-8'>\n {noDataWidget && !isAnyFilters ? <NoDataFoundWidgets widgetType='TABLE' /> : <NoDataFound text={resolvedEmptyText} />}\n {isColumnConfigurable && !isAnyFilters ? (\n <div className='my-4'>\n <Button\n id='btn-table-shell-create-column'\n status='primary'\n appearance='ghost'\n onClick={onAddColumnClick as ((event: React.MouseEvent<HTMLButtonElement>) => void) | undefined}\n >\n <Add2Icon className='text-white dark:text-white' /> {translatedCreateColumnLabel}\n </Button>\n </div>\n ) : null}\n {!isAnyFilters &&\n buttons?.map((button, index) => (\n <Button key={`${button.label}-${index}`} status='secondary' id={getEmptyButtonId(button.label, index)} onClick={button.onClick}>\n {tableConfig?.t?.(button.label) ?? button.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>\n ) : (\n <AutoSizer\n style={{ width: '100%', height: '100%' }}\n renderProp={({ width, height }) => {\n const effectiveWidth = width > 0 ? width : tableContainerSize.width;\n const effectiveHeight = height > 0 ? height : tableContainerSize.height;\n return effectiveWidth > 0 && effectiveHeight > 0 ? (\n <Body\n {...{\n getTableBodyProps: getTableBodyProps as unknown as () => Record<string, unknown>, rows: rows as never, prepareRow: prepareRow as never, isLoading, onScroll, onScrolling, columns, width: effectiveWidth, height: effectiveHeight, withSortable,\n allowAstarSearch: searchConfig?.allowAStarSearch || false,\n }}\n />\n ) : null;\n }}\n />\n )}\n </div>\n </>\n );\n\n const tableWrapper = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <div className='h-full w-full' {...props} ref={ref}>\n {tableHeader}\n <div className='relative w-full h-full'>{props?.children}</div>\n </div>\n ));\n\n const tableBodyWrapper = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <div className='h-full w-full' {...props} ref={ref}>\n <div className='relative w-full h-full'>{props?.children}</div>\n </div>\n ));\n\n const TableHeaderComponent = useMemo(() => {\n if (tableConfig?.renderTableHeader) {\n return tableConfig.renderTableHeader({\n tableKey, search: searchConfig?.search, handleSearch: searchConfig?.handleSearch,\n toggleShowFilters, toggleShowSorts, filterCounts: filterConfig?.columnFilters?.length,\n columns, columnFilters: filterConfig?.columnFilters, setSelectedTableView, selectedTableView,\n enableTableView: headerConfig?.showTableView, modelName: modelName as string,\n enableMasterDataEnumSuggestions,\n onRemoveFilter: filterConfig?.onRemoveFilter, onClearFilter: filterConfig?.onClearFilter,\n onFilter: filterConfig?.onFilter, data: enumSuggestionsData ?? data, tableHeaders, showTableViewAsModal: headerConfig?.showTableViewAsModal,\n additionalOptions: headerConfig?.additionalOptions, inlineActions: headerConfig?.inlineActions, showFilters: headerConfig?.showFilters,\n showSorts: headerConfig?.showSorts, showSearch: headerConfig?.showSearch,\n isLoading: Boolean(headerConfig?.isLoading), setTableHeaders,\n allowAStarSearch: Boolean(searchConfig?.allowAStarSearch), withContent: !!headerConfig?.content,\n setShowFilters, sort: sortConfig?.columnSort, onSort: sortConfig?.onSort, onRemoveSort: handleRemoveSort,\n showExportButton: headerConfig?.showExportButton,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId\n });\n }\n return null;\n }, [\n tableKey, searchConfig?.search, searchConfig?.handleSearch, toggleShowFilters, toggleShowSorts,\n filterConfig?.columnFilters, columns, setSelectedTableView, selectedTableView, headerConfig,\n modelName, filterConfig?.onRemoveFilter, filterConfig?.onClearFilter, filterConfig?.onFilter,\n data, enumSuggestionsData, tableHeaders, sortConfig?.columnSort, sortConfig?.onSort, handleRemoveSort, tableConfig,\n searchConfig?.allowAStarSearch, enableMasterDataEnumSuggestions,agreementCategoryId, agreementDomainId, agreementId,modificationId,lineItemRowId,\n ]);\n\n useEffect(() => {\n if (setHeaderOnParent) setHeaderOnParent(TableHeaderComponent);\n }, [TableHeaderComponent, setHeaderOnParent]);\n\n return (\n <TableContext.Provider\n value={{\n tableWrapper, tableBodyWrapper, lastNonStickyColumnIndex, search: searchConfig?.search,\n columnFilters: filterConfig?.columnFilters, onRowClick, onSort: sortConfig?.onSort,\n onFilter: filterConfig?.onFilter, toggleShowFilters, toggleShowSorts,\n onRemoveFilter: filterConfig?.onRemoveFilter, onClearFilter: filterConfig?.onClearFilter,\n rowOptions, checkboxConfig, onResetFilter: filterConfig?.onResetFilter, isColumnConfigurable,\n onAddColumnClick, onEditColumnClick, onDeleteColumnClick, onRowTooltipClick, tooltiptext,\n cascadingTableConfig, activeInlineEdit, setActiveInlineEdit, originalsOnly,\n disableOptionsForRowIndex, getFullRowDataOnClick, selectedRowId, getSumOfNextVisibleColumnWidth,\n onRowEdit, inlineEditColumns, tableActions, dndSortableUtils, withSortable, withDraggable,\n onCascadingRowExpand, getInnerRowData, tableHeaders, maxLevel, expandedRows, setExpandedRows,\n showNewItem, rawData, dragConfig, rowWrapper, rowLinkConfig, isCellClickDisabled,\n asyncRowOptionsFilter: filterConfig?.asyncRowOptionsFilter, handleUpdateColumnWidth,\n multiSelectConfig, headerContextOptions, showHeaderContextOptions, setShowHeaderContextOptions: setShowHeaderContextOptions as ((value: string | null) => void) | undefined,\n headerDivWidth, showDataTypeIcon, rowAdditionalActions, hoverConfig, rowAdditionalActionsWidth,\n cellEditing, cellEditingValue, openMasterDataModal, closeMasterDataModal, selectedMasterData,\n clearSelectedMasterData, allowInlineEdit, openCurrencyDropdown, closeCurrencyDropdown,\n currencyDropdownConfig, selectedCurrenciesMap, setCurrencyForCell, getCurrencyForCell,\n pendingEdits, addPendingEdit, removePendingEdit, getPendingEdit, hasPendingEdit,\n clearAllPendingEdits, saveAllPendingEdits, clearRowPendingEdits, saveRowPendingEdits,\n pendingEditsCount, scrollToCell, onFieldOperationFlow, fieldOperationLoading, validateAllPendingEdits,\n }}\n >\n {showHeader ? (\n <div\n ref={headerDivRef}\n className={`mb-2 flex w-full min-w-0 gap-2 dark:bg-black-800 ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'flex-col items-stretch' : 'flex-row items-center'\n }`}\n >\n <div\n className={`flex items-center gap-x-2 gap-y-1 ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full flex-wrap' : ''\n } ${headerConfig?.content ? 'min-w-0 flex-1' : 'shrink-0'}`}\n >\n {headerConfig?.content ? (\n <div className={`min-w-0 ${headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full' : 'flex-1'}`}>\n {headerConfig.content}\n </div>\n ) : null}\n {showRecordCount ? (\n <div className='flex items-center gap-1.5 shrink-0'>\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='16'\n height='16'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n className='text-neutral-500 dark:text-neutral-400 flex-shrink-0'\n aria-hidden\n >\n <ellipse cx='12' cy='5' rx='9' ry='3' />\n <path d='M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5' />\n <path d='M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9' />\n <path d='M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4' />\n </svg>\n <Typography size='small' variant='semibold' appearance='title'>\n {(totalItems ?? data.length).toLocaleString()}\n </Typography>\n <Typography size='small' variant='regular' appearance='subtitle'>\n total records\n </Typography>\n </div>\n ) : headerConfig?.preContent ? (\n <div className='flex min-w-0 shrink-0 justify-start items-center'>{headerConfig.preContent}</div>\n ) : null}\n </div>\n <div\n className={`flex min-w-0 items-center justify-end ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full' : headerConfig?.content ? 'shrink-0' : 'flex-1'\n } ${headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? 'flex-col' : 'flex-row'} ${\n headerConfig?.postContent ? 'gap-2' : ''\n }`}\n >\n {showRecordCount && headerConfig?.preContent ? (\n <div className='flex w-full justify-start items-center'>{headerConfig.preContent}</div>\n ) : null}\n <div\n className={`flex justify-end items-center min-w-0 ${\n headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? 'w-full' : headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full' : ''\n }`}\n >\n {TableHeaderComponent}\n </div>\n {headerConfig?.postContent ? (\n <div className={`flex justify-end items-center ${headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? 'w-full' : ''}`}>\n {headerConfig.postContent}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {headerConfig?.showDivider ? <div className='border-b pb-2 w-full dark:bg-black-800' /> : null}\n {showFilters || showSorts ? (\n <div className='flex justify-between items-center pb-4 dark:bg-black-800'>\n <div className='flex gap-2 items-center'>\n {showSorts && tableConfig?.renderSortItem ? (\n tableConfig.renderSortItem({ sort: sortConfig?.columnSort, onRemoveSort: handleRemoveSort, onSort: sortConfig?.onSort, tableHeaders, data })\n ) : null}\n {showFilters && showSorts && sortConfig?.columnSort?.field !== '' ? (\n <div className='h-8 w-[1px] flex-shrink-0 bg-neutral-200' />\n ) : null}\n {showFilters ? (\n <div className='flex gap-2 items-center'>\n {(isFilters || filterConfig?.onResetFilter) && tableConfig?.renderActiveFilters && (\n tableConfig.renderActiveFilters({\n filters: filterConfig?.columnFilters, onRemoveFilter: handleActiveRemoveFilter,\n onClearFilter: handleActiveClearFilter, onResetFilter: filterConfig?.onResetFilter,\n onFilter: filterConfig?.onFilter, tableHeaders, columnFilters: filterConfig?.columnFilters,\n modelName, enableMasterDataEnumSuggestions, noSpacing: true, notionStyle: filterConfig?.notionStyle, context: filterConfig?.context, data: enumSuggestionsData ?? data,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId\n })\n )}\n {tableConfig?.renderFilterButtons && (\n tableConfig.renderFilterButtons({\n onClearFilter: filterConfig?.onClearFilter, onClose: toggleDataFilterModal,\n modelName, enableMasterDataEnumSuggestions, defaultFilterColumn: newFilterColumn, resetDefaultFilterColumn: () => setNewFilterColumn(null),\n column: dataFilterColumn, onFilter: filterConfig?.onFilter, tableHeaders,\n columnFilters: filterConfig?.columnFilters, data: enumSuggestionsData ?? data, notionStyle: filterConfig?.notionStyle,\n context: filterConfig?.context,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n })\n )}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {floatingBarConfig && Object.keys(floatingBarConfig).length ? <FloatingBar {...floatingBarConfig} /> : null}\n {!showHeader && showRecordCount ? (\n <div className='flex items-center gap-1.5 mb-2'>\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='16'\n height='16'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n className='text-neutral-500 dark:text-neutral-400 flex-shrink-0'\n aria-hidden\n >\n <ellipse cx='12' cy='5' rx='9' ry='3' />\n <path d='M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5' />\n <path d='M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9' />\n <path d='M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4' />\n </svg>\n <Typography size='small' variant='semibold' appearance='title'>\n {(totalItems ?? data.length).toLocaleString()}\n </Typography>\n <Typography size='small' variant='regular' appearance='subtitle'>\n total records\n </Typography>\n </div>\n ) : !showHeader && headerConfig?.preContent ? (\n <div className='flex items-center mb-2'>{headerConfig.preContent}</div>\n ) : null}\n <div\n ref={tableContainerRef}\n className={`w-full ${paginationConfig ? `h-auto` : tableHeightClass} rounded-lg relative border overflow-x-hidden`}\n style={{\n ...(paginationConfig\n ? { height: data?.length > 0 ? `${(data?.length + 1) * 41 + 4}px` : '350px' }\n : { height: fallbackHeight }),\n ...style,\n }}\n >\n {enableRootDrag ? (\n tableView\n ) : (\n <DndContext sensors={sensors} onDragEnd={handleDragEnd} onDragStart={handleDragStart} onDragCancel={handleDragCancel} collisionDetection={closestCorners}>\n {tableView}\n {activeItem\n ? createPortal(\n <DragOverlay adjustScale={true} dropAnimation={dropAnimation}>\n <table {...getTableProps()} className='w-full text-sm text-left text-neutral-500 dark:text-neutral-200 bg-white dark:bg-black-700 table-auto border-collapse'>\n <tbody {...getTableBodyProps()} className='bg-transparent divide-y divide-neutral-200'>\n {void prepareRow(activeItem)}\n <Row key={(activeItem.original as Record<string, unknown>).id as string} row={activeItem as never} index={rows?.findIndex((item) => item.id === (activeItem.original as Record<string, unknown>).id)} />\n </tbody>\n </table>\n </DragOverlay>,\n document.getElementById('full-screen-container') || document.body,\n )\n : null}\n </DndContext>\n )}\n </div>\n {paginationConfig && tableConfig?.renderPagination ? tableConfig.renderPagination(paginationConfig) : null}\n\n {tableConfig?.renderMasterDataModal && tableConfig.renderMasterDataModal({\n isVisible: !!masterDataModalConfig, onSelected: handleMasterDataSelected, onClose: closeMasterDataModal,\n masterDataColumnName: masterDataModalConfig?.masterDataColumnName, masterDataFilters: masterDataModalConfig?.masterDataFilters,\n masterDataName: masterDataModalConfig?.masterDataName, masterDataId: masterDataModalConfig?.masterDataName, showFilters: true,\n })}\n\n <CurrencyDropdownPortal config={currencyDropdownConfig} onClose={closeCurrencyDropdown} />\n\n <PendingEditsFloatingBar\n pendingEditsCount={pendingEditsCount}\n pendingEditsList={pendingEditsList}\n rowsWithPendingEdits={rowsWithPendingEdits}\n fieldOperationLoading={fieldOperationLoading}\n onClearAll={clearAllPendingEdits}\n onSaveAll={saveAllPendingEdits}\n onScrollToCell={scrollToCell}\n />\n </TableContext.Provider>\n );\n },\n);\n"],"names":["AutoSizer","_AutoSizer","CREATE_COLUMN_LABEL","getEmptyButtonId","label","index","InfiniteTable","React","tableKey","searchConfig","filterConfig","sortConfig","headerConfig","hoverConfig","columns","modelName","enableMasterDataEnumSuggestions","agreementCategoryId","agreementDomainId","agreementId","modificationId","lineItemRowId","enumSuggestionsData","data","onRowClick","showHeader","tableActions","rowOptions","hideRowOptionWidth","checkboxUtilities","isLoading","onScroll","onScrolling","isColumnConfigurable","onAddColumnClick","emptyMessage","noDataWidget","buttons","onEditColumnClick","onDeleteColumnClick","onRowTooltipClick","tooltiptext","cascadingTableConfig","originalsOnly","disableOptionsForRowIndex","tableHeightClass","getFullRowDataOnClick","selectedRowId","onRowEdit","onBulkRowEdit","inlineEditColumns","isResizable","paginationConfig","dndSortableUtils","multipleContexts","withSortable","withDraggable","enableRootDrag","pageSize","DEFAULT_PAGE_SIZE","onCascadingRowExpand","totalItems","showRecordCount","getInnerRowData","maxLevel","expandedRows","setExpandedRows","showNewItem","rawData","dragConfig","isOverlayLoading","style","floatingBarConfig","rowWrapper","rowLinkConfig","isCellClickDisabled","setHeaderOnParent","optimizeTable","multiSelectConfig","headerContextOptions","showHeaderContextOptions","setShowHeaderContextOptions","showDataTypeIcon","rowAdditionalActions","rowAdditionalActionsWidth","setVisibleHeaders","cellEditing","cellEditingValue","allowInlineEdit","onFieldOperationFlow","fieldOperationLoading","onTableActionsReady","onPendingEditsChange","onCancelPendingEdits","tableConfig","useTableConfig","isSearch","isFilters","isAnyFilters","isCheckbox","defaultTableView","selectedTableView","setSelectedTableView","useState","showFilters","setShowFilters","showSorts","setShowSorts","newFilterColumn","setNewFilterColumn","tableHeaders","setTableHeaders","isEmpty","showHeaderOptions","setShowHeaderOptions","showDataFilterModal","setShowDataFilterModal","dataFilterColumn","setDataFilterColumn","isAllChecked","setIsAllChecked","isShowSortArrowAsc","setIsShowSortArrowAsc","isShowSortArrowDesc","setIsShowSortArrowDesc","sortableListByContext","setSortableListByContext","activeItem","setActiveItem","dndLoading","setDndLoading","headerDivWidth","setHeaderDivWidth","headerDivRef","useRef","tableContainerRef","tableContainerSize","setTableContainerSize","activeInlineEdit","setActiveInlineEdit","masterDataModalConfig","setMasterDataModalConfig","selectedMasterData","setSelectedMasterData","currencyDropdownConfig","setCurrencyDropdownConfig","selectedCurrenciesMap","setSelectedCurrenciesMap","hasAppliedInitialFilters","userClearedFiltersRef","selectedTableViewRef","tableConfigRef","columnsRef","filterConfigRef","headerGroupsRef","resolveTableViewRef","computeListRef","pendingEdits","setPendingEdits","addPendingEdit","useCallback","rowId","columnKey","edit","prev","existingEdit","resolvedValidationError","column","col","result","validateCellValue","hasPendingEdits","rowEdits","useEffect","removePendingEdit","newEdits","_removed","rest","getPendingEdit","hasPendingEdit","clearAllPendingEdits","scrollToCell","rowIndex","colIndex","cellElement","DATA_ROW_ID_ATTR","DATA_COLUMN_KEY_ATTR","scrollContainer","OS_VIEWPORT_SELECTOR","scrollLeft","i","SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK","SCROLL_TO_CELL_LEFT_OFFSET","validateAllPendingEdits","editsToValidate","hasErrors","firstError","updatedEdits","errorTypes","getValidationToastMessage","hasRequired","hasFormat","saveAllPendingEdits","row","editedRows","originalRow","updatedRow","editedFields","clearRowPendingEdits","k","saveRowPendingEdits","editedRowData","n","pendingEditsCount","useMemo","total","pendingEditsList","list","rowsWithPendingEdits","rowsMap","a","b","openMasterDataModal","config","closeMasterDataModal","handleMasterDataSelected","value","clearSelectedMasterData","openCurrencyDropdown","closeCurrencyDropdown","setCurrencyForCell","cellKey","currency","getCurrencyForCell","fallbackHeight","pxMatch","calcMatch","emptySwitchProps","translatedCreateColumnLabel","defaultEmptyText","resolvedEmptyText","loaderData","cellLoaders","tableLoaders","visibleColumns","header","table","useTable","DEFAULT_COLUMN_MIN_WIDTH","DEFAULT_COLUMN_WIDTH","DEFAULT_COLUMN_MAX_WIDTH","useResizeColumns","getTableProps","getTableBodyProps","headerGroups","prepareRow","rows","headerKeys","groups","checkboxConfig","useCheckbox","sensors","useSensors","useSensor","MouseSensor","DND_ACTIVATION_DISTANCE","TouchSensor","dropAnimation","DROP_ANIMATION_EASING","DROP_ANIMATION_DURATION","computeList","acc","contextKey","e","handleDragStart","event","active","item","handleDragEnd","over","newState","handleDragCancel","toggleHeaderOption","key","toggleDataFilterModal","handleRemoveSort","toggleShowFilters","toggleShowSorts","lastNonStickyColumnIndex","reverseHeaders","getSumOfNextVisibleColumnWidth","currentIndex","sum","ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH","ROW_OPTIONS_COLUMN_WIDTH","resolveTableView","userId","handleUpdateColumnWidth","columnName","width","updatedTableView","currentView","hasViewFilters","hasConfigFilters","handleActiveRemoveFilter","handleActiveClearFilter","mergeViewColumnsWithTableColumns","resizeObserver","entries","height","tableHeader","jsx","Head","tableView","jsxs","Fragment","NoDataFoundWidgets","NoDataFound","Button","Add2Icon","button","effectiveWidth","effectiveHeight","Body","tableWrapper","forwardRef","props","ref","tableBodyWrapper","TableHeaderComponent","TableContext","TOOLBAR_FIRST_BREAKPOINT","Typography","TOOLBAR_SECOND_BREAKPOINT","FloatingBar","DndContext","closestCorners","createPortal","DragOverlay","Row","CurrencyDropdownPortal","PendingEditsFloatingBar"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../../../../src/components/data-display/infinite-table/index.tsx"],"sourcesContent":["import { useCheckbox } from '../../../hooks/useCheckbox';\nimport { useTableConfig } from '../../../providers/design-system-provider/hooks';\nimport { mergeViewColumnsWithTableColumns } from '../../../utils/table';\nimport Button from '../../button/Button';\nimport { FloatingBar } from '../../floating-bar/FloatingBar';\nimport { NoDataFound, NoDataFoundWidgets } from '../empty-state';\nimport { Typography } from '../typography/Typography';\nimport { DndContext, DragOverlay, type DragEndEvent, type DragStartEvent, type DropAnimation, MouseSensor, TouchSensor, closestCorners, useSensor, useSensors } from '@dnd-kit/core';\nimport React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { AutoSizer as _AutoSizer } from 'react-virtualized-auto-sizer';\nimport { createPortal } from 'react-dom';\nimport type { Row as ReactTableRow } from 'react-table';\nimport { useResizeColumns, useTable } from 'react-table';\n\nimport { Body } from './body';\nimport { validateCellValue } from './validateCell';\nimport { Row } from './body/rows/row';\nimport { TableContext } from './context';\nimport { CurrencyDropdownPortal } from './CurrencyDropdownPortal';\nimport { Head } from './head';\nimport { PendingEditsFloatingBar } from './PendingEditsFloatingBar';\nimport type { ICurrencyDropdownConfig, IColumn, IMasterDataModalConfig, ITableProps, ITableView, PendingEditsMap, IPendingEdit } from './types';\nimport { Add2Icon } from '../../icon';\nimport {\n TOOLBAR_FIRST_BREAKPOINT,\n TOOLBAR_SECOND_BREAKPOINT,\n DEFAULT_PAGE_SIZE,\n DEFAULT_COLUMN_MIN_WIDTH,\n DEFAULT_COLUMN_WIDTH,\n DEFAULT_COLUMN_MAX_WIDTH,\n DND_ACTIVATION_DISTANCE,\n DROP_ANIMATION_EASING,\n DROP_ANIMATION_DURATION,\n SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK,\n SCROLL_TO_CELL_LEFT_OFFSET,\n ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH,\n ROW_OPTIONS_COLUMN_WIDTH,\n OS_VIEWPORT_SELECTOR,\n DATA_ROW_ID_ATTR,\n DATA_COLUMN_KEY_ATTR,\n} from './constants';\nimport { getRowSlotHeight, useRowHeight } from './useRowHeight';\n\nconst AutoSizer = _AutoSizer as unknown as React.ComponentType<{\n renderProp: (size: { width: number; height: number }) => React.ReactNode;\n style?: React.CSSProperties;\n}>;\n\nconst CREATE_COLUMN_LABEL = 'Create Column';\n\nconst getEmptyButtonId = (label: string, index: number): string => {\n const slug = label.toLowerCase().trim().replace(/\\s+/g, '-').replace(/[^a-z0-9-_]/g, '');\n return `button-admin-${slug || index}`;\n};\n\nexport const InfiniteTable = React.memo(\n ({\n tableKey,\n searchConfig = { search: '', handleSearch: () => null, allowAStarSearch: false },\n filterConfig = {\n columnFilters: [],\n onFilter: () => null,\n onRemoveFilter: () => null,\n onClearFilter: () => null,\n onResetFilter: () => Promise.resolve({}),\n asyncRowOptionsFilter: () => Promise.resolve({}),\n },\n sortConfig = { onSort: () => null, columnSort: { field: '', order: '' }, onRemoveSort: () => null },\n headerConfig = {\n showExportButton: null,\n showFilters: true,\n showSorts: true,\n showSearch: true,\n showTableView: true,\n showTableViewAsModal: false,\n content: null,\n postContent: null,\n preContent: null,\n isLoading: false,\n showDivider: false,\n },\n hoverConfig = null,\n columns,\n modelName,\n enableMasterDataEnumSuggestions = false,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n enumSuggestionsData,\n data = [],\n onRowClick,\n showHeader,\n tableActions,\n rowOptions,\n hideRowOptionWidth,\n checkboxUtilities,\n isLoading = false,\n onScroll,\n onScrolling,\n isColumnConfigurable,\n onAddColumnClick,\n emptyMessage,\n noDataWidget,\n buttons,\n onEditColumnClick,\n onDeleteColumnClick,\n onRowTooltipClick,\n tooltiptext,\n cascadingTableConfig,\n originalsOnly,\n disableOptionsForRowIndex,\n tableHeightClass = 'h-[calc(100vh-220px)]',\n getFullRowDataOnClick,\n selectedRowId = null,\n onRowEdit,\n onBulkRowEdit,\n inlineEditColumns,\n isResizable = true,\n paginationConfig,\n dndSortableUtils,\n multipleContexts,\n withSortable,\n withDraggable,\n enableRootDrag,\n pageSize = DEFAULT_PAGE_SIZE,\n onCascadingRowExpand,\n totalItems,\n showRecordCount = false,\n getInnerRowData,\n maxLevel,\n expandedRows = {},\n setExpandedRows,\n showNewItem,\n rawData,\n dragConfig,\n isOverlayLoading,\n style = {},\n floatingBarConfig,\n rowWrapper,\n rowLinkConfig,\n isCellClickDisabled,\n setHeaderOnParent,\n optimizeTable = false,\n multiSelectConfig,\n headerContextOptions,\n showHeaderContextOptions,\n setShowHeaderContextOptions,\n showDataTypeIcon = false,\n rowAdditionalActions,\n rowAdditionalActionsWidth,\n setVisibleHeaders,\n cellEditing = null,\n cellEditingValue = null,\n allowInlineEdit = false,\n onFieldOperationFlow,\n fieldOperationLoading = null,\n onTableActionsReady,\n onPendingEditsChange,\n onCancelPendingEdits,\n }: ITableProps) => {\n const tableConfig = useTableConfig();\n\n // Row slot height tracks the `h-row` viewport clamp so the paginated\n // container sizes to the rows the virtualized body actually renders.\n const rowSlotHeight = getRowSlotHeight(useRowHeight());\n\n const isSearch = Boolean(searchConfig?.search);\n\n const isFilters = filterConfig?.columnFilters?.length > 0;\n const isAnyFilters = isSearch || isFilters;\n\n const isCheckbox = Boolean(checkboxUtilities);\n\n const defaultTableView = tableConfig?.getTableView?.(tableKey as string) ?? null;\n const [selectedTableView, setSelectedTableView] = useState<ITableView | null>(defaultTableView || null);\n const [showFilters, setShowFilters] = useState(false);\n const [showSorts, setShowSorts] = useState(false);\n const [newFilterColumn, setNewFilterColumn] = useState<unknown>(null);\n const [tableHeaders, setTableHeaders] = useState<IColumn[]>(columns);\n const isEmpty = (data.length === 0 || !tableHeaders.length) && !isLoading;\n const [showHeaderOptions, setShowHeaderOptions] = useState<string | null>(null);\n const [showDataFilterModal, setShowDataFilterModal] = useState<boolean>(false);\n const [dataFilterColumn, setDataFilterColumn] = useState<unknown>(null);\n const [isAllChecked, setIsAllChecked] = useState(false);\n const [isShowSortArrowAsc, setIsShowSortArrowAsc] = useState<string | null>(null);\n const [isShowSortArrowDesc, setIsShowSortArrowDesc] = useState<string | null>(null);\n const [sortableListByContext, setSortableListByContext] = useState<Record<string, unknown>>({});\n const [activeItem, setActiveItem] = useState<ReactTableRow<object> | null>(null);\n const [dndLoading, setDndLoading] = useState<boolean>(false);\n const [headerDivWidth, setHeaderDivWidth] = useState(0);\n const headerDivRef = useRef<HTMLDivElement>(null);\n const tableContainerRef = useRef<HTMLDivElement>(null);\n const [tableContainerSize, setTableContainerSize] = useState({ width: 0, height: 0 });\n const [activeInlineEdit, setActiveInlineEdit] = useState<{ rowId: string; columnKey: string } | null>(null);\n const [masterDataModalConfig, setMasterDataModalConfig] = useState<IMasterDataModalConfig | null>(null);\n const [selectedMasterData, setSelectedMasterData] = useState<{ value: unknown; reference: unknown } | null>(null);\n const [currencyDropdownConfig, setCurrencyDropdownConfig] = useState<ICurrencyDropdownConfig | null>(null);\n const [selectedCurrenciesMap, setSelectedCurrenciesMap] = useState<Record<string, string>>({});\n const hasAppliedInitialFilters = useRef(false);\n const userClearedFiltersRef = useRef(false);\n\n const selectedTableViewRef = useRef(selectedTableView);\n selectedTableViewRef.current = selectedTableView;\n const tableConfigRef = useRef(tableConfig);\n tableConfigRef.current = tableConfig;\n const columnsRef = useRef(columns);\n columnsRef.current = columns;\n const filterConfigRef = useRef(filterConfig);\n filterConfigRef.current = filterConfig;\n const headerGroupsRef = useRef<unknown[] | null>(null);\n const resolveTableViewRef = useRef<() => ITableView>(() => ({}) as ITableView);\n const computeListRef = useRef<() => unknown>(() => ({}));\n\n const [pendingEdits, setPendingEdits] = useState<PendingEditsMap>({});\n\n const addPendingEdit = useCallback(\n (rowId: string, columnKey: string, edit: IPendingEdit) => {\n setPendingEdits((prev) => {\n const existingEdit = prev[rowId]?.[columnKey];\n let resolvedValidationError: string | null | undefined = edit.validationError;\n if (resolvedValidationError === undefined) {\n const column = tableHeaders.find((col) => col.key === columnKey);\n if (column) {\n const result = validateCellValue(edit.value, column as { type?: string; is_required?: boolean });\n resolvedValidationError = !result.isValid ? (result.error || 'Invalid') : null;\n } else {\n resolvedValidationError = existingEdit?.validationError ?? null;\n }\n }\n return { ...prev, [rowId]: { ...(prev[rowId] || {}), [columnKey]: { ...edit, validationError: resolvedValidationError ?? null } } };\n });\n },\n [tableHeaders],\n );\n\n const hasPendingEdits = useCallback(() => {\n return Object.values(pendingEdits).some((rowEdits) => Object.keys(rowEdits).length > 0);\n }, [pendingEdits]);\n\n useEffect(() => {\n if (onTableActionsReady) onTableActionsReady({ addPendingEdit: addPendingEdit as (rowId: string, columnKey: string, edit: { value: unknown; originalValue?: unknown; meta?: unknown }) => void, hasPendingEdits });\n }, [onTableActionsReady, addPendingEdit, hasPendingEdits]);\n\n const removePendingEdit = useCallback((rowId: string, columnKey: string) => {\n setPendingEdits((prev) => {\n const newEdits = { ...prev };\n if (newEdits[rowId]) {\n const { [columnKey]: _removed, ...rest } = newEdits[rowId]; void _removed;\n if (Object.keys(rest).length === 0) delete newEdits[rowId];\n else newEdits[rowId] = rest;\n }\n return newEdits;\n });\n }, []);\n\n const getPendingEdit = useCallback(\n (rowId: string, columnKey: string): IPendingEdit | undefined => pendingEdits[rowId]?.[columnKey],\n [pendingEdits],\n );\n\n const hasPendingEdit = useCallback(\n (rowId: string, columnKey: string): boolean => Boolean(pendingEdits[rowId]?.[columnKey]),\n [pendingEdits],\n );\n\n const clearAllPendingEdits = useCallback(() => {\n if (fieldOperationLoading) return;\n if (onCancelPendingEdits && Object.keys(pendingEdits).length > 0) onCancelPendingEdits(pendingEdits);\n setPendingEdits({});\n setSelectedCurrenciesMap({});\n setActiveInlineEdit(null);\n }, [fieldOperationLoading, onCancelPendingEdits, pendingEdits]);\n\n const scrollToCell = useCallback(\n (rowId: string, columnKey: string, rowIndex: number) => {\n setTimeout(() => {\n tableConfig?.dispatchEvent?.('SCROLL_TO_TABLE_ROW', { rowIndex });\n const colIndex = tableHeaders.findIndex((col) => col.key === columnKey);\n setTimeout(() => {\n const cellElement = document.querySelector(`[${DATA_ROW_ID_ATTR}=\"${rowId}\"] [${DATA_COLUMN_KEY_ATTR}=\"${columnKey}\"]`);\n if (cellElement) {\n cellElement.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });\n } else if (colIndex > 0) {\n const scrollContainer = document.querySelector(OS_VIEWPORT_SELECTOR);\n if (scrollContainer) {\n let scrollLeft = 0;\n for (let i = 0; i < colIndex; i++) {\n const col = tableHeaders[i];\n if (!col?.sticky) scrollLeft += col?.width || SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK;\n }\n scrollLeft = Math.max(0, scrollLeft - SCROLL_TO_CELL_LEFT_OFFSET);\n scrollContainer.scrollTo({ left: scrollLeft, behavior: 'smooth' });\n }\n }\n setActiveInlineEdit({ rowId, columnKey });\n }, 350);\n }, 100);\n },\n [tableHeaders, tableConfig],\n );\n\n const validateAllPendingEdits = useCallback(\n (editsToValidate: PendingEditsMap): { hasErrors: boolean; updatedEdits: PendingEditsMap; firstError: { rowId: string; columnKey: string } | null; errorTypes: Set<string> } => {\n let hasErrors = false;\n let firstError: { rowId: string; columnKey: string } | null = null;\n const updatedEdits: PendingEditsMap = {};\n const errorTypes = new Set<string>();\n\n Object.entries(editsToValidate).forEach(([rowId, rowEdits]) => {\n updatedEdits[rowId] = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n const column = tableHeaders.find((col) => col.key === columnKey);\n const result = validateCellValue(edit.value, column as { type?: string; is_required?: boolean });\n if (!result.isValid) {\n hasErrors = true;\n if (result.error) errorTypes.add(result.error);\n if (!firstError) firstError = { rowId, columnKey };\n updatedEdits[rowId][columnKey] = { ...edit, validationError: result.error };\n } else {\n updatedEdits[rowId][columnKey] = { ...edit, validationError: null };\n }\n });\n });\n\n return { hasErrors, updatedEdits, firstError, errorTypes };\n },\n [tableHeaders],\n );\n\n const getValidationToastMessage = useCallback((errorTypes: Set<string>) => {\n const hasRequired = errorTypes.has('Field required');\n const hasFormat = errorTypes.size > (hasRequired ? 1 : 0);\n if (hasRequired && hasFormat) return 'Missing required field(s) and invalid format detected. Please review highlighted field(s).';\n if (hasRequired) return 'Missing required field(s). Please review highlighted field(s).';\n return 'Invalid field value(s). Please review highlighted field(s).';\n }, []);\n\n const saveAllPendingEdits = useCallback(() => {\n const { hasErrors, updatedEdits, firstError, errorTypes } = validateAllPendingEdits(pendingEdits);\n if (hasErrors) {\n setPendingEdits(updatedEdits);\n tableConfig?.showNotification?.('error', getValidationToastMessage(errorTypes));\n if (firstError) {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === firstError!.rowId);\n scrollToCell(firstError!.rowId, firstError!.columnKey, rowIndex);\n }\n return;\n }\n\n const editedRows: Array<Record<string, unknown>> = [];\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const originalRow = data.find((row: Record<string, unknown>) => row.id === rowId);\n if (originalRow) {\n const updatedRow = { ...originalRow };\n const editedFields: Record<string, { value: unknown; meta?: unknown }> = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n updatedRow[columnKey] = edit.value;\n editedFields[columnKey] = { value: edit.value, meta: edit.meta };\n });\n editedRows.push({ ...updatedRow, __editedFields: editedFields });\n }\n });\n\n if (editedRows.length > 0) {\n if (onBulkRowEdit) onBulkRowEdit(editedRows);\n else if (onRowEdit) onRowEdit(null, null, null, null, null, { isBulk: true, rows: editedRows });\n }\n\n setPendingEdits({});\n setSelectedCurrenciesMap({});\n setActiveInlineEdit(null);\n }, [pendingEdits, data, onRowEdit, onBulkRowEdit, validateAllPendingEdits, getValidationToastMessage, scrollToCell, tableConfig]);\n\n const clearRowPendingEdits = useCallback(\n (rowId: string) => {\n if (fieldOperationLoading) return;\n const rowEdits = pendingEdits[rowId];\n if (rowEdits && onCancelPendingEdits) onCancelPendingEdits({ [rowId]: rowEdits });\n setPendingEdits((prev) => { const n = { ...prev }; delete n[rowId]; return n; });\n setSelectedCurrenciesMap((prev) => { const n = { ...prev }; Object.keys(n).forEach((k) => { if (k.startsWith(`${rowId}-`)) delete n[k]; }); return n; });\n setActiveInlineEdit(null);\n },\n [fieldOperationLoading, onCancelPendingEdits, pendingEdits],\n );\n\n const saveRowPendingEdits = useCallback(\n (rowId: string) => {\n const rowEdits = pendingEdits[rowId];\n if (!rowEdits || Object.keys(rowEdits).length === 0) return;\n\n const { hasErrors, updatedEdits, firstError, errorTypes } = validateAllPendingEdits({ [rowId]: rowEdits });\n if (hasErrors) {\n setPendingEdits((prev) => ({ ...prev, [rowId]: updatedEdits[rowId] }));\n tableConfig?.showNotification?.('error', getValidationToastMessage(errorTypes));\n if (firstError) {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === firstError!.rowId);\n scrollToCell(firstError!.rowId, firstError!.columnKey, rowIndex);\n }\n return;\n }\n\n const originalRow = data.find((row: Record<string, unknown>) => row.id === rowId);\n if (!originalRow) return;\n const updatedRow = { ...originalRow };\n const editedFields: Record<string, { value: unknown; meta?: unknown }> = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n updatedRow[columnKey] = edit.value;\n editedFields[columnKey] = { value: edit.value, meta: edit.meta };\n });\n\n const editedRowData = { ...updatedRow, __editedFields: editedFields };\n\n if (onBulkRowEdit) onBulkRowEdit([editedRowData]);\n else if (onRowEdit) onRowEdit(null, null, null, null, null, { isBulk: true, rows: [editedRowData] });\n\n setPendingEdits((prev) => { const n = { ...prev }; delete n[rowId]; return n; });\n setSelectedCurrenciesMap((prev) => { const n = { ...prev }; Object.keys(n).forEach((k) => { if (k.startsWith(`${rowId}-`)) delete n[k]; }); return n; });\n setActiveInlineEdit(null);\n },\n [pendingEdits, data, onRowEdit, onBulkRowEdit, validateAllPendingEdits, getValidationToastMessage, scrollToCell, tableConfig],\n );\n\n const pendingEditsCount = useMemo(() => {\n return Object.values(pendingEdits).reduce((total, rowEdits) => total + Object.keys(rowEdits).length, 0);\n }, [pendingEdits]);\n\n useEffect(() => {\n onPendingEditsChange?.(pendingEditsCount > 0, pendingEditsCount);\n }, [pendingEditsCount, onPendingEditsChange]);\n\n const pendingEditsList = useMemo(() => {\n const list: Array<{ rowId: string; columnKey: string; fieldName: string; value: unknown; originalValue: unknown; meta?: IPendingEdit['meta']; originalMeta?: IPendingEdit['originalMeta']; rowIndex: number }> = [];\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === rowId);\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n const column = tableHeaders.find((col) => col.key === columnKey);\n list.push({ rowId, columnKey, fieldName: column?.Header || column?.display_name || columnKey, value: edit.value, originalValue: edit.originalValue, meta: edit.meta, originalMeta: edit.originalMeta, rowIndex });\n });\n });\n return list;\n }, [pendingEdits, tableHeaders, data]);\n\n const rowsWithPendingEdits = useMemo(() => {\n const rowsMap = new Map<string, { rowId: string; rowIndex: number; editCount: number }>();\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === rowId);\n rowsMap.set(rowId, { rowId, rowIndex, editCount: Object.keys(rowEdits).length });\n });\n return Array.from(rowsMap.values()).sort((a, b) => a.rowIndex - b.rowIndex);\n }, [pendingEdits, data]);\n\n const openMasterDataModal = useCallback((config: IMasterDataModalConfig) => setMasterDataModalConfig(config), []);\n const closeMasterDataModal = useCallback(() => setMasterDataModalConfig(null), []);\n\n const handleMasterDataSelected = useCallback(\n (value: unknown, row?: unknown) => {\n setSelectedMasterData({ value, reference: row });\n if (masterDataModalConfig?.onSelected) masterDataModalConfig.onSelected(value, row);\n closeMasterDataModal();\n },\n [masterDataModalConfig, closeMasterDataModal],\n );\n\n const clearSelectedMasterData = useCallback(() => setSelectedMasterData(null), []);\n\n const openCurrencyDropdown = useCallback((config: ICurrencyDropdownConfig) => setCurrencyDropdownConfig(config), []);\n const closeCurrencyDropdown = useCallback(() => setCurrencyDropdownConfig(null), []);\n\n const setCurrencyForCell = useCallback((cellKey: string, currency: string) => {\n setSelectedCurrenciesMap((prev) => ({ ...prev, [cellKey]: currency }));\n }, []);\n\n const getCurrencyForCell = useCallback(\n (cellKey: string): string | undefined => selectedCurrenciesMap[cellKey],\n [selectedCurrenciesMap],\n );\n\n const fallbackHeight = useMemo(() => {\n const pxMatch = tableHeightClass.match(/h-\\[(\\d+px)\\]/);\n if (pxMatch) return pxMatch[1];\n const calcMatch = tableHeightClass.match(/h-\\[(calc\\(.+\\))\\]/);\n if (calcMatch) return calcMatch[1].replace(/([+-])/g, ' $1 ').replace(/\\s+/g, ' ');\n return undefined;\n }, [tableHeightClass]);\n\n const emptySwitchProps = {\n isEmpty,\n isFilters: isAnyFilters,\n isColumnConfigurable,\n handleOnClick: onAddColumnClick,\n emptyMessage,\n buttons,\n noDataWidget,\n };\n const translatedCreateColumnLabel = tableConfig?.t?.(CREATE_COLUMN_LABEL) ?? CREATE_COLUMN_LABEL;\n const defaultEmptyText = isAnyFilters ? 'No Results Found' : emptyMessage || 'No Data Found';\n const resolvedEmptyText = typeof defaultEmptyText === 'string' ? (tableConfig?.t?.(defaultEmptyText) ?? defaultEmptyText) : defaultEmptyText;\n\n const loaderData = { __isLoading: true };\n const cellLoaders = new Array(1).fill(loaderData);\n const tableLoaders = new Array(pageSize).fill(loaderData);\n\n const visibleColumns = useMemo(() => tableHeaders.filter((header) => Boolean(header?.visible)), [tableHeaders]);\n\n const table = useTable(\n {\n columns: optimizeTable ? visibleColumns : tableHeaders,\n data: [...data, ...(isLoading ? (data?.length ? cellLoaders : tableLoaders) : [])],\n defaultColumn: { minWidth: DEFAULT_COLUMN_MIN_WIDTH, width: DEFAULT_COLUMN_WIDTH, maxWidth: DEFAULT_COLUMN_MAX_WIDTH },\n },\n useResizeColumns,\n );\n\n const { getTableProps, getTableBodyProps, headerGroups, prepareRow, rows } = table;\n headerGroupsRef.current = headerGroups;\n\n const headerKeys = JSON.stringify(headerGroups[0]?.headers?.map((header) => (header as unknown as Record<string, unknown>)?.Header));\n useEffect(() => {\n if (setVisibleHeaders) {\n const groups = headerGroupsRef.current as Array<{ headers?: Array<Record<string, unknown>> }> | null;\n setVisibleHeaders?.(groups?.[0]?.headers?.map((header) => header?.Header as string) ?? []);\n }\n }, [headerKeys, setVisibleHeaders]);\n\n const { checkboxConfig } = useCheckbox({\n rows: rows as never,\n checkedIds: checkboxUtilities?.checkedIds as string[],\n isCheckAllDisabled: checkboxUtilities?.isCheckAllDisabled,\n selectionDisabledRowIds: checkboxUtilities?.selectionDisabledRowIds,\n rawData,\n onAllChecked: setIsAllChecked,\n setCheckedIds: checkboxUtilities?.setCheckedIds as (ids: string[]) => void,\n checkboxMetadata: checkboxUtilities?.checkboxMetadata as { checkedIds: string[]; tooltip: string; highlight: string },\n });\n\n const sensors = useSensors(\n useSensor(MouseSensor, { activationConstraint: { distance: DND_ACTIVATION_DISTANCE } }),\n useSensor(TouchSensor, { activationConstraint: { distance: DND_ACTIVATION_DISTANCE } }),\n );\n\n const dropAnimation: DropAnimation = { easing: DROP_ANIMATION_EASING, duration: DROP_ANIMATION_DURATION };\n\n function computeList() {\n if (!multipleContexts?.length || !withSortable) return rows;\n return multipleContexts.reduce((acc: Record<string, unknown>, contextKey: string) => {\n acc[contextKey] = rows.filter((e) => (e.original as Record<string, unknown>)?.type === contextKey);\n return acc;\n }, {});\n }\n computeListRef.current = computeList;\n\n const handleDragStart = (event: DragStartEvent) => {\n const { active } = event;\n setActiveItem(rows.find((item) => (item.original as Record<string, unknown>)?.id === active?.id) ?? null);\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over) return;\n if (dndSortableUtils?.checkDndDragEnd) {\n dndSortableUtils.checkDndDragEnd(active, over, sortableListByContext, (newState: Record<string, unknown>) => {\n setSortableListByContext(newState as Record<string, unknown>);\n setDndLoading(true);\n dndSortableUtils.onDragSuccess?.({\n draggedId: active.id as string,\n droppedId: over.id as string,\n draggedType: (active.data.current as Record<string, unknown>)?.type,\n droppedType: (over.data.current as Record<string, unknown>)?.type,\n updatedList: newState,\n cb: () => setDndLoading(false),\n });\n });\n }\n setActiveItem(null);\n };\n\n const handleDragCancel = () => setActiveItem(null);\n\n const toggleHeaderOption = (key: string) => {\n if (!sortConfig?.onSort && !filterConfig?.onFilter) return;\n if (showHeaderOptions === key) setShowHeaderOptions(null);\n else setShowHeaderOptions(key);\n };\n\n const toggleDataFilterModal = (col: unknown) => {\n setDataFilterColumn(col);\n setShowDataFilterModal(!showDataFilterModal);\n setShowHeaderOptions(null);\n };\n\n const handleRemoveSort = useCallback(() => {\n if (sortConfig?.onRemoveSort) sortConfig.onRemoveSort();\n else if (sortConfig?.onSort) sortConfig.onSort('', '');\n }, [sortConfig]);\n\n const toggleShowFilters = useCallback((col: unknown = null) => {\n setNewFilterColumn(col);\n setShowFilters(prev => col ? true : !prev);\n }, []);\n const toggleShowSorts = useCallback(() => setShowSorts(prev => !prev), []);\n\n const lastNonStickyColumnIndex = () => {\n const reverseHeaders = (headerGroups[0]?.headers as unknown as Array<Record<string, unknown>>)?.filter((header) => header?.visible !== false);\n for (let i = 0; i < reverseHeaders.length; i++) {\n if (reverseHeaders[i].sticky) return i - 1;\n }\n return reverseHeaders.length - 1;\n };\n\n const getSumOfNextVisibleColumnWidth = useCallback(\n (currentIndex: number) => {\n let sum = 0;\n for (let i = currentIndex + 1; i < visibleColumns.length; i++) {\n if (visibleColumns[i].visible !== false) sum += visibleColumns[i].width ?? 0;\n }\n if (rowAdditionalActions) sum += rowAdditionalActionsWidth || ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH;\n if (rowOptions) sum += hideRowOptionWidth ? 0 : ROW_OPTIONS_COLUMN_WIDTH;\n return sum;\n },\n [visibleColumns, rowAdditionalActionsWidth, hideRowOptionWidth, rowAdditionalActions, rowOptions],\n );\n\n const resolveTableView = (): ITableView => {\n const userId = tableConfig?.getUserId?.();\n return {\n ...(selectedTableView || {}),\n name: selectedTableView?.name || 'Untitled View',\n created_by: selectedTableView?.created_by || userId,\n filters: selectedTableView?.filters || filterConfig?.columnFilters,\n id: selectedTableView?.id || 'untitled-view',\n table_key: selectedTableView?.table_key || tableKey,\n columns: selectedTableView?.columns || columns?.map((column, index) => ({\n name: column.Header,\n width: column.width,\n visible: column.visible,\n sticky: column.sticky,\n order: index + 1,\n display_name: column.Header,\n sequence: index + 1,\n Header: column.Header,\n })),\n };\n };\n resolveTableViewRef.current = resolveTableView;\n\n const handleUpdateColumnWidth = (columnName: string, width: number) => {\n const updatedTableView = resolveTableView();\n setSelectedTableView({\n ...updatedTableView,\n columns: updatedTableView?.columns?.map((column) => (column.name === columnName ? { ...column, width } : column)),\n unsaved: true,\n });\n };\n\n useEffect(() => {\n if (filterConfig?.columnFilters?.length > 0) setShowFilters(true);\n const currentView = selectedTableViewRef.current;\n if (JSON.stringify(currentView?.filters || []) !== JSON.stringify(filterConfig?.columnFilters || [])) {\n const hasViewFilters = (currentView?.filters?.length ?? 0) > 0;\n const hasConfigFilters = filterConfig?.columnFilters?.length > 0;\n // Skip sync only during the initial load window where the view already has filters\n // but they haven't propagated to columnFilters yet. If the user explicitly cleared\n // filters from ActiveFilters (X button or Clear), we must propagate the empty state.\n const isClearingFilters = hasViewFilters && !hasConfigFilters && !userClearedFiltersRef.current;\n if (!isClearingFilters) {\n const updatedTableView = resolveTableViewRef.current();\n setSelectedTableView({ ...updatedTableView, filters: JSON.parse(JSON.stringify(filterConfig?.columnFilters || [])), unsaved: true });\n }\n userClearedFiltersRef.current = false;\n }\n }, [filterConfig?.columnFilters]);\n\n const handleActiveRemoveFilter = useCallback(\n (key: string) => {\n userClearedFiltersRef.current = true;\n filterConfig?.onRemoveFilter?.(key);\n },\n [filterConfig?.onRemoveFilter],\n );\n\n const handleActiveClearFilter = useCallback(() => {\n userClearedFiltersRef.current = true;\n filterConfig?.onClearFilter?.();\n }, [filterConfig?.onClearFilter]);\n\n useEffect(() => {\n if (sortConfig?.columnSort?.field) {\n setShowSorts(true);\n if (sortConfig.columnSort.order === 'asc') { setIsShowSortArrowAsc(sortConfig.columnSort.field); setIsShowSortArrowDesc(null); }\n else if (sortConfig.columnSort.order === 'desc') { setIsShowSortArrowDesc(sortConfig.columnSort.field); setIsShowSortArrowAsc(null); }\n } else { setIsShowSortArrowAsc(null); setIsShowSortArrowDesc(null); }\n }, [sortConfig?.columnSort?.field, sortConfig?.columnSort?.order]);\n\n useEffect(() => {\n setTableHeaders(mergeViewColumnsWithTableColumns(selectedTableViewRef.current?.columns || [], columns));\n }, [columns]);\n\n useEffect(() => {\n if (selectedTableView?.unsaved) tableConfigRef.current?.persistTableView?.(selectedTableView);\n }, [selectedTableView]);\n\n useEffect(() => { setSortableListByContext(computeListRef.current() as Record<string, unknown>); }, [rows.length]);\n\n useEffect(() => {\n setSelectedTableView(defaultTableView || null);\n if (defaultTableView?.columns) {\n setTableHeaders(mergeViewColumnsWithTableColumns(defaultTableView?.columns || [], columnsRef.current));\n }\n if (defaultTableView?.filters && defaultTableView.filters.length > 0 && !hasAppliedInitialFilters.current) {\n requestAnimationFrame(() => { filterConfigRef.current?.onFilter?.(defaultTableView.filters); });\n hasAppliedInitialFilters.current = true;\n } else if (defaultTableView?.filters && hasAppliedInitialFilters.current) {\n const filtersAreDifferent = JSON.stringify(defaultTableView.filters) !== JSON.stringify(filterConfigRef.current?.columnFilters);\n if (filtersAreDifferent) filterConfigRef.current?.onFilter?.(defaultTableView.filters);\n }\n }, [defaultTableView]);\n\n useEffect(() => {\n if (headerDivRef.current) {\n const resizeObserver = new ResizeObserver((entries) => setHeaderDivWidth(entries[0].contentRect.width));\n resizeObserver.observe(headerDivRef.current);\n return () => resizeObserver.disconnect();\n }\n }, []);\n\n useEffect(() => {\n if (!tableContainerRef.current) return;\n const resizeObserver = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect;\n setTableContainerSize({ width, height });\n });\n resizeObserver.observe(tableContainerRef.current);\n return () => resizeObserver.disconnect();\n }, []);\n\n const tableHeader = (\n <Head\n isResizable={isResizable}\n headerGroups={headerGroups as never}\n isCheckbox={isCheckbox}\n checkboxConfig={checkboxConfig}\n isAllChecked={isAllChecked}\n showHeaderOptions={showHeaderOptions ?? ''}\n setShowHeaderOptions={setShowHeaderOptions}\n isShowSortArrowAsc={isShowSortArrowAsc}\n isShowSortArrowDesc={isShowSortArrowDesc}\n onSort={sortConfig?.onSort as ((field: string, order?: string) => void) | undefined}\n onFilter={filterConfig?.onFilter}\n toggleHeaderOption={toggleHeaderOption}\n setIsShowSortArrowAsc={setIsShowSortArrowAsc}\n setIsShowSortArrowDesc={setIsShowSortArrowDesc}\n toggleDataFilterModal={toggleShowFilters}\n rowOptions={(Array.isArray(rowOptions) ? rowOptions : []) as unknown[]}\n isColumnConfigurable={isColumnConfigurable ?? false}\n onAddColumnClick={onAddColumnClick as (column: { id: string; key: string; [k: string]: unknown }) => void}\n onEditColumnClick={onEditColumnClick as (column: { id: string; key: string; [k: string]: unknown }) => void}\n onDeleteColumnClick={onDeleteColumnClick as (column: { id: string; key: string; [k: string]: unknown }) => void}\n tableActions={(tableActions || null)}\n isLoading={isLoading}\n rowAdditionalActions={(rowAdditionalActions ?? null) as (() => React.ReactNode) | null}\n showPendingEditsColumn={pendingEditsCount > 0}\n />\n );\n\n const tableView = (\n <>\n {dndLoading || isOverlayLoading ? (\n <div className='absolute left-0 top-0 w-full h-full z-40 flex items-center justify-center bg-neutral-100 dark:bg-black-700' />\n ) : null}\n <div\n {...getTableProps()}\n className='w-full text-sm text-left text-neutral-500 dark:text-neutral-200 h-full bg-white dark:bg-black-800'\n >\n {isEmpty ? (\n <div className='z-10'>\n {tableHeader}\n <div className='absolute w-full'>\n {tableConfig?.renderEmpty ? tableConfig.renderEmpty(emptySwitchProps) : (\n <div className='flex flex-col items-center justify-center w-full h-[12rem] text-neutral-900 dark:text-neutral-200 mt-8'>\n {noDataWidget && !isAnyFilters ? <NoDataFoundWidgets widgetType='TABLE' /> : <NoDataFound text={resolvedEmptyText} />}\n {isColumnConfigurable && !isAnyFilters ? (\n <div className='my-4'>\n <Button\n id='btn-table-shell-create-column'\n status='primary'\n appearance='ghost'\n onClick={onAddColumnClick as ((event: React.MouseEvent<HTMLButtonElement>) => void) | undefined}\n >\n <Add2Icon className='text-white dark:text-white' /> {translatedCreateColumnLabel}\n </Button>\n </div>\n ) : null}\n {!isAnyFilters &&\n buttons?.map((button, index) => (\n <Button key={`${button.label}-${index}`} status='secondary' id={getEmptyButtonId(button.label, index)} onClick={button.onClick}>\n {tableConfig?.t?.(button.label) ?? button.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>\n ) : (\n <AutoSizer\n style={{ width: '100%', height: '100%' }}\n renderProp={({ width, height }) => {\n const effectiveWidth = width > 0 ? width : tableContainerSize.width;\n const effectiveHeight = height > 0 ? height : tableContainerSize.height;\n return effectiveWidth > 0 && effectiveHeight > 0 ? (\n <Body\n {...{\n getTableBodyProps: getTableBodyProps as unknown as () => Record<string, unknown>, rows: rows as never, prepareRow: prepareRow as never, isLoading, onScroll, onScrolling, columns, width: effectiveWidth, height: effectiveHeight, withSortable,\n allowAstarSearch: searchConfig?.allowAStarSearch || false,\n }}\n />\n ) : null;\n }}\n />\n )}\n </div>\n </>\n );\n\n const tableWrapper = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <div className='h-full w-full' {...props} ref={ref}>\n {tableHeader}\n <div className='relative w-full h-full'>{props?.children}</div>\n </div>\n ));\n\n const tableBodyWrapper = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <div className='h-full w-full' {...props} ref={ref}>\n <div className='relative w-full h-full'>{props?.children}</div>\n </div>\n ));\n\n const TableHeaderComponent = useMemo(() => {\n if (tableConfig?.renderTableHeader) {\n return tableConfig.renderTableHeader({\n tableKey, search: searchConfig?.search, handleSearch: searchConfig?.handleSearch,\n toggleShowFilters, toggleShowSorts, filterCounts: filterConfig?.columnFilters?.length,\n columns, columnFilters: filterConfig?.columnFilters, setSelectedTableView, selectedTableView,\n enableTableView: headerConfig?.showTableView, modelName: modelName as string,\n enableMasterDataEnumSuggestions,\n onRemoveFilter: filterConfig?.onRemoveFilter, onClearFilter: filterConfig?.onClearFilter,\n onFilter: filterConfig?.onFilter, data: enumSuggestionsData ?? data, tableHeaders, showTableViewAsModal: headerConfig?.showTableViewAsModal,\n additionalOptions: headerConfig?.additionalOptions, inlineActions: headerConfig?.inlineActions, showFilters: headerConfig?.showFilters,\n showSorts: headerConfig?.showSorts, showSearch: headerConfig?.showSearch,\n isLoading: Boolean(headerConfig?.isLoading), setTableHeaders,\n allowAStarSearch: Boolean(searchConfig?.allowAStarSearch), withContent: !!headerConfig?.content,\n setShowFilters, sort: sortConfig?.columnSort, onSort: sortConfig?.onSort, onRemoveSort: handleRemoveSort,\n showExportButton: headerConfig?.showExportButton,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId\n });\n }\n return null;\n }, [\n tableKey, searchConfig?.search, searchConfig?.handleSearch, toggleShowFilters, toggleShowSorts,\n filterConfig?.columnFilters, columns, setSelectedTableView, selectedTableView, headerConfig,\n modelName, filterConfig?.onRemoveFilter, filterConfig?.onClearFilter, filterConfig?.onFilter,\n data, enumSuggestionsData, tableHeaders, sortConfig?.columnSort, sortConfig?.onSort, handleRemoveSort, tableConfig,\n searchConfig?.allowAStarSearch, enableMasterDataEnumSuggestions,agreementCategoryId, agreementDomainId, agreementId,modificationId,lineItemRowId,\n ]);\n\n useEffect(() => {\n if (setHeaderOnParent) setHeaderOnParent(TableHeaderComponent);\n }, [TableHeaderComponent, setHeaderOnParent]);\n\n return (\n <TableContext.Provider\n value={{\n tableWrapper, tableBodyWrapper, lastNonStickyColumnIndex, search: searchConfig?.search,\n columnFilters: filterConfig?.columnFilters, onRowClick, onSort: sortConfig?.onSort,\n onFilter: filterConfig?.onFilter, toggleShowFilters, toggleShowSorts,\n onRemoveFilter: filterConfig?.onRemoveFilter, onClearFilter: filterConfig?.onClearFilter,\n rowOptions, checkboxConfig, onResetFilter: filterConfig?.onResetFilter, isColumnConfigurable,\n onAddColumnClick, onEditColumnClick, onDeleteColumnClick, onRowTooltipClick, tooltiptext,\n cascadingTableConfig, activeInlineEdit, setActiveInlineEdit, originalsOnly,\n disableOptionsForRowIndex, getFullRowDataOnClick, selectedRowId, getSumOfNextVisibleColumnWidth,\n onRowEdit, inlineEditColumns, tableActions, dndSortableUtils, withSortable, withDraggable,\n onCascadingRowExpand, getInnerRowData, tableHeaders, maxLevel, expandedRows, setExpandedRows,\n showNewItem, rawData, dragConfig, rowWrapper, rowLinkConfig, isCellClickDisabled,\n asyncRowOptionsFilter: filterConfig?.asyncRowOptionsFilter, handleUpdateColumnWidth,\n multiSelectConfig, headerContextOptions, showHeaderContextOptions, setShowHeaderContextOptions: setShowHeaderContextOptions as ((value: string | null) => void) | undefined,\n headerDivWidth, showDataTypeIcon, rowAdditionalActions, hoverConfig, rowAdditionalActionsWidth,\n cellEditing, cellEditingValue, openMasterDataModal, closeMasterDataModal, selectedMasterData,\n clearSelectedMasterData, allowInlineEdit, openCurrencyDropdown, closeCurrencyDropdown,\n currencyDropdownConfig, selectedCurrenciesMap, setCurrencyForCell, getCurrencyForCell,\n pendingEdits, addPendingEdit, removePendingEdit, getPendingEdit, hasPendingEdit,\n clearAllPendingEdits, saveAllPendingEdits, clearRowPendingEdits, saveRowPendingEdits,\n pendingEditsCount, scrollToCell, onFieldOperationFlow, fieldOperationLoading, validateAllPendingEdits,\n }}\n >\n {showHeader ? (\n <div\n ref={headerDivRef}\n className={`mb-2 flex w-full min-w-0 gap-2 dark:bg-black-800 ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'flex-col items-stretch' : 'flex-row items-center'\n }`}\n >\n <div\n className={`flex items-center gap-x-2 gap-y-1 ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full flex-wrap' : ''\n } ${headerConfig?.content ? 'min-w-0 flex-1' : 'shrink-0'}`}\n >\n {headerConfig?.content ? (\n <div className={`min-w-0 ${headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full' : 'flex-1'}`}>\n {headerConfig.content}\n </div>\n ) : null}\n {showRecordCount ? (\n <div className='flex items-center gap-1.5 shrink-0'>\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='16'\n height='16'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n className='text-neutral-500 dark:text-neutral-400 flex-shrink-0'\n aria-hidden\n >\n <ellipse cx='12' cy='5' rx='9' ry='3' />\n <path d='M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5' />\n <path d='M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9' />\n <path d='M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4' />\n </svg>\n <Typography size='small' variant='semibold' appearance='title'>\n {(totalItems ?? data.length).toLocaleString()}\n </Typography>\n <Typography size='small' variant='regular' appearance='subtitle'>\n total records\n </Typography>\n </div>\n ) : headerConfig?.preContent ? (\n <div className='flex min-w-0 shrink-0 justify-start items-center'>{headerConfig.preContent}</div>\n ) : null}\n </div>\n <div\n className={`flex min-w-0 items-center justify-end ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full' : headerConfig?.content ? 'shrink-0' : 'flex-1'\n } ${headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? 'flex-col' : 'flex-row'} ${\n headerConfig?.postContent ? 'gap-2' : ''\n }`}\n >\n {showRecordCount && headerConfig?.preContent ? (\n <div className='flex w-full justify-start items-center'>{headerConfig.preContent}</div>\n ) : null}\n <div\n className={`flex justify-end items-center min-w-0 ${\n headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? 'w-full' : headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full' : ''\n }`}\n >\n {TableHeaderComponent}\n </div>\n {headerConfig?.postContent ? (\n <div className={`flex justify-end items-center ${headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? 'w-full' : ''}`}>\n {headerConfig.postContent}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {headerConfig?.showDivider ? <div className='border-b pb-2 w-full dark:bg-black-800' /> : null}\n {showFilters || showSorts ? (\n <div className='flex justify-between items-center pb-4 dark:bg-black-800'>\n <div className='flex gap-2 items-center'>\n {showSorts && tableConfig?.renderSortItem ? (\n tableConfig.renderSortItem({ sort: sortConfig?.columnSort, onRemoveSort: handleRemoveSort, onSort: sortConfig?.onSort, tableHeaders, data })\n ) : null}\n {showFilters && showSorts && sortConfig?.columnSort?.field !== '' ? (\n <div className='h-8 w-[1px] flex-shrink-0 bg-neutral-200' />\n ) : null}\n {showFilters ? (\n <div className='flex gap-2 items-center'>\n {(isFilters || filterConfig?.onResetFilter) && tableConfig?.renderActiveFilters && (\n tableConfig.renderActiveFilters({\n filters: filterConfig?.columnFilters, onRemoveFilter: handleActiveRemoveFilter,\n onClearFilter: handleActiveClearFilter, onResetFilter: filterConfig?.onResetFilter,\n onFilter: filterConfig?.onFilter, tableHeaders, columnFilters: filterConfig?.columnFilters,\n modelName, enableMasterDataEnumSuggestions, noSpacing: true, notionStyle: filterConfig?.notionStyle, context: filterConfig?.context, data: enumSuggestionsData ?? data,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId\n })\n )}\n {tableConfig?.renderFilterButtons && (\n tableConfig.renderFilterButtons({\n onClearFilter: filterConfig?.onClearFilter, onClose: toggleDataFilterModal,\n modelName, enableMasterDataEnumSuggestions, defaultFilterColumn: newFilterColumn, resetDefaultFilterColumn: () => setNewFilterColumn(null),\n column: dataFilterColumn, onFilter: filterConfig?.onFilter, tableHeaders,\n columnFilters: filterConfig?.columnFilters, data: enumSuggestionsData ?? data, notionStyle: filterConfig?.notionStyle,\n context: filterConfig?.context,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n })\n )}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {floatingBarConfig && Object.keys(floatingBarConfig).length ? <FloatingBar {...floatingBarConfig} /> : null}\n {!showHeader && showRecordCount ? (\n <div className='flex items-center gap-1.5 mb-2'>\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='16'\n height='16'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n className='text-neutral-500 dark:text-neutral-400 flex-shrink-0'\n aria-hidden\n >\n <ellipse cx='12' cy='5' rx='9' ry='3' />\n <path d='M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5' />\n <path d='M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9' />\n <path d='M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4' />\n </svg>\n <Typography size='small' variant='semibold' appearance='title'>\n {(totalItems ?? data.length).toLocaleString()}\n </Typography>\n <Typography size='small' variant='regular' appearance='subtitle'>\n total records\n </Typography>\n </div>\n ) : !showHeader && headerConfig?.preContent ? (\n <div className='flex items-center mb-2'>{headerConfig.preContent}</div>\n ) : null}\n <div\n ref={tableContainerRef}\n className={`w-full ${paginationConfig ? `h-auto` : tableHeightClass} rounded-lg relative border overflow-x-hidden`}\n style={{\n ...(paginationConfig\n ? { height: data?.length > 0 ? `${(data?.length + 1) * rowSlotHeight + 4}px` : '350px' }\n : { height: fallbackHeight }),\n ...style,\n }}\n >\n {enableRootDrag ? (\n tableView\n ) : (\n <DndContext sensors={sensors} onDragEnd={handleDragEnd} onDragStart={handleDragStart} onDragCancel={handleDragCancel} collisionDetection={closestCorners}>\n {tableView}\n {activeItem\n ? createPortal(\n <DragOverlay adjustScale={true} dropAnimation={dropAnimation}>\n <table {...getTableProps()} className='w-full text-sm text-left text-neutral-500 dark:text-neutral-200 bg-white dark:bg-black-700 table-auto border-collapse'>\n <tbody {...getTableBodyProps()} className='bg-transparent divide-y divide-neutral-200'>\n {void prepareRow(activeItem)}\n <Row key={(activeItem.original as Record<string, unknown>).id as string} row={activeItem as never} index={rows?.findIndex((item) => item.id === (activeItem.original as Record<string, unknown>).id)} />\n </tbody>\n </table>\n </DragOverlay>,\n document.getElementById('full-screen-container') || document.body,\n )\n : null}\n </DndContext>\n )}\n </div>\n {paginationConfig && tableConfig?.renderPagination ? tableConfig.renderPagination(paginationConfig) : null}\n\n {tableConfig?.renderMasterDataModal && tableConfig.renderMasterDataModal({\n isVisible: !!masterDataModalConfig, onSelected: handleMasterDataSelected, onClose: closeMasterDataModal,\n masterDataColumnName: masterDataModalConfig?.masterDataColumnName, masterDataFilters: masterDataModalConfig?.masterDataFilters,\n masterDataName: masterDataModalConfig?.masterDataName, masterDataId: masterDataModalConfig?.masterDataName, showFilters: true,\n })}\n\n <CurrencyDropdownPortal config={currencyDropdownConfig} onClose={closeCurrencyDropdown} />\n\n <PendingEditsFloatingBar\n pendingEditsCount={pendingEditsCount}\n pendingEditsList={pendingEditsList}\n rowsWithPendingEdits={rowsWithPendingEdits}\n fieldOperationLoading={fieldOperationLoading}\n onClearAll={clearAllPendingEdits}\n onSaveAll={saveAllPendingEdits}\n onScrollToCell={scrollToCell}\n />\n </TableContext.Provider>\n );\n },\n);\n"],"names":["AutoSizer","_AutoSizer","CREATE_COLUMN_LABEL","getEmptyButtonId","label","index","InfiniteTable","React","tableKey","searchConfig","filterConfig","sortConfig","headerConfig","hoverConfig","columns","modelName","enableMasterDataEnumSuggestions","agreementCategoryId","agreementDomainId","agreementId","modificationId","lineItemRowId","enumSuggestionsData","data","onRowClick","showHeader","tableActions","rowOptions","hideRowOptionWidth","checkboxUtilities","isLoading","onScroll","onScrolling","isColumnConfigurable","onAddColumnClick","emptyMessage","noDataWidget","buttons","onEditColumnClick","onDeleteColumnClick","onRowTooltipClick","tooltiptext","cascadingTableConfig","originalsOnly","disableOptionsForRowIndex","tableHeightClass","getFullRowDataOnClick","selectedRowId","onRowEdit","onBulkRowEdit","inlineEditColumns","isResizable","paginationConfig","dndSortableUtils","multipleContexts","withSortable","withDraggable","enableRootDrag","pageSize","DEFAULT_PAGE_SIZE","onCascadingRowExpand","totalItems","showRecordCount","getInnerRowData","maxLevel","expandedRows","setExpandedRows","showNewItem","rawData","dragConfig","isOverlayLoading","style","floatingBarConfig","rowWrapper","rowLinkConfig","isCellClickDisabled","setHeaderOnParent","optimizeTable","multiSelectConfig","headerContextOptions","showHeaderContextOptions","setShowHeaderContextOptions","showDataTypeIcon","rowAdditionalActions","rowAdditionalActionsWidth","setVisibleHeaders","cellEditing","cellEditingValue","allowInlineEdit","onFieldOperationFlow","fieldOperationLoading","onTableActionsReady","onPendingEditsChange","onCancelPendingEdits","tableConfig","useTableConfig","rowSlotHeight","getRowSlotHeight","useRowHeight","isSearch","isFilters","isAnyFilters","isCheckbox","defaultTableView","selectedTableView","setSelectedTableView","useState","showFilters","setShowFilters","showSorts","setShowSorts","newFilterColumn","setNewFilterColumn","tableHeaders","setTableHeaders","isEmpty","showHeaderOptions","setShowHeaderOptions","showDataFilterModal","setShowDataFilterModal","dataFilterColumn","setDataFilterColumn","isAllChecked","setIsAllChecked","isShowSortArrowAsc","setIsShowSortArrowAsc","isShowSortArrowDesc","setIsShowSortArrowDesc","sortableListByContext","setSortableListByContext","activeItem","setActiveItem","dndLoading","setDndLoading","headerDivWidth","setHeaderDivWidth","headerDivRef","useRef","tableContainerRef","tableContainerSize","setTableContainerSize","activeInlineEdit","setActiveInlineEdit","masterDataModalConfig","setMasterDataModalConfig","selectedMasterData","setSelectedMasterData","currencyDropdownConfig","setCurrencyDropdownConfig","selectedCurrenciesMap","setSelectedCurrenciesMap","hasAppliedInitialFilters","userClearedFiltersRef","selectedTableViewRef","tableConfigRef","columnsRef","filterConfigRef","headerGroupsRef","resolveTableViewRef","computeListRef","pendingEdits","setPendingEdits","addPendingEdit","useCallback","rowId","columnKey","edit","prev","existingEdit","resolvedValidationError","column","col","result","validateCellValue","hasPendingEdits","rowEdits","useEffect","removePendingEdit","newEdits","_removed","rest","getPendingEdit","hasPendingEdit","clearAllPendingEdits","scrollToCell","rowIndex","colIndex","cellElement","DATA_ROW_ID_ATTR","DATA_COLUMN_KEY_ATTR","scrollContainer","OS_VIEWPORT_SELECTOR","scrollLeft","i","SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK","SCROLL_TO_CELL_LEFT_OFFSET","validateAllPendingEdits","editsToValidate","hasErrors","firstError","updatedEdits","errorTypes","getValidationToastMessage","hasRequired","hasFormat","saveAllPendingEdits","row","editedRows","originalRow","updatedRow","editedFields","clearRowPendingEdits","k","saveRowPendingEdits","editedRowData","n","pendingEditsCount","useMemo","total","pendingEditsList","list","rowsWithPendingEdits","rowsMap","a","b","openMasterDataModal","config","closeMasterDataModal","handleMasterDataSelected","value","clearSelectedMasterData","openCurrencyDropdown","closeCurrencyDropdown","setCurrencyForCell","cellKey","currency","getCurrencyForCell","fallbackHeight","pxMatch","calcMatch","emptySwitchProps","translatedCreateColumnLabel","defaultEmptyText","resolvedEmptyText","loaderData","cellLoaders","tableLoaders","visibleColumns","header","table","useTable","DEFAULT_COLUMN_MIN_WIDTH","DEFAULT_COLUMN_WIDTH","DEFAULT_COLUMN_MAX_WIDTH","useResizeColumns","getTableProps","getTableBodyProps","headerGroups","prepareRow","rows","headerKeys","groups","checkboxConfig","useCheckbox","sensors","useSensors","useSensor","MouseSensor","DND_ACTIVATION_DISTANCE","TouchSensor","dropAnimation","DROP_ANIMATION_EASING","DROP_ANIMATION_DURATION","computeList","acc","contextKey","e","handleDragStart","event","active","item","handleDragEnd","over","newState","handleDragCancel","toggleHeaderOption","key","toggleDataFilterModal","handleRemoveSort","toggleShowFilters","toggleShowSorts","lastNonStickyColumnIndex","reverseHeaders","getSumOfNextVisibleColumnWidth","currentIndex","sum","ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH","ROW_OPTIONS_COLUMN_WIDTH","resolveTableView","userId","handleUpdateColumnWidth","columnName","width","updatedTableView","currentView","hasViewFilters","hasConfigFilters","handleActiveRemoveFilter","handleActiveClearFilter","mergeViewColumnsWithTableColumns","resizeObserver","entries","height","tableHeader","jsx","Head","tableView","jsxs","Fragment","NoDataFoundWidgets","NoDataFound","Button","Add2Icon","button","effectiveWidth","effectiveHeight","Body","tableWrapper","forwardRef","props","ref","tableBodyWrapper","TableHeaderComponent","TableContext","TOOLBAR_FIRST_BREAKPOINT","Typography","TOOLBAR_SECOND_BREAKPOINT","FloatingBar","DndContext","closestCorners","createPortal","DragOverlay","Row","CurrencyDropdownPortal","PendingEditsFloatingBar"],"mappings":"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"}
|