@patternfly/react-core 5.1.1-prerelease.1 → 5.1.1-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.
Files changed (245) hide show
  1. package/CHANGELOG.md +54 -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/Chip/package.json +1 -1
  21. package/dist/dynamic/components/ClipboardCopy/package.json +1 -1
  22. package/dist/dynamic/components/CodeBlock/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/DragDrop/package.json +1 -1
  28. package/dist/dynamic/components/Drawer/package.json +1 -1
  29. package/dist/dynamic/components/Dropdown/package.json +1 -1
  30. package/dist/dynamic/components/DualListSelector/package.json +1 -1
  31. package/dist/dynamic/components/EmptyState/package.json +1 -1
  32. package/dist/dynamic/components/ExpandableSection/package.json +1 -1
  33. package/dist/dynamic/components/FileUpload/package.json +1 -1
  34. package/dist/dynamic/components/Form/package.json +1 -1
  35. package/dist/dynamic/components/FormSelect/package.json +1 -1
  36. package/dist/dynamic/components/HelperText/package.json +1 -1
  37. package/dist/dynamic/components/Hint/package.json +1 -1
  38. package/dist/dynamic/components/Icon/package.json +1 -1
  39. package/dist/dynamic/components/InputGroup/package.json +1 -1
  40. package/dist/dynamic/components/JumpLinks/package.json +1 -1
  41. package/dist/dynamic/components/Label/package.json +1 -1
  42. package/dist/dynamic/components/List/package.json +1 -1
  43. package/dist/dynamic/components/LoginPage/package.json +1 -1
  44. package/dist/dynamic/components/Masthead/package.json +1 -1
  45. package/dist/dynamic/components/Menu/package.json +1 -1
  46. package/dist/dynamic/components/MenuToggle/package.json +1 -1
  47. package/dist/dynamic/components/Modal/package.json +1 -1
  48. package/dist/dynamic/components/MultipleFileUpload/package.json +1 -1
  49. package/dist/dynamic/components/Nav/package.json +1 -1
  50. package/dist/dynamic/components/NotificationBadge/package.json +1 -1
  51. package/dist/dynamic/components/NotificationDrawer/package.json +1 -1
  52. package/dist/dynamic/components/NumberInput/package.json +1 -1
  53. package/dist/dynamic/components/OverflowMenu/package.json +1 -1
  54. package/dist/dynamic/components/Page/package.json +1 -1
  55. package/dist/dynamic/components/Pagination/package.json +1 -1
  56. package/dist/dynamic/components/Panel/package.json +1 -1
  57. package/dist/dynamic/components/Popover/package.json +1 -1
  58. package/dist/dynamic/components/Progress/package.json +1 -1
  59. package/dist/dynamic/components/ProgressStepper/package.json +1 -1
  60. package/dist/dynamic/components/Radio/package.json +1 -1
  61. package/dist/dynamic/components/SearchInput/package.json +1 -1
  62. package/dist/dynamic/components/Select/package.json +1 -1
  63. package/dist/dynamic/components/Sidebar/package.json +1 -1
  64. package/dist/dynamic/components/SimpleList/package.json +1 -1
  65. package/dist/dynamic/components/Skeleton/package.json +1 -1
  66. package/dist/dynamic/components/SkipToContent/package.json +1 -1
  67. package/dist/dynamic/components/Slider/package.json +1 -1
  68. package/dist/dynamic/components/Spinner/package.json +1 -1
  69. package/dist/dynamic/components/Switch/package.json +1 -1
  70. package/dist/dynamic/components/Tabs/package.json +1 -1
  71. package/dist/dynamic/components/Text/package.json +1 -1
  72. package/dist/dynamic/components/TextArea/package.json +1 -1
  73. package/dist/dynamic/components/TextInput/package.json +1 -1
  74. package/dist/dynamic/components/TextInputGroup/package.json +1 -1
  75. package/dist/dynamic/components/Tile/package.json +1 -1
  76. package/dist/dynamic/components/TimePicker/package.json +1 -1
  77. package/dist/dynamic/components/Timestamp/package.json +1 -1
  78. package/dist/dynamic/components/Title/package.json +1 -1
  79. package/dist/dynamic/components/ToggleGroup/package.json +1 -1
  80. package/dist/dynamic/components/Toolbar/package.json +1 -1
  81. package/dist/dynamic/components/Tooltip/package.json +1 -1
  82. package/dist/dynamic/components/TreeView/package.json +1 -1
  83. package/dist/dynamic/components/Truncate/package.json +1 -1
  84. package/dist/dynamic/components/Wizard/hooks/package.json +1 -1
  85. package/dist/dynamic/components/Wizard/package.json +1 -1
  86. package/dist/dynamic/deprecated/components/ApplicationLauncher/package.json +1 -1
  87. package/dist/dynamic/deprecated/components/ContextSelector/package.json +1 -1
  88. package/dist/dynamic/deprecated/components/Dropdown/package.json +1 -1
  89. package/dist/dynamic/deprecated/components/OptionsMenu/package.json +1 -1
  90. package/dist/dynamic/deprecated/components/PageHeader/package.json +1 -1
  91. package/dist/dynamic/deprecated/components/Select/package.json +1 -1
  92. package/dist/dynamic/deprecated/components/Wizard/package.json +1 -1
  93. package/dist/dynamic/deprecated/components/package.json +1 -1
  94. package/dist/dynamic/helpers/FocusTrap/FocusTrap/package.json +1 -1
  95. package/dist/dynamic/helpers/GenerateId/GenerateId/package.json +1 -1
  96. package/dist/dynamic/helpers/KeyboardHandler/package.json +1 -1
  97. package/dist/dynamic/helpers/OUIA/ouia/package.json +1 -1
  98. package/dist/dynamic/helpers/Popper/Popper/package.json +1 -1
  99. package/dist/dynamic/helpers/constants/package.json +1 -1
  100. package/dist/dynamic/helpers/datetimeUtils/package.json +1 -1
  101. package/dist/dynamic/helpers/favorites/package.json +1 -1
  102. package/dist/dynamic/helpers/fileUtils/package.json +1 -1
  103. package/dist/dynamic/helpers/htmlConstants/package.json +1 -1
  104. package/dist/dynamic/helpers/package.json +1 -1
  105. package/dist/dynamic/helpers/resizeObserver/package.json +1 -1
  106. package/dist/dynamic/helpers/typeUtils/package.json +1 -1
  107. package/dist/dynamic/helpers/useInterval/package.json +1 -1
  108. package/dist/dynamic/helpers/useIsomorphicLayout/package.json +1 -1
  109. package/dist/dynamic/helpers/useUnmountEffect/package.json +1 -1
  110. package/dist/dynamic/helpers/util/package.json +1 -1
  111. package/dist/dynamic/layouts/Bullseye/package.json +1 -1
  112. package/dist/dynamic/layouts/Flex/package.json +1 -1
  113. package/dist/dynamic/layouts/Gallery/package.json +1 -1
  114. package/dist/dynamic/layouts/Grid/package.json +1 -1
  115. package/dist/dynamic/layouts/Level/package.json +1 -1
  116. package/dist/dynamic/layouts/Split/package.json +1 -1
  117. package/dist/dynamic/layouts/Stack/package.json +1 -1
  118. package/dist/dynamic/next/components/package.json +1 -1
  119. package/dist/esm/components/BackToTop/BackToTop.js +1 -1
  120. package/dist/esm/components/BackToTop/BackToTop.js.map +1 -1
  121. package/dist/esm/components/Button/Button.d.ts +2 -2
  122. package/dist/esm/components/Button/Button.d.ts.map +1 -1
  123. package/dist/esm/components/Button/Button.js +3 -3
  124. package/dist/esm/components/Button/Button.js.map +1 -1
  125. package/dist/esm/components/Drawer/DrawerPanelContent.d.ts +16 -0
  126. package/dist/esm/components/Drawer/DrawerPanelContent.d.ts.map +1 -1
  127. package/dist/esm/components/Drawer/DrawerPanelContent.js +55 -15
  128. package/dist/esm/components/Drawer/DrawerPanelContent.js.map +1 -1
  129. package/dist/esm/components/Icon/Icon.d.ts +4 -0
  130. package/dist/esm/components/Icon/Icon.d.ts.map +1 -1
  131. package/dist/esm/components/Icon/Icon.js +2 -2
  132. package/dist/esm/components/Icon/Icon.js.map +1 -1
  133. package/dist/esm/components/Nav/NavItem.d.ts +1 -1
  134. package/dist/esm/components/Nav/NavItem.d.ts.map +1 -1
  135. package/dist/esm/components/Toolbar/ToolbarContent.d.ts.map +1 -1
  136. package/dist/esm/components/Toolbar/ToolbarContent.js +8 -6
  137. package/dist/esm/components/Toolbar/ToolbarContent.js.map +1 -1
  138. package/dist/esm/components/Toolbar/ToolbarExpandableContent.d.ts.map +1 -1
  139. package/dist/esm/components/Toolbar/ToolbarExpandableContent.js +3 -5
  140. package/dist/esm/components/Toolbar/ToolbarExpandableContent.js.map +1 -1
  141. package/dist/esm/components/Toolbar/ToolbarFilter.d.ts +4 -0
  142. package/dist/esm/components/Toolbar/ToolbarFilter.d.ts.map +1 -1
  143. package/dist/esm/components/Toolbar/ToolbarFilter.js +8 -4
  144. package/dist/esm/components/Toolbar/ToolbarFilter.js.map +1 -1
  145. package/dist/esm/components/Toolbar/ToolbarToggleGroup.d.ts +14 -0
  146. package/dist/esm/components/Toolbar/ToolbarToggleGroup.d.ts.map +1 -1
  147. package/dist/esm/components/Toolbar/ToolbarToggleGroup.js +21 -20
  148. package/dist/esm/components/Toolbar/ToolbarToggleGroup.js.map +1 -1
  149. package/dist/esm/components/Toolbar/ToolbarUtils.d.ts +4 -0
  150. package/dist/esm/components/Toolbar/ToolbarUtils.d.ts.map +1 -1
  151. package/dist/esm/components/Toolbar/ToolbarUtils.js +2 -1
  152. package/dist/esm/components/Toolbar/ToolbarUtils.js.map +1 -1
  153. package/dist/esm/components/Toolbar/index.d.ts +1 -0
  154. package/dist/esm/components/Toolbar/index.d.ts.map +1 -1
  155. package/dist/esm/components/Toolbar/index.js +1 -0
  156. package/dist/esm/components/Toolbar/index.js.map +1 -1
  157. package/dist/esm/deprecated/components/Select/Select.d.ts.map +1 -1
  158. package/dist/esm/deprecated/components/Select/Select.js +43 -42
  159. package/dist/esm/deprecated/components/Select/Select.js.map +1 -1
  160. package/dist/js/components/BackToTop/BackToTop.js +1 -1
  161. package/dist/js/components/BackToTop/BackToTop.js.map +1 -1
  162. package/dist/js/components/Button/Button.d.ts +2 -2
  163. package/dist/js/components/Button/Button.d.ts.map +1 -1
  164. package/dist/js/components/Button/Button.js +3 -3
  165. package/dist/js/components/Button/Button.js.map +1 -1
  166. package/dist/js/components/Drawer/DrawerPanelContent.d.ts +16 -0
  167. package/dist/js/components/Drawer/DrawerPanelContent.d.ts.map +1 -1
  168. package/dist/js/components/Drawer/DrawerPanelContent.js +55 -15
  169. package/dist/js/components/Drawer/DrawerPanelContent.js.map +1 -1
  170. package/dist/js/components/Icon/Icon.d.ts +4 -0
  171. package/dist/js/components/Icon/Icon.d.ts.map +1 -1
  172. package/dist/js/components/Icon/Icon.js +2 -2
  173. package/dist/js/components/Icon/Icon.js.map +1 -1
  174. package/dist/js/components/Nav/NavItem.d.ts +1 -1
  175. package/dist/js/components/Nav/NavItem.d.ts.map +1 -1
  176. package/dist/js/components/Toolbar/ToolbarContent.d.ts.map +1 -1
  177. package/dist/js/components/Toolbar/ToolbarContent.js +8 -6
  178. package/dist/js/components/Toolbar/ToolbarContent.js.map +1 -1
  179. package/dist/js/components/Toolbar/ToolbarExpandableContent.d.ts.map +1 -1
  180. package/dist/js/components/Toolbar/ToolbarExpandableContent.js +3 -5
  181. package/dist/js/components/Toolbar/ToolbarExpandableContent.js.map +1 -1
  182. package/dist/js/components/Toolbar/ToolbarFilter.d.ts +4 -0
  183. package/dist/js/components/Toolbar/ToolbarFilter.d.ts.map +1 -1
  184. package/dist/js/components/Toolbar/ToolbarFilter.js +8 -4
  185. package/dist/js/components/Toolbar/ToolbarFilter.js.map +1 -1
  186. package/dist/js/components/Toolbar/ToolbarToggleGroup.d.ts +14 -0
  187. package/dist/js/components/Toolbar/ToolbarToggleGroup.d.ts.map +1 -1
  188. package/dist/js/components/Toolbar/ToolbarToggleGroup.js +21 -20
  189. package/dist/js/components/Toolbar/ToolbarToggleGroup.js.map +1 -1
  190. package/dist/js/components/Toolbar/ToolbarUtils.d.ts +4 -0
  191. package/dist/js/components/Toolbar/ToolbarUtils.d.ts.map +1 -1
  192. package/dist/js/components/Toolbar/ToolbarUtils.js +2 -1
  193. package/dist/js/components/Toolbar/ToolbarUtils.js.map +1 -1
  194. package/dist/js/components/Toolbar/index.d.ts +1 -0
  195. package/dist/js/components/Toolbar/index.d.ts.map +1 -1
  196. package/dist/js/components/Toolbar/index.js +1 -0
  197. package/dist/js/components/Toolbar/index.js.map +1 -1
  198. package/dist/js/deprecated/components/Select/Select.d.ts.map +1 -1
  199. package/dist/js/deprecated/components/Select/Select.js +43 -42
  200. package/dist/js/deprecated/components/Select/Select.js.map +1 -1
  201. package/dist/styles/base-no-reset.css +19 -0
  202. package/dist/styles/base.css +19 -0
  203. package/dist/umd/react-core.min.js +3 -3
  204. package/helpers/package.json +1 -1
  205. package/layouts/package.json +1 -1
  206. package/next/package.json +1 -1
  207. package/package.json +6 -6
  208. package/src/components/Alert/__tests__/AlertGroup.test.tsx +77 -73
  209. package/src/components/BackToTop/BackToTop.tsx +1 -1
  210. package/src/components/BackToTop/__tests__/BackToTop.test.tsx +1 -1
  211. package/src/components/BackToTop/__tests__/__snapshots__/BackToTop.test.tsx.snap +1 -1
  212. package/src/components/Button/Button.tsx +5 -5
  213. package/src/components/Button/examples/ButtonVariations.tsx +1 -1
  214. package/src/components/Drawer/DrawerPanelContent.tsx +120 -55
  215. package/src/components/Drawer/__tests__/DrawerPanelContent.test.tsx +89 -0
  216. package/src/components/Drawer/examples/Drawer.md +31 -0
  217. package/src/components/Drawer/examples/DrawerFocusTrap.tsx +58 -0
  218. package/src/components/Icon/Icon.tsx +15 -1
  219. package/src/components/Icon/__tests__/Icon.test.tsx +16 -0
  220. package/src/components/Nav/NavItem.tsx +1 -1
  221. package/src/components/SearchInput/examples/SearchInputAdvanced.tsx +1 -1
  222. package/src/components/Tile/examples/Tile.md +14 -10
  223. package/src/components/Toolbar/ToolbarContent.tsx +7 -11
  224. package/src/components/Toolbar/ToolbarExpandableContent.tsx +7 -3
  225. package/src/components/Toolbar/ToolbarFilter.tsx +12 -2
  226. package/src/components/Toolbar/ToolbarToggleGroup.tsx +92 -47
  227. package/src/components/Toolbar/ToolbarUtils.tsx +6 -1
  228. package/src/components/Toolbar/__tests__/Generated/__snapshots__/ToolbarContent.test.tsx.snap +0 -8
  229. package/src/components/Toolbar/__tests__/Toolbar.test.tsx +3 -4
  230. package/src/components/Toolbar/__tests__/ToolbarToggleGroup.test.tsx +13 -10
  231. package/src/components/Toolbar/__tests__/__snapshots__/Toolbar.test.tsx.snap +0 -59
  232. package/src/components/Toolbar/examples/Test.tsx +258 -0
  233. package/src/components/Toolbar/examples/Toolbar.md +12 -6
  234. package/src/components/Toolbar/index.ts +1 -0
  235. package/src/demos/Card/Card.md +3 -664
  236. package/src/demos/Card/examples/CardView.tsx +575 -0
  237. package/src/demos/CardDemos.md +4 -4
  238. package/src/demos/NotificationDrawer/NotificationDrawer.md +2 -1435
  239. package/src/demos/NotificationDrawer/examples/NotificationDrawerBasic.tsx +557 -0
  240. package/src/demos/NotificationDrawer/examples/NotificationDrawerGrouped.tsx +796 -0
  241. package/src/demos/PrimaryDetail.md +2 -2
  242. package/src/deprecated/components/Select/Select.tsx +47 -45
  243. package/src/deprecated/components/Select/__tests__/__snapshots__/Select.test.tsx.snap +9 -5
  244. package/src/components/Alert/__tests__/__snapshots__/AlertGroup.test.tsx.snap +0 -10
  245. /package/src/demos/Card/{CardData.jsx → examples/CardData.jsx} +0 -0
