@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.
@@ -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
- function _objectDestructuringEmpty(obj) {
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
- _ref$fixed = _ref.fixed,
55
- fixed = _ref$fixed === void 0 ? false : _ref$fixed,
56
- _ref$spacing = _ref.spacing,
57
- spacing = _ref$spacing === void 0 ? 'default' : _ref$spacing,
58
- _ref$sortable = _ref.sortable,
59
- sortable = _ref$sortable === void 0 ? false : _ref$sortable,
60
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
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
- props = _objectWithoutPropertiesLoose(_ref, _excluded$7);
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
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$6);
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({}, (_objectDestructuringEmpty(_ref), _ref));
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
- _ref$hover = _ref.hover,
106
- hover = _ref$hover === void 0 ? false : _ref$hover,
107
- _ref$active = _ref.active,
108
- active = _ref$active === void 0 ? false : _ref$active,
109
- _ref$error = _ref.error,
110
- error = _ref$error === void 0 ? false : _ref$error,
111
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$5);
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
- _ref$padding = _ref.padding,
127
- padding = _ref$padding === void 0 ? 'default' : _ref$padding,
128
- _ref$status = _ref.status,
129
- status = _ref$status === void 0 ? undefined : _ref$status,
130
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$4);
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
- _excluded2$1 = ["className"];
148
+ _excluded2$1 = ["className"];
139
149
  var HeaderCell = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
140
150
  var className = _ref.className,
141
- children = _ref.children,
142
- name = _ref.name,
143
- _ref$sortable = _ref.sortable,
144
- sortable = _ref$sortable === void 0 ? false : _ref$sortable,
145
- sortConfig = _ref.sortConfig,
146
- _ref$padding = _ref.padding,
147
- padding = _ref$padding === void 0 ? 'default' : _ref$padding,
148
- sortableButtonProps = _ref.sortableButtonProps,
149
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
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
- isCurrentlySorted = _React$useState[0],
152
- setIsCurrentlySorted = _React$useState[1];
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
- sortableButtonProps = _ref2.sortableButtonProps,
175
- isCurrentlySorted = _ref2.isCurrentlySorted,
176
- children = _ref2.children;
187
+ sortableButtonProps = _ref2.sortableButtonProps,
188
+ isCurrentlySorted = _ref2.isCurrentlySorted,
189
+ children = _ref2.children;
190
+
177
191
  var className = sortableButtonProps.className,
178
- rest = _objectWithoutPropertiesLoose(sortableButtonProps, _excluded2$1);
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
- _excluded2 = ["sortable"];
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
- sortConfig = _React$useState[0],
208
- setSortConfig = _React$useState[1];
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
- _ref$sortable = _ref.sortable,
245
- sortable = _ref$sortable === void 0 ? true : _ref$sortable,
246
- buttonProps = _ref.buttonProps,
247
- props = _objectWithoutPropertiesLoose(_ref, _excluded$2);
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
- sortable = _ref2$sortable === void 0 ? true : _ref2$sortable,
262
- props = _objectWithoutPropertiesLoose(_ref2, _excluded2);
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
- className = _ref.className,
279
- feedback = _ref.feedback,
280
- variant = _ref.variant,
281
- _ref$outlined = _ref.outlined,
282
- outlined = _ref$outlined === void 0 ? false : _ref$outlined,
283
- rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
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
- open = _ref$open === void 0 ? false : _ref$open,
302
- children = _ref.children,
303
- colSpan = _ref.colSpan;
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
- onClick = _ref.onClick,
315
- rest = _objectWithoutPropertiesLoose(_ref, _excluded);
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
- currentRow = _useState[0],
358
- setCurrentRow = _useState[1];
394
+ currentRow = _useState[0],
395
+ setCurrentRow = _useState[1];
396
+
359
397
  var _useState2 = React.useState(0),
360
- maxRow = _useState2[0],
361
- setMaxRow = _useState2[1];
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({},(function(e){if(null==e)throw new TypeError("Cannot destructure undefined")}(e),e));return c.default.createElement("tfoot",b({ref:t},a))})),y=["className","hover","active","error"],x=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,y);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"}))},T=["name","sortable","buttonProps"],B=["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=x,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,T);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,B);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)}}};
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