@entur/table 4.5.21 → 4.5.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/dist/HeaderCell.d.ts +1 -1
- package/dist/styles.css +3 -23
- package/dist/table.cjs.development.js +14 -6
- package/dist/table.cjs.development.js.map +1 -1
- package/dist/table.cjs.production.min.js +1 -1
- package/dist/table.cjs.production.min.js.map +1 -1
- package/dist/table.esm.js +15 -7
- package/dist/table.esm.js.map +1 -1
- package/package.json +5 -4
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,19 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [4.5.23](https://bitbucket.org/enturas/design-system/compare/@entur/table@4.5.22...@entur/table@4.5.23) (2022-10-12)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **sortable table:** add aria-label to indicate sorting status for column ([e5e265c](https://bitbucket.org/enturas/design-system/commits/e5e265cce215e01976f7dc03a352101eceb74dfa))
|
|
11
|
+
- **sortable table:** add icon to indicate that a column is sortable ([5b3c164](https://bitbucket.org/enturas/design-system/commits/5b3c1645ba70b85cd4fc5bc2c2ca8c429430182a))
|
|
12
|
+
|
|
13
|
+
## [4.5.22](https://bitbucket.org/enturas/design-system/compare/@entur/table@4.5.21...@entur/table@4.5.22) (2022-10-05)
|
|
14
|
+
|
|
15
|
+
### Bug Fixes
|
|
16
|
+
|
|
17
|
+
- **expandable table button:** change expandable table button to reflect icon button styling ([1814f1c](https://bitbucket.org/enturas/design-system/commits/1814f1ca0bbaa4025e6ba9f1d8dda295aba08523))
|
|
18
|
+
|
|
6
19
|
## [4.5.20](https://bitbucket.org/enturas/design-system/compare/@entur/table@4.5.19...@entur/table@4.5.20) (2022-08-31)
|
|
7
20
|
|
|
8
21
|
**Note:** Version bump only for package @entur/table
|
package/dist/HeaderCell.d.ts
CHANGED
package/dist/styles.css
CHANGED
|
@@ -284,29 +284,9 @@
|
|
|
284
284
|
padding: calc(0.25rem - 0.125rem) calc(0.5rem - 0.0625rem);
|
|
285
285
|
}/* DO NOT CHANGE!*/
|
|
286
286
|
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
287
|
-
.eds-expand-row-button {
|
|
288
|
-
background: #ffffff;
|
|
289
|
-
border: none;
|
|
290
|
-
border-radius: 50%;
|
|
291
|
-
font-family: inherit;
|
|
292
|
-
cursor: pointer;
|
|
293
|
-
height: 1.5rem;
|
|
294
|
-
width: 1.5rem;
|
|
295
|
-
padding: 0.25rem;
|
|
296
|
-
}
|
|
297
|
-
.eds-expand-row-button:focus {
|
|
298
|
-
outline: none;
|
|
299
|
-
box-shadow: 0 0 0 0.125rem #ffffff, 0 0 0 0.25rem #181c56;
|
|
300
|
-
}
|
|
301
|
-
.eds-contrast .eds-expand-row-button:focus {
|
|
302
|
-
box-shadow: 0 0 0 0.125rem #181c56, 0 0 0 0.25rem #ffffff;
|
|
303
|
-
}
|
|
304
|
-
.eds-contrast .eds-expand-row-button {
|
|
305
|
-
background: #181c56;
|
|
306
|
-
}
|
|
307
|
-
.eds-expand-row-button--open .eds-expand-row-button__icon {
|
|
308
|
-
transform: rotate(90deg);
|
|
309
|
-
}
|
|
310
287
|
.eds-expand-row-button__icon {
|
|
311
288
|
transition: transform ease-in-out 0.2s;
|
|
289
|
+
}
|
|
290
|
+
.eds-expand-row-button--open .eds-expand-row-button__icon {
|
|
291
|
+
transform: rotate(180deg);
|
|
312
292
|
}
|
|
@@ -10,6 +10,7 @@ var get = require('lodash.get');
|
|
|
10
10
|
var form = require('@entur/form');
|
|
11
11
|
var tooltip = require('@entur/tooltip');
|
|
12
12
|
var expand = require('@entur/expand');
|
|
13
|
+
var button = require('@entur/button');
|
|
13
14
|
|
|
14
15
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
15
16
|
|
|
@@ -193,12 +194,18 @@ var SortableHeaderCellButton = function SortableHeaderCellButton(_ref2) {
|
|
|
193
194
|
return React__default["default"].createElement("button", _extends({
|
|
194
195
|
className: classNames__default["default"]('eds-table__header-cell-button', className),
|
|
195
196
|
type: "button"
|
|
196
|
-
}, rest), children, isCurrentlySorted
|
|
197
|
+
}, rest), children, (!isCurrentlySorted || sortConfig.order === 'none') && React__default["default"].createElement(icons.UnsortedIcon, {
|
|
197
198
|
size: "16px",
|
|
198
|
-
className: "eds-table__header-cell-button-icon"
|
|
199
|
+
className: "eds-table__header-cell-button-icon",
|
|
200
|
+
"aria-label": "usortert kolonne"
|
|
201
|
+
}), isCurrentlySorted && sortConfig.order === 'ascending' && React__default["default"].createElement(icons.UpArrowIcon, {
|
|
202
|
+
size: "16px",
|
|
203
|
+
className: "eds-table__header-cell-button-icon",
|
|
204
|
+
"aria-label": "stigende sortert kolonne"
|
|
199
205
|
}), isCurrentlySorted && sortConfig.order === 'descending' && React__default["default"].createElement(icons.DownArrowIcon, {
|
|
200
206
|
size: "16px",
|
|
201
|
-
className: "eds-table__header-cell-button-icon"
|
|
207
|
+
className: "eds-table__header-cell-button-icon",
|
|
208
|
+
"aria-label": "synkende sortert kolonne"
|
|
202
209
|
}));
|
|
203
210
|
};
|
|
204
211
|
|
|
@@ -334,12 +341,13 @@ var ExpandRowButton = function ExpandRowButton(_ref) {
|
|
|
334
341
|
onClick = _ref.onClick,
|
|
335
342
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
336
343
|
|
|
337
|
-
return React__default["default"].createElement(
|
|
344
|
+
return React__default["default"].createElement(button.IconButton, _extends({
|
|
338
345
|
className: classNames__default["default"]('eds-expand-row-button', {
|
|
339
346
|
'eds-expand-row-button--open': open
|
|
340
347
|
}),
|
|
341
|
-
onClick: onClick
|
|
342
|
-
|
|
348
|
+
onClick: onClick,
|
|
349
|
+
"aria-label": open ? 'Lukk tabellrad' : 'Utvid tabellrad'
|
|
350
|
+
}, rest), React__default["default"].createElement(icons.DownArrowIcon, {
|
|
343
351
|
className: "eds-expand-row-button__icon"
|
|
344
352
|
}));
|
|
345
353
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.cjs.development.js","sources":["../src/Table.tsx","../src/TableHead.tsx","../src/TableBody.tsx","../src/TableFooter.tsx","../src/TableRow.tsx","../src/DataCell.tsx","../src/HeaderCell.tsx","../src/useSortableTable.ts","../src/EditableCell.tsx","../src/ExpandableRow.tsx","../src/ExpandRowButton.tsx","../src/useTableKeyboardNavigation.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Setter tettheten mellom rader og kolonner. Bruk gjerne middle og small for for sider med høy informasjonstetthet\n * @default \"default\"\n */\n spacing?: 'default' | 'middle' | 'small';\n /** Setter kolonne-layout til å være uavhengig av innhold\n * @default false\n */\n fixed?: boolean;\n /** Innholdet i tabellen */\n children: React.ReactNode;\n [key: string]: any;\n};\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n fixed = false,\n spacing = 'default',\n sortable = false,\n ...rest\n },\n ref,\n ) => {\n return (\n <table\n className={classNames(\n 'eds-table',\n { 'eds-table--fixed': fixed },\n { 'eds-table--middle': spacing === 'middle' },\n { 'eds-table--small': spacing === 'small' },\n { 'eds-table--sortable': sortable },\n className,\n )}\n ref={ref}\n {...rest}\n />\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableHeadProps = {\n /** Kolonneoverskrifter */\n children: React.ReactNode;\n /** Esktra klassenavn */\n className?: string;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableHead = React.forwardRef<\n HTMLTableSectionElement,\n TableHeadProps\n>(({ className, ...props }, ref) => (\n <thead\n className={classNames('eds-table__head', className)}\n ref={ref}\n {...props}\n />\n));\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableBodyProps = {\n /** Tabellrader */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n ref?: React.Ref<HTMLTableSectionElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, ...rest }, ref) => (\n <tbody\n className={classNames('eds-table__body', className)}\n ref={ref}\n {...rest}\n />\n));\n","import React from 'react';\n\nexport type TableFooterProps = {\n /** Tabellrader */\n children: React.ReactNode;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n TableFooterProps\n>(({ ...props }, ref) => <tfoot ref={ref} {...props} />);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableRowProps = {\n /** Tabellceller */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /**Hvis satt, så vil tabellraden endre fargen ved hover\n * @default false\n */\n hover?: boolean;\n /** Om raden er klikkbar, så vil raden endre farge, og musepekeren vil symbolisere interaktivitet\n * @default false\n */\n active?: boolean;\n /**Signalisere om at det er en feil i tabellraden\n * @default false\n */\n error?: boolean;\n ref?: React.Ref<HTMLTableRowElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>;\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { className, hover = false, active = false, error = false, ...rest },\n ref: React.Ref<HTMLTableRowElement>,\n ) => (\n <tr\n className={classNames('eds-table__row', className, {\n 'eds-table__row--hover': hover,\n 'eds-table__row--active': active,\n 'eds-table__row--error': error,\n })}\n ref={ref}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type DataCellProps = {\n /** Innholdet i tabellcellen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for DataCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n /** Viser en status-sirkel for DataCell */\n status?: 'positive' | 'negative' | 'neutral';\n} & React.DetailedHTMLProps<\n React.TdHTMLAttributes<HTMLTableDataCellElement>,\n HTMLTableDataCellElement\n>;\n\nexport const DataCell = React.forwardRef<\n HTMLTableDataCellElement,\n DataCellProps\n>(\n (\n { className, padding = 'default', status = undefined, ...rest },\n ref: React.Ref<HTMLTableDataCellElement>,\n ) => (\n <td\n ref={ref}\n className={classNames('eds-table__data-cell', className, {\n [`eds-table__data-cell--status-${status}`]: status,\n 'eds-table__data-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__data-cell--padding-radio': padding === 'radio',\n 'eds-table__data-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport { DownArrowIcon, UpArrowIcon } from '@entur/icons';\nimport './HeaderCell.scss';\nimport { ExternalSortConfig } from '.';\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 === 'ascending' && (\n <UpArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'descending' && (\n <DownArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n />\n )}\n </button>\n );\n};\n","import React from 'react';\nimport get from 'lodash.get';\n\nexport type ExternalSortConfig = {\n /**\n * @default \"\"\n */\n key: string;\n /** @default \"none\" */\n order: 'ascending' | 'descending' | 'none';\n};\n\nexport function useSortableData<T>(\n rawData: T[],\n externalSortConfig: ExternalSortConfig = { key: '', order: 'none' },\n): {\n sortedData: T[];\n getSortableHeaderProps: (\n args: SortableHeaderProps,\n ) => SortableHeaderReturnProps;\n getSortableTableProps: (args: SortableTableProps) => SortableTableReturnProps;\n} {\n const [sortConfig, setSortConfig] = React.useState(externalSortConfig);\n const tableCopy = rawData.slice();\n\n React.useEffect(() => {\n setSortConfig({\n key: externalSortConfig.key,\n order: externalSortConfig.order,\n });\n }, [externalSortConfig.key, externalSortConfig.order]);\n\n const sortedData: T[] = React.useMemo(() => {\n if (sortConfig.order === 'none') {\n return tableCopy;\n }\n return [...rawData].sort((a: any, b: any) => {\n if (get(a, sortConfig.key) < get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? -1 : 1;\n } else if (get(a, sortConfig.key) > get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? 1 : -1;\n } else {\n return 0;\n }\n });\n }, [rawData, tableCopy, sortConfig]);\n\n const onSortRequested = (key: string) => {\n let order: 'ascending' | 'descending' | 'none' = 'ascending';\n if (sortConfig.key === key && sortConfig.order === 'ascending') {\n order = 'descending';\n } else if (sortConfig.key === key && sortConfig.order === 'descending') {\n order = 'none';\n }\n\n setSortConfig({ key, order });\n };\n\n function getSortableHeaderProps({\n name,\n sortable = true,\n buttonProps,\n ...props\n }: SortableHeaderProps): SortableHeaderReturnProps {\n return {\n name,\n sortable,\n sortConfig: sortConfig,\n sortableButtonProps: {\n onClick: () => onSortRequested(name),\n ...buttonProps,\n },\n ...props,\n };\n }\n\n function getSortableTableProps({\n sortable = true,\n ...props\n }: SortableTableProps): SortableTableReturnProps {\n return {\n sortable,\n sortConfig: sortConfig,\n ...props,\n };\n }\n\n return { sortedData, getSortableHeaderProps, getSortableTableProps };\n}\n\nexport type SortableHeaderProps = {\n /** Navnet headeren skal se etter i forhold til sortering av items */\n name: string;\n /** Om headeren skal være sorterbar eller ikke\n * @default true */\n sortable?: boolean;\n /** Props som sendes til knapp-elementet */\n buttonProps?: Omit<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >,\n 'type' | 'onClick'\n >;\n [key: string]: any;\n};\n\nexport type SortableHeaderReturnProps = {\n name: string;\n sortable: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n\nexport type SortableTableProps = {\n /** @default true */\n sortable?: boolean;\n [key: string]: any;\n};\n\nexport type SortableTableReturnProps = {\n /** @default true */\n sortable?: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n","import classNames from 'classnames';\nimport React from 'react';\nimport { DataCell } from './DataCell';\nimport { VariantProvider, VariantType } from '@entur/form';\nimport { Tooltip } from '@entur/tooltip';\nimport './EditableCell.scss';\n\ntype EditableCellProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Inputelementet som skal være i tabellcellen */\n children: React.ReactElement;\n /** Valideringsvariant for EditableCell */\n variant?: VariantType;\n /** Varselmelding, som vil komme som en Tooltip under EditableCell */\n feedback?: string;\n /** Om cellen skal vise omriss til enhver tid\n * @default false\n */\n outlined?: boolean;\n [key: string]: any;\n};\n\nexport const EditableCell: React.FC<EditableCellProps> = ({\n children,\n className,\n feedback,\n variant,\n outlined = false,\n ...rest\n}) => {\n return (\n <VariantProvider variant={variant}>\n <DataCell\n className={classNames(\n 'eds-editable-cell',\n {\n 'eds-editable-cell--outlined': outlined,\n },\n className,\n )}\n {...rest}\n >\n <Tooltip\n disableHoverListener={!feedback}\n disableFocusListener={!feedback}\n placement=\"bottom\"\n content={feedback || undefined}\n variant={feedback ? 'error' : undefined}\n >\n {children}\n </Tooltip>\n </DataCell>\n </VariantProvider>\n );\n};\n","import React from 'react';\nimport { BaseExpand } from '@entur/expand';\n\nexport type ExpandableRowProps = {\n /** Antall kolonner tabellraden er */\n colSpan: number;\n /** Innholdet til ExpandableRow */\n children: React.ReactNode;\n /** Om ExpandableRow er åpen\n * @default false\n */\n open?: boolean;\n};\n\nexport const ExpandableRow: React.FC<ExpandableRowProps> = ({\n open = false,\n children,\n colSpan,\n}) => {\n return (\n <tr>\n <td colSpan={colSpan}>\n <BaseExpand open={open}>{children}</BaseExpand>\n </td>\n </tr>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { RightArrowIcon } from '@entur/icons';\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 <button\n className={classNames('eds-expand-row-button', {\n 'eds-expand-row-button--open': open,\n })}\n onClick={onClick}\n {...rest}\n >\n <RightArrowIcon className=\"eds-expand-row-button__icon\" />\n </button>\n );\n};\n","import React, { useState } from 'react';\nimport { TableBodyProps, TableRowProps } from './index';\n\nfunction onTableKeypress(\n event: React.KeyboardEvent,\n currentRow: number,\n maxRow: number,\n allowWrap?: boolean,\n) {\n const keyPress = event.key;\n switch (keyPress) {\n case 'ArrowUp':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === 0 ? maxRow - 1 : currentRow - 1;\n } else {\n return currentRow > 0 ? currentRow - 1 : 0;\n }\n case 'ArrowDown':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === maxRow - 1 ? 0 : currentRow + 1;\n } else {\n return currentRow < maxRow - 1 ? currentRow + 1 : currentRow;\n }\n default:\n return currentRow;\n }\n}\n\nexport type useTableKeyboardNavigationProps = (\n /** Antall rader i tabellen */\n numberOfRows: number,\n /** Tillate at man kan navigere sirkulært\n * @default false\n */\n allowWrap?: boolean,\n) => {\n getTableRowNavigationProps: (\n /** Raden i tabellen (0-indeksert) */\n row: number,\n ) => Partial<TableRowProps>;\n getTableBodyNavigationProps: () => Partial<TableBodyProps>;\n};\n\nexport const useTableKeyboardNavigation: useTableKeyboardNavigationProps = (\n numberOfRows = 0,\n allowWrap = true,\n) => {\n const [currentRow, setCurrentRow] = useState(numberOfRows);\n const [maxRow, setMaxRow] = useState(0);\n\n const tableBodyRef = React.useRef<HTMLTableSectionElement>(null);\n const tableHasFocus = tableBodyRef?.current?.contains(document.activeElement);\n\n React.useEffect(() => {\n tableBodyRef &&\n tableBodyRef.current &&\n tableHasFocus &&\n tableBodyRef.current.childNodes[\n currentRow\n ].childNodes[0].parentElement?.focus();\n }, [currentRow, tableHasFocus]);\n\n function getTableBodyNavigationProps(...rest: any): Partial<TableBodyProps> {\n return {\n ref: tableBodyRef,\n ...rest,\n };\n }\n\n const tableRowRef = React.useRef<HTMLTableRowElement>(null);\n function getTableRowNavigationProps(\n row: number,\n ...rest: any\n ): Partial<TableRowProps> {\n if (row >= maxRow) {\n setMaxRow(row + 1);\n }\n const tabIndex = currentRow ? 0 : -1;\n return {\n tabIndex,\n ref: tableRowRef,\n onClick: () => setCurrentRow(row),\n onKeyDown: (e: React.KeyboardEvent) => {\n const newCell = onTableKeypress(e, currentRow, numberOfRows, allowWrap);\n setCurrentRow(newCell);\n },\n ...rest,\n };\n }\n return { getTableRowNavigationProps, getTableBodyNavigationProps };\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('table');\n\nexport * from './Table';\nexport * from './TableHead';\nexport * from './TableBody';\nexport * from './TableFooter';\nexport * from './TableRow';\nexport * from './DataCell';\nexport * from './HeaderCell';\nexport * from './useSortableTable';\nexport * from './EditableCell';\nexport * from './ExpandableRow';\nexport * from './ExpandRowButton';\nexport * from './useTableKeyboardNavigation';\n"],"names":["Table","React","forwardRef","ref","className","fixed","spacing","sortable","rest","classNames","TableHead","props","TableBody","TableFooter","TableRow","hover","active","error","DataCell","padding","status","undefined","HeaderCell","children","name","sortConfig","sortableButtonProps","useState","isCurrentlySorted","setIsCurrentlySorted","useEffect","key","ariaSort","order","SortableHeaderCellButton","type","UpArrowIcon","size","DownArrowIcon","useSortableData","rawData","externalSortConfig","setSortConfig","tableCopy","slice","sortedData","useMemo","sort","a","b","get","onSortRequested","getSortableHeaderProps","buttonProps","onClick","getSortableTableProps","EditableCell","feedback","variant","outlined","VariantProvider","Tooltip","disableHoverListener","disableFocusListener","placement","content","ExpandableRow","open","colSpan","BaseExpand","ExpandRowButton","RightArrowIcon","onTableKeypress","event","currentRow","maxRow","allowWrap","keyPress","preventDefault","useTableKeyboardNavigation","numberOfRows","setCurrentRow","setMaxRow","tableBodyRef","useRef","tableHasFocus","current","contains","document","activeElement","childNodes","parentElement","focus","getTableBodyNavigationProps","tableRowRef","getTableRowNavigationProps","row","tabIndex","onKeyDown","e","newCell","warnAboutMissingStyles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"table.cjs.development.js","sources":["../src/Table.tsx","../src/TableHead.tsx","../src/TableBody.tsx","../src/TableFooter.tsx","../src/TableRow.tsx","../src/DataCell.tsx","../src/HeaderCell.tsx","../src/useSortableTable.ts","../src/EditableCell.tsx","../src/ExpandableRow.tsx","../src/ExpandRowButton.tsx","../src/useTableKeyboardNavigation.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Setter tettheten mellom rader og kolonner. Bruk gjerne middle og small for for sider med høy informasjonstetthet\n * @default \"default\"\n */\n spacing?: 'default' | 'middle' | 'small';\n /** Setter kolonne-layout til å være uavhengig av innhold\n * @default false\n */\n fixed?: boolean;\n /** Innholdet i tabellen */\n children: React.ReactNode;\n [key: string]: any;\n};\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n fixed = false,\n spacing = 'default',\n sortable = false,\n ...rest\n },\n ref,\n ) => {\n return (\n <table\n className={classNames(\n 'eds-table',\n { 'eds-table--fixed': fixed },\n { 'eds-table--middle': spacing === 'middle' },\n { 'eds-table--small': spacing === 'small' },\n { 'eds-table--sortable': sortable },\n className,\n )}\n ref={ref}\n {...rest}\n />\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableHeadProps = {\n /** Kolonneoverskrifter */\n children: React.ReactNode;\n /** Esktra klassenavn */\n className?: string;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableHead = React.forwardRef<\n HTMLTableSectionElement,\n TableHeadProps\n>(({ className, ...props }, ref) => (\n <thead\n className={classNames('eds-table__head', className)}\n ref={ref}\n {...props}\n />\n));\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableBodyProps = {\n /** Tabellrader */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n ref?: React.Ref<HTMLTableSectionElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, ...rest }, ref) => (\n <tbody\n className={classNames('eds-table__body', className)}\n ref={ref}\n {...rest}\n />\n));\n","import React from 'react';\n\nexport type TableFooterProps = {\n /** Tabellrader */\n children: React.ReactNode;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n TableFooterProps\n>(({ ...props }, ref) => <tfoot ref={ref} {...props} />);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableRowProps = {\n /** Tabellceller */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /**Hvis satt, så vil tabellraden endre fargen ved hover\n * @default false\n */\n hover?: boolean;\n /** Om raden er klikkbar, så vil raden endre farge, og musepekeren vil symbolisere interaktivitet\n * @default false\n */\n active?: boolean;\n /**Signalisere om at det er en feil i tabellraden\n * @default false\n */\n error?: boolean;\n ref?: React.Ref<HTMLTableRowElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>;\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { className, hover = false, active = false, error = false, ...rest },\n ref: React.Ref<HTMLTableRowElement>,\n ) => (\n <tr\n className={classNames('eds-table__row', className, {\n 'eds-table__row--hover': hover,\n 'eds-table__row--active': active,\n 'eds-table__row--error': error,\n })}\n ref={ref}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type DataCellProps = {\n /** Innholdet i tabellcellen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for DataCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n /** Viser en status-sirkel for DataCell */\n status?: 'positive' | 'negative' | 'neutral';\n} & React.DetailedHTMLProps<\n React.TdHTMLAttributes<HTMLTableDataCellElement>,\n HTMLTableDataCellElement\n>;\n\nexport const DataCell = React.forwardRef<\n HTMLTableDataCellElement,\n DataCellProps\n>(\n (\n { className, padding = 'default', status = undefined, ...rest },\n ref: React.Ref<HTMLTableDataCellElement>,\n ) => (\n <td\n ref={ref}\n className={classNames('eds-table__data-cell', className, {\n [`eds-table__data-cell--status-${status}`]: status,\n 'eds-table__data-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__data-cell--padding-radio': padding === 'radio',\n 'eds-table__data-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { DownArrowIcon, UpArrowIcon, UnsortedIcon } from '@entur/icons';\n\nimport { ExternalSortConfig } from '.';\n\nimport './HeaderCell.scss';\n\nexport type HeaderCellProps = {\n /** Kolonneoverskrift */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for HeaderCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n\n /** Ekstra props som kan sendes til sorteringsknappelementet. Benyttes via useSortableTable */\n sortableButtonProps?: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n\n /** Om komponenten brukes til sortering. Benytt via useSortableTable\n * @default false\n */\n sortable?: boolean;\n /** Konfigurering og rekkefølgen på sortering. Benyttes via useSortableTable */\n sortConfig?: ExternalSortConfig;\n /** Navnet det skal sorteres på. Benyttes via useSortableTable */\n name?: string;\n} & React.DetailedHTMLProps<\n React.ThHTMLAttributes<HTMLTableCellElement>,\n HTMLTableCellElement\n>;\n\nexport const HeaderCell = React.forwardRef<\n HTMLTableCellElement,\n HeaderCellProps\n>(\n (\n {\n className,\n children,\n name,\n sortable = false,\n sortConfig,\n padding = 'default',\n sortableButtonProps,\n ...rest\n },\n ref,\n ) => {\n const [isCurrentlySorted, setIsCurrentlySorted] =\n React.useState<boolean>(false);\n React.useEffect(() => {\n sortConfig &&\n name &&\n setIsCurrentlySorted(sortConfig && name === sortConfig.key);\n }, [sortConfig, name]);\n const ariaSort = isCurrentlySorted\n ? sortConfig && sortConfig.order\n : 'none';\n\n return (\n <th\n className={classNames('eds-table__header-cell', className, {\n 'eds-table__header-cell--sortable': sortable,\n 'eds-table__header-cell--padding-radio': padding === 'radio',\n 'eds-table__header-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__header-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n aria-sort={ariaSort}\n ref={ref}\n {...rest}\n >\n {sortable && sortConfig && sortableButtonProps ? (\n <SortableHeaderCellButton\n sortableButtonProps={sortableButtonProps}\n sortConfig={sortConfig}\n isCurrentlySorted={isCurrentlySorted}\n >\n {children}\n </SortableHeaderCellButton>\n ) : (\n children\n )}\n </th>\n );\n },\n);\n\ntype SortableHeaderCellButtonProps = {\n sortConfig: ExternalSortConfig;\n isCurrentlySorted: boolean;\n sortableButtonProps: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n};\n\nconst SortableHeaderCellButton: React.FC<SortableHeaderCellButtonProps> = ({\n sortConfig,\n sortableButtonProps,\n isCurrentlySorted,\n children,\n}) => {\n const { className, ...rest } = sortableButtonProps;\n return (\n <button\n className={classNames('eds-table__header-cell-button', className)}\n type=\"button\"\n {...rest}\n >\n {children}\n {(!isCurrentlySorted || sortConfig.order === 'none') && (\n <UnsortedIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"usortert kolonne\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'ascending' && (\n <UpArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"stigende sortert kolonne\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'descending' && (\n <DownArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"synkende sortert kolonne\"\n />\n )}\n </button>\n );\n};\n","import React from 'react';\nimport get from 'lodash.get';\n\nexport type ExternalSortConfig = {\n /**\n * @default \"\"\n */\n key: string;\n /** @default \"none\" */\n order: 'ascending' | 'descending' | 'none';\n};\n\nexport function useSortableData<T>(\n rawData: T[],\n externalSortConfig: ExternalSortConfig = { key: '', order: 'none' },\n): {\n sortedData: T[];\n getSortableHeaderProps: (\n args: SortableHeaderProps,\n ) => SortableHeaderReturnProps;\n getSortableTableProps: (args: SortableTableProps) => SortableTableReturnProps;\n} {\n const [sortConfig, setSortConfig] = React.useState(externalSortConfig);\n const tableCopy = rawData.slice();\n\n React.useEffect(() => {\n setSortConfig({\n key: externalSortConfig.key,\n order: externalSortConfig.order,\n });\n }, [externalSortConfig.key, externalSortConfig.order]);\n\n const sortedData: T[] = React.useMemo(() => {\n if (sortConfig.order === 'none') {\n return tableCopy;\n }\n return [...rawData].sort((a: any, b: any) => {\n if (get(a, sortConfig.key) < get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? -1 : 1;\n } else if (get(a, sortConfig.key) > get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? 1 : -1;\n } else {\n return 0;\n }\n });\n }, [rawData, tableCopy, sortConfig]);\n\n const onSortRequested = (key: string) => {\n let order: 'ascending' | 'descending' | 'none' = 'ascending';\n if (sortConfig.key === key && sortConfig.order === 'ascending') {\n order = 'descending';\n } else if (sortConfig.key === key && sortConfig.order === 'descending') {\n order = 'none';\n }\n\n setSortConfig({ key, order });\n };\n\n function getSortableHeaderProps({\n name,\n sortable = true,\n buttonProps,\n ...props\n }: SortableHeaderProps): SortableHeaderReturnProps {\n return {\n name,\n sortable,\n sortConfig: sortConfig,\n sortableButtonProps: {\n onClick: () => onSortRequested(name),\n ...buttonProps,\n },\n ...props,\n };\n }\n\n function getSortableTableProps({\n sortable = true,\n ...props\n }: SortableTableProps): SortableTableReturnProps {\n return {\n sortable,\n sortConfig: sortConfig,\n ...props,\n };\n }\n\n return { sortedData, getSortableHeaderProps, getSortableTableProps };\n}\n\nexport type SortableHeaderProps = {\n /** Navnet headeren skal se etter i forhold til sortering av items */\n name: string;\n /** Om headeren skal være sorterbar eller ikke\n * @default true */\n sortable?: boolean;\n /** Props som sendes til knapp-elementet */\n buttonProps?: Omit<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >,\n 'type' | 'onClick'\n >;\n [key: string]: any;\n};\n\nexport type SortableHeaderReturnProps = {\n name: string;\n sortable: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n\nexport type SortableTableProps = {\n /** @default true */\n sortable?: boolean;\n [key: string]: any;\n};\n\nexport type SortableTableReturnProps = {\n /** @default true */\n sortable?: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n","import classNames from 'classnames';\nimport React from 'react';\nimport { DataCell } from './DataCell';\nimport { VariantProvider, VariantType } from '@entur/form';\nimport { Tooltip } from '@entur/tooltip';\nimport './EditableCell.scss';\n\ntype EditableCellProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Inputelementet som skal være i tabellcellen */\n children: React.ReactElement;\n /** Valideringsvariant for EditableCell */\n variant?: VariantType;\n /** Varselmelding, som vil komme som en Tooltip under EditableCell */\n feedback?: string;\n /** Om cellen skal vise omriss til enhver tid\n * @default false\n */\n outlined?: boolean;\n [key: string]: any;\n};\n\nexport const EditableCell: React.FC<EditableCellProps> = ({\n children,\n className,\n feedback,\n variant,\n outlined = false,\n ...rest\n}) => {\n return (\n <VariantProvider variant={variant}>\n <DataCell\n className={classNames(\n 'eds-editable-cell',\n {\n 'eds-editable-cell--outlined': outlined,\n },\n className,\n )}\n {...rest}\n >\n <Tooltip\n disableHoverListener={!feedback}\n disableFocusListener={!feedback}\n placement=\"bottom\"\n content={feedback || undefined}\n variant={feedback ? 'error' : undefined}\n >\n {children}\n </Tooltip>\n </DataCell>\n </VariantProvider>\n );\n};\n","import React from 'react';\nimport { BaseExpand } from '@entur/expand';\n\nexport type ExpandableRowProps = {\n /** Antall kolonner tabellraden er */\n colSpan: number;\n /** Innholdet til ExpandableRow */\n children: React.ReactNode;\n /** Om ExpandableRow er åpen\n * @default false\n */\n open?: boolean;\n};\n\nexport const ExpandableRow: React.FC<ExpandableRowProps> = ({\n open = false,\n children,\n colSpan,\n}) => {\n return (\n <tr>\n <td colSpan={colSpan}>\n <BaseExpand open={open}>{children}</BaseExpand>\n </td>\n </tr>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { DownArrowIcon } from '@entur/icons';\nimport { IconButton } from '@entur/button';\nimport './ExpandRowButton.scss';\n\nexport type ExpandRowButtonProps = {\n open: boolean;\n onClick: (e: React.MouseEvent) => void;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const ExpandRowButton: React.FC<ExpandRowButtonProps> = ({\n open,\n onClick,\n ...rest\n}) => {\n return (\n <IconButton\n className={classNames('eds-expand-row-button', {\n 'eds-expand-row-button--open': open,\n })}\n onClick={onClick}\n aria-label={open ? 'Lukk tabellrad' : 'Utvid tabellrad'}\n {...rest}\n >\n <DownArrowIcon className=\"eds-expand-row-button__icon\" />\n </IconButton>\n );\n};\n","import React, { useState } from 'react';\nimport { TableBodyProps, TableRowProps } from './index';\n\nfunction onTableKeypress(\n event: React.KeyboardEvent,\n currentRow: number,\n maxRow: number,\n allowWrap?: boolean,\n) {\n const keyPress = event.key;\n switch (keyPress) {\n case 'ArrowUp':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === 0 ? maxRow - 1 : currentRow - 1;\n } else {\n return currentRow > 0 ? currentRow - 1 : 0;\n }\n case 'ArrowDown':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === maxRow - 1 ? 0 : currentRow + 1;\n } else {\n return currentRow < maxRow - 1 ? currentRow + 1 : currentRow;\n }\n default:\n return currentRow;\n }\n}\n\nexport type useTableKeyboardNavigationProps = (\n /** Antall rader i tabellen */\n numberOfRows: number,\n /** Tillate at man kan navigere sirkulært\n * @default false\n */\n allowWrap?: boolean,\n) => {\n getTableRowNavigationProps: (\n /** Raden i tabellen (0-indeksert) */\n row: number,\n ) => Partial<TableRowProps>;\n getTableBodyNavigationProps: () => Partial<TableBodyProps>;\n};\n\nexport const useTableKeyboardNavigation: useTableKeyboardNavigationProps = (\n numberOfRows = 0,\n allowWrap = true,\n) => {\n const [currentRow, setCurrentRow] = useState(numberOfRows);\n const [maxRow, setMaxRow] = useState(0);\n\n const tableBodyRef = React.useRef<HTMLTableSectionElement>(null);\n const tableHasFocus = tableBodyRef?.current?.contains(document.activeElement);\n\n React.useEffect(() => {\n tableBodyRef &&\n tableBodyRef.current &&\n tableHasFocus &&\n tableBodyRef.current.childNodes[\n currentRow\n ].childNodes[0].parentElement?.focus();\n }, [currentRow, tableHasFocus]);\n\n function getTableBodyNavigationProps(...rest: any): Partial<TableBodyProps> {\n return {\n ref: tableBodyRef,\n ...rest,\n };\n }\n\n const tableRowRef = React.useRef<HTMLTableRowElement>(null);\n function getTableRowNavigationProps(\n row: number,\n ...rest: any\n ): Partial<TableRowProps> {\n if (row >= maxRow) {\n setMaxRow(row + 1);\n }\n const tabIndex = currentRow ? 0 : -1;\n return {\n tabIndex,\n ref: tableRowRef,\n onClick: () => setCurrentRow(row),\n onKeyDown: (e: React.KeyboardEvent) => {\n const newCell = onTableKeypress(e, currentRow, numberOfRows, allowWrap);\n setCurrentRow(newCell);\n },\n ...rest,\n };\n }\n return { getTableRowNavigationProps, getTableBodyNavigationProps };\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('table');\n\nexport * from './Table';\nexport * from './TableHead';\nexport * from './TableBody';\nexport * from './TableFooter';\nexport * from './TableRow';\nexport * from './DataCell';\nexport * from './HeaderCell';\nexport * from './useSortableTable';\nexport * from './EditableCell';\nexport * from './ExpandableRow';\nexport * from './ExpandRowButton';\nexport * from './useTableKeyboardNavigation';\n"],"names":["Table","React","forwardRef","ref","className","fixed","spacing","sortable","rest","classNames","TableHead","props","TableBody","TableFooter","TableRow","hover","active","error","DataCell","padding","status","undefined","HeaderCell","children","name","sortConfig","sortableButtonProps","useState","isCurrentlySorted","setIsCurrentlySorted","useEffect","key","ariaSort","order","SortableHeaderCellButton","type","UnsortedIcon","size","UpArrowIcon","DownArrowIcon","useSortableData","rawData","externalSortConfig","setSortConfig","tableCopy","slice","sortedData","useMemo","sort","a","b","get","onSortRequested","getSortableHeaderProps","buttonProps","onClick","getSortableTableProps","EditableCell","feedback","variant","outlined","VariantProvider","Tooltip","disableHoverListener","disableFocusListener","placement","content","ExpandableRow","open","colSpan","BaseExpand","ExpandRowButton","IconButton","onTableKeypress","event","currentRow","maxRow","allowWrap","keyPress","preventDefault","useTableKeyboardNavigation","numberOfRows","setCurrentRow","setMaxRow","tableBodyRef","useRef","tableHasFocus","current","contains","document","activeElement","childNodes","parentElement","focus","getTableBodyNavigationProps","tableRowRef","getTableRowNavigationProps","row","tabIndex","onKeyDown","e","newCell","warnAboutMissingStyles"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),a=require("classnames"),r=require("@entur/icons"),n=require("lodash.get"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),a=require("classnames"),r=require("@entur/icons"),n=require("lodash.get"),l=require("@entur/form"),o=require("@entur/tooltip"),d=require("@entur/expand"),s=require("@entur/button");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=u(t),i=u(a),f=u(n);function b(){return b=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var a=arguments[t];for(var r in a)Object.prototype.hasOwnProperty.call(a,r)&&(e[r]=a[r])}return e},b.apply(this,arguments)}function v(e,t){if(null==e)return{};var a,r,n={},l=Object.keys(e);for(r=0;r<l.length;r++)t.indexOf(a=l[r])>=0||(n[a]=e[a]);return n}var m=["className","fixed","spacing","sortable"],p=c.default.forwardRef((function(e,t){var a=e.className,r=e.fixed,n=void 0!==r&&r,l=e.spacing,o=void 0===l?"default":l,d=e.sortable,s=void 0!==d&&d,u=v(e,m);return c.default.createElement("table",b({className:i.default("eds-table",{"eds-table--fixed":n},{"eds-table--middle":"middle"===o},{"eds-table--small":"small"===o},{"eds-table--sortable":s},a),ref:t},u))})),_=["className"],g=c.default.forwardRef((function(e,t){var a=e.className,r=v(e,_);return c.default.createElement("thead",b({className:i.default("eds-table__head",a),ref:t},r))})),w=["className"],h=c.default.forwardRef((function(e,t){var a=e.className,r=v(e,w);return c.default.createElement("tbody",b({className:i.default("eds-table__body",a),ref:t},r))})),N=c.default.forwardRef((function(e,t){var a=b({},e);return c.default.createElement("tfoot",b({ref:t},a))})),x=["className","hover","active","error"],y=c.default.forwardRef((function(e,t){var a=e.className,r=e.hover,n=void 0!==r&&r,l=e.active,o=void 0!==l&&l,d=e.error,s=void 0!==d&&d,u=v(e,x);return c.default.createElement("tr",b({className:i.default("eds-table__row",a,{"eds-table__row--hover":n,"eds-table__row--active":o,"eds-table__row--error":s}),ref:t},u))})),k=["className","padding","status"],E=c.default.forwardRef((function(e,t){var a,r=e.className,n=e.padding,l=void 0===n?"default":n,o=e.status,d=void 0===o?void 0:o,s=v(e,k);return c.default.createElement("td",b({ref:t,className:i.default("eds-table__data-cell",r,(a={},a["eds-table__data-cell--status-"+d]=d,a["eds-table__data-cell--padding-checkbox"]="checkbox"===l,a["eds-table__data-cell--padding-radio"]="radio"===l,a["eds-table__data-cell--padding-overflow-menu"]="overflow-menu"===l,a))},s))})),C=["className","children","name","sortable","sortConfig","padding","sortableButtonProps"],P=["className"],R=c.default.forwardRef((function(e,t){var a=e.className,r=e.children,n=e.name,l=e.sortable,o=void 0!==l&&l,d=e.sortConfig,s=e.padding,u=void 0===s?"default":s,f=e.sortableButtonProps,m=v(e,C),p=c.default.useState(!1),_=p[0],g=p[1];c.default.useEffect((function(){d&&n&&g(d&&n===d.key)}),[d,n]);var w=_?d&&d.order:"none";return c.default.createElement("th",b({className:i.default("eds-table__header-cell",a,{"eds-table__header-cell--sortable":o,"eds-table__header-cell--padding-radio":"radio"===u,"eds-table__header-cell--padding-checkbox":"checkbox"===u,"eds-table__header-cell--padding-overflow-menu":"overflow-menu"===u}),"aria-sort":w,ref:t},m),o&&d&&f?c.default.createElement(S,{sortableButtonProps:f,sortConfig:d,isCurrentlySorted:_},r):r)})),S=function(e){var t=e.sortConfig,a=e.sortableButtonProps,n=e.isCurrentlySorted,l=e.children,o=a.className,d=v(a,P);return c.default.createElement("button",b({className:i.default("eds-table__header-cell-button",o),type:"button"},d),l,(!n||"none"===t.order)&&c.default.createElement(r.UnsortedIcon,{size:"16px",className:"eds-table__header-cell-button-icon","aria-label":"usortert kolonne"}),n&&"ascending"===t.order&&c.default.createElement(r.UpArrowIcon,{size:"16px",className:"eds-table__header-cell-button-icon","aria-label":"stigende sortert kolonne"}),n&&"descending"===t.order&&c.default.createElement(r.DownArrowIcon,{size:"16px",className:"eds-table__header-cell-button-icon","aria-label":"synkende sortert kolonne"}))},B=["name","sortable","buttonProps"],T=["sortable"],q=["children","className","feedback","variant","outlined"],D=["open","onClick"];function A(e,t,a,r){switch(e.key){case"ArrowUp":return e.preventDefault(),r?0===t?a-1:t-1:t>0?t-1:0;case"ArrowDown":return e.preventDefault(),r?t===a-1?0:t+1:t<a-1?t+1:t;default:return t}}e.warnAboutMissingStyles("table"),exports.DataCell=E,exports.EditableCell=function(e){var t=e.children,a=e.className,r=e.feedback,n=e.variant,d=e.outlined,s=void 0!==d&&d,u=v(e,q);return c.default.createElement(l.VariantProvider,{variant:n},c.default.createElement(E,b({className:i.default("eds-editable-cell",{"eds-editable-cell--outlined":s},a)},u),c.default.createElement(o.Tooltip,{disableHoverListener:!r,disableFocusListener:!r,placement:"bottom",content:r||void 0,variant:r?"error":void 0},t)))},exports.ExpandRowButton=function(e){var t=e.open,a=e.onClick,n=v(e,D);return c.default.createElement(s.IconButton,b({className:i.default("eds-expand-row-button",{"eds-expand-row-button--open":t}),onClick:a,"aria-label":t?"Lukk tabellrad":"Utvid tabellrad"},n),c.default.createElement(r.DownArrowIcon,{className:"eds-expand-row-button__icon"}))},exports.ExpandableRow=function(e){var t=e.open;return c.default.createElement("tr",null,c.default.createElement("td",{colSpan:e.colSpan},c.default.createElement(d.BaseExpand,{open:void 0!==t&&t},e.children)))},exports.HeaderCell=R,exports.Table=p,exports.TableBody=h,exports.TableFooter=N,exports.TableHead=g,exports.TableRow=y,exports.useSortableData=function(e,t){void 0===t&&(t={key:"",order:"none"});var a=c.default.useState(t),r=a[0],n=a[1],l=e.slice();return c.default.useEffect((function(){n({key:t.key,order:t.order})}),[t.key,t.order]),{sortedData:c.default.useMemo((function(){return"none"===r.order?l:[].concat(e).sort((function(e,t){return f.default(e,r.key)<f.default(t,r.key)?"ascending"===r.order?-1:1:f.default(e,r.key)>f.default(t,r.key)?"ascending"===r.order?1:-1:0}))}),[e,l,r]),getSortableHeaderProps:function(e){var t=e.name,a=e.sortable,l=void 0===a||a,o=e.buttonProps,d=v(e,B);return b({name:t,sortable:l,sortConfig:r,sortableButtonProps:b({onClick:function(){return a="ascending",r.key===(e=t)&&"ascending"===r.order?a="descending":r.key===e&&"descending"===r.order&&(a="none"),void n({key:e,order:a});var e,a}},o)},d)},getSortableTableProps:function(e){var t=e.sortable,a=void 0===t||t,n=v(e,T);return b({sortable:a,sortConfig:r},n)}}},exports.useTableKeyboardNavigation=function(e,a){var r;void 0===e&&(e=0),void 0===a&&(a=!0);var n=t.useState(e),l=n[0],o=n[1],d=t.useState(0),s=d[0],u=d[1],i=c.default.useRef(null),f=null==i||null==(r=i.current)?void 0:r.contains(document.activeElement);c.default.useEffect((function(){var e;i&&i.current&&f&&(null==(e=i.current.childNodes[l].childNodes[0].parentElement)||e.focus())}),[l,f]);var v=c.default.useRef(null);return{getTableRowNavigationProps:function(t){t>=s&&u(t+1);for(var r=l?0:-1,n=arguments.length,d=new Array(n>1?n-1:0),c=1;c<n;c++)d[c-1]=arguments[c];return b({tabIndex:r,ref:v,onClick:function(){return o(t)},onKeyDown:function(t){var r=A(t,l,e,a);o(r)}},d)},getTableBodyNavigationProps:function(){for(var e=arguments.length,t=new Array(e),a=0;a<e;a++)t[a]=arguments[a];return b({ref:i},t)}}};
|
|
2
2
|
//# sourceMappingURL=table.cjs.production.min.js.map
|
|
@@ -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.tsx","../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';\nimport { DownArrowIcon, UpArrowIcon } from '@entur/icons';\nimport './HeaderCell.scss';\nimport { ExternalSortConfig } from '.';\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 === 'ascending' && (\n <UpArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'descending' && (\n <DownArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n />\n )}\n </button>\n );\n};\n","import React, { useState } from 'react';\nimport { TableBodyProps, TableRowProps } from './index';\n\nfunction onTableKeypress(\n event: React.KeyboardEvent,\n currentRow: number,\n maxRow: number,\n allowWrap?: boolean,\n) {\n const keyPress = event.key;\n switch (keyPress) {\n case 'ArrowUp':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === 0 ? maxRow - 1 : currentRow - 1;\n } else {\n return currentRow > 0 ? currentRow - 1 : 0;\n }\n case 'ArrowDown':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === maxRow - 1 ? 0 : currentRow + 1;\n } else {\n return currentRow < maxRow - 1 ? currentRow + 1 : currentRow;\n }\n default:\n return currentRow;\n }\n}\n\nexport type useTableKeyboardNavigationProps = (\n /** Antall rader i tabellen */\n numberOfRows: number,\n /** Tillate at man kan navigere sirkulært\n * @default false\n */\n allowWrap?: boolean,\n) => {\n getTableRowNavigationProps: (\n /** Raden i tabellen (0-indeksert) */\n row: number,\n ) => Partial<TableRowProps>;\n getTableBodyNavigationProps: () => Partial<TableBodyProps>;\n};\n\nexport const useTableKeyboardNavigation: useTableKeyboardNavigationProps = (\n numberOfRows = 0,\n allowWrap = true,\n) => {\n const [currentRow, setCurrentRow] = useState(numberOfRows);\n const [maxRow, setMaxRow] = useState(0);\n\n const tableBodyRef = React.useRef<HTMLTableSectionElement>(null);\n const tableHasFocus = tableBodyRef?.current?.contains(document.activeElement);\n\n React.useEffect(() => {\n tableBodyRef &&\n tableBodyRef.current &&\n tableHasFocus &&\n tableBodyRef.current.childNodes[\n currentRow\n ].childNodes[0].parentElement?.focus();\n }, [currentRow, tableHasFocus]);\n\n function getTableBodyNavigationProps(...rest: any): Partial<TableBodyProps> {\n return {\n ref: tableBodyRef,\n ...rest,\n };\n }\n\n const tableRowRef = React.useRef<HTMLTableRowElement>(null);\n function getTableRowNavigationProps(\n row: number,\n ...rest: any\n ): Partial<TableRowProps> {\n if (row >= maxRow) {\n setMaxRow(row + 1);\n }\n const tabIndex = currentRow ? 0 : -1;\n return {\n tabIndex,\n ref: tableRowRef,\n onClick: () => setCurrentRow(row),\n onKeyDown: (e: React.KeyboardEvent) => {\n const newCell = onTableKeypress(e, currentRow, numberOfRows, allowWrap);\n setCurrentRow(newCell);\n },\n ...rest,\n };\n }\n return { getTableRowNavigationProps, getTableBodyNavigationProps };\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('table');\n\nexport * from './Table';\nexport * from './TableHead';\nexport * from './TableBody';\nexport * from './TableFooter';\nexport * from './TableRow';\nexport * from './DataCell';\nexport * from './HeaderCell';\nexport * from './useSortableTable';\nexport * from './EditableCell';\nexport * from './ExpandableRow';\nexport * from './ExpandRowButton';\nexport * from './useTableKeyboardNavigation';\n","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 { RightArrowIcon } from '@entur/icons';\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 <button\n className={classNames('eds-expand-row-button', {\n 'eds-expand-row-button--open': open,\n })}\n onClick={onClick}\n {...rest}\n >\n <RightArrowIcon className=\"eds-expand-row-button__icon\" />\n </button>\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 get from 'lodash.get';\n\nexport type ExternalSortConfig = {\n /**\n * @default \"\"\n */\n key: string;\n /** @default \"none\" */\n order: 'ascending' | 'descending' | 'none';\n};\n\nexport function useSortableData<T>(\n rawData: T[],\n externalSortConfig: ExternalSortConfig = { key: '', order: 'none' },\n): {\n sortedData: T[];\n getSortableHeaderProps: (\n args: SortableHeaderProps,\n ) => SortableHeaderReturnProps;\n getSortableTableProps: (args: SortableTableProps) => SortableTableReturnProps;\n} {\n const [sortConfig, setSortConfig] = React.useState(externalSortConfig);\n const tableCopy = rawData.slice();\n\n React.useEffect(() => {\n setSortConfig({\n key: externalSortConfig.key,\n order: externalSortConfig.order,\n });\n }, [externalSortConfig.key, externalSortConfig.order]);\n\n const sortedData: T[] = React.useMemo(() => {\n if (sortConfig.order === 'none') {\n return tableCopy;\n }\n return [...rawData].sort((a: any, b: any) => {\n if (get(a, sortConfig.key) < get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? -1 : 1;\n } else if (get(a, sortConfig.key) > get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? 1 : -1;\n } else {\n return 0;\n }\n });\n }, [rawData, tableCopy, sortConfig]);\n\n const onSortRequested = (key: string) => {\n let order: 'ascending' | 'descending' | 'none' = 'ascending';\n if (sortConfig.key === key && sortConfig.order === 'ascending') {\n order = 'descending';\n } else if (sortConfig.key === key && sortConfig.order === 'descending') {\n order = 'none';\n }\n\n setSortConfig({ key, order });\n };\n\n function getSortableHeaderProps({\n name,\n sortable = true,\n buttonProps,\n ...props\n }: SortableHeaderProps): SortableHeaderReturnProps {\n return {\n name,\n sortable,\n sortConfig: sortConfig,\n sortableButtonProps: {\n onClick: () => onSortRequested(name),\n ...buttonProps,\n },\n ...props,\n };\n }\n\n function getSortableTableProps({\n sortable = true,\n ...props\n }: SortableTableProps): SortableTableReturnProps {\n return {\n sortable,\n sortConfig: sortConfig,\n ...props,\n };\n }\n\n return { sortedData, getSortableHeaderProps, getSortableTableProps };\n}\n\nexport type SortableHeaderProps = {\n /** Navnet headeren skal se etter i forhold til sortering av items */\n name: string;\n /** Om headeren skal være sorterbar eller ikke\n * @default true */\n sortable?: boolean;\n /** Props som sendes til knapp-elementet */\n buttonProps?: Omit<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >,\n 'type' | 'onClick'\n >;\n [key: string]: any;\n};\n\nexport type SortableHeaderReturnProps = {\n name: string;\n sortable: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n\nexport type SortableTableProps = {\n /** @default true */\n sortable?: boolean;\n [key: string]: any;\n};\n\nexport type SortableTableReturnProps = {\n /** @default true */\n sortable?: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n"],"names":["Table","React","forwardRef","ref","className","fixed","spacing","sortable","rest","classNames","TableHead","props","TableBody","TableFooter","TableRow","hover","active","error","DataCell","padding","status","undefined","HeaderCell","children","name","sortConfig","sortableButtonProps","useState","isCurrentlySorted","setIsCurrentlySorted","useEffect","key","ariaSort","order","SortableHeaderCellButton","type","UpArrowIcon","size","DownArrowIcon","onTableKeypress","event","currentRow","maxRow","allowWrap","preventDefault","warnAboutMissingStyles","feedback","variant","outlined","VariantProvider","Tooltip","disableHoverListener","disableFocusListener","placement","content","open","onClick","RightArrowIcon","colSpan","BaseExpand","rawData","externalSortConfig","setSortConfig","tableCopy","slice","sortedData","useMemo","sort","a","b","get","getSortableHeaderProps","buttonProps","getSortableTableProps","numberOfRows","setCurrentRow","setMaxRow","tableBodyRef","useRef","tableHasFocus","current","_tableBodyRef$current","contains","document","activeElement","childNodes","parentElement","_tableBodyRef$current2","focus","tableRowRef","getTableRowNavigationProps","row","tabIndex","onKeyDown","e","newCell","getTableBodyNavigationProps"],"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.tsx","../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 React, { useState } from 'react';\nimport { TableBodyProps, TableRowProps } from './index';\n\nfunction onTableKeypress(\n event: React.KeyboardEvent,\n currentRow: number,\n maxRow: number,\n allowWrap?: boolean,\n) {\n const keyPress = event.key;\n switch (keyPress) {\n case 'ArrowUp':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === 0 ? maxRow - 1 : currentRow - 1;\n } else {\n return currentRow > 0 ? currentRow - 1 : 0;\n }\n case 'ArrowDown':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === maxRow - 1 ? 0 : currentRow + 1;\n } else {\n return currentRow < maxRow - 1 ? currentRow + 1 : currentRow;\n }\n default:\n return currentRow;\n }\n}\n\nexport type useTableKeyboardNavigationProps = (\n /** Antall rader i tabellen */\n numberOfRows: number,\n /** Tillate at man kan navigere sirkulært\n * @default false\n */\n allowWrap?: boolean,\n) => {\n getTableRowNavigationProps: (\n /** Raden i tabellen (0-indeksert) */\n row: number,\n ) => Partial<TableRowProps>;\n getTableBodyNavigationProps: () => Partial<TableBodyProps>;\n};\n\nexport const useTableKeyboardNavigation: useTableKeyboardNavigationProps = (\n numberOfRows = 0,\n allowWrap = true,\n) => {\n const [currentRow, setCurrentRow] = useState(numberOfRows);\n const [maxRow, setMaxRow] = useState(0);\n\n const tableBodyRef = React.useRef<HTMLTableSectionElement>(null);\n const tableHasFocus = tableBodyRef?.current?.contains(document.activeElement);\n\n React.useEffect(() => {\n tableBodyRef &&\n tableBodyRef.current &&\n tableHasFocus &&\n tableBodyRef.current.childNodes[\n currentRow\n ].childNodes[0].parentElement?.focus();\n }, [currentRow, tableHasFocus]);\n\n function getTableBodyNavigationProps(...rest: any): Partial<TableBodyProps> {\n return {\n ref: tableBodyRef,\n ...rest,\n };\n }\n\n const tableRowRef = React.useRef<HTMLTableRowElement>(null);\n function getTableRowNavigationProps(\n row: number,\n ...rest: any\n ): Partial<TableRowProps> {\n if (row >= maxRow) {\n setMaxRow(row + 1);\n }\n const tabIndex = currentRow ? 0 : -1;\n return {\n tabIndex,\n ref: tableRowRef,\n onClick: () => setCurrentRow(row),\n onKeyDown: (e: React.KeyboardEvent) => {\n const newCell = onTableKeypress(e, currentRow, numberOfRows, allowWrap);\n setCurrentRow(newCell);\n },\n ...rest,\n };\n }\n return { getTableRowNavigationProps, getTableBodyNavigationProps };\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('table');\n\nexport * from './Table';\nexport * from './TableHead';\nexport * from './TableBody';\nexport * from './TableFooter';\nexport * from './TableRow';\nexport * from './DataCell';\nexport * from './HeaderCell';\nexport * from './useSortableTable';\nexport * from './EditableCell';\nexport * from './ExpandableRow';\nexport * from './ExpandRowButton';\nexport * from './useTableKeyboardNavigation';\n","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 React from 'react';\nimport get from 'lodash.get';\n\nexport type ExternalSortConfig = {\n /**\n * @default \"\"\n */\n key: string;\n /** @default \"none\" */\n order: 'ascending' | 'descending' | 'none';\n};\n\nexport function useSortableData<T>(\n rawData: T[],\n externalSortConfig: ExternalSortConfig = { key: '', order: 'none' },\n): {\n sortedData: T[];\n getSortableHeaderProps: (\n args: SortableHeaderProps,\n ) => SortableHeaderReturnProps;\n getSortableTableProps: (args: SortableTableProps) => SortableTableReturnProps;\n} {\n const [sortConfig, setSortConfig] = React.useState(externalSortConfig);\n const tableCopy = rawData.slice();\n\n React.useEffect(() => {\n setSortConfig({\n key: externalSortConfig.key,\n order: externalSortConfig.order,\n });\n }, [externalSortConfig.key, externalSortConfig.order]);\n\n const sortedData: T[] = React.useMemo(() => {\n if (sortConfig.order === 'none') {\n return tableCopy;\n }\n return [...rawData].sort((a: any, b: any) => {\n if (get(a, sortConfig.key) < get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? -1 : 1;\n } else if (get(a, sortConfig.key) > get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? 1 : -1;\n } else {\n return 0;\n }\n });\n }, [rawData, tableCopy, sortConfig]);\n\n const onSortRequested = (key: string) => {\n let order: 'ascending' | 'descending' | 'none' = 'ascending';\n if (sortConfig.key === key && sortConfig.order === 'ascending') {\n order = 'descending';\n } else if (sortConfig.key === key && sortConfig.order === 'descending') {\n order = 'none';\n }\n\n setSortConfig({ key, order });\n };\n\n function getSortableHeaderProps({\n name,\n sortable = true,\n buttonProps,\n ...props\n }: SortableHeaderProps): SortableHeaderReturnProps {\n return {\n name,\n sortable,\n sortConfig: sortConfig,\n sortableButtonProps: {\n onClick: () => onSortRequested(name),\n ...buttonProps,\n },\n ...props,\n };\n }\n\n function getSortableTableProps({\n sortable = true,\n ...props\n }: SortableTableProps): SortableTableReturnProps {\n return {\n sortable,\n sortConfig: sortConfig,\n ...props,\n };\n }\n\n return { sortedData, getSortableHeaderProps, getSortableTableProps };\n}\n\nexport type SortableHeaderProps = {\n /** Navnet headeren skal se etter i forhold til sortering av items */\n name: string;\n /** Om headeren skal være sorterbar eller ikke\n * @default true */\n sortable?: boolean;\n /** Props som sendes til knapp-elementet */\n buttonProps?: Omit<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >,\n 'type' | 'onClick'\n >;\n [key: string]: any;\n};\n\nexport type SortableHeaderReturnProps = {\n name: string;\n sortable: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n\nexport type SortableTableProps = {\n /** @default true */\n sortable?: boolean;\n [key: string]: any;\n};\n\nexport type SortableTableReturnProps = {\n /** @default true */\n sortable?: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n"],"names":["Table","React","forwardRef","ref","className","fixed","spacing","sortable","rest","classNames","TableHead","props","TableBody","TableFooter","TableRow","hover","active","error","DataCell","padding","status","undefined","HeaderCell","children","name","sortConfig","sortableButtonProps","useState","isCurrentlySorted","setIsCurrentlySorted","useEffect","key","ariaSort","order","SortableHeaderCellButton","type","UnsortedIcon","size","UpArrowIcon","DownArrowIcon","onTableKeypress","event","currentRow","maxRow","allowWrap","preventDefault","warnAboutMissingStyles","feedback","variant","outlined","VariantProvider","Tooltip","disableHoverListener","disableFocusListener","placement","content","open","onClick","IconButton","colSpan","BaseExpand","rawData","externalSortConfig","setSortConfig","tableCopy","slice","sortedData","useMemo","sort","a","b","get","getSortableHeaderProps","buttonProps","getSortableTableProps","numberOfRows","setCurrentRow","setMaxRow","tableBodyRef","useRef","tableHasFocus","current","_tableBodyRef$current","contains","document","activeElement","childNodes","parentElement","_tableBodyRef$current2","focus","tableRowRef","getTableRowNavigationProps","row","tabIndex","onKeyDown","e","newCell","getTableBodyNavigationProps"],"mappings":"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"}
|
package/dist/table.esm.js
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { warnAboutMissingStyles } from '@entur/utils';
|
|
2
2
|
import React, { useState } from 'react';
|
|
3
3
|
import classNames from 'classnames';
|
|
4
|
-
import { UpArrowIcon, DownArrowIcon
|
|
4
|
+
import { UnsortedIcon, UpArrowIcon, DownArrowIcon } from '@entur/icons';
|
|
5
5
|
import get from 'lodash.get';
|
|
6
6
|
import { VariantProvider } from '@entur/form';
|
|
7
7
|
import { Tooltip } from '@entur/tooltip';
|
|
8
8
|
import { BaseExpand } from '@entur/expand';
|
|
9
|
+
import { IconButton } from '@entur/button';
|
|
9
10
|
|
|
10
11
|
function _extends() {
|
|
11
12
|
_extends = Object.assign || function (target) {
|
|
@@ -183,12 +184,18 @@ var SortableHeaderCellButton = function SortableHeaderCellButton(_ref2) {
|
|
|
183
184
|
return React.createElement("button", _extends({
|
|
184
185
|
className: classNames('eds-table__header-cell-button', className),
|
|
185
186
|
type: "button"
|
|
186
|
-
}, rest), children, isCurrentlySorted
|
|
187
|
+
}, rest), children, (!isCurrentlySorted || sortConfig.order === 'none') && React.createElement(UnsortedIcon, {
|
|
187
188
|
size: "16px",
|
|
188
|
-
className: "eds-table__header-cell-button-icon"
|
|
189
|
+
className: "eds-table__header-cell-button-icon",
|
|
190
|
+
"aria-label": "usortert kolonne"
|
|
191
|
+
}), isCurrentlySorted && sortConfig.order === 'ascending' && React.createElement(UpArrowIcon, {
|
|
192
|
+
size: "16px",
|
|
193
|
+
className: "eds-table__header-cell-button-icon",
|
|
194
|
+
"aria-label": "stigende sortert kolonne"
|
|
189
195
|
}), isCurrentlySorted && sortConfig.order === 'descending' && React.createElement(DownArrowIcon, {
|
|
190
196
|
size: "16px",
|
|
191
|
-
className: "eds-table__header-cell-button-icon"
|
|
197
|
+
className: "eds-table__header-cell-button-icon",
|
|
198
|
+
"aria-label": "synkende sortert kolonne"
|
|
192
199
|
}));
|
|
193
200
|
};
|
|
194
201
|
|
|
@@ -324,12 +331,13 @@ var ExpandRowButton = function ExpandRowButton(_ref) {
|
|
|
324
331
|
onClick = _ref.onClick,
|
|
325
332
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
326
333
|
|
|
327
|
-
return React.createElement(
|
|
334
|
+
return React.createElement(IconButton, _extends({
|
|
328
335
|
className: classNames('eds-expand-row-button', {
|
|
329
336
|
'eds-expand-row-button--open': open
|
|
330
337
|
}),
|
|
331
|
-
onClick: onClick
|
|
332
|
-
|
|
338
|
+
onClick: onClick,
|
|
339
|
+
"aria-label": open ? 'Lukk tabellrad' : 'Utvid tabellrad'
|
|
340
|
+
}, rest), React.createElement(DownArrowIcon, {
|
|
333
341
|
className: "eds-expand-row-button__icon"
|
|
334
342
|
}));
|
|
335
343
|
};
|
package/dist/table.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.esm.js","sources":["../src/Table.tsx","../src/TableHead.tsx","../src/TableBody.tsx","../src/TableFooter.tsx","../src/TableRow.tsx","../src/DataCell.tsx","../src/HeaderCell.tsx","../src/useSortableTable.ts","../src/EditableCell.tsx","../src/ExpandableRow.tsx","../src/ExpandRowButton.tsx","../src/useTableKeyboardNavigation.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Setter tettheten mellom rader og kolonner. Bruk gjerne middle og small for for sider med høy informasjonstetthet\n * @default \"default\"\n */\n spacing?: 'default' | 'middle' | 'small';\n /** Setter kolonne-layout til å være uavhengig av innhold\n * @default false\n */\n fixed?: boolean;\n /** Innholdet i tabellen */\n children: React.ReactNode;\n [key: string]: any;\n};\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n fixed = false,\n spacing = 'default',\n sortable = false,\n ...rest\n },\n ref,\n ) => {\n return (\n <table\n className={classNames(\n 'eds-table',\n { 'eds-table--fixed': fixed },\n { 'eds-table--middle': spacing === 'middle' },\n { 'eds-table--small': spacing === 'small' },\n { 'eds-table--sortable': sortable },\n className,\n )}\n ref={ref}\n {...rest}\n />\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableHeadProps = {\n /** Kolonneoverskrifter */\n children: React.ReactNode;\n /** Esktra klassenavn */\n className?: string;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableHead = React.forwardRef<\n HTMLTableSectionElement,\n TableHeadProps\n>(({ className, ...props }, ref) => (\n <thead\n className={classNames('eds-table__head', className)}\n ref={ref}\n {...props}\n />\n));\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableBodyProps = {\n /** Tabellrader */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n ref?: React.Ref<HTMLTableSectionElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, ...rest }, ref) => (\n <tbody\n className={classNames('eds-table__body', className)}\n ref={ref}\n {...rest}\n />\n));\n","import React from 'react';\n\nexport type TableFooterProps = {\n /** Tabellrader */\n children: React.ReactNode;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n TableFooterProps\n>(({ ...props }, ref) => <tfoot ref={ref} {...props} />);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableRowProps = {\n /** Tabellceller */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /**Hvis satt, så vil tabellraden endre fargen ved hover\n * @default false\n */\n hover?: boolean;\n /** Om raden er klikkbar, så vil raden endre farge, og musepekeren vil symbolisere interaktivitet\n * @default false\n */\n active?: boolean;\n /**Signalisere om at det er en feil i tabellraden\n * @default false\n */\n error?: boolean;\n ref?: React.Ref<HTMLTableRowElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>;\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { className, hover = false, active = false, error = false, ...rest },\n ref: React.Ref<HTMLTableRowElement>,\n ) => (\n <tr\n className={classNames('eds-table__row', className, {\n 'eds-table__row--hover': hover,\n 'eds-table__row--active': active,\n 'eds-table__row--error': error,\n })}\n ref={ref}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type DataCellProps = {\n /** Innholdet i tabellcellen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for DataCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n /** Viser en status-sirkel for DataCell */\n status?: 'positive' | 'negative' | 'neutral';\n} & React.DetailedHTMLProps<\n React.TdHTMLAttributes<HTMLTableDataCellElement>,\n HTMLTableDataCellElement\n>;\n\nexport const DataCell = React.forwardRef<\n HTMLTableDataCellElement,\n DataCellProps\n>(\n (\n { className, padding = 'default', status = undefined, ...rest },\n ref: React.Ref<HTMLTableDataCellElement>,\n ) => (\n <td\n ref={ref}\n className={classNames('eds-table__data-cell', className, {\n [`eds-table__data-cell--status-${status}`]: status,\n 'eds-table__data-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__data-cell--padding-radio': padding === 'radio',\n 'eds-table__data-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport { DownArrowIcon, UpArrowIcon } from '@entur/icons';\nimport './HeaderCell.scss';\nimport { ExternalSortConfig } from '.';\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 === 'ascending' && (\n <UpArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'descending' && (\n <DownArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n />\n )}\n </button>\n );\n};\n","import React from 'react';\nimport get from 'lodash.get';\n\nexport type ExternalSortConfig = {\n /**\n * @default \"\"\n */\n key: string;\n /** @default \"none\" */\n order: 'ascending' | 'descending' | 'none';\n};\n\nexport function useSortableData<T>(\n rawData: T[],\n externalSortConfig: ExternalSortConfig = { key: '', order: 'none' },\n): {\n sortedData: T[];\n getSortableHeaderProps: (\n args: SortableHeaderProps,\n ) => SortableHeaderReturnProps;\n getSortableTableProps: (args: SortableTableProps) => SortableTableReturnProps;\n} {\n const [sortConfig, setSortConfig] = React.useState(externalSortConfig);\n const tableCopy = rawData.slice();\n\n React.useEffect(() => {\n setSortConfig({\n key: externalSortConfig.key,\n order: externalSortConfig.order,\n });\n }, [externalSortConfig.key, externalSortConfig.order]);\n\n const sortedData: T[] = React.useMemo(() => {\n if (sortConfig.order === 'none') {\n return tableCopy;\n }\n return [...rawData].sort((a: any, b: any) => {\n if (get(a, sortConfig.key) < get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? -1 : 1;\n } else if (get(a, sortConfig.key) > get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? 1 : -1;\n } else {\n return 0;\n }\n });\n }, [rawData, tableCopy, sortConfig]);\n\n const onSortRequested = (key: string) => {\n let order: 'ascending' | 'descending' | 'none' = 'ascending';\n if (sortConfig.key === key && sortConfig.order === 'ascending') {\n order = 'descending';\n } else if (sortConfig.key === key && sortConfig.order === 'descending') {\n order = 'none';\n }\n\n setSortConfig({ key, order });\n };\n\n function getSortableHeaderProps({\n name,\n sortable = true,\n buttonProps,\n ...props\n }: SortableHeaderProps): SortableHeaderReturnProps {\n return {\n name,\n sortable,\n sortConfig: sortConfig,\n sortableButtonProps: {\n onClick: () => onSortRequested(name),\n ...buttonProps,\n },\n ...props,\n };\n }\n\n function getSortableTableProps({\n sortable = true,\n ...props\n }: SortableTableProps): SortableTableReturnProps {\n return {\n sortable,\n sortConfig: sortConfig,\n ...props,\n };\n }\n\n return { sortedData, getSortableHeaderProps, getSortableTableProps };\n}\n\nexport type SortableHeaderProps = {\n /** Navnet headeren skal se etter i forhold til sortering av items */\n name: string;\n /** Om headeren skal være sorterbar eller ikke\n * @default true */\n sortable?: boolean;\n /** Props som sendes til knapp-elementet */\n buttonProps?: Omit<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >,\n 'type' | 'onClick'\n >;\n [key: string]: any;\n};\n\nexport type SortableHeaderReturnProps = {\n name: string;\n sortable: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n\nexport type SortableTableProps = {\n /** @default true */\n sortable?: boolean;\n [key: string]: any;\n};\n\nexport type SortableTableReturnProps = {\n /** @default true */\n sortable?: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n","import classNames from 'classnames';\nimport React from 'react';\nimport { DataCell } from './DataCell';\nimport { VariantProvider, VariantType } from '@entur/form';\nimport { Tooltip } from '@entur/tooltip';\nimport './EditableCell.scss';\n\ntype EditableCellProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Inputelementet som skal være i tabellcellen */\n children: React.ReactElement;\n /** Valideringsvariant for EditableCell */\n variant?: VariantType;\n /** Varselmelding, som vil komme som en Tooltip under EditableCell */\n feedback?: string;\n /** Om cellen skal vise omriss til enhver tid\n * @default false\n */\n outlined?: boolean;\n [key: string]: any;\n};\n\nexport const EditableCell: React.FC<EditableCellProps> = ({\n children,\n className,\n feedback,\n variant,\n outlined = false,\n ...rest\n}) => {\n return (\n <VariantProvider variant={variant}>\n <DataCell\n className={classNames(\n 'eds-editable-cell',\n {\n 'eds-editable-cell--outlined': outlined,\n },\n className,\n )}\n {...rest}\n >\n <Tooltip\n disableHoverListener={!feedback}\n disableFocusListener={!feedback}\n placement=\"bottom\"\n content={feedback || undefined}\n variant={feedback ? 'error' : undefined}\n >\n {children}\n </Tooltip>\n </DataCell>\n </VariantProvider>\n );\n};\n","import React from 'react';\nimport { BaseExpand } from '@entur/expand';\n\nexport type ExpandableRowProps = {\n /** Antall kolonner tabellraden er */\n colSpan: number;\n /** Innholdet til ExpandableRow */\n children: React.ReactNode;\n /** Om ExpandableRow er åpen\n * @default false\n */\n open?: boolean;\n};\n\nexport const ExpandableRow: React.FC<ExpandableRowProps> = ({\n open = false,\n children,\n colSpan,\n}) => {\n return (\n <tr>\n <td colSpan={colSpan}>\n <BaseExpand open={open}>{children}</BaseExpand>\n </td>\n </tr>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { RightArrowIcon } from '@entur/icons';\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 <button\n className={classNames('eds-expand-row-button', {\n 'eds-expand-row-button--open': open,\n })}\n onClick={onClick}\n {...rest}\n >\n <RightArrowIcon className=\"eds-expand-row-button__icon\" />\n </button>\n );\n};\n","import React, { useState } from 'react';\nimport { TableBodyProps, TableRowProps } from './index';\n\nfunction onTableKeypress(\n event: React.KeyboardEvent,\n currentRow: number,\n maxRow: number,\n allowWrap?: boolean,\n) {\n const keyPress = event.key;\n switch (keyPress) {\n case 'ArrowUp':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === 0 ? maxRow - 1 : currentRow - 1;\n } else {\n return currentRow > 0 ? currentRow - 1 : 0;\n }\n case 'ArrowDown':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === maxRow - 1 ? 0 : currentRow + 1;\n } else {\n return currentRow < maxRow - 1 ? currentRow + 1 : currentRow;\n }\n default:\n return currentRow;\n }\n}\n\nexport type useTableKeyboardNavigationProps = (\n /** Antall rader i tabellen */\n numberOfRows: number,\n /** Tillate at man kan navigere sirkulært\n * @default false\n */\n allowWrap?: boolean,\n) => {\n getTableRowNavigationProps: (\n /** Raden i tabellen (0-indeksert) */\n row: number,\n ) => Partial<TableRowProps>;\n getTableBodyNavigationProps: () => Partial<TableBodyProps>;\n};\n\nexport const useTableKeyboardNavigation: useTableKeyboardNavigationProps = (\n numberOfRows = 0,\n allowWrap = true,\n) => {\n const [currentRow, setCurrentRow] = useState(numberOfRows);\n const [maxRow, setMaxRow] = useState(0);\n\n const tableBodyRef = React.useRef<HTMLTableSectionElement>(null);\n const tableHasFocus = tableBodyRef?.current?.contains(document.activeElement);\n\n React.useEffect(() => {\n tableBodyRef &&\n tableBodyRef.current &&\n tableHasFocus &&\n tableBodyRef.current.childNodes[\n currentRow\n ].childNodes[0].parentElement?.focus();\n }, [currentRow, tableHasFocus]);\n\n function getTableBodyNavigationProps(...rest: any): Partial<TableBodyProps> {\n return {\n ref: tableBodyRef,\n ...rest,\n };\n }\n\n const tableRowRef = React.useRef<HTMLTableRowElement>(null);\n function getTableRowNavigationProps(\n row: number,\n ...rest: any\n ): Partial<TableRowProps> {\n if (row >= maxRow) {\n setMaxRow(row + 1);\n }\n const tabIndex = currentRow ? 0 : -1;\n return {\n tabIndex,\n ref: tableRowRef,\n onClick: () => setCurrentRow(row),\n onKeyDown: (e: React.KeyboardEvent) => {\n const newCell = onTableKeypress(e, currentRow, numberOfRows, allowWrap);\n setCurrentRow(newCell);\n },\n ...rest,\n };\n }\n return { getTableRowNavigationProps, getTableBodyNavigationProps };\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('table');\n\nexport * from './Table';\nexport * from './TableHead';\nexport * from './TableBody';\nexport * from './TableFooter';\nexport * from './TableRow';\nexport * from './DataCell';\nexport * from './HeaderCell';\nexport * from './useSortableTable';\nexport * from './EditableCell';\nexport * from './ExpandableRow';\nexport * from './ExpandRowButton';\nexport * from './useTableKeyboardNavigation';\n"],"names":["Table","React","forwardRef","ref","className","fixed","spacing","sortable","rest","classNames","TableHead","props","TableBody","TableFooter","TableRow","hover","active","error","DataCell","padding","status","undefined","HeaderCell","children","name","sortConfig","sortableButtonProps","useState","isCurrentlySorted","setIsCurrentlySorted","useEffect","key","ariaSort","order","SortableHeaderCellButton","type","UpArrowIcon","size","DownArrowIcon","useSortableData","rawData","externalSortConfig","setSortConfig","tableCopy","slice","sortedData","useMemo","sort","a","b","get","onSortRequested","getSortableHeaderProps","buttonProps","onClick","getSortableTableProps","EditableCell","feedback","variant","outlined","VariantProvider","Tooltip","disableHoverListener","disableFocusListener","placement","content","ExpandableRow","open","colSpan","BaseExpand","ExpandRowButton","RightArrowIcon","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.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Setter tettheten mellom rader og kolonner. Bruk gjerne middle og small for for sider med høy informasjonstetthet\n * @default \"default\"\n */\n spacing?: 'default' | 'middle' | 'small';\n /** Setter kolonne-layout til å være uavhengig av innhold\n * @default false\n */\n fixed?: boolean;\n /** Innholdet i tabellen */\n children: React.ReactNode;\n [key: string]: any;\n};\nexport const Table = React.forwardRef<HTMLTableElement, TableProps>(\n (\n {\n className,\n fixed = false,\n spacing = 'default',\n sortable = false,\n ...rest\n },\n ref,\n ) => {\n return (\n <table\n className={classNames(\n 'eds-table',\n { 'eds-table--fixed': fixed },\n { 'eds-table--middle': spacing === 'middle' },\n { 'eds-table--small': spacing === 'small' },\n { 'eds-table--sortable': sortable },\n className,\n )}\n ref={ref}\n {...rest}\n />\n );\n },\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableHeadProps = {\n /** Kolonneoverskrifter */\n children: React.ReactNode;\n /** Esktra klassenavn */\n className?: string;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableHead = React.forwardRef<\n HTMLTableSectionElement,\n TableHeadProps\n>(({ className, ...props }, ref) => (\n <thead\n className={classNames('eds-table__head', className)}\n ref={ref}\n {...props}\n />\n));\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableBodyProps = {\n /** Tabellrader */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n ref?: React.Ref<HTMLTableSectionElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableBody = React.forwardRef<\n HTMLTableSectionElement,\n TableBodyProps\n>(({ className, ...rest }, ref) => (\n <tbody\n className={classNames('eds-table__body', className)}\n ref={ref}\n {...rest}\n />\n));\n","import React from 'react';\n\nexport type TableFooterProps = {\n /** Tabellrader */\n children: React.ReactNode;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableSectionElement>,\n HTMLTableSectionElement\n>;\n\nexport const TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n TableFooterProps\n>(({ ...props }, ref) => <tfoot ref={ref} {...props} />);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type TableRowProps = {\n /** Tabellceller */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /**Hvis satt, så vil tabellraden endre fargen ved hover\n * @default false\n */\n hover?: boolean;\n /** Om raden er klikkbar, så vil raden endre farge, og musepekeren vil symbolisere interaktivitet\n * @default false\n */\n active?: boolean;\n /**Signalisere om at det er en feil i tabellraden\n * @default false\n */\n error?: boolean;\n ref?: React.Ref<HTMLTableRowElement>;\n} & React.DetailedHTMLProps<\n React.HTMLAttributes<HTMLTableRowElement>,\n HTMLTableRowElement\n>;\n\nexport const TableRow = React.forwardRef<HTMLTableRowElement, TableRowProps>(\n (\n { className, hover = false, active = false, error = false, ...rest },\n ref: React.Ref<HTMLTableRowElement>,\n ) => (\n <tr\n className={classNames('eds-table__row', className, {\n 'eds-table__row--hover': hover,\n 'eds-table__row--active': active,\n 'eds-table__row--error': error,\n })}\n ref={ref}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nexport type DataCellProps = {\n /** Innholdet i tabellcellen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for DataCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n /** Viser en status-sirkel for DataCell */\n status?: 'positive' | 'negative' | 'neutral';\n} & React.DetailedHTMLProps<\n React.TdHTMLAttributes<HTMLTableDataCellElement>,\n HTMLTableDataCellElement\n>;\n\nexport const DataCell = React.forwardRef<\n HTMLTableDataCellElement,\n DataCellProps\n>(\n (\n { className, padding = 'default', status = undefined, ...rest },\n ref: React.Ref<HTMLTableDataCellElement>,\n ) => (\n <td\n ref={ref}\n className={classNames('eds-table__data-cell', className, {\n [`eds-table__data-cell--status-${status}`]: status,\n 'eds-table__data-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__data-cell--padding-radio': padding === 'radio',\n 'eds-table__data-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n {...rest}\n />\n ),\n);\n","import React from 'react';\nimport classNames from 'classnames';\n\nimport { DownArrowIcon, UpArrowIcon, UnsortedIcon } from '@entur/icons';\n\nimport { ExternalSortConfig } from '.';\n\nimport './HeaderCell.scss';\n\nexport type HeaderCellProps = {\n /** Kolonneoverskrift */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Størrelse som settes for HeaderCell for ulikt innhold av komponenter */\n padding?: 'default' | 'checkbox' | 'radio' | 'overflow-menu';\n\n /** Ekstra props som kan sendes til sorteringsknappelementet. Benyttes via useSortableTable */\n sortableButtonProps?: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n\n /** Om komponenten brukes til sortering. Benytt via useSortableTable\n * @default false\n */\n sortable?: boolean;\n /** Konfigurering og rekkefølgen på sortering. Benyttes via useSortableTable */\n sortConfig?: ExternalSortConfig;\n /** Navnet det skal sorteres på. Benyttes via useSortableTable */\n name?: string;\n} & React.DetailedHTMLProps<\n React.ThHTMLAttributes<HTMLTableCellElement>,\n HTMLTableCellElement\n>;\n\nexport const HeaderCell = React.forwardRef<\n HTMLTableCellElement,\n HeaderCellProps\n>(\n (\n {\n className,\n children,\n name,\n sortable = false,\n sortConfig,\n padding = 'default',\n sortableButtonProps,\n ...rest\n },\n ref,\n ) => {\n const [isCurrentlySorted, setIsCurrentlySorted] =\n React.useState<boolean>(false);\n React.useEffect(() => {\n sortConfig &&\n name &&\n setIsCurrentlySorted(sortConfig && name === sortConfig.key);\n }, [sortConfig, name]);\n const ariaSort = isCurrentlySorted\n ? sortConfig && sortConfig.order\n : 'none';\n\n return (\n <th\n className={classNames('eds-table__header-cell', className, {\n 'eds-table__header-cell--sortable': sortable,\n 'eds-table__header-cell--padding-radio': padding === 'radio',\n 'eds-table__header-cell--padding-checkbox': padding === 'checkbox',\n 'eds-table__header-cell--padding-overflow-menu':\n padding === 'overflow-menu',\n })}\n aria-sort={ariaSort}\n ref={ref}\n {...rest}\n >\n {sortable && sortConfig && sortableButtonProps ? (\n <SortableHeaderCellButton\n sortableButtonProps={sortableButtonProps}\n sortConfig={sortConfig}\n isCurrentlySorted={isCurrentlySorted}\n >\n {children}\n </SortableHeaderCellButton>\n ) : (\n children\n )}\n </th>\n );\n },\n);\n\ntype SortableHeaderCellButtonProps = {\n sortConfig: ExternalSortConfig;\n isCurrentlySorted: boolean;\n sortableButtonProps: React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >;\n};\n\nconst SortableHeaderCellButton: React.FC<SortableHeaderCellButtonProps> = ({\n sortConfig,\n sortableButtonProps,\n isCurrentlySorted,\n children,\n}) => {\n const { className, ...rest } = sortableButtonProps;\n return (\n <button\n className={classNames('eds-table__header-cell-button', className)}\n type=\"button\"\n {...rest}\n >\n {children}\n {(!isCurrentlySorted || sortConfig.order === 'none') && (\n <UnsortedIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"usortert kolonne\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'ascending' && (\n <UpArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"stigende sortert kolonne\"\n />\n )}\n {isCurrentlySorted && sortConfig.order === 'descending' && (\n <DownArrowIcon\n size=\"16px\"\n className=\"eds-table__header-cell-button-icon\"\n aria-label=\"synkende sortert kolonne\"\n />\n )}\n </button>\n );\n};\n","import React from 'react';\nimport get from 'lodash.get';\n\nexport type ExternalSortConfig = {\n /**\n * @default \"\"\n */\n key: string;\n /** @default \"none\" */\n order: 'ascending' | 'descending' | 'none';\n};\n\nexport function useSortableData<T>(\n rawData: T[],\n externalSortConfig: ExternalSortConfig = { key: '', order: 'none' },\n): {\n sortedData: T[];\n getSortableHeaderProps: (\n args: SortableHeaderProps,\n ) => SortableHeaderReturnProps;\n getSortableTableProps: (args: SortableTableProps) => SortableTableReturnProps;\n} {\n const [sortConfig, setSortConfig] = React.useState(externalSortConfig);\n const tableCopy = rawData.slice();\n\n React.useEffect(() => {\n setSortConfig({\n key: externalSortConfig.key,\n order: externalSortConfig.order,\n });\n }, [externalSortConfig.key, externalSortConfig.order]);\n\n const sortedData: T[] = React.useMemo(() => {\n if (sortConfig.order === 'none') {\n return tableCopy;\n }\n return [...rawData].sort((a: any, b: any) => {\n if (get(a, sortConfig.key) < get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? -1 : 1;\n } else if (get(a, sortConfig.key) > get(b, sortConfig.key)) {\n return sortConfig.order === 'ascending' ? 1 : -1;\n } else {\n return 0;\n }\n });\n }, [rawData, tableCopy, sortConfig]);\n\n const onSortRequested = (key: string) => {\n let order: 'ascending' | 'descending' | 'none' = 'ascending';\n if (sortConfig.key === key && sortConfig.order === 'ascending') {\n order = 'descending';\n } else if (sortConfig.key === key && sortConfig.order === 'descending') {\n order = 'none';\n }\n\n setSortConfig({ key, order });\n };\n\n function getSortableHeaderProps({\n name,\n sortable = true,\n buttonProps,\n ...props\n }: SortableHeaderProps): SortableHeaderReturnProps {\n return {\n name,\n sortable,\n sortConfig: sortConfig,\n sortableButtonProps: {\n onClick: () => onSortRequested(name),\n ...buttonProps,\n },\n ...props,\n };\n }\n\n function getSortableTableProps({\n sortable = true,\n ...props\n }: SortableTableProps): SortableTableReturnProps {\n return {\n sortable,\n sortConfig: sortConfig,\n ...props,\n };\n }\n\n return { sortedData, getSortableHeaderProps, getSortableTableProps };\n}\n\nexport type SortableHeaderProps = {\n /** Navnet headeren skal se etter i forhold til sortering av items */\n name: string;\n /** Om headeren skal være sorterbar eller ikke\n * @default true */\n sortable?: boolean;\n /** Props som sendes til knapp-elementet */\n buttonProps?: Omit<\n React.DetailedHTMLProps<\n React.ButtonHTMLAttributes<HTMLButtonElement>,\n HTMLButtonElement\n >,\n 'type' | 'onClick'\n >;\n [key: string]: any;\n};\n\nexport type SortableHeaderReturnProps = {\n name: string;\n sortable: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n\nexport type SortableTableProps = {\n /** @default true */\n sortable?: boolean;\n [key: string]: any;\n};\n\nexport type SortableTableReturnProps = {\n /** @default true */\n sortable?: boolean;\n sortConfig: ExternalSortConfig;\n [key: string]: any;\n};\n","import classNames from 'classnames';\nimport React from 'react';\nimport { DataCell } from './DataCell';\nimport { VariantProvider, VariantType } from '@entur/form';\nimport { Tooltip } from '@entur/tooltip';\nimport './EditableCell.scss';\n\ntype EditableCellProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Inputelementet som skal være i tabellcellen */\n children: React.ReactElement;\n /** Valideringsvariant for EditableCell */\n variant?: VariantType;\n /** Varselmelding, som vil komme som en Tooltip under EditableCell */\n feedback?: string;\n /** Om cellen skal vise omriss til enhver tid\n * @default false\n */\n outlined?: boolean;\n [key: string]: any;\n};\n\nexport const EditableCell: React.FC<EditableCellProps> = ({\n children,\n className,\n feedback,\n variant,\n outlined = false,\n ...rest\n}) => {\n return (\n <VariantProvider variant={variant}>\n <DataCell\n className={classNames(\n 'eds-editable-cell',\n {\n 'eds-editable-cell--outlined': outlined,\n },\n className,\n )}\n {...rest}\n >\n <Tooltip\n disableHoverListener={!feedback}\n disableFocusListener={!feedback}\n placement=\"bottom\"\n content={feedback || undefined}\n variant={feedback ? 'error' : undefined}\n >\n {children}\n </Tooltip>\n </DataCell>\n </VariantProvider>\n );\n};\n","import React from 'react';\nimport { BaseExpand } from '@entur/expand';\n\nexport type ExpandableRowProps = {\n /** Antall kolonner tabellraden er */\n colSpan: number;\n /** Innholdet til ExpandableRow */\n children: React.ReactNode;\n /** Om ExpandableRow er åpen\n * @default false\n */\n open?: boolean;\n};\n\nexport const ExpandableRow: React.FC<ExpandableRowProps> = ({\n open = false,\n children,\n colSpan,\n}) => {\n return (\n <tr>\n <td colSpan={colSpan}>\n <BaseExpand open={open}>{children}</BaseExpand>\n </td>\n </tr>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { DownArrowIcon } from '@entur/icons';\nimport { IconButton } from '@entur/button';\nimport './ExpandRowButton.scss';\n\nexport type ExpandRowButtonProps = {\n open: boolean;\n onClick: (e: React.MouseEvent) => void;\n} & React.ButtonHTMLAttributes<HTMLButtonElement>;\n\nexport const ExpandRowButton: React.FC<ExpandRowButtonProps> = ({\n open,\n onClick,\n ...rest\n}) => {\n return (\n <IconButton\n className={classNames('eds-expand-row-button', {\n 'eds-expand-row-button--open': open,\n })}\n onClick={onClick}\n aria-label={open ? 'Lukk tabellrad' : 'Utvid tabellrad'}\n {...rest}\n >\n <DownArrowIcon className=\"eds-expand-row-button__icon\" />\n </IconButton>\n );\n};\n","import React, { useState } from 'react';\nimport { TableBodyProps, TableRowProps } from './index';\n\nfunction onTableKeypress(\n event: React.KeyboardEvent,\n currentRow: number,\n maxRow: number,\n allowWrap?: boolean,\n) {\n const keyPress = event.key;\n switch (keyPress) {\n case 'ArrowUp':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === 0 ? maxRow - 1 : currentRow - 1;\n } else {\n return currentRow > 0 ? currentRow - 1 : 0;\n }\n case 'ArrowDown':\n event.preventDefault();\n if (allowWrap) {\n return currentRow === maxRow - 1 ? 0 : currentRow + 1;\n } else {\n return currentRow < maxRow - 1 ? currentRow + 1 : currentRow;\n }\n default:\n return currentRow;\n }\n}\n\nexport type useTableKeyboardNavigationProps = (\n /** Antall rader i tabellen */\n numberOfRows: number,\n /** Tillate at man kan navigere sirkulært\n * @default false\n */\n allowWrap?: boolean,\n) => {\n getTableRowNavigationProps: (\n /** Raden i tabellen (0-indeksert) */\n row: number,\n ) => Partial<TableRowProps>;\n getTableBodyNavigationProps: () => Partial<TableBodyProps>;\n};\n\nexport const useTableKeyboardNavigation: useTableKeyboardNavigationProps = (\n numberOfRows = 0,\n allowWrap = true,\n) => {\n const [currentRow, setCurrentRow] = useState(numberOfRows);\n const [maxRow, setMaxRow] = useState(0);\n\n const tableBodyRef = React.useRef<HTMLTableSectionElement>(null);\n const tableHasFocus = tableBodyRef?.current?.contains(document.activeElement);\n\n React.useEffect(() => {\n tableBodyRef &&\n tableBodyRef.current &&\n tableHasFocus &&\n tableBodyRef.current.childNodes[\n currentRow\n ].childNodes[0].parentElement?.focus();\n }, [currentRow, tableHasFocus]);\n\n function getTableBodyNavigationProps(...rest: any): Partial<TableBodyProps> {\n return {\n ref: tableBodyRef,\n ...rest,\n };\n }\n\n const tableRowRef = React.useRef<HTMLTableRowElement>(null);\n function getTableRowNavigationProps(\n row: number,\n ...rest: any\n ): Partial<TableRowProps> {\n if (row >= maxRow) {\n setMaxRow(row + 1);\n }\n const tabIndex = currentRow ? 0 : -1;\n return {\n tabIndex,\n ref: tableRowRef,\n onClick: () => setCurrentRow(row),\n onKeyDown: (e: React.KeyboardEvent) => {\n const newCell = onTableKeypress(e, currentRow, numberOfRows, allowWrap);\n setCurrentRow(newCell);\n },\n ...rest,\n };\n }\n return { getTableRowNavigationProps, getTableBodyNavigationProps };\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('table');\n\nexport * from './Table';\nexport * from './TableHead';\nexport * from './TableBody';\nexport * from './TableFooter';\nexport * from './TableRow';\nexport * from './DataCell';\nexport * from './HeaderCell';\nexport * from './useSortableTable';\nexport * from './EditableCell';\nexport * from './ExpandableRow';\nexport * from './ExpandRowButton';\nexport * from './useTableKeyboardNavigation';\n"],"names":["Table","React","forwardRef","ref","className","fixed","spacing","sortable","rest","classNames","TableHead","props","TableBody","TableFooter","TableRow","hover","active","error","DataCell","padding","status","undefined","HeaderCell","children","name","sortConfig","sortableButtonProps","useState","isCurrentlySorted","setIsCurrentlySorted","useEffect","key","ariaSort","order","SortableHeaderCellButton","type","UnsortedIcon","size","UpArrowIcon","DownArrowIcon","useSortableData","rawData","externalSortConfig","setSortConfig","tableCopy","slice","sortedData","useMemo","sort","a","b","get","onSortRequested","getSortableHeaderProps","buttonProps","onClick","getSortableTableProps","EditableCell","feedback","variant","outlined","VariantProvider","Tooltip","disableHoverListener","disableFocusListener","placement","content","ExpandableRow","open","colSpan","BaseExpand","ExpandRowButton","IconButton","onTableKeypress","event","currentRow","maxRow","allowWrap","keyPress","preventDefault","useTableKeyboardNavigation","numberOfRows","setCurrentRow","setMaxRow","tableBodyRef","useRef","tableHasFocus","current","contains","document","activeElement","childNodes","parentElement","focus","getTableBodyNavigationProps","tableRowRef","getTableRowNavigationProps","row","tabIndex","onKeyDown","e","newCell","warnAboutMissingStyles"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@entur/table",
|
|
3
|
-
"version": "4.5.
|
|
3
|
+
"version": "4.5.23",
|
|
4
4
|
"license": "EUPL-1.2",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/table.esm.js",
|
|
@@ -27,8 +27,9 @@
|
|
|
27
27
|
"react-dom": ">=16.8.0"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@entur/
|
|
31
|
-
"@entur/
|
|
30
|
+
"@entur/button": "^2.10.4",
|
|
31
|
+
"@entur/expand": "^3.3.21",
|
|
32
|
+
"@entur/form": "^5.4.5",
|
|
32
33
|
"@entur/utils": "^0.4.5",
|
|
33
34
|
"@types/lodash.get": "^4.4.6",
|
|
34
35
|
"classnames": "^2.3.1",
|
|
@@ -37,5 +38,5 @@
|
|
|
37
38
|
"devDependencies": {
|
|
38
39
|
"@entur/tokens": "^3.4.1"
|
|
39
40
|
},
|
|
40
|
-
"gitHead": "
|
|
41
|
+
"gitHead": "e6da59550f3ace8e356155d60ce72d480aa17d51"
|
|
41
42
|
}
|