@@ -3,8 +3,6 @@ id: Card view
3
3
  section: patterns
4
4
  ---
5
5
 
6
- import DashboardWrapper from '@patternfly/react-core/src/demos/examples/DashboardWrapper';
7
-
8
6
  import TrashIcon from '@patternfly/react-icons/dist/esm/icons/trash-icon';
9
7
  import PlusCircleIcon from '@patternfly/react-icons/dist/esm/icons/plus-circle-icon';
10
8
  import pfIcon from '../assets/pf-logo-small.svg';
@@ -18,7 +16,8 @@ import swaggerIcon from '../assets/camel-swagger-java_200x150.png';
18
16
  import azureIcon from '../assets/FuseConnector_Icons_AzureServices.png';
19
17
  import restIcon from '../assets/FuseConnector_Icons_REST.png';
20
18
  import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
21
- import { data } from './CardData.jsx';
19
+ import { data } from '@patternfly/react-core/src/demos/Card/examples/CardData.jsx';
20
+ import DashboardWrapper from '@patternfly/react-core/src/demos/examples/DashboardWrapper';
22
21
 
23
22
  ## Demos
24
23
 
@@ -26,665 +25,5 @@ This demonstrates how you can assemble a full page view that contains a grid of
26
25
 
27
26
  ### Card view
