@popmenu/table 0.126.0 → 0.126.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (214) hide show
  1. package/build/{components → cjs/components}/ColumnFilterChip/ColumnFilterChip.d.ts +9 -9
  2. package/build/cjs/components/ColumnFilterChip/ColumnFilterChipStyles.d.ts +1 -0
  3. package/build/{components → cjs/components}/ColumnFilterChip/index.d.ts +1 -1
  4. package/build/{components → cjs/components}/ColumnFilterResetButton/ColumnFilterResetButton.d.ts +3 -3
  5. package/build/{components → cjs/components}/ColumnFilterResetButton/index.d.ts +1 -1
  6. package/build/{components → cjs/components}/FilterPanel/FilterControl/FilterControl.d.ts +3 -3
  7. package/build/{components → cjs/components}/FilterPanel/FilterControl/SelectFilter/SelectFilter.d.ts +5 -5
  8. package/build/{components → cjs/components}/FilterPanel/FilterControl/SelectFilter/SelectFilterStyles.d.ts +1 -1
  9. package/build/{components → cjs/components}/FilterPanel/FilterControl/SelectFilter/index.d.ts +1 -1
  10. package/build/{components → cjs/components}/FilterPanel/FilterControl/ToggleFilter/ToggleFilter.d.ts +4 -4
  11. package/build/{components → cjs/components}/FilterPanel/FilterControl/ToggleFilter/index.d.ts +1 -1
  12. package/build/{components → cjs/components}/FilterPanel/FilterControl/index.d.ts +1 -1
  13. package/build/{components → cjs/components}/FilterPanel/FilterPanel.d.ts +2 -2
  14. package/build/{components → cjs/components}/FilterPanel/FilterPanelContext/FilterPanelContext.d.ts +7 -7
  15. package/build/{components → cjs/components}/FilterPanel/FilterPanelContext/index.d.ts +1 -1
  16. package/build/{components → cjs/components}/FilterPanel/FilterPanelProps.d.ts +11 -11
  17. package/build/{components → cjs/components}/FilterPanel/Panel/Panel.d.ts +7 -7
  18. package/build/{components → cjs/components}/FilterPanel/Panel/PanelStyles.d.ts +1 -1
  19. package/build/{components → cjs/components}/FilterPanel/Panel/index.d.ts +1 -1
  20. package/build/{components → cjs/components}/FilterPanel/Trigger/Trigger.d.ts +7 -7
  21. package/build/{components → cjs/components}/FilterPanel/Trigger/TriggerStyles.d.ts +1 -1
  22. package/build/{components → cjs/components}/FilterPanel/Trigger/index.d.ts +1 -1
  23. package/build/{components → cjs/components}/FilterPanel/index.d.ts +1 -1
  24. package/build/{components → cjs/components}/GlobalFilter/GlobalFilter.d.ts +3 -3
  25. package/build/{components → cjs/components}/GlobalFilter/GlobalFilterProps.d.ts +7 -7
  26. package/build/{components → cjs/components}/GlobalFilter/GlobalFilterStyles.d.ts +1 -1
  27. package/build/{components → cjs/components}/GlobalFilter/index.d.ts +2 -2
  28. package/build/{components → cjs/components}/RowActions/RowActions.d.ts +3 -3
  29. package/build/{components → cjs/components}/RowActions/RowActionsProps.d.ts +13 -13
  30. package/build/{components → cjs/components}/RowActions/index.d.ts +2 -2
  31. package/build/{components → cjs/components}/Table/Table.d.ts +21 -21
  32. package/build/{components → cjs/components}/Table/TableProps.d.ts +47 -47
  33. package/build/{components → cjs/components}/Table/TableStyles.d.ts +2 -2
  34. package/build/{components → cjs/components}/Table/index.d.ts +2 -2
  35. package/build/{components → cjs/components}/TableBody/TableBody.d.ts +4 -4
  36. package/build/{components → cjs/components}/TableBody/index.d.ts +1 -1
  37. package/build/{components → cjs/components}/TableCell/TableCell.d.ts +4 -4
  38. package/build/{components → cjs/components}/TableCell/TableCellStyles.d.ts +1 -1
  39. package/build/{components → cjs/components}/TableCell/index.d.ts +1 -1
  40. package/build/{components → cjs/components}/TableContext/index.d.ts +16 -16
  41. package/build/{components → cjs/components}/TableControlsContainer/TableControlsContainer.d.ts +3 -3
  42. package/build/{components → cjs/components}/TableControlsContainer/TableControlsContainerProps.d.ts +6 -6
  43. package/build/{components → cjs/components}/TableControlsContainer/index.d.ts +1 -1
  44. package/build/{components → cjs/components}/TableFooter/TableFooter.d.ts +4 -4
  45. package/build/{components → cjs/components}/TableFooter/index.d.ts +1 -1
  46. package/build/{components → cjs/components}/TableHeader/TableHeader.d.ts +4 -4
  47. package/build/{components → cjs/components}/TableHeader/index.d.ts +1 -1
  48. package/build/{components → cjs/components}/TableHeaderCell/TableHeaderCell.d.ts +3 -3
  49. package/build/{components → cjs/components}/TableHeaderCell/TableHeaderCellProps.d.ts +6 -6
  50. package/build/{components → cjs/components}/TableHeaderCell/TableHeaderCellStyles.d.ts +4 -4
  51. package/build/{components → cjs/components}/TableHeaderCell/index.d.ts +2 -2
  52. package/build/{components → cjs/components}/TableHeaderRow/TableHeaderRow.d.ts +4 -4
  53. package/build/{components → cjs/components}/TableHeaderRow/index.d.ts +1 -1
  54. package/build/{components → cjs/components}/TableRow/TableRow.d.ts +4 -4
  55. package/build/{components → cjs/components}/TableRow/TableRowStyles.d.ts +1 -1
  56. package/build/{components → cjs/components}/TableRow/index.d.ts +1 -1
  57. package/build/{components → cjs/components}/index.d.ts +10 -10
  58. package/build/{hooks → cjs/hooks}/index.d.ts +2 -2
  59. package/build/{hooks → cjs/hooks}/useColumnFilters.d.ts +9 -9
  60. package/build/{hooks → cjs/hooks}/useStagedColumnFilters.d.ts +8 -8
  61. package/build/{index.d.ts → cjs/index.d.ts} +1 -1
  62. package/build/cjs/index.js +787 -0
  63. package/build/cjs/index.js.map +1 -0
  64. package/build/{util → cjs/util}/coercedValueIncludesString.d.ts +2 -2
  65. package/build/{util → cjs/util}/getTableMinHeight.d.ts +2 -2
  66. package/build/{util → cjs/util}/index.d.ts +3 -3
  67. package/build/{util → cjs/util}/tableConstants.d.ts +5 -5
  68. package/build/{util → cjs/util}/validateRowAction.d.ts +2 -2
  69. package/build/esm/components/ColumnFilterChip/ColumnFilterChip.d.ts +9 -0
  70. package/build/esm/components/ColumnFilterChip/ColumnFilterChip.js +17 -0
  71. package/build/esm/components/ColumnFilterChip/ColumnFilterChip.js.map +1 -0
  72. package/build/esm/components/ColumnFilterChip/ColumnFilterChipStyles.d.ts +1 -0
  73. package/build/esm/components/ColumnFilterChip/ColumnFilterChipStyles.js +14 -0
  74. package/build/esm/components/ColumnFilterChip/ColumnFilterChipStyles.js.map +1 -0
  75. package/build/esm/components/ColumnFilterChip/index.d.ts +1 -0
  76. package/build/esm/components/ColumnFilterResetButton/ColumnFilterResetButton.d.ts +3 -0
  77. package/build/esm/components/ColumnFilterResetButton/ColumnFilterResetButton.js +11 -0
  78. package/build/esm/components/ColumnFilterResetButton/ColumnFilterResetButton.js.map +1 -0
  79. package/build/esm/components/ColumnFilterResetButton/index.d.ts +1 -0
  80. package/build/esm/components/FilterPanel/FilterControl/FilterControl.d.ts +3 -0
  81. package/build/esm/components/FilterPanel/FilterControl/FilterControl.js +24 -0
  82. package/build/esm/components/FilterPanel/FilterControl/FilterControl.js.map +1 -0
  83. package/build/esm/components/FilterPanel/FilterControl/SelectFilter/SelectFilter.d.ts +5 -0
  84. package/build/esm/components/FilterPanel/FilterControl/SelectFilter/SelectFilter.js +97 -0
  85. package/build/esm/components/FilterPanel/FilterControl/SelectFilter/SelectFilter.js.map +1 -0
  86. package/build/esm/components/FilterPanel/FilterControl/SelectFilter/SelectFilterStyles.d.ts +1 -0
  87. package/build/esm/components/FilterPanel/FilterControl/SelectFilter/SelectFilterStyles.js +23 -0
  88. package/build/esm/components/FilterPanel/FilterControl/SelectFilter/SelectFilterStyles.js.map +1 -0
  89. package/build/esm/components/FilterPanel/FilterControl/SelectFilter/index.d.ts +1 -0
  90. package/build/esm/components/FilterPanel/FilterControl/ToggleFilter/ToggleFilter.d.ts +4 -0
  91. package/build/esm/components/FilterPanel/FilterControl/ToggleFilter/ToggleFilter.js +20 -0
  92. package/build/esm/components/FilterPanel/FilterControl/ToggleFilter/ToggleFilter.js.map +1 -0
  93. package/build/esm/components/FilterPanel/FilterControl/ToggleFilter/index.d.ts +1 -0
  94. package/build/esm/components/FilterPanel/FilterControl/index.d.ts +1 -0
  95. package/build/esm/components/FilterPanel/FilterPanel.d.ts +2 -0
  96. package/build/esm/components/FilterPanel/FilterPanel.js +24 -0
  97. package/build/esm/components/FilterPanel/FilterPanel.js.map +1 -0
  98. package/build/esm/components/FilterPanel/FilterPanelContext/FilterPanelContext.d.ts +7 -0
  99. package/build/esm/components/FilterPanel/FilterPanelContext/FilterPanelContext.js +13 -0
  100. package/build/esm/components/FilterPanel/FilterPanelContext/FilterPanelContext.js.map +1 -0
  101. package/build/esm/components/FilterPanel/FilterPanelContext/index.d.ts +1 -0
  102. package/build/esm/components/FilterPanel/FilterPanelProps.d.ts +11 -0
  103. package/build/esm/components/FilterPanel/Panel/Panel.d.ts +7 -0
  104. package/build/esm/components/FilterPanel/Panel/Panel.js +72 -0
  105. package/build/esm/components/FilterPanel/Panel/Panel.js.map +1 -0
  106. package/build/esm/components/FilterPanel/Panel/PanelStyles.d.ts +1 -0
  107. package/build/esm/components/FilterPanel/Panel/PanelStyles.js +58 -0
  108. package/build/esm/components/FilterPanel/Panel/PanelStyles.js.map +1 -0
  109. package/build/esm/components/FilterPanel/Panel/index.d.ts +1 -0
  110. package/build/esm/components/FilterPanel/Trigger/Trigger.d.ts +7 -0
  111. package/build/esm/components/FilterPanel/Trigger/Trigger.js +14 -0
  112. package/build/esm/components/FilterPanel/Trigger/Trigger.js.map +1 -0
  113. package/build/esm/components/FilterPanel/Trigger/TriggerStyles.d.ts +1 -0
  114. package/build/esm/components/FilterPanel/Trigger/TriggerStyles.js +11 -0
  115. package/build/esm/components/FilterPanel/Trigger/TriggerStyles.js.map +1 -0
  116. package/build/esm/components/FilterPanel/Trigger/index.d.ts +1 -0
  117. package/build/esm/components/FilterPanel/index.d.ts +1 -0
  118. package/build/esm/components/GlobalFilter/GlobalFilter.d.ts +3 -0
  119. package/build/esm/components/GlobalFilter/GlobalFilter.js +21 -0
  120. package/build/esm/components/GlobalFilter/GlobalFilter.js.map +1 -0
  121. package/build/esm/components/GlobalFilter/GlobalFilterProps.d.ts +7 -0
  122. package/build/esm/components/GlobalFilter/GlobalFilterStyles.d.ts +1 -0
  123. package/build/esm/components/GlobalFilter/GlobalFilterStyles.js +14 -0
  124. package/build/esm/components/GlobalFilter/GlobalFilterStyles.js.map +1 -0
  125. package/build/esm/components/GlobalFilter/index.d.ts +2 -0
  126. package/build/esm/components/RowActions/RowActions.d.ts +3 -0
  127. package/build/esm/components/RowActions/RowActions.js +42 -0
  128. package/build/esm/components/RowActions/RowActions.js.map +1 -0
  129. package/build/esm/components/RowActions/RowActionsProps.d.ts +13 -0
  130. package/build/esm/components/RowActions/index.d.ts +2 -0
  131. package/build/esm/components/Table/Table.d.ts +21 -0
  132. package/build/esm/components/Table/Table.js +107 -0
  133. package/build/esm/components/Table/Table.js.map +1 -0
  134. package/build/esm/components/Table/TableProps.d.ts +47 -0
  135. package/build/esm/components/Table/TableStyles.d.ts +2 -0
  136. package/build/esm/components/Table/TableStyles.js +28 -0
  137. package/build/esm/components/Table/TableStyles.js.map +1 -0
  138. package/build/esm/components/Table/index.d.ts +2 -0
  139. package/build/esm/components/TableBody/TableBody.d.ts +4 -0
  140. package/build/esm/components/TableBody/TableBody.js +10 -0
  141. package/build/esm/components/TableBody/TableBody.js.map +1 -0
  142. package/build/esm/components/TableBody/index.d.ts +1 -0
  143. package/build/esm/components/TableCell/TableCell.d.ts +4 -0
  144. package/build/esm/components/TableCell/TableCell.js +12 -0
  145. package/build/esm/components/TableCell/TableCell.js.map +1 -0
  146. package/build/esm/components/TableCell/TableCellStyles.d.ts +1 -0
  147. package/build/esm/components/TableCell/TableCellStyles.js +11 -0
  148. package/build/esm/components/TableCell/TableCellStyles.js.map +1 -0
  149. package/build/esm/components/TableCell/index.d.ts +1 -0
  150. package/build/esm/components/TableContext/index.d.ts +16 -0
  151. package/build/esm/components/TableContext/index.js +6 -0
  152. package/build/esm/components/TableContext/index.js.map +1 -0
  153. package/build/esm/components/TableControlsContainer/TableControlsContainer.d.ts +3 -0
  154. package/build/esm/components/TableControlsContainer/TableControlsContainer.js +34 -0
  155. package/build/esm/components/TableControlsContainer/TableControlsContainer.js.map +1 -0
  156. package/build/esm/components/TableControlsContainer/TableControlsContainerProps.d.ts +6 -0
  157. package/build/esm/components/TableControlsContainer/index.d.ts +1 -0
  158. package/build/esm/components/TableFooter/TableFooter.d.ts +4 -0
  159. package/build/esm/components/TableFooter/TableFooter.js +9 -0
  160. package/build/esm/components/TableFooter/TableFooter.js.map +1 -0
  161. package/build/esm/components/TableFooter/index.d.ts +1 -0
  162. package/build/esm/components/TableHeader/TableHeader.d.ts +4 -0
  163. package/build/esm/components/TableHeader/TableHeader.js +10 -0
  164. package/build/esm/components/TableHeader/TableHeader.js.map +1 -0
  165. package/build/esm/components/TableHeader/index.d.ts +1 -0
  166. package/build/esm/components/TableHeaderCell/TableHeaderCell.d.ts +3 -0
  167. package/build/esm/components/TableHeaderCell/TableHeaderCell.js +32 -0
  168. package/build/esm/components/TableHeaderCell/TableHeaderCell.js.map +1 -0
  169. package/build/esm/components/TableHeaderCell/TableHeaderCellProps.d.ts +6 -0
  170. package/build/esm/components/TableHeaderCell/TableHeaderCellStyles.d.ts +4 -0
  171. package/build/esm/components/TableHeaderCell/TableHeaderCellStyles.js +41 -0
  172. package/build/esm/components/TableHeaderCell/TableHeaderCellStyles.js.map +1 -0
  173. package/build/esm/components/TableHeaderCell/index.d.ts +2 -0
  174. package/build/esm/components/TableHeaderRow/TableHeaderRow.d.ts +4 -0
  175. package/build/esm/components/TableHeaderRow/TableHeaderRow.js +10 -0
  176. package/build/esm/components/TableHeaderRow/TableHeaderRow.js.map +1 -0
  177. package/build/esm/components/TableHeaderRow/index.d.ts +1 -0
  178. package/build/esm/components/TableRow/TableRow.d.ts +4 -0
  179. package/build/esm/components/TableRow/TableRow.js +12 -0
  180. package/build/esm/components/TableRow/TableRow.js.map +1 -0
  181. package/build/esm/components/TableRow/TableRowStyles.d.ts +1 -0
  182. package/build/esm/components/TableRow/TableRowStyles.js +12 -0
  183. package/build/esm/components/TableRow/TableRowStyles.js.map +1 -0
  184. package/build/esm/components/TableRow/index.d.ts +1 -0
  185. package/build/esm/components/index.d.ts +10 -0
  186. package/build/esm/hooks/index.d.ts +2 -0
  187. package/build/esm/hooks/useColumnFilters.d.ts +9 -0
  188. package/build/esm/hooks/useColumnFilters.js +74 -0
  189. package/build/esm/hooks/useColumnFilters.js.map +1 -0
  190. package/build/esm/hooks/useStagedColumnFilters.d.ts +8 -0
  191. package/build/esm/hooks/useStagedColumnFilters.js +55 -0
  192. package/build/esm/hooks/useStagedColumnFilters.js.map +1 -0
  193. package/build/esm/index.d.ts +1 -0
  194. package/build/esm/index.js +11 -0
  195. package/build/esm/index.js.map +1 -0
  196. package/build/esm/util/coercedValueIncludesString.d.ts +2 -0
  197. package/build/esm/util/coercedValueIncludesString.js +9 -0
  198. package/build/esm/util/coercedValueIncludesString.js.map +1 -0
  199. package/build/esm/util/getTableMinHeight.d.ts +2 -0
  200. package/build/esm/util/getTableMinHeight.js +20 -0
  201. package/build/esm/util/getTableMinHeight.js.map +1 -0
  202. package/build/esm/util/index.d.ts +3 -0
  203. package/build/esm/util/tableConstants.d.ts +5 -0
  204. package/build/esm/util/tableConstants.js +6 -0
  205. package/build/esm/util/tableConstants.js.map +1 -0
  206. package/build/esm/util/validateRowAction.d.ts +2 -0
  207. package/build/esm/util/validateRowAction.js +12 -0
  208. package/build/esm/util/validateRowAction.js.map +1 -0
  209. package/package.json +9 -5
  210. package/build/components/ColumnFilterChip/ColumnFilterChipStyles.d.ts +0 -1
  211. package/build/index.es.js +0 -4407
  212. package/build/index.es.js.map +0 -1
  213. package/build/index.js +0 -4465
  214. package/build/index.js.map +0 -1
