@equinor/eds-data-grid-react 0.1.0-beta.3 → 0.3.0-rc

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.
@@ -1,443 +1,549 @@
1
1
  'use strict';
2
2
 
3
- var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
4
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
5
- var reactTable = require('@tanstack/react-table');
6
3
  var edsCoreReact = require('@equinor/eds-core-react');
4
+ var reactTable = require('@tanstack/react-table');
5
+ var reactVirtual = require('@tanstack/react-virtual');
7
6
  var react = require('react');
8
7
  var edsIcons = require('@equinor/eds-icons');
9
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
10
8
  var jsxRuntime = require('react/jsx-runtime');
11
9
  var styled = require('styled-components');
12
10
  var edsTokens = require('@equinor/eds-tokens');
13
- var reactVirtual = require('@tanstack/react-virtual');
14
11
 
15
12
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
16
13
 
17
- var _objectSpread__default = /*#__PURE__*/_interopDefault(_objectSpread);
18
- var _slicedToArray__default = /*#__PURE__*/_interopDefault(_slicedToArray);
19
- var _objectWithoutProperties__default = /*#__PURE__*/_interopDefault(_objectWithoutProperties);
20
14
  var styled__default = /*#__PURE__*/_interopDefault(styled);
21
15
 
22
- var _excluded$1 = ["children"];
23
16
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
24
- var EdsDataGridContext = /*#__PURE__*/react.createContext({
17
+ const EdsDataGridContext = /*#__PURE__*/react.createContext({
25
18
  enableSorting: false,
26
19
  stickyHeader: false,
27
20
  enableColumnFiltering: false,
28
21
  table: null
29
22
  });
30
- function TableProvider(_ref) {
31
- var children = _ref.children,
32
- props = _objectWithoutProperties__default.default(_ref, _excluded$1);
23
+ function TableProvider({
24
+ children,
25
+ ...props
26
+ }) {
33
27
  return /*#__PURE__*/jsxRuntime.jsx(EdsDataGridContext.Provider, {
34
28
  value: props,
35
29
  children: children
36
30
  });
37
31
  }
38
- var useTableContext = function useTableContext() {
39
- return react.useContext(EdsDataGridContext);
40
- };
32
+ const useTableContext = () => react.useContext(EdsDataGridContext);
41
33
 
42
- var _excluded = ["value", "values", "onChange", "debounce"];
34
+ /* istanbul ignore file */
43
35
  // File ignored, as relevant actions are covered via Filter.test.tsx
44
- function DebouncedInput(_ref) {
45
- var _props$placeholder, _props$placeholder2;
46
- var initialValue = _ref.value,
47
- values = _ref.values,
48
- onChange = _ref.onChange,
49
- _ref$debounce = _ref.debounce,
50
- debounce = _ref$debounce === void 0 ? 500 : _ref$debounce,
51
- props = _objectWithoutProperties__default.default(_ref, _excluded);
52
- var _useState = react.useState(initialValue),
53
- _useState2 = _slicedToArray__default.default(_useState, 2),
54
- value = _useState2[0],
55
- setValue = _useState2[1];
56
- react.useEffect(function () {
36
+ function DebouncedInput({
37
+ value: initialValue,
38
+ values,
39
+ onChange,
40
+ debounce = 500,
41
+ label,
42
+ ...props
43
+ }) {
44
+ const [value, setValue] = react.useState(initialValue);
45
+ react.useEffect(() => {
57
46
  setValue(initialValue);
58
47
  }, [initialValue]);
59
- react.useEffect(function () {
60
- var timeout = setTimeout(function () {
48
+ react.useEffect(() => {
49
+ const timeout = setTimeout(() => {
61
50
  onChange(value);
62
51
  }, debounce);
63
- return function () {
64
- return clearTimeout(timeout);
65
- };
52
+ return () => clearTimeout(timeout);
66
53
  // eslint-disable-next-line react-hooks/exhaustive-deps
67
54
  }, [value]);
68
- return /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.EdsProvider, {
69
- density: "compact",
70
- children: props.type === 'number' ? /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Input, {
71
- type: 'number',
72
- placeholder: (_props$placeholder = props.placeholder) !== null && _props$placeholder !== void 0 ? _props$placeholder : 'Search',
73
- value: value,
74
- onChange: function onChange(e) {
75
- return setValue(e.target.valueAsNumber);
76
- }
77
- }) : /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Autocomplete, {
78
- options: values,
79
- multiple: true,
80
- optionComponent: function optionComponent(opt) {
81
- return opt === 'NULL_OR_UNDEFINED' ? '<Blank>' : opt;
82
- },
83
- "data-testid": 'autocomplete'
84
- /* eslint-disable-next-line @typescript-eslint/ban-ts-comment */
85
- // @ts-ignore
86
- ,
87
- label: null,
88
- placeholder: (_props$placeholder2 = props.placeholder) !== null && _props$placeholder2 !== void 0 ? _props$placeholder2 : 'Search',
89
- onOptionsChange: function onOptionsChange(c) {
90
- return setValue(c.selectedItems);
91
- }
55
+ return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
56
+ children: props.type === 'number' ? /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.InputWrapper, {
57
+ label: props.placeholder,
58
+ children: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Input, {
59
+ type: 'number',
60
+ placeholder: '0',
61
+ value: value,
62
+ onChange: e => setValue(e.target.valueAsNumber)
63
+ })
64
+ }) : /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
65
+ children: [/*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Autocomplete, {
66
+ options: values,
67
+ autoWidth: true,
68
+ multiple: true,
69
+ optionComponent: opt => opt === 'NULL_OR_UNDEFINED' ? '<Blank>' : opt,
70
+ "data-testid": 'autocomplete'
71
+ /* eslint-disable-next-line @typescript-eslint/ban-ts-comment */,
72
+ label: `Select ${label ?? ''}`,
73
+ placeholder: props.placeholder ?? 'Search',
74
+ disablePortal: false /*TODO: Check with Oddbjørn re. sizing/position*/,
75
+ selectedOptions: value,
76
+ onOptionsChange: c => setValue(c.selectedItems),
77
+ multiline: true
78
+ }), /*#__PURE__*/jsxRuntime.jsx("div", {
79
+ style: {
80
+ display: 'flex',
81
+ flexWrap: 'wrap',
82
+ marginTop: '8px'
83
+ },
84
+ children: value.map(v => /*#__PURE__*/jsxRuntime.jsxs(edsCoreReact.Chip, {
85
+ title: v,
86
+ onKeyDownCapture: event => {
87
+ if (['Backspace', 'Delete'].includes(event.key)) {
88
+ onChange(value.filter(item => item !== v));
89
+ }
90
+ },
91
+ style: {
92
+ margin: '4px'
93
+ },
94
+ onDelete: () => onChange(value.filter(item => item !== v)),
95
+ children: [v.slice(0, 20), v.length > 20 ? '...' : '']
96
+ }, v))
97
+ })]
92
98
  })
93
99
  });
94
100
  }
95
101
 
96
102
  /* istanbul ignore file */
97
103
 
98
- function Filter(_ref) {
99
- var _table$getPreFiltered, _column$getFacetedMin, _column$getFacetedMin2, _column$getFacetedMin3, _column$getFacetedMin4, _, _column$getFacetedMin5, _column$getFacetedMin6, _column$getFacetedMin7, _column$getFacetedMin8, _column$getFacetedMin9, _column$getFacetedMin10, _2, _column$getFacetedMin11, _column$getFacetedMin12;
100
- var column = _ref.column,
101
- table = _ref.table;
102
- var firstValue = (_table$getPreFiltered = table.getPreFilteredRowModel().flatRows[0]) === null || _table$getPreFiltered === void 0 ? void 0 : _table$getPreFiltered.getValue(column.id);
103
- var columnFilterValue = column.getFilterValue();
104
- var sortedUniqueValues = react.useMemo(function () {
105
- return typeof firstValue === 'number' ? [] : Array.from(column.getFacetedUniqueValues().keys()).sort().map(function (v) {
106
- return v !== null && v !== void 0 ? v : 'NULL_OR_UNDEFINED';
107
- });
108
- },
104
+ const NumberContainer = styled__default.default.div.withConfig({
105
+ displayName: "Filter__NumberContainer",
106
+ componentId: "sc-ytpdpw-0"
107
+ })(["display:grid;grid-template-columns:80px 80px;grid-column-gap:32px;"]);
108
+ function Filter({
109
+ column,
110
+ table
111
+ }) {
112
+ const firstValue = table.getPreFilteredRowModel().flatRows[0]?.getValue(column.id);
113
+ const [open, setOpen] = react.useState(false);
114
+ const filterIconRef = react.useRef();
115
+ const togglePopover = event => {
116
+ event.stopPropagation();
117
+ setOpen(!open);
118
+ };
119
+ const columnText = react.useMemo(() => {
120
+ let header;
121
+ try {
122
+ if (typeof column.columnDef.header === 'function') {
123
+ const obj = column.columnDef.header(
124
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-argument
125
+ {});
126
+ header = obj.props.children;
127
+ } else {
128
+ header = column.columnDef.header;
129
+ }
130
+ } catch {
131
+ /*em all*/
132
+ }
133
+ return header;
134
+ }, [column.columnDef]);
135
+ const columnFilterValue = column.getFilterValue();
136
+ const sortedUniqueValues = react.useMemo(() => typeof firstValue === 'number' ? [] : Array.from(column.getFacetedUniqueValues().keys()).sort().map(v => v ?? 'NULL_OR_UNDEFINED'),
109
137
  // eslint-disable-next-line react-hooks/exhaustive-deps
110
138
  [column.getFacetedUniqueValues()]);
111
- return typeof firstValue === 'number' ? /*#__PURE__*/jsxRuntime.jsxs("div", {
112
- children: [/*#__PURE__*/jsxRuntime.jsx(DebouncedInput, {
113
- type: "number",
114
- values: sortedUniqueValues,
115
- min: Number((_column$getFacetedMin = (_column$getFacetedMin2 = column.getFacetedMinMaxValues()) === null || _column$getFacetedMin2 === void 0 ? void 0 : _column$getFacetedMin2[0]) !== null && _column$getFacetedMin !== void 0 ? _column$getFacetedMin : ''),
116
- max: Number((_column$getFacetedMin3 = (_column$getFacetedMin4 = column.getFacetedMinMaxValues()) === null || _column$getFacetedMin4 === void 0 ? void 0 : _column$getFacetedMin4[1]) !== null && _column$getFacetedMin3 !== void 0 ? _column$getFacetedMin3 : ''),
117
- value: (_ = columnFilterValue === null || columnFilterValue === void 0 ? void 0 : columnFilterValue[0]) !== null && _ !== void 0 ? _ : '',
118
- onChange: function onChange(value) {
119
- return column.setFilterValue(function (old) {
120
- return [value, old === null || old === void 0 ? void 0 : old[1]];
121
- });
122
- },
123
- placeholder: "Min ".concat((_column$getFacetedMin5 = column.getFacetedMinMaxValues()) !== null && _column$getFacetedMin5 !== void 0 && _column$getFacetedMin5[0] ? "(".concat((_column$getFacetedMin6 = column.getFacetedMinMaxValues()) === null || _column$getFacetedMin6 === void 0 ? void 0 : _column$getFacetedMin6[0], ")") : '')
124
- }), /*#__PURE__*/jsxRuntime.jsx(DebouncedInput, {
125
- type: "number",
126
- values: sortedUniqueValues,
127
- min: Number((_column$getFacetedMin7 = (_column$getFacetedMin8 = column.getFacetedMinMaxValues()) === null || _column$getFacetedMin8 === void 0 ? void 0 : _column$getFacetedMin8[0]) !== null && _column$getFacetedMin7 !== void 0 ? _column$getFacetedMin7 : ''),
128
- max: Number((_column$getFacetedMin9 = (_column$getFacetedMin10 = column.getFacetedMinMaxValues()) === null || _column$getFacetedMin10 === void 0 ? void 0 : _column$getFacetedMin10[1]) !== null && _column$getFacetedMin9 !== void 0 ? _column$getFacetedMin9 : ''),
129
- value: (_2 = columnFilterValue === null || columnFilterValue === void 0 ? void 0 : columnFilterValue[1]) !== null && _2 !== void 0 ? _2 : '',
130
- onChange: function onChange(value) {
131
- return column.setFilterValue(function (old) {
132
- return [old === null || old === void 0 ? void 0 : old[0], value];
133
- });
139
+ const hasActiveFilters = value => {
140
+ if (Array.isArray(value)) {
141
+ if (typeof firstValue === 'number') {
142
+ return value.some(v => !isNaN(v) && !!v);
143
+ } else {
144
+ return value.filter(v => !!v).length > 0;
145
+ }
146
+ }
147
+ return value;
148
+ };
149
+ return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
150
+ children: [/*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Button, {
151
+ "aria-haspopup": true,
152
+ "aria-expanded": open,
153
+ "data-testid": 'open-filters',
154
+ ref: filterIconRef,
155
+ onClick: togglePopover,
156
+ variant: 'ghost_icon',
157
+ children: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Icon, {
158
+ color: edsTokens.tokens.colors.text.static_icons__default.hex,
159
+ data: hasActiveFilters(columnFilterValue) ? edsIcons.filter_alt_active : edsIcons.filter_alt
160
+ })
161
+ }), /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Popover, {
162
+ style: {
163
+ width: typeof firstValue === 'number' ? '220px' : '340px'
134
164
  },
135
- placeholder: "Max ".concat((_column$getFacetedMin11 = column.getFacetedMinMaxValues()) !== null && _column$getFacetedMin11 !== void 0 && _column$getFacetedMin11[1] ? "(".concat((_column$getFacetedMin12 = column.getFacetedMinMaxValues()) === null || _column$getFacetedMin12 === void 0 ? void 0 : _column$getFacetedMin12[1], ")") : '')
165
+ anchorEl: filterIconRef.current,
166
+ open: open,
167
+ onClose: () => setOpen(false),
168
+ children: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Popover.Content, {
169
+ style: {
170
+ width: typeof firstValue === 'number' ? '180px' : '310px'
171
+ },
172
+ children: typeof firstValue === 'number' ? /*#__PURE__*/jsxRuntime.jsxs(NumberContainer, {
173
+ children: [/*#__PURE__*/jsxRuntime.jsx(DebouncedInput, {
174
+ type: "number",
175
+ values: sortedUniqueValues,
176
+ min: Number(column.getFacetedMinMaxValues()?.[0] ?? ''),
177
+ max: Number(column.getFacetedMinMaxValues()?.[1] ?? ''),
178
+ value: columnFilterValue?.[0] ?? '',
179
+ onChange: value => column.setFilterValue(old => [value, old?.[1]]),
180
+ placeholder: `Min ${column.getFacetedMinMaxValues()?.[0] ? `(${column.getFacetedMinMaxValues()?.[0]})` : ''}`
181
+ }), /*#__PURE__*/jsxRuntime.jsx(DebouncedInput, {
182
+ type: "number",
183
+ values: sortedUniqueValues,
184
+ min: Number(column.getFacetedMinMaxValues()?.[0] ?? ''),
185
+ max: Number(column.getFacetedMinMaxValues()?.[1] ?? ''),
186
+ value: columnFilterValue?.[1] ?? '',
187
+ onChange: value => column.setFilterValue(old => [old?.[0], value]),
188
+ placeholder: `Max ${column.getFacetedMinMaxValues()?.[1] ? `(${column.getFacetedMinMaxValues()?.[1]})` : ''}`
189
+ })]
190
+ }) : /*#__PURE__*/jsxRuntime.jsx(DebouncedInput, {
191
+ type: "text",
192
+ label: columnText,
193
+ values: sortedUniqueValues,
194
+ debounce: 100,
195
+ value: columnFilterValue ?? [],
196
+ onChange: value => column.setFilterValue(value),
197
+ placeholder: `${(columnFilterValue ?? []).length} / ${column.getFacetedUniqueValues().size} selected`,
198
+ list: column.id + 'list'
199
+ })
200
+ })
136
201
  })]
137
- }) : /*#__PURE__*/jsxRuntime.jsx(DebouncedInput, {
138
- type: "text",
139
- values: sortedUniqueValues,
140
- value: columnFilterValue !== null && columnFilterValue !== void 0 ? columnFilterValue : '',
141
- onChange: function onChange(value) {
142
- return column.setFilterValue(value);
143
- },
144
- placeholder: "Search (".concat(column.getFacetedUniqueValues().size, ")"),
145
- list: column.id + 'list'
146
202
  });
147
203
  }
148
204
 
149
- var getSortLabel = function getSortLabel(sorted) {
205
+ const getSortLabel = sorted => {
150
206
  if (sorted) {
151
- return "".concat(sorted, "ending");
207
+ return `${sorted}ending`;
152
208
  }
153
209
  return 'none';
154
210
  };
155
- var Resizer = styled__default.default.div.withConfig({
156
- displayName: "TableHeaderCell__Resizer",
211
+ const ResizeInner = styled__default.default.div.withConfig({
212
+ displayName: "TableHeaderCell__ResizeInner",
157
213
  componentId: "sc-1n0j3v0-0"
158
- })(["transform:", ";opacity:", ";position:absolute;right:0;top:0;height:100%;width:5px;cursor:col-resize;user-select:none;touch-action:none;"], function (props) {
159
- return props.$columnResizeMode === 'onEnd' ? 'translateX(0px)' : 'none';
160
- }, function (props) {
161
- return props.$isResizing ? 1 : 0;
162
- });
163
- var Cell = styled__default.default(edsCoreReact.Table.Cell).withConfig({
164
- displayName: "TableHeaderCell__Cell",
214
+ })(["width:2px;opacity:0;height:100%;"]);
215
+ const Resizer = styled__default.default.div.withConfig({
216
+ displayName: "TableHeaderCell__Resizer",
165
217
  componentId: "sc-1n0j3v0-1"
166
- })(["font-weight:bold;height:30px;position:", ";&:hover ", "{background:", ";opacity:1;}"], function (p) {
167
- return p.sticky ? 'sticky' : 'relative';
168
- }, Resizer, edsTokens.tokens.colors.interactive.primary__hover.rgba);
169
- function TableHeaderCell(_ref) {
170
- var _asc$desc;
171
- var header = _ref.header,
172
- columnResizeMode = _ref.columnResizeMode;
173
- var ctx = useTableContext();
174
- var table = ctx.table;
218
+ })(["transform:", ";", "{opacity:", ";}position:absolute;right:0;top:0;height:100%;width:5px;cursor:col-resize;user-select:none;touch-action:none;display:flex;justify-content:flex-end;"], props => props.$columnResizeMode === 'onEnd' ? 'translateX(0px)' : 'none', ResizeInner, props => props.$isResizing ? 1 : 0);
219
+ const Cell = styled__default.default(edsCoreReact.Table.Cell).withConfig({
220
+ displayName: "TableHeaderCell__Cell",
221
+ componentId: "sc-1n0j3v0-2"
222
+ })(["font-weight:bold;height:30px;position:", ";top:0;", " ", ";&:hover ", "{background:", ";opacity:1;}"], p => p.$sticky || p.$pinned ? 'sticky' : 'relative', p => {
223
+ if (p.$pinned) {
224
+ return `${p.$pinned}: ${p.$offset}px;`;
225
+ }
226
+ return '';
227
+ }, p => {
228
+ if (p.$sticky && p.$pinned) return 'z-index: 13';
229
+ if (p.$sticky || p.$pinned) return 'z-index: 12';
230
+ }, ResizeInner, edsTokens.tokens.colors.interactive.primary__hover.rgba);
231
+ function TableHeaderCell({
232
+ header,
233
+ columnResizeMode
234
+ }) {
235
+ const ctx = useTableContext();
236
+ const table = ctx.table;
237
+ const pinned = header.column.getIsPinned();
238
+ const offset = react.useMemo(() => {
239
+ if (!pinned) {
240
+ return null;
241
+ }
242
+ return pinned === 'left' ? header.getStart() : table.getTotalSize() - header.getStart() - header.getSize();
243
+ }, [pinned, header, table]);
175
244
  return header.isPlaceholder ? /*#__PURE__*/jsxRuntime.jsx(Cell, {
176
- sticky: ctx.stickyHeader,
245
+ $sticky: ctx.stickyHeader,
246
+ $offset: offset,
247
+ $pinned: pinned,
177
248
  className: ctx.headerClass ? ctx.headerClass(header.column) : '',
178
- style: ctx.headerStyle ? ctx.headerStyle(header.column) : {},
249
+ style: {
250
+ ...(ctx.headerStyle ? ctx.headerStyle(header.column) : {})
251
+ },
179
252
  "aria-hidden": true
180
253
  }) : /*#__PURE__*/jsxRuntime.jsxs(Cell, {
181
- sticky: ctx.stickyHeader,
254
+ $sticky: ctx.stickyHeader,
255
+ $offset: offset,
256
+ $pinned: pinned,
182
257
  className: ctx.headerClass ? ctx.headerClass(header.column) : '',
183
258
  "aria-sort": getSortLabel(header.column.getIsSorted()),
184
259
  onClick: header.column.getToggleSortingHandler(),
185
260
  key: header.id,
186
261
  colSpan: header.colSpan,
187
- style: _objectSpread__default.default({
262
+ style: {
188
263
  width: header.getSize(),
189
- verticalAlign: ctx.enableColumnFiltering ? 'baseline' : 'middle'
190
- }, ctx.headerStyle ? ctx.headerStyle(header.column) : {}),
264
+ verticalAlign: ctx.enableColumnFiltering ? 'top' : 'middle',
265
+ ...(ctx.headerStyle ? ctx.headerStyle(header.column) : {})
266
+ },
191
267
  children: [/*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
192
- children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
268
+ children: [/*#__PURE__*/jsxRuntime.jsx("div", {
193
269
  style: {
194
270
  display: 'flex',
195
271
  flexDirection: 'column'
196
272
  },
197
- children: [/*#__PURE__*/jsxRuntime.jsx("span", {
273
+ children: /*#__PURE__*/jsxRuntime.jsx("span", {
198
274
  className: "table-header-cell-label",
199
275
  children: reactTable.flexRender(header.column.columnDef.header, header.getContext())
200
- }), header.column.getCanFilter() ?
201
- /*#__PURE__*/
202
- // Supressing this warning - div is not interactive, but prevents propagation of events to avoid unintended sorting
203
- // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
204
- jsxRuntime.jsx("div", {
205
- onClick: function onClick(e) {
206
- return e.stopPropagation();
207
- },
208
- children: /*#__PURE__*/jsxRuntime.jsx(Filter, {
209
- column: header.column,
210
- table: table
211
- })
212
- }) : null]
213
- }), (_asc$desc = {
276
+ })
277
+ }), {
214
278
  asc: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Icon, {
215
279
  data: edsIcons.arrow_up
216
280
  }),
217
281
  desc: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Icon, {
218
282
  data: edsIcons.arrow_down
219
283
  })
220
- }[header.column.getIsSorted()]) !== null && _asc$desc !== void 0 ? _asc$desc : null]
284
+ }[header.column.getIsSorted()] ?? null, header.column.getCanFilter() ?
285
+
286
+ // Supressing this warning - div is not interactive, but prevents propagation of events to avoid unintended sorting
287
+ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
288
+ jsxRuntime.jsx("div", {
289
+ onClick: e => e.stopPropagation(),
290
+ children: /*#__PURE__*/jsxRuntime.jsx(Filter, {
291
+ column: header.column,
292
+ table: table
293
+ })
294
+ }) : null]
221
295
  }), columnResizeMode && /*#__PURE__*/jsxRuntime.jsx(Resizer, {
222
- onClick: function onClick(e) {
223
- return e.stopPropagation();
224
- },
296
+ onClick: e => e.stopPropagation(),
225
297
  onMouseDown: header.getResizeHandler(),
226
298
  onTouchStart: header.getResizeHandler(),
227
299
  $isResizing: header.column.getIsResizing(),
228
300
  $columnResizeMode: columnResizeMode,
229
301
  className: 'resize-handle',
230
- "data-testid": 'resize-handle'
302
+ "data-testid": 'resize-handle',
303
+ children: /*#__PURE__*/jsxRuntime.jsx(ResizeInner, {})
231
304
  })]
232
305
  });