28
27
 
29
- ```js isFullscreen
30
- import React from 'react';
31
- import {
32
- Badge,
33
- Bullseye,
34
- Button,
35
- Card,
36
- CardHeader,
37
- CardTitle,
38
- CardBody,
39
- Divider,
40
- Dropdown,
41
- DropdownItem,
42
- DropdownList,
43
- EmptyState,
44
- EmptyStateHeader,
45
- EmptyStateIcon,
46
- EmptyStateFooter,
47
- EmptyStateVariant,
48
- EmptyStateActions,
49
- Gallery,
50
- MenuToggle,
51
- MenuToggleCheckbox,
52
- OverflowMenu,
53
- OverflowMenuControl,
54
- OverflowMenuDropdownItem,
55
- OverflowMenuItem,
56
- PageSection,
57
- PageSectionVariants,
58
- Pagination,
59
- TextContent,
60
- Text,
61
- Toolbar,
62
- ToolbarItem,
63
- ToolbarFilter,
64
- ToolbarContent,
65
- Select,
66
- SelectList,
67
- SelectOption
68
- } from '@patternfly/react-core';
69
- import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
70
- import DashboardWrapper from '@patternfly/react-core/src/demos/examples/DashboardWrapper';
71
- import TrashIcon from '@patternfly/react-icons/dist/esm/icons/trash-icon';
72
- import PlusCircleIcon from '@patternfly/react-icons/dist/esm/icons/plus-circle-icon';
73
- import pfIcon from '../assets/pf-logo-small.svg';
74
- import activeMQIcon from '../assets/activemq-core_200x150.png';
75
- import avroIcon from '../assets/camel-avro_200x150.png';
76
- import dropBoxIcon from '../assets/camel-dropbox_200x150.png';
77
- import infinispanIcon from '../assets/camel-infinispan_200x150.png';
78
- import saxonIcon from '../assets/camel-saxon_200x150.png';
79
- import sparkIcon from '../assets/camel-spark_200x150.png';
80
- import swaggerIcon from '../assets/camel-swagger-java_200x150.png';
81
- import azureIcon from '../assets/FuseConnector_Icons_AzureServices.png';
82
- import restIcon from '../assets/FuseConnector_Icons_REST.png';
83
- import { data } from './CardData.jsx';
84
-
85
- class CardViewBasic extends React.Component {
86
- constructor(props) {
87
- super(props);
88
-
89
- this.state = {
90
- filters: {
91
- products: []
92
- },
93
- cardData: data,
94
- isChecked: false,
95
- selectedItems: [],
96
- areAllSelected: false,
97
- isUpperToolbarDropdownOpen: false,
98
- isUpperToolbarKebabDropdownOpen: false,
99
- isLowerToolbarDropdownOpen: false,
100
- isLowerToolbarKebabDropdownOpen: false,
101
- isCardKebabDropdownOpen: false,
102
- activeItem: 0,
103
- splitButtonDropdownIsOpen: false,
104
- page: 1,
105
- perPage: 10,
106
- totalItemCount: 10
107
- };
108
-
109
- this.checkAllSelected = (selected, total) => {
110
- if (selected && selected < total) {
111
- return null;
112
- }
113
- return selected === total;
114
- };
115
-
116
- this.onToolbarDropdownToggle = () => {
117
- this.setState((prevState) => ({
118
- isLowerToolbarDropdownOpen: !prevState.isLowerToolbarDropdownOpen
119
- }));
120
- };
121
-
122
- this.onToolbarKebabDropdownToggle = () => {
123
- this.setState({
124
- isOpen: !this.state.isLowerToolbarKebabDropdownOpen
125
- });
126
- };
127
-
128
- this.onToolbarKebabDropdownSelect = (event) => {
129
- this.setState({
130
- isLowerToolbarKebabDropdownOpen: !this.state.isLowerToolbarKebabDropdownOpen
131
- });
132
- };
133
-
134
- this.onCardKebabDropdownToggle = (key, event) => {
135
- this.setState((prevState) => ({
136
- [key]: !prevState[key]
137
- }));
138
- };
139
-
140
- this.onCardKebabDropdownSelect = (key) => {
141
- this.setState({
142
- [key]: !this.state[key]
143
- });
144
- };
145
-
146
- this.deleteItem = (item) => () => {
147
- const filter = (getter) => (val) => getter(val) !== item.id;
148
- this.setState({
149
- cardData: this.state.cardData.filter(filter(({ id }) => id)),
150
- selectedItems: this.state.selectedItems.filter(filter((id) => id))
151
- });
152
- };
153
-
154
- this.onSetPage = (_event, pageNumber) => {
155
- this.setState({
156
- page: pageNumber
157
- });
158
- };
159
-
160
- this.onPerPageSelect = (_event, perPage) => {
161
- this.setState({
162
- perPage,
163
- page: 1
164
- });
165
- };
166
-
167
- this.onSplitButtonToggle = () => {
168
- this.setState((prevState) => ({
169
- splitButtonDropdownIsOpen: !prevState.splitButtonDropdownIsOpen
170
- }));
171
- };
172
-
173
- this.onSplitButtonSelect = () => {
174
- this.setState({
175
- splitButtonDropdownIsOpen: false
176
- });
177
- };
178
-
179
- this.onNameSelect = (event, selection) => {
180
- const checked = event.target.checked;
181
- this.setState((prevState) => {
182
- const prevSelections = prevState.filters.products;
183
- return {
184
- filters: {
185
- ...prevState.filters,
186
- ['products']: checked
187
- ? [...prevSelections, selection]
188
- : prevSelections.filter((value) => value !== selection)
189
- }
190
- };
191
- });
192
- };
193
-
194
- this.onDelete = (type = '', id = '') => {
195
- if (type) {
196
- this.setState((prevState) => {
197
- prevState.filters[type.toLowerCase()] = prevState.filters[type.toLowerCase()].filter((s) => s !== id);
198
- return {
199
- filters: prevState.filters
200
- };
201
- });
202
- } else {
203
- this.setState({
204
- filters: {
205
- products: []
206
- }
207
- });
208
- }
209
- };
210
-
211
- this.onClick = (productId) => {
212
- this.setState((prevState) =>
213
- prevState.selectedItems.includes(productId * 1)
214
- ? {
215
- selectedItems: [...prevState.selectedItems.filter((id) => productId * 1 != id)],
216
- areAllSelected: this.checkAllSelected(prevState.selectedItems.length - 1, prevState.totalItemCount)
217
- }
218
- : {
219
- selectedItems: [...prevState.selectedItems, productId * 1],
220
- areAllSelected: this.checkAllSelected(prevState.selectedItems.length + 1, prevState.totalItemCount)
221
- }
222
- );
223
- };
224
- }
225
-
226
- selectedItems(e) {
227
- const { value, checked } = e.target;
228
- let { selectedItems } = this.state;
229
-
230
- if (checked) {
231
- selectedItems = [...selectedItems, value];
232
- } else {
233
- selectedItems = selectedItems.filter((el) => el !== value);
234
- if (this.state.areAllSelected) {
235
- this.setState({
236
- areAllSelected: !this.state.areAllSelected
237
- });
238
- }
239
- }
240
- this.setState({ selectedItems });
241
- }
242
-
243
- splitCheckboxSelectAll(e) {
244
- const { checked } = e.target;
245
- const { isChecked } = this.state;
246
- let collection = [];
247
-
248
- if (checked) {
249
- for (let i = 0; i <= 9; i++) {
250
- collection = [...collection, i];
251
- }
252
- }
253
-
254
- this.setState(
255
- {
256
- selectedItems: collection,
257
- isChecked,
258
- areAllSelected: checked
259
- },
260
- this.updateSelected
261
- );
262
- }
263
-
264
- selectPage(e) {
265
- const { checked } = e.target;
266
- const { totalItemCount, perPage } = this.state;
267
- let collection = [];
268
-
269
- collection = this.getAllItems();
270
-
271
- this.setState(
272
- {
273
- selectedItems: collection,
274
- isChecked: checked,
275
- areAllSelected: totalItemCount === perPage ? true : false
276
- },
277
- this.updateSelected
278
- );
279
- }
280
-
281
- selectAll() {
282
-
283
- let collection = [];
284
- for (let i = 0; i <= 9; i++) {
285
- collection = [...collection, i];
286
- }
287
-
288
- this.setState(
289
- {
290
- selectedItems: collection,
291
- isChecked: true,
292
- areAllSelected: true
293
- },
294
- this.updateSelected
295
- );
296
- }
297
-
298
- selectNone() {
299
- this.setState(
300
- {
301
- selectedItems: [],
302
- isChecked: false,
303
- areAllSelected: false
304
- },
305
- this.updateSelected
306
- );
307
- }
308
-
309
- getAllItems() {
310
- const { cardData } = this.state;
311
- const collection = [];
312
- for (const items of cardData) {
313
- collection.push(items.id);
314
- }
315
-
316
- return collection;
317
- }
318
-
319
- updateSelected() {
320
- const { cardData, selectedItems } = this.state;
321
- const rows = cardData.map((post) => {
322
- post.selected = selectedItems.includes(post.id);
323
- return post;
324
- });
325
-
326
- this.setState({
327
- cardData: rows
328
- });
329
- }
330
-
331
- renderPagination() {
332
- const { page, perPage, totalItemCount } = this.state;
333
-
334
- const defaultPerPageOptions = [
335
- {
336
- title: '1',
337
- value: 1
338
- },
339
- {
340
- title: '5',
341
- value: 5
342
- },
343
- {
344
- title: '10',
345
- value: 10
346
- }
347
- ];
348
-
349
- return (
350
- <Pagination
351
- itemCount={totalItemCount}
352
- page={page}
353
- perPage={perPage}
354
- perPageOptions={defaultPerPageOptions}
355
- onSetPage={this.onSetPage}
356
- onPerPageSelect={this.onPerPageSelect}
357
- variant="top"
358
- isCompact
359
- />
360
- );
361
- }
362
-
363
- buildSelectDropdown() {
364
- const { splitButtonDropdownIsOpen, selectedItems, areAllSelected } = this.state;
365
- const numSelected = selectedItems.length;
366
- const allSelected = areAllSelected;
367
- const anySelected = numSelected > 0;
368
- const someChecked = anySelected ? null : false;
369
- const isChecked = allSelected ? true : someChecked;
370
- const splitButtonDropdownItems = (
371
- <>
372
- <DropdownItem key="item-1" onClick={this.selectNone.bind(this)}>
373
- Select none (0 items)
374
- </DropdownItem>
375
- <DropdownItem key="item-2" onClick={this.selectPage.bind(this)}>
376
- Select page ({this.state.perPage} items)
377
- </DropdownItem>
378
- <DropdownItem key="item-3" onClick={this.selectAll.bind(this)}>
379
- Select all ({this.state.totalItemCount} items)
380
- </DropdownItem>
381
- </>
382
- );
383
- return (
384
- <Dropdown
385
- onSelect={this.onSplitButtonSelect}
386
- isOpen={splitButtonDropdownIsOpen}
387
- onOpenChange={(isOpen) => this.setState({ splitButtonDropdownIsOpen: isOpen })}
388
- toggle={(toggleRef) => (
389
- <MenuToggle
390
- ref={toggleRef}
391
- isExpanded={splitButtonDropdownIsOpen}
392
- onClick={this.onSplitButtonToggle}
393
- aria-label="Select cards"
394
- splitButtonOptions={{
395
- items: [
396
- <MenuToggleCheckbox
397
- id="split-dropdown-checkbox"
398
- key="split-dropdown-checkbox"
399
- aria-label={anySelected ? 'Deselect all cards' : 'Select all cards'}
400
- isChecked={areAllSelected}
401
- onClick={this.splitCheckboxSelectAll.bind(this)}
402
- >
403
- {numSelected !== 0 && `${numSelected} selected`}
404
- </MenuToggleCheckbox>
405
- ]
406
- }}
407
- ></MenuToggle>
408
- )}
409
- >
410
- <DropdownList>{splitButtonDropdownItems}</DropdownList>
411
- </Dropdown>
412
- );
413
- }
414
-
415
- buildFilterDropdown() {
416
- const { isLowerToolbarDropdownOpen, filters } = this.state;
417
-
418
- const filterDropdownItems = (
419
- <SelectList>
420
- <SelectOption
421
- hasCheckbox
422
- key="patternfly"
423
- value="PatternFly"
424
- isSelected={filters.products.includes('PatternFly')}
425
- >
426
- PatternFly
427
- </SelectOption>
428
- <SelectOption hasCheckbox key="activemq" value="ActiveMQ" isSelected={filters.products.includes('ActiveMQ')}>
429
- ActiveMQ
430
- </SelectOption>
431
- <SelectOption
432
- hasCheckbox
433
- key="apachespark"
434
- value="Apache Spark"
435
- isSelected={filters.products.includes('Apache Spark')}
436
- >
437
- Apache Spark
438
- </SelectOption>
439
- <SelectOption hasCheckbox key="avro" value="Avro" isSelected={filters.products.includes('Avro')}>
440
- Avro
441
- </SelectOption>
442
- <SelectOption
443
- hasCheckbox
444
- key="azureservices"
445
- value="Azure Services"
446
- isSelected={filters.products.includes('Azure Services')}
447
- >
448
- Azure Services
449
- </SelectOption>
450
- <SelectOption hasCheckbox key="crypto" value="Crypto" isSelected={filters.products.includes('Crypto')}>
451
- Crypto
452
- </SelectOption>
453
- <SelectOption hasCheckbox key="dropbox" value="DropBox" isSelected={filters.products.includes('DropBox')}>
454
- DropBox
455
- </SelectOption>
456
- <SelectOption
457
- hasCheckbox
458
- key="jbossdatagrid"
459
- value="JBoss Data Grid"
460
- isSelected={filters.products.includes('JBoss Data Grid')}
461
- >
462
- JBoss Data Grid
463
- </SelectOption>
464
- <SelectOption hasCheckbox key="rest" value="REST" isSelected={filters.products.includes('REST')}>
465
- REST
466
- </SelectOption>
467
- <SelectOption hasCheckbox key="swagger" value="SWAGGER" isSelected={filters.products.includes('SWAGGER')}>
468
- SWAGGER
469
- </SelectOption>
470
- </SelectList>
471
- );
472
-
473
- return (
474
- <ToolbarFilter categoryName="Products" chips={filters.products} deleteChip={this.onDelete}>
475
- <Select
476
- aria-label="Products"
477
- role="menu"
478
- toggle={(toggleRef) => (
479
- <MenuToggle ref={toggleRef} onClick={this.onToolbarDropdownToggle} isExpanded={isLowerToolbarDropdownOpen}>
480
- Filter by creator name
481
- {filters.products.length > 0 && <Badge isRead>{filters.products.length}</Badge>}
482
- </MenuToggle>
483
- )}
484
- onSelect={this.onNameSelect}
485
- onOpenChange={(isOpen) => {
486
- this.setState(() => ({
487
- isLowerToolbarDropdownOpen: isOpen
488
- }));
489
- }}
490
- selected={filters.products}
491
- isOpen={isLowerToolbarDropdownOpen}
492
- >
493
- {filterDropdownItems}
494
- </Select>
495
- </ToolbarFilter>
496
- );
497
- }
498
-
499
- render() {
500
- const {
501
- isLowerToolbarKebabDropdownOpen,
502
- filters,
503
- cardData,
504
- selectedItems,
505
- totalItemCount,
506
- onPerPageSelect,
507
- onSetPage,
508
- page,
509
- perPage
510
- } = this.state;
511
-
512
- const toolbarKebabDropdownItems = [
513
- <OverflowMenuDropdownItem itemId={0} key="link">
514
- Link
515
- </OverflowMenuDropdownItem>,
516
- <OverflowMenuDropdownItem itemId={1} key="action" component="button">
517
- Action
518
- </OverflowMenuDropdownItem>,
519
- <OverflowMenuDropdownItem itemId={2} key="disabled link" isDisabled>
520
- Disabled Link
521
- </OverflowMenuDropdownItem>,
522
- <OverflowMenuDropdownItem itemId={3} key="disabled action" isDisabled component="button">
523
- Disabled Action
524
- </OverflowMenuDropdownItem>,
525
- <Divider key="separator" />,
526
- <OverflowMenuDropdownItem itemId={5} key="separated link">
527
- Separated Link
528
- </OverflowMenuDropdownItem>,
529
- <OverflowMenuDropdownItem itemId={6} key="separated action" component="button">
530
- Separated Action
531
- </OverflowMenuDropdownItem>
532
- ];
533
-
534
- const toolbarItems = (
535
- <React.Fragment>
536
- <ToolbarItem variant="bulk-select">{this.buildSelectDropdown()}</ToolbarItem>
537
- <ToolbarItem breakpoint="xl">{this.buildFilterDropdown()}</ToolbarItem>
538
- <ToolbarItem variant="overflow-menu">
539
- <OverflowMenu breakpoint="md">
540
- <OverflowMenuItem>
541
- <Button variant="primary">Create a project</Button>
542
- </OverflowMenuItem>
543
- <OverflowMenuControl hasAdditionalOptions>
544
- <Dropdown
545
- onSelect={this.onToolbarKebabDropdownSelect}
546
- toggle={(toggleRef) => (
547
- <MenuToggle
548
- ref={toggleRef}
549
- aria-label="Toolbar kebab overflow menu"
550
- variant="plain"
551
- onClick={this.onToolbarKebabDropdownToggle}
552
- isExpanded={isLowerToolbarKebabDropdownOpen}
553
- >
554
- <EllipsisVIcon />
555
- </MenuToggle>
556
- )}
557
- isOpen={isLowerToolbarKebabDropdownOpen}
558
- onOpenChange={(isOpen) => this.setState({ isLowerToolbarKebabDropdownOpen: isOpen })}
559
- >
560
- <DropdownList>{toolbarKebabDropdownItems}</DropdownList>
561
- </Dropdown>
562
- </OverflowMenuControl>
563
- </OverflowMenu>
564
- </ToolbarItem>
565
- <ToolbarItem variant="pagination" align={{ default: 'alignRight' }}>
566
- {this.renderPagination()}
567
- </ToolbarItem>
568
- </React.Fragment>
569
- );
570
-
571
- const icons = {
572
- pfIcon,
573
- activeMQIcon,
574
- sparkIcon,
575
- avroIcon,
576
- azureIcon,
577
- saxonIcon,
578
- dropBoxIcon,
579
- infinispanIcon,
580
- restIcon,
581
- swaggerIcon
582
- };
583
-
584
- const filtered =
585
- filters.products.length > 0
586
- ? data.filter((card) => filters.products.length === 0 || filters.products.includes(card.name))
587
- : cardData.slice((page - 1) * perPage, perPage === 1 ? page * perPage : page * perPage - 1);
588
-
589
- return (
590
- <React.Fragment>
591
- <DashboardWrapper mainContainerId="main-content-card-view-default-nav" breadcrumb={null}>
592
- <PageSection variant={PageSectionVariants.light}>
593
- <TextContent>
594
- <Text component="h1">Projects</Text>
595
- <Text component="p">This is a demo that showcases PatternFly cards.</Text>
596
- </TextContent>
597
- <Toolbar id="toolbar-group-types" clearAllFilters={this.onDelete}>
598
- <ToolbarContent>{toolbarItems}</ToolbarContent>
599
- </Toolbar>
600
- </PageSection>
601
- <PageSection isFilled>
602
- <Gallery hasGutter aria-label="Selectable card container">
603
- <Card isCompact>
604
- <Bullseye>
605
- <EmptyState variant={EmptyStateVariant.xs}>
606
- <EmptyStateHeader
607
- headingLevel="h2"
608
- titleText="Add a new card to your page"
609
- icon={<EmptyStateIcon icon={PlusCircleIcon} />}
610
- />
611
- <EmptyStateFooter>
612
- <EmptyStateActions>
613
- <Button variant="link">Add card</Button>
614
- </EmptyStateActions>
615
- </EmptyStateFooter>
616
- </EmptyState>
617
- </Bullseye>
618
- </Card>
619
- {filtered.map((product, key) => (
620
- <Card
621
- isCompact
622
- isClickable
623
- isSelectable
624
- key={product.name}
625
- id={product.name.replace(/ /g, '-')}
626
- >
627
- <CardHeader
628
- selectableActions={{
629
- isChecked: selectedItems.includes(product.id),
630
- selectableActionId: `selectable-actions-item-${product.id}`,
631
- selectableActionAriaLabelledby: product.name.replace(/ /g, '-'),
632
- name: `check-${product.id}`,
633
- onChange: () => this.onClick(product.id)
634
- }}
635
- actions={{
636
- actions: (
637
- <>
638
- <Dropdown
639
- isOpen={this.state[key] ?? false}
640
- onOpenChange={(isOpen) => this.setState({ [key]: isOpen })}
641
- toggle={(toggleRef: React.Ref<MenuToggleElement>) => (
642
- <MenuToggle
643
- ref={toggleRef}
644
- aria-label={`${product.name} actions`}
645
- variant="plain"
646
- onClick={(e) => {
647
- this.onCardKebabDropdownToggle(key, e);
648
- }}
649
- isExpanded={this.state[key]}
650
- >
651
- <EllipsisVIcon />
652
- </MenuToggle>
653
- )}
654
- popperProps={{ position: 'right' }}
655
- >
656
- <DropdownList>
657
- <DropdownItem key="trash" onClick={this.deleteItem(product)}>
658
- <TrashIcon />
659
- Delete
660
- </DropdownItem>
661
- </DropdownList>
662
- </Dropdown>
663
- </>
664
- )
665
- }}
666
- >
667
- <img src={icons[product.icon]} alt={`${product.name} icon`} style={{ maxWidth: '60px' }} />
668
- </CardHeader>
669
- <CardTitle>{product.name}</CardTitle>
670
- <CardBody>{product.description}</CardBody>
671
- </Card>
672
- ))}
673
- </Gallery>
674
- </PageSection>
675
- <PageSection isFilled={false} sticky="bottom" padding={{ default: 'noPadding' }} variant="light">
676
- <Pagination
677
- itemCount={totalItemCount}
678
- page={page}
679
- perPage={perPage}
680
- onPerPageSelect={onPerPageSelect}
681
- onSetPage={onSetPage}
682
- variant="bottom"
683
- />
684
- </PageSection>
685
- </DashboardWrapper>
686
- </React.Fragment>
687
- );
688
- }
689
- }
28
+ ```js file="./examples/CardView.tsx" isFullscreen
690
29
  ```