@entur/table 4.5.42 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/Table.d.ts CHANGED
@@ -10,6 +10,10 @@ export type TableProps = {
10
10
  * @default false
11
11
  */
12
12
  fixed?: boolean;
13
+ /** Om header-raden skal bli værende på skjermen når man skroller tabellen
14
+ * @default false
15
+ */
16
+ stickyHeader?: boolean;
13
17
  /** Innholdet i tabellen */
14
18
  children: React.ReactNode;
15
19
  [key: string]: any;
package/dist/styles.css CHANGED
@@ -11,6 +11,9 @@
11
11
  .eds-table--fixed {
12
12
  table-layout: fixed;
13
13
  }
14
+ .eds-table--sticky-header {
15
+ position: relative;
16
+ }
14
17
  .eds-table__data-cell {
15
18
  height: 3.75rem;
16
19
  padding: 1rem 1.5rem;
@@ -107,6 +110,12 @@
107
110
  .eds-contrast .eds-table__head {
108
111
  border-color: #393d79;
109
112
  }
113
+ .eds-table--sticky-header--active .eds-table__head {
114
+ position: sticky;
115
+ top: 0;
116
+ box-shadow: 0px 10px 8px -10px rgba(0, 0, 0, 0.15);
117
+ border-bottom: none;
118
+ }
110
119
  /* DO NOT CHANGE!*/
111
120
  /* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
112
121
  .eds-table__header-cell {
@@ -168,6 +177,22 @@
168
177
  .eds-contrast .eds-table__header-cell-button:focus {
169
178
  outline: 2px solid #ffffff;
170
179
  }
180
+ .eds-table--sticky-header .eds-table__header-cell {
181
+ background-color: #ffffff;
182
+ position: sticky;
183
+ top: 0;
184
+ }
185
+ .eds-contrast .eds-table--sticky-header .eds-table__header-cell {
186
+ background-color: #181c56;
187
+ }
188
+ /* DO NOT CHANGE!*/
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
+ }
171
196
  /* DO NOT CHANGE!*/
172
197
  /* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
173
198
  .eds-editable-cell {
@@ -285,11 +310,3 @@
285
310
  .eds-table--small .eds-editable-cell .eds-form-control-wrapper .eds-form-control {
286
311
  padding: calc(0.25rem - 0.125rem) calc(0.5rem - 0.0625rem);
287
312
  }
288
- /* DO NOT CHANGE!*/
289
- /* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
290
- .eds-expand-row-button__icon {
291
- transition: transform ease-in-out 0.2s;
292
- }
293
- .eds-expand-row-button--open .eds-expand-row-button__icon {
294
- transform: rotate(180deg);
295
- }
@@ -48,7 +48,7 @@ function _objectWithoutPropertiesLoose(source, excluded) {
48
48
  return target;
49
49
  }
50
50
 
51
- var _excluded$8 = ["className", "fixed", "spacing", "sortable"];
51
+ var _excluded$8 = ["className", "fixed", "spacing", "sortable", "stickyHeader"];
52
52
  var Table = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, ref) {
53
53
  var className = _ref.className,
54
54
  _ref$fixed = _ref.fixed,
@@ -57,7 +57,34 @@ var Table = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, re
57
57
  spacing = _ref$spacing === void 0 ? 'default' : _ref$spacing,
58
58
  _ref$sortable = _ref.sortable,
59
59
  sortable = _ref$sortable === void 0 ? false : _ref$sortable,
60
+ _ref$stickyHeader = _ref.stickyHeader,
61
+ stickyHeader = _ref$stickyHeader === void 0 ? false : _ref$stickyHeader,
60
62
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
63
+ var tableRef = React.useRef(null);
64
+ React.useEffect(function () {
65
+ if (stickyHeader) {
66
+ var _tableElement$parentN;
67
+ /* We check when an inserted div above the header
68
+ is outside our scrolling container to determine when
69
+ the table header becomes sticky. This is necessary
70
+ to conditionally add our box-shadow when the
71
+ header is overlapping table rows */
72
+ var tableElement = tableRef.current;
73
+ var observerElement = document.createElement('div');
74
+ observerElement.classList.add('sticky-observer');
75
+ tableElement == null ? void 0 : (_tableElement$parentN = tableElement.parentNode) == null ? void 0 : _tableElement$parentN.insertBefore(observerElement, tableElement);
76
+ var observer = new IntersectionObserver(function (entries) {
77
+ tableElement == null ? void 0 : tableElement.classList.toggle('eds-table--sticky-header--active', !entries[0].isIntersecting);
78
+ }, {
79
+ threshold: [0, 1]
80
+ });
81
+ observer.observe(observerElement);
82
+ return function () {
83
+ observer.unobserve(observerElement);
84
+ observerElement.remove();
85
+ };
86
+ }
87
+ }, []);
61
88
  return React__default["default"].createElement("table", _extends({
62
89
  className: classNames__default["default"]('eds-table', {
63
90
  'eds-table--fixed': fixed
@@ -67,8 +94,10 @@ var Table = /*#__PURE__*/React__default["default"].forwardRef(function (_ref, re
67
94
  'eds-table--small': spacing === 'small'
68
95
  }, {
69
96
  'eds-table--sortable': sortable
97
+ }, {
98
+ 'eds-table--sticky-header': stickyHeader
70
99
  }, className),
71
- ref: ref
100
+ ref: utils.mergeRefs(ref, tableRef)
72
101
  }, rest));
73
102
  });
74
103
 
