@patternfly/react-core 6.0.0-alpha.71 → 6.0.0-alpha.72
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 +4 -0
- package/components/package.json +8 -1
- package/deprecated/package.json +8 -1
- package/dist/dynamic/components/AboutModal/package.json +8 -1
- package/dist/dynamic/components/Accordion/package.json +8 -1
- package/dist/dynamic/components/ActionList/package.json +8 -1
- package/dist/dynamic/components/Alert/package.json +8 -1
- package/dist/dynamic/components/Avatar/package.json +8 -1
- package/dist/dynamic/components/BackToTop/package.json +8 -1
- package/dist/dynamic/components/Backdrop/package.json +8 -1
- package/dist/dynamic/components/BackgroundImage/package.json +8 -1
- package/dist/dynamic/components/Badge/package.json +8 -1
- package/dist/dynamic/components/Banner/package.json +8 -1
- package/dist/dynamic/components/Brand/package.json +8 -1
- package/dist/dynamic/components/Breadcrumb/package.json +8 -1
- package/dist/dynamic/components/Button/package.json +8 -1
- package/dist/dynamic/components/CalendarMonth/package.json +8 -1
- package/dist/dynamic/components/Card/package.json +8 -1
- package/dist/dynamic/components/Checkbox/package.json +8 -1
- package/dist/dynamic/components/ClipboardCopy/package.json +8 -1
- package/dist/dynamic/components/CodeBlock/package.json +8 -1
- package/dist/dynamic/components/DataList/package.json +8 -1
- package/dist/dynamic/components/DatePicker/package.json +8 -1
- package/dist/dynamic/components/DescriptionList/package.json +8 -1
- package/dist/dynamic/components/Divider/package.json +8 -1
- package/dist/dynamic/components/Drawer/package.json +8 -1
- package/dist/dynamic/components/Dropdown/package.json +8 -1
- package/dist/dynamic/components/DualListSelector/package.json +8 -1
- package/dist/dynamic/components/EmptyState/package.json +8 -1
- package/dist/dynamic/components/ExpandableSection/package.json +8 -1
- package/dist/dynamic/components/FileUpload/package.json +8 -1
- package/dist/dynamic/components/Form/package.json +8 -1
- package/dist/dynamic/components/FormSelect/package.json +8 -1
- package/dist/dynamic/components/HelperText/package.json +8 -1
- package/dist/dynamic/components/Hint/package.json +8 -1
- package/dist/dynamic/components/Icon/package.json +8 -1
- package/dist/dynamic/components/InputGroup/package.json +8 -1
- package/dist/dynamic/components/JumpLinks/package.json +8 -1
- package/dist/dynamic/components/Label/package.json +8 -1
- package/dist/dynamic/components/List/package.json +8 -1
- package/dist/dynamic/components/LoginPage/package.json +8 -1
- package/dist/dynamic/components/Masthead/package.json +8 -1
- package/dist/dynamic/components/Menu/package.json +8 -1
- package/dist/dynamic/components/MenuToggle/package.json +8 -1
- package/dist/dynamic/components/Modal/package.json +8 -1
- package/dist/dynamic/components/MultipleFileUpload/package.json +8 -1
- package/dist/dynamic/components/Nav/package.json +8 -1
- package/dist/dynamic/components/NotificationBadge/package.json +8 -1
- package/dist/dynamic/components/NotificationDrawer/package.json +8 -1
- package/dist/dynamic/components/NumberInput/package.json +8 -1
- package/dist/dynamic/components/OverflowMenu/package.json +8 -1
- package/dist/dynamic/components/Page/package.json +8 -1
- package/dist/dynamic/components/Pagination/package.json +8 -1
- package/dist/dynamic/components/Panel/package.json +8 -1
- package/dist/dynamic/components/Popover/package.json +8 -1
- package/dist/dynamic/components/Progress/package.json +8 -1
- package/dist/dynamic/components/ProgressStepper/package.json +8 -1
- package/dist/dynamic/components/Radio/package.json +8 -1
- package/dist/dynamic/components/SearchInput/package.json +8 -1
- package/dist/dynamic/components/Select/package.json +8 -1
- package/dist/dynamic/components/Sidebar/package.json +8 -1
- package/dist/dynamic/components/SimpleList/package.json +8 -1
- package/dist/dynamic/components/Skeleton/package.json +8 -1
- package/dist/dynamic/components/SkipToContent/package.json +8 -1
- package/dist/dynamic/components/Slider/package.json +8 -1
- package/dist/dynamic/components/Spinner/package.json +8 -1
- package/dist/dynamic/components/Switch/package.json +8 -1
- package/dist/dynamic/components/Tabs/package.json +8 -1
- package/dist/dynamic/components/Text/package.json +8 -1
- package/dist/dynamic/components/TextArea/package.json +8 -1
- package/dist/dynamic/components/TextInput/package.json +8 -1
- package/dist/dynamic/components/TextInputGroup/package.json +8 -1
- package/dist/dynamic/components/Tile/package.json +8 -1
- package/dist/dynamic/components/TimePicker/package.json +8 -1
- package/dist/dynamic/components/Timestamp/package.json +8 -1
- package/dist/dynamic/components/Title/package.json +8 -1
- package/dist/dynamic/components/ToggleGroup/package.json +8 -1
- package/dist/dynamic/components/Toolbar/package.json +8 -1
- package/dist/dynamic/components/Tooltip/package.json +8 -1
- package/dist/dynamic/components/TreeView/package.json +8 -1
- package/dist/dynamic/components/Truncate/package.json +8 -1
- package/dist/dynamic/components/Wizard/hooks/package.json +8 -1
- package/dist/dynamic/components/Wizard/package.json +8 -1
- package/dist/dynamic/deprecated/components/Chip/package.json +8 -1
- package/dist/dynamic/deprecated/components/DragDrop/package.json +8 -1
- package/dist/dynamic/deprecated/components/DualListSelector/package.json +8 -1
- package/dist/dynamic/deprecated/components/Modal/package.json +8 -1
- package/dist/dynamic/deprecated/components/Wizard/package.json +8 -1
- package/dist/dynamic/deprecated/components/package.json +8 -1
- package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +8 -1
- package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +8 -1
- package/dist/dynamic/helpers/KeyboardHandler/package.json +8 -1
- package/dist/dynamic/helpers/OUIA/ouia/package.json +8 -1
- package/dist/dynamic/helpers/Popper/Popper/package.json +8 -1
- package/dist/dynamic/helpers/constants/package.json +8 -1
- package/dist/dynamic/helpers/datetimeUtils/package.json +8 -1
- package/dist/dynamic/helpers/fileUtils/package.json +8 -1
- package/dist/dynamic/helpers/htmlConstants/package.json +8 -1
- package/dist/dynamic/helpers/package.json +8 -1
- package/dist/dynamic/helpers/resizeObserver/package.json +8 -1
- package/dist/dynamic/helpers/typeUtils/package.json +8 -1
- package/dist/dynamic/helpers/useInterval/package.json +8 -1
- package/dist/dynamic/helpers/useIsomorphicLayout/package.json +8 -1
- package/dist/dynamic/helpers/useUnmountEffect/package.json +8 -1
- package/dist/dynamic/helpers/util/package.json +8 -1
- package/dist/dynamic/layouts/Bullseye/package.json +8 -1
- package/dist/dynamic/layouts/Flex/package.json +8 -1
- package/dist/dynamic/layouts/Gallery/package.json +8 -1
- package/dist/dynamic/layouts/Grid/package.json +8 -1
- package/dist/dynamic/layouts/Level/package.json +8 -1
- package/dist/dynamic/layouts/Split/package.json +8 -1
- package/dist/dynamic/layouts/Stack/package.json +8 -1
- package/dist/dynamic/styles/package.json +8 -1
- package/dist/esm/components/CalendarMonth/CalendarMonth.js +16 -19
- package/dist/esm/components/CalendarMonth/CalendarMonth.js.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/esm/components/DatePicker/DatePicker.js +16 -1
- package/dist/esm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/esm/components/Drawer/__tests__/DrawerPanelDescription.d.ts +1 -1
- package/dist/esm/components/Drawer/__tests__/DrawerPanelDescription.d.ts.map +1 -1
- package/dist/esm/components/Drawer/__tests__/DrawerPanelDescription.js +1 -0
- package/dist/esm/components/Drawer/__tests__/DrawerPanelDescription.js.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggle.d.ts +6 -1
- package/dist/esm/components/MenuToggle/MenuToggle.d.ts.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggle.js +11 -5
- package/dist/esm/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/esm/deprecated/components/Modal/Modal.d.ts +3 -3
- package/dist/esm/deprecated/components/Modal/Modal.d.ts.map +1 -1
- package/dist/esm/deprecated/components/Modal/Modal.js +1 -1
- package/dist/esm/deprecated/components/Modal/Modal.js.map +1 -1
- package/dist/esm/deprecated/components/Modal/ModalContent.d.ts +2 -2
- package/dist/esm/deprecated/components/Modal/ModalContent.d.ts.map +1 -1
- package/dist/js/components/CalendarMonth/CalendarMonth.js +16 -19
- package/dist/js/components/CalendarMonth/CalendarMonth.js.map +1 -1
- package/dist/js/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/js/components/DatePicker/DatePicker.js +16 -1
- package/dist/js/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/js/components/Drawer/__tests__/DrawerPanelDescription.d.ts +1 -1
- package/dist/js/components/Drawer/__tests__/DrawerPanelDescription.d.ts.map +1 -1
- package/dist/js/components/Drawer/__tests__/DrawerPanelDescription.js +1 -0
- package/dist/js/components/Drawer/__tests__/DrawerPanelDescription.js.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggle.d.ts +6 -1
- package/dist/js/components/MenuToggle/MenuToggle.d.ts.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggle.js +11 -5
- package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/js/deprecated/components/Modal/Modal.d.ts +3 -3
- package/dist/js/deprecated/components/Modal/Modal.d.ts.map +1 -1
- package/dist/js/deprecated/components/Modal/Modal.js +1 -1
- package/dist/js/deprecated/components/Modal/Modal.js.map +1 -1
- package/dist/js/deprecated/components/Modal/ModalContent.d.ts +2 -2
- package/dist/js/deprecated/components/Modal/ModalContent.d.ts.map +1 -1
- package/dist/umd/assets/{output-C1Tl2GQc.css → output-CdTxonRl.css} +7114 -7114
- package/dist/umd/react-core.min.js +1 -1
- package/helpers/package.json +8 -1
- package/layouts/package.json +8 -1
- package/next/package.json +8 -1
- package/package.json +7 -8
- package/src/components/CalendarMonth/CalendarMonth.tsx +19 -19
- package/src/components/DatePicker/DatePicker.tsx +19 -1
- package/src/components/DatePicker/__tests__/__snapshots__/DatePicker.test.tsx.snap +3 -0
- package/src/components/Drawer/__tests__/DrawerPanelDescription.tsx +1 -0
- package/src/components/MenuToggle/MenuToggle.tsx +29 -7
- package/src/components/MenuToggle/__tests__/__snapshots__/MenuToggle.test.tsx.snap +27 -0
- package/src/components/MenuToggle/examples/MenuToggle.md +12 -10
- package/src/components/Nav/__tests__/Generated/NavList.test.tsx +1 -1
- package/src/components/Nav/__tests__/__snapshots__/Nav.test.tsx.snap +1 -1
- package/src/components/Page/examples/Page.md +8 -0
- package/src/components/Page/examples/PageMainSectionVariations.tsx +84 -0
- package/src/components/Pagination/__tests__/Generated/__snapshots__/PaginationOptionsMenu.test.tsx.snap +3 -0
- package/src/components/Pagination/__tests__/__snapshots__/Pagination.test.tsx.snap +60 -0
- package/src/components/SearchInput/__tests__/__snapshots__/SearchInput.test.tsx.snap +2 -2
- package/src/components/SimpleList/__tests__/SimpleList.test.tsx +3 -3
- package/src/components/TextInput/__tests__/TextInput.test.tsx +1 -1
- package/src/demos/DescriptionList/DescriptionList.md +14 -0
- package/src/demos/DescriptionList/examples/DescriptionListBasic.tsx +86 -0
- package/src/demos/Masthead.md +5 -3
- package/src/demos/examples/Masthead/MastheadWithHorizontalNav.tsx +322 -0
- package/src/deprecated/components/Modal/Modal.tsx +4 -4
- package/src/deprecated/components/Modal/ModalContent.tsx +2 -2
package/helpers/package.json
CHANGED
|
@@ -1 +1,8 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"name": "@patternfly/react-core-helpers",
|
|
3
|
+
"main": "../dist/js/helpers/index.js",
|
|
4
|
+
"module": "../dist/esm/helpers/index.js",
|
|
5
|
+
"typings": "../dist/esm/helpers/index.d.ts",
|
|
6
|
+
"version": "6.0.0-alpha.71",
|
|
7
|
+
"private": true
|
|
8
|
+
}
|
package/layouts/package.json
CHANGED
|
@@ -1 +1,8 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"name": "@patternfly/react-core-layouts",
|
|
3
|
+
"main": "../dist/js/layouts/index.js",
|
|
4
|
+
"module": "../dist/esm/layouts/index.js",
|
|
5
|
+
"typings": "../dist/esm/layouts/index.d.ts",
|
|
6
|
+
"version": "6.0.0-alpha.71",
|
|
7
|
+
"private": true
|
|
8
|
+
}
|
package/next/package.json
CHANGED
|
@@ -1 +1,8 @@
|
|
|
1
|
-
{
|
|
1
|
+
{
|
|
2
|
+
"name": "@patternfly/react-core-next",
|
|
3
|
+
"main": "../dist/js/next/index.js",
|
|
4
|
+
"module": "../dist/esm/next/index.js",
|
|
5
|
+
"typings": "../dist/esm/next/index.d.ts",
|
|
6
|
+
"version": "6.0.0-alpha.71",
|
|
7
|
+
"private": true
|
|
8
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patternfly/react-core",
|
|
3
|
-
"version": "6.0.0-alpha.
|
|
3
|
+
"version": "6.0.0-alpha.72",
|
|
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",
|
|
@@ -47,9 +47,9 @@
|
|
|
47
47
|
"clean:exports": "node scripts/cleanDistExports.js"
|
|
48
48
|
},
|
|
49
49
|
"dependencies": {
|
|
50
|
-
"@patternfly/react-icons": "^6.0.0-alpha.
|
|
51
|
-
"@patternfly/react-styles": "^6.0.0-alpha.
|
|
52
|
-
"@patternfly/react-tokens": "^6.0.0-alpha.
|
|
50
|
+
"@patternfly/react-icons": "^6.0.0-alpha.26",
|
|
51
|
+
"@patternfly/react-styles": "^6.0.0-alpha.25",
|
|
52
|
+
"@patternfly/react-tokens": "^6.0.0-alpha.25",
|
|
53
53
|
"focus-trap": "7.5.4",
|
|
54
54
|
"react-dropzone": "^14.2.3",
|
|
55
55
|
"tslib": "^2.6.2"
|
|
@@ -57,13 +57,12 @@
|
|
|
57
57
|
"devDependencies": {
|
|
58
58
|
"@patternfly/patternfly": "6.0.0-alpha.150",
|
|
59
59
|
"case-anything": "^2.1.13",
|
|
60
|
-
"css": "^
|
|
61
|
-
"fs-extra": "^11.
|
|
62
|
-
"glob": "^7.1.2"
|
|
60
|
+
"css": "^3.0.0",
|
|
61
|
+
"fs-extra": "^11.2.0"
|
|
63
62
|
},
|
|
64
63
|
"peerDependencies": {
|
|
65
64
|
"react": "^17 || ^18",
|
|
66
65
|
"react-dom": "^17 || ^18"
|
|
67
66
|
},
|
|
68
|
-
"gitHead": "
|
|
67
|
+
"gitHead": "0df6094898bc94f9b0881e1ab97e6d0941df90af"
|
|
69
68
|
}
|
|
@@ -168,7 +168,7 @@ export const CalendarMonth = ({
|
|
|
168
168
|
const yearFormatted = yearFormat(focusedDate);
|
|
169
169
|
const [yearInput, setYearInput] = React.useState(yearFormatted.toString());
|
|
170
170
|
|
|
171
|
-
const [hoveredDate, setHoveredDate] = React.useState
|
|
171
|
+
const [hoveredDate, setHoveredDate] = React.useState<Date>(undefined);
|
|
172
172
|
const focusRef = React.useRef<HTMLButtonElement>();
|
|
173
173
|
const [hiddenMonthId] = React.useState(getUniqueId('hidden-month-span'));
|
|
174
174
|
const [shouldFocus, setShouldFocus] = React.useState(false);
|
|
@@ -192,7 +192,6 @@ export const CalendarMonth = ({
|
|
|
192
192
|
|
|
193
193
|
const onMonthClick = (ev: React.MouseEvent, newDate: Date) => {
|
|
194
194
|
setFocusedDate(newDate);
|
|
195
|
-
setHoveredDate(newDate);
|
|
196
195
|
setShouldFocus(false);
|
|
197
196
|
onMonthChange(ev, newDate);
|
|
198
197
|
setYearInput(yearFormat(newDate).toString());
|
|
@@ -212,7 +211,6 @@ export const CalendarMonth = ({
|
|
|
212
211
|
if (newDate.getTime() !== focusedDate.getTime() && isValidated(newDate)) {
|
|
213
212
|
ev.preventDefault();
|
|
214
213
|
setFocusedDate(newDate);
|
|
215
|
-
setHoveredDate(newDate);
|
|
216
214
|
setShouldFocus(true);
|
|
217
215
|
}
|
|
218
216
|
};
|
|
@@ -238,7 +236,6 @@ export const CalendarMonth = ({
|
|
|
238
236
|
if (yearNum >= MIN_YEAR && yearNum <= MAX_YEAR) {
|
|
239
237
|
const newDate = changeYear(yearNum);
|
|
240
238
|
setFocusedDate(newDate);
|
|
241
|
-
setHoveredDate(newDate);
|
|
242
239
|
setShouldFocus(false);
|
|
243
240
|
|
|
244
241
|
// We need to manually focus the year input in FireFox when the scroll buttons are clicked, as FireFox doesn't place focus automatically
|
|
@@ -282,10 +279,9 @@ export const CalendarMonth = ({
|
|
|
282
279
|
.map(({ date }) => date)[0];
|
|
283
280
|
if (toFocus) {
|
|
284
281
|
setFocusedDate(toFocus);
|
|
285
|
-
setHoveredDate(toFocus);
|
|
286
282
|
}
|
|
287
283
|
}
|
|
288
|
-
const isHoveredDateValid = isValidated(hoveredDate);
|
|
284
|
+
const isHoveredDateValid = hoveredDate && isValidated(hoveredDate);
|
|
289
285
|
const monthFormatted = monthFormat(focusedDate);
|
|
290
286
|
|
|
291
287
|
const calendarToRender = (
|
|
@@ -331,7 +327,6 @@ export const CalendarMonth = ({
|
|
|
331
327
|
onSelectToggle(false);
|
|
332
328
|
const newDate = changeMonth(Number(monthNum as string));
|
|
333
329
|
setFocusedDate(newDate);
|
|
334
|
-
setHoveredDate(newDate);
|
|
335
330
|
setShouldFocus(false);
|
|
336
331
|
onMonthChange(ev, newDate);
|
|
337
332
|
}, 0);
|
|
@@ -369,7 +364,7 @@ export const CalendarMonth = ({
|
|
|
369
364
|
</Button>
|
|
370
365
|
</div>
|
|
371
366
|
</div>
|
|
372
|
-
<table className={styles.calendarMonthCalendar}>
|
|
367
|
+
<table className={styles.calendarMonthCalendar} onMouseLeave={() => setHoveredDate(undefined)}>
|
|
373
368
|
<thead className={styles.calendarMonthDays}>
|
|
374
369
|
<tr>
|
|
375
370
|
{calendar[0].map(({ date }, index) => (
|
|
@@ -392,16 +387,21 @@ export const CalendarMonth = ({
|
|
|
392
387
|
const isRangeStart = isValidDate(rangeStart) && isSameDate(date, rangeStart);
|
|
393
388
|
let isInRange = false;
|
|
394
389
|
let isRangeEnd = false;
|
|
395
|
-
if (isValidDate(rangeStart)
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
390
|
+
if (isValidDate(rangeStart)) {
|
|
391
|
+
let rangeEndDate: Date;
|
|
392
|
+
|
|
393
|
+
if (isValidDate(dateProp)) {
|
|
394
|
+
rangeEndDate = dateProp;
|
|
395
|
+
}
|
|
396
|
+
if (isHoveredDateValid && (!isValidDate(dateProp) || hoveredDate > dateProp)) {
|
|
397
|
+
rangeEndDate = hoveredDate;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
if (rangeEndDate) {
|
|
401
|
+
isInRange = date >= rangeStart && date <= rangeEndDate;
|
|
402
|
+
isRangeEnd = isSameDate(date, rangeEndDate);
|
|
402
403
|
}
|
|
403
|
-
//
|
|
404
|
-
// Core would likely need new styles
|
|
404
|
+
// Core would likely need new styles for "is selected but disabled"
|
|
405
405
|
}
|
|
406
406
|
|
|
407
407
|
return (
|
|
@@ -412,8 +412,8 @@ export const CalendarMonth = ({
|
|
|
412
412
|
isAdjacentMonth && styles.modifiers.adjacentMonth,
|
|
413
413
|
isToday && styles.modifiers.current,
|
|
414
414
|
(isSelected || isRangeStart) && styles.modifiers.selected,
|
|
415
|
-
!isValid && styles.modifiers.disabled,
|
|
416
|
-
|
|
415
|
+
!isValid && !(isInRange || isRangeStart || isRangeEnd || isSelected) && styles.modifiers.disabled,
|
|
416
|
+
isInRange && styles.modifiers.inRange,
|
|
417
417
|
isRangeStart && styles.modifiers.startRange,
|
|
418
418
|
isRangeEnd && styles.modifiers.endRange
|
|
419
419
|
)}
|
|
@@ -231,12 +231,30 @@ const DatePickerBase = (
|
|
|
231
231
|
const createFocusSelectorString = (modifierClass: string) =>
|
|
232
232
|
`.${calendarMonthStyles.calendarMonthDatesCell}.${modifierClass} .${calendarMonthStyles.calendarMonthDate}`;
|
|
233
233
|
const focusSelectorForSelectedDate = createFocusSelectorString(calendarMonthStyles.modifiers.selected);
|
|
234
|
+
const focusSelectorForSelectedEndRangeDate = createFocusSelectorString(
|
|
235
|
+
`${calendarMonthStyles.modifiers.selected}.${calendarMonthStyles.modifiers.endRange}`
|
|
236
|
+
);
|
|
234
237
|
const focusSelectorForUnselectedDate = createFocusSelectorString(calendarMonthStyles.modifiers.current);
|
|
235
238
|
|
|
239
|
+
/**
|
|
240
|
+
* Returns a CSS selector for a date button element which will receive initial focus after opening calendar popover.
|
|
241
|
+
* In case of a range picker it returns the end date, if it is selected, start date otherwise.
|
|
242
|
+
* In case of a normal datepicker it returns the selected date, if present, today otherwise.
|
|
243
|
+
*/
|
|
244
|
+
const getElementSelectorToFocus = () => {
|
|
245
|
+
if (isValidDate(valueDate) && isValidDate(rangeStart)) {
|
|
246
|
+
return focusSelectorForSelectedEndRangeDate;
|
|
247
|
+
}
|
|
248
|
+
if (isValidDate(valueDate) || isValidDate(rangeStart)) {
|
|
249
|
+
return focusSelectorForSelectedDate;
|
|
250
|
+
}
|
|
251
|
+
return focusSelectorForUnselectedDate;
|
|
252
|
+
};
|
|
253
|
+
|
|
236
254
|
return (
|
|
237
255
|
<div className={css(styles.datePicker, className)} ref={datePickerWrapperRef} style={style} {...props}>
|
|
238
256
|
<Popover
|
|
239
|
-
elementToFocus={
|
|
257
|
+
elementToFocus={getElementSelectorToFocus()}
|
|
240
258
|
position="bottom"
|
|
241
259
|
bodyContent={
|
|
242
260
|
<CalendarMonth
|
|
@@ -127,6 +127,9 @@ exports[`With popover opened 1`] = `
|
|
|
127
127
|
<button
|
|
128
128
|
aria-expanded="false"
|
|
129
129
|
class="pf-v6-c-menu-toggle"
|
|
130
|
+
data-ouia-component-id="OUIA-Generated-MenuToggle-1"
|
|
131
|
+
data-ouia-component-type="PF6/MenuToggle"
|
|
132
|
+
data-ouia-safe="true"
|
|
130
133
|
style="width: 140px;"
|
|
131
134
|
type="button"
|
|
132
135
|
>
|
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import { render, screen } from '@testing-library/react';
|
|
3
3
|
import { DrawerPanelDescription } from '../DrawerPanelDescription';
|
|
4
4
|
import styles from '@patternfly/react-styles/css/components/Drawer/drawer';
|
|
5
|
+
import '@testing-library/jest-dom';
|
|
5
6
|
|
|
6
7
|
test(`Renders with only class ${styles.drawerDescription} by default`, () => {
|
|
7
8
|
render(<DrawerPanelDescription>description content</DrawerPanelDescription>);
|
|
@@ -6,6 +6,7 @@ import { BadgeProps } from '../Badge';
|
|
|
6
6
|
import CheckCircleIcon from '@patternfly/react-icons/dist/esm/icons/check-circle-icon';
|
|
7
7
|
import ExclamationCircleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-circle-icon';
|
|
8
8
|
import ExclamationTriangleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-triangle-icon';
|
|
9
|
+
import { OUIAProps, getDefaultOUIAId, getOUIAProps } from '../../helpers';
|
|
9
10
|
|
|
10
11
|
export enum MenuToggleStatus {
|
|
11
12
|
success = 'success',
|
|
@@ -24,12 +25,13 @@ export interface SplitButtonOptions {
|
|
|
24
25
|
|
|
25
26
|
export interface MenuToggleProps
|
|
26
27
|
extends Omit<
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
28
|
+
React.DetailedHTMLProps<
|
|
29
|
+
React.ButtonHTMLAttributes<HTMLButtonElement> & React.HTMLAttributes<HTMLDivElement>,
|
|
30
|
+
MenuToggleElement
|
|
31
|
+
>,
|
|
32
|
+
'ref'
|
|
30
33
|
>,
|
|
31
|
-
|
|
32
|
-
> {
|
|
34
|
+
OUIAProps {
|
|
33
35
|
/** Content rendered inside the toggle */
|
|
34
36
|
children?: React.ReactNode;
|
|
35
37
|
/** Additional classes added to the toggle */
|
|
@@ -58,16 +60,29 @@ export interface MenuToggleProps
|
|
|
58
60
|
badge?: BadgeProps | React.ReactNode;
|
|
59
61
|
/** @hide Forwarded ref */
|
|
60
62
|
innerRef?: React.Ref<MenuToggleElement>;
|
|
63
|
+
/** Value to overwrite the randomly generated data-ouia-component-id. It will always target the toggle button. */
|
|
64
|
+
ouiaId?: number | string;
|
|
65
|
+
/** Set the value of data-ouia-safe. Only set to true when the component is in a static state, i.e. no animations are occurring. At all other times, this value must be false. */
|
|
66
|
+
ouiaSafe?: boolean;
|
|
61
67
|
}
|
|
62
68
|
|
|
63
|
-
|
|
69
|
+
interface MenuToggleState {
|
|
70
|
+
ouiaStateId: string;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
class MenuToggleBase extends React.Component<MenuToggleProps, MenuToggleState> {
|
|
64
74
|
displayName = 'MenuToggleBase';
|
|
65
75
|
static defaultProps: MenuToggleProps = {
|
|
66
76
|
className: '',
|
|
67
77
|
isExpanded: false,
|
|
68
78
|
isDisabled: false,
|
|
69
79
|
isFullWidth: false,
|
|
70
|
-
isFullHeight: false
|
|
80
|
+
isFullHeight: false,
|
|
81
|
+
ouiaSafe: true
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
state: MenuToggleState = {
|
|
85
|
+
ouiaStateId: getDefaultOUIAId(MenuToggle.displayName, this.props.variant)
|
|
71
86
|
};
|
|
72
87
|
|
|
73
88
|
render() {
|
|
@@ -87,12 +102,16 @@ class MenuToggleBase extends React.Component<MenuToggleProps> {
|
|
|
87
102
|
innerRef,
|
|
88
103
|
onClick,
|
|
89
104
|
'aria-label': ariaLabel,
|
|
105
|
+
ouiaId,
|
|
106
|
+
ouiaSafe,
|
|
90
107
|
...otherProps
|
|
91
108
|
} = this.props;
|
|
92
109
|
const isPlain = variant === 'plain';
|
|
93
110
|
const isPlainText = variant === 'plainText';
|
|
94
111
|
const isTypeahead = variant === 'typeahead';
|
|
95
112
|
|
|
113
|
+
const ouiaProps = getOUIAProps(MenuToggle.displayName, ouiaId ?? this.state.ouiaStateId, ouiaSafe);
|
|
114
|
+
|
|
96
115
|
let _statusIcon = statusIcon;
|
|
97
116
|
if (!statusIcon) {
|
|
98
117
|
switch (status) {
|
|
@@ -130,6 +149,7 @@ class MenuToggleBase extends React.Component<MenuToggleProps> {
|
|
|
130
149
|
onClick={onClick}
|
|
131
150
|
aria-label={ariaLabel || 'Menu toggle'}
|
|
132
151
|
tabIndex={-1}
|
|
152
|
+
{...ouiaProps}
|
|
133
153
|
>
|
|
134
154
|
{toggleControls}
|
|
135
155
|
</button>
|
|
@@ -189,6 +209,7 @@ class MenuToggleBase extends React.Component<MenuToggleProps> {
|
|
|
189
209
|
onClick={onClick}
|
|
190
210
|
{...(children && { style: { display: 'flex', paddingLeft: 'var(--pf-v5-global--spacer--sm)' } })}
|
|
191
211
|
{...otherProps}
|
|
212
|
+
{...ouiaProps}
|
|
192
213
|
>
|
|
193
214
|
{children && <span className={css(styles.menuToggleText)}>{children}</span>}
|
|
194
215
|
{toggleControls}
|
|
@@ -207,6 +228,7 @@ class MenuToggleBase extends React.Component<MenuToggleProps> {
|
|
|
207
228
|
disabled={isDisabled}
|
|
208
229
|
onClick={onClick}
|
|
209
230
|
{...componentProps}
|
|
231
|
+
{...ouiaProps}
|
|
210
232
|
/>
|
|
211
233
|
);
|
|
212
234
|
}
|
|
@@ -5,6 +5,9 @@ exports[`menu toggle passes additional classes 1`] = `
|
|
|
5
5
|
<button
|
|
6
6
|
aria-expanded="false"
|
|
7
7
|
class="pf-v6-c-menu-toggle test-class"
|
|
8
|
+
data-ouia-component-id="OUIA-Generated-MenuToggle-2"
|
|
9
|
+
data-ouia-component-type="PF6/MenuToggle"
|
|
10
|
+
data-ouia-safe="true"
|
|
8
11
|
type="button"
|
|
9
12
|
>
|
|
10
13
|
<span
|
|
@@ -42,6 +45,9 @@ exports[`menu toggle renders successfully 1`] = `
|
|
|
42
45
|
<button
|
|
43
46
|
aria-expanded="false"
|
|
44
47
|
class="pf-v6-c-menu-toggle"
|
|
48
|
+
data-ouia-component-id="OUIA-Generated-MenuToggle-1"
|
|
49
|
+
data-ouia-component-type="PF6/MenuToggle"
|
|
50
|
+
data-ouia-safe="true"
|
|
45
51
|
type="button"
|
|
46
52
|
>
|
|
47
53
|
<span
|
|
@@ -79,6 +85,9 @@ exports[`menu toggle shows badge 1`] = `
|
|
|
79
85
|
<button
|
|
80
86
|
aria-expanded="false"
|
|
81
87
|
class="pf-v6-c-menu-toggle"
|
|
88
|
+
data-ouia-component-id="OUIA-Generated-MenuToggle-6"
|
|
89
|
+
data-ouia-component-type="PF6/MenuToggle"
|
|
90
|
+
data-ouia-safe="true"
|
|
82
91
|
type="button"
|
|
83
92
|
>
|
|
84
93
|
<span
|
|
@@ -125,6 +134,9 @@ exports[`menu toggle shows icon 1`] = `
|
|
|
125
134
|
<button
|
|
126
135
|
aria-expanded="false"
|
|
127
136
|
class="pf-v6-c-menu-toggle"
|
|
137
|
+
data-ouia-component-id="OUIA-Generated-MenuToggle-5"
|
|
138
|
+
data-ouia-component-type="PF6/MenuToggle"
|
|
139
|
+
data-ouia-safe="true"
|
|
128
140
|
type="button"
|
|
129
141
|
>
|
|
130
142
|
<span
|
|
@@ -179,6 +191,9 @@ exports[`menu toggle shows isDisabled 1`] = `
|
|
|
179
191
|
<button
|
|
180
192
|
aria-expanded="false"
|
|
181
193
|
class="pf-v6-c-menu-toggle pf-m-disabled"
|
|
194
|
+
data-ouia-component-id="OUIA-Generated-MenuToggle-4"
|
|
195
|
+
data-ouia-component-type="PF6/MenuToggle"
|
|
196
|
+
data-ouia-safe="true"
|
|
182
197
|
disabled=""
|
|
183
198
|
type="button"
|
|
184
199
|
>
|
|
@@ -217,6 +232,9 @@ exports[`menu toggle shows isExpanded 1`] = `
|
|
|
217
232
|
<button
|
|
218
233
|
aria-expanded="true"
|
|
219
234
|
class="pf-v6-c-menu-toggle pf-m-expanded"
|
|
235
|
+
data-ouia-component-id="OUIA-Generated-MenuToggle-3"
|
|
236
|
+
data-ouia-component-type="PF6/MenuToggle"
|
|
237
|
+
data-ouia-safe="true"
|
|
220
238
|
type="button"
|
|
221
239
|
>
|
|
222
240
|
<span
|
|
@@ -254,6 +272,9 @@ exports[`menu toggle shows isPlain 1`] = `
|
|
|
254
272
|
<button
|
|
255
273
|
aria-expanded="false"
|
|
256
274
|
class="pf-v6-c-menu-toggle pf-m-plain"
|
|
275
|
+
data-ouia-component-id="OUIA-Generated-MenuToggle-plain-1"
|
|
276
|
+
data-ouia-component-type="PF6/MenuToggle"
|
|
277
|
+
data-ouia-safe="true"
|
|
257
278
|
type="button"
|
|
258
279
|
>
|
|
259
280
|
<span
|
|
@@ -282,6 +303,9 @@ exports[`menu toggle shows isPrimary 1`] = `
|
|
|
282
303
|
<button
|
|
283
304
|
aria-expanded="false"
|
|
284
305
|
class="pf-v6-c-menu-toggle pf-m-primary"
|
|
306
|
+
data-ouia-component-id="OUIA-Generated-MenuToggle-primary-1"
|
|
307
|
+
data-ouia-component-type="PF6/MenuToggle"
|
|
308
|
+
data-ouia-safe="true"
|
|
285
309
|
type="button"
|
|
286
310
|
>
|
|
287
311
|
<span
|
|
@@ -319,6 +343,9 @@ exports[`menu toggle shows plain text 1`] = `
|
|
|
319
343
|
<button
|
|
320
344
|
aria-expanded="false"
|
|
321
345
|
class="pf-v6-c-menu-toggle pf-m-plain pf-m-text"
|
|
346
|
+
data-ouia-component-id="OUIA-Generated-MenuToggle-plainText-1"
|
|
347
|
+
data-ouia-component-type="PF6/MenuToggle"
|
|
348
|
+
data-ouia-safe="true"
|
|
322
349
|
type="button"
|
|
323
350
|
>
|
|
324
351
|
<span
|
|
@@ -191,9 +191,11 @@ import { MenuToggle } from '@patternfly/react-core';
|
|
|
191
191
|
</React.Fragment>
|
|
192
192
|
```
|
|
193
193
|
|
|
194
|
-
### Split
|
|
194
|
+
### Split toggle with checkbox
|
|
195
195
|
|
|
196
|
-
To add
|
|
196
|
+
To add a checkbox (or other action/control) to a menu toggle, use a split button.
|
|
197
|
+
|
|
198
|
+
A `<MenuToggle>` can be rendered as a split button by adding a `splitButtonOptions` object. Elements to be displayed before the toggle button must be included in the `items` property of `splitButtonOptions`.
|
|
197
199
|
|
|
198
200
|
The following example shows a split button with a `<MenuToggleCheckbox>`.
|
|
199
201
|
|
|
@@ -203,25 +205,25 @@ Variant styling can be applied to split button toggles to adjust their appearanc
|
|
|
203
205
|
|
|
204
206
|
```
|
|
205
207
|
|
|
206
|
-
### Split
|
|
208
|
+
### Split toggle with labeled checkbox
|
|
207
209
|
|
|
208
|
-
To
|
|
210
|
+
To add a text label to a split button toggle, pass `children` to the `<MenuToggle>` component.
|
|
209
211
|
|
|
210
|
-
```ts file='
|
|
212
|
+
```ts file='MenuToggleSplitButtonCheckboxWithToggleText.tsx'
|
|
211
213
|
|
|
212
214
|
```
|
|
213
215
|
|
|
214
|
-
### Split
|
|
216
|
+
### Split toggle with checkbox and toggle text label
|
|
215
217
|
|
|
216
|
-
|
|
218
|
+
You can allow users to select a toggle checkbox by clicking either the checkbox or the text label.
|
|
217
219
|
|
|
218
|
-
|
|
220
|
+
To do so, pass `children` to the `<MenuToggleCheckbox>` component. When the menu toggle text is clicked, the checkbox's `onChange` callback will be triggered.
|
|
219
221
|
|
|
220
|
-
```ts file='
|
|
222
|
+
```ts file='MenuToggleSplitButtonCheckboxWithText.tsx'
|
|
221
223
|
|
|
222
224
|
```
|
|
223
225
|
|
|
224
|
-
### Split
|
|
226
|
+
### Split toggle with action
|
|
225
227
|
|
|
226
228
|
To add an action to a split button, pass `variant='action'` into `splitButtonOptions` and add a `<MenuToggleAction>` to the `items` property of `splitButtonOptions`.
|
|
227
229
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
|
|
3
3
|
import { render } from '@testing-library/react';
|
|
4
|
-
import * as ReactCoreUtils from '
|
|
4
|
+
import * as ReactCoreUtils from '../../../../helpers/util';
|
|
5
5
|
|
|
6
6
|
import { NavList } from '../../NavList';
|
|
7
7
|
import { NavContext } from '../../Nav';
|
|
@@ -874,7 +874,7 @@ exports[`Nav Nav List with flyout 1`] = `
|
|
|
874
874
|
data-popper-escaped="true"
|
|
875
875
|
data-popper-placement="right-start"
|
|
876
876
|
data-popper-reference-hidden="true"
|
|
877
|
-
style="position: absolute; left: 0px; top: 0px; z-index: 9999; opacity:
|
|
877
|
+
style="position: absolute; left: 0px; top: 0px; z-index: 9999; opacity: 1; transition: opacity 0ms cubic-bezier(.54, 1.5, .38, 1.11); min-width: 0px; transform: translate(0px, 0px);"
|
|
878
878
|
>
|
|
879
879
|
<div>
|
|
880
880
|
Flyout test
|
|
@@ -95,6 +95,14 @@ To remove padding at specific breakpoints, pass in 'noPadding' at those breakpoi
|
|
|
95
95
|
|
|
96
96
|
```
|
|
97
97
|
|
|
98
|
+
### Main section variations
|
|
99
|
+
|
|
100
|
+
This example shows all types of page sections.
|
|
101
|
+
|
|
102
|
+
```ts file="./PageMainSectionVariations.tsx"
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
|
|
98
106
|
### Group section
|
|
99
107
|
|
|
100
108
|
To group page content sections, add 1 or more `<PageGroup>` components to a `<Page>`.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Page,
|
|
4
|
+
Masthead,
|
|
5
|
+
MastheadToggle,
|
|
6
|
+
MastheadMain,
|
|
7
|
+
MastheadBrand,
|
|
8
|
+
MastheadContent,
|
|
9
|
+
PageSidebar,
|
|
10
|
+
PageSidebarBody,
|
|
11
|
+
PageSection,
|
|
12
|
+
PageToggleButton,
|
|
13
|
+
Toolbar,
|
|
14
|
+
ToolbarContent,
|
|
15
|
+
ToolbarItem
|
|
16
|
+
} from '@patternfly/react-core';
|
|
17
|
+
import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
|
|
18
|
+
|
|
19
|
+
export const PageMainSectionPadding: React.FunctionComponent = () => {
|
|
20
|
+
const [isSidebarOpen, setIsSidebarOpen] = React.useState(true);
|
|
21
|
+
|
|
22
|
+
const onSidebarToggle = () => {
|
|
23
|
+
setIsSidebarOpen(!isSidebarOpen);
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const headerToolbar = (
|
|
27
|
+
<Toolbar id="main-variations-toolbar">
|
|
28
|
+
<ToolbarContent>
|
|
29
|
+
<ToolbarItem>header-tools</ToolbarItem>
|
|
30
|
+
</ToolbarContent>
|
|
31
|
+
</Toolbar>
|
|
32
|
+
);
|
|
33
|
+
|
|
34
|
+
const header = (
|
|
35
|
+
<Masthead>
|
|
36
|
+
<MastheadToggle>
|
|
37
|
+
<PageToggleButton
|
|
38
|
+
variant="plain"
|
|
39
|
+
aria-label="Global navigation"
|
|
40
|
+
isSidebarOpen={isSidebarOpen}
|
|
41
|
+
onSidebarToggle={onSidebarToggle}
|
|
42
|
+
id="main-variations-nav-toggle"
|
|
43
|
+
>
|
|
44
|
+
<BarsIcon />
|
|
45
|
+
</PageToggleButton>
|
|
46
|
+
</MastheadToggle>
|
|
47
|
+
<MastheadMain>
|
|
48
|
+
<MastheadBrand href="https://patternfly.org" target="_blank">
|
|
49
|
+
Logo
|
|
50
|
+
</MastheadBrand>
|
|
51
|
+
</MastheadMain>
|
|
52
|
+
<MastheadContent>{headerToolbar}</MastheadContent>
|
|
53
|
+
</Masthead>
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
const sidebar = (
|
|
57
|
+
<PageSidebar isSidebarOpen={isSidebarOpen} id="main-variations-sidebar">
|
|
58
|
+
<PageSidebarBody>Navigation</PageSidebarBody>
|
|
59
|
+
</PageSidebar>
|
|
60
|
+
);
|
|
61
|
+
|
|
62
|
+
return (
|
|
63
|
+
<Page header={header} sidebar={sidebar}>
|
|
64
|
+
<PageSection type="subnav">
|
|
65
|
+
Section with <code>type="subnav"</code> for horizontal subnav navigation
|
|
66
|
+
</PageSection>
|
|
67
|
+
<PageSection type="nav">
|
|
68
|
+
Section with <code>type="nav"</code> for tertiary navigation
|
|
69
|
+
</PageSection>
|
|
70
|
+
<PageSection type="tabs">
|
|
71
|
+
Section with <code>type="tabs"</code> for tabs
|
|
72
|
+
</PageSection>
|
|
73
|
+
<PageSection type="breadcrumb">
|
|
74
|
+
Section with <code>type="breadcrumb"</code> for breadcrumbs
|
|
75
|
+
</PageSection>
|
|
76
|
+
<PageSection>
|
|
77
|
+
Section without <code>type</code> prop or <code>type="default"</code> for main sections
|
|
78
|
+
</PageSection>
|
|
79
|
+
<PageSection type="wizard">
|
|
80
|
+
Section with <code>type="wizard"</code> for wizards
|
|
81
|
+
</PageSection>
|
|
82
|
+
</Page>
|
|
83
|
+
);
|
|
84
|
+
};
|
|
@@ -6,6 +6,9 @@ exports[`PaginationOptionsMenu should match snapshot (auto-generated) 1`] = `
|
|
|
6
6
|
aria-expanded="false"
|
|
7
7
|
aria-haspopup="listbox"
|
|
8
8
|
class="pf-v6-c-menu-toggle pf-m-plain pf-m-text"
|
|
9
|
+
data-ouia-component-id="OUIA-Generated-MenuToggle-plainText-1"
|
|
10
|
+
data-ouia-component-type="PF6/MenuToggle"
|
|
11
|
+
data-ouia-safe="true"
|
|
9
12
|
id="''-toggle"
|
|
10
13
|
type="button"
|
|
11
14
|
>
|