@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.
Files changed (90) hide show
  1. package/dist/components/Report/Report.d.ts +1 -1
  2. package/dist/components/SearchInput2/SearchInput2.d.ts +2 -0
  3. package/dist/components/Table3/features/useEditingState.d.ts +13 -13
  4. package/dist/components/Table3/features/useTableEditing.d.ts +15 -15
  5. package/dist/components/Table3/types.d.ts +2 -0
  6. package/dist/esm/packages/taco/src/charts/components/Donut/Legend.js +1 -0
  7. package/dist/esm/packages/taco/src/charts/components/Donut/Legend.js.map +1 -1
  8. package/dist/esm/packages/taco/src/charts/components/Legend.js +1 -0
  9. package/dist/esm/packages/taco/src/charts/components/Legend.js.map +1 -1
  10. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js +6 -3
  11. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js.map +1 -1
  12. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowActions.js +1 -1
  13. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js +1 -1
  14. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  15. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js +15 -9
  16. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js.map +1 -1
  17. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateNewRow.js +4 -2
  18. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateNewRow.js.map +1 -1
  19. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/TemporaryRow.js +3 -2
  20. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/TemporaryRow.js.map +1 -1
  21. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js +61 -69
  22. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js.map +1 -1
  23. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js +13 -6
  24. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
  25. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js +15 -12
  26. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js.map +1 -1
  27. package/dist/esm/packages/taco/src/components/Table3/useTable3.js +1 -1
  28. package/dist/esm/packages/taco/src/components/Table3/useTable3.js.map +1 -1
  29. package/dist/esm/packages/taco/src/index.js +1 -0
  30. package/dist/esm/packages/taco/src/index.js.map +1 -1
  31. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js +7 -4
  32. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js.map +1 -1
  33. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js +7 -6
  34. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
  35. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js +24 -22
  36. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js.map +1 -1
  37. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js +41 -4
  38. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js.map +1 -1
  39. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/Print.js +3 -1
  40. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/Print.js.map +1 -1
  41. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js +26 -3
  42. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js.map +1 -1
  43. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableGlobalShortcuts.js +2 -2
  44. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableGlobalShortcuts.js.map +1 -1
  45. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js +40 -13
  46. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
  47. package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.js +1 -1
  48. package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.js.map +1 -1
  49. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  50. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader.js +13 -12
  51. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader.js.map +1 -1
  52. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader2.js +223 -0
  53. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader2.js.map +1 -0
  54. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js +1 -1
  55. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js.map +1 -1
  56. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSearch.js +3 -2
  57. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSearch.js.map +1 -1
  58. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js +8 -3
  59. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js.map +1 -1
  60. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFilterListener.js +3 -1
  61. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFilterListener.js.map +1 -1
  62. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js +4 -4
  63. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js.map +1 -1
  64. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js +14 -13
  65. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
  66. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js +7 -3
  67. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js.map +1 -1
  68. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js +3 -3
  69. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js.map +1 -1
  70. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js +4 -1
  71. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js.map +1 -1
  72. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +8 -1
  73. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
  74. package/dist/hooks/useLazyDebouncedEffect.d.ts +2 -0
  75. package/dist/index.d.ts +1 -0
  76. package/dist/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.d.ts +2 -2
  77. package/dist/primitives/Table/Core/components/Row/Row.d.ts +2 -0
  78. package/dist/primitives/Table/Core/features/useTableRenderer.d.ts +1 -1
  79. package/dist/primitives/Table/types.d.ts +10 -6
  80. package/dist/primitives/Table/useTableDataLoader.d.ts +2 -2
  81. package/dist/primitives/Table/useTableDataLoader2.d.ts +23 -0
  82. package/dist/primitives/Table/useTableManager/features/useTableSearch.d.ts +4 -2
  83. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.d.ts +4 -1
  84. package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.d.ts +1 -2
  85. package/dist/primitives/Table/useTableManager/util/columns.d.ts +2 -1
  86. package/dist/taco.cjs.development.js +577 -233
  87. package/dist/taco.cjs.development.js.map +1 -1
  88. package/dist/taco.cjs.production.min.js +1 -1
  89. package/dist/taco.cjs.production.min.js.map +1 -1
  90. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"Alert.js","sources":["../../../../../../../../../src/components/Table3/components/Editing/Alert.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { ScrollToOptions as ReactVirtualScrollToOptions } from '@tanstack/react-virtual';\nimport { Alert as BaseAlert, AlertProps as BaseAlertProps } from '../../../Alert/Alert';\nimport { TableRef } from '../../../../primitives/Table/types';\nimport { Tooltip } from '../../../Tooltip/Tooltip';\nimport { useLocalization } from '../../../Provider/Localization';\nimport { Dialog, DialogProps } from '../../../Dialog/Dialog';\nimport { Group } from '../../../Group/Group';\nimport { Button } from '../../../Button/Button';\n\ntype AlertProps<TType = unknown> = Omit<BaseAlertProps, 'children'> & {\n scrollToIndex: (index: number, options: ReactVirtualScrollToOptions) => void;\n table: ReactTable<TType>;\n tableRef: React.RefObject<TableRef>;\n};\n\nexport function Alert<TType = unknown>(props: AlertProps<TType>) {\n const { scrollToIndex, table, tableRef, ...attributes } = props;\n const { texts } = useLocalization();\n const validationTexts = texts.table3.editing.validation;\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const [showFilterResetDialog, setShowFilterResetDialog] = React.useState<string | false>(false);\n const pendingChangesWithErrors = tableMeta.editing.getErrorsShownInAlert<TType>();\n\n function scrollToRow(rowIndex: number) {\n tableMeta.rowActive.setRowActiveIndex(rowIndex);\n scrollToIndex(rowIndex, { align: 'center' });\n\n requestAnimationFrame(() => {\n const cell = tableRef.current?.querySelector(\n 'tbody > tr[data-row-active=\"true\"] > td[data-cell-editing-invalid=\"true\"]'\n );\n\n if (cell) {\n (cell as HTMLElement).focus?.();\n }\n });\n }\n\n // generate the \"N unsaved entries\" title\n const title = (\n pendingChangesWithErrors.length === 1 ? validationTexts.alert.titleOne : validationTexts.alert.titlePlural\n ).replace('[COUNT]', String(pendingChangesWithErrors.length));\n\n // generate links to each invalid row, to go into the error message\n const links: React.ReactNode[] = [];\n const visibleColumns = table.getVisibleFlatColumns().map(c => c.id);\n const rowIdentityColumn =\n tableMeta.rowIdentityAccessor && visibleColumns.includes(String(tableMeta.rowIdentityAccessor))\n ? // table.getColumn(columName) throw error in strict dev mode. Related thread: https://github.com/TanStack/table/discussions/5505\n table.getAllColumns().find(x => x.id === String(tableMeta.rowIdentityAccessor))\n : undefined;\n\n pendingChangesWithErrors.forEach((pendingChangeWithError, index) => {\n // if appropriate, concatenate the item with the text \"and\"\n if (pendingChangesWithErrors.length > 1 && index === pendingChangesWithErrors.length - 1) {\n // Add space before and after `messageAnd` text\n links.push(` ${validationTexts.alert.messageAnd} `);\n }\n\n const rowIndex = table.getRowModel().rows.findIndex(row => row.id === pendingChangeWithError.rowId);\n\n const handleClick = () => {\n // if row is visible\n if (rowIndex > -1) {\n scrollToRow(rowIndex);\n }\n // if row is filtered out\n else {\n setShowFilterResetDialog(pendingChangeWithError.rowId);\n }\n };\n\n let tooltip;\n\n if (pendingChangeWithError.errors.row) {\n tooltip = pendingChangeWithError.errors.row;\n } else {\n const firstCellErrorColumnId = Object.keys(pendingChangeWithError.errors.cells)[0];\n const columnName = table.getAllColumns().find(column => column.id === firstCellErrorColumnId)?.columnDef.meta?.header;\n tooltip = `${columnName}: ${pendingChangeWithError.errors.cells[firstCellErrorColumnId]}`;\n }\n\n const row = table.getRow(pendingChangeWithError.rowId).original;\n\n links.push(\n <Tooltip key={pendingChangeWithError.rowId} title={tooltip}>\n <span className=\"text-blue\" onClick={handleClick} role=\"button\">\n {rowIdentityColumn ? row[rowIdentityColumn.id] : rowIndex + 1}\n </span>\n </Tooltip>\n );\n\n // if appropriate, concatenate the item with the text \",\"\n if (pendingChangesWithErrors.length > 2 && index < pendingChangesWithErrors.length - 2) {\n links.push(', ');\n }\n });\n\n // generate the \"Row N is incomplete and hasn't been saved\" error message\n const message = (links.length === 1 ? validationTexts.alert.messageOne : validationTexts.alert.messagePlural)\n .split(/(\\[\\w+\\])/)\n .map(part => {\n if (part === '[COLUMN]') {\n return rowIdentityColumn?.columnDef.meta?.header ?? validationTexts.alert.messageRow;\n }\n\n if (part === '[ROW]') {\n return links;\n }\n\n return part;\n });\n\n const handleResetFilters = () => {\n table.resetGlobalFilter();\n table.resetColumnFilters();\n\n requestAnimationFrame(() => {\n const rowIndex = table.getRowModel().rows.findIndex(row => row.id === showFilterResetDialog);\n\n if (rowIndex > -1) {\n scrollToRow(rowIndex);\n }\n\n setShowFilterResetDialog(false);\n });\n };\n\n return (\n <>\n <BaseAlert {...attributes} state=\"error\">\n <span className=\"font-bold\">{title}</span>&nbsp;{message}\n </BaseAlert>\n <FilterResetDialog\n open={showFilterResetDialog !== false}\n onChange={() => setShowFilterResetDialog(false)}\n onSubmit={handleResetFilters}\n />\n </>\n );\n}\n\ntype FilterResetDialogProps = Omit<DialogProps, 'children'> & {\n onSubmit: () => void;\n};\n\nfunction FilterResetDialog(props: FilterResetDialogProps) {\n const { onSubmit: handleSubmit, ...dialogProps } = props;\n const { texts } = useLocalization();\n\n return (\n <Dialog {...dialogProps} size=\"xs\">\n <Dialog.Content aria-label=\"Create a new account\">\n <Dialog.Title>{texts.table3.editing.validation.resetFiltersDialog.title}</Dialog.Title>\n\n <p>{texts.table3.editing.validation.resetFiltersDialog.description}</p>\n\n <Dialog.Footer>\n <Group>\n <Dialog.Close>\n <Button>{texts.table3.editing.validation.resetFiltersDialog.cancel}</Button>\n </Dialog.Close>\n <Button appearance=\"primary\" onClick={handleSubmit}>\n {texts.table3.editing.validation.resetFiltersDialog.confirm}\n </Button>\n </Group>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog>\n );\n}\n"],"names":["Alert","props","scrollToIndex","table","tableRef","attributes","texts","useLocalization","validationTexts","table3","editing","validation","tableMeta","options","meta","showFilterResetDialog","setShowFilterResetDialog","React","useState","pendingChangesWithErrors","getErrorsShownInAlert","scrollToRow","rowIndex","rowActive","setRowActiveIndex","align","requestAnimationFrame","cell","_tableRef$current","current","querySelector","_cell$focus","focus","call","title","length","alert","titleOne","titlePlural","replace","String","links","visibleColumns","getVisibleFlatColumns","map","c","id","rowIdentityColumn","rowIdentityAccessor","includes","getAllColumns","find","x","undefined","forEach","pendingChangeWithError","index","push","messageAnd","getRowModel","rows","findIndex","row","rowId","handleClick","tooltip","errors","_table$getAllColumns$","_table$getAllColumns$2","firstCellErrorColumnId","Object","keys","cells","columnName","column","columnDef","header","getRow","original","Tooltip","key","className","onClick","role","message","messageOne","messagePlural","split","part","_rowIdentityColumn$co","_rowIdentityColumn$co2","messageRow","handleResetFilters","resetGlobalFilter","resetColumnFilters","BaseAlert","state","FilterResetDialog","open","onChange","onSubmit","handleSubmit","dialogProps","Dialog","size","Content","Title","resetFiltersDialog","description","Footer","Group","Close","Button","cancel","appearance","confirm"],"mappings":"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"}
