@economic/taco 2.45.0-alpha.20 → 2.45.0-alpha.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. package/dist/components/Banner/util.d.ts +1 -0
  2. package/dist/components/Menu/components/Content.d.ts +1 -1
  3. package/dist/components/Menu/components/SubMenu.d.ts +1 -1
  4. package/dist/components/Pagination/PageNumbers.d.ts +1 -0
  5. package/dist/components/Table3/components/Columns/Cell/EditingDisplayCell.d.ts +1 -0
  6. package/dist/esm/packages/taco/src/components/Backdrop/Backdrop.js +1 -1
  7. package/dist/esm/packages/taco/src/components/Backdrop/Backdrop.js.map +1 -1
  8. package/dist/esm/packages/taco/src/components/Table3/Table3.js +8 -1
  9. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  10. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js +7 -15
  11. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js.map +1 -1
  12. package/dist/esm/packages/taco/src/components/Table3/useTable3.js +1 -1
  13. package/dist/esm/packages/taco/src/components/Table3/useTable3.js.map +1 -1
  14. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Actions.js +2 -1
  15. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Actions.js.map +1 -1
  16. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.js +4 -0
  17. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.js.map +1 -1
  18. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyleGrid.js +1 -1
  19. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyleGrid.js.map +1 -1
  20. package/dist/esm/packages/taco/src/primitives/Table/types.js +2 -0
  21. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  22. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActions.js +11 -0
  23. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActions.js.map +1 -1
  24. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/filtering.js +6 -0
  25. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/filtering.js.map +1 -1
  26. package/dist/primitives/Table/types.d.ts +6 -2
  27. package/dist/primitives/Table/useTableManager/features/useTableRowActions.d.ts +2 -0
  28. package/dist/primitives/Table/useTableManager/types.d.ts +1 -0
  29. package/dist/taco.cjs.development.js +41 -20
  30. package/dist/taco.cjs.development.js.map +1 -1
  31. package/dist/taco.cjs.production.min.js +1 -1
  32. package/dist/taco.cjs.production.min.js.map +1 -1
  33. package/package.json +9 -9
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../../../../../../../src/primitives/Table/types.ts"],"sourcesContent":["import {\n ColumnFilter as ReactTableColumnFilter,\n ColumnFiltersState as ReactTableColumnFilterState,\n ColumnOrderState as ReactTableColumnOrderState,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSort as ReactTableColumnSort,\n ColumnSizingState as ReactTableColumnSizingState,\n VisibilityState as ReactTableColumnVisibilityState,\n SortingState as ReactTableSortingState,\n BuiltInAggregationFn as ReactTableBuiltInAggregationFn,\n BuiltInSortingFn as ReactTableBuiltInSortingFn,\n} from '@tanstack/react-table';\nimport { FontSize, FontSizes, StringWithAutocompleteOptions, ValueOf } from '../../types';\nimport { MenuItemProps } from '../../components/Menu/components/Item';\n\nexport type TableRef = HTMLTableElement & {\n instance: {\n resetFiltering: () => void;\n resetRowExpansion: () => void;\n resetRowSelection: () => void;\n resetSorting: () => void;\n };\n};\n\n// filtering\nexport enum TableFilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsEmpty,\n IsNotEmpty,\n IsLessThanOrEqualTo,\n IsGreaterThanOrEqualTo,\n HasAnyOf,\n HasAllOf,\n HasNoneOf,\n}\nexport type TableFilterValue = {\n comparator: TableFilterComparator;\n value: any;\n};\nexport type TableFilter = {\n id: string;\n value: TableFilterValue;\n};\n\n// columns\nexport type TableColumnAlignment = 'left' | 'center' | 'right';\nexport type TableColumnClassNameHandler<TType = unknown> = string | ((row: TType) => string | undefined);\nexport type TableColumnDataType =\n // base\n | 'text'\n | 'number'\n | 'datetime'\n | 'boolean'\n // advanced\n | 'amount';\nexport type TableColumnFilter = ReactTableColumnFilter;\nexport type TableColumnMenu = ((columnId: string) => React.ReactNode | null)[];\nexport type TableColumnRenderer<TType, TValue> = (value: TValue, row: TType) => JSX.Element | string | number | null;\nexport type TableColumnRendererAggregate<TType, TValue> = (value: TValue, row: TType) => JSX.Element | string | number | null;\nexport type TableColumnRendererControl<TType = unknown> =\n | ((props: TableColumnRendererControlProps, row?: TType, filterState?: TableFilter[]) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch'\n | 'checkbox'\n | 'textarea';\nexport type TableColumnRendererControlProps = {\n className?: string;\n disabled?: boolean;\n fontSize?: FontSize;\n invalid?: boolean;\n onBlur?: (value: any) => void;\n onFocus?: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.RefObject<HTMLElement> | ((instance: HTMLElement | null | undefined) => void);\n setValue: (value: any) => void;\n value: any;\n};\nexport type TableColumnRendererHeader = string;\nexport type TableColumnRendererFooter<TType> = (rows: TType[]) => JSX.Element | string | number | null;\nexport type TableColumnSort = ReactTableColumnSort;\nexport type TableColumnSortDirection = 'asc' | 'desc';\nexport type TableColumnSortFn<TType = unknown> =\n | ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1)\n | ReactTableBuiltInSortingFn\n | 'auto';\nexport type TableColumnWidth = number | 'grow';\n\n// rows\nexport type TableRowActionRenderer<TType = unknown> = (row: TType, internalRowId: string) => JSX.Element | null;\nexport type TableRowActionGroupRenderer<TType = unknown> = (rows: TType[]) => JSX.Element | null;\nexport type TableRowClickHandler<TType = unknown> = (row: TType) => void;\nexport type TableRowDragHandler<TType = unknown> = (\n rows: TType[],\n showPlaceholder: (string: any) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type TableRowDropHandler<TType = unknown> = (event: React.DragEvent, row: TType) => void;\nexport type TableRowGotoHandler = (\n column: string,\n query: string,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n search: string | undefined\n) => Promise<number>;\nexport type TableRowHeight = 'short' | 'medium' | 'tall' | 'extra-tall';\nexport type TableRowSelectHandler<TType = unknown> = (rows: TType[], ids: string[]) => void;\nexport type TableRowWithMetaData<TType = unknown> = TType & {\n _meta?: {\n layout?: 'heading' | 'summary' | 'item';\n };\n};\n\n// shortcuts\nexport type TableShortcutHandlerFn<TType = unknown> = (row: TType) => void;\nexport type TableShortcutHandlerObject<TType = unknown> = {\n handler: TableShortcutHandlerFn<TType>;\n meta?: boolean;\n shift?: boolean;\n};\n\n// table\nexport type TableSortHandler = (sorting: TableColumnSort[]) => Promise<void>;\nexport type TableFilterHandler = (filters: TableColumnFilter[], hiddenColumns: string[]) => Promise<void>;\nexport type TableSearchHandler = (search: string | undefined, hiddenColumns: string[]) => Promise<void>;\nexport type TableFontSize = keyof typeof FontSizes;\nexport type TablePreset = 'complex' | 'list' | 'simple';\nexport type TableRowExpansionRenderer<TType = unknown> = (row: TType) => (() => JSX.Element) | null;\nexport type TableScrollToIndexHandler = (index: number, options?: { align: 'start' | 'center' | 'end' | 'auto' }) => void;\nexport type TableServerLoadPageHandler = (\n pageIndex: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\nexport type TableServerLoadAllHandler = (\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\nexport type TableSettingsHandler = (settings: TableSettings) => void | Promise<void>;\nexport type TableShortcuts<TType = unknown> = Record<string, TableShortcutHandlerFn<TType> | TableShortcutHandlerObject<TType>>;\nexport type TableCustomSettingsRenderer = (props: TableSettings) => React.ReactElement<MenuItemProps>[];\nexport type TableEmptyStateReason = 'empty' | 'filtering' | 'searching';\nexport type TableEmptyStateRenderer = (props: { reason: TableEmptyStateReason }) => JSX.Element | null;\n\n// settings\nexport type TableSettings = {\n columnFilters?: ReactTableColumnFilterState;\n columnOrder?: ReactTableColumnOrderState;\n columnPinning?: ReactTableColumnPinningState;\n columnSizing?: ReactTableColumnSizingState;\n columnVisibility?: ReactTableColumnVisibilityState;\n excludeUnmatchedRecordsInSearch?: boolean;\n fontSize?: TableFontSize;\n rowHeight?: TableRowHeight;\n searchQuery?: string;\n sorting?: ReactTableSortingState;\n};\nexport type TableEnableSettingsOptions = {\n columnOrder: boolean;\n columnPinning: boolean;\n columnSizing: boolean;\n columnVisibility: boolean;\n excludeUnmatchedRecordsInSearch: boolean;\n fontSize: boolean;\n grouping: boolean;\n rowHeight: boolean;\n sorting: boolean;\n};\n\n// props\nexport type TableConditionalRowProp<TType = unknown> = boolean | ((row: TType) => boolean);\nexport type TableFeatureProps<TType = unknown> = {\n // react-table built-in\n enableFiltering?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableColumnFreezing?: boolean;\n enableColumnHiding?: boolean;\n enableColumnResizing?: boolean;\n enableRowExpansion?: boolean;\n enableRowExpansionAll?: boolean;\n enableRowSelection?: TableConditionalRowProp<TType>;\n\n // custom -- common between all table types\n enableColumnOrdering?: boolean;\n enableFontSize?: boolean;\n enableFooter?: boolean;\n enablePrinting?: boolean;\n enableRowActions?: boolean;\n enableRowActive?: boolean;\n enableRowClick?: TableConditionalRowProp<TType>;\n enableRowDrag?: boolean;\n enableRowDrop?: boolean;\n enableRowGoto?: boolean;\n enableRowHeight?: boolean;\n enableSaveSettings?: boolean | Partial<TableEnableSettingsOptions>;\n};\n\nexport type TableChild = JSX.Element | boolean | null | undefined;\n\nexport type TableCommonProps<TType = unknown> = TableFeatureProps<TType> & {\n children: TableChild | TableChild[];\n data: TType[];\n id: string;\n\n // misc\n customSettings?: TableCustomSettingsRenderer;\n defaultColumnFreezingIndex?: number;\n defaultRowActiveIndex?: number;\n defaultRowGroupColumnId?: keyof TType;\n defaultSettings?: TableSettings;\n emptyState?: TableEmptyStateRenderer;\n preset?: TablePreset;\n rowActions?: TableRowActionRenderer<TType>[];\n rowActionsForGroup?: TableRowActionGroupRenderer<TType>[];\n rowActionsLength?: number;\n rowExpansionRenderer?: TableRowExpansionRenderer<TType>;\n rowIdentityAccessor?: keyof TType;\n shortcuts?: TableShortcuts<TType>;\n toolbarLeft?: JSX.Element;\n toolbarRight?: JSX.Element;\n toolbarPanel?: JSX.Element;\n\n // handlers\n onRowClick?: TableRowClickHandler<TType>;\n onRowDrag?: TableRowDragHandler<TType>;\n onRowDrop?: TableRowDropHandler<TType>;\n onRowGoto?: TableRowGotoHandler;\n onRowSelect?: TableRowSelectHandler<TType>;\n\n // state change handlers\n onChangeFilter?: TableFilterHandler;\n onChangeSearch?: TableSearchHandler;\n onChangeSettings?: TableSettingsHandler;\n onChangeSort?: TableSortHandler;\n};\n\nexport interface TableClientProps<TType = unknown> extends TableCommonProps<TType> {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n pages?: never;\n\n // experimental\n _experimentalDataLoader2?: never;\n}\n\nexport interface TableServerProps<TType = unknown> extends TableCommonProps<TType> {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n pages?: number[];\n\n // experimental\n _experimentalDataLoader2?: boolean;\n}\n\nexport type TableProps<TType = unknown> = TableClientProps<TType> | TableServerProps<TType>;\n\nexport type TableColumnProps<TType = unknown> = ValueOf<{\n [Key in keyof TType]: {\n accessor?: Key;\n id: StringWithAutocompleteOptions<Key>;\n // renderers\n renderer?: TableColumnRenderer<TType, TType[Key]>;\n /** Renderer to use if the cell is an aggregate cell and part of a grouped row */\n aggregate?: TableColumnRendererAggregate<TType, TType[Key]>;\n control?: TableColumnRendererControl<TType>;\n footer?: TableColumnRendererFooter<TType>;\n header: TableColumnRendererHeader;\n // options\n /** Aggregation function to be used when the column is part of a grouped row */\n aggregationFn?: 'auto' | ReactTableBuiltInAggregationFn;\n align?: TableColumnAlignment;\n className?: TableColumnClassNameHandler<TType>;\n dataType?: TableColumnDataType;\n defaultHidden?: boolean;\n defaultWidth?: TableColumnWidth;\n enableEditing?: boolean;\n enableFiltering?: boolean;\n enableGrouping?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableResizing?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableTruncate?: boolean;\n filters?: TableFilterComparator[];\n headerClassName?: string;\n menu?: TableColumnMenu;\n minWidth?: number;\n sort?: TableColumnSortDirection;\n sortFn?: TableColumnSortFn<TType>;\n tooltip?: string;\n };\n}>;\n\nexport type TableGroupProps = {\n children: (JSX.Element | boolean | null | undefined)[];\n header: string;\n id: string;\n};\n\nexport type TableTexts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n menu: {\n editFilter: string;\n filter: string;\n freezeFirstColumn: string;\n freezeUptoColumn: string;\n gotoRow: string;\n hideColumn: string;\n unfreezeColumns: string;\n sorting: string;\n sortingOrder: {\n ascending: string;\n descending: string;\n unsorted: string;\n };\n };\n resize: {\n tooltip: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n };\n columnSettings: {\n button: string;\n noResults: string;\n search: string;\n tooltip: string;\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n cancel: string;\n clear: string;\n apply: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isEmpty: string;\n isNotEmpty: string;\n isBefore: string;\n isAfter: string;\n isLessThanOrEqualTo: string;\n isGreaterThanOrEqualTo: string;\n isOnOrBefore: string;\n isOnOrAfter: string;\n hasAnyOf: string;\n hasAllOf: string;\n hasNoneOf: string;\n };\n conditions: {\n and: string;\n where: string;\n };\n emptyFilter: {\n condition: string;\n value: string;\n };\n hiddenColumn: string;\n hiddenGroupedColumn: string;\n tooltip: string;\n total: string;\n };\n fontSize: {\n tooltip: string;\n sizes: {\n small: string;\n medium: string;\n large: string;\n };\n };\n footer: {\n summary: {\n count: string;\n records: string;\n selected: string;\n };\n };\n print: {\n error: string;\n loading: string;\n tooltip: string;\n warningDialog: {\n title: string;\n description: string;\n checkboxVisibilityLabel: string;\n cancelButtonText: string;\n printButtonText: string;\n };\n settingsDialog: {\n title: string;\n size: string;\n sizeA5: string;\n sizeA4: string;\n sizeA3: string;\n sizeLetter: string;\n sizeLegal: string;\n orientation: string;\n orientationLandscape: string;\n orientationPortrait: string;\n rows: string;\n rowsAll: string;\n rowsSelected: string;\n layout: string;\n layoutSplitGroups: string;\n };\n };\n rowHeight: {\n tooltip: string;\n sizes: {\n short: string;\n medium: string;\n tall: string;\n extraTall: string;\n };\n };\n search: {\n excludeUnmatchedResults: string;\n placeholder: string;\n };\n otherOptions: {\n tooltip: string;\n };\n};\n"],"names":["TableFilterComparator"],"mappings":"AAwBA;IACYA;AAAZ,WAAYA,qBAAqB;EAC7BA,yEAAQ;EACRA,qFAAc;EACdA,2EAAS;EACTA,iFAAY;EACZA,mFAAa;EACbA,6EAAU;EACVA,2EAAS;EACTA,uEAAO;EACPA,6EAAU;EACVA,+FAAmB;EACnBA,sGAAsB;EACtBA,0EAAQ;EACRA,0EAAQ;EACRA,4EAAS;AACb,CAAC,EAfWA,qBAAqB,KAArBA,qBAAqB;;;;"}
1
+ {"version":3,"file":"types.js","sources":["../../../../../../../src/primitives/Table/types.ts"],"sourcesContent":["import {\n ColumnFilter as ReactTableColumnFilter,\n ColumnFiltersState as ReactTableColumnFilterState,\n ColumnOrderState as ReactTableColumnOrderState,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSort as ReactTableColumnSort,\n ColumnSizingState as ReactTableColumnSizingState,\n VisibilityState as ReactTableColumnVisibilityState,\n SortingState as ReactTableSortingState,\n BuiltInAggregationFn as ReactTableBuiltInAggregationFn,\n BuiltInSortingFn as ReactTableBuiltInSortingFn,\n} from '@tanstack/react-table';\nimport { FontSize, FontSizes, StringWithAutocompleteOptions, ValueOf } from '../../types';\nimport { MenuItemProps } from '../../components/Menu/components/Item';\n\nexport type TableRef = HTMLTableElement & {\n instance: {\n resetFiltering: () => void;\n resetRowExpansion: () => void;\n resetRowSelection: () => void;\n resetSorting: () => void;\n };\n};\n\n// filtering\nexport enum TableFilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsEmpty,\n IsNotEmpty,\n IsLessThanOrEqualTo,\n IsGreaterThanOrEqualTo,\n HasAnyOf,\n HasAllOf,\n HasNoneOf,\n IsOneOf,\n IsNoneOf,\n}\nexport type TableFilterValue = {\n comparator: TableFilterComparator;\n value: any;\n};\nexport type TableFilter = {\n id: string;\n value: TableFilterValue;\n};\n\n// columns\nexport type TableColumnAlignment = 'left' | 'center' | 'right';\nexport type TableColumnClassNameHandler<TType = unknown> = string | ((row: TType) => string | undefined);\nexport type TableColumnDataType =\n // base\n | 'text'\n | 'number'\n | 'datetime'\n | 'boolean'\n // advanced\n | 'amount';\nexport type TableColumnFilter = ReactTableColumnFilter;\nexport type TableColumnMenu = ((columnId: string) => React.ReactNode | null)[];\nexport type TableColumnRenderer<TType, TValue> = (value: TValue, row: TType) => JSX.Element | string | number | null;\nexport type TableColumnRendererAggregate<TType, TValue> = (value: TValue, row: TType) => JSX.Element | string | number | null;\nexport type TableColumnRendererControl<TType = unknown> =\n | ((props: TableColumnRendererControlProps, row?: TType, filterState?: TableFilter[]) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch'\n | 'checkbox'\n | 'textarea';\nexport type TableColumnRendererControlProps = {\n className?: string;\n disabled?: boolean;\n fontSize?: FontSize;\n invalid?: boolean;\n onBlur?: (value: any) => void;\n onFocus?: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.RefObject<HTMLElement> | ((instance: HTMLElement | null | undefined) => void);\n setValue: (value: any) => void;\n value: any;\n};\nexport type TableColumnRendererHeader = string;\nexport type TableColumnRendererFooter<TType> = (rows: TType[]) => JSX.Element | string | number | null;\nexport type TableColumnSort = ReactTableColumnSort;\nexport type TableColumnSortDirection = 'asc' | 'desc';\nexport type TableColumnSortFn<TType = unknown> =\n | ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1)\n | ReactTableBuiltInSortingFn\n | 'auto';\nexport type TableColumnWidth = number | 'grow';\n\n// rows\nexport type TableRowActionRenderer<TType = unknown> = (\n row: TType,\n internalRowId: string,\n cleanup: (rowId: string) => void\n) => JSX.Element | null;\nexport type TableRowActionGroupRenderer<TType = unknown> = (rows: TType[]) => JSX.Element | null;\nexport type TableRowClickHandler<TType = unknown> = (row: TType) => void;\nexport type TableRowDragHandler<TType = unknown> = (\n rows: TType[],\n showPlaceholder: (string: any) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type TableRowDropHandler<TType = unknown> = (event: React.DragEvent, row: TType) => void;\nexport type TableRowGotoHandler = (\n column: string,\n query: string,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n search: string | undefined\n) => Promise<number>;\nexport type TableRowHeight = 'short' | 'medium' | 'tall' | 'extra-tall';\nexport type TableRowSelectHandler<TType = unknown> = (rows: TType[], ids: string[]) => void;\nexport type TableRowWithMetaData<TType = unknown> = TType & {\n _meta?: {\n layout?: 'heading' | 'summary' | 'item';\n };\n};\n\n// shortcuts\nexport type TableShortcutHandlerFn<TType = unknown> = (row: TType) => void;\nexport type TableShortcutHandlerObject<TType = unknown> = {\n handler: TableShortcutHandlerFn<TType>;\n meta?: boolean;\n shift?: boolean;\n};\n\n// table\nexport type TableSortHandler = (sorting: TableColumnSort[]) => Promise<void>;\nexport type TableFilterHandler = (filters: TableColumnFilter[], hiddenColumns: string[]) => Promise<void>;\nexport type TableSearchHandler = (search: string | undefined, hiddenColumns: string[]) => Promise<void>;\nexport type TableFontSize = keyof typeof FontSizes;\nexport type TablePreset = 'complex' | 'list' | 'simple';\nexport type TableRowExpansionRenderer<TType = unknown> = (row: TType) => (() => JSX.Element) | null;\nexport type TableScrollToIndexHandler = (index: number, options?: { align: 'start' | 'center' | 'end' | 'auto' }) => void;\nexport type TableServerLoadPageHandler = (\n pageIndex: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\nexport type TableServerLoadAllHandler = (\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n hiddenColumns: string[],\n search: string | undefined\n) => Promise<void>;\nexport type TableSettingsHandler = (settings: TableSettings) => void | Promise<void>;\nexport type TableShortcuts<TType = unknown> = Record<string, TableShortcutHandlerFn<TType> | TableShortcutHandlerObject<TType>>;\nexport type TableCustomSettingsRenderer = (props: TableSettings) => React.ReactElement<MenuItemProps>[];\nexport type TableEmptyStateReason = 'empty' | 'filtering' | 'searching';\nexport type TableEmptyStateRenderer = (props: { reason: TableEmptyStateReason }) => JSX.Element | null;\n\n// settings\nexport type TableSettings = {\n columnFilters?: ReactTableColumnFilterState;\n columnOrder?: ReactTableColumnOrderState;\n columnPinning?: ReactTableColumnPinningState;\n columnSizing?: ReactTableColumnSizingState;\n columnVisibility?: ReactTableColumnVisibilityState;\n excludeUnmatchedRecordsInSearch?: boolean;\n fontSize?: TableFontSize;\n rowHeight?: TableRowHeight;\n searchQuery?: string;\n sorting?: ReactTableSortingState;\n};\nexport type TableEnableSettingsOptions = {\n columnOrder: boolean;\n columnPinning: boolean;\n columnSizing: boolean;\n columnVisibility: boolean;\n excludeUnmatchedRecordsInSearch: boolean;\n fontSize: boolean;\n grouping: boolean;\n rowHeight: boolean;\n sorting: boolean;\n};\n\n// props\nexport type TableConditionalRowProp<TType = unknown> = boolean | ((row: TType) => boolean);\nexport type TableFeatureProps<TType = unknown> = {\n // react-table built-in\n enableFiltering?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableColumnFreezing?: boolean;\n enableColumnHiding?: boolean;\n enableColumnResizing?: boolean;\n enableRowExpansion?: boolean;\n enableRowExpansionAll?: boolean;\n enableRowSelection?: TableConditionalRowProp<TType>;\n\n // custom -- common between all table types\n enableColumnOrdering?: boolean;\n enableFontSize?: boolean;\n enableFooter?: boolean;\n enablePrinting?: boolean;\n enableRowActions?: boolean;\n enableRowActive?: boolean;\n enableRowClick?: TableConditionalRowProp<TType>;\n enableRowDrag?: boolean;\n enableRowDrop?: boolean;\n enableRowGoto?: boolean;\n enableRowHeight?: boolean;\n enableSaveSettings?: boolean | Partial<TableEnableSettingsOptions>;\n};\n\nexport type TableChild = JSX.Element | boolean | null | undefined;\n\nexport type TableCommonProps<TType = unknown> = TableFeatureProps<TType> & {\n children: TableChild | TableChild[];\n data: TType[];\n id: string;\n\n // misc\n customSettings?: TableCustomSettingsRenderer;\n defaultColumnFreezingIndex?: number;\n defaultRowActiveIndex?: number;\n defaultRowGroupColumnId?: keyof TType;\n defaultSettings?: TableSettings;\n emptyState?: TableEmptyStateRenderer;\n preset?: TablePreset;\n rowActions?: TableRowActionRenderer<TType>[];\n rowActionsForGroup?: TableRowActionGroupRenderer<TType>[];\n rowActionsLength?: number;\n rowExpansionRenderer?: TableRowExpansionRenderer<TType>;\n rowIdentityAccessor?: keyof TType;\n shortcuts?: TableShortcuts<TType>;\n toolbarLeft?: JSX.Element;\n toolbarRight?: JSX.Element;\n toolbarPanel?: JSX.Element;\n\n // handlers\n onRowClick?: TableRowClickHandler<TType>;\n onRowDrag?: TableRowDragHandler<TType>;\n onRowDrop?: TableRowDropHandler<TType>;\n onRowGoto?: TableRowGotoHandler;\n onRowSelect?: TableRowSelectHandler<TType>;\n\n // state change handlers\n onChangeFilter?: TableFilterHandler;\n onChangeSearch?: TableSearchHandler;\n onChangeSettings?: TableSettingsHandler;\n onChangeSort?: TableSortHandler;\n};\n\nexport interface TableClientProps<TType = unknown> extends TableCommonProps<TType> {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n pages?: never;\n\n // experimental\n _experimentalDataLoader2?: never;\n}\n\nexport interface TableServerProps<TType = unknown> extends TableCommonProps<TType> {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n pages?: number[];\n\n // experimental\n _experimentalDataLoader2?: boolean;\n}\n\nexport type TableProps<TType = unknown> = TableClientProps<TType> | TableServerProps<TType>;\n\nexport type TableColumnProps<TType = unknown> = ValueOf<{\n [Key in keyof TType]: {\n accessor?: Key;\n id: StringWithAutocompleteOptions<Key>;\n // renderers\n renderer?: TableColumnRenderer<TType, TType[Key]>;\n /** Renderer to use if the cell is an aggregate cell and part of a grouped row */\n aggregate?: TableColumnRendererAggregate<TType, TType[Key]>;\n control?: TableColumnRendererControl<TType>;\n footer?: TableColumnRendererFooter<TType>;\n header: TableColumnRendererHeader;\n // options\n /** Aggregation function to be used when the column is part of a grouped row */\n aggregationFn?: 'auto' | ReactTableBuiltInAggregationFn;\n align?: TableColumnAlignment;\n className?: TableColumnClassNameHandler<TType>;\n dataType?: TableColumnDataType;\n defaultHidden?: boolean;\n defaultWidth?: TableColumnWidth;\n enableEditing?: boolean;\n enableFiltering?: boolean;\n enableGrouping?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableResizing?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableTruncate?: boolean;\n filters?: TableFilterComparator[];\n headerClassName?: string;\n menu?: TableColumnMenu;\n minWidth?: number;\n sort?: TableColumnSortDirection;\n sortFn?: TableColumnSortFn<TType>;\n tooltip?: string;\n };\n}>;\n\nexport type TableGroupProps = {\n children: (JSX.Element | boolean | null | undefined)[];\n header: string;\n id: string;\n};\n\nexport type TableTexts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n menu: {\n editFilter: string;\n filter: string;\n freezeFirstColumn: string;\n freezeUptoColumn: string;\n gotoRow: string;\n hideColumn: string;\n unfreezeColumns: string;\n sorting: string;\n sortingOrder: {\n ascending: string;\n descending: string;\n unsorted: string;\n };\n };\n resize: {\n tooltip: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n };\n columnSettings: {\n button: string;\n noResults: string;\n search: string;\n tooltip: string;\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n cancel: string;\n clear: string;\n apply: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isOneOf: string;\n isNoneOf: string;\n isEmpty: string;\n isNotEmpty: string;\n isBefore: string;\n isAfter: string;\n isLessThanOrEqualTo: string;\n isGreaterThanOrEqualTo: string;\n isOnOrBefore: string;\n isOnOrAfter: string;\n hasAnyOf: string;\n hasAllOf: string;\n hasNoneOf: string;\n };\n conditions: {\n and: string;\n where: string;\n };\n emptyFilter: {\n condition: string;\n value: string;\n };\n hiddenColumn: string;\n hiddenGroupedColumn: string;\n tooltip: string;\n total: string;\n };\n fontSize: {\n tooltip: string;\n sizes: {\n small: string;\n medium: string;\n large: string;\n };\n };\n footer: {\n summary: {\n count: string;\n records: string;\n selected: string;\n };\n };\n print: {\n error: string;\n loading: string;\n tooltip: string;\n warningDialog: {\n title: string;\n description: string;\n checkboxVisibilityLabel: string;\n cancelButtonText: string;\n printButtonText: string;\n };\n settingsDialog: {\n title: string;\n size: string;\n sizeA5: string;\n sizeA4: string;\n sizeA3: string;\n sizeLetter: string;\n sizeLegal: string;\n orientation: string;\n orientationLandscape: string;\n orientationPortrait: string;\n rows: string;\n rowsAll: string;\n rowsSelected: string;\n layout: string;\n layoutSplitGroups: string;\n };\n };\n rowHeight: {\n tooltip: string;\n sizes: {\n short: string;\n medium: string;\n tall: string;\n extraTall: string;\n };\n };\n search: {\n excludeUnmatchedResults: string;\n placeholder: string;\n };\n otherOptions: {\n tooltip: string;\n };\n};\n"],"names":["TableFilterComparator"],"mappings":"AAwBA;IACYA;AAAZ,WAAYA,qBAAqB;EAC7BA,yEAAQ;EACRA,qFAAc;EACdA,2EAAS;EACTA,iFAAY;EACZA,mFAAa;EACbA,6EAAU;EACVA,2EAAS;EACTA,uEAAO;EACPA,6EAAU;EACVA,+FAAmB;EACnBA,sGAAsB;EACtBA,0EAAQ;EACRA,0EAAQ;EACRA,4EAAS;EACTA,wEAAO;EACPA,0EAAQ;AACZ,CAAC,EAjBWA,qBAAqB,KAArBA,qBAAqB;;;;"}
@@ -1,7 +1,18 @@
1
+ import React__default from 'react';
2
+
1
3
  const DEFAULT_ROW_ACTIONS_LENGTH = 4;
