@semcore/data-table 16.2.2-prerelease.1 → 16.3.0-prerelease.4

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 (59) hide show
  1. package/CHANGELOG.md +14 -3
  2. package/lib/cjs/components/Body/Body.js +201 -358
  3. package/lib/cjs/components/Body/Body.js.map +1 -1
  4. package/lib/cjs/components/Body/Body.types.js.map +1 -1
  5. package/lib/cjs/components/Body/Cell.js +51 -65
  6. package/lib/cjs/components/Body/Cell.js.map +1 -1
  7. package/lib/cjs/components/Body/Cell.types.js.map +1 -1
  8. package/lib/cjs/components/Body/Row.js +367 -113
  9. package/lib/cjs/components/Body/Row.js.map +1 -1
  10. package/lib/cjs/components/Body/Row.types.js.map +1 -1
  11. package/lib/cjs/components/Body/style.shadow.css +6 -2
  12. package/lib/cjs/components/DataTable/DataTable.js +109 -179
  13. package/lib/cjs/components/DataTable/DataTable.js.map +1 -1
  14. package/lib/cjs/components/DataTable/DataTable.types.js.map +1 -1
  15. package/lib/cjs/components/Head/Column.js +36 -36
  16. package/lib/cjs/components/Head/Group.js +37 -37
  17. package/lib/cjs/components/Head/Group.js.map +1 -1
  18. package/lib/cjs/components/Head/Head.js +38 -38
  19. package/lib/cjs/components/Head/Head.js.map +1 -1
  20. package/lib/cjs/index.js +13 -0
  21. package/lib/cjs/index.js.map +1 -1
  22. package/lib/es6/components/Body/Body.js +202 -359
  23. package/lib/es6/components/Body/Body.js.map +1 -1
  24. package/lib/es6/components/Body/Body.types.js.map +1 -1
  25. package/lib/es6/components/Body/Cell.js +51 -65
  26. package/lib/es6/components/Body/Cell.js.map +1 -1
  27. package/lib/es6/components/Body/Cell.types.js.map +1 -1
  28. package/lib/es6/components/Body/Row.js +367 -113
  29. package/lib/es6/components/Body/Row.js.map +1 -1
  30. package/lib/es6/components/Body/Row.types.js.map +1 -1
  31. package/lib/es6/components/Body/style.shadow.css +6 -2
  32. package/lib/es6/components/DataTable/DataTable.js +105 -175
  33. package/lib/es6/components/DataTable/DataTable.js.map +1 -1
  34. package/lib/es6/components/DataTable/DataTable.types.js.map +1 -1
  35. package/lib/es6/components/Head/Column.js +36 -36
  36. package/lib/es6/components/Head/Group.js +38 -38
  37. package/lib/es6/components/Head/Group.js.map +1 -1
  38. package/lib/es6/components/Head/Head.js +39 -39
  39. package/lib/es6/components/Head/Head.js.map +1 -1
  40. package/lib/es6/index.js +2 -1
  41. package/lib/es6/index.js.map +1 -1
  42. package/lib/esm/components/Body/Body.mjs +160 -309
  43. package/lib/esm/components/Body/Cell.mjs +52 -64
  44. package/lib/esm/components/Body/Row.mjs +316 -93
  45. package/lib/esm/components/Body/style.shadow.css +6 -2
  46. package/lib/esm/components/DataTable/DataTable.mjs +97 -167
  47. package/lib/esm/components/Head/Column.mjs +37 -37
  48. package/lib/esm/components/Head/Group.mjs +39 -39
  49. package/lib/esm/components/Head/Head.mjs +40 -40
  50. package/lib/esm/index.mjs +3 -0
  51. package/lib/types/components/Body/Body.d.ts +1 -2
  52. package/lib/types/components/Body/Body.types.d.ts +3 -1
  53. package/lib/types/components/Body/Cell.types.d.ts +1 -0
  54. package/lib/types/components/Body/Row.d.ts +43 -3
  55. package/lib/types/components/Body/Row.types.d.ts +27 -15
  56. package/lib/types/components/DataTable/DataTable.d.ts +2 -2
  57. package/lib/types/components/DataTable/DataTable.types.d.ts +6 -1
  58. package/lib/types/index.d.ts +4 -3
  59. package/package.json +22 -22
@@ -1,33 +1,33 @@
1
1
  import type { Intergalactic } from '@semcore/core';