@@ -0,0 +1,787 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var React = require('react');
5
+ var core = require('@material-ui/core');
6
+ var lab = require('@material-ui/lab');
7
+ var commonUi = require('@popmenu/common-ui');
8
+ var reactTable = require('@tanstack/react-table');
9
+ var webIcons = require('@popmenu/web-icons');
10
+ var adminUi = require('@popmenu/admin-ui');
11
+
12
+ var useTableRowStyles = core.makeStyles(function (theme) { return ({
13
+ root: function () { return ({
14
+ '&:nth-child(even)': {
15
+ backgroundColor: theme.palette.grey[100],
16
+ },
17
+ }); },
18
+ }); });
19
+
20
+ var TableRow = function (props) {
21
+ var children = props.children, restProps = tslib.__rest(props, ["children"]);
22
+ var root = useTableRowStyles(props).root;
23
+ return (React.createElement("tr", tslib.__assign({ "data-table-element": "body-row", className: root }, restProps), children));
24
+ };
25
+
26
+ var tableConstants = {
27
+ tableTypography: 'body1',
28
+ cellPaddingFactor: 2};
29
+
30
+ var coercedValueIncludesString = function (row, columnId, value) {
31
+ if (value === '')
32
+ return true;
33
+ var cellValue = row.getValue(columnId);
34
+ return String(cellValue).toLowerCase().includes(value.toLowerCase());
35
+ };
36
+
37
+ var getTableMinHeight = function (rootRef, pageSize) {
38
+ var defaultBodyRowHeight = 56;
39
+ var defaultHeaderRowHeight = 57;
40
+ var defaultFooterHeight = 88;
41
+ var minHeight = defaultBodyRowHeight * pageSize + defaultHeaderRowHeight + defaultFooterHeight;
42
+ if (rootRef === null || rootRef === void 0 ? void 0 : rootRef.current) {
43
+ var rootTableNode = rootRef.current;
44
+ var headerRowNode = rootTableNode.querySelector("[data-table-element=\"header-row\"]");
45
+ var bodyRowNode = rootTableNode.querySelector("[data-table-element=\"body-row\"]");
46
+ if (headerRowNode && bodyRowNode) {
47
+ var headerRowHeight = headerRowNode.getBoundingClientRect().height;
48
+ var bodyRowHeight = bodyRowNode.getBoundingClientRect().height;
49
+ minHeight = headerRowHeight + bodyRowHeight * pageSize + defaultFooterHeight;
50
+ }
51
+ }
52
+ return minHeight;
53
+ };
54
+
55
+ var useTableCellStyles = core.makeStyles(function (theme) { return ({
56
+ root: function () { return ({
57
+ padding: theme.spacing(tableConstants.cellPaddingFactor),
58
+ }); },
59
+ }); });
60
+
61
+ var TableCell = function (props) {
62
+ var children = props.children, restProps = tslib.__rest(props, ["children"]);
63
+ var root = useTableCellStyles(props).root;
64
+ return (React.createElement("td", tslib.__assign({ className: root }, restProps), children));
65
+ };
66
+
67
+ var TableBody = function (props) {
68
+ var children = props.children, restProps = tslib.__rest(props, ["children"]);
69
+ return React.createElement("tbody", tslib.__assign({}, restProps), children);
70
+ };
71
+
72
+ var useStyles$6 = core.makeStyles(function (_a) {
73
+ var typography = _a.typography;
74
+ return ({
75
+ root: function (_a) {
76
+ var fullWidth = _a.fullWidth;
77
+ return ({
78
+ display: fullWidth ? 'flex' : 'inline-flex',
79
+ flexDirection: 'column',
80
+ });
81
+ },
82
+ table: function (_a) {
83
+ var fullWidth = _a.fullWidth;
84
+ return (tslib.__assign(tslib.__assign({ borderCollapse: 'collapse' }, (fullWidth && { width: '100%' })), typography[tableConstants.tableTypography]));
85
+ },
86
+ tableContainer: function () { return ({
87
+ maxWidth: '100%',
88
+ overflowX: 'auto',
89
+ overflowY: 'hidden',
90
+ }); },
91
+ });
92
+ });
93
+
94
+ var TableHeader = function (props) {
95
+ var children = props.children, restProps = tslib.__rest(props, ["children"]);
96
+ return React.createElement("thead", tslib.__assign({}, restProps), children);
97
+ };
98
+
99
+ var TableFooter = function (props) {
100
+ return (React.createElement(commonUi.Box, { display: "flex", justifyContent: "center", alignItems: "end", paddingTop: 3, paddingBottom: 4 }, props.children));
101
+ };
102
+
103
+ var useStyles$5 = core.makeStyles(function (theme) { return ({
104
+ buttonBox: {
105
+ '& > :last-child': {
106
+ marginLeft: theme.spacing(2),
107
+ },
108
+ display: 'flex',
109
+ justifyContent: 'flex-end',
110
+ padding: "0px " + theme.spacing(3) + "px " + theme.spacing(3) + "px " + theme.spacing(3) + "px",
111
+ },
112
+ buttonLabel: {
113
+ fontWeight: 400,
114
+ },
115
+ filterPopoverContents: {
116
+ backgroundColor: 'white',
117
+ borderRadius: theme.spacing(1),
118
+ position: 'relative',
119
+ margin: '10px',
120
+ marginTop: theme.spacing(2),
121
+ width: '323px',
122
+ '&::before': {
123
+ backgroundColor: 'white',
124
+ borderRadius: theme.spacing(0.5),
125
+ content: '""',
126
+ display: 'block',
127
+ filter: 'drop-shadow(4px 4px 3px rgba(0, 0, 0, 0.14)) drop-shadow(0px 1px 5px rgba(0, 0, 0, 0.12))',
128
+ position: 'absolute',
129
+ width: theme.spacing(2.5),
130
+ height: theme.spacing(2.5),
131
+ top: -7,
132
+ transform: 'rotate(45deg)',
133
+ left: 'calc(90% - 12px)',
134
+ zIndex: 0,
135
+ },
136
+ '&::after': {
137
+ backgroundColor: 'white',
138
+ content: '""',
139
+ display: 'block',
140
+ position: 'absolute',
141
+ top: 0,
142
+ left: 'calc(80%)',
143
+ width: theme.spacing(6),
144
+ height: theme.spacing(4),
145
+ },
146
+ },
147
+ menuTitle: {
148
+ fontWeight: 400,
149
+ fontSize: '20px',
150
+ paddingBottom: theme.spacing(2),
151
+ },
152
+ selectInput: {
153
+ margin: '8px 0',
154
+ },
155
+ }); });
156
+
157
+ var useStyles$4 = core.makeStyles(function (theme) { return ({
158
+ icon: {
159
+ marginRight: theme.spacing(1.5),
160
+ marginTop: theme.spacing(0.5),
161
+ scale: 1.5,
162
+ },
163
+ selectContainer: {
164
+ padding: '8px 0',
165
+ },
166
+ selectRoot: {
167
+ '&:focus': {
168
+ backgroundColor: 'transparent',
169
+ },
170
+ },
171
+ hidden: {
172
+ display: 'none',
173
+ },
174
+ }); });
175
+
176
+ var TableContext = React.createContext({});
177
+
178
+ var FilterPanelContext = React.createContext(null);
179
+ var useFilterPanelContext = function () {
180
+ var context = React.useContext(FilterPanelContext);
181
+ if (!context) {
182
+ throw new Error('useFilterPanelContext has to be used within <FilterPanelContext.Provider>');
183
+ }
184
+ return context;
185
+ };
186
+
187
+ var SelectFilter = function (props) {
188
+ var _a, _b, _c;
189
+ var options = props.options, columnId = props.columnId, multiple = props.multiple;
190
+ var classes = useStyles$4();
191
+ var _d = React.useContext(TableContext), table = _d.table, stagedColumnFilters = _d.stagedColumnFilters, stageFilterSelections = _d.stageFilterSelections;
192
+ var _e = React.useState(false), open = _e[0], setOpen = _e[1];
193
+ var _f = useFilterPanelContext().anchorState, setAnchorEl = _f[1];
194
+ var column = table.getColumn(columnId);
195
+ var meta = column.columnDef.meta;
196
+ var filterName = (_a = meta === null || meta === void 0 ? void 0 : meta.filter) === null || _a === void 0 ? void 0 : _a.name;
197
+ var value = '';
198
+ if (stageFilterSelections && !!stagedColumnFilters.get(columnId)) {
199
+ value = stagedColumnFilters.get(columnId);
200
+ }
201
+ else {
202
+ value = column.getFilterValue();
203
+ }
204
+ var fallbackValue = multiple ? [] : '';
205
+ var filteredOptions = options.map(function (option) {
206
+ if (Array.isArray(value)) {
207
+ if (value.includes(option.value)) {
208
+ return tslib.__assign(tslib.__assign({}, option), { hide: !stageFilterSelections });
209
+ }
210
+ }
211
+ if (typeof value === 'string' || typeof value === 'number') {
212
+ if (value === option.value) {
213
+ return tslib.__assign(tslib.__assign({}, option), { hide: !stageFilterSelections });
214
+ }
215
+ }
216
+ return tslib.__assign(tslib.__assign({}, option), { hide: false });
217
+ });
218
+ var filteredOptionsCount = filteredOptions.filter(function (option) { return !(option === null || option === void 0 ? void 0 : option.hide); }).length;
219
+ var renderedValue = '';
220
+ if (!stageFilterSelections && value && filteredOptions && filteredOptionsCount > 0) {
221
+ if (typeof value === 'string' || typeof value === 'number') {
222
+ renderedValue = (_c = (_b = filteredOptions.find(function (option) { return option.value === value; })) === null || _b === void 0 ? void 0 : _b.label) !== null && _c !== void 0 ? _c : filterName;
223
+ }
224
+ else if (Array.isArray(value) && value.length > 0) {
225
+ renderedValue = value.length + " selected";
226
+ }
227
+ else {
228
+ renderedValue = filterName;
229
+ }
230
+ }
231
+ var handleChange = function (event) {
232
+ event.stopPropagation();
233
+ if (stageFilterSelections) {
234
+ stagedColumnFilters.update(columnId, event.target.value);
235
+ }
236
+ else {
237
+ column.setFilterValue(event.target.value);
238
+ setAnchorEl(null);
239
+ }
240
+ };
241
+ var handleItemClick = function () {
242
+ if (multiple) {
243
+ if (!stageFilterSelections && filteredOptionsCount === 1) {
244
+ setOpen(false);
245
+ }
246
+ else {
247
+ setOpen(false);
248
+ }
249
+ }
250
+ };
251
+ return (React.createElement(core.Box, { className: classes.selectContainer },
252
+ React.createElement(core.FormControl, { variant: "outlined", fullWidth: true },
253
+ React.createElement(core.InputLabel, { id: "select-filter-label-" + filterName }, filterName || 'filter'),
254
+ React.createElement(core.Select, { variant: "outlined", open: open, onOpen: function () { return setOpen(true); }, onClose: function () { return setOpen(false); }, value: value || fallbackValue, displayEmpty: true, multiple: multiple, renderValue: stageFilterSelections ? undefined : function () { return React.createElement(commonUi.Typography, null, renderedValue); }, label: filterName || 'filter', labelId: "select-filter-label-" + filterName, disabled: !filteredOptionsCount, IconComponent: webIcons.ChevronDown, onChange: handleChange, fullWidth: true, classes: {
255
+ root: classes.selectRoot,
256
+ icon: classes.icon,
257
+ }, MenuProps: {
258
+ disablePortal: true,
259
+ anchorOrigin: {
260
+ vertical: 'bottom',
261
+ horizontal: 'left',
262
+ },
263
+ transformOrigin: {
264
+ vertical: 'top',
265
+ horizontal: 'left',
266
+ },
267
+ getContentAnchorEl: null,
268
+ } }, filteredOptions.map(function (option, index) {
269
+ return (React.createElement(commonUi.MenuItem, { classes: { root: option.hide ? classes.hidden : undefined }, key: "option-" + value + "-" + index, value: option.value, onClick: handleItemClick }, option.label));
270
+ })))));
271
+ };
272
+
273
+ var ToggleFilter = function (props) {
274
+ var table = React.useContext(TableContext).table;
275
+ var columnId = props.columnId;
276
+ var column = table.getColumn(columnId);
277
+ var meta = column.columnDef.meta;
278
+ var filterName = meta.filter.name;
279
+ var value = column.getFilterValue();
280
+ var handleChange = function (event, checked) {
281
+ event.stopPropagation();
282
+ column.setFilterValue(checked);
283
+ };
284
+ return React.createElement(core.FormControlLabel, { control: React.createElement(core.Switch, { checked: value, onChange: handleChange }), label: filterName });
285
+ };
286
+
287
+ var FilterControl = function (props) {
288
+ var input = props.input, columnFilter = tslib.__rest(props, ["input"]);
289
+ var inputDictionary = {
290
+ text: core.TextField,
291
+ select: SelectFilter,
292
+ 'multi-select': SelectFilter,
293
+ toggle: ToggleFilter,
294
+ };
295
+ var propsDictionary = {
296
+ select: { multiple: false },
297
+ 'multi-select': { multiple: true },
298
+ };
299
+ // @ts-expect-error - todo.
300
+ return React.createElement("div", null, React.createElement(inputDictionary[input], tslib.__assign(tslib.__assign({}, columnFilter), propsDictionary[input])));
301
+ };
302
+
303
+ var useColumnFilters = function (table) {
304
+ var selectedColumnFilters = getSelectedColumnFilters(table.getState());
305
+ var columnFilters = getColumnFilters(table.getAllFlatColumns());
306
+ var hasColumnFilters = columnFilters.length > 0;
307
+ var deselectColumnFilter = makeDeselectColumnFilter(table);
308
+ var formatSelectedFilterText = makeFormatSelectedFilterText(table);
309
+ var resetColumnFilters = table.resetColumnFilters;
310
+ return {
311
+ selectedColumnFilters: selectedColumnFilters,
312
+ columnFilters: columnFilters,
313
+ hasColumnFilters: hasColumnFilters,
314
+ deselectColumnFilter: deselectColumnFilter,
315
+ formatSelectedFilterText: formatSelectedFilterText,
316
+ resetColumnFilters: resetColumnFilters,
317
+ };
318
+ };
319
+ function getSelectedColumnFilters(state) {
320
+ var columnFilters = state.columnFilters;
321
+ var selectedColumnFilters = columnFilters.reduce(function (acc, columnFilter) {
322
+ var id = columnFilter.id, value = columnFilter.value;
323
+ var selections = [];
324
+ if (value) {
325
+ if (Array.isArray(value)) {
326
+ value.forEach(function (innerValue) {
327
+ selections.push({ id: id, value: innerValue });
328
+ });
329
+ }
330
+ else if (typeof value === 'string' || typeof value === 'number') {
331
+ selections.push({ id: id, value: value });
332
+ }
333
+ }
334
+ return tslib.__spreadArray(tslib.__spreadArray([], acc), selections);
335
+ }, []);
336
+ return selectedColumnFilters;
337
+ }
338
+ function getColumnFilters(columns) {
339
+ return columns
340
+ .map(function (column) {
341
+ var meta = column.columnDef.meta;
342
+ if (meta === null || meta === void 0 ? void 0 : meta.filter) {
343
+ return tslib.__assign({ columnId: column.id }, meta.filter);
344
+ }
345
+ })
346
+ .filter(Boolean);
347
+ }
348
+ function makeDeselectColumnFilter(table) {
349
+ return function (columnFilter) {
350
+ var column = table.getColumn(columnFilter.id);
351
+ column.setFilterValue(function (prev) {
352
+ if (Array.isArray(prev)) {
353
+ return prev.filter(function (value) { return value !== columnFilter.value; });
354
+ }
355
+ else if (typeof prev === 'string' || typeof prev === 'number') {
356
+ return null;
357
+ }
358
+ return prev;
359
+ });
360
+ };
361
+ }
362
+ function makeFormatSelectedFilterText(table) {
363
+ return function (columnFilter) {
364
+ var column = table.getColumn(columnFilter.id);
365
+ var meta = column.columnDef.meta;
366
+ var name = (meta === null || meta === void 0 ? void 0 : meta.filter.name) || '';
367
+ var optionMatch = meta === null || meta === void 0 ? void 0 : meta.filter.options.find(function (option) { return option.value === columnFilter.value; });
368
+ var label = optionMatch === null || optionMatch === void 0 ? void 0 : optionMatch.label;
369
+ return [name, label];
370
+ };
371
+ }
372
+
373
+ var useStagedColumnFilters = function (selectedColumnFilters) {
374
+ var _a = React.useState(function () {
375
+ return selectedColumnFilters.reduce(function (acc, _a) {
376
+ var id = _a.id, value = _a.value;
377
+ if (acc.has(id)) {
378
+ var existingValue = acc.get(id);
379
+ // If the existing value is a string, convert it to an array and add the new value
380
+ if (typeof existingValue === 'string') {
381
+ acc.set(id, [existingValue, value]);
382
+ }
383
+ else {
384
+ existingValue.push(value);
385
+ }
386
+ }
387
+ else {
388
+ acc.set(id, value);
389
+ }
390
+ return acc;
391
+ }, new Map());
392
+ }), columnInputValues = _a[0], setColumnInputValues = _a[1];
393
+ var filterState = {
394
+ update: function (columnId, value) {
395
+ return setColumnInputValues(columnInputValues.set(columnId, value));
396
+ },
397
+ get: function (columnId) { return columnInputValues.get(columnId); },
398
+ clear: function () {
399
+ columnInputValues.clear();
400
+ setColumnInputValues(columnInputValues);
401
+ },
402
+ delete: function (columnFilter) {
403
+ var values = columnInputValues.get(columnFilter.id);
404
+ if (values && Array.isArray(values)) {
405
+ var valueIndex = values.indexOf(columnFilter.value);
406
+ values.splice(valueIndex, 1);
407
+ if (values.length > 0) {
408
+ columnInputValues.set(columnFilter.id, values);
409
+ }
410
+ else {
411
+ columnInputValues.delete(columnFilter.id);
412
+ }
413
+ }
414
+ else {
415
+ columnInputValues.delete(columnFilter.id);
416
+ }
417
+ setColumnInputValues(columnInputValues);
418
+ },
419
+ exist: function () { return columnInputValues.size > 0; },
420
+ };
421
+ return filterState;
422
+ };
423
+
424
+ var Panel = function (props) {
425
+ var anchorEl = props.anchorEl, onClose = props.onClose;
426
+ var classes = useStyles$5();
427
+ var _a = React.useContext(TableContext), table = _a.table, stagedColumnFilters = _a.stagedColumnFilters, stageFilterSelections = _a.stageFilterSelections;
428
+ var paperRef = React.useRef(null);
429
+ var _b = useColumnFilters(table), columnFilters = _b.columnFilters, resetColumnFilters = _b.resetColumnFilters;
430
+ var handleClick = function (e) {
431
+ var _a;
432
+ var rect = (_a = paperRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
433
+ if (rect) {
434
+ var buffer = 10;
435
+ var mouseX = e.nativeEvent.x;
436
+ var mouseY = e.nativeEvent.y;
437
+ var xHit = rect.x - buffer < mouseX && mouseX < rect.x + rect.width + buffer;
438
+ var yHit = rect.y - buffer < mouseY && mouseY < rect.y + rect.height + buffer;
439
+ if (!xHit || !yHit) {
440
+ onClose();
441
+ }
442
+ }
443
+ };
444
+ var handleApplyClick = function () {
445
+ if (stagedColumnFilters.exist()) {
446
+ columnFilters.forEach(function (columnFilter) {
447
+ var columnInputValue = stagedColumnFilters.get(columnFilter.columnId);
448
+ if (columnInputValue) {
449
+ var column = table.getColumn(columnFilter.columnId);
450
+ column.setFilterValue(columnInputValue);
451
+ }
452
+ });
453
+ }
454
+ else {
455
+ resetColumnFilters();
456
+ }
457
+ onClose();
458
+ };
459
+ var handleCancelClick = function () {
460
+ onClose();
461
+ };
462
+ var open = Boolean(anchorEl);
463
+ return (React.createElement(commonUi.Popover, { onClick: handleClick, anchorEl: anchorEl, anchorOrigin: {
464
+ vertical: 'bottom',
465
+ horizontal: 'right',
466
+ }, className: classes.filterPopover, onClose: onClose, open: open, PaperProps: {
467
+ style: {
468
+ backgroundColor: 'transparent',
469
+ boxShadow: 'none',
470
+ borderRadius: 0,
471
+ },
472
+ }, transformOrigin: {
473
+ vertical: 'top',
474
+ horizontal: 'right',
475
+ } },
476
+ React.createElement(commonUi.Paper, { className: classes.filterPopoverContents, elevation: 2 },
477
+ React.createElement(commonUi.Box, tslib.__assign({}, { ref: paperRef }, { padding: 3 }),
478
+ React.createElement(commonUi.Typography, { className: classes.menuTitle }, "Filter By"),
479
+ columnFilters.map(function (columnFilter, i) { return (React.createElement(FilterControl, tslib.__assign({}, columnFilter, { key: i }))); })),
480
+ stageFilterSelections && (React.createElement(commonUi.Box, { className: classes.buttonBox },
481
+ React.createElement(adminUi.Button, { variant: "secondary", onClick: handleCancelClick }, "Cancel"),
482
+ React.createElement(adminUi.Button, { onClick: handleApplyClick }, "Apply"))))));
483
+ };
484
+
485
+ var useStyles$3 = core.makeStyles({
486
+ root: {
487
+ justifySelf: 'end',
488
+ gridArea: 'columnFilter',
489
+ },
490
+ });
491
+
492
+ var Trigger = function (props) {
493
+ var _a = props.label, label = _a === void 0 ? 'Filter' : _a, onClick = props.onClick;
494
+ var classes = useStyles$3();
495
+ return (React.createElement(adminUi.Button, { className: classes.root, onClick: onClick, startIcon: React.createElement(commonUi.Icon, { icon: webIcons.Filter }), textTransform: "none", variant: "ghost" }, label));
496
+ };
497
+
498
+ var FilterPanel = function () {
499
+ var _a = React.useState(null), anchorEl = _a[0], setAnchorEl = _a[1];
500
+ var _b = React.useContext(TableContext), stageFilterSelections = _b.stageFilterSelections, stagedColumnFilters = _b.stagedColumnFilters;
501
+ var handleClick = function (event) {
502
+ setAnchorEl(event.currentTarget);
503
+ };
504
+ var handleClose = function () {
505
+ if (stageFilterSelections)
506
+ stagedColumnFilters.clear();
507
+ setAnchorEl(null);
508
+ };
509
+ return (React.createElement(FilterPanelContext.Provider, { value: { anchorState: [anchorEl, setAnchorEl] } },
510
+ React.createElement(Trigger, { onClick: handleClick }),
511
+ React.createElement(Panel, { onClose: handleClose, anchorEl: anchorEl })));
512
+ };
513
+
514
+ var useStyles$2 = core.makeStyles({
515
+ root: {
516
+ justifySelf: 'start',
517
+ maxWidth: 300,
518
+ minWidth: 200,
519
+ width: '100%',
520
+ gridArea: 'globalFilter',
521
+ },
522
+ });
523
+
524
+ var GlobalFilter = function (props) {
525
+ var value = props.value, setValue = props.setValue, restProps = tslib.__rest(props, ["value", "setValue"]);
526
+ var classes = useStyles$2();
527
+ var handleChange = function (e) {
528
+ setValue(e.target.value);
529
+ };
530
+ return (React.createElement(core.TextField, tslib.__assign({ className: classes.root, variant: "outlined", value: value, onChange: handleChange, InputProps: {
531
+ startAdornment: (React.createElement(core.InputAdornment, { position: "start" },
532
+ React.createElement(commonUi.Icon, { icon: webIcons.Search }))),
533
+ } }, restProps)));
534
+ };
535
+
536
+ var TableHeaderRow = function (props) {
537
+ var children = props.children, restProps = tslib.__rest(props, ["children"]);
538
+ return (React.createElement("tr", tslib.__assign({ "data-table-element": 'header-row' }, restProps), children));
539
+ };
540
+
541
+ // const getWidth = (props: TableHeaderCellProps) => {
542
+ // const {
543
+ // column: { isActionColumn },
544
+ // tableProps: { fullWidth },
545
+ // } = props
546
+ // let width
547
+ // if (fullWidth && isActionColumn) {
548
+ // width = '0.0000000001%'
549
+ // }
550
+ // if (fullWidth && !isActionColumn) {
551
+ // width = '1%'
552
+ // }
553
+ // if (!fullWidth && isActionColumn) {
554
+ // width = 72
555
+ // }
556
+ // if (!fullWidth && !isActionColumn) {
557
+ // width = undefined
558
+ // }
559
+ // return width
560
+ // }
561
+ var useStyles$1 = core.makeStyles(function (theme) { return ({
562
+ root: {
563
+ borderBottomStyle: 'solid',
564
+ borderBottomWidth: 2,
565
+ borderBottomColor: theme.palette.grey[100],
566
+ padding: theme.spacing(2),
567
+ textAlign: 'left',
568
+ fontWeight: 500,
569
+ },
570
+ box: {
571
+ cursor: function (_a) {
572
+ var sortable = _a.sortable;
573
+ return (sortable ? 'pointer' : 'default');
574
+ },
575
+ },
576
+ }); });
577
+
578
+ var TableHeaderCell = function (props) {
579
+ var _a;
580
+ var children = props.children, context = props.context, restProps = tslib.__rest(props, ["children", "context"]);
581
+ var sortable = context.header.column.getCanSort();
582
+ var sorted = context.header.column.getIsSorted();
583
+ var handleSort = context.header.column.getToggleSortingHandler();
584
+ var classes = useStyles$1(tslib.__assign(tslib.__assign({}, props), { sortable: sortable }));
585
+ var _b = core.useTheme(), spacing = _b.spacing, palette = _b.palette;
586
+ var sortIndicators = {
587
+ asc: webIcons.ChevronUp,
588
+ desc: webIcons.ChevronDown,
589
+ };
590
+ var idBase = (_a = context.table.options.meta) === null || _a === void 0 ? void 0 : _a.idBase;
591
+ var dataTourIdProps = idBase && sortable
592
+ ? { 'data-tour-id': ("sort-" + idBase + "-on-" + context.header.column.id).toLowerCase().replace(/\s+/g, '-') }
593
+ : {};
594
+ return (React.createElement("th", tslib.__assign({ className: classes.root }, restProps),
595
+ React.createElement(commonUi.Box, tslib.__assign({ className: classes.box, display: "flex", alignItems: "center", gridGap: spacing(1), onClick: handleSort }, dataTourIdProps),
596
+ children,
597
+ sortable && !sorted && React.createElement(commonUi.Icon, { icon: webIcons.Sort, color: palette.grey[500] }),
598
+ sortable && sorted && React.createElement(commonUi.Icon, { icon: sortIndicators[sorted] }))));
599
+ };
600
+
601
+ var useStyles = core.makeStyles({
602
+ chip: {
603
+ overflow: 'visible',
604
+ height: 'auto',
605
+ },
606
+ label: {
607
+ whiteSpace: 'normal',
608
+ },
609
+ });
610
+
611
+ var ColumnFilterChip = function (props) {
612
+ var columnFilter = props.columnFilter, onClick = props.onClick, label = props.label;
613
+ var classes = useStyles();
614
+ return (React.createElement(commonUi.Chip, { className: classes.chip, onDelete: function () { return onClick(columnFilter); }, label: React.createElement(commonUi.Box, { display: "flex", gridGap: 4, flexWrap: "wrap" },
615
+ React.createElement(commonUi.Typography, null,
616
+ label[0],
617
+ ":"),
618
+ React.createElement(commonUi.Typography, tslib.__assign({ className: classes.label, weight: "semi-bold" }, { component: 'span' }), label[1])) }));
619
+ };
620
+
621
+ var TableControlsContainer = function (props) {
622
+ var showTitle = props.showTitle, showGlobalSearch = props.showGlobalSearch, showColumnFilter = props.showColumnFilter;
623
+ var gridTemplateAreas;
624
+ switch (true) {
625
+ case showTitle && showGlobalSearch && showColumnFilter:
626
+ gridTemplateAreas = "\n \"title .\"\n \"globalFilter columnFilter\"\n ";
627
+ break;
628
+ case showTitle && !showGlobalSearch && showColumnFilter:
629
+ gridTemplateAreas = "\n \"title columnFilter\"\n ";
630
+ break;
631
+ case !showTitle && showGlobalSearch && showColumnFilter:
632
+ gridTemplateAreas = "\n \"globalFilter columnFilter\"\n ";
633
+ break;
634
+ case showTitle && !showGlobalSearch && !showColumnFilter:
635
+ gridTemplateAreas = "\n \"title .\"\n ";
636
+ break;
637
+ case !showTitle && !showGlobalSearch && showColumnFilter:
638
+ gridTemplateAreas = "\n \". columnFilter\"\n ";
639
+ break;
640
+ case !showTitle && showGlobalSearch && !showColumnFilter:
641
+ gridTemplateAreas = "\n \"globalFilter .\"\n ";
642
+ break;
643
+ case showTitle && showGlobalSearch && !showColumnFilter:
644
+ gridTemplateAreas = "\n \"title .\"\n \"globalFilter .\"\n ";
645
+ break;
646
+ }
647
+ return (React.createElement(core.Box, { display: "grid", gridTemplateColumns: "repeat(2, minmax(150px, 1fr))", gridTemplateAreas: gridTemplateAreas, gridGap: 16, marginBottom: 3 }, props.children));
648
+ };
649
+
650
+ var ColumnFilterResetButton = function (props) {
651
+ var _a = props.children, children = _a === void 0 ? 'Clear All' : _a, restProps = tslib.__rest(props, ["children"]);
652
+ return (React.createElement(adminUi.Button, tslib.__assign({ variant: "text", textTransform: "none" }, restProps), children));
653
+ };
654
+
655
+ var defaultTableProps = {
656
+ enableSortingRemoval: true,
657
+ fullWidth: true,
658
+ paginated: true,
659
+ sortable: false,
660
+ searchable: false,
661
+ };
662
+ var Table = function (props) {
663
+ var title = props.title, data = props.data, columns = props.columns, enableSortingRemoval = props.enableSortingRemoval, loading = props.loading, searchable = props.searchable, sortable = props.sortable, externalFilterState = props.filterState, externalGlobalFilterState = props.globalFilterState, externalPaginationState = props.paginationState, externalSortingState = props.sortingState, externalVisibilityState = props.visibilityState, paginated = props.paginated, pageCount = props.pageCount, GlobalFilterProps = props.GlobalFilterProps, Empty = props.Empty, idBase = props.idBase, stageFilterSelections = props.stageFilterSelections;
664
+ var classes = useStyles$6(props);
665
+ var rootRef = React.useRef(null);
666
+ // Prepare Empty State
667
+ var isEmpty = data.length === 0;
668
+ var isEmptyComponentValid = Empty && React.isValidElement(React.createElement(Empty));
669
+ // Prepare Sorting
670
+ var _a = externalSortingState || [], sorting = _a[0], setSorting = _a[1];
671
+ var isControlledColumnSort = Boolean(externalSortingState);
672
+ var controlledColumnSortOptions = { onSortingChange: setSorting, manualSorting: true };
673
+ // Prepare Global Filtering
674
+ var _b = externalGlobalFilterState || [], globalFilter = _b[0], setGlobalFilter = _b[1];
675
+ var isControlledGlobalFilter = Boolean(externalGlobalFilterState);
676
+ var controlledGlobalFilterOptions = { onGlobalFilterChange: setGlobalFilter, manualFiltering: true };
677
+ // Prepare ColumnFiltering
678
+ var _c = externalFilterState || [], columnFilters = _c[0], setColumnFilters = _c[1];
679
+ var isControlledColumnFilters = Boolean(externalFilterState);
680
+ var controlledColumnFiltersOptions = { onColumnFiltersChange: setColumnFilters, manualFiltering: true };
681
+ // Prepare Pagination
682
+ var _d = externalPaginationState || [], pagination = _d[0], setPagination = _d[1];
683
+ var isControlledPagination = Boolean(externalPaginationState && pageCount);
684
+ var controlledPaginationOptions = { manualPagination: true, onPaginationChange: setPagination, pageCount: pageCount };
685
+ // Prepare Column Visibility
686
+ var columnVisibility = (externalVisibilityState || [])[0];
687
+ var isControlledColumnVisibility = Boolean(externalVisibilityState);
688
+ // Init table instance
689
+ var table = reactTable.useReactTable(tslib.__assign(tslib.__assign(tslib.__assign(tslib.__assign(tslib.__assign(tslib.__assign({ data: data, columns: columns, state: tslib.__assign(tslib.__assign(tslib.__assign(tslib.__assign(tslib.__assign({}, (isControlledPagination && { pagination: pagination })), (isControlledGlobalFilter && { globalFilter: globalFilter })), (isControlledColumnFilters && { columnFilters: columnFilters })), (isControlledColumnVisibility && { columnVisibility: columnVisibility })), (isControlledColumnSort && { sorting: sorting })), enableSorting: sortable, enableSortingRemoval: enableSortingRemoval, globalFilterFn: coercedValueIncludesString, getCoreRowModel: reactTable.getCoreRowModel(), getSortedRowModel: reactTable.getSortedRowModel(), getFilteredRowModel: reactTable.getFilteredRowModel() }, (paginated && { getPaginationRowModel: reactTable.getPaginationRowModel() })), (isControlledPagination && controlledPaginationOptions)), (isControlledGlobalFilter && controlledGlobalFilterOptions)), (isControlledColumnFilters && controlledColumnFiltersOptions)), (isControlledColumnSort && controlledColumnSortOptions)), { meta: { idBase: idBase } }));
690
+ var _f = useColumnFilters(table), selectedColumnFilters = _f.selectedColumnFilters, hasColumnFilters = _f.hasColumnFilters, deselectColumnFilter = _f.deselectColumnFilter, formatSelectedFilterText = _f.formatSelectedFilterText, resetColumnFilters = _f.resetColumnFilters;
691
+ // stagedColumnFilters is only used when stageFilterSelections is enabled
692
+ var stagedColumnFilters = useStagedColumnFilters(selectedColumnFilters);
693
+ var handlePagination = function (_e, pageNumber) {
694
+ var pageIndex = pageNumber - 1;
695
+ table.setPageIndex(pageIndex);
696
+ };
697
+ var showTitle = Boolean(title);
698
+ var showGlobalSearch = Boolean(searchable || isControlledGlobalFilter);
699
+ var showColumnFilter = Boolean(hasColumnFilters);
700
+ var showControls = Boolean(showTitle || showGlobalSearch || showColumnFilter);
701
+ return (React.createElement(TableContext.Provider, { value: { table: table, stagedColumnFilters: stagedColumnFilters, stageFilterSelections: stageFilterSelections } },
702
+ React.createElement(commonUi.Box, tslib.__assign({ className: classes.root }, { ref: rootRef }, { "data-table-element": "root" }, (table.getPageCount() > 1 && {
703
+ minHeight: getTableMinHeight(rootRef, table.getState().pagination.pageSize),
704
+ })),
705
+ showControls && (React.createElement(commonUi.Box, null,
706
+ React.createElement(TableControlsContainer, { showTitle: showTitle, showGlobalSearch: showGlobalSearch, showColumnFilter: showColumnFilter },
707
+ showTitle && (React.createElement(core.Typography, { style: { gridArea: 'title', alignSelf: 'center', fontSize: '18px', lineHeight: '27px' } }, title)),
708
+ showGlobalSearch && (React.createElement(GlobalFilter, tslib.__assign({}, GlobalFilterProps, { value: table.getState().globalFilter, setValue: table.setGlobalFilter }))),
709
+ showColumnFilter && React.createElement(FilterPanel, null)),
710
+ React.createElement(commonUi.Box, { display: "flex", flexWrap: "wrap", gridGap: 8 },
711
+ selectedColumnFilters.map(function (selectedColumnFilter, i) { return (React.createElement(ColumnFilterChip, { key: "selected-column-filter-chip-" + i, columnFilter: selectedColumnFilter, label: formatSelectedFilterText(selectedColumnFilter), onClick: function (columnFilter) {
712
+ if (stageFilterSelections) {
713
+ stagedColumnFilters.delete(columnFilter);
714
+ }
715
+ deselectColumnFilter(columnFilter);
716
+ } })); }),
717
+ selectedColumnFilters.length >= 1 && (React.createElement(ColumnFilterResetButton, { onClick: function () {
718
+ if (stageFilterSelections) {
719
+ stagedColumnFilters.clear();
720
+ }
721
+ resetColumnFilters();
722
+ } }))))),
723
+ React.createElement(commonUi.Box, { className: classes.tableContainer, flexGrow: loading || isEmpty ? 0 : 1 },
724
+ React.createElement("table", { className: classes.table },
725
+ React.createElement(TableHeader, null, table.getHeaderGroups().map(function (headerGroup) { return (React.createElement(TableHeaderRow, { key: headerGroup.id }, headerGroup.headers.map(function (header) { return (React.createElement(TableHeaderCell, { key: header.id, context: header.getContext() }, reactTable.flexRender(header.column.columnDef.header, header.getContext()))); }))); })),
726
+ !loading && (React.createElement(TableBody, null, table.getRowModel().rows.map(function (row) { return (React.createElement(TableRow, { key: row.id }, row.getVisibleCells().map(function (cell) { return (React.createElement(TableCell, { key: cell.id }, reactTable.flexRender(cell.column.columnDef.cell, cell.getContext()))); }))); }))))),
727
+ isEmpty && isEmptyComponentValid && Empty && !loading && (React.createElement(commonUi.Box, { display: "flex", flexDirection: "column", justifyContent: "center", alignItems: "center", p: 2, flexGrow: 1 }, React.createElement(Empty))),
728
+ loading && (React.createElement(commonUi.Box, { display: "flex", flexDirection: "column", justifyContent: "center", alignItems: "center", p: 2, flexGrow: 1 },
729
+ React.createElement(commonUi.CircularProgress, { size: 80, color: "inherit" }))),
730
+ paginated && table.getPageCount() > 1 && (React.createElement(TableFooter, null,
731
+ React.createElement(lab.Pagination, { page: table.getState().pagination.pageIndex + 1, count: table.getPageCount(), onChange: handlePagination, disabled: loading }))))));
732
+ };
733
+ Table.defaultProps = defaultTableProps;
734
+
735
+ var validateAction = function (action) {
736
+ var icon = action.icon, label = action.label, onClick = action.onClick;
737
+ var onClickIsValid = typeof onClick === 'function';
738
+ var labelIsValid = typeof label === 'string';
739
+ var iconIsValid = icon && React.isValidElement(React.createElement(icon));
740
+ return onClickIsValid && labelIsValid && iconIsValid;
741
+ };
742
+
743
+ var RowActions = function (props) {
744
+ var context = props.context, actions = props.actions;
745
+ var validActions = actions.filter(validateAction);
746
+ var _a = React.useState(null), anchorEl = _a[0], setAnchorEl = _a[1];
747
+ var openMenu = function (event) {
748
+ setAnchorEl(event.currentTarget);
749
+ };
750
+ var closeMenu = function () {
751
+ setAnchorEl(null);
752
+ };
753
+ var actionsCount = validActions.length;
754
+ var mainActions;
755
+ var overflowActions;
756
+ if (actionsCount <= 3) {
757
+ mainActions = validActions;
758
+ }
759
+ else {
760
+ var firstAction = validActions[0], secondAction = validActions[1], restActions = validActions.slice(2);
761
+ mainActions = [firstAction, secondAction];
762
+ overflowActions = restActions;
763
+ }
764
+ return (React.createElement(commonUi.Box, { display: "flex" },
765
+ mainActions.map(function (_a) {
766
+ var label = _a.label, onClick = _a.onClick, icon = _a.icon, restProps = tslib.__rest(_a, ["label", "onClick", "icon"]);
767
+ return (React.createElement(commonUi.Tooltip, { title: label, key: label },
768
+ React.createElement(commonUi.IconButton, tslib.__assign({ size: "small", onClick: function () { return onClick(context); } }, restProps),
769
+ React.createElement(commonUi.Icon, { icon: icon }))));
770
+ }),
771
+ overflowActions && (React.createElement(React.Fragment, null,
772
+ React.createElement(commonUi.IconButton, { size: "small", onClick: openMenu },
773
+ React.createElement(commonUi.Icon, { icon: webIcons.More })),
774
+ React.createElement(commonUi.Menu, { anchorEl: anchorEl, open: Boolean(anchorEl), onClose: closeMenu }, overflowActions.map(function (action) { return (React.createElement(commonUi.MenuItem, { key: action.label, onClick: function () { return action.onClick(context); } }, action.label)); }))))));
775
+ };
776
+
777
+ exports.GlobalFilter = GlobalFilter;
778
+ exports.RowActions = RowActions;
779
+ exports.Table = Table;
780
+ exports.TableBody = TableBody;
781
+ exports.TableCell = TableCell;
782
+ exports.TableFooter = TableFooter;
783
+ exports.TableHeader = TableHeader;
784
+ exports.TableHeaderCell = TableHeaderCell;
785
+ exports.TableHeaderRow = TableHeaderRow;
786
+ exports.TableRow = TableRow;
787
+ //# sourceMappingURL=index.js.map