@economic/taco 2.36.3 → 2.37.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 (33) hide show
  1. package/dist/components/Table3/Table3.d.ts +6 -6
  2. package/dist/components/Table3/components/Columns/Internal/EditingActionsMenu.d.ts +1 -1
  3. package/dist/components/Table3/components/Row/Editing/CreateRowButton.d.ts +1 -1
  4. package/dist/components/Table3/features/useTableEditing.d.ts +3 -3
  5. package/dist/components/Table3/types.d.ts +5 -3
  6. package/dist/esm/packages/taco/src/components/Table3/Table3.js +2 -2
  7. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  8. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js +1 -1
  9. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js.map +1 -1
  10. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateRowButton.js +4 -4
  11. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateRowButton.js.map +1 -1
  12. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js +108 -52
  13. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
  14. package/dist/esm/packages/taco/src/components/Table3/useTable3.js +3 -3
  15. package/dist/esm/packages/taco/src/components/Table3/useTable3.js.map +1 -1
  16. package/dist/esm/packages/taco/src/components/Table3/util/editing.js +15 -2
  17. package/dist/esm/packages/taco/src/components/Table3/util/editing.js.map +1 -1
  18. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js +19 -4
  19. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js.map +1 -1
  20. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/EmptyStateBody.js +5 -2
  21. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/EmptyStateBody.js.map +1 -1
  22. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  23. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +3 -2
  24. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
  25. package/dist/esm/packages/taco/src/types.js.map +1 -1
  26. package/dist/primitives/Table/Core/components/Body/EmptyStateBody.d.ts +2 -1
  27. package/dist/primitives/Table/types.d.ts +6 -3
  28. package/dist/taco.cjs.development.js +160 -72
  29. package/dist/taco.cjs.development.js.map +1 -1
  30. package/dist/taco.cjs.production.min.js +1 -1
  31. package/dist/taco.cjs.production.min.js.map +1 -1
  32. package/dist/types.d.ts +1 -0
  33. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/util/setup.ts"],"sourcesContent":["import React from 'react';\nimport {\n createColumnHelper,\n getExpandedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getSortedRowModel,\n TableOptions as ReactTableOptions,\n Row as ReactTableRow,\n Column as ReactTableColumn,\n ColumnDef as ReactTableColumnDef,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSizingState as ReactTableColumnSizingState,\n ColumnSort as ReactTableColumnSort,\n TableState as ReactTableState,\n VisibilityState as ReactTableVisibilityState,\n} from '@tanstack/react-table';\nimport get from 'lodash/get';\n\nimport { useTableManagerInternalColumns, useTableManagerInternalColumn } from '../types';\nimport { TableColumnProps, TableFeatureProps, TableGroupProps, TableProps, TableSettings } from '../../types';\nimport { getSortingFn } from './sorting';\nimport { ensureOrdering, freezeUptoExternalColumn, getCellMinWidth, unfreezeAllExternalColumns } from './columns';\nimport { columnFilterFn, globalFilterFn } from './filtering';\nimport { ignoreInternalColumns } from './settings';\n\n// mapping children to react-table columns\nfunction processChildren<TType>(\n child: React.ReactChild | React.ReactFragment | React.ReactPortal,\n columns: ReactTableColumnDef<TType>[],\n defaultSizing: ReactTableColumnSizingState,\n defaultSorting: ReactTableColumnSort[],\n defaultVisibility: ReactTableVisibilityState,\n settings: TableSettings,\n defaultRowGroupColumnId?: keyof TType\n): ReactTableColumnDef<TType>[] {\n const columnHelper = createColumnHelper<TType>();\n\n if (React.isValidElement<TableGroupProps>(child) && child.props.children) {\n const { children, id, header } = child.props;\n\n columns.push(\n columnHelper.group({\n id,\n header,\n columns: React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId\n ),\n []\n ),\n // we don't want to let column groups be grouped/aggregrated\n enableGrouping: false,\n })\n );\n } else if (React.isValidElement<TableColumnProps<TType>>(child) && (child.props.accessor || child.props.id)) {\n const {\n id,\n accessor: accessorKey = id,\n // renderers\n renderer,\n aggregate,\n footer,\n header,\n // options\n aggregationFn,\n defaultHidden,\n defaultWidth,\n enableFiltering: enableColumnFilter = true,\n enableGrouping = false,\n enableHiding = true,\n enableOrdering = true,\n enablePrinting = true,\n enableResizing = true,\n enableSearch: enableGlobalFilter = true,\n enableSorting = true,\n enableTruncate = false,\n minWidth: minSize = getCellMinWidth(settings.fontSize),\n sort,\n sortFn,\n ...meta\n } = child.props;\n\n if (defaultHidden && enableHiding) {\n defaultVisibility[id] = false;\n }\n\n if (defaultWidth) {\n defaultSizing[id] = defaultWidth as any;\n }\n\n const isGrouped = defaultRowGroupColumnId === id;\n\n if (child.props.sort !== undefined || isGrouped) {\n defaultSorting.push({\n id,\n desc: sort === 'desc',\n });\n }\n\n const column: ReactTableColumnDef<TType, any> = {\n id,\n accessorKey,\n // To avoid errors caused by undefined row data values, we pass accessorFn as a preventive measure\n // accessorKey can be dot notated strings, so we use lodash.get to access deeply nested children\n accessorFn: row => get(row, accessorKey),\n header: header,\n // features\n enableColumnFilter,\n enableGlobalFilter,\n enableGrouping,\n enableHiding: isGrouped ? false : enableHiding,\n enableResizing,\n enableSorting,\n // config - sizing\n minSize,\n // meta\n meta: {\n ...(meta as any),\n defaultWidth,\n enableOrdering: isGrouped ? false : enableOrdering,\n enablePrinting,\n enableTruncate,\n header,\n renderer,\n },\n };\n\n // renderers\n if (typeof renderer === 'function') {\n column.cell = info => renderer(info.getValue(), info.row.original);\n }\n\n if (typeof footer === 'function') {\n column.footer = info =>\n footer(info.table.getRowModel().rows.flatMap(row => (row.original !== undefined ? row.original : [])));\n }\n\n // config - filtering\n if (enableColumnFilter) {\n column.filterFn = 'tacoFilter' as any;\n }\n\n // config - grouping/aggregation\n if (enableGrouping) {\n column.aggregationFn = aggregationFn;\n\n if (typeof aggregate === 'function') {\n column.aggregatedCell = info => aggregate(info.getValue(), info.row.original);\n }\n }\n\n // config - sorting\n if (enableSorting) {\n column.sortingFn = getSortingFn<TType>(child.props.dataType, sortFn);\n column.sortDescFirst = false;\n column.sortUndefined = 1;\n }\n\n columns.push(column);\n }\n\n return columns;\n}\n\nfunction createInternalColumn<TType = unknown>(\n id: string,\n column: useTableManagerInternalColumn<TType>,\n defaultSizing: ReactTableColumnSizingState\n) {\n if (column.size) {\n defaultSizing[id] = column.size;\n }\n\n return {\n id,\n accessorKey: id,\n header: column.header,\n cell: column.renderer,\n // features\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n // config - sizing\n size: column.size,\n minSize: column.size,\n // meta\n meta: {\n ...(column.meta as any),\n enableOrdering: false,\n enablePrinting: false,\n enableTruncate: false,\n },\n } as ReactTableColumnDef<TType, any>;\n}\n\nexport function mapTableChildrenToColumns<TType = unknown>(\n props: TableProps<TType>,\n settings: TableSettings,\n options: TableFeatureProps<TType>,\n internalColumns?: useTableManagerInternalColumns<TType>\n) {\n const { children, defaultRowGroupColumnId } = props;\n const defaultSizing: ReactTableColumnSizingState = {};\n const defaultSorting: ReactTableColumnSort[] = [];\n const defaultVisibility: ReactTableVisibilityState = {};\n\n const columns = React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId\n ),\n\n []\n );\n\n if (internalColumns) {\n if (options.enableRowExpansion && props.rowExpansionRenderer && internalColumns.rowExpansion) {\n const column = createInternalColumn<TType>('__expansion', internalColumns.rowExpansion, defaultSizing);\n columns.unshift(column);\n }\n\n if ((options.enableRowSelection || options.enableRowSelectionSingle) && internalColumns.rowSelection) {\n const column = createInternalColumn<TType>('__select', internalColumns.rowSelection, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowDrag && props.onRowDrag && internalColumns.rowDrag) {\n const column = createInternalColumn<TType>('__drag', internalColumns.rowDrag, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowActions && props.rowActions?.length && internalColumns.rowActions) {\n const column = createInternalColumn<TType>('__actions', internalColumns.rowActions, defaultSizing);\n columns.push(column);\n }\n }\n\n return { columns, defaultSizing, defaultSorting, defaultVisibility };\n}\n\nexport function configureReactTableOptions<TType = unknown>(options: TableFeatureProps<TType>, props: TableProps<TType>) {\n const enableRowSelection = options.enableRowSelection || options.enableRowSelectionSingle;\n const tableOptions: Partial<ReactTableOptions<TType>> = {\n defaultColumn: {\n enableColumnFilter: options.enableFiltering || true,\n enableGrouping: false,\n enableHiding: options.enableColumnHiding || true,\n enableResizing: options.enableColumnResizing || true,\n enableGlobalFilter: options.enableSearch || true,\n enableSorting: options.enableSorting || true,\n minSize: 1,\n // the default is 150, which is a bit random\n size: 1,\n },\n enableColumnFilters: options.enableFiltering ?? false,\n enableColumnResizing: options.enableColumnResizing ?? false,\n enableExpanding: options.enableRowExpansion ?? false,\n enableGrouping: true, // users can't customise row grouping, so it can just be always enabled and left to the defaultRowGroupColumnId prop\n enableHiding: options.enableColumnHiding ?? false,\n enablePinning: options.enableColumnFreezing ?? false,\n enableRowSelection: enableRowSelection ?? false,\n enableMultiRowSelection: options.enableRowSelectionSingle === true ? false : enableRowSelection,\n enableSorting: options.enableSorting ?? false,\n // models for default features\n getExpandedRowModel: getExpandedRowModel<TType>(),\n getGroupedRowModel: getGroupedRowModel<TType>(),\n groupedColumnMode: false,\n };\n\n if (tableOptions.enableColumnResizing) {\n tableOptions.columnResizeMode = 'onChange';\n }\n\n if (tableOptions.enableColumnFilters) {\n // enter controlled filter mode (controlled could be local state, but usually the server)\n if (props.onChangeFilter) {\n // tableOptions.manualFiltering = true;\n // we don't set it because it breaks global filtering (used for search, which is fully client side)\n //\n // tableOptions.onColumnFiltersChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onFilter\n } else {\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.filterFns = {\n tacoFilter: (row: ReactTableRow<TType>, columnId: string, filter: any) =>\n columnFilterFn(row.getValue(columnId), filter),\n };\n }\n }\n\n if (options.enableSearch) {\n // always set these because enableGlobalFilter can be toggled on and off by the user\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.globalFilterFn = globalFilterFn;\n tableOptions.getColumnCanGlobalFilter = (column: ReactTableColumn<TType>) => column.columnDef.meta?.enableSearch ?? true;\n\n // enter controlled search mode (controlled could be local state, but usually the server)\n if (props.onChangeSearch) {\n // tableOptions.manualFiltering = true;\n // we don't set this because controlled search is not currently supported, search is always client side\n //\n // tableOptions.onGlobalFilterChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSearch.\n //\n // we also don't always filter when searching, we have the highlight functionality as the default\n // and filtering can be toggled by the user\n }\n }\n\n if (tableOptions.enableSorting) {\n // enter controlled sort mode (controlled could be local state, but usually the server)\n if (props.onChangeSort) {\n tableOptions.manualSorting = true;\n\n // tableOptions.onSortingChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSort\n } else {\n tableOptions.getSortedRowModel = getSortedRowModel();\n }\n }\n\n return tableOptions;\n}\n\nexport function useReactTableInitialState<TType = unknown>(\n props: TableProps<TType>,\n columns: ReactTableColumnDef<TType>[],\n persistedSettings: TableSettings,\n defaults: {\n defaultSizing: ReactTableColumnSizingState;\n defaultSorting: ReactTableColumnSort[];\n defaultVisibility: ReactTableVisibilityState;\n }\n): Partial<ReactTableState> {\n return React.useMemo(() => {\n const ignoreNotDefinedColumns = column => columns.find(definedColumn => definedColumn.id === column.id);\n\n const columnPinning: ReactTableColumnPinningState =\n persistedSettings.columnPinning ?? props.defaultSettings?.columnPinning ?? {};\n\n const columnOrder = ensureOrdering<TType>(\n columns,\n persistedSettings.columnOrder ?? props.defaultSettings?.columnOrder,\n columnPinning.left\n );\n\n // ensure internal columns are pinned, and are pinned in the correct order\n if (columnPinning?.left?.length) {\n columnPinning.left = freezeUptoExternalColumn(\n columnOrder.indexOf(columnPinning.left[columnPinning.left.length - 1]),\n columnOrder\n );\n } else {\n if (props.defaultColumnFreezingIndex) {\n columnPinning.left = freezeUptoExternalColumn(props.defaultColumnFreezingIndex, columnOrder);\n } else {\n columnPinning.left = unfreezeAllExternalColumns(columnOrder);\n }\n }\n\n const state: Partial<ReactTableState> = {\n columnFilters: persistedSettings.columnFilters ?? props.defaultSettings?.columnFilters ?? [],\n columnOrder,\n columnPinning,\n columnSizing: ignoreInternalColumns(\n persistedSettings.columnSizing ?? props.defaultSettings?.columnSizing ?? defaults.defaultSizing ?? {}\n ),\n columnVisibility:\n persistedSettings.columnVisibility ?? props.defaultSettings?.columnVisibility ?? defaults.defaultVisibility ?? {},\n globalFilter: persistedSettings.searchQuery ?? props.defaultSettings?.searchQuery,\n sorting: persistedSettings.sorting\n ? persistedSettings.sorting.filter(ignoreNotDefinedColumns)\n : props.defaultSettings?.sorting ?? defaults.defaultSorting,\n };\n\n if (props.defaultRowGroupColumnId) {\n state.grouping = [props.defaultRowGroupColumnId as string];\n // row groups should (all) always be expanded by default\n state.expanded = true;\n }\n\n return state;\n }, []);\n}\n"],"names":["processChildren","child","columns","defaultSizing","defaultSorting","defaultVisibility","settings","defaultRowGroupColumnId","columnHelper","createColumnHelper","React","isValidElement","props","children","id","header","push","group","Children","toArray","reduce","enableGrouping","accessor","accessorKey","renderer","aggregate","footer","aggregationFn","defaultHidden","defaultWidth","enableFiltering","enableColumnFilter","enableHiding","enableOrdering","enablePrinting","enableResizing","enableSearch","enableGlobalFilter","enableSorting","enableTruncate","minWidth","minSize","getCellMinWidth","fontSize","sort","sortFn","meta","isGrouped","undefined","desc","column","accessorFn","row","get","cell","info","getValue","original","table","getRowModel","rows","flatMap","filterFn","aggregatedCell","sortingFn","getSortingFn","dataType","sortDescFirst","sortUndefined","createInternalColumn","size","mapTableChildrenToColumns","options","internalColumns","_props$rowActions","enableRowExpansion","rowExpansionRenderer","rowExpansion","unshift","enableRowSelection","enableRowSelectionSingle","rowSelection","enableRowDrag","onRowDrag","rowDrag","enableRowActions","rowActions","length","configureReactTableOptions","tableOptions","defaultColumn","enableColumnHiding","enableColumnResizing","enableColumnFilters","_options$enableFilter","_options$enableColumn","enableExpanding","_options$enableRowExp","_options$enableColumn2","enablePinning","_options$enableColumn3","enableColumnFreezing","enableMultiRowSelection","_options$enableSortin","getExpandedRowModel","getGroupedRowModel","groupedColumnMode","columnResizeMode","onChangeFilter","getFilteredRowModel","filterFns","tacoFilter","columnId","filter","columnFilterFn","globalFilterFn","getColumnCanGlobalFilter","_column$columnDef$met","_column$columnDef$met2","columnDef","onChangeSort","manualSorting","getSortedRowModel","useReactTableInitialState","persistedSettings","defaults","useMemo","ignoreNotDefinedColumns","find","definedColumn","columnPinning","_ref","_persistedSettings$co","_props$defaultSetting","defaultSettings","columnOrder","ensureOrdering","_persistedSettings$co2","_props$defaultSetting2","left","_columnPinning$left","freezeUptoExternalColumn","indexOf","defaultColumnFreezingIndex","unfreezeAllExternalColumns","state","columnFilters","_ref2","_persistedSettings$co3","_props$defaultSetting3","columnSizing","ignoreInternalColumns","_ref3","_ref4","_persistedSettings$co4","_props$defaultSetting4","columnVisibility","_ref5","_ref6","_persistedSettings$co5","_props$defaultSetting5","globalFilter","_persistedSettings$se","searchQuery","_props$defaultSetting6","sorting","_props$defaultSetting7","_props$defaultSetting8","grouping","expanded"],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/util/setup.ts"],"sourcesContent":["import React from 'react';\nimport {\n createColumnHelper,\n getExpandedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getSortedRowModel,\n TableOptions as ReactTableOptions,\n Row as ReactTableRow,\n Column as ReactTableColumn,\n ColumnDef as ReactTableColumnDef,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSizingState as ReactTableColumnSizingState,\n ColumnSort as ReactTableColumnSort,\n TableState as ReactTableState,\n VisibilityState as ReactTableVisibilityState,\n} from '@tanstack/react-table';\nimport get from 'lodash/get';\n\nimport { useTableManagerInternalColumns, useTableManagerInternalColumn } from '../types';\nimport { TableColumnProps, TableFeatureProps, TableGroupProps, TableProps, TableSettings } from '../../types';\nimport { getSortingFn } from './sorting';\nimport { ensureOrdering, freezeUptoExternalColumn, getCellMinWidth, unfreezeAllExternalColumns } from './columns';\nimport { columnFilterFn, globalFilterFn } from './filtering';\nimport { ignoreInternalColumns } from './settings';\n\n// mapping children to react-table columns\nfunction processChildren<TType>(\n child: React.ReactChild | React.ReactFragment | React.ReactPortal,\n columns: ReactTableColumnDef<TType>[],\n defaultSizing: ReactTableColumnSizingState,\n defaultSorting: ReactTableColumnSort[],\n defaultVisibility: ReactTableVisibilityState,\n settings: TableSettings,\n defaultRowGroupColumnId?: keyof TType\n): ReactTableColumnDef<TType>[] {\n const columnHelper = createColumnHelper<TType>();\n\n if (React.isValidElement<TableGroupProps>(child) && child.props.children) {\n const { children, id, header } = child.props;\n\n columns.push(\n columnHelper.group({\n id,\n header,\n columns: React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId\n ),\n []\n ),\n // we don't want to let column groups be grouped/aggregrated\n enableGrouping: false,\n })\n );\n } else if (React.isValidElement<TableColumnProps<TType>>(child) && (child.props.accessor || child.props.id)) {\n const {\n id: untypedId,\n accessor: accessorKey = untypedId,\n // renderers\n renderer,\n aggregate,\n footer,\n header,\n // options\n aggregationFn,\n defaultHidden,\n defaultWidth,\n enableFiltering: enableColumnFilter = true,\n enableGrouping = false,\n enableHiding = true,\n enableOrdering = true,\n enablePrinting = true,\n enableResizing = true,\n enableSearch: enableGlobalFilter = true,\n enableSorting = true,\n enableTruncate = false,\n minWidth: minSize = getCellMinWidth(settings.fontSize),\n sort,\n sortFn,\n ...meta\n } = child.props;\n const id = untypedId as string;\n\n if (defaultHidden && enableHiding) {\n defaultVisibility[id] = false;\n }\n\n if (defaultWidth) {\n defaultSizing[id] = defaultWidth as any;\n }\n\n const isGrouped = defaultRowGroupColumnId === id;\n\n if (child.props.sort !== undefined || isGrouped) {\n defaultSorting.push({\n id,\n desc: sort === 'desc',\n });\n }\n\n const column: ReactTableColumnDef<TType, any> = {\n id,\n accessorKey,\n // To avoid errors caused by undefined row data values, we pass accessorFn as a preventive measure\n // accessorKey can be dot notated strings, so we use lodash.get to access deeply nested children\n accessorFn: row => get(row, accessorKey),\n header: header,\n // features\n enableColumnFilter,\n enableGlobalFilter,\n enableGrouping,\n enableHiding: isGrouped ? false : enableHiding,\n enableResizing,\n enableSorting,\n // config - sizing\n minSize,\n // meta\n meta: {\n ...(meta as any),\n defaultWidth,\n enableOrdering: isGrouped ? false : enableOrdering,\n enablePrinting,\n enableTruncate,\n header,\n renderer,\n },\n };\n\n // renderers\n if (typeof renderer === 'function') {\n column.cell = info => renderer(info.getValue(), info.row.original);\n }\n\n if (typeof footer === 'function') {\n column.footer = info =>\n footer(info.table.getRowModel().rows.flatMap(row => (row.original !== undefined ? row.original : [])));\n }\n\n // config - filtering\n if (enableColumnFilter) {\n column.filterFn = 'tacoFilter' as any;\n }\n\n // config - grouping/aggregation\n if (enableGrouping) {\n column.aggregationFn = aggregationFn;\n\n if (typeof aggregate === 'function') {\n column.aggregatedCell = info => aggregate(info.getValue(), info.row.original);\n }\n }\n\n // config - sorting\n if (enableSorting) {\n column.sortingFn = getSortingFn<TType>(child.props.dataType, sortFn);\n column.sortDescFirst = false;\n column.sortUndefined = 1;\n }\n\n columns.push(column);\n }\n\n return columns;\n}\n\nfunction createInternalColumn<TType = unknown>(\n id: string,\n column: useTableManagerInternalColumn<TType>,\n defaultSizing: ReactTableColumnSizingState\n) {\n if (column.size) {\n defaultSizing[id] = column.size;\n }\n\n return {\n id,\n accessorKey: id,\n header: column.header,\n cell: column.renderer,\n // features\n enableColumnFilter: false,\n enableGlobalFilter: false,\n enableGrouping: false,\n enableHiding: false,\n enableResizing: false,\n enableSorting: false,\n // config - sizing\n size: column.size,\n minSize: column.size,\n // meta\n meta: {\n ...(column.meta as any),\n enableOrdering: false,\n enablePrinting: false,\n enableTruncate: false,\n },\n } as ReactTableColumnDef<TType, any>;\n}\n\nexport function mapTableChildrenToColumns<TType = unknown>(\n props: TableProps<TType>,\n settings: TableSettings,\n options: TableFeatureProps<TType>,\n internalColumns?: useTableManagerInternalColumns<TType>\n) {\n const { children, defaultRowGroupColumnId } = props;\n const defaultSizing: ReactTableColumnSizingState = {};\n const defaultSorting: ReactTableColumnSort[] = [];\n const defaultVisibility: ReactTableVisibilityState = {};\n\n const columns = React.Children.toArray(children).reduce(\n (columns: ReactTableColumnDef<TType>[], child) =>\n processChildren<TType>(\n child,\n columns,\n defaultSizing,\n defaultSorting,\n defaultVisibility,\n settings,\n defaultRowGroupColumnId\n ),\n\n []\n );\n\n if (internalColumns) {\n if (options.enableRowExpansion && props.rowExpansionRenderer && internalColumns.rowExpansion) {\n const column = createInternalColumn<TType>('__expansion', internalColumns.rowExpansion, defaultSizing);\n columns.unshift(column);\n }\n\n if ((options.enableRowSelection || options.enableRowSelectionSingle) && internalColumns.rowSelection) {\n const column = createInternalColumn<TType>('__select', internalColumns.rowSelection, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowDrag && props.onRowDrag && internalColumns.rowDrag) {\n const column = createInternalColumn<TType>('__drag', internalColumns.rowDrag, defaultSizing);\n columns.unshift(column);\n }\n\n if (options.enableRowActions && props.rowActions?.length && internalColumns.rowActions) {\n const column = createInternalColumn<TType>('__actions', internalColumns.rowActions, defaultSizing);\n columns.push(column);\n }\n }\n\n return { columns, defaultSizing, defaultSorting, defaultVisibility };\n}\n\nexport function configureReactTableOptions<TType = unknown>(options: TableFeatureProps<TType>, props: TableProps<TType>) {\n const enableRowSelection = options.enableRowSelection || options.enableRowSelectionSingle;\n const tableOptions: Partial<ReactTableOptions<TType>> = {\n defaultColumn: {\n enableColumnFilter: options.enableFiltering || true,\n enableGrouping: false,\n enableHiding: options.enableColumnHiding || true,\n enableResizing: options.enableColumnResizing || true,\n enableGlobalFilter: options.enableSearch || true,\n enableSorting: options.enableSorting || true,\n minSize: 1,\n // the default is 150, which is a bit random\n size: 1,\n },\n enableColumnFilters: options.enableFiltering ?? false,\n enableColumnResizing: options.enableColumnResizing ?? false,\n enableExpanding: options.enableRowExpansion ?? false,\n enableGrouping: true, // users can't customise row grouping, so it can just be always enabled and left to the defaultRowGroupColumnId prop\n enableHiding: options.enableColumnHiding ?? false,\n enablePinning: options.enableColumnFreezing ?? false,\n enableRowSelection: enableRowSelection ?? false,\n enableMultiRowSelection: options.enableRowSelectionSingle === true ? false : enableRowSelection,\n enableSorting: options.enableSorting ?? false,\n // models for default features\n getExpandedRowModel: getExpandedRowModel<TType>(),\n getGroupedRowModel: getGroupedRowModel<TType>(),\n groupedColumnMode: false,\n };\n\n if (tableOptions.enableColumnResizing) {\n tableOptions.columnResizeMode = 'onChange';\n }\n\n if (tableOptions.enableColumnFilters) {\n // enter controlled filter mode (controlled could be local state, but usually the server)\n if (props.onChangeFilter) {\n // tableOptions.manualFiltering = true;\n // we don't set it because it breaks global filtering (used for search, which is fully client side)\n //\n // tableOptions.onColumnFiltersChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onFilter\n } else {\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.filterFns = {\n tacoFilter: (row: ReactTableRow<TType>, columnId: string, filter: any) =>\n columnFilterFn(row.getValue(columnId), filter),\n };\n }\n }\n\n if (options.enableSearch) {\n // always set these because enableGlobalFilter can be toggled on and off by the user\n tableOptions.getFilteredRowModel = getFilteredRowModel<TType>();\n tableOptions.globalFilterFn = globalFilterFn;\n tableOptions.getColumnCanGlobalFilter = (column: ReactTableColumn<TType>) => column.columnDef.meta?.enableSearch ?? true;\n\n // enter controlled search mode (controlled could be local state, but usually the server)\n if (props.onChangeSearch) {\n // tableOptions.manualFiltering = true;\n // we don't set this because controlled search is not currently supported, search is always client side\n //\n // tableOptions.onGlobalFilterChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSearch.\n //\n // we also don't always filter when searching, we have the highlight functionality as the default\n // and filtering can be toggled by the user\n }\n }\n\n if (tableOptions.enableSorting) {\n // enter controlled sort mode (controlled could be local state, but usually the server)\n if (props.onChangeSort) {\n tableOptions.manualSorting = true;\n\n // tableOptions.onSortingChange = ...\n // we don't set this because it expects state to be maintained externally, and we don't want\n // consumers to control state outside the table. instead we have a listener that calls onSort\n } else {\n tableOptions.getSortedRowModel = getSortedRowModel();\n }\n }\n\n return tableOptions;\n}\n\nexport function useReactTableInitialState<TType = unknown>(\n props: TableProps<TType>,\n columns: ReactTableColumnDef<TType>[],\n persistedSettings: TableSettings,\n defaults: {\n defaultSizing: ReactTableColumnSizingState;\n defaultSorting: ReactTableColumnSort[];\n defaultVisibility: ReactTableVisibilityState;\n }\n): Partial<ReactTableState> {\n return React.useMemo(() => {\n const ignoreNotDefinedColumns = column => columns.find(definedColumn => definedColumn.id === column.id);\n\n const columnPinning: ReactTableColumnPinningState =\n persistedSettings.columnPinning ?? props.defaultSettings?.columnPinning ?? {};\n\n const columnOrder = ensureOrdering<TType>(\n columns,\n persistedSettings.columnOrder ?? props.defaultSettings?.columnOrder,\n columnPinning.left\n );\n\n // ensure internal columns are pinned, and are pinned in the correct order\n if (columnPinning?.left?.length) {\n columnPinning.left = freezeUptoExternalColumn(\n columnOrder.indexOf(columnPinning.left[columnPinning.left.length - 1]),\n columnOrder\n );\n } else {\n if (props.defaultColumnFreezingIndex) {\n columnPinning.left = freezeUptoExternalColumn(props.defaultColumnFreezingIndex, columnOrder);\n } else {\n columnPinning.left = unfreezeAllExternalColumns(columnOrder);\n }\n }\n\n const state: Partial<ReactTableState> = {\n columnFilters: persistedSettings.columnFilters ?? props.defaultSettings?.columnFilters ?? [],\n columnOrder,\n columnPinning,\n columnSizing: ignoreInternalColumns(\n persistedSettings.columnSizing ?? props.defaultSettings?.columnSizing ?? defaults.defaultSizing ?? {}\n ),\n columnVisibility:\n persistedSettings.columnVisibility ?? props.defaultSettings?.columnVisibility ?? defaults.defaultVisibility ?? {},\n globalFilter: persistedSettings.searchQuery ?? props.defaultSettings?.searchQuery,\n sorting: persistedSettings.sorting\n ? persistedSettings.sorting.filter(ignoreNotDefinedColumns)\n : props.defaultSettings?.sorting ?? defaults.defaultSorting,\n };\n\n if (props.defaultRowGroupColumnId) {\n state.grouping = [props.defaultRowGroupColumnId as string];\n // row groups should (all) always be expanded by default\n state.expanded = true;\n }\n\n return state;\n }, []);\n}\n"],"names":["processChildren","child","columns","defaultSizing","defaultSorting","defaultVisibility","settings","defaultRowGroupColumnId","columnHelper","createColumnHelper","React","isValidElement","props","children","id","header","push","group","Children","toArray","reduce","enableGrouping","accessor","untypedId","accessorKey","renderer","aggregate","footer","aggregationFn","defaultHidden","defaultWidth","enableFiltering","enableColumnFilter","enableHiding","enableOrdering","enablePrinting","enableResizing","enableSearch","enableGlobalFilter","enableSorting","enableTruncate","minWidth","minSize","getCellMinWidth","fontSize","sort","sortFn","meta","isGrouped","undefined","desc","column","accessorFn","row","get","cell","info","getValue","original","table","getRowModel","rows","flatMap","filterFn","aggregatedCell","sortingFn","getSortingFn","dataType","sortDescFirst","sortUndefined","createInternalColumn","size","mapTableChildrenToColumns","options","internalColumns","_props$rowActions","enableRowExpansion","rowExpansionRenderer","rowExpansion","unshift","enableRowSelection","enableRowSelectionSingle","rowSelection","enableRowDrag","onRowDrag","rowDrag","enableRowActions","rowActions","length","configureReactTableOptions","tableOptions","defaultColumn","enableColumnHiding","enableColumnResizing","enableColumnFilters","_options$enableFilter","_options$enableColumn","enableExpanding","_options$enableRowExp","_options$enableColumn2","enablePinning","_options$enableColumn3","enableColumnFreezing","enableMultiRowSelection","_options$enableSortin","getExpandedRowModel","getGroupedRowModel","groupedColumnMode","columnResizeMode","onChangeFilter","getFilteredRowModel","filterFns","tacoFilter","columnId","filter","columnFilterFn","globalFilterFn","getColumnCanGlobalFilter","_column$columnDef$met","_column$columnDef$met2","columnDef","onChangeSort","manualSorting","getSortedRowModel","useReactTableInitialState","persistedSettings","defaults","useMemo","ignoreNotDefinedColumns","find","definedColumn","columnPinning","_ref","_persistedSettings$co","_props$defaultSetting","defaultSettings","columnOrder","ensureOrdering","_persistedSettings$co2","_props$defaultSetting2","left","_columnPinning$left","freezeUptoExternalColumn","indexOf","defaultColumnFreezingIndex","unfreezeAllExternalColumns","state","columnFilters","_ref2","_persistedSettings$co3","_props$defaultSetting3","columnSizing","ignoreInternalColumns","_ref3","_ref4","_persistedSettings$co4","_props$defaultSetting4","columnVisibility","_ref5","_ref6","_persistedSettings$co5","_props$defaultSetting5","globalFilter","_persistedSettings$se","searchQuery","_props$defaultSetting6","sorting","_props$defaultSetting7","_props$defaultSetting8","grouping","expanded"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../../src/types.ts"],"sourcesContent":["import React from 'react';\nimport { AVAILABLE_COLORS } from './utils/tailwind';\n\nexport type Appearance = 'default' | 'primary' | 'danger' | 'ghost' | 'discrete' | 'transparent';\nexport type State = 'default' | 'success' | 'error' | 'warning' | 'information';\nexport type Locale = 'en-GB' | 'da-DK' | 'sv-SE' | 'no-NO';\nexport type Orientation = 'horizontal' | 'vertical';\nexport type Align = 'start' | 'center' | 'end';\nexport type Placement = 'right' | 'left' | 'top' | 'bottom';\nexport type Color = (typeof AVAILABLE_COLORS)[number];\n\nexport enum FontSizes {\n small = 'small',\n medium = 'medium',\n large = 'large',\n}\nexport type FontSize = keyof typeof FontSizes;\n\n// helpers\ntype FixedForwardRef = <T, P = {}>(\n render: (props: P, ref: React.Ref<T>) => JSX.Element\n) => (props: P & React.RefAttributes<T>) => JSX.Element;\n\nexport const fixedForwardRef = React.forwardRef as FixedForwardRef;\n\nexport type ValueOf<T> = T[keyof T];\n"],"names":["FontSizes","fixedForwardRef","React","forwardRef"],"mappings":";;IAWYA;AAAZ,WAAYA,SAAS;EACjBA,4BAAe;EACfA,8BAAiB;EACjBA,4BAAe;AACnB,CAAC,EAJWA,SAAS,KAATA,SAAS;MAYRC,eAAe,GAAGC,cAAK,CAACC;;;;"}
