@servicetitan/table 31.1.0 → 31.3.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 (181) hide show
  1. package/dist/demo/column-hiding/index.js +1 -0
  2. package/dist/demo/column-hiding/index.js.map +1 -1
  3. package/dist/demo/column-hiding/product.js +7 -6
  4. package/dist/demo/column-hiding/product.js.map +1 -1
  5. package/dist/demo/column-hiding/products.js +12 -11
  6. package/dist/demo/column-hiding/products.js.map +1 -1
  7. package/dist/demo/column-hiding/table.js +126 -32
  8. package/dist/demo/column-hiding/table.js.map +1 -1
  9. package/dist/demo/column-hiding/table.store.js +30 -27
  10. package/dist/demo/column-hiding/table.store.js.map +1 -1
  11. package/dist/demo/filters/async-select-filter.js +59 -12
  12. package/dist/demo/filters/async-select-filter.js.map +1 -1
  13. package/dist/demo/filters/categories.js +20 -16
  14. package/dist/demo/filters/categories.js.map +1 -1
  15. package/dist/demo/filters/multiselect-filter.js +37 -5
  16. package/dist/demo/filters/multiselect-filter.js.map +1 -1
  17. package/dist/demo/filters/range-filter.js +104 -10
  18. package/dist/demo/filters/range-filter.js.map +1 -1
  19. package/dist/demo/filters/select-filter.js +139 -41
  20. package/dist/demo/filters/select-filter.js.map +1 -1
  21. package/dist/demo/filters/single-select-filter.js +109 -18
  22. package/dist/demo/filters/single-select-filter.js.map +1 -1
  23. package/dist/demo/filters/table.store.js +77 -86
  24. package/dist/demo/filters/table.store.js.map +1 -1
  25. package/dist/demo/footer-page-size/index.js +1 -0
  26. package/dist/demo/footer-page-size/index.js.map +1 -1
  27. package/dist/demo/footer-page-size/table.js +82 -6
  28. package/dist/demo/footer-page-size/table.js.map +1 -1
  29. package/dist/demo/index.js +1 -0
  30. package/dist/demo/index.js.map +1 -1
  31. package/dist/demo/master-detail/detail-table.js +41 -9
  32. package/dist/demo/master-detail/detail-table.js.map +1 -1
  33. package/dist/demo/master-detail/detail-table.store.js +60 -56
  34. package/dist/demo/master-detail/detail-table.store.js.map +1 -1
  35. package/dist/demo/master-detail/index.js +1 -0
  36. package/dist/demo/master-detail/index.js.map +1 -1
  37. package/dist/demo/master-detail/master-table.store.js +65 -61
  38. package/dist/demo/master-detail/master-table.store.js.map +1 -1
  39. package/dist/demo/master-detail/product-detail.js +2 -1
  40. package/dist/demo/master-detail/product-detail.js.map +1 -1
  41. package/dist/demo/master-detail/product-details.js +10 -9
  42. package/dist/demo/master-detail/product-details.js.map +1 -1
  43. package/dist/demo/master-detail/product.js +7 -6
  44. package/dist/demo/master-detail/product.js.map +1 -1
  45. package/dist/demo/master-detail/products.js +12 -11
  46. package/dist/demo/master-detail/products.js.map +1 -1
  47. package/dist/demo/master-detail/table-master-detail.js +39 -8
  48. package/dist/demo/master-detail/table-master-detail.js.map +1 -1
  49. package/dist/demo/overview/actions-cell.js +47 -10
  50. package/dist/demo/overview/actions-cell.js.map +1 -1
  51. package/dist/demo/overview/index.js +1 -0
  52. package/dist/demo/overview/index.js.map +1 -1
  53. package/dist/demo/overview/product.js +7 -6
  54. package/dist/demo/overview/product.js.map +1 -1
  55. package/dist/demo/overview/products.js +15 -14
  56. package/dist/demo/overview/products.js.map +1 -1
  57. package/dist/demo/overview/table.js +176 -21
  58. package/dist/demo/overview/table.js.map +1 -1
  59. package/dist/demo/overview/table.store.js +45 -51
  60. package/dist/demo/overview/table.store.js.map +1 -1
  61. package/dist/demo/row-details/index.js +1 -0
  62. package/dist/demo/row-details/index.js.map +1 -1
  63. package/dist/demo/row-details/row-details-table.js +52 -5
  64. package/dist/demo/row-details/row-details-table.js.map +1 -1
  65. package/dist/demo/row-details/row-details-table.store.js +27 -19
  66. package/dist/demo/row-details/row-details-table.store.js.map +1 -1
  67. package/dist/demo/state-caching/beverages.js +11 -10
  68. package/dist/demo/state-caching/beverages.js.map +1 -1
  69. package/dist/demo/state-caching/index.js +1 -0
  70. package/dist/demo/state-caching/index.js.map +1 -1
  71. package/dist/demo/state-caching/product.js +2 -1
  72. package/dist/demo/state-caching/product.js.map +1 -1
  73. package/dist/demo/state-caching/products.js +12 -11
  74. package/dist/demo/state-caching/products.js.map +1 -1
  75. package/dist/demo/state-caching/state-caching-table.js +44 -3
  76. package/dist/demo/state-caching/state-caching-table.js.map +1 -1
  77. package/dist/demo/state-caching/state-caching-table.store.js +42 -54
  78. package/dist/demo/state-caching/state-caching-table.store.js.map +1 -1
  79. package/dist/details/expand-column.js +31 -7
  80. package/dist/details/expand-column.js.map +1 -1
  81. package/dist/details/index.js +1 -0
  82. package/dist/details/index.js.map +1 -1
  83. package/dist/editable-cell/boolean-editable-cell.js +15 -4
  84. package/dist/editable-cell/boolean-editable-cell.js.map +1 -1
  85. package/dist/editable-cell/get-action-cell.js +14 -7
  86. package/dist/editable-cell/get-action-cell.js.map +1 -1
  87. package/dist/editable-cell/get-editable-cell.js +16 -8
  88. package/dist/editable-cell/get-editable-cell.js.map +1 -1
  89. package/dist/editable-cell/get-select-editable-cell.js +19 -5
  90. package/dist/editable-cell/get-select-editable-cell.js.map +1 -1
  91. package/dist/editable-cell/index.js +1 -0
  92. package/dist/editable-cell/index.js.map +1 -1
  93. package/dist/editable-cell/text-editable-cell.js +23 -5
  94. package/dist/editable-cell/text-editable-cell.js.map +1 -1
  95. package/dist/export/export.js +38 -1
  96. package/dist/export/export.js.map +1 -1
  97. package/dist/export/export.module.css.d.ts +3 -0
  98. package/dist/export/index.js +1 -0
  99. package/dist/export/index.js.map +1 -1
  100. package/dist/filters/async-select/async-select-filter.js +167 -132
  101. package/dist/filters/async-select/async-select-filter.js.map +1 -1
  102. package/dist/filters/column-menu-filters.js +39 -8
  103. package/dist/filters/column-menu-filters.js.map +1 -1
  104. package/dist/filters/datetime-filter/datetime-filter.js +73 -50
  105. package/dist/filters/datetime-filter/datetime-filter.js.map +1 -1
  106. package/dist/filters/field-values-filter.js +80 -72
  107. package/dist/filters/field-values-filter.js.map +1 -1
  108. package/dist/filters/index.js +1 -0
  109. package/dist/filters/index.js.map +1 -1
  110. package/dist/filters/multiselect-filter/multiselect-filter.js +77 -73
  111. package/dist/filters/multiselect-filter/multiselect-filter.js.map +1 -1
  112. package/dist/filters/numeric-filter-extended/numeric-extended-operators.js +10 -3
  113. package/dist/filters/numeric-filter-extended/numeric-extended-operators.js.map +1 -1
  114. package/dist/filters/numeric-filter-extended/numeric-filter-extended.js +39 -16
  115. package/dist/filters/numeric-filter-extended/numeric-filter-extended.js.map +1 -1
  116. package/dist/filters/range-filter/range-filter.js +76 -72
  117. package/dist/filters/range-filter/range-filter.js.map +1 -1
  118. package/dist/filters/select-filter/object-search.js +4 -3
  119. package/dist/filters/select-filter/object-search.js.map +1 -1
  120. package/dist/filters/select-filter/operators.js +6 -5
  121. package/dist/filters/select-filter/operators.js.map +1 -1
  122. package/dist/filters/select-filter/select-filter.js +180 -145
  123. package/dist/filters/select-filter/select-filter.js.map +1 -1
  124. package/dist/filters/select-filter/value-getter.js +2 -1
  125. package/dist/filters/select-filter/value-getter.js.map +1 -1
  126. package/dist/filters/single-select/single-select-filter.js +29 -15
  127. package/dist/filters/single-select/single-select-filter.js.map +1 -1
  128. package/dist/filters/standard-filter-with-multiselect/filter-cell-ext.js +114 -67
  129. package/dist/filters/standard-filter-with-multiselect/filter-cell-ext.js.map +1 -1
  130. package/dist/filters/standard-filter-with-multiselect/filter-cell-ext.module.css.d.ts +7 -0
  131. package/dist/filters/standard-filter-with-multiselect/multiselect-operators.js +10 -3
  132. package/dist/filters/standard-filter-with-multiselect/multiselect-operators.js.map +1 -1
  133. package/dist/filters/standard-filter-with-multiselect/standard-filter-with-multiselect.js +77 -55
  134. package/dist/filters/standard-filter-with-multiselect/standard-filter-with-multiselect.js.map +1 -1
  135. package/dist/filters/standard-filter-with-multiselect/table-column-menu-filter-ext.js +23 -10
  136. package/dist/filters/standard-filter-with-multiselect/table-column-menu-filter-ext.js.map +1 -1
  137. package/dist/filters/time-filter/time-filter.js +63 -49
  138. package/dist/filters/time-filter/time-filter.js.map +1 -1
  139. package/dist/index.js +4 -2
  140. package/dist/index.js.map +1 -1
  141. package/dist/select-cell/index.js +1 -0
  142. package/dist/select-cell/index.js.map +1 -1
  143. package/dist/select-cell/select-cell.js +36 -11
  144. package/dist/select-cell/select-cell.js.map +1 -1
  145. package/dist/select-cell/select-cell.module.css.d.ts +3 -0
  146. package/dist/table-state.js +479 -660
  147. package/dist/table-state.js.map +1 -1
  148. package/dist/table.js +235 -250
  149. package/dist/table.js.map +1 -1
  150. package/dist/table.module.css.d.ts +5 -0
  151. package/dist/use-observing-table-state/demo/components/use-observing-table-state-demo.js +97 -5
  152. package/dist/use-observing-table-state/demo/components/use-observing-table-state-demo.js.map +1 -1
  153. package/dist/use-observing-table-state/demo/stores/use-observing-table-state-demo.store.js +71 -97
  154. package/dist/use-observing-table-state/demo/stores/use-observing-table-state-demo.store.js.map +1 -1
  155. package/dist/use-observing-table-state/index.js +1 -0
  156. package/dist/use-observing-table-state/index.js.map +1 -1
  157. package/dist/use-observing-table-state/use-observing-table-state.js +26 -20
  158. package/dist/use-observing-table-state/use-observing-table-state.js.map +1 -1
  159. package/dist/utils/filters.js +14 -9
  160. package/dist/utils/filters.js.map +1 -1
  161. package/dist/utils/use-td-props.js +3 -2
  162. package/dist/utils/use-td-props.js.map +1 -1
  163. package/package.json +13 -13
  164. package/dist/filters/async-select/async-select-filter.stories.js +0 -7
  165. package/dist/filters/async-select/async-select-filter.stories.js.map +0 -1
  166. package/dist/filters/multiselect-filter/multiselect-filter.stories.js +0 -7
  167. package/dist/filters/multiselect-filter/multiselect-filter.stories.js.map +0 -1
  168. package/dist/filters/range-filter/range-filter.stories.js +0 -9
  169. package/dist/filters/range-filter/range-filter.stories.js.map +0 -1
  170. package/dist/filters/select-filter/__tests__/object-search.test.js +0 -28
  171. package/dist/filters/select-filter/__tests__/object-search.test.js.map +0 -1
  172. package/dist/filters/select-filter/select-filter.stories.js +0 -8
  173. package/dist/filters/select-filter/select-filter.stories.js.map +0 -1
  174. package/dist/filters/single-select/single-select-filter.stories.js +0 -8
  175. package/dist/filters/single-select/single-select-filter.stories.js.map +0 -1
  176. package/dist/table.stories.js +0 -12
  177. package/dist/table.stories.js.map +0 -1
  178. package/dist/use-observing-table-state/use-observing-table-state.stories.js +0 -11
  179. package/dist/use-observing-table-state/use-observing-table-state.stories.js.map +0 -1
  180. package/dist/utils/__tests__/filters.test.js +0 -24
  181. package/dist/utils/__tests__/filters.test.js.map +0 -1
