@patternfly/react-core 4.238.0 → 4.239.0

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 (62) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/esm/next/components/Dropdown/Dropdown.d.ts +25 -0
  3. package/dist/esm/next/components/Dropdown/Dropdown.d.ts.map +1 -0
  4. package/dist/esm/next/components/Dropdown/Dropdown.js +59 -0
  5. package/dist/esm/next/components/Dropdown/Dropdown.js.map +1 -0
  6. package/dist/esm/next/components/Dropdown/DropdownGroup.d.ts +12 -0
  7. package/dist/esm/next/components/Dropdown/DropdownGroup.d.ts.map +1 -0
  8. package/dist/esm/next/components/Dropdown/DropdownGroup.js +10 -0
  9. package/dist/esm/next/components/Dropdown/DropdownGroup.js.map +1 -0
  10. package/dist/esm/next/components/Dropdown/DropdownItem.d.ts +12 -0
  11. package/dist/esm/next/components/Dropdown/DropdownItem.d.ts.map +1 -0
  12. package/dist/esm/next/components/Dropdown/DropdownItem.js +10 -0
  13. package/dist/esm/next/components/Dropdown/DropdownItem.js.map +1 -0
  14. package/dist/esm/next/components/Dropdown/DropdownList.d.ts +10 -0
  15. package/dist/esm/next/components/Dropdown/DropdownList.d.ts.map +1 -0
  16. package/dist/esm/next/components/Dropdown/DropdownList.js +10 -0
  17. package/dist/esm/next/components/Dropdown/DropdownList.js.map +1 -0
  18. package/dist/esm/next/components/Dropdown/index.d.ts +5 -0
  19. package/dist/esm/next/components/Dropdown/index.d.ts.map +1 -0
  20. package/dist/esm/next/components/Dropdown/index.js +5 -0
  21. package/dist/esm/next/components/Dropdown/index.js.map +1 -0
  22. package/dist/esm/next/components/index.d.ts +1 -0
  23. package/dist/esm/next/components/index.d.ts.map +1 -1
  24. package/dist/esm/next/components/index.js +1 -0
  25. package/dist/esm/next/components/index.js.map +1 -1
  26. package/dist/js/next/components/Dropdown/Dropdown.d.ts +25 -0
  27. package/dist/js/next/components/Dropdown/Dropdown.d.ts.map +1 -0
  28. package/dist/js/next/components/Dropdown/Dropdown.js +63 -0
  29. package/dist/js/next/components/Dropdown/Dropdown.js.map +1 -0
  30. package/dist/js/next/components/Dropdown/DropdownGroup.d.ts +12 -0
  31. package/dist/js/next/components/Dropdown/DropdownGroup.d.ts.map +1 -0
  32. package/dist/js/next/components/Dropdown/DropdownGroup.js +14 -0
  33. package/dist/js/next/components/Dropdown/DropdownGroup.js.map +1 -0
  34. package/dist/js/next/components/Dropdown/DropdownItem.d.ts +12 -0
  35. package/dist/js/next/components/Dropdown/DropdownItem.d.ts.map +1 -0
  36. package/dist/js/next/components/Dropdown/DropdownItem.js +14 -0
  37. package/dist/js/next/components/Dropdown/DropdownItem.js.map +1 -0
  38. package/dist/js/next/components/Dropdown/DropdownList.d.ts +10 -0
  39. package/dist/js/next/components/Dropdown/DropdownList.d.ts.map +1 -0
  40. package/dist/js/next/components/Dropdown/DropdownList.js +14 -0
  41. package/dist/js/next/components/Dropdown/DropdownList.js.map +1 -0
  42. package/dist/js/next/components/Dropdown/index.d.ts +5 -0
  43. package/dist/js/next/components/Dropdown/index.d.ts.map +1 -0
  44. package/dist/js/next/components/Dropdown/index.js +8 -0
  45. package/dist/js/next/components/Dropdown/index.js.map +1 -0
  46. package/dist/js/next/components/index.d.ts +1 -0
  47. package/dist/js/next/components/index.d.ts.map +1 -1
  48. package/dist/js/next/components/index.js +1 -0
  49. package/dist/js/next/components/index.js.map +1 -1
  50. package/dist/umd/react-core.min.css +8819 -8819
  51. package/package.json +5 -5
  52. package/src/next/components/Dropdown/Dropdown.tsx +115 -0
  53. package/src/next/components/Dropdown/DropdownGroup.tsx +25 -0
  54. package/src/next/components/Dropdown/DropdownItem.tsx +24 -0
  55. package/src/next/components/Dropdown/DropdownList.tsx +21 -0
  56. package/src/next/components/Dropdown/examples/Dropdown.md +31 -0
  57. package/src/next/components/Dropdown/examples/DropdownBasic.tsx +54 -0
  58. package/src/next/components/Dropdown/examples/DropdownWithDescriptions.tsx +60 -0
  59. package/src/next/components/Dropdown/examples/DropdownWithGroups.tsx +65 -0
  60. package/src/next/components/Dropdown/examples/DropdownWithKebabToggle.tsx +62 -0
  61. package/src/next/components/Dropdown/index.ts +4 -0
  62. package/src/next/components/index.ts +1 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@patternfly/react-core",
