@patternfly/react-core 4.227.2 → 4.227.5

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 (52) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/esm/components/DataList/DataList.d.ts +0 -2
  3. package/dist/esm/components/DataList/DataList.d.ts.map +1 -1
  4. package/dist/esm/components/DataList/DataList.js.map +1 -1
  5. package/dist/esm/components/DataList/DataListItem.d.ts.map +1 -1
  6. package/dist/esm/components/DataList/DataListItem.js +1 -2
  7. package/dist/esm/components/DataList/DataListItem.js.map +1 -1
  8. package/dist/js/components/DataList/DataList.d.ts +0 -2
  9. package/dist/js/components/DataList/DataList.d.ts.map +1 -1
  10. package/dist/js/components/DataList/DataList.js.map +1 -1
  11. package/dist/js/components/DataList/DataListItem.d.ts.map +1 -1
  12. package/dist/js/components/DataList/DataListItem.js +1 -2
  13. package/dist/js/components/DataList/DataListItem.js.map +1 -1
  14. package/dist/umd/react-core.js +1 -2
  15. package/dist/umd/react-core.min.css +3339 -3339
  16. package/dist/umd/react-core.min.js +1 -1
  17. package/package.json +5 -5
  18. package/src/components/DataList/DataList.tsx +0 -2
  19. package/src/components/DataList/DataListItem.tsx +1 -3
  20. package/src/components/DataList/__tests__/DataList.test.tsx +14 -32
  21. package/src/components/DataList/examples/DataListSelectableRows.tsx +1 -1
  22. package/src/components/Menu/examples/Menu.md +19 -1290
  23. package/src/components/Menu/examples/MenuBasic.tsx +51 -0
  24. package/src/components/Menu/examples/MenuFilteringWithTextInput.tsx +52 -0
  25. package/src/components/Menu/examples/MenuOptionMultiSelect.tsx +30 -0
  26. package/src/components/Menu/examples/MenuOptionSingleSelect.tsx +27 -0
  27. package/src/components/Menu/examples/MenuScrollable.tsx +48 -0
  28. package/src/components/Menu/examples/MenuScrollableCustomMenuHeight.tsx +48 -0
  29. package/src/components/Menu/examples/MenuWithActions.tsx +75 -0
  30. package/src/components/Menu/examples/MenuWithCheckbox.tsx +2 -2
  31. package/src/components/Menu/examples/MenuWithDescription.tsx +35 -0
  32. package/src/components/Menu/examples/{MenuDrilldown.tsx → MenuWithDrilldown.tsx} +1 -1
  33. package/src/components/Menu/examples/MenuWithDrilldownBreadcrumbs.tsx +331 -0
  34. package/src/components/Menu/examples/{MenuDrilldownInitialState.tsx → MenuWithDrilldownInitialState.tsx} +0 -0
  35. package/src/components/Menu/examples/{MenuDrilldownSubmenuFunctions.tsx → MenuWithDrilldownSubmenuFunctions.tsx} +1 -1
  36. package/src/components/Menu/examples/MenuWithFavorites.tsx +104 -0
  37. package/src/components/Menu/examples/MenuWithFooter.tsx +40 -0
  38. package/src/components/Menu/examples/MenuWithIcons.tsx +33 -0
  39. package/src/components/Menu/examples/MenuWithLinks.tsx +30 -0
  40. package/src/components/Menu/examples/MenuWithSeparators.tsx +26 -0
  41. package/src/components/Menu/examples/MenuWithTitledGroups.tsx +46 -0
  42. package/src/components/Menu/examples/MenuWithViewMore.tsx +118 -0
  43. package/src/components/Radio/examples/Radio.md +12 -68
  44. package/src/components/Radio/examples/RadioControlled.tsx +21 -0
  45. package/src/components/Radio/examples/RadioDisabled.tsx +15 -0
  46. package/src/components/Radio/examples/RadioLabelWraps.tsx +6 -0
  47. package/src/components/Radio/examples/RadioReversed.tsx +6 -0
  48. package/src/components/Radio/examples/RadioStandaloneInput.tsx +6 -0
  49. package/src/components/Radio/examples/RadioUncontrolled.tsx +6 -0
  50. package/src/components/Radio/examples/RadioWithBody.tsx +6 -0
  51. package/src/components/Radio/examples/RadioWithDescription.tsx +11 -0
  52. package/src/components/Radio/examples/RadioWithDescriptionAndBody.tsx +12 -0
