@patternfly/react-core 4.222.2 → 4.222.5
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 +24 -0
- package/dist/esm/components/AboutModal/AboutModal.d.ts +1 -1
- package/dist/esm/components/AboutModal/AboutModal.js.map +1 -1
- package/dist/esm/components/Dropdown/InternalDropdownItem.d.ts.map +1 -1
- package/dist/esm/components/Dropdown/InternalDropdownItem.js +3 -3
- package/dist/esm/components/Dropdown/InternalDropdownItem.js.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelector.d.ts.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelector.js +6 -5
- package/dist/esm/components/DualListSelector/DualListSelector.js.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorPane.d.ts.map +1 -1
- package/dist/esm/components/DualListSelector/DualListSelectorPane.js.map +1 -1
- package/dist/esm/components/Menu/MenuItem.js.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/esm/components/Modal/Modal.d.ts +1 -1
- package/dist/esm/components/Modal/Modal.js.map +1 -1
- package/dist/esm/components/Select/Select.d.ts.map +1 -1
- package/dist/esm/components/Select/Select.js +2 -1
- package/dist/esm/components/Select/Select.js.map +1 -1
- package/dist/esm/components/Toolbar/ToolbarToggleGroup.d.ts.map +1 -1
- package/dist/esm/components/Toolbar/ToolbarToggleGroup.js.map +1 -1
- package/dist/js/components/AboutModal/AboutModal.d.ts +1 -1
- package/dist/js/components/AboutModal/AboutModal.js.map +1 -1
- package/dist/js/components/Dropdown/InternalDropdownItem.d.ts.map +1 -1
- package/dist/js/components/Dropdown/InternalDropdownItem.js +3 -3
- package/dist/js/components/Dropdown/InternalDropdownItem.js.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelector.d.ts.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelector.js +6 -5
- package/dist/js/components/DualListSelector/DualListSelector.js.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorPane.d.ts.map +1 -1
- package/dist/js/components/DualListSelector/DualListSelectorPane.js.map +1 -1
- package/dist/js/components/Menu/MenuItem.js.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/js/components/Modal/Modal.d.ts +1 -1
- package/dist/js/components/Modal/Modal.js.map +1 -1
- package/dist/js/components/Select/Select.d.ts.map +1 -1
- package/dist/js/components/Select/Select.js +2 -1
- package/dist/js/components/Select/Select.js.map +1 -1
- package/dist/js/components/Toolbar/ToolbarToggleGroup.d.ts.map +1 -1
- package/dist/js/components/Toolbar/ToolbarToggleGroup.js.map +1 -1
- package/dist/umd/react-core.css +1 -5
- package/dist/umd/react-core.js +11 -9
- package/dist/umd/react-core.min.css +1 -5
- package/dist/umd/react-core.min.js +1 -1
- package/package.json +6 -6
- package/src/components/AboutModal/AboutModal.tsx +1 -1
- package/src/components/ApplicationLauncher/__tests__/Generated/__snapshots__/ApplicationLauncherSeparator.test.tsx.snap +1 -1
- package/src/components/ApplicationLauncher/__tests__/__snapshots__/ApplicationLauncher.test.tsx.snap +26 -14
- package/src/components/Dropdown/InternalDropdownItem.tsx +3 -2
- package/src/components/Dropdown/__tests__/Generated/__snapshots__/DropdownSeparator.test.tsx.snap +1 -1
- package/src/components/Dropdown/__tests__/__snapshots__/Dropdown.test.tsx.snap +21 -3
- package/src/components/Dropdown/__tests__/__snapshots__/InternalDropdownItem.test.tsx.snap +10 -0
- package/src/components/Dropdown/examples/DropdownBasic.tsx +4 -2
- package/src/components/DualListSelector/DualListSelector.tsx +57 -37
- package/src/components/DualListSelector/DualListSelectorPane.tsx +10 -8
- package/src/components/Label/examples/Label.md +5 -399
- package/src/components/Label/examples/LabelCompact.tsx +27 -0
- package/src/components/Label/examples/LabelFilled.tsx +167 -0
- package/src/components/Label/examples/LabelOutline.tsx +188 -0
- package/src/components/Label/examples/LabelRouterLink.tsx +20 -0
- package/src/components/Menu/MenuItem.tsx +1 -1
- package/src/components/MenuToggle/MenuToggle.tsx +1 -1
- package/src/components/Modal/Modal.tsx +1 -1
- package/src/components/OptionsMenu/__tests__/Generated/__snapshots__/OptionsMenuItem.test.tsx.snap +2 -1
- package/src/components/OptionsMenu/__tests__/__snapshots__/OptionsMenu.test.tsx.snap +12 -6
- package/src/components/OverflowMenu/__tests__/Generated/__snapshots__/OverflowMenuDropdownItem.test.tsx.snap +2 -1
- package/src/components/Select/Select.tsx +6 -3
- package/src/components/Toolbar/ToolbarToggleGroup.tsx +4 -1
- package/src/demos/Wizard/WizardDemo.md +66 -121
|
@@ -134,10 +134,10 @@ export class DualListSelector extends React.Component<DualListSelectorProps, Dua
|
|
|
134
134
|
private removeAllButtonRef = React.createRef<HTMLButtonElement>();
|
|
135
135
|
static defaultProps: PickOptional<DualListSelectorProps> = {
|
|
136
136
|
children: '',
|
|
137
|
-
availableOptions: []
|
|
137
|
+
availableOptions: [],
|
|
138
138
|
availableOptionsTitle: 'Available options',
|
|
139
139
|
availableOptionsSearchAriaLabel: 'Available search input',
|
|
140
|
-
chosenOptions: []
|
|
140
|
+
chosenOptions: [],
|
|
141
141
|
chosenOptionsTitle: 'Chosen options',
|
|
142
142
|
chosenOptionsSearchAriaLabel: 'Chosen search input',
|
|
143
143
|
id: getUniqueId('dual-list-selector'),
|
|
@@ -177,11 +177,11 @@ export class DualListSelector extends React.Component<DualListSelectorProps, Dua
|
|
|
177
177
|
constructor(props: DualListSelectorProps) {
|
|
178
178
|
super(props);
|
|
179
179
|
this.state = {
|
|
180
|
-
availableOptions: [...this.props.availableOptions],
|
|
180
|
+
availableOptions: [...this.props.availableOptions] as React.ReactNode[],
|
|
181
181
|
availableOptionsSelected: [],
|
|
182
182
|
availableFilteredOptions: null,
|
|
183
183
|
availableTreeFilteredOptions: null,
|
|
184
|
-
chosenOptions: [...this.props.chosenOptions],
|
|
184
|
+
chosenOptions: [...this.props.chosenOptions] as React.ReactNode[],
|
|
185
185
|
chosenOptionsSelected: [],
|
|
186
186
|
chosenFilteredOptions: null,
|
|
187
187
|
chosenTreeFilteredOptions: null,
|
|
@@ -208,8 +208,8 @@ export class DualListSelector extends React.Component<DualListSelectorProps, Dua
|
|
|
208
208
|
JSON.stringify(this.state.chosenOptions, this.replacer)
|
|
209
209
|
) {
|
|
210
210
|
this.setState({
|
|
211
|
-
availableOptions: [...this.props.availableOptions],
|
|
212
|
-
chosenOptions: [...this.props.chosenOptions]
|
|
211
|
+
availableOptions: [...this.props.availableOptions] as React.ReactNode[],
|
|
212
|
+
chosenOptions: [...this.props.chosenOptions] as React.ReactNode[]
|
|
213
213
|
});
|
|
214
214
|
}
|
|
215
215
|
}
|
|
@@ -226,7 +226,9 @@ export class DualListSelector extends React.Component<DualListSelectorProps, Dua
|
|
|
226
226
|
}
|
|
227
227
|
if (isTree) {
|
|
228
228
|
this.setState({
|
|
229
|
-
availableTreeFilteredOptions: flattenTreeWithFolders(
|
|
229
|
+
availableTreeFilteredOptions: flattenTreeWithFolders(
|
|
230
|
+
(newFilteredOptions as unknown) as DualListSelectorTreeItemData[]
|
|
231
|
+
)
|
|
230
232
|
});
|
|
231
233
|
} else {
|
|
232
234
|
this.setState({
|
|
@@ -243,7 +245,9 @@ export class DualListSelector extends React.Component<DualListSelectorProps, Dua
|
|
|
243
245
|
}
|
|
244
246
|
if (isTree) {
|
|
245
247
|
this.setState({
|
|
246
|
-
chosenTreeFilteredOptions: flattenTreeWithFolders(
|
|
248
|
+
chosenTreeFilteredOptions: flattenTreeWithFolders(
|
|
249
|
+
(newFilteredOptions as unknown) as DualListSelectorTreeItemData[]
|
|
250
|
+
)
|
|
247
251
|
});
|
|
248
252
|
} else {
|
|
249
253
|
this.setState({
|
|
@@ -283,16 +287,20 @@ export class DualListSelector extends React.Component<DualListSelectorProps, Dua
|
|
|
283
287
|
this.setState(prevState => {
|
|
284
288
|
const movedOptions =
|
|
285
289
|
prevState.availableTreeFilteredOptions ||
|
|
286
|
-
flattenTreeWithFolders(prevState.availableOptions as DualListSelectorTreeItemData[]);
|
|
290
|
+
flattenTreeWithFolders((prevState.availableOptions as unknown) as DualListSelectorTreeItemData[]);
|
|
287
291
|
const newAvailable = prevState.availableOptions
|
|
288
292
|
.map(opt => Object.assign({}, opt))
|
|
289
|
-
.filter(item =>
|
|
293
|
+
.filter(item =>
|
|
294
|
+
filterRestTreeItems((item as unknown) as DualListSelectorTreeItemData, movedOptions)
|
|
295
|
+
) as React.ReactNode[];
|
|
290
296
|
|
|
291
|
-
const currChosen = flattenTree(prevState.chosenOptions as DualListSelectorTreeItemData[]);
|
|
297
|
+
const currChosen = flattenTree((prevState.chosenOptions as unknown) as DualListSelectorTreeItemData[]);
|
|
292
298
|
const nextChosenOptions = currChosen.concat(movedOptions);
|
|
293
299
|
const newChosen = this.createMergedCopy()
|
|
294
300
|
.map(opt => Object.assign({}, opt))
|
|
295
|
-
.filter(item =>
|
|
301
|
+
.filter(item =>
|
|
302
|
+
filterTreeItemsWithoutFolders(item as DualListSelectorTreeItemData, nextChosenOptions)
|
|
303
|
+
) as React.ReactNode[];
|
|
296
304
|
|
|
297
305
|
this.props.addAll && this.props.addAll(newAvailable, newChosen);
|
|
298
306
|
this.props.onListChange && this.props.onListChange(newAvailable, newChosen);
|
|
@@ -339,15 +347,17 @@ export class DualListSelector extends React.Component<DualListSelectorProps, Dua
|
|
|
339
347
|
const newAvailable = prevState.availableOptions
|
|
340
348
|
.map(opt => Object.assign({}, opt))
|
|
341
349
|
.filter(item =>
|
|
342
|
-
filterRestTreeItems(item as DualListSelectorTreeItemData, prevState.availableTreeOptionsChecked)
|
|
350
|
+
filterRestTreeItems((item as unknown) as DualListSelectorTreeItemData, prevState.availableTreeOptionsChecked)
|
|
343
351
|
);
|
|
344
352
|
|
|
345
353
|
// Get next chosen options from current + new nodes and remap from base
|
|
346
|
-
const currChosen = flattenTree(prevState.chosenOptions as DualListSelectorTreeItemData[]);
|
|
354
|
+
const currChosen = flattenTree((prevState.chosenOptions as unknown) as DualListSelectorTreeItemData[]);
|
|
347
355
|
const nextChosenOptions = currChosen.concat(prevState.availableTreeOptionsChecked);
|
|
348
356
|
const newChosen = this.createMergedCopy()
|
|
349
357
|
.map(opt => Object.assign({}, opt))
|
|
350
|
-
.filter(item =>
|
|
358
|
+
.filter(item =>
|
|
359
|
+
filterTreeItemsWithoutFolders(item as DualListSelectorTreeItemData, nextChosenOptions)
|
|
360
|
+
) as React.ReactNode[];
|
|
351
361
|
|
|
352
362
|
this.props.addSelected && this.props.addSelected(newAvailable, newChosen);
|
|
353
363
|
this.props.onListChange && this.props.onListChange(newAvailable, newChosen);
|
|
@@ -391,16 +401,18 @@ export class DualListSelector extends React.Component<DualListSelectorProps, Dua
|
|
|
391
401
|
this.setState(prevState => {
|
|
392
402
|
const movedOptions =
|
|
393
403
|
prevState.chosenTreeFilteredOptions ||
|
|
394
|
-
flattenTreeWithFolders(prevState.chosenOptions as DualListSelectorTreeItemData[]);
|
|
404
|
+
flattenTreeWithFolders((prevState.chosenOptions as unknown) as DualListSelectorTreeItemData[]);
|
|
395
405
|
|
|
396
406
|
const newChosen = prevState.chosenOptions
|
|
397
407
|
.map(opt => Object.assign({}, opt))
|
|
398
|
-
.filter(item => filterRestTreeItems(item as DualListSelectorTreeItemData, movedOptions));
|
|
399
|
-
const currAvailable = flattenTree(prevState.availableOptions as DualListSelectorTreeItemData[]);
|
|
408
|
+
.filter(item => filterRestTreeItems((item as unknown) as DualListSelectorTreeItemData, movedOptions));
|
|
409
|
+
const currAvailable = flattenTree((prevState.availableOptions as unknown) as DualListSelectorTreeItemData[]);
|
|
400
410
|
const nextAvailableOptions = currAvailable.concat(movedOptions);
|
|
401
411
|
const newAvailable = this.createMergedCopy()
|
|
402
412
|
.map(opt => Object.assign({}, opt))
|
|
403
|
-
.filter(item =>
|
|
413
|
+
.filter(item =>
|
|
414
|
+
filterTreeItemsWithoutFolders(item as DualListSelectorTreeItemData, nextAvailableOptions)
|
|
415
|
+
) as React.ReactNode[];
|
|
404
416
|
|
|
405
417
|
this.props.removeAll && this.props.removeAll(newAvailable, newChosen);
|
|
406
418
|
this.props.onListChange && this.props.onListChange(newAvailable, newChosen);
|
|
@@ -444,14 +456,18 @@ export class DualListSelector extends React.Component<DualListSelectorProps, Dua
|
|
|
444
456
|
// Remove selected chosen nodes from current chosen nodes
|
|
445
457
|
const newChosen = prevState.chosenOptions
|
|
446
458
|
.map(opt => Object.assign({}, opt))
|
|
447
|
-
.filter(item =>
|
|
459
|
+
.filter(item =>
|
|
460
|
+
filterRestTreeItems((item as unknown) as DualListSelectorTreeItemData, prevState.chosenTreeOptionsChecked)
|
|
461
|
+
);
|
|
448
462
|
|
|
449
463
|
// Get next chosen options from current and remap from base
|
|
450
|
-
const currAvailable = flattenTree(prevState.availableOptions as DualListSelectorTreeItemData[]);
|
|
464
|
+
const currAvailable = flattenTree((prevState.availableOptions as unknown) as DualListSelectorTreeItemData[]);
|
|
451
465
|
const nextAvailableOptions = currAvailable.concat(prevState.chosenTreeOptionsChecked);
|
|
452
466
|
const newAvailable = this.createMergedCopy()
|
|
453
467
|
.map(opt => Object.assign({}, opt))
|
|
454
|
-
.filter(item =>
|
|
468
|
+
.filter(item =>
|
|
469
|
+
filterTreeItemsWithoutFolders(item as DualListSelectorTreeItemData, nextAvailableOptions)
|
|
470
|
+
) as React.ReactNode[];
|
|
455
471
|
|
|
456
472
|
this.props.removeSelected && this.props.removeSelected(newAvailable, newChosen);
|
|
457
473
|
this.props.onListChange && this.props.onListChange(newAvailable, newChosen);
|
|
@@ -542,7 +558,7 @@ export class DualListSelector extends React.Component<DualListSelectorProps, Dua
|
|
|
542
558
|
panelOptions = chosenOptions
|
|
543
559
|
.map(opt => Object.assign({}, opt))
|
|
544
560
|
.filter(item =>
|
|
545
|
-
filterTreeItemsWithoutFolders(item as DualListSelectorTreeItemData, chosenTreeFilteredOptions)
|
|
561
|
+
filterTreeItemsWithoutFolders((item as unknown) as DualListSelectorTreeItemData, chosenTreeFilteredOptions)
|
|
546
562
|
);
|
|
547
563
|
} else {
|
|
548
564
|
panelOptions = chosenOptions;
|
|
@@ -552,7 +568,10 @@ export class DualListSelector extends React.Component<DualListSelectorProps, Dua
|
|
|
552
568
|
panelOptions = availableOptions
|
|
553
569
|
.map(opt => Object.assign({}, opt))
|
|
554
570
|
.filter(item =>
|
|
555
|
-
filterTreeItemsWithoutFolders(
|
|
571
|
+
filterTreeItemsWithoutFolders(
|
|
572
|
+
(item as unknown) as DualListSelectorTreeItemData,
|
|
573
|
+
availableTreeFilteredOptions
|
|
574
|
+
)
|
|
556
575
|
);
|
|
557
576
|
} else {
|
|
558
577
|
panelOptions = availableOptions;
|
|
@@ -560,8 +579,8 @@ export class DualListSelector extends React.Component<DualListSelectorProps, Dua
|
|
|
560
579
|
}
|
|
561
580
|
const checkedOptionTree = panelOptions
|
|
562
581
|
.map(opt => Object.assign({}, opt))
|
|
563
|
-
.filter(item => filterTreeItems(item as DualListSelectorTreeItemData, [itemData.id]));
|
|
564
|
-
const flatTree = flattenTreeWithFolders(checkedOptionTree as DualListSelectorTreeItemData[]);
|
|
582
|
+
.filter(item => filterTreeItems((item as unknown) as DualListSelectorTreeItemData, [itemData.id]));
|
|
583
|
+
const flatTree = flattenTreeWithFolders((checkedOptionTree as unknown) as DualListSelectorTreeItemData[]);
|
|
565
584
|
|
|
566
585
|
const prevChecked = isChosen ? this.state.chosenTreeOptionsChecked : this.state.availableTreeOptionsChecked;
|
|
567
586
|
let updatedChecked = [] as string[];
|
|
@@ -638,23 +657,24 @@ export class DualListSelector extends React.Component<DualListSelectorProps, Dua
|
|
|
638
657
|
availableOptionsStatus ||
|
|
639
658
|
(isTree
|
|
640
659
|
? `${
|
|
641
|
-
filterFolders(availableOptions as DualListSelectorTreeItemData[], availableTreeOptionsChecked)
|
|
642
|
-
|
|
660
|
+
filterFolders((availableOptions as unknown) as DualListSelectorTreeItemData[], availableTreeOptionsChecked)
|
|
661
|
+
.length
|
|
662
|
+
} of ${flattenTree((availableOptions as unknown) as DualListSelectorTreeItemData[]).length} items selected`
|
|
643
663
|
: `${availableOptionsSelected.length} of ${availableOptions.length} items selected`);
|
|
644
664
|
const chosenOptionsStatusToDisplay =
|
|
645
665
|
chosenOptionsStatus ||
|
|
646
666
|
(isTree
|
|
647
|
-
? `${
|
|
648
|
-
|
|
649
|
-
} items selected`
|
|
667
|
+
? `${
|
|
668
|
+
filterFolders((chosenOptions as unknown) as DualListSelectorTreeItemData[], chosenTreeOptionsChecked).length
|
|
669
|
+
} of ${flattenTree((chosenOptions as unknown) as DualListSelectorTreeItemData[]).length} items selected`
|
|
650
670
|
: `${chosenOptionsSelected.length} of ${chosenOptions.length} items selected`);
|
|
651
671
|
|
|
652
|
-
const available = isTree
|
|
653
|
-
? availableOptions.map(item => this.mapChecked(item as DualListSelectorTreeItemData, false))
|
|
654
|
-
: availableOptions;
|
|
655
|
-
const chosen = isTree
|
|
656
|
-
? chosenOptions.map(item => this.mapChecked(item as DualListSelectorTreeItemData, true))
|
|
657
|
-
: chosenOptions;
|
|
672
|
+
const available = (isTree
|
|
673
|
+
? availableOptions.map(item => this.mapChecked((item as unknown) as DualListSelectorTreeItemData, false))
|
|
674
|
+
: availableOptions) as React.ReactNode[];
|
|
675
|
+
const chosen = (isTree
|
|
676
|
+
? chosenOptions.map(item => this.mapChecked((item as unknown) as DualListSelectorTreeItemData, true))
|
|
677
|
+
: chosenOptions) as React.ReactNode[];
|
|
658
678
|
|
|
659
679
|
return (
|
|
660
680
|
<DualListSelectorContext.Provider value={{ isTree }}>
|
|
@@ -70,7 +70,7 @@ export const DualListSelectorPane: React.FunctionComponent<DualListSelectorPaneP
|
|
|
70
70
|
onOptionSelect,
|
|
71
71
|
onOptionCheck,
|
|
72
72
|
title = '',
|
|
73
|
-
options = []
|
|
73
|
+
options = [],
|
|
74
74
|
selectedOptions = [],
|
|
75
75
|
isSearchable = false,
|
|
76
76
|
searchInputAriaLabel = '',
|
|
@@ -87,11 +87,11 @@ export const DualListSelectorPane: React.FunctionComponent<DualListSelectorPaneP
|
|
|
87
87
|
// only called when search input is dynamically built
|
|
88
88
|
const onChange = (e: React.ChangeEvent<HTMLInputElement>) => {
|
|
89
89
|
const newValue = e.target.value;
|
|
90
|
-
let filtered;
|
|
90
|
+
let filtered: React.ReactNode[];
|
|
91
91
|
if (isTree) {
|
|
92
|
-
filtered =
|
|
92
|
+
filtered = options
|
|
93
93
|
.map(opt => Object.assign({}, opt))
|
|
94
|
-
.filter(item => filterInput(item as DualListSelectorTreeItemData, newValue));
|
|
94
|
+
.filter(item => filterInput((item as unknown) as DualListSelectorTreeItemData, newValue));
|
|
95
95
|
} else {
|
|
96
96
|
filtered = options.filter(option => {
|
|
97
97
|
if (displayOption(option)) {
|
|
@@ -110,7 +110,7 @@ export const DualListSelectorPane: React.FunctionComponent<DualListSelectorPaneP
|
|
|
110
110
|
// only called when options are passed via options prop and isTree === true
|
|
111
111
|
const filterInput = (item: DualListSelectorTreeItemData, input: string): boolean => {
|
|
112
112
|
if (filterOption) {
|
|
113
|
-
return filterOption(item, input);
|
|
113
|
+
return filterOption((item as unknown) as React.ReactNode, input);
|
|
114
114
|
} else {
|
|
115
115
|
if (item.text.toLowerCase().includes(input.toLowerCase()) || input === '') {
|
|
116
116
|
return true;
|
|
@@ -200,10 +200,12 @@ export const DualListSelectorPane: React.FunctionComponent<DualListSelectorPaneP
|
|
|
200
200
|
<DualListSelectorTree
|
|
201
201
|
data={
|
|
202
202
|
isSearchable
|
|
203
|
-
? (options
|
|
203
|
+
? ((options
|
|
204
204
|
.map(opt => Object.assign({}, opt))
|
|
205
|
-
.filter(item =>
|
|
206
|
-
|
|
205
|
+
.filter(item =>
|
|
206
|
+
filterInput((item as unknown) as DualListSelectorTreeItemData, input)
|
|
207
|
+
) as unknown) as DualListSelectorTreeItemData[])
|
|
208
|
+
: ((options as unknown) as DualListSelectorTreeItemData[])
|
|
207
209
|
}
|
|
208
210
|
onOptionCheck={onOptionCheck}
|
|
209
211
|
id={`${id}-tree`}
|