package/dist/table.js CHANGED
@@ -1,22 +1,34 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
1
+ function _define_property(obj, key, value) {
2
+ if (key in obj) {
3
+ Object.defineProperty(obj, key, {
4
+ value: value,
5
+ enumerable: true,
6
+ configurable: true,
7
+ writable: true
8
+ });
9
+ } else {
10
+ obj[key] = value;
11
+ }
12
+ return obj;
13
+ }
14
+ function _ts_decorate(decorators, target, key, desc) {
2
15
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
16
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
17
+ else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
18
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
19
+ }
20
+ function _ts_metadata(k, v) {
8
21
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
22
+ }
10
23
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
- import { isValidElement, Component, createRef, cloneElement, Children, Fragment, } from 'react';
12
- import { Announcement, Table as AnvilTable, TableColumn, } from '@servicetitan/design-system';
24
+ import { isValidElement, Component, createRef, cloneElement, Children, Fragment } from 'react';
25
+ import { Announcement, Table as AnvilTable, TableColumn } from '@servicetitan/design-system';
13
26
  import { operators as kendoOperators } from '@progress/kendo-react-grid/dist/npm/filterCommon';
14
27
  import { GridPDFExport as TablePDFExport } from '@progress/kendo-react-pdf';
15
28
  import { ExcelExport } from '@progress/kendo-react-excel-export';
