@react-aria/table 3.17.11 → 3.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/import.mjs +2 -19
- package/dist/main.js +10 -27
- package/dist/main.js.map +1 -1
- package/dist/module.js +2 -19
- package/dist/module.js.map +1 -1
- package/dist/types/src/index.d.ts +4 -0
- package/package.json +15 -25
- package/src/index.ts +4 -21
- package/dist/TableKeyboardDelegate.main.js +0 -142
- package/dist/TableKeyboardDelegate.main.js.map +0 -1
- package/dist/TableKeyboardDelegate.mjs +0 -137
- package/dist/TableKeyboardDelegate.module.js +0 -137
- package/dist/TableKeyboardDelegate.module.js.map +0 -1
- package/dist/ar-AE.main.js +0 -14
- package/dist/ar-AE.main.js.map +0 -1
- package/dist/ar-AE.mjs +0 -16
- package/dist/ar-AE.module.js +0 -16
- package/dist/ar-AE.module.js.map +0 -1
- package/dist/bg-BG.main.js +0 -14
- package/dist/bg-BG.main.js.map +0 -1
- package/dist/bg-BG.mjs +0 -16
- package/dist/bg-BG.module.js +0 -16
- package/dist/bg-BG.module.js.map +0 -1
- package/dist/cs-CZ.main.js +0 -14
- package/dist/cs-CZ.main.js.map +0 -1
- package/dist/cs-CZ.mjs +0 -16
- package/dist/cs-CZ.module.js +0 -16
- package/dist/cs-CZ.module.js.map +0 -1
- package/dist/da-DK.main.js +0 -14
- package/dist/da-DK.main.js.map +0 -1
- package/dist/da-DK.mjs +0 -16
- package/dist/da-DK.module.js +0 -16
- package/dist/da-DK.module.js.map +0 -1
- package/dist/de-DE.main.js +0 -14
- package/dist/de-DE.main.js.map +0 -1
- package/dist/de-DE.mjs +0 -16
- package/dist/de-DE.module.js +0 -16
- package/dist/de-DE.module.js.map +0 -1
- package/dist/el-GR.main.js +0 -14
- package/dist/el-GR.main.js.map +0 -1
- package/dist/el-GR.mjs +0 -16
- package/dist/el-GR.module.js +0 -16
- package/dist/el-GR.module.js.map +0 -1
- package/dist/en-US.main.js +0 -14
- package/dist/en-US.main.js.map +0 -1
- package/dist/en-US.mjs +0 -16
- package/dist/en-US.module.js +0 -16
- package/dist/en-US.module.js.map +0 -1
- package/dist/es-ES.main.js +0 -14
- package/dist/es-ES.main.js.map +0 -1
- package/dist/es-ES.mjs +0 -16
- package/dist/es-ES.module.js +0 -16
- package/dist/es-ES.module.js.map +0 -1
- package/dist/et-EE.main.js +0 -14
- package/dist/et-EE.main.js.map +0 -1
- package/dist/et-EE.mjs +0 -16
- package/dist/et-EE.module.js +0 -16
- package/dist/et-EE.module.js.map +0 -1
- package/dist/fi-FI.main.js +0 -14
- package/dist/fi-FI.main.js.map +0 -1
- package/dist/fi-FI.mjs +0 -16
- package/dist/fi-FI.module.js +0 -16
- package/dist/fi-FI.module.js.map +0 -1
- package/dist/fr-FR.main.js +0 -14
- package/dist/fr-FR.main.js.map +0 -1
- package/dist/fr-FR.mjs +0 -16
- package/dist/fr-FR.module.js +0 -16
- package/dist/fr-FR.module.js.map +0 -1
- package/dist/he-IL.main.js +0 -14
- package/dist/he-IL.main.js.map +0 -1
- package/dist/he-IL.mjs +0 -16
- package/dist/he-IL.module.js +0 -16
- package/dist/he-IL.module.js.map +0 -1
- package/dist/hr-HR.main.js +0 -14
- package/dist/hr-HR.main.js.map +0 -1
- package/dist/hr-HR.mjs +0 -16
- package/dist/hr-HR.module.js +0 -16
- package/dist/hr-HR.module.js.map +0 -1
- package/dist/hu-HU.main.js +0 -14
- package/dist/hu-HU.main.js.map +0 -1
- package/dist/hu-HU.mjs +0 -16
- package/dist/hu-HU.module.js +0 -16
- package/dist/hu-HU.module.js.map +0 -1
- package/dist/intlStrings.main.js +0 -108
- package/dist/intlStrings.main.js.map +0 -1
- package/dist/intlStrings.mjs +0 -110
- package/dist/intlStrings.module.js +0 -110
- package/dist/intlStrings.module.js.map +0 -1
- package/dist/it-IT.main.js +0 -14
- package/dist/it-IT.main.js.map +0 -1
- package/dist/it-IT.mjs +0 -16
- package/dist/it-IT.module.js +0 -16
- package/dist/it-IT.module.js.map +0 -1
- package/dist/ja-JP.main.js +0 -14
- package/dist/ja-JP.main.js.map +0 -1
- package/dist/ja-JP.mjs +0 -16
- package/dist/ja-JP.module.js +0 -16
- package/dist/ja-JP.module.js.map +0 -1
- package/dist/ko-KR.main.js +0 -14
- package/dist/ko-KR.main.js.map +0 -1
- package/dist/ko-KR.mjs +0 -16
- package/dist/ko-KR.module.js +0 -16
- package/dist/ko-KR.module.js.map +0 -1
- package/dist/lt-LT.main.js +0 -14
- package/dist/lt-LT.main.js.map +0 -1
- package/dist/lt-LT.mjs +0 -16
- package/dist/lt-LT.module.js +0 -16
- package/dist/lt-LT.module.js.map +0 -1
- package/dist/lv-LV.main.js +0 -14
- package/dist/lv-LV.main.js.map +0 -1
- package/dist/lv-LV.mjs +0 -16
- package/dist/lv-LV.module.js +0 -16
- package/dist/lv-LV.module.js.map +0 -1
- package/dist/nb-NO.main.js +0 -14
- package/dist/nb-NO.main.js.map +0 -1
- package/dist/nb-NO.mjs +0 -16
- package/dist/nb-NO.module.js +0 -16
- package/dist/nb-NO.module.js.map +0 -1
- package/dist/nl-NL.main.js +0 -14
- package/dist/nl-NL.main.js.map +0 -1
- package/dist/nl-NL.mjs +0 -16
- package/dist/nl-NL.module.js +0 -16
- package/dist/nl-NL.module.js.map +0 -1
- package/dist/pl-PL.main.js +0 -14
- package/dist/pl-PL.main.js.map +0 -1
- package/dist/pl-PL.mjs +0 -16
- package/dist/pl-PL.module.js +0 -16
- package/dist/pl-PL.module.js.map +0 -1
- package/dist/pt-BR.main.js +0 -14
- package/dist/pt-BR.main.js.map +0 -1
- package/dist/pt-BR.mjs +0 -16
- package/dist/pt-BR.module.js +0 -16
- package/dist/pt-BR.module.js.map +0 -1
- package/dist/pt-PT.main.js +0 -14
- package/dist/pt-PT.main.js.map +0 -1
- package/dist/pt-PT.mjs +0 -16
- package/dist/pt-PT.module.js +0 -16
- package/dist/pt-PT.module.js.map +0 -1
- package/dist/ro-RO.main.js +0 -14
- package/dist/ro-RO.main.js.map +0 -1
- package/dist/ro-RO.mjs +0 -16
- package/dist/ro-RO.module.js +0 -16
- package/dist/ro-RO.module.js.map +0 -1
- package/dist/ru-RU.main.js +0 -14
- package/dist/ru-RU.main.js.map +0 -1
- package/dist/ru-RU.mjs +0 -16
- package/dist/ru-RU.module.js +0 -16
- package/dist/ru-RU.module.js.map +0 -1
- package/dist/sk-SK.main.js +0 -14
- package/dist/sk-SK.main.js.map +0 -1
- package/dist/sk-SK.mjs +0 -16
- package/dist/sk-SK.module.js +0 -16
- package/dist/sk-SK.module.js.map +0 -1
- package/dist/sl-SI.main.js +0 -14
- package/dist/sl-SI.main.js.map +0 -1
- package/dist/sl-SI.mjs +0 -16
- package/dist/sl-SI.module.js +0 -16
- package/dist/sl-SI.module.js.map +0 -1
- package/dist/sr-SP.main.js +0 -14
- package/dist/sr-SP.main.js.map +0 -1
- package/dist/sr-SP.mjs +0 -16
- package/dist/sr-SP.module.js +0 -16
- package/dist/sr-SP.module.js.map +0 -1
- package/dist/sv-SE.main.js +0 -14
- package/dist/sv-SE.main.js.map +0 -1
- package/dist/sv-SE.mjs +0 -16
- package/dist/sv-SE.module.js +0 -16
- package/dist/sv-SE.module.js.map +0 -1
- package/dist/tr-TR.main.js +0 -14
- package/dist/tr-TR.main.js.map +0 -1
- package/dist/tr-TR.mjs +0 -16
- package/dist/tr-TR.module.js +0 -16
- package/dist/tr-TR.module.js.map +0 -1
- package/dist/types.d.ts +0 -157
- package/dist/types.d.ts.map +0 -1
- package/dist/uk-UA.main.js +0 -14
- package/dist/uk-UA.main.js.map +0 -1
- package/dist/uk-UA.mjs +0 -16
- package/dist/uk-UA.module.js +0 -16
- package/dist/uk-UA.module.js.map +0 -1
- package/dist/useTable.main.js +0 -114
- package/dist/useTable.main.js.map +0 -1
- package/dist/useTable.mjs +0 -109
- package/dist/useTable.module.js +0 -109
- package/dist/useTable.module.js.map +0 -1
- package/dist/useTableCell.main.js +0 -37
- package/dist/useTableCell.main.js.map +0 -1
- package/dist/useTableCell.mjs +0 -32
- package/dist/useTableCell.module.js +0 -32
- package/dist/useTableCell.module.js.map +0 -1
- package/dist/useTableColumnHeader.main.js +0 -92
- package/dist/useTableColumnHeader.main.js.map +0 -1
- package/dist/useTableColumnHeader.mjs +0 -87
- package/dist/useTableColumnHeader.module.js +0 -87
- package/dist/useTableColumnHeader.module.js.map +0 -1
- package/dist/useTableColumnResize.main.js +0 -226
- package/dist/useTableColumnResize.main.js.map +0 -1
- package/dist/useTableColumnResize.mjs +0 -221
- package/dist/useTableColumnResize.module.js +0 -221
- package/dist/useTableColumnResize.module.js.map +0 -1
- package/dist/useTableHeaderRow.main.js +0 -32
- package/dist/useTableHeaderRow.main.js.map +0 -1
- package/dist/useTableHeaderRow.mjs +0 -27
- package/dist/useTableHeaderRow.module.js +0 -27
- package/dist/useTableHeaderRow.module.js.map +0 -1
- package/dist/useTableRow.main.js +0 -82
- package/dist/useTableRow.main.js.map +0 -1
- package/dist/useTableRow.mjs +0 -77
- package/dist/useTableRow.module.js +0 -77
- package/dist/useTableRow.module.js.map +0 -1
- package/dist/useTableSelectionCheckbox.main.js +0 -56
- package/dist/useTableSelectionCheckbox.main.js.map +0 -1
- package/dist/useTableSelectionCheckbox.mjs +0 -50
- package/dist/useTableSelectionCheckbox.module.js +0 -50
- package/dist/useTableSelectionCheckbox.module.js.map +0 -1
- package/dist/utils.main.js +0 -43
- package/dist/utils.main.js.map +0 -1
- package/dist/utils.mjs +0 -35
- package/dist/utils.module.js +0 -35
- package/dist/utils.module.js.map +0 -1
- package/dist/zh-CN.main.js +0 -14
- package/dist/zh-CN.main.js.map +0 -1
- package/dist/zh-CN.mjs +0 -16
- package/dist/zh-CN.module.js +0 -16
- package/dist/zh-CN.module.js.map +0 -1
- package/dist/zh-TW.main.js +0 -14
- package/dist/zh-TW.main.js.map +0 -1
- package/dist/zh-TW.mjs +0 -16
- package/dist/zh-TW.module.js +0 -16
- package/dist/zh-TW.module.js.map +0 -1
- package/src/TableKeyboardDelegate.ts +0 -214
- package/src/useTable.ts +0 -123
- package/src/useTableCell.ts +0 -59
- package/src/useTableColumnHeader.ts +0 -108
- package/src/useTableColumnResize.ts +0 -277
- package/src/useTableHeaderRow.ts +0 -42
- package/src/useTableRow.ts +0 -86
- package/src/useTableSelectionCheckbox.ts +0 -72
- package/src/utils.ts +0 -49
package/src/useTableRow.ts
DELETED
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2020 Adobe. All rights reserved.
|
|
3
|
-
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
-
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
-
*
|
|
7
|
-
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
-
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
-
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
-
* governing permissions and limitations under the License.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import {FocusableElement, RefObject} from '@react-types/shared';
|
|
14
|
-
import {getLastItem} from '@react-stately/collections';
|
|
15
|
-
import {getRowLabelledBy} from './utils';
|
|
16
|
-
import type {GridNode} from '@react-types/grid';
|
|
17
|
-
import {GridRowAria, GridRowProps, useGridRow} from '@react-aria/grid';
|
|
18
|
-
import {HTMLAttributes} from 'react';
|
|
19
|
-
import {mergeProps, useSyntheticLinkProps} from '@react-aria/utils';
|
|
20
|
-
import {TableCollection} from '@react-types/table';
|
|
21
|
-
import {tableNestedRows} from '@react-stately/flags';
|
|
22
|
-
import {TableState, TreeGridState} from '@react-stately/table';
|
|
23
|
-
import {useLocale} from '@react-aria/i18n';
|
|
24
|
-
|
|
25
|
-
const EXPANSION_KEYS = {
|
|
26
|
-
expand: {
|
|
27
|
-
ltr: 'ArrowRight',
|
|
28
|
-
rtl: 'ArrowLeft'
|
|
29
|
-
},
|
|
30
|
-
'collapse': {
|
|
31
|
-
ltr: 'ArrowLeft',
|
|
32
|
-
rtl: 'ArrowRight'
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Provides the behavior and accessibility implementation for a row in a table.
|
|
38
|
-
* @param props - Props for the row.
|
|
39
|
-
* @param state - State of the table, as returned by `useTableState`.
|
|
40
|
-
*/
|
|
41
|
-
export function useTableRow<T>(props: GridRowProps<T>, state: TableState<T> | TreeGridState<T>, ref: RefObject<FocusableElement | null>): GridRowAria {
|
|
42
|
-
let {node, isVirtualized} = props;
|
|
43
|
-
let {rowProps, ...states} = useGridRow<T, TableCollection<T>, TableState<T>>(props, state, ref);
|
|
44
|
-
let {direction} = useLocale();
|
|
45
|
-
|
|
46
|
-
if (isVirtualized && !(tableNestedRows() && 'expandedKeys' in state)) {
|
|
47
|
-
rowProps['aria-rowindex'] = node.index + 1 + state.collection.headerRows.length; // aria-rowindex is 1 based
|
|
48
|
-
} else {
|
|
49
|
-
delete rowProps['aria-rowindex'];
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
let treeGridRowProps: HTMLAttributes<HTMLElement> = {};
|
|
53
|
-
if (tableNestedRows() && 'expandedKeys' in state) {
|
|
54
|
-
let treeNode = state.keyMap.get(node.key);
|
|
55
|
-
if (treeNode != null) {
|
|
56
|
-
let hasChildRows = treeNode.props?.UNSTABLE_childItems || treeNode.props?.children?.length > state.userColumnCount;
|
|
57
|
-
treeGridRowProps = {
|
|
58
|
-
onKeyDown: (e) => {
|
|
59
|
-
if ((e.key === EXPANSION_KEYS['expand'][direction]) && state.selectionManager.focusedKey === treeNode.key && hasChildRows && state.expandedKeys !== 'all' && !state.expandedKeys.has(treeNode.key)) {
|
|
60
|
-
state.toggleKey(treeNode.key);
|
|
61
|
-
e.stopPropagation();
|
|
62
|
-
} else if ((e.key === EXPANSION_KEYS['collapse'][direction]) && state.selectionManager.focusedKey === treeNode.key && hasChildRows && (state.expandedKeys === 'all' || state.expandedKeys.has(treeNode.key))) {
|
|
63
|
-
state.toggleKey(treeNode.key);
|
|
64
|
-
e.stopPropagation();
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
'aria-expanded': hasChildRows ? state.expandedKeys === 'all' || state.expandedKeys.has(node.key) : undefined,
|
|
68
|
-
'aria-level': treeNode.level,
|
|
69
|
-
'aria-posinset': (treeNode.indexOfType ?? 0) + 1,
|
|
70
|
-
'aria-setsize': treeNode.level > 1 ?
|
|
71
|
-
((getLastItem(state.keyMap.get(treeNode.parentKey!)?.childNodes ?? []) as GridNode<T>)?.indexOfType ?? 0) + 1 :
|
|
72
|
-
((getLastItem(state.collection.body.childNodes) as GridNode<T>)?.indexOfType ?? 0) + 1
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
let syntheticLinkProps = useSyntheticLinkProps(node.props);
|
|
78
|
-
let linkProps = states.hasAction ? syntheticLinkProps : {};
|
|
79
|
-
return {
|
|
80
|
-
rowProps: {
|
|
81
|
-
...mergeProps(rowProps, treeGridRowProps, linkProps),
|
|
82
|
-
'aria-labelledby': getRowLabelledBy(state, node.key)
|
|
83
|
-
},
|
|
84
|
-
...states
|
|
85
|
-
};
|
|
86
|
-
}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2020 Adobe. All rights reserved.
|
|
3
|
-
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
-
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
-
*
|
|
7
|
-
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
-
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
-
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
-
* governing permissions and limitations under the License.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import {AriaCheckboxProps} from '@react-types/checkbox';
|
|
14
|
-
import {getRowLabelledBy} from './utils';
|
|
15
|
-
// @ts-ignore
|
|
16
|
-
import intlMessages from '../intl/*.json';
|
|
17
|
-
import {Key} from '@react-types/shared';
|
|
18
|
-
import {TableState} from '@react-stately/table';
|
|
19
|
-
import {useGridSelectionCheckbox} from '@react-aria/grid';
|
|
20
|
-
import {useLocalizedStringFormatter} from '@react-aria/i18n';
|
|
21
|
-
|
|
22
|
-
export interface AriaTableSelectionCheckboxProps {
|
|
23
|
-
/** A unique key for the checkbox. */
|
|
24
|
-
key: Key
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export interface TableSelectionCheckboxAria {
|
|
28
|
-
/** Props for the row selection checkbox element. */
|
|
29
|
-
checkboxProps: AriaCheckboxProps
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
export interface TableSelectAllCheckboxAria {
|
|
33
|
-
/** Props for the select all checkbox element. */
|
|
34
|
-
checkboxProps: AriaCheckboxProps
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Provides the behavior and accessibility implementation for a selection checkbox in a table.
|
|
39
|
-
* @param props - Props for the selection checkbox.
|
|
40
|
-
* @param state - State of the table, as returned by `useTableState`.
|
|
41
|
-
*/
|
|
42
|
-
export function useTableSelectionCheckbox<T>(props: AriaTableSelectionCheckboxProps, state: TableState<T>): TableSelectionCheckboxAria {
|
|
43
|
-
let {key} = props;
|
|
44
|
-
const {checkboxProps} = useGridSelectionCheckbox(props, state);
|
|
45
|
-
|
|
46
|
-
return {
|
|
47
|
-
checkboxProps: {
|
|
48
|
-
...checkboxProps,
|
|
49
|
-
'aria-labelledby': `${checkboxProps.id} ${getRowLabelledBy(state, key)}`
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Provides the behavior and accessibility implementation for the select all checkbox in a table.
|
|
56
|
-
* @param props - Props for the select all checkbox.
|
|
57
|
-
* @param state - State of the table, as returned by `useTableState`.
|
|
58
|
-
*/
|
|
59
|
-
export function useTableSelectAllCheckbox<T>(state: TableState<T>): TableSelectAllCheckboxAria {
|
|
60
|
-
let {isEmpty, isSelectAll, selectionMode} = state.selectionManager;
|
|
61
|
-
const stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/table');
|
|
62
|
-
|
|
63
|
-
return {
|
|
64
|
-
checkboxProps: {
|
|
65
|
-
'aria-label': stringFormatter.format(selectionMode === 'single' ? 'select' : 'selectAll'),
|
|
66
|
-
isSelected: isSelectAll,
|
|
67
|
-
isDisabled: selectionMode !== 'multiple' || (state.collection.size === 0 || (state.collection.rows.length === 1 && state.collection.rows[0].type === 'loader')),
|
|
68
|
-
isIndeterminate: !isEmpty && !isSelectAll,
|
|
69
|
-
onChange: () => state.selectionManager.toggleSelectAll()
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
}
|
package/src/utils.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright 2020 Adobe. All rights reserved.
|
|
3
|
-
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
|
|
4
|
-
* you may not use this file except in compliance with the License. You may obtain a copy
|
|
5
|
-
* of the License at http://www.apache.org/licenses/LICENSE-2.0
|
|
6
|
-
*
|
|
7
|
-
* Unless required by applicable law or agreed to in writing, software distributed under
|
|
8
|
-
* the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
|
|
9
|
-
* OF ANY KIND, either express or implied. See the License for the specific language
|
|
10
|
-
* governing permissions and limitations under the License.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import {Key} from '@react-types/shared';
|
|
14
|
-
import {TableState} from '@react-stately/table';
|
|
15
|
-
|
|
16
|
-
export const gridIds: WeakMap<TableState<unknown>, string> = new WeakMap<TableState<unknown>, string>();
|
|
17
|
-
|
|
18
|
-
function normalizeKey(key: Key): string {
|
|
19
|
-
if (typeof key === 'string') {
|
|
20
|
-
return key.replace(/\s*/g, '');
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
return '' + key;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export function getColumnHeaderId<T>(state: TableState<T>, columnKey: Key): string {
|
|
27
|
-
let gridId = gridIds.get(state);
|
|
28
|
-
if (!gridId) {
|
|
29
|
-
throw new Error('Unknown grid');
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return `${gridId}-${normalizeKey(columnKey)}`;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
export function getCellId<T>(state: TableState<T>, rowKey: Key, columnKey: Key): string {
|
|
36
|
-
let gridId = gridIds.get(state);
|
|
37
|
-
if (!gridId) {
|
|
38
|
-
throw new Error('Unknown grid');
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
return `${gridId}-${normalizeKey(rowKey)}-${normalizeKey(columnKey)}`;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
export function getRowLabelledBy<T>(state: TableState<T>, rowKey: Key): string {
|
|
45
|
-
// A row is labelled by it's row headers.
|
|
46
|
-
return [...state.collection.rowHeaderColumnKeys].map(columnKey =>
|
|
47
|
-
getCellId(state, rowKey, columnKey)
|
|
48
|
-
).join(' ');
|
|
49
|
-
}
|