@redis-ui/table 2.12.0 → 2.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/dist/Table/Table.cjs +70 -145
  2. package/dist/Table/Table.context.cjs +16 -1
  3. package/dist/Table/Table.context.d.ts +22 -4
  4. package/dist/Table/Table.context.js +16 -1
  5. package/dist/Table/Table.d.ts +83 -5
  6. package/dist/Table/Table.js +70 -145
  7. package/dist/Table/Table.style.cjs +10 -5
  8. package/dist/Table/Table.style.d.ts +3 -3
  9. package/dist/Table/Table.style.js +10 -5
  10. package/dist/Table/Table.types.d.ts +20 -38
  11. package/dist/Table/components/Compose/Compose.cjs +42 -0
  12. package/dist/Table/components/Compose/Compose.d.ts +13 -0
  13. package/dist/Table/components/Compose/Compose.js +42 -0
  14. package/dist/Table/components/EmptyState/EmptyState.cjs +31 -0
  15. package/dist/Table/components/EmptyState/EmptyState.d.ts +6 -0
  16. package/dist/Table/components/EmptyState/EmptyState.js +31 -0
  17. package/dist/Table/components/HiddenCaption/HiddenCaption.cjs +13 -0
  18. package/dist/Table/components/HiddenCaption/HiddenCaption.d.ts +3 -0
  19. package/dist/Table/components/HiddenCaption/HiddenCaption.js +13 -0
  20. package/dist/Table/components/PluggableTable/PluggableTable.cjs +19 -0
  21. package/dist/Table/components/PluggableTable/PluggableTable.d.ts +10 -0
  22. package/dist/Table/components/PluggableTable/PluggableTable.js +19 -0
  23. package/dist/Table/components/PluggableTable/compositionComponents.cjs +21 -0
  24. package/dist/Table/components/PluggableTable/compositionComponents.d.ts +67 -0
  25. package/dist/Table/components/PluggableTable/compositionComponents.js +21 -0
  26. package/dist/Table/components/TableBody/TableBody.cjs +33 -0
  27. package/dist/Table/components/TableBody/TableBody.d.ts +23 -0
  28. package/dist/Table/components/TableBody/TableBody.js +33 -0
  29. package/dist/Table/components/TableBody/components/Compose/Compose.cjs +10 -0
  30. package/dist/Table/components/TableBody/components/Compose/Compose.d.ts +3 -0
  31. package/dist/Table/components/TableBody/components/Compose/Compose.js +10 -0
  32. package/dist/Table/components/TableBodyCell/TableBodyCell.cjs +22 -0
  33. package/dist/Table/components/TableBodyCell/TableBodyCell.d.ts +12 -0
  34. package/dist/Table/components/TableBodyCell/TableBodyCell.js +22 -0
  35. package/dist/Table/components/TableBodyCell/components/Compose/Compose.cjs +5 -0
  36. package/dist/Table/components/TableBodyCell/components/Compose/Compose.d.ts +3 -0
  37. package/dist/Table/components/TableBodyCell/components/Compose/Compose.js +5 -0
  38. package/dist/Table/components/TableBodyRow/TableBodyRow.cjs +38 -0
  39. package/dist/Table/components/TableBodyRow/TableBodyRow.d.ts +20 -0
  40. package/dist/Table/components/TableBodyRow/TableBodyRow.js +38 -0
  41. package/dist/Table/components/TableBodyRow/TableBodyRowExpandable.cjs +33 -0
  42. package/dist/Table/components/TableBodyRow/TableBodyRowExpandable.d.ts +2 -0
  43. package/dist/Table/components/TableBodyRow/TableBodyRowExpandable.js +33 -0
  44. package/dist/Table/components/TableBodyRow/components/Compose/Compose.cjs +17 -0
  45. package/dist/Table/components/TableBodyRow/components/Compose/Compose.d.ts +4 -0
  46. package/dist/Table/components/TableBodyRow/components/Compose/Compose.js +17 -0
  47. package/dist/Table/components/TableExpandedRow/TableAnimatedExpandedRow.cjs +3 -4
  48. package/dist/Table/components/TableExpandedRow/TableAnimatedExpandedRow.d.ts +1 -1
  49. package/dist/Table/components/TableExpandedRow/TableAnimatedExpandedRow.js +3 -4
  50. package/dist/Table/components/TableExpandedRow/TableExpandedRow.cjs +9 -4
  51. package/dist/Table/components/TableExpandedRow/TableExpandedRow.d.ts +1 -1
  52. package/dist/Table/components/TableExpandedRow/TableExpandedRow.js +9 -4
  53. package/dist/Table/components/TableExpandedRow/TableExpandedRow.types.d.ts +3 -5
  54. package/dist/Table/components/TableHeader/TableHeader.cjs +28 -0
  55. package/dist/Table/components/TableHeader/TableHeader.d.ts +21 -0
  56. package/dist/Table/components/TableHeader/TableHeader.js +28 -0
  57. package/dist/Table/components/TableHeader/components/Compose/Compose.cjs +5 -0
  58. package/dist/Table/components/TableHeader/components/Compose/Compose.d.ts +3 -0
  59. package/dist/Table/components/TableHeader/components/Compose/Compose.js +5 -0
  60. package/dist/Table/components/TableHeaderCell/SRSortingNotification.cjs +19 -0
  61. package/dist/Table/components/TableHeaderCell/SRSortingNotification.d.ts +1 -0
  62. package/dist/Table/components/TableHeaderCell/SRSortingNotification.js +19 -0
  63. package/dist/Table/components/TableHeaderCell/TableHeaderCell.cjs +19 -33
  64. package/dist/Table/components/TableHeaderCell/TableHeaderCell.context.cjs +15 -0
  65. package/dist/Table/components/TableHeaderCell/TableHeaderCell.context.d.ts +8 -0
  66. package/dist/Table/components/TableHeaderCell/TableHeaderCell.context.js +15 -0
  67. package/dist/Table/components/TableHeaderCell/TableHeaderCell.d.ts +16 -4
  68. package/dist/Table/components/TableHeaderCell/TableHeaderCell.js +19 -33
  69. package/dist/Table/components/TableHeaderCell/TableHeaderCell.test.d.ts +1 -0
  70. package/dist/Table/components/TableHeaderCell/TableHeaderCell.utils.cjs +0 -22
  71. package/dist/Table/components/TableHeaderCell/TableHeaderCell.utils.d.ts +0 -1
  72. package/dist/Table/components/TableHeaderCell/TableHeaderCell.utils.js +1 -23
  73. package/dist/Table/components/TableHeaderCell/components/Compose/Compose.cjs +40 -0
  74. package/dist/Table/components/TableHeaderCell/components/Compose/Compose.d.ts +9 -0
  75. package/dist/Table/components/TableHeaderCell/components/Compose/Compose.js +40 -0
  76. package/dist/Table/components/TableHeaderCell/components/Heading/Heading.cjs +34 -0
  77. package/dist/Table/components/TableHeaderCell/components/Heading/Heading.d.ts +5 -0
  78. package/dist/Table/components/TableHeaderCell/components/Heading/Heading.js +34 -0
  79. package/dist/Table/components/TableHeaderCell/components/SortableHeading/SortableHeading.cjs +16 -0
  80. package/dist/Table/components/TableHeaderCell/components/SortableHeading/SortableHeading.d.ts +8 -0
  81. package/dist/Table/components/TableHeaderCell/components/SortableHeading/SortableHeading.js +16 -0
  82. package/dist/Table/components/TableHeaderCell/components/SortableHeading/components/Compose/Compose.cjs +23 -0
  83. package/dist/Table/components/TableHeaderCell/components/SortableHeading/components/Compose/Compose.d.ts +5 -0
  84. package/dist/Table/components/TableHeaderCell/components/SortableHeading/components/Compose/Compose.js +23 -0
  85. package/dist/Table/components/TableHeaderCell/components/SortableHeading/components/SortIndicator/SortIndicator.cjs +6 -0
  86. package/dist/Table/components/TableHeaderCell/components/SortableHeading/components/SortIndicator/SortIndicator.d.ts +2 -0
  87. package/dist/Table/components/TableHeaderCell/components/SortableHeading/components/SortIndicator/SortIndicator.js +6 -0
  88. package/dist/Table/components/TableHeaderRow/TableHeaderRow.cjs +27 -0
  89. package/dist/Table/components/TableHeaderRow/TableHeaderRow.d.ts +12 -0
  90. package/dist/Table/components/TableHeaderRow/TableHeaderRow.js +27 -0
  91. package/dist/Table/components/TableHeaderRow/components/Compose/Compose.cjs +5 -0
  92. package/dist/Table/components/TableHeaderRow/components/Compose/Compose.d.ts +3 -0
  93. package/dist/Table/components/TableHeaderRow/components/Compose/Compose.js +5 -0
  94. package/dist/Table/components/TablePagination/TablePagination.cjs +65 -99
  95. package/dist/Table/components/TablePagination/TablePagination.d.ts +23 -3
  96. package/dist/Table/components/TablePagination/TablePagination.js +66 -100
  97. package/dist/Table/components/TablePagination/TablePagination.style.cjs +70 -50
  98. package/dist/Table/components/TablePagination/TablePagination.style.d.ts +17 -50
  99. package/dist/Table/components/TablePagination/TablePagination.style.js +72 -52
  100. package/dist/Table/components/TablePagination/components/Compose/Compose.cjs +41 -0
  101. package/dist/Table/components/TablePagination/components/Compose/Compose.d.ts +3 -0
  102. package/dist/Table/components/TablePagination/components/Compose/Compose.js +41 -0
  103. package/dist/Table/components/TableRoot/TableRoot.cjs +5 -0
  104. package/dist/Table/components/TableRoot/TableRoot.d.ts +1 -0
  105. package/dist/Table/components/TableRoot/TableRoot.js +5 -0
  106. package/dist/Table/index.d.ts +3 -6
  107. package/dist/Table/plugins/ClickableRowPlugin.cjs +48 -0
  108. package/dist/Table/plugins/ClickableRowPlugin.d.ts +25 -0
  109. package/dist/Table/plugins/ClickableRowPlugin.js +48 -0
  110. package/dist/Table/plugins/ExpandableRowPlugin.cjs +38 -0
  111. package/dist/Table/plugins/ExpandableRowPlugin.d.ts +22 -0
  112. package/dist/Table/plugins/ExpandableRowPlugin.js +38 -0
  113. package/dist/Table/plugins/PaginationPlugin.cjs +45 -0
  114. package/dist/Table/plugins/PaginationPlugin.d.ts +16 -0
  115. package/dist/Table/plugins/PaginationPlugin.js +45 -0
  116. package/dist/Table/plugins/RowSelectionPlugin.cjs +28 -0
  117. package/dist/Table/plugins/RowSelectionPlugin.d.ts +12 -0
  118. package/dist/Table/plugins/RowSelectionPlugin.js +28 -0
  119. package/dist/Table/plugins/SortingPlugin.cjs +44 -0
  120. package/dist/Table/plugins/SortingPlugin.d.ts +18 -0
  121. package/dist/Table/plugins/SortingPlugin.js +44 -0
  122. package/dist/Table/tanStackExtendedTypes.d.ts +11 -0
  123. package/dist/Table/utils/plugin.utils.cjs +49 -0
  124. package/dist/Table/utils/plugin.utils.d.ts +17 -0
  125. package/dist/Table/utils/plugin.utils.js +49 -0
  126. package/dist/Table/utils/plugin.utils.test.d.ts +1 -0
  127. package/dist/index.cjs +60 -0
  128. package/dist/index.js +61 -1
  129. package/dist/node_modules/@tanstack/react-table/build/lib/index.cjs +7 -0
  130. package/dist/node_modules/@tanstack/react-table/build/lib/index.js +8 -1
  131. package/dist/node_modules/@tanstack/table-core/build/lib/index.cjs +361 -4
  132. package/dist/node_modules/@tanstack/table-core/build/lib/index.js +361 -4
  133. package/package.json +6 -5
  134. package/dist/Table/components/EmptyStateRow/EmptyStateRow.cjs +0 -16
  135. package/dist/Table/components/EmptyStateRow/EmptyStateRow.d.ts +0 -8
  136. package/dist/Table/components/EmptyStateRow/EmptyStateRow.js +0 -16
  137. package/dist/node_modules/@radix-ui/react-id/dist/index.cjs +0 -32
  138. package/dist/node_modules/@radix-ui/react-id/dist/index.js +0 -14
  139. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.cjs +0 -24
  140. package/dist/node_modules/@radix-ui/react-use-layout-effect/dist/index.js +0 -6
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const Table_style = require("../../Table.style.cjs");
4
+ const TableRoot = Table_style.Table;
5
+ exports.TableRoot = TableRoot;
@@ -0,0 +1 @@
1
+ export declare const TableRoot: import("styled-components").StyledComponent<"table", any, {}, never>;
@@ -0,0 +1,5 @@
1
+ import { Table } from "../../Table.style.js";
2
+ const TableRoot = Table;
3
+ export {
4
+ TableRoot
5
+ };
@@ -1,8 +1,5 @@
1
1
  export { default as Table } from './Table';
