@entur/table 4.6.3 → 4.6.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/HeaderCell.d.ts +3 -1
- package/dist/styles.css +8 -8
- package/dist/table.cjs.development.js +57 -19
- 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 +58 -20
- package/dist/table.esm.js.map +1 -1
- package/dist/useSortableTable.d.ts +1 -1
- package/package.json +8 -7
package/dist/HeaderCell.d.ts
CHANGED
|
@@ -18,5 +18,7 @@ export type HeaderCellProps = {
|
|
|
18
18
|
sortConfig?: ExternalSortConfig;
|
|
19
19
|
/** Navnet det skal sorteres på. Benyttes via useSortableTable */
|
|
20
20
|
name?: string;
|
|
21
|
+
sortedAscendingAriaLabel?: string;
|
|
22
|
+
sortedDescendingAriaLabel?: string;
|
|
21
23
|
} & React.DetailedHTMLProps<React.ThHTMLAttributes<HTMLTableCellElement>, HTMLTableCellElement>;
|
|
22
|
-
export declare const HeaderCell: React.ForwardRefExoticComponent<Pick<HeaderCellProps, "name" | "sortable" | "sortConfig" | "padding" | "sortableButtonProps" | "key" | keyof React.ThHTMLAttributes<HTMLTableCellElement>> & React.RefAttributes<HTMLTableCellElement>>;
|
|
24
|
+
export declare const HeaderCell: React.ForwardRefExoticComponent<Pick<HeaderCellProps, "name" | "sortable" | "sortConfig" | "padding" | "sortableButtonProps" | "sortedAscendingAriaLabel" | "sortedDescendingAriaLabel" | "key" | keyof React.ThHTMLAttributes<HTMLTableCellElement>> & React.RefAttributes<HTMLTableCellElement>>;
|
package/dist/styles.css
CHANGED
|
@@ -187,14 +187,6 @@
|
|
|
187
187
|
}
|
|
188
188
|
/* DO NOT CHANGE!*/
|
|
189
189
|
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
190
|
-
.eds-expand-row-button__icon {
|
|
191
|
-
transition: transform ease-in-out 0.2s;
|
|
192
|
-
}
|
|
193
|
-
.eds-expand-row-button--open .eds-expand-row-button__icon {
|
|
194
|
-
transform: rotate(180deg);
|
|
195
|
-
}
|
|
196
|
-
/* DO NOT CHANGE!*/
|
|
197
|
-
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
198
190
|
.eds-editable-cell {
|
|
199
191
|
padding: 0.25rem 0.75rem;
|
|
200
192
|
}
|
|
@@ -310,3 +302,11 @@
|
|
|
310
302
|
.eds-table--small .eds-editable-cell .eds-form-control-wrapper .eds-form-control {
|
|
311
303
|
padding: calc(0.25rem - 0.125rem) calc(0.5rem - 0.0625rem);
|
|
312
304
|
}
|
|
305
|
+
/* DO NOT CHANGE!*/
|
|
306
|
+
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
307
|
+
.eds-expand-row-button__icon {
|
|
308
|
+
transition: transform ease-in-out 0.2s;
|
|
309
|
+
}
|
|
310
|
+
.eds-expand-row-button--open .eds-expand-row-button__icon {
|
|
311
|
+
transform: rotate(180deg);
|
|
312
|
+
}
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var utils = require('@entur/utils');
|
|
6
6
|
var React = require('react');
|
|
7
7
|
var classNames = require('classnames');
|
|
8
|
+
var a11y = require('@entur/a11y');
|
|
8
9
|
var icons = require('@entur/icons');
|
|
9
10
|
var get = require('lodash.get');
|
|
10
11
|
var form = require('@entur/form');
|
|
@@ -48,7 +49,7 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
48
49
|
return target;
|
|
49
50
|
}
|
|
50
51
|
|
|
51
|
-
var _excluded$8 = ["className", "fixed", "spacing", "sortable", "stickyHeader"];
|
|
52
|
+
var _excluded$8 = ["className", "fixed", "spacing", "sortable", "changeSortDescription", "stickyHeader"];
|
|
52
53
|
var Table = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
53
54
|
var className = _ref.className,
|
|
54
55
|
_ref$fixed = _ref.fixed,
|
|
@@ -57,9 +58,12 @@ var Table = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, re
|
|
|
57
58
|
spacing = _ref$spacing === void 0 ? 'default' : _ref$spacing,
|
|
58
59
|
_ref$sortable = _ref.sortable,
|
|
59
60
|
sortable = _ref$sortable === void 0 ? false : _ref$sortable,
|
|
61
|
+
_ref$changeSortDescri = _ref.changeSortDescription,
|
|
62
|
+
changeSortDescription = _ref$changeSortDescri === void 0 ? 'Tabelloverskrifter med knapper kan trykkes på for å endre sortering,' : _ref$changeSortDescri,
|
|
60
63
|
_ref$stickyHeader = _ref.stickyHeader,
|
|
61
64
|
stickyHeader = _ref$stickyHeader === void 0 ? false : _ref$stickyHeader,
|
|
62
65
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
|
|
66
|
+
var sortableHeaderId = utils.useRandomId('sortable-header');
|
|
63
67
|
var tableRef = React.useRef(null);
|
|
64
68
|
React.useEffect(function () {
|
|
65
69
|
if (stickyHeader) {
|
|
@@ -84,8 +88,8 @@ var Table = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, re
|
|
|
84
88
|
observerElement.remove();
|
|
85
89
|
};
|
|
86
90
|
}
|
|
87
|
-
}, []);
|
|
88
|
-
return React__default["default"].createElement("table", _extends({
|
|
91
|
+
}, [stickyHeader]);
|
|
92
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null, React__default["default"].createElement("table", _extends({
|
|
89
93
|
className: classNames__default["default"]('eds-table', {
|
|
90
94
|
'eds-table--fixed': fixed
|
|
91
95
|
}, {
|
|
@@ -97,8 +101,11 @@ var Table = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, re
|
|
|
97
101
|
}, {
|
|
98
102
|
'eds-table--sticky-header': stickyHeader
|
|
99
103
|
}, className),
|
|
100
|
-
ref: utils.mergeRefs(ref, tableRef)
|
|
101
|
-
|
|
104
|
+
ref: utils.mergeRefs(ref, tableRef),
|
|
105
|
+
"aria-describedby": sortable ? sortableHeaderId : undefined
|
|
106
|
+
}, rest)), sortable && React__default["default"].createElement(a11y.VisuallyHidden, {
|
|
107
|
+
id: sortableHeaderId
|
|
108
|
+
}, changeSortDescription));
|
|
102
109
|
});
|
|
103
110
|
|
|
104
111
|
var _excluded$7 = ["className"];
|
|
@@ -163,7 +170,7 @@ var DataCell = /*#__PURE__*/React__default["default"].forwardRef(function (_ref,
|
|
|
163
170
|
}, rest));
|
|
164
171
|
});
|
|
165
172
|
|
|
166
|
-
var _excluded$3 = ["className", "children", "name", "sortable", "sortConfig", "padding", "sortableButtonProps"],
|
|
173
|
+
var _excluded$3 = ["className", "children", "name", "sortable", "sortConfig", "padding", "sortableButtonProps", "sortedAscendingAriaLabel", "sortedDescendingAriaLabel"],
|
|
167
174
|
_excluded2$1 = ["className"];
|
|
168
175
|
var HeaderCell = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
|
|
169
176
|
var className = _ref.className,
|
|
@@ -175,6 +182,10 @@ var HeaderCell = /*#__PURE__*/React__default["default"].forwardRef(function (_re
|
|
|
175
182
|
_ref$padding = _ref.padding,
|
|
176
183
|
padding = _ref$padding === void 0 ? 'default' : _ref$padding,
|
|
177
184
|
sortableButtonProps = _ref.sortableButtonProps,
|
|
185
|
+
_ref$sortedAscendingA = _ref.sortedAscendingAriaLabel,
|
|
186
|
+
sortedAscendingAriaLabel = _ref$sortedAscendingA === void 0 ? ', sortert stigende' : _ref$sortedAscendingA,
|
|
187
|
+
_ref$sortedDescending = _ref.sortedDescendingAriaLabel,
|
|
188
|
+
sortedDescendingAriaLabel = _ref$sortedDescending === void 0 ? ', sortert synkende' : _ref$sortedDescending,
|
|
178
189
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
179
190
|
var _React$useState = React__default["default"].useState(false),
|
|
180
191
|
isCurrentlySorted = _React$useState[0],
|
|
@@ -182,7 +193,7 @@ var HeaderCell = /*#__PURE__*/React__default["default"].forwardRef(function (_re
|
|
|
182
193
|
React__default["default"].useEffect(function () {
|
|
183
194
|
sortConfig && name && setIsCurrentlySorted(sortConfig && name === sortConfig.key);
|
|
184
195
|
}, [sortConfig, name]);
|
|
185
|
-
var ariaSort = isCurrentlySorted ? sortConfig && sortConfig.order :
|
|
196
|
+
var ariaSort = isCurrentlySorted ? sortConfig && sortConfig.order : undefined;
|
|
186
197
|
return React__default["default"].createElement("th", _extends({
|
|
187
198
|
className: classNames__default["default"]('eds-table__header-cell', className, {
|
|
188
199
|
'eds-table__header-cell--sortable': sortable,
|
|
@@ -195,32 +206,58 @@ var HeaderCell = /*#__PURE__*/React__default["default"].forwardRef(function (_re
|
|
|
195
206
|
}, rest), sortable && sortConfig && sortableButtonProps ? React__default["default"].createElement(SortableHeaderCellButton, {
|
|
196
207
|
sortableButtonProps: sortableButtonProps,
|
|
197
208
|
sortConfig: sortConfig,
|
|
198
|
-
isCurrentlySorted: isCurrentlySorted
|
|
209
|
+
isCurrentlySorted: isCurrentlySorted,
|
|
210
|
+
ariaSort: ariaSort,
|
|
211
|
+
sortedAscendingAriaLabel: sortedAscendingAriaLabel,
|
|
212
|
+
sortedDescendingAriaLabel: sortedDescendingAriaLabel
|
|
199
213
|
}, children) : children);
|
|
200
214
|
});
|
|
201
215
|
var SortableHeaderCellButton = function SortableHeaderCellButton(_ref2) {
|
|
202
216
|
var sortConfig = _ref2.sortConfig,
|
|
203
217
|
sortableButtonProps = _ref2.sortableButtonProps,
|
|
204
218
|
isCurrentlySorted = _ref2.isCurrentlySorted,
|
|
205
|
-
children = _ref2.children
|
|
219
|
+
children = _ref2.children,
|
|
220
|
+
ariaSort = _ref2.ariaSort,
|
|
221
|
+
sortedAscendingAriaLabel = _ref2.sortedAscendingAriaLabel,
|
|
222
|
+
sortedDescendingAriaLabel = _ref2.sortedDescendingAriaLabel;
|
|
223
|
+
var _useState = React.useState(''),
|
|
224
|
+
sortedAriaInfo = _useState[0],
|
|
225
|
+
setSortedAriaInfo = _useState[1];
|
|
206
226
|
var className = sortableButtonProps.className,
|
|
207
227
|
rest = _objectWithoutPropertiesLoose(sortableButtonProps, _excluded2$1);
|
|
228
|
+
var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
|
|
229
|
+
React.useEffect(function () {
|
|
230
|
+
var DISMISS_SORT_INFO_TIME = 3000;
|
|
231
|
+
if (sortConfig.order == 'ascending') {
|
|
232
|
+
setSortedAriaInfo(sortedAscendingAriaLabel);
|
|
233
|
+
} else if (sortConfig.order == 'descending') {
|
|
234
|
+
setSortedAriaInfo(sortedDescendingAriaLabel);
|
|
235
|
+
}
|
|
236
|
+
var dismissAriaTimer = setTimeout(function () {
|
|
237
|
+
setSortedAriaInfo('');
|
|
238
|
+
if (isFirefox) setSortedAriaInfo(', sort ' + sortConfig.order);
|
|
239
|
+
}, DISMISS_SORT_INFO_TIME);
|
|
240
|
+
return function () {
|
|
241
|
+
return clearTimeout(dismissAriaTimer);
|
|
242
|
+
};
|
|
243
|
+
}, [sortConfig.order]);
|
|
208
244
|
return React__default["default"].createElement("button", _extends({
|
|
209
245
|
className: classNames__default["default"]('eds-table__header-cell-button', className),
|
|
210
|
-
type: "button"
|
|
246
|
+
type: "button",
|
|
247
|
+
"aria-sort": ariaSort
|
|
211
248
|
}, rest), children, (!isCurrentlySorted || sortConfig.order === 'none') && React__default["default"].createElement(icons.UnsortedIcon, {
|
|
212
|
-
size: "
|
|
249
|
+
size: "1rem",
|
|
213
250
|
className: "eds-table__header-cell-button-icon",
|
|
214
|
-
"aria-
|
|
251
|
+
"aria-hidden": "true"
|
|
215
252
|
}), isCurrentlySorted && sortConfig.order === 'ascending' && React__default["default"].createElement(icons.UpArrowIcon, {
|
|
216
|
-
size: "
|
|
253
|
+
size: "1rem",
|
|
217
254
|
className: "eds-table__header-cell-button-icon",
|
|
218
|
-
"aria-
|
|
255
|
+
"aria-hidden": "true"
|
|
219
256
|
}), isCurrentlySorted && sortConfig.order === 'descending' && React__default["default"].createElement(icons.DownArrowIcon, {
|
|
220
|
-
size: "
|
|
257
|
+
size: "1rem",
|
|
221
258
|
className: "eds-table__header-cell-button-icon",
|
|
222
|
-
"aria-
|
|
223
|
-
}));
|
|
259
|
+
"aria-hidden": "true"
|
|
260
|
+
}), React__default["default"].createElement(a11y.VisuallyHidden, null, isCurrentlySorted && sortedAriaInfo));
|
|
224
261
|
};
|
|
225
262
|
|
|
226
263
|
var _excluded$2 = ["name", "sortable", "buttonProps"],
|
|
@@ -286,8 +323,9 @@ function useSortableData(tableData, externalSortConfig) {
|
|
|
286
323
|
}, buttonProps)
|
|
287
324
|
}, props);
|
|
288
325
|
};
|
|
289
|
-
var getSortableTableProps = function getSortableTableProps(
|
|
290
|
-
var _ref2
|
|
326
|
+
var getSortableTableProps = function getSortableTableProps(_temp) {
|
|
327
|
+
var _ref2 = _temp === void 0 ? {} : _temp,
|
|
328
|
+
_ref2$sortable = _ref2.sortable,
|
|
291
329
|
sortable = _ref2$sortable === void 0 ? true : _ref2$sortable,
|
|
292
330
|
props = _objectWithoutPropertiesLoose(_ref2, _excluded2);
|
|
293
331
|
return _extends({
|
|
@@ -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.ts","../src/index.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { mergeRefs } from '@entur/utils';\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 /** Om header-raden skal bli værende på skjermen når man skroller tabellen\n * @default false\n */\n stickyHeader?: 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 stickyHeader = false,\n ...rest\n },\n ref,\n ) => {\n const tableRef = useRef<HTMLTableElement>(null);\n\n useEffect(() => {\n if (stickyHeader) {\n /* We check when an inserted div above the header \n is outside our scrolling container to determine when\n the table header becomes sticky. This is necessary\n to conditionally add our box-shadow when the \n header is overlapping table rows */\n const tableElement = tableRef.current;\n const observerElement = document.createElement('div');\n observerElement.classList.add('sticky-observer');\n\n tableElement?.parentNode?.insertBefore(observerElement, tableElement);\n\n const observer = new IntersectionObserver(\n entries => {\n tableElement?.classList.toggle(\n 'eds-table--sticky-header--active',\n !entries[0].isIntersecting,\n );\n },\n { threshold: [0, 1] },\n );\n\n observer.observe(observerElement);\n\n return () => {\n observer.unobserve(observerElement);\n observerElement.remove();\n };\n }\n }, []);\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 { 'eds-table--sticky-header': stickyHeader },\n className,\n )}\n ref={mergeRefs(ref, tableRef)}\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 { useState, DetailedHTMLProps, ButtonHTMLAttributes } 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 tableData: 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] = useState(externalSortConfig);\n\n const onSortRequested = (key: string) => {\n const sortingNewColumn = key !== sortConfig.key;\n if (sortingNewColumn || sortConfig.order === 'none')\n return setSortConfig({ key, order: 'ascending' });\n if (sortConfig.order === 'ascending')\n return setSortConfig({ key, order: 'descending' });\n if (sortConfig.order === 'descending')\n return setSortConfig({ key, order: 'none' });\n };\n\n const tableSortedAscending = [...tableData].sort((a: any, b: any) => {\n const valueOfA = get(a, sortConfig.key, a);\n const valueOfB = get(b, sortConfig.key, b);\n\n const comparableAValue =\n typeof valueOfA === 'string' ? valueOfA.toLowerCase() : valueOfA;\n const comparableBValue =\n typeof valueOfB === 'string' ? valueOfB.toLowerCase() : valueOfB;\n\n if (comparableAValue < comparableBValue) return -1;\n if (comparableAValue > comparableBValue) return 1;\n return 0;\n });\n\n const getSortedData: () => T[] = () => {\n if (sortConfig.order === 'none') {\n return tableData;\n }\n if (sortConfig.order === 'descending') {\n return [...tableSortedAscending].reverse();\n }\n return tableSortedAscending;\n };\n\n const sortedData = getSortedData();\n\n const 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 const 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 DetailedHTMLProps<\n 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 { useState, useEffect, useRef, KeyboardEvent } from 'react';\nimport { TableBodyProps, TableRowProps } from './index';\n\nfunction onTableKeypress(\n event: 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 = useRef<HTMLTableSectionElement>(null);\n const tableHasFocus = tableBodyRef?.current?.contains(document.activeElement);\n\n 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 = 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: 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","stickyHeader","rest","_excluded","tableRef","useRef","useEffect","tableElement","current","observerElement","document","createElement","classList","add","parentNode","insertBefore","observer","IntersectionObserver","entries","toggle","isIntersecting","threshold","observe","unobserve","remove","classNames","mergeRefs","TableHead","props","TableBody","TableFooter","TableRow","hover","active","error","DataCell","padding","status","undefined","HeaderCell","children","name","sortConfig","sortableButtonProps","useState","isCurrentlySorted","setIsCurrentlySorted","key","ariaSort","order","SortableHeaderCellButton","_excluded2","type","UnsortedIcon","size","UpArrowIcon","DownArrowIcon","useSortableData","tableData","externalSortConfig","setSortConfig","onSortRequested","sortingNewColumn","tableSortedAscending","sort","a","b","valueOfA","get","valueOfB","comparableAValue","toLowerCase","comparableBValue","getSortedData","reverse","sortedData","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","tableHasFocus","contains","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.ts","../src/index.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { useRandomId, mergeRefs } from '@entur/utils';\nimport { VisuallyHidden } from '@entur/a11y';\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 /** Om header-raden skal bli værende på skjermen når man skroller tabellen\n * @default false\n */\n stickyHeader?: 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 changeSortDescription = 'Tabelloverskrifter med knapper kan trykkes på for å endre sortering,',\n stickyHeader = false,\n ...rest\n },\n ref,\n ) => {\n const sortableHeaderId = useRandomId('sortable-header');\n\n const tableRef = useRef<HTMLTableElement>(null);\n\n useEffect(() => {\n if (stickyHeader) {\n /* We check when an inserted div above the header \n is outside our scrolling container to determine when\n the table header becomes sticky. This is necessary\n to conditionally add our box-shadow when the \n header is overlapping table rows */\n const tableElement = tableRef.current;\n const observerElement = document.createElement('div');\n observerElement.classList.add('sticky-observer');\n\n tableElement?.parentNode?.insertBefore(observerElement, tableElement);\n\n const observer = new IntersectionObserver(\n entries => {\n tableElement?.classList.toggle(\n 'eds-table--sticky-header--active',\n !entries[0].isIntersecting,\n );\n },\n { threshold: [0, 1] },\n );\n\n observer.observe(observerElement);\n\n return () => {\n observer.unobserve(observerElement);\n observerElement.remove();\n };\n }\n }, [stickyHeader]);\n\n return (\n <>\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 { 'eds-table--sticky-header': stickyHeader },\n className,\n )}\n ref={mergeRefs(ref, tableRef)}\n aria-describedby={sortable ? sortableHeaderId : undefined}\n {...rest}\n />\n {sortable && (\n <VisuallyHidden id={sortableHeaderId}>\n {changeSortDescription}\n </VisuallyHidden>\n )}\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, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\n\nimport { DownArrowIcon, UpArrowIcon, UnsortedIcon } from '@entur/icons';\n\nimport { ExternalSortConfig } from '.';\n\nimport './HeaderCell.scss';\nimport { VisuallyHidden } from '@entur/a11y';\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 sortedAscendingAriaLabel?: string;\n sortedDescendingAriaLabel?: 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 sortedAscendingAriaLabel = ', sortert stigende',\n sortedDescendingAriaLabel = ', sortert synkende',\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 : undefined;\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 ariaSort={ariaSort}\n sortedAscendingAriaLabel={sortedAscendingAriaLabel}\n sortedDescendingAriaLabel={sortedDescendingAriaLabel}\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 ariaSort?: 'none' | 'ascending' | 'descending' | 'other' | undefined;\n sortedAscendingAriaLabel?: string;\n sortedDescendingAriaLabel?: string;\n};\n\nconst SortableHeaderCellButton: React.FC<SortableHeaderCellButtonProps> = ({\n sortConfig,\n sortableButtonProps,\n isCurrentlySorted,\n children,\n ariaSort,\n sortedAscendingAriaLabel,\n sortedDescendingAriaLabel,\n}) => {\n const [sortedAriaInfo, setSortedAriaInfo] = useState<string | undefined>('');\n\n const { className, ...rest } = sortableButtonProps;\n\n const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n\n useEffect(() => {\n const DISMISS_SORT_INFO_TIME = 3000;\n if (sortConfig.order == 'ascending') {\n setSortedAriaInfo(sortedAscendingAriaLabel);\n } else if (sortConfig.order == 'descending') {\n setSortedAriaInfo(sortedDescendingAriaLabel);\n }\n const dismissAriaTimer = setTimeout(() => {\n setSortedAriaInfo('');\n if (isFirefox) setSortedAriaInfo(', sort ' + sortConfig.order);\n }, DISMISS_SORT_INFO_TIME);\n\n return () => clearTimeout(dismissAriaTimer);\n }, [sortConfig.order]);\n\n return (\n <button\n className={classNames('eds-table__header-cell-button', className)}\n type=\"button\"\n aria-sort={ariaSort}\n {...rest}\n >\n {children}\n {(!isCurrentlySorted || sortConfig.order === 'none') && (\n <UnsortedIcon\n size=\"1rem\"\n className=\"eds-table__header-cell-button-icon\"\n aria-hidden=\"true\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'ascending' && (\n <UpArrowIcon\n size=\"1rem\"\n className=\"eds-table__header-cell-button-icon\"\n aria-hidden=\"true\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'descending' && (\n <DownArrowIcon\n size=\"1rem\"\n className=\"eds-table__header-cell-button-icon\"\n aria-hidden=\"true\"\n />\n )}\n <VisuallyHidden>{isCurrentlySorted && sortedAriaInfo}</VisuallyHidden>\n </button>\n );\n};\n","import { useState, DetailedHTMLProps, ButtonHTMLAttributes } 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 tableData: T[],\n externalSortConfig: ExternalSortConfig = { key: '', order: 'none' },\n): {\n sortedData: T[];\n getSortableHeaderProps: (\n args: SortableHeaderProps,\n ) => SortableHeaderReturnProps;\n getSortableTableProps: (\n args?: SortableTableProps,\n ) => SortableTableReturnProps;\n} {\n const [sortConfig, setSortConfig] = useState(externalSortConfig);\n\n const onSortRequested = (key: string) => {\n const sortingNewColumn = key !== sortConfig.key;\n if (sortingNewColumn || sortConfig.order === 'none')\n return setSortConfig({ key, order: 'ascending' });\n if (sortConfig.order === 'ascending')\n return setSortConfig({ key, order: 'descending' });\n if (sortConfig.order === 'descending')\n return setSortConfig({ key, order: 'none' });\n };\n\n const tableSortedAscending = [...tableData].sort((a: any, b: any) => {\n const valueOfA = get(a, sortConfig.key, a);\n const valueOfB = get(b, sortConfig.key, b);\n\n const comparableAValue =\n typeof valueOfA === 'string' ? valueOfA.toLowerCase() : valueOfA;\n const comparableBValue =\n typeof valueOfB === 'string' ? valueOfB.toLowerCase() : valueOfB;\n\n if (comparableAValue < comparableBValue) return -1;\n if (comparableAValue > comparableBValue) return 1;\n return 0;\n });\n\n const getSortedData: () => T[] = () => {\n if (sortConfig.order === 'none') {\n return tableData;\n }\n if (sortConfig.order === 'descending') {\n return [...tableSortedAscending].reverse();\n }\n return tableSortedAscending;\n };\n\n const sortedData = getSortedData();\n\n const 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 const 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 DetailedHTMLProps<\n 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 { useState, useEffect, useRef, KeyboardEvent } from 'react';\nimport { TableBodyProps, TableRowProps } from './index';\n\nfunction onTableKeypress(\n event: 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 = useRef<HTMLTableSectionElement>(null);\n const tableHasFocus = tableBodyRef?.current?.contains(document.activeElement);\n\n 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 = 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: 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","changeSortDescription","stickyHeader","rest","_excluded","sortableHeaderId","useRandomId","tableRef","useRef","useEffect","tableElement","current","observerElement","document","createElement","classList","add","parentNode","insertBefore","observer","IntersectionObserver","entries","toggle","isIntersecting","threshold","observe","unobserve","remove","Fragment","classNames","mergeRefs","undefined","VisuallyHidden","id","TableHead","props","TableBody","TableFooter","TableRow","hover","active","error","DataCell","padding","status","HeaderCell","children","name","sortConfig","sortableButtonProps","sortedAscendingAriaLabel","sortedDescendingAriaLabel","useState","isCurrentlySorted","setIsCurrentlySorted","key","ariaSort","order","SortableHeaderCellButton","sortedAriaInfo","setSortedAriaInfo","_excluded2","isFirefox","navigator","userAgent","toLowerCase","indexOf","DISMISS_SORT_INFO_TIME","dismissAriaTimer","setTimeout","clearTimeout","type","UnsortedIcon","size","UpArrowIcon","DownArrowIcon","useSortableData","tableData","externalSortConfig","setSortConfig","onSortRequested","sortingNewColumn","tableSortedAscending","sort","a","b","valueOfA","get","valueOfB","comparableAValue","comparableBValue","getSortedData","reverse","sortedData","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","tableHasFocus","contains","activeElement","childNodes","parentElement","focus","getTableBodyNavigationProps","tableRowRef","getTableRowNavigationProps","row","tabIndex","onKeyDown","e","newCell","warnAboutMissingStyles"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwBO,IAAMA,KAAK,gBAAGC,yBAAK,CAACC,UAAU,CACnC,UAUEC,IAAAA,EAAAA,GAAG,EACD;EAAA,IATAC,SAAS,QAATA,SAAS;AAAA,IAAA,UAAA,GAAA,IAAA,CACTC,KAAK;AAALA,IAAAA,KAAK,2BAAG,KAAK,GAAA,UAAA;AAAA,IAAA,YAAA,GAAA,IAAA,CACbC,OAAO;AAAPA,IAAAA,OAAO,6BAAG,SAAS,GAAA,YAAA;AAAA,IAAA,aAAA,GAAA,IAAA,CACnBC,QAAQ;AAARA,IAAAA,QAAQ,8BAAG,KAAK,GAAA,aAAA;AAAA,IAAA,qBAAA,GAAA,IAAA,CAChBC,qBAAqB;AAArBA,IAAAA,qBAAqB,sCAAG,sEAAsE,GAAA,qBAAA;AAAA,IAAA,iBAAA,GAAA,IAAA,CAC9FC,YAAY;AAAZA,IAAAA,YAAY,kCAAG,KAAK,GAAA,iBAAA;IACjBC,IAAI,GAAA,6BAAA,CAAA,IAAA,EAAAC,WAAA,CAAA,CAAA;AAIT,EAAA,IAAMC,gBAAgB,GAAGC,iBAAW,CAAC,iBAAiB,CAAC,CAAA;AAEvD,EAAA,IAAMC,QAAQ,GAAGC,YAAM,CAAmB,IAAI,CAAC,CAAA;AAE/CC,EAAAA,eAAS,CAAC,YAAK;AACb,IAAA,IAAIP,YAAY,EAAE;AAAA,MAAA,IAAA,qBAAA,CAAA;AAChB;;;;AAIqC;AACrC,MAAA,IAAMQ,YAAY,GAAGH,QAAQ,CAACI,OAAO,CAAA;AACrC,MAAA,IAAMC,eAAe,GAAGC,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC,CAAA;AACrDF,MAAAA,eAAe,CAACG,SAAS,CAACC,GAAG,CAAC,iBAAiB,CAAC,CAAA;MAEhDN,YAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAA,qBAAA,GAAZA,YAAY,CAAEO,UAAU,KAAA,IAAA,GAAA,KAAA,CAAA,GAAxB,qBAA0BC,CAAAA,YAAY,CAACN,eAAe,EAAEF,YAAY,CAAC,CAAA;AAErE,MAAA,IAAMS,QAAQ,GAAG,IAAIC,oBAAoB,CACvC,UAAAC,OAAO,EAAG;AACRX,QAAAA,YAAY,oBAAZA,YAAY,CAAEK,SAAS,CAACO,MAAM,CAC5B,kCAAkC,EAClC,CAACD,OAAO,CAAC,CAAC,CAAC,CAACE,cAAc,CAC3B,CAAA;AACH,OAAC,EACD;AAAEC,QAAAA,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;AAAG,OAAA,CACtB,CAAA;AAEDL,MAAAA,QAAQ,CAACM,OAAO,CAACb,eAAe,CAAC,CAAA;AAEjC,MAAA,OAAO,YAAK;AACVO,QAAAA,QAAQ,CAACO,SAAS,CAACd,eAAe,CAAC,CAAA;QACnCA,eAAe,CAACe,MAAM,EAAE,CAAA;OACzB,CAAA;AACF,KAAA;AACH,GAAC,EAAE,CAACzB,YAAY,CAAC,CAAC,CAAA;AAElB,EAAA,OACER,yBAAA,CAAAoB,aAAA,CAAApB,yBAAA,CAAAkC,QAAA,EAAA,IAAA,EACElC,yBAAA,CAAAoB,aAAA,CAAA,OAAA,EAAA,QAAA,CAAA;AACEjB,IAAAA,SAAS,EAAEgC,8BAAU,CACnB,WAAW,EACX;AAAE,MAAA,kBAAkB,EAAE/B,KAAAA;AAAO,KAAA,EAC7B;MAAE,mBAAmB,EAAEC,OAAO,KAAK,QAAA;AAAU,KAAA,EAC7C;MAAE,kBAAkB,EAAEA,OAAO,KAAK,OAAA;AAAS,KAAA,EAC3C;AAAE,MAAA,qBAAqB,EAAEC,QAAAA;AAAQ,KAAE,EACnC;AAAE,MAAA,0BAA0B,EAAEE,YAAAA;KAAc,EAC5CL,SAAS,CACV;AACDD,IAAAA,GAAG,EAAEkC,eAAS,CAAClC,GAAG,EAAEW,QAAQ,CAAC;AAAA,IAAA,kBAAA,EACXP,QAAQ,GAAGK,gBAAgB,GAAG0B,SAAAA;GAC5C5B,EAAAA,IAAI,CACR,CAAA,EACDH,QAAQ,IACPN,yBAAC,CAAAoB,aAAA,CAAAkB,mBAAc;AAACC,IAAAA,EAAE,EAAE5B,gBAAAA;GAAgB,EACjCJ,qBAAqB,CAEzB,CACA,CAAA;AAEP,CAAC;;;ACnFI,IAAMiC,SAAS,gBAAGxC,yBAAK,CAACC,UAAU,CAGvC,gBAA0BC,GAAG,EAAA;EAAA,IAA1BC,SAAS,QAATA,SAAS;IAAKsC,KAAK,GAAA,6BAAA,CAAA,IAAA,EAAA/B,WAAA,CAAA,CAAA;AAAA,EAAA,OACtBV;AACEG,IAAAA,SAAS,EAAEgC,8BAAU,CAAC,iBAAiB,EAAEhC,SAAS,CAAC;AACnDD,IAAAA,GAAG,EAAEA,GAAAA;AAAG,GAAA,EACJuC,KAAK,CACT,CAAA,CAAA;AAAA,CACH;;;ACRM,IAAMC,SAAS,gBAAG1C,yBAAK,CAACC,UAAU,CAGvC,gBAAyBC,GAAG,EAAA;EAAA,IAAzBC,SAAS,QAATA,SAAS;IAAKM,IAAI,GAAA,6BAAA,CAAA,IAAA,EAAAC,WAAA,CAAA,CAAA;AAAA,EAAA,OACrBV;AACEG,IAAAA,SAAS,EAAEgC,8BAAU,CAAC,iBAAiB,EAAEhC,SAAS,CAAC;AACnDD,IAAAA,GAAG,EAAEA,GAAAA;AAAG,GAAA,EACJO,IAAI,CACR,CAAA,CAAA;AAAA,CACH;;ACbM,IAAMkC,WAAW,gBAAG3C,yBAAK,CAACC,UAAU,CAGzC,gBAAeC,GAAG,EAAA;AAAA,EAAA,IAAZuC,KAAK,GAAA,QAAA,CAAA,EAAA,GAAA,yBAAA,CAAA,IAAA,CAAA,EAAA,IAAA,EAAA,CAAA;AAAA,EAAA,OAAYzC,yBAAO,CAAAoB,aAAA,CAAA,OAAA,EAAA,QAAA,CAAA;AAAAlB,IAAAA,GAAG,EAAEA,GAAAA;AAAG,GAAA,EAAMuC,KAAK,CAAI,CAAA,CAAA;AAAA,CAAC;;;ACajD,IAAMG,QAAQ,gBAAG5C,yBAAK,CAACC,UAAU,CACtC,gBAEEC,GAAmC,EAAA;EAAA,IADjCC,SAAS,QAATA,SAAS;AAAA,IAAA,UAAA,GAAA,IAAA,CAAE0C,KAAK;AAALA,IAAAA,KAAK,2BAAG,KAAK,GAAA,UAAA;AAAA,IAAA,WAAA,GAAA,IAAA,CAAEC,MAAM;AAANA,IAAAA,MAAM,4BAAG,KAAK,GAAA,WAAA;AAAA,IAAA,UAAA,GAAA,IAAA,CAAEC,KAAK;AAALA,IAAAA,KAAK,2BAAG,KAAK,GAAA,UAAA;IAAKtC,IAAI,GAAA,6BAAA,CAAA,IAAA,EAAAC,WAAA,CAAA,CAAA;AAAA,EAAA,OAGlEV,yBAAA,CAAAoB,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AACEjB,IAAAA,SAAS,EAAEgC,8BAAU,CAAC,gBAAgB,EAAEhC,SAAS,EAAE;AACjD,MAAA,uBAAuB,EAAE0C,KAAK;AAC9B,MAAA,wBAAwB,EAAEC,MAAM;AAChC,MAAA,uBAAuB,EAAEC,KAAAA;KAC1B,CAAC;AACF7C,IAAAA,GAAG,EAAEA,GAAAA;AAAG,GAAA,EACJO,IAAI,CACR,CAAA,CAAA;AAAA,CACH;;;ACvBI,IAAMuC,QAAQ,gBAAGhD,yBAAK,CAACC,UAAU,CAItC,gBAEEC,GAAwC,EAAA;AAAA,EAAA,IAAA,WAAA,CAAA;EAAA,IADtCC,SAAS,QAATA,SAAS;AAAA,IAAA,YAAA,GAAA,IAAA,CAAE8C,OAAO;AAAPA,IAAAA,OAAO,6BAAG,SAAS,GAAA,YAAA;AAAA,IAAA,WAAA,GAAA,IAAA,CAAEC,MAAM;AAANA,IAAAA,MAAM,4BAAGb,SAAS,GAAA,WAAA;IAAK5B,IAAI,GAAA,6BAAA,CAAA,IAAA,EAAAC,WAAA,CAAA,CAAA;AAAA,EAAA,OAG7DV,yBACE,CAAAoB,aAAA,CAAA,IAAA,EAAA,QAAA,CAAA;AAAAlB,IAAAA,GAAG,EAAEA,GAAG;IACRC,SAAS,EAAEgC,8BAAU,CAAC,sBAAsB,EAAEhC,SAAS,GAAA,WAAA,GAAA,EAAA,EAAA,WAAA,CAAA,+BAAA,GACpB+C,MAAM,CAAA,GAAKA,MAAM,EAAA,WAAA,CAClD,wCAAwC,CAAA,GAAED,OAAO,KAAK,UAAU,EAAA,WAAA,CAChE,qCAAqC,CAAA,GAAEA,OAAO,KAAK,OAAO,EAAA,WAAA,CAC1D,6CAA6C,CAAA,GAC3CA,OAAO,KAAK,eAAe,EAAA,WAAA,EAAA;AAC7B,GAAA,EACExC,IAAI,CACR,CAAA,CAAA;AAAA,CACH;;;;ACGI,IAAM0C,UAAU,gBAAGnD,yBAAK,CAACC,UAAU,CAIxC,UAaEC,IAAAA,EAAAA,GAAG,EACD;EAAA,IAZAC,SAAS,QAATA,SAAS;AACTiD,IAAAA,QAAQ,QAARA,QAAQ;AACRC,IAAAA,IAAI,QAAJA,IAAI;AAAA,IAAA,aAAA,GAAA,IAAA,CACJ/C,QAAQ;AAARA,IAAAA,QAAQ,8BAAG,KAAK,GAAA,aAAA;AAChBgD,IAAAA,UAAU,QAAVA,UAAU;AAAA,IAAA,YAAA,GAAA,IAAA,CACVL,OAAO;AAAPA,IAAAA,OAAO,6BAAG,SAAS,GAAA,YAAA;AACnBM,IAAAA,mBAAmB,QAAnBA,mBAAmB;AAAA,IAAA,qBAAA,GAAA,IAAA,CACnBC,wBAAwB;AAAxBA,IAAAA,wBAAwB,sCAAG,oBAAoB,GAAA,qBAAA;AAAA,IAAA,qBAAA,GAAA,IAAA,CAC/CC,yBAAyB;AAAzBA,IAAAA,yBAAyB,sCAAG,oBAAoB,GAAA,qBAAA;IAC7ChD,IAAI,GAAA,6BAAA,CAAA,IAAA,EAAAC,WAAA,CAAA,CAAA;AAIT,EAAA,IAAA,eAAA,GACEV,yBAAK,CAAC0D,QAAQ,CAAU,KAAK,CAAC;IADzBC,iBAAiB,GAAA,eAAA,CAAA,CAAA,CAAA;IAAEC,oBAAoB,GAAA,eAAA,CAAA,CAAA,CAAA,CAAA;EAE9C5D,yBAAK,CAACe,SAAS,CAAC,YAAK;AACnBuC,IAAAA,UAAU,IACRD,IAAI,IACJO,oBAAoB,CAACN,UAAU,IAAID,IAAI,KAAKC,UAAU,CAACO,GAAG,CAAC,CAAA;AAC/D,GAAC,EAAE,CAACP,UAAU,EAAED,IAAI,CAAC,CAAC,CAAA;EACtB,IAAMS,QAAQ,GAAGH,iBAAiB,GAC9BL,UAAU,IAAIA,UAAU,CAACS,KAAK,GAC9B1B,SAAS,CAAA;AAEb,EAAA,OACErC;AACEG,IAAAA,SAAS,EAAEgC,8BAAU,CAAC,wBAAwB,EAAEhC,SAAS,EAAE;AACzD,MAAA,kCAAkC,EAAEG,QAAQ;MAC5C,uCAAuC,EAAE2C,OAAO,KAAK,OAAO;MAC5D,0CAA0C,EAAEA,OAAO,KAAK,UAAU;MAClE,+CAA+C,EAC7CA,OAAO,KAAK,eAAA;KACf,CAAC;AAAA,IAAA,WAAA,EACSa,QAAQ;AACnB5D,IAAAA,GAAG,EAAEA,GAAAA;AAAG,GAAA,EACJO,IAAI,CAAA,EAEPH,QAAQ,IAAIgD,UAAU,IAAIC,mBAAmB,GAC5CvD,yBAAC,CAAAoB,aAAA,CAAA4C,wBAAwB,EACvB;AAAAT,IAAAA,mBAAmB,EAAEA,mBAAmB;AACxCD,IAAAA,UAAU,EAAEA,UAAU;AACtBK,IAAAA,iBAAiB,EAAEA,iBAAiB;AACpCG,IAAAA,QAAQ,EAAEA,QAAQ;AAClBN,IAAAA,wBAAwB,EAAEA,wBAAwB;AAClDC,IAAAA,yBAAyB,EAAEA,yBAAAA;AAE1B,GAAA,EAAAL,QAAQ,CACgB,GAE3BA,QACD,CACE,CAAA;AAET,CAAC,EACF;AAcD,IAAMY,wBAAwB,GAA4C,SAApEA,wBAAwB,CAQzB,KAAA,EAAA;EAAA,IAPHV,UAAU,SAAVA,UAAU;AACVC,IAAAA,mBAAmB,SAAnBA,mBAAmB;AACnBI,IAAAA,iBAAiB,SAAjBA,iBAAiB;AACjBP,IAAAA,QAAQ,SAARA,QAAQ;AACRU,IAAAA,QAAQ,SAARA,QAAQ;AACRN,IAAAA,wBAAwB,SAAxBA,wBAAwB;AACxBC,IAAAA,yBAAyB,SAAzBA,yBAAyB,CAAA;EAEzB,IAA4CC,SAAAA,GAAAA,cAAQ,CAAqB,EAAE,CAAC;IAArEO,cAAc,GAAA,SAAA,CAAA,CAAA,CAAA;IAAEC,iBAAiB,GAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAExC,EAAA,IAAQ/D,SAAS,GAAcoD,mBAAmB,CAA1CpD,SAAS;AAAKM,IAAAA,IAAI,iCAAK8C,mBAAmB,EAAAY,YAAA,CAAA,CAAA;AAElD,EAAA,IAAMC,SAAS,GAAGC,SAAS,CAACC,SAAS,CAACC,WAAW,EAAE,CAACC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;AAE3EzD,EAAAA,eAAS,CAAC,YAAK;IACb,IAAM0D,sBAAsB,GAAG,IAAI,CAAA;AACnC,IAAA,IAAInB,UAAU,CAACS,KAAK,IAAI,WAAW,EAAE;MACnCG,iBAAiB,CAACV,wBAAwB,CAAC,CAAA;AAC5C,KAAA,MAAM,IAAIF,UAAU,CAACS,KAAK,IAAI,YAAY,EAAE;MAC3CG,iBAAiB,CAACT,yBAAyB,CAAC,CAAA;AAC7C,KAAA;AACD,IAAA,IAAMiB,gBAAgB,GAAGC,UAAU,CAAC,YAAK;MACvCT,iBAAiB,CAAC,EAAE,CAAC,CAAA;MACrB,IAAIE,SAAS,EAAEF,iBAAiB,CAAC,SAAS,GAAGZ,UAAU,CAACS,KAAK,CAAC,CAAA;KAC/D,EAAEU,sBAAsB,CAAC,CAAA;IAE1B,OAAO,YAAA;MAAA,OAAMG,YAAY,CAACF,gBAAgB,CAAC,CAAA;AAAA,KAAA,CAAA;AAC7C,GAAC,EAAE,CAACpB,UAAU,CAACS,KAAK,CAAC,CAAC,CAAA;AAEtB,EAAA,OACE/D,yBACE,CAAAoB,aAAA,CAAA,QAAA,EAAA,QAAA,CAAA;AAAAjB,IAAAA,SAAS,EAAEgC,8BAAU,CAAC,+BAA+B,EAAEhC,SAAS,CAAC;AACjE0E,IAAAA,IAAI,EAAC,QAAQ;AACF,IAAA,WAAA,EAAAf,QAAAA;AAAQ,GAAA,EACfrD,IAAI,CAEP2C,EAAAA,QAAQ,EACR,CAAC,CAACO,iBAAiB,IAAIL,UAAU,CAACS,KAAK,KAAK,MAAM,KACjD/D,yBAAA,CAAAoB,aAAA,CAAC0D,kBAAY,EACX;AAAAC,IAAAA,IAAI,EAAC,MAAM;AACX5E,IAAAA,SAAS,EAAC,oCAAoC;AAAA,IAAA,aAAA,EAClC,MAAA;AAAM,GAAA,CAErB,EACAwD,iBAAiB,IAAIL,UAAU,CAACS,KAAK,KAAK,WAAW,IACpD/D,yBAAC,CAAAoB,aAAA,CAAA4D,iBAAW;AACVD,IAAAA,IAAI,EAAC,MAAM;AACX5E,IAAAA,SAAS,EAAC,oCAAoC;AAAA,IAAA,aAAA,EAClC,MAAA;AAAM,GAAA,CAErB,EACAwD,iBAAiB,IAAIL,UAAU,CAACS,KAAK,KAAK,YAAY,IACrD/D,yBAAC,CAAAoB,aAAA,CAAA6D,mBAAa;AACZF,IAAAA,IAAI,EAAC,MAAM;AACX5E,IAAAA,SAAS,EAAC,oCAAoC;AAAA,IAAA,aAAA,EAClC,MAAA;AAAM,GAAA,CAErB,EACDH,yBAAC,CAAAoB,aAAA,CAAAkB,mBAAc,QAAEqB,iBAAiB,IAAIM,cAAc,CAAkB,CAC/D,CAAA;AAEb,CAAC;;;;ACnKe,SAAAiB,eAAe,CAC7BC,SAAc,EACdC,kBAAyC,EAA0B;AAAA,EAAA,IAAnEA,kBAAyC,KAAA,KAAA,CAAA,EAAA;AAAzCA,IAAAA,kBAAyC,GAAA;AAAEvB,MAAAA,GAAG,EAAE,EAAE;AAAEE,MAAAA,KAAK,EAAE,MAAA;KAAQ,CAAA;AAAA,GAAA;EAUnE,IAAoCL,SAAAA,GAAAA,cAAQ,CAAC0B,kBAAkB,CAAC;IAAzD9B,UAAU,GAAA,SAAA,CAAA,CAAA,CAAA;IAAE+B,aAAa,GAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAEhC,EAAA,IAAMC,eAAe,GAAG,SAAlBA,eAAe,CAAIzB,GAAW,EAAI;AACtC,IAAA,IAAM0B,gBAAgB,GAAG1B,GAAG,KAAKP,UAAU,CAACO,GAAG,CAAA;IAC/C,IAAI0B,gBAAgB,IAAIjC,UAAU,CAACS,KAAK,KAAK,MAAM,EACjD,OAAOsB,aAAa,CAAC;AAAExB,MAAAA,GAAG,EAAHA,GAAG;AAAEE,MAAAA,KAAK,EAAE,WAAA;AAAa,KAAA,CAAC,CAAA;IACnD,IAAIT,UAAU,CAACS,KAAK,KAAK,WAAW,EAClC,OAAOsB,aAAa,CAAC;AAAExB,MAAAA,GAAG,EAAHA,GAAG;AAAEE,MAAAA,KAAK,EAAE,YAAA;AAAc,KAAA,CAAC,CAAA;IACpD,IAAIT,UAAU,CAACS,KAAK,KAAK,YAAY,EACnC,OAAOsB,aAAa,CAAC;AAAExB,MAAAA,GAAG,EAAHA,GAAG;AAAEE,MAAAA,KAAK,EAAE,MAAA;AAAQ,KAAA,CAAC,CAAA;GAC/C,CAAA;EAED,IAAMyB,oBAAoB,GAAG,EAAA,CAAA,MAAA,CAAIL,SAAS,CAAA,CAAEM,IAAI,CAAC,UAACC,CAAM,EAAEC,CAAM,EAAI;IAClE,IAAMC,QAAQ,GAAGC,uBAAG,CAACH,CAAC,EAAEpC,UAAU,CAACO,GAAG,EAAE6B,CAAC,CAAC,CAAA;IAC1C,IAAMI,QAAQ,GAAGD,uBAAG,CAACF,CAAC,EAAErC,UAAU,CAACO,GAAG,EAAE8B,CAAC,CAAC,CAAA;AAE1C,IAAA,IAAMI,gBAAgB,GACpB,OAAOH,QAAQ,KAAK,QAAQ,GAAGA,QAAQ,CAACrB,WAAW,EAAE,GAAGqB,QAAQ,CAAA;AAClE,IAAA,IAAMI,gBAAgB,GACpB,OAAOF,QAAQ,KAAK,QAAQ,GAAGA,QAAQ,CAACvB,WAAW,EAAE,GAAGuB,QAAQ,CAAA;AAElE,IAAA,IAAIC,gBAAgB,GAAGC,gBAAgB,EAAE,OAAO,CAAC,CAAC,CAAA;AAClD,IAAA,IAAID,gBAAgB,GAAGC,gBAAgB,EAAE,OAAO,CAAC,CAAA;AACjD,IAAA,OAAO,CAAC,CAAA;AACV,GAAC,CAAC,CAAA;AAEF,EAAA,IAAMC,aAAa,GAAc,SAA3BA,aAAa,GAAmB;AACpC,IAAA,IAAI3C,UAAU,CAACS,KAAK,KAAK,MAAM,EAAE;AAC/B,MAAA,OAAOoB,SAAS,CAAA;AACjB,KAAA;AACD,IAAA,IAAI7B,UAAU,CAACS,KAAK,KAAK,YAAY,EAAE;AACrC,MAAA,OAAO,EAAIyB,CAAAA,MAAAA,CAAAA,oBAAoB,CAAEU,CAAAA,OAAO,EAAE,CAAA;AAC3C,KAAA;AACD,IAAA,OAAOV,oBAAoB,CAAA;GAC5B,CAAA;EAED,IAAMW,UAAU,GAAGF,aAAa,EAAE,CAAA;AAElC,EAAA,IAAMG,sBAAsB,GAAG,SAAzBA,sBAAsB,CAKyB,IAAA,EAAA;IAAA,IAJnD/C,IAAI,QAAJA,IAAI;AAAA,MAAA,aAAA,GAAA,IAAA,CACJ/C,QAAQ;AAARA,MAAAA,QAAQ,8BAAG,IAAI,GAAA,aAAA;AACf+F,MAAAA,WAAW,QAAXA,WAAW;MACR5D,KAAK,GAAA,6BAAA,CAAA,IAAA,EAAA/B,WAAA,CAAA,CAAA;AAER,IAAA,OAAA,QAAA,CAAA;AACE2C,MAAAA,IAAI,EAAJA,IAAI;AACJ/C,MAAAA,QAAQ,EAARA,QAAQ;AACRgD,MAAAA,UAAU,EAAEA,UAAU;MACtBC,mBAAmB,EAAA,QAAA,CAAA;AACjB+C,QAAAA,OAAO,EAAE,SAAA,OAAA,GAAA;UAAA,OAAMhB,eAAe,CAACjC,IAAI,CAAC,CAAA;AAAA,SAAA;AAAA,OAAA,EACjCgD,WAAW,CAAA;AACf,KAAA,EACE5D,KAAK,CAAA,CAAA;GAEX,CAAA;AAED,EAAA,IAAM8D,qBAAqB,GAAG,SAAxBA,qBAAqB,CAG6B,KAAA,EAAA;AAAA,IAAA,IAAA,KAAA,GAAA,KAAA,KAAA,KAAA,CAAA,GAAhC,EAAE,GAAA,KAAA;AAAA,MAAA,cAAA,GAAA,KAAA,CAFxBjG,QAAQ;AAARA,MAAAA,QAAQ,+BAAG,IAAI,GAAA,cAAA;MACZmC,KAAK,GAAA,6BAAA,CAAA,KAAA,EAAA,UAAA,CAAA,CAAA;AAER,IAAA,OAAA,QAAA,CAAA;AACEnC,MAAAA,QAAQ,EAARA,QAAQ;AACRgD,MAAAA,UAAU,EAAEA,UAAAA;AAAU,KAAA,EACnBb,KAAK,CAAA,CAAA;GAEX,CAAA;EAED,OAAO;AAAE0D,IAAAA,UAAU,EAAVA,UAAU;AAAEC,IAAAA,sBAAsB,EAAtBA,sBAAsB;AAAEG,IAAAA,qBAAqB,EAArBA,qBAAAA;GAAuB,CAAA;AACtE;;;ACrEaC,IAAAA,YAAY,GAAgC,SAA5CA,YAAY,CAOpB,IAAA,EAAA;EAAA,IANHpD,QAAQ,QAARA,QAAQ;AACRjD,IAAAA,SAAS,QAATA,SAAS;AACTsG,IAAAA,QAAQ,QAARA,QAAQ;AACRC,IAAAA,OAAO,QAAPA,OAAO;AAAA,IAAA,aAAA,GAAA,IAAA,CACPC,QAAQ;AAARA,IAAAA,QAAQ,8BAAG,KAAK,GAAA,aAAA;IACblG,IAAI,GAAA,6BAAA,CAAA,IAAA,EAAAC,WAAA,CAAA,CAAA;AAEP,EAAA,OACEV,yBAAC,CAAAoB,aAAA,CAAAwF,oBAAe,EAAC;AAAAF,IAAAA,OAAO,EAAEA,OAAAA;AAAO,GAAA,EAC/B1G,yBAAA,CAAAoB,aAAA,CAAC4B,QAAQ,EAAA,QAAA,CAAA;AACP7C,IAAAA,SAAS,EAAEgC,8BAAU,CACnB,mBAAmB,EACnB;AACE,MAAA,6BAA6B,EAAEwE,QAAAA;KAChC,EACDxG,SAAS,CAAA;AACV,GAAA,EACGM,IAAI,CAERT,EAAAA,yBAAA,CAAAoB,aAAA,CAACyF,eAAO,EACN;IAAAC,oBAAoB,EAAE,CAACL,QAAQ;IAC/BM,oBAAoB,EAAE,CAACN,QAAQ;AAC/BO,IAAAA,SAAS,EAAC,QAAQ;IAClBC,OAAO,EAAER,QAAQ,IAAIpE,SAAS;AAC9BqE,IAAAA,OAAO,EAAED,QAAQ,GAAG,OAAO,GAAGpE,SAAAA;AAE7B,GAAA,EAAAe,QAAQ,CACD,CACD,CACK,CAAA;AAEtB;;ACzCa8D,IAAAA,aAAa,GAAiC,SAA9CA,aAAa,CAIrB,IAAA,EAAA;AAAA,EAAA,IAAA,SAAA,GAAA,IAAA,CAHHC,IAAI;AAAJA,IAAAA,IAAI,0BAAG,KAAK,GAAA,SAAA;AACZ/D,IAAAA,QAAQ,QAARA,QAAQ;AACRgE,IAAAA,OAAO,QAAPA,OAAO,CAAA;AAEP,EAAA,OACEpH,yBAAA,CAAAoB,aAAA,CAAA,IAAA,EAAA,IAAA,EACEpB,yBAAI,CAAAoB,aAAA,CAAA,IAAA,EAAA;AAAAgG,IAAAA,OAAO,EAAEA,OAAAA;AAAO,GAAA,EAClBpH,yBAAC,CAAAoB,aAAA,CAAAiG,iBAAU,EAAC;AAAAF,IAAAA,IAAI,EAAEA,IAAAA;AAAO,GAAA,EAAA/D,QAAQ,CAAc,CAC5C,CACF,CAAA;AAET;;;ACfakE,IAAAA,eAAe,GAAmC,SAAlDA,eAAe,CAIvB,IAAA,EAAA;EAAA,IAHHH,IAAI,QAAJA,IAAI;AACJb,IAAAA,OAAO,QAAPA,OAAO;IACJ7F,IAAI,GAAA,6BAAA,CAAA,IAAA,EAAA,SAAA,CAAA,CAAA;AAEP,EAAA,OACET,wCAACuH,iBAAU,EAAA,QAAA,CAAA;AACTpH,IAAAA,SAAS,EAAEgC,8BAAU,CAAC,uBAAuB,EAAE;AAC7C,MAAA,6BAA6B,EAAEgF,IAAAA;AAChC,KAAA,CAAC;AACFb,IAAAA,OAAO,EAAEA,OAAO;kBACJa,IAAI,GAAG,gBAAgB,GAAG,iBAAA;AAAiB,GAAA,EACnD1G,IAAI,CAERT,EAAAA,yBAAC,CAAAoB,aAAA,CAAA6D,mBAAa;AAAC9E,IAAAA,SAAS,EAAC,6BAAA;AAAgC,GAAA,CAAA,CAC9C,CAAA;AAEjB;;ACzBA,SAASqH,eAAe,CACtBC,KAAoB,EACpBC,UAAkB,EAClBC,MAAc,EACdC,SAAmB,EAAA;AAEnB,EAAA,IAAMC,QAAQ,GAAGJ,KAAK,CAAC5D,GAAG,CAAA;AAC1B,EAAA,QAAQgE,QAAQ;AACd,IAAA,KAAK,SAAS;MACZJ,KAAK,CAACK,cAAc,EAAE,CAAA;AACtB,MAAA,IAAIF,SAAS,EAAE;QACb,OAAOF,UAAU,KAAK,CAAC,GAAGC,MAAM,GAAG,CAAC,GAAGD,UAAU,GAAG,CAAC,CAAA;AACtD,OAAA,MAAM;QACL,OAAOA,UAAU,GAAG,CAAC,GAAGA,UAAU,GAAG,CAAC,GAAG,CAAC,CAAA;AAC3C,OAAA;AACH,IAAA,KAAK,WAAW;MACdD,KAAK,CAACK,cAAc,EAAE,CAAA;AACtB,MAAA,IAAIF,SAAS,EAAE;QACb,OAAOF,UAAU,KAAKC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAGD,UAAU,GAAG,CAAC,CAAA;AACtD,OAAA,MAAM;QACL,OAAOA,UAAU,GAAGC,MAAM,GAAG,CAAC,GAAGD,UAAU,GAAG,CAAC,GAAGA,UAAU,CAAA;AAC7D,OAAA;AACH,IAAA;AACE,MAAA,OAAOA,UAAU,CAAA;AAAC,GAAA;AAExB,CAAA;AAiBO,IAAMK,0BAA0B,GAAoC,SAA9DA,0BAA0B,CACrCC,YAAY,EACZJ,SAAS,EACP;AAAA,EAAA,IAAA,qBAAA,CAAA;AAAA,EAAA,IAFFI,YAAY,KAAA,KAAA,CAAA,EAAA;AAAZA,IAAAA,YAAY,GAAG,CAAC,CAAA;AAAA,GAAA;AAAA,EAAA,IAChBJ,SAAS,KAAA,KAAA,CAAA,EAAA;AAATA,IAAAA,SAAS,GAAG,IAAI,CAAA;AAAA,GAAA;EAEhB,IAAoClE,SAAAA,GAAAA,cAAQ,CAACsE,YAAY,CAAC;IAAnDN,UAAU,GAAA,SAAA,CAAA,CAAA,CAAA;IAAEO,aAAa,GAAA,SAAA,CAAA,CAAA,CAAA,CAAA;EAChC,IAA4BvE,UAAAA,GAAAA,cAAQ,CAAC,CAAC,CAAC;IAAhCiE,MAAM,GAAA,UAAA,CAAA,CAAA,CAAA;IAAEO,SAAS,GAAA,UAAA,CAAA,CAAA,CAAA,CAAA;AAExB,EAAA,IAAMC,YAAY,GAAGrH,YAAM,CAA0B,IAAI,CAAC,CAAA;AAC1D,EAAA,IAAMsH,aAAa,GAAGD,YAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,CAAA,qBAAA,GAAZA,YAAY,CAAElH,OAAO,KAArB,IAAA,GAAA,KAAA,CAAA,GAAA,qBAAA,CAAuBoH,QAAQ,CAAClH,QAAQ,CAACmH,aAAa,CAAC,CAAA;AAE7EvH,EAAAA,eAAS,CAAC,YAAK;AAAA,IAAA,IAAA,sBAAA,CAAA;IACboH,YAAY,IACVA,YAAY,CAAClH,OAAO,IACpBmH,aAAa,KACbD,CAAAA,sBAAAA,GAAAA,YAAY,CAAClH,OAAO,CAACsH,UAAU,CAC7Bb,UAAU,CACX,CAACa,UAAU,CAAC,CAAC,CAAC,CAACC,aAAa,KAAA,IAAA,GAAA,KAAA,CAAA,GAF7B,sBAE+BC,CAAAA,KAAK,EAAE,CAAA,CAAA;AAC1C,GAAC,EAAE,CAACf,UAAU,EAAEU,aAAa,CAAC,CAAC,CAAA;AAE/B,EAAA,SAASM,2BAA2B,GAAa;AAAA,IAAA,KAAA,IAAA,IAAA,GAAA,SAAA,CAAA,MAAA,EAATjI,IAAS,GAAA,IAAA,KAAA,CAAA,IAAA,CAAA,EAAA,IAAA,GAAA,CAAA,EAAA,IAAA,GAAA,IAAA,EAAA,IAAA,EAAA,EAAA;MAATA,IAAS,CAAA,IAAA,CAAA,GAAA,SAAA,CAAA,IAAA,CAAA,CAAA;AAAA,KAAA;AAC/C,IAAA,OAAA,QAAA,CAAA;AACEP,MAAAA,GAAG,EAAEiI,YAAAA;AAAY,KAAA,EACd1H,IAAI,CAAA,CAAA;AAEX,GAAA;AAEA,EAAA,IAAMkI,WAAW,GAAG7H,YAAM,CAAsB,IAAI,CAAC,CAAA;EACrD,SAAS8H,0BAA0B,CACjCC,GAAW,EACC;IAEZ,IAAIA,GAAG,IAAIlB,MAAM,EAAE;AACjBO,MAAAA,SAAS,CAACW,GAAG,GAAG,CAAC,CAAC,CAAA;AACnB,KAAA;AACD,IAAA,IAAMC,QAAQ,GAAGpB,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;AAAC,IAAA,KAAA,IAAA,KAAA,GAAA,SAAA,CAAA,MAAA,EALlCjH,IAAS,GAAA,IAAA,KAAA,CAAA,KAAA,GAAA,CAAA,GAAA,KAAA,GAAA,CAAA,GAAA,CAAA,CAAA,EAAA,KAAA,GAAA,CAAA,EAAA,KAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA;MAATA,IAAS,CAAA,KAAA,GAAA,CAAA,CAAA,GAAA,SAAA,CAAA,KAAA,CAAA,CAAA;AAAA,KAAA;AAMZ,IAAA,OAAA,QAAA,CAAA;AACEqI,MAAAA,QAAQ,EAARA,QAAQ;AACR5I,MAAAA,GAAG,EAAEyI,WAAW;AAChBrC,MAAAA,OAAO,EAAE,SAAA,OAAA,GAAA;QAAA,OAAM2B,aAAa,CAACY,GAAG,CAAC,CAAA;AAAA,OAAA;MACjCE,SAAS,EAAE,SAACC,SAAAA,CAAAA,CAAgB,EAAI;QAC9B,IAAMC,OAAO,GAAGzB,eAAe,CAACwB,CAAC,EAAEtB,UAAU,EAAEM,YAAY,EAAEJ,SAAS,CAAC,CAAA;QACvEK,aAAa,CAACgB,OAAO,CAAC,CAAA;AACxB,OAAA;AAAC,KAAA,EACExI,IAAI,CAAA,CAAA;AAEX,GAAA;EACA,OAAO;AAAEmI,IAAAA,0BAA0B,EAA1BA,0BAA0B;AAAEF,IAAAA,2BAA2B,EAA3BA,2BAAAA;GAA6B,CAAA;AACpE;;ACzFAQ,4BAAsB,CAAC,OAAO,CAAC;;;;;;;;;;;;;;;"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),r=require("classnames"),a=require("@entur/
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),r=require("classnames"),a=require("@entur/a11y"),n=require("@entur/icons"),o=require("lodash.get"),l=require("@entur/form"),d=require("@entur/tooltip"),s=require("@entur/expand"),i=require("@entur/button");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=u(t),f=u(r),b=u(o);function v(){return v=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},v.apply(this,arguments)}function m(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)t.indexOf(r=o[a])>=0||(n[r]=e[r]);return n}var p=["className","fixed","spacing","sortable","changeSortDescription","stickyHeader"],g=c.default.forwardRef((function(r,n){var o=r.className,l=r.fixed,d=void 0!==l&&l,s=r.spacing,i=void 0===s?"default":s,u=r.sortable,b=void 0!==u&&u,g=r.changeSortDescription,h=void 0===g?"Tabelloverskrifter med knapper kan trykkes på for å endre sortering,":g,_=r.stickyHeader,w=void 0!==_&&_,y=m(r,p),E=e.useRandomId("sortable-header"),N=t.useRef(null);return t.useEffect((function(){if(w){var e,t=N.current,r=document.createElement("div");r.classList.add("sticky-observer"),null==t||null==(e=t.parentNode)||e.insertBefore(r,t);var a=new IntersectionObserver((function(e){null==t||t.classList.toggle("eds-table--sticky-header--active",!e[0].isIntersecting)}),{threshold:[0,1]});return a.observe(r),function(){a.unobserve(r),r.remove()}}}),[w]),c.default.createElement(c.default.Fragment,null,c.default.createElement("table",v({className:f.default("eds-table",{"eds-table--fixed":d},{"eds-table--middle":"middle"===i},{"eds-table--small":"small"===i},{"eds-table--sortable":b},{"eds-table--sticky-header":w},o),ref:e.mergeRefs(n,N),"aria-describedby":b?E:void 0},y)),b&&c.default.createElement(a.VisuallyHidden,{id:E},h))})),h=["className"],_=c.default.forwardRef((function(e,t){var r=e.className,a=m(e,h);return c.default.createElement("thead",v({className:f.default("eds-table__head",r),ref:t},a))})),w=["className"],y=c.default.forwardRef((function(e,t){var r=e.className,a=m(e,w);return c.default.createElement("tbody",v({className:f.default("eds-table__body",r),ref:t},a))})),E=c.default.forwardRef((function(e,t){var r=v({},(function(e){if(null==e)throw new TypeError("Cannot destructure "+e)}(e),e));return c.default.createElement("tfoot",v({ref:t},r))})),N=["className","hover","active","error"],k=c.default.forwardRef((function(e,t){var r=e.className,a=e.hover,n=void 0!==a&&a,o=e.active,l=void 0!==o&&o,d=e.error,s=void 0!==d&&d,i=m(e,N);return c.default.createElement("tr",v({className:f.default("eds-table__row",r,{"eds-table__row--hover":n,"eds-table__row--active":l,"eds-table__row--error":s}),ref:t},i))})),x=["className","padding","status"],A=c.default.forwardRef((function(e,t){var r,a=e.className,n=e.padding,o=void 0===n?"default":n,l=e.status,d=void 0===l?void 0:l,s=m(e,x);return c.default.createElement("td",v({ref:t,className:f.default("eds-table__data-cell",a,(r={},r["eds-table__data-cell--status-"+d]=d,r["eds-table__data-cell--padding-checkbox"]="checkbox"===o,r["eds-table__data-cell--padding-radio"]="radio"===o,r["eds-table__data-cell--padding-overflow-menu"]="overflow-menu"===o,r))},s))})),C=["className","children","name","sortable","sortConfig","padding","sortableButtonProps","sortedAscendingAriaLabel","sortedDescendingAriaLabel"],S=["className"],L=c.default.forwardRef((function(e,t){var r=e.className,a=e.children,n=e.name,o=e.sortable,l=void 0!==o&&o,d=e.sortConfig,s=e.padding,i=void 0===s?"default":s,u=e.sortableButtonProps,b=e.sortedAscendingAriaLabel,p=void 0===b?", sortert stigende":b,g=e.sortedDescendingAriaLabel,h=void 0===g?", sortert synkende":g,_=m(e,C),w=c.default.useState(!1),y=w[0],E=w[1];c.default.useEffect((function(){d&&n&&E(d&&n===d.key)}),[d,n]);var N=y?d&&d.order:void 0;return c.default.createElement("th",v({className:f.default("eds-table__header-cell",r,{"eds-table__header-cell--sortable":l,"eds-table__header-cell--padding-radio":"radio"===i,"eds-table__header-cell--padding-checkbox":"checkbox"===i,"eds-table__header-cell--padding-overflow-menu":"overflow-menu"===i}),"aria-sort":N,ref:t},_),l&&d&&u?c.default.createElement(R,{sortableButtonProps:u,sortConfig:d,isCurrentlySorted:y,ariaSort:N,sortedAscendingAriaLabel:p,sortedDescendingAriaLabel:h},a):a)})),R=function(e){var r=e.sortConfig,o=e.sortableButtonProps,l=e.isCurrentlySorted,d=e.children,s=e.ariaSort,i=e.sortedAscendingAriaLabel,u=e.sortedDescendingAriaLabel,b=t.useState(""),p=b[0],g=b[1],h=o.className,_=m(o,S),w=navigator.userAgent.toLowerCase().indexOf("firefox")>-1;return t.useEffect((function(){"ascending"==r.order?g(i):"descending"==r.order&&g(u);var e=setTimeout((function(){g(""),w&&g(", sort "+r.order)}),3e3);return function(){return clearTimeout(e)}}),[r.order]),c.default.createElement("button",v({className:f.default("eds-table__header-cell-button",h),type:"button","aria-sort":s},_),d,(!l||"none"===r.order)&&c.default.createElement(n.UnsortedIcon,{size:"1rem",className:"eds-table__header-cell-button-icon","aria-hidden":"true"}),l&&"ascending"===r.order&&c.default.createElement(n.UpArrowIcon,{size:"1rem",className:"eds-table__header-cell-button-icon","aria-hidden":"true"}),l&&"descending"===r.order&&c.default.createElement(n.DownArrowIcon,{size:"1rem",className:"eds-table__header-cell-button-icon","aria-hidden":"true"}),c.default.createElement(a.VisuallyHidden,null,l&&p))},D=["name","sortable","buttonProps"],P=["sortable"],T=["children","className","feedback","variant","outlined"],B=["open","onClick"];function q(e,t,r,a){switch(e.key){case"ArrowUp":return e.preventDefault(),a?0===t?r-1:t-1:t>0?t-1:0;case"ArrowDown":return e.preventDefault(),a?t===r-1?0:t+1:t<r-1?t+1:t;default:return t}}e.warnAboutMissingStyles("table"),exports.DataCell=A,exports.EditableCell=function(e){var t=e.children,r=e.className,a=e.feedback,n=e.variant,o=e.outlined,s=void 0!==o&&o,i=m(e,T);return c.default.createElement(l.VariantProvider,{variant:n},c.default.createElement(A,v({className:f.default("eds-editable-cell",{"eds-editable-cell--outlined":s},r)},i),c.default.createElement(d.Tooltip,{disableHoverListener:!a,disableFocusListener:!a,placement:"bottom",content:a||void 0,variant:a?"error":void 0},t)))},exports.ExpandRowButton=function(e){var t=e.open,r=e.onClick,a=m(e,B);return c.default.createElement(i.IconButton,v({className:f.default("eds-expand-row-button",{"eds-expand-row-button--open":t}),onClick:r,"aria-label":t?"Lukk tabellrad":"Utvid tabellrad"},a),c.default.createElement(n.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(s.BaseExpand,{open:void 0!==t&&t},e.children)))},exports.HeaderCell=L,exports.Table=g,exports.TableBody=y,exports.TableFooter=E,exports.TableHead=_,exports.TableRow=k,exports.useSortableData=function(e,r){void 0===r&&(r={key:"",order:"none"});var a=t.useState(r),n=a[0],o=a[1],l=[].concat(e).sort((function(e,t){var r=b.default(e,n.key,e),a=b.default(t,n.key,t),o="string"==typeof r?r.toLowerCase():r,l="string"==typeof a?a.toLowerCase():a;return o<l?-1:o>l?1:0}));return{sortedData:"none"===n.order?e:"descending"===n.order?[].concat(l).reverse():l,getSortableHeaderProps:function(e){var t=e.name,r=e.sortable,a=void 0===r||r,l=e.buttonProps,d=m(e,D);return v({name:t,sortable:a,sortConfig:n,sortableButtonProps:v({onClick:function(){return(e=t)!==n.key||"none"===n.order?o({key:e,order:"ascending"}):"ascending"===n.order?o({key:e,order:"descending"}):"descending"===n.order?o({key:e,order:"none"}):void 0;var e}},l)},d)},getSortableTableProps:function(e){var t=void 0===e?{}:e,r=t.sortable,a=void 0===r||r,o=m(t,P);return v({sortable:a,sortConfig:n},o)}}},exports.useTableKeyboardNavigation=function(e,r){var a;void 0===e&&(e=0),void 0===r&&(r=!0);var n=t.useState(e),o=n[0],l=n[1],d=t.useState(0),s=d[0],i=d[1],u=t.useRef(null),c=null==u||null==(a=u.current)?void 0:a.contains(document.activeElement);t.useEffect((function(){var e;u&&u.current&&c&&(null==(e=u.current.childNodes[o].childNodes[0].parentElement)||e.focus())}),[o,c]);var f=t.useRef(null);return{getTableRowNavigationProps:function(t){t>=s&&i(t+1);for(var a=o?0:-1,n=arguments.length,d=new Array(n>1?n-1:0),u=1;u<n;u++)d[u-1]=arguments[u];return v({tabIndex:a,ref:f,onClick:function(){return l(t)},onKeyDown:function(t){var a=q(t,o,e,r);l(a)}},d)},getTableBodyNavigationProps:function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return v({ref:u},t)}}};
|
|
2
2
|
//# sourceMappingURL=table.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.cjs.production.min.js","sources":["../src/Table.tsx","../src/TableHead.tsx","../src/TableBody.tsx","../src/TableFooter.tsx","../src/TableRow.tsx","../src/DataCell.tsx","../src/HeaderCell.tsx","../src/useTableKeyboardNavigation.ts","../src/index.tsx","../src/EditableCell.tsx","../src/ExpandRowButton.tsx","../src/ExpandableRow.tsx","../src/useSortableTable.ts"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { mergeRefs } from '@entur/utils';\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 /** Om header-raden skal bli værende på skjermen når man skroller tabellen\n * @default false\n */\n stickyHeader?: 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 stickyHeader = false,\n ...rest\n },\n ref,\n ) => {\n const tableRef = useRef<HTMLTableElement>(null);\n\n useEffect(() => {\n if (stickyHeader) {\n /* We check when an inserted div above the header \n is outside our scrolling container to determine when\n the table header becomes sticky. This is necessary\n to conditionally add our box-shadow when the \n header is overlapping table rows */\n const tableElement = tableRef.current;\n const observerElement = document.createElement('div');\n observerElement.classList.add('sticky-observer');\n\n tableElement?.parentNode?.insertBefore(observerElement, tableElement);\n\n const observer = new IntersectionObserver(\n entries => {\n tableElement?.classList.toggle(\n 'eds-table--sticky-header--active',\n !entries[0].isIntersecting,\n );\n },\n { threshold: [0, 1] },\n );\n\n observer.observe(observerElement);\n\n return () => {\n observer.unobserve(observerElement);\n observerElement.remove();\n };\n }\n }, []);\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 { 'eds-table--sticky-header': stickyHeader },\n className,\n )}\n ref={mergeRefs(ref, tableRef)}\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 { useState, useEffect, useRef, KeyboardEvent } from 'react';\nimport { TableBodyProps, TableRowProps } from './index';\n\nfunction onTableKeypress(\n event: 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 = useRef<HTMLTableSectionElement>(null);\n const tableHasFocus = tableBodyRef?.current?.contains(document.activeElement);\n\n 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 = 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: 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","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 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 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 { useState, DetailedHTMLProps, ButtonHTMLAttributes } 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 tableData: 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] = useState(externalSortConfig);\n\n const onSortRequested = (key: string) => {\n const sortingNewColumn = key !== sortConfig.key;\n if (sortingNewColumn || sortConfig.order === 'none')\n return setSortConfig({ key, order: 'ascending' });\n if (sortConfig.order === 'ascending')\n return setSortConfig({ key, order: 'descending' });\n if (sortConfig.order === 'descending')\n return setSortConfig({ key, order: 'none' });\n };\n\n const tableSortedAscending = [...tableData].sort((a: any, b: any) => {\n const valueOfA = get(a, sortConfig.key, a);\n const valueOfB = get(b, sortConfig.key, b);\n\n const comparableAValue =\n typeof valueOfA === 'string' ? valueOfA.toLowerCase() : valueOfA;\n const comparableBValue =\n typeof valueOfB === 'string' ? valueOfB.toLowerCase() : valueOfB;\n\n if (comparableAValue < comparableBValue) return -1;\n if (comparableAValue > comparableBValue) return 1;\n return 0;\n });\n\n const getSortedData: () => T[] = () => {\n if (sortConfig.order === 'none') {\n return tableData;\n }\n if (sortConfig.order === 'descending') {\n return [...tableSortedAscending].reverse();\n }\n return tableSortedAscending;\n };\n\n const sortedData = getSortedData();\n\n const 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 const 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 DetailedHTMLProps<\n 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"],"names":["Table","React","forwardRef","ref","className","_ref$fixed","_ref","fixed","_ref$spacing","spacing","_ref$sortable","sortable","_ref$stickyHeader","stickyHeader","rest","_objectWithoutPropertiesLoose","_excluded","tableRef","useRef","useEffect","_tableElement$parentN","tableElement","current","observerElement","document","createElement","classList","add","parentNode","insertBefore","observer","IntersectionObserver","entries","toggle","isIntersecting","threshold","observe","unobserve","remove","_extends","classNames","mergeRefs","TableHead","props","TableBody","TableFooter","_objectDestructuringEmpty","TableRow","_ref$hover","hover","_ref$active","active","_ref$error","error","DataCell","_classNames","_ref$padding","padding","_ref$status","status","undefined","HeaderCell","children","name","sortConfig","sortableButtonProps","_React$useState","useState","isCurrentlySorted","setIsCurrentlySorted","key","ariaSort","order","SortableHeaderCellButton","_ref2","_excluded2","type","UnsortedIcon","size","UpArrowIcon","DownArrowIcon","onTableKeypress","event","currentRow","maxRow","allowWrap","preventDefault","warnAboutMissingStyles","feedback","variant","_ref$outlined","outlined","VariantProvider","Tooltip","disableHoverListener","disableFocusListener","placement","content","open","onClick","IconButton","_ref$open","colSpan","BaseExpand","tableData","externalSortConfig","_useState","setSortConfig","tableSortedAscending","concat","sort","a","b","valueOfA","get","valueOfB","comparableAValue","toLowerCase","comparableBValue","sortedData","reverse","getSortableHeaderProps","buttonProps","getSortableTableProps","_ref2$sortable","numberOfRows","_tableBodyRef$current","setCurrentRow","_useState2","setMaxRow","tableBodyRef","tableHasFocus","contains","activeElement","_tableBodyRef$current2","childNodes","parentElement","focus","tableRowRef","getTableRowNavigationProps","row","tabIndex","_len2","arguments","length","Array","_key2","onKeyDown","e","newCell","getTableBodyNavigationProps","_len","_key"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.cjs.production.min.js","sources":["../src/Table.tsx","../src/TableHead.tsx","../src/TableBody.tsx","../src/TableFooter.tsx","../src/TableRow.tsx","../src/DataCell.tsx","../src/HeaderCell.tsx","../src/useTableKeyboardNavigation.ts","../src/index.tsx","../src/EditableCell.tsx","../src/ExpandRowButton.tsx","../src/ExpandableRow.tsx","../src/useSortableTable.ts"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { useRandomId, mergeRefs } from '@entur/utils';\nimport { VisuallyHidden } from '@entur/a11y';\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 /** Om header-raden skal bli værende på skjermen når man skroller tabellen\n * @default false\n */\n stickyHeader?: 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 changeSortDescription = 'Tabelloverskrifter med knapper kan trykkes på for å endre sortering,',\n stickyHeader = false,\n ...rest\n },\n ref,\n ) => {\n const sortableHeaderId = useRandomId('sortable-header');\n\n const tableRef = useRef<HTMLTableElement>(null);\n\n useEffect(() => {\n if (stickyHeader) {\n /* We check when an inserted div above the header \n is outside our scrolling container to determine when\n the table header becomes sticky. This is necessary\n to conditionally add our box-shadow when the \n header is overlapping table rows */\n const tableElement = tableRef.current;\n const observerElement = document.createElement('div');\n observerElement.classList.add('sticky-observer');\n\n tableElement?.parentNode?.insertBefore(observerElement, tableElement);\n\n const observer = new IntersectionObserver(\n entries => {\n tableElement?.classList.toggle(\n 'eds-table--sticky-header--active',\n !entries[0].isIntersecting,\n );\n },\n { threshold: [0, 1] },\n );\n\n observer.observe(observerElement);\n\n return () => {\n observer.unobserve(observerElement);\n observerElement.remove();\n };\n }\n }, [stickyHeader]);\n\n return (\n <>\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 { 'eds-table--sticky-header': stickyHeader },\n className,\n )}\n ref={mergeRefs(ref, tableRef)}\n aria-describedby={sortable ? sortableHeaderId : undefined}\n {...rest}\n />\n {sortable && (\n <VisuallyHidden id={sortableHeaderId}>\n {changeSortDescription}\n </VisuallyHidden>\n )}\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, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\n\nimport { DownArrowIcon, UpArrowIcon, UnsortedIcon } from '@entur/icons';\n\nimport { ExternalSortConfig } from '.';\n\nimport './HeaderCell.scss';\nimport { VisuallyHidden } from '@entur/a11y';\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 sortedAscendingAriaLabel?: string;\n sortedDescendingAriaLabel?: 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 sortedAscendingAriaLabel = ', sortert stigende',\n sortedDescendingAriaLabel = ', sortert synkende',\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 : undefined;\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 ariaSort={ariaSort}\n sortedAscendingAriaLabel={sortedAscendingAriaLabel}\n sortedDescendingAriaLabel={sortedDescendingAriaLabel}\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 ariaSort?: 'none' | 'ascending' | 'descending' | 'other' | undefined;\n sortedAscendingAriaLabel?: string;\n sortedDescendingAriaLabel?: string;\n};\n\nconst SortableHeaderCellButton: React.FC<SortableHeaderCellButtonProps> = ({\n sortConfig,\n sortableButtonProps,\n isCurrentlySorted,\n children,\n ariaSort,\n sortedAscendingAriaLabel,\n sortedDescendingAriaLabel,\n}) => {\n const [sortedAriaInfo, setSortedAriaInfo] = useState<string | undefined>('');\n\n const { className, ...rest } = sortableButtonProps;\n\n const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n\n useEffect(() => {\n const DISMISS_SORT_INFO_TIME = 3000;\n if (sortConfig.order == 'ascending') {\n setSortedAriaInfo(sortedAscendingAriaLabel);\n } else if (sortConfig.order == 'descending') {\n setSortedAriaInfo(sortedDescendingAriaLabel);\n }\n const dismissAriaTimer = setTimeout(() => {\n setSortedAriaInfo('');\n if (isFirefox) setSortedAriaInfo(', sort ' + sortConfig.order);\n }, DISMISS_SORT_INFO_TIME);\n\n return () => clearTimeout(dismissAriaTimer);\n }, [sortConfig.order]);\n\n return (\n <button\n className={classNames('eds-table__header-cell-button', className)}\n type=\"button\"\n aria-sort={ariaSort}\n {...rest}\n >\n {children}\n {(!isCurrentlySorted || sortConfig.order === 'none') && (\n <UnsortedIcon\n size=\"1rem\"\n className=\"eds-table__header-cell-button-icon\"\n aria-hidden=\"true\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'ascending' && (\n <UpArrowIcon\n size=\"1rem\"\n className=\"eds-table__header-cell-button-icon\"\n aria-hidden=\"true\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'descending' && (\n <DownArrowIcon\n size=\"1rem\"\n className=\"eds-table__header-cell-button-icon\"\n aria-hidden=\"true\"\n />\n )}\n <VisuallyHidden>{isCurrentlySorted && sortedAriaInfo}</VisuallyHidden>\n </button>\n );\n};\n","import { useState, useEffect, useRef, KeyboardEvent } from 'react';\nimport { TableBodyProps, TableRowProps } from './index';\n\nfunction onTableKeypress(\n event: 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 = useRef<HTMLTableSectionElement>(null);\n const tableHasFocus = tableBodyRef?.current?.contains(document.activeElement);\n\n 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 = 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: 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","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 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 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 { useState, DetailedHTMLProps, ButtonHTMLAttributes } 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 tableData: T[],\n externalSortConfig: ExternalSortConfig = { key: '', order: 'none' },\n): {\n sortedData: T[];\n getSortableHeaderProps: (\n args: SortableHeaderProps,\n ) => SortableHeaderReturnProps;\n getSortableTableProps: (\n args?: SortableTableProps,\n ) => SortableTableReturnProps;\n} {\n const [sortConfig, setSortConfig] = useState(externalSortConfig);\n\n const onSortRequested = (key: string) => {\n const sortingNewColumn = key !== sortConfig.key;\n if (sortingNewColumn || sortConfig.order === 'none')\n return setSortConfig({ key, order: 'ascending' });\n if (sortConfig.order === 'ascending')\n return setSortConfig({ key, order: 'descending' });\n if (sortConfig.order === 'descending')\n return setSortConfig({ key, order: 'none' });\n };\n\n const tableSortedAscending = [...tableData].sort((a: any, b: any) => {\n const valueOfA = get(a, sortConfig.key, a);\n const valueOfB = get(b, sortConfig.key, b);\n\n const comparableAValue =\n typeof valueOfA === 'string' ? valueOfA.toLowerCase() : valueOfA;\n const comparableBValue =\n typeof valueOfB === 'string' ? valueOfB.toLowerCase() : valueOfB;\n\n if (comparableAValue < comparableBValue) return -1;\n if (comparableAValue > comparableBValue) return 1;\n return 0;\n });\n\n const getSortedData: () => T[] = () => {\n if (sortConfig.order === 'none') {\n return tableData;\n }\n if (sortConfig.order === 'descending') {\n return [...tableSortedAscending].reverse();\n }\n return tableSortedAscending;\n };\n\n const sortedData = getSortedData();\n\n const 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 const 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 DetailedHTMLProps<\n 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"],"names":["Table","React","forwardRef","ref","className","_ref$fixed","_ref","fixed","_ref$spacing","spacing","_ref$sortable","sortable","_ref$changeSortDescri","changeSortDescription","_ref$stickyHeader","stickyHeader","rest","_objectWithoutPropertiesLoose","_excluded","sortableHeaderId","useRandomId","tableRef","useRef","useEffect","_tableElement$parentN","tableElement","current","observerElement","document","createElement","classList","add","parentNode","insertBefore","observer","IntersectionObserver","entries","toggle","isIntersecting","threshold","observe","unobserve","remove","Fragment","_extends","classNames","mergeRefs","undefined","VisuallyHidden","id","TableHead","props","TableBody","TableFooter","_objectDestructuringEmpty","TableRow","_ref$hover","hover","_ref$active","active","_ref$error","error","DataCell","_classNames","_ref$padding","padding","_ref$status","status","HeaderCell","children","name","sortConfig","sortableButtonProps","_ref$sortedAscendingA","sortedAscendingAriaLabel","_ref$sortedDescending","sortedDescendingAriaLabel","_React$useState","useState","isCurrentlySorted","setIsCurrentlySorted","key","ariaSort","order","SortableHeaderCellButton","_ref2","sortedAriaInfo","_useState","setSortedAriaInfo","_excluded2","isFirefox","navigator","userAgent","toLowerCase","indexOf","dismissAriaTimer","setTimeout","clearTimeout","type","UnsortedIcon","size","UpArrowIcon","DownArrowIcon","onTableKeypress","event","currentRow","maxRow","allowWrap","preventDefault","warnAboutMissingStyles","feedback","variant","_ref$outlined","outlined","VariantProvider","Tooltip","disableHoverListener","disableFocusListener","placement","content","open","onClick","IconButton","_ref$open","colSpan","BaseExpand","tableData","externalSortConfig","setSortConfig","tableSortedAscending","concat","sort","a","b","valueOfA","get","valueOfB","comparableAValue","comparableBValue","sortedData","reverse","getSortableHeaderProps","buttonProps","getSortableTableProps","_temp","_ref2$sortable","numberOfRows","_tableBodyRef$current","setCurrentRow","_useState2","setMaxRow","tableBodyRef","tableHasFocus","contains","activeElement","_tableBodyRef$current2","childNodes","parentElement","focus","tableRowRef","getTableRowNavigationProps","row","tabIndex","_len2","arguments","length","Array","_key2","onKeyDown","e","newCell","getTableBodyNavigationProps","_len","_key"],"mappings":"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"}
|
package/dist/table.esm.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { mergeRefs, warnAboutMissingStyles } from '@entur/utils';
|
|
1
|
+
import { useRandomId, mergeRefs, warnAboutMissingStyles } from '@entur/utils';
|
|
2
2
|
import React, { useRef, useEffect, useState } from 'react';
|
|
3
3
|
import classNames from 'classnames';
|
|
4
|
+
import { VisuallyHidden } from '@entur/a11y';
|
|
4
5
|
import { UnsortedIcon, UpArrowIcon, DownArrowIcon } from '@entur/icons';
|
|
5
6
|
import get from 'lodash.get';
|
|
6
7
|
import { VariantProvider } from '@entur/form';
|
|
@@ -38,7 +39,7 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
38
39
|
return target;
|
|
39
40
|
}
|
|
40
41
|
|
|
41
|
-
var _excluded$8 = ["className", "fixed", "spacing", "sortable", "stickyHeader"];
|
|
42
|
+
var _excluded$8 = ["className", "fixed", "spacing", "sortable", "changeSortDescription", "stickyHeader"];
|
|
42
43
|
var Table = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
43
44
|
var className = _ref.className,
|
|
44
45
|
_ref$fixed = _ref.fixed,
|
|
@@ -47,9 +48,12 @@ var Table = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
47
48
|
spacing = _ref$spacing === void 0 ? 'default' : _ref$spacing,
|
|
48
49
|
_ref$sortable = _ref.sortable,
|
|
49
50
|
sortable = _ref$sortable === void 0 ? false : _ref$sortable,
|
|
51
|
+
_ref$changeSortDescri = _ref.changeSortDescription,
|
|
52
|
+
changeSortDescription = _ref$changeSortDescri === void 0 ? 'Tabelloverskrifter med knapper kan trykkes på for å endre sortering,' : _ref$changeSortDescri,
|
|
50
53
|
_ref$stickyHeader = _ref.stickyHeader,
|
|
51
54
|
stickyHeader = _ref$stickyHeader === void 0 ? false : _ref$stickyHeader,
|
|
52
55
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
|
|
56
|
+
var sortableHeaderId = useRandomId('sortable-header');
|
|
53
57
|
var tableRef = useRef(null);
|
|
54
58
|
useEffect(function () {
|
|
55
59
|
if (stickyHeader) {
|
|
@@ -74,8 +78,8 @@ var Table = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
74
78
|
observerElement.remove();
|
|
75
79
|
};
|
|
76
80
|
}
|
|
77
|
-
}, []);
|
|
78
|
-
return React.createElement("table", _extends({
|
|
81
|
+
}, [stickyHeader]);
|
|
82
|
+
return React.createElement(React.Fragment, null, React.createElement("table", _extends({
|
|
79
83
|
className: classNames('eds-table', {
|
|
80
84
|
'eds-table--fixed': fixed
|
|
81
85
|
}, {
|
|
@@ -87,8 +91,11 @@ var Table = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
87
91
|
}, {
|
|
88
92
|
'eds-table--sticky-header': stickyHeader
|
|
89
93
|
}, className),
|
|
90
|
-
ref: mergeRefs(ref, tableRef)
|
|
91
|
-
|
|
94
|
+
ref: mergeRefs(ref, tableRef),
|
|
95
|
+
"aria-describedby": sortable ? sortableHeaderId : undefined
|
|
96
|
+
}, rest)), sortable && React.createElement(VisuallyHidden, {
|
|
97
|
+
id: sortableHeaderId
|
|
98
|
+
}, changeSortDescription));
|
|
92
99
|
});
|
|
93
100
|
|
|
94
101
|
var _excluded$7 = ["className"];
|
|
@@ -153,7 +160,7 @@ var DataCell = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
153
160
|
}, rest));
|
|
154
161
|
});
|
|
155
162
|
|
|
156
|
-
var _excluded$3 = ["className", "children", "name", "sortable", "sortConfig", "padding", "sortableButtonProps"],
|
|
163
|
+
var _excluded$3 = ["className", "children", "name", "sortable", "sortConfig", "padding", "sortableButtonProps", "sortedAscendingAriaLabel", "sortedDescendingAriaLabel"],
|
|
157
164
|
_excluded2$1 = ["className"];
|
|
158
165
|
var HeaderCell = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
159
166
|
var className = _ref.className,
|
|
@@ -165,6 +172,10 @@ var HeaderCell = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
165
172
|
_ref$padding = _ref.padding,
|
|
166
173
|
padding = _ref$padding === void 0 ? 'default' : _ref$padding,
|
|
167
174
|
sortableButtonProps = _ref.sortableButtonProps,
|
|
175
|
+
_ref$sortedAscendingA = _ref.sortedAscendingAriaLabel,
|
|
176
|
+
sortedAscendingAriaLabel = _ref$sortedAscendingA === void 0 ? ', sortert stigende' : _ref$sortedAscendingA,
|
|
177
|
+
_ref$sortedDescending = _ref.sortedDescendingAriaLabel,
|
|
178
|
+
sortedDescendingAriaLabel = _ref$sortedDescending === void 0 ? ', sortert synkende' : _ref$sortedDescending,
|
|
168
179
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
169
180
|
var _React$useState = React.useState(false),
|
|
170
181
|
isCurrentlySorted = _React$useState[0],
|
|
@@ -172,7 +183,7 @@ var HeaderCell = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
172
183
|
React.useEffect(function () {
|
|
173
184
|
sortConfig && name && setIsCurrentlySorted(sortConfig && name === sortConfig.key);
|
|
174
185
|
}, [sortConfig, name]);
|
|
175
|
-
var ariaSort = isCurrentlySorted ? sortConfig && sortConfig.order :
|
|
186
|
+
var ariaSort = isCurrentlySorted ? sortConfig && sortConfig.order : undefined;
|
|
176
187
|
return React.createElement("th", _extends({
|
|
177
188
|
className: classNames('eds-table__header-cell', className, {
|
|
178
189
|
'eds-table__header-cell--sortable': sortable,
|
|
@@ -185,32 +196,58 @@ var HeaderCell = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
|
|
|
185
196
|
}, rest), sortable && sortConfig && sortableButtonProps ? React.createElement(SortableHeaderCellButton, {
|
|
186
197
|
sortableButtonProps: sortableButtonProps,
|
|
187
198
|
sortConfig: sortConfig,
|
|
188
|
-
isCurrentlySorted: isCurrentlySorted
|
|
199
|
+
isCurrentlySorted: isCurrentlySorted,
|
|
200
|
+
ariaSort: ariaSort,
|
|
201
|
+
sortedAscendingAriaLabel: sortedAscendingAriaLabel,
|
|
202
|
+
sortedDescendingAriaLabel: sortedDescendingAriaLabel
|
|
189
203
|
}, children) : children);
|
|
190
204
|
});
|
|
191
205
|
var SortableHeaderCellButton = function SortableHeaderCellButton(_ref2) {
|
|
192
206
|
var sortConfig = _ref2.sortConfig,
|
|
193
207
|
sortableButtonProps = _ref2.sortableButtonProps,
|
|
194
208
|
isCurrentlySorted = _ref2.isCurrentlySorted,
|
|
195
|
-
children = _ref2.children
|
|
209
|
+
children = _ref2.children,
|
|
210
|
+
ariaSort = _ref2.ariaSort,
|
|
211
|
+
sortedAscendingAriaLabel = _ref2.sortedAscendingAriaLabel,
|
|
212
|
+
sortedDescendingAriaLabel = _ref2.sortedDescendingAriaLabel;
|
|
213
|
+
var _useState = useState(''),
|
|
214
|
+
sortedAriaInfo = _useState[0],
|
|
215
|
+
setSortedAriaInfo = _useState[1];
|
|
196
216
|
var className = sortableButtonProps.className,
|
|
197
217
|
rest = _objectWithoutPropertiesLoose(sortableButtonProps, _excluded2$1);
|
|
218
|
+
var isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;
|
|
219
|
+
useEffect(function () {
|
|
220
|
+
var DISMISS_SORT_INFO_TIME = 3000;
|
|
221
|
+
if (sortConfig.order == 'ascending') {
|
|
222
|
+
setSortedAriaInfo(sortedAscendingAriaLabel);
|
|
223
|
+
} else if (sortConfig.order == 'descending') {
|
|
224
|
+
setSortedAriaInfo(sortedDescendingAriaLabel);
|
|
225
|
+
}
|
|
226
|
+
var dismissAriaTimer = setTimeout(function () {
|
|
227
|
+
setSortedAriaInfo('');
|
|
228
|
+
if (isFirefox) setSortedAriaInfo(', sort ' + sortConfig.order);
|
|
229
|
+
}, DISMISS_SORT_INFO_TIME);
|
|
230
|
+
return function () {
|
|
231
|
+
return clearTimeout(dismissAriaTimer);
|
|
232
|
+
};
|
|
233
|
+
}, [sortConfig.order]);
|
|
198
234
|
return React.createElement("button", _extends({
|
|
199
235
|
className: classNames('eds-table__header-cell-button', className),
|
|
200
|
-
type: "button"
|
|
236
|
+
type: "button",
|
|
237
|
+
"aria-sort": ariaSort
|
|
201
238
|
}, rest), children, (!isCurrentlySorted || sortConfig.order === 'none') && React.createElement(UnsortedIcon, {
|
|
202
|
-
size: "
|
|
239
|
+
size: "1rem",
|
|
203
240
|
className: "eds-table__header-cell-button-icon",
|
|
204
|
-
"aria-
|
|
241
|
+
"aria-hidden": "true"
|
|
205
242
|
}), isCurrentlySorted && sortConfig.order === 'ascending' && React.createElement(UpArrowIcon, {
|
|
206
|
-
size: "
|
|
243
|
+
size: "1rem",
|
|
207
244
|
className: "eds-table__header-cell-button-icon",
|
|
208
|
-
"aria-
|
|
245
|
+
"aria-hidden": "true"
|
|
209
246
|
}), isCurrentlySorted && sortConfig.order === 'descending' && React.createElement(DownArrowIcon, {
|
|
210
|
-
size: "
|
|
247
|
+
size: "1rem",
|
|
211
248
|
className: "eds-table__header-cell-button-icon",
|
|
212
|
-
"aria-
|
|
213
|
-
}));
|
|
249
|
+
"aria-hidden": "true"
|
|
250
|
+
}), React.createElement(VisuallyHidden, null, isCurrentlySorted && sortedAriaInfo));
|
|
214
251
|
};
|
|
215
252
|
|
|
216
253
|
var _excluded$2 = ["name", "sortable", "buttonProps"],
|
|
@@ -276,8 +313,9 @@ function useSortableData(tableData, externalSortConfig) {
|
|
|
276
313
|
}, buttonProps)
|
|
277
314
|
}, props);
|
|
278
315
|
};
|
|
279
|
-
var getSortableTableProps = function getSortableTableProps(
|
|
280
|
-
var _ref2
|
|
316
|
+
var getSortableTableProps = function getSortableTableProps(_temp) {
|
|
317
|
+
var _ref2 = _temp === void 0 ? {} : _temp,
|
|
318
|
+
_ref2$sortable = _ref2.sortable,
|
|
281
319
|
sortable = _ref2$sortable === void 0 ? true : _ref2$sortable,
|
|
282
320
|
props = _objectWithoutPropertiesLoose(_ref2, _excluded2);
|
|
283
321
|
return _extends({
|
package/dist/table.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.esm.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.ts","../src/index.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { mergeRefs } from '@entur/utils';\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 /** Om header-raden skal bli værende på skjermen når man skroller tabellen\n * @default false\n */\n stickyHeader?: 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 stickyHeader = false,\n ...rest\n },\n ref,\n ) => {\n const tableRef = useRef<HTMLTableElement>(null);\n\n useEffect(() => {\n if (stickyHeader) {\n /* We check when an inserted div above the header \n is outside our scrolling container to determine when\n the table header becomes sticky. This is necessary\n to conditionally add our box-shadow when the \n header is overlapping table rows */\n const tableElement = tableRef.current;\n const observerElement = document.createElement('div');\n observerElement.classList.add('sticky-observer');\n\n tableElement?.parentNode?.insertBefore(observerElement, tableElement);\n\n const observer = new IntersectionObserver(\n entries => {\n tableElement?.classList.toggle(\n 'eds-table--sticky-header--active',\n !entries[0].isIntersecting,\n );\n },\n { threshold: [0, 1] },\n );\n\n observer.observe(observerElement);\n\n return () => {\n observer.unobserve(observerElement);\n observerElement.remove();\n };\n }\n }, []);\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 { 'eds-table--sticky-header': stickyHeader },\n className,\n )}\n ref={mergeRefs(ref, tableRef)}\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 { useState, DetailedHTMLProps, ButtonHTMLAttributes } 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 tableData: 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] = useState(externalSortConfig);\n\n const onSortRequested = (key: string) => {\n const sortingNewColumn = key !== sortConfig.key;\n if (sortingNewColumn || sortConfig.order === 'none')\n return setSortConfig({ key, order: 'ascending' });\n if (sortConfig.order === 'ascending')\n return setSortConfig({ key, order: 'descending' });\n if (sortConfig.order === 'descending')\n return setSortConfig({ key, order: 'none' });\n };\n\n const tableSortedAscending = [...tableData].sort((a: any, b: any) => {\n const valueOfA = get(a, sortConfig.key, a);\n const valueOfB = get(b, sortConfig.key, b);\n\n const comparableAValue =\n typeof valueOfA === 'string' ? valueOfA.toLowerCase() : valueOfA;\n const comparableBValue =\n typeof valueOfB === 'string' ? valueOfB.toLowerCase() : valueOfB;\n\n if (comparableAValue < comparableBValue) return -1;\n if (comparableAValue > comparableBValue) return 1;\n return 0;\n });\n\n const getSortedData: () => T[] = () => {\n if (sortConfig.order === 'none') {\n return tableData;\n }\n if (sortConfig.order === 'descending') {\n return [...tableSortedAscending].reverse();\n }\n return tableSortedAscending;\n };\n\n const sortedData = getSortedData();\n\n const 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 const 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 DetailedHTMLProps<\n 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 { useState, useEffect, useRef, KeyboardEvent } from 'react';\nimport { TableBodyProps, TableRowProps } from './index';\n\nfunction onTableKeypress(\n event: 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 = useRef<HTMLTableSectionElement>(null);\n const tableHasFocus = tableBodyRef?.current?.contains(document.activeElement);\n\n 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 = 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: 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","stickyHeader","rest","_excluded","tableRef","useRef","useEffect","tableElement","current","observerElement","document","createElement","classList","add","parentNode","insertBefore","observer","IntersectionObserver","entries","toggle","isIntersecting","threshold","observe","unobserve","remove","classNames","mergeRefs","TableHead","props","TableBody","TableFooter","TableRow","hover","active","error","DataCell","padding","status","undefined","HeaderCell","children","name","sortConfig","sortableButtonProps","useState","isCurrentlySorted","setIsCurrentlySorted","key","ariaSort","order","SortableHeaderCellButton","_excluded2","type","UnsortedIcon","size","UpArrowIcon","DownArrowIcon","useSortableData","tableData","externalSortConfig","setSortConfig","onSortRequested","sortingNewColumn","tableSortedAscending","sort","a","b","valueOfA","get","valueOfB","comparableAValue","toLowerCase","comparableBValue","getSortedData","reverse","sortedData","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","tableHasFocus","contains","activeElement","childNodes","parentElement","focus","getTableBodyNavigationProps","tableRowRef","getTableRowNavigationProps","row","tabIndex","onKeyDown","e","newCell","warnAboutMissingStyles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.esm.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.ts","../src/index.tsx"],"sourcesContent":["import React, { useEffect, useRef } from 'react';\nimport classNames from 'classnames';\nimport { useRandomId, mergeRefs } from '@entur/utils';\nimport { VisuallyHidden } from '@entur/a11y';\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 /** Om header-raden skal bli værende på skjermen når man skroller tabellen\n * @default false\n */\n stickyHeader?: 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 changeSortDescription = 'Tabelloverskrifter med knapper kan trykkes på for å endre sortering,',\n stickyHeader = false,\n ...rest\n },\n ref,\n ) => {\n const sortableHeaderId = useRandomId('sortable-header');\n\n const tableRef = useRef<HTMLTableElement>(null);\n\n useEffect(() => {\n if (stickyHeader) {\n /* We check when an inserted div above the header \n is outside our scrolling container to determine when\n the table header becomes sticky. This is necessary\n to conditionally add our box-shadow when the \n header is overlapping table rows */\n const tableElement = tableRef.current;\n const observerElement = document.createElement('div');\n observerElement.classList.add('sticky-observer');\n\n tableElement?.parentNode?.insertBefore(observerElement, tableElement);\n\n const observer = new IntersectionObserver(\n entries => {\n tableElement?.classList.toggle(\n 'eds-table--sticky-header--active',\n !entries[0].isIntersecting,\n );\n },\n { threshold: [0, 1] },\n );\n\n observer.observe(observerElement);\n\n return () => {\n observer.unobserve(observerElement);\n observerElement.remove();\n };\n }\n }, [stickyHeader]);\n\n return (\n <>\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 { 'eds-table--sticky-header': stickyHeader },\n className,\n )}\n ref={mergeRefs(ref, tableRef)}\n aria-describedby={sortable ? sortableHeaderId : undefined}\n {...rest}\n />\n {sortable && (\n <VisuallyHidden id={sortableHeaderId}>\n {changeSortDescription}\n </VisuallyHidden>\n )}\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, { useEffect, useState } from 'react';\nimport classNames from 'classnames';\n\nimport { DownArrowIcon, UpArrowIcon, UnsortedIcon } from '@entur/icons';\n\nimport { ExternalSortConfig } from '.';\n\nimport './HeaderCell.scss';\nimport { VisuallyHidden } from '@entur/a11y';\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 sortedAscendingAriaLabel?: string;\n sortedDescendingAriaLabel?: 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 sortedAscendingAriaLabel = ', sortert stigende',\n sortedDescendingAriaLabel = ', sortert synkende',\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 : undefined;\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 ariaSort={ariaSort}\n sortedAscendingAriaLabel={sortedAscendingAriaLabel}\n sortedDescendingAriaLabel={sortedDescendingAriaLabel}\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 ariaSort?: 'none' | 'ascending' | 'descending' | 'other' | undefined;\n sortedAscendingAriaLabel?: string;\n sortedDescendingAriaLabel?: string;\n};\n\nconst SortableHeaderCellButton: React.FC<SortableHeaderCellButtonProps> = ({\n sortConfig,\n sortableButtonProps,\n isCurrentlySorted,\n children,\n ariaSort,\n sortedAscendingAriaLabel,\n sortedDescendingAriaLabel,\n}) => {\n const [sortedAriaInfo, setSortedAriaInfo] = useState<string | undefined>('');\n\n const { className, ...rest } = sortableButtonProps;\n\n const isFirefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n\n useEffect(() => {\n const DISMISS_SORT_INFO_TIME = 3000;\n if (sortConfig.order == 'ascending') {\n setSortedAriaInfo(sortedAscendingAriaLabel);\n } else if (sortConfig.order == 'descending') {\n setSortedAriaInfo(sortedDescendingAriaLabel);\n }\n const dismissAriaTimer = setTimeout(() => {\n setSortedAriaInfo('');\n if (isFirefox) setSortedAriaInfo(', sort ' + sortConfig.order);\n }, DISMISS_SORT_INFO_TIME);\n\n return () => clearTimeout(dismissAriaTimer);\n }, [sortConfig.order]);\n\n return (\n <button\n className={classNames('eds-table__header-cell-button', className)}\n type=\"button\"\n aria-sort={ariaSort}\n {...rest}\n >\n {children}\n {(!isCurrentlySorted || sortConfig.order === 'none') && (\n <UnsortedIcon\n size=\"1rem\"\n className=\"eds-table__header-cell-button-icon\"\n aria-hidden=\"true\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'ascending' && (\n <UpArrowIcon\n size=\"1rem\"\n className=\"eds-table__header-cell-button-icon\"\n aria-hidden=\"true\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'descending' && (\n <DownArrowIcon\n size=\"1rem\"\n className=\"eds-table__header-cell-button-icon\"\n aria-hidden=\"true\"\n />\n )}\n <VisuallyHidden>{isCurrentlySorted && sortedAriaInfo}</VisuallyHidden>\n </button>\n );\n};\n","import { useState, DetailedHTMLProps, ButtonHTMLAttributes } 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 tableData: T[],\n externalSortConfig: ExternalSortConfig = { key: '', order: 'none' },\n): {\n sortedData: T[];\n getSortableHeaderProps: (\n args: SortableHeaderProps,\n ) => SortableHeaderReturnProps;\n getSortableTableProps: (\n args?: SortableTableProps,\n ) => SortableTableReturnProps;\n} {\n const [sortConfig, setSortConfig] = useState(externalSortConfig);\n\n const onSortRequested = (key: string) => {\n const sortingNewColumn = key !== sortConfig.key;\n if (sortingNewColumn || sortConfig.order === 'none')\n return setSortConfig({ key, order: 'ascending' });\n if (sortConfig.order === 'ascending')\n return setSortConfig({ key, order: 'descending' });\n if (sortConfig.order === 'descending')\n return setSortConfig({ key, order: 'none' });\n };\n\n const tableSortedAscending = [...tableData].sort((a: any, b: any) => {\n const valueOfA = get(a, sortConfig.key, a);\n const valueOfB = get(b, sortConfig.key, b);\n\n const comparableAValue =\n typeof valueOfA === 'string' ? valueOfA.toLowerCase() : valueOfA;\n const comparableBValue =\n typeof valueOfB === 'string' ? valueOfB.toLowerCase() : valueOfB;\n\n if (comparableAValue < comparableBValue) return -1;\n if (comparableAValue > comparableBValue) return 1;\n return 0;\n });\n\n const getSortedData: () => T[] = () => {\n if (sortConfig.order === 'none') {\n return tableData;\n }\n if (sortConfig.order === 'descending') {\n return [...tableSortedAscending].reverse();\n }\n return tableSortedAscending;\n };\n\n const sortedData = getSortedData();\n\n const 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 const 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 DetailedHTMLProps<\n 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 { useState, useEffect, useRef, KeyboardEvent } from 'react';\nimport { TableBodyProps, TableRowProps } from './index';\n\nfunction onTableKeypress(\n event: 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 = useRef<HTMLTableSectionElement>(null);\n const tableHasFocus = tableBodyRef?.current?.contains(document.activeElement);\n\n 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 = 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: 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","changeSortDescription","stickyHeader","rest","_excluded","sortableHeaderId","useRandomId","tableRef","useRef","useEffect","tableElement","current","observerElement","document","createElement","classList","add","parentNode","insertBefore","observer","IntersectionObserver","entries","toggle","isIntersecting","threshold","observe","unobserve","remove","Fragment","classNames","mergeRefs","undefined","VisuallyHidden","id","TableHead","props","TableBody","TableFooter","TableRow","hover","active","error","DataCell","padding","status","HeaderCell","children","name","sortConfig","sortableButtonProps","sortedAscendingAriaLabel","sortedDescendingAriaLabel","useState","isCurrentlySorted","setIsCurrentlySorted","key","ariaSort","order","SortableHeaderCellButton","sortedAriaInfo","setSortedAriaInfo","_excluded2","isFirefox","navigator","userAgent","toLowerCase","indexOf","DISMISS_SORT_INFO_TIME","dismissAriaTimer","setTimeout","clearTimeout","type","UnsortedIcon","size","UpArrowIcon","DownArrowIcon","useSortableData","tableData","externalSortConfig","setSortConfig","onSortRequested","sortingNewColumn","tableSortedAscending","sort","a","b","valueOfA","get","valueOfB","comparableAValue","comparableBValue","getSortedData","reverse","sortedData","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","tableHasFocus","contains","activeElement","childNodes","parentElement","focus","getTableBodyNavigationProps","tableRowRef","getTableRowNavigationProps","row","tabIndex","onKeyDown","e","newCell","warnAboutMissingStyles"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ export type ExternalSortConfig = {
|
|
|
10
10
|
export declare function useSortableData<T>(tableData: T[], externalSortConfig?: ExternalSortConfig): {
|
|
11
11
|
sortedData: T[];
|
|
12
12
|
getSortableHeaderProps: (args: SortableHeaderProps) => SortableHeaderReturnProps;
|
|
13
|
-
getSortableTableProps: (args
|
|
13
|
+
getSortableTableProps: (args?: SortableTableProps) => SortableTableReturnProps;
|
|
14
14
|
};
|
|
15
15
|
export type SortableHeaderProps = {
|
|
16
16
|
/** Navnet headeren skal se etter i forhold til sortering av items */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@entur/table",
|
|
3
|
-
"version": "4.6.
|
|
3
|
+
"version": "4.6.5",
|
|
4
4
|
"license": "EUPL-1.2",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/table.esm.js",
|
|
@@ -27,16 +27,17 @@
|
|
|
27
27
|
"react-dom": ">=16.8.0"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@entur/
|
|
31
|
-
"@entur/
|
|
32
|
-
"@entur/
|
|
30
|
+
"@entur/a11y": "0.2.51",
|
|
31
|
+
"@entur/button": "^3.0.5",
|
|
32
|
+
"@entur/expand": "^3.3.44",
|
|
33
|
+
"@entur/form": "^7.0.5",
|
|
33
34
|
"@entur/icons": "^6.2.0",
|
|
34
35
|
"@entur/tokens": "^3.8.1",
|
|
35
|
-
"@entur/tooltip": "^2.6.
|
|
36
|
-
"@entur/utils": "^0.
|
|
36
|
+
"@entur/tooltip": "^2.6.15",
|
|
37
|
+
"@entur/utils": "^0.9.0",
|
|
37
38
|
"@types/lodash.get": "^4.4.6",
|
|
38
39
|
"classnames": "^2.3.1",
|
|
39
40
|
"lodash.get": "^4.4.2"
|
|
40
41
|
},
|
|
41
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "cd5c398453c486f6f160905247b94c6da2622d7c"
|
|
42
43
|
}
|