@patternfly/react-core 4.224.9 → 4.224.10

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 (88) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/esm/components/ContextSelector/ContextSelector.d.ts +2 -0
  3. package/dist/esm/components/ContextSelector/ContextSelector.d.ts.map +1 -1
  4. package/dist/esm/components/ContextSelector/ContextSelector.js +8 -11
  5. package/dist/esm/components/ContextSelector/ContextSelector.js.map +1 -1
  6. package/dist/esm/components/ContextSelector/ContextSelectorMenuList.d.ts.map +1 -1
  7. package/dist/esm/components/ContextSelector/ContextSelectorMenuList.js +2 -1
  8. package/dist/esm/components/ContextSelector/ContextSelectorMenuList.js.map +1 -1
  9. package/dist/esm/components/DualListSelector/DualListSelector.d.ts.map +1 -1
  10. package/dist/esm/components/DualListSelector/DualListSelector.js +6 -6
  11. package/dist/esm/components/DualListSelector/DualListSelector.js.map +1 -1
  12. package/dist/esm/components/DualListSelector/DualListSelectorControlsWrapper.js +1 -1
  13. package/dist/esm/components/DualListSelector/DualListSelectorControlsWrapper.js.map +1 -1
  14. package/dist/esm/components/DualListSelector/DualListSelectorList.d.ts +1 -0
  15. package/dist/esm/components/DualListSelector/DualListSelectorList.d.ts.map +1 -1
  16. package/dist/esm/components/DualListSelector/DualListSelectorList.js +7 -1
  17. package/dist/esm/components/DualListSelector/DualListSelectorList.js.map +1 -1
  18. package/dist/esm/components/DualListSelector/DualListSelectorTree.d.ts +3 -2
  19. package/dist/esm/components/DualListSelector/DualListSelectorTree.d.ts.map +1 -1
  20. package/dist/esm/components/DualListSelector/DualListSelectorTree.js.map +1 -1
  21. package/dist/js/components/ContextSelector/ContextSelector.d.ts +2 -0
  22. package/dist/js/components/ContextSelector/ContextSelector.d.ts.map +1 -1
  23. package/dist/js/components/ContextSelector/ContextSelector.js +7 -10
  24. package/dist/js/components/ContextSelector/ContextSelector.js.map +1 -1
  25. package/dist/js/components/ContextSelector/ContextSelectorMenuList.d.ts.map +1 -1
  26. package/dist/js/components/ContextSelector/ContextSelectorMenuList.js +2 -1
  27. package/dist/js/components/ContextSelector/ContextSelectorMenuList.js.map +1 -1
  28. package/dist/js/components/DualListSelector/DualListSelector.d.ts.map +1 -1
  29. package/dist/js/components/DualListSelector/DualListSelector.js +5 -5
  30. package/dist/js/components/DualListSelector/DualListSelector.js.map +1 -1
  31. package/dist/js/components/DualListSelector/DualListSelectorControlsWrapper.js +1 -1
  32. package/dist/js/components/DualListSelector/DualListSelectorControlsWrapper.js.map +1 -1
  33. package/dist/js/components/DualListSelector/DualListSelectorList.d.ts +1 -0
  34. package/dist/js/components/DualListSelector/DualListSelectorList.d.ts.map +1 -1
  35. package/dist/js/components/DualListSelector/DualListSelectorList.js +7 -1
  36. package/dist/js/components/DualListSelector/DualListSelectorList.js.map +1 -1
  37. package/dist/js/components/DualListSelector/DualListSelectorTree.d.ts +3 -2
  38. package/dist/js/components/DualListSelector/DualListSelectorTree.d.ts.map +1 -1
  39. package/dist/js/components/DualListSelector/DualListSelectorTree.js.map +1 -1
  40. package/dist/styles/base-no-reset.css +10 -10
  41. package/dist/styles/base.css +10 -10
  42. package/dist/umd/react-core.css +424 -392
  43. package/dist/umd/react-core.js +29 -24
  44. package/dist/umd/react-core.min.css +244 -212
  45. package/dist/umd/react-core.min.js +4 -4
  46. package/package.json +6 -6
  47. package/src/components/Accordion/examples/AccordionBordered.tsx +21 -21
  48. package/src/components/Accordion/examples/AccordionDefinitionList.tsx +21 -21
  49. package/src/components/ActionList/examples/ActionListMultipleGroups.tsx +4 -4
  50. package/src/components/ActionList/examples/ActionListSingleGroup.tsx +4 -4
  51. package/src/components/ActionList/examples/ActionListWithCancelButton.tsx +5 -5
  52. package/src/components/ActionList/examples/ActionListWithIcons.tsx +2 -2
  53. package/src/components/Card/examples/CardSelectableA11yHighlight.tsx +4 -4
  54. package/src/components/CodeBlock/examples/CodeBlockBasic.tsx +1 -1
  55. package/src/components/CodeBlock/examples/CodeBlockExpandable.tsx +1 -1
  56. package/src/components/ContextSelector/ContextSelector.tsx +11 -10
  57. package/src/components/ContextSelector/ContextSelectorMenuList.tsx +2 -1
  58. package/src/components/ContextSelector/__tests__/ContextSelector.test.tsx +2 -2
  59. package/src/components/ContextSelector/__tests__/__snapshots__/ContextSelector.test.tsx.snap +11 -7
  60. package/src/components/ContextSelector/__tests__/__snapshots__/ContextSelectorMenuList.test.tsx.snap +10 -0
  61. package/src/components/DataList/examples/DataListCompact.tsx +4 -4
  62. package/src/components/DataList/examples/DataListControllingText.tsx +3 -3
  63. package/src/components/DataList/examples/DataListDraggable.tsx +14 -7
  64. package/src/components/DataList/examples/DataListExpandable.tsx +3 -3
  65. package/src/components/DataList/examples/DataListSmGridBreakpoint.tsx +3 -3
  66. package/src/components/DualListSelector/DualListSelector.tsx +93 -89
  67. package/src/components/DualListSelector/DualListSelectorControlsWrapper.tsx +1 -1
  68. package/src/components/DualListSelector/DualListSelectorList.tsx +10 -4
  69. package/src/components/DualListSelector/DualListSelectorTree.tsx +3 -2
  70. package/src/components/DualListSelector/__tests__/__snapshots__/DualListSelector.test.tsx.snap +6 -20
  71. package/src/components/DualListSelector/examples/DualListSelector.md +3 -1
  72. package/src/components/DualListSelector/examples/DualListSelectorComposable.tsx +1 -1
  73. package/src/components/DualListSelector/examples/DualListSelectorComposableDragDrop.tsx +1 -1
  74. package/src/components/DualListSelector/examples/DualListSelectorComposableTree.tsx +1 -1
  75. package/src/components/DualListSelector/examples/{DualListSelectorTree.tsx → DualListSelectorTreeExample.tsx} +1 -1
  76. package/src/components/FileUpload/examples/FileUploadCustomUpload.tsx +1 -1
  77. package/src/components/FileUpload/examples/FileUploadSimpleText.tsx +1 -1
  78. package/src/components/FileUpload/examples/FileUploadTextWithEdits.tsx +1 -1
  79. package/src/components/FileUpload/examples/FileUploadTextWithRestrictions.tsx +2 -2
  80. package/src/components/InputGroup/examples/InputGroupBasic.tsx +3 -3
  81. package/src/components/InputGroup/examples/InputGroupWithDropdown.tsx +1 -1
  82. package/src/components/InputGroup/examples/InputGroupWithPopover.tsx +12 -2
  83. package/src/components/InputGroup/examples/InputGroupWithSiblings.tsx +7 -2
  84. package/src/components/InputGroup/examples/InputGroupWithTextarea.tsx +1 -1
  85. package/src/components/LoginPage/examples/LoginPage.md +2 -325
  86. package/src/components/LoginPage/examples/LoginPageBasic.tsx +144 -0
  87. package/src/components/LoginPage/examples/LoginPageShowHidePassword.tsx +145 -0
  88. package/src/components/NotificationDrawer/examples/NotificationDrawer.md +69 -68
