@lax-wp/design-system 0.13.66 → 0.13.68
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/data-display/infinite-table/body/cell/RowActionCell.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/body/cell/RowActionCell.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/body/cell/RowActionCell.es.js +19 -19
- package/dist/components/data-display/infinite-table/body/cell/RowActionCell.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.d.ts +1 -1
- package/dist/components/data-display/infinite-table/index.es.js +589 -604
- package/dist/components/data-display/infinite-table/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/types.d.ts +1 -4
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.es.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 {\n canEditTableView,\n mergeViewColumnsWithTableColumns,\n} 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 {\n DndContext,\n DragOverlay,\n type DragEndEvent,\n type DragStartEvent,\n type DropAnimation,\n MouseSensor,\n TouchSensor,\n closestCorners,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} 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 {\n ICurrencyDropdownConfig,\n IColumn,\n IMasterDataModalConfig,\n ITableProps,\n ITableView,\n PendingEditsMap,\n IPendingEdit,\n} 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\n .toLowerCase()\n .trim()\n .replace(/\\s+/g, \"-\")\n .replace(/[^a-z0-9-_]/g, \"\");\n return `button-admin-${slug || index}`;\n};\n\nexport const InfiniteTable = React.memo(\n ({\n tableKey,\n searchConfig = {\n search: \"\",\n handleSearch: () => null,\n allowAStarSearch: false,\n },\n filterConfig = {\n columnFilters: [],\n onFilter: () => null,\n onRemoveFilter: () => null,\n onClearFilter: () => null,\n onResetFilter: () => Promise.resolve({}),\n asyncRowOptionsFilter: () => Promise.resolve({}),\n },\n sortConfig = {\n onSort: () => null,\n columnSort: { field: \"\", order: \"\" },\n onRemoveSort: () => null,\n },\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 =\n tableConfig?.getTableView?.(tableKey as string) ?? null;\n const [selectedTableView, setSelectedTableView] =\n useState<ITableView | null>(defaultTableView || null);\n const isReadOnlyView = !canEditTableView(\n selectedTableView,\n tableConfig?.getUserId?.()\n );\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>(\n null\n );\n const [showDataFilterModal, setShowDataFilterModal] =\n useState<boolean>(false);\n const [dataFilterColumn, setDataFilterColumn] = useState<unknown>(null);\n const [isAllChecked, setIsAllChecked] = useState(false);\n const [isShowSortArrowAsc, setIsShowSortArrowAsc] = useState<string | null>(\n null\n );\n const [isShowSortArrowDesc, setIsShowSortArrowDesc] = useState<\n string | null\n >(null);\n const [sortableListByContext, setSortableListByContext] = useState<\n Record<string, unknown>\n >({});\n const [activeItem, setActiveItem] = useState<ReactTableRow<object> | null>(\n null\n );\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({\n width: 0,\n height: 0,\n });\n const [activeInlineEdit, setActiveInlineEdit] = useState<{\n rowId: string;\n columnKey: string;\n } | null>(null);\n const [masterDataModalConfig, setMasterDataModalConfig] =\n useState<IMasterDataModalConfig | null>(null);\n const [selectedMasterData, setSelectedMasterData] = useState<{\n value: unknown;\n reference: unknown;\n } | null>(null);\n const [currencyDropdownConfig, setCurrencyDropdownConfig] =\n useState<ICurrencyDropdownConfig | null>(null);\n const [selectedCurrenciesMap, setSelectedCurrenciesMap] = useState<\n Record<string, string>\n >({});\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>(\n () => ({}) as ITableView\n );\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 =\n edit.validationError;\n if (resolvedValidationError === undefined) {\n const column = tableHeaders.find((col) => col.key === columnKey);\n if (column) {\n const result = validateCellValue(\n edit.value,\n column as { type?: string; is_required?: boolean }\n );\n resolvedValidationError = !result.isValid\n ? result.error || \"Invalid\"\n : null;\n } else {\n resolvedValidationError = existingEdit?.validationError ?? null;\n }\n }\n return {\n ...prev,\n [rowId]: {\n ...(prev[rowId] || {}),\n [columnKey]: {\n ...edit,\n validationError: resolvedValidationError ?? null,\n },\n },\n };\n });\n },\n [tableHeaders]\n );\n\n const hasPendingEdits = useCallback(() => {\n return Object.values(pendingEdits).some(\n (rowEdits) => Object.keys(rowEdits).length > 0\n );\n }, [pendingEdits]);\n\n useEffect(() => {\n if (onTableActionsReady)\n onTableActionsReady({\n addPendingEdit: addPendingEdit as (\n rowId: string,\n columnKey: string,\n edit: { value: unknown; originalValue?: unknown; meta?: unknown }\n ) => void,\n hasPendingEdits,\n });\n }, [onTableActionsReady, addPendingEdit, hasPendingEdits]);\n\n const removePendingEdit = useCallback(\n (rowId: string, columnKey: string) => {\n setPendingEdits((prev) => {\n const newEdits = { ...prev };\n if (newEdits[rowId]) {\n const { [columnKey]: _removed, ...rest } = newEdits[rowId];\n 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 );\n\n const getPendingEdit = useCallback(\n (rowId: string, columnKey: string): IPendingEdit | undefined =>\n pendingEdits[rowId]?.[columnKey],\n [pendingEdits]\n );\n\n const hasPendingEdit = useCallback(\n (rowId: string, columnKey: string): boolean =>\n Boolean(pendingEdits[rowId]?.[columnKey]),\n [pendingEdits]\n );\n\n const clearAllPendingEdits = useCallback(() => {\n if (fieldOperationLoading) return;\n if (onCancelPendingEdits && Object.keys(pendingEdits).length > 0)\n 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(\n (col) => col.key === columnKey\n );\n setTimeout(() => {\n const cellElement = document.querySelector(\n `[${DATA_ROW_ID_ATTR}=\"${rowId}\"] [${DATA_COLUMN_KEY_ATTR}=\"${columnKey}\"]`\n );\n if (cellElement) {\n cellElement.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"center\",\n });\n } else if (colIndex > 0) {\n const scrollContainer =\n 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)\n scrollLeft +=\n col?.width || SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK;\n }\n scrollLeft = Math.max(\n 0,\n scrollLeft - SCROLL_TO_CELL_LEFT_OFFSET\n );\n scrollContainer.scrollTo({\n left: scrollLeft,\n behavior: \"smooth\",\n });\n }\n }\n setActiveInlineEdit({ rowId, columnKey });\n }, 350);\n }, 100);\n },\n [tableHeaders, tableConfig]\n );\n\n const validateAllPendingEdits = useCallback(\n (\n editsToValidate: PendingEditsMap\n ): {\n hasErrors: boolean;\n updatedEdits: PendingEditsMap;\n firstError: { rowId: string; columnKey: string } | null;\n errorTypes: Set<string>;\n } => {\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(\n edit.value,\n column as { type?: string; is_required?: boolean }\n );\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] = {\n ...edit,\n validationError: result.error,\n };\n } else {\n updatedEdits[rowId][columnKey] = {\n ...edit,\n validationError: null,\n };\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)\n return \"Missing required field(s) and invalid format detected. Please review highlighted field(s).\";\n if (hasRequired)\n 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 } =\n validateAllPendingEdits(pendingEdits);\n if (hasErrors) {\n setPendingEdits(updatedEdits);\n tableConfig?.showNotification?.(\n \"error\",\n getValidationToastMessage(errorTypes)\n );\n if (firstError) {\n const rowIndex = data.findIndex(\n (row: Record<string, unknown>) => row.id === firstError!.rowId\n );\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(\n (row: Record<string, unknown>) => row.id === rowId\n );\n if (originalRow) {\n const updatedRow = { ...originalRow };\n const editedFields: Record<\n string,\n { value: unknown; meta?: unknown }\n > = {};\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)\n onRowEdit(null, null, null, null, null, {\n isBulk: true,\n rows: editedRows,\n });\n }\n\n setPendingEdits({});\n setSelectedCurrenciesMap({});\n setActiveInlineEdit(null);\n }, [\n pendingEdits,\n data,\n onRowEdit,\n onBulkRowEdit,\n validateAllPendingEdits,\n getValidationToastMessage,\n scrollToCell,\n tableConfig,\n ]);\n\n const clearRowPendingEdits = useCallback(\n (rowId: string) => {\n if (fieldOperationLoading) return;\n const rowEdits = pendingEdits[rowId];\n if (rowEdits && onCancelPendingEdits)\n onCancelPendingEdits({ [rowId]: rowEdits });\n setPendingEdits((prev) => {\n const n = { ...prev };\n delete n[rowId];\n return n;\n });\n setSelectedCurrenciesMap((prev) => {\n const n = { ...prev };\n Object.keys(n).forEach((k) => {\n if (k.startsWith(`${rowId}-`)) delete n[k];\n });\n return n;\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 } =\n validateAllPendingEdits({ [rowId]: rowEdits });\n if (hasErrors) {\n setPendingEdits((prev) => ({\n ...prev,\n [rowId]: updatedEdits[rowId],\n }));\n tableConfig?.showNotification?.(\n \"error\",\n getValidationToastMessage(errorTypes)\n );\n if (firstError) {\n const rowIndex = data.findIndex(\n (row: Record<string, unknown>) => row.id === firstError!.rowId\n );\n scrollToCell(firstError!.rowId, firstError!.columnKey, rowIndex);\n }\n return;\n }\n\n const originalRow = data.find(\n (row: Record<string, unknown>) => row.id === rowId\n );\n if (!originalRow) return;\n const updatedRow = { ...originalRow };\n const editedFields: Record<string, { value: unknown; meta?: unknown }> =\n {};\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)\n onRowEdit(null, null, null, null, null, {\n isBulk: true,\n rows: [editedRowData],\n });\n\n setPendingEdits((prev) => {\n const n = { ...prev };\n delete n[rowId];\n return n;\n });\n setSelectedCurrenciesMap((prev) => {\n const n = { ...prev };\n Object.keys(n).forEach((k) => {\n if (k.startsWith(`${rowId}-`)) delete n[k];\n });\n return n;\n });\n setActiveInlineEdit(null);\n },\n [\n pendingEdits,\n data,\n onRowEdit,\n onBulkRowEdit,\n validateAllPendingEdits,\n getValidationToastMessage,\n scrollToCell,\n tableConfig,\n ]\n );\n\n const pendingEditsCount = useMemo(() => {\n return Object.values(pendingEdits).reduce(\n (total, rowEdits) => total + Object.keys(rowEdits).length,\n 0\n );\n }, [pendingEdits]);\n\n useEffect(() => {\n onPendingEditsChange?.(pendingEditsCount > 0, pendingEditsCount);\n }, [pendingEditsCount, onPendingEditsChange]);\n\n const pendingEditsList = useMemo(() => {\n const list: Array<{\n rowId: string;\n columnKey: string;\n fieldName: string;\n value: unknown;\n originalValue: unknown;\n meta?: IPendingEdit[\"meta\"];\n originalMeta?: IPendingEdit[\"originalMeta\"];\n rowIndex: number;\n }> = [];\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex(\n (row: Record<string, unknown>) => row.id === rowId\n );\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n const column = tableHeaders.find((col) => col.key === columnKey);\n list.push({\n rowId,\n columnKey,\n fieldName: column?.Header || column?.display_name || columnKey,\n value: edit.value,\n originalValue: edit.originalValue,\n meta: edit.meta,\n originalMeta: edit.originalMeta,\n rowIndex,\n });\n });\n });\n return list;\n }, [pendingEdits, tableHeaders, data]);\n\n const rowsWithPendingEdits = useMemo(() => {\n const rowsMap = new Map<\n string,\n { rowId: string; rowIndex: number; editCount: number }\n >();\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex(\n (row: Record<string, unknown>) => row.id === rowId\n );\n rowsMap.set(rowId, {\n rowId,\n rowIndex,\n editCount: Object.keys(rowEdits).length,\n });\n });\n return Array.from(rowsMap.values()).sort(\n (a, b) => a.rowIndex - b.rowIndex\n );\n }, [pendingEdits, data]);\n\n const openMasterDataModal = useCallback(\n (config: IMasterDataModalConfig) => setMasterDataModalConfig(config),\n []\n );\n const closeMasterDataModal = useCallback(\n () => setMasterDataModalConfig(null),\n []\n );\n\n const handleMasterDataSelected = useCallback(\n (value: unknown, row?: unknown) => {\n setSelectedMasterData({ value, reference: row });\n if (masterDataModalConfig?.onSelected)\n masterDataModalConfig.onSelected(value, row);\n closeMasterDataModal();\n },\n [masterDataModalConfig, closeMasterDataModal]\n );\n\n const clearSelectedMasterData = useCallback(\n () => setSelectedMasterData(null),\n []\n );\n\n const openCurrencyDropdown = useCallback(\n (config: ICurrencyDropdownConfig) => setCurrencyDropdownConfig(config),\n []\n );\n const closeCurrencyDropdown = useCallback(\n () => setCurrencyDropdownConfig(null),\n []\n );\n\n const setCurrencyForCell = useCallback(\n (cellKey: string, currency: string) => {\n setSelectedCurrenciesMap((prev) => ({ ...prev, [cellKey]: currency }));\n },\n []\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)\n 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 =\n tableConfig?.t?.(CREATE_COLUMN_LABEL) ?? CREATE_COLUMN_LABEL;\n const defaultEmptyText = isAnyFilters\n ? \"No Results Found\"\n : emptyMessage || \"No Data Found\";\n const resolvedEmptyText =\n typeof defaultEmptyText === \"string\"\n ? (tableConfig?.t?.(defaultEmptyText) ?? defaultEmptyText)\n : 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(\n () => tableHeaders.filter((header) => Boolean(header?.visible)),\n [tableHeaders]\n );\n\n const table = useTable(\n {\n columns: optimizeTable ? visibleColumns : tableHeaders,\n data: [\n ...data,\n ...(isLoading ? (data?.length ? cellLoaders : tableLoaders) : []),\n ],\n defaultColumn: {\n minWidth: DEFAULT_COLUMN_MIN_WIDTH,\n width: DEFAULT_COLUMN_WIDTH,\n maxWidth: DEFAULT_COLUMN_MAX_WIDTH,\n },\n },\n useResizeColumns\n );\n\n const { getTableProps, getTableBodyProps, headerGroups, prepareRow, rows } =\n table;\n headerGroupsRef.current = headerGroups;\n\n const headerKeys = JSON.stringify(\n headerGroups[0]?.headers?.map(\n (header) => (header as unknown as Record<string, unknown>)?.Header\n )\n );\n useEffect(() => {\n if (setVisibleHeaders) {\n const groups = headerGroupsRef.current as Array<{\n headers?: Array<Record<string, unknown>>;\n }> | null;\n setVisibleHeaders?.(\n groups?.[0]?.headers?.map((header) => header?.Header as string) ?? []\n );\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 (\n ids: string[]\n ) => void,\n checkboxMetadata: checkboxUtilities?.checkboxMetadata as {\n checkedIds: string[];\n tooltip: string;\n highlight: string;\n },\n });\n\n const sensors = useSensors(\n useSensor(MouseSensor, {\n activationConstraint: { distance: DND_ACTIVATION_DISTANCE },\n }),\n useSensor(TouchSensor, {\n activationConstraint: { distance: DND_ACTIVATION_DISTANCE },\n })\n );\n\n const dropAnimation: DropAnimation = {\n easing: DROP_ANIMATION_EASING,\n duration: DROP_ANIMATION_DURATION,\n };\n\n function computeList() {\n if (!multipleContexts?.length || !withSortable) return rows;\n return multipleContexts.reduce(\n (acc: Record<string, unknown>, contextKey: string) => {\n acc[contextKey] = rows.filter(\n (e) => (e.original as Record<string, unknown>)?.type === contextKey\n );\n return acc;\n },\n {}\n );\n }\n computeListRef.current = computeList;\n\n const handleDragStart = (event: DragStartEvent) => {\n const { active } = event;\n setActiveItem(\n rows.find(\n (item) =>\n (item.original as Record<string, unknown>)?.id === active?.id\n ) ?? null\n );\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over) return;\n if (dndSortableUtils?.checkDndDragEnd) {\n dndSortableUtils.checkDndDragEnd(\n active,\n over,\n sortableListByContext,\n (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>)\n ?.type,\n droppedType: (over.data.current as Record<string, unknown>)?.type,\n updatedList: newState,\n cb: () => setDndLoading(false),\n });\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(\n () => setShowSorts((prev) => !prev),\n []\n );\n\n const lastNonStickyColumnIndex = () => {\n const reverseHeaders = (\n headerGroups[0]?.headers as unknown as Array<Record<string, unknown>>\n )?.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)\n sum += visibleColumns[i].width ?? 0;\n }\n if (rowAdditionalActions)\n sum +=\n rowAdditionalActionsWidth || ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH;\n if (rowOptions)\n sum += hideRowOptionWidth ? 0 : ROW_OPTIONS_COLUMN_WIDTH;\n return sum;\n },\n [\n visibleColumns,\n rowAdditionalActionsWidth,\n hideRowOptionWidth,\n rowAdditionalActions,\n rowOptions,\n ]\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:\n selectedTableView?.columns ||\n 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 if (isReadOnlyView) return;\n\n const updatedTableView = resolveTableView();\n setSelectedTableView({\n ...updatedTableView,\n columns: updatedTableView?.columns?.map((column) =>\n column.name === columnName ? { ...column, width } : column\n ),\n unsaved: true,\n });\n };\n\n useEffect(() => {\n if (filterConfig?.columnFilters?.length > 0) setShowFilters(true);\n if (isReadOnlyView) return;\n const currentView = selectedTableViewRef.current;\n if (\n JSON.stringify(currentView?.filters || []) !==\n JSON.stringify(filterConfig?.columnFilters || [])\n ) {\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 =\n hasViewFilters && !hasConfigFilters && !userClearedFiltersRef.current;\n if (!isClearingFilters) {\n const updatedTableView = resolveTableViewRef.current();\n setSelectedTableView({\n ...updatedTableView,\n filters: JSON.parse(\n JSON.stringify(filterConfig?.columnFilters || [])\n ),\n unsaved: true,\n });\n }\n userClearedFiltersRef.current = false;\n }\n }, [filterConfig?.columnFilters, isReadOnlyView]);\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\") {\n setIsShowSortArrowAsc(sortConfig.columnSort.field);\n setIsShowSortArrowDesc(null);\n } else if (sortConfig.columnSort.order === \"desc\") {\n setIsShowSortArrowDesc(sortConfig.columnSort.field);\n setIsShowSortArrowAsc(null);\n }\n } else {\n setIsShowSortArrowAsc(null);\n setIsShowSortArrowDesc(null);\n }\n }, [sortConfig?.columnSort?.field, sortConfig?.columnSort?.order]);\n\n useEffect(() => {\n setTableHeaders(\n mergeViewColumnsWithTableColumns(\n selectedTableViewRef.current?.columns || [],\n columns\n )\n );\n }, [columns]);\n\n useEffect(() => {\n if (selectedTableView?.unsaved)\n tableConfigRef.current?.persistTableView?.(selectedTableView);\n }, [selectedTableView]);\n\n useEffect(() => {\n setSortableListByContext(\n computeListRef.current() as Record<string, unknown>\n );\n }, [rows.length]);\n\n useEffect(() => {\n setSelectedTableView(defaultTableView || null);\n if (defaultTableView?.columns) {\n setTableHeaders(\n mergeViewColumnsWithTableColumns(\n defaultTableView?.columns || [],\n columnsRef.current\n )\n );\n }\n if (\n defaultTableView?.filters &&\n defaultTableView.filters.length > 0 &&\n !hasAppliedInitialFilters.current\n ) {\n requestAnimationFrame(() => {\n filterConfigRef.current?.onFilter?.(defaultTableView.filters);\n });\n hasAppliedInitialFilters.current = true;\n } else if (\n defaultTableView?.filters &&\n hasAppliedInitialFilters.current\n ) {\n const filtersAreDifferent =\n JSON.stringify(defaultTableView.filters) !==\n JSON.stringify(filterConfigRef.current?.columnFilters);\n if (filtersAreDifferent)\n filterConfigRef.current?.onFilter?.(defaultTableView.filters);\n }\n }, [defaultTableView]);\n\n useEffect(() => {\n if (headerDivRef.current) {\n const resizeObserver = new ResizeObserver((entries) =>\n setHeaderDivWidth(entries[0].contentRect.width)\n );\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={\n sortConfig?.onSort as\n | ((field: string, order?: string) => void)\n | undefined\n }\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={\n onAddColumnClick as (column: {\n id: string;\n key: string;\n [k: string]: unknown;\n }) => void\n }\n onEditColumnClick={\n onEditColumnClick as (column: {\n id: string;\n key: string;\n [k: string]: unknown;\n }) => void\n }\n onDeleteColumnClick={\n onDeleteColumnClick as (column: {\n id: string;\n key: string;\n [k: string]: unknown;\n }) => void\n }\n tableActions={tableActions || null}\n isLoading={isLoading}\n rowAdditionalActions={\n (rowAdditionalActions ?? null) as (() => React.ReactNode) | null\n }\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 ? (\n tableConfig.renderEmpty(emptySwitchProps)\n ) : (\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 ? (\n <NoDataFoundWidgets widgetType=\"TABLE\" />\n ) : (\n <NoDataFound text={resolvedEmptyText} />\n )}\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={\n onAddColumnClick as\n | ((\n event: React.MouseEvent<HTMLButtonElement>\n ) => void)\n | undefined\n }\n >\n <Add2Icon className=\"text-white dark:text-white\" />{\" \"}\n {translatedCreateColumnLabel}\n </Button>\n </div>\n ) : null}\n {!isAnyFilters &&\n buttons?.map((button, index) => (\n <Button\n key={`${button.label}-${index}`}\n status=\"secondary\"\n id={getEmptyButtonId(button.label, index)}\n onClick={button.onClick}\n >\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 =\n width > 0 ? width : tableContainerSize.width;\n const effectiveHeight =\n height > 0 ? height : tableContainerSize.height;\n return effectiveWidth > 0 && effectiveHeight > 0 ? (\n <Body\n {...{\n getTableBodyProps:\n getTableBodyProps as unknown as () => Record<\n string,\n unknown\n >,\n rows: rows as never,\n prepareRow: prepareRow as never,\n isLoading,\n onScroll,\n onScrolling,\n columns,\n width: effectiveWidth,\n height: effectiveHeight,\n withSortable,\n allowAstarSearch: searchConfig?.allowAStarSearch || false,\n }}\n />\n ) : null;\n }}\n />\n )}\n </div>\n </>\n );\n\n const tableWrapper = forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n >((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<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n >((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,\n search: searchConfig?.search,\n handleSearch: searchConfig?.handleSearch,\n toggleShowFilters,\n toggleShowSorts,\n filterCounts: filterConfig?.columnFilters?.length,\n columns,\n columnFilters: filterConfig?.columnFilters,\n setSelectedTableView,\n selectedTableView,\n enableTableView: headerConfig?.showTableView,\n modelName: modelName as string,\n enableMasterDataEnumSuggestions,\n onRemoveFilter: filterConfig?.onRemoveFilter,\n onClearFilter: filterConfig?.onClearFilter,\n onFilter: filterConfig?.onFilter,\n data: enumSuggestionsData ?? data,\n tableHeaders,\n showTableViewAsModal: headerConfig?.showTableViewAsModal,\n additionalOptions: headerConfig?.additionalOptions,\n inlineActions: headerConfig?.inlineActions,\n showFilters: headerConfig?.showFilters,\n showSorts: headerConfig?.showSorts,\n showSearch: headerConfig?.showSearch,\n isLoading: Boolean(headerConfig?.isLoading),\n setTableHeaders,\n allowAStarSearch: Boolean(searchConfig?.allowAStarSearch),\n withContent: !!headerConfig?.content,\n setShowFilters,\n sort: sortConfig?.columnSort,\n onSort: sortConfig?.onSort,\n onRemoveSort: handleRemoveSort,\n showExportButton: headerConfig?.showExportButton,\n onExportClick: headerConfig?.onExportClick,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n });\n }\n return null;\n }, [\n tableKey,\n searchConfig?.search,\n searchConfig?.handleSearch,\n toggleShowFilters,\n toggleShowSorts,\n filterConfig?.columnFilters,\n columns,\n setSelectedTableView,\n selectedTableView,\n headerConfig,\n modelName,\n filterConfig?.onRemoveFilter,\n filterConfig?.onClearFilter,\n filterConfig?.onFilter,\n data,\n enumSuggestionsData,\n tableHeaders,\n sortConfig?.columnSort,\n sortConfig?.onSort,\n handleRemoveSort,\n tableConfig,\n searchConfig?.allowAStarSearch,\n enableMasterDataEnumSuggestions,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n ]);\n\n useEffect(() => {\n if (setHeaderOnParent) setHeaderOnParent(TableHeaderComponent);\n }, [TableHeaderComponent, setHeaderOnParent]);\n\n return (\n <TableContext.Provider\n value={{\n tableWrapper,\n tableBodyWrapper,\n lastNonStickyColumnIndex,\n search: searchConfig?.search,\n columnFilters: filterConfig?.columnFilters,\n onRowClick,\n onSort: sortConfig?.onSort,\n onFilter: filterConfig?.onFilter,\n toggleShowFilters,\n toggleShowSorts,\n onRemoveFilter: filterConfig?.onRemoveFilter,\n onClearFilter: filterConfig?.onClearFilter,\n rowOptions,\n checkboxConfig,\n onResetFilter: filterConfig?.onResetFilter,\n isColumnConfigurable,\n onAddColumnClick,\n onEditColumnClick,\n onDeleteColumnClick,\n onRowTooltipClick,\n tooltiptext,\n cascadingTableConfig,\n activeInlineEdit,\n setActiveInlineEdit,\n originalsOnly,\n disableOptionsForRowIndex,\n getFullRowDataOnClick,\n selectedRowId,\n getSumOfNextVisibleColumnWidth,\n onRowEdit,\n inlineEditColumns,\n tableActions,\n dndSortableUtils,\n withSortable,\n withDraggable,\n onCascadingRowExpand,\n getInnerRowData,\n tableHeaders,\n maxLevel,\n expandedRows,\n setExpandedRows,\n showNewItem,\n rawData,\n dragConfig,\n rowWrapper,\n rowLinkConfig,\n isCellClickDisabled,\n asyncRowOptionsFilter: filterConfig?.asyncRowOptionsFilter,\n handleUpdateColumnWidth,\n isTableViewReadOnly: isReadOnlyView,\n multiSelectConfig,\n headerContextOptions,\n showHeaderContextOptions,\n setShowHeaderContextOptions: setShowHeaderContextOptions as\n | ((value: string | null) => void)\n | undefined,\n headerDivWidth,\n showDataTypeIcon,\n rowAdditionalActions,\n hoverConfig,\n rowAdditionalActionsWidth,\n cellEditing,\n cellEditingValue,\n openMasterDataModal,\n closeMasterDataModal,\n selectedMasterData,\n clearSelectedMasterData,\n allowInlineEdit,\n openCurrencyDropdown,\n closeCurrencyDropdown,\n currencyDropdownConfig,\n selectedCurrenciesMap,\n setCurrencyForCell,\n getCurrencyForCell,\n pendingEdits,\n addPendingEdit,\n removePendingEdit,\n getPendingEdit,\n hasPendingEdit,\n clearAllPendingEdits,\n saveAllPendingEdits,\n clearRowPendingEdits,\n saveRowPendingEdits,\n pendingEditsCount,\n scrollToCell,\n onFieldOperationFlow,\n fieldOperationLoading,\n 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\n ? \"flex-col items-stretch\"\n : \"flex-row items-center\"\n }`}\n >\n <div\n className={`flex items-center gap-x-2 gap-y-1 ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT\n ? \"w-full flex-wrap\"\n : \"\"\n } ${headerConfig?.content ? \"min-w-0 flex-1\" : \"shrink-0\"}`}\n >\n {headerConfig?.content ? (\n <div\n className={`min-w-0 ${headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? \"w-full\" : \"flex-1\"}`}\n >\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\n size=\"small\"\n variant=\"semibold\"\n appearance=\"title\"\n >\n {(totalItems ?? data.length).toLocaleString()}\n </Typography>\n <Typography\n size=\"small\"\n variant=\"regular\"\n appearance=\"subtitle\"\n >\n total records\n </Typography>\n </div>\n ) : headerConfig?.preContent ? (\n <div className=\"flex min-w-0 shrink-0 justify-start items-center\">\n {headerConfig.preContent}\n </div>\n ) : null}\n </div>\n <div\n className={`flex min-w-0 items-center justify-end ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT\n ? \"w-full\"\n : headerConfig?.content\n ? \"shrink-0\"\n : \"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\">\n {headerConfig.preContent}\n </div>\n ) : null}\n <div\n className={`flex justify-end items-center min-w-0 ${\n headerDivWidth < TOOLBAR_SECOND_BREAKPOINT\n ? \"w-full\"\n : headerDivWidth < TOOLBAR_FIRST_BREAKPOINT\n ? \"w-full\"\n : \"\"\n }`}\n >\n {TableHeaderComponent}\n </div>\n {headerConfig?.postContent ? (\n <div\n className={`flex justify-end items-center ${headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? \"w-full\" : \"\"}`}\n >\n {headerConfig.postContent}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {headerConfig?.showDivider ? (\n <div className=\"border-b pb-2 w-full dark:bg-black-800\" />\n ) : 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({\n sort: sortConfig?.columnSort,\n onRemoveSort: handleRemoveSort,\n onSort: sortConfig?.onSort,\n tableHeaders,\n data,\n disabled: isReadOnlyView,\n })\n : null}\n {showFilters &&\n showSorts &&\n 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) &&\n tableConfig?.renderActiveFilters &&\n tableConfig.renderActiveFilters({\n filters: filterConfig?.columnFilters,\n onRemoveFilter: handleActiveRemoveFilter,\n onClearFilter: handleActiveClearFilter,\n onResetFilter: filterConfig?.onResetFilter,\n onFilter: filterConfig?.onFilter,\n tableHeaders,\n columnFilters: filterConfig?.columnFilters,\n modelName,\n enableMasterDataEnumSuggestions,\n noSpacing: true,\n notionStyle: filterConfig?.notionStyle,\n context: filterConfig?.context,\n data: enumSuggestionsData ?? data,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n disabled: isReadOnlyView,\n })}\n {tableConfig?.renderFilterButtons &&\n tableConfig.renderFilterButtons({\n onClearFilter: filterConfig?.onClearFilter,\n onClose: toggleDataFilterModal,\n modelName,\n enableMasterDataEnumSuggestions,\n defaultFilterColumn: newFilterColumn,\n resetDefaultFilterColumn: () => setNewFilterColumn(null),\n column: dataFilterColumn,\n onFilter: filterConfig?.onFilter,\n tableHeaders,\n columnFilters: filterConfig?.columnFilters,\n data: enumSuggestionsData ?? data,\n notionStyle: filterConfig?.notionStyle,\n context: filterConfig?.context,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n disabled: isReadOnlyView,\n })}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {floatingBarConfig && Object.keys(floatingBarConfig).length ? (\n <FloatingBar {...floatingBarConfig} />\n ) : 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\">\n {headerConfig.preContent}\n </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 ? {\n height:\n data?.length > 0\n ? `${(data?.length + 1) * rowSlotHeight + 4}px`\n : \"350px\",\n }\n : { height: fallbackHeight }),\n ...style,\n }}\n >\n {enableRootDrag ? (\n tableView\n ) : (\n <DndContext\n sensors={sensors}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onDragCancel={handleDragCancel}\n collisionDetection={closestCorners}\n >\n {tableView}\n {activeItem\n ? createPortal(\n <DragOverlay\n adjustScale={true}\n dropAnimation={dropAnimation}\n >\n <table\n {...getTableProps()}\n 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 >\n <tbody\n {...getTableBodyProps()}\n className=\"bg-transparent divide-y divide-neutral-200\"\n >\n {void prepareRow(activeItem)}\n <Row\n key={\n (activeItem.original as Record<string, unknown>)\n .id as string\n }\n row={activeItem as never}\n index={rows?.findIndex(\n (item) =>\n item.id ===\n (activeItem.original as Record<string, unknown>)\n .id\n )}\n />\n </tbody>\n </table>\n </DragOverlay>,\n document.getElementById(\"full-screen-container\") ||\n document.body\n )\n : null}\n </DndContext>\n )}\n </div>\n {paginationConfig && tableConfig?.renderPagination\n ? tableConfig.renderPagination(paginationConfig)\n : null}\n\n {tableConfig?.renderMasterDataModal &&\n tableConfig.renderMasterDataModal({\n isVisible: !!masterDataModalConfig,\n onSelected: handleMasterDataSelected,\n onClose: closeMasterDataModal,\n masterDataColumnName: masterDataModalConfig?.masterDataColumnName,\n masterDataFormula: masterDataModalConfig?.masterDataFormula,\n masterDataFilters: masterDataModalConfig?.masterDataFilters,\n masterDataName: masterDataModalConfig?.masterDataName,\n masterDataId: masterDataModalConfig?.masterDataName,\n showFilters: true,\n })}\n\n <CurrencyDropdownPortal\n config={currencyDropdownConfig}\n onClose={closeCurrencyDropdown}\n />\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","isReadOnlyView","canEditTableView","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","n","k","saveRowPendingEdits","editedRowData","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.es.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 {\n canEditTableView,\n mergeViewColumnsWithTableColumns,\n} 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 {\n DndContext,\n DragOverlay,\n type DragEndEvent,\n type DragStartEvent,\n type DropAnimation,\n MouseSensor,\n TouchSensor,\n closestCorners,\n useSensor,\n useSensors,\n} from \"@dnd-kit/core\";\nimport React, {\n forwardRef,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} 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 {\n ICurrencyDropdownConfig,\n IColumn,\n IMasterDataModalConfig,\n ITableProps,\n ITableView,\n PendingEditsMap,\n IPendingEdit,\n} 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\n .toLowerCase()\n .trim()\n .replace(/\\s+/g, \"-\")\n .replace(/[^a-z0-9-_]/g, \"\");\n return `button-admin-${slug || index}`;\n};\n\nexport const InfiniteTable = React.memo(\n ({\n tableKey,\n searchConfig = {\n search: \"\",\n handleSearch: () => null,\n allowAStarSearch: false,\n },\n filterConfig = {\n columnFilters: [],\n onFilter: () => null,\n onRemoveFilter: () => null,\n onClearFilter: () => null,\n onResetFilter: () => Promise.resolve({}),\n asyncRowOptionsFilter: () => Promise.resolve({}),\n },\n sortConfig = {\n onSort: () => null,\n columnSort: { field: \"\", order: \"\" },\n onRemoveSort: () => null,\n },\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 agreementId,\n enumSuggestionsExtraParams,\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 =\n tableConfig?.getTableView?.(tableKey as string) ?? null;\n const [selectedTableView, setSelectedTableView] =\n useState<ITableView | null>(defaultTableView || null);\n const isReadOnlyView = !canEditTableView(\n selectedTableView,\n tableConfig?.getUserId?.()\n );\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>(\n null\n );\n const [showDataFilterModal, setShowDataFilterModal] =\n useState<boolean>(false);\n const [dataFilterColumn, setDataFilterColumn] = useState<unknown>(null);\n const [isAllChecked, setIsAllChecked] = useState(false);\n const [isShowSortArrowAsc, setIsShowSortArrowAsc] = useState<string | null>(\n null\n );\n const [isShowSortArrowDesc, setIsShowSortArrowDesc] = useState<\n string | null\n >(null);\n const [sortableListByContext, setSortableListByContext] = useState<\n Record<string, unknown>\n >({});\n const [activeItem, setActiveItem] = useState<ReactTableRow<object> | null>(\n null\n );\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({\n width: 0,\n height: 0,\n });\n const [activeInlineEdit, setActiveInlineEdit] = useState<{\n rowId: string;\n columnKey: string;\n } | null>(null);\n const [masterDataModalConfig, setMasterDataModalConfig] =\n useState<IMasterDataModalConfig | null>(null);\n const [selectedMasterData, setSelectedMasterData] = useState<{\n value: unknown;\n reference: unknown;\n } | null>(null);\n const [currencyDropdownConfig, setCurrencyDropdownConfig] =\n useState<ICurrencyDropdownConfig | null>(null);\n const [selectedCurrenciesMap, setSelectedCurrenciesMap] = useState<\n Record<string, string>\n >({});\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>(\n () => ({}) as ITableView\n );\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 =\n edit.validationError;\n if (resolvedValidationError === undefined) {\n const column = tableHeaders.find((col) => col.key === columnKey);\n if (column) {\n const result = validateCellValue(\n edit.value,\n column as { type?: string; is_required?: boolean }\n );\n resolvedValidationError = !result.isValid\n ? result.error || \"Invalid\"\n : null;\n } else {\n resolvedValidationError = existingEdit?.validationError ?? null;\n }\n }\n return {\n ...prev,\n [rowId]: {\n ...(prev[rowId] || {}),\n [columnKey]: {\n ...edit,\n validationError: resolvedValidationError ?? null,\n },\n },\n };\n });\n },\n [tableHeaders]\n );\n\n const hasPendingEdits = useCallback(() => {\n return Object.values(pendingEdits).some(\n (rowEdits) => Object.keys(rowEdits).length > 0\n );\n }, [pendingEdits]);\n\n useEffect(() => {\n if (onTableActionsReady)\n onTableActionsReady({\n addPendingEdit: addPendingEdit as (\n rowId: string,\n columnKey: string,\n edit: { value: unknown; originalValue?: unknown; meta?: unknown }\n ) => void,\n hasPendingEdits,\n });\n }, [onTableActionsReady, addPendingEdit, hasPendingEdits]);\n\n const removePendingEdit = useCallback(\n (rowId: string, columnKey: string) => {\n setPendingEdits((prev) => {\n const newEdits = { ...prev };\n if (newEdits[rowId]) {\n const { [columnKey]: _removed, ...rest } = newEdits[rowId];\n 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 );\n\n const getPendingEdit = useCallback(\n (rowId: string, columnKey: string): IPendingEdit | undefined =>\n pendingEdits[rowId]?.[columnKey],\n [pendingEdits]\n );\n\n const hasPendingEdit = useCallback(\n (rowId: string, columnKey: string): boolean =>\n Boolean(pendingEdits[rowId]?.[columnKey]),\n [pendingEdits]\n );\n\n const clearAllPendingEdits = useCallback(() => {\n if (fieldOperationLoading) return;\n if (onCancelPendingEdits && Object.keys(pendingEdits).length > 0)\n 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(\n (col) => col.key === columnKey\n );\n setTimeout(() => {\n const cellElement = document.querySelector(\n `[${DATA_ROW_ID_ATTR}=\"${rowId}\"] [${DATA_COLUMN_KEY_ATTR}=\"${columnKey}\"]`\n );\n if (cellElement) {\n cellElement.scrollIntoView({\n behavior: \"smooth\",\n block: \"center\",\n inline: \"center\",\n });\n } else if (colIndex > 0) {\n const scrollContainer =\n 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)\n scrollLeft +=\n col?.width || SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK;\n }\n scrollLeft = Math.max(\n 0,\n scrollLeft - SCROLL_TO_CELL_LEFT_OFFSET\n );\n scrollContainer.scrollTo({\n left: scrollLeft,\n behavior: \"smooth\",\n });\n }\n }\n setActiveInlineEdit({ rowId, columnKey });\n }, 350);\n }, 100);\n },\n [tableHeaders, tableConfig]\n );\n\n const validateAllPendingEdits = useCallback(\n (\n editsToValidate: PendingEditsMap\n ): {\n hasErrors: boolean;\n updatedEdits: PendingEditsMap;\n firstError: { rowId: string; columnKey: string } | null;\n errorTypes: Set<string>;\n } => {\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(\n edit.value,\n column as { type?: string; is_required?: boolean }\n );\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] = {\n ...edit,\n validationError: result.error,\n };\n } else {\n updatedEdits[rowId][columnKey] = {\n ...edit,\n validationError: null,\n };\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)\n return \"Missing required field(s) and invalid format detected. Please review highlighted field(s).\";\n if (hasRequired)\n 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 } =\n validateAllPendingEdits(pendingEdits);\n if (hasErrors) {\n setPendingEdits(updatedEdits);\n tableConfig?.showNotification?.(\n \"error\",\n getValidationToastMessage(errorTypes)\n );\n if (firstError) {\n const rowIndex = data.findIndex(\n (row: Record<string, unknown>) => row.id === firstError!.rowId\n );\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(\n (row: Record<string, unknown>) => row.id === rowId\n );\n if (originalRow) {\n const updatedRow = { ...originalRow };\n const editedFields: Record<\n string,\n { value: unknown; meta?: unknown }\n > = {};\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)\n onRowEdit(null, null, null, null, null, {\n isBulk: true,\n rows: editedRows,\n });\n }\n\n setPendingEdits({});\n setSelectedCurrenciesMap({});\n setActiveInlineEdit(null);\n }, [\n pendingEdits,\n data,\n onRowEdit,\n onBulkRowEdit,\n validateAllPendingEdits,\n getValidationToastMessage,\n scrollToCell,\n tableConfig,\n ]);\n\n const clearRowPendingEdits = useCallback(\n (rowId: string) => {\n if (fieldOperationLoading) return;\n const rowEdits = pendingEdits[rowId];\n if (rowEdits && onCancelPendingEdits)\n onCancelPendingEdits({ [rowId]: rowEdits });\n setPendingEdits((prev) => {\n const n = { ...prev };\n delete n[rowId];\n return n;\n });\n setSelectedCurrenciesMap((prev) => {\n const n = { ...prev };\n Object.keys(n).forEach((k) => {\n if (k.startsWith(`${rowId}-`)) delete n[k];\n });\n return n;\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 } =\n validateAllPendingEdits({ [rowId]: rowEdits });\n if (hasErrors) {\n setPendingEdits((prev) => ({\n ...prev,\n [rowId]: updatedEdits[rowId],\n }));\n tableConfig?.showNotification?.(\n \"error\",\n getValidationToastMessage(errorTypes)\n );\n if (firstError) {\n const rowIndex = data.findIndex(\n (row: Record<string, unknown>) => row.id === firstError!.rowId\n );\n scrollToCell(firstError!.rowId, firstError!.columnKey, rowIndex);\n }\n return;\n }\n\n const originalRow = data.find(\n (row: Record<string, unknown>) => row.id === rowId\n );\n if (!originalRow) return;\n const updatedRow = { ...originalRow };\n const editedFields: Record<string, { value: unknown; meta?: unknown }> =\n {};\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)\n onRowEdit(null, null, null, null, null, {\n isBulk: true,\n rows: [editedRowData],\n });\n\n setPendingEdits((prev) => {\n const n = { ...prev };\n delete n[rowId];\n return n;\n });\n setSelectedCurrenciesMap((prev) => {\n const n = { ...prev };\n Object.keys(n).forEach((k) => {\n if (k.startsWith(`${rowId}-`)) delete n[k];\n });\n return n;\n });\n setActiveInlineEdit(null);\n },\n [\n pendingEdits,\n data,\n onRowEdit,\n onBulkRowEdit,\n validateAllPendingEdits,\n getValidationToastMessage,\n scrollToCell,\n tableConfig,\n ]\n );\n\n const pendingEditsCount = useMemo(() => {\n return Object.values(pendingEdits).reduce(\n (total, rowEdits) => total + Object.keys(rowEdits).length,\n 0\n );\n }, [pendingEdits]);\n\n useEffect(() => {\n onPendingEditsChange?.(pendingEditsCount > 0, pendingEditsCount);\n }, [pendingEditsCount, onPendingEditsChange]);\n\n const pendingEditsList = useMemo(() => {\n const list: Array<{\n rowId: string;\n columnKey: string;\n fieldName: string;\n value: unknown;\n originalValue: unknown;\n meta?: IPendingEdit[\"meta\"];\n originalMeta?: IPendingEdit[\"originalMeta\"];\n rowIndex: number;\n }> = [];\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex(\n (row: Record<string, unknown>) => row.id === rowId\n );\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n const column = tableHeaders.find((col) => col.key === columnKey);\n list.push({\n rowId,\n columnKey,\n fieldName: column?.Header || column?.display_name || columnKey,\n value: edit.value,\n originalValue: edit.originalValue,\n meta: edit.meta,\n originalMeta: edit.originalMeta,\n rowIndex,\n });\n });\n });\n return list;\n }, [pendingEdits, tableHeaders, data]);\n\n const rowsWithPendingEdits = useMemo(() => {\n const rowsMap = new Map<\n string,\n { rowId: string; rowIndex: number; editCount: number }\n >();\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex(\n (row: Record<string, unknown>) => row.id === rowId\n );\n rowsMap.set(rowId, {\n rowId,\n rowIndex,\n editCount: Object.keys(rowEdits).length,\n });\n });\n return Array.from(rowsMap.values()).sort(\n (a, b) => a.rowIndex - b.rowIndex\n );\n }, [pendingEdits, data]);\n\n const openMasterDataModal = useCallback(\n (config: IMasterDataModalConfig) => setMasterDataModalConfig(config),\n []\n );\n const closeMasterDataModal = useCallback(\n () => setMasterDataModalConfig(null),\n []\n );\n\n const handleMasterDataSelected = useCallback(\n (value: unknown, row?: unknown) => {\n setSelectedMasterData({ value, reference: row });\n if (masterDataModalConfig?.onSelected)\n masterDataModalConfig.onSelected(value, row);\n closeMasterDataModal();\n },\n [masterDataModalConfig, closeMasterDataModal]\n );\n\n const clearSelectedMasterData = useCallback(\n () => setSelectedMasterData(null),\n []\n );\n\n const openCurrencyDropdown = useCallback(\n (config: ICurrencyDropdownConfig) => setCurrencyDropdownConfig(config),\n []\n );\n const closeCurrencyDropdown = useCallback(\n () => setCurrencyDropdownConfig(null),\n []\n );\n\n const setCurrencyForCell = useCallback(\n (cellKey: string, currency: string) => {\n setSelectedCurrenciesMap((prev) => ({ ...prev, [cellKey]: currency }));\n },\n []\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)\n 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 =\n tableConfig?.t?.(CREATE_COLUMN_LABEL) ?? CREATE_COLUMN_LABEL;\n const defaultEmptyText = isAnyFilters\n ? \"No Results Found\"\n : emptyMessage || \"No Data Found\";\n const resolvedEmptyText =\n typeof defaultEmptyText === \"string\"\n ? (tableConfig?.t?.(defaultEmptyText) ?? defaultEmptyText)\n : 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(\n () => tableHeaders.filter((header) => Boolean(header?.visible)),\n [tableHeaders]\n );\n\n const table = useTable(\n {\n columns: optimizeTable ? visibleColumns : tableHeaders,\n data: [\n ...data,\n ...(isLoading ? (data?.length ? cellLoaders : tableLoaders) : []),\n ],\n defaultColumn: {\n minWidth: DEFAULT_COLUMN_MIN_WIDTH,\n width: DEFAULT_COLUMN_WIDTH,\n maxWidth: DEFAULT_COLUMN_MAX_WIDTH,\n },\n },\n useResizeColumns\n );\n\n const { getTableProps, getTableBodyProps, headerGroups, prepareRow, rows } =\n table;\n headerGroupsRef.current = headerGroups;\n\n const headerKeys = JSON.stringify(\n headerGroups[0]?.headers?.map(\n (header) => (header as unknown as Record<string, unknown>)?.Header\n )\n );\n useEffect(() => {\n if (setVisibleHeaders) {\n const groups = headerGroupsRef.current as Array<{\n headers?: Array<Record<string, unknown>>;\n }> | null;\n setVisibleHeaders?.(\n groups?.[0]?.headers?.map((header) => header?.Header as string) ?? []\n );\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 (\n ids: string[]\n ) => void,\n checkboxMetadata: checkboxUtilities?.checkboxMetadata as {\n checkedIds: string[];\n tooltip: string;\n highlight: string;\n },\n });\n\n const sensors = useSensors(\n useSensor(MouseSensor, {\n activationConstraint: { distance: DND_ACTIVATION_DISTANCE },\n }),\n useSensor(TouchSensor, {\n activationConstraint: { distance: DND_ACTIVATION_DISTANCE },\n })\n );\n\n const dropAnimation: DropAnimation = {\n easing: DROP_ANIMATION_EASING,\n duration: DROP_ANIMATION_DURATION,\n };\n\n function computeList() {\n if (!multipleContexts?.length || !withSortable) return rows;\n return multipleContexts.reduce(\n (acc: Record<string, unknown>, contextKey: string) => {\n acc[contextKey] = rows.filter(\n (e) => (e.original as Record<string, unknown>)?.type === contextKey\n );\n return acc;\n },\n {}\n );\n }\n computeListRef.current = computeList;\n\n const handleDragStart = (event: DragStartEvent) => {\n const { active } = event;\n setActiveItem(\n rows.find(\n (item) =>\n (item.original as Record<string, unknown>)?.id === active?.id\n ) ?? null\n );\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over) return;\n if (dndSortableUtils?.checkDndDragEnd) {\n dndSortableUtils.checkDndDragEnd(\n active,\n over,\n sortableListByContext,\n (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>)\n ?.type,\n droppedType: (over.data.current as Record<string, unknown>)?.type,\n updatedList: newState,\n cb: () => setDndLoading(false),\n });\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(\n () => setShowSorts((prev) => !prev),\n []\n );\n\n const lastNonStickyColumnIndex = () => {\n const reverseHeaders = (\n headerGroups[0]?.headers as unknown as Array<Record<string, unknown>>\n )?.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)\n sum += visibleColumns[i].width ?? 0;\n }\n if (rowAdditionalActions)\n sum +=\n rowAdditionalActionsWidth || ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH;\n if (rowOptions)\n sum += hideRowOptionWidth ? 0 : ROW_OPTIONS_COLUMN_WIDTH;\n return sum;\n },\n [\n visibleColumns,\n rowAdditionalActionsWidth,\n hideRowOptionWidth,\n rowAdditionalActions,\n rowOptions,\n ]\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:\n selectedTableView?.columns ||\n 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 if (isReadOnlyView) return;\n\n const updatedTableView = resolveTableView();\n setSelectedTableView({\n ...updatedTableView,\n columns: updatedTableView?.columns?.map((column) =>\n column.name === columnName ? { ...column, width } : column\n ),\n unsaved: true,\n });\n };\n\n useEffect(() => {\n if (filterConfig?.columnFilters?.length > 0) setShowFilters(true);\n if (isReadOnlyView) return;\n const currentView = selectedTableViewRef.current;\n if (\n JSON.stringify(currentView?.filters || []) !==\n JSON.stringify(filterConfig?.columnFilters || [])\n ) {\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 =\n hasViewFilters && !hasConfigFilters && !userClearedFiltersRef.current;\n if (!isClearingFilters) {\n const updatedTableView = resolveTableViewRef.current();\n setSelectedTableView({\n ...updatedTableView,\n filters: JSON.parse(\n JSON.stringify(filterConfig?.columnFilters || [])\n ),\n unsaved: true,\n });\n }\n userClearedFiltersRef.current = false;\n }\n }, [filterConfig?.columnFilters, isReadOnlyView]);\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\") {\n setIsShowSortArrowAsc(sortConfig.columnSort.field);\n setIsShowSortArrowDesc(null);\n } else if (sortConfig.columnSort.order === \"desc\") {\n setIsShowSortArrowDesc(sortConfig.columnSort.field);\n setIsShowSortArrowAsc(null);\n }\n } else {\n setIsShowSortArrowAsc(null);\n setIsShowSortArrowDesc(null);\n }\n }, [sortConfig?.columnSort?.field, sortConfig?.columnSort?.order]);\n\n useEffect(() => {\n setTableHeaders(\n mergeViewColumnsWithTableColumns(\n selectedTableViewRef.current?.columns || [],\n columns\n )\n );\n }, [columns]);\n\n useEffect(() => {\n if (selectedTableView?.unsaved)\n tableConfigRef.current?.persistTableView?.(selectedTableView);\n }, [selectedTableView]);\n\n useEffect(() => {\n setSortableListByContext(\n computeListRef.current() as Record<string, unknown>\n );\n }, [rows.length]);\n\n useEffect(() => {\n setSelectedTableView(defaultTableView || null);\n if (defaultTableView?.columns) {\n setTableHeaders(\n mergeViewColumnsWithTableColumns(\n defaultTableView?.columns || [],\n columnsRef.current\n )\n );\n }\n if (\n defaultTableView?.filters &&\n defaultTableView.filters.length > 0 &&\n !hasAppliedInitialFilters.current\n ) {\n requestAnimationFrame(() => {\n filterConfigRef.current?.onFilter?.(defaultTableView.filters);\n });\n hasAppliedInitialFilters.current = true;\n } else if (\n defaultTableView?.filters &&\n hasAppliedInitialFilters.current\n ) {\n const filtersAreDifferent =\n JSON.stringify(defaultTableView.filters) !==\n JSON.stringify(filterConfigRef.current?.columnFilters);\n if (filtersAreDifferent)\n filterConfigRef.current?.onFilter?.(defaultTableView.filters);\n }\n }, [defaultTableView]);\n\n useEffect(() => {\n if (headerDivRef.current) {\n const resizeObserver = new ResizeObserver((entries) =>\n setHeaderDivWidth(entries[0].contentRect.width)\n );\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={\n sortConfig?.onSort as\n | ((field: string, order?: string) => void)\n | undefined\n }\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={\n onAddColumnClick as (column: {\n id: string;\n key: string;\n [k: string]: unknown;\n }) => void\n }\n onEditColumnClick={\n onEditColumnClick as (column: {\n id: string;\n key: string;\n [k: string]: unknown;\n }) => void\n }\n onDeleteColumnClick={\n onDeleteColumnClick as (column: {\n id: string;\n key: string;\n [k: string]: unknown;\n }) => void\n }\n tableActions={tableActions || null}\n isLoading={isLoading}\n rowAdditionalActions={\n (rowAdditionalActions ?? null) as (() => React.ReactNode) | null\n }\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 ? (\n tableConfig.renderEmpty(emptySwitchProps)\n ) : (\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 ? (\n <NoDataFoundWidgets widgetType=\"TABLE\" />\n ) : (\n <NoDataFound text={resolvedEmptyText} />\n )}\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={\n onAddColumnClick as\n | ((\n event: React.MouseEvent<HTMLButtonElement>\n ) => void)\n | undefined\n }\n >\n <Add2Icon className=\"text-white dark:text-white\" />{\" \"}\n {translatedCreateColumnLabel}\n </Button>\n </div>\n ) : null}\n {!isAnyFilters &&\n buttons?.map((button, index) => (\n <Button\n key={`${button.label}-${index}`}\n status=\"secondary\"\n id={getEmptyButtonId(button.label, index)}\n onClick={button.onClick}\n >\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 =\n width > 0 ? width : tableContainerSize.width;\n const effectiveHeight =\n height > 0 ? height : tableContainerSize.height;\n return effectiveWidth > 0 && effectiveHeight > 0 ? (\n <Body\n {...{\n getTableBodyProps:\n getTableBodyProps as unknown as () => Record<\n string,\n unknown\n >,\n rows: rows as never,\n prepareRow: prepareRow as never,\n isLoading,\n onScroll,\n onScrolling,\n columns,\n width: effectiveWidth,\n height: effectiveHeight,\n withSortable,\n allowAstarSearch: searchConfig?.allowAStarSearch || false,\n }}\n />\n ) : null;\n }}\n />\n )}\n </div>\n </>\n );\n\n const tableWrapper = forwardRef<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n >((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<\n HTMLDivElement,\n React.HTMLAttributes<HTMLDivElement>\n >((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,\n search: searchConfig?.search,\n handleSearch: searchConfig?.handleSearch,\n toggleShowFilters,\n toggleShowSorts,\n filterCounts: filterConfig?.columnFilters?.length,\n columns,\n columnFilters: filterConfig?.columnFilters,\n setSelectedTableView,\n selectedTableView,\n enableTableView: headerConfig?.showTableView,\n modelName: modelName as string,\n enableMasterDataEnumSuggestions,\n onRemoveFilter: filterConfig?.onRemoveFilter,\n onClearFilter: filterConfig?.onClearFilter,\n onFilter: filterConfig?.onFilter,\n data: enumSuggestionsData ?? data,\n tableHeaders,\n showTableViewAsModal: headerConfig?.showTableViewAsModal,\n additionalOptions: headerConfig?.additionalOptions,\n inlineActions: headerConfig?.inlineActions,\n showFilters: headerConfig?.showFilters,\n showSorts: headerConfig?.showSorts,\n showSearch: headerConfig?.showSearch,\n isLoading: Boolean(headerConfig?.isLoading),\n setTableHeaders,\n allowAStarSearch: Boolean(searchConfig?.allowAStarSearch),\n withContent: !!headerConfig?.content,\n setShowFilters,\n sort: sortConfig?.columnSort,\n onSort: sortConfig?.onSort,\n onRemoveSort: handleRemoveSort,\n showExportButton: headerConfig?.showExportButton,\n onExportClick: headerConfig?.onExportClick,\n agreementId,\n enumSuggestionsExtraParams,\n });\n }\n return null;\n }, [\n tableKey,\n searchConfig?.search,\n searchConfig?.handleSearch,\n toggleShowFilters,\n toggleShowSorts,\n filterConfig?.columnFilters,\n columns,\n setSelectedTableView,\n selectedTableView,\n headerConfig,\n modelName,\n filterConfig?.onRemoveFilter,\n filterConfig?.onClearFilter,\n filterConfig?.onFilter,\n data,\n enumSuggestionsData,\n tableHeaders,\n sortConfig?.columnSort,\n sortConfig?.onSort,\n handleRemoveSort,\n tableConfig,\n searchConfig?.allowAStarSearch,\n enableMasterDataEnumSuggestions,\n agreementId,\n enumSuggestionsExtraParams,\n ]);\n\n useEffect(() => {\n if (setHeaderOnParent) setHeaderOnParent(TableHeaderComponent);\n }, [TableHeaderComponent, setHeaderOnParent]);\n\n return (\n <TableContext.Provider\n value={{\n tableWrapper,\n tableBodyWrapper,\n lastNonStickyColumnIndex,\n search: searchConfig?.search,\n columnFilters: filterConfig?.columnFilters,\n onRowClick,\n onSort: sortConfig?.onSort,\n onFilter: filterConfig?.onFilter,\n toggleShowFilters,\n toggleShowSorts,\n onRemoveFilter: filterConfig?.onRemoveFilter,\n onClearFilter: filterConfig?.onClearFilter,\n rowOptions,\n checkboxConfig,\n onResetFilter: filterConfig?.onResetFilter,\n isColumnConfigurable,\n onAddColumnClick,\n onEditColumnClick,\n onDeleteColumnClick,\n onRowTooltipClick,\n tooltiptext,\n cascadingTableConfig,\n activeInlineEdit,\n setActiveInlineEdit,\n originalsOnly,\n disableOptionsForRowIndex,\n getFullRowDataOnClick,\n selectedRowId,\n getSumOfNextVisibleColumnWidth,\n onRowEdit,\n inlineEditColumns,\n tableActions,\n dndSortableUtils,\n withSortable,\n withDraggable,\n onCascadingRowExpand,\n getInnerRowData,\n tableHeaders,\n maxLevel,\n expandedRows,\n setExpandedRows,\n showNewItem,\n rawData,\n dragConfig,\n rowWrapper,\n rowLinkConfig,\n isCellClickDisabled,\n asyncRowOptionsFilter: filterConfig?.asyncRowOptionsFilter,\n handleUpdateColumnWidth,\n isTableViewReadOnly: isReadOnlyView,\n multiSelectConfig,\n headerContextOptions,\n showHeaderContextOptions,\n setShowHeaderContextOptions: setShowHeaderContextOptions as\n | ((value: string | null) => void)\n | undefined,\n headerDivWidth,\n showDataTypeIcon,\n rowAdditionalActions,\n hoverConfig,\n rowAdditionalActionsWidth,\n cellEditing,\n cellEditingValue,\n openMasterDataModal,\n closeMasterDataModal,\n selectedMasterData,\n clearSelectedMasterData,\n allowInlineEdit,\n openCurrencyDropdown,\n closeCurrencyDropdown,\n currencyDropdownConfig,\n selectedCurrenciesMap,\n setCurrencyForCell,\n getCurrencyForCell,\n pendingEdits,\n addPendingEdit,\n removePendingEdit,\n getPendingEdit,\n hasPendingEdit,\n clearAllPendingEdits,\n saveAllPendingEdits,\n clearRowPendingEdits,\n saveRowPendingEdits,\n pendingEditsCount,\n scrollToCell,\n onFieldOperationFlow,\n fieldOperationLoading,\n 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\n ? \"flex-col items-stretch\"\n : \"flex-row items-center\"\n }`}\n >\n <div\n className={`flex items-center gap-x-2 gap-y-1 ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT\n ? \"w-full flex-wrap\"\n : \"\"\n } ${headerConfig?.content ? \"min-w-0 flex-1\" : \"shrink-0\"}`}\n >\n {headerConfig?.content ? (\n <div\n className={`min-w-0 ${headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? \"w-full\" : \"flex-1\"}`}\n >\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\n size=\"small\"\n variant=\"semibold\"\n appearance=\"title\"\n >\n {(totalItems ?? data.length).toLocaleString()}\n </Typography>\n <Typography\n size=\"small\"\n variant=\"regular\"\n appearance=\"subtitle\"\n >\n total records\n </Typography>\n </div>\n ) : headerConfig?.preContent ? (\n <div className=\"flex min-w-0 shrink-0 justify-start items-center\">\n {headerConfig.preContent}\n </div>\n ) : null}\n </div>\n <div\n className={`flex min-w-0 items-center justify-end ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT\n ? \"w-full\"\n : headerConfig?.content\n ? \"shrink-0\"\n : \"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\">\n {headerConfig.preContent}\n </div>\n ) : null}\n <div\n className={`flex justify-end items-center min-w-0 ${\n headerDivWidth < TOOLBAR_SECOND_BREAKPOINT\n ? \"w-full\"\n : headerDivWidth < TOOLBAR_FIRST_BREAKPOINT\n ? \"w-full\"\n : \"\"\n }`}\n >\n {TableHeaderComponent}\n </div>\n {headerConfig?.postContent ? (\n <div\n className={`flex justify-end items-center ${headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? \"w-full\" : \"\"}`}\n >\n {headerConfig.postContent}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {headerConfig?.showDivider ? (\n <div className=\"border-b pb-2 w-full dark:bg-black-800\" />\n ) : 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({\n sort: sortConfig?.columnSort,\n onRemoveSort: handleRemoveSort,\n onSort: sortConfig?.onSort,\n tableHeaders,\n data,\n disabled: isReadOnlyView,\n })\n : null}\n {showFilters &&\n showSorts &&\n 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) &&\n tableConfig?.renderActiveFilters &&\n tableConfig.renderActiveFilters({\n filters: filterConfig?.columnFilters,\n onRemoveFilter: handleActiveRemoveFilter,\n onClearFilter: handleActiveClearFilter,\n onResetFilter: filterConfig?.onResetFilter,\n onFilter: filterConfig?.onFilter,\n tableHeaders,\n columnFilters: filterConfig?.columnFilters,\n modelName,\n enableMasterDataEnumSuggestions,\n noSpacing: true,\n notionStyle: filterConfig?.notionStyle,\n context: filterConfig?.context,\n data: enumSuggestionsData ?? data,\n agreementId,\n enumSuggestionsExtraParams,\n disabled: isReadOnlyView,\n })}\n {tableConfig?.renderFilterButtons &&\n tableConfig.renderFilterButtons({\n onClearFilter: filterConfig?.onClearFilter,\n onClose: toggleDataFilterModal,\n modelName,\n enableMasterDataEnumSuggestions,\n defaultFilterColumn: newFilterColumn,\n resetDefaultFilterColumn: () => setNewFilterColumn(null),\n column: dataFilterColumn,\n onFilter: filterConfig?.onFilter,\n tableHeaders,\n columnFilters: filterConfig?.columnFilters,\n data: enumSuggestionsData ?? data,\n notionStyle: filterConfig?.notionStyle,\n context: filterConfig?.context,\n agreementId,\n enumSuggestionsExtraParams,\n disabled: isReadOnlyView,\n })}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {floatingBarConfig && Object.keys(floatingBarConfig).length ? (\n <FloatingBar {...floatingBarConfig} />\n ) : 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\">\n {headerConfig.preContent}\n </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 ? {\n height:\n data?.length > 0\n ? `${(data?.length + 1) * rowSlotHeight + 4}px`\n : \"350px\",\n }\n : { height: fallbackHeight }),\n ...style,\n }}\n >\n {enableRootDrag ? (\n tableView\n ) : (\n <DndContext\n sensors={sensors}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onDragCancel={handleDragCancel}\n collisionDetection={closestCorners}\n >\n {tableView}\n {activeItem\n ? createPortal(\n <DragOverlay\n adjustScale={true}\n dropAnimation={dropAnimation}\n >\n <table\n {...getTableProps()}\n 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 >\n <tbody\n {...getTableBodyProps()}\n className=\"bg-transparent divide-y divide-neutral-200\"\n >\n {void prepareRow(activeItem)}\n <Row\n key={\n (activeItem.original as Record<string, unknown>)\n .id as string\n }\n row={activeItem as never}\n index={rows?.findIndex(\n (item) =>\n item.id ===\n (activeItem.original as Record<string, unknown>)\n .id\n )}\n />\n </tbody>\n </table>\n </DragOverlay>,\n document.getElementById(\"full-screen-container\") ||\n document.body\n )\n : null}\n </DndContext>\n )}\n </div>\n {paginationConfig && tableConfig?.renderPagination\n ? tableConfig.renderPagination(paginationConfig)\n : null}\n\n {tableConfig?.renderMasterDataModal &&\n tableConfig.renderMasterDataModal({\n isVisible: !!masterDataModalConfig,\n onSelected: handleMasterDataSelected,\n onClose: closeMasterDataModal,\n masterDataColumnName: masterDataModalConfig?.masterDataColumnName,\n masterDataFormula: masterDataModalConfig?.masterDataFormula,\n masterDataFilters: masterDataModalConfig?.masterDataFilters,\n masterDataName: masterDataModalConfig?.masterDataName,\n masterDataId: masterDataModalConfig?.masterDataName,\n showFilters: true,\n })}\n\n <CurrencyDropdownPortal\n config={currencyDropdownConfig}\n onClose={closeCurrencyDropdown}\n />\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","agreementId","enumSuggestionsExtraParams","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","isReadOnlyView","canEditTableView","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","n","k","saveRowPendingEdits","editedRowData","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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"}
|
|
@@ -102,11 +102,8 @@ export interface ITableProps {
|
|
|
102
102
|
tableKey: TTableKey;
|
|
103
103
|
modelName?: string;
|
|
104
104
|
enableMasterDataEnumSuggestions?: boolean;
|
|
105
|
-
agreementCategoryId?: string;
|
|
106
|
-
agreementDomainId?: string;
|
|
107
105
|
agreementId?: string;
|
|
108
|
-
|
|
109
|
-
lineItemRowId?: string;
|
|
106
|
+
enumSuggestionsExtraParams?: Array<string | undefined>;
|
|
110
107
|
columns: IColumn[];
|
|
111
108
|
data: any[];
|
|
112
109
|
enumSuggestionsData?: TTableRow[];
|