@lax-wp/design-system 0.13.35 → 0.13.37-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/data-display/infinite-table/head/index.cjs.js +1 -1
- package/dist/components/data-display/infinite-table/head/index.cjs.js.map +1 -1
- package/dist/components/data-display/infinite-table/head/index.d.ts +3 -1
- package/dist/components/data-display/infinite-table/head/index.es.js +50 -48
- package/dist/components/data-display/infinite-table/head/index.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 +190 -188
- package/dist/components/data-display/infinite-table/index.es.js.map +1 -1
- package/dist/components/data-display/infinite-table/types.d.ts +2 -0
- package/dist/components/forms/date-time-field/DateTimeField.cjs.js +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.cjs.js.map +1 -1
- package/dist/components/forms/date-time-field/DateTimeField.es.js +97 -92
- package/dist/components/forms/date-time-field/DateTimeField.es.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.cjs.js.map +1 -1
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.d.ts +6 -0
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js +172 -142
- package/dist/components/forms/dynamic-data-input/DynamicDataInputField.es.js.map +1 -1
- package/dist/components/forms/link-input/LinkInputField.cjs.js +2 -0
- package/dist/components/forms/link-input/LinkInputField.cjs.js.map +1 -0
- package/dist/components/forms/link-input/LinkInputField.d.ts +26 -0
- package/dist/components/forms/link-input/LinkInputField.es.js +113 -0
- package/dist/components/forms/link-input/LinkInputField.es.js.map +1 -0
- package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.cjs.js.map +1 -1
- package/dist/components/forms/master-data-input/MasterDataInputField.d.ts +6 -0
- package/dist/components/forms/master-data-input/MasterDataInputField.es.js +199 -169
- package/dist/components/forms/master-data-input/MasterDataInputField.es.js.map +1 -1
- package/dist/components/forms/percentage-input/PercentageInputField.cjs.js +1 -5
- package/dist/components/forms/percentage-input/PercentageInputField.cjs.js.map +1 -1
- package/dist/components/forms/percentage-input/PercentageInputField.d.ts +6 -0
- package/dist/components/forms/percentage-input/PercentageInputField.es.js +141 -134
- package/dist/components/forms/percentage-input/PercentageInputField.es.js.map +1 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.es.js +407 -405
- package/dist/index.es.js.map +1 -1
- 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 { mergeViewColumnsWithTableColumns } from '../../../utils/table';\nimport Button from '../../button/Button';\nimport { FloatingBar } from '../../floating-bar/FloatingBar';\nimport { NoDataFound, NoDataFoundWidgets } from '../empty-state';\nimport { Typography } from '../typography/Typography';\nimport { DndContext, DragOverlay, type DragEndEvent, type DragStartEvent, type DropAnimation, MouseSensor, TouchSensor, closestCorners, useSensor, useSensors } from '@dnd-kit/core';\nimport React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { AutoSizer as _AutoSizer } from 'react-virtualized-auto-sizer';\nimport { createPortal } from 'react-dom';\nimport type { Row as ReactTableRow } from 'react-table';\nimport { useResizeColumns, useTable } from 'react-table';\n\nimport { Body } from './body';\nimport { validateCellValue } from './validateCell';\nimport { Row } from './body/rows/row';\nimport { TableContext } from './context';\nimport { CurrencyDropdownPortal } from './CurrencyDropdownPortal';\nimport { Head } from './head';\nimport { PendingEditsFloatingBar } from './PendingEditsFloatingBar';\nimport type { ICurrencyDropdownConfig, IColumn, IMasterDataModalConfig, ITableProps, ITableView, PendingEditsMap, IPendingEdit } from './types';\nimport { Add2Icon } from '../../icon';\nimport {\n TOOLBAR_FIRST_BREAKPOINT,\n TOOLBAR_SECOND_BREAKPOINT,\n DEFAULT_PAGE_SIZE,\n DEFAULT_COLUMN_MIN_WIDTH,\n DEFAULT_COLUMN_WIDTH,\n DEFAULT_COLUMN_MAX_WIDTH,\n DND_ACTIVATION_DISTANCE,\n DROP_ANIMATION_EASING,\n DROP_ANIMATION_DURATION,\n SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK,\n SCROLL_TO_CELL_LEFT_OFFSET,\n ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH,\n ROW_OPTIONS_COLUMN_WIDTH,\n OS_VIEWPORT_SELECTOR,\n DATA_ROW_ID_ATTR,\n DATA_COLUMN_KEY_ATTR,\n} from './constants';\nimport { getRowSlotHeight, useRowHeight } from './useRowHeight';\n\nconst AutoSizer = _AutoSizer as unknown as React.ComponentType<{\n renderProp: (size: { width: number; height: number }) => React.ReactNode;\n style?: React.CSSProperties;\n}>;\n\nconst CREATE_COLUMN_LABEL = 'Create Column';\n\nconst getEmptyButtonId = (label: string, index: number): string => {\n const slug = label.toLowerCase().trim().replace(/\\s+/g, '-').replace(/[^a-z0-9-_]/g, '');\n return `button-admin-${slug || index}`;\n};\n\nexport const InfiniteTable = React.memo(\n ({\n tableKey,\n searchConfig = { search: '', handleSearch: () => null, allowAStarSearch: false },\n filterConfig = {\n columnFilters: [],\n onFilter: () => null,\n onRemoveFilter: () => null,\n onClearFilter: () => null,\n onResetFilter: () => Promise.resolve({}),\n asyncRowOptionsFilter: () => Promise.resolve({}),\n },\n sortConfig = { onSort: () => null, columnSort: { field: '', order: '' }, onRemoveSort: () => null },\n headerConfig = {\n showExportButton: null,\n showFilters: true,\n showSorts: true,\n showSearch: true,\n showTableView: true,\n showTableViewAsModal: false,\n content: null,\n postContent: null,\n preContent: null,\n isLoading: false,\n showDivider: false,\n },\n hoverConfig = null,\n columns,\n modelName,\n enableMasterDataEnumSuggestions = false,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n enumSuggestionsData,\n data = [],\n onRowClick,\n showHeader,\n tableActions,\n rowOptions,\n hideRowOptionWidth,\n checkboxUtilities,\n isLoading = false,\n onScroll,\n onScrolling,\n isColumnConfigurable,\n onAddColumnClick,\n emptyMessage,\n noDataWidget,\n buttons,\n onEditColumnClick,\n onDeleteColumnClick,\n onRowTooltipClick,\n tooltiptext,\n cascadingTableConfig,\n originalsOnly,\n disableOptionsForRowIndex,\n tableHeightClass = 'h-[calc(100vh-220px)]',\n getFullRowDataOnClick,\n selectedRowId = null,\n onRowEdit,\n onBulkRowEdit,\n inlineEditColumns,\n isResizable = true,\n paginationConfig,\n dndSortableUtils,\n multipleContexts,\n withSortable,\n withDraggable,\n enableRootDrag,\n pageSize = DEFAULT_PAGE_SIZE,\n onCascadingRowExpand,\n totalItems,\n showRecordCount = false,\n getInnerRowData,\n maxLevel,\n expandedRows = {},\n setExpandedRows,\n showNewItem,\n rawData,\n dragConfig,\n isOverlayLoading,\n style = {},\n floatingBarConfig,\n rowWrapper,\n rowLinkConfig,\n isCellClickDisabled,\n setHeaderOnParent,\n optimizeTable = false,\n multiSelectConfig,\n headerContextOptions,\n showHeaderContextOptions,\n setShowHeaderContextOptions,\n showDataTypeIcon = false,\n rowAdditionalActions,\n rowAdditionalActionsWidth,\n setVisibleHeaders,\n cellEditing = null,\n cellEditingValue = null,\n allowInlineEdit = false,\n onFieldOperationFlow,\n fieldOperationLoading = null,\n onTableActionsReady,\n onPendingEditsChange,\n onCancelPendingEdits,\n }: ITableProps) => {\n const tableConfig = useTableConfig();\n\n // Row slot height tracks the `h-row` viewport clamp so the paginated\n // container sizes to the rows the virtualized body actually renders.\n const rowSlotHeight = getRowSlotHeight(useRowHeight());\n\n const isSearch = Boolean(searchConfig?.search);\n\n const isFilters = filterConfig?.columnFilters?.length > 0;\n const isAnyFilters = isSearch || isFilters;\n\n const isCheckbox = Boolean(checkboxUtilities);\n\n const defaultTableView = tableConfig?.getTableView?.(tableKey as string) ?? null;\n const [selectedTableView, setSelectedTableView] = useState<ITableView | null>(defaultTableView || null);\n const [showFilters, setShowFilters] = useState(false);\n const [showSorts, setShowSorts] = useState(false);\n const [newFilterColumn, setNewFilterColumn] = useState<unknown>(null);\n const [tableHeaders, setTableHeaders] = useState<IColumn[]>(columns);\n const isEmpty = (data.length === 0 || !tableHeaders.length) && !isLoading;\n const [showHeaderOptions, setShowHeaderOptions] = useState<string | null>(null);\n const [showDataFilterModal, setShowDataFilterModal] = useState<boolean>(false);\n const [dataFilterColumn, setDataFilterColumn] = useState<unknown>(null);\n const [isAllChecked, setIsAllChecked] = useState(false);\n const [isShowSortArrowAsc, setIsShowSortArrowAsc] = useState<string | null>(null);\n const [isShowSortArrowDesc, setIsShowSortArrowDesc] = useState<string | null>(null);\n const [sortableListByContext, setSortableListByContext] = useState<Record<string, unknown>>({});\n const [activeItem, setActiveItem] = useState<ReactTableRow<object> | null>(null);\n const [dndLoading, setDndLoading] = useState<boolean>(false);\n const [headerDivWidth, setHeaderDivWidth] = useState(0);\n const headerDivRef = useRef<HTMLDivElement>(null);\n const tableContainerRef = useRef<HTMLDivElement>(null);\n const [tableContainerSize, setTableContainerSize] = useState({ width: 0, height: 0 });\n const [activeInlineEdit, setActiveInlineEdit] = useState<{ rowId: string; columnKey: string } | null>(null);\n const [masterDataModalConfig, setMasterDataModalConfig] = useState<IMasterDataModalConfig | null>(null);\n const [selectedMasterData, setSelectedMasterData] = useState<{ value: unknown; reference: unknown } | null>(null);\n const [currencyDropdownConfig, setCurrencyDropdownConfig] = useState<ICurrencyDropdownConfig | null>(null);\n const [selectedCurrenciesMap, setSelectedCurrenciesMap] = useState<Record<string, string>>({});\n const hasAppliedInitialFilters = useRef(false);\n const userClearedFiltersRef = useRef(false);\n\n const selectedTableViewRef = useRef(selectedTableView);\n selectedTableViewRef.current = selectedTableView;\n const tableConfigRef = useRef(tableConfig);\n tableConfigRef.current = tableConfig;\n const columnsRef = useRef(columns);\n columnsRef.current = columns;\n const filterConfigRef = useRef(filterConfig);\n filterConfigRef.current = filterConfig;\n const headerGroupsRef = useRef<unknown[] | null>(null);\n const resolveTableViewRef = useRef<() => ITableView>(() => ({}) as ITableView);\n const computeListRef = useRef<() => unknown>(() => ({}));\n\n const [pendingEdits, setPendingEdits] = useState<PendingEditsMap>({});\n\n const addPendingEdit = useCallback(\n (rowId: string, columnKey: string, edit: IPendingEdit) => {\n setPendingEdits((prev) => {\n const existingEdit = prev[rowId]?.[columnKey];\n let resolvedValidationError: string | null | undefined = edit.validationError;\n if (resolvedValidationError === undefined) {\n const column = tableHeaders.find((col) => col.key === columnKey);\n if (column) {\n const result = validateCellValue(edit.value, column as { type?: string; is_required?: boolean });\n resolvedValidationError = !result.isValid ? (result.error || 'Invalid') : null;\n } else {\n resolvedValidationError = existingEdit?.validationError ?? null;\n }\n }\n return { ...prev, [rowId]: { ...(prev[rowId] || {}), [columnKey]: { ...edit, validationError: resolvedValidationError ?? null } } };\n });\n },\n [tableHeaders],\n );\n\n const hasPendingEdits = useCallback(() => {\n return Object.values(pendingEdits).some((rowEdits) => Object.keys(rowEdits).length > 0);\n }, [pendingEdits]);\n\n useEffect(() => {\n if (onTableActionsReady) onTableActionsReady({ addPendingEdit: addPendingEdit as (rowId: string, columnKey: string, edit: { value: unknown; originalValue?: unknown; meta?: unknown }) => void, hasPendingEdits });\n }, [onTableActionsReady, addPendingEdit, hasPendingEdits]);\n\n const removePendingEdit = useCallback((rowId: string, columnKey: string) => {\n setPendingEdits((prev) => {\n const newEdits = { ...prev };\n if (newEdits[rowId]) {\n const { [columnKey]: _removed, ...rest } = newEdits[rowId]; void _removed;\n if (Object.keys(rest).length === 0) delete newEdits[rowId];\n else newEdits[rowId] = rest;\n }\n return newEdits;\n });\n }, []);\n\n const getPendingEdit = useCallback(\n (rowId: string, columnKey: string): IPendingEdit | undefined => pendingEdits[rowId]?.[columnKey],\n [pendingEdits],\n );\n\n const hasPendingEdit = useCallback(\n (rowId: string, columnKey: string): boolean => Boolean(pendingEdits[rowId]?.[columnKey]),\n [pendingEdits],\n );\n\n const clearAllPendingEdits = useCallback(() => {\n if (fieldOperationLoading) return;\n if (onCancelPendingEdits && Object.keys(pendingEdits).length > 0) onCancelPendingEdits(pendingEdits);\n setPendingEdits({});\n setSelectedCurrenciesMap({});\n setActiveInlineEdit(null);\n }, [fieldOperationLoading, onCancelPendingEdits, pendingEdits]);\n\n const scrollToCell = useCallback(\n (rowId: string, columnKey: string, rowIndex: number) => {\n setTimeout(() => {\n tableConfig?.dispatchEvent?.('SCROLL_TO_TABLE_ROW', { rowIndex });\n const colIndex = tableHeaders.findIndex((col) => col.key === columnKey);\n setTimeout(() => {\n const cellElement = document.querySelector(`[${DATA_ROW_ID_ATTR}=\"${rowId}\"] [${DATA_COLUMN_KEY_ATTR}=\"${columnKey}\"]`);\n if (cellElement) {\n cellElement.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });\n } else if (colIndex > 0) {\n const scrollContainer = document.querySelector(OS_VIEWPORT_SELECTOR);\n if (scrollContainer) {\n let scrollLeft = 0;\n for (let i = 0; i < colIndex; i++) {\n const col = tableHeaders[i];\n if (!col?.sticky) scrollLeft += col?.width || SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK;\n }\n scrollLeft = Math.max(0, scrollLeft - SCROLL_TO_CELL_LEFT_OFFSET);\n scrollContainer.scrollTo({ left: scrollLeft, behavior: 'smooth' });\n }\n }\n setActiveInlineEdit({ rowId, columnKey });\n }, 350);\n }, 100);\n },\n [tableHeaders, tableConfig],\n );\n\n const validateAllPendingEdits = useCallback(\n (editsToValidate: PendingEditsMap): { hasErrors: boolean; updatedEdits: PendingEditsMap; firstError: { rowId: string; columnKey: string } | null; errorTypes: Set<string> } => {\n let hasErrors = false;\n let firstError: { rowId: string; columnKey: string } | null = null;\n const updatedEdits: PendingEditsMap = {};\n const errorTypes = new Set<string>();\n\n Object.entries(editsToValidate).forEach(([rowId, rowEdits]) => {\n updatedEdits[rowId] = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n const column = tableHeaders.find((col) => col.key === columnKey);\n const result = validateCellValue(edit.value, column as { type?: string; is_required?: boolean });\n if (!result.isValid) {\n hasErrors = true;\n if (result.error) errorTypes.add(result.error);\n if (!firstError) firstError = { rowId, columnKey };\n updatedEdits[rowId][columnKey] = { ...edit, validationError: result.error };\n } else {\n updatedEdits[rowId][columnKey] = { ...edit, validationError: null };\n }\n });\n });\n\n return { hasErrors, updatedEdits, firstError, errorTypes };\n },\n [tableHeaders],\n );\n\n const getValidationToastMessage = useCallback((errorTypes: Set<string>) => {\n const hasRequired = errorTypes.has('Field required');\n const hasFormat = errorTypes.size > (hasRequired ? 1 : 0);\n if (hasRequired && hasFormat) return 'Missing required field(s) and invalid format detected. Please review highlighted field(s).';\n if (hasRequired) return 'Missing required field(s). Please review highlighted field(s).';\n return 'Invalid field value(s). Please review highlighted field(s).';\n }, []);\n\n const saveAllPendingEdits = useCallback(() => {\n const { hasErrors, updatedEdits, firstError, errorTypes } = validateAllPendingEdits(pendingEdits);\n if (hasErrors) {\n setPendingEdits(updatedEdits);\n tableConfig?.showNotification?.('error', getValidationToastMessage(errorTypes));\n if (firstError) {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === firstError!.rowId);\n scrollToCell(firstError!.rowId, firstError!.columnKey, rowIndex);\n }\n return;\n }\n\n const editedRows: Array<Record<string, unknown>> = [];\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const originalRow = data.find((row: Record<string, unknown>) => row.id === rowId);\n if (originalRow) {\n const updatedRow = { ...originalRow };\n const editedFields: Record<string, { value: unknown; meta?: unknown }> = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n updatedRow[columnKey] = edit.value;\n editedFields[columnKey] = { value: edit.value, meta: edit.meta };\n });\n editedRows.push({ ...updatedRow, __editedFields: editedFields });\n }\n });\n\n if (editedRows.length > 0) {\n if (onBulkRowEdit) onBulkRowEdit(editedRows);\n else if (onRowEdit) onRowEdit(null, null, null, null, null, { isBulk: true, rows: editedRows });\n }\n\n setPendingEdits({});\n setSelectedCurrenciesMap({});\n setActiveInlineEdit(null);\n }, [pendingEdits, data, onRowEdit, onBulkRowEdit, validateAllPendingEdits, getValidationToastMessage, scrollToCell, tableConfig]);\n\n const clearRowPendingEdits = useCallback(\n (rowId: string) => {\n if (fieldOperationLoading) return;\n const rowEdits = pendingEdits[rowId];\n if (rowEdits && onCancelPendingEdits) onCancelPendingEdits({ [rowId]: rowEdits });\n setPendingEdits((prev) => { const n = { ...prev }; delete n[rowId]; return n; });\n setSelectedCurrenciesMap((prev) => { const n = { ...prev }; Object.keys(n).forEach((k) => { if (k.startsWith(`${rowId}-`)) delete n[k]; }); return n; });\n setActiveInlineEdit(null);\n },\n [fieldOperationLoading, onCancelPendingEdits, pendingEdits],\n );\n\n const saveRowPendingEdits = useCallback(\n (rowId: string) => {\n const rowEdits = pendingEdits[rowId];\n if (!rowEdits || Object.keys(rowEdits).length === 0) return;\n\n const { hasErrors, updatedEdits, firstError, errorTypes } = validateAllPendingEdits({ [rowId]: rowEdits });\n if (hasErrors) {\n setPendingEdits((prev) => ({ ...prev, [rowId]: updatedEdits[rowId] }));\n tableConfig?.showNotification?.('error', getValidationToastMessage(errorTypes));\n if (firstError) {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === firstError!.rowId);\n scrollToCell(firstError!.rowId, firstError!.columnKey, rowIndex);\n }\n return;\n }\n\n const originalRow = data.find((row: Record<string, unknown>) => row.id === rowId);\n if (!originalRow) return;\n const updatedRow = { ...originalRow };\n const editedFields: Record<string, { value: unknown; meta?: unknown }> = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n updatedRow[columnKey] = edit.value;\n editedFields[columnKey] = { value: edit.value, meta: edit.meta };\n });\n\n const editedRowData = { ...updatedRow, __editedFields: editedFields };\n\n if (onBulkRowEdit) onBulkRowEdit([editedRowData]);\n else if (onRowEdit) onRowEdit(null, null, null, null, null, { isBulk: true, rows: [editedRowData] });\n\n setPendingEdits((prev) => { const n = { ...prev }; delete n[rowId]; return n; });\n setSelectedCurrenciesMap((prev) => { const n = { ...prev }; Object.keys(n).forEach((k) => { if (k.startsWith(`${rowId}-`)) delete n[k]; }); return n; });\n setActiveInlineEdit(null);\n },\n [pendingEdits, data, onRowEdit, onBulkRowEdit, validateAllPendingEdits, getValidationToastMessage, scrollToCell, tableConfig],\n );\n\n const pendingEditsCount = useMemo(() => {\n return Object.values(pendingEdits).reduce((total, rowEdits) => total + Object.keys(rowEdits).length, 0);\n }, [pendingEdits]);\n\n useEffect(() => {\n onPendingEditsChange?.(pendingEditsCount > 0, pendingEditsCount);\n }, [pendingEditsCount, onPendingEditsChange]);\n\n const pendingEditsList = useMemo(() => {\n const list: Array<{ rowId: string; columnKey: string; fieldName: string; value: unknown; originalValue: unknown; meta?: IPendingEdit['meta']; originalMeta?: IPendingEdit['originalMeta']; rowIndex: number }> = [];\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === rowId);\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n const column = tableHeaders.find((col) => col.key === columnKey);\n list.push({ rowId, columnKey, fieldName: column?.Header || column?.display_name || columnKey, value: edit.value, originalValue: edit.originalValue, meta: edit.meta, originalMeta: edit.originalMeta, rowIndex });\n });\n });\n return list;\n }, [pendingEdits, tableHeaders, data]);\n\n const rowsWithPendingEdits = useMemo(() => {\n const rowsMap = new Map<string, { rowId: string; rowIndex: number; editCount: number }>();\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === rowId);\n rowsMap.set(rowId, { rowId, rowIndex, editCount: Object.keys(rowEdits).length });\n });\n return Array.from(rowsMap.values()).sort((a, b) => a.rowIndex - b.rowIndex);\n }, [pendingEdits, data]);\n\n const openMasterDataModal = useCallback((config: IMasterDataModalConfig) => setMasterDataModalConfig(config), []);\n const closeMasterDataModal = useCallback(() => setMasterDataModalConfig(null), []);\n\n const handleMasterDataSelected = useCallback(\n (value: unknown, row?: unknown) => {\n setSelectedMasterData({ value, reference: row });\n if (masterDataModalConfig?.onSelected) masterDataModalConfig.onSelected(value, row);\n closeMasterDataModal();\n },\n [masterDataModalConfig, closeMasterDataModal],\n );\n\n const clearSelectedMasterData = useCallback(() => setSelectedMasterData(null), []);\n\n const openCurrencyDropdown = useCallback((config: ICurrencyDropdownConfig) => setCurrencyDropdownConfig(config), []);\n const closeCurrencyDropdown = useCallback(() => setCurrencyDropdownConfig(null), []);\n\n const setCurrencyForCell = useCallback((cellKey: string, currency: string) => {\n setSelectedCurrenciesMap((prev) => ({ ...prev, [cellKey]: currency }));\n }, []);\n\n const getCurrencyForCell = useCallback(\n (cellKey: string): string | undefined => selectedCurrenciesMap[cellKey],\n [selectedCurrenciesMap],\n );\n\n const fallbackHeight = useMemo(() => {\n const pxMatch = tableHeightClass.match(/h-\\[(\\d+px)\\]/);\n if (pxMatch) return pxMatch[1];\n const calcMatch = tableHeightClass.match(/h-\\[(calc\\(.+\\))\\]/);\n if (calcMatch) return calcMatch[1].replace(/([+-])/g, ' $1 ').replace(/\\s+/g, ' ');\n return undefined;\n }, [tableHeightClass]);\n\n const emptySwitchProps = {\n isEmpty,\n isFilters: isAnyFilters,\n isColumnConfigurable,\n handleOnClick: onAddColumnClick,\n emptyMessage,\n buttons,\n noDataWidget,\n };\n const translatedCreateColumnLabel = tableConfig?.t?.(CREATE_COLUMN_LABEL) ?? CREATE_COLUMN_LABEL;\n const defaultEmptyText = isAnyFilters ? 'No Results Found' : emptyMessage || 'No Data Found';\n const resolvedEmptyText = typeof defaultEmptyText === 'string' ? (tableConfig?.t?.(defaultEmptyText) ?? defaultEmptyText) : defaultEmptyText;\n\n const loaderData = { __isLoading: true };\n const cellLoaders = new Array(1).fill(loaderData);\n const tableLoaders = new Array(pageSize).fill(loaderData);\n\n const visibleColumns = useMemo(() => tableHeaders.filter((header) => Boolean(header?.visible)), [tableHeaders]);\n\n const table = useTable(\n {\n columns: optimizeTable ? visibleColumns : tableHeaders,\n data: [...data, ...(isLoading ? (data?.length ? cellLoaders : tableLoaders) : [])],\n defaultColumn: { minWidth: DEFAULT_COLUMN_MIN_WIDTH, width: DEFAULT_COLUMN_WIDTH, maxWidth: DEFAULT_COLUMN_MAX_WIDTH },\n },\n useResizeColumns,\n );\n\n const { getTableProps, getTableBodyProps, headerGroups, prepareRow, rows } = table;\n headerGroupsRef.current = headerGroups;\n\n const headerKeys = JSON.stringify(headerGroups[0]?.headers?.map((header) => (header as unknown as Record<string, unknown>)?.Header));\n useEffect(() => {\n if (setVisibleHeaders) {\n const groups = headerGroupsRef.current as Array<{ headers?: Array<Record<string, unknown>> }> | null;\n setVisibleHeaders?.(groups?.[0]?.headers?.map((header) => header?.Header as string) ?? []);\n }\n }, [headerKeys, setVisibleHeaders]);\n\n const { checkboxConfig } = useCheckbox({\n rows: rows as never,\n checkedIds: checkboxUtilities?.checkedIds as string[],\n isCheckAllDisabled: checkboxUtilities?.isCheckAllDisabled,\n selectionDisabledRowIds: checkboxUtilities?.selectionDisabledRowIds,\n rawData,\n onAllChecked: setIsAllChecked,\n setCheckedIds: checkboxUtilities?.setCheckedIds as (ids: string[]) => void,\n checkboxMetadata: checkboxUtilities?.checkboxMetadata as { checkedIds: string[]; tooltip: string; highlight: string },\n });\n\n const sensors = useSensors(\n useSensor(MouseSensor, { activationConstraint: { distance: DND_ACTIVATION_DISTANCE } }),\n useSensor(TouchSensor, { activationConstraint: { distance: DND_ACTIVATION_DISTANCE } }),\n );\n\n const dropAnimation: DropAnimation = { easing: DROP_ANIMATION_EASING, duration: DROP_ANIMATION_DURATION };\n\n function computeList() {\n if (!multipleContexts?.length || !withSortable) return rows;\n return multipleContexts.reduce((acc: Record<string, unknown>, contextKey: string) => {\n acc[contextKey] = rows.filter((e) => (e.original as Record<string, unknown>)?.type === contextKey);\n return acc;\n }, {});\n }\n computeListRef.current = computeList;\n\n const handleDragStart = (event: DragStartEvent) => {\n const { active } = event;\n setActiveItem(rows.find((item) => (item.original as Record<string, unknown>)?.id === active?.id) ?? null);\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over) return;\n if (dndSortableUtils?.checkDndDragEnd) {\n dndSortableUtils.checkDndDragEnd(active, over, sortableListByContext, (newState: Record<string, unknown>) => {\n setSortableListByContext(newState as Record<string, unknown>);\n setDndLoading(true);\n dndSortableUtils.onDragSuccess?.({\n draggedId: active.id as string,\n droppedId: over.id as string,\n draggedType: (active.data.current as Record<string, unknown>)?.type,\n droppedType: (over.data.current as Record<string, unknown>)?.type,\n updatedList: newState,\n cb: () => setDndLoading(false),\n });\n });\n }\n setActiveItem(null);\n };\n\n const handleDragCancel = () => setActiveItem(null);\n\n const toggleHeaderOption = (key: string) => {\n if (!sortConfig?.onSort && !filterConfig?.onFilter) return;\n if (showHeaderOptions === key) setShowHeaderOptions(null);\n else setShowHeaderOptions(key);\n };\n\n const toggleDataFilterModal = (col: unknown) => {\n setDataFilterColumn(col);\n setShowDataFilterModal(!showDataFilterModal);\n setShowHeaderOptions(null);\n };\n\n const handleRemoveSort = useCallback(() => {\n if (sortConfig?.onRemoveSort) sortConfig.onRemoveSort();\n else if (sortConfig?.onSort) sortConfig.onSort('', '');\n }, [sortConfig]);\n\n const toggleShowFilters = useCallback((col: unknown = null) => {\n setNewFilterColumn(col);\n setShowFilters(prev => col ? true : !prev);\n }, []);\n const toggleShowSorts = useCallback(() => setShowSorts(prev => !prev), []);\n\n const lastNonStickyColumnIndex = () => {\n const reverseHeaders = (headerGroups[0]?.headers as unknown as Array<Record<string, unknown>>)?.filter((header) => header?.visible !== false);\n for (let i = 0; i < reverseHeaders.length; i++) {\n if (reverseHeaders[i].sticky) return i - 1;\n }\n return reverseHeaders.length - 1;\n };\n\n const getSumOfNextVisibleColumnWidth = useCallback(\n (currentIndex: number) => {\n let sum = 0;\n for (let i = currentIndex + 1; i < visibleColumns.length; i++) {\n if (visibleColumns[i].visible !== false) sum += visibleColumns[i].width ?? 0;\n }\n if (rowAdditionalActions) sum += rowAdditionalActionsWidth || ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH;\n if (rowOptions) sum += hideRowOptionWidth ? 0 : ROW_OPTIONS_COLUMN_WIDTH;\n return sum;\n },\n [visibleColumns, rowAdditionalActionsWidth, hideRowOptionWidth, rowAdditionalActions, rowOptions],\n );\n\n const resolveTableView = (): ITableView => {\n const userId = tableConfig?.getUserId?.();\n return {\n ...(selectedTableView || {}),\n name: selectedTableView?.name || 'Untitled View',\n created_by: selectedTableView?.created_by || userId,\n filters: selectedTableView?.filters || filterConfig?.columnFilters,\n id: selectedTableView?.id || 'untitled-view',\n table_key: selectedTableView?.table_key || tableKey,\n columns: selectedTableView?.columns || columns?.map((column, index) => ({\n name: column.Header,\n width: column.width,\n visible: column.visible,\n sticky: column.sticky,\n order: index + 1,\n display_name: column.Header,\n sequence: index + 1,\n Header: column.Header,\n })),\n };\n };\n resolveTableViewRef.current = resolveTableView;\n\n const handleUpdateColumnWidth = (columnName: string, width: number) => {\n const updatedTableView = resolveTableView();\n setSelectedTableView({\n ...updatedTableView,\n columns: updatedTableView?.columns?.map((column) => (column.name === columnName ? { ...column, width } : column)),\n unsaved: true,\n });\n };\n\n useEffect(() => {\n if (filterConfig?.columnFilters?.length > 0) setShowFilters(true);\n const currentView = selectedTableViewRef.current;\n if (JSON.stringify(currentView?.filters || []) !== JSON.stringify(filterConfig?.columnFilters || [])) {\n const hasViewFilters = (currentView?.filters?.length ?? 0) > 0;\n const hasConfigFilters = filterConfig?.columnFilters?.length > 0;\n // Skip sync only during the initial load window where the view already has filters\n // but they haven't propagated to columnFilters yet. If the user explicitly cleared\n // filters from ActiveFilters (X button or Clear), we must propagate the empty state.\n const isClearingFilters = hasViewFilters && !hasConfigFilters && !userClearedFiltersRef.current;\n if (!isClearingFilters) {\n const updatedTableView = resolveTableViewRef.current();\n setSelectedTableView({ ...updatedTableView, filters: JSON.parse(JSON.stringify(filterConfig?.columnFilters || [])), unsaved: true });\n }\n userClearedFiltersRef.current = false;\n }\n }, [filterConfig?.columnFilters]);\n\n const handleActiveRemoveFilter = useCallback(\n (key: string) => {\n userClearedFiltersRef.current = true;\n filterConfig?.onRemoveFilter?.(key);\n },\n [filterConfig?.onRemoveFilter],\n );\n\n const handleActiveClearFilter = useCallback(() => {\n userClearedFiltersRef.current = true;\n filterConfig?.onClearFilter?.();\n }, [filterConfig?.onClearFilter]);\n\n useEffect(() => {\n if (sortConfig?.columnSort?.field) {\n setShowSorts(true);\n if (sortConfig.columnSort.order === 'asc') { setIsShowSortArrowAsc(sortConfig.columnSort.field); setIsShowSortArrowDesc(null); }\n else if (sortConfig.columnSort.order === 'desc') { setIsShowSortArrowDesc(sortConfig.columnSort.field); setIsShowSortArrowAsc(null); }\n } else { setIsShowSortArrowAsc(null); setIsShowSortArrowDesc(null); }\n }, [sortConfig?.columnSort?.field, sortConfig?.columnSort?.order]);\n\n useEffect(() => {\n setTableHeaders(mergeViewColumnsWithTableColumns(selectedTableViewRef.current?.columns || [], columns));\n }, [columns]);\n\n useEffect(() => {\n if (selectedTableView?.unsaved) tableConfigRef.current?.persistTableView?.(selectedTableView);\n }, [selectedTableView]);\n\n useEffect(() => { setSortableListByContext(computeListRef.current() as Record<string, unknown>); }, [rows.length]);\n\n useEffect(() => {\n setSelectedTableView(defaultTableView || null);\n if (defaultTableView?.columns) {\n setTableHeaders(mergeViewColumnsWithTableColumns(defaultTableView?.columns || [], columnsRef.current));\n }\n if (defaultTableView?.filters && defaultTableView.filters.length > 0 && !hasAppliedInitialFilters.current) {\n requestAnimationFrame(() => { filterConfigRef.current?.onFilter?.(defaultTableView.filters); });\n hasAppliedInitialFilters.current = true;\n } else if (defaultTableView?.filters && hasAppliedInitialFilters.current) {\n const filtersAreDifferent = JSON.stringify(defaultTableView.filters) !== JSON.stringify(filterConfigRef.current?.columnFilters);\n if (filtersAreDifferent) filterConfigRef.current?.onFilter?.(defaultTableView.filters);\n }\n }, [defaultTableView]);\n\n useEffect(() => {\n if (headerDivRef.current) {\n const resizeObserver = new ResizeObserver((entries) => setHeaderDivWidth(entries[0].contentRect.width));\n resizeObserver.observe(headerDivRef.current);\n return () => resizeObserver.disconnect();\n }\n }, []);\n\n useEffect(() => {\n if (!tableContainerRef.current) return;\n const resizeObserver = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect;\n setTableContainerSize({ width, height });\n });\n resizeObserver.observe(tableContainerRef.current);\n return () => resizeObserver.disconnect();\n }, []);\n\n const tableHeader = (\n <Head\n isResizable={isResizable}\n headerGroups={headerGroups as never}\n isCheckbox={isCheckbox}\n checkboxConfig={checkboxConfig}\n isAllChecked={isAllChecked}\n showHeaderOptions={showHeaderOptions ?? ''}\n setShowHeaderOptions={setShowHeaderOptions}\n isShowSortArrowAsc={isShowSortArrowAsc}\n isShowSortArrowDesc={isShowSortArrowDesc}\n onSort={sortConfig?.onSort as ((field: string, order?: string) => void) | undefined}\n onFilter={filterConfig?.onFilter}\n toggleHeaderOption={toggleHeaderOption}\n setIsShowSortArrowAsc={setIsShowSortArrowAsc}\n setIsShowSortArrowDesc={setIsShowSortArrowDesc}\n toggleDataFilterModal={toggleShowFilters}\n rowOptions={(Array.isArray(rowOptions) ? rowOptions : []) as unknown[]}\n isColumnConfigurable={isColumnConfigurable ?? false}\n onAddColumnClick={onAddColumnClick as (column: { id: string; key: string; [k: string]: unknown }) => void}\n onEditColumnClick={onEditColumnClick as (column: { id: string; key: string; [k: string]: unknown }) => void}\n onDeleteColumnClick={onDeleteColumnClick as (column: { id: string; key: string; [k: string]: unknown }) => void}\n tableActions={(tableActions || null)}\n isLoading={isLoading}\n rowAdditionalActions={(rowAdditionalActions ?? null) as (() => React.ReactNode) | null}\n showPendingEditsColumn={pendingEditsCount > 0}\n />\n );\n\n const tableView = (\n <>\n {dndLoading || isOverlayLoading ? (\n <div className='absolute left-0 top-0 w-full h-full z-40 flex items-center justify-center bg-neutral-100 dark:bg-black-700' />\n ) : null}\n <div\n {...getTableProps()}\n className='w-full text-sm text-left text-neutral-500 dark:text-neutral-200 h-full bg-white dark:bg-black-800'\n >\n {isEmpty ? (\n <div className='z-10'>\n {tableHeader}\n <div className='absolute w-full'>\n {tableConfig?.renderEmpty ? tableConfig.renderEmpty(emptySwitchProps) : (\n <div className='flex flex-col items-center justify-center w-full h-[12rem] text-neutral-900 dark:text-neutral-200 mt-8'>\n {noDataWidget && !isAnyFilters ? <NoDataFoundWidgets widgetType='TABLE' /> : <NoDataFound text={resolvedEmptyText} />}\n {isColumnConfigurable && !isAnyFilters ? (\n <div className='my-4'>\n <Button\n id='btn-table-shell-create-column'\n status='primary'\n appearance='ghost'\n onClick={onAddColumnClick as ((event: React.MouseEvent<HTMLButtonElement>) => void) | undefined}\n >\n <Add2Icon className='text-white dark:text-white' /> {translatedCreateColumnLabel}\n </Button>\n </div>\n ) : null}\n {!isAnyFilters &&\n buttons?.map((button, index) => (\n <Button key={`${button.label}-${index}`} status='secondary' id={getEmptyButtonId(button.label, index)} onClick={button.onClick}>\n {tableConfig?.t?.(button.label) ?? button.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>\n ) : (\n <AutoSizer\n style={{ width: '100%', height: '100%' }}\n renderProp={({ width, height }) => {\n const effectiveWidth = width > 0 ? width : tableContainerSize.width;\n const effectiveHeight = height > 0 ? height : tableContainerSize.height;\n return effectiveWidth > 0 && effectiveHeight > 0 ? (\n <Body\n {...{\n getTableBodyProps: getTableBodyProps as unknown as () => Record<string, unknown>, rows: rows as never, prepareRow: prepareRow as never, isLoading, onScroll, onScrolling, columns, width: effectiveWidth, height: effectiveHeight, withSortable,\n allowAstarSearch: searchConfig?.allowAStarSearch || false,\n }}\n />\n ) : null;\n }}\n />\n )}\n </div>\n </>\n );\n\n const tableWrapper = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <div className='h-full w-full' {...props} ref={ref}>\n {tableHeader}\n <div className='relative w-full h-full'>{props?.children}</div>\n </div>\n ));\n\n const tableBodyWrapper = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <div className='h-full w-full' {...props} ref={ref}>\n <div className='relative w-full h-full'>{props?.children}</div>\n </div>\n ));\n\n const TableHeaderComponent = useMemo(() => {\n if (tableConfig?.renderTableHeader) {\n return tableConfig.renderTableHeader({\n tableKey, search: searchConfig?.search, handleSearch: searchConfig?.handleSearch,\n toggleShowFilters, toggleShowSorts, filterCounts: filterConfig?.columnFilters?.length,\n columns, columnFilters: filterConfig?.columnFilters, setSelectedTableView, selectedTableView,\n enableTableView: headerConfig?.showTableView, modelName: modelName as string,\n enableMasterDataEnumSuggestions,\n onRemoveFilter: filterConfig?.onRemoveFilter, onClearFilter: filterConfig?.onClearFilter,\n onFilter: filterConfig?.onFilter, data: enumSuggestionsData ?? data, tableHeaders, showTableViewAsModal: headerConfig?.showTableViewAsModal,\n additionalOptions: headerConfig?.additionalOptions, inlineActions: headerConfig?.inlineActions, showFilters: headerConfig?.showFilters,\n showSorts: headerConfig?.showSorts, showSearch: headerConfig?.showSearch,\n isLoading: Boolean(headerConfig?.isLoading), setTableHeaders,\n allowAStarSearch: Boolean(searchConfig?.allowAStarSearch), withContent: !!headerConfig?.content,\n setShowFilters, sort: sortConfig?.columnSort, onSort: sortConfig?.onSort, onRemoveSort: handleRemoveSort,\n showExportButton: headerConfig?.showExportButton,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId\n });\n }\n return null;\n }, [\n tableKey, searchConfig?.search, searchConfig?.handleSearch, toggleShowFilters, toggleShowSorts,\n filterConfig?.columnFilters, columns, setSelectedTableView, selectedTableView, headerConfig,\n modelName, filterConfig?.onRemoveFilter, filterConfig?.onClearFilter, filterConfig?.onFilter,\n data, enumSuggestionsData, tableHeaders, sortConfig?.columnSort, sortConfig?.onSort, handleRemoveSort, tableConfig,\n searchConfig?.allowAStarSearch, enableMasterDataEnumSuggestions,agreementCategoryId, agreementDomainId, agreementId,modificationId,lineItemRowId,\n ]);\n\n useEffect(() => {\n if (setHeaderOnParent) setHeaderOnParent(TableHeaderComponent);\n }, [TableHeaderComponent, setHeaderOnParent]);\n\n return (\n <TableContext.Provider\n value={{\n tableWrapper, tableBodyWrapper, lastNonStickyColumnIndex, search: searchConfig?.search,\n columnFilters: filterConfig?.columnFilters, onRowClick, onSort: sortConfig?.onSort,\n onFilter: filterConfig?.onFilter, toggleShowFilters, toggleShowSorts,\n onRemoveFilter: filterConfig?.onRemoveFilter, onClearFilter: filterConfig?.onClearFilter,\n rowOptions, checkboxConfig, onResetFilter: filterConfig?.onResetFilter, isColumnConfigurable,\n onAddColumnClick, onEditColumnClick, onDeleteColumnClick, onRowTooltipClick, tooltiptext,\n cascadingTableConfig, activeInlineEdit, setActiveInlineEdit, originalsOnly,\n disableOptionsForRowIndex, getFullRowDataOnClick, selectedRowId, getSumOfNextVisibleColumnWidth,\n onRowEdit, inlineEditColumns, tableActions, dndSortableUtils, withSortable, withDraggable,\n onCascadingRowExpand, getInnerRowData, tableHeaders, maxLevel, expandedRows, setExpandedRows,\n showNewItem, rawData, dragConfig, rowWrapper, rowLinkConfig, isCellClickDisabled,\n asyncRowOptionsFilter: filterConfig?.asyncRowOptionsFilter, handleUpdateColumnWidth,\n multiSelectConfig, headerContextOptions, showHeaderContextOptions, setShowHeaderContextOptions: setShowHeaderContextOptions as ((value: string | null) => void) | undefined,\n headerDivWidth, showDataTypeIcon, rowAdditionalActions, hoverConfig, rowAdditionalActionsWidth,\n cellEditing, cellEditingValue, openMasterDataModal, closeMasterDataModal, selectedMasterData,\n clearSelectedMasterData, allowInlineEdit, openCurrencyDropdown, closeCurrencyDropdown,\n currencyDropdownConfig, selectedCurrenciesMap, setCurrencyForCell, getCurrencyForCell,\n pendingEdits, addPendingEdit, removePendingEdit, getPendingEdit, hasPendingEdit,\n clearAllPendingEdits, saveAllPendingEdits, clearRowPendingEdits, saveRowPendingEdits,\n pendingEditsCount, scrollToCell, onFieldOperationFlow, fieldOperationLoading, validateAllPendingEdits,\n }}\n >\n {showHeader ? (\n <div\n ref={headerDivRef}\n className={`mb-2 flex w-full min-w-0 gap-2 dark:bg-black-800 ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'flex-col items-stretch' : 'flex-row items-center'\n }`}\n >\n <div\n className={`flex items-center gap-x-2 gap-y-1 ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full flex-wrap' : ''\n } ${headerConfig?.content ? 'min-w-0 flex-1' : 'shrink-0'}`}\n >\n {headerConfig?.content ? (\n <div className={`min-w-0 ${headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full' : 'flex-1'}`}>\n {headerConfig.content}\n </div>\n ) : null}\n {showRecordCount ? (\n <div className='flex items-center gap-1.5 shrink-0'>\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='16'\n height='16'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n className='text-neutral-500 dark:text-neutral-400 flex-shrink-0'\n aria-hidden\n >\n <ellipse cx='12' cy='5' rx='9' ry='3' />\n <path d='M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5' />\n <path d='M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9' />\n <path d='M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4' />\n </svg>\n <Typography size='small' variant='semibold' appearance='title'>\n {(totalItems ?? data.length).toLocaleString()}\n </Typography>\n <Typography size='small' variant='regular' appearance='subtitle'>\n total records\n </Typography>\n </div>\n ) : headerConfig?.preContent ? (\n <div className='flex min-w-0 shrink-0 justify-start items-center'>{headerConfig.preContent}</div>\n ) : null}\n </div>\n <div\n className={`flex min-w-0 items-center justify-end ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full' : headerConfig?.content ? 'shrink-0' : 'flex-1'\n } ${headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? 'flex-col' : 'flex-row'} ${\n headerConfig?.postContent ? 'gap-2' : ''\n }`}\n >\n {showRecordCount && headerConfig?.preContent ? (\n <div className='flex w-full justify-start items-center'>{headerConfig.preContent}</div>\n ) : null}\n <div\n className={`flex justify-end items-center min-w-0 ${\n headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? 'w-full' : headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full' : ''\n }`}\n >\n {TableHeaderComponent}\n </div>\n {headerConfig?.postContent ? (\n <div className={`flex justify-end items-center ${headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? 'w-full' : ''}`}>\n {headerConfig.postContent}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {headerConfig?.showDivider ? <div className='border-b pb-2 w-full dark:bg-black-800' /> : null}\n {showFilters || showSorts ? (\n <div className='flex justify-between items-center pb-4 dark:bg-black-800'>\n <div className='flex gap-2 items-center'>\n {showSorts && tableConfig?.renderSortItem ? (\n tableConfig.renderSortItem({ sort: sortConfig?.columnSort, onRemoveSort: handleRemoveSort, onSort: sortConfig?.onSort, tableHeaders, data })\n ) : null}\n {showFilters && showSorts && sortConfig?.columnSort?.field !== '' ? (\n <div className='h-8 w-[1px] flex-shrink-0 bg-neutral-200' />\n ) : null}\n {showFilters ? (\n <div className='flex gap-2 items-center'>\n {(isFilters || filterConfig?.onResetFilter) && tableConfig?.renderActiveFilters && (\n tableConfig.renderActiveFilters({\n filters: filterConfig?.columnFilters, onRemoveFilter: handleActiveRemoveFilter,\n onClearFilter: handleActiveClearFilter, onResetFilter: filterConfig?.onResetFilter,\n onFilter: filterConfig?.onFilter, tableHeaders, columnFilters: filterConfig?.columnFilters,\n modelName, enableMasterDataEnumSuggestions, noSpacing: true, notionStyle: filterConfig?.notionStyle, context: filterConfig?.context, data: enumSuggestionsData ?? data,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId\n })\n )}\n {tableConfig?.renderFilterButtons && (\n tableConfig.renderFilterButtons({\n onClearFilter: filterConfig?.onClearFilter, onClose: toggleDataFilterModal,\n modelName, enableMasterDataEnumSuggestions, defaultFilterColumn: newFilterColumn, resetDefaultFilterColumn: () => setNewFilterColumn(null),\n column: dataFilterColumn, onFilter: filterConfig?.onFilter, tableHeaders,\n columnFilters: filterConfig?.columnFilters, data: enumSuggestionsData ?? data, notionStyle: filterConfig?.notionStyle,\n context: filterConfig?.context,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n })\n )}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {floatingBarConfig && Object.keys(floatingBarConfig).length ? <FloatingBar {...floatingBarConfig} /> : null}\n {!showHeader && showRecordCount ? (\n <div className='flex items-center gap-1.5 mb-2'>\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='16'\n height='16'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n className='text-neutral-500 dark:text-neutral-400 flex-shrink-0'\n aria-hidden\n >\n <ellipse cx='12' cy='5' rx='9' ry='3' />\n <path d='M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5' />\n <path d='M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9' />\n <path d='M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4' />\n </svg>\n <Typography size='small' variant='semibold' appearance='title'>\n {(totalItems ?? data.length).toLocaleString()}\n </Typography>\n <Typography size='small' variant='regular' appearance='subtitle'>\n total records\n </Typography>\n </div>\n ) : !showHeader && headerConfig?.preContent ? (\n <div className='flex items-center mb-2'>{headerConfig.preContent}</div>\n ) : null}\n <div\n ref={tableContainerRef}\n className={`w-full ${paginationConfig ? `h-auto` : tableHeightClass} rounded-lg relative border overflow-x-hidden`}\n style={{\n ...(paginationConfig\n ? { height: data?.length > 0 ? `${(data?.length + 1) * rowSlotHeight + 4}px` : '350px' }\n : { height: fallbackHeight }),\n ...style,\n }}\n >\n {enableRootDrag ? (\n tableView\n ) : (\n <DndContext sensors={sensors} onDragEnd={handleDragEnd} onDragStart={handleDragStart} onDragCancel={handleDragCancel} collisionDetection={closestCorners}>\n {tableView}\n {activeItem\n ? createPortal(\n <DragOverlay adjustScale={true} dropAnimation={dropAnimation}>\n <table {...getTableProps()} className='w-full text-sm text-left text-neutral-500 dark:text-neutral-200 bg-white dark:bg-black-700 table-auto border-collapse'>\n <tbody {...getTableBodyProps()} className='bg-transparent divide-y divide-neutral-200'>\n {void prepareRow(activeItem)}\n <Row key={(activeItem.original as Record<string, unknown>).id as string} row={activeItem as never} index={rows?.findIndex((item) => item.id === (activeItem.original as Record<string, unknown>).id)} />\n </tbody>\n </table>\n </DragOverlay>,\n document.getElementById('full-screen-container') || document.body,\n )\n : null}\n </DndContext>\n )}\n </div>\n {paginationConfig && tableConfig?.renderPagination ? tableConfig.renderPagination(paginationConfig) : null}\n\n {tableConfig?.renderMasterDataModal && tableConfig.renderMasterDataModal({\n isVisible: !!masterDataModalConfig, onSelected: handleMasterDataSelected, onClose: closeMasterDataModal,\n masterDataColumnName: masterDataModalConfig?.masterDataColumnName, masterDataFilters: masterDataModalConfig?.masterDataFilters,\n masterDataName: masterDataModalConfig?.masterDataName, masterDataId: masterDataModalConfig?.masterDataName, showFilters: true,\n })}\n\n <CurrencyDropdownPortal config={currencyDropdownConfig} onClose={closeCurrencyDropdown} />\n\n <PendingEditsFloatingBar\n pendingEditsCount={pendingEditsCount}\n pendingEditsList={pendingEditsList}\n rowsWithPendingEdits={rowsWithPendingEdits}\n fieldOperationLoading={fieldOperationLoading}\n onClearAll={clearAllPendingEdits}\n onSaveAll={saveAllPendingEdits}\n onScrollToCell={scrollToCell}\n />\n </TableContext.Provider>\n );\n },\n);\n"],"names":["AutoSizer","_AutoSizer","CREATE_COLUMN_LABEL","getEmptyButtonId","label","index","InfiniteTable","React","tableKey","searchConfig","filterConfig","sortConfig","headerConfig","hoverConfig","columns","modelName","enableMasterDataEnumSuggestions","agreementCategoryId","agreementDomainId","agreementId","modificationId","lineItemRowId","enumSuggestionsData","data","onRowClick","showHeader","tableActions","rowOptions","hideRowOptionWidth","checkboxUtilities","isLoading","onScroll","onScrolling","isColumnConfigurable","onAddColumnClick","emptyMessage","noDataWidget","buttons","onEditColumnClick","onDeleteColumnClick","onRowTooltipClick","tooltiptext","cascadingTableConfig","originalsOnly","disableOptionsForRowIndex","tableHeightClass","getFullRowDataOnClick","selectedRowId","onRowEdit","onBulkRowEdit","inlineEditColumns","isResizable","paginationConfig","dndSortableUtils","multipleContexts","withSortable","withDraggable","enableRootDrag","pageSize","DEFAULT_PAGE_SIZE","onCascadingRowExpand","totalItems","showRecordCount","getInnerRowData","maxLevel","expandedRows","setExpandedRows","showNewItem","rawData","dragConfig","isOverlayLoading","style","floatingBarConfig","rowWrapper","rowLinkConfig","isCellClickDisabled","setHeaderOnParent","optimizeTable","multiSelectConfig","headerContextOptions","showHeaderContextOptions","setShowHeaderContextOptions","showDataTypeIcon","rowAdditionalActions","rowAdditionalActionsWidth","setVisibleHeaders","cellEditing","cellEditingValue","allowInlineEdit","onFieldOperationFlow","fieldOperationLoading","onTableActionsReady","onPendingEditsChange","onCancelPendingEdits","tableConfig","useTableConfig","rowSlotHeight","getRowSlotHeight","useRowHeight","isSearch","isFilters","isAnyFilters","isCheckbox","defaultTableView","selectedTableView","setSelectedTableView","useState","showFilters","setShowFilters","showSorts","setShowSorts","newFilterColumn","setNewFilterColumn","tableHeaders","setTableHeaders","isEmpty","showHeaderOptions","setShowHeaderOptions","showDataFilterModal","setShowDataFilterModal","dataFilterColumn","setDataFilterColumn","isAllChecked","setIsAllChecked","isShowSortArrowAsc","setIsShowSortArrowAsc","isShowSortArrowDesc","setIsShowSortArrowDesc","sortableListByContext","setSortableListByContext","activeItem","setActiveItem","dndLoading","setDndLoading","headerDivWidth","setHeaderDivWidth","headerDivRef","useRef","tableContainerRef","tableContainerSize","setTableContainerSize","activeInlineEdit","setActiveInlineEdit","masterDataModalConfig","setMasterDataModalConfig","selectedMasterData","setSelectedMasterData","currencyDropdownConfig","setCurrencyDropdownConfig","selectedCurrenciesMap","setSelectedCurrenciesMap","hasAppliedInitialFilters","userClearedFiltersRef","selectedTableViewRef","tableConfigRef","columnsRef","filterConfigRef","headerGroupsRef","resolveTableViewRef","computeListRef","pendingEdits","setPendingEdits","addPendingEdit","useCallback","rowId","columnKey","edit","prev","existingEdit","resolvedValidationError","column","col","result","validateCellValue","hasPendingEdits","rowEdits","useEffect","removePendingEdit","newEdits","_removed","rest","getPendingEdit","hasPendingEdit","clearAllPendingEdits","scrollToCell","rowIndex","colIndex","cellElement","DATA_ROW_ID_ATTR","DATA_COLUMN_KEY_ATTR","scrollContainer","OS_VIEWPORT_SELECTOR","scrollLeft","i","SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK","SCROLL_TO_CELL_LEFT_OFFSET","validateAllPendingEdits","editsToValidate","hasErrors","firstError","updatedEdits","errorTypes","getValidationToastMessage","hasRequired","hasFormat","saveAllPendingEdits","row","editedRows","originalRow","updatedRow","editedFields","clearRowPendingEdits","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 { mergeViewColumnsWithTableColumns } from '../../../utils/table';\nimport Button from '../../button/Button';\nimport { FloatingBar } from '../../floating-bar/FloatingBar';\nimport { NoDataFound, NoDataFoundWidgets } from '../empty-state';\nimport { Typography } from '../typography/Typography';\nimport { DndContext, DragOverlay, type DragEndEvent, type DragStartEvent, type DropAnimation, MouseSensor, TouchSensor, closestCorners, useSensor, useSensors } from '@dnd-kit/core';\nimport React, { forwardRef, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { AutoSizer as _AutoSizer } from 'react-virtualized-auto-sizer';\nimport { createPortal } from 'react-dom';\nimport type { Row as ReactTableRow } from 'react-table';\nimport { useResizeColumns, useTable } from 'react-table';\n\nimport { Body } from './body';\nimport { validateCellValue } from './validateCell';\nimport { Row } from './body/rows/row';\nimport { TableContext } from './context';\nimport { CurrencyDropdownPortal } from './CurrencyDropdownPortal';\nimport { Head } from './head';\nimport { PendingEditsFloatingBar } from './PendingEditsFloatingBar';\nimport type { ICurrencyDropdownConfig, IColumn, IMasterDataModalConfig, ITableProps, ITableView, PendingEditsMap, IPendingEdit } from './types';\nimport { Add2Icon } from '../../icon';\nimport {\n TOOLBAR_FIRST_BREAKPOINT,\n TOOLBAR_SECOND_BREAKPOINT,\n DEFAULT_PAGE_SIZE,\n DEFAULT_COLUMN_MIN_WIDTH,\n DEFAULT_COLUMN_WIDTH,\n DEFAULT_COLUMN_MAX_WIDTH,\n DND_ACTIVATION_DISTANCE,\n DROP_ANIMATION_EASING,\n DROP_ANIMATION_DURATION,\n SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK,\n SCROLL_TO_CELL_LEFT_OFFSET,\n ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH,\n ROW_OPTIONS_COLUMN_WIDTH,\n OS_VIEWPORT_SELECTOR,\n DATA_ROW_ID_ATTR,\n DATA_COLUMN_KEY_ATTR,\n} from './constants';\nimport { getRowSlotHeight, useRowHeight } from './useRowHeight';\n\nconst AutoSizer = _AutoSizer as unknown as React.ComponentType<{\n renderProp: (size: { width: number; height: number }) => React.ReactNode;\n style?: React.CSSProperties;\n}>;\n\nconst CREATE_COLUMN_LABEL = 'Create Column';\n\nconst getEmptyButtonId = (label: string, index: number): string => {\n const slug = label.toLowerCase().trim().replace(/\\s+/g, '-').replace(/[^a-z0-9-_]/g, '');\n return `button-admin-${slug || index}`;\n};\n\nexport const InfiniteTable = React.memo(\n ({\n tableKey,\n searchConfig = { search: '', handleSearch: () => null, allowAStarSearch: false },\n filterConfig = {\n columnFilters: [],\n onFilter: () => null,\n onRemoveFilter: () => null,\n onClearFilter: () => null,\n onResetFilter: () => Promise.resolve({}),\n asyncRowOptionsFilter: () => Promise.resolve({}),\n },\n sortConfig = { onSort: () => null, columnSort: { field: '', order: '' }, onRemoveSort: () => null },\n headerConfig = {\n showExportButton: null,\n showFilters: true,\n showSorts: true,\n showSearch: true,\n showTableView: true,\n showTableViewAsModal: false,\n content: null,\n postContent: null,\n preContent: null,\n isLoading: false,\n showDivider: false,\n },\n hoverConfig = null,\n columns,\n modelName,\n enableMasterDataEnumSuggestions = false,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n enumSuggestionsData,\n data = [],\n onRowClick,\n showHeader,\n tableActions,\n rowOptions,\n hideRowOptionWidth,\n checkboxUtilities,\n isLoading = false,\n headerLoading = false,\n onScroll,\n onScrolling,\n isColumnConfigurable,\n onAddColumnClick,\n emptyMessage,\n noDataWidget,\n buttons,\n onEditColumnClick,\n onDeleteColumnClick,\n onRowTooltipClick,\n tooltiptext,\n cascadingTableConfig,\n originalsOnly,\n disableOptionsForRowIndex,\n tableHeightClass = 'h-[calc(100vh-220px)]',\n getFullRowDataOnClick,\n selectedRowId = null,\n onRowEdit,\n onBulkRowEdit,\n inlineEditColumns,\n isResizable = true,\n paginationConfig,\n dndSortableUtils,\n multipleContexts,\n withSortable,\n withDraggable,\n enableRootDrag,\n pageSize = DEFAULT_PAGE_SIZE,\n onCascadingRowExpand,\n totalItems,\n showRecordCount = false,\n getInnerRowData,\n maxLevel,\n expandedRows = {},\n setExpandedRows,\n showNewItem,\n rawData,\n dragConfig,\n isOverlayLoading,\n style = {},\n floatingBarConfig,\n rowWrapper,\n rowLinkConfig,\n isCellClickDisabled,\n setHeaderOnParent,\n optimizeTable = false,\n multiSelectConfig,\n headerContextOptions,\n showHeaderContextOptions,\n setShowHeaderContextOptions,\n showDataTypeIcon = false,\n rowAdditionalActions,\n rowAdditionalActionsWidth,\n setVisibleHeaders,\n cellEditing = null,\n cellEditingValue = null,\n allowInlineEdit = false,\n onFieldOperationFlow,\n fieldOperationLoading = null,\n onTableActionsReady,\n onPendingEditsChange,\n onCancelPendingEdits,\n }: ITableProps) => {\n const tableConfig = useTableConfig();\n\n // Row slot height tracks the `h-row` viewport clamp so the paginated\n // container sizes to the rows the virtualized body actually renders.\n const rowSlotHeight = getRowSlotHeight(useRowHeight());\n\n const isSearch = Boolean(searchConfig?.search);\n\n const isFilters = filterConfig?.columnFilters?.length > 0;\n const isAnyFilters = isSearch || isFilters;\n\n const isCheckbox = Boolean(checkboxUtilities);\n\n const defaultTableView = tableConfig?.getTableView?.(tableKey as string) ?? null;\n const [selectedTableView, setSelectedTableView] = useState<ITableView | null>(defaultTableView || null);\n const [showFilters, setShowFilters] = useState(false);\n const [showSorts, setShowSorts] = useState(false);\n const [newFilterColumn, setNewFilterColumn] = useState<unknown>(null);\n const [tableHeaders, setTableHeaders] = useState<IColumn[]>(columns);\n const isEmpty = (data.length === 0 || !tableHeaders.length) && !isLoading;\n const [showHeaderOptions, setShowHeaderOptions] = useState<string | null>(null);\n const [showDataFilterModal, setShowDataFilterModal] = useState<boolean>(false);\n const [dataFilterColumn, setDataFilterColumn] = useState<unknown>(null);\n const [isAllChecked, setIsAllChecked] = useState(false);\n const [isShowSortArrowAsc, setIsShowSortArrowAsc] = useState<string | null>(null);\n const [isShowSortArrowDesc, setIsShowSortArrowDesc] = useState<string | null>(null);\n const [sortableListByContext, setSortableListByContext] = useState<Record<string, unknown>>({});\n const [activeItem, setActiveItem] = useState<ReactTableRow<object> | null>(null);\n const [dndLoading, setDndLoading] = useState<boolean>(false);\n const [headerDivWidth, setHeaderDivWidth] = useState(0);\n const headerDivRef = useRef<HTMLDivElement>(null);\n const tableContainerRef = useRef<HTMLDivElement>(null);\n const [tableContainerSize, setTableContainerSize] = useState({ width: 0, height: 0 });\n const [activeInlineEdit, setActiveInlineEdit] = useState<{ rowId: string; columnKey: string } | null>(null);\n const [masterDataModalConfig, setMasterDataModalConfig] = useState<IMasterDataModalConfig | null>(null);\n const [selectedMasterData, setSelectedMasterData] = useState<{ value: unknown; reference: unknown } | null>(null);\n const [currencyDropdownConfig, setCurrencyDropdownConfig] = useState<ICurrencyDropdownConfig | null>(null);\n const [selectedCurrenciesMap, setSelectedCurrenciesMap] = useState<Record<string, string>>({});\n const hasAppliedInitialFilters = useRef(false);\n const userClearedFiltersRef = useRef(false);\n\n const selectedTableViewRef = useRef(selectedTableView);\n selectedTableViewRef.current = selectedTableView;\n const tableConfigRef = useRef(tableConfig);\n tableConfigRef.current = tableConfig;\n const columnsRef = useRef(columns);\n columnsRef.current = columns;\n const filterConfigRef = useRef(filterConfig);\n filterConfigRef.current = filterConfig;\n const headerGroupsRef = useRef<unknown[] | null>(null);\n const resolveTableViewRef = useRef<() => ITableView>(() => ({}) as ITableView);\n const computeListRef = useRef<() => unknown>(() => ({}));\n\n const [pendingEdits, setPendingEdits] = useState<PendingEditsMap>({});\n\n const addPendingEdit = useCallback(\n (rowId: string, columnKey: string, edit: IPendingEdit) => {\n setPendingEdits((prev) => {\n const existingEdit = prev[rowId]?.[columnKey];\n let resolvedValidationError: string | null | undefined = edit.validationError;\n if (resolvedValidationError === undefined) {\n const column = tableHeaders.find((col) => col.key === columnKey);\n if (column) {\n const result = validateCellValue(edit.value, column as { type?: string; is_required?: boolean });\n resolvedValidationError = !result.isValid ? (result.error || 'Invalid') : null;\n } else {\n resolvedValidationError = existingEdit?.validationError ?? null;\n }\n }\n return { ...prev, [rowId]: { ...(prev[rowId] || {}), [columnKey]: { ...edit, validationError: resolvedValidationError ?? null } } };\n });\n },\n [tableHeaders],\n );\n\n const hasPendingEdits = useCallback(() => {\n return Object.values(pendingEdits).some((rowEdits) => Object.keys(rowEdits).length > 0);\n }, [pendingEdits]);\n\n useEffect(() => {\n if (onTableActionsReady) onTableActionsReady({ addPendingEdit: addPendingEdit as (rowId: string, columnKey: string, edit: { value: unknown; originalValue?: unknown; meta?: unknown }) => void, hasPendingEdits });\n }, [onTableActionsReady, addPendingEdit, hasPendingEdits]);\n\n const removePendingEdit = useCallback((rowId: string, columnKey: string) => {\n setPendingEdits((prev) => {\n const newEdits = { ...prev };\n if (newEdits[rowId]) {\n const { [columnKey]: _removed, ...rest } = newEdits[rowId]; void _removed;\n if (Object.keys(rest).length === 0) delete newEdits[rowId];\n else newEdits[rowId] = rest;\n }\n return newEdits;\n });\n }, []);\n\n const getPendingEdit = useCallback(\n (rowId: string, columnKey: string): IPendingEdit | undefined => pendingEdits[rowId]?.[columnKey],\n [pendingEdits],\n );\n\n const hasPendingEdit = useCallback(\n (rowId: string, columnKey: string): boolean => Boolean(pendingEdits[rowId]?.[columnKey]),\n [pendingEdits],\n );\n\n const clearAllPendingEdits = useCallback(() => {\n if (fieldOperationLoading) return;\n if (onCancelPendingEdits && Object.keys(pendingEdits).length > 0) onCancelPendingEdits(pendingEdits);\n setPendingEdits({});\n setSelectedCurrenciesMap({});\n setActiveInlineEdit(null);\n }, [fieldOperationLoading, onCancelPendingEdits, pendingEdits]);\n\n const scrollToCell = useCallback(\n (rowId: string, columnKey: string, rowIndex: number) => {\n setTimeout(() => {\n tableConfig?.dispatchEvent?.('SCROLL_TO_TABLE_ROW', { rowIndex });\n const colIndex = tableHeaders.findIndex((col) => col.key === columnKey);\n setTimeout(() => {\n const cellElement = document.querySelector(`[${DATA_ROW_ID_ATTR}=\"${rowId}\"] [${DATA_COLUMN_KEY_ATTR}=\"${columnKey}\"]`);\n if (cellElement) {\n cellElement.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' });\n } else if (colIndex > 0) {\n const scrollContainer = document.querySelector(OS_VIEWPORT_SELECTOR);\n if (scrollContainer) {\n let scrollLeft = 0;\n for (let i = 0; i < colIndex; i++) {\n const col = tableHeaders[i];\n if (!col?.sticky) scrollLeft += col?.width || SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK;\n }\n scrollLeft = Math.max(0, scrollLeft - SCROLL_TO_CELL_LEFT_OFFSET);\n scrollContainer.scrollTo({ left: scrollLeft, behavior: 'smooth' });\n }\n }\n setActiveInlineEdit({ rowId, columnKey });\n }, 350);\n }, 100);\n },\n [tableHeaders, tableConfig],\n );\n\n const validateAllPendingEdits = useCallback(\n (editsToValidate: PendingEditsMap): { hasErrors: boolean; updatedEdits: PendingEditsMap; firstError: { rowId: string; columnKey: string } | null; errorTypes: Set<string> } => {\n let hasErrors = false;\n let firstError: { rowId: string; columnKey: string } | null = null;\n const updatedEdits: PendingEditsMap = {};\n const errorTypes = new Set<string>();\n\n Object.entries(editsToValidate).forEach(([rowId, rowEdits]) => {\n updatedEdits[rowId] = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n const column = tableHeaders.find((col) => col.key === columnKey);\n const result = validateCellValue(edit.value, column as { type?: string; is_required?: boolean });\n if (!result.isValid) {\n hasErrors = true;\n if (result.error) errorTypes.add(result.error);\n if (!firstError) firstError = { rowId, columnKey };\n updatedEdits[rowId][columnKey] = { ...edit, validationError: result.error };\n } else {\n updatedEdits[rowId][columnKey] = { ...edit, validationError: null };\n }\n });\n });\n\n return { hasErrors, updatedEdits, firstError, errorTypes };\n },\n [tableHeaders],\n );\n\n const getValidationToastMessage = useCallback((errorTypes: Set<string>) => {\n const hasRequired = errorTypes.has('Field required');\n const hasFormat = errorTypes.size > (hasRequired ? 1 : 0);\n if (hasRequired && hasFormat) return 'Missing required field(s) and invalid format detected. Please review highlighted field(s).';\n if (hasRequired) return 'Missing required field(s). Please review highlighted field(s).';\n return 'Invalid field value(s). Please review highlighted field(s).';\n }, []);\n\n const saveAllPendingEdits = useCallback(() => {\n const { hasErrors, updatedEdits, firstError, errorTypes } = validateAllPendingEdits(pendingEdits);\n if (hasErrors) {\n setPendingEdits(updatedEdits);\n tableConfig?.showNotification?.('error', getValidationToastMessage(errorTypes));\n if (firstError) {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === firstError!.rowId);\n scrollToCell(firstError!.rowId, firstError!.columnKey, rowIndex);\n }\n return;\n }\n\n const editedRows: Array<Record<string, unknown>> = [];\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const originalRow = data.find((row: Record<string, unknown>) => row.id === rowId);\n if (originalRow) {\n const updatedRow = { ...originalRow };\n const editedFields: Record<string, { value: unknown; meta?: unknown }> = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n updatedRow[columnKey] = edit.value;\n editedFields[columnKey] = { value: edit.value, meta: edit.meta };\n });\n editedRows.push({ ...updatedRow, __editedFields: editedFields });\n }\n });\n\n if (editedRows.length > 0) {\n if (onBulkRowEdit) onBulkRowEdit(editedRows);\n else if (onRowEdit) onRowEdit(null, null, null, null, null, { isBulk: true, rows: editedRows });\n }\n\n setPendingEdits({});\n setSelectedCurrenciesMap({});\n setActiveInlineEdit(null);\n }, [pendingEdits, data, onRowEdit, onBulkRowEdit, validateAllPendingEdits, getValidationToastMessage, scrollToCell, tableConfig]);\n\n const clearRowPendingEdits = useCallback(\n (rowId: string) => {\n if (fieldOperationLoading) return;\n const rowEdits = pendingEdits[rowId];\n if (rowEdits && onCancelPendingEdits) onCancelPendingEdits({ [rowId]: rowEdits });\n setPendingEdits((prev) => { const n = { ...prev }; delete n[rowId]; return n; });\n setSelectedCurrenciesMap((prev) => { const n = { ...prev }; Object.keys(n).forEach((k) => { if (k.startsWith(`${rowId}-`)) delete n[k]; }); return n; });\n setActiveInlineEdit(null);\n },\n [fieldOperationLoading, onCancelPendingEdits, pendingEdits],\n );\n\n const saveRowPendingEdits = useCallback(\n (rowId: string) => {\n const rowEdits = pendingEdits[rowId];\n if (!rowEdits || Object.keys(rowEdits).length === 0) return;\n\n const { hasErrors, updatedEdits, firstError, errorTypes } = validateAllPendingEdits({ [rowId]: rowEdits });\n if (hasErrors) {\n setPendingEdits((prev) => ({ ...prev, [rowId]: updatedEdits[rowId] }));\n tableConfig?.showNotification?.('error', getValidationToastMessage(errorTypes));\n if (firstError) {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === firstError!.rowId);\n scrollToCell(firstError!.rowId, firstError!.columnKey, rowIndex);\n }\n return;\n }\n\n const originalRow = data.find((row: Record<string, unknown>) => row.id === rowId);\n if (!originalRow) return;\n const updatedRow = { ...originalRow };\n const editedFields: Record<string, { value: unknown; meta?: unknown }> = {};\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n updatedRow[columnKey] = edit.value;\n editedFields[columnKey] = { value: edit.value, meta: edit.meta };\n });\n\n const editedRowData = { ...updatedRow, __editedFields: editedFields };\n\n if (onBulkRowEdit) onBulkRowEdit([editedRowData]);\n else if (onRowEdit) onRowEdit(null, null, null, null, null, { isBulk: true, rows: [editedRowData] });\n\n setPendingEdits((prev) => { const n = { ...prev }; delete n[rowId]; return n; });\n setSelectedCurrenciesMap((prev) => { const n = { ...prev }; Object.keys(n).forEach((k) => { if (k.startsWith(`${rowId}-`)) delete n[k]; }); return n; });\n setActiveInlineEdit(null);\n },\n [pendingEdits, data, onRowEdit, onBulkRowEdit, validateAllPendingEdits, getValidationToastMessage, scrollToCell, tableConfig],\n );\n\n const pendingEditsCount = useMemo(() => {\n return Object.values(pendingEdits).reduce((total, rowEdits) => total + Object.keys(rowEdits).length, 0);\n }, [pendingEdits]);\n\n useEffect(() => {\n onPendingEditsChange?.(pendingEditsCount > 0, pendingEditsCount);\n }, [pendingEditsCount, onPendingEditsChange]);\n\n const pendingEditsList = useMemo(() => {\n const list: Array<{ rowId: string; columnKey: string; fieldName: string; value: unknown; originalValue: unknown; meta?: IPendingEdit['meta']; originalMeta?: IPendingEdit['originalMeta']; rowIndex: number }> = [];\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === rowId);\n Object.entries(rowEdits).forEach(([columnKey, edit]) => {\n const column = tableHeaders.find((col) => col.key === columnKey);\n list.push({ rowId, columnKey, fieldName: column?.Header || column?.display_name || columnKey, value: edit.value, originalValue: edit.originalValue, meta: edit.meta, originalMeta: edit.originalMeta, rowIndex });\n });\n });\n return list;\n }, [pendingEdits, tableHeaders, data]);\n\n const rowsWithPendingEdits = useMemo(() => {\n const rowsMap = new Map<string, { rowId: string; rowIndex: number; editCount: number }>();\n Object.entries(pendingEdits).forEach(([rowId, rowEdits]) => {\n const rowIndex = data.findIndex((row: Record<string, unknown>) => row.id === rowId);\n rowsMap.set(rowId, { rowId, rowIndex, editCount: Object.keys(rowEdits).length });\n });\n return Array.from(rowsMap.values()).sort((a, b) => a.rowIndex - b.rowIndex);\n }, [pendingEdits, data]);\n\n const openMasterDataModal = useCallback((config: IMasterDataModalConfig) => setMasterDataModalConfig(config), []);\n const closeMasterDataModal = useCallback(() => setMasterDataModalConfig(null), []);\n\n const handleMasterDataSelected = useCallback(\n (value: unknown, row?: unknown) => {\n setSelectedMasterData({ value, reference: row });\n if (masterDataModalConfig?.onSelected) masterDataModalConfig.onSelected(value, row);\n closeMasterDataModal();\n },\n [masterDataModalConfig, closeMasterDataModal],\n );\n\n const clearSelectedMasterData = useCallback(() => setSelectedMasterData(null), []);\n\n const openCurrencyDropdown = useCallback((config: ICurrencyDropdownConfig) => setCurrencyDropdownConfig(config), []);\n const closeCurrencyDropdown = useCallback(() => setCurrencyDropdownConfig(null), []);\n\n const setCurrencyForCell = useCallback((cellKey: string, currency: string) => {\n setSelectedCurrenciesMap((prev) => ({ ...prev, [cellKey]: currency }));\n }, []);\n\n const getCurrencyForCell = useCallback(\n (cellKey: string): string | undefined => selectedCurrenciesMap[cellKey],\n [selectedCurrenciesMap],\n );\n\n const fallbackHeight = useMemo(() => {\n const pxMatch = tableHeightClass.match(/h-\\[(\\d+px)\\]/);\n if (pxMatch) return pxMatch[1];\n const calcMatch = tableHeightClass.match(/h-\\[(calc\\(.+\\))\\]/);\n if (calcMatch) return calcMatch[1].replace(/([+-])/g, ' $1 ').replace(/\\s+/g, ' ');\n return undefined;\n }, [tableHeightClass]);\n\n const emptySwitchProps = {\n isEmpty,\n isFilters: isAnyFilters,\n isColumnConfigurable,\n handleOnClick: onAddColumnClick,\n emptyMessage,\n buttons,\n noDataWidget,\n };\n const translatedCreateColumnLabel = tableConfig?.t?.(CREATE_COLUMN_LABEL) ?? CREATE_COLUMN_LABEL;\n const defaultEmptyText = isAnyFilters ? 'No Results Found' : emptyMessage || 'No Data Found';\n const resolvedEmptyText = typeof defaultEmptyText === 'string' ? (tableConfig?.t?.(defaultEmptyText) ?? defaultEmptyText) : defaultEmptyText;\n\n const loaderData = { __isLoading: true };\n const cellLoaders = new Array(1).fill(loaderData);\n const tableLoaders = new Array(pageSize).fill(loaderData);\n\n const visibleColumns = useMemo(() => tableHeaders.filter((header) => Boolean(header?.visible)), [tableHeaders]);\n\n const table = useTable(\n {\n columns: optimizeTable ? visibleColumns : tableHeaders,\n data: [...data, ...(isLoading ? (data?.length ? cellLoaders : tableLoaders) : [])],\n defaultColumn: { minWidth: DEFAULT_COLUMN_MIN_WIDTH, width: DEFAULT_COLUMN_WIDTH, maxWidth: DEFAULT_COLUMN_MAX_WIDTH },\n },\n useResizeColumns,\n );\n\n const { getTableProps, getTableBodyProps, headerGroups, prepareRow, rows } = table;\n headerGroupsRef.current = headerGroups;\n\n const headerKeys = JSON.stringify(headerGroups[0]?.headers?.map((header) => (header as unknown as Record<string, unknown>)?.Header));\n useEffect(() => {\n if (setVisibleHeaders) {\n const groups = headerGroupsRef.current as Array<{ headers?: Array<Record<string, unknown>> }> | null;\n setVisibleHeaders?.(groups?.[0]?.headers?.map((header) => header?.Header as string) ?? []);\n }\n }, [headerKeys, setVisibleHeaders]);\n\n const { checkboxConfig } = useCheckbox({\n rows: rows as never,\n checkedIds: checkboxUtilities?.checkedIds as string[],\n isCheckAllDisabled: checkboxUtilities?.isCheckAllDisabled,\n selectionDisabledRowIds: checkboxUtilities?.selectionDisabledRowIds,\n rawData,\n onAllChecked: setIsAllChecked,\n setCheckedIds: checkboxUtilities?.setCheckedIds as (ids: string[]) => void,\n checkboxMetadata: checkboxUtilities?.checkboxMetadata as { checkedIds: string[]; tooltip: string; highlight: string },\n });\n\n const sensors = useSensors(\n useSensor(MouseSensor, { activationConstraint: { distance: DND_ACTIVATION_DISTANCE } }),\n useSensor(TouchSensor, { activationConstraint: { distance: DND_ACTIVATION_DISTANCE } }),\n );\n\n const dropAnimation: DropAnimation = { easing: DROP_ANIMATION_EASING, duration: DROP_ANIMATION_DURATION };\n\n function computeList() {\n if (!multipleContexts?.length || !withSortable) return rows;\n return multipleContexts.reduce((acc: Record<string, unknown>, contextKey: string) => {\n acc[contextKey] = rows.filter((e) => (e.original as Record<string, unknown>)?.type === contextKey);\n return acc;\n }, {});\n }\n computeListRef.current = computeList;\n\n const handleDragStart = (event: DragStartEvent) => {\n const { active } = event;\n setActiveItem(rows.find((item) => (item.original as Record<string, unknown>)?.id === active?.id) ?? null);\n };\n\n const handleDragEnd = (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over) return;\n if (dndSortableUtils?.checkDndDragEnd) {\n dndSortableUtils.checkDndDragEnd(active, over, sortableListByContext, (newState: Record<string, unknown>) => {\n setSortableListByContext(newState as Record<string, unknown>);\n setDndLoading(true);\n dndSortableUtils.onDragSuccess?.({\n draggedId: active.id as string,\n droppedId: over.id as string,\n draggedType: (active.data.current as Record<string, unknown>)?.type,\n droppedType: (over.data.current as Record<string, unknown>)?.type,\n updatedList: newState,\n cb: () => setDndLoading(false),\n });\n });\n }\n setActiveItem(null);\n };\n\n const handleDragCancel = () => setActiveItem(null);\n\n const toggleHeaderOption = (key: string) => {\n if (!sortConfig?.onSort && !filterConfig?.onFilter) return;\n if (showHeaderOptions === key) setShowHeaderOptions(null);\n else setShowHeaderOptions(key);\n };\n\n const toggleDataFilterModal = (col: unknown) => {\n setDataFilterColumn(col);\n setShowDataFilterModal(!showDataFilterModal);\n setShowHeaderOptions(null);\n };\n\n const handleRemoveSort = useCallback(() => {\n if (sortConfig?.onRemoveSort) sortConfig.onRemoveSort();\n else if (sortConfig?.onSort) sortConfig.onSort('', '');\n }, [sortConfig]);\n\n const toggleShowFilters = useCallback((col: unknown = null) => {\n setNewFilterColumn(col);\n setShowFilters(prev => col ? true : !prev);\n }, []);\n const toggleShowSorts = useCallback(() => setShowSorts(prev => !prev), []);\n\n const lastNonStickyColumnIndex = () => {\n const reverseHeaders = (headerGroups[0]?.headers as unknown as Array<Record<string, unknown>>)?.filter((header) => header?.visible !== false);\n for (let i = 0; i < reverseHeaders.length; i++) {\n if (reverseHeaders[i].sticky) return i - 1;\n }\n return reverseHeaders.length - 1;\n };\n\n const getSumOfNextVisibleColumnWidth = useCallback(\n (currentIndex: number) => {\n let sum = 0;\n for (let i = currentIndex + 1; i < visibleColumns.length; i++) {\n if (visibleColumns[i].visible !== false) sum += visibleColumns[i].width ?? 0;\n }\n if (rowAdditionalActions) sum += rowAdditionalActionsWidth || ROW_ADDITIONAL_ACTIONS_DEFAULT_WIDTH;\n if (rowOptions) sum += hideRowOptionWidth ? 0 : ROW_OPTIONS_COLUMN_WIDTH;\n return sum;\n },\n [visibleColumns, rowAdditionalActionsWidth, hideRowOptionWidth, rowAdditionalActions, rowOptions],\n );\n\n const resolveTableView = (): ITableView => {\n const userId = tableConfig?.getUserId?.();\n return {\n ...(selectedTableView || {}),\n name: selectedTableView?.name || 'Untitled View',\n created_by: selectedTableView?.created_by || userId,\n filters: selectedTableView?.filters || filterConfig?.columnFilters,\n id: selectedTableView?.id || 'untitled-view',\n table_key: selectedTableView?.table_key || tableKey,\n columns: selectedTableView?.columns || columns?.map((column, index) => ({\n name: column.Header,\n width: column.width,\n visible: column.visible,\n sticky: column.sticky,\n order: index + 1,\n display_name: column.Header,\n sequence: index + 1,\n Header: column.Header,\n })),\n };\n };\n resolveTableViewRef.current = resolveTableView;\n\n const handleUpdateColumnWidth = (columnName: string, width: number) => {\n const updatedTableView = resolveTableView();\n setSelectedTableView({\n ...updatedTableView,\n columns: updatedTableView?.columns?.map((column) => (column.name === columnName ? { ...column, width } : column)),\n unsaved: true,\n });\n };\n\n useEffect(() => {\n if (filterConfig?.columnFilters?.length > 0) setShowFilters(true);\n const currentView = selectedTableViewRef.current;\n if (JSON.stringify(currentView?.filters || []) !== JSON.stringify(filterConfig?.columnFilters || [])) {\n const hasViewFilters = (currentView?.filters?.length ?? 0) > 0;\n const hasConfigFilters = filterConfig?.columnFilters?.length > 0;\n // Skip sync only during the initial load window where the view already has filters\n // but they haven't propagated to columnFilters yet. If the user explicitly cleared\n // filters from ActiveFilters (X button or Clear), we must propagate the empty state.\n const isClearingFilters = hasViewFilters && !hasConfigFilters && !userClearedFiltersRef.current;\n if (!isClearingFilters) {\n const updatedTableView = resolveTableViewRef.current();\n setSelectedTableView({ ...updatedTableView, filters: JSON.parse(JSON.stringify(filterConfig?.columnFilters || [])), unsaved: true });\n }\n userClearedFiltersRef.current = false;\n }\n }, [filterConfig?.columnFilters]);\n\n const handleActiveRemoveFilter = useCallback(\n (key: string) => {\n userClearedFiltersRef.current = true;\n filterConfig?.onRemoveFilter?.(key);\n },\n [filterConfig?.onRemoveFilter],\n );\n\n const handleActiveClearFilter = useCallback(() => {\n userClearedFiltersRef.current = true;\n filterConfig?.onClearFilter?.();\n }, [filterConfig?.onClearFilter]);\n\n useEffect(() => {\n if (sortConfig?.columnSort?.field) {\n setShowSorts(true);\n if (sortConfig.columnSort.order === 'asc') { setIsShowSortArrowAsc(sortConfig.columnSort.field); setIsShowSortArrowDesc(null); }\n else if (sortConfig.columnSort.order === 'desc') { setIsShowSortArrowDesc(sortConfig.columnSort.field); setIsShowSortArrowAsc(null); }\n } else { setIsShowSortArrowAsc(null); setIsShowSortArrowDesc(null); }\n }, [sortConfig?.columnSort?.field, sortConfig?.columnSort?.order]);\n\n useEffect(() => {\n setTableHeaders(mergeViewColumnsWithTableColumns(selectedTableViewRef.current?.columns || [], columns));\n }, [columns]);\n\n useEffect(() => {\n if (selectedTableView?.unsaved) tableConfigRef.current?.persistTableView?.(selectedTableView);\n }, [selectedTableView]);\n\n useEffect(() => { setSortableListByContext(computeListRef.current() as Record<string, unknown>); }, [rows.length]);\n\n useEffect(() => {\n setSelectedTableView(defaultTableView || null);\n if (defaultTableView?.columns) {\n setTableHeaders(mergeViewColumnsWithTableColumns(defaultTableView?.columns || [], columnsRef.current));\n }\n if (defaultTableView?.filters && defaultTableView.filters.length > 0 && !hasAppliedInitialFilters.current) {\n requestAnimationFrame(() => { filterConfigRef.current?.onFilter?.(defaultTableView.filters); });\n hasAppliedInitialFilters.current = true;\n } else if (defaultTableView?.filters && hasAppliedInitialFilters.current) {\n const filtersAreDifferent = JSON.stringify(defaultTableView.filters) !== JSON.stringify(filterConfigRef.current?.columnFilters);\n if (filtersAreDifferent) filterConfigRef.current?.onFilter?.(defaultTableView.filters);\n }\n }, [defaultTableView]);\n\n useEffect(() => {\n if (headerDivRef.current) {\n const resizeObserver = new ResizeObserver((entries) => setHeaderDivWidth(entries[0].contentRect.width));\n resizeObserver.observe(headerDivRef.current);\n return () => resizeObserver.disconnect();\n }\n }, []);\n\n useEffect(() => {\n if (!tableContainerRef.current) return;\n const resizeObserver = new ResizeObserver((entries) => {\n const { width, height } = entries[0].contentRect;\n setTableContainerSize({ width, height });\n });\n resizeObserver.observe(tableContainerRef.current);\n return () => resizeObserver.disconnect();\n }, []);\n\n const tableHeader = (\n <Head\n isResizable={isResizable}\n headerGroups={headerGroups as never}\n isCheckbox={isCheckbox}\n checkboxConfig={checkboxConfig}\n isAllChecked={isAllChecked}\n showHeaderOptions={showHeaderOptions ?? ''}\n setShowHeaderOptions={setShowHeaderOptions}\n isShowSortArrowAsc={isShowSortArrowAsc}\n isShowSortArrowDesc={isShowSortArrowDesc}\n onSort={sortConfig?.onSort as ((field: string, order?: string) => void) | undefined}\n onFilter={filterConfig?.onFilter}\n toggleHeaderOption={toggleHeaderOption}\n setIsShowSortArrowAsc={setIsShowSortArrowAsc}\n setIsShowSortArrowDesc={setIsShowSortArrowDesc}\n toggleDataFilterModal={toggleShowFilters}\n rowOptions={(Array.isArray(rowOptions) ? rowOptions : []) as unknown[]}\n isColumnConfigurable={isColumnConfigurable ?? false}\n onAddColumnClick={onAddColumnClick as (column: { id: string; key: string; [k: string]: unknown }) => void}\n onEditColumnClick={onEditColumnClick as (column: { id: string; key: string; [k: string]: unknown }) => void}\n onDeleteColumnClick={onDeleteColumnClick as (column: { id: string; key: string; [k: string]: unknown }) => void}\n tableActions={(tableActions || null)}\n isLoading={isLoading}\n headerLoading={headerLoading}\n rowAdditionalActions={(rowAdditionalActions ?? null) as (() => React.ReactNode) | null}\n showPendingEditsColumn={pendingEditsCount > 0}\n />\n );\n\n const tableView = (\n <>\n {dndLoading || isOverlayLoading ? (\n <div className='absolute left-0 top-0 w-full h-full z-40 flex items-center justify-center bg-neutral-100 dark:bg-black-700' />\n ) : null}\n <div\n {...getTableProps()}\n className='w-full text-sm text-left text-neutral-500 dark:text-neutral-200 h-full bg-white dark:bg-black-800'\n >\n {isEmpty ? (\n <div className='z-10'>\n {tableHeader}\n <div className='absolute w-full'>\n {tableConfig?.renderEmpty ? tableConfig.renderEmpty(emptySwitchProps) : (\n <div className='flex flex-col items-center justify-center w-full h-[12rem] text-neutral-900 dark:text-neutral-200 mt-8'>\n {noDataWidget && !isAnyFilters ? <NoDataFoundWidgets widgetType='TABLE' /> : <NoDataFound text={resolvedEmptyText} />}\n {isColumnConfigurable && !isAnyFilters ? (\n <div className='my-4'>\n <Button\n id='btn-table-shell-create-column'\n status='primary'\n appearance='ghost'\n onClick={onAddColumnClick as ((event: React.MouseEvent<HTMLButtonElement>) => void) | undefined}\n >\n <Add2Icon className='text-white dark:text-white' /> {translatedCreateColumnLabel}\n </Button>\n </div>\n ) : null}\n {!isAnyFilters &&\n buttons?.map((button, index) => (\n <Button key={`${button.label}-${index}`} status='secondary' id={getEmptyButtonId(button.label, index)} onClick={button.onClick}>\n {tableConfig?.t?.(button.label) ?? button.label}\n </Button>\n ))}\n </div>\n )}\n </div>\n </div>\n ) : (\n <AutoSizer\n style={{ width: '100%', height: '100%' }}\n renderProp={({ width, height }) => {\n const effectiveWidth = width > 0 ? width : tableContainerSize.width;\n const effectiveHeight = height > 0 ? height : tableContainerSize.height;\n return effectiveWidth > 0 && effectiveHeight > 0 ? (\n <Body\n {...{\n getTableBodyProps: getTableBodyProps as unknown as () => Record<string, unknown>, rows: rows as never, prepareRow: prepareRow as never, isLoading, onScroll, onScrolling, columns, width: effectiveWidth, height: effectiveHeight, withSortable,\n allowAstarSearch: searchConfig?.allowAStarSearch || false,\n }}\n />\n ) : null;\n }}\n />\n )}\n </div>\n </>\n );\n\n const tableWrapper = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <div className='h-full w-full' {...props} ref={ref}>\n {tableHeader}\n <div className='relative w-full h-full'>{props?.children}</div>\n </div>\n ));\n\n const tableBodyWrapper = forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>((props, ref) => (\n <div className='h-full w-full' {...props} ref={ref}>\n <div className='relative w-full h-full'>{props?.children}</div>\n </div>\n ));\n\n const TableHeaderComponent = useMemo(() => {\n if (tableConfig?.renderTableHeader) {\n return tableConfig.renderTableHeader({\n tableKey, search: searchConfig?.search, handleSearch: searchConfig?.handleSearch,\n toggleShowFilters, toggleShowSorts, filterCounts: filterConfig?.columnFilters?.length,\n columns, columnFilters: filterConfig?.columnFilters, setSelectedTableView, selectedTableView,\n enableTableView: headerConfig?.showTableView, modelName: modelName as string,\n enableMasterDataEnumSuggestions,\n onRemoveFilter: filterConfig?.onRemoveFilter, onClearFilter: filterConfig?.onClearFilter,\n onFilter: filterConfig?.onFilter, data: enumSuggestionsData ?? data, tableHeaders, showTableViewAsModal: headerConfig?.showTableViewAsModal,\n additionalOptions: headerConfig?.additionalOptions, inlineActions: headerConfig?.inlineActions, showFilters: headerConfig?.showFilters,\n showSorts: headerConfig?.showSorts, showSearch: headerConfig?.showSearch,\n isLoading: Boolean(headerConfig?.isLoading), setTableHeaders,\n allowAStarSearch: Boolean(searchConfig?.allowAStarSearch), withContent: !!headerConfig?.content,\n setShowFilters, sort: sortConfig?.columnSort, onSort: sortConfig?.onSort, onRemoveSort: handleRemoveSort,\n showExportButton: headerConfig?.showExportButton,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId\n });\n }\n return null;\n }, [\n tableKey, searchConfig?.search, searchConfig?.handleSearch, toggleShowFilters, toggleShowSorts,\n filterConfig?.columnFilters, columns, setSelectedTableView, selectedTableView, headerConfig,\n modelName, filterConfig?.onRemoveFilter, filterConfig?.onClearFilter, filterConfig?.onFilter,\n data, enumSuggestionsData, tableHeaders, sortConfig?.columnSort, sortConfig?.onSort, handleRemoveSort, tableConfig,\n searchConfig?.allowAStarSearch, enableMasterDataEnumSuggestions,agreementCategoryId, agreementDomainId, agreementId,modificationId,lineItemRowId,\n ]);\n\n useEffect(() => {\n if (setHeaderOnParent) setHeaderOnParent(TableHeaderComponent);\n }, [TableHeaderComponent, setHeaderOnParent]);\n\n return (\n <TableContext.Provider\n value={{\n tableWrapper, tableBodyWrapper, lastNonStickyColumnIndex, search: searchConfig?.search,\n columnFilters: filterConfig?.columnFilters, onRowClick, onSort: sortConfig?.onSort,\n onFilter: filterConfig?.onFilter, toggleShowFilters, toggleShowSorts,\n onRemoveFilter: filterConfig?.onRemoveFilter, onClearFilter: filterConfig?.onClearFilter,\n rowOptions, checkboxConfig, onResetFilter: filterConfig?.onResetFilter, isColumnConfigurable,\n onAddColumnClick, onEditColumnClick, onDeleteColumnClick, onRowTooltipClick, tooltiptext,\n cascadingTableConfig, activeInlineEdit, setActiveInlineEdit, originalsOnly,\n disableOptionsForRowIndex, getFullRowDataOnClick, selectedRowId, getSumOfNextVisibleColumnWidth,\n onRowEdit, inlineEditColumns, tableActions, dndSortableUtils, withSortable, withDraggable,\n onCascadingRowExpand, getInnerRowData, tableHeaders, maxLevel, expandedRows, setExpandedRows,\n showNewItem, rawData, dragConfig, rowWrapper, rowLinkConfig, isCellClickDisabled,\n asyncRowOptionsFilter: filterConfig?.asyncRowOptionsFilter, handleUpdateColumnWidth,\n multiSelectConfig, headerContextOptions, showHeaderContextOptions, setShowHeaderContextOptions: setShowHeaderContextOptions as ((value: string | null) => void) | undefined,\n headerDivWidth, showDataTypeIcon, rowAdditionalActions, hoverConfig, rowAdditionalActionsWidth,\n cellEditing, cellEditingValue, openMasterDataModal, closeMasterDataModal, selectedMasterData,\n clearSelectedMasterData, allowInlineEdit, openCurrencyDropdown, closeCurrencyDropdown,\n currencyDropdownConfig, selectedCurrenciesMap, setCurrencyForCell, getCurrencyForCell,\n pendingEdits, addPendingEdit, removePendingEdit, getPendingEdit, hasPendingEdit,\n clearAllPendingEdits, saveAllPendingEdits, clearRowPendingEdits, saveRowPendingEdits,\n pendingEditsCount, scrollToCell, onFieldOperationFlow, fieldOperationLoading, validateAllPendingEdits,\n }}\n >\n {showHeader ? (\n <div\n ref={headerDivRef}\n className={`mb-2 flex w-full min-w-0 gap-2 dark:bg-black-800 ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'flex-col items-stretch' : 'flex-row items-center'\n }`}\n >\n <div\n className={`flex items-center gap-x-2 gap-y-1 ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full flex-wrap' : ''\n } ${headerConfig?.content ? 'min-w-0 flex-1' : 'shrink-0'}`}\n >\n {headerConfig?.content ? (\n <div className={`min-w-0 ${headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full' : 'flex-1'}`}>\n {headerConfig.content}\n </div>\n ) : null}\n {showRecordCount ? (\n <div className='flex items-center gap-1.5 shrink-0'>\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='16'\n height='16'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n className='text-neutral-500 dark:text-neutral-400 flex-shrink-0'\n aria-hidden\n >\n <ellipse cx='12' cy='5' rx='9' ry='3' />\n <path d='M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5' />\n <path d='M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9' />\n <path d='M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4' />\n </svg>\n <Typography size='small' variant='semibold' appearance='title'>\n {(totalItems ?? data.length).toLocaleString()}\n </Typography>\n <Typography size='small' variant='regular' appearance='subtitle'>\n total records\n </Typography>\n </div>\n ) : headerConfig?.preContent ? (\n <div className='flex min-w-0 shrink-0 justify-start items-center'>{headerConfig.preContent}</div>\n ) : null}\n </div>\n <div\n className={`flex min-w-0 items-center justify-end ${\n headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full' : headerConfig?.content ? 'shrink-0' : 'flex-1'\n } ${headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? 'flex-col' : 'flex-row'} ${\n headerConfig?.postContent ? 'gap-2' : ''\n }`}\n >\n {showRecordCount && headerConfig?.preContent ? (\n <div className='flex w-full justify-start items-center'>{headerConfig.preContent}</div>\n ) : null}\n <div\n className={`flex justify-end items-center min-w-0 ${\n headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? 'w-full' : headerDivWidth < TOOLBAR_FIRST_BREAKPOINT ? 'w-full' : ''\n }`}\n >\n {TableHeaderComponent}\n </div>\n {headerConfig?.postContent ? (\n <div className={`flex justify-end items-center ${headerDivWidth < TOOLBAR_SECOND_BREAKPOINT ? 'w-full' : ''}`}>\n {headerConfig.postContent}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {headerConfig?.showDivider ? <div className='border-b pb-2 w-full dark:bg-black-800' /> : null}\n {showFilters || showSorts ? (\n <div className='flex justify-between items-center pb-4 dark:bg-black-800'>\n <div className='flex gap-2 items-center'>\n {showSorts && tableConfig?.renderSortItem ? (\n tableConfig.renderSortItem({ sort: sortConfig?.columnSort, onRemoveSort: handleRemoveSort, onSort: sortConfig?.onSort, tableHeaders, data })\n ) : null}\n {showFilters && showSorts && sortConfig?.columnSort?.field !== '' ? (\n <div className='h-8 w-[1px] flex-shrink-0 bg-neutral-200' />\n ) : null}\n {showFilters ? (\n <div className='flex gap-2 items-center'>\n {(isFilters || filterConfig?.onResetFilter) && tableConfig?.renderActiveFilters && (\n tableConfig.renderActiveFilters({\n filters: filterConfig?.columnFilters, onRemoveFilter: handleActiveRemoveFilter,\n onClearFilter: handleActiveClearFilter, onResetFilter: filterConfig?.onResetFilter,\n onFilter: filterConfig?.onFilter, tableHeaders, columnFilters: filterConfig?.columnFilters,\n modelName, enableMasterDataEnumSuggestions, noSpacing: true, notionStyle: filterConfig?.notionStyle, context: filterConfig?.context, data: enumSuggestionsData ?? data,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId\n })\n )}\n {tableConfig?.renderFilterButtons && (\n tableConfig.renderFilterButtons({\n onClearFilter: filterConfig?.onClearFilter, onClose: toggleDataFilterModal,\n modelName, enableMasterDataEnumSuggestions, defaultFilterColumn: newFilterColumn, resetDefaultFilterColumn: () => setNewFilterColumn(null),\n column: dataFilterColumn, onFilter: filterConfig?.onFilter, tableHeaders,\n columnFilters: filterConfig?.columnFilters, data: enumSuggestionsData ?? data, notionStyle: filterConfig?.notionStyle,\n context: filterConfig?.context,\n agreementCategoryId,\n agreementDomainId,\n agreementId,\n modificationId,\n lineItemRowId,\n })\n )}\n </div>\n ) : null}\n </div>\n </div>\n ) : null}\n {floatingBarConfig && Object.keys(floatingBarConfig).length ? <FloatingBar {...floatingBarConfig} /> : null}\n {!showHeader && showRecordCount ? (\n <div className='flex items-center gap-1.5 mb-2'>\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='16'\n height='16'\n viewBox='0 0 24 24'\n fill='none'\n stroke='currentColor'\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n className='text-neutral-500 dark:text-neutral-400 flex-shrink-0'\n aria-hidden\n >\n <ellipse cx='12' cy='5' rx='9' ry='3' />\n <path d='M3 5v4c0 1.66 4.03 3 9 3s9-1.34 9-3V5' />\n <path d='M3 9v4c0 1.66 4.03 3 9 3s9-1.34 9-3V9' />\n <path d='M3 13v4c0 1.66 4.03 3 9 3s9-1.34 9-3v-4' />\n </svg>\n <Typography size='small' variant='semibold' appearance='title'>\n {(totalItems ?? data.length).toLocaleString()}\n </Typography>\n <Typography size='small' variant='regular' appearance='subtitle'>\n total records\n </Typography>\n </div>\n ) : !showHeader && headerConfig?.preContent ? (\n <div className='flex items-center mb-2'>{headerConfig.preContent}</div>\n ) : null}\n <div\n ref={tableContainerRef}\n className={`w-full ${paginationConfig ? `h-auto` : tableHeightClass} rounded-lg relative border overflow-x-hidden`}\n style={{\n ...(paginationConfig\n ? { height: data?.length > 0 ? `${(data?.length + 1) * rowSlotHeight + 4}px` : '350px' }\n : { height: fallbackHeight }),\n ...style,\n }}\n >\n {enableRootDrag ? (\n tableView\n ) : (\n <DndContext sensors={sensors} onDragEnd={handleDragEnd} onDragStart={handleDragStart} onDragCancel={handleDragCancel} collisionDetection={closestCorners}>\n {tableView}\n {activeItem\n ? createPortal(\n <DragOverlay adjustScale={true} dropAnimation={dropAnimation}>\n <table {...getTableProps()} className='w-full text-sm text-left text-neutral-500 dark:text-neutral-200 bg-white dark:bg-black-700 table-auto border-collapse'>\n <tbody {...getTableBodyProps()} className='bg-transparent divide-y divide-neutral-200'>\n {void prepareRow(activeItem)}\n <Row key={(activeItem.original as Record<string, unknown>).id as string} row={activeItem as never} index={rows?.findIndex((item) => item.id === (activeItem.original as Record<string, unknown>).id)} />\n </tbody>\n </table>\n </DragOverlay>,\n document.getElementById('full-screen-container') || document.body,\n )\n : null}\n </DndContext>\n )}\n </div>\n {paginationConfig && tableConfig?.renderPagination ? tableConfig.renderPagination(paginationConfig) : null}\n\n {tableConfig?.renderMasterDataModal && tableConfig.renderMasterDataModal({\n isVisible: !!masterDataModalConfig, onSelected: handleMasterDataSelected, onClose: closeMasterDataModal,\n masterDataColumnName: masterDataModalConfig?.masterDataColumnName, masterDataFilters: masterDataModalConfig?.masterDataFilters,\n masterDataName: masterDataModalConfig?.masterDataName, masterDataId: masterDataModalConfig?.masterDataName, showFilters: true,\n })}\n\n <CurrencyDropdownPortal config={currencyDropdownConfig} onClose={closeCurrencyDropdown} />\n\n <PendingEditsFloatingBar\n pendingEditsCount={pendingEditsCount}\n pendingEditsList={pendingEditsList}\n rowsWithPendingEdits={rowsWithPendingEdits}\n fieldOperationLoading={fieldOperationLoading}\n onClearAll={clearAllPendingEdits}\n onSaveAll={saveAllPendingEdits}\n onScrollToCell={scrollToCell}\n />\n </TableContext.Provider>\n );\n },\n);\n"],"names":["AutoSizer","_AutoSizer","CREATE_COLUMN_LABEL","getEmptyButtonId","label","index","InfiniteTable","React","tableKey","searchConfig","filterConfig","sortConfig","headerConfig","hoverConfig","columns","modelName","enableMasterDataEnumSuggestions","agreementCategoryId","agreementDomainId","agreementId","modificationId","lineItemRowId","enumSuggestionsData","data","onRowClick","showHeader","tableActions","rowOptions","hideRowOptionWidth","checkboxUtilities","isLoading","headerLoading","onScroll","onScrolling","isColumnConfigurable","onAddColumnClick","emptyMessage","noDataWidget","buttons","onEditColumnClick","onDeleteColumnClick","onRowTooltipClick","tooltiptext","cascadingTableConfig","originalsOnly","disableOptionsForRowIndex","tableHeightClass","getFullRowDataOnClick","selectedRowId","onRowEdit","onBulkRowEdit","inlineEditColumns","isResizable","paginationConfig","dndSortableUtils","multipleContexts","withSortable","withDraggable","enableRootDrag","pageSize","DEFAULT_PAGE_SIZE","onCascadingRowExpand","totalItems","showRecordCount","getInnerRowData","maxLevel","expandedRows","setExpandedRows","showNewItem","rawData","dragConfig","isOverlayLoading","style","floatingBarConfig","rowWrapper","rowLinkConfig","isCellClickDisabled","setHeaderOnParent","optimizeTable","multiSelectConfig","headerContextOptions","showHeaderContextOptions","setShowHeaderContextOptions","showDataTypeIcon","rowAdditionalActions","rowAdditionalActionsWidth","setVisibleHeaders","cellEditing","cellEditingValue","allowInlineEdit","onFieldOperationFlow","fieldOperationLoading","onTableActionsReady","onPendingEditsChange","onCancelPendingEdits","tableConfig","useTableConfig","rowSlotHeight","getRowSlotHeight","useRowHeight","isSearch","isFilters","isAnyFilters","isCheckbox","defaultTableView","selectedTableView","setSelectedTableView","useState","showFilters","setShowFilters","showSorts","setShowSorts","newFilterColumn","setNewFilterColumn","tableHeaders","setTableHeaders","isEmpty","showHeaderOptions","setShowHeaderOptions","showDataFilterModal","setShowDataFilterModal","dataFilterColumn","setDataFilterColumn","isAllChecked","setIsAllChecked","isShowSortArrowAsc","setIsShowSortArrowAsc","isShowSortArrowDesc","setIsShowSortArrowDesc","sortableListByContext","setSortableListByContext","activeItem","setActiveItem","dndLoading","setDndLoading","headerDivWidth","setHeaderDivWidth","headerDivRef","useRef","tableContainerRef","tableContainerSize","setTableContainerSize","activeInlineEdit","setActiveInlineEdit","masterDataModalConfig","setMasterDataModalConfig","selectedMasterData","setSelectedMasterData","currencyDropdownConfig","setCurrencyDropdownConfig","selectedCurrenciesMap","setSelectedCurrenciesMap","hasAppliedInitialFilters","userClearedFiltersRef","selectedTableViewRef","tableConfigRef","columnsRef","filterConfigRef","headerGroupsRef","resolveTableViewRef","computeListRef","pendingEdits","setPendingEdits","addPendingEdit","useCallback","rowId","columnKey","edit","prev","existingEdit","resolvedValidationError","column","col","result","validateCellValue","hasPendingEdits","rowEdits","useEffect","removePendingEdit","newEdits","_removed","rest","getPendingEdit","hasPendingEdit","clearAllPendingEdits","scrollToCell","rowIndex","colIndex","cellElement","DATA_ROW_ID_ATTR","DATA_COLUMN_KEY_ATTR","scrollContainer","OS_VIEWPORT_SELECTOR","scrollLeft","i","SCROLL_TO_CELL_COLUMN_WIDTH_FALLBACK","SCROLL_TO_CELL_LEFT_OFFSET","validateAllPendingEdits","editsToValidate","hasErrors","firstError","updatedEdits","errorTypes","getValidationToastMessage","hasRequired","hasFormat","saveAllPendingEdits","row","editedRows","originalRow","updatedRow","editedFields","clearRowPendingEdits","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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"}
|
|
@@ -175,6 +175,8 @@ export interface ITableProps {
|
|
|
175
175
|
dragConfig?: Record<string, unknown>;
|
|
176
176
|
tableHeightClass?: string;
|
|
177
177
|
isLoading?: boolean;
|
|
178
|
+
/** When true, replaces the column headers with a single skeleton line loader and suspends all header interactions (sort, filter, resize, column click) while the table body keeps rendering normally. */
|
|
179
|
+
headerLoading?: boolean;
|
|
178
180
|
isOverlayLoading?: boolean;
|
|
179
181
|
isResizable?: boolean;
|
|
180
182
|
showNewItem?: boolean;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),W=require("antd"),C=require("../../../_virtual/index.cjs.js"),qe=require("react-i18next"),o=require("dayjs"),Ve=require("dayjs/plugin/customParseFormat"),Re=require("dayjs/plugin/localeData"),Be=require("dayjs/plugin/utc"),Le=require("dayjs/plugin/weekday"),s=require("react"),Ne=require("../../data-display/typography/Typography.cjs.js"),Oe=require("../../data-display/label/Label.cjs.js"),Pe=require("../../icons/AIExtractedIndicator.cjs.js"),_e=require("../../icons/AIStarIcon.cjs.js"),Te=require("../../icons/HelpIcon.cjs.js"),ie=require("../../tooltip/Tooltip.cjs.js"),ue=require("@mui/icons-material"),we=require("../shared/InputLabel.cjs.js"),b=require("../../../utils/confidenceScoreUtils.cjs.js");o.extend(Be);o.extend(Ve);o.extend(Le);o.extend(Re);const pe="MM/DD/YYYY",j="MM/DD/YYYY - hh:mm A",de="YYYY-MM-DD",me="YYYY-MM-DDTHH:mm:ss",fe={ENTER:"Enter"},De=["MM/DD/YYYY","M/DD/YYYY","MM/D/YYYY","M/D/YYYY","MM/DD/YY","M/DD/YY","MM/D/YY","M/D/YY","YYYY-MM-DD","YYYY-MM-DDTHH:mm:ss.SSSZ","YYYY-MM-DDTHH:mm:ssZ"],Ue=["MM/DD/YYYY - hh:mm A","M/DD/YYYY - hh:mm A","MM/D/YYYY - hh:mm A","M/D/YYYY - hh:mm A","MM/DD/YYYY hh:mm A","M/DD/YYYY hh:mm A","MM/D/YYYY hh:mm A","M/D/YYYY hh:mm A","MM/DD/YYYY HH:mm","M/DD/YYYY HH:mm","MM/D/YYYY HH:mm","M/D/YYYY HH:mm","MM/DD/YY - hh:mm A","M/DD/YY - hh:mm A","MM/D/YY - hh:mm A","M/D/YY - hh:mm A","MM/DD/YY hh:mm A","M/DD/YY hh:mm A","MM/D/YY hh:mm A","M/D/YY hh:mm A","MM/DD/YY HH:mm","M/DD/YY HH:mm","MM/D/YY HH:mm","M/D/YY HH:mm",...De,"YYYY-MM-DDTHH:mm:ss.SSSZ","YYYY-MM-DDTHH:mm:ssZ"],$e=()=>Math.random().toString(36).substring(2,9),y=(u,d=!1)=>{if(!u)return null;const f=d?Ue:De;for(const Y of f){const x=o(u,Y,!0);if(x.isValid())return x}const m=o(u);return m.isValid()?m:null},Ye=(u,d)=>{const f=s.useRef(d);s.useEffect(()=>{f.current=d},[d]),s.useEffect(()=>{const m=Y=>f.current(Y);return document.addEventListener(u,m),()=>{document.removeEventListener(u,m)}},[u])},Me=s.forwardRef(({label:u,value:d,required:f,isRequiredConditional:m=!1,disabled:Y,className:x=void 0,errorMessage:p,handleOnChange:D,showTime:l=!0,tags:he,needConfirm:Ee=!1,simpleMode:be,originalCase:xe=!1,dateFormat:z=void 0,tooltip:X,isAiExtracted:ge=!1,confidenceScore:q,confidenceType:g="high",confidenceTooltip:V,sourceMeta:Se=[],onConfidenceScoreClick:ve,isGTN:R=!1,gtnName:J=null,shouldPopOnParent:ye=!1,allowTimezoneConversion:M=!0,inputStyle:Ae,labelClassName:Fe,isLiveField:Ie=!1,labelExtra:Q,inputEmphasis:B="default",riskDetails:h,isRiskAnalysisOpen:L=!1,RiskDetailsCard:G,onAddGTNToDocument:A,formatDateForGTN:N,...O},ke)=>{const{t:He}=qe.useTranslation(),P=!!(L&&h?.color),ee=B==="modified"&&!p&&!P,te=B==="deleted"&&!p&&!P,ne=B==="success"&&!p&&!P,[F,_]=s.useState(!1),[re,E]=s.useState(null),[se,T]=s.useState(null),[I,le]=s.useState(!1),c=z||(l?j:pe),a=O?.id||`date-picker-${$e()}`,S=s.useRef(null),k=s.useRef(!1);Ye("paste",e=>{document.activeElement?.id===a&&(e.preventDefault(),navigator.clipboard.readText().then(t=>{const r=y(t,l);r&&w(r)}))}),Ye("keydown",e=>{if(e.key===fe.ENTER&&document.activeElement instanceof HTMLInputElement&&document.activeElement.id===a){const t=y(document?.activeElement?.value,l);t&&w(t)}});const Ce=s.useCallback(e=>{if(!A)return;let t=e||"";if(N&&e)t=N(e,{skipTimezone:!0,withTime:l});else if(e){const i=o(e);i.isValid()&&(t=i.format(c))}A({key:J,value:t})},[A,J,N,l,c]),je=s.useCallback(()=>{const e=document.getElementsByClassName("ant-picker-footer")[0];e&&(e.style.display="none")},[]),v=s.useCallback(e=>{if(!M){const t=l?me:de;if(D(e?e.format(t):null),e){const r=document.getElementById(a);if(r){const i=new CustomEvent("pilot-date-change",{bubbles:!0,detail:{selector:`#${a}`,value:e.format?e.format(c):e,type:"date-change",elementId:a}});r.dispatchEvent(i)}}return}if(e){let t;if(l?t=o(e).utc().toISOString():t=o(e).utc().add(o(e).utcOffset(),"minute").startOf("day").toISOString(),t){D(t);const r=document.getElementById(a);if(r){const i=new CustomEvent("pilot-date-change",{bubbles:!0,detail:{selector:`#${a}`,value:e.format(c),type:"date-change",elementId:a}});r.dispatchEvent(i)}}}else D(null)},[M,D,l,a,c]),oe=s.useCallback(e=>{if(!e)return null;if(!M)try{const t=o(e);if(t.isValid())return t;const r=o(e,c);return r.isValid()?r:null}catch{return null}if(l){const t=o(e);return o(t).isValid()?t:null}else if(e?.toString()?.includes("Z")){const t=o.utc(e);return o(t).isValid()?t:null}else{const t=o(e);return o(t).isValid()?t:null}},[M,c,l]),w=s.useCallback(e=>{if(e?.isValid()||e===null){E(e);const t=l?me:de,r=M?e?.toISOString():e?e.format(t):"";if(D(r||null),e?.isValid()){const i=document.getElementById(a);if(i){const U=new CustomEvent("pilot-date-change",{bubbles:!0,detail:{selector:`#${a}`,value:e.format(c),type:"date-change",elementId:a}});i.dispatchEvent(U)}}}},[M,c,D,a,l]);s.useEffect(()=>{E(oe(d))},[d,oe]),s.useEffect(()=>{se&&T(null)},[se]),s.useEffect(()=>{const e=document.getElementById(a);if(!e)return;const t=r=>{const{value:i,type:U}=r.detail;if(U==="date-playback"&&i){const H=y(i,l);H&&H.isValid()&&(E(H),v(H),setTimeout(()=>{const $=e.querySelector("input");if($&&($.focus(),setTimeout(()=>{$.blur()},10)),S.current)try{const K=S.current;typeof K.blur=="function"&&K.blur()}catch{}setTimeout(()=>{document.querySelectorAll(".ant-picker-dropdown:not(.ant-picker-dropdown-hidden)").forEach(Z=>{Z instanceof HTMLElement&&(Z.style.display="none",Z.classList.add("ant-picker-dropdown-hidden"))})},50)},50))}};return e.addEventListener("pilot-date-playback",t),()=>{e.removeEventListener("pilot-date-playback",t)}},[a,c,v,l]);const ae=s.useCallback(e=>{if(e.key===fe.ENTER&&!I){e.preventDefault(),e.stopPropagation();const t=e.target.closest("form");if(t){const r=t.querySelector('button[type="submit"]');r?r.click():t.requestSubmit()}}},[I]),ce=s.useCallback(e=>{if(e&&k.current){k.current=!1,le(!1);return}le(e),e||(k.current=!0,requestAnimationFrame(()=>{S.current?.focus(),requestAnimationFrame(()=>{k.current=!1})}))},[]);return be?n.jsx("div",{onKeyDownCapture:ae,children:n.jsx(W.DatePicker,{...O,showTime:l,open:I,format:c,placeholder:c===j?"MM/DD/YYYY hh:mm":c,value:re,needConfirm:!1,onChange:e=>{E(e),v(e),T(e?.toISOString()||null)},className:x,showNow:!1,onFocus:je,onOpenChange:ce,onBlur:e=>{const t=e.target.value;if(t){const r=y(t,l);r&&w(r)}},ref:S,disabled:Y,id:a})}):n.jsxs("div",{ref:ke,className:C("flex gap-0.5 relative",F&&R?"border rounded-lg border-primary-100 bg-primary-50 p-1":""),onMouseEnter:()=>_(!0),onMouseLeave:()=>_(!1),children:[R&&!F?n.jsx("div",{className:"w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5"}):null,n.jsxs("div",{className:`w-full flex flex-col font-inter ${x||""}`,onKeyDownCapture:ae,children:[u||Q?n.jsx("label",{className:`mb-1 text-xs font-medium text-gray-600 inline-flex items-center gap-1 ${xe?"":"capitalize"} ${Fe||""}`,children:n.jsxs("div",{className:"grid w-full grid-cols-[minmax(0,1fr)_auto] items-start gap-x-1",children:[n.jsxs("div",{className:"inline-flex min-w-0 items-center gap-1 flex-wrap",children:[(u||f||m)&&n.jsx(we.InputLabel,{label:u||"",required:f||!1,isRequiredConditional:m||!1}),Ie&&n.jsx(ue.BoltOutlined,{sx:{fontSize:16,color:"var(--color-primary-600)",rotate:"15deg"}}),ge&&!b.shouldShowConfidenceScore(q)&&n.jsx(Pe.AIExtractedIndicator,{}),n.jsx(Oe.Label,{labels:he}),X&&n.jsx(ie,{placement:"top",title:X,children:n.jsx("div",{className:"cursor-pointer",children:n.jsx(Te.HelpIcon,{className:"w-icon-sm h-icon-sm"})})}),Q]}),n.jsxs("div",{className:"flex items-center gap-1 justify-self-end",children:[b.shouldShowConfidenceScore(q)&&g?n.jsx(ie,{placement:"top-end",title:V??"",hideTooltip:V==null,className:"cursor-pointer",children:n.jsxs("div",{className:C("inline-flex min-w-[50px] items-center gap-1 rounded-md px-1 py-0.5",b.getConfidenceScoreBadgeClass(g)),onClick:()=>ve?.(Se),children:[n.jsx(_e.AIStarIcon,{size:12,fill:b.getConfidenceScoreBadgeColor(g),fillSecondary:b.getConfidenceScoreBadgeFill(g)}),n.jsxs("span",{className:C("text-xs font-medium leading-4",b.getConfidenceScoreBadgeTextColor(g)),children:[q,"%"]})]})}):null,R&&F&&A?n.jsx("button",{id:"btn-date-field-add-to-document",className:"cursor-pointer",onClick:()=>Ce(d),type:"button",children:n.jsx(W.Tooltip,{placement:"top",title:He("Add to document"),children:n.jsx(ue.NoteAddOutlined,{className:"text-primary-600",sx:{fontSize:16}})})}):null]})]})}):null,n.jsx(W.DatePicker,{...O,showTime:l?{use12Hours:!0}:!1,open:I,format:c,placeholder:c===j?"MM/DD/YYYY - HH:MM":c,className:C("w-full h-8 text-sm font-medium dark:text-black-300",p&&"border-red-400",L&&h?.color&&`bg-${h.color}-50 border-${h.color}-300`,te&&"!border-[var(--Error-200,#FECACA)] !bg-[var(--Error-50,#FEF2F2)] !text-[#475467]",ee&&"!border-[var(--Warning-200,#FEDF89)] !bg-[var(--Warning-50,#FFFAEB)]",ne&&"!border-[var(--Success-200,#BBF7D0)] !bg-[var(--Success-50,#F0FDF4)] !text-[#101828]"),styles:{root:{...Ae,borderRadius:"7px",...te&&{borderColor:"var(--Error-200, #FECACA)",backgroundColor:"var(--Error-50, #FEF2F2)",color:"#475467"},...ee&&{borderColor:"var(--Warning-200, #FEDF89)",backgroundColor:"var(--Warning-50, #FFFAEB)"},...ne&&{borderColor:"var(--Success-200, #BBF7D0)",backgroundColor:"var(--Success-50, #F0FDF4)",color:"#101828"}}},showNow:!1,value:re,onChange:e=>{E(e),v(e),T(e?.toISOString()||null)},onBlur:e=>{const t=e.target.value;if(t){const r=y(t,l);r&&(E(r),v(r))}},needConfirm:Ee,ref:S,disabled:Y,inputReadOnly:!1,onOpenChange:ce,getPopupContainer:ye?e=>e.parentElement:()=>document.body,id:a,autoComplete:"off"}),p&&n.jsx(Ne.Typography,{className:"text-error-500 mt-1",appearance:"custom",size:"extra-small",variant:"medium",children:p})]}),F&&h&&L&&G&&n.jsx("div",{role:"tooltip",tabIndex:0,className:"absolute left-0 right-0 top-[95%] mt-1 z-50 bg-white dark:bg-black-600 rounded-xl",onClick:e=>e.stopPropagation(),onMouseDown:e=>e.preventDefault(),onKeyDown:e=>{e.key==="Escape"&&_(!1)},children:n.jsx(G,{riskDetails:h})})]})});Me.displayName="DateTimeField";exports.DateTimeField=Me;exports.UNIVERSAL_DATETIME_FORMAT=j;exports.UNIVERSAL_DATE_FORMAT=pe;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),z=require("antd"),C=require("../../../_virtual/index.cjs.js"),qe=require("react-i18next"),l=require("dayjs"),Ve=require("dayjs/plugin/customParseFormat"),Re=require("dayjs/plugin/localeData"),Be=require("dayjs/plugin/utc"),Le=require("dayjs/plugin/weekday"),s=require("react"),Ne=require("../../data-display/typography/Typography.cjs.js"),Oe=require("../../data-display/label/Label.cjs.js"),Pe=require("../../icons/AIExtractedIndicator.cjs.js"),_e=require("../../icons/AIStarIcon.cjs.js"),Te=require("../../icons/HelpIcon.cjs.js"),ue=require("../../tooltip/Tooltip.cjs.js"),de=require("@mui/icons-material"),we=require("../shared/InputLabel.cjs.js"),b=require("../../../utils/confidenceScoreUtils.cjs.js");l.extend(Be);l.extend(Ve);l.extend(Le);l.extend(Re);const De="MM/DD/YYYY",j="MM/DD/YYYY - hh:mm A",me="YYYY-MM-DD",fe="YYYY-MM-DDTHH:mm:ss",Ye={ENTER:"Enter"},Me=["MM/DD/YYYY","M/DD/YYYY","MM/D/YYYY","M/D/YYYY","MM/DD/YY","M/DD/YY","MM/D/YY","M/D/YY","YYYY-MM-DD","YYYY-MM-DDTHH:mm:ss.SSSZ","YYYY-MM-DDTHH:mm:ssZ"],Ue=["MM/DD/YYYY - hh:mm A","M/DD/YYYY - hh:mm A","MM/D/YYYY - hh:mm A","M/D/YYYY - hh:mm A","MM/DD/YYYY hh:mm A","M/DD/YYYY hh:mm A","MM/D/YYYY hh:mm A","M/D/YYYY hh:mm A","MM/DD/YYYY HH:mm","M/DD/YYYY HH:mm","MM/D/YYYY HH:mm","M/D/YYYY HH:mm","MM/DD/YY - hh:mm A","M/DD/YY - hh:mm A","MM/D/YY - hh:mm A","M/D/YY - hh:mm A","MM/DD/YY hh:mm A","M/DD/YY hh:mm A","MM/D/YY hh:mm A","M/D/YY hh:mm A","MM/DD/YY HH:mm","M/DD/YY HH:mm","MM/D/YY HH:mm","M/D/YY HH:mm",...Me,"YYYY-MM-DDTHH:mm:ss.SSSZ","YYYY-MM-DDTHH:mm:ssZ"],$e=()=>Math.random().toString(36).substring(2,9),v=(u,d=!1)=>{if(!u)return null;const f=d?Ue:Me;for(const Y of f){const x=l(u,Y,!0);if(x.isValid())return x}const m=l(u);return m.isValid()?m:null},pe=(u,d)=>{const f=s.useRef(d);s.useEffect(()=>{f.current=d},[d]),s.useEffect(()=>{const m=Y=>f.current(Y);return document.addEventListener(u,m),()=>{document.removeEventListener(u,m)}},[u])},Ee=s.forwardRef(({label:u,value:d,required:f,isRequiredConditional:m=!1,disabled:Y,className:x=void 0,errorMessage:p,handleOnChange:D,showTime:o=!0,tags:he,needConfirm:be=!1,simpleMode:xe,originalCase:ge=!1,dateFormat:W=void 0,tooltip:X,isAiExtracted:Se=!1,confidenceScore:q,confidenceType:g="high",confidenceTooltip:V,sourceMeta:ye=[],onConfidenceScoreClick:ve,isGTN:R=!1,gtnName:J=null,shouldPopOnParent:Q=!1,allowTimezoneConversion:M=!0,inputStyle:Ae,labelClassName:Ie,isLiveField:Fe=!1,labelExtra:G,inputEmphasis:B="default",riskDetails:E,isRiskAnalysisOpen:L=!1,RiskDetailsCard:ee,onAddGTNToDocument:A,formatDateForGTN:N,...O},ke)=>{const{t:He}=qe.useTranslation(),P=!!(L&&E?.color),te=B==="modified"&&!p&&!P,ne=B==="deleted"&&!p&&!P,re=B==="success"&&!p&&!P,[I,_]=s.useState(!1),[se,h]=s.useState(null),[oe,T]=s.useState(null),[F,le]=s.useState(!1),c=W||(o?j:De),a=O?.id||`date-picker-${$e()}`,S=s.useRef(null),k=s.useRef(!1);pe("paste",e=>{document.activeElement?.id===a&&(e.preventDefault(),navigator.clipboard.readText().then(t=>{const r=v(t,o);r&&w(r)}))}),pe("keydown",e=>{if(e.key===Ye.ENTER&&document.activeElement instanceof HTMLInputElement&&document.activeElement.id===a){const t=v(document?.activeElement?.value,o);t&&w(t)}});const Ce=s.useCallback(e=>{if(!A)return;let t=e||"";if(N&&e)t=N(e,{skipTimezone:!0,withTime:o});else if(e){const i=l(e);i.isValid()&&(t=i.format(c))}A({key:J,value:t})},[A,J,N,o,c]),je=s.useCallback(()=>{const e=document.getElementsByClassName("ant-picker-footer")[0];e&&(e.style.display="none")},[]),y=s.useCallback(e=>{if(!M){const t=o?fe:me;if(D(e?e.format(t):null),e){const r=document.getElementById(a);if(r){const i=new CustomEvent("pilot-date-change",{bubbles:!0,detail:{selector:`#${a}`,value:e.format?e.format(c):e,type:"date-change",elementId:a}});r.dispatchEvent(i)}}return}if(e){let t;if(o?t=l(e).utc().toISOString():t=l(e).utc().add(l(e).utcOffset(),"minute").startOf("day").toISOString(),t){D(t);const r=document.getElementById(a);if(r){const i=new CustomEvent("pilot-date-change",{bubbles:!0,detail:{selector:`#${a}`,value:e.format(c),type:"date-change",elementId:a}});r.dispatchEvent(i)}}}else D(null)},[M,D,o,a,c]),ae=s.useCallback(e=>{if(!e)return null;if(!M)try{const t=l(e);if(t.isValid())return t;const r=l(e,c);return r.isValid()?r:null}catch{return null}if(o){const t=l(e);return l(t).isValid()?t:null}else if(e?.toString()?.includes("Z")){const t=l.utc(e);return l(t).isValid()?t:null}else{const t=l(e);return l(t).isValid()?t:null}},[M,c,o]),w=s.useCallback(e=>{if(e?.isValid()||e===null){h(e);const t=o?fe:me,r=M?e?.toISOString():e?e.format(t):"";if(D(r||null),e?.isValid()){const i=document.getElementById(a);if(i){const U=new CustomEvent("pilot-date-change",{bubbles:!0,detail:{selector:`#${a}`,value:e.format(c),type:"date-change",elementId:a}});i.dispatchEvent(U)}}}},[M,c,D,a,o]);s.useEffect(()=>{h(ae(d))},[d,ae]),s.useEffect(()=>{oe&&T(null)},[oe]),s.useEffect(()=>{const e=document.getElementById(a);if(!e)return;const t=r=>{const{value:i,type:U}=r.detail;if(U==="date-playback"&&i){const H=v(i,o);H&&H.isValid()&&(h(H),y(H),setTimeout(()=>{const $=e.querySelector("input");if($&&($.focus(),setTimeout(()=>{$.blur()},10)),S.current)try{const K=S.current;typeof K.blur=="function"&&K.blur()}catch{}setTimeout(()=>{document.querySelectorAll(".ant-picker-dropdown:not(.ant-picker-dropdown-hidden)").forEach(Z=>{Z instanceof HTMLElement&&(Z.style.display="none",Z.classList.add("ant-picker-dropdown-hidden"))})},50)},50))}};return e.addEventListener("pilot-date-playback",t),()=>{e.removeEventListener("pilot-date-playback",t)}},[a,c,y,o]);const ce=s.useCallback(e=>{if(e.key===Ye.ENTER&&!F){e.preventDefault(),e.stopPropagation();const t=e.target.closest("form");if(t){const r=t.querySelector('button[type="submit"]');r?r.click():t.requestSubmit()}}},[F]),ie=s.useCallback(e=>{if(e&&k.current){k.current=!1,le(!1);return}le(e),e||(k.current=!0,requestAnimationFrame(()=>{S.current?.focus(),requestAnimationFrame(()=>{k.current=!1})}))},[]);return xe?n.jsx("div",{onKeyDownCapture:ce,children:n.jsx(z.DatePicker,{...O,showTime:o,open:F,format:c,placeholder:c===j?"MM/DD/YYYY hh:mm":c,value:se,needConfirm:!1,onChange:e=>{h(e),y(e),T(e?.toISOString()||null)},className:x,showNow:!1,onFocus:je,onOpenChange:ie,onBlur:e=>{const t=e.target.value;if(t){const r=v(t,o);r&&w(r)}},ref:S,disabled:Y,id:a,getPopupContainer:Q?e=>e.parentElement:()=>document.body,styles:{popup:{root:{zIndex:9999}}}})}):n.jsxs("div",{ref:ke,className:C("flex gap-0.5 relative",I&&R?"border rounded-lg border-primary-100 bg-primary-50 p-1":""),onMouseEnter:()=>_(!0),onMouseLeave:()=>_(!1),children:[R&&!I?n.jsx("div",{className:"w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5"}):null,n.jsxs("div",{className:`w-full flex flex-col font-inter ${x||""}`,onKeyDownCapture:ce,children:[u||G?n.jsx("label",{className:`mb-1 text-xs font-medium text-gray-600 inline-flex items-center gap-1 ${ge?"":"capitalize"} ${Ie||""}`,children:n.jsxs("div",{className:"grid w-full grid-cols-[minmax(0,1fr)_auto] items-start gap-x-1",children:[n.jsxs("div",{className:"inline-flex min-w-0 items-center gap-1 flex-wrap",children:[(u||f||m)&&n.jsx(we.InputLabel,{label:u||"",required:f||!1,isRequiredConditional:m||!1}),Fe&&n.jsx(de.BoltOutlined,{sx:{fontSize:16,color:"var(--color-primary-600)",rotate:"15deg"}}),Se&&!b.shouldShowConfidenceScore(q)&&n.jsx(Pe.AIExtractedIndicator,{}),n.jsx(Oe.Label,{labels:he}),X&&n.jsx(ue,{placement:"top",title:X,children:n.jsx("div",{className:"cursor-pointer",children:n.jsx(Te.HelpIcon,{className:"w-icon-sm h-icon-sm"})})}),G]}),n.jsxs("div",{className:"flex items-center gap-1 justify-self-end",children:[b.shouldShowConfidenceScore(q)&&g?n.jsx(ue,{placement:"top-end",title:V??"",hideTooltip:V==null,className:"cursor-pointer",children:n.jsxs("div",{className:C("inline-flex min-w-[50px] items-center gap-1 rounded-md px-1 py-0.5",b.getConfidenceScoreBadgeClass(g)),onClick:()=>ve?.(ye),children:[n.jsx(_e.AIStarIcon,{size:12,fill:b.getConfidenceScoreBadgeColor(g),fillSecondary:b.getConfidenceScoreBadgeFill(g)}),n.jsxs("span",{className:C("text-xs font-medium leading-4",b.getConfidenceScoreBadgeTextColor(g)),children:[q,"%"]})]})}):null,R&&I&&A?n.jsx("button",{id:"btn-date-field-add-to-document",className:"cursor-pointer",onClick:()=>Ce(d),type:"button",children:n.jsx(z.Tooltip,{placement:"top",title:He("Add to document"),children:n.jsx(de.NoteAddOutlined,{className:"text-primary-600",sx:{fontSize:16}})})}):null]})]})}):null,n.jsx(z.DatePicker,{...O,showTime:o?{use12Hours:!0}:!1,open:F,format:c,placeholder:c===j?"MM/DD/YYYY - HH:MM":c,className:C("w-full h-8 text-sm font-medium dark:text-black-300",p&&"border-red-400",L&&E?.color&&`bg-${E.color}-50 border-${E.color}-300`,ne&&"!border-[var(--Error-200,#FECACA)] !bg-[var(--Error-50,#FEF2F2)] !text-[#475467]",te&&"!border-[var(--Warning-200,#FEDF89)] !bg-[var(--Warning-50,#FFFAEB)]",re&&"!border-[var(--Success-200,#BBF7D0)] !bg-[var(--Success-50,#F0FDF4)] !text-[#101828]"),styles:{root:{...Ae,borderRadius:"7px",...ne&&{borderColor:"var(--Error-200, #FECACA)",backgroundColor:"var(--Error-50, #FEF2F2)",color:"#475467"},...te&&{borderColor:"var(--Warning-200, #FEDF89)",backgroundColor:"var(--Warning-50, #FFFAEB)"},...re&&{borderColor:"var(--Success-200, #BBF7D0)",backgroundColor:"var(--Success-50, #F0FDF4)",color:"#101828"}},popup:{root:{zIndex:9999}}},showNow:!1,value:se,onChange:e=>{h(e),y(e),T(e?.toISOString()||null)},onBlur:e=>{const t=e.target.value;if(t){const r=v(t,o);r&&(h(r),y(r))}},needConfirm:be,ref:S,disabled:Y,inputReadOnly:!1,onOpenChange:ie,getPopupContainer:Q?e=>e.parentElement:()=>document.body,id:a,autoComplete:"off"}),p&&n.jsx(Ne.Typography,{className:"text-error-500 mt-1",appearance:"custom",size:"extra-small",variant:"medium",children:p})]}),I&&E&&L&&ee&&n.jsx("div",{role:"tooltip",tabIndex:0,className:"absolute left-0 right-0 top-[95%] mt-1 z-50 bg-white dark:bg-black-600 rounded-xl",onClick:e=>e.stopPropagation(),onMouseDown:e=>e.preventDefault(),onKeyDown:e=>{e.key==="Escape"&&_(!1)},children:n.jsx(ee,{riskDetails:E})})]})});Ee.displayName="DateTimeField";exports.DateTimeField=Ee;exports.UNIVERSAL_DATETIME_FORMAT=j;exports.UNIVERSAL_DATE_FORMAT=De;
|
|
2
2
|
//# sourceMappingURL=DateTimeField.cjs.js.map
|