2
4
  function useTableRowActions(isEnabled = false, rowActions, rowActionsLength = DEFAULT_ROW_ACTIONS_LENGTH) {
5
+ const [handlers, setHandlers] = React__default.useState({});
6
+ const registerHandler = (key, handler) => {
7
+ return setHandlers(h => ({
8
+ ...h,
9
+ [key]: handler
10
+ }));
11
+ };
3
12
  return {
13
+ handlers,
4
14
  isEnabled,
15
+ registerHandler,
5
16
  rowActions: isEnabled ? rowActions : undefined,
6
17
  rowActionsLength: rowActions ? Math.min(rowActions.length, rowActionsLength) : 0
7
18
  };
@@ -1 +1 @@
1
- {"version":3,"file":"useTableRowActions.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/features/useTableRowActions.ts"],"sourcesContent":["import { TableRowActionRenderer } from '../../types';\n\nconst DEFAULT_ROW_ACTIONS_LENGTH = 4;\n\nexport function useTableRowActions<TType = unknown>(\n isEnabled = false,\n rowActions?: TableRowActionRenderer<TType>[],\n rowActionsLength = DEFAULT_ROW_ACTIONS_LENGTH\n) {\n return {\n isEnabled,\n rowActions: isEnabled ? rowActions : undefined,\n rowActionsLength: rowActions ? Math.min(rowActions.length, rowActionsLength) : 0,\n };\n}\n"],"names":["DEFAULT_ROW_ACTIONS_LENGTH","useTableRowActions","isEnabled","rowActions","rowActionsLength","undefined","Math","min","length"],"mappings":"AAEA,MAAMA,0BAA0B,GAAG,CAAC;SAEpBC,kBAAkBA,CAC9BC,SAAS,GAAG,KAAK,EACjBC,UAA4C,EAC5CC,gBAAgB,GAAGJ,0BAA0B;EAE7C,OAAO;IACHE,SAAS;IACTC,UAAU,EAAED,SAAS,GAAGC,UAAU,GAAGE,SAAS;IAC9CD,gBAAgB,EAAED,UAAU,GAAGG,IAAI,CAACC,GAAG,CAACJ,UAAU,CAACK,MAAM,EAAEJ,gBAAgB,CAAC,GAAG;GAClF;AACL;;;;"}
1
+ {"version":3,"file":"useTableRowActions.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/features/useTableRowActions.ts"],"sourcesContent":["import React from 'react';\nimport { TableRowActionRenderer } from '../../types';\n\nconst DEFAULT_ROW_ACTIONS_LENGTH = 4;\n\nexport function useTableRowActions<TType = unknown>(\n isEnabled = false,\n rowActions?: TableRowActionRenderer<TType>[],\n rowActionsLength = DEFAULT_ROW_ACTIONS_LENGTH\n) {\n const [handlers, setHandlers] = React.useState({});\n\n const registerHandler = (key: string, handler: Function) => {\n return setHandlers(h => ({\n ...h,\n [key]: handler,\n }));\n };\n\n return {\n handlers,\n isEnabled,\n registerHandler,\n rowActions: isEnabled ? rowActions : undefined,\n rowActionsLength: rowActions ? Math.min(rowActions.length, rowActionsLength) : 0,\n };\n}\n"],"names":["DEFAULT_ROW_ACTIONS_LENGTH","useTableRowActions","isEnabled","rowActions","rowActionsLength","handlers","setHandlers","React","useState","registerHandler","key","handler","h","undefined","Math","min","length"],"mappings":";;AAGA,MAAMA,0BAA0B,GAAG,CAAC;SAEpBC,kBAAkBA,CAC9BC,SAAS,GAAG,KAAK,EACjBC,UAA4C,EAC5CC,gBAAgB,GAAGJ,0BAA0B;EAE7C,MAAM,CAACK,QAAQ,EAAEC,WAAW,CAAC,GAAGC,cAAK,CAACC,QAAQ,CAAC,EAAE,CAAC;EAElD,MAAMC,eAAe,GAAGA,CAACC,GAAW,EAAEC,OAAiB;IACnD,OAAOL,WAAW,CAACM,CAAC,KAAK;MACrB,GAAGA,CAAC;MACJ,CAACF,GAAG,GAAGC;KACV,CAAC,CAAC;GACN;EAED,OAAO;IACHN,QAAQ;IACRH,SAAS;IACTO,eAAe;IACfN,UAAU,EAAED,SAAS,GAAGC,UAAU,GAAGU,SAAS;IAC9CT,gBAAgB,EAAED,UAAU,GAAGW,IAAI,CAACC,GAAG,CAACZ,UAAU,CAACa,MAAM,EAAEZ,gBAAgB,CAAC,GAAG;GAClF;AACL;;;;"}
@@ -105,6 +105,12 @@ function columnFilterFn(value, filter) {
105
105
  return Array.isArray(filter.value) && Array.isArray(value) ? filter.value.every(item => value.includes(item) === false) : false;
106
106
  case TableFilterComparator.HasAllOf:
107
107
  return Array.isArray(filter.value) && Array.isArray(value) ? filter.value.filter(v => value.includes(v)).length === filter.value.length : false;
108
+ case TableFilterComparator.IsOneOf:
109
+ if (!Array.isArray(filter.value)) return false;
110
+ return filter.value.some(v => isWeakEqual(value, v));
111
+ case TableFilterComparator.IsNoneOf:
112
+ if (!Array.isArray(filter.value)) return false;
113
+ return filter.value.every(v => !isWeakEqual(value, v));
108
114
  }
