@zendeskgarden/react-dropdowns.legacy 9.0.0-next.7 → 9.0.0-next.8

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 (60) hide show
  1. package/dist/esm/elements/Autocomplete/Autocomplete.js +144 -0
  2. package/dist/esm/elements/Combobox/Combobox.js +106 -0
  3. package/dist/esm/elements/Dropdown/Dropdown.js +178 -0
  4. package/dist/esm/elements/Fields/Field.js +35 -0
  5. package/dist/esm/elements/Fields/Hint.js +15 -0
  6. package/dist/esm/elements/Fields/Label.js +46 -0
  7. package/dist/esm/elements/Fields/Message.js +19 -0
  8. package/dist/esm/elements/Menu/Items/AddItem.js +66 -0
  9. package/dist/esm/elements/Menu/Items/HeaderIcon.js +44 -0
  10. package/dist/esm/elements/Menu/Items/HeaderItem.js +44 -0
  11. package/dist/esm/elements/Menu/Items/Item.js +140 -0
  12. package/dist/esm/elements/Menu/Items/ItemMeta.js +49 -0
  13. package/dist/esm/elements/Menu/Items/MediaBody.js +44 -0
  14. package/dist/esm/elements/Menu/Items/MediaFigure.js +42 -0
  15. package/dist/esm/elements/Menu/Items/MediaItem.js +44 -0
  16. package/dist/esm/elements/Menu/Items/NextItem.js +90 -0
  17. package/dist/esm/elements/Menu/Items/PreviousItem.js +87 -0
  18. package/dist/esm/elements/Menu/Menu.js +160 -0
  19. package/dist/esm/elements/Menu/Separator.js +37 -0
  20. package/dist/esm/elements/Multiselect/Multiselect.js +316 -0
  21. package/dist/esm/elements/Select/Select.js +195 -0
  22. package/dist/esm/elements/Trigger/Trigger.js +185 -0
  23. package/dist/esm/index.js +29 -0
  24. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/check-lg-stroke.svg.js +28 -0
  25. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/chevron-down-stroke.svg.js +25 -0
  26. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/chevron-left-stroke.svg.js +25 -0
  27. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/chevron-right-stroke.svg.js +25 -0
  28. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/plus-stroke.svg.js +26 -0
  29. package/dist/esm/styled/items/StyledAddItem.js +23 -0
  30. package/dist/esm/styled/items/StyledItem.js +44 -0
  31. package/dist/esm/styled/items/StyledItemIcon.js +27 -0
  32. package/dist/esm/styled/items/StyledItemMeta.js +22 -0
  33. package/dist/esm/styled/items/StyledNextIcon.js +31 -0
  34. package/dist/esm/styled/items/StyledNextItem.js +24 -0
  35. package/dist/esm/styled/items/StyledPreviousIcon.js +31 -0
  36. package/dist/esm/styled/items/StyledPreviousItem.js +23 -0
  37. package/dist/esm/styled/items/header/StyledHeaderIcon.js +22 -0
  38. package/dist/esm/styled/items/header/StyledHeaderItem.js +29 -0
  39. package/dist/esm/styled/items/media/StyledMediaBody.js +22 -0
  40. package/dist/esm/styled/items/media/StyledMediaFigure.js +34 -0
  41. package/dist/esm/styled/items/media/StyledMediaItem.js +23 -0
  42. package/dist/esm/styled/menu/StyledMenu.js +28 -0
  43. package/dist/esm/styled/menu/StyledMenuWrapper.js +30 -0
  44. package/dist/esm/styled/menu/StyledSeparator.js +23 -0
  45. package/dist/esm/styled/multiselect/StyledMultiselectInput.js +33 -0
  46. package/dist/esm/styled/multiselect/StyledMultiselectItemWrapper.js +22 -0
  47. package/dist/esm/styled/multiselect/StyledMultiselectItemsContainer.js +34 -0
  48. package/dist/esm/styled/multiselect/StyledMultiselectMoreAnchor.js +22 -0
  49. package/dist/esm/styled/select/StyledFauxInput.js +25 -0
  50. package/dist/esm/styled/select/StyledInput.js +25 -0
  51. package/dist/esm/styled/select/StyledSelect.js +22 -0
  52. package/dist/esm/types/index.js +10 -0
  53. package/dist/esm/utils/garden-placements.js +77 -0
  54. package/dist/esm/utils/useDropdownContext.js +18 -0
  55. package/dist/esm/utils/useFieldContext.js +18 -0
  56. package/dist/esm/utils/useItemContext.js +18 -0
  57. package/dist/esm/utils/useMenuContext.js +18 -0
  58. package/dist/index.cjs.js +51 -67
  59. package/package.json +6 -6
  60. package/dist/index.esm.js +0 -2032
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Copyright Zendesk, Inc.
3
+ *
4
+ * Use of this source code is governed under the Apache License, Version 2.0
5
+ * found at http://www.apache.org/licenses/LICENSE-2.0.
6
+ */
7
+ import React__default from 'react';
8
+ import '../../../styled/menu/StyledMenu.js';
9
+ import '../../../styled/menu/StyledMenuWrapper.js';
10
+ import '../../../styled/menu/StyledSeparator.js';
11
+ import '../../../styled/items/StyledAddItem.js';
12
+ import '../../../styled/items/StyledItem.js';
13
+ import '../../../styled/items/StyledItemMeta.js';
14
+ import '../../../styled/items/StyledNextItem.js';
15
+ import '../../../styled/items/StyledNextIcon.js';
16
+ import '../../../styled/items/StyledPreviousItem.js';
17
+ import '../../../styled/items/StyledPreviousIcon.js';
18
+ import '../../../styled/items/StyledItemIcon.js';
19
+ import '../../../styled/items/header/StyledHeaderIcon.js';
20
+ import { StyledHeaderItem } from '../../../styled/items/header/StyledHeaderItem.js';
21
+ import '../../../styled/items/media/StyledMediaBody.js';
22
+ import '../../../styled/items/media/StyledMediaFigure.js';
23
+ import '../../../styled/items/media/StyledMediaItem.js';
24
+ import '../../../styled/select/StyledFauxInput.js';
25
+ import '../../../styled/select/StyledInput.js';
26
+ import '../../../styled/select/StyledSelect.js';
27
+ import '../../../styled/multiselect/StyledMultiselectInput.js';
28
+ import '../../../styled/multiselect/StyledMultiselectItemsContainer.js';
29
+ import '../../../styled/multiselect/StyledMultiselectItemWrapper.js';
30
+ import '../../../styled/multiselect/StyledMultiselectMoreAnchor.js';
31
+ import useMenuContext from '../../../utils/useMenuContext.js';
32
+
33
+ const HeaderItem = React__default.forwardRef((props, ref) => {
34
+ const {
35
+ isCompact
36
+ } = useMenuContext();
37
+ return React__default.createElement(StyledHeaderItem, Object.assign({
38
+ ref: ref,
39
+ isCompact: isCompact
40
+ }, props));
41
+ });
42
+ HeaderItem.displayName = 'HeaderItem';
43
+
44
+ export { HeaderItem };
@@ -0,0 +1,140 @@
1
+ /**
2
+ * Copyright Zendesk, Inc.
3
+ *
4
+ * Use of this source code is governed under the Apache License, Version 2.0
5
+ * found at http://www.apache.org/licenses/LICENSE-2.0.
6
+ */
7
+ import React__default, { useRef, useEffect, useMemo } from 'react';
8
+ import PropTypes from 'prop-types';
9
+ import SvgCheckLgStroke from '../../../node_modules/@zendeskgarden/svg-icons/src/16/check-lg-stroke.svg.js';
10
+ import { mergeRefs } from 'react-merge-refs';
11
+ import '../../../styled/menu/StyledMenu.js';
12
+ import '../../../styled/menu/StyledMenuWrapper.js';
13
+ import '../../../styled/menu/StyledSeparator.js';
14
+ import '../../../styled/items/StyledAddItem.js';
15
+ import { StyledItem } from '../../../styled/items/StyledItem.js';
16
+ import '../../../styled/items/StyledItemMeta.js';
17
+ import '../../../styled/items/StyledNextItem.js';
18
+ import '../../../styled/items/StyledNextIcon.js';
19
+ import '../../../styled/items/StyledPreviousItem.js';
20
+ import '../../../styled/items/StyledPreviousIcon.js';
21
+ import { StyledItemIcon } from '../../../styled/items/StyledItemIcon.js';
22
+ import '../../../styled/items/header/StyledHeaderIcon.js';
23
+ import '../../../styled/items/header/StyledHeaderItem.js';
24
+ import '../../../styled/items/media/StyledMediaBody.js';
25
+ import '../../../styled/items/media/StyledMediaFigure.js';
26
+ import '../../../styled/items/media/StyledMediaItem.js';
27
+ import '../../../styled/select/StyledFauxInput.js';
28
+ import '../../../styled/select/StyledInput.js';
29
+ import '../../../styled/select/StyledSelect.js';
30
+ import '../../../styled/multiselect/StyledMultiselectInput.js';
31
+ import '../../../styled/multiselect/StyledMultiselectItemsContainer.js';
32
+ import '../../../styled/multiselect/StyledMultiselectItemWrapper.js';
33
+ import '../../../styled/multiselect/StyledMultiselectMoreAnchor.js';
34
+ import useDropdownContext from '../../../utils/useDropdownContext.js';
35
+ import useMenuContext from '../../../utils/useMenuContext.js';
36
+ import { ItemContext } from '../../../utils/useItemContext.js';
37
+
38
+ const Item = React__default.forwardRef((_ref, forwardRef) => {
39
+ let {
40
+ value,
41
+ disabled,
42
+ isDanger,
43
+ component = StyledItem,
44
+ hasIcon,
45
+ children,
46
+ ...props
47
+ } = _ref;
48
+ const {
49
+ selectedItems,
50
+ hasMenuRef,
51
+ itemSearchRegistry,
52
+ downshift: {
53
+ isOpen,
54
+ selectedItem,
55
+ highlightedIndex,
56
+ getItemProps,
57
+ setHighlightedIndex,
58
+ itemToString
59
+ }
60
+ } = useDropdownContext();
61
+ const {
62
+ itemIndexRef,
63
+ isCompact
64
+ } = useMenuContext();
65
+ const itemRef = useRef();
66
+ const Component = component;
67
+ if ((value === undefined || value === null) && !disabled) {
68
+ throw new Error('All Item components require a `value` prop');
69
+ }
70
+ const currentIndex = itemIndexRef.current;
71
+ const isFocused = highlightedIndex === currentIndex;
72
+ let isSelected;
73
+ useEffect(() => {
74
+ if (!disabled && itemRef.current) {
75
+ const itemTextValue = itemRef.current.innerText;
76
+ if (itemTextValue) {
77
+ itemSearchRegistry.current[currentIndex] = itemTextValue;
78
+ }
79
+ }
80
+ });
81
+ if (value) {
82
+ if (selectedItems) {
83
+ isSelected = selectedItems.some(item => {
84
+ return itemToString(item) === itemToString(value);
85
+ });
86
+ } else {
87
+ isSelected = itemToString(selectedItem) === itemToString(value);
88
+ }
89
+ } else {
90
+ isSelected = false;
91
+ }
92
+ useEffect(() => {
93
+ if (isOpen && !disabled && !selectedItems && isSelected) {
94
+ setHighlightedIndex(currentIndex);
95
+ }
96
+ }, [currentIndex, disabled, isOpen, isSelected, selectedItems, setHighlightedIndex]);
97
+ const contextValue = useMemo(() => ({
98
+ isDisabled: disabled
99
+ }), [disabled]);
100
+ const ref = mergeRefs([itemRef, forwardRef]);
101
+ if (disabled) {
102
+ return React__default.createElement(ItemContext.Provider, {
103
+ value: contextValue
104
+ }, React__default.createElement(Component, Object.assign({
105
+ ref: ref,
106
+ disabled: disabled,
107
+ isDanger: isDanger,
108
+ isCompact: isCompact
109
+ }, props), isSelected && !hasIcon && React__default.createElement(StyledItemIcon, {
110
+ isCompact: isCompact,
111
+ isVisible: isSelected,
112
+ isDisabled: disabled
113
+ }, React__default.createElement(SvgCheckLgStroke, null)), children));
114
+ }
115
+ itemIndexRef.current++;
116
+ return React__default.createElement(ItemContext.Provider, {
117
+ value: contextValue
118
+ }, React__default.createElement(Component, getItemProps({
119
+ item: value,
120
+ isFocused,
121
+ ref,
122
+ isCompact,
123
+ isDanger,
124
+ ...(hasMenuRef.current && {
125
+ role: 'menuitem',
126
+ 'aria-selected': null
127
+ }),
128
+ ...props
129
+ }), isSelected && !hasIcon && React__default.createElement(StyledItemIcon, {
130
+ isCompact: isCompact,
131
+ isVisible: isSelected
132
+ }, React__default.createElement(SvgCheckLgStroke, null)), children));
133
+ });
134
+ Item.displayName = 'Item';
135
+ Item.propTypes = {
136
+ value: PropTypes.any,
137
+ disabled: PropTypes.bool
138
+ };
139
+
140
+ export { Item };
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Copyright Zendesk, Inc.
3
+ *
4
+ * Use of this source code is governed under the Apache License, Version 2.0
5
+ * found at http://www.apache.org/licenses/LICENSE-2.0.
6
+ */
7
+ import React__default from 'react';
8
+ import '../../../styled/menu/StyledMenu.js';
9
+ import '../../../styled/menu/StyledMenuWrapper.js';
10
+ import '../../../styled/menu/StyledSeparator.js';
11
+ import '../../../styled/items/StyledAddItem.js';
12
+ import '../../../styled/items/StyledItem.js';
13
+ import { StyledItemMeta } from '../../../styled/items/StyledItemMeta.js';
14
+ import '../../../styled/items/StyledNextItem.js';
15
+ import '../../../styled/items/StyledNextIcon.js';
16
+ import '../../../styled/items/StyledPreviousItem.js';
17
+ import '../../../styled/items/StyledPreviousIcon.js';
18
+ import '../../../styled/items/StyledItemIcon.js';
19
+ import '../../../styled/items/header/StyledHeaderIcon.js';
20
+ import '../../../styled/items/header/StyledHeaderItem.js';
21
+ import '../../../styled/items/media/StyledMediaBody.js';
22
+ import '../../../styled/items/media/StyledMediaFigure.js';
23
+ import '../../../styled/items/media/StyledMediaItem.js';
24
+ import '../../../styled/select/StyledFauxInput.js';
25
+ import '../../../styled/select/StyledInput.js';
26
+ import '../../../styled/select/StyledSelect.js';
27
+ import '../../../styled/multiselect/StyledMultiselectInput.js';
28
+ import '../../../styled/multiselect/StyledMultiselectItemsContainer.js';
29
+ import '../../../styled/multiselect/StyledMultiselectItemWrapper.js';
30
+ import '../../../styled/multiselect/StyledMultiselectMoreAnchor.js';
31
+ import useMenuContext from '../../../utils/useMenuContext.js';
32
+ import useItemContext from '../../../utils/useItemContext.js';
33
+
34
+ const ItemMeta = React__default.forwardRef((props, ref) => {
35
+ const {
36
+ isCompact
37
+ } = useMenuContext();
38
+ const {
39
+ isDisabled
40
+ } = useItemContext();
41
+ return React__default.createElement(StyledItemMeta, Object.assign({
42
+ ref: ref,
43
+ isCompact: isCompact,
44
+ isDisabled: isDisabled
45
+ }, props));
46
+ });
47
+ ItemMeta.displayName = 'ItemMeta';
48
+
49
+ export { ItemMeta };
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Copyright Zendesk, Inc.
3
+ *
4
+ * Use of this source code is governed under the Apache License, Version 2.0
5
+ * found at http://www.apache.org/licenses/LICENSE-2.0.
6
+ */
7
+ import React__default from 'react';
8
+ import '../../../styled/menu/StyledMenu.js';
9
+ import '../../../styled/menu/StyledMenuWrapper.js';
10
+ import '../../../styled/menu/StyledSeparator.js';
11
+ import '../../../styled/items/StyledAddItem.js';
12
+ import '../../../styled/items/StyledItem.js';
13
+ import '../../../styled/items/StyledItemMeta.js';
14
+ import '../../../styled/items/StyledNextItem.js';
15
+ import '../../../styled/items/StyledNextIcon.js';
16
+ import '../../../styled/items/StyledPreviousItem.js';
17
+ import '../../../styled/items/StyledPreviousIcon.js';
18
+ import '../../../styled/items/StyledItemIcon.js';
19
+ import '../../../styled/items/header/StyledHeaderIcon.js';
20
+ import '../../../styled/items/header/StyledHeaderItem.js';
21
+ import { StyledMediaBody } from '../../../styled/items/media/StyledMediaBody.js';
22
+ import '../../../styled/items/media/StyledMediaFigure.js';
23
+ import '../../../styled/items/media/StyledMediaItem.js';
24
+ import '../../../styled/select/StyledFauxInput.js';
25
+ import '../../../styled/select/StyledInput.js';
26
+ import '../../../styled/select/StyledSelect.js';
27
+ import '../../../styled/multiselect/StyledMultiselectInput.js';
28
+ import '../../../styled/multiselect/StyledMultiselectItemsContainer.js';
29
+ import '../../../styled/multiselect/StyledMultiselectItemWrapper.js';
30
+ import '../../../styled/multiselect/StyledMultiselectMoreAnchor.js';
31
+ import useMenuContext from '../../../utils/useMenuContext.js';
32
+
33
+ const MediaBody = React__default.forwardRef((props, ref) => {
34
+ const {
35
+ isCompact
36
+ } = useMenuContext();
37
+ return React__default.createElement(StyledMediaBody, Object.assign({
38
+ ref: ref,
39
+ isCompact: isCompact
40
+ }, props));
41
+ });
42
+ MediaBody.displayName = 'MediaBody';
43
+
44
+ export { MediaBody };
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Copyright Zendesk, Inc.
3
+ *
4
+ * Use of this source code is governed under the Apache License, Version 2.0
5
+ * found at http://www.apache.org/licenses/LICENSE-2.0.
6
+ */
7
+ import React__default from 'react';
8
+ import '../../../styled/menu/StyledMenu.js';
9
+ import '../../../styled/menu/StyledMenuWrapper.js';
10
+ import '../../../styled/menu/StyledSeparator.js';
11
+ import '../../../styled/items/StyledAddItem.js';
12
+ import '../../../styled/items/StyledItem.js';
13
+ import '../../../styled/items/StyledItemMeta.js';
14
+ import '../../../styled/items/StyledNextItem.js';
15
+ import '../../../styled/items/StyledNextIcon.js';
16
+ import '../../../styled/items/StyledPreviousItem.js';
17
+ import '../../../styled/items/StyledPreviousIcon.js';
18
+ import '../../../styled/items/StyledItemIcon.js';
19
+ import '../../../styled/items/header/StyledHeaderIcon.js';
20
+ import '../../../styled/items/header/StyledHeaderItem.js';
21
+ import '../../../styled/items/media/StyledMediaBody.js';
22
+ import { StyledMediaFigure } from '../../../styled/items/media/StyledMediaFigure.js';
23
+ import '../../../styled/items/media/StyledMediaItem.js';
24
+ import '../../../styled/select/StyledFauxInput.js';
25
+ import '../../../styled/select/StyledInput.js';
26
+ import '../../../styled/select/StyledSelect.js';
27
+ import '../../../styled/multiselect/StyledMultiselectInput.js';
28
+ import '../../../styled/multiselect/StyledMultiselectItemsContainer.js';
29
+ import '../../../styled/multiselect/StyledMultiselectItemWrapper.js';
30
+ import '../../../styled/multiselect/StyledMultiselectMoreAnchor.js';
31
+ import useMenuContext from '../../../utils/useMenuContext.js';
32
+
33
+ const MediaFigure = props => {
34
+ const {
35
+ isCompact
36
+ } = useMenuContext();
37
+ return React__default.createElement(StyledMediaFigure, Object.assign({
38
+ isCompact: isCompact
39
+ }, props));
40
+ };
41
+
42
+ export { MediaFigure };
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Copyright Zendesk, Inc.
3
+ *
4
+ * Use of this source code is governed under the Apache License, Version 2.0
5
+ * found at http://www.apache.org/licenses/LICENSE-2.0.
6
+ */
7
+ import React__default from 'react';
8
+ import PropTypes from 'prop-types';
9
+ import { Item } from './Item.js';
10
+ import '../../../styled/menu/StyledMenu.js';
11
+ import '../../../styled/menu/StyledMenuWrapper.js';
12
+ import '../../../styled/menu/StyledSeparator.js';
13
+ import '../../../styled/items/StyledAddItem.js';
14
+ import '../../../styled/items/StyledItem.js';
15
+ import '../../../styled/items/StyledItemMeta.js';
16
+ import '../../../styled/items/StyledNextItem.js';
17
+ import '../../../styled/items/StyledNextIcon.js';
18
+ import '../../../styled/items/StyledPreviousItem.js';
19
+ import '../../../styled/items/StyledPreviousIcon.js';
20
+ import '../../../styled/items/StyledItemIcon.js';
21
+ import '../../../styled/items/header/StyledHeaderIcon.js';
22
+ import '../../../styled/items/header/StyledHeaderItem.js';
23
+ import '../../../styled/items/media/StyledMediaBody.js';
24
+ import '../../../styled/items/media/StyledMediaFigure.js';
25
+ import { StyledMediaItem } from '../../../styled/items/media/StyledMediaItem.js';
26
+ import '../../../styled/select/StyledFauxInput.js';
27
+ import '../../../styled/select/StyledInput.js';
28
+ import '../../../styled/select/StyledSelect.js';
29
+ import '../../../styled/multiselect/StyledMultiselectInput.js';
30
+ import '../../../styled/multiselect/StyledMultiselectItemsContainer.js';
31
+ import '../../../styled/multiselect/StyledMultiselectItemWrapper.js';
32
+ import '../../../styled/multiselect/StyledMultiselectMoreAnchor.js';
33
+
34
+ const MediaItem = React__default.forwardRef((props, ref) => React__default.createElement(Item, Object.assign({
35
+ component: StyledMediaItem,
36
+ ref: ref
37
+ }, props)));
38
+ MediaItem.displayName = 'MediaItem';
39
+ MediaItem.propTypes = {
40
+ value: PropTypes.any,
41
+ disabled: PropTypes.bool
42
+ };
43
+
44
+ export { MediaItem };
@@ -0,0 +1,90 @@
1
+ /**
2
+ * Copyright Zendesk, Inc.
3
+ *
4
+ * Use of this source code is governed under the Apache License, Version 2.0
5
+ * found at http://www.apache.org/licenses/LICENSE-2.0.
6
+ */
7
+ import React__default from 'react';
8
+ import PropTypes from 'prop-types';
9
+ import { Item } from './Item.js';
10
+ import '../../../styled/menu/StyledMenu.js';
11
+ import '../../../styled/menu/StyledMenuWrapper.js';
12
+ import '../../../styled/menu/StyledSeparator.js';
13
+ import '../../../styled/items/StyledAddItem.js';
14
+ import '../../../styled/items/StyledItem.js';
15
+ import '../../../styled/items/StyledItemMeta.js';
16
+ import { StyledNextItem } from '../../../styled/items/StyledNextItem.js';
17
+ import { StyledNextIcon } from '../../../styled/items/StyledNextIcon.js';
18
+ import '../../../styled/items/StyledPreviousItem.js';
19
+ import '../../../styled/items/StyledPreviousIcon.js';
20
+ import { StyledItemIcon } from '../../../styled/items/StyledItemIcon.js';
21
+ import '../../../styled/items/header/StyledHeaderIcon.js';
22
+ import '../../../styled/items/header/StyledHeaderItem.js';
23
+ import '../../../styled/items/media/StyledMediaBody.js';
24
+ import '../../../styled/items/media/StyledMediaFigure.js';
25
+ import '../../../styled/items/media/StyledMediaItem.js';
26
+ import '../../../styled/select/StyledFauxInput.js';
27
+ import '../../../styled/select/StyledInput.js';
28
+ import '../../../styled/select/StyledSelect.js';
29
+ import '../../../styled/multiselect/StyledMultiselectInput.js';
30
+ import '../../../styled/multiselect/StyledMultiselectItemsContainer.js';
31
+ import '../../../styled/multiselect/StyledMultiselectItemWrapper.js';
32
+ import '../../../styled/multiselect/StyledMultiselectMoreAnchor.js';
33
+ import useDropdownContext from '../../../utils/useDropdownContext.js';
34
+ import useMenuContext from '../../../utils/useMenuContext.js';
35
+
36
+ const NextItemComponent = React__default.forwardRef((_ref, ref) => {
37
+ let {
38
+ children,
39
+ disabled,
40
+ ...props
41
+ } = _ref;
42
+ const {
43
+ isCompact
44
+ } = useMenuContext();
45
+ return React__default.createElement(StyledNextItem, Object.assign({
46
+ ref: ref,
47
+ disabled: disabled
48
+ }, props), React__default.createElement(StyledItemIcon, {
49
+ isCompact: isCompact,
50
+ isDisabled: disabled,
51
+ isVisible: true
52
+ }, React__default.createElement(StyledNextIcon, {
53
+ isDisabled: disabled
54
+ })), children);
55
+ });
56
+ const NextItem = React__default.forwardRef((_ref2, ref) => {
57
+ let {
58
+ value,
59
+ disabled,
60
+ ...props
61
+ } = _ref2;
62
+ const {
63
+ nextItemsHashRef,
64
+ downshift: {
65
+ itemToString
66
+ }
67
+ } = useDropdownContext();
68
+ const {
69
+ itemIndexRef
70
+ } = useMenuContext();
71
+ if (!disabled) {
72
+ nextItemsHashRef.current[itemToString(value)] = itemIndexRef.current;
73
+ }
74
+ return React__default.createElement(Item, Object.assign({
75
+ component: NextItemComponent,
76
+ "aria-expanded": true,
77
+ disabled: disabled,
78
+ value: value,
79
+ ref: ref
80
+ }, props, {
81
+ hasIcon: true
82
+ }));
83
+ });
84
+ NextItem.displayName = 'NextItem';
85
+ NextItem.propTypes = {
86
+ value: PropTypes.any,
87
+ disabled: PropTypes.bool
88
+ };
89
+
90
+ export { NextItem };
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Copyright Zendesk, Inc.
3
+ *
4
+ * Use of this source code is governed under the Apache License, Version 2.0
5
+ * found at http://www.apache.org/licenses/LICENSE-2.0.
6
+ */
7
+ import React__default from 'react';
8
+ import PropTypes from 'prop-types';
9
+ import { Item } from './Item.js';
10
+ import '../../../styled/menu/StyledMenu.js';
11
+ import '../../../styled/menu/StyledMenuWrapper.js';
12
+ import '../../../styled/menu/StyledSeparator.js';
13
+ import '../../../styled/items/StyledAddItem.js';
14
+ import '../../../styled/items/StyledItem.js';
15
+ import '../../../styled/items/StyledItemMeta.js';
16
+ import '../../../styled/items/StyledNextItem.js';
17
+ import '../../../styled/items/StyledNextIcon.js';
18
+ import { StyledPreviousItem } from '../../../styled/items/StyledPreviousItem.js';
19
+ import { StyledPreviousIcon } from '../../../styled/items/StyledPreviousIcon.js';
20
+ import { StyledItemIcon } from '../../../styled/items/StyledItemIcon.js';
21
+ import '../../../styled/items/header/StyledHeaderIcon.js';
22
+ import '../../../styled/items/header/StyledHeaderItem.js';
23
+ import '../../../styled/items/media/StyledMediaBody.js';
24
+ import '../../../styled/items/media/StyledMediaFigure.js';
25
+ import '../../../styled/items/media/StyledMediaItem.js';
26
+ import '../../../styled/select/StyledFauxInput.js';
27
+ import '../../../styled/select/StyledInput.js';
28
+ import '../../../styled/select/StyledSelect.js';
29
+ import '../../../styled/multiselect/StyledMultiselectInput.js';
30
+ import '../../../styled/multiselect/StyledMultiselectItemsContainer.js';
31
+ import '../../../styled/multiselect/StyledMultiselectItemWrapper.js';
32
+ import '../../../styled/multiselect/StyledMultiselectMoreAnchor.js';
33
+ import useDropdownContext from '../../../utils/useDropdownContext.js';
34
+ import useMenuContext from '../../../utils/useMenuContext.js';
35
+
36
+ const PreviousItemComponent = React__default.forwardRef((_ref, ref) => {
37
+ let {
38
+ children,
39
+ disabled,
40
+ ...props
41
+ } = _ref;
42
+ const {
43
+ isCompact
44
+ } = useMenuContext();
45
+ return React__default.createElement(StyledPreviousItem, Object.assign({
46
+ ref: ref,
47
+ disabled: disabled
48
+ }, props), React__default.createElement(StyledItemIcon, {
49
+ isCompact: isCompact,
50
+ isDisabled: disabled,
51
+ isVisible: true
52
+ }, React__default.createElement(StyledPreviousIcon, {
53
+ isDisabled: disabled
54
+ })), children);
55
+ });
56
+ const PreviousItem = React__default.forwardRef((_ref2, ref) => {
57
+ let {
58
+ value,
59
+ disabled,
60
+ ...props
61
+ } = _ref2;
62
+ const {
63
+ previousIndexRef
64
+ } = useDropdownContext();
65
+ const {
66
+ itemIndexRef
67
+ } = useMenuContext();
68
+ if (!disabled) {
69
+ previousIndexRef.current = itemIndexRef.current;
70
+ }
71
+ return React__default.createElement(Item, Object.assign({
72
+ component: PreviousItemComponent,
73
+ "aria-expanded": true,
74
+ value: value,
75
+ disabled: disabled
76
+ }, props, {
77
+ ref: ref,
78
+ hasIcon: true
79
+ }));
80
+ });
81
+ PreviousItem.displayName = 'PreviousItem';
82
+ PreviousItem.propTypes = {
83
+ value: PropTypes.any,
84
+ disabled: PropTypes.bool
85
+ };
86
+
87
+ export { PreviousItem };