2
- import type { DataTableCellProps } from './Cell.types';
2
+ import type * as React from 'react';
3
+ import type { CellRenderProps } from './Body.types';
4
+ import type { CellPropsInner, DataTableCellProps } from './Cell.types';
3
5
  import type { MergedColumnsCell, MergedRowsCell } from './MergedCells';
4
- import type { ACCORDION, IS_EMPTY_DATA_ROW, ROW_GROUP, ROW_INDEX, UNIQ_ROW_KEY } from '../DataTable/DataTable';
5
- import type { DTValue, DTUse, DataTableData } from '../DataTable/DataTable.types';
6
+ import type { RowRoot } from './Row';
7
+ import type { ACCORDION, GRID_ROW_INDEX, IS_EMPTY_DATA_ROW, ROW_GROUP, ROW_INDEX, UNIQ_ROW_KEY } from '../DataTable/DataTable';
8
+ import type { DTValue, DTUse, DataTableData, VirtualScroll, DataRowItem, DataTableProps } from '../DataTable/DataTable.types';
6
9
  import type { DTColumn } from '../Head/Column.types';
7
10
  export type DTRow<UniqKeyType> = {
8
11
  [UNIQ_ROW_KEY]: UniqKeyType;
9
12
  [IS_EMPTY_DATA_ROW]?: boolean;
13
+ [GRID_ROW_INDEX]: number;
10
14
  [ROW_INDEX]: number;
11
15
  [key: string]: DTValue | MergedRowsCell | MergedColumnsCell;
12
16
  [ACCORDION]?: React.ReactNode | DataTableData | undefined;
13
17
  [ROW_GROUP]?: Set<UniqKeyType>;
14
18
  };
15
19
  export type DTRows<UniqKeyType> = Array<DTRow<UniqKeyType> | DTRow<UniqKeyType>[]>;