109
115
  return false;
110
116
  } catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"filtering.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/util/filtering.ts"],"sourcesContent":["import { isDate, isAfter as isAfterDate, isBefore as isBeforeDate, isEqual as isEqualDate } from 'date-fns';\nimport { isWeakEqual as isWeakEqualDate } from '../../../../utils/date';\nimport { TableFilterValue, TableFilterComparator } from '../../types';\n\nexport const toLowerCase = (value: string | number) => String(value ?? '').toLocaleLowerCase();\nexport const isWeakContains = (left: string | number, right: string | number) => toLowerCase(left).includes(toLowerCase(right));\nexport const isWeakEqual = (left: string | number, right: string | number) => toLowerCase(left) === toLowerCase(right);\n\n// the filter type is only settable on the column definition, which would re-render all columns.\n// so instead we store it in the filter value, but that means we also have to destructure that\n// before we filter - that's why this custom filter function exists\nexport function columnFilterFn(value: any, filter: TableFilterValue) {\n try {\n if (filter.comparator === TableFilterComparator.IsEmpty || filter.comparator === TableFilterComparator.IsNotEmpty) {\n const isEmpty = value === undefined || value === null || value === '';\n return filter.comparator === TableFilterComparator.IsEmpty ? isEmpty : !isEmpty;\n }\n\n if (filter.value === undefined || filter.value === null || filter.value === '') {\n return true;\n }\n\n switch (filter.comparator) {\n case TableFilterComparator.Contains:\n return isWeakContains(value, filter.value);\n\n case TableFilterComparator.DoesNotContain:\n return !isWeakContains(value, filter.value);\n\n case TableFilterComparator.IsEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && isWeakEqualDate(value, filter.value);\n } else if (typeof filter.value === 'boolean') {\n return value === filter.value;\n }\n\n return isWeakEqual(value, filter.value);\n }\n\n case TableFilterComparator.IsNotEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && isWeakEqualDate(value, filter.value) === false;\n } else if (typeof filter.value === 'boolean') {\n return value !== filter.value;\n }\n\n return !isWeakEqual(value, filter.value);\n }\n\n case TableFilterComparator.IsGreaterThan: {\n if (isDate(value)) {\n return isDate(filter.value) && isAfterDate(value, filter.value);\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber > filter.value;\n }\n }\n\n case TableFilterComparator.IsLessThan: {\n if (isDate(value)) {\n return isDate(filter.value) && isBeforeDate(value, filter.value);\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber < filter.value;\n }\n }\n\n case TableFilterComparator.IsLessThanOrEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && (isBeforeDate(value, filter.value) || isEqualDate(value, filter.value));\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber <= filter.value;\n }\n }\n\n case TableFilterComparator.IsGreaterThanOrEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && (isAfterDate(value, filter.value) || isEqualDate(value, filter.value));\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber >= filter.value;\n }\n }\n\n case TableFilterComparator.IsBetween: {\n const [fromValue, toValue] = filter.value;\n\n if (isDate(value)) {\n if (isDate(fromValue) && isBeforeDate(value, fromValue)) {\n return false;\n } else if (isDate(toValue) && isAfterDate(value, toValue)) {\n return false;\n }\n\n return true;\n } else {\n const valueAsNumber = parseInt(value);\n\n if (isNaN(valueAsNumber)) {\n return false;\n }\n\n if (fromValue !== undefined && valueAsNumber < fromValue) {\n return false;\n } else if (toValue !== undefined && valueAsNumber > toValue) {\n return false;\n }\n\n return true;\n }\n }\n\n case TableFilterComparator.HasAnyOf:\n return Array.isArray(filter.value) && Array.isArray(value)\n ? filter.value.some(item => value.includes(item))\n : false;\n\n case TableFilterComparator.HasNoneOf:\n return Array.isArray(filter.value) && Array.isArray(value)\n ? filter.value.every(item => value.includes(item) === false)\n : false;\n\n case TableFilterComparator.HasAllOf:\n return Array.isArray(filter.value) && Array.isArray(value)\n ? filter.value.filter(v => value.includes(v)).length === filter.value.length\n : false;\n }\n\n return false;\n } catch (e) {\n console.error(e);\n return true;\n }\n}\n"],"names":["toLowerCase","value","String","toLocaleLowerCase","isWeakContains","left","right","includes","isWeakEqual","columnFilterFn","filter","comparator","TableFilterComparator","IsEmpty","IsNotEmpty","isEmpty","undefined","Contains","DoesNotContain","IsEqualTo","isDate","isWeakEqualDate","IsNotEqualTo","IsGreaterThan","isAfterDate","valueAsNumber","parseInt","isNaN","IsLessThan","isBeforeDate","IsLessThanOrEqualTo","isEqualDate","IsGreaterThanOrEqualTo","IsBetween","fromValue","toValue","HasAnyOf","Array","isArray","some","item","HasNoneOf","every","HasAllOf","v","length","e","console","error"],"mappings":"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"}
