@economic/taco 2.36.0 → 2.36.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Report/Report.d.ts +1 -1
- package/dist/components/Select2/components/Search.d.ts +6 -0
- package/dist/components/Table3/Table3.d.ts +1 -25
- package/dist/components/Table3/types.d.ts +1 -11
- package/dist/esm/packages/taco/src/components/Select2/Select2.js +16 -7
- package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Select2/components/Search.js +12 -2
- package/dist/esm/packages/taco/src/components/Select2/components/Search.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
- package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js +3 -24
- package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js +1 -2
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js.map +1 -1
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +0 -9
- package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
- package/dist/esm/packages/taco/src/utils/dom.js +2 -2
- package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
- package/dist/primitives/Table/types.d.ts +1 -1
- package/dist/primitives/Table/useTableManager/useTableManager.d.ts +1 -1
- package/dist/taco.cjs.development.js +34 -46
- package/dist/taco.cjs.development.js.map +1 -1
- package/dist/taco.cjs.production.min.js +1 -1
- package/dist/taco.cjs.production.min.js.map +1 -1
- package/dist/utils/dom.d.ts +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sources":["../../../../../../../src/primitives/Table/types.ts"],"sourcesContent":["import {\n ColumnFilter as ReactTableColumnFilter,\n ColumnFiltersState as ReactTableColumnFilterState,\n ColumnOrderState as ReactTableColumnOrderState,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSort as ReactTableColumnSort,\n ColumnSizingState as ReactTableColumnSizingState,\n VisibilityState as ReactTableColumnVisibilityState,\n SortingState as ReactTableSortingState,\n BuiltInAggregationFn as ReactTableBuiltInAggregationFn,\n BuiltInSortingFn as ReactTableBuiltInSortingFn,\n} from '@tanstack/react-table';\nimport { FontSize, FontSizes, ValueOf } from '../../types';\nimport { MenuItemProps } from '../../components/Menu/components/Item';\n\nexport type TableRef = HTMLTableElement & {\n instance: {\n resetFiltering: () => void;\n resetRowExpansion: () => void;\n resetRowSelection: () => void;\n resetSorting: () => void;\n };\n};\n\n// filtering\nexport enum TableFilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsEmpty,\n IsNotEmpty,\n IsLessThanOrEqualTo,\n IsGreaterThanOrEqualTo,\n HasAnyOf,\n HasAllOf,\n HasNoneOf,\n}\nexport type TableFilterValue = {\n comparator: TableFilterComparator;\n value: any;\n};\nexport type TableFilter = {\n id: string;\n value: TableFilterValue;\n};\n\n// columns\nexport type TableColumnAlignment = 'left' | 'center' | 'right';\nexport type TableColumnClassNameHandler<TType = unknown> = string | ((row: TType) => string | undefined);\nexport type TableColumnDataType = 'auto' | 'number' | 'alphanumeric' | 'alphanumericCaseSensitive' | 'datetime' | 'boolean';\nexport type TableColumnFilter = ReactTableColumnFilter;\nexport type TableColumnMenu = ((columnId: string) => React.ReactNode | null)[];\nexport type TableColumnRenderer<TType, TValue> = (value: TValue, row: TType) => JSX.Element | string | number | null;\nexport type TableColumnRendererAggregate<TType, TValue> = (value: TValue, row: TType) => JSX.Element | string | number | null;\nexport type TableColumnRendererControl<TType = unknown> =\n | ((props: TableColumnRendererControlProps, row?: TType) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch'\n | 'textarea';\nexport type TableColumnRendererControlProps = {\n className?: string;\n disabled?: boolean;\n fontSize?: FontSize;\n invalid?: boolean;\n onBlur?: (value: any) => void;\n onFocus?: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.RefObject<HTMLElement> | ((instance: HTMLElement | null | undefined) => void);\n setValue: (value: any) => void;\n value: any;\n};\nexport type TableColumnRendererHeader = string;\nexport type TableColumnRendererFooter<TType> = (rows: TType[]) => JSX.Element | string | number | null;\nexport type TableColumnSort = ReactTableColumnSort;\nexport type TableColumnSortDirection = 'asc' | 'desc';\nexport type TableColumnSortFn<TType = unknown> =\n | ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1)\n | ReactTableBuiltInSortingFn\n | 'auto';\nexport type TableColumnWidth = number | 'grow';\n\n// rows\nexport type TableRowActionRenderer<TType = unknown> = (row: TType, internalRowId: string) => JSX.Element | null;\nexport type TableRowActionGroupRenderer<TType = unknown> = (rows: TType[]) => JSX.Element | null;\nexport type TableRowClickHandler<TType = unknown> = (row: TType) => void;\nexport type TableRowDragHandler<TType = unknown> = (\n rows: TType[],\n showPlaceholder: (string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type TableRowDropHandler<TType = unknown> = (event: React.DragEvent, row: TType) => void;\nexport type TableRowGotoHandler = (\n column: string,\n query: string,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n search: string | undefined\n) => Promise<number>;\nexport type TableRowHeight = 'short' | 'medium' | 'tall' | 'extra-tall';\nexport type TableRowSelectHandler<TType = unknown> = (rows: TType[]) => void;\nexport type TableRowWithMetaData<TType = unknown> = TType & {\n _meta?: {\n layout?: 'heading' | 'summary' | 'item';\n };\n};\n\n// shortcuts\nexport type TableShortcutHandlerFn<TType = unknown> = (row: TType) => void;\nexport type TableShortcutHandlerObject<TType = unknown> = {\n handler: TableShortcutHandlerFn<TType>;\n meta?: boolean;\n shift?: boolean;\n};\n\n// table\nexport type TableFilterHandler = (filters: TableColumnFilter[]) => void | Promise<void>;\nexport type TableFontSize = keyof typeof FontSizes;\nexport type TablePreset = 'complex' | 'list' | 'simple';\nexport type TableRowExpansionRenderer<TType = unknown> = (row: TType) => (() => JSX.Element) | null;\nexport type TableScrollToIndexHandler = (index: number, options?: { align: 'start' | 'center' | 'end' | 'auto' }) => void;\nexport type TableSearchHandler = (search: string | undefined) => void | Promise<void>;\nexport type TableServerLoadPageHandler = (\n pageIndex: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[]\n) => Promise<void>;\nexport type TableServerLoadAllHandler = (sorting: TableColumnSort[], filters: TableColumnFilter[]) => Promise<void>;\nexport enum TableServerLoadAllState {\n Incomplete,\n Loading,\n Completed,\n}\nexport type TableSettingsHandler = (settings: TableSettings) => void | Promise<void>;\nexport type TableShortcuts<TType = unknown> = Record<string, TableShortcutHandlerFn<TType> | TableShortcutHandlerObject<TType>>;\nexport type TableSortHandler = (sorting: TableColumnSort[]) => void | Promise<void>;\nexport type TableCustomSettingsRenderer = (props: TableSettings) => React.ReactElement<MenuItemProps>[];\nexport type TableEmptyStateRenderer = () => JSX.Element | null;\n\n// settings\nexport type TableSettings = {\n columnFilters?: ReactTableColumnFilterState;\n columnOrder?: ReactTableColumnOrderState;\n columnPinning?: ReactTableColumnPinningState;\n columnSizing?: ReactTableColumnSizingState;\n columnVisibility?: ReactTableColumnVisibilityState;\n excludeUnmatchedRecordsInSearch?: boolean;\n fontSize?: TableFontSize;\n rowHeight?: TableRowHeight;\n searchQuery?: string;\n sorting?: ReactTableSortingState;\n};\nexport type TableEnableSettingsOptions = {\n columnOrder: boolean;\n columnPinning: boolean;\n columnSizing: boolean;\n columnVisibility: boolean;\n excludeUnmatchedRecordsInSearch: boolean;\n fontSize: boolean;\n grouping: boolean;\n rowHeight: boolean;\n sorting: boolean;\n};\n\n// props\nexport type TableFeatureProps<TType = unknown> = {\n // react-table built-in\n enableFiltering?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableColumnFreezing?: boolean;\n enableColumnHiding?: boolean;\n enableColumnResizing?: boolean;\n enableRowExpansion?: boolean;\n enableRowSelection?: boolean;\n enableRowSelectionSingle?: boolean;\n\n // custom -- common between all table types\n enableColumnOrdering?: boolean;\n enableFontSize?: boolean;\n enableFooter?: boolean;\n enablePrinting?: boolean;\n enableRowActions?: boolean;\n enableRowActive?: boolean;\n enableRowClick?: boolean | ((row: TType) => boolean);\n enableRowDrag?: boolean;\n enableRowDrop?: boolean;\n enableRowGoto?: boolean;\n enableRowHeight?: boolean;\n enableSaveSettings?: boolean | Partial<TableEnableSettingsOptions>;\n};\n\nexport type TableCommonProps<TType = unknown> = TableFeatureProps<TType> & {\n children: (JSX.Element | boolean | null | undefined)[];\n data: TType[];\n id: string;\n\n // misc\n customSettings?: TableCustomSettingsRenderer;\n defaultColumnFreezingIndex?: number;\n defaultRowActiveIndex?: number;\n defaultRowGroupColumnId?: keyof TType;\n defaultSettings?: TableSettings;\n emptyState?: TableEmptyStateRenderer;\n preset?: TablePreset;\n rowActions?: TableRowActionRenderer<TType>[];\n rowActionsForGroup?: TableRowActionGroupRenderer<TType>[];\n rowActionsLength?: number;\n rowExpansionRenderer?: TableRowExpansionRenderer<TType>;\n rowIdentityColumnAccessor?: keyof TType | (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}\n\nexport interface TableServerProps<TType = unknown> extends TableCommonProps<TType> {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n}\n\nexport type TableProps<TType = unknown> = TableClientProps<TType> | TableServerProps<TType>;\n\nexport type TableColumnProps<TType = unknown> = ValueOf<{\n [Key in keyof TType]: {\n accessor?: Key;\n id: string;\n // renderers\n renderer?: TableColumnRenderer<TType, TType[Key]>;\n /** Renderer to use if the cell is an aggregate cell and part of a grouped row */\n aggregate?: TableColumnRendererAggregate<TType, TType[Key]>;\n control?: TableColumnRendererControl<TType>;\n footer?: TableColumnRendererFooter<TType>;\n header: TableColumnRendererHeader;\n // options\n /** Aggregation function to be used when the column is part of a grouped row */\n aggregationFn?: 'auto' | ReactTableBuiltInAggregationFn;\n align?: TableColumnAlignment;\n className?: TableColumnClassNameHandler<TType>;\n dataType?: TableColumnDataType;\n defaultHidden?: boolean;\n defaultWidth?: TableColumnWidth;\n enableFiltering?: boolean;\n enableGrouping?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableResizing?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableTruncate?: boolean;\n filters?: TableFilterComparator[];\n headerClassName?: string;\n menu?: TableColumnMenu;\n minWidth?: number;\n sort?: TableColumnSortDirection;\n sortFn?: TableColumnSortFn<TType>;\n tooltip?: string;\n };\n}>;\n\nexport type TableGroupProps = {\n children: (JSX.Element | boolean | null | undefined)[];\n header: string;\n id: string;\n};\n\nexport type TableTexts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n menu: {\n editFilter: string;\n filter: string;\n freezeFirstColumn: string;\n freezeUptoColumn: string;\n gotoRow: string;\n hideColumn: string;\n unfreezeColumns: string;\n sorting: string;\n sortingOrder: {\n ascending: string;\n descending: string;\n unsorted: string;\n };\n };\n resize: {\n tooltip: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n };\n columnSettings: {\n button: string;\n noResults: string;\n search: string;\n tooltip: string;\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n cancel: string;\n clear: string;\n apply: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isEmpty: string;\n isNotEmpty: string;\n isBefore: string;\n isAfter: string;\n isLessThanOrEqualTo: string;\n isGreaterThanOrEqualTo: string;\n isOnOrBefore: string;\n isOnOrAfter: string;\n hasAnyOf: string;\n hasAllOf: string;\n hasNoneOf: string;\n };\n conditions: {\n and: string;\n where: string;\n };\n emptyFilter: {\n condition: string;\n value: string;\n };\n hiddenColumn: string;\n hiddenGroupedColumn: string;\n tooltip: string;\n total: string;\n };\n fontSize: {\n tooltip: string;\n sizes: {\n small: string;\n medium: string;\n large: string;\n };\n };\n footer: {\n summary: {\n count: string;\n records: string;\n selected: string;\n };\n };\n print: {\n error: string;\n loading: string;\n tooltip: string;\n warningDialog: {\n title: string;\n description: string;\n checkboxVisibilityLabel: string;\n cancelButtonText: string;\n printButtonText: string;\n };\n settingsDialog: {\n title: string;\n size: string;\n sizeA5: string;\n sizeA4: string;\n sizeA3: string;\n sizeLetter: string;\n sizeLegal: string;\n orientation: string;\n orientationLandscape: string;\n orientationPortrait: string;\n rows: string;\n rowsAll: string;\n rowsSelected: string;\n layout: string;\n layoutSplitGroups: string;\n };\n };\n rowHeight: {\n tooltip: string;\n sizes: {\n short: string;\n medium: string;\n tall: string;\n extraTall: string;\n };\n };\n search: {\n excludeUnmatchedResults: string;\n placeholder: string;\n };\n otherOptions: {\n tooltip: string;\n };\n};\n"],"names":["TableFilterComparator","TableServerLoadAllState"],"mappings":"AAwBA;IACYA;AAAZ,WAAYA,qBAAqB;EAC7BA,yEAAQ;EACRA,qFAAc;EACdA,2EAAS;EACTA,iFAAY;EACZA,mFAAa;EACbA,6EAAU;EACVA,2EAAS;EACTA,uEAAO;EACPA,6EAAU;EACVA,+FAAmB;EACnBA,sGAAsB;EACtBA,0EAAQ;EACRA,0EAAQ;EACRA,4EAAS;AACb,CAAC,EAfWA,qBAAqB,KAArBA,qBAAqB;IA2GrBC;AAAZ,WAAYA,uBAAuB;EAC/BA,iFAAU;EACVA,2EAAO;EACPA,+EAAS;AACb,CAAC,EAJWA,uBAAuB,KAAvBA,uBAAuB;;;;"}
|
|
1
|
+
{"version":3,"file":"types.js","sources":["../../../../../../../src/primitives/Table/types.ts"],"sourcesContent":["import {\n ColumnFilter as ReactTableColumnFilter,\n ColumnFiltersState as ReactTableColumnFilterState,\n ColumnOrderState as ReactTableColumnOrderState,\n ColumnPinningState as ReactTableColumnPinningState,\n ColumnSort as ReactTableColumnSort,\n ColumnSizingState as ReactTableColumnSizingState,\n VisibilityState as ReactTableColumnVisibilityState,\n SortingState as ReactTableSortingState,\n BuiltInAggregationFn as ReactTableBuiltInAggregationFn,\n BuiltInSortingFn as ReactTableBuiltInSortingFn,\n} from '@tanstack/react-table';\nimport { FontSize, FontSizes, ValueOf } from '../../types';\nimport { MenuItemProps } from '../../components/Menu/components/Item';\n\nexport type TableRef = HTMLTableElement & {\n instance: {\n resetFiltering: () => void;\n resetRowExpansion: () => void;\n resetRowSelection: () => void;\n resetSorting: () => void;\n };\n};\n\n// filtering\nexport enum TableFilterComparator {\n Contains,\n DoesNotContain,\n IsEqualTo,\n IsNotEqualTo,\n IsGreaterThan,\n IsLessThan,\n IsBetween,\n IsEmpty,\n IsNotEmpty,\n IsLessThanOrEqualTo,\n IsGreaterThanOrEqualTo,\n HasAnyOf,\n HasAllOf,\n HasNoneOf,\n}\nexport type TableFilterValue = {\n comparator: TableFilterComparator;\n value: any;\n};\nexport type TableFilter = {\n id: string;\n value: TableFilterValue;\n};\n\n// columns\nexport type TableColumnAlignment = 'left' | 'center' | 'right';\nexport type TableColumnClassNameHandler<TType = unknown> = string | ((row: TType) => string | undefined);\nexport type TableColumnDataType = 'auto' | 'number' | 'alphanumeric' | 'alphanumericCaseSensitive' | 'datetime' | 'boolean';\nexport type TableColumnFilter = ReactTableColumnFilter;\nexport type TableColumnMenu = ((columnId: string) => React.ReactNode | null)[];\nexport type TableColumnRenderer<TType, TValue> = (value: TValue, row: TType) => JSX.Element | string | number | null;\nexport type TableColumnRendererAggregate<TType, TValue> = (value: TValue, row: TType) => JSX.Element | string | number | null;\nexport type TableColumnRendererControl<TType = unknown> =\n | ((props: TableColumnRendererControlProps, row?: TType) => JSX.Element)\n | 'datepicker'\n | 'input'\n | 'switch'\n | 'textarea';\nexport type TableColumnRendererControlProps = {\n className?: string;\n disabled?: boolean;\n fontSize?: FontSize;\n invalid?: boolean;\n onBlur?: (value: any) => void;\n onFocus?: React.FocusEventHandler;\n readOnly?: boolean;\n ref: React.RefObject<HTMLElement> | ((instance: HTMLElement | null | undefined) => void);\n setValue: (value: any) => void;\n value: any;\n};\nexport type TableColumnRendererHeader = string;\nexport type TableColumnRendererFooter<TType> = (rows: TType[]) => JSX.Element | string | number | null;\nexport type TableColumnSort = ReactTableColumnSort;\nexport type TableColumnSortDirection = 'asc' | 'desc';\nexport type TableColumnSortFn<TType = unknown> =\n | ((rowA: TType, rowB: TType, columnId: string) => -1 | 0 | 1)\n | ReactTableBuiltInSortingFn\n | 'auto';\nexport type TableColumnWidth = number | 'grow';\n\n// rows\nexport type TableRowActionRenderer<TType = unknown> = (row: TType, internalRowId: string) => JSX.Element | null;\nexport type TableRowActionGroupRenderer<TType = unknown> = (rows: TType[]) => JSX.Element | null;\nexport type TableRowClickHandler<TType = unknown> = (row: TType) => void;\nexport type TableRowDragHandler<TType = unknown> = (\n rows: TType[],\n showPlaceholder: (string) => void,\n setDataTransfer: (data: string) => void\n) => void;\nexport type TableRowDropHandler<TType = unknown> = (event: React.DragEvent, row: TType) => void;\nexport type TableRowGotoHandler = (\n column: string,\n query: string,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[],\n search: string | undefined\n) => Promise<number>;\nexport type TableRowHeight = 'short' | 'medium' | 'tall' | 'extra-tall';\nexport type TableRowSelectHandler<TType = unknown> = (rows: TType[]) => void;\nexport type TableRowWithMetaData<TType = unknown> = TType & {\n _meta?: {\n layout?: 'heading' | 'summary' | 'item';\n };\n};\n\n// shortcuts\nexport type TableShortcutHandlerFn<TType = unknown> = (row: TType) => void;\nexport type TableShortcutHandlerObject<TType = unknown> = {\n handler: TableShortcutHandlerFn<TType>;\n meta?: boolean;\n shift?: boolean;\n};\n\n// table\nexport type TableFilterHandler = (filters: TableColumnFilter[]) => void | Promise<void>;\nexport type TableFontSize = keyof typeof FontSizes;\nexport type TablePreset = 'complex' | 'list' | 'simple';\nexport type TableRowExpansionRenderer<TType = unknown> = (row: TType) => (() => JSX.Element) | null;\nexport type TableScrollToIndexHandler = (index: number, options?: { align: 'start' | 'center' | 'end' | 'auto' }) => void;\nexport type TableSearchHandler = (search: string | undefined) => void | Promise<void>;\nexport type TableServerLoadPageHandler = (\n pageIndex: number,\n sorting: TableColumnSort[],\n filters: TableColumnFilter[]\n) => Promise<void>;\nexport type TableServerLoadAllHandler = (sorting: TableColumnSort[], filters: TableColumnFilter[]) => Promise<void>;\nexport enum TableServerLoadAllState {\n Incomplete,\n Loading,\n Completed,\n}\nexport type TableSettingsHandler = (settings: TableSettings) => void | Promise<void>;\nexport type TableShortcuts<TType = unknown> = Record<string, TableShortcutHandlerFn<TType> | TableShortcutHandlerObject<TType>>;\nexport type TableSortHandler = (sorting: TableColumnSort[]) => void | Promise<void>;\nexport type TableCustomSettingsRenderer = (props: TableSettings) => React.ReactElement<MenuItemProps>[];\nexport type TableEmptyStateRenderer = () => JSX.Element | null;\n\n// settings\nexport type TableSettings = {\n columnFilters?: ReactTableColumnFilterState;\n columnOrder?: ReactTableColumnOrderState;\n columnPinning?: ReactTableColumnPinningState;\n columnSizing?: ReactTableColumnSizingState;\n columnVisibility?: ReactTableColumnVisibilityState;\n excludeUnmatchedRecordsInSearch?: boolean;\n fontSize?: TableFontSize;\n rowHeight?: TableRowHeight;\n searchQuery?: string;\n sorting?: ReactTableSortingState;\n};\nexport type TableEnableSettingsOptions = {\n columnOrder: boolean;\n columnPinning: boolean;\n columnSizing: boolean;\n columnVisibility: boolean;\n excludeUnmatchedRecordsInSearch: boolean;\n fontSize: boolean;\n grouping: boolean;\n rowHeight: boolean;\n sorting: boolean;\n};\n\n// props\nexport type TableFeatureProps<TType = unknown> = {\n // react-table built-in\n enableFiltering?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableColumnFreezing?: boolean;\n enableColumnHiding?: boolean;\n enableColumnResizing?: boolean;\n enableRowExpansion?: boolean;\n enableRowSelection?: boolean;\n enableRowSelectionSingle?: boolean;\n\n // custom -- common between all table types\n enableColumnOrdering?: boolean;\n enableFontSize?: boolean;\n enableFooter?: boolean;\n enablePrinting?: boolean;\n enableRowActions?: boolean;\n enableRowActive?: boolean;\n enableRowClick?: boolean | ((row: TType) => boolean);\n enableRowDrag?: boolean;\n enableRowDrop?: boolean;\n enableRowGoto?: boolean;\n enableRowHeight?: boolean;\n enableSaveSettings?: boolean | Partial<TableEnableSettingsOptions>;\n};\n\nexport type TableCommonProps<TType = unknown> = TableFeatureProps<TType> & {\n children: (JSX.Element | boolean | null | undefined)[];\n data: TType[];\n id: string;\n\n // misc\n customSettings?: TableCustomSettingsRenderer;\n defaultColumnFreezingIndex?: number;\n defaultRowActiveIndex?: number;\n defaultRowGroupColumnId?: keyof TType;\n defaultSettings?: TableSettings;\n emptyState?: TableEmptyStateRenderer;\n preset?: TablePreset;\n rowActions?: TableRowActionRenderer<TType>[];\n rowActionsForGroup?: TableRowActionGroupRenderer<TType>[];\n rowActionsLength?: number;\n rowExpansionRenderer?: TableRowExpansionRenderer<TType>;\n rowIdentityColumnId?: string;\n shortcuts?: TableShortcuts<TType>;\n toolbarLeft?: JSX.Element;\n toolbarRight?: JSX.Element;\n toolbarPanel?: JSX.Element;\n\n // handlers\n onRowClick?: TableRowClickHandler<TType>;\n onRowDrag?: TableRowDragHandler<TType>;\n onRowDrop?: TableRowDropHandler<TType>;\n onRowGoto?: TableRowGotoHandler;\n onRowSelect?: TableRowSelectHandler<TType>;\n\n // state change handlers\n onChangeFilter?: TableFilterHandler;\n onChangeSearch?: TableSearchHandler;\n onChangeSettings?: TableSettingsHandler;\n onChangeSort?: TableSortHandler;\n};\n\nexport interface TableClientProps<TType = unknown> extends TableCommonProps<TType> {\n length?: never;\n loadAll?: never;\n loadPage?: never;\n pageSize?: never;\n}\n\nexport interface TableServerProps<TType = unknown> extends TableCommonProps<TType> {\n length: number | undefined;\n loadAll: TableServerLoadAllHandler;\n loadPage: TableServerLoadPageHandler;\n pageSize?: number;\n}\n\nexport type TableProps<TType = unknown> = TableClientProps<TType> | TableServerProps<TType>;\n\nexport type TableColumnProps<TType = unknown> = ValueOf<{\n [Key in keyof TType]: {\n accessor?: Key;\n id: string;\n // renderers\n renderer?: TableColumnRenderer<TType, TType[Key]>;\n /** Renderer to use if the cell is an aggregate cell and part of a grouped row */\n aggregate?: TableColumnRendererAggregate<TType, TType[Key]>;\n control?: TableColumnRendererControl<TType>;\n footer?: TableColumnRendererFooter<TType>;\n header: TableColumnRendererHeader;\n // options\n /** Aggregation function to be used when the column is part of a grouped row */\n aggregationFn?: 'auto' | ReactTableBuiltInAggregationFn;\n align?: TableColumnAlignment;\n className?: TableColumnClassNameHandler<TType>;\n dataType?: TableColumnDataType;\n defaultHidden?: boolean;\n defaultWidth?: TableColumnWidth;\n enableFiltering?: boolean;\n enableGrouping?: boolean;\n enableHiding?: boolean;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableResizing?: boolean;\n enableSearch?: boolean;\n enableSorting?: boolean;\n enableTruncate?: boolean;\n filters?: TableFilterComparator[];\n headerClassName?: string;\n menu?: TableColumnMenu;\n minWidth?: number;\n sort?: TableColumnSortDirection;\n sortFn?: TableColumnSortFn<TType>;\n tooltip?: string;\n };\n}>;\n\nexport type TableGroupProps = {\n children: (JSX.Element | boolean | null | undefined)[];\n header: string;\n id: string;\n};\n\nexport type TableTexts = {\n columns: {\n actions: {\n tooltip: string;\n };\n drag: {\n tooltip: string;\n };\n expansion: {\n collapse: string;\n collapseAll: string;\n expand: string;\n expandAll: string;\n };\n menu: {\n editFilter: string;\n filter: string;\n freezeFirstColumn: string;\n freezeUptoColumn: string;\n gotoRow: string;\n hideColumn: string;\n unfreezeColumns: string;\n sorting: string;\n sortingOrder: {\n ascending: string;\n descending: string;\n unsorted: string;\n };\n };\n resize: {\n tooltip: string;\n };\n select: {\n deselect: string;\n deselectAll: string;\n select: string;\n selectAll: string;\n };\n };\n columnSettings: {\n button: string;\n noResults: string;\n search: string;\n tooltip: string;\n };\n filters: {\n button: string;\n buttons: {\n addFilter: string;\n clearFilters: string;\n cancel: string;\n clear: string;\n apply: string;\n };\n comparators: {\n contains: string;\n doesNotContain: string;\n isEqualTo: string;\n isNotEqualTo: string;\n isGreaterThan: string;\n isLessThan: string;\n isBetween: string;\n isEmpty: string;\n isNotEmpty: string;\n isBefore: string;\n isAfter: string;\n isLessThanOrEqualTo: string;\n isGreaterThanOrEqualTo: string;\n isOnOrBefore: string;\n isOnOrAfter: string;\n hasAnyOf: string;\n hasAllOf: string;\n hasNoneOf: string;\n };\n conditions: {\n and: string;\n where: string;\n };\n emptyFilter: {\n condition: string;\n value: string;\n };\n hiddenColumn: string;\n hiddenGroupedColumn: string;\n tooltip: string;\n total: string;\n };\n fontSize: {\n tooltip: string;\n sizes: {\n small: string;\n medium: string;\n large: string;\n };\n };\n footer: {\n summary: {\n count: string;\n records: string;\n selected: string;\n };\n };\n print: {\n error: string;\n loading: string;\n tooltip: string;\n warningDialog: {\n title: string;\n description: string;\n checkboxVisibilityLabel: string;\n cancelButtonText: string;\n printButtonText: string;\n };\n settingsDialog: {\n title: string;\n size: string;\n sizeA5: string;\n sizeA4: string;\n sizeA3: string;\n sizeLetter: string;\n sizeLegal: string;\n orientation: string;\n orientationLandscape: string;\n orientationPortrait: string;\n rows: string;\n rowsAll: string;\n rowsSelected: string;\n layout: string;\n layoutSplitGroups: string;\n };\n };\n rowHeight: {\n tooltip: string;\n sizes: {\n short: string;\n medium: string;\n tall: string;\n extraTall: string;\n };\n };\n search: {\n excludeUnmatchedResults: string;\n placeholder: string;\n };\n otherOptions: {\n tooltip: string;\n };\n};\n"],"names":["TableFilterComparator","TableServerLoadAllState"],"mappings":"AAwBA;IACYA;AAAZ,WAAYA,qBAAqB;EAC7BA,yEAAQ;EACRA,qFAAc;EACdA,2EAAS;EACTA,iFAAY;EACZA,mFAAa;EACbA,6EAAU;EACVA,2EAAS;EACTA,uEAAO;EACPA,6EAAU;EACVA,+FAAmB;EACnBA,sGAAsB;EACtBA,0EAAQ;EACRA,0EAAQ;EACRA,4EAAS;AACb,CAAC,EAfWA,qBAAqB,KAArBA,qBAAqB;IA2GrBC;AAAZ,WAAYA,uBAAuB;EAC/BA,iFAAU;EACVA,2EAAO;EACPA,+EAAS;AACb,CAAC,EAJWA,uBAAuB,KAAvBA,uBAAuB;;;;"}
|
|
@@ -67,7 +67,6 @@ function useTableManager(props, meta, internalColumns) {
|
|
|
67
67
|
// ensure data is always valid
|
|
68
68
|
const data = (_props$data = props.data) !== null && _props$data !== void 0 ? _props$data : [];
|
|
69
69
|
const length = (_props$length = props.length) !== null && _props$length !== void 0 ? _props$length : data.length;
|
|
70
|
-
const rowIdentityColumnAccessor = props.rowIdentityColumnAccessor !== undefined ? [props.rowIdentityColumnAccessor].flat() : [];
|
|
71
70
|
// create a react-table instance
|
|
72
71
|
const instance = useReactTable({
|
|
73
72
|
data,
|
|
@@ -95,7 +94,7 @@ function useTableManager(props, meta, internalColumns) {
|
|
|
95
94
|
rowDrag,
|
|
96
95
|
rowDrop: rowDrop,
|
|
97
96
|
rowExpansion: rowExpansion,
|
|
98
|
-
|
|
97
|
+
rowIdentityColumnId: props.rowIdentityColumnId,
|
|
99
98
|
rowGoto,
|
|
100
99
|
rowGroups: rowGroups,
|
|
101
100
|
rowHeight,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTableManager.js","sources":["../../../../../../../../src/primitives/Table/useTableManager/useTableManager.ts"],"sourcesContent":["import { useReactTable, TableMeta as ReactTableMeta, RowData, getCoreRowModel } from '@tanstack/react-table';\nimport {\n TableColumnAlignment,\n TableColumnClassNameHandler,\n TableColumnDataType,\n TableColumnMenu,\n TableColumnRenderer,\n TableColumnRendererControl,\n TableFilterComparator,\n TableProps,\n} from '../types';\nimport { useReactTableInitialState, configureReactTableOptions, mapTableChildrenToColumns } from './util/setup';\nimport { getTableFeaturePreset } from './util/presets';\nimport { useTableColumnFreezing } from './features/useTableColumnFreezing';\nimport { useTableColumnOrdering } from './features/useTableColumnOrdering';\nimport { useTableFooter } from './features/useTableFooter';\nimport { useTableFontSize } from './features/useTableFontSize';\nimport { useTablePrinting } from './features/useTablePrinting';\nimport { useTableRowActions } from './features/useTableRowActions';\nimport { useTableRowActive } from './features/useTableRowActive';\nimport { useTableRowClick } from './features/useTableRowClick';\nimport { useTableRowExpansion } from './features/useTableRowExpansion';\nimport { useTableRowGoto } from './features/useTableRowGoto';\nimport { useTableRowGroups } from './features/useTableRowGroups';\nimport { useTableRowHeight } from './features/useTableRowHeight';\nimport { useTableRowSelection } from './features/useTableRowSelection';\nimport { useTableSearch } from './features/useTableSearch';\nimport { useTableServerLoading } from './features/useTableServerLoading';\nimport { useTableSettings } from './features/useTableSettings';\nimport { useTableDataListener } from './listeners/useTableDataListener';\nimport { useTableFilterListener } from './listeners/useTableFilterListener';\nimport { useTableFontSizeListener } from './listeners/useTableFontSizeListener';\nimport { useTableRowHeightListener } from './listeners/useTableRowHeightListener';\nimport { useTableRowSelectionListener } from './listeners/useTableRowSelectionListener';\nimport { useTableSearchListener } from './listeners/useTableSearchListener';\nimport { useTableSettingsListener } from './listeners/useTableSettingsListener';\nimport { useTableShortcutsListener } from './listeners/useTableShortcutsListener';\nimport { useTableSortingListener } from './listeners/useTableSortingListener';\nimport { useTableServerLoadingListener } from './listeners/useTableServerLoadingListener';\nimport { useTableManagerInternalColumns } from './types';\nimport { useTableRowDrag } from './features/useTableRowDrag';\nimport { useTableRowDrop } from './features/useTableRowDrop';\n\n/*\n EDITING THIS FILE? READ ME FIRST!\n\n This is a shared, common hook for multiple tables. It's feature set is specifically chosen to support features\n common across those tables. If you are adding a new feature or changing an existing one, before writing any code\n in this file ask yourself the question - is this specific to a given table, or is it common to all of them.\n If you are unsure, ask your team first.\n*/\n\ndeclare module '@tanstack/table-core' {\n interface TableMeta<TData extends RowData> {\n columnFreezing: ReturnType<typeof useTableColumnFreezing>;\n columnOrdering: ReturnType<typeof useTableColumnOrdering>;\n fontSize: ReturnType<typeof useTableFontSize>;\n footer: ReturnType<typeof useTableFooter>;\n length: number;\n printing: ReturnType<typeof useTablePrinting>;\n rowActions: ReturnType<typeof useTableRowActions>;\n rowActive: ReturnType<typeof useTableRowActive>;\n rowClick: ReturnType<typeof useTableRowClick>;\n rowDrag: ReturnType<typeof useTableRowDrag>;\n rowDrop: ReturnType<typeof useTableRowDrop>;\n rowExpansion: ReturnType<typeof useTableRowExpansion>;\n rowGoto: ReturnType<typeof useTableRowGoto>;\n rowGroups: ReturnType<typeof useTableRowGroups>;\n rowHeight: ReturnType<typeof useTableRowHeight>;\n rowIdentityColumnAccessor: (keyof TData)[];\n rowSelection: ReturnType<typeof useTableRowSelection>;\n search: ReturnType<typeof useTableSearch>;\n server: ReturnType<typeof useTableServerLoading>;\n }\n\n interface ColumnMeta<TData extends RowData, TValue> {\n align?: TableColumnAlignment;\n className?: TableColumnClassNameHandler<TData>;\n control?: TableColumnRendererControl<TData>;\n dataType?: TableColumnDataType;\n defaultWidth?: number;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableSearch?: boolean;\n enableTruncate?: boolean;\n filters?: TableFilterComparator[];\n header: string;\n headerClassName?: string;\n menu?: TableColumnMenu;\n renderer?: TableColumnRenderer<TValue, TData>;\n tooltip?: string;\n }\n}\n\nexport function useTableManager<TType = unknown, TMeta = {}>(\n props: TableProps<TType>,\n meta?: Partial<ReactTableMeta<TType>> & TMeta,\n internalColumns?: useTableManagerInternalColumns<TType>\n) {\n // CSS.escape would be best here, but it doesn't seem to work very well\n const safeId = props.id.replace('.', '_');\n // configure table options, merging props with presets\n const options = getTableFeaturePreset(props);\n\n // load any persisted table settings and merge them with any defaults\n const [settings, setSettings] = useTableSettings(\n options.enableSaveSettings,\n safeId,\n props.defaultSettings,\n props.onChangeSettings\n );\n\n // configure common custom features\n const columnFreezing = useTableColumnFreezing(options.enableColumnFreezing);\n const columnOrdering = useTableColumnOrdering(options.enableColumnOrdering);\n const fontSize = useTableFontSize(options.enableFontSize, settings.fontSize);\n const footer = useTableFooter(options.enableFooter);\n const printing = useTablePrinting(options.enablePrinting, safeId);\n const rowActive = useTableRowActive(options.enableRowActive, props.defaultRowActiveIndex);\n const rowActions = useTableRowActions<TType>(options.enableRowActions, props.rowActions, props.rowActionsLength);\n const rowClick = useTableRowClick<TType>(options.enableRowClick, props.onRowClick);\n const rowDrag = useTableRowDrag<TType>(options.enableRowDrag, props.onRowDrag);\n const rowDrop = useTableRowDrop<TType>(options.enableRowDrop, props.onRowDrop);\n const rowExpansion = useTableRowExpansion<TType>(options.enableRowExpansion, props.rowExpansionRenderer);\n const rowGoto = useTableRowGoto(options.enableRowGoto, props.onRowGoto);\n const rowGroups = useTableRowGroups(props.rowActionsForGroup);\n const rowHeight = useTableRowHeight(options.enableRowHeight, settings.rowHeight);\n const rowSelection = useTableRowSelection(options.enableRowSelection);\n const search = useTableSearch(options.enableSearch, settings.excludeUnmatchedRecordsInSearch);\n const server = useTableServerLoading(props.loadPage, props.loadAll, props.pageSize);\n\n // TODO: memoise\n // convert jsx column components into valid table columns\n const { columns, ...defaultState } = mapTableChildrenToColumns<TType>(props, settings, options, internalColumns);\n\n // configure initial table state\n const initialState = useReactTableInitialState<TType>(props, columns, settings, defaultState);\n\n // ensure data is always valid\n const data = props.data ?? [];\n const length = props.length ?? data.length;\n\n const rowIdentityColumnAccessor =\n props.rowIdentityColumnAccessor !== undefined ? [props.rowIdentityColumnAccessor].flat() : [];\n\n // create a react-table instance\n const instance = useReactTable<TType>({\n data,\n columns,\n // configure initial table state\n initialState,\n getCoreRowModel: getCoreRowModel<TType>(),\n // configure react-table built-in features\n ...configureReactTableOptions<TType>(options, props),\n // settings that can be toggled by the user, and therefore require our own state\n enableGlobalFilter: search.enableGlobalFilter,\n // custom context\n meta: {\n // spread features from specific implementations\n ...meta,\n columnFreezing,\n columnOrdering,\n fontSize,\n footer,\n length,\n printing,\n rowActions: rowActions as any, // no other way around ReturnType<typeof X> not supporting generics\n rowActive,\n rowClick: rowClick as any, // no other way around ReturnType<typeof X> not supporting generics\n rowDrag,\n rowDrop: rowDrop as any, // no other way around ReturnType<typeof X> not supporting generics\n rowExpansion: rowExpansion as any, // no other way around ReturnType<typeof X> not supporting generics\n rowIdentityColumnAccessor,\n rowGoto,\n rowGroups: rowGroups as any, // no other way around ReturnType<typeof X> not supporting generics\n rowHeight,\n rowSelection,\n search,\n server,\n } as ReactTableMeta<TType> & TMeta,\n });\n\n // state listeners - we have these so that we don't have to control state outside the table\n useTableDataListener(instance);\n useTableFilterListener(instance, props.onChangeFilter);\n useTableFontSizeListener(instance);\n useTableRowHeightListener(instance);\n useTableRowSelectionListener(instance, props.onRowSelect);\n useTableSearchListener(instance, props.onChangeSearch);\n useTableServerLoadingListener(instance, server.loadPage);\n useTableSettingsListener(instance, setSettings);\n useTableShortcutsListener(instance, props.shortcuts);\n useTableSortingListener(instance, props.onChangeSort);\n\n return {\n id: safeId,\n instance,\n meta: (instance.options.meta ?? {}) as ReactTableMeta<TType> & TMeta,\n state: instance.getState(),\n };\n}\n"],"names":["useTableManager","props","meta","internalColumns","safeId","id","replace","options","getTableFeaturePreset","settings","setSettings","useTableSettings","enableSaveSettings","defaultSettings","onChangeSettings","columnFreezing","useTableColumnFreezing","enableColumnFreezing","columnOrdering","useTableColumnOrdering","enableColumnOrdering","fontSize","useTableFontSize","enableFontSize","footer","useTableFooter","enableFooter","printing","useTablePrinting","enablePrinting","rowActive","useTableRowActive","enableRowActive","defaultRowActiveIndex","rowActions","useTableRowActions","enableRowActions","rowActionsLength","rowClick","useTableRowClick","enableRowClick","onRowClick","rowDrag","useTableRowDrag","enableRowDrag","onRowDrag","rowDrop","useTableRowDrop","enableRowDrop","onRowDrop","rowExpansion","useTableRowExpansion","enableRowExpansion","rowExpansionRenderer","rowGoto","useTableRowGoto","enableRowGoto","onRowGoto","rowGroups","useTableRowGroups","rowActionsForGroup","rowHeight","useTableRowHeight","enableRowHeight","rowSelection","useTableRowSelection","enableRowSelection","search","useTableSearch","enableSearch","excludeUnmatchedRecordsInSearch","server","useTableServerLoading","loadPage","loadAll","pageSize","columns","defaultState","mapTableChildrenToColumns","initialState","useReactTableInitialState","data","_props$data","length","_props$length","rowIdentityColumnAccessor","undefined","flat","instance","useReactTable","getCoreRowModel","configureReactTableOptions","enableGlobalFilter","useTableDataListener","useTableFilterListener","onChangeFilter","useTableFontSizeListener","useTableRowHeightListener","useTableRowSelectionListener","onRowSelect","useTableSearchListener","onChangeSearch","useTableServerLoadingListener","useTableSettingsListener","useTableShortcutsListener","shortcuts","useTableSortingListener","onChangeSort","_instance$options$met","state","getState"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useTableManager.js","sources":["../../../../../../../../src/primitives/Table/useTableManager/useTableManager.ts"],"sourcesContent":["import { useReactTable, TableMeta as ReactTableMeta, RowData, getCoreRowModel } from '@tanstack/react-table';\nimport {\n TableColumnAlignment,\n TableColumnClassNameHandler,\n TableColumnDataType,\n TableColumnMenu,\n TableColumnRenderer,\n TableColumnRendererControl,\n TableFilterComparator,\n TableProps,\n} from '../types';\nimport { useReactTableInitialState, configureReactTableOptions, mapTableChildrenToColumns } from './util/setup';\nimport { getTableFeaturePreset } from './util/presets';\nimport { useTableColumnFreezing } from './features/useTableColumnFreezing';\nimport { useTableColumnOrdering } from './features/useTableColumnOrdering';\nimport { useTableFooter } from './features/useTableFooter';\nimport { useTableFontSize } from './features/useTableFontSize';\nimport { useTablePrinting } from './features/useTablePrinting';\nimport { useTableRowActions } from './features/useTableRowActions';\nimport { useTableRowActive } from './features/useTableRowActive';\nimport { useTableRowClick } from './features/useTableRowClick';\nimport { useTableRowExpansion } from './features/useTableRowExpansion';\nimport { useTableRowGoto } from './features/useTableRowGoto';\nimport { useTableRowGroups } from './features/useTableRowGroups';\nimport { useTableRowHeight } from './features/useTableRowHeight';\nimport { useTableRowSelection } from './features/useTableRowSelection';\nimport { useTableSearch } from './features/useTableSearch';\nimport { useTableServerLoading } from './features/useTableServerLoading';\nimport { useTableSettings } from './features/useTableSettings';\nimport { useTableDataListener } from './listeners/useTableDataListener';\nimport { useTableFilterListener } from './listeners/useTableFilterListener';\nimport { useTableFontSizeListener } from './listeners/useTableFontSizeListener';\nimport { useTableRowHeightListener } from './listeners/useTableRowHeightListener';\nimport { useTableRowSelectionListener } from './listeners/useTableRowSelectionListener';\nimport { useTableSearchListener } from './listeners/useTableSearchListener';\nimport { useTableSettingsListener } from './listeners/useTableSettingsListener';\nimport { useTableShortcutsListener } from './listeners/useTableShortcutsListener';\nimport { useTableSortingListener } from './listeners/useTableSortingListener';\nimport { useTableServerLoadingListener } from './listeners/useTableServerLoadingListener';\nimport { useTableManagerInternalColumns } from './types';\nimport { useTableRowDrag } from './features/useTableRowDrag';\nimport { useTableRowDrop } from './features/useTableRowDrop';\n\n/*\n EDITING THIS FILE? READ ME FIRST!\n\n This is a shared, common hook for multiple tables. It's feature set is specifically chosen to support features\n common across those tables. If you are adding a new feature or changing an existing one, before writing any code\n in this file ask yourself the question - is this specific to a given table, or is it common to all of them.\n If you are unsure, ask your team first.\n*/\n\ndeclare module '@tanstack/table-core' {\n interface TableMeta<TData extends RowData> {\n columnFreezing: ReturnType<typeof useTableColumnFreezing>;\n columnOrdering: ReturnType<typeof useTableColumnOrdering>;\n fontSize: ReturnType<typeof useTableFontSize>;\n footer: ReturnType<typeof useTableFooter>;\n length: number;\n printing: ReturnType<typeof useTablePrinting>;\n rowActions: ReturnType<typeof useTableRowActions>;\n rowActive: ReturnType<typeof useTableRowActive>;\n rowClick: ReturnType<typeof useTableRowClick>;\n rowDrag: ReturnType<typeof useTableRowDrag>;\n rowDrop: ReturnType<typeof useTableRowDrop>;\n rowExpansion: ReturnType<typeof useTableRowExpansion>;\n rowGoto: ReturnType<typeof useTableRowGoto>;\n rowGroups: ReturnType<typeof useTableRowGroups>;\n rowHeight: ReturnType<typeof useTableRowHeight>;\n rowIdentityColumnId?: string;\n rowSelection: ReturnType<typeof useTableRowSelection>;\n search: ReturnType<typeof useTableSearch>;\n server: ReturnType<typeof useTableServerLoading>;\n }\n\n interface ColumnMeta<TData extends RowData, TValue> {\n align?: TableColumnAlignment;\n className?: TableColumnClassNameHandler<TData>;\n control?: TableColumnRendererControl<TData>;\n dataType?: TableColumnDataType;\n defaultWidth?: number;\n enableOrdering?: boolean;\n enablePrinting?: boolean;\n enableSearch?: boolean;\n enableTruncate?: boolean;\n filters?: TableFilterComparator[];\n header: string;\n headerClassName?: string;\n menu?: TableColumnMenu;\n renderer?: TableColumnRenderer<TValue, TData>;\n tooltip?: string;\n }\n}\n\nexport function useTableManager<TType = unknown, TMeta = {}>(\n props: TableProps<TType>,\n meta?: Partial<ReactTableMeta<TType>> & TMeta,\n internalColumns?: useTableManagerInternalColumns<TType>\n) {\n // CSS.escape would be best here, but it doesn't seem to work very well\n const safeId = props.id.replace('.', '_');\n // configure table options, merging props with presets\n const options = getTableFeaturePreset(props);\n\n // load any persisted table settings and merge them with any defaults\n const [settings, setSettings] = useTableSettings(\n options.enableSaveSettings,\n safeId,\n props.defaultSettings,\n props.onChangeSettings\n );\n\n // configure common custom features\n const columnFreezing = useTableColumnFreezing(options.enableColumnFreezing);\n const columnOrdering = useTableColumnOrdering(options.enableColumnOrdering);\n const fontSize = useTableFontSize(options.enableFontSize, settings.fontSize);\n const footer = useTableFooter(options.enableFooter);\n const printing = useTablePrinting(options.enablePrinting, safeId);\n const rowActive = useTableRowActive(options.enableRowActive, props.defaultRowActiveIndex);\n const rowActions = useTableRowActions<TType>(options.enableRowActions, props.rowActions, props.rowActionsLength);\n const rowClick = useTableRowClick<TType>(options.enableRowClick, props.onRowClick);\n const rowDrag = useTableRowDrag<TType>(options.enableRowDrag, props.onRowDrag);\n const rowDrop = useTableRowDrop<TType>(options.enableRowDrop, props.onRowDrop);\n const rowExpansion = useTableRowExpansion<TType>(options.enableRowExpansion, props.rowExpansionRenderer);\n const rowGoto = useTableRowGoto(options.enableRowGoto, props.onRowGoto);\n const rowGroups = useTableRowGroups(props.rowActionsForGroup);\n const rowHeight = useTableRowHeight(options.enableRowHeight, settings.rowHeight);\n const rowSelection = useTableRowSelection(options.enableRowSelection);\n const search = useTableSearch(options.enableSearch, settings.excludeUnmatchedRecordsInSearch);\n const server = useTableServerLoading(props.loadPage, props.loadAll, props.pageSize);\n\n // TODO: memoise\n // convert jsx column components into valid table columns\n const { columns, ...defaultState } = mapTableChildrenToColumns<TType>(props, settings, options, internalColumns);\n\n // configure initial table state\n const initialState = useReactTableInitialState<TType>(props, columns, settings, defaultState);\n\n // ensure data is always valid\n const data = props.data ?? [];\n const length = props.length ?? data.length;\n\n // create a react-table instance\n const instance = useReactTable<TType>({\n data,\n columns,\n // configure initial table state\n initialState,\n getCoreRowModel: getCoreRowModel<TType>(),\n // configure react-table built-in features\n ...configureReactTableOptions<TType>(options, props),\n // settings that can be toggled by the user, and therefore require our own state\n enableGlobalFilter: search.enableGlobalFilter,\n // custom context\n meta: {\n // spread features from specific implementations\n ...meta,\n columnFreezing,\n columnOrdering,\n fontSize,\n footer,\n length,\n printing,\n rowActions: rowActions as any, // no other way around ReturnType<typeof X> not supporting generics\n rowActive,\n rowClick: rowClick as any, // no other way around ReturnType<typeof X> not supporting generics\n rowDrag,\n rowDrop: rowDrop as any, // no other way around ReturnType<typeof X> not supporting generics\n rowExpansion: rowExpansion as any, // no other way around ReturnType<typeof X> not supporting generics\n rowIdentityColumnId: props.rowIdentityColumnId,\n rowGoto,\n rowGroups: rowGroups as any, // no other way around ReturnType<typeof X> not supporting generics\n rowHeight,\n rowSelection,\n search,\n server,\n } as ReactTableMeta<TType> & TMeta,\n });\n\n // state listeners - we have these so that we don't have to control state outside the table\n useTableDataListener(instance);\n useTableFilterListener(instance, props.onChangeFilter);\n useTableFontSizeListener(instance);\n useTableRowHeightListener(instance);\n useTableRowSelectionListener(instance, props.onRowSelect);\n useTableSearchListener(instance, props.onChangeSearch);\n useTableServerLoadingListener(instance, server.loadPage);\n useTableSettingsListener(instance, setSettings);\n useTableShortcutsListener(instance, props.shortcuts);\n useTableSortingListener(instance, props.onChangeSort);\n\n return {\n id: safeId,\n instance,\n meta: (instance.options.meta ?? {}) as ReactTableMeta<TType> & TMeta,\n state: instance.getState(),\n };\n}\n"],"names":["useTableManager","props","meta","internalColumns","safeId","id","replace","options","getTableFeaturePreset","settings","setSettings","useTableSettings","enableSaveSettings","defaultSettings","onChangeSettings","columnFreezing","useTableColumnFreezing","enableColumnFreezing","columnOrdering","useTableColumnOrdering","enableColumnOrdering","fontSize","useTableFontSize","enableFontSize","footer","useTableFooter","enableFooter","printing","useTablePrinting","enablePrinting","rowActive","useTableRowActive","enableRowActive","defaultRowActiveIndex","rowActions","useTableRowActions","enableRowActions","rowActionsLength","rowClick","useTableRowClick","enableRowClick","onRowClick","rowDrag","useTableRowDrag","enableRowDrag","onRowDrag","rowDrop","useTableRowDrop","enableRowDrop","onRowDrop","rowExpansion","useTableRowExpansion","enableRowExpansion","rowExpansionRenderer","rowGoto","useTableRowGoto","enableRowGoto","onRowGoto","rowGroups","useTableRowGroups","rowActionsForGroup","rowHeight","useTableRowHeight","enableRowHeight","rowSelection","useTableRowSelection","enableRowSelection","search","useTableSearch","enableSearch","excludeUnmatchedRecordsInSearch","server","useTableServerLoading","loadPage","loadAll","pageSize","columns","defaultState","mapTableChildrenToColumns","initialState","useReactTableInitialState","data","_props$data","length","_props$length","instance","useReactTable","getCoreRowModel","configureReactTableOptions","enableGlobalFilter","rowIdentityColumnId","useTableDataListener","useTableFilterListener","onChangeFilter","useTableFontSizeListener","useTableRowHeightListener","useTableRowSelectionListener","onRowSelect","useTableSearchListener","onChangeSearch","useTableServerLoadingListener","useTableSettingsListener","useTableShortcutsListener","shortcuts","useTableSortingListener","onChangeSort","_instance$options$met","state","getState"],"mappings":"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"}
|
|
@@ -183,13 +183,6 @@ function mapTableChildrenToColumns(props, settings, options, internalColumns) {
|
|
|
183
183
|
function configureReactTableOptions(options, props) {
|
|
184
184
|
var _options$enableFilter, _options$enableColumn, _options$enableRowExp, _options$enableColumn2, _options$enableColumn3, _options$enableSortin;
|
|
185
185
|
const enableRowSelection = options.enableRowSelection || options.enableRowSelectionSingle;
|
|
186
|
-
const getRowIdentityColumnAccessor = () => {
|
|
187
|
-
if (!props.rowIdentityColumnAccessor) {
|
|
188
|
-
return undefined;
|
|
189
|
-
}
|
|
190
|
-
const rowIdentityColumnAccessors = [props.rowIdentityColumnAccessor].flat();
|
|
191
|
-
return originalRow => rowIdentityColumnAccessors.map(identityColumnAccessor => String(originalRow[identityColumnAccessor])).join('_');
|
|
192
|
-
};
|
|
193
186
|
const tableOptions = {
|
|
194
187
|
defaultColumn: {
|
|
195
188
|
enableColumnFilter: options.enableFiltering || true,
|
|
@@ -214,8 +207,6 @@ function configureReactTableOptions(options, props) {
|
|
|
214
207
|
// models for default features
|
|
215
208
|
getExpandedRowModel: getExpandedRowModel(),
|
|
216
209
|
getGroupedRowModel: getGroupedRowModel(),
|
|
217
|
-
// Use row indentity column values as id for each row
|
|
218
|
-
getRowId: getRowIdentityColumnAccessor(),
|
|
219
210
|
groupedColumnMode: false
|
|
220
211
|
};
|
|
221
212
|
if (tableOptions.enableColumnResizing) {
|
|
@@ -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';\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 getRowIdentityColumnAccessor = () => {\n if (!props.rowIdentityColumnAccessor) {\n return undefined;\n }\n\n const rowIdentityColumnAccessors = [props.rowIdentityColumnAccessor].flat() as (keyof TType)[];\n\n return (originalRow: TType) =>\n rowIdentityColumnAccessors.map(identityColumnAccessor => String(originalRow[identityColumnAccessor])).join('_');\n };\n\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 // Use row indentity column values as id for each row\n getRowId: getRowIdentityColumnAccessor(),\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","getRowIdentityColumnAccessor","rowIdentityColumnAccessor","rowIdentityColumnAccessors","flat","originalRow","map","identityColumnAccessor","String","join","tableOptions","defaultColumn","enableColumnHiding","enableColumnResizing","enableColumnFilters","_options$enableFilter","_options$enableColumn","enableExpanding","_options$enableRowExp","_options$enableColumn2","enablePinning","_options$enableColumn3","enableColumnFreezing","enableMultiRowSelection","_options$enableSortin","getExpandedRowModel","getGroupedRowModel","getRowId","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,\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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"}
|
|
@@ -21,7 +21,7 @@ const getIndexOfFirstChildOverflowingParent = (element, overscan = 0) => {
|
|
|
21
21
|
}
|
|
22
22
|
return boundaryChildIndex;
|
|
23
23
|
};
|
|
24
|
-
const getNextFocussableElement =
|
|
24
|
+
const getNextFocussableElement = currentElement => {
|
|
25
25
|
if (!currentElement) {
|
|
26
26
|
return null;
|
|
27
27
|
}
|
|
@@ -31,7 +31,7 @@ const getNextFocussableElement = (currentElement, direction = 1) => {
|
|
|
31
31
|
if (currentElementIndex !== -1 && currentElementIndex === focussableElements.length - 1) {
|
|
32
32
|
return null;
|
|
33
33
|
}
|
|
34
|
-
return focussableElements[currentElementIndex +
|
|
34
|
+
return focussableElements[currentElementIndex + 1];
|
|
35
35
|
};
|
|
36
36
|
const getOverlaySelector = element => {
|
|
37
37
|
switch (element === null || element === void 0 ? void 0 : element.getAttribute('role')) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sources":["../../../../../../src/utils/dom.ts"],"sourcesContent":["// taken from react-aria\nconst FOCUSABLE_ELEMENTS = [\n 'input:not([disabled]):not([type=hidden])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]',\n '[tabindex]:not([tabindex=\"-1\"]):not([disabled])',\n 'details:not([disabled])',\n 'summary:not(:disabled)',\n];\n\nexport const hasFocusableElement = (element: HTMLElement | null) => {\n if (!element) {\n return null;\n }\n\n return !!element.querySelector(FOCUSABLE_ELEMENTS.join(','));\n};\n\nexport const isOverflowing = (element: HTMLElement | null) =>\n element !== null ? element.scrollWidth > element.offsetWidth : false;\n\nexport const getIndexOfFirstChildOverflowingParent = (element: HTMLElement, overscan = 0) => {\n let index = 0;\n let boundaryChildIndex: number | null = null;\n const clientRect = element.getBoundingClientRect();\n\n for (const child of Array.from(element.children)) {\n const right = child.getBoundingClientRect().right - clientRect.left;\n const width = clientRect.width - overscan;\n\n if (right > width) {\n boundaryChildIndex = index;\n break;\n }\n index++;\n }\n\n return boundaryChildIndex;\n};\n\nexport const getNextFocussableElement = (currentElement: HTMLElement | null
|
|
1
|
+
{"version":3,"file":"dom.js","sources":["../../../../../../src/utils/dom.ts"],"sourcesContent":["// taken from react-aria\nconst FOCUSABLE_ELEMENTS = [\n 'input:not([disabled]):not([type=hidden])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n 'button:not([disabled])',\n 'a[href]',\n 'area[href]',\n 'summary',\n 'iframe',\n 'object',\n 'embed',\n 'audio[controls]',\n 'video[controls]',\n '[contenteditable]',\n '[tabindex]:not([tabindex=\"-1\"]):not([disabled])',\n 'details:not([disabled])',\n 'summary:not(:disabled)',\n];\n\nexport const hasFocusableElement = (element: HTMLElement | null) => {\n if (!element) {\n return null;\n }\n\n return !!element.querySelector(FOCUSABLE_ELEMENTS.join(','));\n};\n\nexport const isOverflowing = (element: HTMLElement | null) =>\n element !== null ? element.scrollWidth > element.offsetWidth : false;\n\nexport const getIndexOfFirstChildOverflowingParent = (element: HTMLElement, overscan = 0) => {\n let index = 0;\n let boundaryChildIndex: number | null = null;\n const clientRect = element.getBoundingClientRect();\n\n for (const child of Array.from(element.children)) {\n const right = child.getBoundingClientRect().right - clientRect.left;\n const width = clientRect.width - overscan;\n\n if (right > width) {\n boundaryChildIndex = index;\n break;\n }\n index++;\n }\n\n return boundaryChildIndex;\n};\n\nexport const getNextFocussableElement = (currentElement: HTMLElement | null) => {\n if (!currentElement) {\n return null;\n }\n\n const focussableElements = [...document.querySelectorAll<HTMLElement>(FOCUSABLE_ELEMENTS.join(','))];\n const currentElementIndex = focussableElements.indexOf(currentElement);\n\n // If the currentElement is not in the focussable elements list or it is the last element\n if (currentElementIndex !== -1 && currentElementIndex === focussableElements.length - 1) {\n return null;\n }\n\n return focussableElements[currentElementIndex + 1];\n};\n\nconst getOverlaySelector = (element: Element | null) => {\n switch (element?.getAttribute('role')) {\n case 'dialog':\n return `[aria-controls='${element.id}']`;\n\n case 'menu':\n return `#${element.getAttribute('aria-labelledby')}`;\n\n default:\n return undefined;\n }\n};\n\nexport function isElementInsideOrTriggeredFromContainer(element: Element | null, container: Element | null) {\n const selector = getOverlaySelector(element) ?? getOverlaySelector(element?.closest('[role=dialog],[role=menu]') ?? null);\n\n if (selector) {\n if (container?.querySelector(selector)) {\n return true;\n }\n\n const elementInDocument = document.querySelector(selector);\n\n // if the element does exist, see if it is itself connected to somethng that was triggered from the container\n if (elementInDocument) {\n return isElementInsideOrTriggeredFromContainer(elementInDocument, container);\n }\n\n return false;\n }\n\n return !!container?.contains(element);\n}\n\nexport function isElementInsideOverlay(element: Element | null) {\n return !!element?.closest('[role=dialog],[role=menu]');\n}\n\nexport function isSiblingElementInsideSameParentOverlay(element: Element | null, sibling: Element | null) {\n return !!element?.closest('[role=dialog],[role=menu]')?.contains(sibling);\n}\n\nexport function isElementInteractive(element: Element | null) {\n if (!element) {\n return false;\n }\n\n return (\n ['A', 'BUTTON', 'INPUT', 'TEXTAREA', 'SELECT', 'LABEL', 'OPTION'].includes(element.tagName) &&\n !(element as HTMLElement).hidden &&\n !(element as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement | HTMLButtonElement).disabled &&\n !(element as HTMLInputElement | HTMLTextAreaElement).readOnly\n );\n}\n\nexport function isElementInsideTable3OrReport(element: Element | null) {\n return !!element?.closest('[data-taco^=table]');\n}\n"],"names":["FOCUSABLE_ELEMENTS","hasFocusableElement","element","querySelector","join","getIndexOfFirstChildOverflowingParent","overscan","index","boundaryChildIndex","clientRect","getBoundingClientRect","child","Array","from","children","right","left","width","getNextFocussableElement","currentElement","focussableElements","document","querySelectorAll","currentElementIndex","indexOf","length","getOverlaySelector","getAttribute","id","undefined","isElementInsideOrTriggeredFromContainer","container","selector","_getOverlaySelector","_element$closest","closest","elementInDocument","contains","isElementInsideOverlay","isSiblingElementInsideSameParentOverlay","sibling","_element$closest2","isElementInteractive","includes","tagName","hidden","disabled","readOnly","isElementInsideTable3OrReport"],"mappings":"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"}
|
|
@@ -160,7 +160,7 @@ export declare type TableCommonProps<TType = unknown> = TableFeatureProps<TType>
|
|
|
160
160
|
rowActionsForGroup?: TableRowActionGroupRenderer<TType>[];
|
|
161
161
|
rowActionsLength?: number;
|
|
162
162
|
rowExpansionRenderer?: TableRowExpansionRenderer<TType>;
|
|
163
|
-
|
|
163
|
+
rowIdentityColumnId?: string;
|
|
164
164
|
shortcuts?: TableShortcuts<TType>;
|
|
165
165
|
toolbarLeft?: JSX.Element;
|
|
166
166
|
toolbarRight?: JSX.Element;
|
|
@@ -35,7 +35,7 @@ declare module '@tanstack/table-core' {
|
|
|
35
35
|
rowGoto: ReturnType<typeof useTableRowGoto>;
|
|
36
36
|
rowGroups: ReturnType<typeof useTableRowGroups>;
|
|
37
37
|
rowHeight: ReturnType<typeof useTableRowHeight>;
|
|
38
|
-
|
|
38
|
+
rowIdentityColumnId?: string;
|
|
39
39
|
rowSelection: ReturnType<typeof useTableRowSelection>;
|
|
40
40
|
search: ReturnType<typeof useTableSearch>;
|
|
41
41
|
server: ReturnType<typeof useTableServerLoading>;
|