@patternfly/react-table 5.1.0 → 5.1.1-prerelease.1
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 +11 -3
- package/components/package.json +1 -1
- package/deprecated/package.json +1 -1
- package/dist/dynamic/components/Table/package.json +1 -1
- package/dist/dynamic/components/Table/utils/decorators/package.json +1 -1
- package/dist/dynamic/components/Table/utils/package.json +1 -1
- package/dist/dynamic/deprecated/components/Table/base/package.json +1 -1
- package/dist/dynamic/deprecated/components/Table/package.json +1 -1
- package/dist/dynamic/deprecated/components/package.json +1 -1
- package/dist/esm/components/Table/ActionsColumn.d.ts.map +1 -1
- package/dist/esm/components/Table/ActionsColumn.js.map +1 -1
- package/dist/esm/components/Table/EditColumn.js +3 -3
- package/dist/esm/components/Table/EditColumn.js.map +1 -1
- package/dist/esm/components/Table/EditableSelectInputCell.d.ts.map +1 -1
- package/dist/esm/components/Table/EditableSelectInputCell.js.map +1 -1
- package/dist/esm/components/Table/RowWrapper.d.ts +2 -1
- package/dist/esm/components/Table/RowWrapper.d.ts.map +1 -1
- package/dist/esm/components/Table/RowWrapper.js +2 -1
- package/dist/esm/components/Table/RowWrapper.js.map +1 -1
- package/dist/esm/components/Table/Table.d.ts +3 -1
- package/dist/esm/components/Table/Table.d.ts.map +1 -1
- package/dist/esm/components/Table/Table.js +4 -4
- package/dist/esm/components/Table/Table.js.map +1 -1
- package/dist/esm/components/Table/base/evaluate-transforms.js +2 -2
- package/dist/esm/components/Table/base/evaluate-transforms.js.map +1 -1
- package/dist/esm/components/Table/base/provider.d.ts +3 -2
- package/dist/esm/components/Table/base/provider.d.ts.map +1 -1
- package/dist/esm/components/Table/base/provider.js +2 -1
- package/dist/esm/components/Table/base/provider.js.map +1 -1
- package/dist/esm/components/Table/base/types.d.ts +1 -1
- package/dist/esm/components/Table/base/types.d.ts.map +1 -1
- package/dist/esm/components/Table/base/types.js.map +1 -1
- package/dist/esm/components/Table/utils/decorators/cellActions.d.ts.map +1 -1
- package/dist/esm/components/Table/utils/decorators/cellActions.js.map +1 -1
- package/dist/esm/components/Table/utils/decorators/cellWidth.d.ts.map +1 -1
- package/dist/esm/components/Table/utils/decorators/cellWidth.js.map +1 -1
- package/dist/esm/components/Table/utils/decorators/classNames.d.ts.map +1 -1
- package/dist/esm/components/Table/utils/decorators/classNames.js +1 -1
- package/dist/esm/components/Table/utils/decorators/classNames.js.map +1 -1
- package/dist/esm/components/Table/utils/decorators/editable.js +2 -2
- package/dist/esm/components/Table/utils/decorators/editable.js.map +1 -1
- package/dist/esm/components/Table/utils/headerUtils.d.ts.map +1 -1
- package/dist/esm/components/Table/utils/headerUtils.js +1 -6
- package/dist/esm/components/Table/utils/headerUtils.js.map +1 -1
- package/dist/esm/components/Table/utils/utils.d.ts.map +1 -1
- package/dist/esm/components/Table/utils/utils.js +7 -10
- package/dist/esm/components/Table/utils/utils.js.map +1 -1
- package/dist/esm/deprecated/components/Table/BodyWrapper.js +1 -1
- package/dist/esm/deprecated/components/Table/BodyWrapper.js.map +1 -1
- package/dist/esm/deprecated/components/Table/Table.d.ts +2 -1
- package/dist/esm/deprecated/components/Table/Table.d.ts.map +1 -1
- package/dist/esm/deprecated/components/Table/Table.js +2 -1
- package/dist/esm/deprecated/components/Table/Table.js.map +1 -1
- package/dist/esm/deprecated/components/Table/base/body-row.d.ts +2 -1
- package/dist/esm/deprecated/components/Table/base/body-row.d.ts.map +1 -1
- package/dist/esm/deprecated/components/Table/base/body-row.js +2 -1
- package/dist/esm/deprecated/components/Table/base/body-row.js.map +1 -1
- package/dist/esm/deprecated/components/Table/base/body.d.ts.map +1 -1
- package/dist/esm/deprecated/components/Table/base/body.js.map +1 -1
- package/dist/esm/deprecated/components/Table/base/header.d.ts.map +1 -1
- package/dist/esm/deprecated/components/Table/base/header.js.map +1 -1
- package/dist/js/components/Table/ActionsColumn.d.ts.map +1 -1
- package/dist/js/components/Table/ActionsColumn.js +6 -6
- package/dist/js/components/Table/ActionsColumn.js.map +1 -1
- package/dist/js/components/Table/CollapseColumn.js +2 -2
- package/dist/js/components/Table/CollapseColumn.js.map +1 -1
- package/dist/js/components/Table/DraggableCell.js +2 -2
- package/dist/js/components/Table/DraggableCell.js.map +1 -1
- package/dist/js/components/Table/EditColumn.js +7 -7
- package/dist/js/components/Table/EditColumn.js.map +1 -1
- package/dist/js/components/Table/EditableSelectInputCell.d.ts.map +1 -1
- package/dist/js/components/Table/EditableSelectInputCell.js +1 -1
- package/dist/js/components/Table/EditableSelectInputCell.js.map +1 -1
- package/dist/js/components/Table/EditableTextCell.js +1 -1
- package/dist/js/components/Table/EditableTextCell.js.map +1 -1
- package/dist/js/components/Table/FavoritesCell.js +2 -2
- package/dist/js/components/Table/FavoritesCell.js.map +1 -1
- package/dist/js/components/Table/HeaderCellInfoWrapper.js +4 -4
- package/dist/js/components/Table/HeaderCellInfoWrapper.js.map +1 -1
- package/dist/js/components/Table/RowWrapper.d.ts +2 -1
- package/dist/js/components/Table/RowWrapper.d.ts.map +1 -1
- package/dist/js/components/Table/RowWrapper.js +1 -2
- package/dist/js/components/Table/RowWrapper.js.map +1 -1
- package/dist/js/components/Table/SortColumn.js +3 -3
- package/dist/js/components/Table/SortColumn.js.map +1 -1
- package/dist/js/components/Table/Table.d.ts +3 -1
- package/dist/js/components/Table/Table.d.ts.map +1 -1
- package/dist/js/components/Table/Table.js +4 -4
- package/dist/js/components/Table/Table.js.map +1 -1
- package/dist/js/components/Table/TableText.js +1 -1
- package/dist/js/components/Table/TableText.js.map +1 -1
- package/dist/js/components/Table/TableTypes.js +0 -4
- package/dist/js/components/Table/TableTypes.js.map +1 -1
- package/dist/js/components/Table/Td.js +1 -1
- package/dist/js/components/Table/Td.js.map +1 -1
- package/dist/js/components/Table/Th.js +1 -1
- package/dist/js/components/Table/Th.js.map +1 -1
- package/dist/js/components/Table/Tr.js +1 -1
- package/dist/js/components/Table/Tr.js.map +1 -1
- package/dist/js/components/Table/base/evaluate-transforms.js +2 -2
- package/dist/js/components/Table/base/evaluate-transforms.js.map +1 -1
- package/dist/js/components/Table/base/provider.d.ts +3 -2
- package/dist/js/components/Table/base/provider.d.ts.map +1 -1
- package/dist/js/components/Table/base/provider.js.map +1 -1
- package/dist/js/components/Table/base/types.d.ts +1 -1
- package/dist/js/components/Table/base/types.d.ts.map +1 -1
- package/dist/js/components/Table/base/types.js +0 -4
- package/dist/js/components/Table/base/types.js.map +1 -1
- package/dist/js/components/Table/utils/decorators/cellActions.d.ts.map +1 -1
- package/dist/js/components/Table/utils/decorators/cellActions.js.map +1 -1
- package/dist/js/components/Table/utils/decorators/cellWidth.d.ts.map +1 -1
- package/dist/js/components/Table/utils/decorators/cellWidth.js.map +1 -1
- package/dist/js/components/Table/utils/decorators/classNames.d.ts.map +1 -1
- package/dist/js/components/Table/utils/decorators/classNames.js +1 -1
- package/dist/js/components/Table/utils/decorators/classNames.js.map +1 -1
- package/dist/js/components/Table/utils/decorators/editable.js +2 -2
- package/dist/js/components/Table/utils/decorators/editable.js.map +1 -1
- package/dist/js/components/Table/utils/decorators/sortable.js +1 -1
- package/dist/js/components/Table/utils/decorators/sortable.js.map +1 -1
- package/dist/js/components/Table/utils/decorators/treeRow.js +4 -4
- package/dist/js/components/Table/utils/decorators/treeRow.js.map +1 -1
- package/dist/js/components/Table/utils/headerUtils.d.ts.map +1 -1
- package/dist/js/components/Table/utils/headerUtils.js +1 -6
- package/dist/js/components/Table/utils/headerUtils.js.map +1 -1
- package/dist/js/components/Table/utils/utils.d.ts.map +1 -1
- package/dist/js/components/Table/utils/utils.js +7 -10
- package/dist/js/components/Table/utils/utils.js.map +1 -1
- package/dist/js/deprecated/components/Table/BodyCell.js +3 -4
- package/dist/js/deprecated/components/Table/BodyCell.js.map +1 -1
- package/dist/js/deprecated/components/Table/BodyWrapper.js +1 -1
- package/dist/js/deprecated/components/Table/BodyWrapper.js.map +1 -1
- package/dist/js/deprecated/components/Table/Table.d.ts +2 -1
- package/dist/js/deprecated/components/Table/Table.d.ts.map +1 -1
- package/dist/js/deprecated/components/Table/Table.js +1 -1
- package/dist/js/deprecated/components/Table/Table.js.map +1 -1
- package/dist/js/deprecated/components/Table/base/body-row.d.ts +2 -1
- package/dist/js/deprecated/components/Table/base/body-row.d.ts.map +1 -1
- package/dist/js/deprecated/components/Table/base/body-row.js.map +1 -1
- package/dist/js/deprecated/components/Table/base/body.d.ts.map +1 -1
- package/dist/js/deprecated/components/Table/base/body.js.map +1 -1
- package/dist/js/deprecated/components/Table/base/header.d.ts.map +1 -1
- package/dist/js/deprecated/components/Table/base/header.js.map +1 -1
- package/dist/umd/react-table.min.js +5 -5
- package/package.json +7 -8
- package/src/components/Table/ActionsColumn.tsx +3 -1
- package/src/components/Table/EditColumn.tsx +3 -3
- package/src/components/Table/EditableSelectInputCell.tsx +1 -4
- package/src/components/Table/RowWrapper.tsx +5 -3
- package/src/components/Table/Table.tsx +5 -1
- package/src/components/Table/base/evaluate-transforms.ts +2 -2
- package/src/components/Table/base/provider.tsx +3 -1
- package/src/components/Table/base/types.tsx +1 -4
- package/src/components/Table/examples/Table.md +7 -0
- package/src/components/Table/examples/TableActions.tsx +1 -1
- package/src/components/Table/examples/TableBasic.tsx +1 -1
- package/src/components/Table/examples/TableCellWidth.tsx +1 -1
- package/src/components/Table/examples/TableClickable.tsx +1 -1
- package/src/components/Table/examples/TableDraggable.tsx +10 -10
- package/src/components/Table/examples/TableExpandable.tsx +3 -3
- package/src/components/Table/examples/TableFavoritable.tsx +6 -6
- package/src/components/Table/examples/TableMultipleStickyColumns.tsx +1 -1
- package/src/components/Table/examples/TableNestedExpandable.tsx +3 -12
- package/src/components/Table/examples/TableNestedTableExpandable.tsx +5 -15
- package/src/components/Table/examples/TableRightStickyColumn.tsx +1 -1
- package/src/components/Table/examples/TableSelectable.tsx +4 -4
- package/src/components/Table/examples/TableStickyColumn.tsx +1 -1
- package/src/components/Table/examples/TableStickyColumnsAndHeader.tsx +1 -1
- package/src/components/Table/examples/TableStriped.tsx +1 -1
- package/src/components/Table/examples/TableStripedExpandable.tsx +4 -9
- package/src/components/Table/examples/TableStripedMultipleTbody.tsx +2 -2
- package/src/components/Table/examples/TableTree.tsx +10 -10
- package/src/components/Table/examples/TableTreeNoInset.tsx +121 -0
- package/src/components/Table/utils/decorators/cellActions.tsx +51 -53
- package/src/components/Table/utils/decorators/cellWidth.ts +9 -9
- package/src/components/Table/utils/decorators/classNames.ts +6 -4
- package/src/components/Table/utils/decorators/editable.tsx +2 -2
- package/src/components/Table/utils/headerUtils.test.tsx +10 -10
- package/src/components/Table/utils/headerUtils.tsx +1 -7
- package/src/components/Table/utils/utils.tsx +7 -11
- package/src/deprecated/components/Table/BodyWrapper.tsx +1 -1
- package/src/deprecated/components/Table/Table.tsx +5 -2
- package/src/deprecated/components/Table/base/body-row.tsx +3 -1
- package/src/deprecated/components/Table/base/body.tsx +8 -1
- package/src/deprecated/components/Table/base/header.tsx +1 -6
- package/src/deprecated/components/Table/examples/LegacyTableActions.tsx +3 -8
- package/src/deprecated/components/Table/examples/LegacyTableBasic.tsx +1 -1
- package/src/deprecated/components/Table/examples/LegacyTableCellWidth.tsx +1 -1
- package/src/deprecated/components/Table/examples/LegacyTableClickable.tsx +1 -1
- package/src/deprecated/components/Table/examples/LegacyTableControllingText.tsx +1 -8
- package/src/deprecated/components/Table/examples/LegacyTableExpandable.tsx +4 -4
- package/src/deprecated/components/Table/examples/LegacyTableFavoritable.tsx +6 -6
- package/src/deprecated/components/Table/examples/LegacyTableSelectableRadio.tsx +1 -1
- package/src/deprecated/components/Table/examples/LegacyTableSortable.tsx +1 -1
- package/src/deprecated/components/Table/examples/LegacyTableStriped.tsx +1 -1
- package/src/deprecated/components/Table/examples/LegacyTableStripedCustomTr.tsx +1 -1
- package/src/deprecated/components/Table/examples/LegacyTableStripedExpandable.tsx +4 -4
- package/src/deprecated/components/Table/examples/LegacyTableTree.tsx +9 -9
- package/src/docs/demos/Table.md +2 -2
- package/src/test-helpers/MockedTableChanges.js +20 -18
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patternfly/react-table",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.1-prerelease.1",
|
|
4
4
|
"description": "This library provides a set of React table components for use with the PatternFly 4",
|
|
5
5
|
"main": "dist/js/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -15,8 +15,7 @@
|
|
|
15
15
|
"patternfly:src": "src/",
|
|
16
16
|
"sideEffects": false,
|
|
17
17
|
"publishConfig": {
|
|
18
|
-
"access": "public"
|
|
19
|
-
"tag": "alpha"
|
|
18
|
+
"access": "public"
|
|
20
19
|
},
|
|
21
20
|
"repository": {
|
|
22
21
|
"type": "git",
|
|
@@ -40,10 +39,10 @@
|
|
|
40
39
|
"subpaths": "node ../../scripts/exportSubpaths.js --config subpaths.config.json"
|
|
41
40
|
},
|
|
42
41
|
"dependencies": {
|
|
43
|
-
"@patternfly/react-core": "^5.1.
|
|
44
|
-
"@patternfly/react-icons": "^5.1.
|
|
45
|
-
"@patternfly/react-styles": "^5.1.
|
|
46
|
-
"@patternfly/react-tokens": "^5.1.
|
|
42
|
+
"@patternfly/react-core": "^5.1.1-prerelease.1",
|
|
43
|
+
"@patternfly/react-icons": "^5.1.1-prerelease.1",
|
|
44
|
+
"@patternfly/react-styles": "^5.1.1-prerelease.1",
|
|
45
|
+
"@patternfly/react-tokens": "^5.1.1-prerelease.1",
|
|
47
46
|
"lodash": "^4.17.19",
|
|
48
47
|
"tslib": "^2.5.0"
|
|
49
48
|
},
|
|
@@ -55,5 +54,5 @@
|
|
|
55
54
|
"react": "^17 || ^18",
|
|
56
55
|
"react-dom": "^17 || ^18"
|
|
57
56
|
},
|
|
58
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "1e1305e5f7450e087ff8d1690d2be28b00dac0a1"
|
|
59
58
|
}
|
|
@@ -74,7 +74,9 @@ const ActionsColumnBase: React.FunctionComponent<ActionsColumnProps> = ({
|
|
|
74
74
|
.map(({ title, itemKey, onClick, isOutsideDropdown, ...props }, key) =>
|
|
75
75
|
typeof title === 'string' ? (
|
|
76
76
|
<Button
|
|
77
|
-
onClick={(event: MouseEvent | React.MouseEvent<any, MouseEvent> | React.KeyboardEvent<Element>) =>
|
|
77
|
+
onClick={(event: MouseEvent | React.MouseEvent<any, MouseEvent> | React.KeyboardEvent<Element>) =>
|
|
78
|
+
onActionClick(event, onClick)
|
|
79
|
+
}
|
|
78
80
|
{...(props as any)}
|
|
79
81
|
isDisabled={isDisabled}
|
|
80
82
|
key={itemKey || `outside_dropdown_${key}`}
|
|
@@ -33,18 +33,18 @@ export const EditColumn: React.FunctionComponent<EditColumnProps> = ({
|
|
|
33
33
|
<React.Fragment>
|
|
34
34
|
<div className={css(inlineStyles.inlineEditGroup, inlineStyles.modifiers.iconGroup, 'pf-m-action-group')}>
|
|
35
35
|
<div className={css(inlineStyles.inlineEditAction)}>
|
|
36
|
-
<Button aria-label={saveAriaLabel} {...props} onClick={e => onClick(e, 'save')} variant="plain">
|
|
36
|
+
<Button aria-label={saveAriaLabel} {...props} onClick={(e) => onClick(e, 'save')} variant="plain">
|
|
37
37
|
<CheckIcon />
|
|
38
38
|
</Button>
|
|
39
39
|
</div>
|
|
40
40
|
<div className={css(inlineStyles.inlineEditAction)}>
|
|
41
|
-
<Button aria-label={cancelAriaLabel} {...props} onClick={e => onClick(e, 'cancel')} variant="plain">
|
|
41
|
+
<Button aria-label={cancelAriaLabel} {...props} onClick={(e) => onClick(e, 'cancel')} variant="plain">
|
|
42
42
|
<TimesIcon />
|
|
43
43
|
</Button>
|
|
44
44
|
</div>
|
|
45
45
|
</div>
|
|
46
46
|
<div className={css(inlineStyles.inlineEditAction, inlineStyles.modifiers.enableEditable)}>
|
|
47
|
-
<Button aria-label={editAriaLabel} {...props} onClick={e => onClick(e, 'edit')} variant="plain">
|
|
47
|
+
<Button aria-label={editAriaLabel} {...props} onClick={(e) => onClick(e, 'edit')} variant="plain">
|
|
48
48
|
<PencilAltIcon />
|
|
49
49
|
</Button>
|
|
50
50
|
</div>
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { css } from '@patternfly/react-styles';
|
|
3
|
-
import {
|
|
4
|
-
Select,
|
|
5
|
-
SelectOptionObject
|
|
6
|
-
} from '@patternfly/react-core/dist/esm/deprecated/components/Select';
|
|
3
|
+
import { Select, SelectOptionObject } from '@patternfly/react-core/dist/esm/deprecated/components/Select';
|
|
7
4
|
import inlineStyles from '@patternfly/react-styles/css/components/InlineEdit/inline-edit';
|
|
8
5
|
import formStyles from '@patternfly/react-styles/css/components/Form/form';
|
|
9
6
|
import { EditableSelectInputProps } from './base/types';
|
|
@@ -26,7 +26,7 @@ export interface RowWrapperProps extends OUIAProps {
|
|
|
26
26
|
ouiaId?: number | string;
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
class RowWrapper extends React.Component<RowWrapperProps> {
|
|
30
30
|
static displayName = 'RowWrapper';
|
|
31
31
|
static defaultProps = {
|
|
32
32
|
className: '' as string,
|
|
@@ -79,13 +79,13 @@ export class RowWrapper extends React.Component<RowWrapperProps> {
|
|
|
79
79
|
|
|
80
80
|
handleScroll = (event: Event): void => {
|
|
81
81
|
if (!this._unmounted) {
|
|
82
|
-
this.props.onScroll(
|
|
82
|
+
this.props.onScroll(event as unknown as React.UIEvent<Element>);
|
|
83
83
|
}
|
|
84
84
|
};
|
|
85
85
|
|
|
86
86
|
handleResize = (event: Event) => {
|
|
87
87
|
if (!this._unmounted) {
|
|
88
|
-
this.props.onResize(
|
|
88
|
+
this.props.onResize(event as unknown as React.UIEvent<Element>);
|
|
89
89
|
}
|
|
90
90
|
};
|
|
91
91
|
|
|
@@ -117,3 +117,5 @@ export class RowWrapper extends React.Component<RowWrapperProps> {
|
|
|
117
117
|
);
|
|
118
118
|
}
|
|
119
119
|
}
|
|
120
|
+
|
|
121
|
+
export { RowWrapper };
|
|
@@ -57,6 +57,8 @@ export interface TableProps extends React.HTMLProps<HTMLTableElement>, OUIAProps
|
|
|
57
57
|
isStriped?: boolean;
|
|
58
58
|
/** Flag indicating this table contains expandable rows to maintain proper striping */
|
|
59
59
|
isExpandable?: boolean;
|
|
60
|
+
/** Flag indicating this table's rows will not have the inset typically reserved for expanding/collapsing rows in a tree table. Intended for use on tree tables with no visible rows with children. */
|
|
61
|
+
hasNoInset?: boolean;
|
|
60
62
|
/** Collection of column spans for nested headers. Deprecated: see https://github.com/patternfly/patternfly/issues/4584 */
|
|
61
63
|
nestedHeaderColumnSpans?: number[];
|
|
62
64
|
/** Visible text to add alongside the hidden a11y caption for tables with selectable rows. */
|
|
@@ -91,6 +93,7 @@ const TableBase: React.FunctionComponent<TableProps> = ({
|
|
|
91
93
|
isNested = false,
|
|
92
94
|
isStriped = false,
|
|
93
95
|
isExpandable = false,
|
|
96
|
+
hasNoInset = false,
|
|
94
97
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
95
98
|
nestedHeaderColumnSpans,
|
|
96
99
|
selectableRowCaptionText,
|
|
@@ -164,7 +167,7 @@ const TableBase: React.FunctionComponent<TableProps> = ({
|
|
|
164
167
|
const activeElement = document.activeElement;
|
|
165
168
|
const key = event.key;
|
|
166
169
|
const rows = (Array.from(tableRef.current.querySelectorAll('tbody tr')) as Element[]).filter(
|
|
167
|
-
el => !el.classList.contains('pf-m-disabled') && !(el as HTMLElement).hidden
|
|
170
|
+
(el) => !el.classList.contains('pf-m-disabled') && !(el as HTMLElement).hidden
|
|
168
171
|
);
|
|
169
172
|
if (key === 'Space' || key === 'Enter') {
|
|
170
173
|
(activeElement as HTMLElement).click();
|
|
@@ -206,6 +209,7 @@ const TableBase: React.FunctionComponent<TableProps> = ({
|
|
|
206
209
|
isTreeTable && stylesTreeView.modifiers.treeView,
|
|
207
210
|
isStriped && styles.modifiers.striped,
|
|
208
211
|
isExpandable && styles.modifiers.expandable,
|
|
212
|
+
hasNoInset && stylesTreeView.modifiers.noInset,
|
|
209
213
|
isNested && 'pf-m-nested'
|
|
210
214
|
)}
|
|
211
215
|
ref={tableRef}
|
|
@@ -18,7 +18,7 @@ export function evaluateTransforms(
|
|
|
18
18
|
extraParameters: ExtraParamsType = {}
|
|
19
19
|
) {
|
|
20
20
|
if (process.env.NODE_ENV !== 'production') {
|
|
21
|
-
if (!transforms.every(f => typeof f === 'function')) {
|
|
21
|
+
if (!transforms.every((f) => typeof f === 'function')) {
|
|
22
22
|
throw new Error("All transforms weren't functions!");
|
|
23
23
|
}
|
|
24
24
|
}
|
|
@@ -27,5 +27,5 @@ export function evaluateTransforms(
|
|
|
27
27
|
return {};
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
return mergeProps(...transforms.map(transform => transform(value, extraParameters)));
|
|
30
|
+
return mergeProps(...transforms.map((transform) => transform(value, extraParameters)));
|
|
31
31
|
}
|
|
@@ -20,7 +20,7 @@ export const ProviderContext = React.createContext({
|
|
|
20
20
|
renderers: null as RenderersTypes['renderers']
|
|
21
21
|
});
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
class Provider extends React.Component<ProviderProps, {}> {
|
|
24
24
|
static displayName = 'Provider';
|
|
25
25
|
static defaultProps = {
|
|
26
26
|
renderers: TableDefaults.renderers
|
|
@@ -55,3 +55,5 @@ export class Provider extends React.Component<ProviderProps, {}> {
|
|
|
55
55
|
);
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
+
|
|
59
|
+
export { Provider };
|
|
@@ -9,10 +9,7 @@ import * as React from 'react';
|
|
|
9
9
|
import { TooltipProps } from '@patternfly/react-core/dist/esm/components/Tooltip';
|
|
10
10
|
import { PopoverProps } from '@patternfly/react-core/dist/esm/components/Popover';
|
|
11
11
|
import { DropdownPosition, DropdownDirection } from '@patternfly/react-core/dist/esm/deprecated/components/Dropdown';
|
|
12
|
-
import {
|
|
13
|
-
SelectOptionObject,
|
|
14
|
-
SelectProps
|
|
15
|
-
} from '@patternfly/react-core/dist/esm/deprecated/components/Select';
|
|
12
|
+
import { SelectOptionObject, SelectProps } from '@patternfly/react-core/dist/esm/deprecated/components/Select';
|
|
16
13
|
import { Table } from '../Table';
|
|
17
14
|
import { Thead } from '../Thead';
|
|
18
15
|
import { Tbody } from '../Tbody';
|
|
@@ -297,6 +297,13 @@ the voice over technologies will recognize the flat table structure as a tree.
|
|
|
297
297
|
```ts file="TableTree.tsx"
|
|
298
298
|
```
|
|
299
299
|
|
|
300
|
+
### Flat tree table with no inset
|
|
301
|
+
|
|
302
|
+
To remove the inset used to leave space for the expand/collapse toggle in a flat tree table, use the `hasNoInset` prop on the `Table` component.
|
|
303
|
+
|
|
304
|
+
```ts file="TableTreeNoInset.tsx"
|
|
305
|
+
```
|
|
306
|
+
|
|
300
307
|
### Draggable row table
|
|
301
308
|
|
|
302
309
|
To make a row draggable:
|
|
@@ -121,7 +121,7 @@ export const TableActions: React.FunctionComponent = () => {
|
|
|
121
121
|
</Tr>
|
|
122
122
|
</Thead>
|
|
123
123
|
<Tbody>
|
|
124
|
-
{repositories.map(repo => {
|
|
124
|
+
{repositories.map((repo) => {
|
|
125
125
|
// Arbitrary logic to determine which rows get which actions in this example
|
|
126
126
|
let rowActions: IAction[] | null = defaultActions(repo);
|
|
127
127
|
if (repo.name === 'a') {
|
|
@@ -73,7 +73,7 @@ export const TableBasic: React.FunctionComponent = () => {
|
|
|
73
73
|
</Tr>
|
|
74
74
|
</Thead>
|
|
75
75
|
<Tbody>
|
|
76
|
-
{repositories.map(repo => (
|
|
76
|
+
{repositories.map((repo) => (
|
|
77
77
|
<Tr key={repo.name}>
|
|
78
78
|
<Td dataLabel={columnNames.name}>{repo.name}</Td>
|
|
79
79
|
<Td dataLabel={columnNames.branches}>{repo.branches}</Td>
|
|
@@ -39,7 +39,7 @@ export const TableCellWidth: React.FunctionComponent = () => {
|
|
|
39
39
|
</Tr>
|
|
40
40
|
</Thead>
|
|
41
41
|
<Tbody>
|
|
42
|
-
{repositories.map(repo => (
|
|
42
|
+
{repositories.map((repo) => (
|
|
43
43
|
<Tr key={repo.name}>
|
|
44
44
|
<Td dataLabel={columnNames.name}>{repo.name}</Td>
|
|
45
45
|
<Td dataLabel={columnNames.branches}>{repo.branches}</Td>
|
|
@@ -11,7 +11,7 @@ export const TableDraggable: React.FunctionComponent = () => {
|
|
|
11
11
|
|
|
12
12
|
const bodyRef = React.useRef<HTMLTableSectionElement>();
|
|
13
13
|
|
|
14
|
-
const onDragStart: TrProps['onDragStart'] = evt => {
|
|
14
|
+
const onDragStart: TrProps['onDragStart'] = (evt) => {
|
|
15
15
|
evt.dataTransfer.effectAllowed = 'move';
|
|
16
16
|
evt.dataTransfer.setData('text/plain', evt.currentTarget.id);
|
|
17
17
|
const draggedItemId = evt.currentTarget.id;
|
|
@@ -37,20 +37,20 @@ export const TableDraggable: React.FunctionComponent = () => {
|
|
|
37
37
|
const move = (itemOrder: string[]) => {
|
|
38
38
|
const ulNode = bodyRef.current;
|
|
39
39
|
const nodes = Array.from(ulNode.children);
|
|
40
|
-
if (nodes.map(node => node.id).every((id, i) => id === itemOrder[i])) {
|
|
40
|
+
if (nodes.map((node) => node.id).every((id, i) => id === itemOrder[i])) {
|
|
41
41
|
return;
|
|
42
42
|
}
|
|
43
43
|
while (ulNode.firstChild) {
|
|
44
44
|
ulNode.removeChild(ulNode.lastChild);
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
itemOrder.forEach(id => {
|
|
48
|
-
ulNode.appendChild(nodes.find(n => n.id === id));
|
|
47
|
+
itemOrder.forEach((id) => {
|
|
48
|
+
ulNode.appendChild(nodes.find((n) => n.id === id));
|
|
49
49
|
});
|
|
50
50
|
};
|
|
51
51
|
|
|
52
52
|
const onDragCancel = () => {
|
|
53
|
-
Array.from(bodyRef.current.children).forEach(el => {
|
|
53
|
+
Array.from(bodyRef.current.children).forEach((el) => {
|
|
54
54
|
el.classList.remove(styles.modifiers.ghostRow);
|
|
55
55
|
el.setAttribute('aria-pressed', 'false');
|
|
56
56
|
});
|
|
@@ -59,7 +59,7 @@ export const TableDraggable: React.FunctionComponent = () => {
|
|
|
59
59
|
setIsDragging(false);
|
|
60
60
|
};
|
|
61
61
|
|
|
62
|
-
const onDragLeave: TbodyProps['onDragLeave'] = evt => {
|
|
62
|
+
const onDragLeave: TbodyProps['onDragLeave'] = (evt) => {
|
|
63
63
|
if (!isValidDrop(evt)) {
|
|
64
64
|
move(itemOrder);
|
|
65
65
|
setDraggingToItemIndex(null);
|
|
@@ -76,7 +76,7 @@ export const TableDraggable: React.FunctionComponent = () => {
|
|
|
76
76
|
);
|
|
77
77
|
};
|
|
78
78
|
|
|
79
|
-
const onDrop: TrProps['onDrop'] = evt => {
|
|
79
|
+
const onDrop: TrProps['onDrop'] = (evt) => {
|
|
80
80
|
if (isValidDrop(evt)) {
|
|
81
81
|
setItemOrder(tempItemOrder);
|
|
82
82
|
} else {
|
|
@@ -84,7 +84,7 @@ export const TableDraggable: React.FunctionComponent = () => {
|
|
|
84
84
|
}
|
|
85
85
|
};
|
|
86
86
|
|
|
87
|
-
const onDragOver: TbodyProps['onDragOver'] = evt => {
|
|
87
|
+
const onDragOver: TbodyProps['onDragOver'] = (evt) => {
|
|
88
88
|
evt.preventDefault();
|
|
89
89
|
|
|
90
90
|
const curListItem = (evt.target as HTMLTableSectionElement).closest('tr');
|
|
@@ -92,7 +92,7 @@ export const TableDraggable: React.FunctionComponent = () => {
|
|
|
92
92
|
return null;
|
|
93
93
|
} else {
|
|
94
94
|
const dragId = curListItem.id;
|
|
95
|
-
const newDraggingToItemIndex = Array.from(bodyRef.current.children).findIndex(item => item.id === dragId);
|
|
95
|
+
const newDraggingToItemIndex = Array.from(bodyRef.current.children).findIndex((item) => item.id === dragId);
|
|
96
96
|
if (newDraggingToItemIndex !== draggingToItemIndex) {
|
|
97
97
|
const tempItemOrder = moveItem([...itemOrder], draggedItemId, newDraggingToItemIndex);
|
|
98
98
|
move(tempItemOrder);
|
|
@@ -102,7 +102,7 @@ export const TableDraggable: React.FunctionComponent = () => {
|
|
|
102
102
|
}
|
|
103
103
|
};
|
|
104
104
|
|
|
105
|
-
const onDragEnd: TrProps['onDragEnd'] = evt => {
|
|
105
|
+
const onDragEnd: TrProps['onDragEnd'] = (evt) => {
|
|
106
106
|
const target = evt.target as HTMLTableRowElement;
|
|
107
107
|
target.classList.remove(styles.modifiers.ghostRow);
|
|
108
108
|
target.setAttribute('aria-pressed', 'false');
|
|
@@ -96,11 +96,11 @@ export const TableExpandable: React.FunctionComponent = () => {
|
|
|
96
96
|
// In this example, expanded rows are tracked by the repo names from each row. This could be any unique identifier.
|
|
97
97
|
// This is to prevent state from being based on row order index in case we later add sorting.
|
|
98
98
|
// Note that this behavior is very similar to selection state.
|
|
99
|
-
const initialExpandedRepoNames = repositories.filter(repo => !!repo.details).map(repo => repo.name); // Default to all expanded
|
|
99
|
+
const initialExpandedRepoNames = repositories.filter((repo) => !!repo.details).map((repo) => repo.name); // Default to all expanded
|
|
100
100
|
const [expandedRepoNames, setExpandedRepoNames] = React.useState<string[]>(initialExpandedRepoNames);
|
|
101
101
|
const setRepoExpanded = (repo: Repository, isExpanding = true) =>
|
|
102
|
-
setExpandedRepoNames(prevExpanded => {
|
|
103
|
-
const otherExpandedRepoNames = prevExpanded.filter(r => r !== repo.name);
|
|
102
|
+
setExpandedRepoNames((prevExpanded) => {
|
|
103
|
+
const otherExpandedRepoNames = prevExpanded.filter((r) => r !== repo.name);
|
|
104
104
|
return isExpanding ? [...otherExpandedRepoNames, repo.name] : otherExpandedRepoNames;
|
|
105
105
|
});
|
|
106
106
|
const isRepoExpanded = (repo: Repository) => expandedRepoNames.includes(repo.name);
|
|
@@ -36,8 +36,8 @@ export const TableFavoritable: React.FunctionComponent = () => {
|
|
|
36
36
|
// Favorite state is similar to selection state, see Selectable with checkbox.
|
|
37
37
|
const [favoriteRepoNames, setFavoriteRepoNames] = React.useState<string[]>([]);
|
|
38
38
|
const setRepoFavorited = (repo: Repository, isFavoriting = true) =>
|
|
39
|
-
setFavoriteRepoNames(prevFavorites => {
|
|
40
|
-
const otherFavorites = prevFavorites.filter(r => r !== repo.name);
|
|
39
|
+
setFavoriteRepoNames((prevFavorites) => {
|
|
40
|
+
const otherFavorites = prevFavorites.filter((r) => r !== repo.name);
|
|
41
41
|
return isFavoriting ? [...otherFavorites, repo.name] : otherFavorites;
|
|
42
42
|
});
|
|
43
43
|
const isRepoFavorited = (repo: Repository) => favoriteRepoNames.includes(repo.name);
|
|
@@ -47,10 +47,10 @@ export const TableFavoritable: React.FunctionComponent = () => {
|
|
|
47
47
|
// For more complex sorting, see Sortable.
|
|
48
48
|
// Note: We also memoize the sortable values with useCallback to prevent rows jumping around when you change
|
|
49
49
|
// the favorites while sorting on that column. Only updating the sort state will reorder the rows.
|
|
50
|
-
const getSortableRowValues = React.useCallback(
|
|
51
|
-
|
|
52
|
-
activeSortDirection
|
|
53
|
-
|
|
50
|
+
const getSortableRowValues = React.useCallback(
|
|
51
|
+
(repo: Repository): boolean[] => [isRepoFavorited(repo)],
|
|
52
|
+
[activeSortIndex, activeSortDirection]
|
|
53
|
+
);
|
|
54
54
|
|
|
55
55
|
// Note that we perform the sort as part of the component's render logic and not in onSort.
|
|
56
56
|
// We shouldn't store the list of data in state because we don't want to have to sync that with props.
|
|
@@ -114,7 +114,7 @@ export const TableMultipleStickyColumns: React.FunctionComponent = () => {
|
|
|
114
114
|
</Tr>
|
|
115
115
|
</Thead>
|
|
116
116
|
<Tbody>
|
|
117
|
-
{sortedFacts.map(fact => (
|
|
117
|
+
{sortedFacts.map((fact) => (
|
|
118
118
|
<Tr key={fact.name}>
|
|
119
119
|
<Th isStickyColumn modifier="truncate">
|
|
120
120
|
{fact.name}
|
|
@@ -1,14 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import {
|
|
3
|
-
Table,
|
|
4
|
-
Thead,
|
|
5
|
-
Tr,
|
|
6
|
-
Th,
|
|
7
|
-
Tbody,
|
|
8
|
-
Td,
|
|
9
|
-
InnerScrollContainer,
|
|
10
|
-
ExpandableRowContent
|
|
11
|
-
} from '@patternfly/react-table';
|
|
2
|
+
import { Table, Thead, Tr, Th, Tbody, Td, InnerScrollContainer, ExpandableRowContent } from '@patternfly/react-table';
|
|
12
3
|
import { Button } from '@patternfly/react-core';
|
|
13
4
|
|
|
14
5
|
interface Team {
|
|
@@ -62,8 +53,8 @@ export const TableNestedExpandable: React.FunctionComponent = () => {
|
|
|
62
53
|
// Note that this behavior is very similar to selection state.
|
|
63
54
|
const [expandedTeamNames, setExpandedTeamNames] = React.useState<string[]>([]);
|
|
64
55
|
const setTeamExpanded = (team: Team, isExpanding = true) =>
|
|
65
|
-
setExpandedTeamNames(prevExpanded => {
|
|
66
|
-
const otherExpandedTeamNames = prevExpanded.filter(t => t !== team.name);
|
|
56
|
+
setExpandedTeamNames((prevExpanded) => {
|
|
57
|
+
const otherExpandedTeamNames = prevExpanded.filter((t) => t !== team.name);
|
|
67
58
|
return isExpanding ? [...otherExpandedTeamNames, team.name] : otherExpandedTeamNames;
|
|
68
59
|
});
|
|
69
60
|
const isTeamExpanded = (team: Team) => expandedTeamNames.includes(team.name);
|
|
@@ -1,16 +1,6 @@
|
|
|
1
1
|
/* eslint-disable no-console */
|
|
2
2
|
import React from 'react';
|
|
3
|
-
import {
|
|
4
|
-
Table,
|
|
5
|
-
Thead,
|
|
6
|
-
Tr,
|
|
7
|
-
Th,
|
|
8
|
-
Tbody,
|
|
9
|
-
Td,
|
|
10
|
-
ExpandableRowContent,
|
|
11
|
-
ActionsColumn,
|
|
12
|
-
IAction
|
|
13
|
-
} from '@patternfly/react-table';
|
|
3
|
+
import { Table, Thead, Tr, Th, Tbody, Td, ExpandableRowContent, ActionsColumn, IAction } from '@patternfly/react-table';
|
|
14
4
|
|
|
15
5
|
interface Repository {
|
|
16
6
|
name: string;
|
|
@@ -57,7 +47,7 @@ const NestedReposTable: React.FunctionComponent = () => {
|
|
|
57
47
|
</Tr>
|
|
58
48
|
</Thead>
|
|
59
49
|
<Tbody>
|
|
60
|
-
{prs.map(repo => (
|
|
50
|
+
{prs.map((repo) => (
|
|
61
51
|
<Tr key={repo.name}>
|
|
62
52
|
<Td dataLabel={columnNames.name}>{repo.name}</Td>
|
|
63
53
|
<Td dataLabel={columnNames.branches}>{repo.branches}</Td>
|
|
@@ -111,11 +101,11 @@ export const TableExpandable: React.FunctionComponent = () => {
|
|
|
111
101
|
// In this example, expanded rows are tracked by the repo names from each row. This could be any unique identifier.
|
|
112
102
|
// This is to prevent state from being based on row order index in case we later add sorting.
|
|
113
103
|
// Note that this behavior is very similar to selection state.
|
|
114
|
-
const initialExpandedRepoNames = repositories.filter(repo => !!repo.nestedComponent).map(repo => repo.name); // Default to all expanded
|
|
104
|
+
const initialExpandedRepoNames = repositories.filter((repo) => !!repo.nestedComponent).map((repo) => repo.name); // Default to all expanded
|
|
115
105
|
const [expandedRepoNames, setExpandedRepoNames] = React.useState<string[]>(initialExpandedRepoNames);
|
|
116
106
|
const setRepoExpanded = (repo: Repository, isExpanding = true) =>
|
|
117
|
-
setExpandedRepoNames(prevExpanded => {
|
|
118
|
-
const otherExpandedRepoNames = prevExpanded.filter(r => r !== repo.name);
|
|
107
|
+
setExpandedRepoNames((prevExpanded) => {
|
|
108
|
+
const otherExpandedRepoNames = prevExpanded.filter((r) => r !== repo.name);
|
|
119
109
|
return isExpanding ? [...otherExpandedRepoNames, repo.name] : otherExpandedRepoNames;
|
|
120
110
|
});
|
|
121
111
|
const isRepoExpanded = (repo: Repository) => expandedRepoNames.includes(repo.name);
|
|
@@ -110,7 +110,7 @@ export const ComposableTableRightStickyColumn: React.FunctionComponent = () => {
|
|
|
110
110
|
</Tr>
|
|
111
111
|
</Thead>
|
|
112
112
|
<Tbody>
|
|
113
|
-
{sortedFacts.map(fact => (
|
|
113
|
+
{sortedFacts.map((fact) => (
|
|
114
114
|
<Tr key={fact.name}>
|
|
115
115
|
<Th modifier="nowrap">{fact.name}</Th>
|
|
116
116
|
<Td modifier="nowrap" dataLabel={columnNames.state}>
|
|
@@ -35,12 +35,12 @@ export const TableSelectable: React.FunctionComponent = () => {
|
|
|
35
35
|
// This is to prevent state from being based on row order index in case we later add sorting.
|
|
36
36
|
const [selectedRepoNames, setSelectedRepoNames] = React.useState<string[]>([]);
|
|
37
37
|
const setRepoSelected = (repo: Repository, isSelecting = true) =>
|
|
38
|
-
setSelectedRepoNames(prevSelected => {
|
|
39
|
-
const otherSelectedRepoNames = prevSelected.filter(r => r !== repo.name);
|
|
38
|
+
setSelectedRepoNames((prevSelected) => {
|
|
39
|
+
const otherSelectedRepoNames = prevSelected.filter((r) => r !== repo.name);
|
|
40
40
|
return isSelecting && isRepoSelectable(repo) ? [...otherSelectedRepoNames, repo.name] : otherSelectedRepoNames;
|
|
41
41
|
});
|
|
42
42
|
const selectAllRepos = (isSelecting = true) =>
|
|
43
|
-
setSelectedRepoNames(isSelecting ? selectableRepos.map(r => r.name) : []);
|
|
43
|
+
setSelectedRepoNames(isSelecting ? selectableRepos.map((r) => r.name) : []);
|
|
44
44
|
const areAllReposSelected = selectedRepoNames.length === selectableRepos.length;
|
|
45
45
|
const isRepoSelected = (repo: Repository) => selectedRepoNames.includes(repo.name);
|
|
46
46
|
|
|
@@ -56,7 +56,7 @@ export const TableSelectable: React.FunctionComponent = () => {
|
|
|
56
56
|
numberSelected > 0
|
|
57
57
|
? Array.from(new Array(numberSelected + 1), (_x, i) => i + recentSelectedRowIndex)
|
|
58
58
|
: Array.from(new Array(Math.abs(numberSelected) + 1), (_x, i) => i + rowIndex);
|
|
59
|
-
intermediateIndexes.forEach(index => setRepoSelected(repositories[index], isSelecting));
|
|
59
|
+
intermediateIndexes.forEach((index) => setRepoSelected(repositories[index], isSelecting));
|
|
60
60
|
} else {
|
|
61
61
|
setRepoSelected(repo, isSelecting);
|
|
62
62
|
}
|
|
@@ -106,7 +106,7 @@ export const TableStickyColumn: React.FunctionComponent = () => {
|
|
|
106
106
|
</Tr>
|
|
107
107
|
</Thead>
|
|
108
108
|
<Tbody>
|
|
109
|
-
{sortedFacts.map(fact => (
|
|
109
|
+
{sortedFacts.map((fact) => (
|
|
110
110
|
<Tr key={fact.name}>
|
|
111
111
|
<Th isStickyColumn hasRightBorder modifier="truncate">
|
|
112
112
|
{fact.name}
|
|
@@ -126,7 +126,7 @@ export const TableStickyColumnsAndHeader: React.FunctionComponent = () => {
|
|
|
126
126
|
</Tr>
|
|
127
127
|
</Thead>
|
|
128
128
|
<Tbody>
|
|
129
|
-
{sortedFacts.map(fact => (
|
|
129
|
+
{sortedFacts.map((fact) => (
|
|
130
130
|
<Tr key={fact.name}>
|
|
131
131
|
<Th isStickyColumn modifier="truncate">
|
|
132
132
|
{fact.name}
|
|
@@ -39,7 +39,7 @@ export const TableStriped: React.FunctionComponent = () => {
|
|
|
39
39
|
</Tr>
|
|
40
40
|
</Thead>
|
|
41
41
|
<Tbody>
|
|
42
|
-
{repositories.map(repo => (
|
|
42
|
+
{repositories.map((repo) => (
|
|
43
43
|
<Tr key={repo.name}>
|
|
44
44
|
<Td dataLabel={columnNames.name}>{repo.name}</Td>
|
|
45
45
|
<Td dataLabel={columnNames.branches}>{repo.branches}</Td>
|
|
@@ -91,11 +91,11 @@ export const TableStripedExpandable: React.FunctionComponent = () => {
|
|
|
91
91
|
// In this example, expanded rows are tracked by the repo names from each row. This could be any unique identifier.
|
|
92
92
|
// This is to prevent state from being based on row order index in case we later add sorting.
|
|
93
93
|
// Note that this behavior is very similar to selection state.
|
|
94
|
-
const initialExpandedRepoNames = repositories.filter(repo => !!repo.details).map(repo => repo.name); // Default to all expanded
|
|
94
|
+
const initialExpandedRepoNames = repositories.filter((repo) => !!repo.details).map((repo) => repo.name); // Default to all expanded
|
|
95
95
|
const [expandedRepoNames, setExpandedRepoNames] = React.useState<string[]>(initialExpandedRepoNames);
|
|
96
96
|
const setRepoExpanded = (repo: Repository, isExpanding = true) =>
|
|
97
|
-
setExpandedRepoNames(prevExpanded => {
|
|
98
|
-
const otherExpandedRepoNames = prevExpanded.filter(r => r !== repo.name);
|
|
97
|
+
setExpandedRepoNames((prevExpanded) => {
|
|
98
|
+
const otherExpandedRepoNames = prevExpanded.filter((r) => r !== repo.name);
|
|
99
99
|
return isExpanding ? [...otherExpandedRepoNames, repo.name] : otherExpandedRepoNames;
|
|
100
100
|
});
|
|
101
101
|
const isRepoExpanded = (repo: Repository) => expandedRepoNames.includes(repo.name);
|
|
@@ -112,12 +112,7 @@ export const TableStripedExpandable: React.FunctionComponent = () => {
|
|
|
112
112
|
id="toggle-compact-striped"
|
|
113
113
|
name="toggle-compact-striped"
|
|
114
114
|
/>
|
|
115
|
-
<Table
|
|
116
|
-
aria-label="Expandable table"
|
|
117
|
-
variant={isExampleCompact ? 'compact' : undefined}
|
|
118
|
-
isStriped
|
|
119
|
-
isExpandable
|
|
120
|
-
>
|
|
115
|
+
<Table aria-label="Expandable table" variant={isExampleCompact ? 'compact' : undefined} isStriped isExpandable>
|
|
121
116
|
<Thead>
|
|
122
117
|
<Tr>
|
|
123
118
|
<Th />
|
|
@@ -74,7 +74,7 @@ export const TableStripedMultipleTbody: React.FunctionComponent = () => {
|
|
|
74
74
|
</Tr>
|
|
75
75
|
</Thead>
|
|
76
76
|
<Tbody isOddStriped>
|
|
77
|
-
{repositories1.map(repo => (
|
|
77
|
+
{repositories1.map((repo) => (
|
|
78
78
|
<Tr key={repo.name}>
|
|
79
79
|
<Td dataLabel={columnNames.name}>
|
|
80
80
|
{repo.description ? (
|
|
@@ -95,7 +95,7 @@ export const TableStripedMultipleTbody: React.FunctionComponent = () => {
|
|
|
95
95
|
))}
|
|
96
96
|
</Tbody>
|
|
97
97
|
<Tbody isEvenStriped>
|
|
98
|
-
{repositories2.map(repo => (
|
|
98
|
+
{repositories2.map((repo) => (
|
|
99
99
|
<Tr key={repo.name}>
|
|
100
100
|
<Td dataLabel={columnNames.name}>
|
|
101
101
|
{repo.description ? (
|
|
@@ -93,7 +93,7 @@ export const TableTree: React.FunctionComponent = () => {
|
|
|
93
93
|
return [node];
|
|
94
94
|
} else {
|
|
95
95
|
let children: RepositoriesTreeNode[] = [];
|
|
96
|
-
node.children.forEach(child => {
|
|
96
|
+
node.children.forEach((child) => {
|
|
97
97
|
children = [...children, ...getDescendants(child)];
|
|
98
98
|
});
|
|
99
99
|
return children;
|
|
@@ -101,9 +101,9 @@ export const TableTree: React.FunctionComponent = () => {
|
|
|
101
101
|
};
|
|
102
102
|
|
|
103
103
|
const areAllDescendantsSelected = (node: RepositoriesTreeNode) =>
|
|
104
|
-
getDescendants(node).every(n => selectedNodeNames.includes(n.name));
|
|
104
|
+
getDescendants(node).every((n) => selectedNodeNames.includes(n.name));
|
|
105
105
|
const areSomeDescendantsSelected = (node: RepositoriesTreeNode) =>
|
|
106
|
-
getDescendants(node).some(n => selectedNodeNames.includes(n.name));
|
|
106
|
+
getDescendants(node).some((n) => selectedNodeNames.includes(n.name));
|
|
107
107
|
|
|
108
108
|
const isNodeChecked = (node: RepositoriesTreeNode) => {
|
|
109
109
|
if (areAllDescendantsSelected(node)) {
|
|
@@ -144,19 +144,19 @@ export const TableTree: React.FunctionComponent = () => {
|
|
|
144
144
|
|
|
145
145
|
const treeRow: TdProps['treeRow'] = {
|
|
146
146
|
onCollapse: () =>
|
|
147
|
-
setExpandedNodeNames(prevExpanded => {
|
|
148
|
-
const otherExpandedNodeNames = prevExpanded.filter(name => name !== node.name);
|
|
147
|
+
setExpandedNodeNames((prevExpanded) => {
|
|
148
|
+
const otherExpandedNodeNames = prevExpanded.filter((name) => name !== node.name);
|
|
149
149
|
return isExpanded ? otherExpandedNodeNames : [...otherExpandedNodeNames, node.name];
|
|
150
150
|
}),
|
|
151
151
|
onToggleRowDetails: () =>
|
|
152
|
-
setExpandedDetailsNodeNames(prevDetailsExpanded => {
|
|
153
|
-
const otherDetailsExpandedNodeNames = prevDetailsExpanded.filter(name => name !== node.name);
|
|
152
|
+
setExpandedDetailsNodeNames((prevDetailsExpanded) => {
|
|
153
|
+
const otherDetailsExpandedNodeNames = prevDetailsExpanded.filter((name) => name !== node.name);
|
|
154
154
|
return isDetailsExpanded ? otherDetailsExpandedNodeNames : [...otherDetailsExpandedNodeNames, node.name];
|
|
155
155
|
}),
|
|
156
156
|
onCheckChange: (_event, isChecking) => {
|
|
157
|
-
const nodeNamesToCheck = getDescendants(node).map(n => n.name);
|
|
158
|
-
setSelectedNodeNames(prevSelected => {
|
|
159
|
-
const otherSelectedNodeNames = prevSelected.filter(name => !nodeNamesToCheck.includes(name));
|
|
157
|
+
const nodeNamesToCheck = getDescendants(node).map((n) => n.name);
|
|
158
|
+
setSelectedNodeNames((prevSelected) => {
|
|
159
|
+
const otherSelectedNodeNames = prevSelected.filter((name) => !nodeNamesToCheck.includes(name));
|
|
160
160
|
return !isChecking ? otherSelectedNodeNames : [...otherSelectedNodeNames, ...nodeNamesToCheck];
|
|
161
161
|
});
|
|
162
162
|
},
|