1
+ {"version":3,"file":"filtering.js","sources":["../../../../../../../../../src/primitives/Table/useTableManager/util/filtering.ts"],"sourcesContent":["import { isAfter as isAfterDate, isBefore as isBeforeDate, isDate, isEqual as isEqualDate } from 'date-fns';\nimport { isWeakEqual as isWeakEqualDate } from '../../../../utils/date';\nimport { TableFilterComparator, TableFilterValue } from '../../types';\n\nexport const toLowerCase = (value: string | number) => String(value ?? '').toLocaleLowerCase();\nexport const isWeakContains = (left: string | number, right: string | number) => toLowerCase(left).includes(toLowerCase(right));\nexport const isWeakEqual = (left: string | number, right: string | number) => toLowerCase(left) === toLowerCase(right);\n\n// the filter type is only settable on the column definition, which would re-render all columns.\n// so instead we store it in the filter value, but that means we also have to destructure that\n// before we filter - that's why this custom filter function exists\nexport function columnFilterFn(value: any, filter: TableFilterValue) {\n try {\n if (filter.comparator === TableFilterComparator.IsEmpty || filter.comparator === TableFilterComparator.IsNotEmpty) {\n const isEmpty = value === undefined || value === null || value === '';\n return filter.comparator === TableFilterComparator.IsEmpty ? isEmpty : !isEmpty;\n }\n\n if (filter.value === undefined || filter.value === null || filter.value === '') {\n return true;\n }\n\n switch (filter.comparator) {\n case TableFilterComparator.Contains:\n return isWeakContains(value, filter.value);\n\n case TableFilterComparator.DoesNotContain:\n return !isWeakContains(value, filter.value);\n\n case TableFilterComparator.IsEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && isWeakEqualDate(value, filter.value);\n } else if (typeof filter.value === 'boolean') {\n return value === filter.value;\n }\n\n return isWeakEqual(value, filter.value);\n }\n\n case TableFilterComparator.IsNotEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && isWeakEqualDate(value, filter.value) === false;\n } else if (typeof filter.value === 'boolean') {\n return value !== filter.value;\n }\n\n return !isWeakEqual(value, filter.value);\n }\n\n case TableFilterComparator.IsGreaterThan: {\n if (isDate(value)) {\n return isDate(filter.value) && isAfterDate(value, filter.value);\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber > filter.value;\n }\n }\n\n case TableFilterComparator.IsLessThan: {\n if (isDate(value)) {\n return isDate(filter.value) && isBeforeDate(value, filter.value);\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber < filter.value;\n }\n }\n\n case TableFilterComparator.IsLessThanOrEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && (isBeforeDate(value, filter.value) || isEqualDate(value, filter.value));\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber <= filter.value;\n }\n }\n\n case TableFilterComparator.IsGreaterThanOrEqualTo: {\n if (isDate(value)) {\n return isDate(filter.value) && (isAfterDate(value, filter.value) || isEqualDate(value, filter.value));\n } else {\n const valueAsNumber = parseInt(value);\n return !isNaN(valueAsNumber) && filter.value !== undefined && valueAsNumber >= filter.value;\n }\n }\n\n case TableFilterComparator.IsBetween: {\n const [fromValue, toValue] = filter.value;\n\n if (isDate(value)) {\n if (isDate(fromValue) && isBeforeDate(value, fromValue)) {\n return false;\n } else if (isDate(toValue) && isAfterDate(value, toValue)) {\n return false;\n }\n\n return true;\n } else {\n const valueAsNumber = parseInt(value);\n\n if (isNaN(valueAsNumber)) {\n return false;\n }\n\n if (fromValue !== undefined && valueAsNumber < fromValue) {\n return false;\n } else if (toValue !== undefined && valueAsNumber > toValue) {\n return false;\n }\n\n return true;\n }\n }\n\n case TableFilterComparator.HasAnyOf:\n return Array.isArray(filter.value) && Array.isArray(value)\n ? filter.value.some(item => value.includes(item))\n : false;\n\n case TableFilterComparator.HasNoneOf:\n return Array.isArray(filter.value) && Array.isArray(value)\n ? filter.value.every(item => value.includes(item) === false)\n : false;\n\n case TableFilterComparator.HasAllOf:\n return Array.isArray(filter.value) && Array.isArray(value)\n ? filter.value.filter(v => value.includes(v)).length === filter.value.length\n : false;\n\n case TableFilterComparator.IsOneOf:\n if (!Array.isArray(filter.value)) return false;\n\n return filter.value.some(v => isWeakEqual(value, v));\n\n case TableFilterComparator.IsNoneOf:\n if (!Array.isArray(filter.value)) return false;\n\n return filter.value.every(v => !isWeakEqual(value, v));\n }\n\n return false;\n } catch (e) {\n console.error(e);\n return true;\n }\n}\n"],"names":["toLowerCase","value","String","toLocaleLowerCase","isWeakContains","left","right","includes","isWeakEqual","columnFilterFn","filter","comparator","TableFilterComparator","IsEmpty","IsNotEmpty","isEmpty","undefined","Contains","DoesNotContain","IsEqualTo","isDate","isWeakEqualDate","IsNotEqualTo","IsGreaterThan","isAfterDate","valueAsNumber","parseInt","isNaN","IsLessThan","isBeforeDate","IsLessThanOrEqualTo","isEqualDate","IsGreaterThanOrEqualTo","IsBetween","fromValue","toValue","HasAnyOf","Array","isArray","some","item","HasNoneOf","every","HasAllOf","v","length","IsOneOf","IsNoneOf","e","console","error"],"mappings":"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"}
@@ -24,7 +24,9 @@ export declare enum TableFilterComparator {
24
24
  IsGreaterThanOrEqualTo = 10,
25
25
  HasAnyOf = 11,
26
26
  HasAllOf = 12,
27
- HasNoneOf = 13
27
+ HasNoneOf = 13,
28
+ IsOneOf = 14,
29
+ IsNoneOf = 15
28
30
  }