1
+ {"version":3,"file":"Alert.js","sources":["../../../../../../../../../src/components/Table3/components/Editing/Alert.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport { ScrollToOptions as ReactVirtualScrollToOptions } from '@tanstack/react-virtual';\nimport { Alert as BaseAlert, AlertProps as BaseAlertProps } from '../../../Alert/Alert';\nimport { TableRef } from '../../../../primitives/Table/types';\nimport { Tooltip } from '../../../Tooltip/Tooltip';\nimport { useLocalization } from '../../../Provider/Localization';\nimport { Dialog, DialogProps } from '../../../Dialog/Dialog';\nimport { Group } from '../../../Group/Group';\nimport { Button } from '../../../Button/Button';\n\ntype AlertProps<TType = unknown> = Omit<BaseAlertProps, 'children'> & {\n scrollToIndex: (index: number, options: ReactVirtualScrollToOptions) => void;\n table: ReactTable<TType>;\n tableRef: React.RefObject<TableRef>;\n};\n\nexport function Alert<TType = unknown>(props: AlertProps<TType>) {\n const { scrollToIndex, table, tableRef, ...attributes } = props;\n const { texts } = useLocalization();\n const validationTexts = texts.table3.editing.validation;\n const tableMeta = table.options.meta as ReactTableMeta<TType>;\n const [showFilterResetDialog, setShowFilterResetDialog] = React.useState<number | false>(false);\n const pendingChangesWithErrors = tableMeta.editing.getErrorsShownInAlert<TType>();\n\n function scrollToRow(rowIndex: number) {\n tableMeta.rowActive.setRowActiveIndex(rowIndex);\n scrollToIndex(rowIndex, { align: 'center' });\n\n requestAnimationFrame(() => {\n const cell = tableRef.current?.querySelector(\n 'tbody > tr[data-row-active=\"true\"] > td[data-cell-editing-invalid=\"true\"]'\n );\n\n if (cell) {\n (cell as HTMLElement).focus?.();\n }\n });\n }\n\n // generate the \"N unsaved entries\" title\n const title = (\n pendingChangesWithErrors.length === 1 ? validationTexts.alert.titleOne : validationTexts.alert.titlePlural\n ).replace('[COUNT]', String(pendingChangesWithErrors.length));\n\n // generate links to each invalid row, to go into the error message\n const links: React.ReactNode[] = [];\n const visibleColumns = table.getVisibleFlatColumns().map(c => c.id);\n const rowIdentityColumn =\n tableMeta.rowIdentityAccessor && visibleColumns.includes(String(tableMeta.rowIdentityAccessor))\n ? // table.getColumn(columName) throw error in strict dev mode. Related thread: https://github.com/TanStack/table/discussions/5505\n table.getAllColumns().find(x => x.id === String(tableMeta.rowIdentityAccessor))\n : undefined;\n\n pendingChangesWithErrors.forEach((pendingChangeWithError, index) => {\n // if appropriate, concatenate the item with the text \"and\"\n if (pendingChangesWithErrors.length > 1 && index === pendingChangesWithErrors.length - 1) {\n // Add space before and after `messageAnd` text\n links.push(` ${validationTexts.alert.messageAnd} `);\n }\n\n // note: if this row click functionality is removed, indexes can be removed from useEditingState\n const handleClick = () => {\n // if row is visible\n if (pendingChangeWithError.index > -1) {\n scrollToRow(pendingChangeWithError.index);\n tableMeta.rowActive.setRowActiveIndex(pendingChangeWithError.index);\n }\n // if row is filtered out\n else {\n setShowFilterResetDialog(pendingChangeWithError.index);\n }\n };\n\n let tooltip;\n\n if (pendingChangeWithError.errors.row) {\n tooltip = pendingChangeWithError.errors.row;\n } else {\n const firstCellErrorColumnId = Object.keys(pendingChangeWithError.errors.cells)[0];\n const columnName = table.getAllColumns().find(column => column.id === firstCellErrorColumnId)?.columnDef.meta?.header;\n tooltip = `${columnName}: ${pendingChangeWithError.errors.cells[firstCellErrorColumnId]}`;\n }\n\n let row;\n try {\n row = table.getRow(pendingChangeWithError.rowId).original;\n } catch {\n // because of server loading, some rows may not be accessible\n }\n\n links.push(\n <Tooltip key={pendingChangeWithError.rowId} title={tooltip}>\n <span className=\"text-blue\" onClick={handleClick} role=\"button\">\n {rowIdentityColumn ? row?.[rowIdentityColumn.id] : pendingChangeWithError.index + 1}\n </span>\n </Tooltip>\n );\n\n // if appropriate, concatenate the item with the text \",\"\n if (pendingChangesWithErrors.length > 2 && index < pendingChangesWithErrors.length - 2) {\n links.push(', ');\n }\n });\n\n // generate the \"Row N is incomplete and hasn't been saved\" error message\n const message = (links.length === 1 ? validationTexts.alert.messageOne : validationTexts.alert.messagePlural)\n .split(/(\\[\\w+\\])/)\n .map(part => {\n if (part === '[COLUMN]') {\n return rowIdentityColumn?.columnDef.meta?.header ?? validationTexts.alert.messageRow;\n }\n\n if (part === '[ROW]') {\n return links;\n }\n\n return part;\n });\n\n const handleResetFilters = () => {\n table.resetGlobalFilter();\n table.resetColumnFilters();\n\n requestAnimationFrame(() => {\n if (showFilterResetDialog && showFilterResetDialog > -1) {\n scrollToRow(showFilterResetDialog);\n }\n\n setShowFilterResetDialog(false);\n });\n };\n\n return (\n <>\n <BaseAlert {...attributes} state=\"error\">\n <span className=\"font-bold\">{title}</span>&nbsp;{message}\n </BaseAlert>\n <FilterResetDialog\n open={showFilterResetDialog !== false}\n onChange={() => setShowFilterResetDialog(false)}\n onSubmit={handleResetFilters}\n />\n </>\n );\n}\n\ntype FilterResetDialogProps = Omit<DialogProps, 'children'> & {\n onSubmit: () => void;\n};\n\nfunction FilterResetDialog(props: FilterResetDialogProps) {\n const { onSubmit: handleSubmit, ...dialogProps } = props;\n const { texts } = useLocalization();\n\n return (\n <Dialog {...dialogProps} size=\"xs\">\n <Dialog.Content aria-label=\"Create a new account\">\n <Dialog.Title>{texts.table3.editing.validation.resetFiltersDialog.title}</Dialog.Title>\n\n <p>{texts.table3.editing.validation.resetFiltersDialog.description}</p>\n\n <Dialog.Footer>\n <Group>\n <Dialog.Close>\n <Button>{texts.table3.editing.validation.resetFiltersDialog.cancel}</Button>\n </Dialog.Close>\n <Button appearance=\"primary\" onClick={handleSubmit}>\n {texts.table3.editing.validation.resetFiltersDialog.confirm}\n </Button>\n </Group>\n </Dialog.Footer>\n </Dialog.Content>\n </Dialog>\n );\n}\n"],"names":["Alert","props","scrollToIndex","table","tableRef","attributes","texts","useLocalization","validationTexts","table3","editing","validation","tableMeta","options","meta","showFilterResetDialog","setShowFilterResetDialog","React","useState","pendingChangesWithErrors","getErrorsShownInAlert","scrollToRow","rowIndex","rowActive","setRowActiveIndex","align","requestAnimationFrame","cell","_tableRef$current","current","querySelector","_cell$focus","focus","call","title","length","alert","titleOne","titlePlural","replace","String","links","visibleColumns","getVisibleFlatColumns","map","c","id","rowIdentityColumn","rowIdentityAccessor","includes","getAllColumns","find","x","undefined","forEach","pendingChangeWithError","index","push","messageAnd","handleClick","tooltip","errors","row","_table$getAllColumns$","_table$getAllColumns$2","firstCellErrorColumnId","Object","keys","cells","columnName","column","columnDef","header","getRow","rowId","original","Tooltip","key","className","onClick","role","_row","message","messageOne","messagePlural","split","part","_rowIdentityColumn$co","_rowIdentityColumn$co2","messageRow","handleResetFilters","resetGlobalFilter","resetColumnFilters","BaseAlert","state","FilterResetDialog","open","onChange","onSubmit","handleSubmit","dialogProps","Dialog","size","Content","Title","resetFiltersDialog","description","Footer","Group","Close","Button","cancel","appearance","confirm"],"mappings":"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"}
@@ -26,7 +26,9 @@ function CreateNewRow(props) {
26
26
  if (isDisabled) {
27
27
  return Promise.resolve();
28
28
  }
29
- return Promise.resolve(tableMeta.editing.createRow(table, scrollToIndex)).then(function () {});
29
+ return Promise.resolve(tableMeta.editing.createRow(table, scrollToIndex)).then(function () {
30
+ table.resetRowSelection();
31
+ });
30
32
  } catch (e) {
31
33
  return Promise.reject(e);
32
34
  }
