@patternfly/react-core 6.2.0-prerelease.1 → 6.2.0-prerelease.3

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.
Files changed (135) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/components/package.json +1 -1
  3. package/deprecated/package.json +1 -1
  4. package/dist/dynamic/components/AboutModal/package.json +1 -1
  5. package/dist/dynamic/components/Accordion/package.json +1 -1
  6. package/dist/dynamic/components/ActionList/package.json +1 -1
  7. package/dist/dynamic/components/Alert/package.json +1 -1
  8. package/dist/dynamic/components/Avatar/package.json +1 -1
  9. package/dist/dynamic/components/BackToTop/package.json +1 -1
  10. package/dist/dynamic/components/Backdrop/package.json +1 -1
  11. package/dist/dynamic/components/BackgroundImage/package.json +1 -1
  12. package/dist/dynamic/components/Badge/package.json +1 -1
  13. package/dist/dynamic/components/Banner/package.json +1 -1
  14. package/dist/dynamic/components/Brand/package.json +1 -1
  15. package/dist/dynamic/components/Breadcrumb/package.json +1 -1
  16. package/dist/dynamic/components/Button/package.json +1 -1
  17. package/dist/dynamic/components/CalendarMonth/package.json +1 -1
  18. package/dist/dynamic/components/Card/package.json +1 -1
  19. package/dist/dynamic/components/Checkbox/package.json +1 -1
  20. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  21. package/dist/dynamic/components/CodeBlock/package.json +1 -1
  22. package/dist/dynamic/components/Content/package.json +1 -1
  23. package/dist/dynamic/components/DataList/package.json +1 -1
  24. package/dist/dynamic/components/DatePicker/package.json +1 -1
  25. package/dist/dynamic/components/DescriptionList/package.json +1 -1
  26. package/dist/dynamic/components/Divider/package.json +1 -1
  27. package/dist/dynamic/components/Drawer/package.json +1 -1
  28. package/dist/dynamic/components/Dropdown/package.json +1 -1
  29. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  30. package/dist/dynamic/components/EmptyState/package.json +1 -1
  31. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  32. package/dist/dynamic/components/FileUpload/package.json +1 -1
  33. package/dist/dynamic/components/Form/package.json +1 -1
  34. package/dist/dynamic/components/FormSelect/package.json +1 -1
  35. package/dist/dynamic/components/HelperText/package.json +1 -1
  36. package/dist/dynamic/components/Hint/package.json +1 -1
  37. package/dist/dynamic/components/Icon/package.json +1 -1
  38. package/dist/dynamic/components/InputGroup/package.json +1 -1
  39. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  40. package/dist/dynamic/components/Label/package.json +1 -1
  41. package/dist/dynamic/components/List/package.json +1 -1
  42. package/dist/dynamic/components/LoginPage/package.json +1 -1
  43. package/dist/dynamic/components/Masthead/package.json +1 -1
  44. package/dist/dynamic/components/Menu/package.json +1 -1
  45. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  46. package/dist/dynamic/components/Modal/package.json +1 -1
  47. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  48. package/dist/dynamic/components/Nav/package.json +1 -1
  49. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  50. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  51. package/dist/dynamic/components/NumberInput/package.json +1 -1
  52. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  53. package/dist/dynamic/components/Page/package.json +1 -1
  54. package/dist/dynamic/components/Pagination/package.json +1 -1
  55. package/dist/dynamic/components/Panel/package.json +1 -1
  56. package/dist/dynamic/components/Popover/package.json +1 -1
  57. package/dist/dynamic/components/Progress/package.json +1 -1
  58. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  59. package/dist/dynamic/components/Radio/package.json +1 -1
  60. package/dist/dynamic/components/SearchInput/package.json +1 -1
  61. package/dist/dynamic/components/Select/package.json +1 -1
  62. package/dist/dynamic/components/Sidebar/package.json +1 -1
  63. package/dist/dynamic/components/SimpleList/package.json +1 -1
  64. package/dist/dynamic/components/Skeleton/package.json +1 -1
  65. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  66. package/dist/dynamic/components/Slider/package.json +1 -1
  67. package/dist/dynamic/components/Spinner/package.json +1 -1
  68. package/dist/dynamic/components/Switch/package.json +1 -1
  69. package/dist/dynamic/components/Tabs/package.json +1 -1
  70. package/dist/dynamic/components/TextArea/package.json +1 -1
  71. package/dist/dynamic/components/TextInput/package.json +1 -1
  72. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  73. package/dist/dynamic/components/TimePicker/package.json +1 -1
  74. package/dist/dynamic/components/Timestamp/package.json +1 -1
  75. package/dist/dynamic/components/Title/package.json +1 -1
  76. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  77. package/dist/dynamic/components/Toolbar/package.json +1 -1
  78. package/dist/dynamic/components/Tooltip/package.json +1 -1
  79. package/dist/dynamic/components/TreeView/package.json +1 -1
  80. package/dist/dynamic/components/Truncate/package.json +1 -1
  81. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  82. package/dist/dynamic/components/Wizard/package.json +1 -1
  83. package/dist/dynamic/deprecated/components/Chip/package.json +1 -1
  84. package/dist/dynamic/deprecated/components/DragDrop/package.json +1 -1
  85. package/dist/dynamic/deprecated/components/DualListSelector/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/Modal/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/Tile/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/package.json +1 -1
  90. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  91. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  92. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  93. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  94. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  95. package/dist/dynamic/helpers/constants/package.json +1 -1
  96. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  97. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  98. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  99. package/dist/dynamic/helpers/package.json +1 -1
  100. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  101. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  102. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  103. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  104. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  105. package/dist/dynamic/helpers/util/package.json +1 -1
  106. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  107. package/dist/dynamic/layouts/Flex/package.json +1 -1
  108. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  109. package/dist/dynamic/layouts/Grid/package.json +1 -1
  110. package/dist/dynamic/layouts/Level/package.json +1 -1
  111. package/dist/dynamic/layouts/Split/package.json +1 -1
  112. package/dist/dynamic/layouts/Stack/package.json +1 -1
  113. package/dist/dynamic/styles/package.json +1 -1
  114. package/dist/esm/components/TextArea/TextArea.d.ts +3 -2
  115. package/dist/esm/components/TextArea/TextArea.d.ts.map +1 -1
  116. package/dist/esm/components/TextArea/TextArea.js +5 -2
  117. package/dist/esm/components/TextArea/TextArea.js.map +1 -1
  118. package/dist/js/components/TextArea/TextArea.d.ts +3 -2
  119. package/dist/js/components/TextArea/TextArea.d.ts.map +1 -1
  120. package/dist/js/components/TextArea/TextArea.js +5 -2
  121. package/dist/js/components/TextArea/TextArea.js.map +1 -1
  122. package/dist/umd/assets/{output-BwnR4NQh.css → output-BD6c6LL4.css} +19009 -19009
  123. package/dist/umd/react-core.min.js +1 -1
  124. package/helpers/package.json +1 -1
  125. package/layouts/package.json +1 -1
  126. package/next/package.json +1 -1
  127. package/package.json +2 -2
  128. package/src/components/TextArea/TextArea.tsx +8 -7
  129. package/src/components/TextArea/__tests__/TextArea.test.tsx +18 -0
  130. package/src/components/TextArea/examples/TextArea.md +6 -0
  131. package/src/components/TextArea/examples/TextAreaResizableNone.tsx +14 -0
  132. package/src/demos/DataList/examples/DataListActionable.tsx +134 -0
  133. package/src/demos/DataListDemo.md +5 -0
  134. package/src/demos/DescriptionList/DescriptionList.md +7 -1
  135. package/src/demos/DescriptionList/examples/DescriptionListInDrawer.tsx +162 -0
