@patternfly/react-core 6.5.0-prerelease.1 → 6.5.0-prerelease.11
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 +71 -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/Compass/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/AnimationsProvider/AnimationsProvider/package.json +1 -1
- package/dist/dynamic/helpers/AnimationsProvider/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/Card/CardSubtitle.d.ts +9 -0
- package/dist/esm/components/Card/CardSubtitle.d.ts.map +1 -0
- package/dist/esm/components/Card/CardSubtitle.js +10 -0
- package/dist/esm/components/Card/CardSubtitle.js.map +1 -0
- package/dist/esm/components/Card/CardTitle.d.ts +2 -0
- package/dist/esm/components/Card/CardTitle.d.ts.map +1 -1
- package/dist/esm/components/Card/CardTitle.js +5 -3
- package/dist/esm/components/Card/CardTitle.js.map +1 -1
- package/dist/esm/components/Compass/Compass.d.ts.map +1 -1
- package/dist/esm/components/Compass/Compass.js +2 -2
- package/dist/esm/components/Compass/Compass.js.map +1 -1
- package/dist/esm/components/DataList/DataList.d.ts +2 -0
- package/dist/esm/components/DataList/DataList.d.ts.map +1 -1
- package/dist/esm/components/DataList/DataList.js +2 -2
- package/dist/esm/components/DataList/DataList.js.map +1 -1
- package/dist/esm/components/Drawer/Drawer.d.ts +2 -0
- package/dist/esm/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/esm/components/Drawer/Drawer.js +2 -2
- package/dist/esm/components/Drawer/Drawer.js.map +1 -1
- package/dist/esm/components/Drawer/DrawerPanelContent.d.ts +2 -0
- package/dist/esm/components/Drawer/DrawerPanelContent.d.ts.map +1 -1
- package/dist/esm/components/Drawer/DrawerPanelContent.js +2 -2
- package/dist/esm/components/Drawer/DrawerPanelContent.js.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts +9 -2
- package/dist/esm/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSection.js +5 -3
- package/dist/esm/components/ExpandableSection/ExpandableSection.js.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.d.ts +5 -0
- package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
- package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.js +3 -2
- package/dist/esm/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
- package/dist/esm/components/Page/Page.d.ts.map +1 -1
- package/dist/esm/components/Page/Page.js +1 -0
- package/dist/esm/components/Page/Page.js.map +1 -1
- package/dist/esm/components/Page/PageContext.d.ts +1 -0
- package/dist/esm/components/Page/PageContext.d.ts.map +1 -1
- package/dist/esm/components/Page/PageContext.js +1 -0
- package/dist/esm/components/Page/PageContext.js.map +1 -1
- package/dist/esm/components/Page/PageSidebar.js +2 -2
- package/dist/esm/components/Page/PageSidebar.js.map +1 -1
- package/dist/esm/components/Progress/Progress.d.ts +2 -0
- package/dist/esm/components/Progress/Progress.d.ts.map +1 -1
- package/dist/esm/components/Progress/Progress.js +2 -2
- package/dist/esm/components/Progress/Progress.js.map +1 -1
- package/dist/esm/components/Progress/ProgressContainer.d.ts +2 -0
- package/dist/esm/components/Progress/ProgressContainer.d.ts.map +1 -1
- package/dist/esm/components/Progress/ProgressContainer.js +2 -2
- package/dist/esm/components/Progress/ProgressContainer.js.map +1 -1
- package/dist/esm/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/esm/components/Tabs/Tabs.js +2 -2
- package/dist/esm/components/Tabs/Tabs.js.map +1 -1
- package/dist/esm/components/Truncate/Truncate.d.ts.map +1 -1
- package/dist/esm/components/Truncate/Truncate.js +5 -4
- package/dist/esm/components/Truncate/Truncate.js.map +1 -1
- package/dist/js/components/Card/CardSubtitle.d.ts +9 -0
- package/dist/js/components/Card/CardSubtitle.d.ts.map +1 -0
- package/dist/js/components/Card/CardSubtitle.js +14 -0
- package/dist/js/components/Card/CardSubtitle.js.map +1 -0
- package/dist/js/components/Card/CardTitle.d.ts +2 -0
- package/dist/js/components/Card/CardTitle.d.ts.map +1 -1
- package/dist/js/components/Card/CardTitle.js +4 -2
- package/dist/js/components/Card/CardTitle.js.map +1 -1
- package/dist/js/components/Compass/Compass.d.ts.map +1 -1
- package/dist/js/components/Compass/Compass.js +1 -1
- package/dist/js/components/Compass/Compass.js.map +1 -1
- package/dist/js/components/DataList/DataList.d.ts +2 -0
- package/dist/js/components/DataList/DataList.d.ts.map +1 -1
- package/dist/js/components/DataList/DataList.js +2 -2
- package/dist/js/components/DataList/DataList.js.map +1 -1
- package/dist/js/components/Drawer/Drawer.d.ts +2 -0
- package/dist/js/components/Drawer/Drawer.d.ts.map +1 -1
- package/dist/js/components/Drawer/Drawer.js +2 -2
- package/dist/js/components/Drawer/Drawer.js.map +1 -1
- package/dist/js/components/Drawer/DrawerPanelContent.d.ts +2 -0
- package/dist/js/components/Drawer/DrawerPanelContent.d.ts.map +1 -1
- package/dist/js/components/Drawer/DrawerPanelContent.js +2 -2
- package/dist/js/components/Drawer/DrawerPanelContent.js.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSection.d.ts +9 -2
- package/dist/js/components/ExpandableSection/ExpandableSection.d.ts.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSection.js +5 -3
- package/dist/js/components/ExpandableSection/ExpandableSection.js.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts +5 -0
- package/dist/js/components/ExpandableSection/ExpandableSectionToggle.d.ts.map +1 -1
- package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js +3 -2
- package/dist/js/components/ExpandableSection/ExpandableSectionToggle.js.map +1 -1
- package/dist/js/components/Page/Page.d.ts.map +1 -1
- package/dist/js/components/Page/Page.js +1 -0
- package/dist/js/components/Page/Page.js.map +1 -1
- package/dist/js/components/Page/PageContext.d.ts +1 -0
- package/dist/js/components/Page/PageContext.d.ts.map +1 -1
- package/dist/js/components/Page/PageContext.js +1 -0
- package/dist/js/components/Page/PageContext.js.map +1 -1
- package/dist/js/components/Page/PageSidebar.js +2 -2
- package/dist/js/components/Page/PageSidebar.js.map +1 -1
- package/dist/js/components/Progress/Progress.d.ts +2 -0
- package/dist/js/components/Progress/Progress.d.ts.map +1 -1
- package/dist/js/components/Progress/Progress.js +2 -2
- package/dist/js/components/Progress/Progress.js.map +1 -1
- package/dist/js/components/Progress/ProgressContainer.d.ts +2 -0
- package/dist/js/components/Progress/ProgressContainer.d.ts.map +1 -1
- package/dist/js/components/Progress/ProgressContainer.js +2 -2
- package/dist/js/components/Progress/ProgressContainer.js.map +1 -1
- package/dist/js/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/js/components/Tabs/Tabs.js +2 -2
- package/dist/js/components/Tabs/Tabs.js.map +1 -1
- package/dist/js/components/Truncate/Truncate.d.ts.map +1 -1
- package/dist/js/components/Truncate/Truncate.js +5 -4
- package/dist/js/components/Truncate/Truncate.js.map +1 -1
- package/dist/styles/base-no-reset.css +46 -0
- package/dist/styles/base.css +53 -0
- package/dist/umd/assets/{output-COsUhzfR.css → output-CSQR1P9A.css} +20397 -20354
- 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/Card/CardSubtitle.tsx +20 -0
- package/src/components/Card/CardTitle.tsx +6 -0
- package/src/components/Card/__tests__/CardSubtitle.test.tsx +48 -0
- package/src/components/Card/__tests__/CardTitle.test.tsx +27 -17
- package/src/components/Card/__tests__/__snapshots__/CardSubtitle.test.tsx.snap +21 -0
- package/src/components/Card/__tests__/__snapshots__/CardTitle.test.tsx.snap +1 -1
- package/src/components/Card/examples/Card.md +16 -1
- package/src/components/Card/examples/CardSubtitle.tsx +9 -0
- package/src/components/Card/examples/CardSubtitleActions.tsx +107 -0
- package/src/components/ClipboardCopy/__tests__/ClipboardCopyTruncateIntegration.test.tsx +32 -0
- package/src/components/Compass/Compass.tsx +4 -2
- package/src/components/Compass/__tests__/__snapshots__/Compass.test.tsx.snap +32 -28
- package/src/components/Compass/examples/Compass.md +12 -2
- package/src/components/Compass/examples/CompassDemo.tsx +6 -6
- package/src/components/DataList/DataList.tsx +4 -0
- package/src/components/DataList/__tests__/DataList.test.tsx +6 -0
- package/src/components/DataList/examples/DataList.md +6 -0
- package/src/components/DataList/examples/DataListPlain.tsx +32 -0
- package/src/components/Drawer/Drawer.tsx +4 -0
- package/src/components/Drawer/DrawerPanelContent.tsx +4 -0
- package/src/components/Drawer/__tests__/Drawer.test.tsx +26 -1
- package/src/components/Drawer/__tests__/DrawerPanelContent.test.tsx +10 -0
- package/src/components/Drawer/examples/Drawer.md +13 -0
- package/src/components/Drawer/examples/DrawerBasicPill.tsx +57 -0
- package/src/components/Drawer/examples/DrawerPillInline.tsx +57 -0
- package/src/components/ExpandableSection/ExpandableSection.tsx +17 -5
- package/src/components/ExpandableSection/ExpandableSectionToggle.tsx +48 -38
- package/src/components/ExpandableSection/__tests__/ExpandableSection.test.tsx +63 -0
- package/src/components/ExpandableSection/__tests__/ExpandableSectionToggle.test.tsx +28 -0
- package/src/components/ExpandableSection/examples/ExpandableSection.md +16 -0
- package/src/components/ExpandableSection/examples/ExpandableSectionCustomToggle.tsx +31 -16
- package/src/components/ExpandableSection/examples/ExpandableSectionUncontrolledDynamicToggleFunction.tsx +13 -0
- package/src/components/ExpandableSection/examples/ExpandableSectionWithHeading.tsx +89 -0
- package/src/components/Page/Page.tsx +1 -0
- package/src/components/Page/PageContext.tsx +2 -0
- package/src/components/Page/PageSidebar.tsx +2 -2
- package/src/components/Page/__tests__/Generated/__snapshots__/PageSidebar.test.tsx.snap +1 -1
- package/src/components/Page/__tests__/__snapshots__/Page.test.tsx.snap +12 -12
- package/src/components/Progress/Progress.tsx +4 -0
- package/src/components/Progress/ProgressContainer.tsx +5 -2
- package/src/components/Progress/__tests__/Generated/ProgressContainer.test.tsx +1 -0
- package/src/components/Progress/__tests__/Progress.test.tsx +32 -0
- package/src/components/Progress/examples/Progress.md +2 -14
- package/src/components/Progress/examples/ProgressInteractiveFailure.tsx +55 -0
- package/src/components/Tabs/Tabs.tsx +2 -2
- package/src/components/Tabs/__tests__/Tabs.test.tsx +60 -0
- package/src/components/Tabs/__tests__/__snapshots__/Tabs.test.tsx.snap +13 -13
- package/src/components/Tabs/examples/Tabs.md +8 -0
- package/src/components/Tabs/examples/TabsSiteNav.tsx +40 -0
- package/src/components/Truncate/Truncate.tsx +5 -4
- package/src/components/Truncate/__tests__/Truncate.test.tsx +21 -3
- package/src/components/Truncate/__tests__/__snapshots__/Truncate.test.tsx.snap +3 -9
- package/src/components/Progress/examples/ProgressFailureWithoutMeasure.tsx +0 -5
- package/src/components/Progress/examples/ProgressInsideSuccess.tsx +0 -10
- package/src/components/Progress/examples/ProgressOutsideFailure.tsx +0 -10
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { useState, MouseEvent } from 'react';
|
|
2
|
+
import { ExpandableSection, ExpandableSectionToggle, Stack, StackItem } from '@patternfly/react-core';
|
|
3
|
+
import CheckCircleIcon from '@patternfly/react-icons/dist/esm/icons/check-circle-icon';
|
|
4
|
+
|
|
5
|
+
export const ExpandableSectionWithHeading = () => {
|
|
6
|
+
const [isExpanded1, setIsExpanded1] = useState(false);
|
|
7
|
+
const [isExpanded2, setIsExpanded2] = useState(false);
|
|
8
|
+
const [isExpandedDetached, setIsExpandedDetached] = useState(false);
|
|
9
|
+
|
|
10
|
+
const onToggle1 = (_event: MouseEvent, isExpanded: boolean) => {
|
|
11
|
+
setIsExpanded1(isExpanded);
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
const onToggle2 = (_event: MouseEvent, isExpanded: boolean) => {
|
|
15
|
+
setIsExpanded2(isExpanded);
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
const onToggleDetached = (isExpanded: boolean) => {
|
|
19
|
+
setIsExpandedDetached(isExpanded);
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
return (
|
|
23
|
+
<Stack hasGutter>
|
|
24
|
+
<StackItem>
|
|
25
|
+
<h4>Document with Expandable Sections</h4>
|
|
26
|
+
<p>This demonstrates how to use expandable sections with proper heading semantics.</p>
|
|
27
|
+
|
|
28
|
+
{/* Using toggleWrapper prop for proper heading semantics */}
|
|
29
|
+
<ExpandableSection
|
|
30
|
+
toggleWrapper="h5"
|
|
31
|
+
toggleText="Toggle as a heading"
|
|
32
|
+
onToggle={onToggle1}
|
|
33
|
+
isExpanded={isExpanded1}
|
|
34
|
+
>
|
|
35
|
+
<p>
|
|
36
|
+
This content is visible only when the component is expanded. The toggle text above functions as a proper
|
|
37
|
+
heading in the document structure, which is important for screen readers and other assistive technologies.
|
|
38
|
+
</p>
|
|
39
|
+
<p>
|
|
40
|
+
When using the <code>toggleWrapper</code> prop with heading elements (h1-h6), the button is rendered inside
|
|
41
|
+
the heading element, maintaining proper semantic structure.
|
|
42
|
+
</p>
|
|
43
|
+
</ExpandableSection>
|
|
44
|
+
</StackItem>
|
|
45
|
+
|
|
46
|
+
<StackItem>
|
|
47
|
+
<h4>Detached Variant with Heading</h4>
|
|
48
|
+
<p>You can also use the detached variant with heading semantics:</p>
|
|
49
|
+
|
|
50
|
+
<ExpandableSectionToggle
|
|
51
|
+
toggleWrapper="h5"
|
|
52
|
+
toggleId="detached-heading-toggle"
|
|
53
|
+
contentId="detached-heading-content"
|
|
54
|
+
isExpanded={isExpandedDetached}
|
|
55
|
+
onToggle={onToggleDetached}
|
|
56
|
+
>
|
|
57
|
+
Detached Toggle with Heading
|
|
58
|
+
</ExpandableSectionToggle>
|
|
59
|
+
|
|
60
|
+
<ExpandableSection
|
|
61
|
+
isDetached
|
|
62
|
+
toggleId="detached-heading-toggle"
|
|
63
|
+
contentId="detached-heading-content"
|
|
64
|
+
isExpanded={isExpandedDetached}
|
|
65
|
+
>
|
|
66
|
+
<p>This is detached content that can be positioned anywhere in the DOM.</p>
|
|
67
|
+
</ExpandableSection>
|
|
68
|
+
</StackItem>
|
|
69
|
+
|
|
70
|
+
<StackItem>
|
|
71
|
+
<h4>Custom Content with Heading</h4>
|
|
72
|
+
<p>You can also use custom content within heading wrappers:</p>
|
|
73
|
+
|
|
74
|
+
<ExpandableSection
|
|
75
|
+
toggleWrapper="h5"
|
|
76
|
+
toggleContent={
|
|
77
|
+
<span>
|
|
78
|
+
<CheckCircleIcon /> Custom Heading Content with Icon
|
|
79
|
+
</span>
|
|
80
|
+
}
|
|
81
|
+
onToggle={onToggle2}
|
|
82
|
+
isExpanded={isExpanded2}
|
|
83
|
+
>
|
|
84
|
+
<p>This expandable section uses custom content with an icon inside a heading wrapper.</p>
|
|
85
|
+
</ExpandableSection>
|
|
86
|
+
</StackItem>
|
|
87
|
+
</Stack>
|
|
88
|
+
);
|
|
89
|
+
};
|
|
@@ -266,6 +266,7 @@ class Page extends Component<PageProps, PageState> {
|
|
|
266
266
|
isManagedSidebar,
|
|
267
267
|
onSidebarToggle: mobileView ? this.onSidebarToggleMobile : this.onSidebarToggleDesktop,
|
|
268
268
|
isSidebarOpen: mobileView ? mobileIsSidebarOpen : desktopIsSidebarOpen,
|
|
269
|
+
isMobile: mobileView,
|
|
269
270
|
width,
|
|
270
271
|
height,
|
|
271
272
|
getBreakpoint,
|
|
@@ -6,6 +6,7 @@ export interface PageContextProps {
|
|
|
6
6
|
isManagedSidebar: boolean;
|
|
7
7
|
onSidebarToggle: () => void;
|
|
8
8
|
isSidebarOpen: boolean;
|
|
9
|
+
isMobile: boolean;
|
|
9
10
|
width: number;
|
|
10
11
|
height: number;
|
|
11
12
|
getBreakpoint: (width: number | null) => 'default' | 'sm' | 'md' | 'lg' | 'xl' | '2xl';
|
|
@@ -16,6 +17,7 @@ export const pageContextDefaults: PageContextProps = {
|
|
|
16
17
|
isManagedSidebar: false,
|
|
17
18
|
isSidebarOpen: false,
|
|
18
19
|
onSidebarToggle: () => null,
|
|
20
|
+
isMobile: false,
|
|
19
21
|
width: null,
|
|
20
22
|
height: null,
|
|
21
23
|
getBreakpoint,
|
|
@@ -35,7 +35,7 @@ export const PageSidebar: React.FunctionComponent<PageSidebarProps> = ({
|
|
|
35
35
|
...props
|
|
36
36
|
}: PageSidebarProps) => (
|
|
37
37
|
<PageContextConsumer>
|
|
38
|
-
{({ isManagedSidebar, isSidebarOpen: managedIsNavOpen }
|
|
38
|
+
{({ isManagedSidebar, isSidebarOpen: managedIsNavOpen, isMobile }) => {
|
|
39
39
|
const sidebarOpen = isManagedSidebar ? managedIsNavOpen : isSidebarOpen;
|
|
40
40
|
|
|
41
41
|
return (
|
|
@@ -43,7 +43,7 @@ export const PageSidebar: React.FunctionComponent<PageSidebarProps> = ({
|
|
|
43
43
|
id={id}
|
|
44
44
|
className={css(
|
|
45
45
|
styles.pageSidebar,
|
|
46
|
-
sidebarOpen && styles.modifiers.expanded,
|
|
46
|
+
sidebarOpen && isMobile && styles.modifiers.expanded,
|
|
47
47
|
!sidebarOpen && styles.modifiers.collapsed,
|
|
48
48
|
className
|
|
49
49
|
)}
|
|
@@ -12,7 +12,7 @@ exports[`Page Check dark page against snapshot 1`] = `
|
|
|
12
12
|
/>
|
|
13
13
|
<div
|
|
14
14
|
aria-hidden="false"
|
|
15
|
-
class="pf-v6-c-page__sidebar
|
|
15
|
+
class="pf-v6-c-page__sidebar"
|
|
16
16
|
id="page-sidebar"
|
|
17
17
|
>
|
|
18
18
|
<div
|
|
@@ -55,7 +55,7 @@ exports[`Page Check page horizontal layout example against snapshot 1`] = `
|
|
|
55
55
|
/>
|
|
56
56
|
<div
|
|
57
57
|
aria-hidden="false"
|
|
58
|
-
class="pf-v6-c-page__sidebar
|
|
58
|
+
class="pf-v6-c-page__sidebar"
|
|
59
59
|
id="page-sidebar"
|
|
60
60
|
/>
|
|
61
61
|
<div
|
|
@@ -92,7 +92,7 @@ exports[`Page Check page to verify breadcrumb is created - PageBreadcrumb syntax
|
|
|
92
92
|
/>
|
|
93
93
|
<div
|
|
94
94
|
aria-hidden="false"
|
|
95
|
-
class="pf-v6-c-page__sidebar
|
|
95
|
+
class="pf-v6-c-page__sidebar"
|
|
96
96
|
id="page-sidebar"
|
|
97
97
|
/>
|
|
98
98
|
<div
|
|
@@ -237,7 +237,7 @@ exports[`Page Check page to verify breadcrumb is created 1`] = `
|
|
|
237
237
|
/>
|
|
238
238
|
<div
|
|
239
239
|
aria-hidden="false"
|
|
240
|
-
class="pf-v6-c-page__sidebar
|
|
240
|
+
class="pf-v6-c-page__sidebar"
|
|
241
241
|
id="page-sidebar"
|
|
242
242
|
/>
|
|
243
243
|
<div
|
|
@@ -386,7 +386,7 @@ exports[`Page Check page to verify grouped nav and breadcrumb - new components s
|
|
|
386
386
|
/>
|
|
387
387
|
<div
|
|
388
388
|
aria-hidden="false"
|
|
389
|
-
class="pf-v6-c-page__sidebar
|
|
389
|
+
class="pf-v6-c-page__sidebar"
|
|
390
390
|
id="page-sidebar"
|
|
391
391
|
/>
|
|
392
392
|
<div
|
|
@@ -629,7 +629,7 @@ exports[`Page Check page to verify grouped nav and breadcrumb - old / props synt
|
|
|
629
629
|
/>
|
|
630
630
|
<div
|
|
631
631
|
aria-hidden="false"
|
|
632
|
-
class="pf-v6-c-page__sidebar
|
|
632
|
+
class="pf-v6-c-page__sidebar"
|
|
633
633
|
id="page-sidebar"
|
|
634
634
|
/>
|
|
635
635
|
<div
|
|
@@ -913,7 +913,7 @@ exports[`Page Check page to verify skip to content points to main content region
|
|
|
913
913
|
/>
|
|
914
914
|
<div
|
|
915
915
|
aria-hidden="false"
|
|
916
|
-
class="pf-v6-c-page__sidebar
|
|
916
|
+
class="pf-v6-c-page__sidebar"
|
|
917
917
|
id="page-sidebar"
|
|
918
918
|
/>
|
|
919
919
|
<div
|
|
@@ -1063,7 +1063,7 @@ exports[`Page Check page vertical layout example against snapshot 1`] = `
|
|
|
1063
1063
|
/>
|
|
1064
1064
|
<div
|
|
1065
1065
|
aria-hidden="false"
|
|
1066
|
-
class="pf-v6-c-page__sidebar
|
|
1066
|
+
class="pf-v6-c-page__sidebar"
|
|
1067
1067
|
id="page-sidebar"
|
|
1068
1068
|
>
|
|
1069
1069
|
<div
|
|
@@ -1106,7 +1106,7 @@ exports[`Page Sticky bottom breadcrumb on all height breakpoints - PageBreadcrum
|
|
|
1106
1106
|
/>
|
|
1107
1107
|
<div
|
|
1108
1108
|
aria-hidden="false"
|
|
1109
|
-
class="pf-v6-c-page__sidebar
|
|
1109
|
+
class="pf-v6-c-page__sidebar"
|
|
1110
1110
|
id="page-sidebar"
|
|
1111
1111
|
/>
|
|
1112
1112
|
<div
|
|
@@ -1251,7 +1251,7 @@ exports[`Page Verify sticky bottom breadcrumb on all height breakpoints 1`] = `
|
|
|
1251
1251
|
/>
|
|
1252
1252
|
<div
|
|
1253
1253
|
aria-hidden="false"
|
|
1254
|
-
class="pf-v6-c-page__sidebar
|
|
1254
|
+
class="pf-v6-c-page__sidebar"
|
|
1255
1255
|
id="page-sidebar"
|
|
1256
1256
|
/>
|
|
1257
1257
|
<div
|
|
@@ -1400,7 +1400,7 @@ exports[`Page Verify sticky top breadcrumb on all height breakpoints - PageBread
|
|
|
1400
1400
|
/>
|
|
1401
1401
|
<div
|
|
1402
1402
|
aria-hidden="false"
|
|
1403
|
-
class="pf-v6-c-page__sidebar
|
|
1403
|
+
class="pf-v6-c-page__sidebar"
|
|
1404
1404
|
id="page-sidebar"
|
|
1405
1405
|
/>
|
|
1406
1406
|
<div
|
|
@@ -1545,7 +1545,7 @@ exports[`Page Verify sticky top breadcrumb on all height breakpoints 1`] = `
|
|
|
1545
1545
|
/>
|
|
1546
1546
|
<div
|
|
1547
1547
|
aria-hidden="false"
|
|
1548
|
-
class="pf-v6-c-page__sidebar
|
|
1548
|
+
class="pf-v6-c-page__sidebar"
|
|
1549
1549
|
id="page-sidebar"
|
|
1550
1550
|
/>
|
|
1551
1551
|
<div
|
|
@@ -48,6 +48,8 @@ export interface ProgressProps extends Omit<React.HTMLProps<HTMLDivElement>, 'si
|
|
|
48
48
|
* We recommend the helper text component as it was designed for this purpose.
|
|
49
49
|
*/
|
|
50
50
|
helperText?: React.ReactNode;
|
|
51
|
+
/** Flag indicating whether the status icon should be hidden, helpful when space is limited (such as within table cells). When set to true, you must ensure the context of the status is provided in another way, such as via the progress measure. */
|
|
52
|
+
hideStatusIcon?: boolean;
|
|
51
53
|
}
|
|
52
54
|
|
|
53
55
|
class Progress extends Component<ProgressProps> {
|
|
@@ -94,6 +96,7 @@ class Progress extends Component<ProgressProps> {
|
|
|
94
96
|
'aria-labelledby': ariaLabelledBy,
|
|
95
97
|
'aria-describedby': ariaDescribedBy,
|
|
96
98
|
helperText,
|
|
99
|
+
hideStatusIcon,
|
|
97
100
|
...props
|
|
98
101
|
} = this.props;
|
|
99
102
|
|
|
@@ -151,6 +154,7 @@ class Progress extends Component<ProgressProps> {
|
|
|
151
154
|
isTitleTruncated={isTitleTruncated}
|
|
152
155
|
tooltipPosition={tooltipPosition}
|
|
153
156
|
helperText={helperText}
|
|
157
|
+
hideStatusIcon={hideStatusIcon}
|
|
154
158
|
/>
|
|
155
159
|
</div>
|
|
156
160
|
);
|
|
@@ -58,6 +58,8 @@ export interface ProgressContainerProps extends Omit<React.HTMLProps<HTMLDivElem
|
|
|
58
58
|
* We recommend the helper text component as it was designed for this purpose.
|
|
59
59
|
*/
|
|
60
60
|
helperText?: React.ReactNode;
|
|
61
|
+
/** Hide the status icon, helpful when space is limited (such as within table cells) */
|
|
62
|
+
hideStatusIcon?: boolean;
|
|
61
63
|
}
|
|
62
64
|
|
|
63
65
|
const variantToIcon = {
|
|
@@ -76,9 +78,10 @@ export const ProgressContainer: React.FunctionComponent<ProgressContainerProps>
|
|
|
76
78
|
measureLocation = ProgressMeasureLocation.top,
|
|
77
79
|
isTitleTruncated = false,
|
|
78
80
|
tooltipPosition,
|
|
79
|
-
helperText
|
|
81
|
+
helperText,
|
|
82
|
+
hideStatusIcon = false
|
|
80
83
|
}: ProgressContainerProps) => {
|
|
81
|
-
const StatusIcon = variantToIcon.hasOwnProperty(variant) && variantToIcon[variant];
|
|
84
|
+
const StatusIcon = !hideStatusIcon && variantToIcon.hasOwnProperty(variant) && variantToIcon[variant];
|
|
82
85
|
const [tooltip, setTooltip] = useState('');
|
|
83
86
|
const titleRef = useRef(null);
|
|
84
87
|
const updateTooltip = (event: any) => {
|
|
@@ -108,3 +108,35 @@ test('Renders passed helper text', () => {
|
|
|
108
108
|
|
|
109
109
|
expect(screen.getByText('Test helper text')).toBeVisible();
|
|
110
110
|
});
|
|
111
|
+
|
|
112
|
+
describe('hideStatusIcon prop behavior', () => {
|
|
113
|
+
test('shows status icon by default when hideStatusIcon is not set', () => {
|
|
114
|
+
render(<Progress id="default-status-icon-test" value={100} variant="success" />);
|
|
115
|
+
|
|
116
|
+
expect(screen.getByRole('img', { hidden: true })).toBeInTheDocument();
|
|
117
|
+
});
|
|
118
|
+
|
|
119
|
+
test('hides status icon when hideStatusIcon flag is set with success variant', () => {
|
|
120
|
+
render(<Progress id="hide-icon-success" value={100} variant="success" hideStatusIcon />);
|
|
121
|
+
|
|
122
|
+
expect(screen.queryByRole('img', { hidden: true })).not.toBeInTheDocument();
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
test('hides status icon when hideStatusIcon flag is set with danger variant', () => {
|
|
126
|
+
render(<Progress id="hide-icon-danger" value={50} variant="danger" hideStatusIcon />);
|
|
127
|
+
|
|
128
|
+
expect(screen.queryByRole('img', { hidden: true })).not.toBeInTheDocument();
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
test('hides status icon when hideStatusIcon flag is set with warning variant', () => {
|
|
132
|
+
render(<Progress id="hide-icon-warning" value={75} variant="warning" hideStatusIcon />);
|
|
133
|
+
|
|
134
|
+
expect(screen.queryByRole('img', { hidden: true })).not.toBeInTheDocument();
|
|
135
|
+
});
|
|
136
|
+
|
|
137
|
+
test('shows status icon when hideStatusIcon is explicitly false', () => {
|
|
138
|
+
render(<Progress id="show-icon-success" value={100} variant="success" hideStatusIcon={false} />);
|
|
139
|
+
|
|
140
|
+
expect(screen.getByRole('img', { hidden: true })).toBeInTheDocument();
|
|
141
|
+
});
|
|
142
|
+
});
|
|
@@ -107,20 +107,8 @@ When conveying status, you should ensure:
|
|
|
107
107
|
|
|
108
108
|
```
|
|
109
109
|
|
|
110
|
-
###
|
|
110
|
+
### Interactive status icon and measure location
|
|
111
111
|
|
|
112
|
-
```ts file="./
|
|
113
|
-
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### Outside failure
|
|
117
|
-
|
|
118
|
-
```ts file="./ProgressOutsideFailure.tsx"
|
|
119
|
-
|
|
120
|
-
```
|
|
121
|
-
|
|
122
|
-
### Failure without measure
|
|
123
|
-
|
|
124
|
-
```ts file="./ProgressFailureWithoutMeasure.tsx"
|
|
112
|
+
```ts file="./ProgressInteractiveFailure.tsx"
|
|
125
113
|
|
|
126
114
|
```
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Progress,
|
|
4
|
+
ProgressMeasureLocation,
|
|
5
|
+
ProgressVariant,
|
|
6
|
+
Radio,
|
|
7
|
+
Checkbox,
|
|
8
|
+
Form,
|
|
9
|
+
FormGroup
|
|
10
|
+
} from '@patternfly/react-core';
|
|
11
|
+
|
|
12
|
+
export const ProgressInteractiveFailure: React.FunctionComponent = () => {
|
|
13
|
+
const [measureLocation, setMeasureLocation] = useState<ProgressMeasureLocation>(ProgressMeasureLocation.inside);
|
|
14
|
+
const [hideStatusIcon, setHideStatusIcon] = useState<boolean>(false);
|
|
15
|
+
|
|
16
|
+
const measureLocationOptions = [
|
|
17
|
+
{ value: ProgressMeasureLocation.inside, label: 'Inside' },
|
|
18
|
+
{ value: ProgressMeasureLocation.outside, label: 'Outside' },
|
|
19
|
+
{ value: ProgressMeasureLocation.top, label: 'Top' },
|
|
20
|
+
{ value: ProgressMeasureLocation.none, label: 'None' }
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<Form>
|
|
25
|
+
<FormGroup fieldId="measure-location" label="Measure location">
|
|
26
|
+
{measureLocationOptions.map((option) => (
|
|
27
|
+
<Radio
|
|
28
|
+
key={option.value}
|
|
29
|
+
id={`measure-location-${option.value}`}
|
|
30
|
+
name="measure-location"
|
|
31
|
+
label={option.label}
|
|
32
|
+
value={option.value}
|
|
33
|
+
isChecked={measureLocation === option.value}
|
|
34
|
+
onChange={() => setMeasureLocation(option.value)}
|
|
35
|
+
/>
|
|
36
|
+
))}
|
|
37
|
+
</FormGroup>
|
|
38
|
+
<FormGroup fieldId="hide-status-icon">
|
|
39
|
+
<Checkbox
|
|
40
|
+
id="hide-status-icon"
|
|
41
|
+
label="Hide status icon"
|
|
42
|
+
isChecked={hideStatusIcon}
|
|
43
|
+
onChange={(_, checked) => setHideStatusIcon(checked)}
|
|
44
|
+
/>
|
|
45
|
+
</FormGroup>
|
|
46
|
+
<Progress
|
|
47
|
+
value={33}
|
|
48
|
+
title="Title"
|
|
49
|
+
measureLocation={measureLocation}
|
|
50
|
+
variant={ProgressVariant.danger}
|
|
51
|
+
hideStatusIcon={hideStatusIcon}
|
|
52
|
+
/>
|
|
53
|
+
</Form>
|
|
54
|
+
);
|
|
55
|
+
};
|
|
@@ -206,7 +206,6 @@ class Tabs extends Component<TabsProps, TabsState> {
|
|
|
206
206
|
backScrollAriaLabel: 'Scroll back',
|
|
207
207
|
rightScrollAriaLabel: 'Scroll right',
|
|
208
208
|
forwardScrollAriaLabel: 'Scroll forward',
|
|
209
|
-
component: TabsComponent.div,
|
|
210
209
|
mountOnEnter: false,
|
|
211
210
|
unmountOnExit: false,
|
|
212
211
|
ouiaSafe: true,
|
|
@@ -529,7 +528,8 @@ class Tabs extends Component<TabsProps, TabsState> {
|
|
|
529
528
|
const overflowingTabProps = filteredChildrenOverflowing.map((child: React.ReactElement<TabProps>) => child.props);
|
|
530
529
|
|
|
531
530
|
const uniqueId = id || getUniqueId();
|
|
532
|
-
const
|
|
531
|
+
const defaultComponent = isNav && !component ? 'nav' : 'div';
|
|
532
|
+
const Component: any = component !== undefined ? component : defaultComponent;
|
|
533
533
|
const localActiveKey = defaultActiveKey !== undefined ? uncontrolledActiveKey : activeKey;
|
|
534
534
|
|
|
535
535
|
const isExpandedLocal = defaultIsExpanded !== undefined ? uncontrolledIsExpandedLocal : isExpanded;
|
|
@@ -166,6 +166,66 @@ test(`Does not render with class ${styles.modifiers.initializingAccent} when unc
|
|
|
166
166
|
expect(screen.getByRole('region')).not.toHaveClass(styles.modifiers.initializingAccent);
|
|
167
167
|
});
|
|
168
168
|
|
|
169
|
+
test(`Renders with class ${styles.modifiers.nav} when isNav is true`, () => {
|
|
170
|
+
render(
|
|
171
|
+
<Tabs isNav role="region">
|
|
172
|
+
<Tab title="Test title" eventKey={0}>
|
|
173
|
+
Tab Content
|
|
174
|
+
</Tab>
|
|
175
|
+
</Tabs>
|
|
176
|
+
);
|
|
177
|
+
|
|
178
|
+
expect(screen.getByRole('region')).toHaveClass(styles.modifiers.nav);
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
test(`Renders with div wrapper by default`, () => {
|
|
182
|
+
render(
|
|
183
|
+
<Tabs>
|
|
184
|
+
<Tab title="Test title" eventKey={0}>
|
|
185
|
+
Tab Content
|
|
186
|
+
</Tab>
|
|
187
|
+
</Tabs>
|
|
188
|
+
);
|
|
189
|
+
|
|
190
|
+
expect(screen.queryByRole('navigation')).not.toBeInTheDocument();
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
test(`Renders with nav wrapper when component="nav"`, () => {
|
|
194
|
+
render(
|
|
195
|
+
<Tabs component="nav">
|
|
196
|
+
<Tab title="Test title" eventKey={0}>
|
|
197
|
+
Tab Content
|
|
198
|
+
</Tab>
|
|
199
|
+
</Tabs>
|
|
200
|
+
);
|
|
201
|
+
|
|
202
|
+
expect(screen.getByRole('navigation')).toBeInTheDocument();
|
|
203
|
+
});
|
|
204
|
+
|
|
205
|
+
test(`Renders with nav wrapper when isNav is true`, () => {
|
|
206
|
+
render(
|
|
207
|
+
<Tabs isNav>
|
|
208
|
+
<Tab title="Test title" eventKey={0}>
|
|
209
|
+
Tab Content
|
|
210
|
+
</Tab>
|
|
211
|
+
</Tabs>
|
|
212
|
+
);
|
|
213
|
+
|
|
214
|
+
expect(screen.getByRole('navigation')).toBeInTheDocument();
|
|
215
|
+
});
|
|
216
|
+
|
|
217
|
+
test(`Overrides isNav nav wrapper when component="div" is passed`, () => {
|
|
218
|
+
render(
|
|
219
|
+
<Tabs component="div" isNav>
|
|
220
|
+
<Tab title="Test title" eventKey={0}>
|
|
221
|
+
Tab Content
|
|
222
|
+
</Tab>
|
|
223
|
+
</Tabs>
|
|
224
|
+
);
|
|
225
|
+
|
|
226
|
+
expect(screen.queryByRole('navigation')).not.toBeInTheDocument();
|
|
227
|
+
});
|
|
228
|
+
|
|
169
229
|
test('should render simple tabs', () => {
|
|
170
230
|
const { asFragment } = render(
|
|
171
231
|
<Tabs id="simpleTabs">
|
|
@@ -5,7 +5,7 @@ exports[`should render accessible tabs 1`] = `
|
|
|
5
5
|
<nav
|
|
6
6
|
aria-label="accessible Tabs example"
|
|
7
7
|
class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
|
|
8
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
8
|
+
data-ouia-component-id="OUIA-Generated-Tabs-19"
|
|
9
9
|
data-ouia-component-type="PF6/Tabs"
|
|
10
10
|
data-ouia-safe="true"
|
|
11
11
|
id="accessibleTabs"
|
|
@@ -122,7 +122,7 @@ exports[`should render box tabs 1`] = `
|
|
|
122
122
|
<DocumentFragment>
|
|
123
123
|
<div
|
|
124
124
|
class="pf-v6-c-tabs pf-m-animate-current pf-m-box pf-m-initializing-accent"
|
|
125
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
125
|
+
data-ouia-component-id="OUIA-Generated-Tabs-18"
|
|
126
126
|
data-ouia-component-type="PF6/Tabs"
|
|
127
127
|
data-ouia-safe="true"
|
|
128
128
|
id="boxTabs"
|
|
@@ -281,7 +281,7 @@ exports[`should render box tabs of secondary variant 1`] = `
|
|
|
281
281
|
<DocumentFragment>
|
|
282
282
|
<div
|
|
283
283
|
class="pf-v6-c-tabs pf-m-animate-current pf-m-box pf-m-secondary pf-m-initializing-accent"
|
|
284
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
284
|
+
data-ouia-component-id="OUIA-Generated-Tabs-29"
|
|
285
285
|
data-ouia-component-type="PF6/Tabs"
|
|
286
286
|
data-ouia-safe="true"
|
|
287
287
|
id="boxSecondaryVariantTabs"
|
|
@@ -398,7 +398,7 @@ exports[`should render expandable vertical tabs 1`] = `
|
|
|
398
398
|
<DocumentFragment>
|
|
399
399
|
<div
|
|
400
400
|
class="pf-v6-c-tabs pf-m-animate-current pf-m-vertical pf-m-expandable pf-m-initializing-accent"
|
|
401
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
401
|
+
data-ouia-component-id="OUIA-Generated-Tabs-16"
|
|
402
402
|
data-ouia-component-type="PF6/Tabs"
|
|
403
403
|
data-ouia-safe="true"
|
|
404
404
|
id="verticalTabs"
|
|
@@ -605,7 +605,7 @@ exports[`should render filled tabs 1`] = `
|
|
|
605
605
|
<DocumentFragment>
|
|
606
606
|
<div
|
|
607
607
|
class="pf-v6-c-tabs pf-m-animate-current pf-m-fill pf-m-initializing-accent"
|
|
608
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
608
|
+
data-ouia-component-id="OUIA-Generated-Tabs-20"
|
|
609
609
|
data-ouia-component-type="PF6/Tabs"
|
|
610
610
|
data-ouia-safe="true"
|
|
611
611
|
id="filledTabs"
|
|
@@ -722,7 +722,7 @@ exports[`should render simple tabs 1`] = `
|
|
|
722
722
|
<DocumentFragment>
|
|
723
723
|
<div
|
|
724
724
|
class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
|
|
725
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
725
|
+
data-ouia-component-id="OUIA-Generated-Tabs-11"
|
|
726
726
|
data-ouia-component-type="PF6/Tabs"
|
|
727
727
|
data-ouia-safe="true"
|
|
728
728
|
id="simpleTabs"
|
|
@@ -881,7 +881,7 @@ exports[`should render subtabs 1`] = `
|
|
|
881
881
|
<DocumentFragment>
|
|
882
882
|
<div
|
|
883
883
|
class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
|
|
884
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
884
|
+
data-ouia-component-id="OUIA-Generated-Tabs-21"
|
|
885
885
|
data-ouia-component-type="PF6/Tabs"
|
|
886
886
|
data-ouia-safe="true"
|
|
887
887
|
id="primarieTabs"
|
|
@@ -967,7 +967,7 @@ exports[`should render subtabs 1`] = `
|
|
|
967
967
|
>
|
|
968
968
|
<div
|
|
969
969
|
class="pf-v6-c-tabs pf-m-animate-current pf-m-subtab pf-m-initializing-accent"
|
|
970
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
970
|
+
data-ouia-component-id="OUIA-Generated-Tabs-22"
|
|
971
971
|
data-ouia-component-type="PF6/Tabs"
|
|
972
972
|
data-ouia-safe="true"
|
|
973
973
|
id="subtabs"
|
|
@@ -1110,7 +1110,7 @@ exports[`should render tabs with eventKey Strings 1`] = `
|
|
|
1110
1110
|
<DocumentFragment>
|
|
1111
1111
|
<div
|
|
1112
1112
|
class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
|
|
1113
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
1113
|
+
data-ouia-component-id="OUIA-Generated-Tabs-23"
|
|
1114
1114
|
data-ouia-component-type="PF6/Tabs"
|
|
1115
1115
|
data-ouia-safe="true"
|
|
1116
1116
|
id="eventKeyTabs"
|
|
@@ -1228,7 +1228,7 @@ exports[`should render tabs with no bottom border 1`] = `
|
|
|
1228
1228
|
<DocumentFragment>
|
|
1229
1229
|
<div
|
|
1230
1230
|
class="pf-v6-c-tabs pf-m-animate-current pf-m-no-border-bottom pf-m-initializing-accent"
|
|
1231
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
1231
|
+
data-ouia-component-id="OUIA-Generated-Tabs-30"
|
|
1232
1232
|
data-ouia-component-type="PF6/Tabs"
|
|
1233
1233
|
data-ouia-safe="true"
|
|
1234
1234
|
id="noBottomBorderTabs"
|
|
@@ -1345,7 +1345,7 @@ exports[`should render tabs with separate content 1`] = `
|
|
|
1345
1345
|
<DocumentFragment>
|
|
1346
1346
|
<div
|
|
1347
1347
|
class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
|
|
1348
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
1348
|
+
data-ouia-component-id="OUIA-Generated-Tabs-24"
|
|
1349
1349
|
data-ouia-component-type="PF6/Tabs"
|
|
1350
1350
|
data-ouia-safe="true"
|
|
1351
1351
|
id="separateTabs"
|
|
@@ -1472,7 +1472,7 @@ exports[`should render uncontrolled tabs 1`] = `
|
|
|
1472
1472
|
<DocumentFragment>
|
|
1473
1473
|
<div
|
|
1474
1474
|
class="pf-v6-c-tabs pf-m-animate-current pf-m-initializing-accent"
|
|
1475
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
1475
|
+
data-ouia-component-id="OUIA-Generated-Tabs-14"
|
|
1476
1476
|
data-ouia-component-type="PF6/Tabs"
|
|
1477
1477
|
data-ouia-safe="true"
|
|
1478
1478
|
style="--pf-v6-c-tabs--link-accent--length: 0px; --pf-v6-c-tabs--link-accent--start: 0px;"
|
|
@@ -1630,7 +1630,7 @@ exports[`should render vertical tabs 1`] = `
|
|
|
1630
1630
|
<DocumentFragment>
|
|
1631
1631
|
<div
|
|
1632
1632
|
class="pf-v6-c-tabs pf-m-animate-current pf-m-vertical pf-m-initializing-accent"
|
|
1633
|
-
data-ouia-component-id="OUIA-Generated-Tabs-
|
|
1633
|
+
data-ouia-component-id="OUIA-Generated-Tabs-15"
|
|
1634
1634
|
data-ouia-component-type="PF6/Tabs"
|
|
1635
1635
|
data-ouia-safe="true"
|
|
1636
1636
|
id="verticalTabs"
|
|
@@ -189,6 +189,14 @@ Subtabs can also link to nav elements.
|
|
|
189
189
|
|
|
190
190
|
```
|
|
191
191
|
|
|
192
|
+
### Tabs used for site navigation
|
|
193
|
+
|
|
194
|
+
Site navigation tabs
|
|
195
|
+
|
|
196
|
+
```ts file="./TabsSiteNav.tsx"
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
|
|
192
200
|
### With separate content
|
|
193
201
|
|
|
194
202
|
If a `<TabContent>` component is defined outside of a `<Tabs>` component, use the `tabContentRef` and `tabContentId` properties. The `hidden` property is used on `TabContent` to set the initial visible content.
|