@semcore/data-table 17.0.0-prerelease.31 → 17.0.0-prerelease.36

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 (77) hide show
  1. package/CHANGELOG.md +9 -1
  2. package/lib/cjs/components/AccordionRows/AccordionRows.js +50 -51
  3. package/lib/cjs/components/AccordionRows/AccordionRows.js.map +1 -1
  4. package/lib/cjs/components/Body/Body.js +65 -88
  5. package/lib/cjs/components/Body/Body.js.map +1 -1
  6. package/lib/cjs/components/Body/Body.types.js.map +1 -1
  7. package/lib/cjs/components/Body/Cell.js +50 -51
  8. package/lib/cjs/components/Body/Cell.js.map +1 -1
  9. package/lib/cjs/components/Body/LimitOverlay.js +50 -51
  10. package/lib/cjs/components/Body/LimitOverlay.js.map +1 -1
  11. package/lib/cjs/components/Body/Row.js +65 -90
  12. package/lib/cjs/components/Body/Row.js.map +1 -1
  13. package/lib/cjs/components/Body/Row.types.js.map +1 -1
  14. package/lib/cjs/components/Body/RowGroup.js +133 -0
  15. package/lib/cjs/components/Body/RowGroup.js.map +1 -0
  16. package/lib/cjs/components/Body/style.shadow.css +86 -151
  17. package/lib/cjs/components/DataTable/DataTable.js +35 -12
  18. package/lib/cjs/components/DataTable/DataTable.js.map +1 -1
  19. package/lib/cjs/components/DataTable/DataTable.types.js.map +1 -1
  20. package/lib/cjs/components/Head/Head.js +45 -14
  21. package/lib/cjs/components/Head/Head.js.map +1 -1
  22. package/lib/cjs/components/Head/Head.types.js.map +1 -1
  23. package/lib/cjs/components/RowSelector/RowsSelector.js +112 -0
  24. package/lib/cjs/components/RowSelector/RowsSelector.js.map +1 -0
  25. package/lib/cjs/index.js +7 -0
  26. package/lib/cjs/index.js.map +1 -1
  27. package/lib/cjs/store/SelectableRows.js +129 -0
  28. package/lib/cjs/store/SelectableRows.js.map +1 -0
  29. package/lib/es6/components/AccordionRows/AccordionRows.js +50 -51
  30. package/lib/es6/components/AccordionRows/AccordionRows.js.map +1 -1
  31. package/lib/es6/components/Body/Body.js +67 -90
  32. package/lib/es6/components/Body/Body.js.map +1 -1
  33. package/lib/es6/components/Body/Body.types.js.map +1 -1
  34. package/lib/es6/components/Body/Cell.js +50 -51
  35. package/lib/es6/components/Body/Cell.js.map +1 -1
  36. package/lib/es6/components/Body/LimitOverlay.js +50 -51
  37. package/lib/es6/components/Body/LimitOverlay.js.map +1 -1
  38. package/lib/es6/components/Body/Row.js +66 -91
  39. package/lib/es6/components/Body/Row.js.map +1 -1
  40. package/lib/es6/components/Body/Row.types.js.map +1 -1
  41. package/lib/es6/components/Body/RowGroup.js +125 -0
  42. package/lib/es6/components/Body/RowGroup.js.map +1 -0
  43. package/lib/es6/components/Body/style.shadow.css +86 -151
  44. package/lib/es6/components/DataTable/DataTable.js +35 -12
  45. package/lib/es6/components/DataTable/DataTable.js.map +1 -1
  46. package/lib/es6/components/DataTable/DataTable.types.js.map +1 -1
  47. package/lib/es6/components/Head/Head.js +45 -14
  48. package/lib/es6/components/Head/Head.js.map +1 -1
  49. package/lib/es6/components/Head/Head.types.js.map +1 -1
  50. package/lib/es6/components/RowSelector/RowsSelector.js +104 -0
  51. package/lib/es6/components/RowSelector/RowsSelector.js.map +1 -0
  52. package/lib/es6/index.js +2 -1
  53. package/lib/es6/index.js.map +1 -1
  54. package/lib/es6/store/SelectableRows.js +121 -0
  55. package/lib/es6/store/SelectableRows.js.map +1 -0
  56. package/lib/esm/components/AccordionRows/AccordionRows.mjs +51 -52
  57. package/lib/esm/components/Body/Body.mjs +68 -91
  58. package/lib/esm/components/Body/Cell.mjs +51 -52
  59. package/lib/esm/components/Body/LimitOverlay.mjs +51 -52
  60. package/lib/esm/components/Body/Row.mjs +66 -90
  61. package/lib/esm/components/Body/RowGroup.mjs +124 -0
  62. package/lib/esm/components/Body/style.shadow.css +86 -151
  63. package/lib/esm/components/DataTable/DataTable.mjs +34 -12
  64. package/lib/esm/components/Head/Head.mjs +46 -14
  65. package/lib/esm/components/RowSelector/RowsSelector.mjs +107 -0
  66. package/lib/esm/index.mjs +2 -0
  67. package/lib/esm/store/SelectableRows.mjs +123 -0
  68. package/lib/types/components/Body/Body.types.d.ts +2 -1
  69. package/lib/types/components/Body/Row.d.ts +0 -2
  70. package/lib/types/components/Body/Row.types.d.ts +2 -1
  71. package/lib/types/components/Body/RowGroup.d.ts +19 -0
  72. package/lib/types/components/DataTable/DataTable.types.d.ts +21 -12
  73. package/lib/types/components/Head/Head.types.d.ts +2 -1
  74. package/lib/types/components/RowSelector/RowsSelector.d.ts +31 -0
  75. package/lib/types/index.d.ts +2 -1
  76. package/lib/types/store/SelectableRows.d.ts +56 -0
  77. package/package.json +18 -18
