@zendeskgarden/react-dropdowns 9.0.0-next.2 → 9.0.0-next.20

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 (157) hide show
  1. package/README.md +73 -69
  2. package/dist/esm/context/useComboboxContext.js +18 -0
  3. package/dist/esm/context/useFieldContext.js +18 -0
  4. package/dist/esm/context/useItemContext.js +18 -0
  5. package/dist/esm/context/useItemGroupContext.js +14 -0
  6. package/dist/esm/context/useMenuContext.js +18 -0
  7. package/dist/esm/context/useOptionContext.js +18 -0
  8. package/dist/esm/elements/combobox/Combobox.js +329 -0
  9. package/dist/esm/elements/combobox/Field.js +74 -0
  10. package/dist/esm/elements/combobox/Hint.js +56 -0
  11. package/dist/esm/elements/combobox/Label.js +67 -0
  12. package/dist/esm/elements/combobox/Listbox.js +154 -0
  13. package/dist/esm/elements/combobox/Message.js +62 -0
  14. package/dist/esm/elements/combobox/OptGroup.js +92 -0
  15. package/dist/esm/elements/combobox/Option.js +136 -0
  16. package/dist/esm/elements/combobox/OptionMeta.js +54 -0
  17. package/dist/esm/elements/combobox/Tag.js +97 -0
  18. package/dist/esm/elements/combobox/TagAvatar.js +13 -0
  19. package/dist/esm/elements/combobox/TagGroup.js +35 -0
  20. package/dist/esm/elements/combobox/utils.js +36 -0
  21. package/dist/esm/elements/menu/Item.js +141 -0
  22. package/dist/esm/elements/menu/ItemGroup.js +95 -0
  23. package/dist/esm/elements/menu/ItemMeta.js +54 -0
  24. package/dist/esm/elements/menu/Menu.js +126 -0
  25. package/dist/esm/elements/menu/MenuList.js +169 -0
  26. package/dist/esm/elements/menu/Separator.js +57 -0
  27. package/dist/esm/elements/menu/utils.js +55 -0
  28. package/dist/esm/index.js +19 -0
  29. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/check-lg-stroke.svg.js +28 -0
  30. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/chevron-down-stroke.svg.js +25 -0
  31. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/chevron-left-stroke.svg.js +25 -0
  32. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/chevron-right-stroke.svg.js +25 -0
  33. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/plus-stroke.svg.js +26 -0
  34. package/dist/esm/types/index.js +12 -0
  35. package/dist/esm/views/combobox/StyledCombobox.js +30 -0
  36. package/dist/esm/views/combobox/StyledContainer.js +22 -0
  37. package/dist/esm/views/combobox/StyledField.js +22 -0
  38. package/dist/esm/views/combobox/StyledFloatingListbox.js +27 -0
  39. package/dist/esm/views/combobox/StyledHint.js +23 -0
  40. package/dist/esm/views/combobox/StyledInput.js +47 -0
  41. package/dist/esm/views/combobox/StyledInputGroup.js +26 -0
  42. package/dist/esm/views/combobox/StyledInputIcon.js +62 -0
  43. package/dist/esm/views/combobox/StyledLabel.js +23 -0
  44. package/dist/esm/views/combobox/StyledListbox.js +31 -0
  45. package/dist/esm/views/combobox/StyledListboxSeparator.js +37 -0
  46. package/dist/esm/views/combobox/StyledMessage.js +23 -0
  47. package/dist/esm/views/combobox/StyledOptGroup.js +22 -0
  48. package/dist/esm/views/combobox/StyledOption.js +69 -0
  49. package/dist/esm/views/combobox/StyledOptionContent.js +22 -0
  50. package/dist/esm/views/combobox/StyledOptionIcon.js +51 -0
  51. package/dist/esm/views/combobox/StyledOptionMeta.js +39 -0
  52. package/dist/esm/views/combobox/StyledOptionTypeIcon.js +58 -0
  53. package/dist/esm/views/combobox/StyledTag.js +27 -0
  54. package/dist/esm/views/combobox/StyledTagsButton.js +34 -0
  55. package/dist/esm/views/combobox/StyledTrigger.js +125 -0
  56. package/dist/esm/views/combobox/StyledValue.js +39 -0
  57. package/dist/esm/views/menu/StyledFloatingMenu.js +23 -0
  58. package/dist/esm/views/menu/StyledItem.js +23 -0
  59. package/dist/esm/views/menu/StyledItemContent.js +23 -0
  60. package/dist/esm/views/menu/StyledItemGroup.js +23 -0
  61. package/dist/esm/views/menu/StyledItemIcon.js +23 -0
  62. package/dist/esm/views/menu/StyledItemMeta.js +23 -0
  63. package/dist/esm/views/menu/StyledItemTypeIcon.js +24 -0
  64. package/dist/esm/views/menu/StyledMenu.js +27 -0
  65. package/dist/esm/views/menu/StyledSeparator.js +23 -0
  66. package/dist/index.cjs.js +1778 -1761
  67. package/dist/typings/context/useComboboxContext.d.ts +25 -0
  68. package/dist/typings/context/useFieldContext.d.ts +32 -0
  69. package/dist/typings/context/useItemContext.d.ts +14 -0
  70. package/dist/typings/context/useItemGroupContext.d.ts +15 -0
  71. package/dist/typings/context/useMenuContext.d.ts +23 -0
  72. package/dist/typings/context/useOptionContext.d.ts +14 -0
  73. package/dist/typings/elements/{Combobox → combobox}/Combobox.d.ts +0 -2
  74. package/dist/typings/elements/{Fields → combobox}/Field.d.ts +8 -1
  75. package/dist/typings/elements/{Fields → combobox}/Hint.d.ts +2 -0
  76. package/dist/typings/elements/{Fields → combobox}/Label.d.ts +3 -1
  77. package/dist/typings/elements/{Menu/Items/MediaBody.d.ts → combobox/Listbox.d.ts} +2 -4
  78. package/dist/typings/elements/{Fields → combobox}/Message.d.ts +3 -1
  79. package/dist/typings/elements/{Menu/Items/HeaderItem.d.ts → combobox/OptGroup.d.ts} +2 -2
  80. package/dist/typings/elements/{Menu/Items/MediaItem.d.ts → combobox/Option.d.ts} +5 -2
  81. package/dist/typings/elements/{Menu/Items/HeaderIcon.d.ts → combobox/OptionMeta.d.ts} +1 -1
  82. package/dist/typings/elements/combobox/Tag.d.ts +15 -0
  83. package/dist/typings/elements/combobox/TagAvatar.d.ts +14 -0
  84. package/dist/typings/elements/combobox/TagGroup.d.ts +12 -0
  85. package/dist/typings/elements/combobox/utils.d.ts +30 -0
  86. package/dist/typings/elements/{Menu/Items → menu}/Item.d.ts +5 -2
  87. package/dist/typings/elements/{Menu/Items/AddItem.d.ts → menu/ItemGroup.d.ts} +2 -2
  88. package/dist/typings/elements/{Menu/Items → menu}/ItemMeta.d.ts +2 -2
  89. package/dist/typings/elements/{Menu → menu}/Menu.d.ts +0 -2
  90. package/dist/typings/elements/menu/MenuList.d.ts +12 -0
  91. package/dist/typings/elements/{Menu → menu}/Separator.d.ts +1 -1
  92. package/dist/typings/elements/menu/utils.d.ts +29 -0
  93. package/dist/typings/index.d.ts +18 -25
  94. package/dist/typings/types/index.d.ts +242 -121
  95. package/dist/typings/{styled/items/StyledItemIcon.d.ts → views/combobox/StyledCombobox.d.ts} +4 -6
  96. package/dist/typings/{styled/multiselect/StyledMultiselectItemWrapper.d.ts → views/combobox/StyledContainer.d.ts} +1 -1
  97. package/dist/typings/{styled/select/StyledSelect.d.ts → views/combobox/StyledField.d.ts} +1 -1
  98. package/dist/typings/views/combobox/StyledFloatingListbox.d.ts +18 -0
  99. package/dist/typings/views/combobox/StyledHint.d.ts +11 -0
  100. package/dist/typings/views/combobox/StyledInput.d.ts +20 -0
  101. package/dist/typings/{styled/items/StyledAddItem.d.ts → views/combobox/StyledInputGroup.d.ts} +2 -4
  102. package/dist/typings/views/combobox/StyledInputIcon.d.ts +20 -0
  103. package/dist/typings/views/combobox/StyledLabel.d.ts +11 -0
  104. package/dist/typings/views/combobox/StyledListbox.d.ts +17 -0
  105. package/dist/typings/{styled/items/StyledNextItem.d.ts → views/combobox/StyledListboxSeparator.d.ts} +2 -4
  106. package/dist/typings/views/combobox/StyledMessage.d.ts +11 -0
  107. package/dist/typings/views/combobox/StyledOptGroup.d.ts +14 -0
  108. package/dist/typings/views/combobox/StyledOption.d.ts +18 -0
  109. package/dist/typings/views/combobox/StyledOptionContent.d.ts +10 -0
  110. package/dist/typings/views/combobox/StyledOptionIcon.d.ts +17 -0
  111. package/dist/typings/views/combobox/StyledOptionMeta.d.ts +14 -0
  112. package/dist/typings/views/combobox/StyledOptionTypeIcon.d.ts +17 -0
  113. package/dist/typings/views/combobox/StyledTag.d.ts +17 -0
  114. package/dist/typings/views/combobox/StyledTagsButton.d.ts +16 -0
  115. package/dist/typings/views/combobox/StyledTrigger.d.ts +24 -0
  116. package/dist/typings/views/combobox/StyledValue.d.ts +21 -0
  117. package/dist/typings/views/index.d.ts +37 -0
  118. package/dist/typings/views/menu/StyledFloatingMenu.d.ts +13 -0
  119. package/dist/typings/{styled/items/StyledPreviousItem.d.ts → views/menu/StyledItem.d.ts} +4 -4
  120. package/dist/typings/views/menu/StyledItemContent.d.ts +13 -0
  121. package/dist/typings/views/menu/StyledItemGroup.d.ts +13 -0
  122. package/dist/typings/views/menu/StyledItemIcon.d.ts +14 -0
  123. package/dist/typings/{styled/items → views/menu}/StyledItemMeta.d.ts +5 -10
  124. package/dist/typings/views/menu/StyledItemTypeIcon.d.ts +14 -0
  125. package/dist/typings/views/menu/StyledMenu.d.ts +19 -0
  126. package/dist/typings/{styled → views}/menu/StyledSeparator.d.ts +7 -4
  127. package/package.json +20 -18
  128. package/dist/index.esm.js +0 -2032
  129. package/dist/typings/elements/Autocomplete/Autocomplete.d.ts +0 -14
  130. package/dist/typings/elements/Dropdown/Dropdown.d.ts +0 -26
  131. package/dist/typings/elements/Menu/Items/MediaFigure.d.ts +0 -11
  132. package/dist/typings/elements/Menu/Items/NextItem.d.ts +0 -12
  133. package/dist/typings/elements/Menu/Items/PreviousItem.d.ts +0 -12
  134. package/dist/typings/elements/Multiselect/Multiselect.d.ts +0 -14
  135. package/dist/typings/elements/Select/Select.d.ts +0 -14
  136. package/dist/typings/elements/Trigger/Trigger.d.ts +0 -24
  137. package/dist/typings/styled/index.d.ts +0 -29
  138. package/dist/typings/styled/items/StyledItem.d.ts +0 -20
  139. package/dist/typings/styled/items/StyledNextIcon.d.ts +0 -12
  140. package/dist/typings/styled/items/StyledPreviousIcon.d.ts +0 -12
  141. package/dist/typings/styled/items/header/StyledHeaderIcon.d.ts +0 -14
  142. package/dist/typings/styled/items/header/StyledHeaderItem.d.ts +0 -16
  143. package/dist/typings/styled/items/media/StyledMediaBody.d.ts +0 -17
  144. package/dist/typings/styled/items/media/StyledMediaFigure.d.ts +0 -287
  145. package/dist/typings/styled/items/media/StyledMediaItem.d.ts +0 -13
  146. package/dist/typings/styled/menu/StyledMenu.d.ts +0 -20
  147. package/dist/typings/styled/menu/StyledMenuWrapper.d.ts +0 -16
  148. package/dist/typings/styled/multiselect/StyledMultiselectInput.d.ts +0 -22
  149. package/dist/typings/styled/multiselect/StyledMultiselectItemsContainer.d.ts +0 -16
  150. package/dist/typings/styled/multiselect/StyledMultiselectMoreAnchor.d.ts +0 -15
  151. package/dist/typings/styled/select/StyledFauxInput.d.ts +0 -22
  152. package/dist/typings/styled/select/StyledInput.d.ts +0 -15
  153. package/dist/typings/utils/garden-placements.d.ts +0 -26
  154. package/dist/typings/utils/useDropdownContext.d.ts +0 -28
  155. package/dist/typings/utils/useFieldContext.d.ts +0 -17
  156. package/dist/typings/utils/useItemContext.d.ts +0 -16
  157. package/dist/typings/utils/useMenuContext.d.ts +0 -17