1
+ {"version":3,"file":"types.js","sources":["../../../../../src/types.ts"],"sourcesContent":["import React from 'react';\nimport { AVAILABLE_COLORS } from './utils/tailwind';\n\nexport type Appearance = 'default' | 'primary' | 'danger' | 'ghost' | 'discrete' | 'transparent';\nexport type State = 'default' | 'success' | 'error' | 'warning' | 'information';\nexport type Locale = 'en-GB' | 'da-DK' | 'sv-SE' | 'no-NO';\nexport type Orientation = 'horizontal' | 'vertical';\nexport type Align = 'start' | 'center' | 'end';\nexport type Placement = 'right' | 'left' | 'top' | 'bottom';\nexport type Color = (typeof AVAILABLE_COLORS)[number];\n\nexport enum FontSizes {\n small = 'small',\n medium = 'medium',\n large = 'large',\n}\nexport type FontSize = keyof typeof FontSizes;\n\n// helpers\ntype FixedForwardRef = <T, P = {}>(\n render: (props: P, ref: React.Ref<T>) => JSX.Element\n) => (props: P & React.RefAttributes<T>) => JSX.Element;\n\nexport const fixedForwardRef = React.forwardRef as FixedForwardRef;\n\nexport type ValueOf<T> = T[keyof T];\n\nexport type StringWithAutocompleteOptions<T> = T | (string & {});\n"],"names":["FontSizes","fixedForwardRef","React","forwardRef"],"mappings":";;IAWYA;AAAZ,WAAYA,SAAS;EACjBA,4BAAe;EACfA,8BAAiB;EACjBA,4BAAe;AACnB,CAAC,EAJWA,SAAS,KAATA,SAAS;MAYRC,eAAe,GAAGC,cAAK,CAACC;;;;"}
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
- import { TableEmptyStateRenderer } from '../../../types';
2
+ import { TableEmptyStateReason, TableEmptyStateRenderer } from '../../../types';
3
3
  declare type EmptyStateProps = React.HTMLAttributes<HTMLTableSectionElement> & {
4
4
  emptyState?: TableEmptyStateRenderer;
5
+ reason: TableEmptyStateReason;
5
6
  };