3
- "version": "4.238.0",
3
+ "version": "4.239.0",
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",
@@ -44,9 +44,9 @@
44
44
  "generate": "node scripts/copyStyles.js"
45
45
  },
46
46
  "dependencies": {
47
- "@patternfly/react-icons": "^4.89.0",
48
- "@patternfly/react-styles": "^4.88.0",
49
- "@patternfly/react-tokens": "^4.90.0",
47
+ "@patternfly/react-icons": "^4.90.0",
48
+ "@patternfly/react-styles": "^4.89.0",
49
+ "@patternfly/react-tokens": "^4.91.0",
50
50
  "focus-trap": "6.9.2",
51
51
  "react-dropzone": "9.0.0",
52
52
  "tippy.js": "5.1.2",
@@ -70,5 +70,5 @@
70
70
  "react": "^16.8.0 || ^17.0.0",
71
71
  "react-dom": "^16.8.0 || ^17.0.0"
72
72
  },
73
- "gitHead": "844856ede5d24e9c60242140404ef95c4acc50b1"
73
+ "gitHead": "d5b77ee797de7d6babd7f2add1fb238812282d64"
74
74
  }
@@ -0,0 +1,115 @@
1
+ import React from 'react';
2
+ import { css } from '@patternfly/react-styles';
3
+ import { Menu, MenuContent, MenuProps } from '../../../components/Menu';
4
+ import { Popper } from '../../../helpers/Popper/Popper';
5
+
6
+ export interface DropdownProps extends MenuProps {
7
+ /** Anything which can be rendered in a dropdown. */
8
+ children?: React.ReactNode;
9
+ /** Classes applied to root element of dropdown. */
10
+ className?: string;
11
+ /** Renderer for a custom dropdown toggle. Forwards a ref to the toggle. */
12
+ toggle: (toggleRef: React.RefObject<any>) => React.ReactNode;
13
+ /** Flag to indicate if menu is opened.*/
14
+ isOpen?: boolean;
15
+ /** Function callback called when user selects item. */
16
+ onSelect?: (event?: React.MouseEvent<Element, MouseEvent>, itemId?: string | number) => void;
17
+ /** Callback to allow the dropdown component to change the open state of the menu.
18
+ * Triggered by clicking outside of the menu, or by pressing either tab or escape. */
19
+ onOpenChange?: (isOpen: boolean) => void;
20
+ /** Indicates if the menu should be without the outer box-shadow. */
21
+ isPlain?: boolean;
22
+ /** Indicates if the menu should be scrollable. */
23
+ isScrollable?: boolean;
24
+ /** Min width of the menu. */
25
+ minWidth?: string;
26
+ }
27
+
28
+ export const Dropdown: React.FunctionComponent<DropdownProps> = ({
29
+ children,
30
+ className,
31
+ onSelect,
32
+ isOpen,
33
+ toggle,
34
+ onOpenChange,
35
+ isPlain,
36
+ isScrollable,
37
+ minWidth,
38
+ ...props
39
+ }: DropdownProps) => {
40
+ const localMenuRef = React.useRef<HTMLDivElement>();
41
+ const toggleRef = React.useRef<HTMLButtonElement>();
42
+ const containerRef = React.useRef<HTMLDivElement>();
43
+
44
+ const menuRef = (props.innerRef as React.RefObject<HTMLDivElement>) || localMenuRef;
45
+ React.useEffect(() => {
46
+ const handleMenuKeys = (event: KeyboardEvent) => {
47
+ if (!isOpen && toggleRef.current?.contains(event.target as Node)) {
48
+ // toggle was clicked open, focus on first menu item
49
+ if (event.key === 'Enter') {
50
+ setTimeout(() => {
51
+ const firstElement = menuRef.current.querySelector('li > button:not(:disabled)');
52
+ firstElement && (firstElement as HTMLElement).focus();
53
+ }, 0);
54
+ }
55
+ }
56
+ // Close the menu on tab or escape if onOpenChange is provided
57
+ if (
58
+ (isOpen && onOpenChange && menuRef.current?.contains(event.target as Node)) ||
59
+ toggleRef.current?.contains(event.target as Node)
60
+ ) {
61
+ if (event.key === 'Escape' || event.key === 'Tab') {
62
+ onOpenChange(!isOpen);
63
+ toggleRef.current?.focus();
64
+ }
65
+ }
66
+ };
67
+
68
+ const handleClickOutside = (event: MouseEvent) => {
69
+ // If the event is not on the toggle and onOpenChange callback is provided, close the menu
70
+ if (isOpen && onOpenChange && !toggleRef?.current?.contains(event.target as Node)) {
71
+ if (isOpen && !menuRef.current?.contains(event.target as Node)) {
72
+ onOpenChange(false);
73
+ }
74
+ }
75
+ };
76
+
77
+ window.addEventListener('keydown', handleMenuKeys);
78
+ window.addEventListener('click', handleClickOutside);
79
+
80
+ return () => {
81
+ window.removeEventListener('keydown', handleMenuKeys);
82
+ window.removeEventListener('click', handleClickOutside);
83
+ };
84
+ }, [isOpen, menuRef, onOpenChange]);
85
+
86
+ const menu = (
87
+ <Menu
88
+ className={css(className)}
89
+ ref={menuRef}
90
+ onSelect={(event, itemId) => onSelect(event, itemId)}
91
+ isPlain={isPlain}
92
+ isScrollable={isScrollable}
93
+ {...(minWidth && {
94
+ style: {
95
+ '--pf-c-menu--MinWidth': minWidth
96
+ } as React.CSSProperties
97
+ })}
98
+ {...props}
99
+ >
100
+ <MenuContent>{children}</MenuContent>
101
+ </Menu>
102
+ );
103
+ return (
104
+ <div ref={containerRef}>
105
+ <Popper
106
+ trigger={toggle(toggleRef)}
107
+ removeFindDomNode
108
+ popper={menu}
109
+ appendTo={containerRef.current || undefined}
110
+ isVisible={isOpen}
111
+ />
112
+ </div>
113
+ );
114
+ };
115
+ Dropdown.displayName = 'Dropdown';
@@ -0,0 +1,25 @@
1
+ import React from 'react';
2
+ import { css } from '@patternfly/react-styles';
3
+ import { MenuGroupProps, MenuGroup } from '../../../components/Menu';
4
+
5
+ export interface DropdownGroupProps extends Omit<MenuGroupProps, 'ref'> {
6
+ /** Anything which can be rendered in a dropdown group. */
7
+ children: React.ReactNode;
8
+ /** Classes applied to root element of dropdown group */
9
+ className?: string;
10
+ /** Label of the dropdown group */
11
+ label?: string;
12
+ }
13
+
14
+ export const DropdownGroup: React.FunctionComponent<DropdownGroupProps> = ({
15
+ children,
16
+ className,
17
+ label,
18
+ labelHeadingLevel = 'h1',
19
+ ...props
20
+ }: DropdownGroupProps) => (
21
+ <MenuGroup className={css(className)} label={label} labelHeadingLevel={labelHeadingLevel} {...props}>
22
+ {children}
23
+ </MenuGroup>
24
+ );
25
+ DropdownGroup.displayName = 'DropdownGroup';
@@ -0,0 +1,24 @@
1
+ import React from 'react';
2
+ import { css } from '@patternfly/react-styles';
3
+ import { MenuItemProps, MenuItem } from '../../../components/Menu';
4
+
5
+ export interface DropdownItemProps extends Omit<MenuItemProps, 'ref'> {
6
+ /** Anything which can be rendered in a dropdown item */
7
+ children?: React.ReactNode;
8
+ /** Classes applied to root element of dropdown item */
9
+ className?: string;
10
+ /** Description of the dropdown item */
11
+ description?: React.ReactNode;
12
+ }
13
+
14
+ export const DropdownItem: React.FunctionComponent<MenuItemProps> = ({
15
+ children,
16
+ className,
17
+ description,
18
+ ...props
19
+ }: DropdownItemProps) => (
20
+ <MenuItem className={css(className)} description={description} {...props}>
21
+ {children}
22
+ </MenuItem>
23
+ );
24
+ DropdownItem.displayName = 'DropdownItem';
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import { css } from '@patternfly/react-styles';
3
+ import { MenuListProps, MenuList } from '../../../components/Menu';
4
+
5
+ export interface DropdownListProps extends MenuListProps {
6
+ /** Anything which can be rendered in a dropdown list */
7
+ children: React.ReactNode;
8
+ /** Classes applied to root element of dropdown list */
9
+ className?: string;
10
+ }
11
+
12
+ export const DropdownList: React.FunctionComponent<MenuListProps> = ({
13
+ children,
14
+ className,
15
+ ...props
16
+ }: DropdownListProps) => (
17
+ <MenuList className={css(className)} {...props}>
18
+ {children}
19
+ </MenuList>
20
+ );
21
+ DropdownList.displayName = 'DropdownList';
@@ -0,0 +1,31 @@
1
+ ---
2
+ id: Dropdown
3
+ section: components
4
+ cssPrefix: pf-c-dropdown
5
+ propComponents: ['Dropdown', DropdownGroup, 'DropdownItem', 'DropdownList']
6
+ beta: true
7
+ ---
8
+
9
+ import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
10
+
11
+ ## Examples
12
+
13
+ ### Basic
14
+
15
+ ```ts file="./DropdownBasic.tsx"
16
+ ```
17
+
18
+ ### With kebab toggle
19
+
20
+ ```ts file="./DropdownWithKebabToggle.tsx"
21
+ ```
22
+
23
+ ### With groups
24
+
25
+ ```ts file="./DropdownWithGroups.tsx"
26
+ ```
27
+
28
+ ### With descriptions
29
+
30
+ ```ts file="./DropdownWithDescriptions.tsx"
31
+ ```
@@ -0,0 +1,54 @@
1
+ import React from 'react';
2
+ import { Dropdown, DropdownItem, DropdownList } from '@patternfly/react-core/next';
3
+ import { Divider, MenuToggle } from '@patternfly/react-core';
4
+
5
+ export const DropdownBasic: React.FunctionComponent = () => {
6
+ const [isOpen, setIsOpen] = React.useState(false);
7
+ const menuRef = React.useRef<HTMLDivElement>(null);
8
+
9
+ const onToggleClick = () => {
10
+ setIsOpen(!isOpen);
11
+ };
12
+
13
+ const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, itemId: string | number | undefined) => {
14
+ // eslint-disable-next-line no-console
15
+ console.log('selected', itemId);
16
+ setIsOpen(false);
17
+ };
18
+
19
+ return (
20
+ <Dropdown
21
+ innerRef={menuRef}
22
+ isOpen={isOpen}
23
+ onSelect={onSelect}
24
+ onOpenChange={isOpen => setIsOpen(isOpen)}
25
+ toggle={toggleRef => (
26
+ <MenuToggle ref={toggleRef} onClick={onToggleClick} isExpanded={isOpen}>
27
+ Dropdown
28
+ </MenuToggle>
29
+ )}
30
+ >
31
+ <DropdownList>
32
+ <DropdownItem itemId={0} key="link">
33
+ Link
34
+ </DropdownItem>
35
+ <DropdownItem itemId={1} key="action" to="#default-link2" onClick={ev => ev.preventDefault()}>
36
+ Action
37
+ </DropdownItem>
38
+ <DropdownItem itemId={2} isDisabled key="disabled link">
39
+ Disabled link
40
+ </DropdownItem>
41
+ <DropdownItem itemId={3} isDisabled key="disabled action" to="#default-link4">
42
+ Disabled action
43
+ </DropdownItem>
44
+ <Divider key="separator" />
45
+ <DropdownItem itemId={4} key="separated link">
46
+ Separated link
47
+ </DropdownItem>
48
+ <DropdownItem itemId={5} key="separated action">
49
+ Separated action
50
+ </DropdownItem>
51
+ </DropdownList>
52
+ </Dropdown>
53
+ );
54
+ };
@@ -0,0 +1,60 @@
1
+ import React from 'react';
2
+ import { Dropdown, DropdownItem, DropdownList } from '@patternfly/react-core/next';
3
+ import { MenuToggle } from '@patternfly/react-core';
4
+
5
+ export const DropdownWithDescriptions: React.FunctionComponent = () => {
6
+ const [isOpen, setIsOpen] = React.useState(false);
7
+ const menuRef = React.useRef<HTMLDivElement>(null);
8
+
9
+ const onToggleClick = () => {
10
+ setIsOpen(!isOpen);
11
+ };
12
+
13
+ const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, itemId: string | number | undefined) => {
14
+ // eslint-disable-next-line no-console
15
+ console.log('selected', itemId);
16
+ setIsOpen(false);
17
+ };
18
+
19
+ return (
20
+ <Dropdown
21
+ innerRef={menuRef}
22
+ isOpen={isOpen}
23
+ onSelect={onSelect}
24
+ minWidth="150px"
25
+ onOpenChange={isOpen => setIsOpen(isOpen)}
26
+ toggle={toggleRef => (
27
+ <MenuToggle ref={toggleRef} isFullWidth onClick={onToggleClick} isExpanded={isOpen}>
28
+ Dropdown
29
+ </MenuToggle>
30
+ )}
31
+ >
32
+ <DropdownList>
33
+ <DropdownItem itemId={0} key="link" description="This is a description">
34
+ Link
35
+ </DropdownItem>
36
+ <DropdownItem
37
+ itemId={1}
38
+ key="action"
39
+ description="This is a very long description that describes the menu item"
40
+ to="#default-link2"
41
+ onClick={ev => ev.preventDefault()}
42
+ >
43
+ Action
44
+ </DropdownItem>
45
+ <DropdownItem itemId={2} isDisabled description="Disabled link description" key="disabled link">
46
+ Disabled link
47
+ </DropdownItem>
48
+ <DropdownItem
49
+ itemId={3}
50
+ isDisabled
51
+ description="This is a description"
52
+ key="disabled action"
53
+ to="#default-link4"
54
+ >
55
+ Disabled action
56
+ </DropdownItem>
57
+ </DropdownList>
58
+ </Dropdown>
59
+ );
60
+ };
@@ -0,0 +1,65 @@
1
+ import React from 'react';
2
+ import { Dropdown, DropdownGroup, DropdownItem, DropdownList } from '@patternfly/react-core/next';
3
+ import { MenuToggle, Divider } from '@patternfly/react-core';
4
+
5
+ export const DropdownWithGroups: React.FunctionComponent = () => {
6
+ const [isOpen, setIsOpen] = React.useState(false);
7
+ const menuRef = React.useRef<HTMLDivElement>(null);
8
+
9
+ const onToggleClick = () => {
10
+ setIsOpen(!isOpen);
11
+ };
12
+
13
+ const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, itemId: string | number | undefined) => {
14
+ // eslint-disable-next-line no-console
15
+ console.log('selected', itemId);
16
+ setIsOpen(false);
17
+ };
18
+
19
+ return (
20
+ <Dropdown
21
+ innerRef={menuRef}
22
+ isOpen={isOpen}
23
+ onSelect={onSelect}
24
+ onOpenChange={isOpen => setIsOpen(isOpen)}
25
+ toggle={toggleRef => (
26
+ <MenuToggle ref={toggleRef} onClick={onToggleClick} isExpanded={isOpen}>
27
+ Dropdown
28
+ </MenuToggle>
29
+ )}
30
+ >
31
+ <DropdownGroup>
32
+ <DropdownList>
33
+ <DropdownItem itemId={0} key="link">
34
+ Link
35
+ </DropdownItem>
36
+ <DropdownItem itemId={1} key="action" to="#default-link2" onClick={ev => ev.preventDefault()}>
37
+ Action
38
+ </DropdownItem>
39
+ </DropdownList>
40
+ </DropdownGroup>
41
+ <Divider />
42
+ <DropdownGroup label="Group 2" labelHeadingLevel="h3">
43
+ <DropdownList>
44
+ <DropdownItem itemId={2} key="group2 link">
45
+ Group 2 link
46
+ </DropdownItem>
47
+ <DropdownItem itemId={3} key="group2 action" to="#default-link4">
48
+ group 2 action
49
+ </DropdownItem>
50
+ </DropdownList>
51
+ </DropdownGroup>
52
+ <Divider />
53
+ <DropdownGroup label="Group 3" labelHeadingLevel="h3">
54
+ <DropdownList>
55
+ <DropdownItem itemId={4} key="group3 link">
56
+ Group 3 link
57
+ </DropdownItem>
58
+ <DropdownItem itemId={5} key="group3 action">
59
+ Group 3 action
60
+ </DropdownItem>
61
+ </DropdownList>
62
+ </DropdownGroup>
63
+ </Dropdown>
64
+ );
65
+ };
@@ -0,0 +1,62 @@
1
+ import React from 'react';
2
+ import { Dropdown, DropdownItem, DropdownList } from '@patternfly/react-core/next';
3
+ import { Divider, MenuToggle } from '@patternfly/react-core';
4
+ import EllipsisVIcon from '@patternfly/react-icons/dist/esm/icons/ellipsis-v-icon';
5
+
6
+ export const DropdownWithKebab: React.FunctionComponent = () => {
7
+ const [isOpen, setIsOpen] = React.useState(false);
8
+ const menuRef = React.useRef<HTMLDivElement>(null);
9
+
10
+ const onToggleClick = () => {
11
+ setIsOpen(!isOpen);
12
+ };
13
+
14
+ const onSelect = (_event: React.MouseEvent<Element, MouseEvent> | undefined, itemId: string | number | undefined) => {
15
+ // eslint-disable-next-line no-console
16
+ console.log('selected', itemId);
17
+ setIsOpen(false);
18
+ };
19
+
20
+ return (
21
+ <Dropdown
22
+ innerRef={menuRef}
23
+ isOpen={isOpen}
24
+ onSelect={onSelect}
25
+ minWidth="150px"
26
+ onOpenChange={isOpen => setIsOpen(isOpen)}
27
+ toggle={toggleRef => (
28
+ <MenuToggle
29
+ ref={toggleRef}
30
+ aria-label="kebab dropdown toggle"
31
+ variant="plain"
32
+ onClick={onToggleClick}
33
+ isExpanded={isOpen}
34
+ >
35
+ <EllipsisVIcon />
36
+ </MenuToggle>
37
+ )}
38
+ >
39
+ <DropdownList>
40
+ <DropdownItem itemId={0} key="link">
41
+ Link
42
+ </DropdownItem>
43
+ <DropdownItem itemId={1} key="action" to="#default-link2" onClick={ev => ev.preventDefault()}>
44
+ Action
45
+ </DropdownItem>
46
+ <DropdownItem itemId={2} isDisabled key="disabled link">
47
+ Disabled link
48
+ </DropdownItem>
49
+ <DropdownItem itemId={3} isDisabled key="disabled action" to="#default-link4">
50
+ Disabled action
51
+ </DropdownItem>
52
+ <Divider key="separator" />,
53
+ <DropdownItem itemId={4} key="separated link">
54
+ Separated link
55
+ </DropdownItem>
56
+ <DropdownItem itemId={5} key="separated action">
57
+ Separated action
58
+ </DropdownItem>
59
+ </DropdownList>
60
+ </Dropdown>
61
+ );
62
+ };
@@ -0,0 +1,4 @@
1
+ export * from './Dropdown';
2
+ export * from './DropdownGroup';
3
+ export * from './DropdownItem';
4
+ export * from './DropdownList';
@@ -1 +1,2 @@
1
1
  export * from './Wizard';
2
+ export * from './Dropdown';