29
31
  export declare type TableFilterValue = {
30
32
  comparator: TableFilterComparator;
@@ -60,7 +62,7 @@ export declare type TableColumnSort = ReactTableColumnSort;
60
62
  export declare type TableColumnSortDirection = 'asc' | 'desc';
61
63
  export declare type TableColumnSortFn<TType = unknown> = ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1) | ReactTableBuiltInSortingFn | 'auto';
62
64
  export declare type TableColumnWidth = number | 'grow';
63
- export declare type TableRowActionRenderer<TType = unknown> = (row: TType, internalRowId: string) => JSX.Element | null;
65
+ export declare type TableRowActionRenderer<TType = unknown> = (row: TType, internalRowId: string, cleanup: (rowId: string) => void) => JSX.Element | null;
64
66
  export declare type TableRowActionGroupRenderer<TType = unknown> = (rows: TType[]) => JSX.Element | null;
65
67
  export declare type TableRowClickHandler<TType = unknown> = (row: TType) => void;
66
68
  export declare type TableRowDragHandler<TType = unknown> = (rows: TType[], showPlaceholder: (string: any) => void, setDataTransfer: (data: string) => void) => void;
@@ -295,6 +297,8 @@ export declare type TableTexts = {
295
297
  isGreaterThan: string;
296
298
  isLessThan: string;
297
299
  isBetween: string;
300
+ isOneOf: string;
301
+ isNoneOf: string;
298
302
  isEmpty: string;
299
303
  isNotEmpty: string;
300
304
  isBefore: string;
@@ -1,6 +1,8 @@
1
1
  import { TableRowActionRenderer } from '../../types';
2
2
  export declare function useTableRowActions<TType = unknown>(isEnabled?: boolean, rowActions?: TableRowActionRenderer<TType>[], rowActionsLength?: number): {
3
+ handlers: {};
3
4
  isEnabled: boolean;
5
+ registerHandler: (key: string, handler: Function) => void;
4
6
  rowActions: TableRowActionRenderer<TType>[] | undefined;
5
7
  rowActionsLength: number;
6
8
  };
@@ -1,3 +1,4 @@
1
+ /// <reference types="react" />
1
2
  import { HeaderContext as ReactTableHeaderContext, CellContext as ReactTableCellContext, ColumnMeta as ReactTableColumnMeta } from '@tanstack/react-table';
2
3
  export declare type useTableManagerInternalColumn<TType = unknown> = {
3
4
  header?: (info: ReactTableHeaderContext<TType, unknown>) => JSX.Element | string | null;
@@ -3989,7 +3989,7 @@ const Action = /*#__PURE__*/React.forwardRef(function AlertDialogAction(props, r
3989
3989
  });
3990
3990
 
3991
3991
  const Backdrop = /*#__PURE__*/React.forwardRef(function Backdrop(props, ref) {
3992
- const className = cn('fixed inset-0 cursor-default overflow-y-auto bg-blue-900/[0.3] aria-hidden:invisible print:overflow-visible print:absolute z-10', props.className);
3992
+ const className = cn('fixed inset-0 cursor-default overflow-y-auto bg-blue-900/[0.3] aria-hidden:invisible print:overflow-visible print:absolute', props.className);
3993
3993
  return /*#__PURE__*/React.createElement("div", Object.assign({}, props, {
3994
3994
  className: className,
3995
3995
  "data-taco": "backdrop",
@@ -9967,6 +9967,8 @@ const fixedForwardRef = React__default.forwardRef;
9967
9967
  TableFilterComparator[TableFilterComparator["HasAnyOf"] = 11] = "HasAnyOf";
9968
9968
  TableFilterComparator[TableFilterComparator["HasAllOf"] = 12] = "HasAllOf";
9969
9969
  TableFilterComparator[TableFilterComparator["HasNoneOf"] = 13] = "HasNoneOf";
9970
+ TableFilterComparator[TableFilterComparator["IsOneOf"] = 14] = "IsOneOf";
9971
+ TableFilterComparator[TableFilterComparator["IsNoneOf"] = 15] = "IsNoneOf";
9970
9972
  })(exports.TableFilterComparator || (exports.TableFilterComparator = {}));
9971
9973
 
9972
9974
  const dataTypes = {
@@ -10135,6 +10137,12 @@ function columnFilterFn(value, filter) {
10135
10137
  return Array.isArray(filter.value) && Array.isArray(value) ? filter.value.every(item => value.includes(item) === false) : false;
10136
10138
  case exports.TableFilterComparator.HasAllOf:
10137
10139
  return Array.isArray(filter.value) && Array.isArray(value) ? filter.value.filter(v => value.includes(v)).length === filter.value.length : false;
10140
+ case exports.TableFilterComparator.IsOneOf:
10141
+ if (!Array.isArray(filter.value)) return false;
10142
+ return filter.value.some(v => isWeakEqual$1(value, v));
10143
+ case exports.TableFilterComparator.IsNoneOf:
10144
+ if (!Array.isArray(filter.value)) return false;
10145
+ return filter.value.every(v => !isWeakEqual$1(value, v));
10138
10146
  }
10139
10147
  return false;
10140
10148
  } catch (e) {
@@ -10941,8 +10949,17 @@ function useTablePrintingSettings(tableId) {
10941
10949
 
10942
10950
  const DEFAULT_ROW_ACTIONS_LENGTH = 4;
10943
10951
  function useTableRowActions(isEnabled = false, rowActions, rowActionsLength = DEFAULT_ROW_ACTIONS_LENGTH) {
10952
+ const [handlers, setHandlers] = React__default.useState({});
10953
+ const registerHandler = (key, handler) => {
10954
+ return setHandlers(h => ({
10955
+ ...h,
10956
+ [key]: handler
10957
+ }));
10958
+ };
10944
10959
  return {
10960
+ handlers,
10945
10961
  isEnabled,
10962
+ registerHandler,
10946
10963
  rowActions: isEnabled ? rowActions : undefined,
10947
10964
  rowActionsLength: rowActions ? Math.min(rowActions.length, rowActionsLength) : 0
10948
10965
  };
@@ -12054,7 +12071,7 @@ function useTableStyleGrid(tableId, table, fontSize) {
12054
12071
  };
12055
12072
  // printing grid
12056
12073
  // we have to be specific so that nested tables don't inherit the same css
12057
- const hiddenColumns = printHiddenColumns.map(id => `table[data-taco^='table']#${tableId} > thead > tr > th[data-cell-id='${id}']\n,table[data-taco^='table']#${tableId} > tbody > tr > td[data-cell-id='${id}']\n`).join(',');
12074
+ const hiddenColumns = printHiddenColumns.map(id => `table[data-taco^='table']#${tableId} > thead > tr > th[data-cell-id='${id}']\n,table[data-taco^='table']#${tableId} tr > td[data-cell-id='${id}']\n`).join(',');
12058
12075
  const stylesheet = `@media print { table[data-taco^='table']#${tableId} { grid-template-columns: repeat(${printGridTemplateColumns}, auto) !important; }
12059
12076
  table[data-taco^='table']#${tableId} [data-cell-id^='__']${hiddenColumns ? `, ${hiddenColumns}` : ''} { display: none; } table[data-taco^='table']#${tableId} tr { page-break-inside: avoid; break-inside: avoid;}}`;
12060
12077
  return {
@@ -12620,8 +12637,9 @@ function Actions$1(props) {
12620
12637
  const {
12621
12638
  texts
12622
12639
  } = useLocalization();
12640
+ const tableMeta = table.options.meta;
12623
12641
  // we don't want to document passing table, so it isn't on the type
12624
- const visibleActions = actions.map(action => action(data, rowId, table)).filter(action => !!action);
12642
+ const visibleActions = actions.map(action => action(data, rowId, tableMeta.rowActions.handlers['cleanup'], table)).filter(action => !!action);
12625
12643
  const actionsOnRow = visibleActions.length === actionsLength ? visibleActions : visibleActions.slice(0, actionsLength - 1);
12626
12644
  const actionsInMenu = visibleActions.slice(visibleActions.length === actionsLength ? actionsLength : actionsLength - 1);
12627
12645
  const className = cn('flex justify-end text-right bg-[inherit] shadow-[-6px_0px_6px_var(--table-row-actions-shadow)] print:hidden');
@@ -16739,6 +16757,10 @@ function getComparatorText(comparator, texts, column) {
16739
16757
  return texts.table.filters.comparators.hasAllOf;
16740
16758
  case exports.TableFilterComparator.HasNoneOf:
16741
16759
  return texts.table.filters.comparators.hasNoneOf;
16760
+ case exports.TableFilterComparator.IsOneOf:
16761
+ return texts.table.filters.comparators.isOneOf;
16762
+ case exports.TableFilterComparator.IsNoneOf:
16763
+ return texts.table.filters.comparators.isNoneOf;
16742
16764
  default:
16743
16765
  return '';
16744
16766
  }
@@ -18897,21 +18919,13 @@ function useTableEditingListener(table, tableRef, scrollToIndex) {
18897
18919
  document.addEventListener('click', onClickOutside);
18898
18920
  return () => document.removeEventListener('click', onClickOutside);
18899
18921
  }, [tableMeta.editing.isEditing, tableMeta.editing.saveChanges]);
18900
- /*
18901
- const rows = table.getRowModel().rows;
18902
- // make sure pending changes are removed for rows that no longer exist
18903
- useLazyEffect(() => {
18904
- const pendingChanges = tableMeta.editing.getErrorsShownInAlert();
18905
- pendingChanges.forEach(pendingChange => {
18906
- try {
18907
- table.getRow(pendingChange.rowId);
18908
- } catch {
18909
- // TODO: this has the potential to remove changes for "unloaded" rows in server loading
18910
- //tableMeta.editing.discardChanges(pendingChange.rowId, table);
18911
- }
18912
- });
18913
- }, [rows.length]);
18914
- */
18922
+ React__default.useEffect(() => {
18923
+ if (tableMeta.editing.isEnabled) {
18924
+ tableMeta.rowActions.registerHandler('cleanup', rowId => {
18925
+ tableMeta.editing.discardChanges(rowId, table);
18926
+ });
18927
+ }
18928
+ }, []);
18915
18929
  // shortcuts
18916
18930
  useGlobalKeyDown(tableMeta.editing.isEnabled ? shortcut : undefined, event => {
18917
18931
  event.preventDefault();
@@ -20237,7 +20251,7 @@ function useTable3(props, ref) {
20237
20251
  data,
20238
20252
  enableRowActions: editing.isEditing ? true : props.enableRowActions,
20239
20253
  // Display EditingActionMenu instead of row actions while editing
20240
- rowActions: editing.isEditing ? [(_, rowId, table) => {
20254
+ rowActions: editing.isEditing ? [(_, rowId, __, table) => {
20241
20255
  const tableMeta = table.options.meta;
20242
20256
  return /*#__PURE__*/React__default.createElement(EditingActionsMenu, {
20243
20257
  hasChanges: editing.hasChanges(rowId),
@@ -20605,7 +20619,14 @@ const BaseTable3 = /*#__PURE__*/fixedForwardRef(function BaseTable3(props, ref)
20605
20619
  'data-table-editing-mode': (_table3$meta$editing = table3.meta.editing) !== null && _table3$meta$editing !== void 0 && _table3$meta$editing.isEditing ? (_table3$meta$editing2 = table3.meta.editing) !== null && _table3$meta$editing2 !== void 0 && _table3$meta$editing2.isDetailedMode ? 'detailed' : 'normal' : undefined,
20606
20620
  enableHorizontalArrowKeyNavigation: table3.meta.editing.isEditing
20607
20621
  };
20608
- const hasAlertErrors = table3.meta.editing.getErrorsShownInAlert().length;
20622
+ const rowsById = table3.instance.getCoreRowModel().rowsById;
20623
+ const hasAlertErrors = table3.meta.editing.getErrorsShownInAlert().filter(row => {
20624
+ if (table3.meta.server._experimentalDataLoader2) {
20625
+ // consumers of dataloader2 need to run a cleanup function, as this would otherwise return false when pages are unloaded.
20626
+ return true;
20627
+ }
20628
+ return rowsById[row.rowId];
20629
+ }).length;
20609
20630
  const hasCreateWorkflow = table3.meta.editing.isEnabled && props.onEditingCreate;
20610
20631
  const isScrolled = isTableScrolled(table3.ref);
20611
20632
  let createWorkflow;