6
7
  export declare function EmptyStateBody(props: EmptyStateProps): JSX.Element;
7
8
  export {};
@@ -1,6 +1,6 @@
1
1
  /// <reference types="react" />
2
2
  import { ColumnFilter as ReactTableColumnFilter, ColumnFiltersState as ReactTableColumnFilterState, ColumnOrderState as ReactTableColumnOrderState, ColumnPinningState as ReactTableColumnPinningState, ColumnSort as ReactTableColumnSort, ColumnSizingState as ReactTableColumnSizingState, VisibilityState as ReactTableColumnVisibilityState, SortingState as ReactTableSortingState, BuiltInAggregationFn as ReactTableBuiltInAggregationFn, BuiltInSortingFn as ReactTableBuiltInSortingFn } from '@tanstack/react-table';
3
- import { FontSize, FontSizes, ValueOf } from '../../types';
3
+ import { FontSize, FontSizes, StringWithAutocompleteOptions, ValueOf } from '../../types';
4
4
  import { MenuItemProps } from '../../components/Menu/components/Item';
5
5
  export declare type TableRef = HTMLTableElement & {
6
6
  instance: {
@@ -98,7 +98,10 @@ export declare type TableSettingsHandler = (settings: TableSettings) => void | P
98
98
  export declare type TableShortcuts<TType = unknown> = Record<string, TableShortcutHandlerFn<TType> | TableShortcutHandlerObject<TType>>;
99
99
  export declare type TableSortHandler = (sorting: TableColumnSort[]) => void | Promise<void>;
100
100
  export declare type TableCustomSettingsRenderer = (props: TableSettings) => React.ReactElement<MenuItemProps>[];
101
- export declare type TableEmptyStateRenderer = () => JSX.Element | null;
101
+ export declare type TableEmptyStateReason = 'empty' | 'filtering' | 'searching';
102
+ export declare type TableEmptyStateRenderer = (props: {
103
+ reason: TableEmptyStateReason;
104
+ }) => JSX.Element;
102
105
  export declare type TableSettings = {
103
106
  columnFilters?: ReactTableColumnFilterState;
104
107
  columnOrder?: ReactTableColumnOrderState;
@@ -191,7 +194,7 @@ export declare type TableProps<TType = unknown> = TableClientProps<TType> | Tabl
191
194
  export declare type TableColumnProps<TType = unknown> = ValueOf<{
192
195
  [Key in keyof TType]: {
193
196
  accessor?: Key;
194
- id: string;
197
+ id: StringWithAutocompleteOptions<Key>;
195
198
  renderer?: TableColumnRenderer<TType, TType[Key]>;
196
199
  /** Renderer to use if the cell is an aggregate cell and part of a grouped row */
197
200
  aggregate?: TableColumnRendererAggregate<TType, TType[Key]>;
@@ -43,6 +43,7 @@ var set = _interopDefault(require('lodash/set'));
43
43
  var unset = _interopDefault(require('lodash/unset'));
44
44
  var compact = _interopDefault(require('lodash/compact'));
45
45
  var pullAt = _interopDefault(require('lodash/pullAt'));
46
+ var lodash = require('lodash');
46
47
  var TabsPrimitive = require('@radix-ui/react-tabs');
47
48
  var Joyride = require('react-joyride');
48
49
  var Joyride__default = _interopDefault(Joyride);
@@ -10059,8 +10060,8 @@ function processChildren(child, columns, defaultSizing, defaultSorting, defaultV
10059
10060
  }));
10060
10061
  } else if ( /*#__PURE__*/React__default.isValidElement(child) && (child.props.accessor || child.props.id)) {
10061
10062
  const {
10062
- id,
10063
- accessor: accessorKey = id,
10063
+ id: untypedId,
10064
+ accessor: accessorKey = untypedId,
10064
10065
  // renderers
10065
10066
  renderer,
10066
10067
  aggregate,
@@ -10084,6 +10085,7 @@ function processChildren(child, columns, defaultSizing, defaultSorting, defaultV
10084
10085
  sortFn,
10085
10086
  ...meta
10086
10087
  } = child.props;
10088
+ const id = untypedId;
10087
10089
  if (defaultHidden && enableHiding) {
10088
10090
  defaultVisibility[id] = false;
10089
10091
  }
@@ -13629,7 +13631,8 @@ const MemoedFooter = /*#__PURE__*/React__default.memo(function MemoedFooter(prop
13629
13631
 
13630
13632
  function EmptyStateBody(props) {
13631
13633
  const {
13632
- emptyState: Placeholder = null,
13634
+ emptyState: Placeholder,
13635
+ reason,
13633
13636
  ...attributes
13634
13637
  } = props;
13635
13638
  return /*#__PURE__*/React__default.createElement("tbody", Object.assign({}, attributes, {
@@ -13638,7 +13641,9 @@ function EmptyStateBody(props) {
13638
13641
  className: "!auto-rows-fr"
13639
13642
  }, /*#__PURE__*/React__default.createElement("td", {
13640
13643
  className: "col-span-full !border-0 !p-0 hover:!bg-white"
13641
- }, Placeholder ? /*#__PURE__*/React__default.createElement(Placeholder, null) : null)));
13644
+ }, Placeholder ? /*#__PURE__*/React__default.createElement(Placeholder, {
13645
+ reason: reason
13646
+ }) : undefined)));
13642
13647
  }
13643
13648
 
13644
13649
  const SearchInput2 = /*#__PURE__*/React__default.forwardRef(function SearchInput2(props, ref) {
@@ -16573,6 +16578,19 @@ function Table(props) {
16573
16578
  }
16574
16579
  Table.Toolbar = TableToolbar;
16575
16580
  Table.Grid = TableGrid;
16581
+ function getFilterReason(table) {
16582
+ if (table.instance.getFilteredRowModel().rows.length === 0 && table.instance.getCoreRowModel().rows.length !== 0) {
16583
+ const state = table.instance.getState();
16584
+ if (table.meta.search.enableGlobalFilter && !!state.globalFilter) {
16585
+ return 'searching';
16586
+ }
16587
+ return 'filtering';
16588
+ }
16589
+ if (table.instance.getCoreRowModel().rows.length === 0) {
16590
+ return 'empty';
16591
+ }
16592
+ return null;
16593
+ }
16576
16594
  function TableGrid(props) {
16577
16595
  var _table$state$grouping;
16578
16596
  const {
@@ -16583,6 +16601,7 @@ function TableGrid(props) {
16583
16601
  const handleFocus = table.meta.rowActive.rowActiveIndex === undefined ? event => {
16584
16602
  table.meta.rowActive.handleFocus(event, table.meta.length, table.renderer.scrollToIndex);
16585
16603
  } : undefined;
16604
+ const filterReason = getFilterReason(table);
16586
16605
  return /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement("style", null, table.stylesheet), /*#__PURE__*/React__default.createElement(focus.FocusScope, null, /*#__PURE__*/React__default.createElement("table", Object.assign({}, attributes, {
16587
16606
  id: table.id,
16588
16607
  "data-table-font-size": table.meta.fontSize.size,
@@ -16603,7 +16622,10 @@ function TableGrid(props) {
16603
16622
  key: props.id,
16604
16623
  header: props,
16605
16624
  scrollToIndex: table.renderer.scrollToIndex
16606
- }))))))), table.instance.getCoreRowModel().rows.length ? ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Body, {
16625
+ }))))))), filterReason ? ( /*#__PURE__*/React__default.createElement(EmptyStateBody, {
16626
+ emptyState: props.table.props.emptyState,
16627
+ reason: filterReason
16628
+ })) : ( /*#__PURE__*/React__default.createElement(React__default.Fragment, null, /*#__PURE__*/React__default.createElement(Body, {
16607
16629
  enableHorizontalArrowKeyNavigation: enableHorizontalArrowKeyNavigation,
16608
16630
  table: table.instance,
16609
16631
  tableElement: table.ref.current,
@@ -16614,9 +16636,7 @@ function TableGrid(props) {
16614
16636
  } : table.renderer.style
16615
16637
  }, table.renderer.rows, props.children), table.meta.footer.isEnabled ? /*#__PURE__*/React__default.createElement(Foot, {
16616
16638
  table: table.instance
16617
- }) : null)) : ( /*#__PURE__*/React__default.createElement(EmptyStateBody, {
16618
- emptyState: table.props.emptyState
16619
- })))));
16639
+ }) : null)))));
16620
16640
  }