@@ -0,0 +1,145 @@
1
+ import React from 'react';
2
+ import brandImg2 from './brandImgColor2.svg';
3
+ import {
4
+ LoginFooterItem,
5
+ LoginForm,
6
+ LoginMainFooterBandItem,
7
+ LoginMainFooterLinksItem,
8
+ LoginPage,
9
+ ListItem,
10
+ ListVariant
11
+ } from '@patternfly/react-core';
12
+ import ExclamationCircleIcon from '@patternfly/react-icons/dist/esm/icons/exclamation-circle-icon';
13
+
14
+ export const LoginPageHideShowPassword: React.FunctionComponent = () => {
15
+ const [showHelperText, setShowHelperText] = React.useState(false);
16
+ const [username, setUsername] = React.useState('');
17
+ const [isValidUsername, setIsValidUsername] = React.useState(true);
18
+ const [password, setPassword] = React.useState('');
19
+ const [isValidPassword, setIsValidPassword] = React.useState(true);
20
+ const [isRememberMeChecked, setIsRememberMeChecked] = React.useState(false);
21
+
22
+ const handleUsernameChange = (value: string) => {
23
+ setUsername(value);
24
+ };
25
+
26
+ const handlePasswordChange = (value: string) => {
27
+ setPassword(value);
28
+ };
29
+
30
+ const onRememberMeClick = () => {
31
+ setIsRememberMeChecked(!isRememberMeChecked);
32
+ };
33
+
34
+ const onLoginButtonClick = (event: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {
35
+ event.preventDefault();
36
+ setIsValidUsername(!!username);
37
+ setIsValidPassword(!!password);
38
+ setShowHelperText(!username || !password);
39
+ };
40
+
41
+ const socialMediaLoginContent = (
42
+ <React.Fragment>
43
+ <LoginMainFooterLinksItem href="#" linkComponentProps={{ 'aria-label': 'Login with Google' }}>
44
+ <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 488 512">
45
+ <path d="M488 261.8C488 403.3 391.1 504 248 504 110.8 504 0 393.2 0 256S110.8 8 248 8c66.8 0 123 24.5 166.3 64.9l-67.5 64.9C258.5 52.6 94.3 116.6 94.3 256c0 86.5 69.1 156.6 153.7 156.6 98.2 0 135-70.4 140.8-106.9H248v-85.3h236.1c2.3 12.7 3.9 24.9 3.9 41.4z" />
46
+ </svg>
47
+ </LoginMainFooterLinksItem>
48
+ <LoginMainFooterLinksItem href="#" linkComponentProps={{ 'aria-label': 'Login with Github' }}>
49
+ <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512">
50
+ <path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3zm44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z" />
51
+ </svg>
52
+ </LoginMainFooterLinksItem>
53
+ <LoginMainFooterLinksItem href="#" linkComponentProps={{ 'aria-label': 'Login with Dropbox' }}>
54
+ <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 528 512">
55
+ <path d="M264.4 116.3l-132 84.3 132 84.3-132 84.3L0 284.1l132.3-84.3L0 116.3 132.3 32l132.1 84.3zM131.6 395.7l132-84.3 132 84.3-132 84.3-132-84.3zm132.8-111.6l132-84.3-132-83.6L395.7 32 528 116.3l-132.3 84.3L528 284.8l-132.3 84.3-131.3-85z" />
56
+ </svg>
57
+ </LoginMainFooterLinksItem>
58
+ <LoginMainFooterLinksItem href="#" linkComponentProps={{ 'aria-label': 'Login with Facebook' }}>
59
+ <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512">
60
+ <path d="M448 56.7v398.5c0 13.7-11.1 24.7-24.7 24.7H309.1V306.5h58.2l8.7-67.6h-67v-43.2c0-19.6 5.4-32.9 33.5-32.9h35.8v-60.5c-6.2-.8-27.4-2.7-52.2-2.7-51.6 0-87 31.5-87 89.4v49.9h-58.4v67.6h58.4V480H24.7C11.1 480 0 468.9 0 455.3V56.7C0 43.1 11.1 32 24.7 32h398.5c13.7 0 24.8 11.1 24.8 24.7z" />
61
+ </svg>
62
+ </LoginMainFooterLinksItem>
63
+ <LoginMainFooterLinksItem href="#" linkComponentProps={{ 'aria-label': 'Login with Gitlab' }}>
64
+ <svg aria-hidden="true" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
65
+ <path d="M29.782 199.732L256 493.714 8.074 309.699c-6.856-5.142-9.712-13.996-7.141-21.993l28.849-87.974zm75.405-174.806c-3.142-8.854-15.709-8.854-18.851 0L29.782 199.732h131.961L105.187 24.926zm56.556 174.806L256 493.714l94.257-293.982H161.743zm349.324 87.974l-28.849-87.974L256 493.714l247.926-184.015c6.855-5.142 9.711-13.996 7.141-21.993zm-85.404-262.78c-3.142-8.854-15.709-8.854-18.851 0l-56.555 174.806h131.961L425.663 24.926z" />
66
+ </svg>
67
+ </LoginMainFooterLinksItem>
68
+ </React.Fragment>
69
+ );
70
+
71
+ const signUpForAccountMessage = (
72
+ <LoginMainFooterBandItem>
73
+ Need an account? <a href="#">Sign up.</a>
74
+ </LoginMainFooterBandItem>
75
+ );
76
+
77
+ const forgotCredentials = (
78
+ <LoginMainFooterBandItem>
79
+ <a href="#">Forgot username or password?</a>
80
+ </LoginMainFooterBandItem>
81
+ );
82
+
83
+ const listItem = (
84
+ <React.Fragment>
85
+ <ListItem>
86
+ <LoginFooterItem href="#">Terms of Use </LoginFooterItem>
87
+ </ListItem>
88
+ <ListItem>
89
+ <LoginFooterItem href="#">Help</LoginFooterItem>
90
+ </ListItem>
91
+ <ListItem>
92
+ <LoginFooterItem href="#">Privacy Policy</LoginFooterItem>
93
+ </ListItem>
94
+ </React.Fragment>
95
+ );
96
+
97
+ const loginForm = (
98
+ <LoginForm
99
+ showHelperText={showHelperText}
100
+ helperText="Invalid login credentials."
101
+ helperTextIcon={<ExclamationCircleIcon />}
102
+ usernameLabel="Username"
103
+ usernameValue={username}
104
+ onChangeUsername={handleUsernameChange}
105
+ isValidUsername={isValidUsername}
106
+ passwordLabel="Password"
107
+ passwordValue={password}
108
+ isShowPasswordEnabled
109
+ onChangePassword={handlePasswordChange}
110
+ isValidPassword={isValidPassword}
111
+ rememberMeLabel="Keep me logged in for 30 days."
112
+ isRememberMeChecked={isRememberMeChecked}
113
+ onChangeRememberMe={onRememberMeClick}
114
+ onLoginButtonClick={onLoginButtonClick}
115
+ loginButtonLabel="Log in"
116
+ />
117
+ );
118
+
119
+ const images = {
120
+ lg: '/assets/images/pfbg_1200.jpg',
121
+ sm: '/assets/images/pfbg_768.jpg',
122
+ sm2x: '/assets/images/pfbg_768@2x.jpg',
123
+ xs: '/assets/images/pfbg_576.jpg',
124
+ xs2x: '/assets/images/pfbg_576@2x.jpg'
125
+ };
126
+
127
+ return (
128
+ <LoginPage
129
+ footerListVariants={ListVariant.inline}
130
+ brandImgSrc={brandImg2}
131
+ brandImgAlt="PatternFly logo"
132
+ backgroundImgSrc={images}
133
+ backgroundImgAlt="Images"
134
+ footerListItems={listItem}
135
+ textContent="This is placeholder text only. Use this area to place any information or introductory message about your application that may be relevant to users."
136
+ loginTitle="Log in to your account"
137
+ loginSubtitle="Enter your single sign-on LDAP credentials."
138
+ socialMediaLoginContent={socialMediaLoginContent}
139
+ signUpForAccountMessage={signUpForAccountMessage}
140
+ forgotCredentials={forgotCredentials}
141
+ >
142
+ {loginForm}
143
+ </LoginPage>
144
+ );
145
+ };
@@ -80,11 +80,11 @@ class BasicNotificationDrawer extends React.Component {
80
80
  <NotificationDrawerHeader count={3} onClose={this.onDrawerClose}>
81
81
  <Dropdown
82
82
  onSelect={this.onSelect}
83
- toggle={<KebabToggle onToggle={this.onToggle(0)} id="toggle-id-0" />}
83
+ toggle={<KebabToggle onToggle={this.onToggle(0)} id="basic-kebab-toggle" />}
84
84
  isOpen={isOpen0}
85
85
  isPlain
86
86
  dropdownItems={dropdownItems}
87
- id="notification-0"
87
+ id="basic-notification-0"
88
88
  position={DropdownPosition.right}
89
89
  />
90
90
  </NotificationDrawerHeader>
@@ -99,11 +99,11 @@ class BasicNotificationDrawer extends React.Component {
99
99
  <Dropdown
100
100
  position={DropdownPosition.right}
101
101
  onSelect={this.onSelect}
102
- toggle={<KebabToggle onToggle={this.onToggle(1)} id="toggle-id-1" />}
102
+ toggle={<KebabToggle onToggle={this.onToggle(1)} id="basic-toggle-id-1" />}
103
103
  isOpen={isOpen1}
104
104
  isPlain
105
105
  dropdownItems={dropdownItems}
106
- id="notification-1"
106
+ id="basic-notification-1"
107
107
  />
108
108
  </NotificationDrawerListItemHeader>
109
109
  <NotificationDrawerListItemBody timestamp="5 minutes ago">
@@ -119,11 +119,11 @@ class BasicNotificationDrawer extends React.Component {
119
119
  <Dropdown
120
120
  position={DropdownPosition.right}
121
121
  onSelect={this.onSelect}
122
- toggle={<KebabToggle onToggle={this.onToggle(2)} id="toggle-id-2" />}
122
+ toggle={<KebabToggle onToggle={this.onToggle(2)} id="basic-toggle-id-2" />}
123
123
  isOpen={isOpen2}
124
124
  isPlain
125
125
  dropdownItems={dropdownItems}
126
- id="notification-2"
126
+ id="basic-notification-2"
127
127
  />
128
128
  </NotificationDrawerListItemHeader>
129
129
  <NotificationDrawerListItemBody timestamp="10 minutes ago">
@@ -141,11 +141,11 @@ class BasicNotificationDrawer extends React.Component {
141
141
  <Dropdown
142
142
  position={DropdownPosition.right}
143
143
  onSelect={this.onSelect}
144
- toggle={<KebabToggle onToggle={this.onToggle(3)} id="toggle-id-3" />}
144
+ toggle={<KebabToggle onToggle={this.onToggle(3)} id="basic-toggle-id-3" />}
145
145
  isOpen={isOpen3}
146
146
  isPlain
147
147
  dropdownItems={dropdownItems}
148
- id="notification-3"
148
+ id="basic-notification-3"
149
149
  />
150
150
  </NotificationDrawerListItemHeader>
151
151
  <NotificationDrawerListItemBody timestamp="10 minutes ago">
@@ -162,11 +162,11 @@ class BasicNotificationDrawer extends React.Component {
162
162
  <Dropdown
163
163
  position={DropdownPosition.right}
164
164
  onSelect={this.onSelect}
165
- toggle={<KebabToggle onToggle={this.onToggle(4)} id="toggle-id-4" />}
165
+ toggle={<KebabToggle onToggle={this.onToggle(4)} id="basic-toggle-id-4" />}
166
166
  isOpen={isOpen4}
167
167
  isPlain
168
168
  dropdownItems={dropdownItems}
169
- id="notification-4"
169
+ id="basic-notification-4"
170
170
  />
171
171
  </NotificationDrawerListItemHeader>
172
172
  <NotificationDrawerListItemBody timestamp="20 minutes ago">
@@ -183,11 +183,11 @@ class BasicNotificationDrawer extends React.Component {
183
183
  position={DropdownPosition.right}
184
184
  direction={DropdownDirection.up}
185
185
  onSelect={this.onSelect}
186
- toggle={<KebabToggle onToggle={this.onToggle(5)} id="toggle-id-5" />}
186
+ toggle={<KebabToggle onToggle={this.onToggle(5)} id="basic-toggle-id-5" />}
187
187
  isOpen={isOpen5}
188
188
  isPlain
189
189
  dropdownItems={dropdownItems}
190
- id="notification-5"
190
+ id="basic-notification-5"
191
191
  />
192
192
  </NotificationDrawerListItemHeader>
193
193
  <NotificationDrawerListItemBody timestamp="30 minutes ago">
@@ -199,11 +199,11 @@ class BasicNotificationDrawer extends React.Component {
199
199
  <Dropdown
200
200
  position={DropdownPosition.right}
201
201
  onSelect={this.onSelect}
202
- toggle={<KebabToggle onToggle={this.onToggle(6)} id="toggle-id-6" />}
202
+ toggle={<KebabToggle onToggle={this.onToggle(6)} id="basic-toggle-id-6" />}
203
203
  isOpen={isOpen6}
204
204
  isPlain
205
205
  dropdownItems={dropdownItems}
206
- id="notification-6"
206
+ id="basic-notification-6"
207
207
  />
208
208
  </NotificationDrawerListItemHeader>
209
209
  <NotificationDrawerListItemBody timestamp="35 minutes ago">
@@ -253,8 +253,8 @@ class GroupNotificationDrawer extends React.Component {
253
253
  this.state = {
254
254
  isOpenMap: null,
255
255
  firstGroupExpanded: false,
256
- secondGroupExpanded: true,
257
- thirdGroupExpanded: false
256
+ secondGroupExpanded: false,
257
+ thirdGroupExpanded: true
258
258
  };
259
259
  this.onToggle = (id, isOpen) => {
260
260
  this.setState({
@@ -299,11 +299,11 @@ class GroupNotificationDrawer extends React.Component {
299
299
  <NotificationDrawerHeader count={4}>
300
300
  <Dropdown
301
301
  onSelect={this.onSelect}
302
- toggle={<KebabToggle onToggle={isOpen => this.onToggle('toggle-id-0', isOpen)} id="toggle-id-0" />}
303
- isOpen={isOpenMap && isOpenMap['toggle-id-0']}
302
+ toggle={<KebabToggle onToggle={isOpen => this.onToggle('groups-kebab-toggle-1', isOpen)} id="groups-kebab-toggle-1" />}
303
+ isOpen={isOpenMap && isOpenMap['groups-kebab-toggle-1']}
304
304
  isPlain
305
305
  dropdownItems={dropdownItems}
306
- id="notification-0"
306
+ id="grouped-notification-1"
307
307
  position={DropdownPosition.right}
308
308
  />
309
309
  </NotificationDrawerHeader>
@@ -326,12 +326,12 @@ class GroupNotificationDrawer extends React.Component {
326
326
  position={DropdownPosition.right}
327
327
  onSelect={this.onSelect}
328
328
  toggle={
329
- <KebabToggle onToggle={isOpen => this.onToggle('toggle-id-5', isOpen)} id="toggle-id-5" />
329
+ <KebabToggle onToggle={isOpen => this.onToggle('groups-notification-kebab-toggle-2', isOpen)} id="groups-kebab-toggle-2" />
330
330
  }
331
- isOpen={isOpenMap && isOpenMap['toggle-id-5']}
331
+ isOpen={isOpenMap && isOpenMap['groups-notification-kebab-toggle-2']}
332
332
  isPlain
333
333
  dropdownItems={dropdownItems}
334
- id="notification-5"
334
+ id="grouped-notification-2"
335
335
  />
336
336
  </NotificationDrawerListItemHeader>
337
337
  <NotificationDrawerListItemBody timestamp="5 minutes ago">
@@ -348,12 +348,12 @@ class GroupNotificationDrawer extends React.Component {
348
348
  position={DropdownPosition.right}
349
349
  onSelect={this.onSelect}
350
350
  toggle={
351
- <KebabToggle onToggle={isOpen => this.onToggle('toggle-id-6', isOpen)} id="toggle-id-6" />
351
+ <KebabToggle onToggle={isOpen => this.onToggle('groups-kebab-toggle-3', isOpen)} id="groups-kebab-toggle-3" />
352
352
  }
353
- isOpen={isOpenMap && isOpenMap['toggle-id-6']}
353
+ isOpen={isOpenMap && isOpenMap['groups-kebab-toggle-3']}
354
354
  isPlain
355
355
  dropdownItems={dropdownItems}
356
- id="notification-6"
356
+ id="grouped-notification-3"
357
357
  />
358
358
  </NotificationDrawerListItemHeader>
359
359
  <NotificationDrawerListItemBody timestamp="10 minutes ago">
@@ -371,12 +371,12 @@ class GroupNotificationDrawer extends React.Component {
371
371
  position={DropdownPosition.right}
372
372
  onSelect={this.onSelect}
373
373
  toggle={
374
- <KebabToggle onToggle={isOpen => this.onToggle('toggle-id-7', isOpen)} id="toggle-id-7" />
374
+ <KebabToggle onToggle={isOpen => this.onToggle('groups-kebab-toggle-4', isOpen)} id="groups-kebab-toggle-4" />
375
375
  }
376
- isOpen={isOpenMap && isOpenMap['toggle-id-7']}
376
+ isOpen={isOpenMap && isOpenMap['groups-kebab-toggle-4']}
377
377
  isPlain
378
378
  dropdownItems={dropdownItems}
379
- id="notification-7"
379
+ id="grouped-notification-4"
380
380
  />
381
381
  </NotificationDrawerListItemHeader>
382
382
  <NotificationDrawerListItemBody timestamp="20 minutes ago">
@@ -394,12 +394,12 @@ class GroupNotificationDrawer extends React.Component {
394
394
  direction={DropdownDirection.up}
395
395
  onSelect={this.onSelect}
396
396
  toggle={
397
- <KebabToggle onToggle={isOpen => this.onToggle('toggle-id-8', isOpen)} id="toggle-id-8" />
397
+ <KebabToggle onToggle={isOpen => this.onToggle('groups-kebab-toggle-5', isOpen)} id="groups-kebab-toggle-5" />
398
398
  }
399
- isOpen={isOpenMap && isOpenMap['toggle-id-8']}
399
+ isOpen={isOpenMap && isOpenMap['groups-kebab-toggle-5']}
400
400
  isPlain
401
401
  dropdownItems={dropdownItems}
402
- id="notification-8"
402
+ id="grouped-notification-5"
403
403
  />
404
404
  </NotificationDrawerListItemHeader>
405
405
  <NotificationDrawerListItemBody timestamp="30 minutes ago">
@@ -408,13 +408,37 @@ class GroupNotificationDrawer extends React.Component {
408
408
  </NotificationDrawerListItem>
409
409
  </NotificationDrawerList>
410
410
  </NotificationDrawerGroup>
411
+
411
412
  <NotificationDrawerGroup
412
- title="Second notification group"
413
+ title="Second notification group. This is a long title to show how the title will be truncated if it is long and will be shown in a single line."
413
414
  isExpanded={secondGroupExpanded}
414
- count={2}
415
+ count={0}
415
416
  onExpand={this.toggleSecondDrawer}
417
+ truncateTitle={1}
416
418
  >
417
419
  <NotificationDrawerList isHidden={!secondGroupExpanded}>
420
+ <EmptyState variant={EmptyStateVariant.full}>
421
+ <EmptyStateIcon icon={SearchIcon} />
422
+ <Title headingLevel="h2" size="lg">
423
+ No alerts found
424
+ </Title>
425
+ <EmptyStateBody>
426
+ There are currently no critical alerts firing. There may be firing alerts of other severities or
427
+ silenced critical alerts however.
428
+ </EmptyStateBody>
429
+ <EmptyStatePrimary>
430
+ <Button variant="link">Action</Button>
431
+ </EmptyStatePrimary>
432
+ </EmptyState>
433
+ </NotificationDrawerList>
434
+ </NotificationDrawerGroup>
435
+ <NotificationDrawerGroup
436
+ title="Third notification group"
437
+ isExpanded={thirdGroupExpanded}
438
+ count={2}
439
+ onExpand={this.toggleThirdDrawer}
440
+ >
441
+ <NotificationDrawerList isHidden={!thirdGroupExpanded}>
418
442
  <NotificationDrawerListItem variant="info">
419
443
  <NotificationDrawerListItemHeader
420
444
  variant="info"
@@ -425,12 +449,12 @@ class GroupNotificationDrawer extends React.Component {
425
449
  position={DropdownPosition.right}
426
450
  onSelect={this.onSelect}
427
451
  toggle={
428
- <KebabToggle onToggle={isOpen => this.onToggle('toggle-id-9', isOpen)} id="toggle-id-9" />
452
+ <KebabToggle onToggle={isOpen => this.onToggle('groups-kebab-toggle-6', isOpen)} id="groups-kebab-toggle-6" />
429
453
  }
430
- isOpen={isOpenMap && isOpenMap['toggle-id-9']}
454
+ isOpen={isOpenMap && isOpenMap['groups-kebab-toggle-6']}
431
455
  isPlain
432
456
  dropdownItems={dropdownItems}
433
- id="notification-9"
457
+ id="grouped-notification-6"
434
458
  />
435
459
  </NotificationDrawerListItemHeader>
436
460
  <NotificationDrawerListItemBody timestamp="5 minutes ago">
@@ -447,12 +471,12 @@ class GroupNotificationDrawer extends React.Component {
447
471
  position={DropdownPosition.right}
448
472
  onSelect={this.onSelect}
449
473
  toggle={
450
- <KebabToggle onToggle={isOpen => this.onToggle('toggle-id-10', isOpen)} id="toggle-id-10" />
474
+ <KebabToggle onToggle={isOpen => this.onToggle('groups-kebab-toggle-7', isOpen)} id="groups-kebab-toggle-7" />
451
475
  }
452
- isOpen={isOpenMap && isOpenMap['toggle-id-10']}
476
+ isOpen={isOpenMap && isOpenMap['groups-kebab-toggle-7']}
453
477
  isPlain
454
478
  dropdownItems={dropdownItems}
455
- id="notification-10"
479
+ id="grouped-notification-7"
456
480
  />
457
481
  </NotificationDrawerListItemHeader>
458
482
  <NotificationDrawerListItemBody timestamp="10 minutes ago">
@@ -470,12 +494,12 @@ class GroupNotificationDrawer extends React.Component {
470
494
  position={DropdownPosition.right}
471
495
  onSelect={this.onSelect}
472
496
  toggle={
473
- <KebabToggle onToggle={isOpen => this.onToggle('toggle-id-11', isOpen)} id="toggle-id-11" />
497
+ <KebabToggle onToggle={isOpen => this.onToggle('groups-kebab-toggle-8', isOpen)} id="groups-kebab-toggle-8" />
474
498
  }
475
- isOpen={isOpenMap && isOpenMap['toggle-id-11']}
499
+ isOpen={isOpenMap && isOpenMap['groups-kebab-toggle-8']}
476
500
  isPlain
477
501
  dropdownItems={dropdownItems}
478
- id="notification-11"
502
+ id="grouped-notification-8"
479
503
  />
480
504
  </NotificationDrawerListItemHeader>
481
505
  <NotificationDrawerListItemBody timestamp="20 minutes ago">
@@ -493,12 +517,12 @@ class GroupNotificationDrawer extends React.Component {
493
517
  direction={DropdownDirection.up}
494
518
  onSelect={this.onSelect}
495
519
  toggle={
496
- <KebabToggle onToggle={isOpen => this.onToggle('toggle-id-12', isOpen)} id="toggle-id-12" />
520
+ <KebabToggle onToggle={isOpen => this.onToggle('groups-kebab-toggle-9', isOpen)} id="groups-kebab-toggle-9" />
497
521
  }
498
- isOpen={isOpenMap && isOpenMap['toggle-id-12']}
522
+ isOpen={isOpenMap && isOpenMap['groups-kebab-toggle-9']}
499
523
  isPlain
500
524
  dropdownItems={dropdownItems}
501
- id="notification-12"
525
+ id="grouped-notification-9"
502
526
  />
503
527
  </NotificationDrawerListItemHeader>
504
528
  <NotificationDrawerListItemBody timestamp="30 minutes ago">
@@ -507,29 +531,6 @@ class GroupNotificationDrawer extends React.Component {
507
531
  </NotificationDrawerListItem>
508
532
  </NotificationDrawerList>
509
533
  </NotificationDrawerGroup>
510
- <NotificationDrawerGroup
511
- title="Third notification group. This is a long title to show how the title will be truncated if it is long and will be shown in a single line."
512
- isExpanded={thirdGroupExpanded}
513
- count={0}
514
- onExpand={this.toggleThirdDrawer}
515
- truncateTitle={1}
516
- >
517
- <NotificationDrawerList isHidden={!thirdGroupExpanded}>
518
- <EmptyState variant={EmptyStateVariant.full}>
519
- <EmptyStateIcon icon={SearchIcon} />
520
- <Title headingLevel="h2" size="lg">
521
- No alerts found
522
- </Title>
523
- <EmptyStateBody>
524
- There are currently no critical alerts firing. There may be firing alerts of other severities or
525
- silenced critical alerts however.
526
- </EmptyStateBody>
527
- <EmptyStatePrimary>
528
- <Button variant="link">Action</Button>
529
- </EmptyStatePrimary>
530
- </EmptyState>
531
- </NotificationDrawerList>
532
- </NotificationDrawerGroup>
533
534
  </NotificationDrawerGroupList>
534
535
  </NotificationDrawerBody>
535
536
  </NotificationDrawer>