@@ -45,7 +47,7 @@ function CreateNewRow(props) {
45
47
  keys: shortcut
46
48
  });
47
49
  }
48
- const className = cn('group/row border-grey-300 !sticky z-[21]', {
50
+ const className = cn('group/row border-grey-300 !sticky z-[21] print:hidden', {
49
51
  'bottom-10': tableMeta.footer.isEnabled,
50
52
  'bottom-0': !tableMeta.footer.isEnabled,
51
53
  'border-b': !isScrolled
@@ -1 +1 @@
1
- {"version":3,"file":"CreateNewRow.js","sources":["../../../../../../../../../../src/components/Table3/components/Row/Editing/CreateNewRow.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport { Button } from '../../../../Button/Button';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { Icon } from '../../../../Icon/Icon';\nimport { Table3EditingCreateHandler } from '../../../types';\nimport { Shortcut } from '../../../../Shortcut/Shortcut';\n\ntype CreateNewRowProps<TType = unknown> = {\n buttonRef: React.Ref<HTMLButtonElement>;\n isScrolled: boolean;\n onEditingCreate?: Table3EditingCreateHandler<TType>;\n scrollToIndex: (index: number) => void;\n table: ReactTable<TType>;\n tableMeta: ReactTableMeta<TType>;\n};\n\nexport function CreateNewRow<TType = unknown>(props: CreateNewRowProps<TType>) {\n const { buttonRef, isScrolled, scrollToIndex, table, tableMeta } = props;\n const { texts } = useLocalization();\n\n const temporaryRows = tableMeta.editing.temporaryRows as TType[];\n const temporaryRowId: string = temporaryRows[0]?.[tableMeta.rowIdentityAccessor as string] ?? '';\n\n const isDisabled =\n !!table.getState().globalFilter ||\n !!table.getState().columnFilters?.length ||\n (!!temporaryRowId && !!tableMeta.editing.hasRowErrors(temporaryRowId));\n const isSaving = !!temporaryRowId && tableMeta.editing.getRowStatus(temporaryRowId) === 'saving';\n\n const handleCreate = async () => {\n if (isDisabled) {\n return;\n }\n\n await tableMeta.editing.createRow(table, scrollToIndex);\n };\n const shortcut = { key: 'Enter', meta: true };\n\n let tooltip;\n\n if (isSaving) {\n tooltip = texts.table3.editing.buttons.create.saving;\n } else if (isDisabled) {\n tooltip = texts.table3.editing.buttons.create.disabled;\n } else {\n tooltip = <Shortcut keys={shortcut} />;\n }\n\n const className = clsx('group/row border-grey-300 !sticky z-[21]', {\n 'bottom-10': tableMeta.footer.isEnabled,\n 'bottom-0': !tableMeta.footer.isEnabled,\n 'border-b': !isScrolled,\n });\n\n return (\n <tr data-row-create className={className} tabIndex={-1}>\n <td className=\"!bg-grey-50 col-span-full !border-b-0 !px-1\">\n <Button\n appearance=\"transparent\"\n className=\"group-hover:bg-grey-200 sticky left-[4px]\"\n disabled={isDisabled}\n onClick={handleCreate}\n ref={buttonRef}\n shortcut={shortcut}\n tooltip={tooltip}>\n <Icon name=\"circle-plus\" />\n {texts.table3.editing.buttons.create.label}\n </Button>\n </td>\n </tr>\n );\n}\n"],"names":["CreateNewRow","props","buttonRef","isScrolled","scrollToIndex","table","tableMeta","texts","useLocalization","temporaryRows","editing","temporaryRowId","_temporaryRows$0$tabl","_temporaryRows$","rowIdentityAccessor","isDisabled","getState","globalFilter","_table$getState$colum","columnFilters","length","hasRowErrors","isSaving","getRowStatus","handleCreate","Promise","resolve","createRow","then","e","reject","shortcut","key","meta","tooltip","table3","buttons","create","saving","disabled","React","Shortcut","keys","className","clsx","footer","isEnabled","tabIndex","Button","appearance","onClick","ref","Icon","name","label"],"mappings":";;;;;;;SAkBgBA,YAAYA,CAAkBC,KAA+B;;EACzE,MAAM;IAAEC,SAAS;IAAEC,UAAU;IAAEC,aAAa;IAAEC,KAAK;IAAEC;GAAW,GAAGL,KAAK;EACxE,MAAM;IAAEM;GAAO,GAAGC,eAAe,EAAE;EAEnC,MAAMC,aAAa,GAAGH,SAAS,CAACI,OAAO,CAACD,aAAwB;EAChE,MAAME,cAAc,IAAAC,qBAAA,IAAAC,eAAA,GAAWJ,aAAa,CAAC,CAAC,CAAC,cAAAI,eAAA,uBAAhBA,eAAA,CAAmBP,SAAS,CAACQ,mBAA6B,CAAC,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,EAAE;EAEhG,MAAMG,UAAU,GACZ,CAAC,CAACV,KAAK,CAACW,QAAQ,EAAE,CAACC,YAAY,IAC/B,CAAC,GAAAC,qBAAA,GAACb,KAAK,CAACW,QAAQ,EAAE,CAACG,aAAa,cAAAD,qBAAA,eAA9BA,qBAAA,CAAgCE,MAAM,KACvC,CAAC,CAACT,cAAc,IAAI,CAAC,CAACL,SAAS,CAACI,OAAO,CAACW,YAAY,CAACV,cAAc,CAAE;EAC1E,MAAMW,QAAQ,GAAG,CAAC,CAACX,cAAc,IAAIL,SAAS,CAACI,OAAO,CAACa,YAAY,CAACZ,cAAc,CAAC,KAAK,QAAQ;EAEhG,MAAMa,YAAY;IAAA;MACd,IAAIT,UAAU,EAAE;QACZ,OAAAU,OAAA,CAAAC,OAAA;;MACH,OAAAD,OAAA,CAAAC,OAAA,CAEKpB,SAAS,CAACI,OAAO,CAACiB,SAAS,CAACtB,KAAK,EAAED,aAAa,CAAC,EAAAwB,IAAA;KAC1D,QAAAC,CAAA;MAAA,OAAAJ,OAAA,CAAAK,MAAA,CAAAD,CAAA;;;EACD,MAAME,QAAQ,GAAG;IAAEC,GAAG,EAAE,OAAO;IAAEC,IAAI,EAAE;GAAM;EAE7C,IAAIC,OAAO;EAEX,IAAIZ,QAAQ,EAAE;IACVY,OAAO,GAAG3B,KAAK,CAAC4B,MAAM,CAACzB,OAAO,CAAC0B,OAAO,CAACC,MAAM,CAACC,MAAM;GACvD,MAAM,IAAIvB,UAAU,EAAE;IACnBmB,OAAO,GAAG3B,KAAK,CAAC4B,MAAM,CAACzB,OAAO,CAAC0B,OAAO,CAACC,MAAM,CAACE,QAAQ;GACzD,MAAM;IACHL,OAAO,gBAAGM,6BAACC,QAAQ;MAACC,IAAI,EAAEX;MAAY;;EAG1C,MAAMY,SAAS,GAAGC,EAAI,CAAC,0CAA0C,EAAE;IAC/D,WAAW,EAAEtC,SAAS,CAACuC,MAAM,CAACC,SAAS;IACvC,UAAU,EAAE,CAACxC,SAAS,CAACuC,MAAM,CAACC,SAAS;IACvC,UAAU,EAAE,CAAC3C;GAChB,CAAC;EAEF,oBACIqC;;IAAoBG,SAAS,EAAEA,SAAS;IAAEI,QAAQ,EAAE,CAAC;kBACjDP;IAAIG,SAAS,EAAC;kBACVH,6BAACQ,MAAM;IACHC,UAAU,EAAC,aAAa;IACxBN,SAAS,EAAC,2CAA2C;IACrDJ,QAAQ,EAAExB,UAAU;IACpBmC,OAAO,EAAE1B,YAAY;IACrB2B,GAAG,EAAEjD,SAAS;IACd6B,QAAQ,EAAEA,QAAQ;IAClBG,OAAO,EAAEA;kBACTM,6BAACY,IAAI;IAACC,IAAI,EAAC;IAAgB,EAC1B9C,KAAK,CAAC4B,MAAM,CAACzB,OAAO,CAAC0B,OAAO,CAACC,MAAM,CAACiB,KAAK,CACrC,CACR,CACJ;AAEb;;;;"}
1
+ {"version":3,"file":"CreateNewRow.js","sources":["../../../../../../../../../../src/components/Table3/components/Row/Editing/CreateNewRow.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport { Button } from '../../../../Button/Button';\nimport { useLocalization } from '../../../../Provider/Localization';\nimport { Icon } from '../../../../Icon/Icon';\nimport { Table3EditingCreateHandler } from '../../../types';\nimport { Shortcut } from '../../../../Shortcut/Shortcut';\n\ntype CreateNewRowProps<TType = unknown> = {\n buttonRef: React.Ref<HTMLButtonElement>;\n isScrolled: boolean;\n onEditingCreate?: Table3EditingCreateHandler<TType>;\n scrollToIndex: (index: number) => void;\n table: ReactTable<TType>;\n tableMeta: ReactTableMeta<TType>;\n};\n\nexport function CreateNewRow<TType = unknown>(props: CreateNewRowProps<TType>) {\n const { buttonRef, isScrolled, scrollToIndex, table, tableMeta } = props;\n const { texts } = useLocalization();\n\n const temporaryRows = tableMeta.editing.temporaryRows as TType[];\n const temporaryRowId: string = temporaryRows[0]?.[tableMeta.rowIdentityAccessor as string] ?? '';\n\n const isDisabled =\n !!table.getState().globalFilter ||\n !!table.getState().columnFilters?.length ||\n (!!temporaryRowId && !!tableMeta.editing.hasRowErrors(temporaryRowId));\n const isSaving = !!temporaryRowId && tableMeta.editing.getRowStatus(temporaryRowId) === 'saving';\n\n const handleCreate = async () => {\n if (isDisabled) {\n return;\n }\n\n await tableMeta.editing.createRow(table, scrollToIndex);\n table.resetRowSelection();\n };\n const shortcut = { key: 'Enter', meta: true };\n\n let tooltip;\n\n if (isSaving) {\n tooltip = texts.table3.editing.buttons.create.saving;\n } else if (isDisabled) {\n tooltip = texts.table3.editing.buttons.create.disabled;\n } else {\n tooltip = <Shortcut keys={shortcut} />;\n }\n\n const className = clsx('group/row border-grey-300 !sticky z-[21] print:hidden', {\n 'bottom-10': tableMeta.footer.isEnabled,\n 'bottom-0': !tableMeta.footer.isEnabled,\n 'border-b': !isScrolled,\n });\n\n return (\n <tr data-row-create className={className} tabIndex={-1}>\n <td className=\"!bg-grey-50 col-span-full !border-b-0 !px-1\">\n <Button\n appearance=\"transparent\"\n className=\"group-hover:bg-grey-200 sticky left-[4px]\"\n disabled={isDisabled}\n onClick={handleCreate}\n ref={buttonRef}\n shortcut={shortcut}\n tooltip={tooltip}>\n <Icon name=\"circle-plus\" />\n {texts.table3.editing.buttons.create.label}\n </Button>\n </td>\n </tr>\n );\n}\n"],"names":["CreateNewRow","props","buttonRef","isScrolled","scrollToIndex","table","tableMeta","texts","useLocalization","temporaryRows","editing","temporaryRowId","_temporaryRows$0$tabl","_temporaryRows$","rowIdentityAccessor","isDisabled","getState","globalFilter","_table$getState$colum","columnFilters","length","hasRowErrors","isSaving","getRowStatus","handleCreate","Promise","resolve","createRow","then","resetRowSelection","e","reject","shortcut","key","meta","tooltip","table3","buttons","create","saving","disabled","React","Shortcut","keys","className","clsx","footer","isEnabled","tabIndex","Button","appearance","onClick","ref","Icon","name","label"],"mappings":";;;;;;;SAkBgBA,YAAYA,CAAkBC,KAA+B;;EACzE,MAAM;IAAEC,SAAS;IAAEC,UAAU;IAAEC,aAAa;IAAEC,KAAK;IAAEC;GAAW,GAAGL,KAAK;EACxE,MAAM;IAAEM;GAAO,GAAGC,eAAe,EAAE;EAEnC,MAAMC,aAAa,GAAGH,SAAS,CAACI,OAAO,CAACD,aAAwB;EAChE,MAAME,cAAc,IAAAC,qBAAA,IAAAC,eAAA,GAAWJ,aAAa,CAAC,CAAC,CAAC,cAAAI,eAAA,uBAAhBA,eAAA,CAAmBP,SAAS,CAACQ,mBAA6B,CAAC,cAAAF,qBAAA,cAAAA,qBAAA,GAAI,EAAE;EAEhG,MAAMG,UAAU,GACZ,CAAC,CAACV,KAAK,CAACW,QAAQ,EAAE,CAACC,YAAY,IAC/B,CAAC,GAAAC,qBAAA,GAACb,KAAK,CAACW,QAAQ,EAAE,CAACG,aAAa,cAAAD,qBAAA,eAA9BA,qBAAA,CAAgCE,MAAM,KACvC,CAAC,CAACT,cAAc,IAAI,CAAC,CAACL,SAAS,CAACI,OAAO,CAACW,YAAY,CAACV,cAAc,CAAE;EAC1E,MAAMW,QAAQ,GAAG,CAAC,CAACX,cAAc,IAAIL,SAAS,CAACI,OAAO,CAACa,YAAY,CAACZ,cAAc,CAAC,KAAK,QAAQ;EAEhG,MAAMa,YAAY;IAAA;MACd,IAAIT,UAAU,EAAE;QACZ,OAAAU,OAAA,CAAAC,OAAA;;MACH,OAAAD,OAAA,CAAAC,OAAA,CAEKpB,SAAS,CAACI,OAAO,CAACiB,SAAS,CAACtB,KAAK,EAAED,aAAa,CAAC,EAAAwB,IAAA;QACvDvB,KAAK,CAACwB,iBAAiB,EAAE;;KAC5B,QAAAC,CAAA;MAAA,OAAAL,OAAA,CAAAM,MAAA,CAAAD,CAAA;;;EACD,MAAME,QAAQ,GAAG;IAAEC,GAAG,EAAE,OAAO;IAAEC,IAAI,EAAE;GAAM;EAE7C,IAAIC,OAAO;EAEX,IAAIb,QAAQ,EAAE;IACVa,OAAO,GAAG5B,KAAK,CAAC6B,MAAM,CAAC1B,OAAO,CAAC2B,OAAO,CAACC,MAAM,CAACC,MAAM;GACvD,MAAM,IAAIxB,UAAU,EAAE;IACnBoB,OAAO,GAAG5B,KAAK,CAAC6B,MAAM,CAAC1B,OAAO,CAAC2B,OAAO,CAACC,MAAM,CAACE,QAAQ;GACzD,MAAM;IACHL,OAAO,gBAAGM,6BAACC,QAAQ;MAACC,IAAI,EAAEX;MAAY;;EAG1C,MAAMY,SAAS,GAAGC,EAAI,CAAC,uDAAuD,EAAE;IAC5E,WAAW,EAAEvC,SAAS,CAACwC,MAAM,CAACC,SAAS;IACvC,UAAU,EAAE,CAACzC,SAAS,CAACwC,MAAM,CAACC,SAAS;IACvC,UAAU,EAAE,CAAC5C;GAChB,CAAC;EAEF,oBACIsC;;IAAoBG,SAAS,EAAEA,SAAS;IAAEI,QAAQ,EAAE,CAAC;kBACjDP;IAAIG,SAAS,EAAC;kBACVH,6BAACQ,MAAM;IACHC,UAAU,EAAC,aAAa;IACxBN,SAAS,EAAC,2CAA2C;IACrDJ,QAAQ,EAAEzB,UAAU;IACpBoC,OAAO,EAAE3B,YAAY;IACrB4B,GAAG,EAAElD,SAAS;IACd8B,QAAQ,EAAEA,QAAQ;IAClBG,OAAO,EAAEA;kBACTM,6BAACY,IAAI;IAACC,IAAI,EAAC;IAAgB,EAC1B/C,KAAK,CAAC6B,MAAM,CAAC1B,OAAO,CAAC2B,OAAO,CAACC,MAAM,CAACiB,KAAK,CACrC,CACR,CACJ;AAEb;;;;"}
@@ -71,7 +71,7 @@ function TemporaryRow(props) {
71
71
  }
72
72
  }
73
73
  };
74
- const className = cn('group/row border-grey-300 !sticky z-[22]', {
74
+ const className = cn('group/row border-grey-300 !sticky z-[22] print:hidden', {
75
75
  'bottom-[calc(5rem_+_2px)] data-[row-editing-move]:bottom-[calc(5rem_+_2px)]': tableMeta.footer.isEnabled,
76
76
  'bottom-[calc(2.5rem_+_2px)] data-[row-editing-move]:bottom-[calc(2.5rem_+_2px)]': !tableMeta.footer.isEnabled,
77
77
  'border-t-2 shadow-[0px_-5px_20px_0px_rgba(0,0,0,0.1)] [&>td]:!border-b-0': isScrolled
@@ -88,7 +88,8 @@ function TemporaryRow(props) {
88
88
  onKeyDown: handleKeyDown,
89
89
  onKeyDownCapture: handleKeyDownCapture,
90
90
  hideInternalColumns: true,
91
- hideRowActions: !tableMeta.editing.isEditing
91
+ hideRowActions: !tableMeta.editing.isEditing,
92
+ skipPageLoading: true
92
93
  }))));
93
94
  }
94
95
 
@@ -1 +1 @@
1
- {"version":3,"file":"TemporaryRow.js","sources":["../../../../../../../../../../src/components/Table3/components/Row/Editing/TemporaryRow.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport { Row } from '../../../../../primitives/Table/Core/components/Row/Row';\nimport { RENDERERS } from '../../../useTable3';\nimport { isElementTriggeredFromContainer } from '../../../../../utils/dom';\nimport { TableRef } from '../../../../../primitives/Table/types';\nimport { TEMPORARY_ROW_ID_PREFIX } from '../../../util/editing';\n\ntype TemporaryRowProps<TType = unknown> = {\n createRowButtonRef: React.RefObject<HTMLButtonElement>;\n isScrolled: boolean;\n table: ReactTable<TType>;\n tableMeta: ReactTableMeta<TType>;\n tableRef: React.RefObject<TableRef>;\n};\n\nexport function TemporaryRow<TType = unknown>(props: TemporaryRowProps<TType>) {\n const { createRowButtonRef, isScrolled, table, tableMeta, tableRef } = props;\n\n const handleKeyDown = async (event: React.KeyboardEvent<HTMLTableRowElement>) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (!isElementTriggeredFromContainer(event.target as Element, event.currentTarget)) {\n const saved = await tableMeta.editing.saveChanges(table);\n\n if (saved) {\n createRowButtonRef.current?.focus();\n }\n }\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n event.stopPropagation();\n\n if (tableRef.current) {\n const availableRows = Array.from(\n tableRef.current.querySelectorAll(`tbody tr:not([data-row-id^='${TEMPORARY_ROW_ID_PREFIX}'])`) ?? []\n );\n\n const footerHeight = tableRef.current.querySelector('tfoot')?.getBoundingClientRect().height ?? 0;\n const newRowHeight = event.currentTarget.getBoundingClientRect().height;\n const visibleHeight = tableRef.current.clientHeight - footerHeight - newRowHeight;\n const tableTopOffset = tableRef.current.getBoundingClientRect().top;\n\n let nextRowIndex;\n\n // iterate available rows in reverse order, since we're working at the bottom\n for (let index = availableRows.length - 1; index >= 0; index--) {\n const rowRect = availableRows[index].getBoundingClientRect();\n const topPlusHalfRow = rowRect.top + rowRect.height / 2;\n\n if (topPlusHalfRow - tableTopOffset <= visibleHeight) {\n nextRowIndex = index;\n break;\n }\n }\n\n if (nextRowIndex) {\n tableMeta.rowActive.setRowActiveIndex(\n Number(availableRows[nextRowIndex < 0 ? 0 : nextRowIndex].getAttribute('data-row-index'))\n );\n }\n }\n }\n };\n\n const handleKeyDownCapture = (event: React.KeyboardEvent<HTMLTableRowElement>) => {\n if (event.key === 'ArrowLeft' && tableMeta.editing.lastFocusedCellIndex === 0) {\n event.preventDefault();\n event.stopPropagation();\n } else if (event.key === 'ArrowRight' && tableMeta.editing.lastFocusedCellIndex) {\n if (tableMeta.editing.lastFocusedCellIndex === table.getVisibleFlatColumns().length - 1) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n };\n\n const className = clsx('group/row border-grey-300 !sticky z-[22]', {\n 'bottom-[calc(5rem_+_2px)] data-[row-editing-move]:bottom-[calc(5rem_+_2px)]': tableMeta.footer.isEnabled,\n 'bottom-[calc(2.5rem_+_2px)] data-[row-editing-move]:bottom-[calc(2.5rem_+_2px)]': !tableMeta.footer.isEnabled,\n 'border-t-2 shadow-[0px_-5px_20px_0px_rgba(0,0,0,0.1)] [&>td]:!border-b-0': isScrolled,\n });\n\n return (\n <>\n {table.getBottomRows().map(row => (\n <Row<TType>\n key={row.id}\n cellRenderer={RENDERERS.cell}\n index={tableMeta.length}\n measureRow={() => null}\n renderer={RENDERERS.row}\n row={row}\n table={table}\n className={className}\n onKeyDown={handleKeyDown}\n onKeyDownCapture={handleKeyDownCapture}\n hideInternalColumns\n hideRowActions={!tableMeta.editing.isEditing}\n />\n ))}\n </>\n );\n}\n"],"names":["TemporaryRow","props","createRowButtonRef","isScrolled","table","tableMeta","tableRef","handleKeyDown","event","key","preventDefault","_temp","isElementTriggeredFromContainer","target","currentTarget","Promise","resolve","editing","saveChanges","then","saved","_createRowButtonRef$c","current","focus","stopPropagation","_tableRef$current$que","_tableRef$current$que2","_tableRef$current$que3","availableRows","Array","from","querySelectorAll","TEMPORARY_ROW_ID_PREFIX","footerHeight","querySelector","getBoundingClientRect","height","newRowHeight","visibleHeight","clientHeight","tableTopOffset","top","nextRowIndex","index","length","rowRect","topPlusHalfRow","rowActive","setRowActiveIndex","Number","getAttribute","_temp2","e","reject","handleKeyDownCapture","lastFocusedCellIndex","getVisibleFlatColumns","className","clsx","footer","isEnabled","React","getBottomRows","map","row","Row","id","cellRenderer","RENDERERS","cell","measureRow","renderer","onKeyDown","onKeyDownCapture","hideInternalColumns","hideRowActions","isEditing"],"mappings":"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"}
1
+ {"version":3,"file":"TemporaryRow.js","sources":["../../../../../../../../../../src/components/Table3/components/Row/Editing/TemporaryRow.tsx"],"sourcesContent":["import React from 'react';\nimport { Table as ReactTable, TableMeta as ReactTableMeta } from '@tanstack/react-table';\nimport clsx from 'clsx';\nimport { Row } from '../../../../../primitives/Table/Core/components/Row/Row';\nimport { RENDERERS } from '../../../useTable3';\nimport { isElementTriggeredFromContainer } from '../../../../../utils/dom';\nimport { TableRef } from '../../../../../primitives/Table/types';\nimport { TEMPORARY_ROW_ID_PREFIX } from '../../../util/editing';\n\ntype TemporaryRowProps<TType = unknown> = {\n createRowButtonRef: React.RefObject<HTMLButtonElement>;\n isScrolled: boolean;\n table: ReactTable<TType>;\n tableMeta: ReactTableMeta<TType>;\n tableRef: React.RefObject<TableRef>;\n};\n\nexport function TemporaryRow<TType = unknown>(props: TemporaryRowProps<TType>) {\n const { createRowButtonRef, isScrolled, table, tableMeta, tableRef } = props;\n\n const handleKeyDown = async (event: React.KeyboardEvent<HTMLTableRowElement>) => {\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n\n if (!isElementTriggeredFromContainer(event.target as Element, event.currentTarget)) {\n const saved = await tableMeta.editing.saveChanges(table);\n\n if (saved) {\n createRowButtonRef.current?.focus();\n }\n }\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n event.stopPropagation();\n\n if (tableRef.current) {\n const availableRows = Array.from(\n tableRef.current.querySelectorAll(`tbody tr:not([data-row-id^='${TEMPORARY_ROW_ID_PREFIX}'])`) ?? []\n );\n\n const footerHeight = tableRef.current.querySelector('tfoot')?.getBoundingClientRect().height ?? 0;\n const newRowHeight = event.currentTarget.getBoundingClientRect().height;\n const visibleHeight = tableRef.current.clientHeight - footerHeight - newRowHeight;\n const tableTopOffset = tableRef.current.getBoundingClientRect().top;\n\n let nextRowIndex;\n\n // iterate available rows in reverse order, since we're working at the bottom\n for (let index = availableRows.length - 1; index >= 0; index--) {\n const rowRect = availableRows[index].getBoundingClientRect();\n const topPlusHalfRow = rowRect.top + rowRect.height / 2;\n\n if (topPlusHalfRow - tableTopOffset <= visibleHeight) {\n nextRowIndex = index;\n break;\n }\n }\n\n if (nextRowIndex) {\n tableMeta.rowActive.setRowActiveIndex(\n Number(availableRows[nextRowIndex < 0 ? 0 : nextRowIndex].getAttribute('data-row-index'))\n );\n }\n }\n }\n };\n\n const handleKeyDownCapture = (event: React.KeyboardEvent<HTMLTableRowElement>) => {\n if (event.key === 'ArrowLeft' && tableMeta.editing.lastFocusedCellIndex === 0) {\n event.preventDefault();\n event.stopPropagation();\n } else if (event.key === 'ArrowRight' && tableMeta.editing.lastFocusedCellIndex) {\n if (tableMeta.editing.lastFocusedCellIndex === table.getVisibleFlatColumns().length - 1) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n };\n\n const className = clsx('group/row border-grey-300 !sticky z-[22] print:hidden', {\n 'bottom-[calc(5rem_+_2px)] data-[row-editing-move]:bottom-[calc(5rem_+_2px)]': tableMeta.footer.isEnabled,\n 'bottom-[calc(2.5rem_+_2px)] data-[row-editing-move]:bottom-[calc(2.5rem_+_2px)]': !tableMeta.footer.isEnabled,\n 'border-t-2 shadow-[0px_-5px_20px_0px_rgba(0,0,0,0.1)] [&>td]:!border-b-0': isScrolled,\n });\n\n return (\n <>\n {table.getBottomRows().map(row => (\n <Row<TType>\n key={row.id}\n cellRenderer={RENDERERS.cell}\n index={tableMeta.length}\n measureRow={() => null}\n renderer={RENDERERS.row}\n row={row}\n table={table}\n className={className}\n onKeyDown={handleKeyDown}\n onKeyDownCapture={handleKeyDownCapture}\n hideInternalColumns\n hideRowActions={!tableMeta.editing.isEditing}\n skipPageLoading\n />\n ))}\n </>\n );\n}\n"],"names":["TemporaryRow","props","createRowButtonRef","isScrolled","table","tableMeta","tableRef","handleKeyDown","event","key","preventDefault","_temp","isElementTriggeredFromContainer","target","currentTarget","Promise","resolve","editing","saveChanges","then","saved","_createRowButtonRef$c","current","focus","stopPropagation","_tableRef$current$que","_tableRef$current$que2","_tableRef$current$que3","availableRows","Array","from","querySelectorAll","TEMPORARY_ROW_ID_PREFIX","footerHeight","querySelector","getBoundingClientRect","height","newRowHeight","visibleHeight","clientHeight","tableTopOffset","top","nextRowIndex","index","length","rowRect","topPlusHalfRow","rowActive","setRowActiveIndex","Number","getAttribute","_temp2","e","reject","handleKeyDownCapture","lastFocusedCellIndex","getVisibleFlatColumns","className","clsx","footer","isEnabled","React","getBottomRows","map","row","Row","id","cellRenderer","RENDERERS","cell","measureRow","renderer","onKeyDown","onKeyDownCapture","hideInternalColumns","hideRowActions","isEditing","skipPageLoading"],"mappings":"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"}
@@ -18,6 +18,7 @@ function reducer(state, action) {
18
18
  {
19
19
  const {
20
20
  columnId,
21
+ index,
21
22
  row,
22
23
  value
23
24
  } = payload;
@@ -27,7 +28,8 @@ function reducer(state, action) {
27
28
  ...state.changes,
28
29
  rows: setWith(state.changes.rows, `${rowId}.${columnId}`, value, Object),
29
30
  originals: setWith(state.changes.originals, rowId, row, Object)
30
- }
31
+ },
32
+ indexes: setWith(state.indexes, rowId, index, Object)
31
33
  };
32
34
  }