@@ -0,0 +1,169 @@
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, { forwardRef, useRef, useState, useContext, useEffect } from 'react';
8
+ import PropTypes from 'prop-types';
9
+ import { ThemeContext } from 'styled-components';
10
+ import { DEFAULT_THEME, getFloatingPlacements, getMenuPosition, getArrowPosition } from '@zendeskgarden/react-theming';
11
+ import { useFloating, platform, offset, autoPlacement, flip, size, autoUpdate } from '@floating-ui/react-dom';
12
+ import { PLACEMENT } from '../../types/index.js';
13
+ import '../../views/combobox/StyledCombobox.js';
14
+ import '../../views/combobox/StyledContainer.js';
15
+ import '../../views/combobox/StyledField.js';
16
+ import '../../views/combobox/StyledFloatingListbox.js';
17
+ import '../../views/combobox/StyledHint.js';
18
+ import '../../views/combobox/StyledInput.js';
19
+ import '../../views/combobox/StyledInputGroup.js';
20
+ import '../../views/combobox/StyledInputIcon.js';
21
+ import '../../views/combobox/StyledLabel.js';
22
+ import '../../views/combobox/StyledListbox.js';
23
+ import '../../views/combobox/StyledListboxSeparator.js';
24
+ import '../../views/combobox/StyledMessage.js';
25
+ import '../../views/combobox/StyledOptGroup.js';
26
+ import '../../views/combobox/StyledOption.js';
27
+ import '../../views/combobox/StyledOptionContent.js';
28
+ import '../../views/combobox/StyledOptionIcon.js';
29
+ import '../../views/combobox/StyledOptionMeta.js';
30
+ import '../../views/combobox/StyledOptionTypeIcon.js';
31
+ import '../../views/combobox/StyledTag.js';
32
+ import '../../views/combobox/StyledTagsButton.js';
33
+ import '../../views/combobox/StyledTrigger.js';
34
+ import '../../views/combobox/StyledValue.js';
35
+ import { StyledMenu } from '../../views/menu/StyledMenu.js';
36
+ import { StyledFloatingMenu } from '../../views/menu/StyledFloatingMenu.js';
37
+ import '../../views/menu/StyledItem.js';
38
+ import '../../views/menu/StyledItemContent.js';
39
+ import '../../views/menu/StyledItemGroup.js';
40
+ import '../../views/menu/StyledItemIcon.js';
41
+ import '../../views/menu/StyledItemMeta.js';
42
+ import '../../views/menu/StyledItemTypeIcon.js';
43
+ import '../../views/menu/StyledSeparator.js';
44
+ import { createPortal } from 'react-dom';
45
+
46
+ const PLACEMENT_DEFAULT = 'bottom-start';
47
+ const MenuList = forwardRef((_ref, ref) => {
48
+ let {
49
+ appendToNode,
50
+ hasArrow,
51
+ isCompact,
52
+ isExpanded,
53
+ fallbackPlacements: _fallbackPlacements,
54
+ maxHeight,
55
+ minHeight,
56
+ placement: _placement,
57
+ triggerRef,
58
+ zIndex,
59
+ children,
60
+ ...props
61
+ } = _ref;
62
+ const floatingRef = useRef(null);
63
+ const [isVisible, setIsVisible] = useState(isExpanded);
64
+ const [height, setHeight] = useState();
65
+ const theme = useContext(ThemeContext) || DEFAULT_THEME;
66
+ const [floatingPlacement, fallbackPlacements] = getFloatingPlacements(theme, _placement === 'auto' ? PLACEMENT_DEFAULT : _placement, _fallbackPlacements);
67
+ const {
68
+ refs,
69
+ placement,
70
+ update,
71
+ floatingStyles: {
72
+ transform
73
+ }
74
+ } = useFloating({
75
+ platform: {
76
+ ...platform,
77
+ isRTL: () => theme.rtl
78
+ },
79
+ elements: {
80
+ reference: triggerRef?.current,
81
+ floating: floatingRef?.current
82
+ },
83
+ placement: floatingPlacement,
84
+ middleware: [offset(theme.space.base * (hasArrow ? 2 : 1)), _placement === 'auto' ? autoPlacement() : flip({
85
+ fallbackPlacements
86
+ }), size({
87
+ apply: _ref2 => {
88
+ let {
89
+ rects,
90
+ availableHeight
91
+ } = _ref2;
92
+ if (!(minHeight === null || minHeight === 'fit-content')) {
93
+ if (rects.floating.height > availableHeight) {
94
+ setHeight(availableHeight);
95
+ }
96
+ }
97
+ }
98
+ })]
99
+ });
100
+ useEffect(() => {
101
+ let cleanup;
102
+ if (isExpanded && refs.reference.current && refs.floating.current) {
103
+ cleanup = autoUpdate(refs.reference.current, refs.floating.current, update, {
104
+ elementResize: typeof ResizeObserver === 'function'
105
+ });
106
+ }
107
+ return () => cleanup && cleanup();
108
+ }, [isExpanded, refs.reference, refs.floating, update]);
109
+ useEffect(() => {
110
+ let timeout;
111
+ if (isExpanded) {
112
+ setIsVisible(true);
113
+ } else {
114
+ timeout = setTimeout(() => {
115
+ setIsVisible(false);
116
+ setHeight(undefined);
117
+ }, 200 );
118
+ }
119
+ return () => clearTimeout(timeout);
120
+ }, [isExpanded]);
121
+ useEffect(() => {
122
+ if (height) {
123
+ setHeight(undefined);
124
+ update();
125
+ }
126
+ }, [
127
+ children, update]);
128
+ const Node = React__default.createElement(StyledFloatingMenu, {
129
+ "data-garden-animate": isVisible,
130
+ isHidden: !isExpanded,
131
+ position: getMenuPosition(placement),
132
+ zIndex: zIndex,
133
+ style: {
134
+ transform
135
+ },
136
+ ref: floatingRef
137
+ }, React__default.createElement(StyledMenu, Object.assign({
138
+ "data-garden-animate-arrow": isVisible,
139
+ arrowPosition: hasArrow ? getArrowPosition(theme, placement) : undefined,
140
+ isCompact: isCompact,
141
+ minHeight: minHeight,
142
+ maxHeight: maxHeight,
143
+ style: {
144
+ height
145
+ }
146
+ }, props, {
147
+ ref: ref
148
+ }), isVisible && children));
149
+ return appendToNode ? createPortal(Node, appendToNode) : Node;
150
+ });
151
+ MenuList.displayName = 'MenuList';
152
+ MenuList.propTypes = {
153
+ appendToNode: PropTypes.any,
154
+ hasArrow: PropTypes.bool,
155
+ isCompact: PropTypes.bool,
156
+ isExpanded: PropTypes.bool,
157
+ maxHeight: PropTypes.string,
158
+ minHeight: PropTypes.string,
159
+ placement: PropTypes.oneOf(PLACEMENT),
160
+ triggerRef: PropTypes.any,
161
+ zIndex: PropTypes.number
162
+ };
163
+ MenuList.defaultProps = {
164
+ maxHeight: '400px',
165
+ placement: PLACEMENT_DEFAULT,
166
+ zIndex: 1000
167
+ };
168
+
169
+ export { MenuList };
@@ -0,0 +1,57 @@
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, { forwardRef } from 'react';
8
+ import '../../views/combobox/StyledCombobox.js';
9
+ import '../../views/combobox/StyledContainer.js';
10
+ import '../../views/combobox/StyledField.js';
11
+ import '../../views/combobox/StyledFloatingListbox.js';
12
+ import '../../views/combobox/StyledHint.js';
13
+ import '../../views/combobox/StyledInput.js';
14
+ import '../../views/combobox/StyledInputGroup.js';
15
+ import '../../views/combobox/StyledInputIcon.js';
16
+ import '../../views/combobox/StyledLabel.js';
17
+ import '../../views/combobox/StyledListbox.js';
18
+ import '../../views/combobox/StyledListboxSeparator.js';
19
+ import '../../views/combobox/StyledMessage.js';
20
+ import '../../views/combobox/StyledOptGroup.js';
21
+ import '../../views/combobox/StyledOption.js';
22
+ import '../../views/combobox/StyledOptionContent.js';
23
+ import '../../views/combobox/StyledOptionIcon.js';
24
+ import '../../views/combobox/StyledOptionMeta.js';
25
+ import '../../views/combobox/StyledOptionTypeIcon.js';
26
+ import '../../views/combobox/StyledTag.js';
27
+ import '../../views/combobox/StyledTagsButton.js';
28
+ import '../../views/combobox/StyledTrigger.js';
29
+ import '../../views/combobox/StyledValue.js';
30
+ import '../../views/menu/StyledMenu.js';
31
+ import '../../views/menu/StyledFloatingMenu.js';
32
+ import '../../views/menu/StyledItem.js';
33
+ import '../../views/menu/StyledItemContent.js';
34
+ import '../../views/menu/StyledItemGroup.js';
35
+ import '../../views/menu/StyledItemIcon.js';
36
+ import '../../views/menu/StyledItemMeta.js';
37
+ import '../../views/menu/StyledItemTypeIcon.js';
38
+ import { StyledSeparator } from '../../views/menu/StyledSeparator.js';
39
+ import useMenuContext from '../../context/useMenuContext.js';
40
+
41
+ const Separator = forwardRef(
42
+ (_ref, ref) => {
43
+ let {
44
+ children,
45
+ ...props
46
+ } = _ref;
47
+ const {
48
+ getSeparatorProps
49
+ } = useMenuContext();
50
+ const separatorProps = getSeparatorProps();
51
+ return React__default.createElement(StyledSeparator, Object.assign({}, props, separatorProps, {
52
+ ref: ref
53
+ }));
54
+ });
55
+ Separator.displayName = 'Separator';
56
+
57
+ export { Separator };
@@ -0,0 +1,55 @@
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 { Children, isValidElement } from 'react';
8
+
9
+ const toItem = props => ({
10
+ value: props.value,
11
+ label: props.label,
12
+ ...(props.name && {
13
+ name: props.name
14
+ }),
15
+ ...(props.isDisabled && {
16
+ disabled: props.isDisabled
17
+ }),
18
+ ...(props.isSelected && {
19
+ selected: props.isSelected
20
+ }),
21
+ ...(props.selectionType && {
22
+ type: props.selectionType
23
+ }),
24
+ ...(props.type === 'next' && {
25
+ isNext: true
26
+ }),
27
+ ...(props.type === 'previous' && {
28
+ isPrevious: true
29
+ })
30
+ });
31
+ const toItems = (children, type) => Children.toArray(children).reduce((items, item) => {
32
+ const retVal = items;
33
+ if ( isValidElement(item)) {
34
+ if ('value' in item.props) {
35
+ retVal.push(toItem({
36
+ ...item.props,
37
+ selectionType: type
38
+ }));
39
+ } else {
40
+ const props = item.props;
41
+ const groupLabel = props.legend || props['aria-label'];
42
+ const isSelectableGroup = props.type && ['checkbox', 'radio'].includes(props.type);
43
+ if (groupLabel || isSelectableGroup) {
44
+ const groupItems = toItems(props.children, props.type);
45
+ retVal.push({
46
+ label: props.legend || props['aria-label'],
47
+ items: groupItems
48
+ });
49
+ }
50
+ }
51
+ }
52
+ return retVal;
53
+ }, []);
54
+
55
+ export { toItem, toItems };
@@ -0,0 +1,19 @@
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
+ export { Combobox } from './elements/combobox/Combobox.js';
8
+ export { Field } from './elements/combobox/Field.js';
9
+ export { Hint } from './elements/combobox/Hint.js';
10
+ export { Label } from './elements/combobox/Label.js';
11
+ export { Message } from './elements/combobox/Message.js';
12
+ export { Option } from './elements/combobox/Option.js';
13
+ export { OptGroup } from './elements/combobox/OptGroup.js';
14
+ export { Tag } from './elements/combobox/Tag.js';
15
+ export { Menu } from './elements/menu/Menu.js';
16
+ export { ItemGroup } from './elements/menu/ItemGroup.js';
17
+ export { Item } from './elements/menu/Item.js';
18
+ export { Separator } from './elements/menu/Separator.js';
19
+ export { VALIDATION } from '@zendeskgarden/react-forms';
@@ -0,0 +1,28 @@
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 * as React from 'react';
8
+
9
+ var _path;
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
+ var SvgCheckLgStroke = function SvgCheckLgStroke(props) {
12
+ return /*#__PURE__*/React.createElement("svg", _extends({
13
+ xmlns: "http://www.w3.org/2000/svg",
14
+ width: 16,
15
+ height: 16,
16
+ focusable: "false",
17
+ viewBox: "0 0 16 16",
18
+ "aria-hidden": "true"
19
+ }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
20
+ fill: "none",
21
+ stroke: "currentColor",
22
+ strokeLinecap: "round",
23
+ strokeLinejoin: "round",
24
+ d: "M1 9l4 4L15 3"
25
+ })));
26
+ };
27
+
28
+ export { SvgCheckLgStroke as default };
@@ -0,0 +1,25 @@
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 * as React from 'react';
8
+
9
+ var _path;
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
+ var SvgChevronDownStroke = function SvgChevronDownStroke(props) {
12
+ return /*#__PURE__*/React.createElement("svg", _extends({
13
+ xmlns: "http://www.w3.org/2000/svg",
14
+ width: 16,
15
+ height: 16,
16
+ focusable: "false",
17
+ viewBox: "0 0 16 16",
18
+ "aria-hidden": "true"
19
+ }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
20
+ fill: "currentColor",
21
+ d: "M12.688 5.61a.5.5 0 01.69.718l-.066.062-5 4a.5.5 0 01-.542.054l-.082-.054-5-4a.5.5 0 01.55-.83l.074.05L8 9.359l4.688-3.75z"
22
+ })));
23
+ };
24
+
25
+ export { SvgChevronDownStroke as default };
@@ -0,0 +1,25 @@
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 * as React from 'react';
8
+
9
+ var _path;
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
+ var SvgChevronLeftStroke = function SvgChevronLeftStroke(props) {
12
+ return /*#__PURE__*/React.createElement("svg", _extends({
13
+ xmlns: "http://www.w3.org/2000/svg",
14
+ width: 16,
15
+ height: 16,
16
+ focusable: "false",
17
+ viewBox: "0 0 16 16",
18
+ "aria-hidden": "true"
19
+ }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
20
+ fill: "currentColor",
21
+ d: "M10.39 12.688a.5.5 0 01-.718.69l-.062-.066-4-5a.5.5 0 01-.054-.542l.054-.082 4-5a.5.5 0 01.83.55l-.05.074L6.641 8l3.75 4.688z"
22
+ })));
23
+ };
24
+
25
+ export { SvgChevronLeftStroke as default };
@@ -0,0 +1,25 @@
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 * as React from 'react';
8
+
9
+ var _path;
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
+ var SvgChevronRightStroke = function SvgChevronRightStroke(props) {
12
+ return /*#__PURE__*/React.createElement("svg", _extends({
13
+ xmlns: "http://www.w3.org/2000/svg",
14
+ width: 16,
15
+ height: 16,
16
+ focusable: "false",
17
+ viewBox: "0 0 16 16",
18
+ "aria-hidden": "true"
19
+ }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
20
+ fill: "currentColor",
21
+ d: "M5.61 3.312a.5.5 0 01.718-.69l.062.066 4 5a.5.5 0 01.054.542l-.054.082-4 5a.5.5 0 01-.83-.55l.05-.074L9.359 8l-3.75-4.688z"
22
+ })));
23
+ };
24
+
25
+ export { SvgChevronRightStroke as default };
@@ -0,0 +1,26 @@
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 * as React from 'react';
8
+
9
+ var _path;
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
+ var SvgPlusStroke = function SvgPlusStroke(props) {
12
+ return /*#__PURE__*/React.createElement("svg", _extends({
13
+ xmlns: "http://www.w3.org/2000/svg",
14
+ width: 16,
15
+ height: 16,
16
+ focusable: "false",
17
+ viewBox: "0 0 16 16",
18
+ "aria-hidden": "true"
19
+ }, props), _path || (_path = /*#__PURE__*/React.createElement("path", {
20
+ stroke: "currentColor",
21
+ strokeLinecap: "round",
22
+ d: "M7.5 2.5v12m6-6h-12"
23
+ })));
24
+ };
25
+
26
+ export { SvgPlusStroke as default };
@@ -0,0 +1,12 @@
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 { PLACEMENT as PLACEMENT$1 } from '@zendeskgarden/react-theming';
8
+
9
+ const OPTION_TYPE = ['add', 'danger', 'next', 'previous'];
10
+ const PLACEMENT = ['auto', ...PLACEMENT$1];
11
+
12
+ export { OPTION_TYPE, PLACEMENT };
@@ -0,0 +1,30 @@
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 styled, { css } from 'styled-components';
8
+ import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
9
+ import { StyledLabel } from './StyledLabel.js';
10
+ import { StyledHint } from './StyledHint.js';
11
+ import { StyledMessage } from './StyledMessage.js';
12
+
13
+ const COMPONENT_ID = 'dropdowns.combobox';
14
+ const sizeStyles = props => {
15
+ const minWidth = `${props.isCompact ? 100 : 144}px`;
16
+ const marginTop = `${props.theme.space.base * (props.isCompact ? 1 : 2)}px`;
17
+ return css(["min-width:", ";", ":not([hidden]) + &&,", " + &&,", " + &&,&& + ", ",&& + ", "{margin-top:", ";}"], minWidth, StyledLabel, StyledHint, StyledMessage, StyledHint, StyledMessage, marginTop);
18
+ };
19
+ const StyledCombobox = styled.div.attrs({
20
+ 'data-garden-id': COMPONENT_ID,
21
+ 'data-garden-version': '9.0.0-next.20'
22
+ }).withConfig({
23
+ displayName: "StyledCombobox",
24
+ componentId: "sc-13eybg8-0"
25
+ })(["", ";", ";"], sizeStyles, props => retrieveComponentStyles(COMPONENT_ID, props));
26
+ StyledCombobox.defaultProps = {
27
+ theme: DEFAULT_THEME
28
+ };
29
+
30
+ export { StyledCombobox };
@@ -0,0 +1,22 @@
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 styled from 'styled-components';
8
+ import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
9
+
10
+ const COMPONENT_ID = 'dropdowns.combobox.container';
11
+ const StyledContainer = styled.div.attrs({
12
+ 'data-garden-id': COMPONENT_ID,
13
+ 'data-garden-version': '9.0.0-next.20'
14
+ }).withConfig({
15
+ displayName: "StyledContainer",
16
+ componentId: "sc-14i9jid-0"
17
+ })(["display:flex;", ";"], props => retrieveComponentStyles(COMPONENT_ID, props));
18
+ StyledContainer.defaultProps = {
19
+ theme: DEFAULT_THEME
20
+ };
21
+
22
+ export { StyledContainer };
@@ -0,0 +1,22 @@
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 styled from 'styled-components';
8
+ import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
9
+
10
+ const COMPONENT_ID = 'dropdowns.combobox.field';
11
+ const StyledField = styled.div.attrs({
12
+ 'data-garden-id': COMPONENT_ID,
13
+ 'data-garden-version': '9.0.0-next.20'
14
+ }).withConfig({
15
+ displayName: "StyledField",
16
+ componentId: "sc-zc57xl-0"
17
+ })(["direction:", ";", ";"], props => props.theme.rtl ? 'rtl' : 'ltr', props => retrieveComponentStyles(COMPONENT_ID, props));
18
+ StyledField.defaultProps = {
19
+ theme: DEFAULT_THEME
20
+ };
21
+
22
+ export { StyledField };
@@ -0,0 +1,27 @@
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 styled from 'styled-components';
8
+ import { menuStyles, retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
9
+
10
+ const COMPONENT_ID = 'dropdowns.combobox.floating';
11
+ const StyledFloatingListbox = styled.div.attrs({
12
+ 'data-garden-id': COMPONENT_ID,
13
+ 'data-garden-version': '9.0.0-next.20'
14
+ }).withConfig({
15
+ displayName: "StyledFloatingListbox",
16
+ componentId: "sc-1cp6spf-0"
17
+ })(["top:0;left:0;", ";", ";"], props => menuStyles(props.position, {
18
+ theme: props.theme,
19
+ hidden: props.isHidden,
20
+ animationModifier: '[data-garden-animate="true"]',
21
+ zIndex: props.zIndex
22
+ }), props => retrieveComponentStyles(COMPONENT_ID, props));
23
+ StyledFloatingListbox.defaultProps = {
24
+ theme: DEFAULT_THEME
25
+ };
26
+
27
+ export { StyledFloatingListbox };
@@ -0,0 +1,23 @@
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 styled from 'styled-components';
8
+ import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
9
+ import { Field } from '@zendeskgarden/react-forms';
10
+
11
+ const COMPONENT_ID = 'dropdowns.combobox.hint';
12
+ const StyledHint = styled(Field.Hint).attrs({
13
+ 'data-garden-id': COMPONENT_ID,
14
+ 'data-garden-version': '9.0.0-next.20'
15
+ }).withConfig({
16
+ displayName: "StyledHint",
17
+ componentId: "sc-106qvqx-0"
18
+ })(["", ";"], props => retrieveComponentStyles(COMPONENT_ID, props));
19
+ StyledHint.defaultProps = {
20
+ theme: DEFAULT_THEME
21
+ };
22
+
23
+ export { StyledHint };
@@ -0,0 +1,47 @@
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 styled, { css } from 'styled-components';
8
+ import { hideVisually, math } from 'polished';
9
+ import { retrieveComponentStyles, DEFAULT_THEME, getColor, getLineHeight } from '@zendeskgarden/react-theming';
10
+
11
+ const COMPONENT_ID = 'dropdowns.combobox.input';
12
+ const colorStyles = _ref => {
13
+ let {
14
+ theme
15
+ } = _ref;
16
+ const placeholderColor = getColor({
17
+ theme,
18
+ variable: 'foreground.disabled'
19
+ });
20
+ return css(["background-color:inherit;color:inherit;&::placeholder{opacity:1;color:", ";}"], placeholderColor);
21
+ };
22
+ const getHeight = props => {
23
+ if (props.isBare && !props.isMultiselectable) {
24
+ return props.theme.space.base * 5;
25
+ }
26
+ return props.theme.space.base * (props.isCompact ? 5 : 8);
27
+ };
28
+ const sizeStyles = props => {
29
+ const height = props.theme.space.base * 5;
30
+ const fontSize = props.theme.fontSizes.md;
31
+ const lineHeight = getLineHeight(height, fontSize);
32
+ const margin = math(`${props.theme.shadowWidths.sm} + ${(getHeight(props) - height) / 2}`);
33
+ const minWidth = `${props.theme.space.base * 8}px`;
34
+ return css(["min-width:", ";height:", "px;line-height:", ";font-size:", ";&&{margin-top:", ";margin-bottom:", ";}"], minWidth, height, lineHeight, fontSize, margin, margin);
35
+ };
36
+ const StyledInput = styled.input.attrs({
37
+ 'data-garden-id': COMPONENT_ID,
38
+ 'data-garden-version': '9.0.0-next.20'
39
+ }).withConfig({
40
+ displayName: "StyledInput",
41
+ componentId: "sc-1lkqdg-0"
42
+ })(["flex-basis:0;flex-grow:1;border:none;padding:0;font-family:inherit;&:focus{outline:none;}", ";", ";&[hidden]{display:revert;", "}&[aria-hidden='true']{display:none;}", ";"], sizeStyles, colorStyles, props => props.isEditable && hideVisually(), props => retrieveComponentStyles(COMPONENT_ID, props));
43
+ StyledInput.defaultProps = {
44
+ theme: DEFAULT_THEME
45
+ };
46
+
47
+ export { StyledInput, getHeight, sizeStyles };
@@ -0,0 +1,26 @@
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 styled, { css } from 'styled-components';
8
+ import { retrieveComponentStyles, DEFAULT_THEME } from '@zendeskgarden/react-theming';
9
+
10
+ const COMPONENT_ID = 'dropdowns.combobox.input_group';
11
+ const sizeStyles = props => {
12
+ const margin = props.theme.shadowWidths.sm;
13
+ return css(["margin:-", ";min-width:0;& > *{margin:", ";}"], margin, margin);
14
+ };
15
+ const StyledInputGroup = styled.div.attrs({
16
+ 'data-garden-id': COMPONENT_ID,
17
+ 'data-garden-version': '9.0.0-next.20'
18
+ }).withConfig({
19
+ displayName: "StyledInputGroup",
20
+ componentId: "sc-yx3q7u-0"
21
+ })(["display:flex;flex-grow:1;flex-wrap:wrap;", ";", ";"], sizeStyles, props => retrieveComponentStyles(COMPONENT_ID, props));
22
+ StyledInputGroup.defaultProps = {
23
+ theme: DEFAULT_THEME
24
+ };
25
+
26
+ export { StyledInputGroup };