233
306
  }
234
307
 
235
- function TableHeaderRow(_ref) {
236
- var headerGroup = _ref.headerGroup,
237
- columnResizeMode = _ref.columnResizeMode,
238
- deltaOffset = _ref.deltaOffset,
239
- table = _ref.table;
308
+ function TableHeaderRow({
309
+ headerGroup,
310
+ columnResizeMode,
311
+ deltaOffset,
312
+ table
313
+ }) {
240
314
  return /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Table.Row, {
241
- children: headerGroup.headers.map(function (header) {
242
- return /*#__PURE__*/jsxRuntime.jsx(TableHeaderCell, {
243
- header: header,
244
- table: table,
245
- columnResizeMode: columnResizeMode,
246
- deltaOffset: deltaOffset
247
- }, header.id);
248
- })
315
+ children: headerGroup.headers.map(header => /*#__PURE__*/jsxRuntime.jsx(TableHeaderCell, {
316
+ header: header,
317
+ table: table,
318
+ columnResizeMode: columnResizeMode,
319
+ deltaOffset: deltaOffset
320
+ }, header.id))
249
321
  });
250
322
  }
251
323
 
252
- function TableBodyCell(_ref) {
253
- var _cellStyle;
254
- var cell = _ref.cell;
255
- var _useTableContext = useTableContext(),
256
- cellClass = _useTableContext.cellClass,
257
- cellStyle = _useTableContext.cellStyle;
258
- return /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Table.Cell, {
324
+ const StyledCell = styled__default.default(edsCoreReact.Table.Cell).withConfig({
325
+ displayName: "TableBodyCell__StyledCell",
326
+ componentId: "sc-1gsd2k4-0"
327
+ })(["position:", ";", " z-index:", ";background-color:inherit;"], p => p.$pinned ? 'sticky' : 'relative', p => {
328
+ if (p.$pinned) {
329
+ return `${p.$pinned}: ${p.$offset}px;`;
330
+ }
331
+ return '';
332
+ }, p => p.$pinned ? 11 : 'auto');
333
+ function TableBodyCell({
334
+ cell
335
+ }) {
336
+ const {
337
+ cellClass,
338
+ cellStyle,
339
+ table
340
+ } = useTableContext();
341
+ const pinned = cell.column.getIsPinned();
342
+ const pinnedOffset = react.useMemo(() => {
343
+ if (!pinned) {
344
+ return 0;
345
+ }
346
+ const header = table.getFlatHeaders().find(h => h.id === cell.column.id);
347
+ return pinned === 'left' ? header.getStart() : table.getTotalSize() - header.getStart() - cell.column.getSize();
348
+ }, [pinned, cell.column, table]);
349
+ return /*#__PURE__*/jsxRuntime.jsx(StyledCell, {
350
+ $pinned: pinned,
351
+ $offset: pinnedOffset,
259
352
  className: cellClass ? cellClass(cell.row, cell.column.id) : '',
260
353
  key: cell.id,
261
- style: _objectSpread__default.default({
354
+ style: {
262
355
  width: cell.column.getSize(),
263
356
  maxWidth: cell.column.getSize(),
264
- overflow: 'hidden',
265
- whiteSpace: 'nowrap',
266
- textOverflow: 'ellipsis'
267
- }, (_cellStyle = cellStyle === null || cellStyle === void 0 ? void 0 : cellStyle(cell.row, cell.column.id)) !== null && _cellStyle !== void 0 ? _cellStyle : {}),
268
- children: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Typography, {
269
- as: "span",
270
- group: "table",
271
- variant: "cell_text",
272
- children: reactTable.flexRender(cell.column.columnDef.cell, cell.getContext())
273
- })
357
+ ...(cellStyle?.(cell.row, cell.column.id) ?? {})
358
+ },
359
+ children: reactTable.flexRender(cell.column.columnDef.cell, cell.getContext())
274
360
  });
275
361
  }
276
362
 
277
- function TableRow(_ref) {
278
- var _rowStyle;
279
- var row = _ref.row;
280
- var _useTableContext = useTableContext(),
281
- rowClass = _useTableContext.rowClass,
282
- rowStyle = _useTableContext.rowStyle;
283
- return /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Table.Row, {
284
- style: _objectSpread__default.default({
285
- cursor: row.getCanSelect() ? 'pointer' : 'inherit'
286
- }, (_rowStyle = rowStyle === null || rowStyle === void 0 ? void 0 : rowStyle(row)) !== null && _rowStyle !== void 0 ? _rowStyle : {}),
287
- className: "".concat(row.getIsSelected() ? 'selected' : '', " ").concat(rowClass === null || rowClass === void 0 ? void 0 : rowClass(row)),
288
- onClick: function onClick() {
289
- return row.getCanSelect() ? row.toggleSelected() : null;
363
+ function TableRow({
364
+ row
365
+ }) {
366
+ const {
367
+ rowClass,
368
+ rowStyle
369
+ } = useTableContext();
370
+ return /*#__PURE__*/jsxRuntime.jsx(StyledTableRow, {
371
+ style: {
372
+ cursor: row.getCanSelect() ? 'pointer' : 'inherit',
373
+ ...(rowStyle?.(row) ?? {})
290
374
  },
291
- children: row.getVisibleCells().map(function (cell) {
292
- return /*#__PURE__*/jsxRuntime.jsx(TableBodyCell, {
293
- cell: cell
294
- }, cell.id);
295
- })
375
+ className: `${row.getIsSelected() ? 'selected' : ''} ${rowClass?.(row)}`,
376
+ onClick: () => row.getCanSelect() ? row.toggleSelected() : null,
377
+ children: row.getVisibleCells().map(cell => /*#__PURE__*/jsxRuntime.jsx(TableBodyCell, {
378
+ cell: cell
379
+ }, cell.id))
296
380
  });
297
381
  }
298
382
 
299
- function EdsDataGrid(_ref) {
300
- var rows = _ref.rows,
301
- columns = _ref.columns,
302
- columnResizeMode = _ref.columnResizeMode,
303
- pageSize = _ref.pageSize,
304
- rowSelection = _ref.rowSelection,
305
- selectedRows = _ref.selectedRows,
306
- enableColumnFiltering = _ref.enableColumnFiltering,
307
- debug = _ref.debug,
308
- enablePagination = _ref.enablePagination,
309
- enableSorting = _ref.enableSorting,
310
- stickyHeader = _ref.stickyHeader,
311
- onSelectRow = _ref.onSelectRow,
312
- caption = _ref.caption,
313
- enableVirtual = _ref.enableVirtual,
314
- virtualHeight = _ref.virtualHeight,
315
- columnVisibility = _ref.columnVisibility,
316
- columnVisibilityChange = _ref.columnVisibilityChange,
317
- emptyMessage = _ref.emptyMessage,
318
- columnOrder = _ref.columnOrder,
319
- cellClass = _ref.cellClass,
320
- cellStyle = _ref.cellStyle,
321
- rowClass = _ref.rowClass,
322
- rowStyle = _ref.rowStyle,
323
- headerClass = _ref.headerClass,
324
- headerStyle = _ref.headerStyle;
325
- var _useState = react.useState([]),
326
- _useState2 = _slicedToArray__default.default(_useState, 2),
327
- sorting = _useState2[0],
328
- setSorting = _useState2[1];
329
- var _useState3 = react.useState(selectedRows !== null && selectedRows !== void 0 ? selectedRows : {}),
330
- _useState4 = _slicedToArray__default.default(_useState3, 2),
331
- selection = _useState4[0],
332
- setSelection = _useState4[1];
333
- var _useState5 = react.useState([]),
334
- _useState6 = _slicedToArray__default.default(_useState5, 2),
335
- columnFilters = _useState6[0],
336
- setColumnFilters = _useState6[1];
337
- var _useState7 = react.useState(columnVisibility !== null && columnVisibility !== void 0 ? columnVisibility : {}),
338
- _useState8 = _slicedToArray__default.default(_useState7, 2),
339
- visible = _useState8[0],
340
- setVisible = _useState8[1];
341
- var _useState9 = react.useState(''),
342
- _useState10 = _slicedToArray__default.default(_useState9, 2),
343
- globalFilter = _useState10[0],
344
- setGlobalFilter = _useState10[1];
345
- var _useState11 = react.useState([]),
346
- _useState12 = _slicedToArray__default.default(_useState11, 2),
347
- columnOrderState = _useState12[0],
348
- setColumnOrderState = _useState12[1];
349
- var _useState13 = react.useState({
350
- pageIndex: 0,
351
- pageSize: pageSize !== null && pageSize !== void 0 ? pageSize : 25
352
- }),
353
- _useState14 = _slicedToArray__default.default(_useState13, 2),
354
- page = _useState14[0],
355
- setPage = _useState14[1];
356
- react.useEffect(function () {
357
- setVisible(columnVisibility !== null && columnVisibility !== void 0 ? columnVisibility : {});
383
+ // Neccessary to have this attribute as class to prevent overriding hover color
384
+ const StyledTableRow = styled__default.default(edsCoreReact.Table.Row).withConfig({
385
+ displayName: "TableRow__StyledTableRow",
386
+ componentId: "sc-1vjfq5p-0"
387
+ })(["background-color:inherit;"]);
388
+
389
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
390
+ function EdsDataGrid({
391
+ rows,
392
+ columns,
393
+ columnResizeMode,
394
+ pageSize,
395
+ rowSelection,
396
+ selectedRows,
397
+ enableColumnFiltering,
398
+ debug,
399
+ enablePagination,
400
+ enableSorting,
401
+ stickyHeader,
402
+ onSelectRow,
403
+ caption,
404
+ enableVirtual,
405
+ virtualHeight,
406
+ columnVisibility,
407
+ columnVisibilityChange,
408
+ emptyMessage,
409
+ columnOrder,
410
+ cellClass,
411
+ cellStyle,
412
+ rowClass,
413
+ rowStyle,
414
+ headerClass,
415
+ headerStyle,
416
+ externalPaginator,
417
+ onSortingChange,
418
+ manualSorting,
419
+ sortingState,
420
+ columnPinState,
421
+ scrollbarHorizontal,
422
+ width,
423
+ minWidth,
424
+ height,
425
+ getRowId,
426
+ rowVirtualizerInstanceRef
427
+ }) {
428
+ const [sorting, setSorting] = react.useState(sortingState ?? []);
429
+ const [selection, setSelection] = react.useState(selectedRows ?? {});
430
+ const [columnPin, setColumnPin] = react.useState(columnPinState ?? {});
431
+ const [columnFilters, setColumnFilters] = react.useState([]);
432
+ const [visible, setVisible] = react.useState(columnVisibility ?? {});
433
+ const [globalFilter, setGlobalFilter] = react.useState('');
434
+ const [columnOrderState, setColumnOrderState] = react.useState([]);
435
+ const [page, setPage] = react.useState({
436
+ pageIndex: 0,
437
+ pageSize: pageSize ?? 25
438
+ });
439
+ react.useEffect(() => {
440
+ setVisible(columnVisibility ?? {});
358
441
  }, [columnVisibility, setVisible]);
359
- react.useEffect(function () {
360
- setSelection(selectedRows !== null && selectedRows !== void 0 ? selectedRows : {});
442
+ react.useEffect(() => {
443
+ setColumnPin(s => columnPinState ?? s);
444
+ }, [columnPinState]);
445
+ react.useEffect(() => {
446
+ setSorting(sortingState);
447
+ }, [sortingState]);
448
+ react.useEffect(() => {
449
+ setSelection(selectedRows ?? {});
361
450
  }, [selectedRows]);
362
451
 
363
452
  /**
364
453
  * By default, the filter-function accepts single-value filters. This adds multi-filter functionality out of the box.
365
454
  */
366
- var _columns = react.useMemo(function () {
367
- return columns.map(function (column) {
455
+ const _columns = react.useMemo(() => {
456
+ return columns.map(column => {
368
457
  if (column.filterFn || column.enableColumnFilter === false) {
369
458
  return column;
370
459
  }
371
460
  /* istanbul ignore next */
372
- return _objectSpread__default.default(_objectSpread__default.default({}, column), {}, {
373
- filterFn: function filterFn(row, columnId, filterValue) {
374
- var _row$getValue;
461
+ return {
462
+ ...column,
463
+ filterFn: (row, columnId, filterValue) => {
375
464
  if (debug) {
376
465
  console.log('filterFn', row, columnId, filterValue);
377
466
  }
378
467
  if (!filterValue || (Array.isArray(filterValue) || typeof filterValue === 'string') && filterValue.length === 0) {
379
468
  return true;
380
469
  }
381
- var value = (_row$getValue = row.getValue(columnId)) !== null && _row$getValue !== void 0 ? _row$getValue : 'NULL_OR_UNDEFINED';
470
+ const value = row.getValue(columnId) ?? 'NULL_OR_UNDEFINED';
382
471
  if (Array.isArray(filterValue)) {
383
- var numeric = filterValue.some(function (v) {
384
- return typeof v === 'number';
385
- });
472
+ const numeric = filterValue.some(v => typeof v === 'number');
386
473
  if (numeric) {
387
- var _ref2 = filterValue,
388
- _ref3 = _slicedToArray__default.default(_ref2, 2),
389
- start = _ref3[0],
390
- end = _ref3[1];
474
+ const [start, end] = filterValue;
391
475
  return Number(value) >= (isNaN(start) ? 0 : start) && Number(value) <= (!end || isNaN(end) ? Infinity : end);
392
476
  } else {
393
- var validFilterValue = filterValue.filter(function (v) {
394
- return !!v;
395
- });
477
+ const validFilterValue = filterValue.filter(v => !!v);
396
478
  if (validFilterValue.length === 0) return true;
397
479
  return filterValue.includes(value);
398
480
  }
399
481
  }
400
482
  return value === filterValue;
401
483
  }
402
- });
484
+ };
403
485
  });
404
486
  }, [debug, columns]);
405
487
 
406
488
  /**
407
489
  * Set up default table options
408
490
  */
409
- var options = {
491
+ const options = {
410
492
  data: rows,
411
493
  columns: _columns,
494
+ defaultColumn: {
495
+ cell: context => {
496
+ return /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Typography, {
497
+ style: {
498
+ overflow: 'hidden',
499
+ whiteSpace: 'nowrap',
500
+ textOverflow: 'ellipsis'
501
+ },
502
+ group: "table",
503
+ variant: "cell_text",
504
+ children: String(context.getValue() ?? '')
505
+ });
506
+ }
507
+ },
412
508
  columnResizeMode: columnResizeMode,
413
509
  state: {
414
- sorting: sorting,
510
+ sorting,
511
+ columnPinning: columnPin,
415
512
  rowSelection: selection,
416
513
  columnOrder: columnOrderState
417
514
  },
418
- onSortingChange: setSorting,
515
+ onSortingChange: changes => {
516
+ if (onSortingChange) {
517
+ onSortingChange(changes);
518
+ }
519
+ setSorting(changes);
520
+ },
419
521
  enableColumnFilters: !!enableColumnFiltering,
420
522
  enableFilters: !!enableColumnFiltering,
421
- enableSorting: enableSorting !== null && enableSorting !== void 0 ? enableSorting : false,
523
+ enableSorting: enableSorting ?? false,
524
+ manualSorting: manualSorting ?? false,
422
525
  enableColumnResizing: !!columnResizeMode,
423
526
  getCoreRowModel: reactTable.getCoreRowModel(),
424
527
  getSortedRowModel: reactTable.getSortedRowModel(),
425
528
  debugTable: debug,
426
529
  debugHeaders: debug,
427
530
  debugColumns: debug,
428
- enableRowSelection: rowSelection !== null && rowSelection !== void 0 ? rowSelection : false
531
+ enableRowSelection: rowSelection ?? false,
532
+ enableColumnPinning: true,
533
+ enablePinning: true,
534
+ getRowId
429
535
  };
430
- react.useEffect(function () {
536
+ react.useEffect(() => {
431
537
  if (columnOrder && columnOrder.length > 0) {
432
- setColumnOrderState(columnOrder !== null && columnOrder !== void 0 ? columnOrder : []);
538
+ setColumnOrderState(columnOrder ?? []);
433
539
  }
434
540
  }, [columnOrder]);
435
541
 
436
542
  /**
437
543
  * Set up handlers for rowSelection
438
544
  */
439
- if (rowSelection !== null && rowSelection !== void 0 ? rowSelection : false) {
440
- options.onRowSelectionChange = function (updaterOrValue) {
545
+ if (rowSelection ?? false) {
546
+ options.onRowSelectionChange = updaterOrValue => {
441
547
  if (onSelectRow) {
442
548
  onSelectRow(updaterOrValue);
443
549
  }
@@ -462,7 +568,7 @@ function EdsDataGrid(_ref) {
462
568
  /**
463
569
  * Set up config for pagination
464
570
  */
465
- if (enablePagination !== null && enablePagination !== void 0 ? enablePagination : false) {
571
+ if (enablePagination ?? false) {
466
572
  options.state.pagination = page;
467
573
  options.getPaginationRowModel = reactTable.getPaginationRowModel();
468
574
  }
@@ -472,8 +578,8 @@ function EdsDataGrid(_ref) {
472
578
  */
473
579
  if (columnVisibility) {
474
580
  options.state.columnVisibility = visible;
475
- options.onColumnVisibilityChange = function (vis) {
476
- var updated;
581
+ options.onColumnVisibilityChange = vis => {
582
+ let updated;
477
583
  if (typeof vis === 'function') {
478
584
  updated = vis(visible);
479
585
  } else {
@@ -483,15 +589,14 @@ function EdsDataGrid(_ref) {
483
589
  setVisible(updated);
484
590
  };
485
591
  }
486
- react.useEffect(function () {
487
- setPage(function (prev) {
488
- return _objectSpread__default.default(_objectSpread__default.default({}, prev), {}, {
489
- pageSize: pageSize !== null && pageSize !== void 0 ? pageSize : 25
490
- });
491
- });
592
+ react.useEffect(() => {
593
+ setPage(prev => ({
594
+ ...prev,
595
+ pageSize: pageSize ?? 25
596
+ }));
492
597
  }, [pageSize]);
493
- var table = reactTable.useReactTable(options);
494
- var parentRefStyle = {};
598
+ const table = reactTable.useReactTable(options);
599
+ let parentRefStyle = {};
495
600
 
496
601
  /**
497
602
  * Style the parent container to enable virtualization.
@@ -499,34 +604,34 @@ function EdsDataGrid(_ref) {
499
604
  */
500
605
  if (enableVirtual) {
501
606
  parentRefStyle = {
502
- height: virtualHeight !== null && virtualHeight !== void 0 ? virtualHeight : 500,
607
+ height: height ?? virtualHeight ?? 500,
503
608
  overflow: 'auto',
504
609
  position: 'relative'
505
610
  };
506
611
  }
507
- var parentRef = react.useRef(null);
612
+ const parentRef = react.useRef(null);
508
613
 
509
614
  /**
510
615
  * Virtualization setup
511
616
  */
512
- var _useEds = edsCoreReact.useEds(),
513
- density = _useEds.density;
514
- var estimateSize = react.useCallback(function () {
617
+ const {
618
+ density
619
+ } = edsCoreReact.useEds();
620
+ const estimateSize = react.useCallback(() => {
515
621
  return density === 'compact' ? 32 : 48;
516
622
  }, [density]);
517
- var virtualizer = reactVirtual.useVirtualizer({
623
+ const virtualizer = reactVirtual.useVirtualizer({
518
624
  count: table.getRowModel().rows.length,
519
- getScrollElement: function getScrollElement() {
520
- return parentRef.current;
521
- },
522
- estimateSize: estimateSize
625
+ getScrollElement: () => parentRef.current,
626
+ estimateSize
523
627
  });
524
- var virtualRows = virtualizer.getVirtualItems();
525
- var paddingTop = virtualRows.length ? virtualRows[0].start : 0;
526
- var paddingBottom = virtualRows.length ? virtualizer.getTotalSize() - virtualRows[virtualRows.length - 1].end : 0;
628
+ if (rowVirtualizerInstanceRef) rowVirtualizerInstanceRef.current = virtualizer;
629
+ const virtualRows = virtualizer.getVirtualItems();
630
+ const paddingTop = virtualRows.length ? virtualRows[0].start : 0;
631
+ const paddingBottom = virtualRows.length ? virtualizer.getTotalSize() - virtualRows[virtualRows.length - 1].end : 0;
527
632
 
528
633
  // These classes are primarily used to allow for feature-detection in the test-suite
529
- var classList = {
634
+ const classList = {
530
635
  'sticky-header': !!stickyHeader,
531
636
  virtual: !!enableVirtual,
532
637
  paging: !!enablePagination
@@ -544,82 +649,82 @@ function EdsDataGrid(_ref) {
544
649
  stickyHeader: !!stickyHeader,
545
650
  children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
546
651
  className: "table-wrapper",
547
- style: parentRefStyle,
652
+ style: {
653
+ height: height ?? 'auto',
654
+ ...parentRefStyle,
655
+ width: scrollbarHorizontal ? width ?? '100%' : 'auto',
656
+ overflow: 'auto',
657
+ contain: 'layout paint style'
658
+ },
548
659
  ref: parentRef,
549
660
  children: [/*#__PURE__*/jsxRuntime.jsxs(edsCoreReact.Table, {
550
- className: Object.entries(classList).filter(function (_ref4) {
551
- var _ref5 = _slicedToArray__default.default(_ref4, 2),
552
- k = _ref5[1];
553
- return k;
554
- }).map(function (_ref6) {
555
- var _ref7 = _slicedToArray__default.default(_ref6, 1),
556
- k = _ref7[0];
557
- return k;
558
- }).join(' '),
661
+ className: Object.entries(classList).filter(([, k]) => k).map(([k]) => k).join(' '),
559
662
  style: {
560
- width: table.getTotalSize()
663
+ tableLayout: scrollbarHorizontal ? 'fixed' : 'auto',
664
+ width: table.getTotalSize(),
665
+ minWidth: scrollbarHorizontal ? minWidth : 'auto'
561
666
  },
562
667
  children: [caption && /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Table.Caption, {
563
668
  children: caption
564
669
  }), /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Table.Head, {
565
670
  sticky: stickyHeader,
566
- children: table.getHeaderGroups().map(function (headerGroup) {
567
- return /*#__PURE__*/jsxRuntime.jsx(TableHeaderRow, {
568
- table: table,
569
- headerGroup: headerGroup,
570
- columnResizeMode: columnResizeMode,
571
- deltaOffset: table.getState().columnSizingInfo.deltaOffset
572
- }, headerGroup.id);
573
- })
671
+ children: table.getHeaderGroups().map(headerGroup => /*#__PURE__*/jsxRuntime.jsx(TableHeaderRow, {
672
+ table: table,
673
+ headerGroup: headerGroup,
674
+ columnResizeMode: columnResizeMode,
675
+ deltaOffset: table.getState().columnSizingInfo.deltaOffset
676
+ }, headerGroup.id))
574
677
  }), /*#__PURE__*/jsxRuntime.jsxs(edsCoreReact.Table.Body, {
678
+ style: {
679
+ backgroundColor: 'inherit'
680
+ },
575
681
  children: [table.getRowModel().rows.length === 0 && emptyMessage && /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Table.Row, {
576
682
  children: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Table.Cell, {
577
- colSpan: table.getHeaderGroups().length,
683
+ colSpan: table.getFlatHeaders().length,
578
684
  children: emptyMessage
579
685
  })
580
686
  }), enableVirtual && /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
581
- children: [/*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Table.Row, {
687
+ children: [paddingTop > 0 && /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Table.Row, {
582
688
  "data-testid": "virtual-padding-top",
583
689
  className: 'virtual-padding-top',
690
+ style: {
691
+ pointerEvents: 'none'
692
+ },
584
693
  children: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Table.Cell, {
585
694
  style: {
586
- height: "".concat(paddingTop, "px")
695
+ height: `${paddingTop}px`
587
696
  }
588
697
  })
589
- }), virtualRows.map(function (row) {
590
- return /*#__PURE__*/jsxRuntime.jsx(TableRow, {
591
- row: table.getRowModel().rows[row.index]
592
- }, row.index);
593
- }), /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Table.Row, {
698
+ }), virtualRows.map(row => /*#__PURE__*/jsxRuntime.jsx(TableRow, {
699
+ row: table.getRowModel().rows[row.index]
700
+ }, row.index)), paddingBottom > 0 && /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Table.Row, {
594
701
  "data-testid": "virtual-padding-bottom",
595
702
  className: 'virtual-padding-bottom',
703
+ style: {
704
+ pointerEvents: 'none'
705
+ },
596
706
  children: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Table.Cell, {
597
707
  style: {
598
- height: "".concat(paddingBottom, "px")
708
+ height: `${paddingBottom}px`
599
709
  }
600
710
  })
601
711
  })]
602
- }), !enableVirtual && table.getRowModel().rows.map(function (row) {
603
- return /*#__PURE__*/jsxRuntime.jsx(TableRow, {
604
- row: row
605
- }, row.id);
606
- })]
712
+ }), !enableVirtual && table.getRowModel().rows.map(row => /*#__PURE__*/jsxRuntime.jsx(TableRow, {
713
+ row: row
714
+ }, row.id))]
607
715
  })]
608
- }), enablePagination && /*#__PURE__*/jsxRuntime.jsx("div", {
716
+ }), externalPaginator ? externalPaginator : enablePagination && /*#__PURE__*/jsxRuntime.jsx("div", {
609
717
  style: {
610
- maxWidth: "".concat(table.getTotalSize(), "px")
718
+ maxWidth: `${table.getTotalSize()}px`
611
719
  },
612
720
  children: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Pagination, {
613
721
  totalItems: table.getFilteredRowModel().rows.length,
614
722
  withItemIndicator: true,
615
723
  itemsPerPage: page.pageSize,
616
- onChange: function onChange(e, p) {
617
- return setPage(function (s) {
618
- return _objectSpread__default.default(_objectSpread__default.default({}, s), {}, {
619
- pageIndex: p - 1
620
- });
621
- });
622
- },
724
+ onChange: (e, p) => setPage(s => ({
725
+ ...s,
726
+ pageIndex: p - 1
727
+ })),
623
728
  defaultPage: 1
624
729
  })
625
730
  })]