@patternfly/react-core 6.0.0 → 6.1.0-prerelease.2
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 +17 -0
- package/components/package.json +1 -1
- package/deprecated/package.json +1 -1
- package/dist/dynamic/components/AboutModal/package.json +1 -1
- package/dist/dynamic/components/Accordion/package.json +1 -1
- package/dist/dynamic/components/ActionList/package.json +1 -1
- package/dist/dynamic/components/Alert/package.json +1 -1
- package/dist/dynamic/components/Avatar/package.json +1 -1
- package/dist/dynamic/components/BackToTop/package.json +1 -1
- package/dist/dynamic/components/Backdrop/package.json +1 -1
- package/dist/dynamic/components/BackgroundImage/package.json +1 -1
- package/dist/dynamic/components/Badge/package.json +1 -1
- package/dist/dynamic/components/Banner/package.json +1 -1
- package/dist/dynamic/components/Brand/package.json +1 -1
- package/dist/dynamic/components/Breadcrumb/package.json +1 -1
- package/dist/dynamic/components/Button/package.json +1 -1
- package/dist/dynamic/components/CalendarMonth/package.json +1 -1
- package/dist/dynamic/components/Card/package.json +1 -1
- package/dist/dynamic/components/Checkbox/package.json +1 -1
- package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
- package/dist/dynamic/components/CodeBlock/package.json +1 -1
- package/dist/dynamic/components/Content/package.json +1 -1
- package/dist/dynamic/components/DataList/package.json +1 -1
- package/dist/dynamic/components/DatePicker/package.json +1 -1
- package/dist/dynamic/components/DescriptionList/package.json +1 -1
- package/dist/dynamic/components/Divider/package.json +1 -1
- package/dist/dynamic/components/Drawer/package.json +1 -1
- package/dist/dynamic/components/Dropdown/package.json +1 -1
- package/dist/dynamic/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/components/EmptyState/package.json +1 -1
- package/dist/dynamic/components/ExpandableSection/package.json +1 -1
- package/dist/dynamic/components/FileUpload/package.json +1 -1
- package/dist/dynamic/components/Form/package.json +1 -1
- package/dist/dynamic/components/FormSelect/package.json +1 -1
- package/dist/dynamic/components/HelperText/package.json +1 -1
- package/dist/dynamic/components/Hint/package.json +1 -1
- package/dist/dynamic/components/Icon/package.json +1 -1
- package/dist/dynamic/components/InputGroup/package.json +1 -1
- package/dist/dynamic/components/JumpLinks/package.json +1 -1
- package/dist/dynamic/components/Label/package.json +1 -1
- package/dist/dynamic/components/List/package.json +1 -1
- package/dist/dynamic/components/LoginPage/package.json +1 -1
- package/dist/dynamic/components/Masthead/package.json +1 -1
- package/dist/dynamic/components/Menu/package.json +1 -1
- package/dist/dynamic/components/MenuToggle/package.json +1 -1
- package/dist/dynamic/components/Modal/package.json +1 -1
- package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
- package/dist/dynamic/components/Nav/package.json +1 -1
- package/dist/dynamic/components/NotificationBadge/package.json +1 -1
- package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
- package/dist/dynamic/components/NumberInput/package.json +1 -1
- package/dist/dynamic/components/OverflowMenu/package.json +1 -1
- package/dist/dynamic/components/Page/package.json +1 -1
- package/dist/dynamic/components/Pagination/package.json +1 -1
- package/dist/dynamic/components/Panel/package.json +1 -1
- package/dist/dynamic/components/Popover/package.json +1 -1
- package/dist/dynamic/components/Progress/package.json +1 -1
- package/dist/dynamic/components/ProgressStepper/package.json +1 -1
- package/dist/dynamic/components/Radio/package.json +1 -1
- package/dist/dynamic/components/SearchInput/package.json +1 -1
- package/dist/dynamic/components/Select/package.json +1 -1
- package/dist/dynamic/components/Sidebar/package.json +1 -1
- package/dist/dynamic/components/SimpleList/package.json +1 -1
- package/dist/dynamic/components/Skeleton/package.json +1 -1
- package/dist/dynamic/components/SkipToContent/package.json +1 -1
- package/dist/dynamic/components/Slider/package.json +1 -1
- package/dist/dynamic/components/Spinner/package.json +1 -1
- package/dist/dynamic/components/Switch/package.json +1 -1
- package/dist/dynamic/components/Tabs/package.json +1 -1
- package/dist/dynamic/components/TextArea/package.json +1 -1
- package/dist/dynamic/components/TextInput/package.json +1 -1
- package/dist/dynamic/components/TextInputGroup/package.json +1 -1
- package/dist/dynamic/components/TimePicker/package.json +1 -1
- package/dist/dynamic/components/Timestamp/package.json +1 -1
- package/dist/dynamic/components/Title/package.json +1 -1
- package/dist/dynamic/components/ToggleGroup/package.json +1 -1
- package/dist/dynamic/components/Toolbar/package.json +1 -1
- package/dist/dynamic/components/Tooltip/package.json +1 -1
- package/dist/dynamic/components/TreeView/package.json +1 -1
- package/dist/dynamic/components/Truncate/package.json +1 -1
- package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
- package/dist/dynamic/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
- package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
- package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
- package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
- package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
- package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
- package/dist/dynamic/deprecated/components/package.json +1 -1
- package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
- package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
- package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
- package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
- package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
- package/dist/dynamic/helpers/constants/package.json +1 -1
- package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
- package/dist/dynamic/helpers/fileUtils/package.json +1 -1
- package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
- package/dist/dynamic/helpers/package.json +1 -1
- package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
- package/dist/dynamic/helpers/typeUtils/package.json +1 -1
- package/dist/dynamic/helpers/useInterval/package.json +1 -1
- package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
- package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
- package/dist/dynamic/helpers/util/package.json +1 -1
- package/dist/dynamic/layouts/Bullseye/package.json +1 -1
- package/dist/dynamic/layouts/Flex/package.json +1 -1
- package/dist/dynamic/layouts/Gallery/package.json +1 -1
- package/dist/dynamic/layouts/Grid/package.json +1 -1
- package/dist/dynamic/layouts/Level/package.json +1 -1
- package/dist/dynamic/layouts/Split/package.json +1 -1
- package/dist/dynamic/layouts/Stack/package.json +1 -1
- package/dist/dynamic/styles/package.json +1 -1
- package/dist/esm/components/MenuToggle/MenuToggleCheckbox.d.ts +1 -1
- package/dist/esm/components/MenuToggle/MenuToggleCheckbox.d.ts.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggleCheckbox.d.ts +1 -1
- package/dist/js/components/MenuToggle/MenuToggleCheckbox.d.ts.map +1 -1
- package/dist/umd/assets/{output-DPVTymX-.css → output-BDxyv9gq.css} +3425 -3419
- package/helpers/package.json +1 -1
- package/layouts/package.json +1 -1
- package/next/package.json +1 -1
- package/package.json +6 -6
- package/src/components/DualListSelector/examples/DualListSelectorTree.tsx +33 -32
- package/src/components/MenuToggle/MenuToggleCheckbox.tsx +1 -1
package/helpers/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"6.
|
|
1
|
+
{"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"6.1.0-prerelease.1","private":true}
|
package/layouts/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"6.
|
|
1
|
+
{"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"6.1.0-prerelease.1","private":true}
|
package/next/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"6.
|
|
1
|
+
{"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"6.1.0-prerelease.1","private":true}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patternfly/react-core",
|
|
3
|
-
"version": "6.0.
|
|
3
|
+
"version": "6.1.0-prerelease.2",
|
|
4
4
|
"description": "This library provides a set of common React components for use with the PatternFly reference implementation.",
|
|
5
5
|
"main": "dist/js/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -46,15 +46,15 @@
|
|
|
46
46
|
"subpaths": "node ../../scripts/exportSubpaths.mjs --config subpaths.config.json"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@patternfly/react-icons": "^6.0.
|
|
50
|
-
"@patternfly/react-styles": "^6.0.
|
|
51
|
-
"@patternfly/react-tokens": "^6.0.
|
|
49
|
+
"@patternfly/react-icons": "^6.1.0-prerelease.1",
|
|
50
|
+
"@patternfly/react-styles": "^6.1.0-prerelease.1",
|
|
51
|
+
"@patternfly/react-tokens": "^6.1.0-prerelease.1",
|
|
52
52
|
"focus-trap": "7.6.0",
|
|
53
53
|
"react-dropzone": "^14.2.3",
|
|
54
54
|
"tslib": "^2.7.0"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@patternfly/patternfly": "6.0.
|
|
57
|
+
"@patternfly/patternfly": "6.1.0-prerelease.2",
|
|
58
58
|
"case-anything": "^2.1.13",
|
|
59
59
|
"css": "^3.0.0",
|
|
60
60
|
"fs-extra": "^11.2.0"
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"react": "^17 || ^18",
|
|
64
64
|
"react-dom": "^17 || ^18"
|
|
65
65
|
},
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "9122c84d11bc44a8af15969c6f5f7f2de011122c"
|
|
67
67
|
}
|
|
@@ -36,8 +36,6 @@ export const DualListSelectorComposableTree: React.FunctionComponent<ExampleProp
|
|
|
36
36
|
const [chosenLeafIds, setChosenLeafIds] = React.useState<string[]>(['beans', 'beef', 'chicken', 'tofu']);
|
|
37
37
|
const [chosenFilter, setChosenFilter] = React.useState<string>('');
|
|
38
38
|
const [availableFilter, setAvailableFilter] = React.useState<string>('');
|
|
39
|
-
let hiddenChosen: string[] = [];
|
|
40
|
-
let hiddenAvailable: string[] = [];
|
|
41
39
|
|
|
42
40
|
// helper function to build memoized lists
|
|
43
41
|
const buildTextById = (node: FoodNode): { [key: string]: string } => {
|
|
@@ -82,7 +80,7 @@ export const DualListSelectorComposableTree: React.FunctionComponent<ExampleProp
|
|
|
82
80
|
};
|
|
83
81
|
|
|
84
82
|
// Builds a map of child leaf nodes by node id - memoized so that it only rebuilds the list if the data changes.
|
|
85
|
-
const { memoizedLeavesById, memoizedAllLeaves,
|
|
83
|
+
const { memoizedLeavesById, memoizedAllLeaves, memoizedNodeTexts } = React.useMemo(() => {
|
|
86
84
|
let leavesById = {};
|
|
87
85
|
let allLeaves: string[] = [];
|
|
88
86
|
let nodeTexts = {};
|
|
@@ -94,32 +92,49 @@ export const DualListSelectorComposableTree: React.FunctionComponent<ExampleProp
|
|
|
94
92
|
return {
|
|
95
93
|
memoizedLeavesById: leavesById,
|
|
96
94
|
memoizedAllLeaves: allLeaves,
|
|
97
|
-
|
|
95
|
+
memoizedNodeTexts: nodeTexts
|
|
98
96
|
};
|
|
99
97
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
100
98
|
}, [data]);
|
|
101
99
|
|
|
100
|
+
const matchesFilter = (value: string, filter: string) => value.toLowerCase().includes(filter.trim().toLowerCase());
|
|
101
|
+
|
|
102
|
+
const getVisibleLeafIds = (leafIds: string[], filter: string) => {
|
|
103
|
+
const filterMatchingNodeIds = Object.keys(memoizedLeavesById).filter((nodeId) =>
|
|
104
|
+
matchesFilter(memoizedNodeTexts[nodeId], filter)
|
|
105
|
+
);
|
|
106
|
+
const filterMatchingLeafIds = filterMatchingNodeIds.map((nodeId) => memoizedLeavesById[nodeId]).flat();
|
|
107
|
+
return leafIds.filter((leafId) => filterMatchingLeafIds.includes(leafId));
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
const availableLeafIds = memoizedAllLeaves.filter((leafId) => !chosenLeafIds.includes(leafId));
|
|
111
|
+
const visibleChosenLeafIds = getVisibleLeafIds(chosenLeafIds, chosenFilter);
|
|
112
|
+
const visibleAvailableLeafIds = getVisibleLeafIds(availableLeafIds, availableFilter);
|
|
113
|
+
|
|
102
114
|
const moveChecked = (toChosen: boolean) => {
|
|
115
|
+
const visibleCheckedChosenLeafIds = checkedLeafIds.filter((leafId) => visibleChosenLeafIds.includes(leafId));
|
|
116
|
+
const visibleCheckedAvailableLeafIds = checkedLeafIds.filter((leafId) => visibleAvailableLeafIds.includes(leafId));
|
|
117
|
+
|
|
103
118
|
setChosenLeafIds(
|
|
104
119
|
(prevChosenIds) =>
|
|
105
120
|
toChosen
|
|
106
|
-
? [...prevChosenIds, ...
|
|
107
|
-
:
|
|
121
|
+
? [...prevChosenIds, ...visibleCheckedAvailableLeafIds] // add visible checked ids to chosen list
|
|
122
|
+
: prevChosenIds.filter((x) => !visibleCheckedChosenLeafIds.includes(x)) // remove visible checked ids from chosen list
|
|
108
123
|
);
|
|
109
124
|
|
|
110
125
|
// uncheck checked ids that just moved
|
|
111
126
|
setCheckedLeafIds((prevChecked) =>
|
|
112
127
|
toChosen
|
|
113
|
-
?
|
|
114
|
-
:
|
|
128
|
+
? prevChecked.filter((x) => !visibleCheckedAvailableLeafIds.includes(x))
|
|
129
|
+
: prevChecked.filter((x) => !visibleCheckedChosenLeafIds.includes(x))
|
|
115
130
|
);
|
|
116
131
|
};
|
|
117
132
|
|
|
118
133
|
const moveAll = (toChosen: boolean) => {
|
|
119
134
|
if (toChosen) {
|
|
120
|
-
setChosenLeafIds(
|
|
135
|
+
setChosenLeafIds((prevChosenIds) => [...prevChosenIds, ...visibleAvailableLeafIds]);
|
|
121
136
|
} else {
|
|
122
|
-
setChosenLeafIds(
|
|
137
|
+
setChosenLeafIds((prevChosenIds) => prevChosenIds.filter((id) => !visibleChosenLeafIds.includes(id)));
|
|
123
138
|
}
|
|
124
139
|
};
|
|
125
140
|
|
|
@@ -149,15 +164,9 @@ export const DualListSelectorComposableTree: React.FunctionComponent<ExampleProp
|
|
|
149
164
|
isChosen: boolean
|
|
150
165
|
) => {
|
|
151
166
|
const nodeIdsToCheck = memoizedLeavesById[node.id].filter((id) =>
|
|
152
|
-
isChosen
|
|
153
|
-
? chosenLeafIds.includes(id) && !hiddenChosen.includes(id)
|
|
154
|
-
: !chosenLeafIds.includes(id) && !hiddenAvailable.includes(id)
|
|
167
|
+
isChosen ? visibleChosenLeafIds.includes(id) : visibleAvailableLeafIds.includes(id)
|
|
155
168
|
);
|
|
156
|
-
|
|
157
|
-
hiddenChosen = [];
|
|
158
|
-
} else {
|
|
159
|
-
hiddenAvailable = [];
|
|
160
|
-
}
|
|
169
|
+
|
|
161
170
|
setCheckedLeafIds((prevChecked) => {
|
|
162
171
|
const otherCheckedNodeNames = prevChecked.filter((id) => !nodeIdsToCheck.includes(id));
|
|
163
172
|
return !isChecked ? otherCheckedNodeNames : [...otherCheckedNodeNames, ...nodeIdsToCheck];
|
|
@@ -196,8 +205,8 @@ export const DualListSelectorComposableTree: React.FunctionComponent<ExampleProp
|
|
|
196
205
|
: descendentLeafIds.filter((id) => !chosenLeafIds.includes(id));
|
|
197
206
|
|
|
198
207
|
const hasMatchingChildren =
|
|
199
|
-
filterValue && descendentsOnThisPane.some((id) =>
|
|
200
|
-
const isFilterMatch = filterValue && node.text
|
|
208
|
+
filterValue && descendentsOnThisPane.some((id) => matchesFilter(memoizedNodeTexts[id], filterValue));
|
|
209
|
+
const isFilterMatch = filterValue && matchesFilter(node.text, filterValue) && descendentsOnThisPane.length > 0;
|
|
201
210
|
|
|
202
211
|
// A node is displayed if either of the following is true:
|
|
203
212
|
// - There is no filter value and this node or its descendents belong on this pane
|
|
@@ -208,14 +217,6 @@ export const DualListSelectorComposableTree: React.FunctionComponent<ExampleProp
|
|
|
208
217
|
(hasParentMatch && descendentsOnThisPane.length > 0) ||
|
|
209
218
|
isFilterMatch;
|
|
210
219
|
|
|
211
|
-
if (!isDisplayed) {
|
|
212
|
-
if (isChosen) {
|
|
213
|
-
hiddenChosen.push(node.id);
|
|
214
|
-
} else {
|
|
215
|
-
hiddenAvailable.push(node.id);
|
|
216
|
-
}
|
|
217
|
-
}
|
|
218
|
-
|
|
219
220
|
return [
|
|
220
221
|
...(isDisplayed
|
|
221
222
|
? [
|
|
@@ -242,9 +243,9 @@ export const DualListSelectorComposableTree: React.FunctionComponent<ExampleProp
|
|
|
242
243
|
|
|
243
244
|
const buildPane = (isChosen: boolean): React.ReactNode => {
|
|
244
245
|
const options: DualListSelectorTreeItemData[] = buildOptions(isChosen, data, false);
|
|
245
|
-
const numOptions = isChosen ?
|
|
246
|
+
const numOptions = isChosen ? visibleChosenLeafIds.length : visibleAvailableLeafIds.length;
|
|
246
247
|
const numSelected = checkedLeafIds.filter((id) =>
|
|
247
|
-
isChosen ?
|
|
248
|
+
isChosen ? visibleChosenLeafIds.includes(id) : visibleAvailableLeafIds.includes(id)
|
|
248
249
|
).length;
|
|
249
250
|
const status = `${numSelected} of ${numOptions} options selected`;
|
|
250
251
|
const filterApplied = isChosen ? chosenFilter !== '' : availableFilter !== '';
|
|
@@ -285,7 +286,7 @@ export const DualListSelectorComposableTree: React.FunctionComponent<ExampleProp
|
|
|
285
286
|
{buildPane(false)}
|
|
286
287
|
<DualListSelectorControlsWrapper>
|
|
287
288
|
<DualListSelectorControl
|
|
288
|
-
isDisabled={!checkedLeafIds.filter((x) =>
|
|
289
|
+
isDisabled={!checkedLeafIds.filter((x) => visibleAvailableLeafIds.includes(x)).length}
|
|
289
290
|
onClick={() => moveChecked(true)}
|
|
290
291
|
aria-label="Add selected"
|
|
291
292
|
icon={<AngleRightIcon />}
|
|
@@ -304,7 +305,7 @@ export const DualListSelectorComposableTree: React.FunctionComponent<ExampleProp
|
|
|
304
305
|
/>
|
|
305
306
|
<DualListSelectorControl
|
|
306
307
|
onClick={() => moveChecked(false)}
|
|
307
|
-
isDisabled={!checkedLeafIds.filter((x) =>
|
|
308
|
+
isDisabled={!checkedLeafIds.filter((x) => visibleChosenLeafIds.includes(x)).length}
|
|
308
309
|
aria-label="Remove selected"
|
|
309
310
|
icon={<AngleLeftIcon />}
|
|
310
311
|
/>
|
|
@@ -20,7 +20,7 @@ export interface MenuToggleCheckboxProps
|
|
|
20
20
|
/** Flag to set the default checked value of the checkbox when it is uncontrolled by React state.
|
|
21
21
|
* To make the checkbox controlled instead use the isChecked prop, but do not use both.
|
|
22
22
|
*/
|
|
23
|
-
defaultChecked?: boolean
|
|
23
|
+
defaultChecked?: boolean;
|
|
24
24
|
/** A callback for when the checkbox selection changes */
|
|
25
25
|
onChange?: (checked: boolean, event: React.FormEvent<HTMLInputElement>) => void;
|
|
26
26
|
/** Element to be rendered inside the <span> */
|