@patternfly/react-core 6.3.0-prerelease.20 → 6.3.0-prerelease.22
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 +12 -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/Button/Button.d.ts +8 -0
- package/dist/esm/components/Button/Button.d.ts.map +1 -1
- package/dist/esm/components/Button/Button.js +18 -5
- package/dist/esm/components/Button/Button.js.map +1 -1
- package/dist/esm/components/Button/hamburgerIcon.d.ts +2 -0
- package/dist/esm/components/Button/hamburgerIcon.d.ts.map +1 -0
- package/dist/esm/components/Button/hamburgerIcon.js +7 -0
- package/dist/esm/components/Button/hamburgerIcon.js.map +1 -0
- package/dist/esm/components/ClipboardCopy/ClipboardCopyToggle.js +1 -1
- package/dist/esm/components/ClipboardCopy/ClipboardCopyToggle.js.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggle.d.ts +2 -0
- package/dist/esm/components/MenuToggle/MenuToggle.d.ts.map +1 -1
- package/dist/esm/components/MenuToggle/MenuToggle.js +4 -3
- package/dist/esm/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/esm/components/Page/PageToggleButton.d.ts +4 -0
- package/dist/esm/components/Page/PageToggleButton.d.ts.map +1 -1
- package/dist/esm/components/Page/PageToggleButton.js +2 -2
- package/dist/esm/components/Page/PageToggleButton.js.map +1 -1
- package/dist/esm/components/TreeView/TreeView.d.ts +5 -0
- package/dist/esm/components/TreeView/TreeView.d.ts.map +1 -1
- package/dist/esm/components/TreeView/TreeView.js +5 -5
- package/dist/esm/components/TreeView/TreeView.js.map +1 -1
- package/dist/esm/components/TreeView/TreeViewListItem.d.ts +5 -0
- package/dist/esm/components/TreeView/TreeViewListItem.d.ts.map +1 -1
- package/dist/esm/components/TreeView/TreeViewListItem.js +7 -3
- package/dist/esm/components/TreeView/TreeViewListItem.js.map +1 -1
- package/dist/esm/components/TreeView/TreeViewRoot.d.ts.map +1 -1
- package/dist/esm/components/TreeView/TreeViewRoot.js +2 -2
- package/dist/esm/components/TreeView/TreeViewRoot.js.map +1 -1
- package/dist/esm/demos/DashboardHeader.d.ts.map +1 -1
- package/dist/esm/demos/DashboardHeader.js +1 -2
- package/dist/esm/demos/DashboardHeader.js.map +1 -1
- package/dist/js/components/Button/Button.d.ts +8 -0
- package/dist/js/components/Button/Button.d.ts.map +1 -1
- package/dist/js/components/Button/Button.js +18 -5
- package/dist/js/components/Button/Button.js.map +1 -1
- package/dist/js/components/Button/hamburgerIcon.d.ts +2 -0
- package/dist/js/components/Button/hamburgerIcon.d.ts.map +1 -0
- package/dist/js/components/Button/hamburgerIcon.js +11 -0
- package/dist/js/components/Button/hamburgerIcon.js.map +1 -0
- package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.js +1 -1
- package/dist/js/components/ClipboardCopy/ClipboardCopyToggle.js.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggle.d.ts +2 -0
- package/dist/js/components/MenuToggle/MenuToggle.d.ts.map +1 -1
- package/dist/js/components/MenuToggle/MenuToggle.js +4 -3
- package/dist/js/components/MenuToggle/MenuToggle.js.map +1 -1
- package/dist/js/components/Page/PageToggleButton.d.ts +4 -0
- package/dist/js/components/Page/PageToggleButton.d.ts.map +1 -1
- package/dist/js/components/Page/PageToggleButton.js +2 -2
- package/dist/js/components/Page/PageToggleButton.js.map +1 -1
- package/dist/js/components/TreeView/TreeView.d.ts +5 -0
- package/dist/js/components/TreeView/TreeView.d.ts.map +1 -1
- package/dist/js/components/TreeView/TreeView.js +5 -5
- package/dist/js/components/TreeView/TreeView.js.map +1 -1
- package/dist/js/components/TreeView/TreeViewListItem.d.ts +5 -0
- package/dist/js/components/TreeView/TreeViewListItem.d.ts.map +1 -1
- package/dist/js/components/TreeView/TreeViewListItem.js +6 -2
- package/dist/js/components/TreeView/TreeViewListItem.js.map +1 -1
- package/dist/js/components/TreeView/TreeViewRoot.d.ts.map +1 -1
- package/dist/js/components/TreeView/TreeViewRoot.js +2 -2
- package/dist/js/components/TreeView/TreeViewRoot.js.map +1 -1
- package/dist/js/demos/DashboardHeader.d.ts.map +1 -1
- package/dist/js/demos/DashboardHeader.js +1 -2
- package/dist/js/demos/DashboardHeader.js.map +1 -1
- package/dist/styles/base-no-reset.css +41 -0
- package/dist/styles/base.css +41 -0
- package/dist/umd/assets/{output-DzgMn5vn.css → output-uvU5KOTz.css} +15361 -15299
- package/dist/umd/react-core.min.js +3 -3
- 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/Button/Button.tsx +34 -4
- package/src/components/Button/__tests__/Button.test.tsx +373 -92
- package/src/components/Button/__tests__/__snapshots__/Button.test.tsx.snap +1 -1
- package/src/components/Button/examples/Button.md +49 -13
- package/src/components/Button/examples/ButtonHamburger.tsx +9 -0
- package/src/components/Button/examples/ButtonSettings.tsx +10 -0
- package/src/components/Button/hamburgerIcon.tsx +13 -0
- package/src/components/ClipboardCopy/ClipboardCopyToggle.tsx +1 -1
- package/src/components/ClipboardCopy/__tests__/ClipboardCopyToggle.test.tsx +7 -1
- package/src/components/ClipboardCopy/__tests__/__snapshots__/ClipboardCopyToggle.test.tsx.snap +0 -1
- package/src/components/Masthead/examples/MastheadBasic.tsx +1 -2
- package/src/components/Masthead/examples/MastheadBasicMixedContent.tsx +1 -2
- package/src/components/Masthead/examples/MastheadDisplayInline.tsx +1 -2
- package/src/components/Masthead/examples/MastheadDisplayStack.tsx +1 -2
- package/src/components/Masthead/examples/MastheadDisplayStackInlineResponsive.tsx +1 -2
- package/src/components/Masthead/examples/MastheadInsets.tsx +1 -2
- package/src/components/Masthead/examples/MastheadLogoCustomComponent.tsx +1 -2
- package/src/components/MenuToggle/MenuToggle.tsx +6 -1
- package/src/components/MenuToggle/__tests__/MenuToggle.test.tsx +59 -45
- package/src/components/MenuToggle/__tests__/__snapshots__/MenuToggle.test.tsx.snap +9 -9
- package/src/components/MenuToggle/examples/MenuToggle.md +14 -30
- package/src/components/MenuToggle/examples/MenuToggleCustomIcon.tsx +17 -0
- package/src/components/MenuToggle/examples/MenuToggleSettings.tsx +8 -0
- package/src/components/Page/PageToggleButton.tsx +9 -2
- package/src/components/Page/examples/PageCenteredSection.tsx +2 -5
- package/src/components/Page/examples/PageGroupSection.tsx +2 -5
- package/src/components/Page/examples/PageMainSectionPadding.tsx +2 -5
- package/src/components/Page/examples/PageMainSectionVariations.tsx +2 -5
- package/src/components/Page/examples/PageMultipleSidebarBody.tsx +2 -5
- package/src/components/Page/examples/PageUncontrolledNav.tsx +1 -4
- package/src/components/Page/examples/PageVerticalNav.tsx +2 -5
- package/src/components/Page/examples/PageWithOrWithoutFill.tsx +2 -5
- package/src/components/TreeView/TreeView.tsx +9 -0
- package/src/components/TreeView/TreeViewListItem.tsx +17 -2
- package/src/components/TreeView/TreeViewRoot.tsx +4 -2
- package/src/components/TreeView/__tests__/TreeView.test.tsx +8 -1
- package/src/components/TreeView/__tests__/TreeViewList.test.tsx +39 -0
- package/src/components/TreeView/__tests__/TreeViewListItem.test.tsx +7 -3
- package/src/components/TreeView/__tests__/__snapshots__/TreeView.test.tsx.snap +3 -0
- package/src/components/TreeView/examples/TreeViewCompact.tsx +1 -1
- package/src/components/TreeView/examples/TreeViewCompactNoBackground.tsx +8 -1
- package/src/components/TreeView/examples/TreeViewGuides.tsx +1 -1
- package/src/components/TreeView/examples/TreeViewMultiselectable.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewSelectionExpansion.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewSingleSelectable.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewWithActionItems.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewWithBadges.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewWithCheckboxes.tsx +9 -1
- package/src/components/TreeView/examples/TreeViewWithCustomBadges.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewWithIconPerItem.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewWithIcons.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewWithMemoization.tsx +1 -0
- package/src/components/TreeView/examples/TreeViewWithSearch.tsx +1 -0
- package/src/demos/DashboardHeader.tsx +2 -5
- package/src/demos/NotificationDrawer/examples/NotificationDrawerBasic.tsx +2 -5
- package/src/demos/NotificationDrawer/examples/NotificationDrawerGrouped.tsx +2 -5
- package/src/demos/RTL/examples/PaginatedTable.tsx +2 -9
- package/src/demos/examples/Masthead/MastheadWithHorizontalNav.tsx +1 -1
- package/src/demos/examples/Masthead/MastheadWithUtilitiesAndUserDropdownMenu.tsx +2 -5
- package/src/demos/examples/Nav/NavFlyout.tsx +3 -6
- package/src/demos/examples/Nav/NavHorizontal.tsx +1 -1
- package/src/demos/examples/Nav/NavHorizontalWithSubnav.tsx +2 -5
- package/src/demos/examples/Nav/NavManual.tsx +3 -6
- package/src/demos/examples/Page/PageContextSelector.tsx +3 -6
- package/src/demos/examples/Page/PageStickySectionBreadcrumb.tsx +2 -5
- package/src/demos/examples/Page/PageStickySectionGroup.tsx +2 -5
- package/src/demos/examples/Page/PageStickySectionGroupAlternate.tsx +2 -5
- package/src/demos/examples/Toolbar/ConsoleLogViewerToolbar.tsx +2 -3
- package/src/demos/examples/Wizard/InPageWithDrawer.tsx +1 -4
- package/src/demos/examples/Wizard/InPageWithDrawerInformationalStep.tsx +1 -4
|
@@ -8,7 +8,7 @@ propComponents: ['MenuToggle', 'MenuToggleAction', 'MenuToggleCheckbox']
|
|
|
8
8
|
|
|
9
9
|
import { Fragment, useState } from 'react';
|
|
10
10
|
import './MenuToggle.css'
|
|
11
|
-
import
|
|
11
|
+
import PlusIcon from '@patternfly/react-icons/dist/esm/icons/plus-icon';
|
|
12
12
|
import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
|
|
13
13
|
import imgAvatar from '@patternfly/react-core/src/components/assets/avatarImg.svg';
|
|
14
14
|
import TimesIcon from '@patternfly/react-icons/dist/esm/icons/times-icon';
|
|
@@ -70,38 +70,22 @@ import { MenuToggle, Badge } from '@patternfly/react-core';
|
|
|
70
70
|
</Fragment>
|
|
71
71
|
```
|
|
72
72
|
|
|
73
|
-
###
|
|
73
|
+
### Settings toggle
|
|
74
|
+
|
|
75
|
+
To create a "settings" menu toggle that will animate on hover and focus, you can pass the `isSettings` property in. Doing so will override the `icon` property, as a specific icon is used internally for the animations.
|
|
74
76
|
|
|
75
|
-
|
|
77
|
+
```ts file="./MenuToggleSettings.tsx"
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Custom icons
|
|
82
|
+
|
|
83
|
+
To add a recognizable icon to a menu toggle, use the `icon` property. The following example adds a `PlusIcon` to the toggle.
|
|
76
84
|
|
|
77
85
|
For most basic icons, it is recommended to wrap it inside our [icon component](/components/icon).
|
|
78
86
|
|
|
79
|
-
```ts
|
|
80
|
-
import { Fragment } from 'react';
|
|
81
|
-
import { MenuToggle } from '@patternfly/react-core';
|
|
82
|
-
import CogIcon from '@patternfly/react-icons/dist/esm/icons/cog-icon';
|
|
87
|
+
```ts file="./MenuToggleCustomIcon.tsx"
|
|
83
88
|
|
|
84
|
-
<Fragment>
|
|
85
|
-
<MenuToggle
|
|
86
|
-
icon={<CogIcon />}
|
|
87
|
-
variant="primary"
|
|
88
|
-
>
|
|
89
|
-
Icon
|
|
90
|
-
</MenuToggle>{' '}
|
|
91
|
-
<MenuToggle
|
|
92
|
-
icon={<CogIcon />}
|
|
93
|
-
variant="secondary"
|
|
94
|
-
>
|
|
95
|
-
Icon
|
|
96
|
-
</MenuToggle>{' '}
|
|
97
|
-
<MenuToggle
|
|
98
|
-
icon={<CogIcon />}
|
|
99
|
-
variant="secondary"
|
|
100
|
-
isDisabled
|
|
101
|
-
>
|
|
102
|
-
Icon
|
|
103
|
-
</MenuToggle>
|
|
104
|
-
</Fragment>;
|
|
105
89
|
```
|
|
106
90
|
|
|
107
91
|
### With avatar and text
|
|
@@ -202,13 +186,13 @@ Variant styling can be applied to split button toggles to adjust their appearanc
|
|
|
202
186
|
|
|
203
187
|
You can allow users to select a toggle checkbox by clicking either the checkbox or the text label.
|
|
204
188
|
|
|
205
|
-
To link a split toggle label to the toggle's checkbox, pass both the label and the `<MenuToggleCheckbox>` component to `splitButtonItems`.
|
|
189
|
+
To link a split toggle label to the toggle's checkbox, pass both the label and the `<MenuToggleCheckbox>` component to `splitButtonItems`.
|
|
206
190
|
|
|
207
191
|
```ts file='MenuToggleSplitButtonCheckboxWithText.tsx'
|
|
208
192
|
|
|
209
193
|
```
|
|
210
194
|
|
|
211
|
-
### Split toggle with checkbox and toggle text
|
|
195
|
+
### Split toggle with checkbox and toggle text
|
|
212
196
|
|
|
213
197
|
To link a split toggle label to the toggle button itself, pass the label to the `<MenuToggle>` component, instead of `splitButtonItems`.
|
|
214
198
|
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Fragment } from 'react';
|
|
2
|
+
import { MenuToggle } from '@patternfly/react-core';
|
|
3
|
+
import PlusIcon from '@patternfly/react-icons/dist/esm/icons/plus-icon';
|
|
4
|
+
|
|
5
|
+
export const MenuToggleCustomIcon: React.FC = () => (
|
|
6
|
+
<Fragment>
|
|
7
|
+
<MenuToggle icon={<PlusIcon />} variant="primary">
|
|
8
|
+
Icon
|
|
9
|
+
</MenuToggle>{' '}
|
|
10
|
+
<MenuToggle icon={<PlusIcon />} variant="secondary">
|
|
11
|
+
Icon
|
|
12
|
+
</MenuToggle>{' '}
|
|
13
|
+
<MenuToggle icon={<PlusIcon />} variant="secondary" isDisabled>
|
|
14
|
+
Icon
|
|
15
|
+
</MenuToggle>
|
|
16
|
+
</Fragment>
|
|
17
|
+
);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import { MenuToggle } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const MenuToggleSettings: React.FunctionComponent = () => (
|
|
5
|
+
<Fragment>
|
|
6
|
+
<MenuToggle isSettings>Settings</MenuToggle> <MenuToggle isSettings variant="plain" aria-label="Settings" />
|
|
7
|
+
</Fragment>
|
|
8
|
+
);
|
|
@@ -10,6 +10,10 @@ export interface PageToggleButtonProps extends ButtonProps {
|
|
|
10
10
|
onSidebarToggle?: () => void;
|
|
11
11
|
/** Button id */
|
|
12
12
|
id?: string;
|
|
13
|
+
/** Adds an accessible name to the toggle button. */
|
|
14
|
+
'aria-label'?: string;
|
|
15
|
+
/** Flag indicating whether the hamburger button variation with animations should be used. */
|
|
16
|
+
isHamburgerButton?: boolean;
|
|
13
17
|
}
|
|
14
18
|
|
|
15
19
|
export const PageToggleButton: React.FunctionComponent<PageToggleButtonProps> = ({
|
|
@@ -17,6 +21,8 @@ export const PageToggleButton: React.FunctionComponent<PageToggleButtonProps> =
|
|
|
17
21
|
isSidebarOpen = true,
|
|
18
22
|
onSidebarToggle = () => undefined as any,
|
|
19
23
|
id = 'nav-toggle',
|
|
24
|
+
'aria-label': ariaLabel = 'Side navigation toggle',
|
|
25
|
+
isHamburgerButton,
|
|
20
26
|
...props
|
|
21
27
|
}: PageToggleButtonProps) => (
|
|
22
28
|
<PageContextConsumer>
|
|
@@ -32,12 +38,13 @@ export const PageToggleButton: React.FunctionComponent<PageToggleButtonProps> =
|
|
|
32
38
|
<Button
|
|
33
39
|
id={id}
|
|
34
40
|
onClick={sidebarToggle}
|
|
35
|
-
aria-label=
|
|
41
|
+
aria-label={ariaLabel}
|
|
36
42
|
aria-expanded={sidebarOpen ? 'true' : 'false'}
|
|
37
43
|
variant={ButtonVariant.plain}
|
|
44
|
+
isHamburger={isHamburgerButton}
|
|
38
45
|
{...props}
|
|
39
46
|
>
|
|
40
|
-
{children}
|
|
47
|
+
{!isHamburgerButton && children}
|
|
41
48
|
</Button>
|
|
42
49
|
);
|
|
43
50
|
}}
|
|
@@ -17,7 +17,6 @@ import {
|
|
|
17
17
|
Card,
|
|
18
18
|
CardBody
|
|
19
19
|
} from '@patternfly/react-core';
|
|
20
|
-
import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
|
|
21
20
|
import pageSectionWidthLimitMaxWidth from '@patternfly/react-tokens/dist/esm/c_page_section_m_limit_width_MaxWidth';
|
|
22
21
|
|
|
23
22
|
export const PageCenteredSection: React.FunctionComponent = () => {
|
|
@@ -40,14 +39,12 @@ export const PageCenteredSection: React.FunctionComponent = () => {
|
|
|
40
39
|
<MastheadMain>
|
|
41
40
|
<MastheadToggle>
|
|
42
41
|
<PageToggleButton
|
|
43
|
-
variant="plain"
|
|
44
42
|
aria-label="Global navigation"
|
|
45
43
|
isSidebarOpen={isSidebarOpen}
|
|
46
44
|
onSidebarToggle={onSidebarToggle}
|
|
47
45
|
id="centered-nav-toggle"
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
</PageToggleButton>
|
|
46
|
+
isHamburgerButton
|
|
47
|
+
/>
|
|
51
48
|
</MastheadToggle>
|
|
52
49
|
<MastheadBrand>
|
|
53
50
|
<MastheadLogo href="https://patternfly.org" target="_blank">
|
|
@@ -22,7 +22,6 @@ import {
|
|
|
22
22
|
ToolbarContent,
|
|
23
23
|
ToolbarItem
|
|
24
24
|
} from '@patternfly/react-core';
|
|
25
|
-
import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
|
|
26
25
|
|
|
27
26
|
export const PageGroupSection: React.FunctionComponent = () => {
|
|
28
27
|
const [isSidebarOpen, setIsSidebarOpen] = useState(true);
|
|
@@ -44,14 +43,12 @@ export const PageGroupSection: React.FunctionComponent = () => {
|
|
|
44
43
|
<MastheadMain>
|
|
45
44
|
<MastheadToggle>
|
|
46
45
|
<PageToggleButton
|
|
47
|
-
variant="plain"
|
|
48
46
|
aria-label="Global navigation"
|
|
49
47
|
isSidebarOpen={isSidebarOpen}
|
|
50
48
|
onSidebarToggle={onSidebarToggle}
|
|
51
49
|
id="group-section-nav-toggle"
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
</PageToggleButton>
|
|
50
|
+
isHamburgerButton
|
|
51
|
+
/>
|
|
55
52
|
</MastheadToggle>
|
|
56
53
|
<MastheadBrand>
|
|
57
54
|
<MastheadLogo href="https://patternfly.org" target="_blank">
|
|
@@ -15,7 +15,6 @@ import {
|
|
|
15
15
|
ToolbarContent,
|
|
16
16
|
ToolbarItem
|
|
17
17
|
} from '@patternfly/react-core';
|
|
18
|
-
import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
|
|
19
18
|
|
|
20
19
|
export const PageMainSectionPadding: React.FunctionComponent = () => {
|
|
21
20
|
const [isSidebarOpen, setIsSidebarOpen] = useState(true);
|
|
@@ -37,14 +36,12 @@ export const PageMainSectionPadding: React.FunctionComponent = () => {
|
|
|
37
36
|
<MastheadMain>
|
|
38
37
|
<MastheadToggle>
|
|
39
38
|
<PageToggleButton
|
|
40
|
-
variant="plain"
|
|
41
39
|
aria-label="Global navigation"
|
|
42
40
|
isSidebarOpen={isSidebarOpen}
|
|
43
41
|
onSidebarToggle={onSidebarToggle}
|
|
44
42
|
id="main-padding-nav-toggle"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
</PageToggleButton>
|
|
43
|
+
isHamburgerButton
|
|
44
|
+
/>
|
|
48
45
|
</MastheadToggle>
|
|
49
46
|
<MastheadBrand>
|
|
50
47
|
<MastheadLogo href="https://patternfly.org" target="_blank">
|
|
@@ -15,7 +15,6 @@ import {
|
|
|
15
15
|
ToolbarContent,
|
|
16
16
|
ToolbarItem
|
|
17
17
|
} from '@patternfly/react-core';
|
|
18
|
-
import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
|
|
19
18
|
|
|
20
19
|
export const PageMainSectionPadding: React.FunctionComponent = () => {
|
|
21
20
|
const [isSidebarOpen, setIsSidebarOpen] = useState(true);
|
|
@@ -37,14 +36,12 @@ export const PageMainSectionPadding: React.FunctionComponent = () => {
|
|
|
37
36
|
<MastheadMain>
|
|
38
37
|
<MastheadToggle>
|
|
39
38
|
<PageToggleButton
|
|
40
|
-
variant="plain"
|
|
41
39
|
aria-label="Global navigation"
|
|
42
40
|
isSidebarOpen={isSidebarOpen}
|
|
43
41
|
onSidebarToggle={onSidebarToggle}
|
|
44
42
|
id="main-variations-nav-toggle"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
</PageToggleButton>
|
|
43
|
+
isHamburgerButton
|
|
44
|
+
/>
|
|
48
45
|
</MastheadToggle>
|
|
49
46
|
<MastheadBrand>
|
|
50
47
|
<MastheadLogo href="https://patternfly.org" target="_blank">
|
|
@@ -15,7 +15,6 @@ import {
|
|
|
15
15
|
ToolbarContent,
|
|
16
16
|
ToolbarItem
|
|
17
17
|
} from '@patternfly/react-core';
|
|
18
|
-
import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
|
|
19
18
|
|
|
20
19
|
export const PageMultipleSidebarBody: React.FunctionComponent = () => {
|
|
21
20
|
const [isSidebarOpen, setIsSidebarOpen] = useState(true);
|
|
@@ -37,14 +36,12 @@ export const PageMultipleSidebarBody: React.FunctionComponent = () => {
|
|
|
37
36
|
<MastheadMain>
|
|
38
37
|
<MastheadToggle>
|
|
39
38
|
<PageToggleButton
|
|
40
|
-
variant="plain"
|
|
41
39
|
aria-label="Global navigation"
|
|
42
40
|
isSidebarOpen={isSidebarOpen}
|
|
43
41
|
onSidebarToggle={onSidebarToggle}
|
|
44
42
|
id="multiple-sidebar-body-nav-toggle"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
</PageToggleButton>
|
|
43
|
+
isHamburgerButton
|
|
44
|
+
/>
|
|
48
45
|
</MastheadToggle>
|
|
49
46
|
<MastheadBrand>
|
|
50
47
|
<MastheadLogo href="https://patternfly.org" target="_blank">
|
|
@@ -14,7 +14,6 @@ import {
|
|
|
14
14
|
ToolbarContent,
|
|
15
15
|
ToolbarItem
|
|
16
16
|
} from '@patternfly/react-core';
|
|
17
|
-
import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
|
|
18
17
|
|
|
19
18
|
export const PageUncontrolledNav: React.FunctionComponent = () => {
|
|
20
19
|
const headerToolbar = (
|
|
@@ -29,9 +28,7 @@ export const PageUncontrolledNav: React.FunctionComponent = () => {
|
|
|
29
28
|
<Masthead>
|
|
30
29
|
<MastheadMain>
|
|
31
30
|
<MastheadToggle>
|
|
32
|
-
<PageToggleButton
|
|
33
|
-
<BarsIcon />
|
|
34
|
-
</PageToggleButton>
|
|
31
|
+
<PageToggleButton isHamburgerButton aria-label="Global navigation" id="uncontrolled-nav-toggle" />
|
|
35
32
|
</MastheadToggle>
|
|
36
33
|
<MastheadBrand>
|
|
37
34
|
<MastheadLogo href="https://patternfly.org" target="_blank">
|
|
@@ -15,7 +15,6 @@ import {
|
|
|
15
15
|
ToolbarContent,
|
|
16
16
|
ToolbarItem
|
|
17
17
|
} from '@patternfly/react-core';
|
|
18
|
-
import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
|
|
19
18
|
|
|
20
19
|
export const PageVerticalNav: React.FunctionComponent = () => {
|
|
21
20
|
const [isSidebarOpen, setIsSidebarOpen] = useState(true);
|
|
@@ -37,14 +36,12 @@ export const PageVerticalNav: React.FunctionComponent = () => {
|
|
|
37
36
|
<MastheadMain>
|
|
38
37
|
<MastheadToggle>
|
|
39
38
|
<PageToggleButton
|
|
40
|
-
|
|
39
|
+
isHamburgerButton
|
|
41
40
|
aria-label="Global navigation"
|
|
42
41
|
isSidebarOpen={isSidebarOpen}
|
|
43
42
|
onSidebarToggle={onSidebarToggle}
|
|
44
43
|
id="vertical-nav-toggle"
|
|
45
|
-
|
|
46
|
-
<BarsIcon />
|
|
47
|
-
</PageToggleButton>
|
|
44
|
+
/>
|
|
48
45
|
</MastheadToggle>
|
|
49
46
|
<MastheadBrand>
|
|
50
47
|
<MastheadLogo href="https://patternfly.org" target="_blank">
|
|
@@ -15,7 +15,6 @@ import {
|
|
|
15
15
|
ToolbarContent,
|
|
16
16
|
ToolbarItem
|
|
17
17
|
} from '@patternfly/react-core';
|
|
18
|
-
import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
|
|
19
18
|
|
|
20
19
|
export const PageWithOrWithoutFill: React.FunctionComponent = () => {
|
|
21
20
|
const [isSidebarOpen, setIsSidebarOpen] = useState(true);
|
|
@@ -37,14 +36,12 @@ export const PageWithOrWithoutFill: React.FunctionComponent = () => {
|
|
|
37
36
|
<MastheadMain>
|
|
38
37
|
<MastheadToggle>
|
|
39
38
|
<PageToggleButton
|
|
40
|
-
|
|
39
|
+
isHamburgerButton
|
|
41
40
|
aria-label="Global navigation"
|
|
42
41
|
isSidebarOpen={isSidebarOpen}
|
|
43
42
|
onSidebarToggle={onSidebarToggle}
|
|
44
43
|
id="fill-nav-toggle"
|
|
45
|
-
|
|
46
|
-
<BarsIcon />
|
|
47
|
-
</PageToggleButton>
|
|
44
|
+
/>
|
|
48
45
|
</MastheadToggle>
|
|
49
46
|
<MastheadBrand>
|
|
50
47
|
<MastheadLogo href="https://patternfly.org" target="_blank">
|
|
@@ -103,6 +103,11 @@ export interface TreeViewProps {
|
|
|
103
103
|
useMemo?: boolean;
|
|
104
104
|
/** Variant presentation styles for the tree view. */
|
|
105
105
|
variant?: 'default' | 'compact' | 'compactNoBackground';
|
|
106
|
+
/** Flag indicating whether a tree view has animations. This will always render
|
|
107
|
+
* nested tree view items rather than dynamically rendering them. This prop will be removed in
|
|
108
|
+
* the next breaking change release in favor of defaulting to always-rendered items.
|
|
109
|
+
*/
|
|
110
|
+
hasAnimations?: boolean;
|
|
106
111
|
}
|
|
107
112
|
|
|
108
113
|
export const TreeView: React.FunctionComponent<TreeViewProps> = ({
|
|
@@ -130,6 +135,7 @@ export const TreeView: React.FunctionComponent<TreeViewProps> = ({
|
|
|
130
135
|
useMemo,
|
|
131
136
|
'aria-label': ariaLabel,
|
|
132
137
|
'aria-labelledby': ariaLabelledby,
|
|
138
|
+
hasAnimations,
|
|
133
139
|
...props
|
|
134
140
|
}: TreeViewProps) => {
|
|
135
141
|
const treeViewList = (
|
|
@@ -139,11 +145,13 @@ export const TreeView: React.FunctionComponent<TreeViewProps> = ({
|
|
|
139
145
|
isMultiSelectable={isMultiSelectable}
|
|
140
146
|
aria-label={ariaLabel}
|
|
141
147
|
aria-labelledby={ariaLabelledby}
|
|
148
|
+
{...props}
|
|
142
149
|
>
|
|
143
150
|
{data.map((item) => (
|
|
144
151
|
<TreeViewListItem
|
|
145
152
|
key={item.id?.toString() || item.name?.toString()}
|
|
146
153
|
name={item.name}
|
|
154
|
+
hasAnimations={hasAnimations}
|
|
147
155
|
title={item.title}
|
|
148
156
|
id={item.id}
|
|
149
157
|
isExpanded={allExpanded}
|
|
@@ -172,6 +180,7 @@ export const TreeView: React.FunctionComponent<TreeViewProps> = ({
|
|
|
172
180
|
<TreeView
|
|
173
181
|
data={item.children}
|
|
174
182
|
isNested
|
|
183
|
+
hasAnimations={hasAnimations}
|
|
175
184
|
parentItem={item}
|
|
176
185
|
hasCheckboxes={hasCheckboxes}
|
|
177
186
|
hasBadges={hasBadges}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { memo, useState, useEffect } from 'react';
|
|
1
|
+
import { memo, useState, useEffect, Children, isValidElement, cloneElement } from 'react';
|
|
2
2
|
import { css } from '@patternfly/react-styles';
|
|
3
3
|
import styles from '@patternfly/react-styles/css/components/TreeView/tree-view';
|
|
4
4
|
import AngleRightIcon from '@patternfly/react-icons/dist/esm/icons/angle-right-icon';
|
|
@@ -68,6 +68,11 @@ export interface TreeViewListItemProps {
|
|
|
68
68
|
* every node in the selected item's path.
|
|
69
69
|
*/
|
|
70
70
|
useMemo?: boolean;
|
|
71
|
+
/** Flag indicating whether a tree view has animations. This will always render
|
|
72
|
+
* nested tree view items rather than dynamically rendering them. This prop will be removed in
|
|
73
|
+
* the next breaking change release in favor of defaulting to always-rendered items.
|
|
74
|
+
*/
|
|
75
|
+
hasAnimations?: boolean;
|
|
71
76
|
}
|
|
72
77
|
|
|
73
78
|
const TreeViewListItemBase: React.FunctionComponent<TreeViewListItemProps> = ({
|
|
@@ -97,6 +102,7 @@ const TreeViewListItemBase: React.FunctionComponent<TreeViewListItemProps> = ({
|
|
|
97
102
|
expandedIcon,
|
|
98
103
|
action,
|
|
99
104
|
compareItems,
|
|
105
|
+
hasAnimations,
|
|
100
106
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
101
107
|
useMemo
|
|
102
108
|
}: TreeViewListItemProps) => {
|
|
@@ -203,6 +209,15 @@ const TreeViewListItemBase: React.FunctionComponent<TreeViewListItemProps> = ({
|
|
|
203
209
|
activeItems.length > 0 &&
|
|
204
210
|
activeItems.some((item) => compareItems && item && compareItems(item, itemData));
|
|
205
211
|
|
|
212
|
+
const clonedChildren = Children.map(
|
|
213
|
+
children,
|
|
214
|
+
(child) =>
|
|
215
|
+
isValidElement(child) &&
|
|
216
|
+
cloneElement(child as React.ReactElement<any>, {
|
|
217
|
+
inert: internalIsExpanded ? undefined : ''
|
|
218
|
+
})
|
|
219
|
+
);
|
|
220
|
+
|
|
206
221
|
return (
|
|
207
222
|
<li
|
|
208
223
|
id={id}
|
|
@@ -247,7 +262,7 @@ const TreeViewListItemBase: React.FunctionComponent<TreeViewListItemProps> = ({
|
|
|
247
262
|
</GenerateId>
|
|
248
263
|
{action && <div className={css(styles.treeViewAction)}>{action}</div>}
|
|
249
264
|
</div>
|
|
250
|
-
{internalIsExpanded &&
|
|
265
|
+
{(internalIsExpanded || hasAnimations) && clonedChildren}
|
|
251
266
|
</li>
|
|
252
267
|
);
|
|
253
268
|
};
|
|
@@ -72,7 +72,7 @@ class TreeViewRoot extends Component<TreeViewRootProps> {
|
|
|
72
72
|
const activeElement = document.activeElement;
|
|
73
73
|
const key = event.key;
|
|
74
74
|
const treeItems = Array.from(this.treeRef.current?.getElementsByClassName(styles.treeViewNode)).filter(
|
|
75
|
-
(el) => !el.classList.contains('pf-m-disabled')
|
|
75
|
+
(el) => !el.classList.contains('pf-m-disabled') && !el.closest(`.${styles.treeViewList}[inert]`)
|
|
76
76
|
);
|
|
77
77
|
|
|
78
78
|
if (key === KeyTypes.Space) {
|
|
@@ -138,7 +138,9 @@ class TreeViewRoot extends Component<TreeViewRootProps> {
|
|
|
138
138
|
event.preventDefault();
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
-
const treeNodes = Array.from(this.treeRef.current?.getElementsByClassName(styles.treeViewNode))
|
|
141
|
+
const treeNodes = Array.from(this.treeRef.current?.getElementsByClassName(styles.treeViewNode)).filter(
|
|
142
|
+
(el) => !el.closest(`.${styles.treeViewList}[inert]`)
|
|
143
|
+
);
|
|
142
144
|
|
|
143
145
|
handleArrows(
|
|
144
146
|
event,
|
|
@@ -47,7 +47,8 @@ jest.mock('../TreeViewListItem', () => ({
|
|
|
47
47
|
onCollapse,
|
|
48
48
|
parentItem,
|
|
49
49
|
title,
|
|
50
|
-
useMemo
|
|
50
|
+
useMemo,
|
|
51
|
+
hasAnimations
|
|
51
52
|
}) => (
|
|
52
53
|
<div data-testid="TreeViewListItem-mock">
|
|
53
54
|
<p>{`TreeViewListItem action: ${action}`}</p>
|
|
@@ -69,6 +70,7 @@ jest.mock('../TreeViewListItem', () => ({
|
|
|
69
70
|
<p>{`TreeViewListItem parentItem: ${parentItem?.name}`}</p>
|
|
70
71
|
<p>{`TreeViewListItem title: ${title}`}</p>
|
|
71
72
|
<p>{`TreeViewListItem useMemo: ${useMemo}`}</p>
|
|
73
|
+
<p>{`TreeViewListItem hasAnimations: ${hasAnimations}`}</p>
|
|
72
74
|
<button onClick={compareItems}>compareItems clicker</button>
|
|
73
75
|
<button onClick={onCheck}>onCheck clicker</button>
|
|
74
76
|
<button onClick={onSelect}>onSelect clicker</button>
|
|
@@ -286,6 +288,11 @@ test('Passes useMemo to TreeViewListItem', () => {
|
|
|
286
288
|
|
|
287
289
|
expect(screen.getByText('TreeViewListItem useMemo: true')).toBeVisible();
|
|
288
290
|
});
|
|
291
|
+
test('Passes hasAnimations to TreeViewListItem', () => {
|
|
292
|
+
render(<TreeView data={[basicData]} hasAnimations={true} />);
|
|
293
|
+
|
|
294
|
+
expect(screen.getByText('TreeViewListItem hasAnimations: true')).toBeVisible();
|
|
295
|
+
});
|
|
289
296
|
test('Passes data.children to TreeViewListItem', () => {
|
|
290
297
|
render(<TreeView data={[{ ...basicData, children: [{ name: 'Child 1' }] }]} />);
|
|
291
298
|
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { render, screen } from '@testing-library/react';
|
|
2
2
|
import { TreeViewList } from '../TreeViewList';
|
|
3
|
+
import { TreeViewListItem } from '../TreeViewListItem';
|
|
4
|
+
import { TreeView } from '../TreeView';
|
|
3
5
|
import styles from '@patternfly/react-styles/css/components/TreeView/tree-view';
|
|
4
6
|
|
|
5
7
|
test(`Renders with class ${styles.treeView}__list by default`, () => {
|
|
@@ -84,6 +86,43 @@ test(`Does not render toolbar content when toolbar prop is not passed`, () => {
|
|
|
84
86
|
expect(screen.queryByRole('separator')).not.toBeInTheDocument();
|
|
85
87
|
});
|
|
86
88
|
|
|
89
|
+
test('Renders with inert attribute by default when TreeView is passed hasAnimations', () => {
|
|
90
|
+
const options = [
|
|
91
|
+
{
|
|
92
|
+
name: 'Parent 1',
|
|
93
|
+
id: 'parent-1',
|
|
94
|
+
children: [
|
|
95
|
+
{
|
|
96
|
+
name: 'Child 1',
|
|
97
|
+
id: 'child-1'
|
|
98
|
+
}
|
|
99
|
+
]
|
|
100
|
+
}
|
|
101
|
+
];
|
|
102
|
+
render(<TreeView hasAnimations data={options} />);
|
|
103
|
+
|
|
104
|
+
expect(screen.getByRole('group')).toHaveAttribute('inert', '');
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
test('Does not render with inert attribute when expanded and TreeView is passed hasAnimations', () => {
|
|
108
|
+
const options = [
|
|
109
|
+
{
|
|
110
|
+
name: 'Parent 1',
|
|
111
|
+
id: 'parent-1',
|
|
112
|
+
defaultExpanded: true,
|
|
113
|
+
children: [
|
|
114
|
+
{
|
|
115
|
+
name: 'Child 1',
|
|
116
|
+
id: 'child-1'
|
|
117
|
+
}
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
];
|
|
121
|
+
render(<TreeView hasAnimations data={options} />);
|
|
122
|
+
|
|
123
|
+
expect(screen.getByRole('group')).not.toHaveAttribute('inert');
|
|
124
|
+
});
|
|
125
|
+
|
|
87
126
|
test('Matches snapshot by default', () => {
|
|
88
127
|
const { asFragment } = render(<TreeViewList>Content</TreeViewList>);
|
|
89
128
|
|
|
@@ -28,7 +28,7 @@ test(`Does not render children by default`, () => {
|
|
|
28
28
|
test(`Renders children if defaultExpanded is true`, () => {
|
|
29
29
|
render(
|
|
30
30
|
<TreeViewListItem defaultExpanded={true} {...requiredProps}>
|
|
31
|
-
Content
|
|
31
|
+
<div>Content</div>
|
|
32
32
|
</TreeViewListItem>
|
|
33
33
|
);
|
|
34
34
|
|
|
@@ -38,7 +38,7 @@ test(`Renders children if defaultExpanded is true`, () => {
|
|
|
38
38
|
test(`Renders children if isExpanded is true`, () => {
|
|
39
39
|
render(
|
|
40
40
|
<TreeViewListItem isExpanded={true} {...requiredProps}>
|
|
41
|
-
Content
|
|
41
|
+
<div>Content</div>
|
|
42
42
|
</TreeViewListItem>
|
|
43
43
|
);
|
|
44
44
|
|
|
@@ -47,7 +47,11 @@ test(`Renders children if isExpanded is true`, () => {
|
|
|
47
47
|
|
|
48
48
|
test(`Renders children when toggle is clicked`, async () => {
|
|
49
49
|
const user = userEvent.setup();
|
|
50
|
-
render(
|
|
50
|
+
render(
|
|
51
|
+
<TreeViewListItem {...requiredProps}>
|
|
52
|
+
<div>Content</div>
|
|
53
|
+
</TreeViewListItem>
|
|
54
|
+
);
|
|
51
55
|
|
|
52
56
|
await user.click(screen.getByRole('button', { name: requiredProps.name }));
|
|
53
57
|
|
|
@@ -54,5 +54,5 @@ export const TreeViewCompact: React.FunctionComponent = () => {
|
|
|
54
54
|
]
|
|
55
55
|
}
|
|
56
56
|
];
|
|
57
|
-
return <TreeView aria-label="Tree View compact example" data={options} variant="compact" />;
|
|
57
|
+
return <TreeView hasAnimations aria-label="Tree View compact example" data={options} variant="compact" />;
|
|
58
58
|
};
|
|
@@ -54,5 +54,12 @@ export const TreeViewCompactNoBackground: React.FunctionComponent = () => {
|
|
|
54
54
|
]
|
|
55
55
|
}
|
|
56
56
|
];
|
|
57
|
-
return
|
|
57
|
+
return (
|
|
58
|
+
<TreeView
|
|
59
|
+
hasAnimations
|
|
60
|
+
aria-label="Tree View compact no background example"
|
|
61
|
+
data={options}
|
|
62
|
+
variant="compactNoBackground"
|
|
63
|
+
/>
|
|
64
|
+
);
|
|
58
65
|
};
|
|
@@ -60,5 +60,5 @@ export const GuidesTreeView: React.FunctionComponent = () => {
|
|
|
60
60
|
children: [{ name: 'Application 5', id: 'example8-App5' }]
|
|
61
61
|
}
|
|
62
62
|
];
|
|
63
|
-
return <TreeView aria-label="Tree View guides example" data={options} hasGuides={true} />;
|
|
63
|
+
return <TreeView hasAnimations aria-label="Tree View guides example" data={options} hasGuides={true} />;
|
|
64
64
|
};
|