16621
16641
 
16622
16642
  function Column$1(_) {
@@ -18233,9 +18253,22 @@ function willRowMoveAfterSorting(cell, change, rowIndex) {
18233
18253
  if (rowIndex < rows.length - 1) {
18234
18254
  miniSortRows.push(rows[rowIndex + 1]);
18235
18255
  }
18236
- let resortedRows = [...miniSortRows].sort((a, b) => cell.column.getSortingFn()(a, b, cell.column.id));
18256
+ const resortedRows = [...miniSortRows].sort((rowA, rowB) => {
18257
+ const sortFn = cell.column.getSortingFn();
18258
+ const sortUndefined = cell.column.columnDef.sortUndefined;
18259
+ if (!table.options.manualSorting && sortUndefined) {
18260
+ const aValue = rowA.getValue(cell.column.id);
18261
+ const bValue = rowB.getValue(cell.column.id);
18262
+ const aUndefined = aValue === undefined;
18263
+ const bUndefined = bValue === undefined;
18264
+ if (aUndefined || bUndefined) {
18265
+ return aUndefined && bUndefined ? 0 : aUndefined ? sortUndefined : -sortUndefined;
18266
+ }
18267
+ }
18268
+ return sortFn(rowA, rowB, cell.column.id);
18269
+ });
18237
18270
  if (cell.column.getIsSorted() === 'desc') {
18238
- resortedRows = resortedRows.reverse();
18271
+ resortedRows.reverse();
18239
18272
  }
18240
18273
  return ((_resortedRows$index = resortedRows[index]) === null || _resortedRows$index === void 0 ? void 0 : _resortedRows$index.id) !== cell.row.id;
18241
18274
  }
@@ -18259,7 +18292,7 @@ function animateCreateRow(id) {
18259
18292
  }
18260
18293
  }
