@zendeskgarden/react-dropdowns 9.0.0-next.9 → 9.1.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 (93) hide show
  1. package/dist/esm/elements/combobox/Combobox.js +47 -48
  2. package/dist/esm/elements/combobox/Field.js +0 -1
  3. package/dist/esm/elements/combobox/Hint.js +1 -2
  4. package/dist/esm/elements/combobox/Label.js +1 -2
  5. package/dist/esm/elements/combobox/Listbox.js +7 -8
  6. package/dist/esm/elements/combobox/Message.js +1 -2
  7. package/dist/esm/elements/combobox/OptGroup.js +5 -6
  8. package/dist/esm/elements/combobox/Option.js +9 -6
  9. package/dist/esm/elements/combobox/OptionMeta.js +1 -2
  10. package/dist/esm/elements/combobox/Tag.js +0 -1
  11. package/dist/esm/elements/combobox/utils.js +1 -1
  12. package/dist/esm/elements/menu/Item.js +11 -10
  13. package/dist/esm/elements/menu/ItemGroup.js +6 -6
  14. package/dist/esm/elements/menu/ItemMeta.js +1 -2
  15. package/dist/esm/elements/menu/Menu.js +9 -36
  16. package/dist/esm/elements/menu/MenuList.js +8 -9
  17. package/dist/esm/elements/menu/Separator.js +0 -1
  18. package/dist/esm/elements/menu/utils.js +1 -1
  19. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/check-lg-stroke.svg.js +1 -1
  20. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/chevron-down-stroke.svg.js +1 -1
  21. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/chevron-left-stroke.svg.js +1 -1
  22. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/chevron-right-stroke.svg.js +1 -1
  23. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/plus-stroke.svg.js +1 -1
  24. package/dist/esm/views/combobox/StyledCombobox.js +4 -7
  25. package/dist/esm/views/combobox/StyledContainer.js +2 -5
  26. package/dist/esm/views/combobox/StyledField.js +2 -5
  27. package/dist/esm/views/combobox/StyledFloatingListbox.js +5 -8
  28. package/dist/esm/views/combobox/StyledHint.js +2 -5
  29. package/dist/esm/views/combobox/StyledInput.js +13 -10
  30. package/dist/esm/views/combobox/StyledInputGroup.js +2 -5
  31. package/dist/esm/views/combobox/StyledInputIcon.js +26 -10
  32. package/dist/esm/views/combobox/StyledLabel.js +2 -5
  33. package/dist/esm/views/combobox/StyledListbox.js +3 -7
  34. package/dist/esm/views/combobox/StyledListboxSeparator.js +10 -7
  35. package/dist/esm/views/combobox/StyledMessage.js +2 -5
  36. package/dist/esm/views/combobox/StyledOptGroup.js +2 -5
  37. package/dist/esm/views/combobox/StyledOption.js +35 -17
  38. package/dist/esm/views/combobox/StyledOptionContent.js +2 -5
  39. package/dist/esm/views/combobox/StyledOptionIcon.js +25 -6
  40. package/dist/esm/views/combobox/StyledOptionMeta.js +12 -7
  41. package/dist/esm/views/combobox/StyledOptionTypeIcon.js +18 -11
  42. package/dist/esm/views/combobox/StyledTag.js +6 -6
  43. package/dist/esm/views/combobox/StyledTagsButton.js +10 -7
  44. package/dist/esm/views/combobox/StyledTrigger.js +71 -43
  45. package/dist/esm/views/combobox/StyledValue.js +13 -9
  46. package/dist/esm/views/menu/StyledFloatingMenu.js +2 -5
  47. package/dist/esm/views/menu/StyledItem.js +2 -5
  48. package/dist/esm/views/menu/StyledItemContent.js +2 -5
  49. package/dist/esm/views/menu/StyledItemGroup.js +2 -5
  50. package/dist/esm/views/menu/StyledItemIcon.js +2 -5
  51. package/dist/esm/views/menu/StyledItemMeta.js +2 -5
  52. package/dist/esm/views/menu/StyledItemTypeIcon.js +2 -5
  53. package/dist/esm/views/menu/StyledMenu.js +5 -8
  54. package/dist/esm/views/menu/StyledSeparator.js +2 -5
  55. package/dist/index.cjs.js +457 -412
  56. package/dist/typings/context/useComboboxContext.d.ts +12 -13
  57. package/dist/typings/context/useFieldContext.d.ts +6 -6
  58. package/dist/typings/context/useItemContext.d.ts +2 -3
  59. package/dist/typings/context/useItemGroupContext.d.ts +2 -3
  60. package/dist/typings/context/useMenuContext.d.ts +10 -11
  61. package/dist/typings/context/useOptionContext.d.ts +2 -3
  62. package/dist/typings/elements/combobox/Field.d.ts +3 -1
  63. package/dist/typings/elements/combobox/Option.d.ts +3 -1
  64. package/dist/typings/elements/combobox/Tag.d.ts +3 -1
  65. package/dist/typings/elements/combobox/TagAvatar.d.ts +1 -2
  66. package/dist/typings/elements/combobox/utils.d.ts +2 -2
  67. package/dist/typings/elements/menu/Item.d.ts +3 -1
  68. package/dist/typings/elements/menu/utils.d.ts +2 -2
  69. package/dist/typings/types/index.d.ts +2 -0
  70. package/dist/typings/views/combobox/StyledCombobox.d.ts +1 -1
  71. package/dist/typings/views/combobox/StyledFloatingListbox.d.ts +3 -3
  72. package/dist/typings/views/combobox/StyledHint.d.ts +0 -1
  73. package/dist/typings/views/combobox/StyledInput.d.ts +4 -4
  74. package/dist/typings/views/combobox/StyledInputIcon.d.ts +1 -2
  75. package/dist/typings/views/combobox/StyledLabel.d.ts +0 -1
  76. package/dist/typings/views/combobox/StyledListbox.d.ts +3 -3
  77. package/dist/typings/views/combobox/StyledMessage.d.ts +0 -1
  78. package/dist/typings/views/combobox/StyledOptGroup.d.ts +1 -1
  79. package/dist/typings/views/combobox/StyledOption.d.ts +2 -2
  80. package/dist/typings/views/combobox/StyledOptionIcon.d.ts +8 -4
  81. package/dist/typings/views/combobox/StyledOptionMeta.d.ts +1 -1
  82. package/dist/typings/views/combobox/StyledOptionTypeIcon.d.ts +1 -2
  83. package/dist/typings/views/combobox/StyledTag.d.ts +2 -6
  84. package/dist/typings/views/combobox/StyledTagsButton.d.ts +1 -1
  85. package/dist/typings/views/combobox/StyledTrigger.d.ts +9 -9
  86. package/dist/typings/views/combobox/StyledValue.d.ts +7 -7
  87. package/dist/typings/views/index.d.ts +0 -1
  88. package/dist/typings/views/menu/StyledItemIcon.d.ts +2 -3
  89. package/dist/typings/views/menu/StyledItemTypeIcon.d.ts +1 -2
  90. package/dist/typings/views/menu/StyledMenu.d.ts +1 -1
  91. package/package.json +12 -12
  92. package/dist/esm/views/menu/StyledButton.js +0 -23
  93. package/dist/typings/views/menu/StyledButton.d.ts +0 -20
