@economic/taco 2.48.4 → 2.49.0-dataloader.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/Report/Report.d.ts +1 -1
- package/dist/components/SearchInput2/SearchInput2.d.ts +2 -0
- package/dist/components/Table3/features/useEditingState.d.ts +13 -13
- package/dist/components/Table3/features/useTableEditing.d.ts +15 -15
- package/dist/components/Table3/types.d.ts +2 -0
- package/dist/esm/packages/taco/src/charts/components/Donut/Legend.js +1 -0
- package/dist/esm/packages/taco/src/charts/components/Donut/Legend.js.map +1 -1
- package/dist/esm/packages/taco/src/charts/components/Legend.js +1 -0
- package/dist/esm/packages/taco/src/charts/components/Legend.js.map +1 -1
- package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js +6 -3
- package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowActions.js +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js +15 -9
- package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateNewRow.js +4 -2
- package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateNewRow.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/TemporaryRow.js +3 -2
- package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/TemporaryRow.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js +61 -69
- package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js +13 -6
- package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js +15 -12
- package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/useTable3.js +1 -1
- package/dist/esm/packages/taco/src/components/Table3/useTable3.js.map +1 -1
- package/dist/esm/packages/taco/src/index.js +1 -0
- package/dist/esm/packages/taco/src/index.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js +7 -4
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js +7 -6
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js +24 -22
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js +41 -4
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/Print.js +3 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/Print.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js +26 -3
- package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableGlobalShortcuts.js +2 -2
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableGlobalShortcuts.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js +40 -13
- package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.js +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.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/useTableDataLoader.js +13 -12
- package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader2.js +223 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader2.js.map +1 -0
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSearch.js +3 -2
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSearch.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js +8 -3
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFilterListener.js +3 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFilterListener.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js +4 -4
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js +14 -13
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js +7 -3
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js +3 -3
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js +4 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +8 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
- package/dist/hooks/useLazyDebouncedEffect.d.ts +2 -0
- package/dist/index.d.ts +1 -0
- package/dist/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.d.ts +2 -2
- package/dist/primitives/Table/Core/components/Row/Row.d.ts +2 -0
- package/dist/primitives/Table/Core/features/useTableRenderer.d.ts +1 -1
- package/dist/primitives/Table/types.d.ts +10 -6
- package/dist/primitives/Table/useTableDataLoader.d.ts +2 -2
- package/dist/primitives/Table/useTableDataLoader2.d.ts +23 -0
- package/dist/primitives/Table/useTableManager/features/useTableSearch.d.ts +4 -2
- package/dist/primitives/Table/useTableManager/features/useTableServerLoading.d.ts +4 -1
- package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.d.ts +1 -2
- package/dist/primitives/Table/useTableManager/util/columns.d.ts +2 -1
- package/dist/taco.cjs.development.js +577 -233
- 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/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useEditingState.js","sources":["../../../../../../../../src/components/Table3/features/useEditingState.ts"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, Cell as ReactTableCell } from '@tanstack/react-table';\nimport { v4 as uuid } from 'uuid';\nimport omit from 'lodash/omit';\nimport setWith from 'lodash/setWith';\nimport { Table3EditingChangeHandler, Table3EditingSaveHandler, Table3EditingValidatorFn } from '../types';\nimport { isTemporaryRow, TEMPORARY_ROW_ID_PREFIX, willRowMove } from '../util/editing';\nimport { useLocalization } from '../../Provider/Localization';\n\nconst DELAY_BEFORE_REMOVING_SAVE_STATUS = 3000;\n\ntype EditingError = {\n row: string;\n cells: Record<string, string>;\n shouldShowErrorAlert: boolean;\n};\ntype EditingRowMoveReason = Record<string, 'search' | 'sorting' | 'filter'>;\ntype EditingSaveState = 'saving' | 'saved' | 'errored';\ntype EditingChangeset<TType = unknown> = Partial<TType>;\ntype EditingState<TType = unknown> = {\n changes: {\n rows: Record<string, EditingChangeset<TType>>;\n errors: Record<string, EditingError>;\n moveReasons: Record<string, EditingRowMoveReason>;\n originals: Record<string, TType>;\n status: Record<string, EditingSaveState>;\n };\n temporaryRows: TType[];\n};\ntype EditingStateAction = {\n type:\n | 'setCellValue'\n | 'removeCellValue'\n | 'updateRow'\n | 'mergeRowValue'\n | 'removeRow'\n | 'setRowStatus'\n | 'setRowErrors'\n | 'insertTemporaryRow';\n rowId: string;\n payload?: any;\n};\n\nfunction reducer<TType = unknown>(state: EditingState<TType>, action: EditingStateAction) {\n const { type, rowId, payload } = action;\n\n switch (type) {\n case 'setCellValue': {\n const { columnId, row, value } = payload;\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: setWith(state.changes.rows, `${rowId}.${columnId}`, value, Object),\n originals: setWith(state.changes.originals, rowId, row, Object),\n },\n };\n }\n\n case 'removeCellValue': {\n const { columnId, rowIdentityAccessor } = payload;\n const changes = omit(state.changes.rows, `${rowId}.${columnId}`);\n\n // if there are no changes left, remove the row\n if (!Object.keys(changes[rowId]).length) {\n return reducer(state, { type: 'removeRow', rowId, payload: { rowIdentityAccessor } });\n }\n\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: omit(state.changes.rows, `${rowId}.${columnId}`),\n errors: omit(state.changes.errors, `${rowId}.cells.${columnId}`),\n moveReasons: omit(state.changes.moveReasons, `${rowId}.${columnId}`),\n },\n };\n }\n\n case 'updateRow': {\n const { cellErrors, moveReasons, original, value } = payload;\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: setWith(state.changes.rows, rowId, value, Object),\n errors: setWith(\n state.changes.errors,\n `${rowId}.cells`,\n cellErrors ?? state.changes.errors.cells[rowId],\n Object\n ),\n originals: setWith(state.changes.originals, rowId, original ?? state.changes.originals[rowId], Object),\n moveReasons: setWith(\n state.changes.moveReasons,\n rowId,\n moveReasons ?? state.changes.moveReasons[rowId],\n Object\n ),\n // status can be undefined, so don't use ??\n status: setWith(state.changes.status, rowId, undefined, Object),\n },\n };\n }\n\n case 'removeRow': {\n const { rowIdentityAccessor } = payload;\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: omit(state.changes.rows, rowId),\n errors: omit(state.changes.errors, rowId),\n moveReasons: omit(state.changes.moveReasons, rowId),\n originals: omit(state.changes.originals, rowId),\n status: omit(state.changes.status, rowId),\n },\n temporaryRows: state.temporaryRows.filter(row => row[rowIdentityAccessor] !== rowId),\n };\n }\n\n case 'setRowStatus': {\n const { status } = payload;\n return {\n ...state,\n changes: {\n ...state.changes,\n status: status ? setWith(state.changes.status, rowId, status, Object) : omit(state.changes.status, rowId),\n },\n };\n }\n\n case 'setRowErrors': {\n const { ...errors } = payload;\n return {\n ...state,\n changes: {\n ...state.changes,\n errors: setWith(state.changes.errors, rowId, errors, Object),\n },\n };\n }\n\n case 'insertTemporaryRow': {\n const { value } = payload;\n return {\n ...state,\n temporaryRows: state.temporaryRows.concat(value),\n changes: {\n ...state.changes,\n rows: setWith(state.changes.rows, rowId, value, Object),\n originals: setWith(state.changes.originals, rowId, value, Object),\n },\n };\n }\n\n default:\n return state;\n }\n}\n\nexport function usePendingChangesState<TType = unknown>(\n handleSave: Table3EditingSaveHandler<TType> | undefined,\n handleChange: Table3EditingChangeHandler<TType> | undefined,\n rowIdentityAccessor: keyof TType,\n validator: Table3EditingValidatorFn<TType> | undefined\n) {\n const localization = useLocalization();\n const [state, dispatch] = React.useReducer(reducer, {\n changes: { rows: {}, errors: {}, moveReasons: {}, originals: {}, status: {} },\n temporaryRows: [],\n });\n\n // rows\n async function setRowValue<T extends TType>(rowId: string, original: T, value: Partial<T>) {\n let cellErrors;\n\n if (validator) {\n const row = { ...original, ...value } as T;\n cellErrors = ((await validator(row)) ?? {}) as Record<string, string>;\n }\n\n dispatch({\n type: 'updateRow',\n rowId,\n payload: { cellErrors, original, value },\n });\n }\n\n function getRowValue(rowId: string) {\n return state.changes.rows?.[rowId] ?? undefined;\n }\n\n function getRowMoveReason(rowId: string) {\n return Object.values(state.changes.moveReasons?.[rowId] ?? {})[0] ?? undefined;\n }\n\n function hasRowErrors(rowId: string) {\n return !!state.changes.errors[rowId]?.row || !!Object.keys(state.changes.errors[rowId]?.cells ?? {}).length;\n }\n\n function hasRowErrorsShownInAlert(rowId: string) {\n return hasRowErrors(rowId) && !!state.changes.errors[rowId]?.shouldShowErrorAlert;\n }\n\n function hasTemporaryRowErrors<T extends TType>() {\n const newRow = state.temporaryRows?.[0] as T | undefined;\n\n if (!newRow) {\n return false;\n }\n\n const rowId = newRow[rowIdentityAccessor as string];\n return !!state.changes.errors[rowId]?.row || !!Object.keys(state.changes.errors[rowId]?.cells ?? {}).length;\n }\n\n function getRowStatus(rowId: string) {\n return state.changes.status[rowId];\n }\n\n function setRowStatus(rowId: string, status: EditingSaveState | undefined) {\n dispatch({\n type: 'setRowStatus',\n rowId,\n payload: {\n status,\n },\n });\n }\n\n function insertTemporaryRow<T extends TType>(data: Partial<T>) {\n const newRowId = `${TEMPORARY_ROW_ID_PREFIX}${uuid()}`;\n const value: Partial<TType> = {\n ...data,\n [rowIdentityAccessor]: newRowId,\n };\n\n dispatch({\n type: 'insertTemporaryRow',\n rowId: newRowId,\n payload: { value },\n });\n\n return newRowId;\n }\n\n // cells\n function setCellValue<T extends TType>(cell: ReactTableCell<T, unknown>, value: unknown) {\n const rowId = cell.row.id;\n const columnId = cell.column.id;\n\n // update if the change is different to the original value\n if (value !== cell.row.original[columnId]) {\n dispatch({\n type: 'setCellValue',\n rowId,\n payload: {\n columnId,\n row: cell.row.original,\n value,\n },\n });\n }\n // otherwise remove any previous change - no point saving the same value\n else if (cell.row.id in state.changes.rows) {\n dispatch({\n type: 'removeCellValue',\n rowId,\n payload: {\n columnId,\n rowIdentityAccessor,\n },\n });\n }\n }\n\n function getCellValue<T extends TType>(cell: ReactTableCell<T, unknown>): unknown | undefined {\n return state.changes.rows?.[cell.row.id]?.[cell.column.id];\n }\n\n function getCellError<T extends TType>(cell: ReactTableCell<T, unknown>): string | undefined {\n return state.changes.errors?.[cell.row.id]?.cells?.[cell.column.id];\n }\n\n async function onCellChanged<T extends TType>(\n cell: ReactTableCell<T, unknown>,\n rowIndex: number,\n nextValue,\n shouldRunUpdaters = true\n ) {\n const changes =\n nextValue !== undefined\n ? { ...state.changes.rows[cell.row.id], [cell.column.id]: nextValue }\n : { ...state.changes.rows[cell.row.id] };\n\n if (!Object.keys(changes).length) {\n return;\n }\n\n let updatesForOtherCells: Partial<T> = {};\n\n // run the updater handler if there is one, to see if there are any other cells to update\n if (typeof handleChange === 'function' && shouldRunUpdaters) {\n const previousRowValue = {\n ...state.changes.originals[cell.row.id],\n //...getRowChangeset(updatersRef.current[cell.row.id], rowIdentityAccessor),\n };\n const nextRowValue = {\n ...state.changes.originals[cell.row.id],\n ...changes,\n };\n updatesForOtherCells = ((await handleChange(\n cell.column.id,\n changes[cell.column.id],\n nextRowValue,\n previousRowValue\n )) ?? {}) as Partial<T>;\n }\n\n // create a projection of the next state, so we can act against it\n const nextChanges = { ...changes, ...updatesForOtherCells };\n const nextMoveReasons: EditingRowMoveReason = { ...state.changes.moveReasons[cell.row.id] };\n const nextCellErrors: Record<string, string> = { ...state.changes.errors[cell.row.id]?.cells };\n\n // run validation - if there are changes, and if there is an original stored\n let validationErrors: Record<string, string> = {};\n\n if (validator && Object.keys(nextChanges).length && state.changes.originals[cell.row.id]) {\n // merge with the original so we get a full row\n const nextRowValue = { ...state.changes.originals[cell.row.id], ...changes, ...updatesForOtherCells };\n validationErrors = ((await validator(nextRowValue)) ?? {}) as Record<string, string>;\n }\n\n // only set errors and move reasons for the cells we're currently acting on\n // why? because the UX is not good if we set them for cells the user hasn't touched yet\n const cellsToActOn = [cell.column.id, ...Object.keys(updatesForOtherCells)];\n const allCells = cell.row._getAllCellsByColumnId();\n\n cellsToActOn.forEach(accessor => {\n if (validationErrors[accessor]) {\n nextCellErrors[accessor] = validationErrors[accessor];\n // don't show move indicator for cells with errors, they aren't valid and can't be saved\n delete nextMoveReasons[accessor];\n } else {\n // there isn't any error in this run, remove any error set in state\n delete nextCellErrors[accessor];\n\n if (allCells[accessor]?.column.getIsSorted()) {\n // run row move determination\n const reason = willRowMove(cell, nextChanges[accessor], rowIndex, localization);\n\n // if the row will move based on this change save why, otherwise delete any existing state\n if (reason) {\n nextMoveReasons[accessor] = reason;\n } else {\n delete nextMoveReasons[accessor];\n }\n }\n }\n });\n\n dispatch({\n type: 'updateRow',\n rowId: cell.row.id,\n payload: {\n cellErrors: nextCellErrors,\n moveReasons: nextMoveReasons,\n value: nextChanges,\n },\n });\n }\n\n // general\n function getErrorsShownInAlert<T extends TType>() {\n const rowsWithErrors = Object.keys(state.changes.errors);\n\n if (!rowsWithErrors.length) {\n return [];\n }\n\n return rowsWithErrors.filter(hasRowErrorsShownInAlert).map(rowId => ({\n rowId,\n changes: state.changes.rows[rowId] as EditingChangeset<T>,\n errors: state.changes.errors[rowId],\n }));\n }\n\n function hasSaved() {\n return !!Object.values(state.changes.status).filter(value => value === 'saved').length;\n }\n\n function hasChanges(rowId?: string) {\n return rowId ? !!state.changes.rows[rowId] : !!Object.keys(state.changes.rows).length;\n }\n\n async function saveChanges<T extends TType>(table: ReactTable<T>, rowId: string | undefined = undefined): Promise<boolean> {\n if (!handleSave) {\n console.warn('Tried to save, but Table has no onEditingSave handler');\n return false;\n }\n\n // sometimes we only want to save one row\n const changes = rowId ? { [rowId]: state.changes.rows[rowId] } : state.changes.rows;\n\n let completed = true;\n\n for (const rowId of Object.keys(changes)) {\n const status = getRowStatus(rowId);\n\n try {\n const rowChanges = changes[rowId] ?? {};\n\n // don't try to save if - already saving, or there are known errors\n if (!Object.keys(rowChanges).length || status === 'saving' || status === 'errored') {\n continue;\n }\n\n setRowStatus(rowId, 'saving');\n\n const changeSet = { ...state.changes.originals[rowId], ...rowChanges };\n\n // if we had to create a temporary id, delete it first - it's our data, not theirs\n if (isTemporaryRow(changeSet[rowIdentityAccessor as string])) {\n delete changeSet[rowIdentityAccessor];\n }\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\n // send new data to the server\n await handleSave(changeSet);\n\n // cleanup changes, we don't need them after saving\n discardChanges(rowId, table);\n\n // show the saved status, then remove it after a delay\n setRowStatus(rowId, 'saved');\n setTimeout(() => {\n setRowStatus(rowId, undefined);\n }, DELAY_BEFORE_REMOVING_SAVE_STATUS);\n } catch (error) {\n if (error instanceof ReferenceError || error instanceof TypeError || (error as any)?.response?.status >= 500) {\n console.error(error);\n }\n\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: string | undefined;\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 dispatch({\n type: 'setRowErrors',\n rowId,\n payload: {\n row: rowError,\n cells: cellErrors,\n shouldShowErrorAlert: true,\n },\n });\n }\n\n setRowStatus(rowId, 'errored');\n completed = false;\n }\n }\n\n return completed;\n }\n\n function discardChanges<T extends TType>(rowId: string, table: ReactTable<T>) {\n // remove any new rows from pinned state before discarding them\n table.resetRowPinning(true);\n\n dispatch({\n type: 'removeRow',\n rowId,\n payload: { rowIdentityAccessor },\n });\n }\n\n return {\n // row\n setRowValue,\n getRowValue,\n getRowMoveReason,\n hasRowErrors,\n hasRowErrorsShownInAlert,\n hasTemporaryRowErrors,\n getRowStatus,\n setRowStatus,\n // cells\n setCellValue,\n getCellValue,\n getCellError,\n onCellChanged,\n // general\n getErrorsShownInAlert,\n hasChanges,\n saveChanges,\n discardChanges,\n hasSaved,\n // new rows\n insertTemporaryRow,\n temporaryRows: state.temporaryRows,\n };\n}\n"],"names":["DELAY_BEFORE_REMOVING_SAVE_STATUS","reducer","state","action","type","rowId","payload","columnId","row","value","changes","rows","setWith","Object","originals","rowIdentityAccessor","omit","keys","length","errors","moveReasons","cellErrors","original","cells","status","undefined","temporaryRows","filter","concat","usePendingChangesState","handleSave","handleChange","validator","saveChanges","table","console","warn","Promise","resolve","completed","_temp9","_forOf","getRowStatus","_catch","_changes$rowId","_temp8","_result","_exit","changeSet","then","discardChanges","setRowStatus","setTimeout","rowChanges","isTemporaryRow","_temp7","error","_error$response","ReferenceError","TypeError","response","rowError","Error","_error$response2","message","data","_error$response3","dispatch","shouldShowErrorAlert","_result3","e","reject","onCellChanged","cell","rowIndex","nextValue","shouldRunUpdaters","cellsToActOn","column","id","updatesForOtherCells","allCells","_getAllCellsByColumnId","forEach","accessor","validationErrors","nextCellErrors","nextMoveReasons","_allCells$accessor","getIsSorted","reason","willRowMove","nextChanges","localization","_state$changes$errors11","_temp3","nextRowValue","_validator2","_temp4","_temp5","previousRowValue","_handleChange","_temp6","setRowValue","_temp","_validator","_temp2","useLocalization","React","useReducer","getRowValue","_state$changes$rows$r","_state$changes$rows","getRowMoveReason","_Object$values$","values","_state$changes$moveRe","_state$changes$moveRe2","hasRowErrors","_state$changes$errors","_state$changes$errors2","_state$changes$errors3","hasRowErrorsShownInAlert","_state$changes$errors4","hasTemporaryRowErrors","newRow","_state$temporaryRows","_state$changes$errors5","_state$changes$errors6","_state$changes$errors7","insertTemporaryRow","newRowId","TEMPORARY_ROW_ID_PREFIX","uuid","setCellValue","getCellValue","_state$changes$rows2","_state$changes$rows2$","getCellError","_state$changes$errors8","_state$changes$errors9","_state$changes$errors10","getErrorsShownInAlert","rowsWithErrors","map","hasSaved","hasChanges","resetRowPinning"],"mappings":";;;;;;;;AASA,MAAMA,iCAAiC,GAAG,IAAI;AAkC9C,SAASC,OAAOA,CAAkBC,KAA0B,EAAEC,MAA0B;EACpF,MAAM;IAAEC,IAAI;IAAEC,KAAK;IAAEC;GAAS,GAAGH,MAAM;EAEvC,QAAQC,IAAI;IACR,KAAK,cAAc;MAAE;QACjB,MAAM;UAAEG,QAAQ;UAAEC,GAAG;UAAEC;SAAO,GAAGH,OAAO;QACxC,OAAO;UACH,GAAGJ,KAAK;UACRQ,OAAO,EAAE;YACL,GAAGR,KAAK,CAACQ,OAAO;YAChBC,IAAI,EAAEC,OAAO,CAACV,KAAK,CAACQ,OAAO,CAACC,IAAI,EAAE,GAAGN,KAAK,IAAIE,QAAQ,EAAE,EAAEE,KAAK,EAAEI,MAAM,CAAC;YACxEC,SAAS,EAAEF,OAAO,CAACV,KAAK,CAACQ,OAAO,CAACI,SAAS,EAAET,KAAK,EAAEG,GAAG,EAAEK,MAAM;;SAErE;;IAGL,KAAK,iBAAiB;MAAE;QACpB,MAAM;UAAEN,QAAQ;UAAEQ;SAAqB,GAAGT,OAAO;QACjD,MAAMI,OAAO,GAAGM,IAAI,CAACd,KAAK,CAACQ,OAAO,CAACC,IAAI,EAAE,GAAGN,KAAK,IAAIE,QAAQ,EAAE,CAAC;;QAGhE,IAAI,CAACM,MAAM,CAACI,IAAI,CAACP,OAAO,CAACL,KAAK,CAAC,CAAC,CAACa,MAAM,EAAE;UACrC,OAAOjB,OAAO,CAACC,KAAK,EAAE;YAAEE,IAAI,EAAE,WAAW;YAAEC,KAAK;YAAEC,OAAO,EAAE;cAAES;;WAAuB,CAAC;;QAGzF,OAAO;UACH,GAAGb,KAAK;UACRQ,OAAO,EAAE;YACL,GAAGR,KAAK,CAACQ,OAAO;YAChBC,IAAI,EAAEK,IAAI,CAACd,KAAK,CAACQ,OAAO,CAACC,IAAI,EAAE,GAAGN,KAAK,IAAIE,QAAQ,EAAE,CAAC;YACtDY,MAAM,EAAEH,IAAI,CAACd,KAAK,CAACQ,OAAO,CAACS,MAAM,EAAE,GAAGd,KAAK,UAAUE,QAAQ,EAAE,CAAC;YAChEa,WAAW,EAAEJ,IAAI,CAACd,KAAK,CAACQ,OAAO,CAACU,WAAW,EAAE,GAAGf,KAAK,IAAIE,QAAQ,EAAE;;SAE1E;;IAGL,KAAK,WAAW;MAAE;QACd,MAAM;UAAEc,UAAU;UAAED,WAAW;UAAEE,QAAQ;UAAEb;SAAO,GAAGH,OAAO;QAC5D,OAAO;UACH,GAAGJ,KAAK;UACRQ,OAAO,EAAE;YACL,GAAGR,KAAK,CAACQ,OAAO;YAChBC,IAAI,EAAEC,OAAO,CAACV,KAAK,CAACQ,OAAO,CAACC,IAAI,EAAEN,KAAK,EAAEI,KAAK,EAAEI,MAAM,CAAC;YACvDM,MAAM,EAAEP,OAAO,CACXV,KAAK,CAACQ,OAAO,CAACS,MAAM,EACpB,GAAGd,KAAK,QAAQ,EAChBgB,UAAU,aAAVA,UAAU,cAAVA,UAAU,GAAInB,KAAK,CAACQ,OAAO,CAACS,MAAM,CAACI,KAAK,CAAClB,KAAK,CAAC,EAC/CQ,MAAM,CACT;YACDC,SAAS,EAAEF,OAAO,CAACV,KAAK,CAACQ,OAAO,CAACI,SAAS,EAAET,KAAK,EAAEiB,QAAQ,aAARA,QAAQ,cAARA,QAAQ,GAAIpB,KAAK,CAACQ,OAAO,CAACI,SAAS,CAACT,KAAK,CAAC,EAAEQ,MAAM,CAAC;YACtGO,WAAW,EAAER,OAAO,CAChBV,KAAK,CAACQ,OAAO,CAACU,WAAW,EACzBf,KAAK,EACLe,WAAW,aAAXA,WAAW,cAAXA,WAAW,GAAIlB,KAAK,CAACQ,OAAO,CAACU,WAAW,CAACf,KAAK,CAAC,EAC/CQ,MAAM,CACT;;YAEDW,MAAM,EAAEZ,OAAO,CAACV,KAAK,CAACQ,OAAO,CAACc,MAAM,EAAEnB,KAAK,EAAEoB,SAAS,EAAEZ,MAAM;;SAErE;;IAGL,KAAK,WAAW;MAAE;QACd,MAAM;UAAEE;SAAqB,GAAGT,OAAO;QACvC,OAAO;UACH,GAAGJ,KAAK;UACRQ,OAAO,EAAE;YACL,GAAGR,KAAK,CAACQ,OAAO;YAChBC,IAAI,EAAEK,IAAI,CAACd,KAAK,CAACQ,OAAO,CAACC,IAAI,EAAEN,KAAK,CAAC;YACrCc,MAAM,EAAEH,IAAI,CAACd,KAAK,CAACQ,OAAO,CAACS,MAAM,EAAEd,KAAK,CAAC;YACzCe,WAAW,EAAEJ,IAAI,CAACd,KAAK,CAACQ,OAAO,CAACU,WAAW,EAAEf,KAAK,CAAC;YACnDS,SAAS,EAAEE,IAAI,CAACd,KAAK,CAACQ,OAAO,CAACI,SAAS,EAAET,KAAK,CAAC;YAC/CmB,MAAM,EAAER,IAAI,CAACd,KAAK,CAACQ,OAAO,CAACc,MAAM,EAAEnB,KAAK;WAC3C;UACDqB,aAAa,EAAExB,KAAK,CAACwB,aAAa,CAACC,MAAM,CAACnB,GAAG,IAAIA,GAAG,CAACO,mBAAmB,CAAC,KAAKV,KAAK;SACtF;;IAGL,KAAK,cAAc;MAAE;QACjB,MAAM;UAAEmB;SAAQ,GAAGlB,OAAO;QAC1B,OAAO;UACH,GAAGJ,KAAK;UACRQ,OAAO,EAAE;YACL,GAAGR,KAAK,CAACQ,OAAO;YAChBc,MAAM,EAAEA,MAAM,GAAGZ,OAAO,CAACV,KAAK,CAACQ,OAAO,CAACc,MAAM,EAAEnB,KAAK,EAAEmB,MAAM,EAAEX,MAAM,CAAC,GAAGG,IAAI,CAACd,KAAK,CAACQ,OAAO,CAACc,MAAM,EAAEnB,KAAK;;SAE/G;;IAGL,KAAK,cAAc;MAAE;QACjB,MAAM;UAAE,GAAGc;SAAQ,GAAGb,OAAO;QAC7B,OAAO;UACH,GAAGJ,KAAK;UACRQ,OAAO,EAAE;YACL,GAAGR,KAAK,CAACQ,OAAO;YAChBS,MAAM,EAAEP,OAAO,CAACV,KAAK,CAACQ,OAAO,CAACS,MAAM,EAAEd,KAAK,EAAEc,MAAM,EAAEN,MAAM;;SAElE;;IAGL,KAAK,oBAAoB;MAAE;QACvB,MAAM;UAAEJ;SAAO,GAAGH,OAAO;QACzB,OAAO;UACH,GAAGJ,KAAK;UACRwB,aAAa,EAAExB,KAAK,CAACwB,aAAa,CAACE,MAAM,CAACnB,KAAK,CAAC;UAChDC,OAAO,EAAE;YACL,GAAGR,KAAK,CAACQ,OAAO;YAChBC,IAAI,EAAEC,OAAO,CAACV,KAAK,CAACQ,OAAO,CAACC,IAAI,EAAEN,KAAK,EAAEI,KAAK,EAAEI,MAAM,CAAC;YACvDC,SAAS,EAAEF,OAAO,CAACV,KAAK,CAACQ,OAAO,CAACI,SAAS,EAAET,KAAK,EAAEI,KAAK,EAAEI,MAAM;;SAEvE;;IAGL;MACI,OAAOX,KAAK;;AAExB;SAEgB2B,sBAAsBA,CAClCC,UAAuD,EACvDC,YAA2D,EAC3DhB,mBAAgC,EAChCiB,SAAsD;QAsOvCC,WAAW,aAAkBC,KAAoB,EAAE7B,QAA4BoB,SAAS;IAAA;;MACnG,IAAI,CAACK,UAAU,EAAE;QACbK,OAAO,CAACC,IAAI,CAAC,uDAAuD,CAAC;QACrE,OAAAC,OAAA,CAAAC,OAAA,CAAO,KAAK;;;MAIhB,MAAM5B,OAAO,GAAGL,KAAK,GAAG;QAAE,CAACA,KAAK,GAAGH,KAAK,CAACQ,OAAO,CAACC,IAAI,CAACN,KAAK;OAAG,GAAGH,KAAK,CAACQ,OAAO,CAACC,IAAI;MAEnF,IAAI4B,SAAS,GAAG,IAAI;MAAC,MAAAC,MAAA,GAAAC,MAAA,CAED5B,MAAM,CAACI,IAAI,CAACP,OAAO,CAAC,YAA7BL,KAAK,EAA0B;QACtC,MAAMmB,MAAM,GAAGkB,YAAY,CAACrC,KAAK,CAAC;QAAC,OAAAsC,MAAA,aAE/B;UAAA,IAAAC,cAAA;UAAA,SAAAC,OAAAC,OAAA;YAAA,OAAAC,KAAA,GAAAD,OAAA,GAAAT,OAAA,CAAAC,OAAA,CA2BMR,UAAU,CAACkB,SAAS,CAAC,EAAAC,IAAA;;cAG3BC,cAAc,CAAC7C,KAAK,EAAE6B,KAAK,CAAC;;cAG5BiB,YAAY,CAAC9C,KAAK,EAAE,OAAO,CAAC;cAC5B+C,UAAU,CAAC;gBACPD,YAAY,CAAC9C,KAAK,EAAEoB,SAAS,CAAC;eACjC,EAAEzB,iCAAiC,CAAC;;;UAnCrC,MAAMqD,UAAU,IAAAT,cAAA,GAAGlC,OAAO,CAACL,KAAK,CAAC,cAAAuC,cAAA,cAAAA,cAAA,GAAI,EAAE;;UAGvC,IAAI,CAAC/B,MAAM,CAACI,IAAI,CAACoC,UAAU,CAAC,CAACnC,MAAM,IAAIM,MAAM,KAAK,QAAQ,IAAIA,MAAM,KAAK,SAAS,EAAE;YAAA;;UAIpF2B,YAAY,CAAC9C,KAAK,EAAE,QAAQ,CAAC;UAE7B,MAAM2C,SAAS,GAAG;YAAE,GAAG9C,KAAK,CAACQ,OAAO,CAACI,SAAS,CAACT,KAAK,CAAC;YAAE,GAAGgD;WAAY;;UAGtE,IAAIC,cAAc,CAACN,SAAS,CAACjC,mBAA6B,CAAC,CAAC,EAAE;YAC1D,OAAOiC,SAAS,CAACjC,mBAAmB,CAAC;;;UAGzC,MAAAwC,MAAA;YAAA,IACIvB,SAAS;cAAA,OAAAK,OAAA,CAAAC,OAAA,CACYN,SAAS,CAACgB,SAAS,CAAC,EAAAC,IAAA,WAAnC9B,MAAM;gBAAA,IAERA,MAAM,IAAIN,MAAM,CAACI,IAAI,CAACE,MAAM,CAAC,CAACD,MAAM;kBACpC,MAAMC,MAAM;;;;;UAAC,OAAAoC,MAAA,IAAAA,MAAA,CAAAN,IAAA,GAAAM,MAAA,CAAAN,IAAA,CAAAJ,MAAA,IAAAA,MAAA,CAAAU,MAAA;SAexB,YAAQC,KAAK,EAAE;UAAA,IAAAC,eAAA;UACZ,IAAID,KAAK,YAAYE,cAAc,IAAIF,KAAK,YAAYG,SAAS,IAAK,CAAAH,KAAa,aAAbA,KAAa,wBAAAC,eAAA,GAAbD,KAAa,CAAEI,QAAQ,cAAAH,eAAA,uBAAvBA,eAAA,CAAyBjC,MAAM,KAAI,GAAG,EAAE;YAC1GW,OAAO,CAACqB,KAAK,CAACA,KAAK,CAAC;;;;UAKxB,IAAIK,QAA4B;UAChC,IAAIxC,UAAU;UAEd,IAAI,OAAOmC,KAAK,KAAK,QAAQ,EAAE;YAC3BK,QAAQ,GAAGL,KAAK;WACnB,MAAM,IAAIA,KAAK,YAAYM,KAAK,EAAE;YAAA,IAAAC,gBAAA;YAC/BF,QAAQ,GAAGL,KAAK,CAACQ,OAAO;;YAGxB,IAAI,SAAAD,gBAAA,GAAQP,KAAa,CAACI,QAAQ,cAAAG,gBAAA,uBAAtBA,gBAAA,CAAwBE,IAAI,MAAK,QAAQ,EAAE;cAAA,IAAAC,gBAAA;cACnD7C,UAAU,IAAA6C,gBAAA,GAAIV,KAAa,CAACI,QAAQ,cAAAM,gBAAA,uBAAtBA,gBAAA,CAAwBD,IAAI;;WAEjD,MAAM,IAAI,OAAOT,KAAK,KAAK,QAAQ,EAAE;YAClCnC,UAAU,GAAGmC,KAAK;;UAGtB,IAAIK,QAAQ,IAAIxC,UAAU,EAAE;YACxB8C,QAAQ,CAAC;cACL/D,IAAI,EAAE,cAAc;cACpBC,KAAK;cACLC,OAAO,EAAE;gBACLE,GAAG,EAAEqD,QAAQ;gBACbtC,KAAK,EAAEF,UAAU;gBACjB+C,oBAAoB,EAAE;;aAE7B,CAAC;;UAGNjB,YAAY,CAAC9C,KAAK,EAAE,SAAS,CAAC;UAC9BkC,SAAS,GAAG,KAAK;SACpB;OACJ;QAAA,OAAAQ,KAAA;;MAAA,OAAAV,OAAA,CAAAC,OAAA,CAAAE,MAAA,IAAAA,MAAA,CAAAS,IAAA,GAAAT,MAAA,CAAAS,IAAA,WAAAoB,QAAA;QAAA,OAAAtB,KAAA,GAAAsB,QAAA,GAEM9B,SAAS;WAAAQ,KAAA,GAAAP,MAAA,GAATD,SAAS;KACnB,QAAA+B,CAAA;MAAA,OAAAjC,OAAA,CAAAkC,MAAA,CAAAD,CAAA;;;EAAA,MA3McE,aAAa,aACxBC,IAAgC,EAChCC,QAAgB,EAChBC,SAAS,EACTC,iBAAiB,GAAG,IAAI;IAAA;;;;;;UA+CxB,MAAMC,YAAY,GAAG,CAACJ,IAAI,CAACK,MAAM,CAACC,EAAE,EAAE,GAAGlE,MAAM,CAACI,IAAI,CAAC+D,oBAAoB,CAAC,CAAC;UAC3E,MAAMC,QAAQ,GAAGR,IAAI,CAACjE,GAAG,CAAC0E,sBAAsB,EAAE;UAElDL,YAAY,CAACM,OAAO,CAACC,QAAQ;YACzB,IAAIC,gBAAgB,CAACD,QAAQ,CAAC,EAAE;cAC5BE,cAAc,CAACF,QAAQ,CAAC,GAAGC,gBAAgB,CAACD,QAAQ,CAAC;;cAErD,OAAOG,eAAe,CAACH,QAAQ,CAAC;aACnC,MAAM;cAAA,IAAAI,kBAAA;;cAEH,OAAOF,cAAc,CAACF,QAAQ,CAAC;cAE/B,KAAAI,kBAAA,GAAIP,QAAQ,CAACG,QAAQ,CAAC,cAAAI,kBAAA,eAAlBA,kBAAA,CAAoBV,MAAM,CAACW,WAAW,EAAE,EAAE;;gBAE1C,MAAMC,MAAM,GAAGC,WAAW,CAAClB,IAAI,EAAEmB,WAAW,CAACR,QAAQ,CAAC,EAAEV,QAAQ,EAAEmB,YAAY,CAAC;;gBAG/E,IAAIH,MAAM,EAAE;kBACRH,eAAe,CAACH,QAAQ,CAAC,GAAGM,MAAM;iBACrC,MAAM;kBACH,OAAOH,eAAe,CAACH,QAAQ,CAAC;;;;WAI/C,CAAC;UAEFjB,QAAQ,CAAC;YACL/D,IAAI,EAAE,WAAW;YACjBC,KAAK,EAAEoE,IAAI,CAACjE,GAAG,CAACuE,EAAE;YAClBzE,OAAO,EAAE;cACLe,UAAU,EAAEiE,cAAc;cAC1BlE,WAAW,EAAEmE,eAAe;cAC5B9E,KAAK,EAAEmF;;WAEd,CAAC;;;QAjDF,MAAMA,WAAW,GAAG;UAAE,GAAGlF,OAAO;UAAE,GAAGsE;SAAsB;QAC3D,MAAMO,eAAe,GAAyB;UAAE,GAAGrF,KAAK,CAACQ,OAAO,CAACU,WAAW,CAACqD,IAAI,CAACjE,GAAG,CAACuE,EAAE;SAAG;QAC3F,MAAMO,cAAc,GAA2B;UAAE,KAAAQ,uBAAA,GAAG5F,KAAK,CAACQ,OAAO,CAACS,MAAM,CAACsD,IAAI,CAACjE,GAAG,CAACuE,EAAE,CAAC,cAAAe,uBAAA,uBAAjCA,uBAAA,CAAmCvE,KAAK;SAAE;;QAG9F,IAAI8D,gBAAgB,GAA2B,EAAE;QAAC,MAAAU,MAAA;UAAA,IAE9C/D,SAAS,IAAInB,MAAM,CAACI,IAAI,CAAC2E,WAAW,CAAC,CAAC1E,MAAM,IAAIhB,KAAK,CAACQ,OAAO,CAACI,SAAS,CAAC2D,IAAI,CAACjE,GAAG,CAACuE,EAAE,CAAC;;YAEpF,MAAMiB,YAAY,GAAG;cAAE,GAAG9F,KAAK,CAACQ,OAAO,CAACI,SAAS,CAAC2D,IAAI,CAACjE,GAAG,CAACuE,EAAE,CAAC;cAAE,GAAGrE,OAAO;cAAE,GAAGsE;aAAsB;YAAC,OAAA3C,OAAA,CAAAC,OAAA,CAC3EN,SAAS,CAACgE,YAAY,CAAC,EAAA/C,IAAA,WAAAgD,WAAA;cAAlDZ,gBAAgB,GAAAY,WAAA,aAAAA,WAAA,cAAAA,WAAA,GAAuC,EAA6B;;;;QAAC,OAAAF,MAAA,IAAAA,MAAA,CAAA9C,IAAA,GAAA8C,MAAA,CAAA9C,IAAA,CAAAiD,MAAA,IAAAA,MAAA,CAAAH,MAAA;;MAxCzF,MAAMrF,OAAO,GACTiE,SAAS,KAAKlD,SAAS,GACjB;QAAE,GAAGvB,KAAK,CAACQ,OAAO,CAACC,IAAI,CAAC8D,IAAI,CAACjE,GAAG,CAACuE,EAAE,CAAC;QAAE,CAACN,IAAI,CAACK,MAAM,CAACC,EAAE,GAAGJ;OAAW,GACnE;QAAE,GAAGzE,KAAK,CAACQ,OAAO,CAACC,IAAI,CAAC8D,IAAI,CAACjE,GAAG,CAACuE,EAAE;OAAG;MAEhD,IAAI,CAAClE,MAAM,CAACI,IAAI,CAACP,OAAO,CAAC,CAACQ,MAAM,EAAE;QAC9B,OAAAmB,OAAA,CAAAC,OAAA;;MAGJ,IAAI0C,oBAAoB,GAAe,EAAE;;MAEzC,MAAAmB,MAAA;QAAA,IACI,OAAOpE,YAAY,KAAK,UAAU,IAAI6C,iBAAiB;UACvD,MAAMwB,gBAAgB,GAAG;YACrB,GAAGlG,KAAK,CAACQ,OAAO,CAACI,SAAS,CAAC2D,IAAI,CAACjE,GAAG,CAACuE,EAAE;WAEzC;UACD,MAAMiB,YAAY,GAAG;YACjB,GAAG9F,KAAK,CAACQ,OAAO,CAACI,SAAS,CAAC2D,IAAI,CAACjE,GAAG,CAACuE,EAAE,CAAC;YACvC,GAAGrE;WACN;UAAC,OAAA2B,OAAA,CAAAC,OAAA,CAC6BP,YAAY,CACvC0C,IAAI,CAACK,MAAM,CAACC,EAAE,EACdrE,OAAO,CAAC+D,IAAI,CAACK,MAAM,CAACC,EAAE,CAAC,EACvBiB,YAAY,EACZI,gBAAgB,CACnB,EAAAnD,IAAA,WAAAoD,aAAA;YALDrB,oBAAoB,GAAAqB,aAAA,aAAAA,aAAA,cAAAA,aAAA,GAKd,EAAiB;;;;MAAC,OAAAhE,OAAA,CAAAC,OAAA,CAAA6D,MAAA,IAAAA,MAAA,CAAAlD,IAAA,GAAAkD,MAAA,CAAAlD,IAAA,CAAAqD,MAAA,IAAAA,MAAA,CAAAH,MAAA;KAsD/B,QAAA7B,CAAA;MAAA,OAAAjC,OAAA,CAAAkC,MAAA,CAAAD,CAAA;;;;EArMD,MACeiC,WAAW,aAAkBlG,KAAa,EAAEiB,QAAW,EAAEb,KAAiB;IAAA;;QAQrF0D,QAAQ,CAAC;UACL/D,IAAI,EAAE,WAAW;UACjBC,KAAK;UACLC,OAAO,EAAE;YAAEe,UAAU;YAAEC,QAAQ;YAAEb;;SACpC,CAAC;;MAXF,IAAIY,UAAU;MAAC,MAAAmF,KAAA;QAAA,IAEXxE,SAAS;UACT,MAAMxB,GAAG,GAAG;YAAE,GAAGc,QAAQ;YAAE,GAAGb;WAAY;UAAC,OAAA4B,OAAA,CAAAC,OAAA,CACtBN,SAAS,CAACxB,GAAG,CAAC,EAAAyC,IAAA,WAAAwD,UAAA;YAAnCpF,UAAU,GAAAoF,UAAA,aAAAA,UAAA,cAAAA,UAAA,GAA8B,EAA6B;;;;MAAC,OAAApE,OAAA,CAAAC,OAAA,CAAAkE,KAAA,IAAAA,KAAA,CAAAvD,IAAA,GAAAuD,KAAA,CAAAvD,IAAA,CAAAyD,MAAA,IAAAA,MAAA,CAAAF,KAAA;KAQ7E,QAAAlC,CAAA;MAAA,OAAAjC,OAAA,CAAAkC,MAAA,CAAAD,CAAA;;;EApBD,MAAMuB,YAAY,GAAGc,eAAe,EAAE;EACtC,MAAM,CAACzG,KAAK,EAAEiE,QAAQ,CAAC,GAAGyC,cAAK,CAACC,UAAU,CAAC5G,OAAO,EAAE;IAChDS,OAAO,EAAE;MAAEC,IAAI,EAAE,EAAE;MAAEQ,MAAM,EAAE,EAAE;MAAEC,WAAW,EAAE,EAAE;MAAEN,SAAS,EAAE,EAAE;MAAEU,MAAM,EAAE;KAAI;IAC7EE,aAAa,EAAE;GAClB,CAAC;EAkBF,SAASoF,WAAWA,CAACzG,KAAa;;IAC9B,QAAA0G,qBAAA,IAAAC,mBAAA,GAAO9G,KAAK,CAACQ,OAAO,CAACC,IAAI,cAAAqG,mBAAA,uBAAlBA,mBAAA,CAAqB3G,KAAK,CAAC,cAAA0G,qBAAA,cAAAA,qBAAA,GAAItF,SAAS;;EAGnD,SAASwF,gBAAgBA,CAAC5G,KAAa;;IACnC,QAAA6G,eAAA,GAAOrG,MAAM,CAACsG,MAAM,EAAAC,qBAAA,IAAAC,sBAAA,GAACnH,KAAK,CAACQ,OAAO,CAACU,WAAW,cAAAiG,sBAAA,uBAAzBA,sBAAA,CAA4BhH,KAAK,CAAC,cAAA+G,qBAAA,cAAAA,qBAAA,GAAI,EAAE,CAAC,CAAC,CAAC,CAAC,cAAAF,eAAA,cAAAA,eAAA,GAAIzF,SAAS;;EAGlF,SAAS6F,YAAYA,CAACjH,KAAa;;IAC/B,OAAO,CAAC,GAAAkH,qBAAA,GAACrH,KAAK,CAACQ,OAAO,CAACS,MAAM,CAACd,KAAK,CAAC,cAAAkH,qBAAA,eAA3BA,qBAAA,CAA6B/G,GAAG,KAAI,CAAC,CAACK,MAAM,CAACI,IAAI,EAAAuG,sBAAA,IAAAC,sBAAA,GAACvH,KAAK,CAACQ,OAAO,CAACS,MAAM,CAACd,KAAK,CAAC,cAAAoH,sBAAA,uBAA3BA,sBAAA,CAA6BlG,KAAK,cAAAiG,sBAAA,cAAAA,sBAAA,GAAI,EAAE,CAAC,CAACtG,MAAM;;EAG/G,SAASwG,wBAAwBA,CAACrH,KAAa;;IAC3C,OAAOiH,YAAY,CAACjH,KAAK,CAAC,IAAI,CAAC,GAAAsH,sBAAA,GAACzH,KAAK,CAACQ,OAAO,CAACS,MAAM,CAACd,KAAK,CAAC,cAAAsH,sBAAA,eAA3BA,sBAAA,CAA6BvD,oBAAoB;;EAGrF,SAASwD,qBAAqBA;;IAC1B,MAAMC,MAAM,IAAAC,oBAAA,GAAG5H,KAAK,CAACwB,aAAa,cAAAoG,oBAAA,uBAAnBA,oBAAA,CAAsB,CAAC,CAAkB;IAExD,IAAI,CAACD,MAAM,EAAE;MACT,OAAO,KAAK;;IAGhB,MAAMxH,KAAK,GAAGwH,MAAM,CAAC9G,mBAA6B,CAAC;IACnD,OAAO,CAAC,GAAAgH,sBAAA,GAAC7H,KAAK,CAACQ,OAAO,CAACS,MAAM,CAACd,KAAK,CAAC,cAAA0H,sBAAA,eAA3BA,sBAAA,CAA6BvH,GAAG,KAAI,CAAC,CAACK,MAAM,CAACI,IAAI,EAAA+G,sBAAA,IAAAC,sBAAA,GAAC/H,KAAK,CAACQ,OAAO,CAACS,MAAM,CAACd,KAAK,CAAC,cAAA4H,sBAAA,uBAA3BA,sBAAA,CAA6B1G,KAAK,cAAAyG,sBAAA,cAAAA,sBAAA,GAAI,EAAE,CAAC,CAAC9G,MAAM;;EAG/G,SAASwB,YAAYA,CAACrC,KAAa;IAC/B,OAAOH,KAAK,CAACQ,OAAO,CAACc,MAAM,CAACnB,KAAK,CAAC;;EAGtC,SAAS8C,YAAYA,CAAC9C,KAAa,EAAEmB,MAAoC;IACrE2C,QAAQ,CAAC;MACL/D,IAAI,EAAE,cAAc;MACpBC,KAAK;MACLC,OAAO,EAAE;QACLkB;;KAEP,CAAC;;EAGN,SAAS0G,kBAAkBA,CAAkBjE,IAAgB;IACzD,MAAMkE,QAAQ,GAAG,GAAGC,uBAAuB,GAAGC,EAAI,EAAE,EAAE;IACtD,MAAM5H,KAAK,GAAmB;MAC1B,GAAGwD,IAAI;MACP,CAAClD,mBAAmB,GAAGoH;KAC1B;IAEDhE,QAAQ,CAAC;MACL/D,IAAI,EAAE,oBAAoB;MAC1BC,KAAK,EAAE8H,QAAQ;MACf7H,OAAO,EAAE;QAAEG;;KACd,CAAC;IAEF,OAAO0H,QAAQ;;;EAInB,SAASG,YAAYA,CAAkB7D,IAAgC,EAAEhE,KAAc;IACnF,MAAMJ,KAAK,GAAGoE,IAAI,CAACjE,GAAG,CAACuE,EAAE;IACzB,MAAMxE,QAAQ,GAAGkE,IAAI,CAACK,MAAM,CAACC,EAAE;;IAG/B,IAAItE,KAAK,KAAKgE,IAAI,CAACjE,GAAG,CAACc,QAAQ,CAACf,QAAQ,CAAC,EAAE;MACvC4D,QAAQ,CAAC;QACL/D,IAAI,EAAE,cAAc;QACpBC,KAAK;QACLC,OAAO,EAAE;UACLC,QAAQ;UACRC,GAAG,EAAEiE,IAAI,CAACjE,GAAG,CAACc,QAAQ;UACtBb;;OAEP,CAAC;;;SAGD,IAAIgE,IAAI,CAACjE,GAAG,CAACuE,EAAE,IAAI7E,KAAK,CAACQ,OAAO,CAACC,IAAI,EAAE;MACxCwD,QAAQ,CAAC;QACL/D,IAAI,EAAE,iBAAiB;QACvBC,KAAK;QACLC,OAAO,EAAE;UACLC,QAAQ;UACRQ;;OAEP,CAAC;;;EAIV,SAASwH,YAAYA,CAAkB9D,IAAgC;;IACnE,QAAA+D,oBAAA,GAAOtI,KAAK,CAACQ,OAAO,CAACC,IAAI,cAAA6H,oBAAA,wBAAAC,qBAAA,GAAlBD,oBAAA,CAAqB/D,IAAI,CAACjE,GAAG,CAACuE,EAAE,CAAC,cAAA0D,qBAAA,uBAAjCA,qBAAA,CAAoChE,IAAI,CAACK,MAAM,CAACC,EAAE,CAAC;;EAG9D,SAAS2D,YAAYA,CAAkBjE,IAAgC;;IACnE,QAAAkE,sBAAA,GAAOzI,KAAK,CAACQ,OAAO,CAACS,MAAM,cAAAwH,sBAAA,wBAAAC,sBAAA,GAApBD,sBAAA,CAAuBlE,IAAI,CAACjE,GAAG,CAACuE,EAAE,CAAC,cAAA6D,sBAAA,wBAAAC,uBAAA,GAAnCD,sBAAA,CAAqCrH,KAAK,cAAAsH,uBAAA,uBAA1CA,uBAAA,CAA6CpE,IAAI,CAACK,MAAM,CAACC,EAAE,CAAC;;EA4FvE,SAAS+D,qBAAqBA;IAC1B,MAAMC,cAAc,GAAGlI,MAAM,CAACI,IAAI,CAACf,KAAK,CAACQ,OAAO,CAACS,MAAM,CAAC;IAExD,IAAI,CAAC4H,cAAc,CAAC7H,MAAM,EAAE;MACxB,OAAO,EAAE;;IAGb,OAAO6H,cAAc,CAACpH,MAAM,CAAC+F,wBAAwB,CAAC,CAACsB,GAAG,CAAC3I,KAAK,KAAK;MACjEA,KAAK;MACLK,OAAO,EAAER,KAAK,CAACQ,OAAO,CAACC,IAAI,CAACN,KAAK,CAAwB;MACzDc,MAAM,EAAEjB,KAAK,CAACQ,OAAO,CAACS,MAAM,CAACd,KAAK;KACrC,CAAC,CAAC;;EAGP,SAAS4I,QAAQA;IACb,OAAO,CAAC,CAACpI,MAAM,CAACsG,MAAM,CAACjH,KAAK,CAACQ,OAAO,CAACc,MAAM,CAAC,CAACG,MAAM,CAAClB,KAAK,IAAIA,KAAK,KAAK,OAAO,CAAC,CAACS,MAAM;;EAG1F,SAASgI,UAAUA,CAAC7I,KAAc;IAC9B,OAAOA,KAAK,GAAG,CAAC,CAACH,KAAK,CAACQ,OAAO,CAACC,IAAI,CAACN,KAAK,CAAC,GAAG,CAAC,CAACQ,MAAM,CAACI,IAAI,CAACf,KAAK,CAACQ,OAAO,CAACC,IAAI,CAAC,CAACO,MAAM;;EAiGzF,SAASgC,cAAcA,CAAkB7C,KAAa,EAAE6B,KAAoB;;IAExEA,KAAK,CAACiH,eAAe,CAAC,IAAI,CAAC;IAE3BhF,QAAQ,CAAC;MACL/D,IAAI,EAAE,WAAW;MACjBC,KAAK;MACLC,OAAO,EAAE;QAAES;;KACd,CAAC;;EAGN,OAAO;;IAEHwF,WAAW;IACXO,WAAW;IACXG,gBAAgB;IAChBK,YAAY;IACZI,wBAAwB;IACxBE,qBAAqB;IACrBlF,YAAY;IACZS,YAAY;;IAEZmF,YAAY;IACZC,YAAY;IACZG,YAAY;IACZlE,aAAa;;IAEbsE,qBAAqB;IACrBI,UAAU;IACVjH,WAAW;IACXiB,cAAc;IACd+F,QAAQ;;IAERf,kBAAkB;IAClBxG,aAAa,EAAExB,KAAK,CAACwB;GACxB;AACL;;;;"}
|
|
1
|
+
{"version":3,"file":"useEditingState.js","sources":["../../../../../../../../src/components/Table3/features/useEditingState.ts"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, Cell as ReactTableCell } from '@tanstack/react-table';\nimport { v4 as uuid } from 'uuid';\nimport omit from 'lodash/omit';\nimport setWith from 'lodash/setWith';\nimport {\n Table3EditingChangeHandler,\n Table3EditingDiscardHandler,\n Table3EditingSaveHandler,\n Table3EditingValidatorFn,\n} from '../types';\nimport { isTemporaryRow, TEMPORARY_ROW_ID_PREFIX, willRowMove } from '../util/editing';\nimport { useLocalization } from '../../Provider/Localization';\n\nconst DELAY_BEFORE_REMOVING_SAVE_STATUS = 3000;\n\ntype EditingError = {\n row: string;\n cells: Record<string, string>;\n shouldShowErrorAlert: boolean;\n};\ntype EditingRowMoveReason = Record<string, 'search' | 'sorting' | 'filter'>;\ntype EditingSaveState = 'saving' | 'saved' | 'errored';\ntype EditingChangeset<TType = unknown> = Partial<TType>;\ntype EditingState<TType = unknown> = {\n changes: {\n rows: Record<string, EditingChangeset<TType>>;\n errors: Record<string, EditingError>;\n moveReasons: Record<string, EditingRowMoveReason>;\n originals: Record<string, TType>;\n status: Record<string, EditingSaveState>;\n };\n // we store row indexes because due to server loading, we don't always have all data available\n // so we can't determine an index from a row id\n // note: if the row click button in the error Alert is removed, indexes can be removed here\n indexes: Record<string, number>;\n temporaryRows: TType[];\n};\ntype EditingStateAction = {\n type:\n | 'setCellValue'\n | 'removeCellValue'\n | 'updateRow'\n | 'mergeRowValue'\n | 'removeRow'\n | 'setRowStatus'\n | 'setRowErrors'\n | 'insertTemporaryRow';\n rowId: string;\n payload?: any;\n};\n\nfunction reducer<TType = unknown>(state: EditingState<TType>, action: EditingStateAction) {\n const { type, rowId, payload } = action;\n\n switch (type) {\n case 'setCellValue': {\n const { columnId, index, row, value } = payload;\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: setWith(state.changes.rows, `${rowId}.${columnId}`, value, Object),\n originals: setWith(state.changes.originals, rowId, row, Object),\n },\n indexes: setWith(state.indexes, rowId, index, Object),\n };\n }\n\n case 'removeCellValue': {\n const { columnId, rowIdentityAccessor } = payload;\n const changes = omit(state.changes.rows, `${rowId}.${columnId}`);\n\n // if there are no changes left, remove the row\n if (!Object.keys(changes[rowId]).length) {\n return reducer(state, { type: 'removeRow', rowId, payload: { rowIdentityAccessor } });\n }\n\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: omit(state.changes.rows, `${rowId}.${columnId}`),\n errors: omit(state.changes.errors, `${rowId}.cells.${columnId}`),\n moveReasons: omit(state.changes.moveReasons, `${rowId}.${columnId}`),\n },\n };\n }\n\n case 'updateRow': {\n const { cellErrors, index, moveReasons, original, value } = payload;\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: setWith(state.changes.rows, rowId, value, Object),\n errors: setWith(\n state.changes.errors,\n `${rowId}.cells`,\n cellErrors ?? state.changes.errors.cells[rowId],\n Object\n ),\n originals: setWith(state.changes.originals, rowId, original ?? state.changes.originals[rowId], Object),\n moveReasons: setWith(\n state.changes.moveReasons,\n rowId,\n moveReasons ?? state.changes.moveReasons[rowId],\n Object\n ),\n // status can be undefined, so don't use ??\n status: setWith(state.changes.status, rowId, undefined, Object),\n },\n indexes: setWith(state.indexes, rowId, index, Object),\n };\n }\n\n case 'removeRow': {\n const { rowIdentityAccessor } = payload;\n return {\n ...state,\n changes: {\n ...state.changes,\n rows: omit(state.changes.rows, rowId),\n errors: omit(state.changes.errors, rowId),\n moveReasons: omit(state.changes.moveReasons, rowId),\n originals: omit(state.changes.originals, rowId),\n status: omit(state.changes.status, rowId),\n },\n indexes: omit(state.indexes, rowId),\n temporaryRows: state.temporaryRows.filter(row => row[rowIdentityAccessor] !== rowId),\n };\n }\n\n case 'setRowStatus': {\n const { status } = payload;\n return {\n ...state,\n changes: {\n ...state.changes,\n status: status ? setWith(state.changes.status, rowId, status, Object) : omit(state.changes.status, rowId),\n },\n };\n }\n\n case 'setRowErrors': {\n const { ...errors } = payload;\n return {\n ...state,\n changes: {\n ...state.changes,\n errors: setWith(state.changes.errors, rowId, errors, Object),\n },\n };\n }\n\n case 'insertTemporaryRow': {\n const { index, value } = payload;\n return {\n ...state,\n temporaryRows: state.temporaryRows.concat(value),\n changes: {\n ...state.changes,\n rows: setWith(state.changes.rows, rowId, value, Object),\n originals: setWith(state.changes.originals, rowId, value, Object),\n },\n indexes: setWith(state.indexes, rowId, index, Object),\n };\n }\n\n default:\n return state;\n }\n}\n\nexport function usePendingChangesState<TType = unknown>(\n handleSave: Table3EditingSaveHandler<TType> | undefined,\n handleChange: Table3EditingChangeHandler<TType> | undefined,\n handleDiscard: Table3EditingDiscardHandler | undefined,\n rowIdentityAccessor: keyof TType,\n validator: Table3EditingValidatorFn<TType> | undefined\n) {\n const localization = useLocalization();\n const [state, dispatch] = React.useReducer(reducer, {\n changes: { rows: {}, errors: {}, moveReasons: {}, originals: {}, status: {} },\n indexes: {},\n temporaryRows: [],\n });\n\n // rows\n function getRowValue(rowId: string) {\n return state.changes.rows?.[rowId] ?? undefined;\n }\n\n function getRowMoveReason(rowId: string) {\n return Object.values(state.changes.moveReasons?.[rowId] ?? {})[0] ?? undefined;\n }\n\n function hasRowErrors(rowId: string) {\n return !!state.changes.errors[rowId]?.row || !!Object.keys(state.changes.errors[rowId]?.cells ?? {}).length;\n }\n\n function hasRowErrorsShownInAlert(rowId: string) {\n return hasRowErrors(rowId) && !!state.changes.errors[rowId]?.shouldShowErrorAlert;\n }\n\n function hasTemporaryRowErrors<T extends TType>() {\n const newRow = state.temporaryRows?.[0] as T | undefined;\n\n if (!newRow) {\n return false;\n }\n\n const rowId = newRow[rowIdentityAccessor as string];\n return !!state.changes.errors[rowId]?.row || !!Object.keys(state.changes.errors[rowId]?.cells ?? {}).length;\n }\n\n function getRowStatus(rowId: string) {\n return state.changes.status[rowId];\n }\n\n function setRowStatus(rowId: string, status: EditingSaveState | undefined) {\n dispatch({\n type: 'setRowStatus',\n rowId,\n payload: {\n status,\n },\n });\n }\n\n function insertTemporaryRow<T extends TType>(data: Partial<T>, rowIndex: number) {\n const newRowId = `${TEMPORARY_ROW_ID_PREFIX}${uuid()}`;\n const value: Partial<TType> = {\n ...data,\n [rowIdentityAccessor]: newRowId,\n };\n\n dispatch({\n type: 'insertTemporaryRow',\n rowId: newRowId,\n payload: { index: rowIndex, value },\n });\n\n return newRowId;\n }\n\n // cells\n function setCellValue<T extends TType>(cell: ReactTableCell<T, unknown>, rowIndex: number, value: unknown) {\n const rowId = cell.row.id;\n const columnId = cell.column.id;\n\n // update if the change is different to the original value\n if (value !== cell.row.original[columnId]) {\n dispatch({\n type: 'setCellValue',\n rowId,\n payload: {\n columnId,\n index: rowIndex,\n row: cell.row.original,\n value,\n },\n });\n }\n // otherwise remove any previous change - no point saving the same value\n else if (cell.row.id in state.changes.rows) {\n dispatch({\n type: 'removeCellValue',\n rowId,\n payload: {\n columnId,\n rowIdentityAccessor,\n },\n });\n }\n }\n\n function getCellValue<T extends TType>(cell: ReactTableCell<T, unknown>): unknown | undefined {\n return state.changes.rows?.[cell.row.id]?.[cell.column.id];\n }\n\n function getCellError<T extends TType>(cell: ReactTableCell<T, unknown>): string | undefined {\n return state.changes.errors?.[cell.row.id]?.cells?.[cell.column.id];\n }\n\n async function onCellChanged<T extends TType>(\n cell: ReactTableCell<T, unknown>,\n rowIndex: number,\n nextValue,\n shouldRunUpdaters = true\n ) {\n const changes =\n nextValue !== undefined\n ? { ...state.changes.rows[cell.row.id], [cell.column.id]: nextValue }\n : { ...state.changes.rows[cell.row.id] };\n\n if (!Object.keys(changes).length) {\n return;\n }\n\n let updatesForOtherCells: Partial<T> = {};\n\n // run the updater handler if there is one, to see if there are any other cells to update\n if (typeof handleChange === 'function' && shouldRunUpdaters) {\n const previousRowValue = {\n ...state.changes.originals[cell.row.id],\n //...getRowChangeset(updatersRef.current[cell.row.id], rowIdentityAccessor),\n };\n const nextRowValue = {\n ...state.changes.originals[cell.row.id],\n ...changes,\n };\n updatesForOtherCells = ((await handleChange(\n cell.column.id,\n changes[cell.column.id],\n nextRowValue,\n previousRowValue\n )) ?? {}) as Partial<T>;\n }\n\n // create a projection of the next state, so we can act against it\n const nextChanges = { ...changes, ...updatesForOtherCells };\n const nextMoveReasons: EditingRowMoveReason = { ...state.changes.moveReasons[cell.row.id] };\n const nextCellErrors: Record<string, string> = { ...state.changes.errors[cell.row.id]?.cells };\n\n // run validation - if there are changes, and if there is an original stored\n let validationErrors: Record<string, string> = {};\n\n if (validator && Object.keys(nextChanges).length && state.changes.originals[cell.row.id]) {\n // merge with the original so we get a full row\n const nextRowValue = { ...state.changes.originals[cell.row.id], ...changes, ...updatesForOtherCells };\n validationErrors = ((await validator(nextRowValue)) ?? {}) as Record<string, string>;\n }\n\n // only set errors and move reasons for the cells we're currently acting on\n // why? because the UX is not good if we set them for cells the user hasn't touched yet\n const cellsToActOn = [cell.column.id, ...Object.keys(updatesForOtherCells)];\n const allCells = cell.row._getAllCellsByColumnId();\n\n cellsToActOn.forEach(accessor => {\n if (validationErrors[accessor]) {\n nextCellErrors[accessor] = validationErrors[accessor];\n // don't show move indicator for cells with errors, they aren't valid and can't be saved\n delete nextMoveReasons[accessor];\n } else {\n // there isn't any error in this run, remove any error set in state\n delete nextCellErrors[accessor];\n\n if (allCells[accessor]?.column.getIsSorted()) {\n // run row move determination\n const reason = willRowMove(cell, nextChanges[accessor], rowIndex, localization);\n\n // if the row will move based on this change save why, otherwise delete any existing state\n if (reason) {\n nextMoveReasons[accessor] = reason;\n } else {\n delete nextMoveReasons[accessor];\n }\n }\n }\n });\n\n dispatch({\n type: 'updateRow',\n rowId: cell.row.id,\n payload: {\n cellErrors: nextCellErrors,\n index: rowIndex,\n moveReasons: nextMoveReasons,\n value: nextChanges,\n },\n });\n }\n\n // general\n function getErrorsShownInAlert<T extends TType>() {\n const rowsWithErrors = Object.keys(state.changes.errors);\n\n if (!rowsWithErrors.length) {\n return [];\n }\n\n return rowsWithErrors.filter(hasRowErrorsShownInAlert).map(rowId => ({\n rowId,\n index: state.indexes[rowId],\n changes: state.changes.rows[rowId] as EditingChangeset<T>,\n errors: state.changes.errors[rowId],\n }));\n }\n\n function hasSaved() {\n return !!Object.values(state.changes.status).filter(value => value === 'saved').length;\n }\n\n function hasChanges(rowId?: string) {\n return rowId ? !!state.changes.rows[rowId] : !!Object.keys(state.changes.rows).length;\n }\n\n async function saveChanges<T extends TType>(table: ReactTable<T>, rowId: string | undefined = undefined): Promise<boolean> {\n if (!handleSave) {\n console.warn('Tried to save, but Table has no onEditingSave handler');\n return false;\n }\n\n // sometimes we only want to save one row\n const changes = rowId ? { [rowId]: state.changes.rows[rowId] } : state.changes.rows;\n\n let completed = true;\n\n for (const rowId of Object.keys(changes)) {\n const status = getRowStatus(rowId);\n\n try {\n const rowChanges = changes[rowId] ?? {};\n\n // don't try to save if - already saving, or there are known errors\n if (!Object.keys(rowChanges).length || status === 'saving' || status === 'errored') {\n continue;\n }\n\n setRowStatus(rowId, 'saving');\n\n const changeSet = { ...state.changes.originals[rowId], ...rowChanges };\n\n // if we had to create a temporary id, delete it first - it's our data, not theirs\n if (isTemporaryRow(changeSet[rowIdentityAccessor as string])) {\n delete changeSet[rowIdentityAccessor];\n }\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\n // send new data to the server\n await handleSave(changeSet);\n\n // cleanup changes, we don't need them after saving\n await discardChanges(rowId, table);\n\n // show the saved status, then remove it after a delay\n setRowStatus(rowId, 'saved');\n setTimeout(() => {\n setRowStatus(rowId, undefined);\n }, DELAY_BEFORE_REMOVING_SAVE_STATUS);\n } catch (error) {\n if (error instanceof ReferenceError || error instanceof TypeError || (error as any)?.response?.status >= 500) {\n console.error(error);\n }\n\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: string | undefined;\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 dispatch({\n type: 'setRowErrors',\n rowId,\n payload: {\n row: rowError,\n cells: cellErrors,\n shouldShowErrorAlert: true,\n },\n });\n }\n\n setRowStatus(rowId, 'errored');\n completed = false;\n }\n }\n\n return completed;\n }\n\n async function discardChanges<T extends TType>(rowId: string, table: ReactTable<T>) {\n // remove any new rows from pinned state before discarding them\n table.resetRowPinning(true);\n\n dispatch({\n type: 'removeRow',\n rowId,\n payload: { rowIdentityAccessor },\n });\n\n if (typeof handleDiscard === 'function') {\n await handleDiscard();\n }\n }\n\n return {\n // row\n getRowValue,\n getRowMoveReason,\n hasRowErrors,\n hasRowErrorsShownInAlert,\n hasTemporaryRowErrors,\n getRowStatus,\n setRowStatus,\n // cells\n setCellValue,\n getCellValue,\n getCellError,\n onCellChanged,\n // general\n getErrorsShownInAlert,\n hasChanges,\n saveChanges,\n discardChanges,\n hasSaved,\n // new rows\n insertTemporaryRow,\n temporaryRows: state.temporaryRows,\n };\n}\n"],"names":["DELAY_BEFORE_REMOVING_SAVE_STATUS","reducer","state","action","type","rowId","payload","columnId","index","row","value","changes","rows","setWith","Object","originals","indexes","rowIdentityAccessor","omit","keys","length","errors","moveReasons","cellErrors","original","cells","status","undefined","temporaryRows","filter","concat","usePendingChangesState","handleSave","handleChange","handleDiscard","validator","discardChanges","table","resetRowPinning","dispatch","_temp8","Promise","resolve","then","e","reject","saveChanges","console","warn","completed","_temp7","_forOf","getRowStatus","_catch","_changes$rowId","_temp6","_result","_exit","changeSet","setRowStatus","setTimeout","rowChanges","isTemporaryRow","_temp5","error","_error$response","ReferenceError","TypeError","response","rowError","Error","_error$response2","message","data","_error$response3","shouldShowErrorAlert","_result3","onCellChanged","cell","rowIndex","nextValue","shouldRunUpdaters","cellsToActOn","column","id","updatesForOtherCells","allCells","_getAllCellsByColumnId","forEach","accessor","validationErrors","nextCellErrors","nextMoveReasons","_allCells$accessor","getIsSorted","reason","willRowMove","nextChanges","localization","_state$changes$errors11","_temp","nextRowValue","_validator","_temp2","_temp3","previousRowValue","_handleChange","_temp4","useLocalization","React","useReducer","getRowValue","_state$changes$rows$r","_state$changes$rows","getRowMoveReason","_Object$values$","values","_state$changes$moveRe","_state$changes$moveRe2","hasRowErrors","_state$changes$errors","_state$changes$errors2","_state$changes$errors3","hasRowErrorsShownInAlert","_state$changes$errors4","hasTemporaryRowErrors","newRow","_state$temporaryRows","_state$changes$errors5","_state$changes$errors6","_state$changes$errors7","insertTemporaryRow","newRowId","TEMPORARY_ROW_ID_PREFIX","uuid","setCellValue","getCellValue","_state$changes$rows2","_state$changes$rows2$","getCellError","_state$changes$errors8","_state$changes$errors9","_state$changes$errors10","getErrorsShownInAlert","rowsWithErrors","map","hasSaved","hasChanges"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import React__default from 'react';
|
|
|
2
2
|
import { isTemporaryRow } from '../util/editing.js';
|
|
3
3
|
import { usePendingChangesState } from './useEditingState.js';
|
|
4
4
|
|
|
5
|
-
function useTableEditing(isEnabled = false, handleSave, handleChange, handleCreate, rowIdentityAccessor, validator) {
|
|
5
|
+
function useTableEditing(isEnabled = false, handleSave, handleChange, handleCreate, handleDiscard, rowIdentityAccessor, validator) {
|
|
6
6
|
const createRow = function (table, scrollToIndex, row) {
|
|
7
7
|
try {
|
|
8
8
|
let _exit = false;
|
|
@@ -11,17 +11,24 @@ function useTableEditing(isEnabled = false, handleSave, handleChange, handleCrea
|
|
|
11
11
|
const changeset = row !== null && row !== void 0 ? row : handleCreate();
|
|
12
12
|
try {
|
|
13
13
|
if (changeset) {
|
|
14
|
-
const newRowId = pendingChangesFns.insertTemporaryRow(changeset);
|
|
15
|
-
// reset before changing row otherwise the cell changes and validation might run
|
|
16
|
-
setLastFocusedCellIndex(undefined);
|
|
17
14
|
// set the active row to the new row before toggling editing on
|
|
18
15
|
const temporaryRows = tableMeta.editing.temporaryRows;
|
|
19
16
|
const nextRowIndex = temporaryRows.length ? tableMeta.length + 1 : tableMeta.length;
|
|
17
|
+
const newRowId = pendingChangesFns.insertTemporaryRow(changeset, nextRowIndex);
|
|
18
|
+
// reset before changing row otherwise the cell changes and validation might run
|
|
19
|
+
setLastFocusedCellIndex(undefined);
|
|
20
|
+
// set the active row to the new row before toggling editing on
|
|
20
21
|
tableMeta.rowActive.setRowActiveIndex(nextRowIndex);
|
|
21
22
|
// wait until set states have run
|
|
22
23
|
requestAnimationFrame(() => {
|
|
23
24
|
toggleEditing(true, table, scrollToIndex, false);
|
|
24
|
-
table.
|
|
25
|
+
table.setRowPinning(currentState => {
|
|
26
|
+
var _ref, _currentState$bottom;
|
|
27
|
+
return {
|
|
28
|
+
...currentState,
|
|
29
|
+
bottom: (_ref = (_currentState$bottom = currentState.bottom) !== null && _currentState$bottom !== void 0 ? _currentState$bottom : []) === null || _ref === void 0 ? void 0 : _ref.concat(newRowId)
|
|
30
|
+
};
|
|
31
|
+
});
|
|
25
32
|
});
|
|
26
33
|
}
|
|
27
34
|
} catch (error) {
|
|
@@ -55,7 +62,7 @@ function useTableEditing(isEnabled = false, handleSave, handleChange, handleCrea
|
|
|
55
62
|
const createRowButtonRef = React__default.useRef(null);
|
|
56
63
|
// store the last focused cell, so that up/down arrow key navigation remains in the same column
|
|
57
64
|
const [lastFocusedCellIndex, setLastFocusedCellIndex] = React__default.useState(undefined);
|
|
58
|
-
const pendingChangesFns = usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, validator);
|
|
65
|
+
const pendingChangesFns = usePendingChangesState(handleSave, handleChange, handleDiscard, rowIdentityAccessor, validator);
|
|
59
66
|
function toggleEditing(enabled, table, scrollToIndex, doSave = true) {
|
|
60
67
|
const tableMeta = table.options.meta;
|
|
61
68
|
if (enabled) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableEditing.js","sources":["../../../../../../../../src/components/Table3/features/useTableEditing.ts"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport {\n Table3EditingChangeHandler,\n Table3EditingCreateHandler,\n Table3EditingSaveHandler,\n Table3EditingValidatorFn,\n} from '../types';\nimport { usePendingChangesState } from './useEditingState';\nimport { isTemporaryRow } from '../util/editing';\n\nexport function useTableEditing<TType = unknown>(\n isEnabled = false,\n handleSave: Table3EditingSaveHandler<TType> | undefined,\n handleChange: Table3EditingChangeHandler<TType> | undefined,\n handleCreate: Table3EditingCreateHandler<TType> | undefined,\n rowIdentityAccessor: keyof TType | undefined,\n validator: Table3EditingValidatorFn<TType> | undefined\n) {\n // used to switch the table into editing mode\n const [isEditing, setEditing] = React.useState(false);\n\n // used to switch the editing between \"detailed\" mode\n const [isDetailedMode, toggleDetailedMode] = React.useState(false);\n\n // used to contain ref to the create button\n const createRowButtonRef = React.useRef<HTMLButtonElement>(null);\n\n // store the last focused cell, so that up/down arrow key navigation remains in the same column\n const [lastFocusedCellIndex, setLastFocusedCellIndex] = React.useState<number | undefined>(undefined);\n\n const pendingChangesFns = usePendingChangesState<TType>(\n handleSave,\n handleChange,\n rowIdentityAccessor as keyof TType,\n validator\n );\n\n function toggleEditing<T extends TType>(\n enabled: React.SetStateAction<boolean>,\n table: ReactTable<T>,\n scrollToIndex: (index: number) => void,\n doSave = true\n ) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (enabled) {\n const index = tableMeta.rowActive.rowActiveIndex ?? 0;\n\n if (tableMeta.rowActive.rowActiveIndex === undefined) {\n tableMeta.rowActive.setRowActiveIndex(index);\n }\n\n if (!isTemporaryRow(table.getRowModel().rows[index]?.id)) {\n scrollToIndex(index);\n }\n } else if (!enabled) {\n // reset detailed mode\n toggleDetailedMode(false);\n // reset the last index back to the first focusable element, when editing gets turned off\n setLastFocusedCellIndex(undefined);\n }\n\n setEditing(enabled);\n\n if (doSave) {\n pendingChangesFns.saveChanges(table);\n }\n }\n\n async function createRow<T extends TType>(table: ReactTable<T>, scrollToIndex: (index: number) => void, row?: Partial<T>) {\n if (!handleCreate) {\n return;\n }\n\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (tableMeta.rowActive.rowActiveIndex !== undefined) {\n const saved = await tableMeta.editing.saveChanges(\n table,\n table.getRowModel().rows[tableMeta.rowActive.rowActiveIndex]?.id\n );\n\n if (!saved) {\n return;\n }\n }\n\n const changeset = row ?? handleCreate();\n\n try {\n if (changeset) {\n const newRowId = pendingChangesFns.insertTemporaryRow(changeset);\n\n // reset before changing row otherwise the cell changes and validation might run\n setLastFocusedCellIndex(undefined);\n // set the active row to the new row before toggling editing on\n
|
|
1
|
+
{"version":3,"file":"useTableEditing.js","sources":["../../../../../../../../src/components/Table3/features/useTableEditing.ts"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport {\n Table3EditingChangeHandler,\n Table3EditingCreateHandler,\n Table3EditingDiscardHandler,\n Table3EditingSaveHandler,\n Table3EditingValidatorFn,\n} from '../types';\nimport { usePendingChangesState } from './useEditingState';\nimport { isTemporaryRow } from '../util/editing';\n\nexport function useTableEditing<TType = unknown>(\n isEnabled = false,\n handleSave: Table3EditingSaveHandler<TType> | undefined,\n handleChange: Table3EditingChangeHandler<TType> | undefined,\n handleCreate: Table3EditingCreateHandler<TType> | undefined,\n handleDiscard: Table3EditingDiscardHandler | undefined,\n rowIdentityAccessor: keyof TType | undefined,\n validator: Table3EditingValidatorFn<TType> | undefined\n) {\n // used to switch the table into editing mode\n const [isEditing, setEditing] = React.useState(false);\n\n // used to switch the editing between \"detailed\" mode\n const [isDetailedMode, toggleDetailedMode] = React.useState(false);\n\n // used to contain ref to the create button\n const createRowButtonRef = React.useRef<HTMLButtonElement>(null);\n\n // store the last focused cell, so that up/down arrow key navigation remains in the same column\n const [lastFocusedCellIndex, setLastFocusedCellIndex] = React.useState<number | undefined>(undefined);\n\n const pendingChangesFns = usePendingChangesState<TType>(\n handleSave,\n handleChange,\n handleDiscard,\n rowIdentityAccessor as keyof TType,\n validator\n );\n\n function toggleEditing<T extends TType>(\n enabled: React.SetStateAction<boolean>,\n table: ReactTable<T>,\n scrollToIndex: (index: number) => void,\n doSave = true\n ) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (enabled) {\n const index = tableMeta.rowActive.rowActiveIndex ?? 0;\n\n if (tableMeta.rowActive.rowActiveIndex === undefined) {\n tableMeta.rowActive.setRowActiveIndex(index);\n }\n\n if (!isTemporaryRow(table.getRowModel().rows[index]?.id)) {\n scrollToIndex(index);\n }\n } else if (!enabled) {\n // reset detailed mode\n toggleDetailedMode(false);\n // reset the last index back to the first focusable element, when editing gets turned off\n setLastFocusedCellIndex(undefined);\n }\n\n setEditing(enabled);\n\n if (doSave) {\n pendingChangesFns.saveChanges(table);\n }\n }\n\n async function createRow<T extends TType>(table: ReactTable<T>, scrollToIndex: (index: number) => void, row?: Partial<T>) {\n if (!handleCreate) {\n return;\n }\n\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (tableMeta.rowActive.rowActiveIndex !== undefined) {\n const saved = await tableMeta.editing.saveChanges(\n table,\n table.getRowModel().rows[tableMeta.rowActive.rowActiveIndex]?.id\n );\n\n if (!saved) {\n return;\n }\n }\n\n const changeset = row ?? handleCreate();\n\n try {\n if (changeset) {\n // set the active row to the new row before toggling editing on\n const temporaryRows = tableMeta.editing.temporaryRows as TType[];\n const nextRowIndex = temporaryRows.length ? tableMeta.length + 1 : tableMeta.length;\n\n const newRowId = pendingChangesFns.insertTemporaryRow(changeset, nextRowIndex);\n\n // reset before changing row otherwise the cell changes and validation might run\n setLastFocusedCellIndex(undefined);\n // set the active row to the new row before toggling editing on\n tableMeta.rowActive.setRowActiveIndex(nextRowIndex);\n\n // wait until set states have run\n requestAnimationFrame(() => {\n toggleEditing(true, table, scrollToIndex, false);\n table.setRowPinning(currentState => ({\n ...currentState,\n bottom: (currentState.bottom ?? [])?.concat(newRowId),\n }));\n });\n }\n } catch (error) {\n console.error(error);\n }\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 createRow,\n createRowButtonRef,\n ...pendingChangesFns,\n };\n}\n"],"names":["useTableEditing","isEnabled","handleSave","handleChange","handleCreate","handleDiscard","rowIdentityAccessor","validator","createRow","table","scrollToIndex","row","changeset","temporaryRows","tableMeta","editing","nextRowIndex","length","newRowId","pendingChangesFns","insertTemporaryRow","setLastFocusedCellIndex","undefined","rowActive","setRowActiveIndex","requestAnimationFrame","toggleEditing","setRowPinning","currentState","_ref","_currentState$bottom","bottom","concat","error","console","Promise","resolve","options","meta","_temp","rowActiveIndex","_table$getRowModel$ro2","saveChanges","getRowModel","rows","id","then","saved","_exit","_temp2","e","reject","isEditing","setEditing","React","useState","isDetailedMode","toggleDetailedMode","createRowButtonRef","useRef","lastFocusedCellIndex","usePendingChangesState","enabled","doSave","_tableMeta$rowActive$","_table$getRowModel$ro","index","isTemporaryRow"],"mappings":"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"}
|
|
@@ -52,18 +52,21 @@ function useTableEditingListener(table, tableRef, scrollToIndex) {
|
|
|
52
52
|
document.addEventListener('click', onClickOutside);
|
|
53
53
|
return () => document.removeEventListener('click', onClickOutside);
|
|
54
54
|
}, [tableMeta.editing.isEditing, tableMeta.editing.saveChanges]);
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
55
|
+
/*
|
|
56
|
+
const rows = table.getRowModel().rows;
|
|
57
|
+
// make sure pending changes are removed for rows that no longer exist
|
|
58
|
+
useLazyEffect(() => {
|
|
59
|
+
const pendingChanges = tableMeta.editing.getErrorsShownInAlert();
|
|
60
|
+
pendingChanges.forEach(pendingChange => {
|
|
61
|
+
try {
|
|
62
|
+
table.getRow(pendingChange.rowId);
|
|
63
|
+
} catch {
|
|
64
|
+
// TODO: this has the potential to remove changes for "unloaded" rows in server loading
|
|
65
|
+
//tableMeta.editing.discardChanges(pendingChange.rowId, table);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
}, [rows.length]);
|
|
69
|
+
*/
|
|
67
70
|
// shortcuts
|
|
68
71
|
useGlobalKeyDown(tableMeta.editing.isEnabled ? shortcut : undefined, event => {
|
|
69
72
|
event.preventDefault();
|
package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableEditingListener.js","sources":["../../../../../../../../src/components/Table3/listeners/useTableEditingListener.ts"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { useLazyEffect } from '../../../hooks/useLazyEffect';\nimport { isElementInsideOrTriggeredFromContainer } from '../../../utils/dom';\nimport { TableRef } from '../../../primitives/Table/types';\nimport { resetHighlightedColumnIndexes } from '../../../primitives/Table/useTableManager/util/search';\nimport { useLocalization } from '../../Provider/Localization';\nimport { useGlobalKeyDown } from '../../../hooks/useGlobalKeyDown';\nimport { shortcut } from '../util/editing';\n\nexport function useTableEditingListener<TType = unknown>(\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n scrollToIndex: (index: number) => void\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const localization = useLocalization();\n\n useLazyEffect(() => {\n return () => {\n if (tableMeta.editing.isEditing && tableMeta.rowActive.rowActiveIndex !== undefined) {\n tableMeta.editing.saveChanges(table, table.getRowModel().rows[tableMeta.rowActive.rowActiveIndex]?.id);\n }\n };\n }, [tableMeta.rowActive.rowActiveIndex]);\n\n // show a warning if the user navigates away without triggering save, such as using the browser back/forward button\n const hasChanges = tableMeta.editing.hasChanges();\n\n React.useEffect(() => {\n function showUnsavedChangesWarning(event: BeforeUnloadEvent) {\n if (tableMeta.editing.isEditing && hasChanges) {\n event.returnValue = true;\n return true;\n }\n\n return false;\n }\n\n window.addEventListener('beforeunload', showUnsavedChangesWarning);\n\n return () => {\n window.removeEventListener('beforeunload', showUnsavedChangesWarning);\n };\n }, [tableMeta.editing.isEditing, hasChanges]);\n\n const hasSavedChanges = tableMeta.editing.hasSaved();\n\n useLazyEffect(() => {\n if (hasSavedChanges) {\n resetHighlightedColumnIndexes(table.getState().globalFilter, table, localization);\n }\n }, [hasSavedChanges]);\n\n React.useEffect(() => {\n const onClickOutside = (event: MouseEvent) => {\n if (tableMeta.editing.isEditing) {\n const element = event.target as Element;\n const isTableOrIsInsideTable =\n element.tagName === 'TABLE' ||\n element.tagName === 'TBODY' ||\n element.getAttribute('data-taco') === 'backdrop' ||\n element.getAttribute('data-table') === 'editing-toggle' ||\n !document.body.contains(element) ||\n isElementInsideOrTriggeredFromContainer(element, tableRef.current);\n\n // users can click the white space below rows which could be inside the table, but a valid scenario to save\n if (!isTableOrIsInsideTable) {\n tableMeta.editing.saveChanges(table);\n }\n }\n };\n\n document.addEventListener('click', onClickOutside);\n\n return () => document.removeEventListener('click', onClickOutside);\n }, [tableMeta.editing.isEditing, tableMeta.editing.saveChanges]);\n\n const rows = table.getRowModel().rows;\n\n // make sure pending changes are removed for rows that no longer exist\n useLazyEffect(() => {\n const pendingChanges = tableMeta.editing.getErrorsShownInAlert();\n\n pendingChanges.forEach(pendingChange => {\n try {\n table.getRow(pendingChange.rowId);\n } catch {\n tableMeta.editing.discardChanges(pendingChange.rowId, table);\n }\n });\n }, [rows.length]);\n\n // shortcuts\n useGlobalKeyDown(tableMeta.editing.isEnabled ? shortcut : undefined, (event: KeyboardEvent) => {\n event.preventDefault();\n tableMeta.editing.toggleEditing(!tableMeta.editing.isEditing, table, scrollToIndex);\n });\n\n useGlobalKeyDown(tableMeta.editing.isEditing ? { key: 's', meta: true, shift: false } : undefined, event => {\n event.preventDefault();\n tableMeta.editing.saveChanges(table);\n });\n}\n"],"names":["useTableEditingListener","table","tableRef","scrollToIndex","tableMeta","options","meta","localization","useLocalization","useLazyEffect","editing","isEditing","rowActive","rowActiveIndex","undefined","_table$getRowModel$ro","saveChanges","getRowModel","rows","id","hasChanges","React","useEffect","showUnsavedChangesWarning","event","returnValue","window","addEventListener","removeEventListener","hasSavedChanges","hasSaved","resetHighlightedColumnIndexes","getState","globalFilter","onClickOutside","element","target","isTableOrIsInsideTable","tagName","getAttribute","document","body","contains","isElementInsideOrTriggeredFromContainer","current","
|
|
1
|
+
{"version":3,"file":"useTableEditingListener.js","sources":["../../../../../../../../src/components/Table3/listeners/useTableEditingListener.ts"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { useLazyEffect } from '../../../hooks/useLazyEffect';\nimport { isElementInsideOrTriggeredFromContainer } from '../../../utils/dom';\nimport { TableRef } from '../../../primitives/Table/types';\nimport { resetHighlightedColumnIndexes } from '../../../primitives/Table/useTableManager/util/search';\nimport { useLocalization } from '../../Provider/Localization';\nimport { useGlobalKeyDown } from '../../../hooks/useGlobalKeyDown';\nimport { shortcut } from '../util/editing';\n\nexport function useTableEditingListener<TType = unknown>(\n table: ReactTable<TType>,\n tableRef: React.RefObject<TableRef>,\n scrollToIndex: (index: number) => void\n) {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const localization = useLocalization();\n\n useLazyEffect(() => {\n return () => {\n if (tableMeta.editing.isEditing && tableMeta.rowActive.rowActiveIndex !== undefined) {\n tableMeta.editing.saveChanges(table, table.getRowModel().rows[tableMeta.rowActive.rowActiveIndex]?.id);\n }\n };\n }, [tableMeta.rowActive.rowActiveIndex]);\n\n // show a warning if the user navigates away without triggering save, such as using the browser back/forward button\n const hasChanges = tableMeta.editing.hasChanges();\n\n React.useEffect(() => {\n function showUnsavedChangesWarning(event: BeforeUnloadEvent) {\n if (tableMeta.editing.isEditing && hasChanges) {\n event.returnValue = true;\n return true;\n }\n\n return false;\n }\n\n window.addEventListener('beforeunload', showUnsavedChangesWarning);\n\n return () => {\n window.removeEventListener('beforeunload', showUnsavedChangesWarning);\n };\n }, [tableMeta.editing.isEditing, hasChanges]);\n\n const hasSavedChanges = tableMeta.editing.hasSaved();\n\n useLazyEffect(() => {\n if (hasSavedChanges) {\n resetHighlightedColumnIndexes(table.getState().globalFilter, table, localization);\n }\n }, [hasSavedChanges]);\n\n React.useEffect(() => {\n const onClickOutside = (event: MouseEvent) => {\n if (tableMeta.editing.isEditing) {\n const element = event.target as Element;\n const isTableOrIsInsideTable =\n element.tagName === 'TABLE' ||\n element.tagName === 'TBODY' ||\n element.getAttribute('data-taco') === 'backdrop' ||\n element.getAttribute('data-table') === 'editing-toggle' ||\n !document.body.contains(element) ||\n isElementInsideOrTriggeredFromContainer(element, tableRef.current);\n\n // users can click the white space below rows which could be inside the table, but a valid scenario to save\n if (!isTableOrIsInsideTable) {\n tableMeta.editing.saveChanges(table);\n }\n }\n };\n\n document.addEventListener('click', onClickOutside);\n\n return () => document.removeEventListener('click', onClickOutside);\n }, [tableMeta.editing.isEditing, tableMeta.editing.saveChanges]);\n\n /*\n const rows = table.getRowModel().rows;\n\n // make sure pending changes are removed for rows that no longer exist\n useLazyEffect(() => {\n const pendingChanges = tableMeta.editing.getErrorsShownInAlert();\n\n pendingChanges.forEach(pendingChange => {\n try {\n table.getRow(pendingChange.rowId);\n } catch {\n // TODO: this has the potential to remove changes for \"unloaded\" rows in server loading\n //tableMeta.editing.discardChanges(pendingChange.rowId, table);\n }\n });\n }, [rows.length]);\n */\n\n // shortcuts\n useGlobalKeyDown(tableMeta.editing.isEnabled ? shortcut : undefined, (event: KeyboardEvent) => {\n event.preventDefault();\n tableMeta.editing.toggleEditing(!tableMeta.editing.isEditing, table, scrollToIndex);\n });\n\n useGlobalKeyDown(tableMeta.editing.isEditing ? { key: 's', meta: true, shift: false } : undefined, event => {\n event.preventDefault();\n tableMeta.editing.saveChanges(table);\n });\n}\n"],"names":["useTableEditingListener","table","tableRef","scrollToIndex","tableMeta","options","meta","localization","useLocalization","useLazyEffect","editing","isEditing","rowActive","rowActiveIndex","undefined","_table$getRowModel$ro","saveChanges","getRowModel","rows","id","hasChanges","React","useEffect","showUnsavedChangesWarning","event","returnValue","window","addEventListener","removeEventListener","hasSavedChanges","hasSaved","resetHighlightedColumnIndexes","getState","globalFilter","onClickOutside","element","target","isTableOrIsInsideTable","tagName","getAttribute","document","body","contains","isElementInsideOrTriggeredFromContainer","current","useGlobalKeyDown","isEnabled","shortcut","preventDefault","toggleEditing","key","shift"],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ const RENDERERS = {
|
|
|
11
11
|
cell: Cell
|
|
12
12
|
};
|
|
13
13
|
function useTable3(props, ref) {
|
|
14
|
-
const editing = useTableEditing(props.enableEditing, props.onEditingSave, props.onEditingChange, props.onEditingCreate, props.rowIdentityAccessor, props.validator);
|
|
14
|
+
const editing = useTableEditing(props.enableEditing, props.onEditingSave, props.onEditingChange, props.onEditingCreate, props.onEditingDiscard, props.rowIdentityAccessor, props.validator);
|
|
15
15
|
const creationEnabled = editing.isEnabled && !!props.onEditingCreate;
|
|
16
16
|
// this gives me the performance heeby jeebies, but can't think of a better way to internalise the state
|
|
17
17
|
const data = React__default.useMemo(() => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTable3.js","sources":["../../../../../../../src/components/Table3/useTable3.tsx"],"sourcesContent":["import React from 'react';\nimport { RowData, Table as ReactTable, TableMeta as ReactTableMeta } 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 { EditingActionsMenu } from './components/Columns/Internal/EditingActionsMenu';\nimport { Row } from './components/Row/Row';\nimport { useTableRenderOptions } from '../../primitives/Table/Core/types';\n\nexport const 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(\n props.enableEditing,\n props.onEditingSave,\n props.onEditingChange,\n props.onEditingCreate,\n props.rowIdentityAccessor,\n props.validator\n );\n const creationEnabled = editing.isEnabled && !!props.onEditingCreate;\n\n // this gives me the performance heeby jeebies, but can't think of a better way to internalise the state\n const data: TType[] = React.useMemo(() => {\n if (editing.temporaryRows.length) {\n return (props.data ?? []).concat(editing.temporaryRows as TType[]);\n }\n\n return props.data;\n }, [JSON.stringify(props.data), editing.temporaryRows.length]);\n\n const extendedProps: Table3Props<TType> = {\n ...props,\n data,\n enableRowActions: editing.isEditing ? true : props.enableRowActions,\n // Display EditingActionMenu instead of row actions while editing\n rowActions: editing.isEditing\n ? ([\n (_, rowId, table: ReactTable<TType>) => {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n return (\n <EditingActionsMenu\n hasChanges={editing.hasChanges(rowId)}\n hasErrors={editing.hasRowErrors(rowId)}\n onDiscard={() => {\n editing.discardChanges(rowId, table);\n\n if (editing.temporaryRows.length) {\n requestAnimationFrame(() => editing.createRowButtonRef.current?.focus());\n }\n }}\n onEditingSave={async () => {\n await editing.saveChanges(table, rowId);\n }}\n isLastRow={!creationEnabled && tableMeta.rowActive.rowActiveIndex === tableMeta.length - 1}\n />\n );\n },\n ] as TableRowActionRenderer<TType>[])\n : props.rowActions,\n };\n const meta = { editing };\n\n const options: useTableRenderOptions = {\n virtualiserPaddingEndOffset:\n props.enableEditing && props.onEditingCreate ? (editing.hasTemporaryRowErrors() ? 1.4 : 1) : 0,\n };\n\n const table = useTable<TType, Table3Meta>(extendedProps, ref, RENDERERS, meta, options);\n\n // listeners\n useTableEditingListener<TType>(table.instance, table.ref, table.renderer.scrollToIndex);\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), table.instance, table.renderer.scrollToIndex);\n\n if (props.onEditingCreate) {\n (table.ref.current as Table3Ref).instance.createRow = (row: unknown) =>\n table.meta.editing.createRow(table.instance, table.renderer.scrollToIndex, row as Partial<TType>);\n }\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","onEditingCreate","rowIdentityAccessor","validator","creationEnabled","isEnabled","data","React","useMemo","temporaryRows","length","_props$data","concat","JSON","stringify","extendedProps","enableRowActions","isEditing","rowActions","_","rowId","table","tableMeta","options","meta","EditingActionsMenu","hasChanges","hasErrors","hasRowErrors","onDiscard","discardChanges","requestAnimationFrame","_editing$createRowBut","createRowButtonRef","current","focus","saveChanges","then","e","Promise","reject","isLastRow","rowActive","rowActiveIndex","virtualiserPaddingEndOffset","hasTemporaryRowErrors","useTable","useTableEditingListener","instance","renderer","scrollToIndex","useEffect","toggleEditing","enabled","createRow"],"mappings":";;;;;;;;MAYaA,SAAS,GAAG;EACrBC,GAAG,EAAEC,GAAG;EACRC,IAAI,EAAEC;;SAaMC,SAASA,CAAQC,KAAyB,EAAEC,GAAyB;EACjF,MAAMC,OAAO,GAAGC,eAAe,CAC3BH,KAAK,CAACI,aAAa,EACnBJ,KAAK,CAACK,aAAa,EACnBL,KAAK,CAACM,eAAe,EACrBN,KAAK,CAACO,eAAe,EACrBP,KAAK,CAACQ,
|
|
1
|
+
{"version":3,"file":"useTable3.js","sources":["../../../../../../../src/components/Table3/useTable3.tsx"],"sourcesContent":["import React from 'react';\nimport { RowData, Table as ReactTable, TableMeta as ReactTableMeta } 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 { EditingActionsMenu } from './components/Columns/Internal/EditingActionsMenu';\nimport { Row } from './components/Row/Row';\nimport { useTableRenderOptions } from '../../primitives/Table/Core/types';\n\nexport const 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(\n props.enableEditing,\n props.onEditingSave,\n props.onEditingChange,\n props.onEditingCreate,\n props.onEditingDiscard,\n props.rowIdentityAccessor,\n props.validator\n );\n const creationEnabled = editing.isEnabled && !!props.onEditingCreate;\n\n // this gives me the performance heeby jeebies, but can't think of a better way to internalise the state\n const data: TType[] = React.useMemo(() => {\n if (editing.temporaryRows.length) {\n return (props.data ?? []).concat(editing.temporaryRows as TType[]);\n }\n\n return props.data;\n }, [JSON.stringify(props.data), editing.temporaryRows.length]);\n\n const extendedProps: Table3Props<TType> = {\n ...props,\n data,\n enableRowActions: editing.isEditing ? true : props.enableRowActions,\n // Display EditingActionMenu instead of row actions while editing\n rowActions: editing.isEditing\n ? ([\n (_, rowId, table: ReactTable<TType>) => {\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n return (\n <EditingActionsMenu\n hasChanges={editing.hasChanges(rowId)}\n hasErrors={editing.hasRowErrors(rowId)}\n onDiscard={() => {\n editing.discardChanges(rowId, table);\n\n if (editing.temporaryRows.length) {\n requestAnimationFrame(() => editing.createRowButtonRef.current?.focus());\n }\n }}\n onEditingSave={async () => {\n await editing.saveChanges(table, rowId);\n }}\n isLastRow={!creationEnabled && tableMeta.rowActive.rowActiveIndex === tableMeta.length - 1}\n />\n );\n },\n ] as TableRowActionRenderer<TType>[])\n : props.rowActions,\n };\n const meta = { editing };\n\n const options: useTableRenderOptions = {\n virtualiserPaddingEndOffset:\n props.enableEditing && props.onEditingCreate ? (editing.hasTemporaryRowErrors() ? 1.4 : 1) : 0,\n };\n\n const table = useTable<TType, Table3Meta>(extendedProps, ref, RENDERERS, meta, options);\n\n // listeners\n useTableEditingListener<TType>(table.instance, table.ref, table.renderer.scrollToIndex);\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), table.instance, table.renderer.scrollToIndex);\n\n if (props.onEditingCreate) {\n (table.ref.current as Table3Ref).instance.createRow = (row: unknown) =>\n table.meta.editing.createRow(table.instance, table.renderer.scrollToIndex, row as Partial<TType>);\n }\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","onEditingCreate","onEditingDiscard","rowIdentityAccessor","validator","creationEnabled","isEnabled","data","React","useMemo","temporaryRows","length","_props$data","concat","JSON","stringify","extendedProps","enableRowActions","isEditing","rowActions","_","rowId","table","tableMeta","options","meta","EditingActionsMenu","hasChanges","hasErrors","hasRowErrors","onDiscard","discardChanges","requestAnimationFrame","_editing$createRowBut","createRowButtonRef","current","focus","saveChanges","then","e","Promise","reject","isLastRow","rowActive","rowActiveIndex","virtualiserPaddingEndOffset","hasTemporaryRowErrors","useTable","useTableEditingListener","instance","renderer","scrollToIndex","useEffect","toggleEditing","enabled","createRow"],"mappings":"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"}
|
|
@@ -82,6 +82,7 @@ export { Header } from './components/Header/Header.js';
|
|
|
82
82
|
export { Layout } from './components/Layout/Layout.js';
|
|
83
83
|
export { getNavigationLinkClasses } from './components/Navigation2/components/Link.js';
|
|
84
84
|
export { Navigation2 } from './components/Navigation2/Navigation2.js';
|
|
85
|
+
export { useTableDataLoader2 } from './primitives/Table/useTableDataLoader2.js';
|
|
85
86
|
export { useBoundaryOverflowDetection } from './hooks/useBoundaryOverflowDetection.js';
|
|
86
87
|
export { useOnClickOutside } from './utils/hooks/useOnClickOutside.js';
|
|
87
88
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js
CHANGED
|
@@ -3,6 +3,7 @@ import { Tooltip } from '../../../../../../components/Tooltip/Tooltip.js';
|
|
|
3
3
|
import { useLocalization } from '../../../../../../components/Provider/Localization.js';
|
|
4
4
|
import { Checkbox } from '../../../../../../components/Checkbox/Checkbox.js';
|
|
5
5
|
import { Shortcut } from '../../../../../../components/Shortcut/Shortcut.js';
|
|
6
|
+
import { getHiddenColumns } from '../../../../useTableManager/util/columns.js';
|
|
6
7
|
import { RowContext } from '../../Row/RowContext.js';
|
|
7
8
|
|
|
8
9
|
function Header(context) {
|
|
@@ -23,8 +24,9 @@ function Header(context) {
|
|
|
23
24
|
}
|
|
24
25
|
const _temp = function () {
|
|
25
26
|
if (tableMeta.server.loadAllIfNeeded) {
|
|
27
|
+
const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);
|
|
26
28
|
// don't pass the search query because we need all data - not filtered data
|
|
27
|
-
return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters)).then(function () {});
|
|
29
|
+
return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters, hiddenColumns, tableMeta.search.enableGlobalFilter ? table.getState().globalFilter : undefined)).then(function () {});
|
|
28
30
|
}
|
|
29
31
|
}();
|
|
30
32
|
// load all data if that is possible
|
|
@@ -83,6 +85,7 @@ function Cell(context) {
|
|
|
83
85
|
if (event.shiftKey) {
|
|
84
86
|
var _tableMeta$rowSelecti;
|
|
85
87
|
function _temp4() {
|
|
88
|
+
const selectedRows = table.getRowModel().rows.slice(fromIndex, toIndex + 1);
|
|
86
89
|
table.setRowSelection(currentRowSelection => ({
|
|
87
90
|
...currentRowSelection,
|
|
88
91
|
...selectedRows.filter(row => row.getCanSelect()).reduce((state, row) => ({
|
|
@@ -92,11 +95,11 @@ function Cell(context) {
|
|
|
92
95
|
}));
|
|
93
96
|
}
|
|
94
97
|
const [fromIndex, toIndex] = toggleBetween((_tableMeta$rowSelecti = tableMeta.rowSelection.lastSelectedRowIndex.current) !== null && _tableMeta$rowSelecti !== void 0 ? _tableMeta$rowSelecti : 0, rowIndex);
|
|
95
|
-
const selectedRows = table.getRowModel().rows.slice(fromIndex, toIndex + 1);
|
|
96
98
|
const _temp3 = function () {
|
|
97
|
-
if (tableMeta.server.loadAllIfNeeded
|
|
99
|
+
if (tableMeta.server.loadAllIfNeeded) {
|
|
100
|
+
const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);
|
|
98
101
|
// don't pass the search query because we need all data - not filtered data
|
|
99
|
-
return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters)).then(function () {});
|
|
102
|
+
return Promise.resolve(tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters, hiddenColumns, tableMeta.search.enableGlobalFilter ? table.getState().globalFilter : undefined)).then(function () {});
|
|
100
103
|
}
|
|
101
104
|
}();
|
|
102
105
|
return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Selection.js","sources":["../../../../../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Selection.tsx"],"sourcesContent":["import React from 'react';\nimport {\n HeaderContext as ReactTableHeaderContext,\n CellContext as ReactTableCellContext,\n TableMeta as ReactTableMeta,\n RowSelectionState,\n} from '@tanstack/react-table';\nimport { useLocalization } from '../../../../../../components/Provider/Localization';\nimport { Tooltip } from '../../../../../../components/Tooltip/Tooltip';\nimport { Checkbox } from '../../../../../../components/Checkbox/Checkbox';\nimport { Shortcut } from '../../../../../../components/Shortcut/Shortcut';\nimport { RowContext } from '../../Row/RowContext';\nimport { useTableManagerInternalColumn } from '../../../../useTableManager/types';\n\nfunction Header<TType = unknown>(context: ReactTableHeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { table } = context;\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n const isAllRowsSelected = table.getIsAllRowsSelected();\n const isSomeRowsSelected = table.getIsSomeRowsSelected();\n const title = isAllRowsSelected ? texts.table.columns.select.deselectAll : texts.table.columns.select.selectAll;\n\n const handleChange = async (checked: boolean) => {\n // load all data if that is possible\n if (tableMeta.server.loadAllIfNeeded) {\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters);\n }\n\n table.toggleAllRowsSelected(checked);\n };\n\n return (\n <Tooltip title={title}>\n <Checkbox\n aria-label={title}\n className=\"hover:border-blue !-mt-px\"\n checked={isAllRowsSelected}\n indeterminate={isSomeRowsSelected && !isAllRowsSelected}\n loading={tableMeta.server.loading}\n onChange={handleChange}\n />\n </Tooltip>\n );\n}\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\nfunction Cell<TType = unknown>(context: ReactTableCellContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { row, table } = context;\n const { hideInternalColumns, rowIndex } = React.useContext(RowContext);\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (hideInternalColumns || (table.options.enableGrouping && table.getState().grouping?.length && !row.getIsGrouped())) {\n return null;\n }\n\n const isSelected = row.getIsGrouped() ? row.getIsAllSubRowsSelected() : row.getIsSelected();\n const canSelect = row.getCanSelect();\n const title = isSelected ? texts.table.columns.select.deselect : texts.table.columns.select.select;\n\n const handleClick = async (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (row.getIsGrouped()) {\n row.subRows.forEach(row => row.toggleSelected());\n } else if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(tableMeta.rowSelection.lastSelectedRowIndex.current ?? 0, rowIndex);\n const selectedRows = table.getRowModel().rows.slice(fromIndex, toIndex + 1);\n\n if (tableMeta.server.loadAllIfNeeded && selectedRows.some(row => row.original === undefined)) {\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAllIfNeeded(table.getState().sorting, table.getState().columnFilters);\n }\n\n table.setRowSelection((currentRowSelection: RowSelectionState) => ({\n ...currentRowSelection,\n ...selectedRows.filter(row => row.getCanSelect()).reduce((state, row) => ({ ...state, [row.id]: true }), {}),\n }));\n } else {\n row.toggleSelected();\n }\n\n tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;\n };\n\n return (\n <Tooltip\n hidden={!canSelect}\n title={\n <>\n {title}\n <Shortcut className=\"ml-2\" keys=\"Space\" />\n </>\n }>\n <Checkbox\n aria-label={title}\n className=\"!mt-0\"\n checked={isSelected}\n onClick={handleClick}\n disabled={!canSelect}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n />\n </Tooltip>\n );\n}\n\nexport const renderer: useTableManagerInternalColumn = {\n header: Header,\n renderer: Cell,\n size: 40,\n meta: {\n align: 'center',\n className: '!px-1',\n // TODO: remove when table3 is migrated, this satisfies the legacy table3 type\n enableSearch: false,\n header: '',\n headerClassName: '!px-1',\n },\n};\n"],"names":["Header","context","texts","useLocalization","table","tableMeta","options","meta","isAllRowsSelected","getIsAllRowsSelected","isSomeRowsSelected","getIsSomeRowsSelected","title","columns","select","deselectAll","selectAll","handleChange","checked","toggleAllRowsSelected","_temp","server","loadAllIfNeeded","Promise","resolve","getState","sorting","columnFilters","then","_temp2","e","reject","React","Tooltip","Checkbox","className","indeterminate","loading","onChange","toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","Cell","row","hideInternalColumns","rowIndex","useContext","RowContext","enableGrouping","_table$getState$group","grouping","length","getIsGrouped","isSelected","getIsAllSubRowsSelected","getIsSelected","canSelect","getCanSelect","deselect","handleClick","event","rowSelection","lastSelectedRowIndex","current","index","stopPropagation","_temp6","subRows","forEach","toggleSelected","_temp5","shiftKey","_tableMeta$rowSelecti","_temp4","setRowSelection","currentRowSelection","selectedRows","filter","reduce","state","id","getRowModel","rows","slice","_temp3","some","original","undefined","_temp7","hidden","Shortcut","keys","onClick","disabled","renderer","header","size","align","enableSearch","headerClassName"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Selection.js","sources":["../../../../../../../../../../../src/primitives/Table/Core/components/Columns/Internal/Selection.tsx"],"sourcesContent":["import React from 'react';\nimport {\n HeaderContext as ReactTableHeaderContext,\n CellContext as ReactTableCellContext,\n TableMeta as ReactTableMeta,\n RowSelectionState,\n} from '@tanstack/react-table';\nimport { useLocalization } from '../../../../../../components/Provider/Localization';\nimport { Tooltip } from '../../../../../../components/Tooltip/Tooltip';\nimport { Checkbox } from '../../../../../../components/Checkbox/Checkbox';\nimport { Shortcut } from '../../../../../../components/Shortcut/Shortcut';\nimport { RowContext } from '../../Row/RowContext';\nimport { useTableManagerInternalColumn } from '../../../../useTableManager/types';\nimport { getHiddenColumns } from '../../../../useTableManager/util/columns';\n\nfunction Header<TType = unknown>(context: ReactTableHeaderContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { table } = context;\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n const isAllRowsSelected = table.getIsAllRowsSelected();\n const isSomeRowsSelected = table.getIsSomeRowsSelected();\n const title = isAllRowsSelected ? texts.table.columns.select.deselectAll : texts.table.columns.select.selectAll;\n\n const handleChange = async (checked: boolean) => {\n // load all data if that is possible\n if (tableMeta.server.loadAllIfNeeded) {\n const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);\n\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAllIfNeeded(\n table.getState().sorting,\n table.getState().columnFilters,\n hiddenColumns,\n tableMeta.search.enableGlobalFilter ? table.getState().globalFilter : undefined\n );\n }\n\n table.toggleAllRowsSelected(checked);\n };\n\n return (\n <Tooltip title={title}>\n <Checkbox\n aria-label={title}\n className=\"hover:border-blue !-mt-px\"\n checked={isAllRowsSelected}\n indeterminate={isSomeRowsSelected && !isAllRowsSelected}\n loading={tableMeta.server.loading}\n onChange={handleChange}\n />\n </Tooltip>\n );\n}\n\nconst toggleBetween = (fromRowIndex: number, toRowIndex: number): [number, number] => {\n const fromIndex = toRowIndex < fromRowIndex ? toRowIndex : fromRowIndex;\n const toIndex = toRowIndex > fromRowIndex ? toRowIndex : fromRowIndex;\n\n return [fromIndex, toIndex];\n};\n\nfunction Cell<TType = unknown>(context: ReactTableCellContext<TType, unknown>) {\n const { texts } = useLocalization();\n const { row, table } = context;\n const { hideInternalColumns, rowIndex } = React.useContext(RowContext);\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n\n if (hideInternalColumns || (table.options.enableGrouping && table.getState().grouping?.length && !row.getIsGrouped())) {\n return null;\n }\n\n const isSelected = row.getIsGrouped() ? row.getIsAllSubRowsSelected() : row.getIsSelected();\n const canSelect = row.getCanSelect();\n const title = isSelected ? texts.table.columns.select.deselect : texts.table.columns.select.select;\n\n const handleClick = async (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (row.getIsGrouped()) {\n row.subRows.forEach(row => row.toggleSelected());\n } else if (event.shiftKey) {\n const [fromIndex, toIndex] = toggleBetween(tableMeta.rowSelection.lastSelectedRowIndex.current ?? 0, rowIndex);\n\n if (tableMeta.server.loadAllIfNeeded) {\n const hiddenColumns = getHiddenColumns(table.getState().columnVisibility);\n\n // don't pass the search query because we need all data - not filtered data\n await tableMeta.server.loadAllIfNeeded(\n table.getState().sorting,\n table.getState().columnFilters,\n hiddenColumns,\n tableMeta.search.enableGlobalFilter ? table.getState().globalFilter : undefined\n );\n }\n\n const selectedRows = table.getRowModel().rows.slice(fromIndex, toIndex + 1);\n table.setRowSelection((currentRowSelection: RowSelectionState) => ({\n ...currentRowSelection,\n ...selectedRows.filter(row => row.getCanSelect()).reduce((state, row) => ({ ...state, [row.id]: true }), {}),\n }));\n } else {\n row.toggleSelected();\n }\n\n tableMeta.rowSelection.lastSelectedRowIndex.current = row.index;\n };\n\n return (\n <Tooltip\n hidden={!canSelect}\n title={\n <>\n {title}\n <Shortcut className=\"ml-2\" keys=\"Space\" />\n </>\n }>\n <Checkbox\n aria-label={title}\n className=\"!mt-0\"\n checked={isSelected}\n onClick={handleClick}\n disabled={!canSelect}\n // this is necessary to remove console spam from eslint\n onChange={() => false}\n />\n </Tooltip>\n );\n}\n\nexport const renderer: useTableManagerInternalColumn = {\n header: Header,\n renderer: Cell,\n size: 40,\n meta: {\n align: 'center',\n className: '!px-1',\n // TODO: remove when table3 is migrated, this satisfies the legacy table3 type\n enableSearch: false,\n header: '',\n headerClassName: '!px-1',\n },\n};\n"],"names":["Header","context","texts","useLocalization","table","tableMeta","options","meta","isAllRowsSelected","getIsAllRowsSelected","isSomeRowsSelected","getIsSomeRowsSelected","title","columns","select","deselectAll","selectAll","handleChange","checked","toggleAllRowsSelected","_temp","server","loadAllIfNeeded","hiddenColumns","getHiddenColumns","getState","columnVisibility","Promise","resolve","sorting","columnFilters","search","enableGlobalFilter","globalFilter","undefined","then","_temp2","e","reject","React","Tooltip","Checkbox","className","indeterminate","loading","onChange","toggleBetween","fromRowIndex","toRowIndex","fromIndex","toIndex","Cell","row","hideInternalColumns","rowIndex","useContext","RowContext","enableGrouping","_table$getState$group","grouping","length","getIsGrouped","isSelected","getIsAllSubRowsSelected","getIsSelected","canSelect","getCanSelect","deselect","handleClick","event","rowSelection","lastSelectedRowIndex","current","index","stopPropagation","_temp6","subRows","forEach","toggleSelected","_temp5","shiftKey","_tableMeta$rowSelecti","_temp4","selectedRows","getRowModel","rows","slice","setRowSelection","currentRowSelection","filter","reduce","state","id","_temp3","_temp7","hidden","Shortcut","keys","onClick","disabled","renderer","header","size","align","enableSearch","headerClassName"],"mappings":"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"}
|
|
@@ -10,21 +10,22 @@ function Summary(props) {
|
|
|
10
10
|
locale,
|
|
11
11
|
texts
|
|
12
12
|
} = useLocalization();
|
|
13
|
-
const
|
|
13
|
+
const tableMeta = table.options.meta;
|
|
14
|
+
const length = tableMeta.length;
|
|
14
15
|
const currentLength = table.getRowModel().rows.length;
|
|
15
16
|
let label;
|
|
16
17
|
let count;
|
|
17
18
|
// row selection
|
|
18
|
-
|
|
19
|
+
// use table state and not the selected row model because of the way server loading works
|
|
20
|
+
const rowsSelectedLength = Object.keys(table.getState().rowSelection).length;
|
|
19
21
|
if (rowsSelectedLength > 0) {
|
|
20
22
|
label = texts.table.footer.summary.selected;
|
|
21
23
|
count = /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(rowsSelectedLength)), "\u00A0", texts.table.footer.summary.count, "\u00A0", /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(length)));
|
|
22
|
-
} else if ((_table$getState$colum = table.getState().columnFilters) !== null && _table$getState$colum !== void 0 && _table$getState$colum.length ||
|
|
24
|
+
} else if (!tableMeta.server.isEnabled && ((_table$getState$colum = table.getState().columnFilters) !== null && _table$getState$colum !== void 0 && _table$getState$colum.length ||
|
|
23
25
|
// filtered data
|
|
24
|
-
!!table.getState().globalFilter && table.options.enableGlobalFilter
|
|
25
|
-
) {
|
|
26
|
+
!!table.getState().globalFilter && table.options.enableGlobalFilter)) {
|
|
26
27
|
label = texts.table.footer.summary.records;
|
|
27
|
-
count = /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("strong", null, currentLength), "\u00A0", texts.table.footer.summary.count, "\u00A0", /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(length)));
|
|
28
|
+
count = /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(currentLength)), "\u00A0", texts.table.footer.summary.count, "\u00A0", /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(length)));
|
|
28
29
|
} else {
|
|
29
30
|
label = texts.table.footer.summary.records;
|
|
30
31
|
count = /*#__PURE__*/React__default.createElement("strong", null, new Intl.NumberFormat(locale).format(length));
|