@entur/table 4.5.29 → 4.5.30
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/CHANGELOG.md +544 -0
- package/dist/styles.css +7 -7
- package/dist/table.cjs.development.js +113 -65
- package/dist/table.cjs.development.js.map +1 -1
- package/dist/table.cjs.production.min.js +1 -1
- package/dist/table.cjs.production.min.js.map +1 -1
- package/dist/table.esm.js +113 -65
- package/dist/table.esm.js.map +1 -1
- package/package.json +11 -16
|
@@ -22,42 +22,46 @@ function _extends() {
|
|
|
22
22
|
_extends = Object.assign || function (target) {
|
|
23
23
|
for (var i = 1; i < arguments.length; i++) {
|
|
24
24
|
var source = arguments[i];
|
|
25
|
+
|
|
25
26
|
for (var key in source) {
|
|
26
27
|
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
27
28
|
target[key] = source[key];
|
|
28
29
|
}
|
|
29
30
|
}
|
|
30
31
|
}
|
|
32
|
+
|
|
31
33
|
return target;
|
|
32
34
|
};
|
|
35
|
+
|
|
33
36
|
return _extends.apply(this, arguments);
|
|
34
37
|
}
|
|
35
|
-
|
|
36
|
-
if (obj == null) throw new TypeError("Cannot destructure undefined");
|
|
37
|
-
}
|
|
38
|
+
|
|
38
39
|
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
39
40
|
if (source == null) return {};
|
|
40
41
|
var target = {};
|
|
41
42
|
var sourceKeys = Object.keys(source);
|
|
42
43
|
var key, i;
|
|
44
|
+
|
|
43
45
|
for (i = 0; i < sourceKeys.length; i++) {
|
|
44
46
|
key = sourceKeys[i];
|
|
45
47
|
if (excluded.indexOf(key) >= 0) continue;
|
|
46
48
|
target[key] = source[key];
|
|
47
49
|
}
|
|
50
|
+
|
|
48
51
|
return target;
|
|
49
52
|
}
|
|
50
53
|
|
|
51
54
|
var _excluded$8 = ["className", "fixed", "spacing", "sortable"];
|
|
52
55
|
var Table = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
53
56
|
var className = _ref.className,
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
_ref$fixed = _ref.fixed,
|
|
58
|
+
fixed = _ref$fixed === void 0 ? false : _ref$fixed,
|
|
59
|
+
_ref$spacing = _ref.spacing,
|
|
60
|
+
spacing = _ref$spacing === void 0 ? 'default' : _ref$spacing,
|
|
61
|
+
_ref$sortable = _ref.sortable,
|
|
62
|
+
sortable = _ref$sortable === void 0 ? false : _ref$sortable,
|
|
63
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
|
|
64
|
+
|
|
61
65
|
return React__default["default"].createElement("table", _extends({
|
|
62
66
|
className: classNames__default["default"]('eds-table', {
|
|
63
67
|
'eds-table--fixed': fixed
|
|
@@ -75,7 +79,8 @@ var Table = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, re
|
|
|
75
79
|
var _excluded$7 = ["className"];
|
|
76
80
|
var TableHead = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
77
81
|
var className = _ref.className,
|
|
78
|
-
|
|
82
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$7);
|
|
83
|
+
|
|
79
84
|
return React__default["default"].createElement("thead", _extends({
|
|
80
85
|
className: classNames__default["default"]('eds-table__head', className),
|
|
81
86
|
ref: ref
|
|
@@ -85,7 +90,8 @@ var TableHead = /*#__PURE__*/React__default["default"].forwardRef(function (_ref
|
|
|
85
90
|
var _excluded$6 = ["className"];
|
|
86
91
|
var TableBody = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
87
92
|
var className = _ref.className,
|
|
88
|
-
|
|
93
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
|
|
94
|
+
|
|
89
95
|
return React__default["default"].createElement("tbody", _extends({
|
|
90
96
|
className: classNames__default["default"]('eds-table__body', className),
|
|
91
97
|
ref: ref
|
|
@@ -93,7 +99,8 @@ var TableBody = /*#__PURE__*/React__default["default"].forwardRef(function (_ref
|
|
|
93
99
|
});
|
|
94
100
|
|
|
95
101
|
var TableFooter = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
96
|
-
var props = _extends({},
|
|
102
|
+
var props = _extends({}, _ref);
|
|
103
|
+
|
|
97
104
|
return React__default["default"].createElement("tfoot", _extends({
|
|
98
105
|
ref: ref
|
|
99
106
|
}, props));
|
|
@@ -102,13 +109,14 @@ var TableFooter = /*#__PURE__*/React__default["default"].forwardRef(function (_r
|
|
|
102
109
|
var _excluded$5 = ["className", "hover", "active", "error"];
|
|
103
110
|
var TableRow = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
104
111
|
var className = _ref.className,
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
+
_ref$hover = _ref.hover,
|
|
113
|
+
hover = _ref$hover === void 0 ? false : _ref$hover,
|
|
114
|
+
_ref$active = _ref.active,
|
|
115
|
+
active = _ref$active === void 0 ? false : _ref$active,
|
|
116
|
+
_ref$error = _ref.error,
|
|
117
|
+
error = _ref$error === void 0 ? false : _ref$error,
|
|
118
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
|
|
119
|
+
|
|
112
120
|
return React__default["default"].createElement("tr", _extends({
|
|
113
121
|
className: classNames__default["default"]('eds-table__row', className, {
|
|
114
122
|
'eds-table__row--hover': hover,
|
|
@@ -122,12 +130,14 @@ var TableRow = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
|
|
|
122
130
|
var _excluded$4 = ["className", "padding", "status"];
|
|
123
131
|
var DataCell = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
124
132
|
var _classNames;
|
|
133
|
+
|
|
125
134
|
var className = _ref.className,
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
135
|
+
_ref$padding = _ref.padding,
|
|
136
|
+
padding = _ref$padding === void 0 ? 'default' : _ref$padding,
|
|
137
|
+
_ref$status = _ref.status,
|
|
138
|
+
status = _ref$status === void 0 ? undefined : _ref$status,
|
|
139
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
|
|
140
|
+
|
|
131
141
|
return React__default["default"].createElement("td", _extends({
|
|
132
142
|
ref: ref,
|
|
133
143
|
className: classNames__default["default"]('eds-table__data-cell', className, (_classNames = {}, _classNames["eds-table__data-cell--status-" + status] = status, _classNames['eds-table__data-cell--padding-checkbox'] = padding === 'checkbox', _classNames['eds-table__data-cell--padding-radio'] = padding === 'radio', _classNames['eds-table__data-cell--padding-overflow-menu'] = padding === 'overflow-menu', _classNames))
|
|
@@ -135,21 +145,23 @@ var DataCell = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
|
|
|
135
145
|
});
|
|
136
146
|
|
|
137
147
|
var _excluded$3 = ["className", "children", "name", "sortable", "sortConfig", "padding", "sortableButtonProps"],
|
|
138
|
-
|
|
148
|
+
_excluded2$1 = ["className"];
|
|
139
149
|
var HeaderCell = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
140
150
|
var className = _ref.className,
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
151
|
+
children = _ref.children,
|
|
152
|
+
name = _ref.name,
|
|
153
|
+
_ref$sortable = _ref.sortable,
|
|
154
|
+
sortable = _ref$sortable === void 0 ? false : _ref$sortable,
|
|
155
|
+
sortConfig = _ref.sortConfig,
|
|
156
|
+
_ref$padding = _ref.padding,
|
|
157
|
+
padding = _ref$padding === void 0 ? 'default' : _ref$padding,
|
|
158
|
+
sortableButtonProps = _ref.sortableButtonProps,
|
|
159
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
160
|
+
|
|
150
161
|
var _React$useState = React__default["default"].useState(false),
|
|
151
|
-
|
|
152
|
-
|
|
162
|
+
isCurrentlySorted = _React$useState[0],
|
|
163
|
+
setIsCurrentlySorted = _React$useState[1];
|
|
164
|
+
|
|
153
165
|
React__default["default"].useEffect(function () {
|
|
154
166
|
sortConfig && name && setIsCurrentlySorted(sortConfig && name === sortConfig.key);
|
|
155
167
|
}, [sortConfig, name]);
|
|
@@ -169,13 +181,16 @@ var HeaderCell = /*#__PURE__*/React__default["default"].forwardRef(function (_re
|
|
|
169
181
|
isCurrentlySorted: isCurrentlySorted
|
|
170
182
|
}, children) : children);
|
|
171
183
|
});
|
|
184
|
+
|
|
172
185
|
var SortableHeaderCellButton = function SortableHeaderCellButton(_ref2) {
|
|
173
186
|
var sortConfig = _ref2.sortConfig,
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
187
|
+
sortableButtonProps = _ref2.sortableButtonProps,
|
|
188
|
+
isCurrentlySorted = _ref2.isCurrentlySorted,
|
|
189
|
+
children = _ref2.children;
|
|
190
|
+
|
|
177
191
|
var className = sortableButtonProps.className,
|
|
178
|
-
|
|
192
|
+
rest = _objectWithoutPropertiesLoose(sortableButtonProps, _excluded2$1);
|
|
193
|
+
|
|
179
194
|
return React__default["default"].createElement("button", _extends({
|
|
180
195
|
className: classNames__default["default"]('eds-table__header-cell-button', className),
|
|
181
196
|
type: "button"
|
|
@@ -195,7 +210,7 @@ var SortableHeaderCellButton = function SortableHeaderCellButton(_ref2) {
|
|
|
195
210
|
};
|
|
196
211
|
|
|
197
212
|
var _excluded$2 = ["name", "sortable", "buttonProps"],
|
|
198
|
-
|
|
213
|
+
_excluded2 = ["sortable"];
|
|
199
214
|
function useSortableData(rawData, externalSortConfig) {
|
|
200
215
|
if (externalSortConfig === void 0) {
|
|
201
216
|
externalSortConfig = {
|
|
@@ -203,9 +218,11 @@ function useSortableData(rawData, externalSortConfig) {
|
|
|
203
218
|
order: 'none'
|
|
204
219
|
};
|
|
205
220
|
}
|
|
221
|
+
|
|
206
222
|
var _React$useState = React__default["default"].useState(externalSortConfig),
|
|
207
|
-
|
|
208
|
-
|
|
223
|
+
sortConfig = _React$useState[0],
|
|
224
|
+
setSortConfig = _React$useState[1];
|
|
225
|
+
|
|
209
226
|
var tableCopy = rawData.slice();
|
|
210
227
|
React__default["default"].useEffect(function () {
|
|
211
228
|
setSortConfig({
|
|
@@ -217,6 +234,7 @@ function useSortableData(rawData, externalSortConfig) {
|
|
|
217
234
|
if (sortConfig.order === 'none') {
|
|
218
235
|
return tableCopy;
|
|
219
236
|
}
|
|
237
|
+
|
|
220
238
|
return [].concat(rawData).sort(function (a, b) {
|
|
221
239
|
if (get__default["default"](a, sortConfig.key) < get__default["default"](b, sortConfig.key)) {
|
|
222
240
|
return sortConfig.order === 'ascending' ? -1 : 1;
|
|
@@ -227,24 +245,29 @@ function useSortableData(rawData, externalSortConfig) {
|
|
|
227
245
|
}
|
|
228
246
|
});
|
|
229
247
|
}, [rawData, tableCopy, sortConfig]);
|
|
248
|
+
|
|
230
249
|
var onSortRequested = function onSortRequested(key) {
|
|
231
250
|
var order = 'ascending';
|
|
251
|
+
|
|
232
252
|
if (sortConfig.key === key && sortConfig.order === 'ascending') {
|
|
233
253
|
order = 'descending';
|
|
234
254
|
} else if (sortConfig.key === key && sortConfig.order === 'descending') {
|
|
235
255
|
order = 'none';
|
|
236
256
|
}
|
|
257
|
+
|
|
237
258
|
setSortConfig({
|
|
238
259
|
key: key,
|
|
239
260
|
order: order
|
|
240
261
|
});
|
|
241
262
|
};
|
|
263
|
+
|
|
242
264
|
function getSortableHeaderProps(_ref) {
|
|
243
265
|
var name = _ref.name,
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
266
|
+
_ref$sortable = _ref.sortable,
|
|
267
|
+
sortable = _ref$sortable === void 0 ? true : _ref$sortable,
|
|
268
|
+
buttonProps = _ref.buttonProps,
|
|
269
|
+
props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
270
|
+
|
|
248
271
|
return _extends({
|
|
249
272
|
name: name,
|
|
250
273
|
sortable: sortable,
|
|
@@ -256,15 +279,18 @@ function useSortableData(rawData, externalSortConfig) {
|
|
|
256
279
|
}, buttonProps)
|
|
257
280
|
}, props);
|
|
258
281
|
}
|
|
282
|
+
|
|
259
283
|
function getSortableTableProps(_ref2) {
|
|
260
284
|
var _ref2$sortable = _ref2.sortable,
|
|
261
|
-
|
|
262
|
-
|
|
285
|
+
sortable = _ref2$sortable === void 0 ? true : _ref2$sortable,
|
|
286
|
+
props = _objectWithoutPropertiesLoose(_ref2, _excluded2);
|
|
287
|
+
|
|
263
288
|
return _extends({
|
|
264
289
|
sortable: sortable,
|
|
265
290
|
sortConfig: sortConfig
|
|
266
291
|
}, props);
|
|
267
292
|
}
|
|
293
|
+
|
|
268
294
|
return {
|
|
269
295
|
sortedData: sortedData,
|
|
270
296
|
getSortableHeaderProps: getSortableHeaderProps,
|
|
@@ -275,12 +301,13 @@ function useSortableData(rawData, externalSortConfig) {
|
|
|
275
301
|
var _excluded$1 = ["children", "className", "feedback", "variant", "outlined"];
|
|
276
302
|
var EditableCell = function EditableCell(_ref) {
|
|
277
303
|
var children = _ref.children,
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
304
|
+
className = _ref.className,
|
|
305
|
+
feedback = _ref.feedback,
|
|
306
|
+
variant = _ref.variant,
|
|
307
|
+
_ref$outlined = _ref.outlined,
|
|
308
|
+
outlined = _ref$outlined === void 0 ? false : _ref$outlined,
|
|
309
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
310
|
+
|
|
284
311
|
return React__default["default"].createElement(form.VariantProvider, {
|
|
285
312
|
variant: variant
|
|
286
313
|
}, React__default["default"].createElement(DataCell, _extends({
|
|
@@ -298,9 +325,9 @@ var EditableCell = function EditableCell(_ref) {
|
|
|
298
325
|
|
|
299
326
|
var ExpandableRow = function ExpandableRow(_ref) {
|
|
300
327
|
var _ref$open = _ref.open,
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
328
|
+
open = _ref$open === void 0 ? false : _ref$open,
|
|
329
|
+
children = _ref.children,
|
|
330
|
+
colSpan = _ref.colSpan;
|
|
304
331
|
return React__default["default"].createElement("tr", null, React__default["default"].createElement("td", {
|
|
305
332
|
colSpan: colSpan
|
|
306
333
|
}, React__default["default"].createElement(expand.BaseExpand, {
|
|
@@ -311,8 +338,9 @@ var ExpandableRow = function ExpandableRow(_ref) {
|
|
|
311
338
|
var _excluded = ["open", "onClick"];
|
|
312
339
|
var ExpandRowButton = function ExpandRowButton(_ref) {
|
|
313
340
|
var open = _ref.open,
|
|
314
|
-
|
|
315
|
-
|
|
341
|
+
onClick = _ref.onClick,
|
|
342
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
343
|
+
|
|
316
344
|
return React__default["default"].createElement(button.IconButton, _extends({
|
|
317
345
|
className: classNames__default["default"]('eds-expand-row-button', {
|
|
318
346
|
'eds-expand-row-button--open': open
|
|
@@ -326,62 +354,81 @@ var ExpandRowButton = function ExpandRowButton(_ref) {
|
|
|
326
354
|
|
|
327
355
|
function onTableKeypress(event, currentRow, maxRow, allowWrap) {
|
|
328
356
|
var keyPress = event.key;
|
|
357
|
+
|
|
329
358
|
switch (keyPress) {
|
|
330
359
|
case 'ArrowUp':
|
|
331
360
|
event.preventDefault();
|
|
361
|
+
|
|
332
362
|
if (allowWrap) {
|
|
333
363
|
return currentRow === 0 ? maxRow - 1 : currentRow - 1;
|
|
334
364
|
} else {
|
|
335
365
|
return currentRow > 0 ? currentRow - 1 : 0;
|
|
336
366
|
}
|
|
367
|
+
|
|
337
368
|
case 'ArrowDown':
|
|
338
369
|
event.preventDefault();
|
|
370
|
+
|
|
339
371
|
if (allowWrap) {
|
|
340
372
|
return currentRow === maxRow - 1 ? 0 : currentRow + 1;
|
|
341
373
|
} else {
|
|
342
374
|
return currentRow < maxRow - 1 ? currentRow + 1 : currentRow;
|
|
343
375
|
}
|
|
376
|
+
|
|
344
377
|
default:
|
|
345
378
|
return currentRow;
|
|
346
379
|
}
|
|
347
380
|
}
|
|
381
|
+
|
|
348
382
|
var useTableKeyboardNavigation = function useTableKeyboardNavigation(numberOfRows, allowWrap) {
|
|
349
383
|
var _tableBodyRef$current;
|
|
384
|
+
|
|
350
385
|
if (numberOfRows === void 0) {
|
|
351
386
|
numberOfRows = 0;
|
|
352
387
|
}
|
|
388
|
+
|
|
353
389
|
if (allowWrap === void 0) {
|
|
354
390
|
allowWrap = true;
|
|
355
391
|
}
|
|
392
|
+
|
|
356
393
|
var _useState = React.useState(numberOfRows),
|
|
357
|
-
|
|
358
|
-
|
|
394
|
+
currentRow = _useState[0],
|
|
395
|
+
setCurrentRow = _useState[1];
|
|
396
|
+
|
|
359
397
|
var _useState2 = React.useState(0),
|
|
360
|
-
|
|
361
|
-
|
|
398
|
+
maxRow = _useState2[0],
|
|
399
|
+
setMaxRow = _useState2[1];
|
|
400
|
+
|
|
362
401
|
var tableBodyRef = React__default["default"].useRef(null);
|
|
363
402
|
var tableHasFocus = tableBodyRef == null ? void 0 : (_tableBodyRef$current = tableBodyRef.current) == null ? void 0 : _tableBodyRef$current.contains(document.activeElement);
|
|
364
403
|
React__default["default"].useEffect(function () {
|
|
365
404
|
var _tableBodyRef$current2;
|
|
405
|
+
|
|
366
406
|
tableBodyRef && tableBodyRef.current && tableHasFocus && ((_tableBodyRef$current2 = tableBodyRef.current.childNodes[currentRow].childNodes[0].parentElement) == null ? void 0 : _tableBodyRef$current2.focus());
|
|
367
407
|
}, [currentRow, tableHasFocus]);
|
|
408
|
+
|
|
368
409
|
function getTableBodyNavigationProps() {
|
|
369
410
|
for (var _len = arguments.length, rest = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
370
411
|
rest[_key] = arguments[_key];
|
|
371
412
|
}
|
|
413
|
+
|
|
372
414
|
return _extends({
|
|
373
415
|
ref: tableBodyRef
|
|
374
416
|
}, rest);
|
|
375
417
|
}
|
|
418
|
+
|
|
376
419
|
var tableRowRef = React__default["default"].useRef(null);
|
|
420
|
+
|
|
377
421
|
function getTableRowNavigationProps(row) {
|
|
378
422
|
if (row >= maxRow) {
|
|
379
423
|
setMaxRow(row + 1);
|
|
380
424
|
}
|
|
425
|
+
|
|
381
426
|
var tabIndex = currentRow ? 0 : -1;
|
|
427
|
+
|
|
382
428
|
for (var _len2 = arguments.length, rest = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
|
|
383
429
|
rest[_key2 - 1] = arguments[_key2];
|
|
384
430
|
}
|
|
431
|
+
|
|
385
432
|
return _extends({
|
|
386
433
|
tabIndex: tabIndex,
|
|
387
434
|
ref: tableRowRef,
|
|
@@ -394,6 +441,7 @@ var useTableKeyboardNavigation = function useTableKeyboardNavigation(numberOfRow
|
|
|
394
441
|
}
|
|
395
442
|
}, rest);
|
|
396
443
|
}
|
|
444
|
+
|
|
397
445
|
return {
|
|
398
446
|
getTableRowNavigationProps: getTableRowNavigationProps,
|
|
399
447
|
getTableBodyNavigationProps: getTableBodyNavigationProps
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.cjs.development.js","sources":["../src/Table.tsx","../src/TableHead.tsx","../src/TableBody.tsx","../src/TableFooter.tsx","../src/TableRow.tsx","../src/DataCell.tsx","../src/HeaderCell.tsx","../src/useSortableTable.ts","../src/EditableCell.tsx","../src/ExpandableRow.tsx","../src/ExpandRowButton.tsx","../src/useTableKeyboardNavigation.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Setter tettheten mellom rader og kolonner. Bruk gjerne middle og small for for sider med høy informasjonstetthet\n * @default \"default\"\n */\n spacing?: 'default' | 'middle' | 'small';\n /** Setter kolonne-layout til å være uavhengig av innhold\n * @default false\n */\n fixed?: boolean;\n /** Innholdet i tabellen */\n children: React.ReactNode;\n [key: string]: any;\n};\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n fixed = false,\n spacing = 'default',\n sortable = false,\n ...rest\n },\n ref,\n ) => {\n return (\n <table\n className={classNames(\n 'eds-table',\n { 'eds-table--fixed': fixed },\n { 'eds-table--middle': spacing === 'middle' },\n { 'eds-table--small': spacing === 'small' },\n { 'eds-table--sortable': sortable },\n className,\n )}\n ref={ref}\n {...rest}\n />\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableHeadProps = {\n /** Kolonneoverskrifter */\n children: React.ReactNode;\n /** Esktra klassenavn */\n className?: string;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableHead = React.forwardRef<\n HTMLTableSectionElement,\n TableHeadProps\n>(({ className, ...props }, ref) => (\n <thead\n className={classNames('eds-table__head', className)}\n ref={ref}\n {...props}\n />\n));\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableBodyProps = {\n /** Tabellrader */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n ref?: React.Ref<HTMLTableSectionElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, ...rest }, ref) => (\n <tbody\n className={classNames('eds-table__body', className)}\n ref={ref}\n {...rest}\n />\n));\n","import React from 'react';\n\nexport type TableFooterProps = {\n /** Tabellrader */\n children: React.ReactNode;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n TableFooterProps\n>(({ ...props }, ref) => <tfoot ref={ref} {...props} />);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableRowProps = {\n /** Tabellceller */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /**Hvis satt, så vil tabellraden endre fargen ved hover\n * @default false\n */\n hover?: boolean;\n /** Om raden er klikkbar, så vil raden endre farge, og musepekeren vil symbolisere interaktivitet\n * @default false\n */\n active?: boolean;\n /**Signalisere om at det er en feil i tabellraden\n * @default false\n */\n error?: boolean;\n ref?: React.Ref<HTMLTableRowElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>;\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { className, hover = false, active = false, error = false, ...rest },\n ref: React.Ref<HTMLTableRowElement>,\n ) => (\n <tr\n className={classNames('eds-table__row', className, {\n 'eds-table__row--hover': hover,\n 'eds-table__row--active': active,\n 'eds-table__row--error': error,\n })}\n ref={ref}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type DataCellProps = {\n /** Innholdet i tabellcellen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for DataCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n /** Viser en status-sirkel for DataCell */\n status?: 'positive' | 'negative' | 'neutral';\n} & React.DetailedHTMLProps<\n React.TdHTMLAttributes<HTMLTableDataCellElement>,\n HTMLTableDataCellElement\n>;\n\nexport const DataCell = React.forwardRef<\n HTMLTableDataCellElement,\n DataCellProps\n>(\n (\n { className, padding = 'default', status = undefined, ...rest },\n ref: React.Ref<HTMLTableDataCellElement>,\n ) => (\n <td\n ref={ref}\n className={classNames('eds-table__data-cell', className, {\n [`eds-table__data-cell--status-${status}`]: status,\n 'eds-table__data-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__data-cell--padding-radio': padding === 'radio',\n 'eds-table__data-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { DownArrowIcon, UpArrowIcon, UnsortedIcon } from '@entur/icons';\n\nimport { ExternalSortConfig } from '.';\n\nimport './HeaderCell.scss';\n\nexport type HeaderCellProps = {\n /** Kolonneoverskrift */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for HeaderCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n\n /** Ekstra props som kan sendes til sorteringsknappelementet. Benyttes via useSortableTable */\n sortableButtonProps?: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n\n /** Om komponenten brukes til sortering. Benytt via useSortableTable\n * @default false\n */\n sortable?: boolean;\n /** Konfigurering og rekkefølgen på sortering. Benyttes via useSortableTable */\n sortConfig?: ExternalSortConfig;\n /** Navnet det skal sorteres på. Benyttes via useSortableTable */\n name?: string;\n} & React.DetailedHTMLProps<\n React.ThHTMLAttributes<HTMLTableCellElement>,\n HTMLTableCellElement\n>;\n\nexport const HeaderCell = React.forwardRef<\n HTMLTableCellElement,\n HeaderCellProps\n>(\n (\n {\n className,\n children,\n name,\n sortable = false,\n sortConfig,\n padding = 'default',\n sortableButtonProps,\n ...rest\n },\n ref,\n ) => {\n const [isCurrentlySorted, setIsCurrentlySorted] =\n React.useState<boolean>(false);\n React.useEffect(() => {\n sortConfig &&\n name &&\n setIsCurrentlySorted(sortConfig && name === sortConfig.key);\n }, [sortConfig, name]);\n const ariaSort = isCurrentlySorted\n ? sortConfig && sortConfig.order\n : 'none';\n\n return (\n <th\n className={classNames('eds-table__header-cell', className, {\n 'eds-table__header-cell--sortable': sortable,\n 'eds-table__header-cell--padding-radio': padding === 'radio',\n 'eds-table__header-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__header-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n aria-sort={ariaSort}\n ref={ref}\n {...rest}\n >\n {sortable && sortConfig && sortableButtonProps ? (\n <SortableHeaderCellButton\n sortableButtonProps={sortableButtonProps}\n sortConfig={sortConfig}\n isCurrentlySorted={isCurrentlySorted}\n >\n {children}\n </SortableHeaderCellButton>\n ) : (\n children\n )}\n </th>\n );\n },\n);\n\ntype SortableHeaderCellButtonProps = {\n sortConfig: ExternalSortConfig;\n isCurrentlySorted: boolean;\n sortableButtonProps: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n};\n\nconst SortableHeaderCellButton: React.FC<SortableHeaderCellButtonProps> = ({\n sortConfig,\n sortableButtonProps,\n isCurrentlySorted,\n children,\n}) => {\n const { className, ...rest } = sortableButtonProps;\n return (\n <button\n className={classNames('eds-table__header-cell-button', className)}\n type=\"button\"\n {...rest}\n >\n {children}\n {(!isCurrentlySorted || sortConfig.order === 'none') && (\n <UnsortedIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"usortert kolonne\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'ascending' && (\n <UpArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"stigende sortert kolonne\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'descending' && (\n <DownArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"synkende sortert kolonne\"\n />\n )}\n </button>\n );\n};\n","import React from 'react';\nimport get from 'lodash.get';\n\nexport type ExternalSortConfig = {\n /**\n * @default \"\"\n */\n key: string;\n /** @default \"none\" */\n order: 'ascending' | 'descending' | 'none';\n};\n\nexport function useSortableData<T>(\n rawData: T[],\n externalSortConfig: ExternalSortConfig = { key: '', order: 'none' },\n): {\n sortedData: T[];\n getSortableHeaderProps: (\n args: SortableHeaderProps,\n ) => SortableHeaderReturnProps;\n getSortableTableProps: (args: SortableTableProps) => SortableTableReturnProps;\n} {\n const [sortConfig, setSortConfig] = React.useState(externalSortConfig);\n const tableCopy = rawData.slice();\n\n React.useEffect(() => {\n setSortConfig({\n key: externalSortConfig.key,\n order: externalSortConfig.order,\n });\n }, [externalSortConfig.key, externalSortConfig.order]);\n\n const sortedData: T[] = React.useMemo(() => {\n if (sortConfig.order === 'none') {\n return tableCopy;\n }\n return [...rawData].sort((a: any, b: any) => {\n if (get(a, sortConfig.key) < get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? -1 : 1;\n } else if (get(a, sortConfig.key) > get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? 1 : -1;\n } else {\n return 0;\n }\n });\n }, [rawData, tableCopy, sortConfig]);\n\n const onSortRequested = (key: string) => {\n let order: 'ascending' | 'descending' | 'none' = 'ascending';\n if (sortConfig.key === key && sortConfig.order === 'ascending') {\n order = 'descending';\n } else if (sortConfig.key === key && sortConfig.order === 'descending') {\n order = 'none';\n }\n\n setSortConfig({ key, order });\n };\n\n function getSortableHeaderProps({\n name,\n sortable = true,\n buttonProps,\n ...props\n }: SortableHeaderProps): SortableHeaderReturnProps {\n return {\n name,\n sortable,\n sortConfig: sortConfig,\n sortableButtonProps: {\n onClick: () => onSortRequested(name),\n ...buttonProps,\n },\n ...props,\n };\n }\n\n function getSortableTableProps({\n sortable = true,\n ...props\n }: SortableTableProps): SortableTableReturnProps {\n return {\n sortable,\n sortConfig: sortConfig,\n ...props,\n };\n }\n\n return { sortedData, getSortableHeaderProps, getSortableTableProps };\n}\n\nexport type SortableHeaderProps = {\n /** Navnet headeren skal se etter i forhold til sortering av items */\n name: string;\n /** Om headeren skal være sorterbar eller ikke\n * @default true */\n sortable?: boolean;\n /** Props som sendes til knapp-elementet */\n buttonProps?: Omit<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >,\n 'type' | 'onClick'\n >;\n [key: string]: any;\n};\n\nexport type SortableHeaderReturnProps = {\n name: string;\n sortable: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n\nexport type SortableTableProps = {\n /** @default true */\n sortable?: boolean;\n [key: string]: any;\n};\n\nexport type SortableTableReturnProps = {\n /** @default true */\n sortable?: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n","import classNames from 'classnames';\nimport React from 'react';\nimport { DataCell } from './DataCell';\nimport { VariantProvider, VariantType } from '@entur/form';\nimport { Tooltip } from '@entur/tooltip';\nimport './EditableCell.scss';\n\ntype EditableCellProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Inputelementet som skal være i tabellcellen */\n children: React.ReactElement;\n /** Valideringsvariant for EditableCell */\n variant?: VariantType;\n /** Varselmelding, som vil komme som en Tooltip under EditableCell */\n feedback?: string;\n /** Om cellen skal vise omriss til enhver tid\n * @default false\n */\n outlined?: boolean;\n [key: string]: any;\n};\n\nexport const EditableCell: React.FC<EditableCellProps> = ({\n children,\n className,\n feedback,\n variant,\n outlined = false,\n ...rest\n}) => {\n return (\n <VariantProvider variant={variant}>\n <DataCell\n className={classNames(\n 'eds-editable-cell',\n {\n 'eds-editable-cell--outlined': outlined,\n },\n className,\n )}\n {...rest}\n >\n <Tooltip\n disableHoverListener={!feedback}\n disableFocusListener={!feedback}\n placement=\"bottom\"\n content={feedback || undefined}\n variant={feedback ? 'error' : undefined}\n >\n {children}\n </Tooltip>\n </DataCell>\n </VariantProvider>\n );\n};\n","import React from 'react';\nimport { BaseExpand } from '@entur/expand';\n\nexport type ExpandableRowProps = {\n /** Antall kolonner tabellraden er */\n colSpan: number;\n /** Innholdet til ExpandableRow */\n children: React.ReactNode;\n /** Om ExpandableRow er åpen\n * @default false\n */\n open?: boolean;\n};\n\nexport const ExpandableRow: React.FC<ExpandableRowProps> = ({\n open = false,\n children,\n colSpan,\n}) => {\n return (\n <tr>\n <td colSpan={colSpan}>\n <BaseExpand open={open}>{children}</BaseExpand>\n </td>\n </tr>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { DownArrowIcon } from '@entur/icons';\nimport { IconButton } from '@entur/button';\nimport './ExpandRowButton.scss';\n\nexport type ExpandRowButtonProps = {\n open: boolean;\n onClick: (e: React.MouseEvent) => void;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const ExpandRowButton: React.FC<ExpandRowButtonProps> = ({\n open,\n onClick,\n ...rest\n}) => {\n return (\n <IconButton\n className={classNames('eds-expand-row-button', {\n 'eds-expand-row-button--open': open,\n })}\n onClick={onClick}\n aria-label={open ? 'Lukk tabellrad' : 'Utvid tabellrad'}\n {...rest}\n >\n <DownArrowIcon className=\"eds-expand-row-button__icon\" />\n </IconButton>\n );\n};\n","import React, { useState } from 'react';\nimport { TableBodyProps, TableRowProps } from './index';\n\nfunction onTableKeypress(\n event: React.KeyboardEvent,\n currentRow: number,\n maxRow: number,\n allowWrap?: boolean,\n) {\n const keyPress = event.key;\n switch (keyPress) {\n case 'ArrowUp':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === 0 ? maxRow - 1 : currentRow - 1;\n } else {\n return currentRow > 0 ? currentRow - 1 : 0;\n }\n case 'ArrowDown':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === maxRow - 1 ? 0 : currentRow + 1;\n } else {\n return currentRow < maxRow - 1 ? currentRow + 1 : currentRow;\n }\n default:\n return currentRow;\n }\n}\n\nexport type useTableKeyboardNavigationProps = (\n /** Antall rader i tabellen */\n numberOfRows: number,\n /** Tillate at man kan navigere sirkulært\n * @default false\n */\n allowWrap?: boolean,\n) => {\n getTableRowNavigationProps: (\n /** Raden i tabellen (0-indeksert) */\n row: number,\n ) => Partial<TableRowProps>;\n getTableBodyNavigationProps: () => Partial<TableBodyProps>;\n};\n\nexport const useTableKeyboardNavigation: useTableKeyboardNavigationProps = (\n numberOfRows = 0,\n allowWrap = true,\n) => {\n const [currentRow, setCurrentRow] = useState(numberOfRows);\n const [maxRow, setMaxRow] = useState(0);\n\n const tableBodyRef = React.useRef<HTMLTableSectionElement>(null);\n const tableHasFocus = tableBodyRef?.current?.contains(document.activeElement);\n\n React.useEffect(() => {\n tableBodyRef &&\n tableBodyRef.current &&\n tableHasFocus &&\n tableBodyRef.current.childNodes[\n currentRow\n ].childNodes[0].parentElement?.focus();\n }, [currentRow, tableHasFocus]);\n\n function getTableBodyNavigationProps(...rest: any): Partial<TableBodyProps> {\n return {\n ref: tableBodyRef,\n ...rest,\n };\n }\n\n const tableRowRef = React.useRef<HTMLTableRowElement>(null);\n function getTableRowNavigationProps(\n row: number,\n ...rest: any\n ): Partial<TableRowProps> {\n if (row >= maxRow) {\n setMaxRow(row + 1);\n }\n const tabIndex = currentRow ? 0 : -1;\n return {\n tabIndex,\n ref: tableRowRef,\n onClick: () => setCurrentRow(row),\n onKeyDown: (e: React.KeyboardEvent) => {\n const newCell = onTableKeypress(e, currentRow, numberOfRows, allowWrap);\n setCurrentRow(newCell);\n },\n ...rest,\n };\n }\n return { getTableRowNavigationProps, getTableBodyNavigationProps };\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('table');\n\nexport * from './Table';\nexport * from './TableHead';\nexport * from './TableBody';\nexport * from './TableFooter';\nexport * from './TableRow';\nexport * from './DataCell';\nexport * from './HeaderCell';\nexport * from './useSortableTable';\nexport * from './EditableCell';\nexport * from './ExpandableRow';\nexport * from './ExpandRowButton';\nexport * from './useTableKeyboardNavigation';\n"],"names":["Table","React","forwardRef","ref","className","fixed","spacing","sortable","rest","classNames","TableHead","props","TableBody","TableFooter","TableRow","hover","active","error","DataCell","padding","status","undefined","HeaderCell","children","name","sortConfig","sortableButtonProps","useState","isCurrentlySorted","setIsCurrentlySorted","useEffect","key","ariaSort","order","SortableHeaderCellButton","type","UnsortedIcon","size","UpArrowIcon","DownArrowIcon","useSortableData","rawData","externalSortConfig","setSortConfig","tableCopy","slice","sortedData","useMemo","sort","a","b","get","onSortRequested","getSortableHeaderProps","buttonProps","onClick","getSortableTableProps","EditableCell","feedback","variant","outlined","VariantProvider","Tooltip","disableHoverListener","disableFocusListener","placement","content","ExpandableRow","open","colSpan","BaseExpand","ExpandRowButton","IconButton","onTableKeypress","event","currentRow","maxRow","allowWrap","keyPress","preventDefault","useTableKeyboardNavigation","numberOfRows","setCurrentRow","setMaxRow","tableBodyRef","useRef","tableHasFocus","current","contains","document","activeElement","childNodes","parentElement","focus","getTableBodyNavigationProps","tableRowRef","getTableRowNavigationProps","row","tabIndex","onKeyDown","e","newCell","warnAboutMissingStyles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.cjs.development.js","sources":["../src/Table.tsx","../src/TableHead.tsx","../src/TableBody.tsx","../src/TableFooter.tsx","../src/TableRow.tsx","../src/DataCell.tsx","../src/HeaderCell.tsx","../src/useSortableTable.ts","../src/EditableCell.tsx","../src/ExpandableRow.tsx","../src/ExpandRowButton.tsx","../src/useTableKeyboardNavigation.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Setter tettheten mellom rader og kolonner. Bruk gjerne middle og small for for sider med høy informasjonstetthet\n * @default \"default\"\n */\n spacing?: 'default' | 'middle' | 'small';\n /** Setter kolonne-layout til å være uavhengig av innhold\n * @default false\n */\n fixed?: boolean;\n /** Innholdet i tabellen */\n children: React.ReactNode;\n [key: string]: any;\n};\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n fixed = false,\n spacing = 'default',\n sortable = false,\n ...rest\n },\n ref,\n ) => {\n return (\n <table\n className={classNames(\n 'eds-table',\n { 'eds-table--fixed': fixed },\n { 'eds-table--middle': spacing === 'middle' },\n { 'eds-table--small': spacing === 'small' },\n { 'eds-table--sortable': sortable },\n className,\n )}\n ref={ref}\n {...rest}\n />\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableHeadProps = {\n /** Kolonneoverskrifter */\n children: React.ReactNode;\n /** Esktra klassenavn */\n className?: string;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableHead = React.forwardRef<\n HTMLTableSectionElement,\n TableHeadProps\n>(({ className, ...props }, ref) => (\n <thead\n className={classNames('eds-table__head', className)}\n ref={ref}\n {...props}\n />\n));\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableBodyProps = {\n /** Tabellrader */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n ref?: React.Ref<HTMLTableSectionElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, ...rest }, ref) => (\n <tbody\n className={classNames('eds-table__body', className)}\n ref={ref}\n {...rest}\n />\n));\n","import React from 'react';\n\nexport type TableFooterProps = {\n /** Tabellrader */\n children: React.ReactNode;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n TableFooterProps\n>(({ ...props }, ref) => <tfoot ref={ref} {...props} />);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableRowProps = {\n /** Tabellceller */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /**Hvis satt, så vil tabellraden endre fargen ved hover\n * @default false\n */\n hover?: boolean;\n /** Om raden er klikkbar, så vil raden endre farge, og musepekeren vil symbolisere interaktivitet\n * @default false\n */\n active?: boolean;\n /**Signalisere om at det er en feil i tabellraden\n * @default false\n */\n error?: boolean;\n ref?: React.Ref<HTMLTableRowElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>;\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { className, hover = false, active = false, error = false, ...rest },\n ref: React.Ref<HTMLTableRowElement>,\n ) => (\n <tr\n className={classNames('eds-table__row', className, {\n 'eds-table__row--hover': hover,\n 'eds-table__row--active': active,\n 'eds-table__row--error': error,\n })}\n ref={ref}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type DataCellProps = {\n /** Innholdet i tabellcellen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for DataCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n /** Viser en status-sirkel for DataCell */\n status?: 'positive' | 'negative' | 'neutral';\n} & React.DetailedHTMLProps<\n React.TdHTMLAttributes<HTMLTableDataCellElement>,\n HTMLTableDataCellElement\n>;\n\nexport const DataCell = React.forwardRef<\n HTMLTableDataCellElement,\n DataCellProps\n>(\n (\n { className, padding = 'default', status = undefined, ...rest },\n ref: React.Ref<HTMLTableDataCellElement>,\n ) => (\n <td\n ref={ref}\n className={classNames('eds-table__data-cell', className, {\n [`eds-table__data-cell--status-${status}`]: status,\n 'eds-table__data-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__data-cell--padding-radio': padding === 'radio',\n 'eds-table__data-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { DownArrowIcon, UpArrowIcon, UnsortedIcon } from '@entur/icons';\n\nimport { ExternalSortConfig } from '.';\n\nimport './HeaderCell.scss';\n\nexport type HeaderCellProps = {\n /** Kolonneoverskrift */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for HeaderCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n\n /** Ekstra props som kan sendes til sorteringsknappelementet. Benyttes via useSortableTable */\n sortableButtonProps?: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n\n /** Om komponenten brukes til sortering. Benytt via useSortableTable\n * @default false\n */\n sortable?: boolean;\n /** Konfigurering og rekkefølgen på sortering. Benyttes via useSortableTable */\n sortConfig?: ExternalSortConfig;\n /** Navnet det skal sorteres på. Benyttes via useSortableTable */\n name?: string;\n} & React.DetailedHTMLProps<\n React.ThHTMLAttributes<HTMLTableCellElement>,\n HTMLTableCellElement\n>;\n\nexport const HeaderCell = React.forwardRef<\n HTMLTableCellElement,\n HeaderCellProps\n>(\n (\n {\n className,\n children,\n name,\n sortable = false,\n sortConfig,\n padding = 'default',\n sortableButtonProps,\n ...rest\n },\n ref,\n ) => {\n const [isCurrentlySorted, setIsCurrentlySorted] =\n React.useState<boolean>(false);\n React.useEffect(() => {\n sortConfig &&\n name &&\n setIsCurrentlySorted(sortConfig && name === sortConfig.key);\n }, [sortConfig, name]);\n const ariaSort = isCurrentlySorted\n ? sortConfig && sortConfig.order\n : 'none';\n\n return (\n <th\n className={classNames('eds-table__header-cell', className, {\n 'eds-table__header-cell--sortable': sortable,\n 'eds-table__header-cell--padding-radio': padding === 'radio',\n 'eds-table__header-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__header-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n aria-sort={ariaSort}\n ref={ref}\n {...rest}\n >\n {sortable && sortConfig && sortableButtonProps ? (\n <SortableHeaderCellButton\n sortableButtonProps={sortableButtonProps}\n sortConfig={sortConfig}\n isCurrentlySorted={isCurrentlySorted}\n >\n {children}\n </SortableHeaderCellButton>\n ) : (\n children\n )}\n </th>\n );\n },\n);\n\ntype SortableHeaderCellButtonProps = {\n sortConfig: ExternalSortConfig;\n isCurrentlySorted: boolean;\n sortableButtonProps: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n};\n\nconst SortableHeaderCellButton: React.FC<SortableHeaderCellButtonProps> = ({\n sortConfig,\n sortableButtonProps,\n isCurrentlySorted,\n children,\n}) => {\n const { className, ...rest } = sortableButtonProps;\n return (\n <button\n className={classNames('eds-table__header-cell-button', className)}\n type=\"button\"\n {...rest}\n >\n {children}\n {(!isCurrentlySorted || sortConfig.order === 'none') && (\n <UnsortedIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"usortert kolonne\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'ascending' && (\n <UpArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"stigende sortert kolonne\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'descending' && (\n <DownArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"synkende sortert kolonne\"\n />\n )}\n </button>\n );\n};\n","import React from 'react';\nimport get from 'lodash.get';\n\nexport type ExternalSortConfig = {\n /**\n * @default \"\"\n */\n key: string;\n /** @default \"none\" */\n order: 'ascending' | 'descending' | 'none';\n};\n\nexport function useSortableData<T>(\n rawData: T[],\n externalSortConfig: ExternalSortConfig = { key: '', order: 'none' },\n): {\n sortedData: T[];\n getSortableHeaderProps: (\n args: SortableHeaderProps,\n ) => SortableHeaderReturnProps;\n getSortableTableProps: (args: SortableTableProps) => SortableTableReturnProps;\n} {\n const [sortConfig, setSortConfig] = React.useState(externalSortConfig);\n const tableCopy = rawData.slice();\n\n React.useEffect(() => {\n setSortConfig({\n key: externalSortConfig.key,\n order: externalSortConfig.order,\n });\n }, [externalSortConfig.key, externalSortConfig.order]);\n\n const sortedData: T[] = React.useMemo(() => {\n if (sortConfig.order === 'none') {\n return tableCopy;\n }\n return [...rawData].sort((a: any, b: any) => {\n if (get(a, sortConfig.key) < get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? -1 : 1;\n } else if (get(a, sortConfig.key) > get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? 1 : -1;\n } else {\n return 0;\n }\n });\n }, [rawData, tableCopy, sortConfig]);\n\n const onSortRequested = (key: string) => {\n let order: 'ascending' | 'descending' | 'none' = 'ascending';\n if (sortConfig.key === key && sortConfig.order === 'ascending') {\n order = 'descending';\n } else if (sortConfig.key === key && sortConfig.order === 'descending') {\n order = 'none';\n }\n\n setSortConfig({ key, order });\n };\n\n function getSortableHeaderProps({\n name,\n sortable = true,\n buttonProps,\n ...props\n }: SortableHeaderProps): SortableHeaderReturnProps {\n return {\n name,\n sortable,\n sortConfig: sortConfig,\n sortableButtonProps: {\n onClick: () => onSortRequested(name),\n ...buttonProps,\n },\n ...props,\n };\n }\n\n function getSortableTableProps({\n sortable = true,\n ...props\n }: SortableTableProps): SortableTableReturnProps {\n return {\n sortable,\n sortConfig: sortConfig,\n ...props,\n };\n }\n\n return { sortedData, getSortableHeaderProps, getSortableTableProps };\n}\n\nexport type SortableHeaderProps = {\n /** Navnet headeren skal se etter i forhold til sortering av items */\n name: string;\n /** Om headeren skal være sorterbar eller ikke\n * @default true */\n sortable?: boolean;\n /** Props som sendes til knapp-elementet */\n buttonProps?: Omit<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >,\n 'type' | 'onClick'\n >;\n [key: string]: any;\n};\n\nexport type SortableHeaderReturnProps = {\n name: string;\n sortable: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n\nexport type SortableTableProps = {\n /** @default true */\n sortable?: boolean;\n [key: string]: any;\n};\n\nexport type SortableTableReturnProps = {\n /** @default true */\n sortable?: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n","import classNames from 'classnames';\nimport React from 'react';\nimport { DataCell } from './DataCell';\nimport { VariantProvider, VariantType } from '@entur/form';\nimport { Tooltip } from '@entur/tooltip';\nimport './EditableCell.scss';\n\ntype EditableCellProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Inputelementet som skal være i tabellcellen */\n children: React.ReactElement;\n /** Valideringsvariant for EditableCell */\n variant?: VariantType;\n /** Varselmelding, som vil komme som en Tooltip under EditableCell */\n feedback?: string;\n /** Om cellen skal vise omriss til enhver tid\n * @default false\n */\n outlined?: boolean;\n [key: string]: any;\n};\n\nexport const EditableCell: React.FC<EditableCellProps> = ({\n children,\n className,\n feedback,\n variant,\n outlined = false,\n ...rest\n}) => {\n return (\n <VariantProvider variant={variant}>\n <DataCell\n className={classNames(\n 'eds-editable-cell',\n {\n 'eds-editable-cell--outlined': outlined,\n },\n className,\n )}\n {...rest}\n >\n <Tooltip\n disableHoverListener={!feedback}\n disableFocusListener={!feedback}\n placement=\"bottom\"\n content={feedback || undefined}\n variant={feedback ? 'error' : undefined}\n >\n {children}\n </Tooltip>\n </DataCell>\n </VariantProvider>\n );\n};\n","import React from 'react';\nimport { BaseExpand } from '@entur/expand';\n\nexport type ExpandableRowProps = {\n /** Antall kolonner tabellraden er */\n colSpan: number;\n /** Innholdet til ExpandableRow */\n children: React.ReactNode;\n /** Om ExpandableRow er åpen\n * @default false\n */\n open?: boolean;\n};\n\nexport const ExpandableRow: React.FC<ExpandableRowProps> = ({\n open = false,\n children,\n colSpan,\n}) => {\n return (\n <tr>\n <td colSpan={colSpan}>\n <BaseExpand open={open}>{children}</BaseExpand>\n </td>\n </tr>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { DownArrowIcon } from '@entur/icons';\nimport { IconButton } from '@entur/button';\nimport './ExpandRowButton.scss';\n\nexport type ExpandRowButtonProps = {\n open: boolean;\n onClick: (e: React.MouseEvent) => void;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const ExpandRowButton: React.FC<ExpandRowButtonProps> = ({\n open,\n onClick,\n ...rest\n}) => {\n return (\n <IconButton\n className={classNames('eds-expand-row-button', {\n 'eds-expand-row-button--open': open,\n })}\n onClick={onClick}\n aria-label={open ? 'Lukk tabellrad' : 'Utvid tabellrad'}\n {...rest}\n >\n <DownArrowIcon className=\"eds-expand-row-button__icon\" />\n </IconButton>\n );\n};\n","import React, { useState } from 'react';\nimport { TableBodyProps, TableRowProps } from './index';\n\nfunction onTableKeypress(\n event: React.KeyboardEvent,\n currentRow: number,\n maxRow: number,\n allowWrap?: boolean,\n) {\n const keyPress = event.key;\n switch (keyPress) {\n case 'ArrowUp':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === 0 ? maxRow - 1 : currentRow - 1;\n } else {\n return currentRow > 0 ? currentRow - 1 : 0;\n }\n case 'ArrowDown':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === maxRow - 1 ? 0 : currentRow + 1;\n } else {\n return currentRow < maxRow - 1 ? currentRow + 1 : currentRow;\n }\n default:\n return currentRow;\n }\n}\n\nexport type useTableKeyboardNavigationProps = (\n /** Antall rader i tabellen */\n numberOfRows: number,\n /** Tillate at man kan navigere sirkulært\n * @default false\n */\n allowWrap?: boolean,\n) => {\n getTableRowNavigationProps: (\n /** Raden i tabellen (0-indeksert) */\n row: number,\n ) => Partial<TableRowProps>;\n getTableBodyNavigationProps: () => Partial<TableBodyProps>;\n};\n\nexport const useTableKeyboardNavigation: useTableKeyboardNavigationProps = (\n numberOfRows = 0,\n allowWrap = true,\n) => {\n const [currentRow, setCurrentRow] = useState(numberOfRows);\n const [maxRow, setMaxRow] = useState(0);\n\n const tableBodyRef = React.useRef<HTMLTableSectionElement>(null);\n const tableHasFocus = tableBodyRef?.current?.contains(document.activeElement);\n\n React.useEffect(() => {\n tableBodyRef &&\n tableBodyRef.current &&\n tableHasFocus &&\n tableBodyRef.current.childNodes[\n currentRow\n ].childNodes[0].parentElement?.focus();\n }, [currentRow, tableHasFocus]);\n\n function getTableBodyNavigationProps(...rest: any): Partial<TableBodyProps> {\n return {\n ref: tableBodyRef,\n ...rest,\n };\n }\n\n const tableRowRef = React.useRef<HTMLTableRowElement>(null);\n function getTableRowNavigationProps(\n row: number,\n ...rest: any\n ): Partial<TableRowProps> {\n if (row >= maxRow) {\n setMaxRow(row + 1);\n }\n const tabIndex = currentRow ? 0 : -1;\n return {\n tabIndex,\n ref: tableRowRef,\n onClick: () => setCurrentRow(row),\n onKeyDown: (e: React.KeyboardEvent) => {\n const newCell = onTableKeypress(e, currentRow, numberOfRows, allowWrap);\n setCurrentRow(newCell);\n },\n ...rest,\n };\n }\n return { getTableRowNavigationProps, getTableBodyNavigationProps };\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('table');\n\nexport * from './Table';\nexport * from './TableHead';\nexport * from './TableBody';\nexport * from './TableFooter';\nexport * from './TableRow';\nexport * from './DataCell';\nexport * from './HeaderCell';\nexport * from './useSortableTable';\nexport * from './EditableCell';\nexport * from './ExpandableRow';\nexport * from './ExpandRowButton';\nexport * from './useTableKeyboardNavigation';\n"],"names":["Table","React","forwardRef","ref","className","fixed","spacing","sortable","rest","classNames","TableHead","props","TableBody","TableFooter","TableRow","hover","active","error","DataCell","padding","status","undefined","HeaderCell","children","name","sortConfig","sortableButtonProps","useState","isCurrentlySorted","setIsCurrentlySorted","useEffect","key","ariaSort","order","SortableHeaderCellButton","type","UnsortedIcon","size","UpArrowIcon","DownArrowIcon","useSortableData","rawData","externalSortConfig","setSortConfig","tableCopy","slice","sortedData","useMemo","sort","a","b","get","onSortRequested","getSortableHeaderProps","buttonProps","onClick","getSortableTableProps","EditableCell","feedback","variant","outlined","VariantProvider","Tooltip","disableHoverListener","disableFocusListener","placement","content","ExpandableRow","open","colSpan","BaseExpand","ExpandRowButton","IconButton","onTableKeypress","event","currentRow","maxRow","allowWrap","keyPress","preventDefault","useTableKeyboardNavigation","numberOfRows","setCurrentRow","setMaxRow","tableBodyRef","useRef","tableHasFocus","current","contains","document","activeElement","childNodes","parentElement","focus","getTableBodyNavigationProps","tableRowRef","getTableRowNavigationProps","row","tabIndex","onKeyDown","e","newCell","warnAboutMissingStyles"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),a=require("classnames"),r=require("@entur/icons"),n=require("lodash.get"),l=require("@entur/form"),o=require("@entur/tooltip"),d=require("@entur/expand"),s=require("@entur/button");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=u(t),i=u(a),f=u(n);function b(){return b=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e},b.apply(this,arguments)}function v(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)t.indexOf(a=l[r])>=0||(n[a]=e[a]);return n}var m=["className","fixed","spacing","sortable"],p=c.default.forwardRef((function(e,t){var a=e.className,r=e.fixed,n=void 0!==r&&r,l=e.spacing,o=void 0===l?"default":l,d=e.sortable,s=void 0!==d&&d,u=v(e,m);return c.default.createElement("table",b({className:i.default("eds-table",{"eds-table--fixed":n},{"eds-table--middle":"middle"===o},{"eds-table--small":"small"===o},{"eds-table--sortable":s},a),ref:t},u))})),_=["className"],g=c.default.forwardRef((function(e,t){var a=e.className,r=v(e,_);return c.default.createElement("thead",b({className:i.default("eds-table__head",a),ref:t},r))})),w=["className"],h=c.default.forwardRef((function(e,t){var a=e.className,r=v(e,w);return c.default.createElement("tbody",b({className:i.default("eds-table__body",a),ref:t},r))})),N=c.default.forwardRef((function(e,t){var a=b({},
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),a=require("classnames"),r=require("@entur/icons"),n=require("lodash.get"),l=require("@entur/form"),o=require("@entur/tooltip"),d=require("@entur/expand"),s=require("@entur/button");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=u(t),i=u(a),f=u(n);function b(){return b=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e},b.apply(this,arguments)}function v(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)t.indexOf(a=l[r])>=0||(n[a]=e[a]);return n}var m=["className","fixed","spacing","sortable"],p=c.default.forwardRef((function(e,t){var a=e.className,r=e.fixed,n=void 0!==r&&r,l=e.spacing,o=void 0===l?"default":l,d=e.sortable,s=void 0!==d&&d,u=v(e,m);return c.default.createElement("table",b({className:i.default("eds-table",{"eds-table--fixed":n},{"eds-table--middle":"middle"===o},{"eds-table--small":"small"===o},{"eds-table--sortable":s},a),ref:t},u))})),_=["className"],g=c.default.forwardRef((function(e,t){var a=e.className,r=v(e,_);return c.default.createElement("thead",b({className:i.default("eds-table__head",a),ref:t},r))})),w=["className"],h=c.default.forwardRef((function(e,t){var a=e.className,r=v(e,w);return c.default.createElement("tbody",b({className:i.default("eds-table__body",a),ref:t},r))})),N=c.default.forwardRef((function(e,t){var a=b({},e);return c.default.createElement("tfoot",b({ref:t},a))})),x=["className","hover","active","error"],y=c.default.forwardRef((function(e,t){var a=e.className,r=e.hover,n=void 0!==r&&r,l=e.active,o=void 0!==l&&l,d=e.error,s=void 0!==d&&d,u=v(e,x);return c.default.createElement("tr",b({className:i.default("eds-table__row",a,{"eds-table__row--hover":n,"eds-table__row--active":o,"eds-table__row--error":s}),ref:t},u))})),k=["className","padding","status"],E=c.default.forwardRef((function(e,t){var a,r=e.className,n=e.padding,l=void 0===n?"default":n,o=e.status,d=void 0===o?void 0:o,s=v(e,k);return c.default.createElement("td",b({ref:t,className:i.default("eds-table__data-cell",r,(a={},a["eds-table__data-cell--status-"+d]=d,a["eds-table__data-cell--padding-checkbox"]="checkbox"===l,a["eds-table__data-cell--padding-radio"]="radio"===l,a["eds-table__data-cell--padding-overflow-menu"]="overflow-menu"===l,a))},s))})),C=["className","children","name","sortable","sortConfig","padding","sortableButtonProps"],P=["className"],R=c.default.forwardRef((function(e,t){var a=e.className,r=e.children,n=e.name,l=e.sortable,o=void 0!==l&&l,d=e.sortConfig,s=e.padding,u=void 0===s?"default":s,f=e.sortableButtonProps,m=v(e,C),p=c.default.useState(!1),_=p[0],g=p[1];c.default.useEffect((function(){d&&n&&g(d&&n===d.key)}),[d,n]);var w=_?d&&d.order:"none";return c.default.createElement("th",b({className:i.default("eds-table__header-cell",a,{"eds-table__header-cell--sortable":o,"eds-table__header-cell--padding-radio":"radio"===u,"eds-table__header-cell--padding-checkbox":"checkbox"===u,"eds-table__header-cell--padding-overflow-menu":"overflow-menu"===u}),"aria-sort":w,ref:t},m),o&&d&&f?c.default.createElement(S,{sortableButtonProps:f,sortConfig:d,isCurrentlySorted:_},r):r)})),S=function(e){var t=e.sortConfig,a=e.sortableButtonProps,n=e.isCurrentlySorted,l=e.children,o=a.className,d=v(a,P);return c.default.createElement("button",b({className:i.default("eds-table__header-cell-button",o),type:"button"},d),l,(!n||"none"===t.order)&&c.default.createElement(r.UnsortedIcon,{size:"16px",className:"eds-table__header-cell-button-icon","aria-label":"usortert kolonne"}),n&&"ascending"===t.order&&c.default.createElement(r.UpArrowIcon,{size:"16px",className:"eds-table__header-cell-button-icon","aria-label":"stigende sortert kolonne"}),n&&"descending"===t.order&&c.default.createElement(r.DownArrowIcon,{size:"16px",className:"eds-table__header-cell-button-icon","aria-label":"synkende sortert kolonne"}))},B=["name","sortable","buttonProps"],T=["sortable"],q=["children","className","feedback","variant","outlined"],D=["open","onClick"];function A(e,t,a,r){switch(e.key){case"ArrowUp":return e.preventDefault(),r?0===t?a-1:t-1:t>0?t-1:0;case"ArrowDown":return e.preventDefault(),r?t===a-1?0:t+1:t<a-1?t+1:t;default:return t}}e.warnAboutMissingStyles("table"),exports.DataCell=E,exports.EditableCell=function(e){var t=e.children,a=e.className,r=e.feedback,n=e.variant,d=e.outlined,s=void 0!==d&&d,u=v(e,q);return c.default.createElement(l.VariantProvider,{variant:n},c.default.createElement(E,b({className:i.default("eds-editable-cell",{"eds-editable-cell--outlined":s},a)},u),c.default.createElement(o.Tooltip,{disableHoverListener:!r,disableFocusListener:!r,placement:"bottom",content:r||void 0,variant:r?"error":void 0},t)))},exports.ExpandRowButton=function(e){var t=e.open,a=e.onClick,n=v(e,D);return c.default.createElement(s.IconButton,b({className:i.default("eds-expand-row-button",{"eds-expand-row-button--open":t}),onClick:a,"aria-label":t?"Lukk tabellrad":"Utvid tabellrad"},n),c.default.createElement(r.DownArrowIcon,{className:"eds-expand-row-button__icon"}))},exports.ExpandableRow=function(e){var t=e.open;return c.default.createElement("tr",null,c.default.createElement("td",{colSpan:e.colSpan},c.default.createElement(d.BaseExpand,{open:void 0!==t&&t},e.children)))},exports.HeaderCell=R,exports.Table=p,exports.TableBody=h,exports.TableFooter=N,exports.TableHead=g,exports.TableRow=y,exports.useSortableData=function(e,t){void 0===t&&(t={key:"",order:"none"});var a=c.default.useState(t),r=a[0],n=a[1],l=e.slice();return c.default.useEffect((function(){n({key:t.key,order:t.order})}),[t.key,t.order]),{sortedData:c.default.useMemo((function(){return"none"===r.order?l:[].concat(e).sort((function(e,t){return f.default(e,r.key)<f.default(t,r.key)?"ascending"===r.order?-1:1:f.default(e,r.key)>f.default(t,r.key)?"ascending"===r.order?1:-1:0}))}),[e,l,r]),getSortableHeaderProps:function(e){var t=e.name,a=e.sortable,l=void 0===a||a,o=e.buttonProps,d=v(e,B);return b({name:t,sortable:l,sortConfig:r,sortableButtonProps:b({onClick:function(){return a="ascending",r.key===(e=t)&&"ascending"===r.order?a="descending":r.key===e&&"descending"===r.order&&(a="none"),void n({key:e,order:a});var e,a}},o)},d)},getSortableTableProps:function(e){var t=e.sortable,a=void 0===t||t,n=v(e,T);return b({sortable:a,sortConfig:r},n)}}},exports.useTableKeyboardNavigation=function(e,a){var r;void 0===e&&(e=0),void 0===a&&(a=!0);var n=t.useState(e),l=n[0],o=n[1],d=t.useState(0),s=d[0],u=d[1],i=c.default.useRef(null),f=null==i||null==(r=i.current)?void 0:r.contains(document.activeElement);c.default.useEffect((function(){var e;i&&i.current&&f&&(null==(e=i.current.childNodes[l].childNodes[0].parentElement)||e.focus())}),[l,f]);var v=c.default.useRef(null);return{getTableRowNavigationProps:function(t){t>=s&&u(t+1);for(var r=l?0:-1,n=arguments.length,d=new Array(n>1?n-1:0),c=1;c<n;c++)d[c-1]=arguments[c];return b({tabIndex:r,ref:v,onClick:function(){return o(t)},onKeyDown:function(t){var r=A(t,l,e,a);o(r)}},d)},getTableBodyNavigationProps:function(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];return b({ref:i},t)}}};
|
|
2
2
|
//# sourceMappingURL=table.cjs.production.min.js.map
|