@@ -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 from 'react';\nimport classNames from 'classnames';\n\nexport type TableProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Setter tettheten mellom rader og kolonner. Bruk gjerne middle og small for for sider med høy informasjonstetthet\n * @default \"default\"\n */\n spacing?: 'default' | 'middle' | 'small';\n /** Setter kolonne-layout til å være uavhengig av innhold\n * @default false\n */\n fixed?: boolean;\n /** Innholdet i tabellen */\n children: React.ReactNode;\n [key: string]: any;\n};\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n fixed = false,\n spacing = 'default',\n sortable = false,\n ...rest\n },\n ref,\n ) => {\n return (\n <table\n className={classNames(\n 'eds-table',\n { 'eds-table--fixed': fixed },\n { 'eds-table--middle': spacing === 'middle' },\n { 'eds-table--small': spacing === 'small' },\n { 'eds-table--sortable': sortable },\n className,\n )}\n ref={ref}\n {...rest}\n />\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableHeadProps = {\n /** Kolonneoverskrifter */\n children: React.ReactNode;\n /** Esktra klassenavn */\n className?: string;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableHead = React.forwardRef<\n HTMLTableSectionElement,\n TableHeadProps\n>(({ className, ...props }, ref) => (\n <thead\n className={classNames('eds-table__head', className)}\n ref={ref}\n {...props}\n />\n));\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableBodyProps = {\n /** Tabellrader */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n ref?: React.Ref<HTMLTableSectionElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, ...rest }, ref) => (\n <tbody\n className={classNames('eds-table__body', className)}\n ref={ref}\n {...rest}\n />\n));\n","import React from 'react';\n\nexport type TableFooterProps = {\n /** Tabellrader */\n children: React.ReactNode;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n TableFooterProps\n>(({ ...props }, ref) => <tfoot ref={ref} {...props} />);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableRowProps = {\n /** Tabellceller */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /**Hvis satt, så vil tabellraden endre fargen ved hover\n * @default false\n */\n hover?: boolean;\n /** Om raden er klikkbar, så vil raden endre farge, og musepekeren vil symbolisere interaktivitet\n * @default false\n */\n active?: boolean;\n /**Signalisere om at det er en feil i tabellraden\n * @default false\n */\n error?: boolean;\n ref?: React.Ref<HTMLTableRowElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>;\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { className, hover = false, active = false, error = false, ...rest },\n ref: React.Ref<HTMLTableRowElement>,\n ) => (\n <tr\n className={classNames('eds-table__row', className, {\n 'eds-table__row--hover': hover,\n 'eds-table__row--active': active,\n 'eds-table__row--error': error,\n })}\n ref={ref}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type DataCellProps = {\n /** Innholdet i tabellcellen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for DataCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n /** Viser en status-sirkel for DataCell */\n status?: 'positive' | 'negative' | 'neutral';\n} & React.DetailedHTMLProps<\n React.TdHTMLAttributes<HTMLTableDataCellElement>,\n HTMLTableDataCellElement\n>;\n\nexport const DataCell = React.forwardRef<\n HTMLTableDataCellElement,\n DataCellProps\n>(\n (\n { className, padding = 'default', status = undefined, ...rest },\n ref: React.Ref<HTMLTableDataCellElement>,\n ) => (\n <td\n ref={ref}\n className={classNames('eds-table__data-cell', className, {\n [`eds-table__data-cell--status-${status}`]: status,\n 'eds-table__data-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__data-cell--padding-radio': padding === 'radio',\n 'eds-table__data-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { DownArrowIcon, UpArrowIcon, UnsortedIcon } from '@entur/icons';\n\nimport { ExternalSortConfig } from '.';\n\nimport './HeaderCell.scss';\n\nexport type HeaderCellProps = {\n /** Kolonneoverskrift */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for HeaderCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n\n /** Ekstra props som kan sendes til sorteringsknappelementet. Benyttes via useSortableTable */\n sortableButtonProps?: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n\n /** Om komponenten brukes til sortering. Benytt via useSortableTable\n * @default false\n */\n sortable?: boolean;\n /** Konfigurering og rekkefølgen på sortering. Benyttes via useSortableTable */\n sortConfig?: ExternalSortConfig;\n /** Navnet det skal sorteres på. Benyttes via useSortableTable */\n name?: string;\n} & React.DetailedHTMLProps<\n React.ThHTMLAttributes<HTMLTableCellElement>,\n HTMLTableCellElement\n>;\n\nexport const HeaderCell = React.forwardRef<\n HTMLTableCellElement,\n HeaderCellProps\n>(\n (\n {\n className,\n children,\n name,\n sortable = false,\n sortConfig,\n padding = 'default',\n sortableButtonProps,\n ...rest\n },\n ref,\n ) => {\n const [isCurrentlySorted, setIsCurrentlySorted] =\n React.useState<boolean>(false);\n React.useEffect(() => {\n sortConfig &&\n name &&\n setIsCurrentlySorted(sortConfig && name === sortConfig.key);\n }, [sortConfig, name]);\n const ariaSort = isCurrentlySorted\n ? sortConfig && sortConfig.order\n : 'none';\n\n return (\n <th\n className={classNames('eds-table__header-cell', className, {\n 'eds-table__header-cell--sortable': sortable,\n 'eds-table__header-cell--padding-radio': padding === 'radio',\n 'eds-table__header-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__header-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n aria-sort={ariaSort}\n ref={ref}\n {...rest}\n >\n {sortable && sortConfig && sortableButtonProps ? (\n <SortableHeaderCellButton\n sortableButtonProps={sortableButtonProps}\n sortConfig={sortConfig}\n isCurrentlySorted={isCurrentlySorted}\n >\n {children}\n </SortableHeaderCellButton>\n ) : (\n children\n )}\n </th>\n );\n },\n);\n\ntype SortableHeaderCellButtonProps = {\n sortConfig: ExternalSortConfig;\n isCurrentlySorted: boolean;\n sortableButtonProps: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n};\n\nconst SortableHeaderCellButton: React.FC<SortableHeaderCellButtonProps> = ({\n sortConfig,\n sortableButtonProps,\n isCurrentlySorted,\n children,\n}) => {\n const { className, ...rest } = sortableButtonProps;\n return (\n <button\n className={classNames('eds-table__header-cell-button', className)}\n type=\"button\"\n {...rest}\n >\n {children}\n {(!isCurrentlySorted || sortConfig.order === 'none') && (\n <UnsortedIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"usortert kolonne\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'ascending' && (\n <UpArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"stigende sortert kolonne\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'descending' && (\n <DownArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"synkende sortert kolonne\"\n />\n )}\n </button>\n );\n};\n","import { 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","rest","_excluded","classNames","TableHead","props","TableBody","TableFooter","createElement","TableRow","hover","active","error","DataCell","padding","status","undefined","HeaderCell","children","name","sortConfig","sortableButtonProps","useState","isCurrentlySorted","setIsCurrentlySorted","useEffect","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","useRef","tableHasFocus","current","contains","document","activeElement","childNodes","parentElement","focus","getTableBodyNavigationProps","tableRowRef","getTableRowNavigationProps","row","tabIndex","onKeyDown","e","newCell","warnAboutMissingStyles"],"mappings":"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"}
1
+ {"version":3,"file":"table.cjs.development.js","sources":["../src/Table.tsx","../src/TableHead.tsx","../src/TableBody.tsx","../src/TableFooter.tsx","../src/TableRow.tsx","../src/DataCell.tsx","../src/HeaderCell.tsx","../src/useSortableTable.ts","../src/EditableCell.tsx","../src/ExpandableRow.tsx","../src/ExpandRowButton.tsx","../src/useTableKeyboardNavigation.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,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),a=require("classnames"),r=require("@entur/icons"),n=require("lodash.get"),o=require("@entur/form"),l=require("@entur/tooltip"),d=require("@entur/expand"),s=require("@entur/button");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=u(t),i=u(a),f=u(n);function b(){return b=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e},b.apply(this,arguments)}function v(e,t){if(null==e)return{};var a,r,n={},o=Object.keys(e);for(r=0;r<o.length;r++)t.indexOf(a=o[r])>=0||(n[a]=e[a]);return n}var p=["className","fixed","spacing","sortable"],m=c.default.forwardRef((function(e,t){var a=e.className,r=e.fixed,n=void 0!==r&&r,o=e.spacing,l=void 0===o?"default":o,d=e.sortable,s=void 0!==d&&d,u=v(e,p);return c.default.createElement("table",b({className:i.default("eds-table",{"eds-table--fixed":n},{"eds-table--middle":"middle"===l},{"eds-table--small":"small"===l},{"eds-table--sortable":s},a),ref:t},u))})),_=["className"],g=c.default.forwardRef((function(e,t){var a=e.className,r=v(e,_);return c.default.createElement("thead",b({className:i.default("eds-table__head",a),ref:t},r))})),w=["className"],h=c.default.forwardRef((function(e,t){var a=e.className,r=v(e,w);return c.default.createElement("tbody",b({className:i.default("eds-table__body",a),ref:t},r))})),N=c.default.forwardRef((function(e,t){var a=b({},(function(e){if(null==e)throw new TypeError("Cannot destructure "+e)}(e),e));return c.default.createElement("tfoot",b({ref:t},a))})),x=["className","hover","active","error"],y=c.default.forwardRef((function(e,t){var a=e.className,r=e.hover,n=void 0!==r&&r,o=e.active,l=void 0!==o&&o,d=e.error,s=void 0!==d&&d,u=v(e,x);return c.default.createElement("tr",b({className:i.default("eds-table__row",a,{"eds-table__row--hover":n,"eds-table__row--active":l,"eds-table__row--error":s}),ref:t},u))})),E=["className","padding","status"],k=c.default.forwardRef((function(e,t){var a,r=e.className,n=e.padding,o=void 0===n?"default":n,l=e.status,d=void 0===l?void 0:l,s=v(e,E);return c.default.createElement("td",b({ref:t,className:i.default("eds-table__data-cell",r,(a={},a["eds-table__data-cell--status-"+d]=d,a["eds-table__data-cell--padding-checkbox"]="checkbox"===o,a["eds-table__data-cell--padding-radio"]="radio"===o,a["eds-table__data-cell--padding-overflow-menu"]="overflow-menu"===o,a))},s))})),C=["className","children","name","sortable","sortConfig","padding","sortableButtonProps"],P=["className"],R=c.default.forwardRef((function(e,t){var a=e.className,r=e.children,n=e.name,o=e.sortable,l=void 0!==o&&o,d=e.sortConfig,s=e.padding,u=void 0===s?"default":s,f=e.sortableButtonProps,p=v(e,C),m=c.default.useState(!1),_=m[0],g=m[1];c.default.useEffect((function(){d&&n&&g(d&&n===d.key)}),[d,n]);var w=_?d&&d.order:"none";return c.default.createElement("th",b({className:i.default("eds-table__header-cell",a,{"eds-table__header-cell--sortable":l,"eds-table__header-cell--padding-radio":"radio"===u,"eds-table__header-cell--padding-checkbox":"checkbox"===u,"eds-table__header-cell--padding-overflow-menu":"overflow-menu"===u}),"aria-sort":w,ref:t},p),l&&d&&f?c.default.createElement(S,{sortableButtonProps:f,sortConfig:d,isCurrentlySorted:_},r):r)})),S=function(e){var t=e.sortConfig,a=e.sortableButtonProps,n=e.isCurrentlySorted,o=e.children,l=a.className,d=v(a,P);return c.default.createElement("button",b({className:i.default("eds-table__header-cell-button",l),type:"button"},d),o,(!n||"none"===t.order)&&c.default.createElement(r.UnsortedIcon,{size:"16px",className:"eds-table__header-cell-button-icon","aria-label":"usortert kolonne"}),n&&"ascending"===t.order&&c.default.createElement(r.UpArrowIcon,{size:"16px",className:"eds-table__header-cell-button-icon","aria-label":"stigende sortert kolonne"}),n&&"descending"===t.order&&c.default.createElement(r.DownArrowIcon,{size:"16px",className:"eds-table__header-cell-button-icon","aria-label":"synkende sortert kolonne"}))},T=["name","sortable","buttonProps"],B=["sortable"],q=["children","className","feedback","variant","outlined"],D=["open","onClick"];function A(e,t,a,r){switch(e.key){case"ArrowUp":return e.preventDefault(),r?0===t?a-1:t-1:t>0?t-1:0;case"ArrowDown":return e.preventDefault(),r?t===a-1?0:t+1:t<a-1?t+1:t;default:return t}}e.warnAboutMissingStyles("table"),exports.DataCell=k,exports.EditableCell=function(e){var t=e.children,a=e.className,r=e.feedback,n=e.variant,d=e.outlined,s=void 0!==d&&d,u=v(e,q);return c.default.createElement(o.VariantProvider,{variant:n},c.default.createElement(k,b({className:i.default("eds-editable-cell",{"eds-editable-cell--outlined":s},a)},u),c.default.createElement(l.Tooltip,{disableHoverListener:!r,disableFocusListener:!r,placement:"bottom",content:r||void 0,variant:r?"error":void 0},t)))},exports.ExpandRowButton=function(e){var t=e.open,a=e.onClick,n=v(e,D);return c.default.createElement(s.IconButton,b({className:i.default("eds-expand-row-button",{"eds-expand-row-button--open":t}),onClick:a,"aria-label":t?"Lukk tabellrad":"Utvid tabellrad"},n),c.default.createElement(r.DownArrowIcon,{className:"eds-expand-row-button__icon"}))},exports.ExpandableRow=function(e){var t=e.open;return c.default.createElement("tr",null,c.default.createElement("td",{colSpan:e.colSpan},c.default.createElement(d.BaseExpand,{open:void 0!==t&&t},e.children)))},exports.HeaderCell=R,exports.Table=m,exports.TableBody=h,exports.TableFooter=N,exports.TableHead=g,exports.TableRow=y,exports.useSortableData=function(e,a){void 0===a&&(a={key:"",order:"none"});var r=t.useState(a),n=r[0],o=r[1],l=[].concat(e).sort((function(e,t){var a=f.default(e,n.key,e),r=f.default(t,n.key,t),o="string"==typeof a?a.toLowerCase():a,l="string"==typeof r?r.toLowerCase():r;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,a=e.sortable,r=void 0===a||a,l=e.buttonProps,d=v(e,T);return b({name:t,sortable:r,sortConfig:n,sortableButtonProps:b({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=e.sortable,a=void 0===t||t,r=v(e,B);return b({sortable:a,sortConfig:n},r)}}},exports.useTableKeyboardNavigation=function(e,a){var r;void 0===e&&(e=0),void 0===a&&(a=!0);var n=t.useState(e),o=n[0],l=n[1],d=t.useState(0),s=d[0],u=d[1],c=t.useRef(null),i=null==c||null==(r=c.current)?void 0:r.contains(document.activeElement);t.useEffect((function(){var e;c&&c.current&&i&&(null==(e=c.current.childNodes[o].childNodes[0].parentElement)||e.focus())}),[o,i]);var f=t.useRef(null);return{getTableRowNavigationProps:function(t){t>=s&&u(t+1);for(var r=o?0:-1,n=arguments.length,d=new Array(n>1?n-1:0),c=1;c<n;c++)d[c-1]=arguments[c];return b({tabIndex:r,ref:f,onClick:function(){return l(t)},onKeyDown:function(t){var r=A(t,o,e,a);l(r)}},d)},getTableBodyNavigationProps:function(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];return b({ref:c},t)}}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),r=require("classnames"),a=require("@entur/icons"),n=require("lodash.get"),o=require("@entur/form"),l=require("@entur/tooltip"),d=require("@entur/expand"),s=require("@entur/button");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=u(t),i=u(r),f=u(n);function b(){return b=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},b.apply(this,arguments)}function v(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 m=["className","fixed","spacing","sortable","stickyHeader"],p=c.default.forwardRef((function(r,a){var n=r.className,o=r.fixed,l=void 0!==o&&o,d=r.spacing,s=void 0===d?"default":d,u=r.sortable,f=void 0!==u&&u,p=r.stickyHeader,g=void 0!==p&&p,_=v(r,m),w=t.useRef(null);return t.useEffect((function(){if(g){var e,t=w.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()}}}),[]),c.default.createElement("table",b({className:i.default("eds-table",{"eds-table--fixed":l},{"eds-table--middle":"middle"===s},{"eds-table--small":"small"===s},{"eds-table--sortable":f},{"eds-table--sticky-header":g},n),ref:e.mergeRefs(a,w)},_))})),g=["className"],_=c.default.forwardRef((function(e,t){var r=e.className,a=v(e,g);return c.default.createElement("thead",b({className:i.default("eds-table__head",r),ref:t},a))})),w=["className"],h=c.default.forwardRef((function(e,t){var r=e.className,a=v(e,w);return c.default.createElement("tbody",b({className:i.default("eds-table__body",r),ref:t},a))})),y=c.default.forwardRef((function(e,t){var r=b({},(function(e){if(null==e)throw new TypeError("Cannot destructure "+e)}(e),e));return c.default.createElement("tfoot",b({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,u=v(e,N);return c.default.createElement("tr",b({className:i.default("eds-table__row",r,{"eds-table__row--hover":n,"eds-table__row--active":l,"eds-table__row--error":s}),ref:t},u))})),x=["className","padding","status"],E=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=v(e,x);return c.default.createElement("td",b({ref:t,className:i.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"],R=["className"],P=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,u=void 0===s?"default":s,f=e.sortableButtonProps,m=v(e,C),p=c.default.useState(!1),g=p[0],_=p[1];c.default.useEffect((function(){d&&n&&_(d&&n===d.key)}),[d,n]);var w=g?d&&d.order:"none";return c.default.createElement("th",b({className:i.default("eds-table__header-cell",r,{"eds-table__header-cell--sortable":l,"eds-table__header-cell--padding-radio":"radio"===u,"eds-table__header-cell--padding-checkbox":"checkbox"===u,"eds-table__header-cell--padding-overflow-menu":"overflow-menu"===u}),"aria-sort":w,ref:t},m),l&&d&&f?c.default.createElement(S,{sortableButtonProps:f,sortConfig:d,isCurrentlySorted:g},a):a)})),S=function(e){var t=e.sortConfig,r=e.sortableButtonProps,n=e.isCurrentlySorted,o=e.children,l=r.className,d=v(r,R);return c.default.createElement("button",b({className:i.default("eds-table__header-cell-button",l),type:"button"},d),o,(!n||"none"===t.order)&&c.default.createElement(a.UnsortedIcon,{size:"16px",className:"eds-table__header-cell-button-icon","aria-label":"usortert kolonne"}),n&&"ascending"===t.order&&c.default.createElement(a.UpArrowIcon,{size:"16px",className:"eds-table__header-cell-button-icon","aria-label":"stigende sortert kolonne"}),n&&"descending"===t.order&&c.default.createElement(a.DownArrowIcon,{size:"16px",className:"eds-table__header-cell-button-icon","aria-label":"synkende sortert kolonne"}))},B=["name","sortable","buttonProps"],T=["sortable"],q=["children","className","feedback","variant","outlined"],D=["open","onClick"];function A(e,t,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=E,exports.EditableCell=function(e){var t=e.children,r=e.className,a=e.feedback,n=e.variant,d=e.outlined,s=void 0!==d&&d,u=v(e,q);return c.default.createElement(o.VariantProvider,{variant:n},c.default.createElement(E,b({className:i.default("eds-editable-cell",{"eds-editable-cell--outlined":s},r)},u),c.default.createElement(l.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,n=v(e,D);return c.default.createElement(s.IconButton,b({className:i.default("eds-expand-row-button",{"eds-expand-row-button--open":t}),onClick:r,"aria-label":t?"Lukk tabellrad":"Utvid tabellrad"},n),c.default.createElement(a.DownArrowIcon,{className:"eds-expand-row-button__icon"}))},exports.ExpandableRow=function(e){var t=e.open;return c.default.createElement("tr",null,c.default.createElement("td",{colSpan:e.colSpan},c.default.createElement(d.BaseExpand,{open:void 0!==t&&t},e.children)))},exports.HeaderCell=P,exports.Table=p,exports.TableBody=h,exports.TableFooter=y,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=f.default(e,n.key,e),a=f.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=v(e,B);return b({name:t,sortable:a,sortConfig:n,sortableButtonProps:b({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=e.sortable,r=void 0===t||t,a=v(e,T);return b({sortable:r,sortConfig:n},a)}}},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],u=d[1],c=t.useRef(null),i=null==c||null==(a=c.current)?void 0:a.contains(document.activeElement);t.useEffect((function(){var e;c&&c.current&&i&&(null==(e=c.current.childNodes[o].childNodes[0].parentElement)||e.focus())}),[o,i]);var f=t.useRef(null);return{getTableRowNavigationProps:function(t){t>=s&&u(t+1);for(var a=o?0:-1,n=arguments.length,d=new Array(n>1?n-1:0),c=1;c<n;c++)d[c-1]=arguments[c];return b({tabIndex:a,ref:f,onClick:function(){return l(t)},onKeyDown:function(t){var a=A(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 b({ref:c},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 from 'react';\nimport classNames from 'classnames';\n\nexport type TableProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Setter tettheten mellom rader og kolonner. Bruk gjerne middle og small for for sider med høy informasjonstetthet\n * @default \"default\"\n */\n spacing?: 'default' | 'middle' | 'small';\n /** Setter kolonne-layout til å være uavhengig av innhold\n * @default false\n */\n fixed?: boolean;\n /** Innholdet i tabellen */\n children: React.ReactNode;\n [key: string]: any;\n};\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n fixed = false,\n spacing = 'default',\n sortable = false,\n ...rest\n },\n ref,\n ) => {\n return (\n <table\n className={classNames(\n 'eds-table',\n { 'eds-table--fixed': fixed },\n { 'eds-table--middle': spacing === 'middle' },\n { 'eds-table--small': spacing === 'small' },\n { 'eds-table--sortable': sortable },\n className,\n )}\n ref={ref}\n {...rest}\n />\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableHeadProps = {\n /** Kolonneoverskrifter */\n children: React.ReactNode;\n /** Esktra klassenavn */\n className?: string;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableHead = React.forwardRef<\n HTMLTableSectionElement,\n TableHeadProps\n>(({ className, ...props }, ref) => (\n <thead\n className={classNames('eds-table__head', className)}\n ref={ref}\n {...props}\n />\n));\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableBodyProps = {\n /** Tabellrader */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n ref?: React.Ref<HTMLTableSectionElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, ...rest }, ref) => (\n <tbody\n className={classNames('eds-table__body', className)}\n ref={ref}\n {...rest}\n />\n));\n","import React from 'react';\n\nexport type TableFooterProps = {\n /** Tabellrader */\n children: React.ReactNode;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n TableFooterProps\n>(({ ...props }, ref) => <tfoot ref={ref} {...props} />);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableRowProps = {\n /** Tabellceller */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /**Hvis satt, så vil tabellraden endre fargen ved hover\n * @default false\n */\n hover?: boolean;\n /** Om raden er klikkbar, så vil raden endre farge, og musepekeren vil symbolisere interaktivitet\n * @default false\n */\n active?: boolean;\n /**Signalisere om at det er en feil i tabellraden\n * @default false\n */\n error?: boolean;\n ref?: React.Ref<HTMLTableRowElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>;\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { className, hover = false, active = false, error = false, ...rest },\n ref: React.Ref<HTMLTableRowElement>,\n ) => (\n <tr\n className={classNames('eds-table__row', className, {\n 'eds-table__row--hover': hover,\n 'eds-table__row--active': active,\n 'eds-table__row--error': error,\n })}\n ref={ref}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type DataCellProps = {\n /** Innholdet i tabellcellen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for DataCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n /** Viser en status-sirkel for DataCell */\n status?: 'positive' | 'negative' | 'neutral';\n} & React.DetailedHTMLProps<\n React.TdHTMLAttributes<HTMLTableDataCellElement>,\n HTMLTableDataCellElement\n>;\n\nexport const DataCell = React.forwardRef<\n HTMLTableDataCellElement,\n DataCellProps\n>(\n (\n { className, padding = 'default', status = undefined, ...rest },\n ref: React.Ref<HTMLTableDataCellElement>,\n ) => (\n <td\n ref={ref}\n className={classNames('eds-table__data-cell', className, {\n [`eds-table__data-cell--status-${status}`]: status,\n 'eds-table__data-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__data-cell--padding-radio': padding === 'radio',\n 'eds-table__data-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { DownArrowIcon, UpArrowIcon, UnsortedIcon } from '@entur/icons';\n\nimport { ExternalSortConfig } from '.';\n\nimport './HeaderCell.scss';\n\nexport type HeaderCellProps = {\n /** Kolonneoverskrift */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for HeaderCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n\n /** Ekstra props som kan sendes til sorteringsknappelementet. Benyttes via useSortableTable */\n sortableButtonProps?: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n\n /** Om komponenten brukes til sortering. Benytt via useSortableTable\n * @default false\n */\n sortable?: boolean;\n /** Konfigurering og rekkefølgen på sortering. Benyttes via useSortableTable */\n sortConfig?: ExternalSortConfig;\n /** Navnet det skal sorteres på. Benyttes via useSortableTable */\n name?: string;\n} & React.DetailedHTMLProps<\n React.ThHTMLAttributes<HTMLTableCellElement>,\n HTMLTableCellElement\n>;\n\nexport const HeaderCell = React.forwardRef<\n HTMLTableCellElement,\n HeaderCellProps\n>(\n (\n {\n className,\n children,\n name,\n sortable = false,\n sortConfig,\n padding = 'default',\n sortableButtonProps,\n ...rest\n },\n ref,\n ) => {\n const [isCurrentlySorted, setIsCurrentlySorted] =\n React.useState<boolean>(false);\n React.useEffect(() => {\n sortConfig &&\n name &&\n setIsCurrentlySorted(sortConfig && name === sortConfig.key);\n }, [sortConfig, name]);\n const ariaSort = isCurrentlySorted\n ? sortConfig && sortConfig.order\n : 'none';\n\n return (\n <th\n className={classNames('eds-table__header-cell', className, {\n 'eds-table__header-cell--sortable': sortable,\n 'eds-table__header-cell--padding-radio': padding === 'radio',\n 'eds-table__header-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__header-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n aria-sort={ariaSort}\n ref={ref}\n {...rest}\n >\n {sortable && sortConfig && sortableButtonProps ? (\n <SortableHeaderCellButton\n sortableButtonProps={sortableButtonProps}\n sortConfig={sortConfig}\n isCurrentlySorted={isCurrentlySorted}\n >\n {children}\n </SortableHeaderCellButton>\n ) : (\n children\n )}\n </th>\n );\n },\n);\n\ntype SortableHeaderCellButtonProps = {\n sortConfig: ExternalSortConfig;\n isCurrentlySorted: boolean;\n sortableButtonProps: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n};\n\nconst SortableHeaderCellButton: React.FC<SortableHeaderCellButtonProps> = ({\n sortConfig,\n sortableButtonProps,\n isCurrentlySorted,\n children,\n}) => {\n const { className, ...rest } = sortableButtonProps;\n return (\n <button\n className={classNames('eds-table__header-cell-button', className)}\n type=\"button\"\n {...rest}\n >\n {children}\n {(!isCurrentlySorted || sortConfig.order === 'none') && (\n <UnsortedIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"usortert kolonne\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'ascending' && (\n <UpArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"stigende sortert kolonne\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'descending' && (\n <DownArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"synkende sortert kolonne\"\n />\n )}\n </button>\n );\n};\n","import { 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","rest","_objectWithoutPropertiesLoose","_excluded","classNames","TableHead","props","TableBody","TableFooter","_extends","_objectDestructuringEmpty","createElement","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","useEffect","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","useRef","tableHasFocus","current","contains","document","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 { 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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"}
package/dist/table.esm.js CHANGED
@@ -1,5 +1,5 @@
1
- import { warnAboutMissingStyles } from '@entur/utils';
2
- import React, { useState, useRef, useEffect } from 'react';
1
+ import { mergeRefs, warnAboutMissingStyles } from '@entur/utils';
2
+ import React, { useRef, useEffect, useState } from 'react';
3
3
  import classNames from 'classnames';
4
4
  import { UnsortedIcon, UpArrowIcon, DownArrowIcon } from '@entur/icons';
5
5
  import get from 'lodash.get';
@@ -38,7 +38,7 @@ function _objectWithoutPropertiesLoose(source, excluded) {
38
38
  return target;
39
39
  }
40
40
 
41
- var _excluded$8 = ["className", "fixed", "spacing", "sortable"];
41
+ var _excluded$8 = ["className", "fixed", "spacing", "sortable", "stickyHeader"];
42
42
  var Table = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
43
43
  var className = _ref.className,
44
44
  _ref$fixed = _ref.fixed,
@@ -47,7 +47,34 @@ var Table = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
47
47
  spacing = _ref$spacing === void 0 ? 'default' : _ref$spacing,
48
48
  _ref$sortable = _ref.sortable,
49
49
  sortable = _ref$sortable === void 0 ? false : _ref$sortable,
50
+ _ref$stickyHeader = _ref.stickyHeader,
51
+ stickyHeader = _ref$stickyHeader === void 0 ? false : _ref$stickyHeader,
50
52
  rest = _objectWithoutPropertiesLoose(_ref, _excluded$8);
53
+ var tableRef = useRef(null);
54
+ useEffect(function () {
55
+ if (stickyHeader) {
56
+ var _tableElement$parentN;
57
+ /* We check when an inserted div above the header
58
+ is outside our scrolling container to determine when
59
+ the table header becomes sticky. This is necessary
60
+ to conditionally add our box-shadow when the
61
+ header is overlapping table rows */
62
+ var tableElement = tableRef.current;
63
+ var observerElement = document.createElement('div');
64
+ observerElement.classList.add('sticky-observer');
65
+ tableElement == null ? void 0 : (_tableElement$parentN = tableElement.parentNode) == null ? void 0 : _tableElement$parentN.insertBefore(observerElement, tableElement);
66
+ var observer = new IntersectionObserver(function (entries) {
67
+ tableElement == null ? void 0 : tableElement.classList.toggle('eds-table--sticky-header--active', !entries[0].isIntersecting);
68
+ }, {
69
+ threshold: [0, 1]
70
+ });
71
+ observer.observe(observerElement);
72
+ return function () {
73
+ observer.unobserve(observerElement);
74
+ observerElement.remove();
75
+ };
76
+ }
77
+ }, []);
51
78
  return React.createElement("table", _extends({
52
79
  className: classNames('eds-table', {
53
80
  'eds-table--fixed': fixed
@@ -57,8 +84,10 @@ var Table = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
57
84
  'eds-table--small': spacing === 'small'
58
85
  }, {
59
86
  'eds-table--sortable': sortable
87
+ }, {
88
+ 'eds-table--sticky-header': stickyHeader
60
89
  }, className),
61
- ref: ref
90
+ ref: mergeRefs(ref, tableRef)
62
91
  }, rest));
63
92
  });
64
93
 
@@ -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 from 'react';\nimport classNames from 'classnames';\n\nexport type TableProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Setter tettheten mellom rader og kolonner. Bruk gjerne middle og small for for sider med høy informasjonstetthet\n * @default \"default\"\n */\n spacing?: 'default' | 'middle' | 'small';\n /** Setter kolonne-layout til å være uavhengig av innhold\n * @default false\n */\n fixed?: boolean;\n /** Innholdet i tabellen */\n children: React.ReactNode;\n [key: string]: any;\n};\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n fixed = false,\n spacing = 'default',\n sortable = false,\n ...rest\n },\n ref,\n ) => {\n return (\n <table\n className={classNames(\n 'eds-table',\n { 'eds-table--fixed': fixed },\n { 'eds-table--middle': spacing === 'middle' },\n { 'eds-table--small': spacing === 'small' },\n { 'eds-table--sortable': sortable },\n className,\n )}\n ref={ref}\n {...rest}\n />\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableHeadProps = {\n /** Kolonneoverskrifter */\n children: React.ReactNode;\n /** Esktra klassenavn */\n className?: string;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableHead = React.forwardRef<\n HTMLTableSectionElement,\n TableHeadProps\n>(({ className, ...props }, ref) => (\n <thead\n className={classNames('eds-table__head', className)}\n ref={ref}\n {...props}\n />\n));\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableBodyProps = {\n /** Tabellrader */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n ref?: React.Ref<HTMLTableSectionElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, ...rest }, ref) => (\n <tbody\n className={classNames('eds-table__body', className)}\n ref={ref}\n {...rest}\n />\n));\n","import React from 'react';\n\nexport type TableFooterProps = {\n /** Tabellrader */\n children: React.ReactNode;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n TableFooterProps\n>(({ ...props }, ref) => <tfoot ref={ref} {...props} />);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableRowProps = {\n /** Tabellceller */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /**Hvis satt, så vil tabellraden endre fargen ved hover\n * @default false\n */\n hover?: boolean;\n /** Om raden er klikkbar, så vil raden endre farge, og musepekeren vil symbolisere interaktivitet\n * @default false\n */\n active?: boolean;\n /**Signalisere om at det er en feil i tabellraden\n * @default false\n */\n error?: boolean;\n ref?: React.Ref<HTMLTableRowElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>;\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { className, hover = false, active = false, error = false, ...rest },\n ref: React.Ref<HTMLTableRowElement>,\n ) => (\n <tr\n className={classNames('eds-table__row', className, {\n 'eds-table__row--hover': hover,\n 'eds-table__row--active': active,\n 'eds-table__row--error': error,\n })}\n ref={ref}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type DataCellProps = {\n /** Innholdet i tabellcellen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for DataCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n /** Viser en status-sirkel for DataCell */\n status?: 'positive' | 'negative' | 'neutral';\n} & React.DetailedHTMLProps<\n React.TdHTMLAttributes<HTMLTableDataCellElement>,\n HTMLTableDataCellElement\n>;\n\nexport const DataCell = React.forwardRef<\n HTMLTableDataCellElement,\n DataCellProps\n>(\n (\n { className, padding = 'default', status = undefined, ...rest },\n ref: React.Ref<HTMLTableDataCellElement>,\n ) => (\n <td\n ref={ref}\n className={classNames('eds-table__data-cell', className, {\n [`eds-table__data-cell--status-${status}`]: status,\n 'eds-table__data-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__data-cell--padding-radio': padding === 'radio',\n 'eds-table__data-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { DownArrowIcon, UpArrowIcon, UnsortedIcon } from '@entur/icons';\n\nimport { ExternalSortConfig } from '.';\n\nimport './HeaderCell.scss';\n\nexport type HeaderCellProps = {\n /** Kolonneoverskrift */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for HeaderCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n\n /** Ekstra props som kan sendes til sorteringsknappelementet. Benyttes via useSortableTable */\n sortableButtonProps?: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n\n /** Om komponenten brukes til sortering. Benytt via useSortableTable\n * @default false\n */\n sortable?: boolean;\n /** Konfigurering og rekkefølgen på sortering. Benyttes via useSortableTable */\n sortConfig?: ExternalSortConfig;\n /** Navnet det skal sorteres på. Benyttes via useSortableTable */\n name?: string;\n} & React.DetailedHTMLProps<\n React.ThHTMLAttributes<HTMLTableCellElement>,\n HTMLTableCellElement\n>;\n\nexport const HeaderCell = React.forwardRef<\n HTMLTableCellElement,\n HeaderCellProps\n>(\n (\n {\n className,\n children,\n name,\n sortable = false,\n sortConfig,\n padding = 'default',\n sortableButtonProps,\n ...rest\n },\n ref,\n ) => {\n const [isCurrentlySorted, setIsCurrentlySorted] =\n React.useState<boolean>(false);\n React.useEffect(() => {\n sortConfig &&\n name &&\n setIsCurrentlySorted(sortConfig && name === sortConfig.key);\n }, [sortConfig, name]);\n const ariaSort = isCurrentlySorted\n ? sortConfig && sortConfig.order\n : 'none';\n\n return (\n <th\n className={classNames('eds-table__header-cell', className, {\n 'eds-table__header-cell--sortable': sortable,\n 'eds-table__header-cell--padding-radio': padding === 'radio',\n 'eds-table__header-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__header-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n aria-sort={ariaSort}\n ref={ref}\n {...rest}\n >\n {sortable && sortConfig && sortableButtonProps ? (\n <SortableHeaderCellButton\n sortableButtonProps={sortableButtonProps}\n sortConfig={sortConfig}\n isCurrentlySorted={isCurrentlySorted}\n >\n {children}\n </SortableHeaderCellButton>\n ) : (\n children\n )}\n </th>\n );\n },\n);\n\ntype SortableHeaderCellButtonProps = {\n sortConfig: ExternalSortConfig;\n isCurrentlySorted: boolean;\n sortableButtonProps: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n};\n\nconst SortableHeaderCellButton: React.FC<SortableHeaderCellButtonProps> = ({\n sortConfig,\n sortableButtonProps,\n isCurrentlySorted,\n children,\n}) => {\n const { className, ...rest } = sortableButtonProps;\n return (\n <button\n className={classNames('eds-table__header-cell-button', className)}\n type=\"button\"\n {...rest}\n >\n {children}\n {(!isCurrentlySorted || sortConfig.order === 'none') && (\n <UnsortedIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"usortert kolonne\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'ascending' && (\n <UpArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"stigende sortert kolonne\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'descending' && (\n <DownArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"synkende sortert kolonne\"\n />\n )}\n </button>\n );\n};\n","import { 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","rest","_excluded","classNames","TableHead","props","TableBody","TableFooter","createElement","TableRow","hover","active","error","DataCell","padding","status","undefined","HeaderCell","children","name","sortConfig","sortableButtonProps","useState","isCurrentlySorted","setIsCurrentlySorted","useEffect","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","useRef","tableHasFocus","current","contains","document","activeElement","childNodes","parentElement","focus","getTableBodyNavigationProps","tableRowRef","getTableRowNavigationProps","row","tabIndex","onKeyDown","e","newCell","warnAboutMissingStyles"],"mappings":"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"}
1
+ {"version":3,"file":"table.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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@entur/table",
3
- "version": "4.5.42",
3
+ "version": "4.6.0",
4
4
  "license": "EUPL-1.2",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/table.esm.js",
@@ -27,16 +27,16 @@
27
27
  "react-dom": ">=16.8.0"
28
28
  },
29
29
  "dependencies": {
30
- "@entur/button": "^3.0.1",
31
- "@entur/expand": "^3.3.38",
32
- "@entur/form": "^6.1.0",
30
+ "@entur/button": "^3.0.2",
31
+ "@entur/expand": "^3.3.39",
32
+ "@entur/form": "^7.0.0",
33
33
  "@entur/icons": "^6.0.1",
34
34
  "@entur/tokens": "^3.8.1",
35
- "@entur/tooltip": "^2.6.9",
36
- "@entur/utils": "^0.5.5",
35
+ "@entur/tooltip": "^2.6.10",
36
+ "@entur/utils": "^0.6.0",
37
37
  "@types/lodash.get": "^4.4.6",
38
38
  "classnames": "^2.3.1",
39
39
  "lodash.get": "^4.4.2"
40
40
  },
41
- "gitHead": "2c2a0a8c94b5196ccb817debb70da641af1e1fcc"
41
+ "gitHead": "8e5454328103d2a6f3e44cbfd900cc534f1a05b9"
42
42
  }