18261
18294
 
18262
- function useTableEditing(isEnabled = false, handleSave, validator) {
18295
+ function useTableEditing(isEnabled = false, handleSave, handleChange, validator) {
18263
18296
  // used to switch the table into editing mode
18264
18297
  const [isEditing, toggleEditing] = React__default.useState(false);
18265
18298
  // used to switch the editing between "detailed" mode
@@ -18269,7 +18302,7 @@ function useTableEditing(isEnabled = false, handleSave, validator) {
18269
18302
  // store pending changes for each row
18270
18303
  // changes are saved as soon as the active row changes, so in most cases this will only contain the active row's changes
18271
18304
  // but not always - if validation or server requests fail when saving, those rows remain until the failure is resolved
18272
- const pendingChangesFns = usePendingChanges(isEnabled, handleSave, validator);
18305
+ const pendingChangesFns = usePendingChanges(isEnabled, handleSave, handleChange, validator);
18273
18306
  useGlobalKeyDown(isEnabled && isEditing ? {
18274
18307
  key: 's',
18275
18308
  meta: true,
@@ -18289,12 +18322,12 @@ function useTableEditing(isEnabled = false, handleSave, validator) {
18289
18322
  ...pendingChangesFns
18290
18323
  };
18291
18324
  }
18292
- function usePendingChanges(isEnabled, handleSave, validator) {
18325
+ function usePendingChanges(isEnabled, handleSave, handleChange, validator) {
18293
18326
  const saveChanges = function (rowId = undefined) {
18294
18327
  try {
18295
18328
  let _exit = false;
18296
18329
  if (!handleSave) {
18297
- console.warn('Tried to save, but Table has no onSave handler');
18330
+ console.warn('Tried to save, but Table has no onEditingSave handler');
18298
18331
  return Promise.resolve();
18299
18332
  }
18300
18333
  // we save back to pendingChanges, so make a copy of it's state when save was triggered
@@ -18335,7 +18368,7 @@ function usePendingChanges(isEnabled, handleSave, validator) {
18335
18368
  }();
18336
18369
  return _temp2 && _temp2.then ? _temp2.then(_temp3) : _temp3(_temp2); // send new data to the server
18337
18370
  }, function (error) {
18338
- // the onSave handler should throw errors when something fails, e.g. validation, network errors etc
18371
+ // the onEditingSave handler should throw errors when something fails, e.g. validation, network errors etc
18339
18372
  // this code handles those errors and maps them either to row errors or cell specific errors
18340
18373
  let rowError;
18341
18374
  let cellErrors;
@@ -18409,26 +18442,42 @@ function usePendingChanges(isEnabled, handleSave, validator) {
18409
18442
  return Promise.reject(e);
18410
18443
  }
18411
18444
  };
18445
+ const setCellValue = function (cell, change, rowIndex) {
18446
+ try {
18447
+ const changes = {
18448
+ [cell.column.id]: change
18449
+ };
18450
+ setPendingChanges(currentChanges => {
18451
+ const nextChanges = createPendingChangesSetter(currentChanges, cell.row, rowIndex, changes);
18452
+ pendingChangesUpdater.syncCellChanges(nextChanges);
18453
+ return nextChanges;
18454
+ });
18455
+ pendingChangesUpdater.runCellUpdates(changes, cell, rowIndex);
18456
+ return Promise.resolve();
18457
+ } catch (e) {
18458
+ return Promise.reject(e);
18459
+ }
18460
+ };
18412
18461
  const addCreatedRowChangeset = function (row) {
18413
18462
  try {
18414
18463
  const cells = row.getAllCells();
18415
18464
  setPendingChanges(currentChanges => {
18416
18465
  return cells.reduce((changes, cell) => {
18417
18466
  if (cell.getValue()) {
18418
- var _currentChanges$cell$4, _currentChanges$cell$5, _currentChanges$cell$6;
18467
+ var _currentChanges$cell$, _currentChanges$cell$2, _currentChanges$cell$3;
18419
18468
  return {
18420
18469
  ...changes,
18421
18470
  [cell.row.id]: {
18422
18471
  ...changes[cell.row.id],
18423
18472
  [cell.column.id]: cell.getValue(),
18424
18473
  _meta: {
18425
- ...((_currentChanges$cell$4 = currentChanges[cell.row.id]) === null || _currentChanges$cell$4 === void 0 ? void 0 : _currentChanges$cell$4._meta),
18474
+ ...((_currentChanges$cell$ = currentChanges[cell.row.id]) === null || _currentChanges$cell$ === void 0 ? void 0 : _currentChanges$cell$._meta),
18426
18475
  original: cell.row.original,
18427
18476
  moveReason: {
18428
- ...((_currentChanges$cell$5 = currentChanges[cell.row.id]) === null || _currentChanges$cell$5 === void 0 ? void 0 : _currentChanges$cell$5._meta.moveReason)
18477
+ ...((_currentChanges$cell$2 = currentChanges[cell.row.id]) === null || _currentChanges$cell$2 === void 0 ? void 0 : _currentChanges$cell$2._meta.moveReason)
18429
18478
  },
18430
18479
  errors: {
18431
- ...((_currentChanges$cell$6 = currentChanges[cell.row.id]) === null || _currentChanges$cell$6 === void 0 ? void 0 : _currentChanges$cell$6._meta.errors)
18480
+ ...((_currentChanges$cell$3 = currentChanges[cell.row.id]) === null || _currentChanges$cell$3 === void 0 ? void 0 : _currentChanges$cell$3._meta.errors)
18432
18481
  }
18433
18482
  }
18434
18483
  }
@@ -18454,49 +18503,7 @@ function usePendingChanges(isEnabled, handleSave, validator) {
18454
18503
  var _pendingChanges$cell$2, _pendingChanges$cell$3, _pendingChanges$cell$4;
18455
18504
  return (_pendingChanges$cell$2 = pendingChanges[cell.row.id]) === null || _pendingChanges$cell$2 === void 0 ? void 0 : (_pendingChanges$cell$3 = _pendingChanges$cell$2._meta.errors) === null || _pendingChanges$cell$3 === void 0 ? void 0 : (_pendingChanges$cell$4 = _pendingChanges$cell$3.cells) === null || _pendingChanges$cell$4 === void 0 ? void 0 : _pendingChanges$cell$4[cell.column.id];
18456
18505
  }
18457
- const setCellValue = React__default.useCallback(function (cell, change, rowIndex) {
18458
- setPendingChanges(currentChanges => {
18459
- var _currentChanges$cell$, _currentChanges$cell$2, _currentChanges$cell$3;
18460
- const nextChanges = {
18461
- ...currentChanges
18462
- };
18463
- const rowChanges = {
18464
- ...currentChanges[cell.row.id],
18465
- _meta: {
18466
- ...((_currentChanges$cell$ = currentChanges[cell.row.id]) === null || _currentChanges$cell$ === void 0 ? void 0 : _currentChanges$cell$._meta),
18467
- original: cell.row.original,
18468
- moveReason: {
18469
- ...((_currentChanges$cell$2 = currentChanges[cell.row.id]) === null || _currentChanges$cell$2 === void 0 ? void 0 : _currentChanges$cell$2._meta.moveReason)
18470
- },
18471
- errors: {
18472
- ...((_currentChanges$cell$3 = currentChanges[cell.row.id]) === null || _currentChanges$cell$3 === void 0 ? void 0 : _currentChanges$cell$3._meta.errors)
18473
- }
18474
- }
18475
- };
18476
- // update if the change is different to the original (saved) value,
18477
- // otherwise remove any change - no point saving the same value
18478
- if (change !== cell.row.original[cell.column.id]) {
18479
- rowChanges[cell.column.id] = change;
18480
- // determine if the row will move position based on this change, and save why it will move
18481
- const reason = willRowMove(cell, change, rowIndex);
18482
- if (reason) {
18483
- rowChanges._meta.moveReason[cell.column.id] = reason;
18484
- } else {
18485
- delete rowChanges._meta.moveReason[cell.column.id];
18486
- }
18487
- } else {
18488
- delete rowChanges[cell.column.id];
18489
- }
18490
- // set the changes for the row...
18491
- // or delete if there are no changes left, so that we don't store changes with unchanged data
18492
- if (Object.keys(rowChanges).filter(k => k !== '_meta').length) {
18493
- nextChanges[cell.row.id] = rowChanges;
18494
- } else {
18495
- delete nextChanges[cell.row.id];
18496
- }
18497
- return nextChanges;
18498
- });
18499
- }, []);
18506
+ const pendingChangesUpdater = usePendingChangesUpdater(handleChange, setPendingChanges);
18500
18507
  function hasRowErrors(rowId) {
18501
18508
  var _pendingChanges$rowId, _pendingChanges$rowId2, _pendingChanges$rowId3, _pendingChanges$rowId4, _pendingChanges$rowId5;
18502
18509
  if (!isEnabled) {
@@ -18617,6 +18624,87 @@ function useLastFocusedCellIndex() {
18617
18624
  }, []);
18618
18625
  return [lastFocusedCellIndexRef.current, setLastFocusedCellIndex];
18619
18626
  }
18627
+ function usePendingChangesUpdater(handleChange, setPendingChanges) {
18628
+ const updatersRef = React__default.useRef({});
18629
+ const runCellUpdates = React__default.useCallback(lodash.debounce(function (changes, cell, rowIndex) {
18630
+ try {
18631
+ const _temp4 = function () {
18632
+ if (typeof handleChange === 'function') {
18633
+ const previousValues = {
18634
+ ...cell.row.original,
18635
+ ...getChangesetFromChanges(updatersRef.current[cell.row.id])
18636
+ };
18637
+ const nextValues = {
18638
+ ...previousValues,
18639
+ ...changes
18640
+ };
18641
+ return Promise.resolve(handleChange(cell.column.id, changes[cell.column.id], nextValues, previousValues)).then(function (updates) {
18642
+ if (updates && Object.keys(updates).length) {
18643
+ setPendingChanges(currentChanges => createPendingChangesSetter(currentChanges, cell.row, rowIndex, updates));
18644
+ }
18645
+ });
18646
+ }
18647
+ }();
18648
+ return Promise.resolve(_temp4 && _temp4.then ? _temp4.then(function () {}) : void 0);
18649
+ } catch (e) {
18650
+ return Promise.reject(e);
18651
+ }
18652
+ }, 250), []);
18653
+ function syncCellChanges(changes) {
18654
+ updatersRef.current = changes;
18655
+ }
18656
+ return {
18657
+ syncCellChanges,
18658
+ runCellUpdates
18659
+ };
18660
+ }
18661
+ function createPendingChangesSetter(currentChanges, row, rowIndex, changes) {
18662
+ var _currentChanges$row$i, _currentChanges$row$i2, _currentChanges$row$i3;
18663
+ // prepare
18664
+ const nextChanges = {
18665
+ ...currentChanges
18666
+ };
18667
+ const rowChanges = {
18668
+ ...currentChanges[row.id],
18669
+ _meta: {
18670
+ ...((_currentChanges$row$i = currentChanges[row.id]) === null || _currentChanges$row$i === void 0 ? void 0 : _currentChanges$row$i._meta),
18671
+ original: row.original,
18672
+ moveReason: {
18673
+ ...((_currentChanges$row$i2 = currentChanges[row.id]) === null || _currentChanges$row$i2 === void 0 ? void 0 : _currentChanges$row$i2._meta.moveReason)
18674
+ },
18675
+ errors: {
18676
+ ...((_currentChanges$row$i3 = currentChanges[row.id]) === null || _currentChanges$row$i3 === void 0 ? void 0 : _currentChanges$row$i3._meta.errors)
18677
+ }
18678
+ }
18679
+ };
18680
+ // run changes
18681
+ const cells = row._getAllCellsByColumnId();
18682
+ for (const [accessor, change] of Object.entries(changes)) {
18683
+ // update if the change is different to the original (saved) value,
18684
+ // otherwise remove any change - no point saving the same value
18685
+ if (change !== row.original[accessor]) {
18686
+ rowChanges[accessor] = change;
18687
+ // determine if the row will move position based on this change, and save why it will move
18688
+ const reason = willRowMove(cells[accessor], change, rowIndex);
18689
+ if (reason) {
18690
+ rowChanges._meta.moveReason[accessor] = reason;
18691
+ } else {
18692
+ delete rowChanges._meta.moveReason[accessor];
18693
+ }
18694
+ } else {
18695
+ delete rowChanges[accessor];
18696
+ delete rowChanges._meta.moveReason[accessor];
18697
+ }
18698
+ }
18699
+ // set changes
18700
+ // or delete if there are no changes left, so that we don't store changes with unchanged data
18701
+ if (Object.keys(rowChanges).filter(k => k !== '_meta').length) {
18702
+ nextChanges[row.id] = rowChanges;
18703
+ } else {
18704
+ delete nextChanges[row.id];
18705
+ }
18706
+ return nextChanges;
18707
+ }
18620
18708
  function getChangesetFromChanges(changes) {
18621
18709
  // extract the original data from the row changes
18622
18710
  const {
@@ -19102,7 +19190,7 @@ function EditingActionMenu(props) {
19102
19190
  hasErrors,
19103
19191
  onClear: handleClear,
19104
19192
  onExit: handleExit,
19105
- onSave: handleSave,
19193
+ onEditingSave: handleSave,
19106
19194
  isLastRow
19107
19195
  } = props;
19108
19196
  const {
@@ -19240,8 +19328,8 @@ const RENDERERS$1 = {
19240
19328
  cell: Cell$5
19241
19329
  };
19242
19330
  function useTable3(props, ref) {
19243
- const editing = useTableEditing(props.enableEditing, props.onSave, props.validator);
19244
- const creationEnabled = editing.isEnabled && !!props.enableCreation;
19331
+ const editing = useTableEditing(props.enableEditing, props.onEditingSave, props.onEditingChange, props.validator);
19332
+ const creationEnabled = editing.isEnabled && !!props.onEditingCreate;
19245
19333
  const extendedProps = {
19246
19334
  ...props,
19247
19335
  enableRowActions: editing.isEditing ? true : props.enableRowActions,
@@ -19249,7 +19337,7 @@ function useTable3(props, ref) {
19249
19337
  hasChanges: editing.hasChanges(rowId),
19250
19338
  hasErrors: editing.hasRowErrors(rowId),
19251
19339
  onClear: () => editing.resetChanges(rowId),
19252
- onSave: () => editing.saveChanges(rowId),
19340
+ onEditingSave: () => editing.saveChanges(rowId),
19253
19341
  onExit: () => editing.toggleEditing(false),
19254
19342
  isLastRow: !creationEnabled && table.meta.rowActive.rowActiveIndex === table.meta.length - 1
19255
19343
  }))] : props.rowActions
@@ -19399,7 +19487,7 @@ function FilterResetDialog(props) {
19399
19487
 
19400
19488
  function CreateNewRowButton(props) {
19401
19489
  const {
19402
- onCreate,
19490
+ onEditingCreate,
19403
19491
  scrollToIndex,
19404
19492
  table,
19405
19493
  tableMeta
@@ -19418,7 +19506,7 @@ function CreateNewRowButton(props) {
19418
19506
  };
19419
19507
  const handleCreate = function () {
19420
19508
  try {
19421
- if (!onCreate) {
19509
+ if (!onEditingCreate) {
19422
19510
  return Promise.resolve();
19423
19511
  }
19424
19512
  const createdRow = rows.find(row => {
@@ -19429,14 +19517,14 @@ function CreateNewRowButton(props) {
19429
19517
  if (createdRow) {
19430
19518
  return Promise.resolve(tableMeta.editing.saveChanges()).then(function () {
19431
19519
  if (!tableMeta.editing.hasRowErrors(createdRow.id)) {
19432
- const rowFinder = onCreate();
19520
+ const rowFinder = onEditingCreate();
19433
19521
  setRowCreated({
19434
19522
  rowFinder
19435
19523
  });
19436
19524
  }
19437
19525
  });
19438
19526
  } else {
19439
- const rowFinder = onCreate();
19527
+ const rowFinder = onEditingCreate();
19440
19528
  setRowCreated({
19441
19529
  rowFinder
19442
19530
  });
@@ -19536,7 +19624,7 @@ const BaseTable3 = /*#__PURE__*/fixedForwardRef(function BaseTable3(props, ref)
19536
19624
  enableHorizontalArrowKeyNavigation: table3.meta.editing.isEditing
19537
19625
  };
19538
19626
  const hasValidationErrors = table3.meta.editing.hasErrors(table3.instance, table3.ref);
19539
- const showCreateRowButton = table3.meta.editing.isEnabled && props.enableCreation && props.onCreate;
19627
+ const showCreateRowButton = table3.meta.editing.isEnabled && props.onEditingCreate;
19540
19628
  return /*#__PURE__*/React__default.createElement(Table, null, /*#__PURE__*/React__default.createElement(Table.Toolbar, {
19541
19629
  table: table3
19542
19630
  }, table3.meta.editing.isEnabled ? ( /*#__PURE__*/React__default.createElement(Editing, {
@@ -19553,7 +19641,7 @@ const BaseTable3 = /*#__PURE__*/fixedForwardRef(function BaseTable3(props, ref)
19553
19641
  }), showCreateRowButton && ( /*#__PURE__*/React__default.createElement(CreateNewRowButton, {
19554
19642
  table: table3.instance,
19555
19643
  tableMeta: table3.meta,
19556
- onCreate: props.onCreate,
19644
+ onEditingCreate: props.onEditingCreate,
19557
19645
  scrollToIndex: table3.renderer.scrollToIndex
19558
19646
  }))));
19559
19647
  });