@@ -0,0 +1,51 @@
1
+ import React from 'react';
2
+ import { Menu, MenuContent, MenuList, MenuItem, Checkbox } from '@patternfly/react-core';
3
+
4
+ export const MenuBasic: React.FunctionComponent = () => {
5
+ const [activeItem, setActiveItem] = React.useState(0);
6
+ const [isPlain, setIsPlain] = React.useState(false);
7
+
8
+ const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, itemId: number | string | undefined) => {
9
+ const item = itemId as number; // eslint-disable-next-line no-console
10
+ console.log(`clicked ${itemId}`);
11
+ setActiveItem(item);
12
+ };
13
+
14
+ const togglePlain = (checked: boolean) => {
15
+ setIsPlain(checked);
16
+ };
17
+
18
+ return (
19
+ <React.Fragment>
20
+ <Menu activeItemId={activeItem} onSelect={onSelect} isPlain={isPlain}>
21
+ <MenuContent>
22
+ <MenuList>
23
+ <MenuItem itemId={0}>Action</MenuItem>
24
+ <MenuItem
25
+ itemId={1}
26
+ to="#default-link2"
27
+ // just for demo so that navigation is not triggered
28
+ onClick={event => event.preventDefault()}
29
+ >
30
+ Link
31
+ </MenuItem>
32
+ <MenuItem isDisabled>Disabled action</MenuItem>
33
+ <MenuItem isDisabled to="#default-link4">
34
+ Disabled link
35
+ </MenuItem>
36
+ </MenuList>
37
+ </MenuContent>
38
+ </Menu>
39
+ <div style={{ marginTop: 20 }}>
40
+ <Checkbox
41
+ label="Plain menu"
42
+ isChecked={isPlain}
43
+ onChange={togglePlain}
44
+ aria-label="plain menu checkbox"
45
+ id="toggle-plain"
46
+ name="toggle-plain"
47
+ />
48
+ </div>
49
+ </React.Fragment>
50
+ );
51
+ };
@@ -0,0 +1,52 @@
1
+ import React from 'react';
2
+ import { Menu, MenuList, MenuItem, MenuContent, MenuInput, TextInput, Divider } from '@patternfly/react-core';
3
+
4
+ export const MenuFilteringWithTextInput: React.FunctionComponent = () => {
5
+ const [activeItem, setActiveItem] = React.useState(0);
6
+ const [input, setInput] = React.useState('');
7
+
8
+ const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, itemId: number | string | undefined) => {
9
+ const item = itemId as number; // eslint-disable-next-line no-console
10
+ console.log(`clicked ${itemId}`);
11
+ setActiveItem(item);
12
+ };
13
+
14
+ const handleTextInputChange = (value: string) => {
15
+ setInput(value);
16
+ };
17
+
18
+ const menuListItemsText = ['Action 1', 'Action 2', 'Action 3'];
19
+
20
+ const menuListItems = menuListItemsText
21
+ .filter(item => !input || item.toLowerCase().includes(input.toString().toLowerCase()))
22
+ .map((currentValue, index) => (
23
+ <MenuItem key={currentValue} itemId={index}>
24
+ {currentValue}
25
+ </MenuItem>
26
+ ));
27
+ if (input && menuListItems.length === 0) {
28
+ menuListItems.push(
29
+ <MenuItem isDisabled key="no result">
30
+ No results found
31
+ </MenuItem>
32
+ );
33
+ }
34
+
35
+ return (
36
+ <Menu onSelect={onSelect} activeItemId={activeItem}>
37
+ <MenuInput>
38
+ <TextInput
39
+ value={input}
40
+ aria-label="Filter menu items"
41
+ iconVariant="search"
42
+ type="search"
43
+ onChange={value => handleTextInputChange(value)}
44
+ />
45
+ </MenuInput>
46
+ <Divider />
47
+ <MenuContent>
48
+ <MenuList>{menuListItems}</MenuList>
49
+ </MenuContent>
50
+ </Menu>
51
+ );
52
+ };
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import { Menu, MenuContent, MenuList, MenuItem } from '@patternfly/react-core';
3
+ import TableIcon from '@patternfly/react-icons/dist/esm/icons/table-icon';
4
+
5
+ export const MenuOptionMultiSelect: React.FunctionComponent = () => {
6
+ const [selectedItems, setSelectedItems] = React.useState<number[]>([]);
7
+
8
+ const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, itemId: number | string | undefined) => {
9
+ const item = itemId as number;
10
+ if (selectedItems.indexOf(item) !== -1) {
11
+ setSelectedItems(selectedItems.filter(id => id !== item));
12
+ } else {
13
+ setSelectedItems([...selectedItems, item]);
14
+ }
15
+ };
16
+
17
+ return (
18
+ <Menu onSelect={onSelect} activeItemId={0} selected={selectedItems}>
19
+ <MenuContent>
20
+ <MenuList>
21
+ <MenuItem itemId={0}>Option 1</MenuItem>
22
+ <MenuItem itemId={1}>Option 2</MenuItem>
23
+ <MenuItem icon={<TableIcon aria-hidden />} itemId={2}>
24
+ Option 3
25
+ </MenuItem>
26
+ </MenuList>
27
+ </MenuContent>
28
+ </Menu>
29
+ );
30
+ };
@@ -0,0 +1,27 @@
1
+ import React from 'react';
2
+ import { Menu, MenuContent, MenuList, MenuItem } from '@patternfly/react-core';
3
+ import TableIcon from '@patternfly/react-icons/dist/esm/icons/table-icon';
4
+
5
+ export const MenuOptionSingleSelect: React.FunctionComponent = () => {
6
+ const [activeItem, setActiveItem] = React.useState(0);
7
+ const [selectedItem, setSelectedItem] = React.useState(0);
8
+
9
+ const onSelect = (_event, itemId) => {
10
+ setActiveItem(itemId);
11
+ setSelectedItem(itemId);
12
+ };
13
+
14
+ return (
15
+ <Menu onSelect={onSelect} activeItemId={activeItem} selected={selectedItem}>
16
+ <MenuContent>
17
+ <MenuList>
18
+ <MenuItem itemId={0}>Option 1</MenuItem>
19
+ <MenuItem itemId={1}>Option 2</MenuItem>
20
+ <MenuItem icon={<TableIcon aria-hidden />} itemId={2}>
21
+ Option 3
22
+ </MenuItem>
23
+ </MenuList>
24
+ </MenuContent>
25
+ </Menu>
26
+ );
27
+ };
@@ -0,0 +1,48 @@
1
+ import React from 'react';
2
+ import { Menu, MenuContent, MenuList, MenuItem } from '@patternfly/react-core';
3
+
4
+ export const MenuScrollable: React.FunctionComponent = () => {
5
+ const [activeItem, setActiveItem] = React.useState(0);
6
+
7
+ const onSelect = (_event, itemId) => {
8
+ // eslint-disable-next-line no-console
9
+ console.log(`clicked ${itemId}`);
10
+ setActiveItem(itemId);
11
+ };
12
+
13
+ return (
14
+ <Menu activeItemId={activeItem} onSelect={onSelect} isScrollable>
15
+ <MenuContent>
16
+ <MenuList>
17
+ <MenuItem itemId={0}>Action 1</MenuItem>
18
+ <MenuItem itemId={1}>Action 2</MenuItem>
19
+ <MenuItem itemId={2}>Action 3</MenuItem>
20
+ <MenuItem itemId={3}>Action 4</MenuItem>
21
+ <MenuItem itemId={4}>Action 5</MenuItem>
22
+ <MenuItem itemId={5}>Action 6</MenuItem>
23
+ <MenuItem itemId={6}>Action 7</MenuItem>
24
+ <MenuItem itemId={7}>Action 8</MenuItem>
25
+ <MenuItem itemId={8}>Action 9</MenuItem>
26
+ <MenuItem itemId={9}>Action 10</MenuItem>
27
+ <MenuItem itemId={10}>Action 11</MenuItem>
28
+ <MenuItem itemId={11}>Action 12</MenuItem>
29
+ <MenuItem itemId={12}>Action 13</MenuItem>
30
+ <MenuItem itemId={13}>Action 14</MenuItem>
31
+ <MenuItem itemId={14}>Action 15</MenuItem>
32
+ <MenuItem
33
+ itemId={15}
34
+ to="#default-link2"
35
+ // just for demo so that navigation is not triggered
36
+ onClick={event => event.preventDefault()}
37
+ >
38
+ Link
39
+ </MenuItem>
40
+ <MenuItem isDisabled>Disabled action</MenuItem>
41
+ <MenuItem isDisabled to="#default-link4">
42
+ Disabled link
43
+ </MenuItem>
44
+ </MenuList>
45
+ </MenuContent>
46
+ </Menu>
47
+ );
48
+ };
@@ -0,0 +1,48 @@
1
+ import React from 'react';
2
+ import { Menu, MenuContent, MenuList, MenuItem } from '@patternfly/react-core';
3
+
4
+ export const MenuScrollableCustomMenuHeight: React.FunctionComponent = () => {
5
+ const [activeItem, setActiveItem] = React.useState(0);
6
+
7
+ const onSelect = (_event, itemId) => {
8
+ // eslint-disable-next-line no-console
9
+ console.log(`clicked ${itemId}`);
10
+ setActiveItem(itemId);
11
+ };
12
+
13
+ return (
14
+ <Menu activeItemId={activeItem} onSelect={onSelect} isScrollable>
15
+ <MenuContent menuHeight="200px">
16
+ <MenuList>
17
+ <MenuItem itemId={0}>Action 1</MenuItem>
18
+ <MenuItem itemId={1}>Action 2</MenuItem>
19
+ <MenuItem itemId={2}>Action 3</MenuItem>
20
+ <MenuItem itemId={3}>Action 4</MenuItem>
21
+ <MenuItem itemId={4}>Action 5</MenuItem>
22
+ <MenuItem itemId={5}>Action 6</MenuItem>
23
+ <MenuItem itemId={6}>Action 7</MenuItem>
24
+ <MenuItem itemId={7}>Action 8</MenuItem>
25
+ <MenuItem itemId={8}>Action 9</MenuItem>
26
+ <MenuItem itemId={9}>Action 10</MenuItem>
27
+ <MenuItem itemId={10}>Action 11</MenuItem>
28
+ <MenuItem itemId={11}>Action 12</MenuItem>
29
+ <MenuItem itemId={12}>Action 13</MenuItem>
30
+ <MenuItem itemId={13}>Action 14</MenuItem>
31
+ <MenuItem itemId={14}>Action 15</MenuItem>
32
+ <MenuItem
33
+ itemId={15}
34
+ to="#default-link2"
35
+ // just for demo so that navigation is not triggered
36
+ onClick={event => event.preventDefault()}
37
+ >
38
+ Link
39
+ </MenuItem>
40
+ <MenuItem isDisabled>Disabled action</MenuItem>
41
+ <MenuItem isDisabled to="#default-link4">
42
+ Disabled link
43
+ </MenuItem>
44
+ </MenuList>
45
+ </MenuContent>
46
+ </Menu>
47
+ );
48
+ };
@@ -0,0 +1,75 @@
1
+ import React from 'react';
2
+ import { Menu, MenuContent, MenuGroup, MenuList, MenuItem, MenuItemAction } from '@patternfly/react-core';
3
+ import BarsIcon from '@patternfly/react-icons/dist/esm/icons/bars-icon';
4
+ import ClipboardIcon from '@patternfly/react-icons/dist/esm/icons/clipboard-icon';
5
+ import CodeBranchIcon from '@patternfly/react-icons/dist/esm/icons/code-branch-icon';
6
+ import BellIcon from '@patternfly/react-icons/dist/esm/icons/bell-icon';
7
+
8
+ export const MenuWithActions: React.FunctionComponent = () => {
9
+ const [selectedItems, setSelectedItems] = React.useState<number[]>([0, 2, 3]);
10
+
11
+ const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, itemId: number | string | undefined) => {
12
+ const item = itemId as number;
13
+ if (selectedItems.indexOf(item) !== -1) {
14
+ setSelectedItems(selectedItems.filter(id => id !== item));
15
+ } else {
16
+ setSelectedItems([...selectedItems, item]);
17
+ }
18
+ };
19
+
20
+ return (
21
+ <Menu
22
+ onSelect={onSelect}
23
+ // eslint-disable-next-line no-console
24
+ onActionClick={(_event, itemId, actionId) => console.log(`clicked on ${itemId} - ${actionId}`)}
25
+ activeItemId={0}
26
+ >
27
+ <MenuContent>
28
+ <MenuGroup label="Actions" labelHeadingLevel="h3">
29
+ <MenuList>
30
+ <MenuItem
31
+ isSelected={selectedItems.indexOf(0) !== -1}
32
+ actions={
33
+ <MenuItemAction
34
+ icon={<CodeBranchIcon aria-hidden />}
35
+ actionId="code"
36
+ // eslint-disable-next-line no-console
37
+ onClick={() => console.log('clicked on code icon')}
38
+ aria-label="Code"
39
+ />
40
+ }
41
+ description="This is a description"
42
+ itemId={0}
43
+ >
44
+ Item 1
45
+ </MenuItem>
46
+ <MenuItem
47
+ isDisabled
48
+ isSelected={selectedItems.indexOf(1) !== -1}
49
+ actions={<MenuItemAction icon={<BellIcon aria-hidden />} actionId="alert" aria-label="Alert" />}
50
+ description="This is a description"
51
+ itemId={1}
52
+ >
53
+ Item 2
54
+ </MenuItem>
55
+ <MenuItem
56
+ isSelected={selectedItems.indexOf(2) !== -1}
57
+ actions={<MenuItemAction icon={<ClipboardIcon aria-hidden />} actionId="copy" aria-label="Copy" />}
58
+ itemId={2}
59
+ >
60
+ Item 3
61
+ </MenuItem>
62
+ <MenuItem
63
+ isSelected={selectedItems.indexOf(3) !== -1}
64
+ actions={<MenuItemAction icon={<BarsIcon aria-hidden />} actionId="expand" aria-label="Expand" />}
65
+ description="This is a description"
66
+ itemId={3}
67
+ >
68
+ Item 4
69
+ </MenuItem>
70
+ </MenuList>
71
+ </MenuGroup>
72
+ </MenuContent>
73
+ </Menu>
74
+ );
75
+ };
@@ -1,11 +1,11 @@
1
1
  import React from 'react';