package/lib/esm/index.mjs CHANGED
@@ -1,5 +1,6 @@
1
1
  import { MergedColumnsCell, MergedRowsCell } from "./components/Body/MergedCells.mjs";
2
2
  import { ACCORDION, DataTable, ROW_GROUP } from "./components/DataTable/DataTable.mjs";
3
+ import { SelectableRows } from "./store/SelectableRows.mjs";
3
4
  const wrapDataTable = (wrapper) => wrapper;
4
5
  export {
5
6
  ACCORDION,
@@ -7,5 +8,6 @@ export {
7
8
  MergedColumnsCell,
8
9
  MergedRowsCell,
9
10
  ROW_GROUP,
11
+ SelectableRows,
10
12
  wrapDataTable
11
13
  };
@@ -0,0 +1,123 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import EventEmitter from "@semcore/core/lib/utils/eventEmitter";
3
+ import { UNIQ_ROW_KEY } from "../components/DataTable/DataTable.mjs";
4
+ class SelectableRows extends EventEmitter {
5
+ constructor(initValues = []) {
6
+ super();
7
+ _defineProperty(this, "values", void 0);
8
+ _defineProperty(this, "availableKeys", /* @__PURE__ */ new Set());
9
+ _defineProperty(this, "lastSelectedRow", null);
10
+ _defineProperty(this, "isPressedShift", false);
11
+ this.values = new Set(initValues);
12
+ }
13
+ setAvailableKeys(value) {
14
+ this.availableKeys = new Set(value);
15
+ }
16
+ get() {
17
+ return Array.from(this.values.keys());
18
+ }
19
+ isChecked(key) {
20
+ return this.values.has(key);
21
+ }
22
+ replace(value) {
23
+ this.clearAll();
24
+ value.forEach((val) => {
25
+ this.values.add(val);
26
+ this.emit(SelectableRows.TOGGLE_EVENT, val);
27
+ });
28
+ }
29
+ has(value) {
30
+ return this.values.has(value);
31
+ }
32
+ isAllSelected() {
33
+ let isAllSelected = true;
34
+ if (this.availableKeys.size === 0 || this.values.size === 0) {
35
+ return false;
36
+ }
37
+ for (const key of this.availableKeys.values()) {
38
+ if (!this.values.has(key)) {
39
+ isAllSelected = false;
40
+ break;
41
+ }
42
+ }
43
+ return isAllSelected;
44
+ }
45
+ isIndeterminate() {
46
+ let isIndeterminate = false;
47
+ for (const key of this.availableKeys.values()) {
48
+ if (this.values.has(key)) {
49
+ isIndeterminate = true;
50
+ break;
51
+ }
52
+ }
53
+ return isIndeterminate;
54
+ }
55
+ selectAll() {
56
+ for (const key of this.availableKeys.values()) {
57
+ this.values.add(key);
58
+ this.emit(SelectableRows.TOGGLE_EVENT, key);
59
+ }
60
+ this.emit(SelectableRows.SELECT_ALL_EVENT);
61
+ }
62
+ clearAll() {
63
+ const keys = Array.from(this.values.values());
64
+ this.values.clear();
65
+ for (const key of keys) {
66
+ this.emit(SelectableRows.TOGGLE_EVENT, key);
67
+ }
68
+ this.emit(SelectableRows.SELECT_ALL_EVENT);
69
+ }
70
+ clearAllAvailable() {
71
+ for (const key of this.availableKeys.values()) {
72
+ this.values.delete(key);
73
+ this.emit(SelectableRows.TOGGLE_EVENT, key);
74
+ }
75
+ this.emit(SelectableRows.SELECT_ALL_EVENT);
76
+ }
77
+ toggle(selected, row) {
78
+ if (this.isPressedShift && this.values.size > 0 && this.lastSelectedRow && (selected ? this.values.has(this.lastSelectedRow) : true)) {
79
+ let select = false;
80
+ for (const item of this.availableKeys.values()) {
81
+ if (!select && (item === row[UNIQ_ROW_KEY] || item === this.lastSelectedRow)) {
82
+ select = true;
83
+ this.toggleOneRow(selected, item);
84
+ continue;
85
+ }
86
+ if (select) {
87
+ this.toggleOneRow(selected, item);
88
+ }
89
+ if (select && (item === row[UNIQ_ROW_KEY] || item === this.lastSelectedRow)) {
90
+ break;
91
+ }
92
+ }
93
+ } else {
94
+ this.toggleOneRow(selected, row[UNIQ_ROW_KEY]);
95
+ }
96
+ this.lastSelectedRow = row[UNIQ_ROW_KEY];
97
+ }
98
+ toggleOneRow(isSelected, key) {
99
+ if (isSelected) {
100
+ if (this.values.size === 0) {
101
+ this.emit(SelectableRows.SELECT_ALL_EVENT);
102
+ }
103
+ this.values.add(key);
104
+ if (this.values.size === this.availableKeys.size) {
105
+ this.emit(SelectableRows.SELECT_ALL_EVENT);
106
+ }
107
+ } else {
108
+ if (this.values.size === this.availableKeys.size) {
109
+ this.emit(SelectableRows.SELECT_ALL_EVENT);
110
+ }
111
+ this.values.delete(key);
112
+ if (this.values.size === 0) {
113
+ this.emit(SelectableRows.SELECT_ALL_EVENT);
114
+ }
115
+ }
116
+ this.emit(SelectableRows.TOGGLE_EVENT, key);
117
+ }
118
+ }
119
+ _defineProperty(SelectableRows, "TOGGLE_EVENT", "toggle_selected_row");
120
+ _defineProperty(SelectableRows, "SELECT_ALL_EVENT", "select_all_selected_rows");
121
+ export {
122
+ SelectableRows
123
+ };
@@ -2,6 +2,7 @@ import type { Intergalactic } from '@semcore/core';
2
2
  import type * as React from 'react';
3
3
  import type { DataTableCellProps, Theme } from './Cell.types';
4
4
  import type { DTRow, RowPropsInner } from './Row.types';
5
+ import type { ISelectedRows } from '../../store/SelectableRows';
5
6
  import type { ACCORDION } from '../DataTable/DataTable';
6
7
  import type { DataRowItem, DTUse, VirtualScroll, DataTableProps, DataTableData } from '../DataTable/DataTable.types';
7
8
  import type { DTColumn } from '../Head/Column.types';
@@ -67,7 +68,7 @@ export type BodyPropsInner<Data extends DataTableData, UniqKeyType> = DataTableB
67
68
  renderCell?: (props: CellRenderProps<Data[number], UniqKeyType>) => React.ReactNode | Record<string, any>;
68
69
  onBackFromAccordion: (colName: string) => void;
69
70
  stickyHeader?: boolean;
70
- selectedRows?: UniqKeyType[];
71
+ selectedRows?: UniqKeyType[] | ISelectedRows<UniqKeyType>;
71
72
  onSelectRow?: (isSelect: boolean, selectedRowIndex: number, row: DTRow<UniqKeyType>, event?: React.SyntheticEvent<HTMLElement>) => void;
72
73
  renderEmptyData: () => React.ReactNode;
73
74
  sideIndents?: 'wide';
@@ -28,8 +28,6 @@ export declare class RowRoot<Data extends DataTableData, UniqKeyType> extends Co
28
28
  componentWillUnmount(): void;
29
29
  setAccordion(): void;
30
30
  cellHasAccordion(cellValue?: DTValue | MergedColumnsCell | MergedRowsCell): cellValue is DTValue;
31
- handleSelectRow: (value: boolean, event?: React.SyntheticEvent<HTMLElement>) => void;
32
- handleClickCheckbox: (value: boolean) => (event?: React.SyntheticEvent<HTMLElement>) => void;
33
31
  handleBackFromAccordion: (e: React.KeyboardEvent) => void;
34
32
  handleExpandRow: (row: DTRow<UniqKeyType>, index: number) => void;
35
33
  closeAccordion: (row: DTRow<UniqKeyType>, closeDuration: number) => void;
@@ -4,6 +4,7 @@ import type { CellRenderProps } from './Body.types';
4
4
  import type { DataTableCellProps, Theme } from './Cell.types';
5
5
  import type { MergedColumnsCell, MergedRowsCell } from './MergedCells';
6
6
  import type { RowRoot } from './Row';
7
+ import type { ISelectedRows } from '../../store/SelectableRows';
7
8
  import type { ACCORDION, GRID_ROW_INDEX, IS_EMPTY_DATA_ROW, ROW_GROUP, ROW_INDEX, UNIQ_ROW_KEY } from '../DataTable/DataTable';
8
9
  import type { DTValue, DTUse, DataTableData, VirtualScroll, DataRowItem, DataTableProps } from '../DataTable/DataTable.types';
9
10
  import type { DTColumn } from '../Head/Column.types';
@@ -42,7 +43,7 @@ export type RowPropsInner<Data extends DataTableData, UniqKeyType> = JSX.Intrins
42
43
  onExpandRow: (expandedRow: DTRow<UniqKeyType>) => void;
43
44
  gridTemplateAreas: string[];
44
45
  gridTemplateColumns: string[];
45
- selectedRows?: UniqKeyType[];
46
+ selectedRows?: UniqKeyType[] | ISelectedRows<UniqKeyType>;
46
47
  onSelectRow?: (isSelect: boolean, selectedRowIndex: number, row: DTRow<UniqKeyType>, event?: React.SyntheticEvent<HTMLElement>) => void;
47
48
  inert?: '';
48
49
  accordionDuration: number | [number, number];
@@ -0,0 +1,19 @@
1
+ import * as React from 'react';
2
+ import type { ISelectedRows } from '../../store/SelectableRows';
3
+ import type { RowRoot } from '../Body/Row';
4
+ import type { DTRow } from '../Body/Row.types';
5
+ import type { DataTableData } from '../DataTable/DataTable.types';
6
+ import type { DTColumn } from '../Head/Column.types';
7
+ type RowGroupProps<Data extends DataTableData, UniqKeyType> = {
8
+ rows: DTRow<UniqKeyType>[];
9
+ selectedRows?: UniqKeyType[] | ISelectedRows<UniqKeyType>;
10
+ columns: DTColumn[];
11
+ startIndex: number;
12
+ rowIndex: number;
13
+ handleRef: (index: number, row: DTRow<UniqKeyType>) => (node: HTMLElement | null) => void;
14
+ handleComponentRef: (row: DTRow<UniqKeyType>) => (component: RowRoot<Data, UniqKeyType> | null) => void;
15
+ };
16
+ export declare class RowGroup<Data extends DataTableData, UniqKeyType> extends React.PureComponent<RowGroupProps<Data, UniqKeyType>> {
17
+ render(): React.ReactNode;
18
+ }
19
+ export {};
@@ -3,6 +3,7 @@ import type { Intergalactic } from '@semcore/core';
3
3
  import type Tooltip from '@semcore/tooltip';
4
4
  import type * as React from 'react';
5
5
  import type { ACCORDION, ROW_GROUP, UNIQ_ROW_KEY } from './DataTable';
6
+ import type { ISelectedRows } from '../../store/SelectableRows';
6
7
  import type { DataTableBodyProps } from '../Body/Body.types';
7
8
  import type { DTRow, RowPropsInner } from '../Body/Row.types';
8
9
  import type { DataTableColumnProps } from '../Head/Column.types';
@@ -31,7 +32,7 @@ export interface DTValue {
31
32
  }
32
33
  export type DataTableData = DataRowItem[];
33
34
  export type DTUse = 'primary' | 'secondary';
34
- export type Sizes = Pick<BoxProps, 'w' | 'wMax' | 'wMin' | 'h' | 'hMax' | 'hMin'>;
35
+ export type Sizes = Partial<Pick<BoxProps, 'w' | 'wMax' | 'wMin' | 'h' | 'hMax' | 'hMin'>>;
35
36
  export type DataTableProps<Data extends DataTableData, UniqKey extends (Data[number] extends {
36
37
  [ROW_GROUP]: DataTableData;
37
38
  } ? keyof Data[number][typeof ROW_GROUP][number] : keyof Data[number]), UniqKeyType extends (Data[number] extends {
@@ -88,16 +89,6 @@ export type DataTableProps<Data extends DataTableData, UniqKey extends (Data[num
88
89
  * Name of a unique key for each row data item
89
90
  */
90
91
  uniqueRowKey?: UniqKey;
91
- /**
92
- * List of selected rows (uniqIds from a data array)
93
- */
94
- selectedRows?: UniqKeyType[];
95
- /** Callback when row selection changes */
96
- onSelectedRowsChange?: (selectedRows: UniqKeyType[], event?: React.SyntheticEvent<HTMLElement>, opts?: {
97
- selectedRowIndex: number;
98
- isSelected: boolean;
99
- row: DTRow<UniqKeyType>;
100
- }) => void;
101
92
  /**
102
93
  * For custom empty data widget.
103
94
  */
@@ -154,7 +145,25 @@ export type DataTableProps<Data extends DataTableData, UniqKey extends (Data[num
154
145
  * Handling table container resizing.
155
146
  */
156
147
  onResize?: ResizeObserverCallback;
157
- };
148
+ } & ({
149
+ /**
150
+ * List of selected rows (uniqIds from a data array)
151
+ * @deprecated use ISelectedRows for this property instead of an array.
152
+ */
153
+ selectedRows?: UniqKeyType[];
154
+ /** Callback when row selection changes */
155
+ onSelectedRowsChange?: (selectedRows: UniqKeyType[], event?: React.SyntheticEvent<HTMLElement>, opts?: {
156
+ selectedRowIndex: number;
157
+ isSelected: boolean;
158
+ row: DTRow<UniqKeyType>;
159
+ }) => void;
160
+ } | {
161
+ /**
162
+ * Entity of selected rows (uniq id from them)
163
+ * This is mutable! variable because of table performance. Don't change the link on it.
164
+ */
165
+ selectedRows?: ISelectedRows<UniqKeyType>;
166
+ });
158
167
  export type ColumnItemConfig = Intergalactic.InternalTypings.EfficientOmit<Intergalactic.InternalTypings.ComponentProps<'div' | typeof Tooltip, 'div', DataTableColumnProps, {}, [
159
168
  ]>, 'children'> & {
160
169
  children: React.ReactNode | React.FC;
@@ -1,4 +1,5 @@
1
1
  import type { ColumnPropsInner, DTColumn } from './Column.types';
2
+ import type { ISelectedRows } from '../../store/SelectableRows';
2
3
  import type { BodyPropsInner } from '../Body/Body.types';
3
4
  import type { DataTableCellProps } from '../Body/Cell.types';
4
5
  import type { DTRow } from '../Body/Row.types';
@@ -45,7 +46,7 @@ export type HeadPropsInner<Data extends DataTableData, UniqKey extends (Data[num
45
46
  gridTemplateAreas: string[];
46
47
  sideIndents?: 'wide';
47
48
  totalRows: number;
48
- selectedRows?: UniqKeyType[];
49
+ selectedRows?: UniqKeyType[] | ISelectedRows<UniqKeyType>;
49
50
  onChangeSelectAll?: (selectedRows: UniqKeyType[], event?: React.SyntheticEvent<HTMLElement>) => void;
50
51
  flatRows: DTRow<UniqKeyType>[];
51
52
  getFixedStyle: (cell: Pick<DTColumn, 'name' | 'fixed'>) => [side: 'left' | 'right', style: string | number] | [side: undefined, style: undefined];
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import type { ISelectedRows } from '../../store/SelectableRows';
3
+ import type { Theme } from '../Body/Cell.types';
4
+ import type { DTRow } from '../Body/Row.types';
5
+ type RowSelectorProps<UniqKeyType> = {
6
+ row: DTRow<UniqKeyType>;
7
+ rowIndex: number;
8
+ gridRowIndex: number;
9
+ expanded: boolean;
10
+ withAccordion: boolean;
11
+ uid: string;
12
+ theme?: Theme;
13
+ isCellHidden?: boolean;
14
+ isAccordionRow?: boolean;
15
+ selectedRows?: UniqKeyType[] | ISelectedRows<UniqKeyType>;
16
+ onSelectRow?: (isSelect: boolean, selectedRowIndex: number, row: DTRow<UniqKeyType>, event?: React.SyntheticEvent<HTMLElement>) => void;
17
+ };
18
+ type State = {
19
+ checked: boolean;
20
+ };
21
+ export declare class RowSelector<UniqKeyType> extends React.PureComponent<RowSelectorProps<UniqKeyType>, State> {
22
+ state: State;
23
+ private unsubscribeToggle;
24
+ constructor(props: RowSelectorProps<UniqKeyType>);
25
+ componentDidMount(): void;
26
+ componentWillUnmount(): void;
27
+ handleSelectRow: (value: boolean, event?: React.SyntheticEvent<HTMLElement>) => void;
28
+ handleClickCheckbox: (value: boolean) => (event?: React.SyntheticEvent<HTMLElement>) => void;
29
+ render(): React.JSX.Element;
30
+ }
31
+ export {};
@@ -4,6 +4,7 @@ import type { CellRenderProps } from './components/Body/Body.types';
4
4
  import { MergedRowsCell, MergedColumnsCell } from './components/Body/MergedCells';
5
5
  import { DataTable, ACCORDION, ROW_GROUP } from './components/DataTable/DataTable';
6
6
  import type { DataTableSort, DataTableType, DataTableData, DataTableProps, DataTableChangeSort, ColumnGroupConfig, ColumnItemConfig } from './components/DataTable/DataTable.types';
7
+ import { SelectableRows } from './store/SelectableRows';
7
8
  declare const wrapDataTable: <PropsExtending extends {}>(wrapper: (props: Intergalactic.InternalTypings.UntypeRefAndTag<Intergalactic.InternalTypings.ComponentPropsNesting<DataTableType>> & PropsExtending) => React.ReactNode) => DataTableType;
8
- export { MergedRowsCell, MergedColumnsCell, DataTable, ACCORDION, ROW_GROUP, wrapDataTable, };
9
+ export { MergedRowsCell, MergedColumnsCell, DataTable, ACCORDION, ROW_GROUP, wrapDataTable, SelectableRows, };
9
10
  export type { DataTableSort, DataTableData, DataTableProps, DataTableChangeSort, ColumnGroupConfig, ColumnItemConfig, CellRenderProps, };
@@ -0,0 +1,56 @@
1
+ import EventEmitter from '@semcore/core/lib/utils/eventEmitter';
2
+ import type { DTRow } from '../components/Body/Row.types';
3
+ export interface ISelectedRows<UniqKeyType> {
4
+ /** Flag for multiple rows selection */
5
+ isPressedShift: boolean;
6
+ /** Method for set keys from data. Call it in DataTable, on data changes */
7
+ setAvailableKeys(keys: UniqKeyType[]): void;
8
+ /** Get the list of keys */
9
+ get(): UniqKeyType[];
10
+ /** Check if the row is selected */
11
+ isChecked(key: UniqKeyType): boolean;
12
+ /** Replace the list of keys. */
13
+ replace(value: UniqKeyType[]): void;
14
+ /** Check if the key exists in selected rows */
15
+ has(value: UniqKeyType): boolean;
16
+ /** Select all handler */
17
+ selectAll(): void;
18
+ /** Clear all handler */
19
+ clearAll(): void;
20
+ /** Clear all available values (rows on current page) handler */
21
+ clearAllAvailable(): void;
22
+ /** Toggle selection of row */
23
+ toggle(selected: boolean, row: DTRow<UniqKeyType>): void;
24
+ /** Check if all rows selected */
25
+ isAllSelected(): boolean;
26
+ /** Check if at least one row selected */
27
+ isIndeterminate(): boolean;
28
+ /** Subscribe to changes */
29
+ subscribe: EventEmitter<Events<UniqKeyType>>['subscribe'];
30
+ }
31
+ type Events<UniqRowKeyType> = {
32
+ [SelectableRows.TOGGLE_EVENT]: (val: UniqRowKeyType) => void;
33
+ [SelectableRows.SELECT_ALL_EVENT]: () => void;
34
+ };
35
+ export declare class SelectableRows<UniqRowKeyType> extends EventEmitter<Events<UniqRowKeyType>> implements ISelectedRows<UniqRowKeyType> {
36
+ private readonly values;
37
+ private availableKeys;
38
+ private lastSelectedRow;
39
+ static TOGGLE_EVENT: "toggle_selected_row";
40
+ static SELECT_ALL_EVENT: "select_all_selected_rows";
41
+ isPressedShift: boolean;
42
+ constructor(initValues?: UniqRowKeyType[]);
43
+ setAvailableKeys(value: UniqRowKeyType[]): void;
44
+ get(): UniqRowKeyType[];
45
+ isChecked(key: UniqRowKeyType): boolean;
46
+ replace(value: UniqRowKeyType[]): void;
47
+ has(value: UniqRowKeyType): boolean;
48
+ isAllSelected(): boolean;
49
+ isIndeterminate(): boolean;
50
+ selectAll(): void;
51
+ clearAll(): void;
52
+ clearAllAvailable(): void;
53
+ toggle(selected: boolean, row: DTRow<UniqRowKeyType>): void;
54
+ private toggleOneRow;
55
+ }
56
+ export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/data-table",
3
3
  "description": "Semrush DataTable Component",
4
- "version": "17.0.0-prerelease.31",
4
+ "version": "17.0.0-prerelease.36",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",
@@ -14,28 +14,28 @@
14
14
  "types": "./lib/types/index.d.ts"
15
15
  },
16
16
  "dependencies": {
17
- "@semcore/button": "^17.0.0-prerelease.31",
18
- "@semcore/checkbox": "^17.0.0-prerelease.31",
19
- "@semcore/spin": "^17.0.0-prerelease.31",
20
- "@semcore/tooltip": "^17.0.0-prerelease.31",
21
- "@semcore/widget-empty": "^17.0.0-prerelease.31"
17
+ "@semcore/button": "^17.0.0-prerelease.36",
18
+ "@semcore/checkbox": "^17.0.0-prerelease.36",
19
+ "@semcore/spin": "^17.0.0-prerelease.36",
20
+ "@semcore/tooltip": "^17.0.0-prerelease.36",
21
+ "@semcore/widget-empty": "^17.0.0-prerelease.36"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/node": "18.16.15",
25
25
  "csstype": "3.1.3",
26
+ "@semcore/base-trigger": "17.0.0-prerelease.36",
27
+ "@semcore/typography": "17.0.0-prerelease.36",
28
+ "@semcore/dropdown-menu": "17.0.0-prerelease.36",
29
+ "@semcore/divider": "17.0.0-prerelease.36",
26
30
  "@semcore/testing-utils": "1.0.0",
27
- "@semcore/base-trigger": "17.0.0-prerelease.31",
28
- "@semcore/typography": "17.0.0-prerelease.31",
29
- "@semcore/dropdown-menu": "17.0.0-prerelease.31",
30
- "@semcore/accordion": "17.0.0-prerelease.31",
31
- "@semcore/divider": "17.0.0-prerelease.31",
32
- "@semcore/progress-bar": "17.0.0-prerelease.31",
33
- "@semcore/skeleton": "17.0.0-prerelease.31",
34
- "@semcore/spin": "17.0.0-prerelease.31",
35
- "@semcore/spin-container": "17.0.0-prerelease.31",
36
- "@semcore/tooltip": "17.0.0-prerelease.31",
37
- "@semcore/base-components": "17.0.0-prerelease.31",
38
- "@semcore/icon": "16.7.2-prerelease.31"
31
+ "@semcore/skeleton": "17.0.0-prerelease.36",
32
+ "@semcore/progress-bar": "17.0.0-prerelease.36",
33
+ "@semcore/accordion": "17.0.0-prerelease.36",
34
+ "@semcore/spin": "17.0.0-prerelease.36",
35
+ "@semcore/spin-container": "17.0.0-prerelease.36",
36
+ "@semcore/tooltip": "17.0.0-prerelease.36",
37
+ "@semcore/base-components": "17.0.0-prerelease.36",
38
+ "@semcore/icon": "16.7.2-prerelease.36"
39
39
  },
40
40
  "peerDependencies": {
41
41
  "@semcore/base-components": "^17.0.0 || ^17.0.0-0",