@@ -43,7 +43,6 @@ import '../../views/menu/StyledItemGroup.js';
43
43
  import '../../views/menu/StyledItemIcon.js';
44
44
  import '../../views/menu/StyledItemMeta.js';
45
45
  import '../../views/menu/StyledItemTypeIcon.js';
46
- import '../../views/menu/StyledButton.js';
47
46
  import '../../views/menu/StyledSeparator.js';
48
47
  import { Listbox } from './Listbox.js';
49
48
  import { TagGroup } from './TagGroup.js';
@@ -164,46 +163,31 @@ const Combobox = forwardRef((_ref, ref) => {
164
163
  const _listboxAriaLabel = useText(Combobox, {
165
164
  listboxAriaLabel
166
165
  }, 'listboxAriaLabel', 'Options');
167
- const triggerProps = {
168
- isAutocomplete,
169
- isBare,
170
- isCompact,
171
- isEditable,
172
- isLabelHovered,
173
- isMultiselectable,
174
- maxHeight,
175
- focusInset,
176
- validation,
177
- ...getTriggerProps({
178
- onFocus: () => {
179
- if (!isDisabled) {
180
- if (isEditable) {
181
- setIsInputHidden(false);
182
- }
183
- if (isMultiselectable) {
184
- setIsTagGroupExpanded(true);
185
- }
166
+ const triggerProps = getTriggerProps({
167
+ onFocus: () => {
168
+ if (!isDisabled) {
169
+ if (isEditable) {
170
+ setIsInputHidden(false);
186
171
  }
187
- },
188
- onBlur: event => {
189
- if (event.relatedTarget === null || !triggerRef.current?.contains(event.relatedTarget)) {
190
- if (isEditable) {
191
- setIsInputHidden(true);
192
- }
193
- if (isMultiselectable) {
194
- setIsTagGroupExpanded(false);
195
- }
172
+ if (isMultiselectable) {
173
+ setIsTagGroupExpanded(true);
196
174
  }
197
175
  }
198
- })
199
- };
176
+ },
177
+ onBlur: event => {
178
+ if (event.relatedTarget === null || !triggerRef.current?.contains(event.relatedTarget)) {
179
+ if (isEditable) {
180
+ setIsInputHidden(true);
181
+ }
182
+ if (isMultiselectable) {
183
+ setIsTagGroupExpanded(false);
184
+ }
185
+ }
186
+ }
187
+ });
200
188
  const inputProps = {
201
189
  'aria-invalid': validation === 'error' || validation === 'warning',
202
190
  hidden: isInputHidden,
203
- isBare,
204
- isCompact,
205
- isEditable,
206
- isMultiselectable,
207
191
  placeholder,
208
192
  ...getInputProps({
209
193
  ..._inputProps
@@ -239,14 +223,24 @@ const Combobox = forwardRef((_ref, ref) => {
239
223
  return React__default.createElement(ComboboxContext.Provider, {
240
224
  value: contextValue
241
225
  }, React__default.createElement(StyledCombobox, Object.assign({
242
- isCompact: isCompact,
226
+ $isCompact: isCompact,
243
227
  tabIndex: -1
244
228
  }, props, {
245
229
  ref: ref
246
- }), React__default.createElement(StyledTrigger, triggerProps, React__default.createElement(StyledContainer, null, startIcon && React__default.createElement(StyledInputIcon, {
230
+ }), React__default.createElement(StyledTrigger, Object.assign({
231
+ $isAutocomplete: isAutocomplete,
232
+ $isBare: isBare,
233
+ $isCompact: isCompact,
234
+ $isEditable: isEditable,
235
+ $isLabelHovered: isLabelHovered,
236
+ $isMultiselectable: isMultiselectable,
237
+ $maxHeight: maxHeight,
238
+ $focusInset: focusInset,
239
+ $validation: validation
240
+ }, triggerProps), React__default.createElement(StyledContainer, null, !!startIcon && React__default.createElement(StyledInputIcon, {
247
241
  $isLabelHovered: isLabelHovered,
248
242
  $isCompact: isCompact
249
- }, startIcon), React__default.createElement(StyledInputGroup, null, isMultiselectable && Array.isArray(selection) && React__default.createElement(TagGroup, {
243
+ }, startIcon), React__default.createElement(StyledInputGroup, null, !!isMultiselectable && Array.isArray(selection) && React__default.createElement(TagGroup, {
250
244
  isDisabled: isDisabled,
251
245
  isExpanded: isTagGroupExpanded,
252
246
  maxTags: maxTags,
@@ -255,7 +249,7 @@ const Combobox = forwardRef((_ref, ref) => {
255
249
  }, selection.length > maxTags && React__default.createElement(StyledTagsButton, {
256
250
  disabled: isDisabled,
257
251
  hidden: isTagGroupExpanded,
258
- isCompact: isCompact,
252
+ $isCompact: isCompact,
259
253
  tabIndex: -1,
260
254
  type: "button"
261
255
  }, (() => {
@@ -263,21 +257,26 @@ const Combobox = forwardRef((_ref, ref) => {
263
257
  return renderExpandTags ? renderExpandTags(value) : expandTags?.replace('{{value}}', value.toString());
264
258
  })())), React__default.createElement(StyledValue, {
265
259
  hidden: !isInputHidden,
266
- isAutocomplete: isAutocomplete,
267
- isBare: isBare,
268
- isCompact: isCompact,
269
- isDisabled: isDisabled,
270
- isEditable: isEditable,
271
- isMultiselectable: isMultiselectable,
272
- isPlaceholder: !(inputValue || renderValue)
260
+ $isAutocomplete: isAutocomplete,
261
+ $isBare: isBare,
262
+ $isCompact: isCompact,
263
+ $isDisabled: isDisabled,
264
+ $isEditable: isEditable,
265
+ $isMultiselectable: isMultiselectable,
266
+ $isPlaceholder: !(inputValue || renderValue)
273
267
  }, renderValue ? renderValue({
274
268
  selection,
275
269
  inputValue
276
- }) : inputValue || placeholder), React__default.createElement(StyledInput, inputProps)), (hasChevron || endIcon) && React__default.createElement(StyledInputIcon, {
270
+ }) : inputValue || placeholder), React__default.createElement(StyledInput, Object.assign({
271
+ $isBare: isBare,
272
+ $isCompact: isCompact,
273
+ $isEditable: isEditable,
274
+ $isMultiselectable: isMultiselectable
275
+ }, inputProps))), !!(hasChevron || endIcon) && React__default.createElement(StyledInputIcon, {
277
276
  $isCompact: isCompact,
278
277
  $isEnd: true,
279
278
  $isLabelHovered: isLabelHovered,
280
- $isRotated: hasChevron && isExpanded
279
+ $isRotated: !!(hasChevron && isExpanded)
281
280
  }, hasChevron ? React__default.createElement(SvgChevronDownStroke, null) : endIcon))), React__default.createElement(Listbox, Object.assign({
282
281
  appendToNode: listboxAppendToNode,
283
282
  isCompact: isCompact,
@@ -36,7 +36,6 @@ import '../../views/menu/StyledItemGroup.js';
36
36
  import '../../views/menu/StyledItemIcon.js';
37
37
  import '../../views/menu/StyledItemMeta.js';
38
38
  import '../../views/menu/StyledItemTypeIcon.js';
39
- import '../../views/menu/StyledButton.js';
40
39
  import '../../views/menu/StyledSeparator.js';
41
40
  import { Hint } from './Hint.js';
42
41
  import { Label } from './Label.js';
@@ -36,7 +36,6 @@ import '../../views/menu/StyledItemGroup.js';
36
36
  import '../../views/menu/StyledItemIcon.js';
37
37
  import '../../views/menu/StyledItemMeta.js';
38
38
  import '../../views/menu/StyledItemTypeIcon.js';
39
- import '../../views/menu/StyledButton.js';
40
39
  import '../../views/menu/StyledSeparator.js';
41
40
 
42
41
  const Hint = forwardRef((props, ref) => {
@@ -52,6 +51,6 @@ const Hint = forwardRef((props, ref) => {
52
51
  ref: ref
53
52
  }));
54
53
  });
55
- Hint.displayName = 'Hint';
54
+ Hint.displayName = 'Field.Hint';
56
55
 
57
56
  export { Hint };
@@ -38,7 +38,6 @@ import '../../views/menu/StyledItemGroup.js';
38
38
  import '../../views/menu/StyledItemIcon.js';
39
39
  import '../../views/menu/StyledItemMeta.js';
40
40
  import '../../views/menu/StyledItemTypeIcon.js';
41
- import '../../views/menu/StyledButton.js';
42
41
  import '../../views/menu/StyledSeparator.js';
43
42
 
44
43
  const Label = forwardRef((_ref, ref) => {
@@ -59,7 +58,7 @@ const Label = forwardRef((_ref, ref) => {
59
58
  ref: ref
60
59
  }));
61
60
  });
62
- Label.displayName = 'Label';
61
+ Label.displayName = 'Field.Label';
63
62
  Label.propTypes = {
64
63
  hidden: PropTypes.bool,
65
64
  isRegular: PropTypes.bool
@@ -38,7 +38,6 @@ import '../../views/menu/StyledItemGroup.js';
38
38
  import '../../views/menu/StyledItemIcon.js';
39
39
  import '../../views/menu/StyledItemMeta.js';
40
40
  import '../../views/menu/StyledItemTypeIcon.js';
41
- import '../../views/menu/StyledButton.js';
42
41
  import '../../views/menu/StyledSeparator.js';
43
42
  import { ThemeContext } from 'styled-components';
44
43
  import { DEFAULT_THEME } from '@zendeskgarden/react-theming';
@@ -121,25 +120,25 @@ const Listbox = forwardRef((_ref, ref) => {
121
120
  children, update]);
122
121
  const Node = React__default.createElement(StyledFloatingListbox, {
123
122
  "data-garden-animate": isVisible ? 'true' : 'false',
124
- isHidden: !isExpanded,
125
- position: placement === 'bottom-start' ? 'bottom' : 'top',
123
+ $isHidden: !isExpanded,
124
+ $position: placement === 'bottom-start' ? 'bottom' : 'top',
126
125
  style: {
127
126
  transform,
128
127
  width
129
128
  },
130
- zIndex: zIndex,
129
+ $zIndex: zIndex,
131
130
  ref: floatingRef
132
131
  }, React__default.createElement(StyledListbox, Object.assign({
133
- isCompact: isCompact,
134
- maxHeight: maxHeight,
135
- minHeight: minHeight,
132
+ $isCompact: isCompact,
133
+ $maxHeight: maxHeight,
134
+ $minHeight: minHeight,
136
135
  onMouseDown: composeEventHandlers(onMouseDown, handleMouseDown),
137
136
  style: {
138
137
  height
139
138
  }
140
139
  }, props, {
141
140
  ref: ref
142
- }), isVisible && children));
141
+ }), !!isVisible && children));
143
142
  return appendToNode ? createPortal(Node, appendToNode) : Node;
144
143
  });
145
144
  Listbox.displayName = 'Listbox';
@@ -38,7 +38,6 @@ import '../../views/menu/StyledItemGroup.js';
38
38
  import '../../views/menu/StyledItemIcon.js';
39
39
  import '../../views/menu/StyledItemMeta.js';
40
40
  import '../../views/menu/StyledItemTypeIcon.js';
41
- import '../../views/menu/StyledButton.js';
42
41
  import '../../views/menu/StyledSeparator.js';
43
42
 
44
43
  const Message = forwardRef((props, ref) => {
@@ -54,7 +53,7 @@ const Message = forwardRef((props, ref) => {
54
53
  ref: ref
55
54
  }));
56
55
  });
57
- Message.displayName = 'Message';
56
+ Message.displayName = 'Field.Message';
58
57
  Message.propTypes = {
59
58
  validation: PropTypes.oneOf(VALIDATION),
60
59
  validationLabel: PropTypes.string
@@ -39,7 +39,6 @@ import '../../views/menu/StyledItemGroup.js';
39
39
  import '../../views/menu/StyledItemIcon.js';
40
40
  import '../../views/menu/StyledItemMeta.js';
41
41
  import '../../views/menu/StyledItemTypeIcon.js';
42
- import '../../views/menu/StyledButton.js';
43
42
  import '../../views/menu/StyledSeparator.js';
44
43
 
45
44
  const OptGroup = forwardRef((_ref, ref) => {
@@ -64,21 +63,21 @@ const OptGroup = forwardRef((_ref, ref) => {
64
63
  'aria-label': groupAriaLabel || legend
65
64
  });
66
65
  return React__default.createElement(StyledOption, Object.assign({
67
- isCompact: isCompact,
66
+ $isCompact: isCompact,
68
67
  $type: "group",
69
68
  onMouseDown: composeEventHandlers(onMouseDown, handleMouseDown),
70
69
  role: "none"
71
70
  }, props, {
72
71
  ref: ref
73
- }), React__default.createElement(StyledOptionContent, null, (content || legend) && React__default.createElement(StyledOption, {
72
+ }), React__default.createElement(StyledOptionContent, null, !!(content || legend) && React__default.createElement(StyledOption, {
74
73
  as: "div",
75
- isCompact: isCompact,
74
+ $isCompact: isCompact,
76
75
  $type: "header"
77
- }, icon && React__default.createElement(StyledOptionTypeIcon, {
76
+ }, !!icon && React__default.createElement(StyledOptionTypeIcon, {
78
77
  $isCompact: isCompact,
79
78
  $type: "header"
80
79
  }, icon), content || legend), React__default.createElement(StyledOptGroup, Object.assign({
81
- isCompact: isCompact
80
+ $isCompact: isCompact
82
81
  }, optGroupProps), React__default.createElement(StyledListboxSeparator, {
83
82
  role: "none"
84
83
  }), children)));
@@ -44,7 +44,6 @@ import '../../views/menu/StyledItemGroup.js';
44
44
  import '../../views/menu/StyledItemIcon.js';
45
45
  import '../../views/menu/StyledItemMeta.js';
46
46
  import '../../views/menu/StyledItemTypeIcon.js';
47
- import '../../views/menu/StyledButton.js';
48
47
  import '../../views/menu/StyledSeparator.js';
49
48
  import { OptionMeta } from './OptionMeta.js';
50
49
  import { toOption } from './utils.js';
@@ -62,8 +61,9 @@ const OptionComponent = forwardRef((_ref, ref) => {
62
61
  ...props
63
62
  } = _ref;
64
63
  const contextValue = useMemo(() => ({
65
- isDisabled
66
- }), [isDisabled]);
64
+ isDisabled,
65
+ type
66
+ }), [isDisabled, type]);
67
67
  const {
68
68
  activeValue,
69
69
  getOptionProps,
@@ -108,13 +108,16 @@ const OptionComponent = forwardRef((_ref, ref) => {
108
108
  return React__default.createElement(OptionContext.Provider, {
109
109
  value: contextValue
110
110
  }, React__default.createElement(StyledOption, Object.assign({
111
- isActive: isActive,
112
- isCompact: isCompact,
111
+ $isActive: isActive,
112
+ $isCompact: isCompact,
113
113
  $type: type
114
114
  }, props, optionProps), React__default.createElement(StyledOptionTypeIcon, {
115
115
  $isCompact: isCompact,
116
116
  $type: type
117
- }, renderActionIcon(type)), icon && React__default.createElement(StyledOptionIcon, null, icon), React__default.createElement(StyledOptionContent, null, children || label || value)));
117
+ }, renderActionIcon(type)), !!icon && React__default.createElement(StyledOptionIcon, {
118
+ $isDisabled: isDisabled,
119
+ $type: type
120
+ }, icon), React__default.createElement(StyledOptionContent, null, children || label || value)));
118
121
  });
119
122
  OptionComponent.displayName = 'Option';
120
123
  OptionComponent.propTypes = {
@@ -36,7 +36,6 @@ import '../../views/menu/StyledItemGroup.js';
36
36
  import '../../views/menu/StyledItemIcon.js';
37
37
  import '../../views/menu/StyledItemMeta.js';
38
38
  import '../../views/menu/StyledItemTypeIcon.js';
39
- import '../../views/menu/StyledButton.js';
40
39
  import '../../views/menu/StyledSeparator.js';
41
40
 
42
41
  const OptionMetaComponent = forwardRef((props, ref) => {
@@ -44,7 +43,7 @@ const OptionMetaComponent = forwardRef((props, ref) => {
44
43
  isDisabled
45
44
  } = useOptionContext();
46
45
  return React__default.createElement(StyledOptionMeta, Object.assign({
47
- isDisabled: isDisabled
46
+ $isDisabled: isDisabled
48
47
  }, props, {
49
48
  ref: ref
50
49
  }));
@@ -40,7 +40,6 @@ import '../../views/menu/StyledItemGroup.js';
40
40
  import '../../views/menu/StyledItemIcon.js';
41
41
  import '../../views/menu/StyledItemMeta.js';
42
42
  import '../../views/menu/StyledItemTypeIcon.js';
43
- import '../../views/menu/StyledButton.js';
44
43
  import '../../views/menu/StyledSeparator.js';
45
44
  import { TagAvatar } from './TagAvatar.js';
46
45
 
@@ -17,7 +17,7 @@ const toOption = props => {
17
17
  };
18
18
  const toOptions = (children, optionTagProps) => Children.toArray(children).reduce((options, option) => {
19
19
  const retVal = options;
20
- if ( isValidElement(option)) {
20
+ if (isValidElement(option)) {
21
21
  if ('value' in option.props) {
22
22
  retVal.push(toOption(option.props));
23
23
  optionTagProps[option.props.value] = option.props.tagProps;
@@ -42,7 +42,6 @@ import '../../views/menu/StyledItemGroup.js';
42
42
  import { StyledItemIcon } from '../../views/menu/StyledItemIcon.js';
43
43
  import '../../views/menu/StyledItemMeta.js';
44
44
  import { StyledItemTypeIcon } from '../../views/menu/StyledItemTypeIcon.js';
45
- import '../../views/menu/StyledButton.js';
46
45
  import '../../views/menu/StyledSeparator.js';
47
46
  import { ItemMeta } from './ItemMeta.js';
48
47
  import useMenuContext from '../../context/useMenuContext.js';
@@ -70,7 +69,8 @@ const ItemComponent = forwardRef((_ref, ref) => {
70
69
  } = useItemGroupContext();
71
70
  const {
72
71
  focusedValue,
73
- getItemProps
72
+ getItemProps,
73
+ isCompact
74
74
  } = useMenuContext();
75
75
  const item = {
76
76
  ...toItem({
@@ -93,9 +93,6 @@ const ItemComponent = forwardRef((_ref, ref) => {
93
93
  onMouseEnter
94
94
  });
95
95
  const isActive = value === focusedValue;
96
- const {
97
- isCompact
98
- } = useMenuContext();
99
96
  const renderActionIcon = iconType => {
100
97
  switch (iconType) {
101
98
  case 'add':
@@ -109,20 +106,24 @@ const ItemComponent = forwardRef((_ref, ref) => {
109
106
  }
110
107
  };
111
108
  const contextValue = useMemo(() => ({
112
- isDisabled
113
- }), [isDisabled]);
109
+ isDisabled,
110
+ type
111
+ }), [isDisabled, type]);
114
112
  return React__default.createElement(ItemContext.Provider, {
115
113
  value: contextValue
116
114
  }, React__default.createElement(StyledItem, Object.assign({
117
115
  $type: type,
118
- isCompact: isCompact,
119
- isActive: isActive
116
+ $isCompact: isCompact,
117
+ $isActive: isActive
120
118
  }, props, itemProps, {
121
119
  ref: mergeRefs([_itemRef, ref])
122
120
  }), React__default.createElement(StyledItemTypeIcon, {
123
121
  $isCompact: isCompact,
124
122
  $type: type
125
- }, renderActionIcon(type)), icon && React__default.createElement(StyledItemIcon, null, icon), React__default.createElement(StyledItemContent, null, children || label)));
123
+ }, renderActionIcon(type)), !!icon && React__default.createElement(StyledItemIcon, {
124
+ $isDisabled: isDisabled,
125
+ $type: type
126
+ }, icon), React__default.createElement(StyledItemContent, null, children || label)));
126
127
  });
127
128
  ItemComponent.displayName = 'Item';
128
129
  ItemComponent.propTypes = {
@@ -38,7 +38,6 @@ import { StyledItemGroup } from '../../views/menu/StyledItemGroup.js';
38
38
  import '../../views/menu/StyledItemIcon.js';
39
39
  import '../../views/menu/StyledItemMeta.js';
40
40
  import { StyledItemTypeIcon } from '../../views/menu/StyledItemTypeIcon.js';
41
- import '../../views/menu/StyledButton.js';
42
41
  import { StyledSeparator } from '../../views/menu/StyledSeparator.js';
43
42
  import { ItemGroupContext } from '../../context/useItemGroupContext.js';
44
43
 
@@ -68,19 +67,20 @@ const ItemGroup = forwardRef((_ref, ref) => {
68
67
  return React__default.createElement(ItemGroupContext.Provider, {
69
68
  value: contextValue
70
69
  }, React__default.createElement(StyledItem, Object.assign({
71
- isCompact: isCompact,
70
+ $isCompact: isCompact,
72
71
  $type: "group"
73
72
  }, props, {
73
+ role: "none",
74
74
  ref: ref
75
- }), React__default.createElement(StyledItemContent, null, (content || legend) && React__default.createElement(StyledItem, {
75
+ }), React__default.createElement(StyledItemContent, null, !!(content || legend) && React__default.createElement(StyledItem, {
76
76
  as: "div",
77
- isCompact: isCompact,
77
+ $isCompact: isCompact,
78
78
  $type: "header"
79
- }, icon && React__default.createElement(StyledItemTypeIcon, {
79
+ }, !!icon && React__default.createElement(StyledItemTypeIcon, {
80
80
  $isCompact: isCompact,
81
81
  $type: "header"
82
82
  }, icon), content || legend), React__default.createElement(StyledItemGroup, Object.assign({
83
- isCompact: isCompact
83
+ $isCompact: isCompact
84
84
  }, groupProps), React__default.createElement(StyledSeparator, {
85
85
  role: "none"
86
86
  }), children))));
@@ -36,7 +36,6 @@ import '../../views/menu/StyledItemGroup.js';
36
36
  import '../../views/menu/StyledItemIcon.js';
37
37
  import { StyledItemMeta } from '../../views/menu/StyledItemMeta.js';
38
38
  import '../../views/menu/StyledItemTypeIcon.js';
39
- import '../../views/menu/StyledButton.js';
40
39
  import '../../views/menu/StyledSeparator.js';
41
40
 
42
41
  const ItemMetaComponent = forwardRef((props, ref) => {
@@ -44,7 +43,7 @@ const ItemMetaComponent = forwardRef((props, ref) => {
44
43
  isDisabled
45
44
  } = useItemContext();
46
45
  return React__default.createElement(StyledItemMeta, Object.assign({
47
- isDisabled: isDisabled
46
+ $isDisabled: isDisabled
48
47
  }, props, {
49
48
  ref: ref
50
49
  }));
@@ -10,45 +10,14 @@ import { mergeRefs } from 'react-merge-refs';
10
10
  import { ThemeContext } from 'styled-components';
11
11
  import { useMenu } from '@zendeskgarden/container-menu';
12
12
  import { DEFAULT_THEME, useWindow } from '@zendeskgarden/react-theming';
13
+ import { Button } from '@zendeskgarden/react-buttons';
13
14
  import { PLACEMENT } from '../../types/index.js';
14
15
  import { MenuContext } from '../../context/useMenuContext.js';
15
16
  import { toItems } from './utils.js';
16
17
  import { MenuList } from './MenuList.js';
17
- import '../../views/combobox/StyledCombobox.js';
18
- import '../../views/combobox/StyledContainer.js';
19
- import '../../views/combobox/StyledField.js';
20
- import '../../views/combobox/StyledFloatingListbox.js';
21
- import '../../views/combobox/StyledHint.js';
22
- import '../../views/combobox/StyledInput.js';
23
- import '../../views/combobox/StyledInputGroup.js';
24
- import '../../views/combobox/StyledInputIcon.js';
25
- import '../../views/combobox/StyledLabel.js';
26
- import '../../views/combobox/StyledListbox.js';
27
- import '../../views/combobox/StyledListboxSeparator.js';
28
- import '../../views/combobox/StyledMessage.js';
29
- import '../../views/combobox/StyledOptGroup.js';
30
- import '../../views/combobox/StyledOption.js';
31
- import '../../views/combobox/StyledOptionContent.js';
32
- import '../../views/combobox/StyledOptionIcon.js';
33
- import '../../views/combobox/StyledOptionMeta.js';
34
- import '../../views/combobox/StyledOptionTypeIcon.js';
35
- import '../../views/combobox/StyledTag.js';
36
- import '../../views/combobox/StyledTagsButton.js';
37
- import '../../views/combobox/StyledTrigger.js';
38
- import '../../views/combobox/StyledValue.js';
39
- import '../../views/menu/StyledMenu.js';
40
- import '../../views/menu/StyledFloatingMenu.js';
41
- import '../../views/menu/StyledItem.js';
42
- import '../../views/menu/StyledItemContent.js';
43
- import '../../views/menu/StyledItemGroup.js';
44
- import '../../views/menu/StyledItemIcon.js';
45
- import '../../views/menu/StyledItemMeta.js';
46
- import '../../views/menu/StyledItemTypeIcon.js';
47
- import { StyledButton } from '../../views/menu/StyledButton.js';
48
- import '../../views/menu/StyledSeparator.js';
49
18
  import SvgChevronDownStroke from '../../node_modules/@zendeskgarden/svg-icons/src/16/chevron-down-stroke.svg.js';
50
19
 
51
- const Menu = forwardRef((_ref, ref) => {
20
+ const Menu = forwardRef((_ref2, ref) => {
52
21
  let {
53
22
  button,
54
23
  buttonProps: _buttonProps = {},
@@ -58,11 +27,12 @@ const Menu = forwardRef((_ref, ref) => {
58
27
  defaultFocusedValue,
59
28
  defaultExpanded,
60
29
  isExpanded: _isExpanded,
30
+ restoreFocus,
61
31
  selectedItems,
62
32
  onChange,
63
33
  onMouseLeave,
64
34
  ...props
65
- } = _ref;
35
+ } = _ref2;
66
36
  const triggerRef = useRef(null);
67
37
  const menuRef = useRef(null);
68
38
  const items = toItems(children);
@@ -83,6 +53,7 @@ const Menu = forwardRef((_ref, ref) => {
83
53
  focusedValue: _focusedValue,
84
54
  defaultExpanded,
85
55
  isExpanded: _isExpanded,
56
+ restoreFocus,
86
57
  selectedItems,
87
58
  items,
88
59
  menuRef,
@@ -93,6 +64,7 @@ const Menu = forwardRef((_ref, ref) => {
93
64
  onClick,
94
65
  onKeyDown,
95
66
  disabled,
67
+ ref: _ref,
96
68
  ...buttonProps
97
69
  } = _buttonProps;
98
70
  const triggerProps = {
@@ -106,9 +78,9 @@ const Menu = forwardRef((_ref, ref) => {
106
78
  onKeyDown,
107
79
  disabled
108
80
  }),
109
- ref: mergeRefs([triggerRef, ref])
81
+ ref: mergeRefs([triggerRef, _ref])
110
82
  };
111
- const trigger = typeof button === 'function' ? button(triggerProps) : React__default.createElement(StyledButton, triggerProps, button, React__default.createElement(StyledButton.EndIcon, {
83
+ const trigger = typeof button === 'function' ? button(triggerProps) : React__default.createElement(Button, triggerProps, button, React__default.createElement(Button.EndIcon, {
112
84
  isRotated: isExpanded
113
85
  }, React__default.createElement(SvgChevronDownStroke, null)));
114
86
  const contextValue = useMemo(() => ({
@@ -145,6 +117,7 @@ Menu.propTypes = {
145
117
  minHeight: PropTypes.string,
146
118
  onChange: PropTypes.func,
147
119
  placement: PropTypes.oneOf(PLACEMENT),
120
+ restoreFocus: PropTypes.bool,
148
121
  selectedItems: PropTypes.arrayOf(PropTypes.any),
149
122
  zIndex: PropTypes.number
150
123
  };
@@ -40,7 +40,6 @@ import '../../views/menu/StyledItemGroup.js';
40
40
  import '../../views/menu/StyledItemIcon.js';
41
41
  import '../../views/menu/StyledItemMeta.js';
42
42
  import '../../views/menu/StyledItemTypeIcon.js';
43
- import '../../views/menu/StyledButton.js';
44
43
  import '../../views/menu/StyledSeparator.js';
45
44
  import { createPortal } from 'react-dom';
46
45
 
@@ -128,25 +127,25 @@ const MenuList = forwardRef((_ref, ref) => {
128
127
  children, update]);
129
128
  const Node = React__default.createElement(StyledFloatingMenu, {
130
129
  "data-garden-animate": isVisible,
131
- isHidden: !isExpanded,
132
- position: getMenuPosition(placement),
133
- zIndex: zIndex,
130
+ $isHidden: !isExpanded || !isVisible ,
131
+ $position: getMenuPosition(placement),
132
+ $zIndex: zIndex,
134
133
  style: {
135
134
  transform
136
135
  },
137
136
  ref: floatingRef
138
137
  }, React__default.createElement(StyledMenu, Object.assign({
139
138
  "data-garden-animate-arrow": isVisible,
140
- arrowPosition: hasArrow ? getArrowPosition(theme, placement) : undefined,
141
- isCompact: isCompact,
142
- minHeight: minHeight,
143
- maxHeight: maxHeight,
139
+ $arrowPosition: hasArrow ? getArrowPosition(theme, placement) : undefined,
140
+ $isCompact: isCompact,
141
+ $minHeight: minHeight,
142
+ $maxHeight: maxHeight,
144
143
  style: {
145
144
  height
146
145
  }
147
146
  }, props, {
148
147
  ref: ref
149
- }), isVisible && children));
148
+ }), !!isVisible && children));
150
149
  return appendToNode ? createPortal(Node, appendToNode) : Node;
151
150
  });
152
151
  MenuList.displayName = 'MenuList';
@@ -35,7 +35,6 @@ import '../../views/menu/StyledItemGroup.js';
35
35
  import '../../views/menu/StyledItemIcon.js';
36
36
  import '../../views/menu/StyledItemMeta.js';
37
37
  import '../../views/menu/StyledItemTypeIcon.js';
38
- import '../../views/menu/StyledButton.js';
39
38
  import { StyledSeparator } from '../../views/menu/StyledSeparator.js';
40
39
  import useMenuContext from '../../context/useMenuContext.js';
41
40
 
@@ -30,7 +30,7 @@ const toItem = props => ({
30
30
  });
31
31
  const toItems = (children, type) => Children.toArray(children).reduce((items, item) => {
32
32
  const retVal = items;
33
- if ( isValidElement(item)) {
33
+ if (isValidElement(item)) {
34
34
  if ('value' in item.props) {
35
35
  retVal.push(toItem({
36
36
  ...item.props,
@@ -7,7 +7,7 @@
7
7
  import * as React from 'react';
8
8
 
9
9
  var _path;
10
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
10
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
11
11
  var SvgCheckLgStroke = function SvgCheckLgStroke(props) {
12
12
  return /*#__PURE__*/React.createElement("svg", _extends({
13
13
  xmlns: "http://www.w3.org/2000/svg",
@@ -7,7 +7,7 @@
7
7
  import * as React from 'react';
8
8
 
9
9
  var _path;
10
- function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
10
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
11
11
  var SvgChevronDownStroke = function SvgChevronDownStroke(props) {
12
12
  return /*#__PURE__*/React.createElement("svg", _extends({
13
13
  xmlns: "http://www.w3.org/2000/svg",