16
29
  import { observer } from 'mobx-react';
17
- import { GRID_COL_INDEX_ATTRIBUTE } from '@progress/kendo-react-grid';
18
30
  import { AsyncDataSource } from '@servicetitan/data-query';
19
- import { SelectColumnCell, SelectHeaderCell, } from './select-cell/select-cell';
31
+ import { SelectColumnCell, SelectHeaderCell } from './select-cell/select-cell';
20
32
  import memoizeOne from 'memoize-one';
21
33
  import classNames from 'classnames';
22
34
  import * as Styles from './table.module.css';
@@ -24,286 +36,259 @@ import { action, makeObservable, observable } from 'mobx';
24
36
  import { useTdProps } from './utils/use-td-props';
25
37
  const { text: textOperators, ...operators } = kendoOperators;
26
38
  operators.text = [
27
- ...textOperators.filter(o => o.operator !== 'isnull' && o.operator !== 'isnotnull'),
39
+ ...textOperators.filter((o)=>o.operator !== 'isnull' && o.operator !== 'isnotnull')
28
40
  ];
29
41
  function isColumnElement(element) {
30
- if (!isValidElement(element)) {
42
+ if (!/*#__PURE__*/ isValidElement(element)) {
31
43
  return false;
32
44
  }
33
45
  const elementType = element.type;
34
46
  return elementType === TableColumn || elementType.originalType === TableColumn;
35
47
  }
36
- let Table = class Table extends Component {
37
- constructor(props) {
38
- super(props);
39
- Object.defineProperty(this, "observableScrollable", {
40
- enumerable: true,
41
- configurable: true,
42
- writable: true,
43
- value: void 0
44
- });
45
- Object.defineProperty(this, "observableSelectionControl", {
46
- enumerable: true,
47
- configurable: true,
48
- writable: true,
49
- value: void 0
50
- });
51
- Object.defineProperty(this, "observableHideSelectAll", {
52
- enumerable: true,
53
- configurable: true,
54
- writable: true,
55
- value: void 0
56
- });
57
- Object.defineProperty(this, "observableSelectable", {
58
- enumerable: true,
59
- configurable: true,
60
- writable: true,
61
- value: void 0
62
- });
63
- Object.defineProperty(this, "tableState", {
64
- enumerable: true,
65
- configurable: true,
66
- writable: true,
67
- value: this.props.tableState
68
- });
69
- Object.defineProperty(this, "ref", {
70
- enumerable: true,
71
- configurable: true,
72
- writable: true,
73
- value: createRef()
74
- });
75
- Object.defineProperty(this, "lastSelection", {
76
- enumerable: true,
77
- configurable: true,
78
- writable: true,
79
- value: void 0
80
- });
81
- Object.defineProperty(this, "selectColumnCell", {
82
- enumerable: true,
83
- configurable: true,
84
- writable: true,
85
- value: observer((props) => (_jsx(SelectColumnCell, { ...props, isRowSelectable: this.tableState.isRowSelectable(props.dataItem), control: this.observableSelectionControl })))
86
- });
87
- Object.defineProperty(this, "customCellMap", {
88
- enumerable: true,
89
- configurable: true,
90
- writable: true,
91
- value: new Map()
48
+ export class Table extends Component {
49
+ componentDidUpdate() {
50
+ this.observableScrollable = this.props.scrollable;
51
+ this.observableSelectionControl = this.props.selectionControl;
52
+ this.observableHideSelectAll = this.props.hideSelectAll;
53
+ }
54
+ applyToColumns(children, transformer) {
55
+ return Children.map(children, (child)=>{
56
+ if (!isColumnElement(child)) {
57
+ return child;
58
+ }
59
+ return child.props.children ? /*#__PURE__*/ cloneElement(transformer(child), {
60
+ children: this.applyToColumns(child.props.children, transformer)
61
+ }) : transformer(child);
92
62
  });
93
- Object.defineProperty(this, "selectHeaderCell", {
94
- enumerable: true,
95
- configurable: true,
96
- writable: true,
97
- value: observer((props) => {
98
- if (this.observableHideSelectAll || this.tableState.selectionLimit !== Infinity) {
99
- return null;
100
- }
101
- return (_jsx(SelectHeaderCell, { ...props, isSomeRowsSelected: this.observableScrollable !== 'virtual'
102
- ? this.tableState.isSomePageRowsSelected
103
- : this.tableState.isSomeRowsSelected, control: this.observableSelectionControl }));
104
- })
63
+ }
64
+ render() {
65
+ if (this.tableState.dataSource instanceof AsyncDataSource && this.props.scrollable === 'virtual' && this.props.selectable) {
66
+ return /*#__PURE__*/ _jsx(Announcement, {
67
+ status: "critical",
68
+ title: "AsyncDataSource doesn't support virtual scroll with selection."
69
+ });
70
+ }
71
+ const table = this.table();
72
+ return /*#__PURE__*/ _jsxs(Fragment, {
73
+ children: [
74
+ table,
75
+ this.props.exportable && /*#__PURE__*/ _jsxs(Fragment, {
76
+ children: [
77
+ /*#__PURE__*/ _jsxs(TablePDFExport, {
78
+ ref: this.tableState.setTablePdfExportRef,
79
+ fileName: sanitizeExportFileName(this.props.exportFileName),
80
+ children: [
81
+ this.props.children,
82
+ table
83
+ ]
84
+ }),
85
+ /*#__PURE__*/ _jsx(ExcelExport, {
86
+ ref: this.tableState.setTableExcelExportRef,
87
+ fileName: sanitizeExportFileName(this.props.exportFileName),
88
+ children: this.props.children
89
+ })
90
+ ]
91
+ })
92
+ ]
105
93
  });
106
- // TODO: rid of "memoizeOne" after migration on React.FC
107
- Object.defineProperty(this, "withCellTableState", {
108
- enumerable: true,
109
- configurable: true,
110
- writable: true,
111
- value: memoizeOne((children) => this.applyToColumns(children, column => {
94
+ }
95
+ getPageable() {
96
+ if (this.props.scrollable === 'virtual' || !this.tableState.pageSize) {
97
+ return false;
98
+ }
99
+ var _this_props_pager;
100
+ return (_this_props_pager = this.props.pager) !== null && _this_props_pager !== void 0 ? _this_props_pager : true;
101
+ }
102
+ constructor(props){
103
+ super(props), _define_property(this, "observableScrollable", void 0), _define_property(this, "observableSelectionControl", void 0), _define_property(this, "observableHideSelectAll", void 0), _define_property(this, "observableSelectable", void 0), _define_property(this, "tableState", this.props.tableState), _define_property(this, "ref", /*#__PURE__*/ createRef()), _define_property(this, "lastSelection", void 0), _define_property(this, "selectColumnCell", observer((props)=>/*#__PURE__*/ _jsx(SelectColumnCell, {
104
+ ...props,
105
+ isRowSelectable: this.tableState.isRowSelectable(props.dataItem),
106
+ control: this.observableSelectionControl
107
+ }))), _define_property(this, "customCellMap", new Map()), _define_property(this, "selectHeaderCell", observer((props)=>{
108
+ if (this.observableHideSelectAll || this.tableState.selectionLimit !== Infinity) {
109
+ return null;
110
+ }
111
+ return /*#__PURE__*/ _jsx(SelectHeaderCell, {
112
+ ...props,
113
+ isSomeRowsSelected: this.observableScrollable !== 'virtual' ? this.tableState.isSomePageRowsSelected : this.tableState.isSomeRowsSelected,
114
+ control: this.observableSelectionControl
115
+ });
116
+ })), // TODO: rid of "memoizeOne" after migration on React.FC
117
+ _define_property(this, "withCellTableState", memoizeOne((children)=>this.applyToColumns(children, (column)=>{
112
118
  const { cell: Cell, field } = column.props;
113
- return cloneElement(column, {
114
- cell: this.getOrCreateCellComponentWithTableState(Cell, field),
119
+ return /*#__PURE__*/ cloneElement(column, {
120
+ cell: this.getOrCreateCellComponentWithTableState(Cell, field)
115
121
  });
116
- }))
117
- });
118
- Object.defineProperty(this, "rowRender", {
119
- enumerable: true,
120
- configurable: true,
121
- writable: true,
122
- value: (row, rowProps) => {
123
- const overrides = {};
124
- if (this.props.selectable &&
125
- rowProps.rowType === 'data' &&
126
- !this.tableState.isRowSelectable(rowProps.dataItem)) {
127
- overrides.className = classNames(row.props.className, Styles.disabled);
128
- }
129
- const result = Object.keys(overrides).length ? cloneElement(row, overrides) : row;
130
- return this.props.rowRender ? this.props.rowRender(result, rowProps) : result;
122
+ }))), _define_property(this, "rowRender", (row, rowProps)=>{
123
+ const overrides = {};
124
+ if (this.props.selectable && rowProps.rowType === 'data' && !this.tableState.isRowSelectable(rowProps.dataItem)) {
125
+ overrides.className = classNames(row.props.className, Styles.disabled);
131
126
  }
132
- });
133
- Object.defineProperty(this, "handleHeaderSelectionChange", {
134
- enumerable: true,
135
- configurable: true,
136
- writable: true,
137
- value: (ev) => {
138
- const checked = ev.syntheticEvent.currentTarget.checked;
139
- if (this.observableScrollable !== 'virtual') {
140
- if (checked) {
141
- this.tableState.selectPage();
142
- }
143
- else {
144
- this.tableState.deselectPage();
145
- }
127
+ const result = Object.keys(overrides).length ? /*#__PURE__*/ cloneElement(row, overrides) : row;
128
+ return this.props.rowRender ? this.props.rowRender(result, rowProps) : result;
129
+ }), _define_property(this, "handleHeaderSelectionChange", (ev)=>{
130
+ const checked = ev.syntheticEvent.currentTarget.checked;
131
+ if (this.observableScrollable !== 'virtual') {
132
+ if (checked) {
133
+ this.tableState.selectPage();
134
+ } else {
135
+ this.tableState.deselectPage();
146
136
  }
147
- else {
148
- if (checked) {
149
- this.tableState.selectAll();
150
- }
151
- else {
152
- this.tableState.deselectAll();
153
- }
137
+ } else {
138
+ if (checked) {
139
+ this.tableState.selectAll();
140
+ } else {
141
+ this.tableState.deselectAll();
154
142
  }
155
143
  }
156
- });
157
- Object.defineProperty(this, "handleSelectionChange", {
158
- enumerable: true,
159
- configurable: true,
160
- writable: true,
161
- value: (ev) => {
162
- var _a, _b, _c, _d;
163
- if (!ev.dataItem) {
164
- return;
165
- }
166
- if (ev.nativeEvent.shiftKey && this.lastSelection) {
167
- const rows = this.tableState
168
- .getRowsBetween(this.lastSelection, ev.dataItem)
169
- .filter(row => this.tableState.isRowSelectable(row));
170
- const isAsc = ((_b = (_a = this.tableState.dataSource) === null || _a === void 0 ? void 0 : _a.idSelector) === null || _b === void 0 ? void 0 : _b.call(_a, this.lastSelection)) ===
171
- ((_d = (_c = this.tableState.dataSource) === null || _c === void 0 ? void 0 : _c.idSelector) === null || _d === void 0 ? void 0 : _d.call(_c, rows[0]));
172
- const selection = !ev.dataItem.selected;
173
- if (selection) {
174
- const toBeSelected = [];
175
- for (const row of isAsc ? rows : rows.reverse()) {
176
- if (this.tableState.selectedCount + toBeSelected.length >=
177
- this.tableState.selectionLimit) {
178
- break;
179
- }
180
- if (row.selected) {
181
- continue;
182
- }
183
- toBeSelected.push(row);
144
+ }), _define_property(this, "handleSelectionChange", (ev)=>{
145
+ if (!ev.dataItem) {
146
+ return;
147
+ }
148
+ if (ev.nativeEvent.shiftKey && this.lastSelection) {
149
+ var _this_tableState_dataSource_idSelector, _this_tableState_dataSource, _this_tableState_dataSource_idSelector1, _this_tableState_dataSource1;
150
+ const rows = this.tableState.getRowsBetween(this.lastSelection, ev.dataItem).filter((row)=>this.tableState.isRowSelectable(row));
151
+ const isAsc = ((_this_tableState_dataSource = this.tableState.dataSource) === null || _this_tableState_dataSource === void 0 ? void 0 : (_this_tableState_dataSource_idSelector = _this_tableState_dataSource.idSelector) === null || _this_tableState_dataSource_idSelector === void 0 ? void 0 : _this_tableState_dataSource_idSelector.call(_this_tableState_dataSource, this.lastSelection)) === ((_this_tableState_dataSource1 = this.tableState.dataSource) === null || _this_tableState_dataSource1 === void 0 ? void 0 : (_this_tableState_dataSource_idSelector1 = _this_tableState_dataSource1.idSelector) === null || _this_tableState_dataSource_idSelector1 === void 0 ? void 0 : _this_tableState_dataSource_idSelector1.call(_this_tableState_dataSource1, rows[0]));
152
+ const selection = !ev.dataItem.selected;
153
+ if (selection) {
154
+ const toBeSelected = [];
155
+ for (const row of isAsc ? rows : rows.reverse()){
156
+ if (this.tableState.selectedCount + toBeSelected.length >= this.tableState.selectionLimit) {
157
+ break;
184
158
  }
185
- this.tableState.setRowsSelection(toBeSelected, selection);
186
- }
187
- else {
188
- this.tableState.setRowsSelection(rows, selection);
159
+ if (row.selected) {
160
+ continue;
161
+ }
162
+ toBeSelected.push(row);
189
163
  }
164
+ this.tableState.setRowsSelection(toBeSelected, selection);
165
+ } else {
166
+ this.tableState.setRowsSelection(rows, selection);
190
167
  }
191
- else {
192
- this.tableState.toggleRowSelection(ev.dataItem);
193
- }
194
- this.lastSelection = ev.dataItem;
168
+ } else {
169
+ this.tableState.toggleRowSelection(ev.dataItem);
195
170
  }
196
- });
197
- Object.defineProperty(this, "scrollToBottom", {
198
- enumerable: true,
199
- configurable: true,
200
- writable: true,
201
- value: () => {
202
- if (this.ref.current) {
203
- const container = this.ref.current.getElementsByClassName('k-grid-content')[0];
204
- container.scrollTop = container.scrollHeight - container.clientHeight * 2;
205
- container.scroll({ top: container.scrollHeight, behavior: 'smooth' });
206
- }
171
+ this.lastSelection = ev.dataItem;
172
+ }), _define_property(this, "scrollToBottom", ()=>{
173
+ if (this.ref.current) {
174
+ const container = this.ref.current.getElementsByClassName('k-grid-content')[0];
175
+ container.scrollTop = container.scrollHeight - container.clientHeight * 2;
176
+ container.scroll({
177
+ top: container.scrollHeight,
178
+ behavior: 'smooth'
179
+ });
207
180
  }
208
- });
209
- Object.defineProperty(this, "table", {
210
- enumerable: true,
211
- configurable: true,
212
- writable: true,
213
- value: () => {
214
- const { className, filterOperators, selectable, pager, ...props } = this.props;
215
- return (_jsxs(AnvilTable, { ref: this.ref, ...props, dataItemKey: this.tableState.rowIdKey, data: [...this.tableState.data], rowRender: this.rowRender, editField: "inEdit", filter: this.tableState.filter, filterOperators: filterOperators !== null && filterOperators !== void 0 ? filterOperators : operators, onFilterChange: this.tableState.handleFilterChange, group: [...this.tableState.group], onGroupChange: this.tableState.handleGroupChange, onExpandChange: this.tableState.handleExpandChange, expandField: "expanded", sort: [...this.tableState.sort], onSortChange: this.tableState.handleSortChange, onHeaderSelectionChange: this.handleHeaderSelectionChange, onSelectionChange: this.handleSelectionChange, selectedField: "selected", pageable: this.getPageable(), pageSize: this.tableState.pageSize, skip: this.tableState.skip, onPageChange: this.tableState.handlePageChange, total: this.tableState.filteredCount, className: classNames(Styles.table, className), selectable: { enabled: selectable, mode: 'multiple' }, children: [selectable && (_jsx(TableColumn, { locked: true, field: "selected", id: "selected", width: "50px", filterable: false, resizable: false, reorderable: false, headerSelectionValue: props.scrollable !== 'virtual'
216
- ? this.tableState.isAllPageRowsSelected
217
- : this.tableState.isAllRowsSelected, headerCell: this.selectHeaderCell, cell: this.selectColumnCell, headerClassName: "lh-1-i ta-center-i", className: classNames(Styles.unselectable, 'lh-1-i', 'ta-center-i') })), this.withCellTableState(props.children)] }));
181
+ }), _define_property(this, "table", ()=>{
182
+ const { className, filterOperators, selectable, pager, ...props } = this.props;
183
+ return /*#__PURE__*/ _jsxs(AnvilTable, {
184
+ ref: this.ref,
185
+ ...props,
186
+ dataItemKey: this.tableState.rowIdKey,
187
+ data: [
188
+ ...this.tableState.data
189
+ ],
190
+ rowRender: this.rowRender,
191
+ editField: "inEdit",
192
+ filter: this.tableState.filter,
193
+ filterOperators: filterOperators !== null && filterOperators !== void 0 ? filterOperators : operators,
194
+ onFilterChange: this.tableState.handleFilterChange,
195
+ group: [
196
+ ...this.tableState.group
197
+ ],
198
+ onGroupChange: this.tableState.handleGroupChange,
199
+ onExpandChange: this.tableState.handleExpandChange,
200
+ expandField: "expanded",
201
+ sort: [
202
+ ...this.tableState.sort
203
+ ],
204
+ onSortChange: this.tableState.handleSortChange,
205
+ onHeaderSelectionChange: this.handleHeaderSelectionChange,
206
+ onSelectionChange: this.handleSelectionChange,
207
+ selectedField: "selected",
208
+ pageable: this.getPageable(),
209
+ pageSize: this.tableState.pageSize,
210
+ skip: this.tableState.skip,
211
+ onPageChange: this.tableState.handlePageChange,
212
+ total: this.tableState.filteredCount,
213
+ className: classNames(Styles.table, className),
214
+ selectable: {
215
+ enabled: selectable,
216
+ mode: 'multiple'
217
+ },
218
+ children: [
219
+ selectable && /*#__PURE__*/ _jsx(TableColumn, {
220
+ locked: true,
221
+ field: "selected",
222
+ id: "selected",
223
+ width: "50px",
224
+ filterable: false,
225
+ resizable: false,
226
+ reorderable: false,
227
+ headerSelectionValue: props.scrollable !== 'virtual' ? this.tableState.isAllPageRowsSelected : this.tableState.isAllRowsSelected,
228
+ headerCell: this.selectHeaderCell,
229
+ cell: this.selectColumnCell,
230
+ headerClassName: "lh-1-i ta-center-i",
231
+ className: classNames(Styles.unselectable, 'lh-1-i', 'ta-center-i')
232
+ }),
233
+ this.withCellTableState(props.children)
234
+ ]
235
+ });
236
+ }), _define_property(this, "getOrCreateCellComponentWithTableState", (Cell, field)=>{
237
+ if (!Cell) {
238
+ return undefined;
218
239
  }
219
- });
220
- Object.defineProperty(this, "getOrCreateCellComponentWithTableState", {
221
- enumerable: true,
222
- configurable: true,
223
- writable: true,
224
- value: (Cell, field) => {
225
- if (!Cell) {
226
- return undefined;
227
- }
228
- const CellWithTableState = (props) => {
229
- const tdProps = useTdProps(props);
230
- return _jsx(Cell, { ...props, tableState: this.tableState, tdProps: tdProps });
231
- };
232
- CellWithTableState.displayName = 'CellWithTableState';
233
- if (field) {
234
- if (this.customCellMap.has(field)) {
235
- return this.customCellMap.get(field);
236
- }
237
- this.customCellMap.set(field, CellWithTableState);
240
+ const CellWithTableState = (props)=>{
241
+ const tdProps = useTdProps(props);
242
+ return /*#__PURE__*/ _jsx(Cell, {
243
+ ...props,
244
+ tableState: this.tableState,
245
+ tdProps: tdProps
246
+ });
247
+ };
248
+ CellWithTableState.displayName = 'CellWithTableState';
249
+ if (field) {
250
+ if (this.customCellMap.has(field)) {
251
+ return this.customCellMap.get(field);
238
252
  }
239
- return CellWithTableState;
253
+ this.customCellMap.set(field, CellWithTableState);
240
254
  }
255
+ return CellWithTableState;
241
256
  });
242
257
  makeObservable(this);
243
258
  this.observableScrollable = this.props.scrollable;
244
259
  this.observableSelectionControl = this.props.selectionControl;
245
260
  this.observableHideSelectAll = this.props.hideSelectAll;
246
261
  }
247
- componentDidUpdate() {
248
- this.observableScrollable = this.props.scrollable;
249
- this.observableSelectionControl = this.props.selectionControl;
250
- this.observableHideSelectAll = this.props.hideSelectAll;
251
- }
252
- applyToColumns(children, transformer) {
253
- return Children.map(children, child => {
254
- if (!isColumnElement(child)) {
255
- return child;
256
- }
257
- return child.props.children
258
- ? cloneElement(transformer(child), {
259
- children: this.applyToColumns(child.props.children, transformer),
260
- })
261
- : transformer(child);
262
- });
263
- }
264
- render() {
265
- if (this.tableState.dataSource instanceof AsyncDataSource &&
266
- this.props.scrollable === 'virtual' &&
267
- this.props.selectable) {
268
- return (_jsx(Announcement, { status: "critical", title: "AsyncDataSource doesn't support virtual scroll with selection." }));
269
- }
270
- const table = this.table();
271
- return (_jsxs(Fragment, { children: [table, this.props.exportable && (_jsxs(Fragment, { children: [_jsxs(TablePDFExport, { ref: this.tableState.setTablePdfExportRef, fileName: sanitizeExportFileName(this.props.exportFileName), children: [this.props.children, table] }), _jsx(ExcelExport, { ref: this.tableState.setTableExcelExportRef, fileName: sanitizeExportFileName(this.props.exportFileName), children: this.props.children })] }))] }));
272
- }
273
- getPageable() {
274
- var _a;
275
- if (this.props.scrollable === 'virtual' || !this.tableState.pageSize) {
276
- return false;
277
- }
278
- return (_a = this.props.pager) !== null && _a !== void 0 ? _a : true;
279
- }
280
- };
281
- __decorate([
262
+ }
263
+ _ts_decorate([
282
264
  observable,
283
- __metadata("design:type", Object)
265
+ _ts_metadata("design:type", Object)
284
266
  ], Table.prototype, "observableScrollable", void 0);
285
- __decorate([
267
+ _ts_decorate([
286
268
  observable,
287
- __metadata("design:type", Object)
269
+ _ts_metadata("design:type", Object)
288
270
  ], Table.prototype, "observableSelectionControl", void 0);
289
- __decorate([
271
+ _ts_decorate([
290
272
  observable,
291
- __metadata("design:type", Object)
273
+ _ts_metadata("design:type", Object)
292
274
  ], Table.prototype, "observableHideSelectAll", void 0);
293
- __decorate([
275
+ _ts_decorate([
294
276
  observable,
295
- __metadata("design:type", Object)
277
+ _ts_metadata("design:type", Object)
296
278
  ], Table.prototype, "observableSelectable", void 0);
297
- __decorate([
279
+ _ts_decorate([
298
280
  action,
299
- __metadata("design:type", Function),
300
- __metadata("design:paramtypes", []),
301
- __metadata("design:returntype", void 0)
281
+ _ts_metadata("design:type", Function),
282
+ _ts_metadata("design:paramtypes", []),
283
+ _ts_metadata("design:returntype", void 0)
302
284
  ], Table.prototype, "componentDidUpdate", null);
303
- Table = __decorate([
285
+ Table = _ts_decorate([
304
286
  observer,
305
- __metadata("design:paramtypes", [Object])
287
+ _ts_metadata("design:type", Function),
288
+ _ts_metadata("design:paramtypes", [
289
+ typeof TableProps === "undefined" ? Object : TableProps
290
+ ])
306
291
  ], Table);
307
- export { Table };
308
- const sanitizeExportFileName = memoizeOne((fileName) => fileName === null || fileName === void 0 ? void 0 : fileName.replace(/\.+/g, '_'));
292
+ const sanitizeExportFileName = memoizeOne((fileName)=>fileName === null || fileName === void 0 ? void 0 : fileName.replace(/\.+/g, '_'));
293
+
309
294
  //# sourceMappingURL=table.js.map
package/dist/table.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"table.js","sourceRoot":"","sources":["../src/table.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../src/table.tsx"],"sourcesContent":["import {\n isValidElement,\n Component,\n createRef,\n cloneElement,\n Children,\n Fragment,\n ReactNode,\n ReactElement,\n ComponentType,\n FC,\n ComponentProps,\n} from 'react';\nimport {\n Announcement,\n Table as AnvilTable,\n TableProps as AnvilTableProps,\n TableRowProps,\n TableColumn,\n TableColumnProps as AnvilTableColumnProps,\n TableCellProps as AnvilTableCellProps,\n TableHeaderCellProps,\n TableHeaderSelectionChangeEvent,\n TableSelectionChangeEvent,\n TablePagerSettings,\n} from '@servicetitan/design-system';\nimport { operators as kendoOperators } from '@progress/kendo-react-grid/dist/npm/filterCommon';\nimport { GridPDFExport as TablePDFExport } from '@progress/kendo-react-pdf';\nimport { ExcelExport } from '@progress/kendo-react-excel-export';\nimport { observer } from 'mobx-react';\nimport { GRID_COL_INDEX_ATTRIBUTE } from '@progress/kendo-react-grid';\n\nimport { AsyncDataSource, IdType } from '@servicetitan/data-query';\nimport { TableState, Selectable } from './table-state';\nimport {\n SelectionControlType,\n SelectColumnCell,\n SelectHeaderCell,\n} from './select-cell/select-cell';\nimport memoizeOne from 'memoize-one';\n\nimport classNames from 'classnames';\nimport * as Styles from './table.module.css';\nimport { action, makeObservable, observable } from 'mobx';\nimport { useTdProps } from './utils/use-td-props';\n\nconst { text: textOperators, ...operators } = kendoOperators;\noperators.text = [\n ...textOperators.filter(o => o.operator !== 'isnull' && o.operator !== 'isnotnull'),\n];\n\nfunction isColumnElement<\n T = never,\n TId extends IdType = any,\n P = never,\n PId extends IdType = never,\n>(element: ReactNode): element is ReactElement<TableColumnProps<T, TId, P, PId>> {\n if (!isValidElement(element)) {\n return false;\n }\n\n const elementType = (element as ReactElement).type;\n\n return elementType === TableColumn || (elementType as any).originalType === TableColumn;\n}\n\nexport interface TableCellProps<\n T = never,\n TId extends IdType = any,\n P = never,\n PId extends IdType = never,\n> extends AnvilTableCellProps {\n tableState?: TableState<T, TId, P, PId>;\n tdProps?: ComponentProps<'td'> & {\n [GRID_COL_INDEX_ATTRIBUTE]?: number;\n };\n}\n\ninterface TableColumnProps<\n T = never,\n TId extends IdType = any,\n P = never,\n PId extends IdType = never,\n> extends AnvilTableColumnProps {\n cell?: ComponentType<TableCellProps<T, TId, P, PId>>;\n children?: ReactElement<TableColumnProps<T, TId, P, PId>>[];\n}\n\ntype ExcludedTableProps =\n | 'data'\n | 'dataItemKey'\n | 'editField'\n | 'filter'\n | 'onFilterChange'\n | 'group'\n | 'onGroupChange'\n | 'onExpandChange'\n | 'expandField'\n | 'sort'\n | 'onSortChange'\n | 'onHeaderSelectionChange'\n | 'onSelectionChange'\n | 'selectedField'\n | 'pageable'\n | 'pageSize'\n | 'skip'\n | 'onPageChange'\n | 'total'\n | 'selectable'\n | 'pager';\n\nexport interface TableProps<T, TId extends IdType = any, P = never, PId extends IdType = never>\n extends Omit<AnvilTableProps, ExcludedTableProps> {\n selectable?: boolean;\n exportable?: boolean;\n hideSelectAll?: boolean;\n exportFileName?: string;\n tableState: TableState<T, TId, P, PId>;\n selectionControl?: SelectionControlType;\n pager?: TablePagerSettings;\n}\n\n@observer\nexport class Table<\n T,\n TId extends IdType = any,\n P = never,\n PId extends IdType = never,\n> extends Component<TableProps<T, TId, P, PId>> {\n @observable observableScrollable: TableProps<T, TId, P, PId>['scrollable'];\n @observable observableSelectionControl: TableProps<T, TId, P, PId>['selectionControl'];\n @observable observableHideSelectAll: TableProps<T, TId, P, PId>['hideSelectAll'];\n @observable observableSelectable: TableProps<T, TId, P, PId>['selectable'];\n\n private tableState = this.props.tableState;\n\n private ref = createRef<HTMLElement>();\n\n private lastSelection?: Selectable<T>;\n\n private selectColumnCell: FC<AnvilTableCellProps> = observer((props: AnvilTableCellProps) => (\n <SelectColumnCell\n {...props}\n isRowSelectable={this.tableState.isRowSelectable(props.dataItem)}\n control={this.observableSelectionControl}\n />\n ));\n\n private customCellMap = new Map<string, FC<TableCellProps<T, TId, P, PId>>>();\n\n private selectHeaderCell: FC<TableHeaderCellProps> = observer((props: TableHeaderCellProps) => {\n if (this.observableHideSelectAll || this.tableState.selectionLimit !== Infinity) {\n return null;\n }\n\n return (\n <SelectHeaderCell\n {...props}\n isSomeRowsSelected={\n this.observableScrollable !== 'virtual'\n ? this.tableState.isSomePageRowsSelected\n : this.tableState.isSomeRowsSelected\n }\n control={this.observableSelectionControl}\n />\n );\n });\n\n // TODO: rid of \"memoizeOne\" after migration on React.FC\n private withCellTableState = memoizeOne((children: ReactNode) =>\n this.applyToColumns(children, column => {\n const { cell: Cell, field } = column.props;\n\n return cloneElement(column, {\n cell: this.getOrCreateCellComponentWithTableState(Cell, field),\n });\n })\n );\n\n constructor(props: TableProps<T, TId, P, PId>) {\n super(props);\n\n makeObservable(this);\n\n this.observableScrollable = this.props.scrollable;\n this.observableSelectionControl = this.props.selectionControl;\n this.observableHideSelectAll = this.props.hideSelectAll;\n }\n\n @action\n componentDidUpdate() {\n this.observableScrollable = this.props.scrollable;\n this.observableSelectionControl = this.props.selectionControl;\n this.observableHideSelectAll = this.props.hideSelectAll;\n }\n\n rowRender = (row: ReactElement, rowProps: TableRowProps) => {\n const overrides: typeof row.props = {};\n\n if (\n this.props.selectable &&\n rowProps.rowType === 'data' &&\n !this.tableState.isRowSelectable(rowProps.dataItem)\n ) {\n overrides.className = classNames(row.props.className, Styles.disabled);\n }\n\n const result = Object.keys(overrides).length ? cloneElement(row, overrides) : row;\n\n return this.props.rowRender ? this.props.rowRender(result, rowProps) : result;\n };\n\n applyToColumns(\n children: ReactNode,\n transformer: (\n column: ReactElement<TableColumnProps<T, TId, P, PId>>\n ) => ReactElement<TableColumnProps<T, TId, P, PId>>\n ): ReactNode {\n return Children.map(children, child => {\n if (!isColumnElement<T, TId, P, PId>(child)) {\n return child;\n }\n\n return child.props.children\n ? cloneElement(transformer(child), {\n children: this.applyToColumns(\n child.props.children,\n transformer\n ) as typeof child.props.children,\n })\n : transformer(child);\n });\n }\n\n handleHeaderSelectionChange = (ev: TableHeaderSelectionChangeEvent) => {\n const checked = ev.syntheticEvent.currentTarget.checked;\n\n if (this.observableScrollable !== 'virtual') {\n if (checked) {\n this.tableState.selectPage();\n } else {\n this.tableState.deselectPage();\n }\n } else {\n if (checked) {\n this.tableState.selectAll();\n } else {\n this.tableState.deselectAll();\n }\n }\n };\n\n handleSelectionChange = (ev: TableSelectionChangeEvent) => {\n if (!ev.dataItem) {\n return;\n }\n if (ev.nativeEvent.shiftKey && this.lastSelection) {\n const rows = this.tableState\n .getRowsBetween(this.lastSelection, ev.dataItem)\n .filter(row => this.tableState.isRowSelectable(row));\n const isAsc =\n this.tableState.dataSource?.idSelector?.(this.lastSelection) ===\n this.tableState.dataSource?.idSelector?.(rows[0]);\n const selection = !ev.dataItem.selected;\n\n if (selection) {\n const toBeSelected: Selectable<T>[] = [];\n for (const row of isAsc ? rows : rows.reverse()) {\n if (\n this.tableState.selectedCount + toBeSelected.length >=\n this.tableState.selectionLimit\n ) {\n break;\n }\n\n if (row.selected) {\n continue;\n }\n\n toBeSelected.push(row);\n }\n\n this.tableState.setRowsSelection(toBeSelected, selection);\n } else {\n this.tableState.setRowsSelection(rows, selection);\n }\n } else {\n this.tableState.toggleRowSelection(ev.dataItem);\n }\n\n this.lastSelection = ev.dataItem;\n };\n\n scrollToBottom = () => {\n if (this.ref.current) {\n const container = this.ref.current.getElementsByClassName(\n 'k-grid-content'\n )[0] as HTMLDivElement;\n container.scrollTop = container.scrollHeight - container.clientHeight * 2;\n container.scroll({ top: container.scrollHeight, behavior: 'smooth' });\n }\n };\n\n render() {\n if (\n this.tableState.dataSource instanceof AsyncDataSource &&\n this.props.scrollable === 'virtual' &&\n this.props.selectable\n ) {\n return (\n <Announcement\n status=\"critical\"\n title=\"AsyncDataSource doesn't support virtual scroll with selection.\"\n />\n );\n }\n\n const table = this.table();\n return (\n <Fragment>\n {table}\n {this.props.exportable && (\n <Fragment>\n <TablePDFExport\n ref={this.tableState.setTablePdfExportRef}\n fileName={sanitizeExportFileName(this.props.exportFileName)}\n >\n {this.props.children}\n {table}\n </TablePDFExport>\n <ExcelExport\n ref={this.tableState.setTableExcelExportRef}\n fileName={sanitizeExportFileName(this.props.exportFileName)}\n >\n {this.props.children}\n </ExcelExport>\n </Fragment>\n )}\n </Fragment>\n );\n }\n\n private getPageable() {\n if (this.props.scrollable === 'virtual' || !this.tableState.pageSize) {\n return false;\n }\n\n return this.props.pager ?? true;\n }\n\n private table = () => {\n const { className, filterOperators, selectable, pager, ...props } = this.props;\n\n return (\n <AnvilTable\n ref={this.ref}\n {...props}\n dataItemKey={this.tableState.rowIdKey}\n data={[...this.tableState.data]}\n rowRender={this.rowRender}\n editField=\"inEdit\"\n filter={this.tableState.filter}\n filterOperators={filterOperators ?? operators}\n onFilterChange={this.tableState.handleFilterChange}\n group={[...this.tableState.group] as AnvilTableProps['group']}\n onGroupChange={this.tableState.handleGroupChange}\n onExpandChange={this.tableState.handleExpandChange}\n expandField=\"expanded\"\n sort={[...this.tableState.sort]}\n onSortChange={this.tableState.handleSortChange}\n onHeaderSelectionChange={this.handleHeaderSelectionChange}\n onSelectionChange={this.handleSelectionChange}\n selectedField=\"selected\"\n pageable={this.getPageable()}\n pageSize={this.tableState.pageSize}\n skip={this.tableState.skip}\n onPageChange={this.tableState.handlePageChange}\n total={this.tableState.filteredCount}\n className={classNames(Styles.table, className)}\n selectable={{ enabled: selectable, mode: 'multiple' }}\n >\n {selectable && (\n <TableColumn\n locked\n field=\"selected\"\n id=\"selected\"\n width=\"50px\"\n filterable={false}\n resizable={false}\n reorderable={false}\n headerSelectionValue={\n props.scrollable !== 'virtual'\n ? this.tableState.isAllPageRowsSelected\n : this.tableState.isAllRowsSelected\n }\n headerCell={this.selectHeaderCell}\n cell={this.selectColumnCell}\n headerClassName=\"lh-1-i ta-center-i\"\n className={classNames(Styles.unselectable, 'lh-1-i', 'ta-center-i')}\n />\n )}\n {this.withCellTableState(props.children)}\n </AnvilTable>\n );\n };\n\n private getOrCreateCellComponentWithTableState = (\n Cell: any,\n field?: string\n ): FC<TableCellProps<T, TId, P, PId>> | undefined => {\n if (!Cell) {\n return undefined;\n }\n\n const CellWithTableState: FC<TableCellProps<T, TId, P, PId>> = (\n props: TableCellProps<T, TId, P, PId>\n ) => {\n const tdProps = useTdProps(props);\n return <Cell {...props} tableState={this.tableState} tdProps={tdProps} />;\n };\n CellWithTableState.displayName = 'CellWithTableState';\n\n if (field) {\n if (this.customCellMap.has(field)) {\n return this.customCellMap.get(field)!;\n }\n this.customCellMap.set(field, CellWithTableState);\n }\n return CellWithTableState;\n };\n}\n\nconst sanitizeExportFileName = memoizeOne((fileName: string | undefined) =>\n fileName?.replace(/\\.+/g, '_')\n);\n"],"names":["isValidElement","Component","createRef","cloneElement","Children","Fragment","Announcement","Table","AnvilTable","TableColumn","operators","kendoOperators","GridPDFExport","TablePDFExport","ExcelExport","observer","AsyncDataSource","SelectColumnCell","SelectHeaderCell","memoizeOne","classNames","Styles","action","makeObservable","observable","useTdProps","text","textOperators","filter","o","operator","isColumnElement","element","elementType","type","originalType","componentDidUpdate","observableScrollable","props","scrollable","observableSelectionControl","selectionControl","observableHideSelectAll","hideSelectAll","applyToColumns","children","transformer","map","child","render","tableState","dataSource","selectable","status","title","table","exportable","ref","setTablePdfExportRef","fileName","sanitizeExportFileName","exportFileName","setTableExcelExportRef","getPageable","pageSize","pager","constructor","observableSelectable","lastSelection","selectColumnCell","isRowSelectable","dataItem","control","customCellMap","Map","selectHeaderCell","selectionLimit","Infinity","isSomeRowsSelected","isSomePageRowsSelected","withCellTableState","column","cell","Cell","field","getOrCreateCellComponentWithTableState","rowRender","row","rowProps","overrides","rowType","className","disabled","result","Object","keys","length","handleHeaderSelectionChange","ev","checked","syntheticEvent","currentTarget","selectPage","deselectPage","selectAll","deselectAll","handleSelectionChange","nativeEvent","shiftKey","rows","getRowsBetween","isAsc","idSelector","selection","selected","toBeSelected","reverse","selectedCount","push","setRowsSelection","toggleRowSelection","scrollToBottom","current","container","getElementsByClassName","scrollTop","scrollHeight","clientHeight","scroll","top","behavior","filterOperators","dataItemKey","rowIdKey","data","editField","onFilterChange","handleFilterChange","group","onGroupChange","handleGroupChange","onExpandChange","handleExpandChange","expandField","sort","onSortChange","handleSortChange","onHeaderSelectionChange","onSelectionChange","selectedField","pageable","skip","onPageChange","handlePageChange","total","filteredCount","enabled","mode","locked","id","width","filterable","resizable","reorderable","headerSelectionValue","isAllPageRowsSelected","isAllRowsSelected","headerCell","headerClassName","unselectable","undefined","CellWithTableState","tdProps","displayName","has","get","set","replace"],"mappings":"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"}