@economic/taco 2.36.3 → 2.37.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/components/Table3/Table3.d.ts +6 -6
- package/dist/components/Table3/components/Columns/Internal/EditingActionsMenu.d.ts +1 -1
- package/dist/components/Table3/components/Row/Editing/CreateRowButton.d.ts +1 -1
- package/dist/components/Table3/features/useTableEditing.d.ts +3 -3
- package/dist/components/Table3/types.d.ts +5 -3
- package/dist/esm/packages/taco/src/components/Table3/Table3.js +2 -2
- package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateRowButton.js +4 -4
- package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateRowButton.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js +108 -52
- package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/useTable3.js +3 -3
- package/dist/esm/packages/taco/src/components/Table3/useTable3.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/util/editing.js +15 -2
- package/dist/esm/packages/taco/src/components/Table3/util/editing.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js +19 -4
- package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/EmptyStateBody.js +5 -2
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/EmptyStateBody.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +3 -2
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
- package/dist/esm/packages/taco/src/types.js.map +1 -1
- package/dist/primitives/Table/Core/components/Body/EmptyStateBody.d.ts +2 -1
- package/dist/primitives/Table/types.d.ts +6 -3
- package/dist/taco.cjs.development.js +160 -72
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/dist/types.d.ts +1 -0
- package/package.json +2 -2
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useTableEditing.js","sources":["../../../../../../../../src/components/Table3/features/useTableEditing.ts"],"sourcesContent":["import React from 'react';\nimport { Cell as ReactTableCell, Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { Table3EditingSaveHandler, Table3EditingValidatorFn } from '../types';\nimport { useGlobalKeyDown } from '../../../hooks/useGlobalKeyDown';\nimport { willRowMove } from '../util/editing';\nimport { TableRef } from '../../../primitives/Table/types';\n\nexport function useTableEditing<TType = unknown>(\n isEnabled = false,\n handleSave: Table3EditingSaveHandler<TType> | undefined,\n validator: Table3EditingValidatorFn<TType> | undefined\n) {\n // used to switch the table into editing mode\n const [isEditing, toggleEditing] = React.useState(false);\n\n // used to switch the editing between \"detailed\" mode\n const [isDetailedMode, toggleDetailedMode] = React.useState(false);\n\n // store the last focused cell, so that up/down arrow key navigation remains in the same column\n const [lastFocusedCellIndex, setLastFocusedCellIndex] = useLastFocusedCellIndex();\n\n // store pending changes for each row\n // changes are saved as soon as the active row changes, so in most cases this will only contain the active row's changes\n // but not always - if validation or server requests fail when saving, those rows remain until the failure is resolved\n const pendingChangesFns = usePendingChanges<TType>(isEnabled, handleSave, validator);\n\n useGlobalKeyDown(isEnabled && isEditing ? { key: 's', meta: true, shift: false } : undefined, event => {\n event.preventDefault();\n pendingChangesFns.saveChanges();\n });\n\n return {\n isEnabled,\n isEditing,\n isDetailedMode,\n toggleDetailedMode: isEnabled ? toggleDetailedMode : () => undefined,\n toggleEditing: isEnabled ? toggleEditing : () => undefined,\n lastFocusedCellIndex,\n setLastFocusedCellIndex,\n ...pendingChangesFns,\n };\n}\n\ntype SaveState = 'pending' | 'complete';\ntype PendingChange<TType = unknown> = Partial<TType> & {\n _meta: {\n original: TType;\n moveReason: Record<string, 'search' | 'sorting' | 'filter'>;\n errors: {\n row: string;\n cells: Record<string, string>;\n hasShownErrorAlert: boolean;\n };\n status?: SaveState;\n };\n};\n\nfunction usePendingChanges<TType = unknown>(\n isEnabled: boolean,\n handleSave: Table3EditingSaveHandler<TType> | undefined,\n validator: Table3EditingValidatorFn<TType> | undefined\n) {\n const [pendingChanges, setPendingChanges] = React.useState<Record<string, PendingChange<TType>>>({});\n // we maintain save status as separate state because 'complete' needs to briefly show after pendingChanges are deleted\n const [saveStates, setSaveState] = React.useState<Record<string, SaveState>>({});\n\n function getCellValue<T extends TType>(cell: ReactTableCell<T, unknown>): unknown | undefined {\n return pendingChanges[cell.row.id]?.[cell.column.id];\n }\n\n function getCellError<T extends TType>(cell: ReactTableCell<T, unknown>): string | undefined {\n return pendingChanges[cell.row.id]?._meta.errors?.cells?.[cell.column.id];\n }\n\n async function addCreatedRowChangeset(row) {\n const cells = row.getAllCells();\n\n setPendingChanges(currentChanges => {\n return cells.reduce((changes, cell) => {\n if (cell.getValue()) {\n return {\n ...changes,\n [cell.row.id]: {\n ...changes[cell.row.id],\n [cell.column.id]: cell.getValue(),\n _meta: {\n ...currentChanges[cell.row.id]?._meta,\n original: cell.row.original,\n moveReason: {\n ...currentChanges[cell.row.id]?._meta.moveReason,\n },\n errors: {\n ...currentChanges[cell.row.id]?._meta.errors,\n },\n },\n },\n };\n } else {\n return changes;\n }\n }, currentChanges);\n });\n }\n\n const setCellValue = React.useCallback(function <T extends TType>(\n cell: ReactTableCell<T, unknown>,\n change: unknown,\n rowIndex: number\n ) {\n setPendingChanges(currentChanges => {\n const nextChanges = { ...currentChanges };\n const rowChanges = {\n ...currentChanges[cell.row.id],\n _meta: {\n ...currentChanges[cell.row.id]?._meta,\n original: cell.row.original,\n moveReason: {\n ...currentChanges[cell.row.id]?._meta.moveReason,\n },\n errors: {\n ...currentChanges[cell.row.id]?._meta.errors,\n },\n },\n } as PendingChange<T>;\n\n // update if the change is different to the original (saved) value,\n // otherwise remove any change - no point saving the same value\n if (change !== cell.row.original[cell.column.id]) {\n rowChanges[cell.column.id] = change;\n\n // determine if the row will move position based on this change, and save why it will move\n const reason = willRowMove(cell, change, rowIndex);\n\n if (reason) {\n rowChanges._meta.moveReason[cell.column.id] = reason;\n } else {\n delete rowChanges._meta.moveReason[cell.column.id];\n }\n } else {\n delete rowChanges[cell.column.id];\n }\n\n // set the changes for the row...\n // or delete if there are no changes left, so that we don't store changes with unchanged data\n if (Object.keys(rowChanges).filter(k => k !== '_meta').length) {\n nextChanges[cell.row.id] = rowChanges;\n } else {\n delete nextChanges[cell.row.id];\n }\n\n return nextChanges;\n });\n },\n []);\n\n async function validateCell<T extends TType>(cell: ReactTableCell<T, unknown>) {\n if (!validator || !isEnabled) {\n return;\n }\n\n const changeSet = getChangesetFromChanges(pendingChanges[cell.row.id]);\n\n // only validate if the cell being blurred actually has any changes\n if (cell.column.id in changeSet) {\n const errors = ((await validator(changeSet)) ?? {}) as Record<string, string>;\n\n setPendingChanges(currentChanges => {\n const nextChanges = { ...currentChanges };\n nextChanges[cell.row.id]._meta = {\n ...nextChanges[cell.row.id]._meta,\n errors: {\n ...nextChanges[cell.row.id]._meta.errors,\n cells: errors,\n hasShownErrorAlert:\n Object.keys(errors).length && !nextChanges[cell.row.id]._meta.errors.hasShownErrorAlert\n ? false\n : nextChanges[cell.row.id]._meta.errors.hasShownErrorAlert,\n },\n };\n return nextChanges;\n });\n }\n }\n\n function hasRowErrors(rowId: string) {\n if (!isEnabled) {\n return false;\n }\n\n return (\n !!pendingChanges[rowId]?._meta.errors?.row || !!Object.keys(pendingChanges[rowId]?._meta.errors?.cells ?? {}).length\n );\n }\n\n function hasRowErrorsSeen(rowId: string) {\n if (!isEnabled) {\n return false;\n }\n\n return hasRowErrors(rowId) && !!pendingChanges[rowId]._meta.errors?.hasShownErrorAlert;\n }\n\n function setRowErrorsSeen(rowId: string) {\n if (pendingChanges[rowId]._meta.errors?.hasShownErrorAlert === false) {\n setPendingChanges(currentChanges => {\n const nextChanges = { ...currentChanges };\n nextChanges[rowId]._meta.errors = {\n ...nextChanges[rowId]._meta.errors,\n hasShownErrorAlert: true,\n };\n return nextChanges;\n });\n }\n }\n\n function getRowSaveStatus(rowId: string) {\n if (!isEnabled) {\n return false;\n }\n\n return saveStates[rowId];\n }\n\n function setRowSaveStatus(rowId: string, status: 'pending' | 'complete' | undefined) {\n setSaveState(currentStates => {\n const nextStates = { ...currentStates };\n\n if (status) {\n nextStates[rowId] = status;\n } else {\n delete nextStates[rowId];\n }\n\n return nextStates;\n });\n }\n\n function getRowMoveReason(rowId: string) {\n return pendingChanges[rowId]?._meta.moveReason ? Object.values(pendingChanges[rowId]._meta.moveReason)[0] : undefined;\n }\n\n function hasChanges(rowId?: string) {\n if (!isEnabled) {\n return false;\n }\n\n return rowId ? !!pendingChanges[rowId] : !!Object.keys(pendingChanges).length;\n }\n\n function hasErrors<T extends TType>(table: ReactTable<T>, tableRef: React.RefObject<TableRef>) {\n if (!isEnabled) {\n return false;\n }\n\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const focusIsInsideTable = tableRef.current?.contains(document.activeElement);\n\n let activeRow;\n\n if (tableMeta.rowActive.rowActiveIndex !== undefined) {\n activeRow = table.getRowModel().rows[tableMeta.rowActive.rowActiveIndex];\n }\n\n return Object.keys(\n getErrors().filter(error => {\n if (activeRow?.id && focusIsInsideTable) {\n return error.rowId === activeRow?.id ? error.pendingChange._meta.errors?.hasShownErrorAlert : true;\n }\n\n return true;\n })\n ).length;\n }\n\n function getErrors<T extends TType>() {\n return Object.keys(pendingChanges)\n .filter(hasRowErrors)\n .map(rowId => ({ rowId, pendingChange: pendingChanges[rowId] as PendingChange<T> }));\n }\n\n function resetChanges(rowId: string) {\n setPendingChanges(currentChanges => {\n const nextChanges = { ...currentChanges };\n delete nextChanges[rowId];\n return nextChanges;\n });\n }\n\n async function saveChanges(rowId: string | undefined = undefined) {\n if (!handleSave) {\n console.warn('Tried to save, but Table has no onSave handler');\n return;\n }\n\n // we save back to pendingChanges, so make a copy of it's state when save was triggered\n const changesToSave = rowId ? { [rowId]: pendingChanges[rowId] } : { ...pendingChanges };\n const changes = Object.keys(changesToSave);\n\n if (changes.length) {\n for (const rowId of changes) {\n const pendingChange = changesToSave[rowId];\n\n const changeSet = getChangesetFromChanges(pendingChange);\n try {\n if (getRowSaveStatus(rowId) === 'pending') return;\n\n // set saving = true\n setRowSaveStatus(rowId, 'pending');\n\n // re-run validation, maybe a cell is already invalid but has never been blurred\n if (validator) {\n const errors = await validator(changeSet);\n\n if (errors && Object.keys(errors).length) {\n throw errors;\n }\n }\n // send new data to the server\n await handleSave(changeSet);\n\n // cleanup changes, we don't need them after saving\n resetChanges(rowId);\n setRowSaveStatus(rowId, 'complete');\n } catch (error) {\n // the onSave handler should throw errors when something fails, e.g. validation, network errors etc\n // this code handles those errors and maps them either to row errors or cell specific errors\n let rowError;\n let cellErrors;\n\n if (typeof error === 'string') {\n rowError = error;\n } else if (error instanceof Error) {\n rowError = error.message;\n\n // most of our apis return error objects within this shape\n if (typeof (error as any).response?.data === 'object') {\n cellErrors = (error as any).response?.data;\n }\n } else if (typeof error === 'object') {\n cellErrors = error;\n }\n\n if (rowError || cellErrors) {\n setPendingChanges(currentChanges => {\n const nextChanges = { ...currentChanges };\n nextChanges[rowId]._meta.errors = {\n row: rowError,\n cells: cellErrors,\n hasShownErrorAlert: nextChanges[rowId]._meta.errors?.hasShownErrorAlert ?? false,\n };\n return nextChanges;\n });\n }\n\n setRowSaveStatus(rowId, undefined);\n }\n }\n }\n }\n\n return {\n getCellValue,\n getCellError,\n setCellValue,\n validateCell,\n addCreatedRowChangeset,\n hasChanges,\n hasErrors,\n getErrors,\n saveChanges,\n resetChanges,\n hasRowErrors,\n hasRowErrorsSeen,\n setRowErrorsSeen,\n getRowSaveStatus,\n setRowSaveStatus,\n getRowMoveReason,\n };\n}\n\nfunction useLastFocusedCellIndex(): [number | undefined, (index: number | undefined) => void] {\n // store the last focused cell, so that up/down arrow key navigation remains in the same column\n const lastFocusedCellIndexRef = React.useRef<number | undefined>(undefined);\n const setLastFocusedCellIndex = React.useCallback((index: number | undefined) => {\n lastFocusedCellIndexRef.current = index;\n }, []);\n\n return [lastFocusedCellIndexRef.current, setLastFocusedCellIndex];\n}\n\nfunction getChangesetFromChanges<TType = unknown>(changes: PendingChange<TType>): TType {\n // extract the original data from the row changes\n const { _meta, ...changeset } = changes ?? {};\n // and mix them in with the changes, ready to send to the server\n return { ..._meta?.original, ...changeset };\n}\n"],"names":["useTableEditing","isEnabled","handleSave","validator","isEditing","toggleEditing","React","useState","isDetailedMode","toggleDetailedMode","lastFocusedCellIndex","setLastFocusedCellIndex","useLastFocusedCellIndex","pendingChangesFns","usePendingChanges","useGlobalKeyDown","key","meta","shift","undefined","event","preventDefault","saveChanges","rowId","console","warn","Promise","resolve","changesToSave","pendingChanges","changes","Object","keys","length","_forOf","pendingChange","changeSet","getChangesetFromChanges","_catch","_temp3","_result","_exit","then","resetChanges","setRowSaveStatus","getRowSaveStatus","_temp2","errors","error","rowError","cellErrors","Error","_error$response","message","response","data","_error$response2","setPendingChanges","currentChanges","nextChanges","_meta","row","cells","hasShownErrorAlert","_nextChanges$rowId$_m","_nextChanges$rowId$_m2","e","reject","validateCell","cell","id","_temp","column","addCreatedRowChangeset","getAllCells","reduce","getValue","_currentChanges$cell$4","_currentChanges$cell$5","_currentChanges$cell$6","original","moveReason","saveStates","setSaveState","getCellValue","_pendingChanges$cell$","getCellError","_pendingChanges$cell$2","_pendingChanges$cell$3","_pendingChanges$cell$4","setCellValue","useCallback","change","rowIndex","rowChanges","_currentChanges$cell$","_currentChanges$cell$2","_currentChanges$cell$3","reason","willRowMove","filter","k","hasRowErrors","_pendingChanges$rowId","_pendingChanges$rowId2","_pendingChanges$rowId3","_pendingChanges$rowId4","_pendingChanges$rowId5","hasRowErrorsSeen","_pendingChanges$rowId6","setRowErrorsSeen","_pendingChanges$rowId7","status","currentStates","nextStates","getRowMoveReason","_pendingChanges$rowId8","values","hasChanges","hasErrors","table","tableRef","tableMeta","options","focusIsInsideTable","_tableRef$current","current","contains","document","activeElement","activeRow","rowActive","rowActiveIndex","getRowModel","rows","getErrors","_activeRow","_activeRow2","_error$pendingChange$","map","lastFocusedCellIndexRef","useRef","index","changeset"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"useTableEditing.js","sources":["../../../../../../../../src/components/Table3/features/useTableEditing.ts"],"sourcesContent":["import React from 'react';\nimport {\n Cell as ReactTableCell,\n Row as ReactTableRow,\n Table as ReactTable,\n TableMeta as ReactTableMeta,\n} from '@tanstack/react-table';\nimport { Table3EditingChangeHandler, Table3EditingSaveHandler, Table3EditingValidatorFn } from '../types';\nimport { useGlobalKeyDown } from '../../../hooks/useGlobalKeyDown';\nimport { willRowMove } from '../util/editing';\nimport { TableRef } from '../../../primitives/Table/types';\nimport { debounce } from 'lodash';\n\nexport function useTableEditing<TType = unknown>(\n isEnabled = false,\n handleSave: Table3EditingSaveHandler<TType> | undefined,\n handleChange: Table3EditingChangeHandler<TType> | undefined,\n validator: Table3EditingValidatorFn<TType> | undefined\n) {\n // used to switch the table into editing mode\n const [isEditing, toggleEditing] = React.useState(false);\n\n // used to switch the editing between \"detailed\" mode\n const [isDetailedMode, toggleDetailedMode] = React.useState(false);\n\n // store the last focused cell, so that up/down arrow key navigation remains in the same column\n const [lastFocusedCellIndex, setLastFocusedCellIndex] = useLastFocusedCellIndex();\n\n // store pending changes for each row\n // changes are saved as soon as the active row changes, so in most cases this will only contain the active row's changes\n // but not always - if validation or server requests fail when saving, those rows remain until the failure is resolved\n const pendingChangesFns = usePendingChanges<TType>(isEnabled, handleSave, handleChange, validator);\n\n useGlobalKeyDown(isEnabled && isEditing ? { key: 's', meta: true, shift: false } : undefined, event => {\n event.preventDefault();\n pendingChangesFns.saveChanges();\n });\n\n return {\n isEnabled,\n isEditing,\n isDetailedMode,\n toggleDetailedMode: isEnabled ? toggleDetailedMode : () => undefined,\n toggleEditing: isEnabled ? toggleEditing : () => undefined,\n lastFocusedCellIndex,\n setLastFocusedCellIndex,\n ...pendingChangesFns,\n };\n}\n\ntype SaveState = 'pending' | 'complete';\ntype PendingChange<TType = unknown> = Partial<TType> & {\n _meta: {\n original: TType;\n moveReason: Record<string, 'search' | 'sorting' | 'filter'>;\n errors: {\n row: string;\n cells: Record<string, string>;\n hasShownErrorAlert: boolean;\n };\n status?: SaveState;\n };\n};\n\ntype PendingChanges<TType = unknown> = Record<string, PendingChange<TType>>;\nfunction usePendingChanges<TType = unknown>(\n isEnabled: boolean,\n handleSave: Table3EditingSaveHandler<TType> | undefined,\n handleChange: Table3EditingChangeHandler<TType> | undefined,\n validator: Table3EditingValidatorFn<TType> | undefined\n) {\n const [pendingChanges, setPendingChanges] = React.useState<PendingChanges<TType>>({});\n // we maintain save status as separate state because 'complete' needs to briefly show after pendingChanges are deleted\n const [saveStates, setSaveState] = React.useState<Record<string, SaveState>>({});\n\n function getCellValue<T extends TType>(cell: ReactTableCell<T, unknown>): unknown | undefined {\n return pendingChanges[cell.row.id]?.[cell.column.id];\n }\n\n function getCellError<T extends TType>(cell: ReactTableCell<T, unknown>): string | undefined {\n return pendingChanges[cell.row.id]?._meta.errors?.cells?.[cell.column.id];\n }\n\n async function addCreatedRowChangeset(row) {\n const cells = row.getAllCells();\n\n setPendingChanges(currentChanges => {\n return cells.reduce((changes, cell) => {\n if (cell.getValue()) {\n return {\n ...changes,\n [cell.row.id]: {\n ...changes[cell.row.id],\n [cell.column.id]: cell.getValue(),\n _meta: {\n ...currentChanges[cell.row.id]?._meta,\n original: cell.row.original,\n moveReason: {\n ...currentChanges[cell.row.id]?._meta.moveReason,\n },\n errors: {\n ...currentChanges[cell.row.id]?._meta.errors,\n },\n },\n },\n };\n } else {\n return changes;\n }\n }, currentChanges);\n });\n }\n const pendingChangesUpdater = usePendingChangesUpdater(handleChange, setPendingChanges);\n\n async function setCellValue<T extends TType>(cell: ReactTableCell<T, unknown>, change: unknown, rowIndex: number) {\n const changes = {\n [cell.column.id]: change,\n } as Partial<T>;\n\n setPendingChanges(currentChanges => {\n const nextChanges = createPendingChangesSetter<T>(currentChanges as PendingChanges<T>, cell.row, rowIndex, changes);\n pendingChangesUpdater.syncCellChanges(nextChanges);\n return nextChanges;\n });\n pendingChangesUpdater.runCellUpdates<T>(changes, cell, rowIndex);\n }\n\n async function validateCell<T extends TType>(cell: ReactTableCell<T, unknown>) {\n if (!validator || !isEnabled) {\n return;\n }\n\n const changeSet = getChangesetFromChanges(pendingChanges[cell.row.id]);\n\n // only validate if the cell being blurred actually has any changes\n if (cell.column.id in changeSet) {\n const errors = ((await validator(changeSet)) ?? {}) as Record<string, string>;\n\n setPendingChanges(currentChanges => {\n const nextChanges = { ...currentChanges };\n nextChanges[cell.row.id]._meta = {\n ...nextChanges[cell.row.id]._meta,\n errors: {\n ...nextChanges[cell.row.id]._meta.errors,\n cells: errors,\n hasShownErrorAlert:\n Object.keys(errors).length && !nextChanges[cell.row.id]._meta.errors.hasShownErrorAlert\n ? false\n : nextChanges[cell.row.id]._meta.errors.hasShownErrorAlert,\n },\n };\n return nextChanges;\n });\n }\n }\n\n function hasRowErrors(rowId: string) {\n if (!isEnabled) {\n return false;\n }\n\n return (\n !!pendingChanges[rowId]?._meta.errors?.row || !!Object.keys(pendingChanges[rowId]?._meta.errors?.cells ?? {}).length\n );\n }\n\n function hasRowErrorsSeen(rowId: string) {\n if (!isEnabled) {\n return false;\n }\n\n return hasRowErrors(rowId) && !!pendingChanges[rowId]._meta.errors?.hasShownErrorAlert;\n }\n\n function setRowErrorsSeen(rowId: string) {\n if (pendingChanges[rowId]._meta.errors?.hasShownErrorAlert === false) {\n setPendingChanges(currentChanges => {\n const nextChanges = { ...currentChanges };\n nextChanges[rowId]._meta.errors = {\n ...nextChanges[rowId]._meta.errors,\n hasShownErrorAlert: true,\n };\n return nextChanges;\n });\n }\n }\n\n function getRowSaveStatus(rowId: string) {\n if (!isEnabled) {\n return false;\n }\n\n return saveStates[rowId];\n }\n\n function setRowSaveStatus(rowId: string, status: 'pending' | 'complete' | undefined) {\n setSaveState(currentStates => {\n const nextStates = { ...currentStates };\n\n if (status) {\n nextStates[rowId] = status;\n } else {\n delete nextStates[rowId];\n }\n\n return nextStates;\n });\n }\n\n function getRowMoveReason(rowId: string) {\n return pendingChanges[rowId]?._meta.moveReason ? Object.values(pendingChanges[rowId]._meta.moveReason)[0] : undefined;\n }\n\n function hasChanges(rowId?: string) {\n if (!isEnabled) {\n return false;\n }\n\n return rowId ? !!pendingChanges[rowId] : !!Object.keys(pendingChanges).length;\n }\n\n function hasErrors<T extends TType>(table: ReactTable<T>, tableRef: React.RefObject<TableRef>) {\n if (!isEnabled) {\n return false;\n }\n\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const focusIsInsideTable = tableRef.current?.contains(document.activeElement);\n\n let activeRow;\n\n if (tableMeta.rowActive.rowActiveIndex !== undefined) {\n activeRow = table.getRowModel().rows[tableMeta.rowActive.rowActiveIndex];\n }\n\n return Object.keys(\n getErrors().filter(error => {\n if (activeRow?.id && focusIsInsideTable) {\n return error.rowId === activeRow?.id ? error.pendingChange._meta.errors?.hasShownErrorAlert : true;\n }\n\n return true;\n })\n ).length;\n }\n\n function getErrors<T extends TType>() {\n return Object.keys(pendingChanges)\n .filter(hasRowErrors)\n .map(rowId => ({ rowId, pendingChange: pendingChanges[rowId] as PendingChange<T> }));\n }\n\n function resetChanges(rowId: string) {\n setPendingChanges(currentChanges => {\n const nextChanges = { ...currentChanges };\n delete nextChanges[rowId];\n return nextChanges;\n });\n }\n\n async function saveChanges(rowId: string | undefined = undefined) {\n if (!handleSave) {\n console.warn('Tried to save, but Table has no onEditingSave handler');\n return;\n }\n\n // we save back to pendingChanges, so make a copy of it's state when save was triggered\n const changesToSave = rowId ? { [rowId]: pendingChanges[rowId] } : { ...pendingChanges };\n const changes = Object.keys(changesToSave);\n\n if (changes.length) {\n for (const rowId of changes) {\n const pendingChange = changesToSave[rowId];\n\n const changeSet = getChangesetFromChanges(pendingChange);\n try {\n if (getRowSaveStatus(rowId) === 'pending') return;\n\n // set saving = true\n setRowSaveStatus(rowId, 'pending');\n\n // re-run validation, maybe a cell is already invalid but has never been blurred\n if (validator) {\n const errors = await validator(changeSet);\n\n if (errors && Object.keys(errors).length) {\n throw errors;\n }\n }\n // send new data to the server\n await handleSave(changeSet);\n\n // cleanup changes, we don't need them after saving\n resetChanges(rowId);\n setRowSaveStatus(rowId, 'complete');\n } catch (error) {\n // the onEditingSave handler should throw errors when something fails, e.g. validation, network errors etc\n // this code handles those errors and maps them either to row errors or cell specific errors\n let rowError;\n let cellErrors;\n\n if (typeof error === 'string') {\n rowError = error;\n } else if (error instanceof Error) {\n rowError = error.message;\n\n // most of our apis return error objects within this shape\n if (typeof (error as any).response?.data === 'object') {\n cellErrors = (error as any).response?.data;\n }\n } else if (typeof error === 'object') {\n cellErrors = error;\n }\n\n if (rowError || cellErrors) {\n setPendingChanges(currentChanges => {\n const nextChanges = { ...currentChanges };\n nextChanges[rowId]._meta.errors = {\n row: rowError,\n cells: cellErrors,\n hasShownErrorAlert: nextChanges[rowId]._meta.errors?.hasShownErrorAlert ?? false,\n };\n return nextChanges;\n });\n }\n\n setRowSaveStatus(rowId, undefined);\n }\n }\n }\n }\n\n return {\n getCellValue,\n getCellError,\n setCellValue,\n validateCell,\n addCreatedRowChangeset,\n hasChanges,\n hasErrors,\n getErrors,\n saveChanges,\n resetChanges,\n hasRowErrors,\n hasRowErrorsSeen,\n setRowErrorsSeen,\n getRowSaveStatus,\n setRowSaveStatus,\n getRowMoveReason,\n };\n}\n\nfunction useLastFocusedCellIndex(): [number | undefined, (index: number | undefined) => void] {\n // store the last focused cell, so that up/down arrow key navigation remains in the same column\n const lastFocusedCellIndexRef = React.useRef<number | undefined>(undefined);\n const setLastFocusedCellIndex = React.useCallback((index: number | undefined) => {\n lastFocusedCellIndexRef.current = index;\n }, []);\n\n return [lastFocusedCellIndexRef.current, setLastFocusedCellIndex];\n}\n\nfunction usePendingChangesUpdater<TType = unknown>(\n handleChange: Table3EditingChangeHandler<TType> | undefined,\n setPendingChanges: React.Dispatch<React.SetStateAction<PendingChanges<TType>>>\n) {\n const updatersRef = React.useRef<PendingChanges<TType>>({});\n\n const runCellUpdates = React.useCallback(\n debounce(async function <T extends TType>(changes: Partial<T>, cell: ReactTableCell<T, unknown>, rowIndex: number) {\n if (typeof handleChange === 'function') {\n const previousValues = {\n ...cell.row.original,\n ...getChangesetFromChanges(updatersRef.current[cell.row.id]),\n };\n const nextValues = {\n ...previousValues,\n ...changes,\n };\n const updates = await handleChange(cell.column.id, changes[cell.column.id], nextValues, previousValues);\n\n if (updates && Object.keys(updates).length) {\n setPendingChanges(currentChanges => createPendingChangesSetter(currentChanges, cell.row, rowIndex, updates));\n }\n }\n }, 250),\n []\n ) as unknown as <T extends TType>(changes: Partial<T>, cell: ReactTableCell<T, unknown>, rowIndex: number) => Promise<void>;\n\n function syncCellChanges<T extends TType>(changes: PendingChanges<T>) {\n updatersRef.current = changes;\n }\n\n return {\n syncCellChanges,\n runCellUpdates,\n };\n}\n\nfunction createPendingChangesSetter<TType = unknown>(\n currentChanges: PendingChanges<TType>,\n row: ReactTableRow<TType>,\n rowIndex: number,\n changes: Partial<TType>\n) {\n // prepare\n const nextChanges: PendingChanges<TType> = { ...currentChanges };\n const rowChanges = {\n ...currentChanges[row.id],\n _meta: {\n ...currentChanges[row.id]?._meta,\n original: row.original,\n moveReason: {\n ...currentChanges[row.id]?._meta.moveReason,\n },\n errors: {\n ...currentChanges[row.id]?._meta.errors,\n },\n },\n } as PendingChange<TType>;\n\n // run changes\n const cells = row._getAllCellsByColumnId();\n\n for (const [accessor, change] of Object.entries(changes)) {\n // update if the change is different to the original (saved) value,\n // otherwise remove any change - no point saving the same value\n if (change !== row.original[accessor]) {\n rowChanges[accessor] = change;\n\n // determine if the row will move position based on this change, and save why it will move\n const reason = willRowMove(cells[accessor], change, rowIndex);\n\n if (reason) {\n rowChanges._meta.moveReason[accessor] = reason;\n } else {\n delete rowChanges._meta.moveReason[accessor];\n }\n } else {\n delete rowChanges[accessor];\n delete rowChanges._meta.moveReason[accessor];\n }\n }\n\n // set changes\n // or delete if there are no changes left, so that we don't store changes with unchanged data\n if (Object.keys(rowChanges).filter(k => k !== '_meta').length) {\n nextChanges[row.id] = rowChanges;\n } else {\n delete nextChanges[row.id];\n }\n\n return nextChanges;\n}\n\nfunction getChangesetFromChanges<TType = unknown>(changes: PendingChange<TType>): TType {\n // extract the original data from the row changes\n const { _meta, ...changeset } = changes ?? {};\n // and mix them in with the changes, ready to send to the server\n return { ..._meta?.original, ...changeset };\n}\n"],"names":["useTableEditing","isEnabled","handleSave","handleChange","validator","isEditing","toggleEditing","React","useState","isDetailedMode","toggleDetailedMode","lastFocusedCellIndex","setLastFocusedCellIndex","useLastFocusedCellIndex","pendingChangesFns","usePendingChanges","useGlobalKeyDown","key","meta","shift","undefined","event","preventDefault","saveChanges","rowId","console","warn","Promise","resolve","changesToSave","pendingChanges","changes","Object","keys","length","_forOf","pendingChange","changeSet","getChangesetFromChanges","_catch","_temp3","_result","_exit","then","resetChanges","setRowSaveStatus","getRowSaveStatus","_temp2","errors","error","rowError","cellErrors","Error","_error$response","message","response","data","_error$response2","setPendingChanges","currentChanges","nextChanges","_meta","row","cells","hasShownErrorAlert","_nextChanges$rowId$_m","_nextChanges$rowId$_m2","e","reject","validateCell","cell","id","_temp","column","setCellValue","change","rowIndex","createPendingChangesSetter","pendingChangesUpdater","syncCellChanges","runCellUpdates","addCreatedRowChangeset","getAllCells","reduce","getValue","_currentChanges$cell$","_currentChanges$cell$2","_currentChanges$cell$3","original","moveReason","saveStates","setSaveState","getCellValue","_pendingChanges$cell$","getCellError","_pendingChanges$cell$2","_pendingChanges$cell$3","_pendingChanges$cell$4","usePendingChangesUpdater","hasRowErrors","_pendingChanges$rowId","_pendingChanges$rowId2","_pendingChanges$rowId3","_pendingChanges$rowId4","_pendingChanges$rowId5","hasRowErrorsSeen","_pendingChanges$rowId6","setRowErrorsSeen","_pendingChanges$rowId7","status","currentStates","nextStates","getRowMoveReason","_pendingChanges$rowId8","values","hasChanges","hasErrors","table","tableRef","tableMeta","options","focusIsInsideTable","_tableRef$current","current","contains","document","activeElement","activeRow","rowActive","rowActiveIndex","getRowModel","rows","getErrors","filter","_activeRow","_activeRow2","_error$pendingChange$","map","lastFocusedCellIndexRef","useRef","useCallback","index","updatersRef","debounce","previousValues","nextValues","updates","_temp4","rowChanges","_currentChanges$row$i","_currentChanges$row$i2","_currentChanges$row$i3","_getAllCellsByColumnId","accessor","entries","reason","willRowMove","k","changeset"],"mappings":"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"}
|
@@ -11,8 +11,8 @@ const RENDERERS = {
|
|
11
11
|
cell: Cell
|
12
12
|
};
|
13
13
|
function useTable3(props, ref) {
|
14
|
-
const editing = useTableEditing(props.enableEditing, props.
|
15
|
-
const creationEnabled = editing.isEnabled && !!props.
|
14
|
+
const editing = useTableEditing(props.enableEditing, props.onEditingSave, props.onEditingChange, props.validator);
|
15
|
+
const creationEnabled = editing.isEnabled && !!props.onEditingCreate;
|
16
16
|
const extendedProps = {
|
17
17
|
...props,
|
18
18
|
enableRowActions: editing.isEditing ? true : props.enableRowActions,
|
@@ -20,7 +20,7 @@ function useTable3(props, ref) {
|
|
20
20
|
hasChanges: editing.hasChanges(rowId),
|
21
21
|
hasErrors: editing.hasRowErrors(rowId),
|
22
22
|
onClear: () => editing.resetChanges(rowId),
|
23
|
-
|
23
|
+
onEditingSave: () => editing.saveChanges(rowId),
|
24
24
|
onExit: () => editing.toggleEditing(false),
|
25
25
|
isLastRow: !creationEnabled && table.meta.rowActive.rowActiveIndex === table.meta.length - 1
|
26
26
|
}))] : props.rowActions
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useTable3.js","sources":["../../../../../../../src/components/Table3/useTable3.tsx"],"sourcesContent":["import React from 'react';\nimport { RowData } from '@tanstack/react-table';\nimport { useTable } from '../../primitives/Table/Core/useTable';\nimport { useTableEditingListener } from './listeners/useTableEditingListener';\nimport { useTableEditing } from './features/useTableEditing';\nimport { Table3Props, Table3Ref } from './types';\nimport { TableRowActionRenderer } from '../../primitives/Table/types';\nimport { Cell } from './components/Columns/Cell/Cell';\nimport { EditingActionMenu } from './components/Columns/Internal/EditingActionsMenu';\nimport { Row } from './components/Row/Row';\n\nconst RENDERERS = {\n row: Row,\n cell: Cell,\n};\n\ndeclare module '@tanstack/table-core' {\n interface TableMeta<TData extends RowData> {\n editing: ReturnType<typeof useTableEditing>;\n }\n}\n\ntype Table3Meta = {\n editing: ReturnType<typeof useTableEditing>;\n};\n\nexport function useTable3<TType>(props: Table3Props<TType>, ref: React.Ref<Table3Ref>) {\n const editing = useTableEditing(props.enableEditing, props.
|
1
|
+
{"version":3,"file":"useTable3.js","sources":["../../../../../../../src/components/Table3/useTable3.tsx"],"sourcesContent":["import React from 'react';\nimport { RowData } from '@tanstack/react-table';\nimport { useTable } from '../../primitives/Table/Core/useTable';\nimport { useTableEditingListener } from './listeners/useTableEditingListener';\nimport { useTableEditing } from './features/useTableEditing';\nimport { Table3Props, Table3Ref } from './types';\nimport { TableRowActionRenderer } from '../../primitives/Table/types';\nimport { Cell } from './components/Columns/Cell/Cell';\nimport { EditingActionMenu } from './components/Columns/Internal/EditingActionsMenu';\nimport { Row } from './components/Row/Row';\n\nconst RENDERERS = {\n row: Row,\n cell: Cell,\n};\n\ndeclare module '@tanstack/table-core' {\n interface TableMeta<TData extends RowData> {\n editing: ReturnType<typeof useTableEditing>;\n }\n}\n\ntype Table3Meta = {\n editing: ReturnType<typeof useTableEditing>;\n};\n\nexport function useTable3<TType>(props: Table3Props<TType>, ref: React.Ref<Table3Ref>) {\n const editing = useTableEditing(props.enableEditing, props.onEditingSave, props.onEditingChange, props.validator);\n const creationEnabled = editing.isEnabled && !!props.onEditingCreate;\n\n const extendedProps: Table3Props<TType> = {\n ...props,\n enableRowActions: editing.isEditing ? true : props.enableRowActions,\n rowActions: editing.isEditing\n ? ([\n (_, rowId) => (\n <EditingActionMenu\n hasChanges={editing.hasChanges(rowId)}\n hasErrors={editing.hasRowErrors(rowId)}\n onClear={() => editing.resetChanges(rowId)}\n onEditingSave={() => editing.saveChanges(rowId)}\n onExit={() => editing.toggleEditing(false)}\n isLastRow={!creationEnabled && table.meta.rowActive.rowActiveIndex === table.meta.length - 1}\n />\n ),\n ] as TableRowActionRenderer<TType>[])\n : props.rowActions,\n };\n const meta = { editing };\n const table = useTable<TType, Table3Meta>(extendedProps, ref, RENDERERS, meta);\n\n // listeners\n useTableEditingListener<TType>(table.instance, table.ref);\n\n React.useEffect(() => {\n if (table.ref.current) {\n (table.ref.current as Table3Ref).instance.toggleEditing = (enabled: boolean | undefined) =>\n table.meta.editing.toggleEditing(enabled ?? (editing => !editing));\n }\n }, [table.ref.current]);\n\n return table;\n}\n"],"names":["RENDERERS","row","Row","cell","Cell","useTable3","props","ref","editing","useTableEditing","enableEditing","onEditingSave","onEditingChange","validator","creationEnabled","isEnabled","onEditingCreate","extendedProps","enableRowActions","isEditing","rowActions","_","rowId","React","EditingActionMenu","hasChanges","hasErrors","hasRowErrors","onClear","resetChanges","saveChanges","onExit","toggleEditing","isLastRow","table","meta","rowActive","rowActiveIndex","length","useTable","useTableEditingListener","instance","useEffect","current","enabled"],"mappings":";;;;;;;;AAWA,MAAMA,SAAS,GAAG;EACdC,GAAG,EAAEC,GAAG;EACRC,IAAI,EAAEC;CACT;SAYeC,SAASA,CAAQC,KAAyB,EAAEC,GAAyB;EACjF,MAAMC,OAAO,GAAGC,eAAe,CAACH,KAAK,CAACI,aAAa,EAAEJ,KAAK,CAACK,aAAa,EAAEL,KAAK,CAACM,eAAe,EAAEN,KAAK,CAACO,SAAS,CAAC;EACjH,MAAMC,eAAe,GAAGN,OAAO,CAACO,SAAS,IAAI,CAAC,CAACT,KAAK,CAACU,eAAe;EAEpE,MAAMC,aAAa,GAAuB;IACtC,GAAGX,KAAK;IACRY,gBAAgB,EAAEV,OAAO,CAACW,SAAS,GAAG,IAAI,GAAGb,KAAK,CAACY,gBAAgB;IACnEE,UAAU,EAAEZ,OAAO,CAACW,SAAS,GACtB,CACG,CAACE,CAAC,EAAEC,KAAK,oBACLC,6BAACC,iBAAiB;MACdC,UAAU,EAAEjB,OAAO,CAACiB,UAAU,CAACH,KAAK,CAAC;MACrCI,SAAS,EAAElB,OAAO,CAACmB,YAAY,CAACL,KAAK,CAAC;MACtCM,OAAO,EAAEA,MAAMpB,OAAO,CAACqB,YAAY,CAACP,KAAK,CAAC;MAC1CX,aAAa,EAAEA,MAAMH,OAAO,CAACsB,WAAW,CAACR,KAAK,CAAC;MAC/CS,MAAM,EAAEA,MAAMvB,OAAO,CAACwB,aAAa,CAAC,KAAK,CAAC;MAC1CC,SAAS,EAAE,CAACnB,eAAe,IAAIoB,KAAK,CAACC,IAAI,CAACC,SAAS,CAACC,cAAc,KAAKH,KAAK,CAACC,IAAI,CAACG,MAAM,GAAG;MAC7F,CACL,CACgC,GACrChC,KAAK,CAACc;GACf;EACD,MAAMe,IAAI,GAAG;IAAE3B;GAAS;EACxB,MAAM0B,KAAK,GAAGK,QAAQ,CAAoBtB,aAAa,EAAEV,GAAG,EAAEP,SAAS,EAAEmC,IAAI,CAAC;;EAG9EK,uBAAuB,CAAQN,KAAK,CAACO,QAAQ,EAAEP,KAAK,CAAC3B,GAAG,CAAC;EAEzDgB,cAAK,CAACmB,SAAS,CAAC;IACZ,IAAIR,KAAK,CAAC3B,GAAG,CAACoC,OAAO,EAAE;MAClBT,KAAK,CAAC3B,GAAG,CAACoC,OAAqB,CAACF,QAAQ,CAACT,aAAa,GAAIY,OAA4B,IACnFV,KAAK,CAACC,IAAI,CAAC3B,OAAO,CAACwB,aAAa,CAACY,OAAO,aAAPA,OAAO,cAAPA,OAAO,GAAKpC,OAAO,IAAI,CAACA,OAAQ,CAAC;;GAE7E,EAAE,CAAC0B,KAAK,CAAC3B,GAAG,CAACoC,OAAO,CAAC,CAAC;EAEvB,OAAOT,KAAK;AAChB;;;;"}
|
@@ -58,9 +58,22 @@ function willRowMoveAfterSorting(cell, change, rowIndex) {
|
|
58
58
|
if (rowIndex < rows.length - 1) {
|
59
59
|
miniSortRows.push(rows[rowIndex + 1]);
|
60
60
|
}
|
61
|
-
|
61
|
+
const resortedRows = [...miniSortRows].sort((rowA, rowB) => {
|
62
|
+
const sortFn = cell.column.getSortingFn();
|
63
|
+
const sortUndefined = cell.column.columnDef.sortUndefined;
|
64
|
+
if (!table.options.manualSorting && sortUndefined) {
|
65
|
+
const aValue = rowA.getValue(cell.column.id);
|
66
|
+
const bValue = rowB.getValue(cell.column.id);
|
67
|
+
const aUndefined = aValue === undefined;
|
68
|
+
const bUndefined = bValue === undefined;
|
69
|
+
if (aUndefined || bUndefined) {
|
70
|
+
return aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
return sortFn(rowA, rowB, cell.column.id);
|
74
|
+
});
|
62
75
|
if (cell.column.getIsSorted() === 'desc') {
|
63
|
-
resortedRows
|
76
|
+
resortedRows.reverse();
|
64
77
|
}
|
65
78
|
return ((_resortedRows$index = resortedRows[index]) === null || _resortedRows$index === void 0 ? void 0 : _resortedRows$index.id) !== cell.row.id;
|
66
79
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"editing.js","sources":["../../../../../../../../src/components/Table3/util/editing.ts"],"sourcesContent":["import { Cell as ReactTableCell, Row as ReactTableRow, Table as ReactTable } from '@tanstack/react-table';\nimport { TableFilterValue } from '../../../primitives/Table/types';\nimport { columnFilterFn, globalFilterFn } from '../../../primitives/Table/useTableManager/util/filtering';\n\nexport function willRowMove<TType = unknown>(cell: ReactTableCell<TType, unknown>, change: unknown, rowIndex: number) {\n const { table } = cell.getContext();\n\n if (willRowMoveAfterSearch<TType>(cell, change, table)) {\n return 'search';\n } else if (willRowMoveAfterFilter<TType>(cell, change)) {\n return 'filter';\n } else if (willRowMoveAfterSorting<TType>(cell, change, rowIndex)) {\n return 'sorting';\n }\n\n return undefined;\n}\n\nfunction willRowMoveAfterSearch<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n change: unknown,\n table: ReactTable<TType>\n) {\n const searchQuery = table.getState().globalFilter;\n\n if (!table.options.enableGlobalFilter || !searchQuery) {\n return false;\n }\n\n const rowWithChange = { ...cell.row, original: { ...cell.row.original, [cell.column.id]: change } };\n return !globalFilterFn(rowWithChange, cell.column.id, searchQuery);\n}\n\nfunction willRowMoveAfterFilter<TType = unknown>(cell: ReactTableCell<TType, unknown>, change: unknown) {\n if (!cell.column.getIsFiltered()) {\n return false;\n }\n\n return !columnFilterFn(change, cell.column.getFilterValue() as TableFilterValue);\n}\n\nfunction willRowMoveAfterSorting<TType = unknown>(cell: ReactTableCell<TType, unknown>, change: unknown, rowIndex: number) {\n if (!cell.column.getIsSorted()) {\n return false;\n }\n\n const { table } = cell.getContext();\n const rows = table.getRowModel().rows;\n\n const miniSortRows: ReactTableRow<TType>[] = [\n {\n ...cell.row,\n original: {\n ...cell.row.original,\n [cell.column.id]: change,\n },\n getValue: () => change as any,\n },\n ];\n\n let index = 0;\n\n if (rowIndex > 0) {\n miniSortRows.unshift(rows[rowIndex - 1]);\n index = 1;\n }\n\n if (rowIndex < rows.length - 1) {\n miniSortRows.push(rows[rowIndex + 1]);\n }\n\n
|
1
|
+
{"version":3,"file":"editing.js","sources":["../../../../../../../../src/components/Table3/util/editing.ts"],"sourcesContent":["import { Cell as ReactTableCell, Row as ReactTableRow, Table as ReactTable } from '@tanstack/react-table';\nimport { TableFilterValue } from '../../../primitives/Table/types';\nimport { columnFilterFn, globalFilterFn } from '../../../primitives/Table/useTableManager/util/filtering';\n\nexport function willRowMove<TType = unknown>(cell: ReactTableCell<TType, unknown>, change: unknown, rowIndex: number) {\n const { table } = cell.getContext();\n\n if (willRowMoveAfterSearch<TType>(cell, change, table)) {\n return 'search';\n } else if (willRowMoveAfterFilter<TType>(cell, change)) {\n return 'filter';\n } else if (willRowMoveAfterSorting<TType>(cell, change, rowIndex)) {\n return 'sorting';\n }\n\n return undefined;\n}\n\nfunction willRowMoveAfterSearch<TType = unknown>(\n cell: ReactTableCell<TType, unknown>,\n change: unknown,\n table: ReactTable<TType>\n) {\n const searchQuery = table.getState().globalFilter;\n\n if (!table.options.enableGlobalFilter || !searchQuery) {\n return false;\n }\n\n const rowWithChange = { ...cell.row, original: { ...cell.row.original, [cell.column.id]: change } };\n return !globalFilterFn(rowWithChange, cell.column.id, searchQuery);\n}\n\nfunction willRowMoveAfterFilter<TType = unknown>(cell: ReactTableCell<TType, unknown>, change: unknown) {\n if (!cell.column.getIsFiltered()) {\n return false;\n }\n\n return !columnFilterFn(change, cell.column.getFilterValue() as TableFilterValue);\n}\n\nfunction willRowMoveAfterSorting<TType = unknown>(cell: ReactTableCell<TType, unknown>, change: unknown, rowIndex: number) {\n if (!cell.column.getIsSorted()) {\n return false;\n }\n\n const { table } = cell.getContext();\n const rows = table.getRowModel().rows;\n\n const miniSortRows: ReactTableRow<TType>[] = [\n {\n ...cell.row,\n original: {\n ...cell.row.original,\n [cell.column.id]: change,\n },\n getValue: () => change as any,\n },\n ];\n\n let index = 0;\n\n if (rowIndex > 0) {\n miniSortRows.unshift(rows[rowIndex - 1]);\n index = 1;\n }\n\n if (rowIndex < rows.length - 1) {\n miniSortRows.push(rows[rowIndex + 1]);\n }\n\n const resortedRows = [...miniSortRows].sort((rowA, rowB) => {\n const sortFn = cell.column.getSortingFn();\n const sortUndefined = cell.column.columnDef.sortUndefined;\n\n if (!table.options.manualSorting && sortUndefined) {\n const aValue = rowA.getValue(cell.column.id);\n const bValue = rowB.getValue(cell.column.id);\n\n const aUndefined = aValue === undefined;\n const bUndefined = bValue === undefined;\n\n if (aUndefined || bUndefined) {\n return aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;\n }\n }\n\n return sortFn(rowA, rowB, cell.column.id);\n });\n\n if (cell.column.getIsSorted() === 'desc') {\n resortedRows.reverse();\n }\n\n return resortedRows[index]?.id !== cell.row.id;\n}\n\nexport function animateCreateRow(id) {\n const templateRow = document.querySelector(`[data-row-id=\"${id}\"]`);\n\n if (templateRow) {\n (templateRow.querySelector(':first-child') as HTMLElement)?.focus();\n templateRow.scrollIntoView();\n\n const keyframes = [{ background: '#b2c7ef' }, { background: '#ebebeb' }];\n\n for (const child of templateRow.children) {\n child.animate(keyframes, { duration: 1000, easing: 'ease-out' });\n }\n }\n}\n"],"names":["willRowMove","cell","change","rowIndex","table","getContext","willRowMoveAfterSearch","willRowMoveAfterFilter","willRowMoveAfterSorting","undefined","searchQuery","getState","globalFilter","options","enableGlobalFilter","rowWithChange","row","original","column","id","globalFilterFn","getIsFiltered","columnFilterFn","getFilterValue","getIsSorted","rows","getRowModel","miniSortRows","getValue","index","unshift","length","push","resortedRows","sort","rowA","rowB","sortFn","getSortingFn","sortUndefined","columnDef","manualSorting","aValue","bValue","aUndefined","bUndefined","reverse","_resortedRows$index","animateCreateRow","templateRow","document","querySelector","_templateRow$querySel","focus","scrollIntoView","keyframes","background","child","children","animate","duration","easing"],"mappings":"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"}
|
@@ -11,6 +11,19 @@ function Table(props) {
|
|
11
11
|
}
|
12
12
|
Table.Toolbar = TableToolbar;
|
13
13
|
Table.Grid = TableGrid;
|
14
|
+
function getFilterReason(table) {
|
15
|
+
if (table.instance.getFilteredRowModel().rows.length === 0 && table.instance.getCoreRowModel().rows.length !== 0) {
|
16
|
+
const state = table.instance.getState();
|
17
|
+
if (table.meta.search.enableGlobalFilter && !!state.globalFilter) {
|
18
|
+
return 'searching';
|
19
|
+
}
|
20
|
+
return 'filtering';
|
21
|
+
}
|
22
|
+
if (table.instance.getCoreRowModel().rows.length === 0) {
|
23
|
+
return 'empty';
|
24
|
+
}
|
25
|
+
return null;
|
26
|
+
}
|
14
27
|
function TableGrid(props) {
|
15
28
|
var _table$state$grouping;
|
16
29
|
const {
|
@@ -21,6 +34,7 @@ function TableGrid(props) {
|
|
21
34
|
const handleFocus = table.meta.rowActive.rowActiveIndex === undefined ? event => {
|
22
35
|
table.meta.rowActive.handleFocus(event, table.meta.length, table.renderer.scrollToIndex);
|
23
36
|
} : undefined;
|
37
|
+
const filterReason = getFilterReason(table);
|
24
38
|
return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("style", null, table.stylesheet), /*#__PURE__*/React__default.createElement(FocusScope, null, /*#__PURE__*/React__default.createElement("table", Object.assign({}, attributes, {
|
25
39
|
id: table.id,
|
26
40
|
"data-table-font-size": table.meta.fontSize.size,
|
@@ -41,7 +55,10 @@ function TableGrid(props) {
|
|
41
55
|
key: props.id,
|
42
56
|
header: props,
|
43
57
|
scrollToIndex: table.renderer.scrollToIndex
|
44
|
-
}))))))),
|
58
|
+
}))))))), filterReason ? ( /*#__PURE__*/React__default.createElement(EmptyStateBody, {
|
59
|
+
emptyState: props.table.props.emptyState,
|
60
|
+
reason: filterReason
|
61
|
+
})) : ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Body, {
|
45
62
|
enableHorizontalArrowKeyNavigation: enableHorizontalArrowKeyNavigation,
|
46
63
|
table: table.instance,
|
47
64
|
tableElement: table.ref.current,
|
@@ -52,9 +69,7 @@ function TableGrid(props) {
|
|
52
69
|
} : table.renderer.style
|
53
70
|
}, table.renderer.rows, props.children), table.meta.footer.isEnabled ? /*#__PURE__*/React__default.createElement(Foot, {
|
54
71
|
table: table.instance
|
55
|
-
}) : null))
|
56
|
-
emptyState: table.props.emptyState
|
57
|
-
})))));
|
72
|
+
}) : null)))));
|
58
73
|
}
|
59
74
|
|
60
75
|
export { Table, TableGrid };
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Table.js","sources":["../../../../../../../../src/primitives/Table/Core/Table.tsx"],"sourcesContent":["import React from 'react';\nimport { FocusScope } from '@react-aria/focus';\nimport { Header } from './components/Header/Header';\nimport { Body } from './components/Body/Body';\nimport { Foot } from './components/Footer/Footer';\nimport { EmptyStateBody } from './components/Body/EmptyStateBody';\nimport { useTableReturnValue } from './useTable';\nimport { TableToolbar } from './components/Toolbar/Toolbar';\nimport './style.css';\n\ntype TableProps = {\n children: JSX.Element | Array<JSX.Element | null>;\n};\n\nexport function Table(props: TableProps) {\n return <>{props.children}</>;\n}\nTable.Toolbar = TableToolbar;\nTable.Grid = TableGrid;\n\nexport type TableGridProps<TType = unknown> = React.TableHTMLAttributes<HTMLTableElement> & {\n 'data-taco': string;\n enableHorizontalArrowKeyNavigation?: boolean;\n table: useTableReturnValue<TType>;\n};\n\nexport function TableGrid<TType = unknown>(props: TableGridProps<TType>) {\n const { enableHorizontalArrowKeyNavigation, table, ...attributes } = props;\n const handleFocus =\n table.meta.rowActive.rowActiveIndex === undefined\n ? (event: React.FocusEvent) => {\n table.meta.rowActive.handleFocus(event, table.meta.length, table.renderer.scrollToIndex);\n }\n : undefined;\n\n return (\n <>\n <style>{table.stylesheet}</style>\n <FocusScope>\n <table\n {...attributes}\n id={table.id}\n data-table-font-size={table.meta.fontSize.size}\n data-table-grouped={!!table.state.grouping?.length}\n data-table-horizontally-scrolled={table.meta.columnFreezing.isHorizontallyScrolled ? true : undefined}\n data-table-status={table.meta.server.isEnabled ? (table.meta.server.isReady ? 'ready' : undefined) : 'ready'}\n data-table-pause-hover={table.meta.rowActive.isHoverStatePaused ? true : undefined}\n data-table-resizing={table.state.columnSizingInfo.isResizingColumn ? true : undefined}\n data-table-row-height={table.meta.rowHeight.height}\n onFocus={handleFocus}\n onScroll={table.meta.columnFreezing.handleScroll}\n ref={table.ref}\n style={table.style}\n tabIndex={-1}>\n <thead>\n {table.instance.getHeaderGroups().map(headerGroup => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map(props => (\n <Header key={props.id} header={props} scrollToIndex={table.renderer.scrollToIndex} />\n ))}\n </tr>\n ))}\n </thead>\n {table.
|
1
|
+
{"version":3,"file":"Table.js","sources":["../../../../../../../../src/primitives/Table/Core/Table.tsx"],"sourcesContent":["import React from 'react';\nimport { FocusScope } from '@react-aria/focus';\nimport { Header } from './components/Header/Header';\nimport { Body } from './components/Body/Body';\nimport { Foot } from './components/Footer/Footer';\nimport { EmptyStateBody } from './components/Body/EmptyStateBody';\nimport { useTableReturnValue } from './useTable';\nimport { TableToolbar } from './components/Toolbar/Toolbar';\nimport './style.css';\nimport { TableEmptyStateReason } from '../types';\n\ntype TableProps = {\n children: JSX.Element | Array<JSX.Element | null>;\n};\n\nexport function Table(props: TableProps) {\n return <>{props.children}</>;\n}\nTable.Toolbar = TableToolbar;\nTable.Grid = TableGrid;\n\nexport type TableGridProps<TType = unknown> = React.TableHTMLAttributes<HTMLTableElement> & {\n 'data-taco': string;\n enableHorizontalArrowKeyNavigation?: boolean;\n table: useTableReturnValue<TType>;\n};\n\nfunction getFilterReason<TType = unknown>(table: useTableReturnValue<TType>): TableEmptyStateReason | null {\n if (table.instance.getFilteredRowModel().rows.length === 0 && table.instance.getCoreRowModel().rows.length !== 0) {\n const state = table.instance.getState();\n\n if (table.meta.search.enableGlobalFilter && !!state.globalFilter) {\n return 'searching';\n }\n\n return 'filtering';\n }\n if (table.instance.getCoreRowModel().rows.length === 0) {\n return 'empty';\n }\n\n return null;\n}\n\nexport function TableGrid<TType = unknown>(props: TableGridProps<TType>) {\n const { enableHorizontalArrowKeyNavigation, table, ...attributes } = props;\n const handleFocus =\n table.meta.rowActive.rowActiveIndex === undefined\n ? (event: React.FocusEvent) => {\n table.meta.rowActive.handleFocus(event, table.meta.length, table.renderer.scrollToIndex);\n }\n : undefined;\n const filterReason = getFilterReason(table);\n\n return (\n <>\n <style>{table.stylesheet}</style>\n <FocusScope>\n <table\n {...attributes}\n id={table.id}\n data-table-font-size={table.meta.fontSize.size}\n data-table-grouped={!!table.state.grouping?.length}\n data-table-horizontally-scrolled={table.meta.columnFreezing.isHorizontallyScrolled ? true : undefined}\n data-table-status={table.meta.server.isEnabled ? (table.meta.server.isReady ? 'ready' : undefined) : 'ready'}\n data-table-pause-hover={table.meta.rowActive.isHoverStatePaused ? true : undefined}\n data-table-resizing={table.state.columnSizingInfo.isResizingColumn ? true : undefined}\n data-table-row-height={table.meta.rowHeight.height}\n onFocus={handleFocus}\n onScroll={table.meta.columnFreezing.handleScroll}\n ref={table.ref}\n style={table.style}\n tabIndex={-1}>\n <thead>\n {table.instance.getHeaderGroups().map(headerGroup => (\n <tr key={headerGroup.id}>\n {headerGroup.headers.map(props => (\n <Header key={props.id} header={props} scrollToIndex={table.renderer.scrollToIndex} />\n ))}\n </tr>\n ))}\n </thead>\n {filterReason ? (\n <EmptyStateBody emptyState={props.table.props.emptyState} reason={filterReason} />\n ) : (\n <>\n <Body\n enableHorizontalArrowKeyNavigation={enableHorizontalArrowKeyNavigation}\n table={table.instance}\n tableElement={table.ref.current}\n scrollToIndex={table.renderer.scrollToIndex}\n style={\n props.children\n ? { ...table.renderer.style, height: (table.renderer.style.height as number) + 41 }\n : table.renderer.style\n }>\n {table.renderer.rows}\n {props.children}\n </Body>\n {table.meta.footer.isEnabled ? <Foot table={table.instance} /> : null}\n </>\n )}\n </table>\n </FocusScope>\n </>\n );\n}\n"],"names":["Table","props","React","children","Toolbar","TableToolbar","Grid","TableGrid","getFilterReason","table","instance","getFilteredRowModel","rows","length","getCoreRowModel","state","getState","meta","search","enableGlobalFilter","globalFilter","enableHorizontalArrowKeyNavigation","attributes","handleFocus","rowActive","rowActiveIndex","undefined","event","renderer","scrollToIndex","filterReason","stylesheet","FocusScope","id","fontSize","size","_table$state$grouping","grouping","columnFreezing","isHorizontallyScrolled","server","isEnabled","isReady","isHoverStatePaused","columnSizingInfo","isResizingColumn","rowHeight","height","onFocus","onScroll","handleScroll","ref","style","tabIndex","getHeaderGroups","map","headerGroup","key","headers","Header","header","EmptyStateBody","emptyState","reason","Body","tableElement","current","footer","Foot"],"mappings":"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"}
|
@@ -2,7 +2,8 @@ import React__default from 'react';
|
|
2
2
|
|
3
3
|
function EmptyStateBody(props) {
|
4
4
|
const {
|
5
|
-
emptyState: Placeholder
|
5
|
+
emptyState: Placeholder,
|
6
|
+
reason,
|
6
7
|
...attributes
|
7
8
|
} = props;
|
8
9
|
return /*#__PURE__*/React__default.createElement("tbody", Object.assign({}, attributes, {
|
@@ -11,7 +12,9 @@ function EmptyStateBody(props) {
|
|
11
12
|
className: "!auto-rows-fr"
|
12
13
|
}, /*#__PURE__*/React__default.createElement("td", {
|
13
14
|
className: "col-span-full !border-0 !p-0 hover:!bg-white"
|
14
|
-
}, Placeholder ? /*#__PURE__*/React__default.createElement(Placeholder,
|
15
|
+
}, Placeholder ? /*#__PURE__*/React__default.createElement(Placeholder, {
|
16
|
+
reason: reason
|
17
|
+
}) : undefined)));
|
15
18
|
}
|
16
19
|
|
17
20
|
export { EmptyStateBody };
|
package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/EmptyStateBody.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"EmptyStateBody.js","sources":["../../../../../../../../../../src/primitives/Table/Core/components/Body/EmptyStateBody.tsx"],"sourcesContent":["import React from 'react';\nimport { TableEmptyStateRenderer } from '../../../types';\n\ntype EmptyStateProps = React.HTMLAttributes<HTMLTableSectionElement> & {\n emptyState?: TableEmptyStateRenderer;\n};\n\nexport function EmptyStateBody(props: EmptyStateProps) {\n const { emptyState: Placeholder
|
1
|
+
{"version":3,"file":"EmptyStateBody.js","sources":["../../../../../../../../../../src/primitives/Table/Core/components/Body/EmptyStateBody.tsx"],"sourcesContent":["import React from 'react';\nimport { TableEmptyStateReason, TableEmptyStateRenderer } from '../../../types';\n\ntype EmptyStateProps = React.HTMLAttributes<HTMLTableSectionElement> & {\n emptyState?: TableEmptyStateRenderer;\n reason: TableEmptyStateReason;\n};\n\nexport function EmptyStateBody(props: EmptyStateProps) {\n const { emptyState: Placeholder, reason, ...attributes } = props;\n\n return (\n <tbody {...attributes} className=\"!auto-rows-fr\">\n <tr className=\"!auto-rows-fr\">\n <td className=\"col-span-full !border-0 !p-0 hover:!bg-white\">\n {Placeholder ? <Placeholder reason={reason} /> : undefined}\n </td>\n </tr>\n </tbody>\n );\n}\n"],"names":["EmptyStateBody","props","emptyState","Placeholder","reason","attributes","React","className","undefined"],"mappings":";;SAQgBA,cAAcA,CAACC,KAAsB;EACjD,MAAM;IAAEC,UAAU,EAAEC,WAAW;IAAEC,MAAM;IAAE,GAAGC;GAAY,GAAGJ,KAAK;EAEhE,oBACIK,wDAAWD,UAAU;IAAEE,SAAS,EAAC;mBAC7BD;IAAIC,SAAS,EAAC;kBACVD;IAAIC,SAAS,EAAC;KACTJ,WAAW,gBAAGG,6BAACH,WAAW;IAACC,MAAM,EAAEA;IAAU,GAAGI,SAAS,CACzD,CACJ,CACD;AAEhB;;;;"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../../../../src/primitives/Table/types.ts"],"sourcesContent":["import {\n ColumnFilter as ReactTableColumnFilter,\n ColumnFiltersState as ReactTableColumnFilterState,\n ColumnOrderState as ReactTableColumnOrderState,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSort as ReactTableColumnSort,\n ColumnSizingState as ReactTableColumnSizingState,\n VisibilityState as ReactTableColumnVisibilityState,\n SortingState as ReactTableSortingState,\n BuiltInAggregationFn as ReactTableBuiltInAggregationFn,\n BuiltInSortingFn as ReactTableBuiltInSortingFn,\n} from '@tanstack/react-table';\nimport { FontSize, FontSizes, ValueOf } from '../../types';\nimport { MenuItemProps } from '../../components/Menu/components/Item';\n\nexport type TableRef = HTMLTableElement & {\n instance: {\n resetFiltering: () => void;\n resetRowExpansion: () => void;\n resetRowSelection: () => void;\n resetSorting: () => void;\n };\n};\n\n// filtering\nexport enum TableFilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsEmpty,\n IsNotEmpty,\n IsLessThanOrEqualTo,\n IsGreaterThanOrEqualTo,\n HasAnyOf,\n HasAllOf,\n HasNoneOf,\n}\nexport type TableFilterValue = {\n comparator: TableFilterComparator;\n value: any;\n};\nexport type TableFilter = {\n id: string;\n value: TableFilterValue;\n};\n\n// columns\nexport type TableColumnAlignment = 'left' | 'center' | 'right';\nexport type TableColumnClassNameHandler<TType = unknown> = string | ((row: TType) => string | undefined);\nexport type TableColumnDataType = 'auto' | 'number' | 'alphanumeric' | 'alphanumericCaseSensitive' | 'datetime' | 'boolean';\nexport type TableColumnFilter = ReactTableColumnFilter;\nexport type TableColumnMenu = ((columnId: string) => React.ReactNode | null)[];\nexport type TableColumnRenderer<TType, TValue> = (value: TValue, row: TType) => JSX.Element | string | number | null;\nexport type TableColumnRendererAggregate<TType, TValue> = (value: TValue, row: TType) => JSX.Element | string | number | null;\nexport type TableColumnRendererControl<TType = unknown> =\n | ((props: TableColumnRendererControlProps, row?: TType) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch'\n | 'textarea';\nexport type TableColumnRendererControlProps = {\n className?: string;\n disabled?: boolean;\n fontSize?: FontSize;\n invalid?: boolean;\n onBlur?: (value: any) => void;\n onFocus?: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.RefObject<HTMLElement> | ((instance: HTMLElement | null | undefined) => void);\n setValue: (value: any) => void;\n value: any;\n};\nexport type TableColumnRendererHeader = string;\nexport type TableColumnRendererFooter<TType> = (rows: TType[]) => JSX.Element | string | number | null;\nexport type TableColumnSort = ReactTableColumnSort;\nexport type TableColumnSortDirection = 'asc' | 'desc';\nexport type TableColumnSortFn<TType = unknown> =\n | ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1)\n | ReactTableBuiltInSortingFn\n | 'auto';\nexport type TableColumnWidth = number | 'grow';\n\n// rows\nexport type TableRowActionRenderer<TType = unknown> = (row: TType, internalRowId: string) => JSX.Element | null;\nexport type TableRowActionGroupRenderer<TType = unknown> = (rows: TType[]) => JSX.Element | null;\nexport type TableRowClickHandler<TType = unknown> = (row: TType) => void;\nexport type TableRowDragHandler<TType = unknown> = (\n rows: TType[],\n showPlaceholder: (string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type TableRowDropHandler<TType = unknown> = (event: React.DragEvent, row: TType) => void;\nexport type TableRowGotoHandler = (\n column: string,\n query: string,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n search: string | undefined\n) => Promise<number>;\nexport type TableRowHeight = 'short' | 'medium' | 'tall' | 'extra-tall';\nexport type TableRowSelectHandler<TType = unknown> = (rows: TType[]) => void;\nexport type TableRowWithMetaData<TType = unknown> = TType & {\n _meta?: {\n layout?: 'heading' | 'summary' | 'item';\n };\n};\n\n// shortcuts\nexport type TableShortcutHandlerFn<TType = unknown> = (row: TType) => void;\nexport type TableShortcutHandlerObject<TType = unknown> = {\n handler: TableShortcutHandlerFn<TType>;\n meta?: boolean;\n shift?: boolean;\n};\n\n// table\nexport type TableFilterHandler = (filters: TableColumnFilter[]) => void | Promise<void>;\nexport type TableFontSize = keyof typeof FontSizes;\nexport type TablePreset = 'complex' | 'list' | 'simple';\nexport type TableRowExpansionRenderer<TType = unknown> = (row: TType) => (() => JSX.Element) | null;\nexport type TableScrollToIndexHandler = (index: number, options?: { align: 'start' | 'center' | 'end' | 'auto' }) => void;\nexport type TableSearchHandler = (search: string | undefined) => void | Promise<void>;\nexport type TableServerLoadPageHandler = (\n pageIndex: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[]\n) => Promise<void>;\nexport type TableServerLoadAllHandler = (sorting: TableColumnSort[], filters: TableColumnFilter[]) => Promise<void>;\nexport enum TableServerLoadAllState {\n Incomplete,\n Loading,\n Completed,\n}\nexport type TableSettingsHandler = (settings: TableSettings) => void | Promise<void>;\nexport type TableShortcuts<TType = unknown> = Record<string, TableShortcutHandlerFn<TType> | TableShortcutHandlerObject<TType>>;\nexport type TableSortHandler = (sorting: TableColumnSort[]) => void | Promise<void>;\nexport type TableCustomSettingsRenderer = (props: TableSettings) => React.ReactElement<MenuItemProps>[];\nexport type TableEmptyStateRenderer = () => JSX.Element | null;\n\n// settings\nexport type TableSettings = {\n columnFilters?: ReactTableColumnFilterState;\n columnOrder?: ReactTableColumnOrderState;\n columnPinning?: ReactTableColumnPinningState;\n columnSizing?: ReactTableColumnSizingState;\n columnVisibility?: ReactTableColumnVisibilityState;\n excludeUnmatchedRecordsInSearch?: boolean;\n fontSize?: TableFontSize;\n rowHeight?: TableRowHeight;\n searchQuery?: string;\n sorting?: ReactTableSortingState;\n};\nexport type TableEnableSettingsOptions = {\n columnOrder: boolean;\n columnPinning: boolean;\n columnSizing: boolean;\n columnVisibility: boolean;\n excludeUnmatchedRecordsInSearch: boolean;\n fontSize: boolean;\n grouping: boolean;\n rowHeight: boolean;\n sorting: boolean;\n};\n\n// props\nexport type TableFeatureProps<TType = unknown> = {\n // react-table built-in\n enableFiltering?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableColumnFreezing?: boolean;\n enableColumnHiding?: boolean;\n enableColumnResizing?: boolean;\n enableRowExpansion?: boolean;\n enableRowSelection?: boolean;\n enableRowSelectionSingle?: boolean;\n\n // custom -- common between all table types\n enableColumnOrdering?: boolean;\n enableFontSize?: boolean;\n enableFooter?: boolean;\n enablePrinting?: boolean;\n enableRowActions?: boolean;\n enableRowActive?: boolean;\n enableRowClick?: boolean | ((row: TType) => boolean);\n enableRowDrag?: boolean;\n enableRowDrop?: boolean;\n enableRowGoto?: boolean;\n enableRowHeight?: boolean;\n enableSaveSettings?: boolean | Partial<TableEnableSettingsOptions>;\n};\n\nexport type TableCommonProps<TType = unknown> = TableFeatureProps<TType> & {\n children: (JSX.Element | boolean | null | undefined)[];\n data: TType[];\n id: string;\n\n // misc\n customSettings?: TableCustomSettingsRenderer;\n defaultColumnFreezingIndex?: number;\n defaultRowActiveIndex?: number;\n defaultRowGroupColumnId?: keyof TType;\n defaultSettings?: TableSettings;\n emptyState?: TableEmptyStateRenderer;\n preset?: TablePreset;\n rowActions?: TableRowActionRenderer<TType>[];\n rowActionsForGroup?: TableRowActionGroupRenderer<TType>[];\n rowActionsLength?: number;\n rowExpansionRenderer?: TableRowExpansionRenderer<TType>;\n rowIdentityColumnId?: string;\n shortcuts?: TableShortcuts<TType>;\n toolbarLeft?: JSX.Element;\n toolbarRight?: JSX.Element;\n toolbarPanel?: JSX.Element;\n\n // handlers\n onRowClick?: TableRowClickHandler<TType>;\n onRowDrag?: TableRowDragHandler<TType>;\n onRowDrop?: TableRowDropHandler<TType>;\n onRowGoto?: TableRowGotoHandler;\n onRowSelect?: TableRowSelectHandler<TType>;\n\n // state change handlers\n onChangeFilter?: TableFilterHandler;\n onChangeSearch?: TableSearchHandler;\n onChangeSettings?: TableSettingsHandler;\n onChangeSort?: TableSortHandler;\n};\n\nexport interface TableClientProps<TType = unknown> extends TableCommonProps<TType> {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n}\n\nexport interface TableServerProps<TType = unknown> extends TableCommonProps<TType> {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n}\n\nexport type TableProps<TType = unknown> = TableClientProps<TType> | TableServerProps<TType>;\n\nexport type TableColumnProps<TType = unknown> = ValueOf<{\n [Key in keyof TType]: {\n accessor?: Key;\n id: string;\n // renderers\n renderer?: TableColumnRenderer<TType, TType[Key]>;\n /** Renderer to use if the cell is an aggregate cell and part of a grouped row */\n aggregate?: TableColumnRendererAggregate<TType, TType[Key]>;\n control?: TableColumnRendererControl<TType>;\n footer?: TableColumnRendererFooter<TType>;\n header: TableColumnRendererHeader;\n // options\n /** Aggregation function to be used when the column is part of a grouped row */\n aggregationFn?: 'auto' | ReactTableBuiltInAggregationFn;\n align?: TableColumnAlignment;\n className?: TableColumnClassNameHandler<TType>;\n dataType?: TableColumnDataType;\n defaultHidden?: boolean;\n defaultWidth?: TableColumnWidth;\n enableFiltering?: boolean;\n enableGrouping?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableResizing?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableTruncate?: boolean;\n filters?: TableFilterComparator[];\n headerClassName?: string;\n menu?: TableColumnMenu;\n minWidth?: number;\n sort?: TableColumnSortDirection;\n sortFn?: TableColumnSortFn<TType>;\n tooltip?: string;\n };\n}>;\n\nexport type TableGroupProps = {\n children: (JSX.Element | boolean | null | undefined)[];\n header: string;\n id: string;\n};\n\nexport type TableTexts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n menu: {\n editFilter: string;\n filter: string;\n freezeFirstColumn: string;\n freezeUptoColumn: string;\n gotoRow: string;\n hideColumn: string;\n unfreezeColumns: string;\n sorting: string;\n sortingOrder: {\n ascending: string;\n descending: string;\n unsorted: string;\n };\n };\n resize: {\n tooltip: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n };\n columnSettings: {\n button: string;\n noResults: string;\n search: string;\n tooltip: string;\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n cancel: string;\n clear: string;\n apply: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isEmpty: string;\n isNotEmpty: string;\n isBefore: string;\n isAfter: string;\n isLessThanOrEqualTo: string;\n isGreaterThanOrEqualTo: string;\n isOnOrBefore: string;\n isOnOrAfter: string;\n hasAnyOf: string;\n hasAllOf: string;\n hasNoneOf: string;\n };\n conditions: {\n and: string;\n where: string;\n };\n emptyFilter: {\n condition: string;\n value: string;\n };\n hiddenColumn: string;\n hiddenGroupedColumn: string;\n tooltip: string;\n total: string;\n };\n fontSize: {\n tooltip: string;\n sizes: {\n small: string;\n medium: string;\n large: string;\n };\n };\n footer: {\n summary: {\n count: string;\n records: string;\n selected: string;\n };\n };\n print: {\n error: string;\n loading: string;\n tooltip: string;\n warningDialog: {\n title: string;\n description: string;\n checkboxVisibilityLabel: string;\n cancelButtonText: string;\n printButtonText: string;\n };\n settingsDialog: {\n title: string;\n size: string;\n sizeA5: string;\n sizeA4: string;\n sizeA3: string;\n sizeLetter: string;\n sizeLegal: string;\n orientation: string;\n orientationLandscape: string;\n orientationPortrait: string;\n rows: string;\n rowsAll: string;\n rowsSelected: string;\n layout: string;\n layoutSplitGroups: string;\n };\n };\n rowHeight: {\n tooltip: string;\n sizes: {\n short: string;\n medium: string;\n tall: string;\n extraTall: string;\n };\n };\n search: {\n excludeUnmatchedResults: string;\n placeholder: string;\n };\n otherOptions: {\n tooltip: string;\n };\n};\n"],"names":["TableFilterComparator","TableServerLoadAllState"],"mappings":"AAwBA;IACYA;AAAZ,WAAYA,qBAAqB;EAC7BA,yEAAQ;EACRA,qFAAc;EACdA,2EAAS;EACTA,iFAAY;EACZA,mFAAa;EACbA,6EAAU;EACVA,2EAAS;EACTA,uEAAO;EACPA,6EAAU;EACVA,+FAAmB;EACnBA,sGAAsB;EACtBA,0EAAQ;EACRA,0EAAQ;EACRA,4EAAS;AACb,CAAC,EAfWA,qBAAqB,KAArBA,qBAAqB;IA2GrBC;AAAZ,WAAYA,uBAAuB;EAC/BA,iFAAU;EACVA,2EAAO;EACPA,+EAAS;AACb,CAAC,EAJWA,uBAAuB,KAAvBA,uBAAuB;;;;"}
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../../../../src/primitives/Table/types.ts"],"sourcesContent":["import {\n ColumnFilter as ReactTableColumnFilter,\n ColumnFiltersState as ReactTableColumnFilterState,\n ColumnOrderState as ReactTableColumnOrderState,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSort as ReactTableColumnSort,\n ColumnSizingState as ReactTableColumnSizingState,\n VisibilityState as ReactTableColumnVisibilityState,\n SortingState as ReactTableSortingState,\n BuiltInAggregationFn as ReactTableBuiltInAggregationFn,\n BuiltInSortingFn as ReactTableBuiltInSortingFn,\n} from '@tanstack/react-table';\nimport { FontSize, FontSizes, StringWithAutocompleteOptions, ValueOf } from '../../types';\nimport { MenuItemProps } from '../../components/Menu/components/Item';\n\nexport type TableRef = HTMLTableElement & {\n instance: {\n resetFiltering: () => void;\n resetRowExpansion: () => void;\n resetRowSelection: () => void;\n resetSorting: () => void;\n };\n};\n\n// filtering\nexport enum TableFilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsEmpty,\n IsNotEmpty,\n IsLessThanOrEqualTo,\n IsGreaterThanOrEqualTo,\n HasAnyOf,\n HasAllOf,\n HasNoneOf,\n}\nexport type TableFilterValue = {\n comparator: TableFilterComparator;\n value: any;\n};\nexport type TableFilter = {\n id: string;\n value: TableFilterValue;\n};\n\n// columns\nexport type TableColumnAlignment = 'left' | 'center' | 'right';\nexport type TableColumnClassNameHandler<TType = unknown> = string | ((row: TType) => string | undefined);\nexport type TableColumnDataType = 'auto' | 'number' | 'alphanumeric' | 'alphanumericCaseSensitive' | 'datetime' | 'boolean';\nexport type TableColumnFilter = ReactTableColumnFilter;\nexport type TableColumnMenu = ((columnId: string) => React.ReactNode | null)[];\nexport type TableColumnRenderer<TType, TValue> = (value: TValue, row: TType) => JSX.Element | string | number | null;\nexport type TableColumnRendererAggregate<TType, TValue> = (value: TValue, row: TType) => JSX.Element | string | number | null;\nexport type TableColumnRendererControl<TType = unknown> =\n | ((props: TableColumnRendererControlProps, row?: TType) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch'\n | 'textarea';\nexport type TableColumnRendererControlProps = {\n className?: string;\n disabled?: boolean;\n fontSize?: FontSize;\n invalid?: boolean;\n onBlur?: (value: any) => void;\n onFocus?: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.RefObject<HTMLElement> | ((instance: HTMLElement | null | undefined) => void);\n setValue: (value: any) => void;\n value: any;\n};\nexport type TableColumnRendererHeader = string;\nexport type TableColumnRendererFooter<TType> = (rows: TType[]) => JSX.Element | string | number | null;\nexport type TableColumnSort = ReactTableColumnSort;\nexport type TableColumnSortDirection = 'asc' | 'desc';\nexport type TableColumnSortFn<TType = unknown> =\n | ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1)\n | ReactTableBuiltInSortingFn\n | 'auto';\nexport type TableColumnWidth = number | 'grow';\n\n// rows\nexport type TableRowActionRenderer<TType = unknown> = (row: TType, internalRowId: string) => JSX.Element | null;\nexport type TableRowActionGroupRenderer<TType = unknown> = (rows: TType[]) => JSX.Element | null;\nexport type TableRowClickHandler<TType = unknown> = (row: TType) => void;\nexport type TableRowDragHandler<TType = unknown> = (\n rows: TType[],\n showPlaceholder: (string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type TableRowDropHandler<TType = unknown> = (event: React.DragEvent, row: TType) => void;\nexport type TableRowGotoHandler = (\n column: string,\n query: string,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n search: string | undefined\n) => Promise<number>;\nexport type TableRowHeight = 'short' | 'medium' | 'tall' | 'extra-tall';\nexport type TableRowSelectHandler<TType = unknown> = (rows: TType[]) => void;\nexport type TableRowWithMetaData<TType = unknown> = TType & {\n _meta?: {\n layout?: 'heading' | 'summary' | 'item';\n };\n};\n\n// shortcuts\nexport type TableShortcutHandlerFn<TType = unknown> = (row: TType) => void;\nexport type TableShortcutHandlerObject<TType = unknown> = {\n handler: TableShortcutHandlerFn<TType>;\n meta?: boolean;\n shift?: boolean;\n};\n\n// table\nexport type TableFilterHandler = (filters: TableColumnFilter[]) => void | Promise<void>;\nexport type TableFontSize = keyof typeof FontSizes;\nexport type TablePreset = 'complex' | 'list' | 'simple';\nexport type TableRowExpansionRenderer<TType = unknown> = (row: TType) => (() => JSX.Element) | null;\nexport type TableScrollToIndexHandler = (index: number, options?: { align: 'start' | 'center' | 'end' | 'auto' }) => void;\nexport type TableSearchHandler = (search: string | undefined) => void | Promise<void>;\nexport type TableServerLoadPageHandler = (\n pageIndex: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[]\n) => Promise<void>;\nexport type TableServerLoadAllHandler = (sorting: TableColumnSort[], filters: TableColumnFilter[]) => Promise<void>;\nexport enum TableServerLoadAllState {\n Incomplete,\n Loading,\n Completed,\n}\nexport type TableSettingsHandler = (settings: TableSettings) => void | Promise<void>;\nexport type TableShortcuts<TType = unknown> = Record<string, TableShortcutHandlerFn<TType> | TableShortcutHandlerObject<TType>>;\nexport type TableSortHandler = (sorting: TableColumnSort[]) => void | Promise<void>;\nexport type TableCustomSettingsRenderer = (props: TableSettings) => React.ReactElement<MenuItemProps>[];\nexport type TableEmptyStateReason = 'empty' | 'filtering' | 'searching';\nexport type TableEmptyStateRenderer = (props: { reason: TableEmptyStateReason }) => JSX.Element;\n\n// settings\nexport type TableSettings = {\n columnFilters?: ReactTableColumnFilterState;\n columnOrder?: ReactTableColumnOrderState;\n columnPinning?: ReactTableColumnPinningState;\n columnSizing?: ReactTableColumnSizingState;\n columnVisibility?: ReactTableColumnVisibilityState;\n excludeUnmatchedRecordsInSearch?: boolean;\n fontSize?: TableFontSize;\n rowHeight?: TableRowHeight;\n searchQuery?: string;\n sorting?: ReactTableSortingState;\n};\nexport type TableEnableSettingsOptions = {\n columnOrder: boolean;\n columnPinning: boolean;\n columnSizing: boolean;\n columnVisibility: boolean;\n excludeUnmatchedRecordsInSearch: boolean;\n fontSize: boolean;\n grouping: boolean;\n rowHeight: boolean;\n sorting: boolean;\n};\n\n// props\nexport type TableFeatureProps<TType = unknown> = {\n // react-table built-in\n enableFiltering?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableColumnFreezing?: boolean;\n enableColumnHiding?: boolean;\n enableColumnResizing?: boolean;\n enableRowExpansion?: boolean;\n enableRowSelection?: boolean;\n enableRowSelectionSingle?: boolean;\n\n // custom -- common between all table types\n enableColumnOrdering?: boolean;\n enableFontSize?: boolean;\n enableFooter?: boolean;\n enablePrinting?: boolean;\n enableRowActions?: boolean;\n enableRowActive?: boolean;\n enableRowClick?: boolean | ((row: TType) => boolean);\n enableRowDrag?: boolean;\n enableRowDrop?: boolean;\n enableRowGoto?: boolean;\n enableRowHeight?: boolean;\n enableSaveSettings?: boolean | Partial<TableEnableSettingsOptions>;\n};\n\nexport type TableCommonProps<TType = unknown> = TableFeatureProps<TType> & {\n children: (JSX.Element | boolean | null | undefined)[];\n data: TType[];\n id: string;\n\n // misc\n customSettings?: TableCustomSettingsRenderer;\n defaultColumnFreezingIndex?: number;\n defaultRowActiveIndex?: number;\n defaultRowGroupColumnId?: keyof TType;\n defaultSettings?: TableSettings;\n emptyState?: TableEmptyStateRenderer;\n preset?: TablePreset;\n rowActions?: TableRowActionRenderer<TType>[];\n rowActionsForGroup?: TableRowActionGroupRenderer<TType>[];\n rowActionsLength?: number;\n rowExpansionRenderer?: TableRowExpansionRenderer<TType>;\n rowIdentityColumnId?: string;\n shortcuts?: TableShortcuts<TType>;\n toolbarLeft?: JSX.Element;\n toolbarRight?: JSX.Element;\n toolbarPanel?: JSX.Element;\n\n // handlers\n onRowClick?: TableRowClickHandler<TType>;\n onRowDrag?: TableRowDragHandler<TType>;\n onRowDrop?: TableRowDropHandler<TType>;\n onRowGoto?: TableRowGotoHandler;\n onRowSelect?: TableRowSelectHandler<TType>;\n\n // state change handlers\n onChangeFilter?: TableFilterHandler;\n onChangeSearch?: TableSearchHandler;\n onChangeSettings?: TableSettingsHandler;\n onChangeSort?: TableSortHandler;\n};\n\nexport interface TableClientProps<TType = unknown> extends TableCommonProps<TType> {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n}\n\nexport interface TableServerProps<TType = unknown> extends TableCommonProps<TType> {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n}\n\nexport type TableProps<TType = unknown> = TableClientProps<TType> | TableServerProps<TType>;\n\nexport type TableColumnProps<TType = unknown> = ValueOf<{\n [Key in keyof TType]: {\n accessor?: Key;\n id: StringWithAutocompleteOptions<Key>;\n // renderers\n renderer?: TableColumnRenderer<TType, TType[Key]>;\n /** Renderer to use if the cell is an aggregate cell and part of a grouped row */\n aggregate?: TableColumnRendererAggregate<TType, TType[Key]>;\n control?: TableColumnRendererControl<TType>;\n footer?: TableColumnRendererFooter<TType>;\n header: TableColumnRendererHeader;\n // options\n /** Aggregation function to be used when the column is part of a grouped row */\n aggregationFn?: 'auto' | ReactTableBuiltInAggregationFn;\n align?: TableColumnAlignment;\n className?: TableColumnClassNameHandler<TType>;\n dataType?: TableColumnDataType;\n defaultHidden?: boolean;\n defaultWidth?: TableColumnWidth;\n enableFiltering?: boolean;\n enableGrouping?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableResizing?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableTruncate?: boolean;\n filters?: TableFilterComparator[];\n headerClassName?: string;\n menu?: TableColumnMenu;\n minWidth?: number;\n sort?: TableColumnSortDirection;\n sortFn?: TableColumnSortFn<TType>;\n tooltip?: string;\n };\n}>;\n\nexport type TableGroupProps = {\n children: (JSX.Element | boolean | null | undefined)[];\n header: string;\n id: string;\n};\n\nexport type TableTexts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n menu: {\n editFilter: string;\n filter: string;\n freezeFirstColumn: string;\n freezeUptoColumn: string;\n gotoRow: string;\n hideColumn: string;\n unfreezeColumns: string;\n sorting: string;\n sortingOrder: {\n ascending: string;\n descending: string;\n unsorted: string;\n };\n };\n resize: {\n tooltip: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n };\n columnSettings: {\n button: string;\n noResults: string;\n search: string;\n tooltip: string;\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n cancel: string;\n clear: string;\n apply: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isEmpty: string;\n isNotEmpty: string;\n isBefore: string;\n isAfter: string;\n isLessThanOrEqualTo: string;\n isGreaterThanOrEqualTo: string;\n isOnOrBefore: string;\n isOnOrAfter: string;\n hasAnyOf: string;\n hasAllOf: string;\n hasNoneOf: string;\n };\n conditions: {\n and: string;\n where: string;\n };\n emptyFilter: {\n condition: string;\n value: string;\n };\n hiddenColumn: string;\n hiddenGroupedColumn: string;\n tooltip: string;\n total: string;\n };\n fontSize: {\n tooltip: string;\n sizes: {\n small: string;\n medium: string;\n large: string;\n };\n };\n footer: {\n summary: {\n count: string;\n records: string;\n selected: string;\n };\n };\n print: {\n error: string;\n loading: string;\n tooltip: string;\n warningDialog: {\n title: string;\n description: string;\n checkboxVisibilityLabel: string;\n cancelButtonText: string;\n printButtonText: string;\n };\n settingsDialog: {\n title: string;\n size: string;\n sizeA5: string;\n sizeA4: string;\n sizeA3: string;\n sizeLetter: string;\n sizeLegal: string;\n orientation: string;\n orientationLandscape: string;\n orientationPortrait: string;\n rows: string;\n rowsAll: string;\n rowsSelected: string;\n layout: string;\n layoutSplitGroups: string;\n };\n };\n rowHeight: {\n tooltip: string;\n sizes: {\n short: string;\n medium: string;\n tall: string;\n extraTall: string;\n };\n };\n search: {\n excludeUnmatchedResults: string;\n placeholder: string;\n };\n otherOptions: {\n tooltip: string;\n };\n};\n"],"names":["TableFilterComparator","TableServerLoadAllState"],"mappings":"AAwBA;IACYA;AAAZ,WAAYA,qBAAqB;EAC7BA,yEAAQ;EACRA,qFAAc;EACdA,2EAAS;EACTA,iFAAY;EACZA,mFAAa;EACbA,6EAAU;EACVA,2EAAS;EACTA,uEAAO;EACPA,6EAAU;EACVA,+FAAmB;EACnBA,sGAAsB;EACtBA,0EAAQ;EACRA,0EAAQ;EACRA,4EAAS;AACb,CAAC,EAfWA,qBAAqB,KAArBA,qBAAqB;IA2GrBC;AAAZ,WAAYA,uBAAuB;EAC/BA,iFAAU;EACVA,2EAAO;EACPA,+EAAS;AACb,CAAC,EAJWA,uBAAuB,KAAvBA,uBAAuB;;;;"}
|
@@ -24,8 +24,8 @@ function processChildren(child, columns, defaultSizing, defaultSorting, defaultV
|
|
24
24
|
}));
|
25
25
|
} else if ( /*#__PURE__*/React__default.isValidElement(child) && (child.props.accessor || child.props.id)) {
|
26
26
|
const {
|
27
|
-
id,
|
28
|
-
accessor: accessorKey =
|
27
|
+
id: untypedId,
|
28
|
+
accessor: accessorKey = untypedId,
|
29
29
|
// renderers
|
30
30
|
renderer,
|
31
31
|
aggregate,
|
@@ -49,6 +49,7 @@ function processChildren(child, columns, defaultSizing, defaultSorting, defaultV
|
|
49
49
|
sortFn,
|
50
50
|
...meta
|
51
51
|
} = child.props;
|
52
|
+
const id = untypedId;
|
52
53
|
if (defaultHidden && enableHiding) {
|
53
54
|
defaultVisibility[id] = false;
|
54
55
|
}
|