@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.
Files changed (124) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/components/package.json +1 -1
  3. package/deprecated/package.json +1 -1
  4. package/dist/dynamic/components/AboutModal/package.json +1 -1
  5. package/dist/dynamic/components/Accordion/package.json +1 -1
  6. package/dist/dynamic/components/ActionList/package.json +1 -1
  7. package/dist/dynamic/components/Alert/package.json +1 -1
  8. package/dist/dynamic/components/Avatar/package.json +1 -1
  9. package/dist/dynamic/components/BackToTop/package.json +1 -1
  10. package/dist/dynamic/components/Backdrop/package.json +1 -1
  11. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  12. package/dist/dynamic/components/Badge/package.json +1 -1
  13. package/dist/dynamic/components/Banner/package.json +1 -1
  14. package/dist/dynamic/components/Brand/package.json +1 -1
  15. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  16. package/dist/dynamic/components/Button/package.json +1 -1
  17. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  18. package/dist/dynamic/components/Card/package.json +1 -1
  19. package/dist/dynamic/components/Checkbox/package.json +1 -1
  20. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  21. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  22. package/dist/dynamic/components/Content/package.json +1 -1
  23. package/dist/dynamic/components/DataList/package.json +1 -1
  24. package/dist/dynamic/components/DatePicker/package.json +1 -1
  25. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  26. package/dist/dynamic/components/Divider/package.json +1 -1
  27. package/dist/dynamic/components/Drawer/package.json +1 -1
  28. package/dist/dynamic/components/Dropdown/package.json +1 -1
  29. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  30. package/dist/dynamic/components/EmptyState/package.json +1 -1
  31. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  32. package/dist/dynamic/components/FileUpload/package.json +1 -1
  33. package/dist/dynamic/components/Form/package.json +1 -1
  34. package/dist/dynamic/components/FormSelect/package.json +1 -1
  35. package/dist/dynamic/components/HelperText/package.json +1 -1
  36. package/dist/dynamic/components/Hint/package.json +1 -1
  37. package/dist/dynamic/components/Icon/package.json +1 -1
  38. package/dist/dynamic/components/InputGroup/package.json +1 -1
  39. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  40. package/dist/dynamic/components/Label/package.json +1 -1
  41. package/dist/dynamic/components/List/package.json +1 -1
  42. package/dist/dynamic/components/LoginPage/package.json +1 -1
  43. package/dist/dynamic/components/Masthead/package.json +1 -1
  44. package/dist/dynamic/components/Menu/package.json +1 -1
  45. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  46. package/dist/dynamic/components/Modal/package.json +1 -1
  47. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  48. package/dist/dynamic/components/Nav/package.json +1 -1
  49. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  50. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  51. package/dist/dynamic/components/NumberInput/package.json +1 -1
  52. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  53. package/dist/dynamic/components/Page/package.json +1 -1
  54. package/dist/dynamic/components/Pagination/package.json +1 -1
  55. package/dist/dynamic/components/Panel/package.json +1 -1
  56. package/dist/dynamic/components/Popover/package.json +1 -1
  57. package/dist/dynamic/components/Progress/package.json +1 -1
  58. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  59. package/dist/dynamic/components/Radio/package.json +1 -1
  60. package/dist/dynamic/components/SearchInput/package.json +1 -1
  61. package/dist/dynamic/components/Select/package.json +1 -1
  62. package/dist/dynamic/components/Sidebar/package.json +1 -1
  63. package/dist/dynamic/components/SimpleList/package.json +1 -1
  64. package/dist/dynamic/components/Skeleton/package.json +1 -1
  65. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  66. package/dist/dynamic/components/Slider/package.json +1 -1
  67. package/dist/dynamic/components/Spinner/package.json +1 -1
  68. package/dist/dynamic/components/Switch/package.json +1 -1
  69. package/dist/dynamic/components/Tabs/package.json +1 -1
  70. package/dist/dynamic/components/TextArea/package.json +1 -1
  71. package/dist/dynamic/components/TextInput/package.json +1 -1
  72. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  73. package/dist/dynamic/components/TimePicker/package.json +1 -1
  74. package/dist/dynamic/components/Timestamp/package.json +1 -1
  75. package/dist/dynamic/components/Title/package.json +1 -1
  76. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  77. package/dist/dynamic/components/Toolbar/package.json +1 -1
  78. package/dist/dynamic/components/Tooltip/package.json +1 -1
  79. package/dist/dynamic/components/TreeView/package.json +1 -1
  80. package/dist/dynamic/components/Truncate/package.json +1 -1
  81. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  82. package/dist/dynamic/components/Wizard/package.json +1 -1
  83. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  84. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/package.json +1 -1
  90. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  91. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  92. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  93. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  94. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  95. package/dist/dynamic/helpers/constants/package.json +1 -1
  96. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  97. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  98. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  99. package/dist/dynamic/helpers/package.json +1 -1
  100. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  101. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  102. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  103. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  104. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  105. package/dist/dynamic/helpers/util/package.json +1 -1
  106. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  107. package/dist/dynamic/layouts/Flex/package.json +1 -1
  108. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  109. package/dist/dynamic/layouts/Grid/package.json +1 -1
  110. package/dist/dynamic/layouts/Level/package.json +1 -1
  111. package/dist/dynamic/layouts/Split/package.json +1 -1
  112. package/dist/dynamic/layouts/Stack/package.json +1 -1
  113. package/dist/dynamic/styles/package.json +1 -1
  114. package/dist/esm/components/MenuToggle/MenuToggleCheckbox.d.ts +1 -1
  115. package/dist/esm/components/MenuToggle/MenuToggleCheckbox.d.ts.map +1 -1
  116. package/dist/js/components/MenuToggle/MenuToggleCheckbox.d.ts +1 -1
  117. package/dist/js/components/MenuToggle/MenuToggleCheckbox.d.ts.map +1 -1
  118. package/dist/umd/assets/{output-DPVTymX-.css → output-BDxyv9gq.css} +3425 -3419
  119. package/helpers/package.json +1 -1
  120. package/layouts/package.json +1 -1
  121. package/next/package.json +1 -1
  122. package/package.json +6 -6
  123. package/src/components/DualListSelector/examples/DualListSelectorTree.tsx +33 -32
  124. package/src/components/MenuToggle/MenuToggleCheckbox.tsx +1 -1