2
2
  import { Menu, MenuContent, MenuList, MenuItem } from '@patternfly/react-core';
3
3
 
4
- export const MenuCheckboxList: React.FunctionComponent = () => {
4
+ export const MenuWithCheckbox: React.FunctionComponent = () => {
5
5
  const [selectedItems, setSelectedItems] = React.useState<number[]>([]);
6
6
 
7
7
  /* eslint no-unused-vars: ["error", {"args": "after-used"}] */
8
- const onSelect = (event: React.MouseEvent<Element, MouseEvent>, itemId: number | string) => {
8
+ const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, itemId: number | string | undefined) => {
9
9
  const item = itemId as number;
10
10
  if (selectedItems.includes(item)) {
11
11
  setSelectedItems(selectedItems.filter(id => id !== item));
@@ -0,0 +1,35 @@
1
+ import React from 'react';
2
+ import { Menu, MenuContent, MenuList, MenuItem } from '@patternfly/react-core';
3
+ import CodeBranchIcon from '@patternfly/react-icons/dist/esm/icons/code-branch-icon';
4
+
5
+ export const MenuWithDescription: React.FunctionComponent = () => {
6
+ const [activeItem, setActiveItem] = React.useState(0);
7
+
8
+ const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, itemId: number | string | undefined) => {
9
+ const item = itemId as number; // eslint-disable-next-line no-console
10
+ console.log(`clicked ${item}`);
11
+ setActiveItem(item);
12
+ };
13
+
14
+ return (
15
+ <Menu onSelect={onSelect} activeItemId={activeItem}>
16
+ <MenuContent>
17
+ <MenuList>
18
+ <MenuItem icon={<CodeBranchIcon aria-hidden />} description="Description" itemId={0}>
19
+ Action 1
20
+ </MenuItem>
21
+ <MenuItem isDisabled icon={<CodeBranchIcon aria-hidden />} description="Description" itemId={1}>
22
+ Action 2 disabled
23
+ </MenuItem>
24
+ <MenuItem
25
+ icon={<CodeBranchIcon aria-hidden />}
26
+ description="Nunc non ornare ex, et pretium dui. Duis nec augue at urna elementum blandit tincidunt eget metus. Aenean sed metus id urna dignissim interdum. Aenean vel nisl vitae arcu vehicula pulvinar eget nec turpis. Cras sit amet est est."
27
+ itemId={2}
28
+ >
29
+ Action 3
30
+ </MenuItem>
31
+ </MenuList>
32
+ </MenuContent>
33
+ </Menu>
34
+ );
35
+ };
@@ -5,7 +5,7 @@ import CodeBranchIcon from '@patternfly/react-icons/dist/esm/icons/code-branch-i
5
5
  import LayerGroupIcon from '@patternfly/react-icons/dist/esm/icons/layer-group-icon';
6
6
  import CubeIcon from '@patternfly/react-icons/dist/esm/icons/cube-icon';
7
7
 
8
- export const MenuDrilldown: React.FunctionComponent = () => {
8
+ export const MenuWithDrilldown: React.FunctionComponent = () => {
9
9
  const [menuDrilledIn, setMenuDrilledIn] = React.useState<string[]>([]);
10
10
  const [drilldownPath, setDrilldownPath] = React.useState<string[]>([]);
11
11
  const [menuHeights, setMenuHeights] = React.useState<any>({});