33
35
  case 'removeCellValue':
@@ -61,6 +63,7 @@ function reducer(state, action) {
61
63
  {
62
64
  const {
63
65
  cellErrors,
66
+ index,
64
67
  moveReasons,
65
68
  original,
66
69
  value
@@ -75,7 +78,8 @@ function reducer(state, action) {
75
78
  moveReasons: setWith(state.changes.moveReasons, rowId, moveReasons !== null && moveReasons !== void 0 ? moveReasons : state.changes.moveReasons[rowId], Object),
76
79
  // status can be undefined, so don't use ??
77
80
  status: setWith(state.changes.status, rowId, undefined, Object)
78
- }
81
+ },
82
+ indexes: setWith(state.indexes, rowId, index, Object)
79
83
  };
80
84
  }
81
85
  case 'removeRow':
@@ -93,6 +97,7 @@ function reducer(state, action) {
93
97
  originals: omit(state.changes.originals, rowId),
94
98
  status: omit(state.changes.status, rowId)
95
99
  },
100
+ indexes: omit(state.indexes, rowId),
96
101
  temporaryRows: state.temporaryRows.filter(row => row[rowIdentityAccessor] !== rowId)
97
102
  };
98
103
  }
@@ -125,6 +130,7 @@ function reducer(state, action) {
125
130
  case 'insertTemporaryRow':
126
131
  {
127
132
  const {
133
+ index,
128
134
  value
129
135
  } = payload;
130
136
  return {
@@ -134,14 +140,36 @@ function reducer(state, action) {
134
140
  ...state.changes,
135
141
  rows: setWith(state.changes.rows, rowId, value, Object),
136
142
  originals: setWith(state.changes.originals, rowId, value, Object)
137
- }
143
+ },
144
+ indexes: setWith(state.indexes, rowId, index, Object)
138
145
  };
139
146
  }