@@ -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.2.0-prerelease.0","private":true}
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.2.0-prerelease.2","private":true}
@@ -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.2.0-prerelease.0","private":true}
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.2.0-prerelease.2","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.2.0-prerelease.0","private":true}
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.2.0-prerelease.2","private":true}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/react-core",
3
- "version": "6.2.0-prerelease.1",
3
+ "version": "6.2.0-prerelease.3",
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",
@@ -63,5 +63,5 @@
63
63
  "react": "^17 || ^18",
64
64
  "react-dom": "^17 || ^18"
65
65
  },
66
- "gitHead": "99e344c2f5d577d518bcae57d13b7ab5fa191c03"
66
+ "gitHead": "1ccc691a770cdf0fda24a569a14684199cdeef35"
67
67
  }
@@ -8,7 +8,8 @@ import { FormControlIcon } from '../FormControl/FormControlIcon';
8
8
  export enum TextAreResizeOrientation {
9
9
  horizontal = 'horizontal',
10
10
  vertical = 'vertical',
11
- both = 'both'
11
+ both = 'both',
12
+ none = 'none'
12
13
  }
13
14
 
14
15
  export enum TextAreaReadOnlyVariant {
@@ -37,7 +38,7 @@ export interface TextAreaProps extends Omit<HTMLProps<HTMLTextAreaElement>, 'onC
37
38
  /** A callback for when the text area value changes. */
38
39
  onChange?: (event: React.ChangeEvent<HTMLTextAreaElement>, value: string) => void;
39
40
  /** Sets the orientation to limit the resize to */
40
- resizeOrientation?: 'horizontal' | 'vertical' | 'both';
41
+ resizeOrientation?: 'horizontal' | 'vertical' | 'both' | 'none';
41
42
  /** Custom flag to show that the text area requires an associated id or aria-label. */
42
43
  'aria-label'?: string;
43
44
  /** @hide A reference object to attach to the text area. */
@@ -118,10 +119,10 @@ class TextAreaBase extends React.Component<TextAreaProps> {
118
119
  onFocus,
119
120
  ...props
120
121
  } = this.props;
121
- const orientation = `resize${capitalize(resizeOrientation)}` as
122
- | 'resizeVertical'
123
- | 'resizeHorizontal'
124
- | 'resizeBoth';
122
+ const orientation =
123
+ resizeOrientation !== 'none'
124
+ ? (`resize${capitalize(resizeOrientation)}` as 'resizeVertical' | 'resizeHorizontal' | 'resizeBoth')
125
+ : undefined;
125
126
  const hasStatusIcon = ['success', 'error', 'warning'].includes(validated);
126
127
 
127
128
  return (
@@ -130,7 +131,7 @@ class TextAreaBase extends React.Component<TextAreaProps> {
130
131
  styles.formControl,
131
132
  readOnlyVariant && styles.modifiers.readonly,
132
133
  readOnlyVariant === 'plain' && styles.modifiers.plain,
133
- resizeOrientation && styles.modifiers[orientation],
134
+ resizeOrientation !== 'none' && styles.modifiers[orientation],
134
135
  isDisabled && styles.modifiers.disabled,
135
136
  hasStatusIcon && styles.modifiers[validated as 'success' | 'warning' | 'error'],
136
137
  className
@@ -1,4 +1,5 @@
1
1
  import React from 'react';
2
+ import '@testing-library/jest-dom';
2
3
 
3
4
  import { render, screen } from '@testing-library/react';
4
5
  import userEvent from '@testing-library/user-event';
@@ -93,6 +94,16 @@ test('Text area is not invalid by default', () => {
93
94
  expect(screen.getByRole('textbox')).not.toBeInvalid();
94
95
  });
95
96
 
97
+ test('Renders vertically & resizable text area by default', () => {
98
+ render(<TextArea aria-label="vertical resize textarea" />);
99
+ expect(screen.getByRole('textbox').parentElement).toHaveClass('pf-m-resize-both');
100
+ });
101
+
102
+ test('Renders vertically & resizable text area when resizeOrientation is set to both', () => {
103
+ render(<TextArea aria-label="vertical resize textarea" resizeOrientation="both" />);
104
+ expect(screen.getByRole('textbox').parentElement).toHaveClass('pf-m-resize-both');
105
+ });
106
+
96
107
  test('Renders vertically resizable text area', () => {
97
108
  render(<TextArea aria-label="vertical resize textarea" resizeOrientation="vertical" />);
98
109
  expect(screen.getByRole('textbox').parentElement).toHaveClass('pf-m-resize-vertical');
@@ -103,6 +114,13 @@ test('Renders horizontally resizable text area', () => {
103
114
  expect(screen.getByRole('textbox').parentElement).toHaveClass('pf-m-resize-horizontal');
104
115
  });
105
116
 
117
+ test('Disables resizable text area', () => {
118
+ render(<TextArea aria-label="disabled resize textarea" resizeOrientation="none" />);
119
+ expect(screen.getByRole('textbox').parentElement).not.toHaveClass('pf-m-resize-vertical');
120
+ expect(screen.getByRole('textbox').parentElement).not.toHaveClass('pf-m-resize-horizontal');
121
+ expect(screen.getByRole('textbox').parentElement).not.toHaveClass('pf-m-resize-both');
122
+ });
123
+
106
124
  test('Throws console error when no aria-label or id is given', () => {
107
125
  jest.spyOn(global.console, 'error');
108
126
 
@@ -38,6 +38,12 @@ propComponents: ['TextArea']
38
38
 
39
39
  ```
40
40
 
41
+ ### Not resizable
42
+
43
+ ```ts file="./TextAreaResizableNone.tsx"
44
+
45
+ ```
46
+
41
47
  ### Uncontrolled
42
48
 
43
49
  ```ts file="./TextAreaUncontrolled.tsx"
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import { TextArea } from '@patternfly/react-core';
3
+
4
+ export const TextAreaResizeNone: React.FunctionComponent = () => {
5
+ const [value, setValue] = React.useState('');
6
+ return (
7
+ <TextArea
8
+ value={value}
9
+ onChange={(_event, value) => setValue(value)}
10
+ resizeOrientation="none"
11
+ aria-label="text area resize none example"
12
+ />
13
+ );
14
+ };
@@ -0,0 +1,134 @@
1
+ import React from 'react';
2
+ import {
3
+ Button,
4
+ Content,
5
+ DataList,
6
+ DataListItem,
7
+ DataListCell,
8
+ DataListItemRow,
9
+ DataListItemCells,
10
+ DataListAction,
11
+ Dropdown,
12
+ DropdownList,
13
+ DropdownItem,
14
+ MenuToggle,
15
+ MenuToggleElement,
16
+ PageSection,
17
+ Title
18
+ } from '@patternfly/react-core';
19
+ import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
20
+ import { DashboardWrapper } from '@patternfly/react-core/dist/js/demos/DashboardWrapper';
21
+
22
+ export const DataListActionable: React.FunctionComponent = () => {
23
+ const [isOpen, setIsOpen] = React.useState(false);
24
+ const [isDeleted, setIsDeleted] = React.useState(false);
25
+
26
+ const onToggle = () => {
27
+ setIsOpen(!isOpen);
28
+ };
29
+
30
+ const onSelect = () => {
31
+ setIsOpen(!isOpen);
32
+ };
33
+
34
+ return (
35
+ <DashboardWrapper mainContainerId="main-content-datalist-view-actions" breadcrumb={null}>
36
+ <PageSection>
37
+ <Content>
38
+ <Title headingLevel="h1">Projects</Title>
39
+ <Content component="p">This is a demo that showcases PatternFly Data List</Content>
40
+ </Content>
41
+ </PageSection>
42
+ <PageSection>
43
+ <DataList aria-label="single action data list example ">
44
+ {!isDeleted && (
45
+ <DataListItem aria-labelledby="single-action-item1">
46
+ <DataListItemRow>
47
+ <DataListItemCells
48
+ dataListCells={[
49
+ <DataListCell key="primary content">
50
+ <span id="single-action-item1">Single actionable Primary content</span>
51
+ </DataListCell>,
52
+ <DataListCell key="secondary content">Single actionable Secondary content</DataListCell>
53
+ ]}
54
+ />
55
+ <DataListAction
56
+ aria-labelledby="single-action-item1 single-action-action1"
57
+ id="single-action-action1"
58
+ aria-label="Actions"
59
+ >
60
+ <Button
61
+ onClick={() => {
62
+ if (confirm('Are you sure?')) {
63
+ setIsDeleted(true);
64
+ }
65
+ }}
66
+ variant="primary"
67
+ key="delete-action"
68
+ >
69
+ Delete
70
+ </Button>
71
+ </DataListAction>
72
+ </DataListItemRow>
73
+ </DataListItem>
74
+ )}
75
+ <DataListItem aria-labelledby="multi-actions-item1">
76
+ <DataListItemRow>
77
+ <DataListItemCells
78
+ dataListCells={[
79
+ <DataListCell key="primary content">
80
+ <span id="multi-actions-item1">Multi actions Primary content</span>
81
+ </DataListCell>,
82
+ <DataListCell key="secondary content">Multi actions Secondary content</DataListCell>
83
+ ]}
84
+ />
85
+ <DataListAction
86
+ aria-labelledby="multi-actions-item1 multi-actions-action1"
87
+ id="multi-actions-action1"
88
+ aria-label="Actions"
89
+ >
90
+ <Dropdown
91
+ popperProps={{ position: 'right' }}
92
+ onSelect={onSelect}
93
+ toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
94
+ <MenuToggle
95
+ ref={toggleRef}
96
+ isExpanded={isOpen}
97
+ onClick={onToggle}
98
+ variant="plain"
99
+ aria-label="Data list with actions example kebab toggle"
100
+ >
101
+ <EllipsisVIcon aria-hidden="true" />
102
+ </MenuToggle>
103
+ )}
104
+ isOpen={isOpen}
105
+ onOpenChange={(isOpen: boolean) => setIsOpen(isOpen)}
106
+ >
107
+ <DropdownList>
108
+ <DropdownItem key="action">Action</DropdownItem>
109
+ {/* Prevent default onClick functionality for example
110
+ purposes */}
111
+ <DropdownItem key="link" to="#" onClick={(event: any) => event.preventDefault()}>
112
+ Link
113
+ </DropdownItem>
114
+ <DropdownItem key="disabled action" isDisabled>
115
+ Disabled Action
116
+ </DropdownItem>
117
+ <DropdownItem
118
+ key="disabled link"
119
+ isDisabled
120
+ to="#"
121
+ onClick={(event: any) => event.preventDefault()}
122
+ >
123
+ Disabled Link
124
+ </DropdownItem>
125
+ </DropdownList>
126
+ </Dropdown>
127
+ </DataListAction>
128
+ </DataListItemRow>
129
+ </DataListItem>
130
+ </DataList>
131
+ </PageSection>
132
+ </DashboardWrapper>
133
+ );
134
+ };
@@ -30,6 +30,11 @@ import { rows } from '@patternfly/react-core/dist/esm/demos/sampleData';
30
30
  ```js file="./DataList/examples/DataListExpandableControlInToolbar.tsx" isFullscreen
31
31
  ```
32
32
 
33
+ ### Actionable
34
+
35
+ ```js file="./DataList/examples/DataListActionable.tsx" isFullscreen
36
+ ```
37
+
33
38
  ### Static bottom pagination
34
39
 
35
40
  ```js file="./DataList/examples/DataListStaticBottomPagination.tsx" isFullscreen
@@ -4,6 +4,7 @@ section: components
4
4
  ---
5
5
 
6
6
  import CheckCircleIcon from '@patternfly/react-icons/dist/esm/icons/check-circle-icon';
7
+ import PlusCircleIcon from '@patternfly/react-icons/dist/esm/icons/plus-circle-icon';
7
8
  import { DashboardWrapper } from '@patternfly/react-core/dist/js/demos/DashboardWrapper';
8
9
 
9
10
  ## Demos
@@ -11,4 +12,9 @@ import { DashboardWrapper } from '@patternfly/react-core/dist/js/demos/Dashboard
11
12
  ### Basic
12
13
 
13
14
  ```js file='./examples/DescriptionListBasic.tsx' isFullscreen
14
- ```
15
+ ```
16
+
17
+ ### In drawer
18
+
19
+ ```js file='./examples/DescriptionListInDrawer.tsx' isFullscreen
20
+ ```
@@ -0,0 +1,162 @@
1
+ import React from 'react';
2
+ import {
3
+ Gallery,
4
+ Content,
5
+ PageSection,
6
+ GalleryItem,
7
+ Card,
8
+ CardBody,
9
+ DrawerHead,
10
+ DrawerActions,
11
+ DrawerCloseButton,
12
+ DrawerPanelBody,
13
+ DescriptionList,
14
+ DescriptionListTerm,
15
+ DescriptionListGroup,
16
+ DescriptionListDescription,
17
+ Button,
18
+ Title
19
+ } from '@patternfly/react-core';
20
+ import { DashboardWrapper } from '@patternfly/react-core/dist/js/demos/DashboardWrapper';
21
+ import PlusCircleIcon from '@patternfly/react-icons/dist/esm/icons/plus-circle-icon';
22
+
23
+ export const DescriptionListInDrawer: React.FunctionComponent = () => {
24
+ const drawerRef = React.useRef<HTMLDivElement>(null);
25
+ const btnRef = React.useRef<HTMLDivElement>(null);
26
+ const [isExpanded, setIsExpanded] = React.useState(true);
27
+
28
+ const onExpand = () => {
29
+ drawerRef.current && drawerRef.current.focus();
30
+ };
31
+
32
+ const onCloseClick = () => {
33
+ setIsExpanded(false);
34
+ btnRef.current && btnRef.current.focus();
35
+ };
36
+
37
+ const onToggleDrawer = () => {
38
+ setIsExpanded((prevIsExpanded) => !prevIsExpanded);
39
+ };
40
+
41
+ const panelContent = (
42
+ <>
43
+ <DrawerHead>
44
+ <Title headingLevel="h2">
45
+ <span ref={drawerRef} tabIndex={isExpanded ? 0 : -1}>
46
+ test
47
+ </span>
48
+ </Title>
49
+ <DrawerActions>
50
+ <DrawerCloseButton onClick={onCloseClick} />
51
+ </DrawerActions>
52
+ </DrawerHead>
53
+ <DrawerPanelBody>
54
+ <DescriptionList isFillColumns columnModifier={{ default: '2Col', lg: '2Col' }}>
55
+ <DescriptionListGroup>
56
+ <DescriptionListTerm>Name</DescriptionListTerm>
57
+ <DescriptionListDescription>test</DescriptionListDescription>
58
+ </DescriptionListGroup>
59
+ <DescriptionListGroup>
60
+ <DescriptionListTerm>Namespace</DescriptionListTerm>
61
+ <DescriptionListDescription>
62
+ <a href="#">mary-test</a>
63
+ </DescriptionListDescription>
64
+ </DescriptionListGroup>
65
+ <DescriptionListGroup>
66
+ <DescriptionListTerm>Labels</DescriptionListTerm>
67
+ <DescriptionListDescription>app=test</DescriptionListDescription>
68
+ </DescriptionListGroup>
69
+ <DescriptionListGroup>
70
+ <DescriptionListTerm>Pod selector</DescriptionListTerm>
71
+ <DescriptionListDescription>Node selector is not available at this time</DescriptionListDescription>
72
+ </DescriptionListGroup>
73
+ <DescriptionListGroup>
74
+ <DescriptionListTerm>Tolerations</DescriptionListTerm>
75
+ <DescriptionListDescription>No tolerations</DescriptionListDescription>
76
+ </DescriptionListGroup>
77
+ <DescriptionListGroup>
78
+ <DescriptionListTerm>Annotations</DescriptionListTerm>
79
+ <DescriptionListDescription>No annotaions</DescriptionListDescription>
80
+ </DescriptionListGroup>
81
+ <DescriptionListGroup>
82
+ <DescriptionListTerm>Status</DescriptionListTerm>
83
+ <DescriptionListDescription>Active</DescriptionListDescription>
84
+ </DescriptionListGroup>
85
+ <DescriptionListGroup>
86
+ <DescriptionListTerm>Created at:</DescriptionListTerm>
87
+ <DescriptionListDescription>3 minutes agot</DescriptionListDescription>
88
+ </DescriptionListGroup>
89
+ <DescriptionListGroup>
90
+ <DescriptionListTerm>Pod selector</DescriptionListTerm>
91
+ <DescriptionListDescription>
92
+ <Button variant="link" isInline icon={<PlusCircleIcon />}>
93
+ app=MyApp
94
+ </Button>
95
+ </DescriptionListDescription>
96
+ </DescriptionListGroup>
97
+ <DescriptionListGroup>
98
+ <DescriptionListTerm>Session affinity</DescriptionListTerm>
99
+ <DescriptionListDescription>None</DescriptionListDescription>
100
+ </DescriptionListGroup>
101
+ <DescriptionListGroup>
102
+ <DescriptionListTerm>Latest version</DescriptionListTerm>
103
+ <DescriptionListDescription>1.0</DescriptionListDescription>
104
+ </DescriptionListGroup>
105
+ <DescriptionListGroup>
106
+ <DescriptionListTerm>Update strategy</DescriptionListTerm>
107
+ <DescriptionListDescription>Rolling</DescriptionListDescription>
108
+ </DescriptionListGroup>
109
+ <DescriptionListGroup>
110
+ <DescriptionListTerm>Timeout</DescriptionListTerm>
111
+ <DescriptionListDescription>600 seconds</DescriptionListDescription>
112
+ </DescriptionListGroup>
113
+ <DescriptionListGroup>
114
+ <DescriptionListTerm>Max available</DescriptionListTerm>
115
+ <DescriptionListDescription>25% of 1 pod</DescriptionListDescription>
116
+ </DescriptionListGroup>
117
+ <DescriptionListGroup>
118
+ <DescriptionListTerm>Max surge</DescriptionListTerm>
119
+ <DescriptionListDescription>25% greater than 1 pod</DescriptionListDescription>
120
+ </DescriptionListGroup>
121
+ </DescriptionList>
122
+ </DrawerPanelBody>
123
+ </>
124
+ );
125
+
126
+ const drawerContent = (
127
+ <Gallery hasGutter>
128
+ <GalleryItem key={0}>
129
+ <Card>
130
+ <CardBody>
131
+ <Button variant="link" isInline onClick={onToggleDrawer} ref={btnRef}>
132
+ {`${isExpanded ? 'Close' : 'Open'} drawer`}
133
+ </Button>
134
+ </CardBody>
135
+ </Card>
136
+ </GalleryItem>
137
+ {Array.from({ length: 30 }).map((_value, index) => (
138
+ <GalleryItem key={index + 1}>
139
+ <Card>
140
+ <CardBody>{`Card-${index + 1}`}</CardBody>
141
+ </Card>
142
+ </GalleryItem>
143
+ ))}
144
+ </Gallery>
145
+ );
146
+
147
+ return (
148
+ <DashboardWrapper
149
+ notificationDrawer={panelContent}
150
+ isNotificationDrawerExpanded={isExpanded}
151
+ onNotificationDrawerExpand={onExpand}
152
+ >
153
+ <PageSection>
154
+ <Content>
155
+ <Content component="h1">Main title</Content>
156
+ <Content component="p">This is a full page demo.</Content>
157
+ </Content>
158
+ </PageSection>
159
+ <PageSection>{drawerContent}</PageSection>
160
+ </DashboardWrapper>
161
+ );
162
+ };