@patternfly/react-core 6.5.0-prerelease.5 → 6.5.0-prerelease.7
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 +10 -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/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/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/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/styles/base-no-reset.css +5 -0
- package/dist/styles/base.css +12 -0
- package/dist/umd/assets/{output-m_8X2Duh.css → output-B9OM_nT0.css} +14404 -14381
- package/dist/umd/react-core.min.js +2 -2
- 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 +16 -0
- package/src/components/Card/__tests__/__snapshots__/CardSubtitle.test.tsx.snap +12 -0
- 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/Tabs/Tabs.tsx +2 -2
- package/src/components/Tabs/examples/Tabs.md +8 -0
- package/src/components/Tabs/examples/TabsSiteNav.tsx +40 -0
package/helpers/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"6.5.0-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-helpers","main":"../dist/js/helpers/index.js","module":"../dist/esm/helpers/index.js","typings":"../dist/esm/helpers/index.d.ts","version":"6.5.0-prerelease.6","private":true}
|
package/layouts/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"6.5.0-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-layouts","main":"../dist/js/layouts/index.js","module":"../dist/esm/layouts/index.js","typings":"../dist/esm/layouts/index.d.ts","version":"6.5.0-prerelease.6","private":true}
|
package/next/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"6.5.0-prerelease.
|
|
1
|
+
{"name":"@patternfly/react-core-next","main":"../dist/js/next/index.js","module":"../dist/esm/next/index.js","typings":"../dist/esm/next/index.d.ts","version":"6.5.0-prerelease.6","private":true}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@patternfly/react-core",
|
|
3
|
-
"version": "6.5.0-prerelease.
|
|
3
|
+
"version": "6.5.0-prerelease.7",
|
|
4
4
|
"description": "This library provides a set of common React components for use with the PatternFly reference implementation.",
|
|
5
5
|
"main": "dist/js/index.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
@@ -46,15 +46,15 @@
|
|
|
46
46
|
"subpaths": "node ../../scripts/exportSubpaths.mjs --config subpaths.config.json"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@patternfly/react-icons": "^6.5.0-prerelease.
|
|
50
|
-
"@patternfly/react-styles": "^6.5.0-prerelease.
|
|
51
|
-
"@patternfly/react-tokens": "^6.5.0-prerelease.
|
|
49
|
+
"@patternfly/react-icons": "^6.5.0-prerelease.3",
|
|
50
|
+
"@patternfly/react-styles": "^6.5.0-prerelease.3",
|
|
51
|
+
"@patternfly/react-tokens": "^6.5.0-prerelease.3",
|
|
52
52
|
"focus-trap": "7.6.4",
|
|
53
53
|
"react-dropzone": "^14.3.5",
|
|
54
54
|
"tslib": "^2.8.1"
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@patternfly/patternfly": "6.5.0-prerelease.
|
|
57
|
+
"@patternfly/patternfly": "6.5.0-prerelease.14",
|
|
58
58
|
"case-anything": "^3.1.2",
|
|
59
59
|
"css": "^3.0.0",
|
|
60
60
|
"fs-extra": "^11.3.0"
|
|
@@ -63,5 +63,5 @@
|
|
|
63
63
|
"react": "^17 || ^18 || ^19",
|
|
64
64
|
"react-dom": "^17 || ^18 || ^19"
|
|
65
65
|
},
|
|
66
|
-
"gitHead": "
|
|
66
|
+
"gitHead": "d09b3a3cb11d10807ada3c9fbde44254818f2fa2"
|
|
67
67
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { css } from '@patternfly/react-styles';
|
|
2
|
+
import styles from '@patternfly/react-styles/css/components/Card/card';
|
|
3
|
+
|
|
4
|
+
export interface CardSubtitleProps {
|
|
5
|
+
/** Content rendered inside the description. */
|
|
6
|
+
children?: React.ReactNode;
|
|
7
|
+
/** Id of the description. */
|
|
8
|
+
id?: string;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const CardSubtitle: React.FunctionComponent<CardSubtitleProps> = ({
|
|
12
|
+
children = null,
|
|
13
|
+
id = '',
|
|
14
|
+
...props
|
|
15
|
+
}: CardSubtitleProps) => (
|
|
16
|
+
<div {...props} id={id} className={css(styles.cardSubtitle)}>
|
|
17
|
+
{children}
|
|
18
|
+
</div>
|
|
19
|
+
);
|
|
20
|
+
CardSubtitle.displayName = 'CardSubtitle';
|
|
@@ -2,6 +2,7 @@ import { useContext } from 'react';
|
|
|
2
2
|
import { css } from '@patternfly/react-styles';
|
|
3
3
|
import styles from '@patternfly/react-styles/css/components/Card/card';
|
|
4
4
|
import { CardContext } from './Card';
|
|
5
|
+
import { CardSubtitle } from './CardSubtitle';
|
|
5
6
|
|
|
6
7
|
export interface CardTitleProps extends React.HTMLProps<HTMLDivElement> {
|
|
7
8
|
/** Content rendered inside the CardTitle */
|
|
@@ -10,23 +11,28 @@ export interface CardTitleProps extends React.HTMLProps<HTMLDivElement> {
|
|
|
10
11
|
className?: string;
|
|
11
12
|
/** Sets the base component to render. defaults to div */
|
|
12
13
|
component?: keyof React.JSX.IntrinsicElements;
|
|
14
|
+
/** @beta Subtitle of the card title */
|
|
15
|
+
subtitle?: React.ReactNode;
|
|
13
16
|
}
|
|
14
17
|
|
|
15
18
|
export const CardTitle: React.FunctionComponent<CardTitleProps> = ({
|
|
16
19
|
children,
|
|
17
20
|
className,
|
|
18
21
|
component = 'div',
|
|
22
|
+
subtitle,
|
|
19
23
|
...props
|
|
20
24
|
}: CardTitleProps) => {
|
|
21
25
|
const { cardId } = useContext(CardContext);
|
|
22
26
|
const Component = component as any;
|
|
23
27
|
const titleId = cardId ? `${cardId}-title` : '';
|
|
28
|
+
const subtitleId = cardId ? `${cardId}-subtitle` : '';
|
|
24
29
|
|
|
25
30
|
return (
|
|
26
31
|
<div className={css(styles.cardTitle)}>
|
|
27
32
|
<Component className={css(styles.cardTitleText, className)} id={titleId || undefined} {...props}>
|
|
28
33
|
{children}
|
|
29
34
|
</Component>
|
|
35
|
+
{subtitle && <CardSubtitle id={subtitleId}>{subtitle}</CardSubtitle>}
|
|
30
36
|
</div>
|
|
31
37
|
);
|
|
32
38
|
};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { render, screen } from '@testing-library/react';
|
|
2
|
+
import { CardSubtitle } from '../CardSubtitle';
|
|
3
|
+
|
|
4
|
+
describe('CardSubtitle', () => {
|
|
5
|
+
test('renders with PatternFly Core styles', () => {
|
|
6
|
+
const { asFragment } = render(<CardSubtitle>text</CardSubtitle>);
|
|
7
|
+
expect(asFragment()).toMatchSnapshot();
|
|
8
|
+
});
|
|
9
|
+
|
|
10
|
+
test('extra props are spread to the root element', () => {
|
|
11
|
+
const testId = 'card-subtitle';
|
|
12
|
+
|
|
13
|
+
render(<CardSubtitle data-testid={testId} />);
|
|
14
|
+
expect(screen.getByTestId(testId)).toBeInTheDocument();
|
|
15
|
+
});
|
|
16
|
+
});
|
|
@@ -28,7 +28,20 @@ import PlusIcon from '@patternfly/react-icons/dist/esm/icons/plus-icon';
|
|
|
28
28
|
|
|
29
29
|
Basic cards typically have a `<CardTitle>`, `<CardBody>` and `<CardFooter>`. You may omit these components as needed, but it is recommended to at least include a `<CardBody>` to provide details about the card item.
|
|
30
30
|
|
|
31
|
-
```ts file='./CardBasic.tsx'
|
|
31
|
+
```ts file='./CardBasic.tsx'
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
### Card with subtitle
|
|
35
|
+
|
|
36
|
+
A basic card that also has a subtitle
|
|
37
|
+
|
|
38
|
+
```ts file='./CardSubtitle.tsx' isBeta
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
### Card with subtitle and Actions
|
|
42
|
+
This card demonstrates having an image, action, and subtitle in a single card.
|
|
43
|
+
|
|
44
|
+
```ts file='./CardSubtitleActions.tsx' isBeta
|
|
32
45
|
|
|
33
46
|
```
|
|
34
47
|
|
|
@@ -71,6 +84,8 @@ Select the "actions hasNoOffset" checkbox in the example below to illustrate thi
|
|
|
71
84
|
|
|
72
85
|
```
|
|
73
86
|
|
|
87
|
+
|
|
88
|
+
|
|
74
89
|
### Title inline with images and actions
|
|
75
90
|
|
|
76
91
|
Moving `<CardTitle>` within the `<CardHeader>` will style it inline with any images or actions.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Card, CardTitle, CardBody, CardFooter } from '@patternfly/react-core';
|
|
2
|
+
|
|
3
|
+
export const CardSubtitle: React.FunctionComponent = () => (
|
|
4
|
+
<Card ouiaId="CardSubtitle">
|
|
5
|
+
<CardTitle subtitle="Subtitle">Title</CardTitle>
|
|
6
|
+
<CardBody>Body</CardBody>
|
|
7
|
+
<CardFooter>Footer</CardFooter>
|
|
8
|
+
</Card>
|
|
9
|
+
);
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Brand,
|
|
4
|
+
Card,
|
|
5
|
+
CardHeader,
|
|
6
|
+
CardTitle,
|
|
7
|
+
CardBody,
|
|
8
|
+
CardFooter,
|
|
9
|
+
Checkbox,
|
|
10
|
+
Dropdown,
|
|
11
|
+
DropdownList,
|
|
12
|
+
DropdownItem,
|
|
13
|
+
MenuToggle,
|
|
14
|
+
MenuToggleElement,
|
|
15
|
+
Divider
|
|
16
|
+
} from '@patternfly/react-core';
|
|
17
|
+
import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
|
|
18
|
+
import pfLogo from '../../assets/PF-HorizontalLogo-Color.svg';
|
|
19
|
+
|
|
20
|
+
export const CardWithImageAndActions: React.FunctionComponent = () => {
|
|
21
|
+
const [isOpen, setIsOpen] = useState<boolean>(false);
|
|
22
|
+
const [isChecked, setIsChecked] = useState<boolean>(false);
|
|
23
|
+
const [hasNoOffset, setHasNoOffset] = useState<boolean>(false);
|
|
24
|
+
|
|
25
|
+
const onSelect = () => {
|
|
26
|
+
setIsOpen(!isOpen);
|
|
27
|
+
};
|
|
28
|
+
const onClick = (checked: boolean) => {
|
|
29
|
+
setIsChecked(checked);
|
|
30
|
+
};
|
|
31
|
+
const toggleOffset = (checked: boolean) => {
|
|
32
|
+
setHasNoOffset(checked);
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
const dropdownItems = (
|
|
36
|
+
<>
|
|
37
|
+
<DropdownItem key="action">Action</DropdownItem>
|
|
38
|
+
{/* Prevent default onClick functionality for example purposes */}
|
|
39
|
+
<DropdownItem key="link" to="#" onClick={(event: any) => event.preventDefault()}>
|
|
40
|
+
Link
|
|
41
|
+
</DropdownItem>
|
|
42
|
+
<DropdownItem key="disabled action" isDisabled>
|
|
43
|
+
Disabled Action
|
|
44
|
+
</DropdownItem>
|
|
45
|
+
<DropdownItem key="disabled link" isDisabled to="#" onClick={(event: any) => event.preventDefault()}>
|
|
46
|
+
Disabled Link
|
|
47
|
+
</DropdownItem>
|
|
48
|
+
<Divider component="li" key="separator" />
|
|
49
|
+
<DropdownItem key="separated action">Separated Action</DropdownItem>
|
|
50
|
+
<DropdownItem key="separated link" to="#" onClick={(event: any) => event.preventDefault()}>
|
|
51
|
+
Separated Link
|
|
52
|
+
</DropdownItem>
|
|
53
|
+
</>
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
const headerActions = (
|
|
57
|
+
<>
|
|
58
|
+
<Dropdown
|
|
59
|
+
onSelect={onSelect}
|
|
60
|
+
toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
|
|
61
|
+
<MenuToggle
|
|
62
|
+
ref={toggleRef}
|
|
63
|
+
isExpanded={isOpen}
|
|
64
|
+
onClick={() => setIsOpen(!isOpen)}
|
|
65
|
+
variant="plain"
|
|
66
|
+
aria-label="Card header images and actions example kebab toggle"
|
|
67
|
+
icon={<EllipsisVIcon />}
|
|
68
|
+
/>
|
|
69
|
+
)}
|
|
70
|
+
isOpen={isOpen}
|
|
71
|
+
onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)}
|
|
72
|
+
>
|
|
73
|
+
<DropdownList>{dropdownItems}</DropdownList>
|
|
74
|
+
</Dropdown>
|
|
75
|
+
<Checkbox
|
|
76
|
+
isChecked={isChecked}
|
|
77
|
+
onChange={(_event, checked) => onClick(checked)}
|
|
78
|
+
aria-label="card checkbox example"
|
|
79
|
+
id="check-1"
|
|
80
|
+
name="check1"
|
|
81
|
+
/>
|
|
82
|
+
</>
|
|
83
|
+
);
|
|
84
|
+
|
|
85
|
+
return (
|
|
86
|
+
<>
|
|
87
|
+
<Checkbox
|
|
88
|
+
label="actions hasNoOffset"
|
|
89
|
+
isChecked={hasNoOffset}
|
|
90
|
+
onChange={(_event, checked) => toggleOffset(checked)}
|
|
91
|
+
aria-label="remove actions offset"
|
|
92
|
+
id="toggle-actions-offset"
|
|
93
|
+
name="toggle-actions-offset"
|
|
94
|
+
/>
|
|
95
|
+
<div style={{ marginTop: '15px' }}>
|
|
96
|
+
<Card>
|
|
97
|
+
<CardHeader actions={{ actions: headerActions, hasNoOffset }}>
|
|
98
|
+
<Brand src={pfLogo} alt="PatternFly logo" style={{ width: '300px' }} />
|
|
99
|
+
</CardHeader>
|
|
100
|
+
<CardTitle subtitle="Subtitle">Title</CardTitle>
|
|
101
|
+
<CardBody>Body</CardBody>
|
|
102
|
+
<CardFooter>Footer</CardFooter>
|
|
103
|
+
</Card>
|
|
104
|
+
</div>
|
|
105
|
+
</>
|
|
106
|
+
);
|
|
107
|
+
};
|
|
@@ -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;
|
|
@@ -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.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { useState } from 'react';
|
|
2
|
+
import { Tabs, Tab, TabTitleText } from '@patternfly/react-core';
|
|
3
|
+
|
|
4
|
+
export const TabsSiteNav: React.FunctionComponent = () => {
|
|
5
|
+
const [activeTabKey, setActiveTabKey] = useState<string | number>(0);
|
|
6
|
+
// Toggle currently active tab
|
|
7
|
+
const handleTabClick = (
|
|
8
|
+
event: React.MouseEvent<any> | React.KeyboardEvent | MouseEvent,
|
|
9
|
+
tabIndex: string | number
|
|
10
|
+
) => {
|
|
11
|
+
setActiveTabKey(tabIndex);
|
|
12
|
+
};
|
|
13
|
+
return (
|
|
14
|
+
<Tabs
|
|
15
|
+
activeKey={activeTabKey}
|
|
16
|
+
onSelect={handleTabClick}
|
|
17
|
+
isNav={true}
|
|
18
|
+
aria-label="Site navigation with nav styling example"
|
|
19
|
+
>
|
|
20
|
+
<Tab eventKey={0} title={<TabTitleText>Users</TabTitleText>} href="#users" aria-label="Nav element content users">
|
|
21
|
+
Users
|
|
22
|
+
</Tab>
|
|
23
|
+
<Tab eventKey={1} title={<TabTitleText>Containers</TabTitleText>} href="#containers">
|
|
24
|
+
Containers
|
|
25
|
+
</Tab>
|
|
26
|
+
<Tab eventKey={2} title={<TabTitleText>Database</TabTitleText>} href="#database">
|
|
27
|
+
Database
|
|
28
|
+
</Tab>
|
|
29
|
+
<Tab eventKey={3} title={<TabTitleText>Disabled</TabTitleText>} isDisabled href="#disabled">
|
|
30
|
+
Disabled
|
|
31
|
+
</Tab>
|
|
32
|
+
<Tab eventKey={4} title={<TabTitleText>ARIA Disabled</TabTitleText>} isAriaDisabled href="#aria-disabled">
|
|
33
|
+
ARIA Disabled
|
|
34
|
+
</Tab>
|
|
35
|
+
<Tab eventKey={6} title={<TabTitleText>Network</TabTitleText>} href="#network">
|
|
36
|
+
Network
|
|
37
|
+
</Tab>
|
|
38
|
+
</Tabs>
|
|
39
|
+
);
|
|
40
|
+
};
|