140
147
  default:
141
148
  return state;
142
149
  }
143
150
  }
144
- function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, validator) {
151
+ function usePendingChangesState(handleSave, handleChange, handleDiscard, rowIdentityAccessor, validator) {
152
+ const discardChanges = function (rowId, table) {
153
+ try {
154
+ // remove any new rows from pinned state before discarding them
155
+ table.resetRowPinning(true);
156
+ dispatch({
157
+ type: 'removeRow',
158
+ rowId,
159
+ payload: {
160
+ rowIdentityAccessor
161
+ }
162
+ });
163
+ const _temp8 = function () {
164
+ if (typeof handleDiscard === 'function') {
165
+ return Promise.resolve(handleDiscard()).then(function () {});
166
+ }
167
+ }();
168
+ return Promise.resolve(_temp8 && _temp8.then ? _temp8.then(function () {}) : void 0);
169
+ } catch (e) {
170
+ return Promise.reject(e);
171
+ }
172
+ };
145
173
  const saveChanges = function (table, rowId = undefined) {
146
174
  try {
147
175
  let _exit = false;
@@ -154,19 +182,20 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
154
182
  [rowId]: state.changes.rows[rowId]
155
183
  } : state.changes.rows;
156
184
  let completed = true;
157
- const _temp9 = _forOf(Object.keys(changes), function (rowId) {
185
+ const _temp7 = _forOf(Object.keys(changes), function (rowId) {
158
186
  const status = getRowStatus(rowId);
159
187
  return _catch(function () {
160
188
  var _changes$rowId;
161
- function _temp8(_result) {
189
+ function _temp6(_result) {
162
190
  return _exit ? _result : Promise.resolve(handleSave(changeSet)).then(function () {
163
191
  // cleanup changes, we don't need them after saving
164
- discardChanges(rowId, table);
165
- // show the saved status, then remove it after a delay
166
- setRowStatus(rowId, 'saved');
167
- setTimeout(() => {
168
- setRowStatus(rowId, undefined);
169
- }, DELAY_BEFORE_REMOVING_SAVE_STATUS);
192
+ return Promise.resolve(discardChanges(rowId, table)).then(function () {
193
+ // show the saved status, then remove it after a delay
194
+ setRowStatus(rowId, 'saved');
195
+ setTimeout(() => {
196
+ setRowStatus(rowId, undefined);
197
+ }, DELAY_BEFORE_REMOVING_SAVE_STATUS);
198
+ });
170
199
  });
171
200
  }
172
201
  const rowChanges = (_changes$rowId = changes[rowId]) !== null && _changes$rowId !== void 0 ? _changes$rowId : {};
@@ -184,7 +213,7 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
184
213
  delete changeSet[rowIdentityAccessor];
185
214
  }
186
215
  // re-run validation, maybe a cell is already invalid but has never been blurred
187
- const _temp7 = function () {
216
+ const _temp5 = function () {
188
217
  if (validator) {
189
218
  return Promise.resolve(validator(changeSet)).then(function (errors) {
190
219
  if (errors && Object.keys(errors).length) {
@@ -193,7 +222,7 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
193
222
  });
194
223
  }
195
224
  }();
196
- return _temp7 && _temp7.then ? _temp7.then(_temp8) : _temp8(_temp7); // send new data to the server
225
+ return _temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5); // send new data to the server
197
226
  }, function (error) {
198
227
  var _error$response;
199
228
  if (error instanceof ReferenceError || error instanceof TypeError || (error === null || error === void 0 ? void 0 : (_error$response = error.response) === null || _error$response === void 0 ? void 0 : _error$response.status) >= 500) {
@@ -233,18 +262,18 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
233
262
  }, function () {
234
263
  return _exit;
235
264
  });
236
- return Promise.resolve(_temp9 && _temp9.then ? _temp9.then(function (_result3) {
265
+ return Promise.resolve(_temp7 && _temp7.then ? _temp7.then(function (_result3) {
237
266
  return _exit ? _result3 : completed;
238
- }) : _exit ? _temp9 : completed);
267
+ }) : _exit ? _temp7 : completed);
239
268
  } catch (e) {
240
269
  return Promise.reject(e);
241
270
  }
242
271
  };
243
272
  const onCellChanged = function (cell, rowIndex, nextValue, shouldRunUpdaters = true) {
244
273
  try {
245
- function _temp6() {
274
+ function _temp4() {
246
275
  var _state$changes$errors11;
247
- function _temp4() {
276
+ function _temp2() {
248
277
  // only set errors and move reasons for the cells we're currently acting on
249
278
  // why? because the UX is not good if we set them for cells the user hasn't touched yet
250
279
  const cellsToActOn = [cell.column.id, ...Object.keys(updatesForOtherCells)];
@@ -275,6 +304,7 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
275
304
  rowId: cell.row.id,
276
305
  payload: {
277
306
  cellErrors: nextCellErrors,
307
+ index: rowIndex,
278
308
  moveReasons: nextMoveReasons,
279
309
  value: nextChanges
280
310
  }
@@ -293,7 +323,7 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
293
323
  };
294
324
  // run validation - if there are changes, and if there is an original stored
295
325
  let validationErrors = {};
296
- const _temp3 = function () {
326
+ const _temp = function () {
297
327
  if (validator && Object.keys(nextChanges).length && state.changes.originals[cell.row.id]) {
298
328
  // merge with the original so we get a full row
299
329
  const nextRowValue = {
@@ -301,12 +331,12 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
301
331
  ...changes,
302
332
  ...updatesForOtherCells
303
333
  };
304
- return Promise.resolve(validator(nextRowValue)).then(function (_validator2) {
305
- validationErrors = _validator2 !== null && _validator2 !== void 0 ? _validator2 : {};
334
+ return Promise.resolve(validator(nextRowValue)).then(function (_validator) {
335
+ validationErrors = _validator !== null && _validator !== void 0 ? _validator : {};
306
336
  });
307
337
  }
308
338
  }();
309
- return _temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3);
339
+ return _temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp);
310
340
  }
311
341
  const changes = nextValue !== undefined ? {
312
342
  ...state.changes.rows[cell.row.id],
@@ -319,7 +349,7 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
319
349
  }
320
350
  let updatesForOtherCells = {};
321
351
  // run the updater handler if there is one, to see if there are any other cells to update
322
- const _temp5 = function () {
352
+ const _temp3 = function () {
323
353
  if (typeof handleChange === 'function' && shouldRunUpdaters) {
324
354
  const previousRowValue = {
325
355
  ...state.changes.originals[cell.row.id]
@@ -333,42 +363,11 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
333
363
  });
334
364
  }
335
365
  }();
336
- return Promise.resolve(_temp5 && _temp5.then ? _temp5.then(_temp6) : _temp6(_temp5));
366
+ return Promise.resolve(_temp3 && _temp3.then ? _temp3.then(_temp4) : _temp4(_temp3));
337
367
  } catch (e) {
338
368
  return Promise.reject(e);
339
369
  }
340
370
  }; // general
341
- // rows
342
- const setRowValue = function (rowId, original, value) {
343
- try {
344
- function _temp2() {
345
- dispatch({
346
- type: 'updateRow',
347
- rowId,
348
- payload: {
349
- cellErrors,
350
- original,
351
- value
352
- }
353
- });
354
- }
355
- let cellErrors;
356
- const _temp = function () {
357
- if (validator) {
358
- const row = {
359
- ...original,
360
- ...value
361
- };
362
- return Promise.resolve(validator(row)).then(function (_validator) {
363
- cellErrors = _validator !== null && _validator !== void 0 ? _validator : {};
364
- });
365
- }
366
- }();
367
- return Promise.resolve(_temp && _temp.then ? _temp.then(_temp2) : _temp2(_temp));
368
- } catch (e) {
369
- return Promise.reject(e);
370
- }
371
- };
372
371
  const localization = useLocalization();
373
372
  const [state, dispatch] = React__default.useReducer(reducer, {
374
373
  changes: {
@@ -378,8 +377,10 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
378
377
  originals: {},
379
378
  status: {}
380
379
  },
380
+ indexes: {},
381
381
  temporaryRows: []
382
382
  });
383
+ // rows
383
384
  function getRowValue(rowId) {
384
385
  var _state$changes$rows$r, _state$changes$rows;
385
386
  return (_state$changes$rows$r = (_state$changes$rows = state.changes.rows) === null || _state$changes$rows === void 0 ? void 0 : _state$changes$rows[rowId]) !== null && _state$changes$rows$r !== void 0 ? _state$changes$rows$r : undefined;
@@ -417,7 +418,7 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
417
418
  }
418
419
  });
419
420
  }
420
- function insertTemporaryRow(data) {
421
+ function insertTemporaryRow(data, rowIndex) {
421
422
  const newRowId = `${TEMPORARY_ROW_ID_PREFIX}${v4()}`;
422
423
  const value = {
423
424
  ...data,
@@ -427,13 +428,14 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
427
428
  type: 'insertTemporaryRow',
428
429
  rowId: newRowId,
429
430
  payload: {
431
+ index: rowIndex,
430
432
  value
431
433
  }
432
434
  });
433
435
  return newRowId;
434
436
  }
435
437
  // cells
436
- function setCellValue(cell, value) {
438
+ function setCellValue(cell, rowIndex, value) {
437
439
  const rowId = cell.row.id;
438
440
  const columnId = cell.column.id;
439
441
  // update if the change is different to the original value
@@ -443,6 +445,7 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
443
445
  rowId,
444
446
  payload: {
445
447
  columnId,
448
+ index: rowIndex,
446
449
  row: cell.row.original,
447
450
  value
448
451
  }
@@ -475,6 +478,7 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
475
478
  }
476
479
  return rowsWithErrors.filter(hasRowErrorsShownInAlert).map(rowId => ({
477
480
  rowId,
481
+ index: state.indexes[rowId],
478
482
  changes: state.changes.rows[rowId],
479
483
  errors: state.changes.errors[rowId]
480
484
  }));
@@ -485,20 +489,8 @@ function usePendingChangesState(handleSave, handleChange, rowIdentityAccessor, v
485
489
  function hasChanges(rowId) {
486
490
  return rowId ? !!state.changes.rows[rowId] : !!Object.keys(state.changes.rows).length;
487
491
  }
488
- function discardChanges(rowId, table) {
489
- // remove any new rows from pinned state before discarding them
490
- table.resetRowPinning(true);
491
- dispatch({
492
- type: 'removeRow',
493
- rowId,
494
- payload: {
495
- rowIdentityAccessor
496
- }
497
- });
498
- }
499
492
  return {
500
493
  // row
501
- setRowValue,
502
494
  getRowValue,
503
495
  getRowMoveReason,
504
496
  hasRowErrors,