2
2
  export { ShowOnRowHover } from './components/ShowOnRowHover/ShowOnRowHover.style';
3
- export type { ColumnDefinition } from './Table.types';
4
- export type { RowDefinition } from './Table.types';
5
- export type { CellDefinition } from './Table.types';
6
- export type { PaginationTypes } from './Table.types';
7
- export type { SortingTypes } from './Table.types';
8
- export { useTableContext } from './Table.context';
3
+ export * from './Table.types';
4
+ export * from './Table.context';
5
+ export { type TablePluginData, buildPluginContext } from './utils/plugin.utils';
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const redisUiComponents = require("@redislabsdev/redis-ui-components");
4
+ const plugin_utils = require("../utils/plugin.utils.cjs");
5
+ const Table_context = require("../Table.context.cjs");
6
+ const getTrue = () => true;
7
+ const TableClickableRowContextKey = "clickableRow";
8
+ const useClickableRowPlugin = ({
9
+ getCanRowClick = getTrue,
10
+ onRowClick,
11
+ shouldClickOnEnter = false
12
+ }) => {
13
+ return onRowClick ? {
14
+ tableOptions: {},
15
+ context: plugin_utils.buildPluginContext(TableClickableRowContextKey, {
16
+ getCanRowClick,
17
+ onRowClick,
18
+ shouldClickOnEnter
19
+ })
20
+ } : void 0;
21
+ };
22
+ const useClickableRowContext = () => Table_context.usePluginContext(TableClickableRowContextKey);
23
+ const useHandleClickableRow = ({
24
+ row,
25
+ onClick,
26
+ onKeyDown
27
+ }) => {
28
+ const {
29
+ getCanRowClick,
30
+ onRowClick,
31
+ shouldClickOnEnter
32
+ } = useClickableRowContext() || {};
33
+ const handleClick = redisUiComponents.combineHandlers(onRowClick && (getCanRowClick == null ? void 0 : getCanRowClick(row)) ? () => onRowClick(row) : void 0, onClick);
34
+ const handleKeyDown = redisUiComponents.combineHandlers(shouldClickOnEnter && handleClick ? (event) => {
35
+ var _a;
36
+ if (event.key === "Enter" && event.target === event.currentTarget) {
37
+ (_a = event.currentTarget) == null ? void 0 : _a.click();
38
+ }
39
+ } : void 0, onKeyDown);
40
+ return {
41
+ onClick: handleClick,
42
+ onKeyDown: handleKeyDown
43
+ };
44
+ };
45
+ exports.TableClickableRowContextKey = TableClickableRowContextKey;
46
+ exports.useClickableRowContext = useClickableRowContext;
47
+ exports.useClickableRowPlugin = useClickableRowPlugin;
48
+ exports.useHandleClickableRow = useHandleClickableRow;
@@ -0,0 +1,25 @@
1
+ import { KeyboardEventHandler, MouseEventHandler } from 'react';
2
+ import { type Row } from '@tanstack/react-table';
3
+ import { TablePluginData } from '../utils/plugin.utils';
4
+ export declare const TableClickableRowContextKey = "clickableRow";
5
+ export type TableClickableRowContext<T extends object> = {
6
+ /** Allows individual rows to be clickable */
7
+ getCanRowClick: (row: Row<T>) => boolean;
8
+ /** Handles click on the row */
9
+ onRowClick: (row: Row<T>) => void;
10
+ /** Allows simulating click on the row, when pressing Enter key */
11
+ shouldClickOnEnter: boolean;
12
+ };
13
+ export type TableClickableRowParams<T extends object> = Partial<TableClickableRowContext<T>>;
14
+ export declare const useClickableRowPlugin: <T extends object>({ getCanRowClick, onRowClick, shouldClickOnEnter }: Partial<TableClickableRowContext<T>>) => TablePluginData<T>;
15
+ export declare const useClickableRowContext: <T extends object>() => TableClickableRowContext<T> | undefined;
16
+ type UseHandleClickableRowParams<T extends object> = {
17
+ row: Row<T>;
18
+ onClick?: MouseEventHandler<HTMLTableRowElement>;
19
+ onKeyDown?: KeyboardEventHandler<HTMLTableRowElement>;
20
+ };
21
+ export declare const useHandleClickableRow: <T extends object>({ row, onClick, onKeyDown }: UseHandleClickableRowParams<T>) => {
22
+ onClick: MouseEventHandler<HTMLTableRowElement> | undefined;
23
+ onKeyDown: ((event: import("react").KeyboardEvent<HTMLTableRowElement>) => void) | undefined;
24
+ };
25
+ export {};
@@ -0,0 +1,48 @@
1
+ import { combineHandlers } from "@redislabsdev/redis-ui-components";
2
+ import { buildPluginContext } from "../utils/plugin.utils.js";
3
+ import { usePluginContext } from "../Table.context.js";
4
+ const getTrue = () => true;
5
+ const TableClickableRowContextKey = "clickableRow";
6
+ const useClickableRowPlugin = ({
7
+ getCanRowClick = getTrue,
8
+ onRowClick,
9
+ shouldClickOnEnter = false
10
+ }) => {
11
+ return onRowClick ? {
12
+ tableOptions: {},
13
+ context: buildPluginContext(TableClickableRowContextKey, {
14
+ getCanRowClick,
15
+ onRowClick,
16
+ shouldClickOnEnter
17
+ })
18
+ } : void 0;
19
+ };
20
+ const useClickableRowContext = () => usePluginContext(TableClickableRowContextKey);
21
+ const useHandleClickableRow = ({
22
+ row,
23
+ onClick,
24
+ onKeyDown
25
+ }) => {
26
+ const {
27
+ getCanRowClick,
28
+ onRowClick,
29
+ shouldClickOnEnter
30
+ } = useClickableRowContext() || {};
31
+ const handleClick = combineHandlers(onRowClick && (getCanRowClick == null ? void 0 : getCanRowClick(row)) ? () => onRowClick(row) : void 0, onClick);
32
+ const handleKeyDown = combineHandlers(shouldClickOnEnter && handleClick ? (event) => {
33
+ var _a;
34
+ if (event.key === "Enter" && event.target === event.currentTarget) {
35
+ (_a = event.currentTarget) == null ? void 0 : _a.click();
36
+ }
37
+ } : void 0, onKeyDown);
38
+ return {
39
+ onClick: handleClick,
40
+ onKeyDown: handleKeyDown
41
+ };
42
+ };
43
+ export {
44
+ TableClickableRowContextKey,
45
+ useClickableRowContext,
46
+ useClickableRowPlugin,
47
+ useHandleClickableRow
48
+ };
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const plugin_utils = require("../utils/plugin.utils.cjs");
4
+ const ClickableRowPlugin = require("./ClickableRowPlugin.cjs");
5
+ const Table_context = require("../Table.context.cjs");
6
+ const index = require("../../node_modules/@tanstack/table-core/build/lib/index.cjs");
7
+ const getTrue = () => true;
8
+ const TableExpandableRowContextKey = "expandableRow";
9
+ const useExpandableRowPlugin = ({
10
+ getRowCanExpand,
11
+ renderExpandedRow,
12
+ expandRowOnClick,
13
+ expandedRowComponent
14
+ }) => {
15
+ const clickablePluginData = ClickableRowPlugin.useClickableRowPlugin({
16
+ getCanRowClick: (row) => !!(expandRowOnClick && row.getCanExpand()),
17
+ onRowClick: (row) => row.toggleExpanded(),
18
+ shouldClickOnEnter: true
19
+ });
20
+ const isExpandable = !!renderExpandedRow;
21
+ return isExpandable ? {
22
+ tableOptions: {
23
+ getExpandedRowModel: index.getExpandedRowModel(),
24
+ getRowCanExpand: getRowCanExpand || getTrue
25
+ },
26
+ context: {
27
+ ...plugin_utils.buildPluginContext(TableExpandableRowContextKey, {
28
+ renderExpandedRow,
29
+ expandedRowComponent
30
+ }),
31
+ ...expandRowOnClick ? clickablePluginData == null ? void 0 : clickablePluginData.context : null
32
+ }
33
+ } : void 0;
34
+ };
35
+ const useExpandableRowContext = () => Table_context.usePluginContext(TableExpandableRowContextKey);
36
+ exports.TableExpandableRowContextKey = TableExpandableRowContextKey;
37
+ exports.useExpandableRowContext = useExpandableRowContext;
38
+ exports.useExpandableRowPlugin = useExpandableRowPlugin;
@@ -0,0 +1,22 @@
1
+ import { ComponentType, ReactNode } from 'react';
2
+ import { type Row } from '@tanstack/react-table';
3
+ import { TablePluginData } from '../utils/plugin.utils';
4
+ import type { TableExpandedRowProps } from '../components/TableExpandedRow';
5
+ export declare const TableExpandableRowContextKey = "expandableRow";
6
+ export type TableExpandableRowContext<T extends object> = {
7
+ /** Renders content of expanded part */
8
+ renderExpandedRow?: (row: Row<T>) => ReactNode;
9
+ /**
10
+ * Overrides whole expanded part component.<br/>
11
+ * There are 2 predefined components `Table.ExpandedRow` (default) and `Table.AnimatedExpandedRow`
12
+ */
13
+ expandedRowComponent?: ComponentType<TableExpandedRowProps<T>>;
14
+ };
15
+ export interface TableExpandableRowParams<T extends object> extends TableExpandableRowContext<T> {
16
+ /** Allows expanding row by Click on whole row and by pressing Enter, when row is focused */
17
+ expandRowOnClick?: boolean;
18
+ /** Allows individual rows to be expandable */
19
+ getRowCanExpand?: (row: Row<T>) => boolean;
20
+ }
21
+ export declare const useExpandableRowPlugin: <T extends object>({ getRowCanExpand, renderExpandedRow, expandRowOnClick, expandedRowComponent }: TableExpandableRowParams<T>) => TablePluginData<T>;
22
+ export declare const useExpandableRowContext: <T extends object>() => TableExpandableRowContext<T> | undefined;
@@ -0,0 +1,38 @@
1
+ import { buildPluginContext } from "../utils/plugin.utils.js";
2
+ import { useClickableRowPlugin } from "./ClickableRowPlugin.js";
3
+ import { usePluginContext } from "../Table.context.js";
4
+ import { getExpandedRowModel } from "../../node_modules/@tanstack/table-core/build/lib/index.js";
5
+ const getTrue = () => true;
6
+ const TableExpandableRowContextKey = "expandableRow";
7
+ const useExpandableRowPlugin = ({
8
+ getRowCanExpand,
9
+ renderExpandedRow,
10
+ expandRowOnClick,
11
+ expandedRowComponent
12
+ }) => {
13
+ const clickablePluginData = useClickableRowPlugin({
14
+ getCanRowClick: (row) => !!(expandRowOnClick && row.getCanExpand()),
15
+ onRowClick: (row) => row.toggleExpanded(),
16
+ shouldClickOnEnter: true
17
+ });
18
+ const isExpandable = !!renderExpandedRow;
19
+ return isExpandable ? {
20
+ tableOptions: {
21
+ getExpandedRowModel: getExpandedRowModel(),
22
+ getRowCanExpand: getRowCanExpand || getTrue
23
+ },
24
+ context: {
25
+ ...buildPluginContext(TableExpandableRowContextKey, {
26
+ renderExpandedRow,
27
+ expandedRowComponent
28
+ }),
29
+ ...expandRowOnClick ? clickablePluginData == null ? void 0 : clickablePluginData.context : null
30
+ }
31
+ } : void 0;
32
+ };
33
+ const useExpandableRowContext = () => usePluginContext(TableExpandableRowContextKey);
34
+ export {
35
+ TableExpandableRowContextKey,
36
+ useExpandableRowContext,
37
+ useExpandableRowPlugin
38
+ };
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const index = require("../../node_modules/@radix-ui/react-use-controllable-state/dist/index.cjs");
4
+ const plugin_utils = require("../utils/plugin.utils.cjs");
5
+ const Table_context = require("../Table.context.cjs");
6
+ const index$1 = require("../../node_modules/@tanstack/table-core/build/lib/index.cjs");
7
+ const DEFAULT_PAGINATION = {
8
+ pageIndex: 0,
9
+ pageSize: 10
10
+ };
11
+ const TablePaginationContextKey = "pagination";
12
+ const usePaginationPlugin = ({
13
+ pagination,
14
+ defaultPagination,
15
+ onPaginationChange,
16
+ manualPagination,
17
+ totalRowCount,
18
+ pageSizes,
19
+ paginationEnabled = (pagination || defaultPagination || onPaginationChange || pageSizes) !== void 0 || manualPagination !== void 0
20
+ }) => {
21
+ const [paginationState, setPaginationState] = index.useControllableState({
22
+ prop: pagination,
23
+ defaultProp: defaultPagination ?? DEFAULT_PAGINATION,
24
+ onChange: onPaginationChange
25
+ });
26
+ return paginationEnabled ? {
27
+ tableOptions: {
28
+ state: {
29
+ pagination: paginationState
30
+ },
31
+ getPaginationRowModel: index$1.getPaginationRowModel(),
32
+ onPaginationChange: setPaginationState,
33
+ manualPagination,
34
+ rowCount: totalRowCount,
35
+ autoResetPageIndex: false
36
+ },
37
+ context: plugin_utils.buildPluginContext(TablePaginationContextKey, {
38
+ pageSizes
39
+ })
40
+ } : void 0;
41
+ };
42
+ const usePaginationContext = () => Table_context.usePluginContext(TablePaginationContextKey);
43
+ exports.TablePaginationContextKey = TablePaginationContextKey;
44
+ exports.usePaginationContext = usePaginationContext;
45
+ exports.usePaginationPlugin = usePaginationPlugin;
@@ -0,0 +1,16 @@
1
+ import { PaginationState } from '@tanstack/react-table';
2
+ import { TablePluginData } from '../utils/plugin.utils';
3
+ export declare const TablePaginationContextKey = "pagination";
4
+ export interface TablePaginationContext {
5
+ pageSizes?: number[];
6
+ paginationEnabled?: boolean;
7
+ }
8
+ export interface TablePaginationParams extends TablePaginationContext {
9
+ pagination?: PaginationState;
10
+ defaultPagination?: PaginationState;
11
+ onPaginationChange?: (state: PaginationState) => void;
12
+ manualPagination?: boolean;
13
+ totalRowCount?: number;
14
+ }
15
+ export declare const usePaginationPlugin: <T extends object>({ pagination, defaultPagination, onPaginationChange, manualPagination, totalRowCount, pageSizes, paginationEnabled }: TablePaginationParams) => TablePluginData<T>;
16
+ export declare const usePaginationContext: () => TablePaginationContext | undefined;
@@ -0,0 +1,45 @@
1
+ import { useControllableState } from "../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js";
2
+ import { buildPluginContext } from "../utils/plugin.utils.js";
3
+ import { usePluginContext } from "../Table.context.js";
4
+ import { getPaginationRowModel } from "../../node_modules/@tanstack/table-core/build/lib/index.js";
5
+ const DEFAULT_PAGINATION = {
6
+ pageIndex: 0,
7
+ pageSize: 10
8
+ };
9
+ const TablePaginationContextKey = "pagination";
10
+ const usePaginationPlugin = ({
11
+ pagination,
12
+ defaultPagination,
13
+ onPaginationChange,
14
+ manualPagination,
15
+ totalRowCount,
16
+ pageSizes,
17
+ paginationEnabled = (pagination || defaultPagination || onPaginationChange || pageSizes) !== void 0 || manualPagination !== void 0
18
+ }) => {
19
+ const [paginationState, setPaginationState] = useControllableState({
20
+ prop: pagination,
21
+ defaultProp: defaultPagination ?? DEFAULT_PAGINATION,
22
+ onChange: onPaginationChange
23
+ });
24
+ return paginationEnabled ? {
25
+ tableOptions: {
26
+ state: {
27
+ pagination: paginationState
28
+ },
29
+ getPaginationRowModel: getPaginationRowModel(),
30
+ onPaginationChange: setPaginationState,
31
+ manualPagination,
32
+ rowCount: totalRowCount,
33
+ autoResetPageIndex: false
34
+ },
35
+ context: buildPluginContext(TablePaginationContextKey, {
36
+ pageSizes
37
+ })
38
+ } : void 0;
39
+ };
40
+ const usePaginationContext = () => usePluginContext(TablePaginationContextKey);
41
+ export {
42
+ TablePaginationContextKey,
43
+ usePaginationContext,
44
+ usePaginationPlugin
45
+ };
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const index = require("../../node_modules/@radix-ui/react-use-controllable-state/dist/index.cjs");
4
+ const DEFAULT_ROW_SELECTION = {};
5
+ const useRowSelectionPlugin = ({
6
+ rowSelection,
7
+ defaultRowSelection,
8
+ onRowSelectionChange,
9
+ rowSelectionMode,
10
+ getRowCanSelect
11
+ }) => {
12
+ const [rowSelectionState = DEFAULT_ROW_SELECTION, setRowSelectionState] = index.useControllableState({
13
+ prop: rowSelection,
14
+ defaultProp: defaultRowSelection,
15
+ onChange: onRowSelectionChange
16
+ });
17
+ return rowSelectionMode && {
18
+ tableOptions: {
19
+ state: {
20
+ rowSelection: rowSelectionState
21
+ },
22
+ enableRowSelection: getRowCanSelect ?? true,
23
+ enableMultiRowSelection: rowSelectionMode === "multiple",
24
+ onRowSelectionChange: setRowSelectionState
25
+ }
26
+ };
27
+ };
28
+ exports.useRowSelectionPlugin = useRowSelectionPlugin;
@@ -0,0 +1,12 @@
1
+ import type { Row, RowSelectionState } from '@tanstack/react-table';
2
+ import { TablePluginData } from '../utils/plugin.utils';
3
+ export interface TableRowSelectionParams<T extends object> {
4
+ rowSelection?: RowSelectionState;
5
+ defaultRowSelection?: RowSelectionState;
6
+ onRowSelectionChange?: (state: RowSelectionState) => void;
7
+ /** Enables row selection sets selection mode */
8
+ rowSelectionMode?: 'single' | 'multiple';
9
+ /** Allows individual rows to be selectable */
10
+ getRowCanSelect?: (row: Row<T>) => boolean;
11
+ }
12
+ export declare const useRowSelectionPlugin: <T extends object>({ rowSelection, defaultRowSelection, onRowSelectionChange, rowSelectionMode, getRowCanSelect }: TableRowSelectionParams<T>) => TablePluginData<T>;
@@ -0,0 +1,28 @@
1
+ import { useControllableState } from "../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js";
2
+ const DEFAULT_ROW_SELECTION = {};
3
+ const useRowSelectionPlugin = ({
4
+ rowSelection,
5
+ defaultRowSelection,
6
+ onRowSelectionChange,
7
+ rowSelectionMode,
8
+ getRowCanSelect
9
+ }) => {
10
+ const [rowSelectionState = DEFAULT_ROW_SELECTION, setRowSelectionState] = useControllableState({
11
+ prop: rowSelection,
12
+ defaultProp: defaultRowSelection,
13
+ onChange: onRowSelectionChange
14
+ });
15
+ return rowSelectionMode && {
16
+ tableOptions: {
17
+ state: {
18
+ rowSelection: rowSelectionState
19
+ },
20
+ enableRowSelection: getRowCanSelect ?? true,
21
+ enableMultiRowSelection: rowSelectionMode === "multiple",
22
+ onRowSelectionChange: setRowSelectionState
23
+ }
24
+ };
25
+ };
26
+ export {
27
+ useRowSelectionPlugin
28
+ };
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const index = require("../../node_modules/@radix-ui/react-use-controllable-state/dist/index.cjs");
4
+ const React = require("react");
5
+ const plugin_utils = require("../utils/plugin.utils.cjs");
6
+ const Table_context = require("../Table.context.cjs");
7
+ const index$1 = require("../../node_modules/@tanstack/table-core/build/lib/index.cjs");
8
+ const TableSortingContextKey = "sorting";
9
+ const useSortingPlugin = ({
10
+ defaultSorting,
11
+ onSortingChange,
12
+ sorting,
13
+ manualSorting = false,
14
+ enableSorting = true
15
+ // added plugin is enabled by default
16
+ }) => {
17
+ const [sortedByUser, setSortedByUser] = React.useState(false);
18
+ const [sortingState, setSortingState] = index.useControllableState({
19
+ prop: sorting,
20
+ defaultProp: defaultSorting,
21
+ onChange: onSortingChange
22
+ });
23
+ return enableSorting ? {
24
+ tableOptions: {
25
+ enableSorting: true,
26
+ getSortedRowModel: index$1.getSortedRowModel(),
27
+ state: {
28
+ sorting: sortingState
29
+ },
30
+ manualSorting,
31
+ onSortingChange: (value) => {
32
+ setSortingState(value);
33
+ setSortedByUser(true);
34
+ }
35
+ },
36
+ context: plugin_utils.buildPluginContext(TableSortingContextKey, {
37
+ sortedByUser
38
+ })
39
+ } : void 0;
40
+ };
41
+ const useSortingContext = () => Table_context.usePluginContext(TableSortingContextKey);
42
+ exports.TableSortingContextKey = TableSortingContextKey;
43
+ exports.useSortingContext = useSortingContext;
44
+ exports.useSortingPlugin = useSortingPlugin;
@@ -0,0 +1,18 @@
1
+ import { SortingState } from '@tanstack/react-table';
2
+ import { TablePluginData } from '../utils/plugin.utils';
3
+ export declare const TableSortingContextKey = "sorting";
4
+ export interface TableSortingContext {
5
+ /** true, if user clicked on sorting. Ignores programmatic state changes from outside */
6
+ sortedByUser: boolean;
7
+ }
8
+ export interface TableSortingParams {
9
+ sorting?: SortingState;
10
+ defaultSorting?: SortingState;
11
+ onSortingChange?: (state: SortingState) => void;
12
+ /** If true, then table expects that items are sorted out of the table */
13
+ manualSorting?: boolean;
14
+ /** Set false to disable sorting */
15
+ enableSorting?: boolean;
16
+ }
17
+ export declare const useSortingPlugin: <T extends object>({ defaultSorting, onSortingChange, sorting, manualSorting, enableSorting }: TableSortingParams) => TablePluginData<T>;
18
+ export declare const useSortingContext: () => TableSortingContext | undefined;
@@ -0,0 +1,44 @@
1
+ import { useControllableState } from "../../node_modules/@radix-ui/react-use-controllable-state/dist/index.js";
2
+ import { useState } from "react";
3
+ import { buildPluginContext } from "../utils/plugin.utils.js";
4
+ import { usePluginContext } from "../Table.context.js";
5
+ import { getSortedRowModel } from "../../node_modules/@tanstack/table-core/build/lib/index.js";
6
+ const TableSortingContextKey = "sorting";
7
+ const useSortingPlugin = ({
8
+ defaultSorting,
9
+ onSortingChange,
10
+ sorting,
11
+ manualSorting = false,
12
+ enableSorting = true
13
+ // added plugin is enabled by default
14
+ }) => {
15
+ const [sortedByUser, setSortedByUser] = useState(false);
16
+ const [sortingState, setSortingState] = useControllableState({
17
+ prop: sorting,
18
+ defaultProp: defaultSorting,
19
+ onChange: onSortingChange
20
+ });
21
+ return enableSorting ? {
22
+ tableOptions: {
23
+ enableSorting: true,
24
+ getSortedRowModel: getSortedRowModel(),
25
+ state: {
26
+ sorting: sortingState
27
+ },
28
+ manualSorting,
29
+ onSortingChange: (value) => {
30
+ setSortingState(value);
31
+ setSortedByUser(true);
32
+ }
33
+ },
34
+ context: buildPluginContext(TableSortingContextKey, {
35
+ sortedByUser
36
+ })
37
+ } : void 0;
38
+ };
39
+ const useSortingContext = () => usePluginContext(TableSortingContextKey);
40
+ export {
41
+ TableSortingContextKey,
42
+ useSortingContext,
43
+ useSortingPlugin
44
+ };
@@ -0,0 +1,11 @@
1
+ import '@tanstack/table-core';
2
+ declare module '@tanstack/table-core' {
3
+ interface StringHeaderIdentifier {
4
+ isHeaderHidden?: boolean;
5
+ isHeaderCustom?: boolean;
6
+ }
7
+ interface IdIdentifier<TData, TValue> {
8
+ isHeaderHidden?: boolean;
9
+ isHeaderCustom?: boolean;
10
+ }
11
+ }
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const mergeArrays = (key, container1, container2) => {
4
+ const arr1 = container1 == null ? void 0 : container1[key];
5
+ const arr2 = container2 == null ? void 0 : container2[key];
6
+ return arr1 && arr2 ? {
7
+ [key]: [...arr1, ...arr2]
8
+ } : null;
9
+ };
10
+ const mergeObjects = (key, container1, container2) => {
11
+ const obj1 = container1 == null ? void 0 : container1[key];
12
+ const obj2 = container2 == null ? void 0 : container2[key];
13
+ return obj1 && obj2 ? {
14
+ [key]: {
15
+ ...obj1,
16
+ ...obj2
17
+ }
18
+ } : null;
19
+ };
20
+ const mergePluginsData = (plugins) => {
21
+ const merged = {
22
+ tableOptions: {},
23
+ context: {}
24
+ };
25
+ if (!(plugins == null ? void 0 : plugins.length)) {
26
+ return merged;
27
+ }
28
+ plugins.forEach((plugin) => {
29
+ if (plugin) {
30
+ merged.tableOptions = {
31
+ ...merged.tableOptions,
32
+ ...plugin.tableOptions,
33
+ ...mergeArrays("_features", merged.tableOptions, plugin.tableOptions),
34
+ ...mergeObjects("state", merged.tableOptions, plugin.tableOptions),
35
+ ...mergeObjects("initialState", merged.tableOptions, plugin.tableOptions)
36
+ };
37
+ merged.context = {
38
+ ...merged.context,
39
+ ...plugin.context
40
+ };
41
+ }
42
+ });
43
+ return plugins.map((plugin) => plugin == null ? void 0 : plugin.postMerge).filter(Boolean).reduce((acc, postMerge) => (postMerge == null ? void 0 : postMerge(acc)) ?? acc, merged);
44
+ };
45
+ const buildPluginContext = (key, context) => ({
46
+ [key]: context
47
+ });
48
+ exports.buildPluginContext = buildPluginContext;
49
+ exports.mergePluginsData = mergePluginsData;
@@ -0,0 +1,17 @@
1
+ import { TableOptions } from '@tanstack/table-core';
2
+ import { RowData } from '@tanstack/react-table';
3
+ export type PartialTableOptions<T extends RowData> = Partial<Omit<TableOptions<T>, 'columns' | 'data' | 'getRowId' | 'getSubRows' | 'onStateChange' | 'getCoreRowModel' | 'defaultColumn' | 'debugTable' | 'debugRows' | 'debugHeaders' | 'debugColumns' | 'debugCells' | 'debugAll' | 'autoResetAll' | 'meta'>>;
4
+ export type TablePluginData<T extends RowData> = {
5
+ /** Partial table options that will be smartly merged with other table options */
6
+ tableOptions: PartialTableOptions<T>;
7
+ /** Plugin context data accessible via usePluginContext */
8
+ context?: Record<string, Record<string, unknown>>;
9
+ /** Optional function to modify merged plugin data after all plugins are combined */
10
+ postMerge?: (merged: TableMergedData<T>) => TableMergedData<T>;
11
+ } | undefined;
12
+ export type TableMergedData<T extends RowData> = {
13
+ tableOptions: PartialTableOptions<T>;
14
+ context?: Record<string, Record<string, unknown>>;
15
+ };
16
+ export declare const mergePluginsData: <T extends unknown>(plugins?: TablePluginData<T>[] | undefined) => TableMergedData<T>;
17
+ export declare const buildPluginContext: (key: string, context: Record<string, unknown>) => Record<string, Record<string, unknown>>;