@equinor/eds-data-grid-react 0.1.0-beta.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/eds-data-grid-react.cjs +318 -127
- package/dist/esm/EdsDataGrid.js +66 -30
- package/dist/esm/components/DebouncedInput.js +62 -28
- package/dist/esm/components/Filter.js +111 -35
- package/dist/esm/components/TableBodyCell.js +34 -6
- package/dist/esm/components/TableHeaderCell.js +58 -32
- package/dist/types/EdsDataGrid.d.ts +2 -133
- package/dist/types/EdsDataGridContext.d.ts +1 -1
- package/dist/types/EdsDataGridProps.d.ts +182 -0
- package/dist/types/components/DebouncedInput.d.ts +3 -2
- package/dist/types/components/Filter.d.ts +1 -1
- package/dist/types/components/TableBodyCell.d.ts +1 -1
- package/dist/types/components/TableHeaderCell.d.ts +1 -1
- package/dist/types/components/TableHeaderRow.d.ts +1 -1
- package/dist/types/components/TableRow.d.ts +1 -1
- package/dist/types/index.d.ts +1 -0
- package/package.json +46 -48
|
@@ -39,15 +39,16 @@ var useTableContext = function useTableContext() {
|
|
|
39
39
|
return react.useContext(EdsDataGridContext);
|
|
40
40
|
};
|
|
41
41
|
|
|
42
|
-
var _excluded = ["value", "values", "onChange", "debounce"];
|
|
42
|
+
var _excluded = ["value", "values", "onChange", "debounce", "label"];
|
|
43
43
|
// File ignored, as relevant actions are covered via Filter.test.tsx
|
|
44
44
|
function DebouncedInput(_ref) {
|
|
45
|
-
var _props$placeholder
|
|
45
|
+
var _props$placeholder;
|
|
46
46
|
var initialValue = _ref.value,
|
|
47
47
|
values = _ref.values,
|
|
48
48
|
onChange = _ref.onChange,
|
|
49
49
|
_ref$debounce = _ref.debounce,
|
|
50
50
|
debounce = _ref$debounce === void 0 ? 500 : _ref$debounce,
|
|
51
|
+
label = _ref.label,
|
|
51
52
|
props = _objectWithoutProperties__default.default(_ref, _excluded);
|
|
52
53
|
var _useState = react.useState(initialValue),
|
|
53
54
|
_useState2 = _slicedToArray__default.default(_useState, 2),
|
|
@@ -65,41 +66,101 @@ function DebouncedInput(_ref) {
|
|
|
65
66
|
};
|
|
66
67
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
67
68
|
}, [value]);
|
|
68
|
-
return /*#__PURE__*/jsxRuntime.jsx(
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
69
|
+
return /*#__PURE__*/jsxRuntime.jsx(jsxRuntime.Fragment, {
|
|
70
|
+
children: props.type === 'number' ? /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.InputWrapper, {
|
|
71
|
+
label: props.placeholder,
|
|
72
|
+
children: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Input, {
|
|
73
|
+
type: 'number',
|
|
74
|
+
placeholder: '0',
|
|
75
|
+
value: value,
|
|
76
|
+
onChange: function onChange(e) {
|
|
77
|
+
return setValue(e.target.valueAsNumber);
|
|
78
|
+
}
|
|
79
|
+
})
|
|
80
|
+
}) : /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
81
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Autocomplete, {
|
|
82
|
+
options: values,
|
|
83
|
+
autoWidth: true,
|
|
84
|
+
multiple: true,
|
|
85
|
+
optionComponent: function optionComponent(opt) {
|
|
86
|
+
return opt === 'NULL_OR_UNDEFINED' ? '<Blank>' : opt;
|
|
87
|
+
},
|
|
88
|
+
"data-testid": 'autocomplete'
|
|
89
|
+
/* eslint-disable-next-line @typescript-eslint/ban-ts-comment */,
|
|
90
|
+
label: "Select ".concat(label !== null && label !== void 0 ? label : ''),
|
|
91
|
+
placeholder: (_props$placeholder = props.placeholder) !== null && _props$placeholder !== void 0 ? _props$placeholder : 'Search',
|
|
92
|
+
disablePortal: false /*TODO: Check with Oddbjørn re. sizing/position*/,
|
|
93
|
+
|
|
94
|
+
selectedOptions: value,
|
|
95
|
+
onOptionsChange: function onOptionsChange(c) {
|
|
96
|
+
return setValue(c.selectedItems);
|
|
97
|
+
}
|
|
98
|
+
}), /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
99
|
+
style: {
|
|
100
|
+
display: 'flex',
|
|
101
|
+
flexWrap: 'wrap',
|
|
102
|
+
marginTop: '8px'
|
|
103
|
+
},
|
|
104
|
+
children: value.map(function (v) {
|
|
105
|
+
return /*#__PURE__*/jsxRuntime.jsxs(edsCoreReact.Chip, {
|
|
106
|
+
title: v,
|
|
107
|
+
onKeyDownCapture: function onKeyDownCapture(event) {
|
|
108
|
+
if (['Backspace', 'Delete'].includes(event.key)) {
|
|
109
|
+
onChange(value.filter(function (item) {
|
|
110
|
+
return item !== v;
|
|
111
|
+
}));
|
|
112
|
+
}
|
|
113
|
+
},
|
|
114
|
+
style: {
|
|
115
|
+
margin: '4px'
|
|
116
|
+
},
|
|
117
|
+
onDelete: function onDelete() {
|
|
118
|
+
return onChange(value.filter(function (item) {
|
|
119
|
+
return item !== v;
|
|
120
|
+
}));
|
|
121
|
+
},
|
|
122
|
+
children: [v.slice(0, 20), v.length > 20 ? '...' : '']
|
|
123
|
+
}, v);
|
|
124
|
+
})
|
|
125
|
+
})]
|
|
92
126
|
})
|
|
93
127
|
});
|
|
94
128
|
}
|
|
95
129
|
|
|
96
|
-
|
|
97
|
-
|
|
130
|
+
var NumberContainer = styled__default.default.div.withConfig({
|
|
131
|
+
displayName: "Filter__NumberContainer",
|
|
132
|
+
componentId: "sc-ytpdpw-0"
|
|
133
|
+
})(["display:grid;grid-template-columns:80px 80px;grid-column-gap:32px;"]);
|
|
98
134
|
function Filter(_ref) {
|
|
99
135
|
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
136
|
var column = _ref.column,
|
|
101
137
|
table = _ref.table;
|
|
102
138
|
var firstValue = (_table$getPreFiltered = table.getPreFilteredRowModel().flatRows[0]) === null || _table$getPreFiltered === void 0 ? void 0 : _table$getPreFiltered.getValue(column.id);
|
|
139
|
+
var _useState = react.useState(false),
|
|
140
|
+
_useState2 = _slicedToArray__default.default(_useState, 2),
|
|
141
|
+
open = _useState2[0],
|
|
142
|
+
setOpen = _useState2[1];
|
|
143
|
+
var filterIconRef = react.useRef();
|
|
144
|
+
var togglePopover = function togglePopover(event) {
|
|
145
|
+
event.stopPropagation();
|
|
146
|
+
setOpen(!open);
|
|
147
|
+
};
|
|
148
|
+
var columnText = react.useMemo(function () {
|
|
149
|
+
var header;
|
|
150
|
+
try {
|
|
151
|
+
if (typeof column.columnDef.header === 'function') {
|
|
152
|
+
var obj = column.columnDef.header(
|
|
153
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any,@typescript-eslint/no-unsafe-argument
|
|
154
|
+
{});
|
|
155
|
+
header = obj.props.children;
|
|
156
|
+
} else {
|
|
157
|
+
header = column.columnDef.header;
|
|
158
|
+
}
|
|
159
|
+
} catch (_unused) {
|
|
160
|
+
/*em all*/
|
|
161
|
+
}
|
|
162
|
+
return header;
|
|
163
|
+
}, [column.columnDef]);
|
|
103
164
|
var columnFilterValue = column.getFilterValue();
|
|
104
165
|
var sortedUniqueValues = react.useMemo(function () {
|
|
105
166
|
return typeof firstValue === 'number' ? [] : Array.from(column.getFacetedUniqueValues().keys()).sort().map(function (v) {
|
|
@@ -108,41 +169,85 @@ function Filter(_ref) {
|
|
|
108
169
|
},
|
|
109
170
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
110
171
|
[column.getFacetedUniqueValues()]);
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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]];
|
|
172
|
+
var hasActiveFilters = function hasActiveFilters(value) {
|
|
173
|
+
if (Array.isArray(value)) {
|
|
174
|
+
if (typeof firstValue === 'number') {
|
|
175
|
+
return value.some(function (v) {
|
|
176
|
+
return !isNaN(v) && !!v;
|
|
121
177
|
});
|
|
178
|
+
} else {
|
|
179
|
+
return value.filter(function (v) {
|
|
180
|
+
return !!v;
|
|
181
|
+
}).length > 0;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return value;
|
|
185
|
+
};
|
|
186
|
+
return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
187
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Button, {
|
|
188
|
+
"aria-haspopup": true,
|
|
189
|
+
"aria-expanded": open,
|
|
190
|
+
"data-testid": 'open-filters',
|
|
191
|
+
ref: filterIconRef,
|
|
192
|
+
onClick: togglePopover,
|
|
193
|
+
variant: 'ghost_icon',
|
|
194
|
+
children: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Icon, {
|
|
195
|
+
color: edsTokens.tokens.colors.text.static_icons__default.hex,
|
|
196
|
+
data: hasActiveFilters(columnFilterValue) ? edsIcons.filter_alt_active : edsIcons.filter_alt
|
|
197
|
+
})
|
|
198
|
+
}), /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Popover, {
|
|
199
|
+
style: {
|
|
200
|
+
width: typeof firstValue === 'number' ? '220px' : '340px'
|
|
122
201
|
},
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
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
|
-
});
|
|
202
|
+
anchorEl: filterIconRef.current,
|
|
203
|
+
open: open,
|
|
204
|
+
onClose: function onClose() {
|
|
205
|
+
return setOpen(false);
|
|
134
206
|
},
|
|
135
|
-
|
|
207
|
+
children: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Popover.Content, {
|
|
208
|
+
style: {
|
|
209
|
+
width: typeof firstValue === 'number' ? '180px' : '310px'
|
|
210
|
+
},
|
|
211
|
+
children: typeof firstValue === 'number' ? /*#__PURE__*/jsxRuntime.jsxs(NumberContainer, {
|
|
212
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(DebouncedInput, {
|
|
213
|
+
type: "number",
|
|
214
|
+
values: sortedUniqueValues,
|
|
215
|
+
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 : ''),
|
|
216
|
+
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 : ''),
|
|
217
|
+
value: (_ = columnFilterValue === null || columnFilterValue === void 0 ? void 0 : columnFilterValue[0]) !== null && _ !== void 0 ? _ : '',
|
|
218
|
+
onChange: function onChange(value) {
|
|
219
|
+
return column.setFilterValue(function (old) {
|
|
220
|
+
return [value, old === null || old === void 0 ? void 0 : old[1]];
|
|
221
|
+
});
|
|
222
|
+
},
|
|
223
|
+
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], ")") : '')
|
|
224
|
+
}), /*#__PURE__*/jsxRuntime.jsx(DebouncedInput, {
|
|
225
|
+
type: "number",
|
|
226
|
+
values: sortedUniqueValues,
|
|
227
|
+
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 : ''),
|
|
228
|
+
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 : ''),
|
|
229
|
+
value: (_2 = columnFilterValue === null || columnFilterValue === void 0 ? void 0 : columnFilterValue[1]) !== null && _2 !== void 0 ? _2 : '',
|
|
230
|
+
onChange: function onChange(value) {
|
|
231
|
+
return column.setFilterValue(function (old) {
|
|
232
|
+
return [old === null || old === void 0 ? void 0 : old[0], value];
|
|
233
|
+
});
|
|
234
|
+
},
|
|
235
|
+
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], ")") : '')
|
|
236
|
+
})]
|
|
237
|
+
}) : /*#__PURE__*/jsxRuntime.jsx(DebouncedInput, {
|
|
238
|
+
type: "text",
|
|
239
|
+
label: columnText,
|
|
240
|
+
values: sortedUniqueValues,
|
|
241
|
+
debounce: 100,
|
|
242
|
+
value: columnFilterValue !== null && columnFilterValue !== void 0 ? columnFilterValue : [],
|
|
243
|
+
onChange: function onChange(value) {
|
|
244
|
+
return column.setFilterValue(value);
|
|
245
|
+
},
|
|
246
|
+
placeholder: "".concat((columnFilterValue !== null && columnFilterValue !== void 0 ? columnFilterValue : []).length, " / ").concat(column.getFacetedUniqueValues().size, " selected"),
|
|
247
|
+
list: column.id + 'list'
|
|
248
|
+
})
|
|
249
|
+
})
|
|
136
250
|
})]
|
|
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
251
|
});
|
|
147
252
|
}
|
|
148
253
|
|
|
@@ -152,33 +257,57 @@ var getSortLabel = function getSortLabel(sorted) {
|
|
|
152
257
|
}
|
|
153
258
|
return 'none';
|
|
154
259
|
};
|
|
260
|
+
var ResizeInner = styled__default.default.div.withConfig({
|
|
261
|
+
displayName: "TableHeaderCell__ResizeInner",
|
|
262
|
+
componentId: "sc-1n0j3v0-0"
|
|
263
|
+
})(["width:2px;opacity:0;height:100%;"]);
|
|
155
264
|
var Resizer = styled__default.default.div.withConfig({
|
|
156
265
|
displayName: "TableHeaderCell__Resizer",
|
|
157
|
-
componentId: "sc-1n0j3v0-
|
|
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
|
|
160
|
-
}, function (props) {
|
|
161
|
-
return props
|
|
266
|
+
componentId: "sc-1n0j3v0-1"
|
|
267
|
+
})(["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;"], function (props) {
|
|
268
|
+
return props.$columnResizeMode === 'onEnd' ? 'translateX(0px)' : 'none';
|
|
269
|
+
}, ResizeInner, function (props) {
|
|
270
|
+
return props.$isResizing ? 1 : 0;
|
|
162
271
|
});
|
|
163
272
|
var Cell = styled__default.default(edsCoreReact.Table.Cell).withConfig({
|
|
164
273
|
displayName: "TableHeaderCell__Cell",
|
|
165
|
-
componentId: "sc-1n0j3v0-
|
|
166
|
-
})(["font-weight:bold;height:30px;position:", ";&:hover ", "{background:", ";opacity:1;}"], function (p) {
|
|
167
|
-
return p
|
|
168
|
-
},
|
|
274
|
+
componentId: "sc-1n0j3v0-2"
|
|
275
|
+
})(["font-weight:bold;height:30px;position:", ";top:0;", " z-index:", ";&:hover ", "{background:", ";opacity:1;}"], function (p) {
|
|
276
|
+
return p.$sticky || p.$pinned ? 'sticky' : 'relative';
|
|
277
|
+
}, function (p) {
|
|
278
|
+
if (p.$pinned) {
|
|
279
|
+
return "".concat(p.$pinned, ": ").concat(p.$offset, "px;");
|
|
280
|
+
}
|
|
281
|
+
return '';
|
|
282
|
+
}, function (p) {
|
|
283
|
+
if (p.$sticky && p.$pinned) return 13;
|
|
284
|
+
if (p.$sticky || p.$pinned) return 12;
|
|
285
|
+
return 'auto';
|
|
286
|
+
}, ResizeInner, edsTokens.tokens.colors.interactive.primary__hover.rgba);
|
|
169
287
|
function TableHeaderCell(_ref) {
|
|
170
288
|
var _asc$desc;
|
|
171
289
|
var header = _ref.header,
|
|
172
290
|
columnResizeMode = _ref.columnResizeMode;
|
|
173
291
|
var ctx = useTableContext();
|
|
174
292
|
var table = ctx.table;
|
|
293
|
+
var pinned = header.column.getIsPinned();
|
|
294
|
+
var offset = react.useMemo(function () {
|
|
295
|
+
if (!pinned) {
|
|
296
|
+
return null;
|
|
297
|
+
}
|
|
298
|
+
return pinned === 'left' ? header.getStart() : table.getTotalSize() - header.getStart() - header.getSize();
|
|
299
|
+
}, [pinned, header, table]);
|
|
175
300
|
return header.isPlaceholder ? /*#__PURE__*/jsxRuntime.jsx(Cell, {
|
|
176
|
-
sticky: ctx.stickyHeader,
|
|
301
|
+
$sticky: ctx.stickyHeader,
|
|
302
|
+
$offset: offset,
|
|
303
|
+
$pinned: pinned,
|
|
177
304
|
className: ctx.headerClass ? ctx.headerClass(header.column) : '',
|
|
178
|
-
style: ctx.headerStyle ? ctx.headerStyle(header.column) : {},
|
|
305
|
+
style: _objectSpread__default.default({}, ctx.headerStyle ? ctx.headerStyle(header.column) : {}),
|
|
179
306
|
"aria-hidden": true
|
|
180
307
|
}) : /*#__PURE__*/jsxRuntime.jsxs(Cell, {
|
|
181
|
-
sticky: ctx.stickyHeader,
|
|
308
|
+
$sticky: ctx.stickyHeader,
|
|
309
|
+
$offset: offset,
|
|
310
|
+
$pinned: pinned,
|
|
182
311
|
className: ctx.headerClass ? ctx.headerClass(header.column) : '',
|
|
183
312
|
"aria-sort": getSortLabel(header.column.getIsSorted()),
|
|
184
313
|
onClick: header.column.getToggleSortingHandler(),
|
|
@@ -186,30 +315,18 @@ function TableHeaderCell(_ref) {
|
|
|
186
315
|
colSpan: header.colSpan,
|
|
187
316
|
style: _objectSpread__default.default({
|
|
188
317
|
width: header.getSize(),
|
|
189
|
-
verticalAlign: ctx.enableColumnFiltering ? '
|
|
318
|
+
verticalAlign: ctx.enableColumnFiltering ? 'top' : 'middle'
|
|
190
319
|
}, ctx.headerStyle ? ctx.headerStyle(header.column) : {}),
|
|
191
320
|
children: [/*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
192
|
-
children: [/*#__PURE__*/jsxRuntime.
|
|
321
|
+
children: [/*#__PURE__*/jsxRuntime.jsx("div", {
|
|
193
322
|
style: {
|
|
194
323
|
display: 'flex',
|
|
195
324
|
flexDirection: 'column'
|
|
196
325
|
},
|
|
197
|
-
children:
|
|
326
|
+
children: /*#__PURE__*/jsxRuntime.jsx("span", {
|
|
198
327
|
className: "table-header-cell-label",
|
|
199
328
|
children: reactTable.flexRender(header.column.columnDef.header, header.getContext())
|
|
200
|
-
})
|
|
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]
|
|
329
|
+
})
|
|
213
330
|
}), (_asc$desc = {
|
|
214
331
|
asc: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Icon, {
|
|
215
332
|
data: edsIcons.arrow_up
|
|
@@ -217,17 +334,30 @@ function TableHeaderCell(_ref) {
|
|
|
217
334
|
desc: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Icon, {
|
|
218
335
|
data: edsIcons.arrow_down
|
|
219
336
|
})
|
|
220
|
-
}[header.column.getIsSorted()]) !== null && _asc$desc !== void 0 ? _asc$desc : null
|
|
337
|
+
}[header.column.getIsSorted()]) !== null && _asc$desc !== void 0 ? _asc$desc : null, header.column.getCanFilter() ?
|
|
338
|
+
|
|
339
|
+
// Supressing this warning - div is not interactive, but prevents propagation of events to avoid unintended sorting
|
|
340
|
+
// eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions
|
|
341
|
+
jsxRuntime.jsx("div", {
|
|
342
|
+
onClick: function onClick(e) {
|
|
343
|
+
return e.stopPropagation();
|
|
344
|
+
},
|
|
345
|
+
children: /*#__PURE__*/jsxRuntime.jsx(Filter, {
|
|
346
|
+
column: header.column,
|
|
347
|
+
table: table
|
|
348
|
+
})
|
|
349
|
+
}) : null]
|
|
221
350
|
}), columnResizeMode && /*#__PURE__*/jsxRuntime.jsx(Resizer, {
|
|
222
351
|
onClick: function onClick(e) {
|
|
223
352
|
return e.stopPropagation();
|
|
224
353
|
},
|
|
225
354
|
onMouseDown: header.getResizeHandler(),
|
|
226
355
|
onTouchStart: header.getResizeHandler(),
|
|
227
|
-
isResizing: header.column.getIsResizing(),
|
|
228
|
-
columnResizeMode: columnResizeMode,
|
|
356
|
+
$isResizing: header.column.getIsResizing(),
|
|
357
|
+
$columnResizeMode: columnResizeMode,
|
|
229
358
|
className: 'resize-handle',
|
|
230
|
-
"data-testid": 'resize-handle'
|
|
359
|
+
"data-testid": 'resize-handle',
|
|
360
|
+
children: /*#__PURE__*/jsxRuntime.jsx(ResizeInner, {})
|
|
231
361
|
})]
|
|
232
362
|
});
|
|
233
363
|
}
|
|
@@ -249,21 +379,46 @@ function TableHeaderRow(_ref) {
|
|
|
249
379
|
});
|
|
250
380
|
}
|
|
251
381
|
|
|
382
|
+
var StyledCell = styled__default.default(edsCoreReact.Table.Cell).withConfig({
|
|
383
|
+
displayName: "TableBodyCell__StyledCell",
|
|
384
|
+
componentId: "sc-1gsd2k4-0"
|
|
385
|
+
})(["position:", ";", " z-index:", ";background-color:", ";overflow:hidden;white-space:nowrap;text-overflow:ellipsis;"], function (p) {
|
|
386
|
+
return p.$pinned ? 'sticky' : 'relative';
|
|
387
|
+
}, function (p) {
|
|
388
|
+
if (p.$pinned) {
|
|
389
|
+
return "".concat(p.$pinned, ": ").concat(p.$offset, "px;");
|
|
390
|
+
}
|
|
391
|
+
return '';
|
|
392
|
+
}, function (p) {
|
|
393
|
+
return p.$pinned ? 11 : 'auto';
|
|
394
|
+
}, function (p) {
|
|
395
|
+
return p.$pinned ? edsTokens.tokens.colors.ui.background__default.hex : 'inherit';
|
|
396
|
+
});
|
|
252
397
|
function TableBodyCell(_ref) {
|
|
253
398
|
var _cellStyle;
|
|
254
399
|
var cell = _ref.cell;
|
|
255
400
|
var _useTableContext = useTableContext(),
|
|
256
401
|
cellClass = _useTableContext.cellClass,
|
|
257
|
-
cellStyle = _useTableContext.cellStyle
|
|
258
|
-
|
|
402
|
+
cellStyle = _useTableContext.cellStyle,
|
|
403
|
+
table = _useTableContext.table;
|
|
404
|
+
var pinned = cell.column.getIsPinned();
|
|
405
|
+
var pinnedOffset = react.useMemo(function () {
|
|
406
|
+
if (!pinned) {
|
|
407
|
+
return 0;
|
|
408
|
+
}
|
|
409
|
+
var header = table.getFlatHeaders().find(function (h) {
|
|
410
|
+
return h.id === cell.column.id;
|
|
411
|
+
});
|
|
412
|
+
return pinned === 'left' ? header.getStart() : table.getTotalSize() - header.getStart() - cell.column.getSize();
|
|
413
|
+
}, [pinned, cell.column, table]);
|
|
414
|
+
return /*#__PURE__*/jsxRuntime.jsx(StyledCell, {
|
|
415
|
+
$pinned: pinned,
|
|
416
|
+
$offset: pinnedOffset,
|
|
259
417
|
className: cellClass ? cellClass(cell.row, cell.column.id) : '',
|
|
260
418
|
key: cell.id,
|
|
261
419
|
style: _objectSpread__default.default({
|
|
262
420
|
width: cell.column.getSize(),
|
|
263
|
-
maxWidth: cell.column.getSize()
|
|
264
|
-
overflow: 'hidden',
|
|
265
|
-
whiteSpace: 'nowrap',
|
|
266
|
-
textOverflow: 'ellipsis'
|
|
421
|
+
maxWidth: cell.column.getSize()
|
|
267
422
|
}, (_cellStyle = cellStyle === null || cellStyle === void 0 ? void 0 : cellStyle(cell.row, cell.column.id)) !== null && _cellStyle !== void 0 ? _cellStyle : {}),
|
|
268
423
|
children: /*#__PURE__*/jsxRuntime.jsx(edsCoreReact.Typography, {
|
|
269
424
|
as: "span",
|
|
@@ -321,8 +476,16 @@ function EdsDataGrid(_ref) {
|
|
|
321
476
|
rowClass = _ref.rowClass,
|
|
322
477
|
rowStyle = _ref.rowStyle,
|
|
323
478
|
headerClass = _ref.headerClass,
|
|
324
|
-
headerStyle = _ref.headerStyle
|
|
325
|
-
|
|
479
|
+
headerStyle = _ref.headerStyle,
|
|
480
|
+
externalPaginator = _ref.externalPaginator,
|
|
481
|
+
_onSortingChange = _ref.onSortingChange,
|
|
482
|
+
manualSorting = _ref.manualSorting,
|
|
483
|
+
sortingState = _ref.sortingState,
|
|
484
|
+
columnPinState = _ref.columnPinState,
|
|
485
|
+
scrollbarHorizontal = _ref.scrollbarHorizontal,
|
|
486
|
+
width = _ref.width,
|
|
487
|
+
height = _ref.height;
|
|
488
|
+
var _useState = react.useState(sortingState !== null && sortingState !== void 0 ? sortingState : []),
|
|
326
489
|
_useState2 = _slicedToArray__default.default(_useState, 2),
|
|
327
490
|
sorting = _useState2[0],
|
|
328
491
|
setSorting = _useState2[1];
|
|
@@ -330,32 +493,44 @@ function EdsDataGrid(_ref) {
|
|
|
330
493
|
_useState4 = _slicedToArray__default.default(_useState3, 2),
|
|
331
494
|
selection = _useState4[0],
|
|
332
495
|
setSelection = _useState4[1];
|
|
333
|
-
var _useState5 = react.useState(
|
|
496
|
+
var _useState5 = react.useState(columnPinState !== null && columnPinState !== void 0 ? columnPinState : {}),
|
|
334
497
|
_useState6 = _slicedToArray__default.default(_useState5, 2),
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
var _useState7 = react.useState(
|
|
498
|
+
columnPin = _useState6[0],
|
|
499
|
+
setColumnPin = _useState6[1];
|
|
500
|
+
var _useState7 = react.useState([]),
|
|
338
501
|
_useState8 = _slicedToArray__default.default(_useState7, 2),
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
var _useState9 = react.useState(
|
|
502
|
+
columnFilters = _useState8[0],
|
|
503
|
+
setColumnFilters = _useState8[1];
|
|
504
|
+
var _useState9 = react.useState(columnVisibility !== null && columnVisibility !== void 0 ? columnVisibility : {}),
|
|
342
505
|
_useState10 = _slicedToArray__default.default(_useState9, 2),
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
var _useState11 = react.useState(
|
|
506
|
+
visible = _useState10[0],
|
|
507
|
+
setVisible = _useState10[1];
|
|
508
|
+
var _useState11 = react.useState(''),
|
|
346
509
|
_useState12 = _slicedToArray__default.default(_useState11, 2),
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
var _useState13 = react.useState(
|
|
510
|
+
globalFilter = _useState12[0],
|
|
511
|
+
setGlobalFilter = _useState12[1];
|
|
512
|
+
var _useState13 = react.useState([]),
|
|
513
|
+
_useState14 = _slicedToArray__default.default(_useState13, 2),
|
|
514
|
+
columnOrderState = _useState14[0],
|
|
515
|
+
setColumnOrderState = _useState14[1];
|
|
516
|
+
var _useState15 = react.useState({
|
|
350
517
|
pageIndex: 0,
|
|
351
518
|
pageSize: pageSize !== null && pageSize !== void 0 ? pageSize : 25
|
|
352
519
|
}),
|
|
353
|
-
|
|
354
|
-
page =
|
|
355
|
-
setPage =
|
|
520
|
+
_useState16 = _slicedToArray__default.default(_useState15, 2),
|
|
521
|
+
page = _useState16[0],
|
|
522
|
+
setPage = _useState16[1];
|
|
356
523
|
react.useEffect(function () {
|
|
357
524
|
setVisible(columnVisibility !== null && columnVisibility !== void 0 ? columnVisibility : {});
|
|
358
525
|
}, [columnVisibility, setVisible]);
|
|
526
|
+
react.useEffect(function () {
|
|
527
|
+
setColumnPin(function (s) {
|
|
528
|
+
return columnPinState !== null && columnPinState !== void 0 ? columnPinState : s;
|
|
529
|
+
});
|
|
530
|
+
}, [columnPinState]);
|
|
531
|
+
react.useEffect(function () {
|
|
532
|
+
setSorting(sortingState);
|
|
533
|
+
}, [sortingState]);
|
|
359
534
|
react.useEffect(function () {
|
|
360
535
|
setSelection(selectedRows !== null && selectedRows !== void 0 ? selectedRows : {});
|
|
361
536
|
}, [selectedRows]);
|
|
@@ -388,7 +563,7 @@ function EdsDataGrid(_ref) {
|
|
|
388
563
|
_ref3 = _slicedToArray__default.default(_ref2, 2),
|
|
389
564
|
start = _ref3[0],
|
|
390
565
|
end = _ref3[1];
|
|
391
|
-
return value >= (isNaN(start) ? 0 : start) && value <= (!end || isNaN(end) ? Infinity : end);
|
|
566
|
+
return Number(value) >= (isNaN(start) ? 0 : start) && Number(value) <= (!end || isNaN(end) ? Infinity : end);
|
|
392
567
|
} else {
|
|
393
568
|
var validFilterValue = filterValue.filter(function (v) {
|
|
394
569
|
return !!v;
|
|
@@ -412,20 +587,29 @@ function EdsDataGrid(_ref) {
|
|
|
412
587
|
columnResizeMode: columnResizeMode,
|
|
413
588
|
state: {
|
|
414
589
|
sorting: sorting,
|
|
590
|
+
columnPinning: columnPin,
|
|
415
591
|
rowSelection: selection,
|
|
416
592
|
columnOrder: columnOrderState
|
|
417
593
|
},
|
|
418
|
-
onSortingChange:
|
|
594
|
+
onSortingChange: function onSortingChange(changes) {
|
|
595
|
+
if (_onSortingChange) {
|
|
596
|
+
_onSortingChange(changes);
|
|
597
|
+
}
|
|
598
|
+
setSorting(changes);
|
|
599
|
+
},
|
|
419
600
|
enableColumnFilters: !!enableColumnFiltering,
|
|
420
601
|
enableFilters: !!enableColumnFiltering,
|
|
421
602
|
enableSorting: enableSorting !== null && enableSorting !== void 0 ? enableSorting : false,
|
|
603
|
+
manualSorting: manualSorting !== null && manualSorting !== void 0 ? manualSorting : false,
|
|
422
604
|
enableColumnResizing: !!columnResizeMode,
|
|
423
605
|
getCoreRowModel: reactTable.getCoreRowModel(),
|
|
424
606
|
getSortedRowModel: reactTable.getSortedRowModel(),
|
|
425
607
|
debugTable: debug,
|
|
426
608
|
debugHeaders: debug,
|
|
427
609
|
debugColumns: debug,
|
|
428
|
-
enableRowSelection: rowSelection !== null && rowSelection !== void 0 ? rowSelection : false
|
|
610
|
+
enableRowSelection: rowSelection !== null && rowSelection !== void 0 ? rowSelection : false,
|
|
611
|
+
enableColumnPinning: true,
|
|
612
|
+
enablePinning: true
|
|
429
613
|
};
|
|
430
614
|
react.useEffect(function () {
|
|
431
615
|
if (columnOrder && columnOrder.length > 0) {
|
|
@@ -498,8 +682,9 @@ function EdsDataGrid(_ref) {
|
|
|
498
682
|
* By not setting this, the virtual-scroll will always render every row, reducing computational overhead if turned off.
|
|
499
683
|
*/
|
|
500
684
|
if (enableVirtual) {
|
|
685
|
+
var _ref4;
|
|
501
686
|
parentRefStyle = {
|
|
502
|
-
height:
|
|
687
|
+
height: (_ref4 = height !== null && height !== void 0 ? height : virtualHeight) !== null && _ref4 !== void 0 ? _ref4 : 500,
|
|
503
688
|
overflow: 'auto',
|
|
504
689
|
position: 'relative'
|
|
505
690
|
};
|
|
@@ -544,16 +729,22 @@ function EdsDataGrid(_ref) {
|
|
|
544
729
|
stickyHeader: !!stickyHeader,
|
|
545
730
|
children: [/*#__PURE__*/jsxRuntime.jsxs("div", {
|
|
546
731
|
className: "table-wrapper",
|
|
547
|
-
style:
|
|
732
|
+
style: _objectSpread__default.default(_objectSpread__default.default({
|
|
733
|
+
height: height !== null && height !== void 0 ? height : 'auto'
|
|
734
|
+
}, parentRefStyle), {}, {
|
|
735
|
+
width: scrollbarHorizontal ? width : 'auto',
|
|
736
|
+
tableLayout: scrollbarHorizontal ? 'fixed' : 'auto',
|
|
737
|
+
overflow: 'auto'
|
|
738
|
+
}),
|
|
548
739
|
ref: parentRef,
|
|
549
740
|
children: [/*#__PURE__*/jsxRuntime.jsxs(edsCoreReact.Table, {
|
|
550
|
-
className: Object.entries(classList).filter(function (
|
|
551
|
-
var
|
|
552
|
-
k =
|
|
741
|
+
className: Object.entries(classList).filter(function (_ref5) {
|
|
742
|
+
var _ref6 = _slicedToArray__default.default(_ref5, 2),
|
|
743
|
+
k = _ref6[1];
|
|
553
744
|
return k;
|
|
554
|
-
}).map(function (
|
|
555
|
-
var
|
|
556
|
-
k =
|
|
745
|
+
}).map(function (_ref7) {
|
|
746
|
+
var _ref8 = _slicedToArray__default.default(_ref7, 1),
|
|
747
|
+
k = _ref8[0];
|
|
557
748
|
return k;
|
|
558
749
|
}).join(' '),
|
|
559
750
|
style: {
|
|
@@ -605,7 +796,7 @@ function EdsDataGrid(_ref) {
|
|
|
605
796
|
}, row.id);
|
|
606
797
|
})]
|
|
607
798
|
})]
|
|
608
|
-
}), enablePagination && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
799
|
+
}), externalPaginator ? externalPaginator : enablePagination && /*#__PURE__*/jsxRuntime.jsx("div", {
|
|
609
800
|
style: {
|
|
610
801
|
maxWidth: "".concat(table.getTotalSize(), "px")
|
|
611
802
|
},
|