16
- export type DataTableRowProps<UniqKeyType> = {
20
+ export type DataTableRowProps<Data extends DataTableData, UniqKeyType> = {
17
21
  row: DTRow<UniqKeyType>;
18
22
  mergedRow?: boolean;
19
23
  isAccordionRow?: DataTableCellProps<UniqKeyType>['isAccordionRow'];
20
24
  animationExpand?: DataTableCellProps<UniqKeyType>['animationExpand'];
21
25
  accordionRowIndex?: DataTableCellProps<UniqKeyType>['accordionRowIndex'];
22
26
  isNonInteractive?: boolean;
27
+ componentRef?: (component: RowRoot<Data, UniqKeyType> | null) => void;
23
28
  };
24
- export type RowPropsInner<UniqKeyType> = JSX.IntrinsicElements['div'] & {
29
+ export type RowPropsInner<Data extends DataTableData, UniqKeyType> = JSX.IntrinsicElements['div'] & {
25
30
  use: DTUse;
26
- /**
27
- * Expanded flag for rows with accordion
28
- * @default false
29
- */
30
- expanded?: boolean;
31
31
  /**
32
32
  * Flag to show is row in a merged list or not.
33
33
  */
@@ -35,22 +35,34 @@ export type RowPropsInner<UniqKeyType> = JSX.IntrinsicElements['div'] & {
35
35
  columns: DTColumn[];
36
36
  row: DTRow<UniqKeyType> | DTRow<UniqKeyType>[];
37
37
  rows: DTRows<UniqKeyType>;
38
+ flatRows: DTRow<UniqKeyType>[];
38
39
  rowIndex: number;
39
- ariaRowIndex: number;
40
40
  gridRowIndex: number;
41
- expandedRows: Set<UniqKeyType>;
42
41
  onExpandRow: (expandedRow: DTRow<UniqKeyType>) => void;
43
42
  gridTemplateAreas: string[];
44
43
  gridTemplateColumns: string[];
45
- accordionDataGridArea: string;
46
44
  selectedRows?: UniqKeyType[];
47
45
  onSelectRow?: (isSelect: boolean, selectedRowIndex: number, row: DTRow<UniqKeyType>, event?: React.SyntheticEvent<HTMLElement>) => void;
48
46
  inert?: '';
49
47
  accordionDuration?: number | [number, number];
50
- onBackFromAccordion: (colIndex: number) => void;
48
+ onBackFromAccordion: (colName: string) => void;
51
49
  scrollAreaRef: React.RefObject<HTMLDivElement>;
52
50
  uid: string;
53
51
  sideIndents?: 'wide';
54
52
  getFixedStyle: (cell: Pick<DTColumn, 'name' | 'fixed'>) => [side: 'left' | 'right', style: string | number] | [side: undefined, style: undefined];
53
+ renderCell?: (props: CellRenderProps<Data[number], UniqKeyType>) => React.ReactNode | Record<string, any>;
54
+ getI18nText: (key: string) => string;
55
+ virtualScroll?: VirtualScroll;
56
+ tableRef: React.RefObject<HTMLDivElement>;
57
+ onCellClick: CellPropsInner<Data, UniqKeyType>['onClick'];
58
+ rawData: DataRowItem[];
59
+ shadowVertical?: '' | 'end' | 'start' | 'median';
60
+ expandedRows: Set<UniqKeyType>;
61
+ accordionMode?: DataTableProps<any, any, any>['accordionMode'];
62
+ rowsHeightMap: Map<number, [number, number, HTMLElement]>;
63
+ setRowHeight: (index: number, row: DTRow<UniqKeyType>) => void;
64
+ componentsMap: Map<UniqKeyType, RowRoot<Data, UniqKeyType>>;
65
+ calculateAriaRowIndex: () => void;
66
+ variant?: DataTableProps<any, any, any>['variant'];
55
67
  };
56
- export type DataTableRowType = (<UniqKeyType, Tag extends Intergalactic.Tag = 'div'>(props: Intergalactic.InternalTypings.ComponentProps<Tag, 'div', DataTableRowProps<UniqKeyType>>) => Intergalactic.InternalTypings.ComponentRenderingResults) & Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', DataTableRowProps<any>>;
68
+ export type DataTableRowType = (<Data extends DataTableData, UniqKeyType, Tag extends Intergalactic.Tag = 'div'>(props: Intergalactic.InternalTypings.ComponentProps<Tag, 'div', DataTableRowProps<Data, UniqKeyType>>) => Intergalactic.InternalTypings.ComponentRenderingResults) & Intergalactic.InternalTypings.ComponentAdditive<'div', 'div', DataTableRowProps<any, any>>;
@@ -7,8 +7,8 @@ export declare const UNIQ_ROW_KEY: unique symbol;
7
7
  export declare const IS_EMPTY_DATA_ROW: unique symbol;
8
8
  export declare const SELECT_ALL: unique symbol;
9
9
  export declare const ROW_INDEX: unique symbol;
10
- export declare const DataTable: DataTableType;
11
- export declare const DataTableInternal: DataTableType & {
10
+ export declare const GRID_ROW_INDEX: unique symbol;
11
+ export declare const DataTable: DataTableType & {
12
12
  Head: typeof Head;
13
13
  Body: typeof Body;
14
14
  };
@@ -53,7 +53,7 @@ export type DataTableProps<Data extends DataTableData, UniqKey extends keyof Dat
53
53
  */
54
54
  defaultGridTemplateColumnWidth?: string;
55
55
  /**
56
- * Flag for compact view (fewer paddings)
56
+ * Flag for compact view (smaller horizontal paddings)
57
57
  */
58
58
  compact?: boolean;
59
59
  /**
@@ -116,6 +116,11 @@ export type DataTableProps<Data extends DataTableData, UniqKey extends keyof Dat
116
116
  * Work only with table-in-table accordions. In accordions with custom components use mount/unmount hooks in components.
117
117
  */
118
118
  onAccordionToggle?: (type: 'open' | 'close', uniqRowKey: UniqKeyType, rowIndex: number) => void;
119
+ /**
120
+ * Visual variant that adapts the table styling to different usage contexts
121
+ * @default 'default'
122
+ */
123
+ variant?: 'default' | 'card';
119
124
  };
120
125
  export type ColumnItemConfig = Intergalactic.InternalTypings.EfficientOmit<Intergalactic.InternalTypings.ComponentProps<'div' | typeof Tooltip, 'div', DataTableColumnProps, {}, [
121
126
  ]>, 'children'> & {
@@ -1,11 +1,12 @@
1
1
  import type { Intergalactic } from '@semcore/core';
2
2
  import type React from 'react';
3
+ import { MergedRowsCell, MergedColumnsCell } from './components/Body/MergedCells';
3
4
  import { DataTable, ACCORDION, ROW_GROUP, UNIQ_ROW_KEY } from './components/DataTable/DataTable';
4
- import type { DataTableSort, DataTableType, DataTableData, DataTableProps, DataTableChangeSort } from './components/DataTable/DataTable.types';
5
+ import type { DataTableSort, DataTableType, DataTableData, DataTableProps, DataTableChangeSort, ColumnGroupConfig, ColumnItemConfig } from './components/DataTable/DataTable.types';
5
6
  declare const wrapDataTable: <PropsExtending extends {}>(wrapper: (props: Intergalactic.InternalTypings.UntypeRefAndTag<Intergalactic.InternalTypings.ComponentPropsNesting<DataTableType>> & PropsExtending) => React.ReactNode) => DataTableType;
6
- export { DataTable, ACCORDION, ROW_GROUP,
7
+ export { MergedRowsCell, MergedColumnsCell, DataTable, ACCORDION, ROW_GROUP,
7
8
  /**
8
9
  * @deprecated use property `uniqueRowKey` in DataTableProps to set key of unique value in your data.
9
10
  */
10
11
  UNIQ_ROW_KEY, wrapDataTable, };
11
- export type { DataTableSort, DataTableData, DataTableProps, DataTableChangeSort, };
12
+ export type { DataTableSort, DataTableData, DataTableProps, DataTableChangeSort, ColumnGroupConfig, ColumnItemConfig, };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/data-table",
3
3
  "description": "Semrush DataTable Component",
4
- "version": "16.2.2-prerelease.1",
4
+ "version": "16.3.0-prerelease.4",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
@@ -14,34 +14,34 @@
14
14
  "types": "./lib/types/index.d.ts"
15
15
  },
16
16
  "dependencies": {
17
- "@semcore/icon": "16.7.1-prerelease.1",
18
- "@semcore/button": "16.0.9-prerelease.1",
19
- "@semcore/checkbox": "16.1.3-prerelease.1",
20
- "@semcore/flex-box": "16.0.9-prerelease.1",
21
- "@semcore/scroll-area": "16.0.9-prerelease.1",
22
- "@semcore/spin": "16.0.9-prerelease.1",
23
- "@semcore/tooltip": "16.0.9-prerelease.1",
24
- "@semcore/widget-empty": "16.0.9-prerelease.1"
17
+ "@semcore/icon": "16.7.1-prerelease.4",
18
+ "@semcore/button": "16.0.9-prerelease.4",
19
+ "@semcore/checkbox": "16.1.3-prerelease.4",
20
+ "@semcore/flex-box": "16.0.9-prerelease.4",
21
+ "@semcore/scroll-area": "16.0.9-prerelease.4",
22
+ "@semcore/spin": "16.0.9-prerelease.4",
23
+ "@semcore/tooltip": "16.0.9-prerelease.4",
24
+ "@semcore/widget-empty": "16.0.9-prerelease.4"
25
25
  },
26
26
  "devDependencies": {
27
27
  "@types/node": "18.16.15",
28
28
  "csstype": "3.1.3",
29
29
  "@semcore/testing-utils": "1.0.0",
30
- "@semcore/typography": "16.2.3-prerelease.1",
31
- "@semcore/dropdown-menu": "16.1.10-prerelease.1",
32
- "@semcore/accordion": "16.6.0",
33
- "@semcore/base-trigger": "16.4.1-prerelease.1",
34
- "@semcore/divider": "16.0.9-prerelease.1",
35
- "@semcore/progress-bar": "16.0.9-prerelease.1",
36
- "@semcore/portal": "16.0.9-prerelease.1",
37
- "@semcore/skeleton": "16.0.9-prerelease.1",
38
- "@semcore/spin-container": "16.0.9-prerelease.1",
39
- "@semcore/spin": "16.0.9-prerelease.1",
40
- "@semcore/tooltip": "16.0.9-prerelease.1",
41
- "@semcore/base-components": "16.2.3-prerelease.1"
30
+ "@semcore/base-trigger": "16.4.1-prerelease.4",
31
+ "@semcore/dropdown-menu": "16.1.10-prerelease.4",
32
+ "@semcore/accordion": "16.6.1-prerelease.4",
33
+ "@semcore/divider": "16.0.9-prerelease.4",
34
+ "@semcore/portal": "16.0.9-prerelease.4",
35
+ "@semcore/progress-bar": "16.0.9-prerelease.4",
36
+ "@semcore/typography": "16.2.3-prerelease.4",
37
+ "@semcore/skeleton": "16.0.9-prerelease.4",
38
+ "@semcore/spin": "16.0.9-prerelease.4",
39
+ "@semcore/spin-container": "16.0.9-prerelease.4",
40
+ "@semcore/tooltip": "16.0.9-prerelease.4",
41
+ "@semcore/base-components": "16.2.3-prerelease.4"
42
42
  },
43
43
  "peerDependencies": {
44
- "@semcore/base-components": "^16.2.3-prerelease.1"
44
+ "@semcore/base-components": "^16.2.3-prerelease.4"
45
45
  },
46
46
  "repository": {
47
47
  "type": "git",