@@ -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.0.0-prerelease.23","private":true}
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}
@@ -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.0.0-prerelease.23","private":true}
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.0.0-prerelease.23","private":true}
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.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.0",
50
- "@patternfly/react-styles": "^6.0.0",
51
- "@patternfly/react-tokens": "^6.0.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.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": "69e205707d0228544b9b45467832e11d7a46ab45"
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, memoizedNodeText } = React.useMemo(() => {
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
- memoizedNodeText: nodeTexts
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, ...checkedLeafIds] // add checked ids to chosen list
107
- : [...prevChosenIds.filter((x) => !checkedLeafIds.includes(x))] // remove checked ids from chosen list
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
- ? [...prevChecked.filter((x) => chosenLeafIds.includes(x))]
114
- : [...prevChecked.filter((x) => !chosenLeafIds.includes(x))]
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(memoizedAllLeaves);
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
- if (isChosen) {
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) => memoizedNodeText[id].includes(filterValue));
200
- const isFilterMatch = filterValue && node.text.includes(filterValue) && descendentsOnThisPane.length > 0;
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 ? chosenLeafIds.length : memoizedAllLeaves.length - chosenLeafIds.length;
246
+ const numOptions = isChosen ? visibleChosenLeafIds.length : visibleAvailableLeafIds.length;
246
247
  const numSelected = checkedLeafIds.filter((id) =>
247
- isChosen ? chosenLeafIds.includes(id) : !chosenLeafIds.includes(id)
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) => !chosenLeafIds.includes(x)).length}
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) => !!chosenLeafIds.includes(x)).length}
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 | null;
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> */