@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,144 @@
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, useEffect } from 'react';
8
+ import PropTypes from 'prop-types';
9
+ import { Reference } from 'react-popper';
10
+ import { composeEventHandlers } from '@zendeskgarden/container-utilities';
11
+ import SvgChevronDownStroke from '../../node_modules/@zendeskgarden/svg-icons/src/16/chevron-down-stroke.svg.js';
12
+ import { VALIDATION } from '@zendeskgarden/react-forms';
13
+ import { mergeRefs } from 'react-merge-refs';
14
+ import '../../styled/menu/StyledMenu.js';
15
+ import '../../styled/menu/StyledMenuWrapper.js';
16
+ import '../../styled/menu/StyledSeparator.js';
17
+ import '../../styled/items/StyledAddItem.js';
18
+ import '../../styled/items/StyledItem.js';
19
+ import '../../styled/items/StyledItemMeta.js';
20
+ import '../../styled/items/StyledNextItem.js';
21
+ import '../../styled/items/StyledNextIcon.js';
22
+ import '../../styled/items/StyledPreviousItem.js';
23
+ import '../../styled/items/StyledPreviousIcon.js';
24
+ import '../../styled/items/StyledItemIcon.js';
25
+ import '../../styled/items/header/StyledHeaderIcon.js';
26
+ import '../../styled/items/header/StyledHeaderItem.js';
27
+ import '../../styled/items/media/StyledMediaBody.js';
28
+ import '../../styled/items/media/StyledMediaFigure.js';
29
+ import '../../styled/items/media/StyledMediaItem.js';
30
+ import { StyledFauxInput } from '../../styled/select/StyledFauxInput.js';
31
+ import { StyledInput } from '../../styled/select/StyledInput.js';
32
+ import { StyledSelect } from '../../styled/select/StyledSelect.js';
33
+ import '../../styled/multiselect/StyledMultiselectInput.js';
34
+ import '../../styled/multiselect/StyledMultiselectItemsContainer.js';
35
+ import '../../styled/multiselect/StyledMultiselectItemWrapper.js';
36
+ import '../../styled/multiselect/StyledMultiselectMoreAnchor.js';
37
+ import useDropdownContext from '../../utils/useDropdownContext.js';
38
+ import useFieldContext from '../../utils/useFieldContext.js';
39
+
40
+ const Autocomplete = forwardRef((_ref, ref) => {
41
+ let {
42
+ children,
43
+ inputRef: controlledInputRef,
44
+ start,
45
+ ...props
46
+ } = _ref;
47
+ const {
48
+ popperReferenceElementRef,
49
+ downshift: {
50
+ getToggleButtonProps,
51
+ getInputProps,
52
+ getRootProps,
53
+ isOpen
54
+ },
55
+ setDropdownType
56
+ } = useDropdownContext();
57
+ const {
58
+ isLabelHovered
59
+ } = useFieldContext();
60
+ const inputRef = useRef();
61
+ const triggerRef = useRef();
62
+ const previousIsOpenRef = useRef(isOpen);
63
+ const [isHovered, setIsHovered] = useState(false);
64
+ const [isFocused, setIsFocused] = useState(false);
65
+ useEffect(() => {
66
+ if (inputRef.current && isOpen !== previousIsOpenRef.current) {
67
+ inputRef.current.focus();
68
+ }
69
+ previousIsOpenRef.current = isOpen;
70
+ }, [inputRef, isOpen]);
71
+ const {
72
+ type,
73
+ onKeyDown,
74
+ ...selectProps
75
+ } = getToggleButtonProps(getRootProps({
76
+ role: null,
77
+ ...props,
78
+ onKeyDown: e => {
79
+ if (isOpen) {
80
+ e.nativeEvent.preventDownshiftDefault = true;
81
+ }
82
+ },
83
+ onMouseEnter: composeEventHandlers(props.onMouseEnter, () => setIsHovered(true)),
84
+ onMouseLeave: composeEventHandlers(props.onMouseLeave, () => setIsHovered(false))
85
+ }));
86
+ const onSelectKeyDown = composeEventHandlers(props.onKeyDown, onKeyDown);
87
+ const isContainerHovered = isLabelHovered && !isOpen;
88
+ const isContainerFocused = isOpen || isFocused;
89
+ useEffect(() => {
90
+ setDropdownType('autocomplete');
91
+ }, [setDropdownType]);
92
+ return React__default.createElement(Reference, null, _ref2 => {
93
+ let {
94
+ ref: popperReference
95
+ } = _ref2;
96
+ return React__default.createElement(StyledFauxInput, Object.assign({
97
+ isHovered: isContainerHovered,
98
+ isFocused: isContainerFocused,
99
+ tabIndex: null,
100
+ onKeyDown: onSelectKeyDown
101
+ }, selectProps, {
102
+ ref: selectRef => {
103
+ popperReference(selectRef);
104
+ mergeRefs([triggerRef, ref])(selectRef);
105
+ popperReferenceElementRef.current = selectRef;
106
+ }
107
+ }), start && React__default.createElement(StyledFauxInput.StartIcon, {
108
+ isHovered: isHovered || isLabelHovered && !isOpen,
109
+ isFocused: isContainerFocused,
110
+ isDisabled: props.disabled
111
+ }, start), !isOpen && React__default.createElement(StyledSelect, null, children), React__default.createElement(StyledInput, getInputProps({
112
+ isHidden: !isOpen,
113
+ disabled: props.disabled,
114
+ onFocus: () => {
115
+ setIsFocused(true);
116
+ },
117
+ onBlur: () => {
118
+ setIsFocused(false);
119
+ },
120
+ onClick: e => {
121
+ if (isOpen) {
122
+ e.nativeEvent.preventDownshiftDefault = true;
123
+ }
124
+ },
125
+ role: 'combobox',
126
+ ref: mergeRefs([inputRef, controlledInputRef || null])
127
+ })), !props.isBare && React__default.createElement(StyledFauxInput.EndIcon, {
128
+ isHovered: isHovered || isLabelHovered && !isOpen,
129
+ isFocused: isContainerFocused,
130
+ isDisabled: props.disabled,
131
+ isRotated: isOpen
132
+ }, React__default.createElement(SvgChevronDownStroke, null)));
133
+ });
134
+ });
135
+ Autocomplete.displayName = 'Autocomplete';
136
+ Autocomplete.propTypes = {
137
+ isCompact: PropTypes.bool,
138
+ isBare: PropTypes.bool,
139
+ disabled: PropTypes.bool,
140
+ focusInset: PropTypes.bool,
141
+ validation: PropTypes.oneOf(VALIDATION)
142
+ };
143
+
144
+ export { Autocomplete };
@@ -0,0 +1,106 @@
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, useEffect } from 'react';
8
+ import PropTypes from 'prop-types';
9
+ import { Reference } from 'react-popper';
10
+ import { KEY_CODES } from '@zendeskgarden/container-utilities';
11
+ import { MediaInput, VALIDATION } from '@zendeskgarden/react-forms';
12
+ import { mergeRefs } from 'react-merge-refs';
13
+ import useDropdownContext from '../../utils/useDropdownContext.js';
14
+
15
+ const Combobox = forwardRef((_ref, ref) => {
16
+ let {
17
+ isCompact,
18
+ isBare,
19
+ disabled,
20
+ focusInset,
21
+ placeholder,
22
+ validation,
23
+ inputRef: inputRefProp = null,
24
+ start,
25
+ end,
26
+ ...props
27
+ } = _ref;
28
+ const {
29
+ popperReferenceElementRef,
30
+ downshift: {
31
+ getToggleButtonProps,
32
+ getInputProps,
33
+ getRootProps,
34
+ isOpen
35
+ },
36
+ setDropdownType
37
+ } = useDropdownContext();
38
+ const wrapperRef = useRef();
39
+ const inputRef = useRef();
40
+ const isOpenRef = useRef(isOpen);
41
+ const wrapperProps = getToggleButtonProps(getRootProps({
42
+ role: null,
43
+ type: null,
44
+ onClick: event => {
45
+ event.nativeEvent.preventDownshiftDefault = true;
46
+ },
47
+ ...props,
48
+ onKeyDown: event => {
49
+ event.nativeEvent.preventDownshiftDefault = true;
50
+ }
51
+ }));
52
+ const inputProps = getInputProps({
53
+ isCompact,
54
+ isBare,
55
+ disabled,
56
+ focusInset,
57
+ placeholder,
58
+ validation,
59
+ start,
60
+ end,
61
+ role: 'combobox',
62
+ onKeyDown: event => {
63
+ if (event.keyCode === KEY_CODES.SPACE || !isOpen && [KEY_CODES.DOWN, KEY_CODES.UP].includes(event.keyCode)) {
64
+ event.nativeEvent.preventDownshiftDefault = true;
65
+ }
66
+ },
67
+ onClick: event => {
68
+ event.nativeEvent.preventDownshiftDefault = true;
69
+ }
70
+ });
71
+ useEffect(() => {
72
+ if (inputRef.current && isOpen !== isOpenRef.current) {
73
+ inputRef.current.focus();
74
+ }
75
+ isOpenRef.current = isOpen;
76
+ }, [inputRef, isOpen]);
77
+ useEffect(() => {
78
+ setDropdownType('combobox');
79
+ }, [setDropdownType]);
80
+ return React__default.createElement(Reference, null, _ref2 => {
81
+ let {
82
+ ref: popperReference
83
+ } = _ref2;
84
+ const wrapperRefProp = element => {
85
+ popperReference(element);
86
+ mergeRefs([wrapperRef, ref])(element);
87
+ popperReferenceElementRef.current = element;
88
+ };
89
+ return React__default.createElement(MediaInput, Object.assign({}, inputProps, {
90
+ wrapperProps: wrapperProps,
91
+ wrapperRef: wrapperRefProp,
92
+ ref: mergeRefs([inputRef, inputRefProp])
93
+ }));
94
+ });
95
+ });
96
+ Combobox.displayName = 'Combobox';
97
+ Combobox.propTypes = {
98
+ isCompact: PropTypes.bool,
99
+ isBare: PropTypes.bool,
100
+ disabled: PropTypes.bool,
101
+ focusInset: PropTypes.bool,
102
+ placeholder: PropTypes.string,
103
+ validation: PropTypes.oneOf(VALIDATION)
104
+ };
105
+
106
+ export { Combobox };
@@ -0,0 +1,178 @@
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, useState, useContext } from 'react';
8
+ import PropTypes from 'prop-types';
9
+ import { ThemeContext } from 'styled-components';
10
+ import Downshift from 'downshift';
11
+ import { Manager } from 'react-popper';
12
+ import { composeEventHandlers, KEY_CODES } from '@zendeskgarden/container-utilities';
13
+ import { DropdownContext } from '../../utils/useDropdownContext.js';
14
+
15
+ const REMOVE_ITEM_STATE_TYPE = 'REMOVE_ITEM';
16
+ const Dropdown = props => {
17
+ const {
18
+ children,
19
+ isOpen,
20
+ selectedItem,
21
+ selectedItems,
22
+ highlightedIndex,
23
+ inputValue,
24
+ onSelect,
25
+ onStateChange,
26
+ onInputValueChange,
27
+ downshiftProps
28
+ } = props;
29
+ const itemIndexRef = useRef(0);
30
+ const previousItemRef = useRef(undefined);
31
+ const previousIndexRef = useRef(undefined);
32
+ const nextItemsHashRef = useRef({});
33
+ const containsMultiselectRef = useRef(false);
34
+ const itemSearchRegistry = useRef([]);
35
+ const [dropdownType, setDropdownType] = useState('');
36
+ const {
37
+ rtl
38
+ } = useContext(ThemeContext);
39
+ const hasMenuRef = useRef(false);
40
+ const popperReferenceElementRef = useRef(null);
41
+ const customGetInputProps = (_ref, downshift) => {
42
+ let {
43
+ onKeyDown,
44
+ ...other
45
+ } = _ref;
46
+ return {
47
+ onKeyDown: composeEventHandlers(onKeyDown, e => {
48
+ const PREVIOUS_KEY = rtl ? KEY_CODES.RIGHT : KEY_CODES.LEFT;
49
+ const NEXT_KEY = rtl ? KEY_CODES.LEFT : KEY_CODES.RIGHT;
50
+ if (downshift.isOpen) {
51
+ if (e.keyCode === PREVIOUS_KEY && previousIndexRef.current !== null && previousIndexRef.current !== undefined && !downshift.inputValue) {
52
+ e.preventDefault();
53
+ e.stopPropagation();
54
+ downshift.selectItemAtIndex(previousIndexRef.current);
55
+ }
56
+ if (e.keyCode === NEXT_KEY) {
57
+ const nextItemIndexes = Object.values(nextItemsHashRef.current);
58
+ if (nextItemIndexes.includes(downshift.highlightedIndex)) {
59
+ e.preventDefault();
60
+ e.stopPropagation();
61
+ downshift.selectItemAtIndex(downshift.highlightedIndex);
62
+ }
63
+ }
64
+ } else if ((e.keyCode === KEY_CODES.ENTER || e.keyCode === KEY_CODES.SPACE) && !downshift.isOpen && dropdownType !== 'combobox') {
65
+ e.preventDefault();
66
+ e.stopPropagation();
67
+ downshift.openMenu();
68
+ }
69
+ }),
70
+ ...other
71
+ };
72
+ };
73
+ const transformDownshift = _ref2 => {
74
+ let {
75
+ getInputProps,
76
+ getToggleButtonProps,
77
+ ...downshift
78
+ } = _ref2;
79
+ return {
80
+ getInputProps: p => getInputProps(customGetInputProps(p, downshift)),
81
+ getToggleButtonProps: p => getToggleButtonProps({
82
+ 'aria-label': undefined,
83
+ ...p
84
+ }),
85
+ ...downshift
86
+ };
87
+ };
88
+ return React__default.createElement(Manager, null, React__default.createElement(Downshift, Object.assign({
89
+ suppressRefError: true
90
+ ,
91
+ isOpen: isOpen,
92
+ highlightedIndex: highlightedIndex,
93
+ selectedItem: selectedItem || null
94
+ ,
95
+ inputValue: inputValue,
96
+ onInputValueChange: (inputVal, stateAndHelpers) => {
97
+ if (onInputValueChange) {
98
+ if (stateAndHelpers.isOpen) {
99
+ onInputValueChange(inputVal, stateAndHelpers);
100
+ } else if (dropdownType === 'multiselect') {
101
+ onInputValueChange('', stateAndHelpers);
102
+ }
103
+ }
104
+ },
105
+ onStateChange: (changes, stateAndHelpers) => {
106
+ if (dropdownType === 'autocomplete' && changes.isOpen === false && !changes.selectedItem) {
107
+ onSelect && onSelect(selectedItem, stateAndHelpers);
108
+ }
109
+ if (Object.prototype.hasOwnProperty.call(changes, 'selectedItem') && changes.selectedItem !== null) {
110
+ if (selectedItems) {
111
+ const {
112
+ itemToString
113
+ } = stateAndHelpers;
114
+ const existingItemIndex = selectedItems.findIndex(item => {
115
+ return itemToString(item) === itemToString(changes.selectedItem);
116
+ });
117
+ const updatedSelectedItems = Array.from(selectedItems);
118
+ if (existingItemIndex === -1) {
119
+ updatedSelectedItems.splice(updatedSelectedItems.length, 0, changes.selectedItem);
120
+ } else {
121
+ updatedSelectedItems.splice(existingItemIndex, 1);
122
+ }
123
+ changes.selectedItems = updatedSelectedItems;
124
+ delete changes.selectedItem;
125
+ onSelect && onSelect(updatedSelectedItems, stateAndHelpers);
126
+ } else {
127
+ onSelect && onSelect(changes.selectedItem, stateAndHelpers);
128
+ }
129
+ if (dropdownType === 'multiselect') {
130
+ stateAndHelpers.setState({
131
+ inputValue: ''
132
+ });
133
+ }
134
+ }
135
+ onStateChange && onStateChange(changes, stateAndHelpers);
136
+ },
137
+ stateReducer: (_state, changes) => {
138
+ switch (changes.type) {
139
+ case Downshift.stateChangeTypes.changeInput:
140
+ if (changes.inputValue === '' && dropdownType === 'combobox') {
141
+ return {
142
+ ...changes,
143
+ isOpen: false
144
+ };
145
+ }
146
+ return changes;
147
+ default:
148
+ return changes;
149
+ }
150
+ }
151
+ }, downshiftProps), downshift => React__default.createElement(DropdownContext.Provider, {
152
+ value: {
153
+ hasMenuRef,
154
+ itemIndexRef,
155
+ previousItemRef,
156
+ previousIndexRef,
157
+ nextItemsHashRef,
158
+ popperReferenceElementRef,
159
+ selectedItems,
160
+ downshift: transformDownshift(downshift),
161
+ containsMultiselectRef,
162
+ itemSearchRegistry,
163
+ setDropdownType
164
+ }
165
+ }, children)));
166
+ };
167
+ Dropdown.propTypes = {
168
+ isOpen: PropTypes.bool,
169
+ selectedItem: PropTypes.any,
170
+ selectedItems: PropTypes.arrayOf(PropTypes.any),
171
+ highlightedIndex: PropTypes.number,
172
+ inputValue: PropTypes.string,
173
+ onSelect: PropTypes.func,
174
+ onStateChange: PropTypes.func,
175
+ downshiftProps: PropTypes.object
176
+ };
177
+
178
+ export { Dropdown, REMOVE_ITEM_STATE_TYPE };
@@ -0,0 +1,35 @@
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, useState, useMemo } from 'react';
8
+ import { mergeRefs } from 'react-merge-refs';
9
+ import { Field as Field$1 } from '@zendeskgarden/react-forms';
10
+ import useDropdownContext from '../../utils/useDropdownContext.js';
11
+ import { FieldContext } from '../../utils/useFieldContext.js';
12
+
13
+ const Field = forwardRef((props, fieldRef) => {
14
+ const {
15
+ downshift: {
16
+ getRootProps
17
+ }
18
+ } = useDropdownContext();
19
+ const [isLabelHovered, setIsLabelHovered] = useState(false);
20
+ const {
21
+ ref
22
+ } = getRootProps();
23
+ const value = useMemo(() => ({
24
+ isLabelHovered,
25
+ setIsLabelHovered
26
+ }), [isLabelHovered, setIsLabelHovered]);
27
+ return React__default.createElement(FieldContext.Provider, {
28
+ value: value
29
+ }, React__default.createElement(Field$1, Object.assign({
30
+ ref: mergeRefs([ref, fieldRef])
31
+ }, props)));
32
+ });
33
+ Field.displayName = 'Field';
34
+
35
+ export { Field };
@@ -0,0 +1,15 @@
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 { Hint as Hint$1 } from '@zendeskgarden/react-forms';
9
+
10
+ const Hint = React__default.forwardRef((props, ref) => React__default.createElement(Hint$1, Object.assign({
11
+ ref: ref
12
+ }, props)));
13
+ Hint.displayName = 'Hint';
14
+
15
+ export { Hint };
@@ -0,0 +1,46 @@
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 { composeEventHandlers } from '@zendeskgarden/container-utilities';
10
+ import { Label as Label$1 } from '@zendeskgarden/react-forms';
11
+ import useDropdownContext from '../../utils/useDropdownContext.js';
12
+ import useFieldContext from '../../utils/useFieldContext.js';
13
+
14
+ const Label = React__default.forwardRef((_ref, ref) => {
15
+ let {
16
+ onMouseEnter,
17
+ onMouseLeave,
18
+ ...other
19
+ } = _ref;
20
+ const {
21
+ downshift: {
22
+ getLabelProps
23
+ }
24
+ } = useDropdownContext();
25
+ const {
26
+ setIsLabelHovered
27
+ } = useFieldContext();
28
+ const labelProps = getLabelProps({
29
+ onMouseEnter: composeEventHandlers(onMouseEnter, () => {
30
+ setIsLabelHovered(true);
31
+ }),
32
+ onMouseLeave: composeEventHandlers(onMouseLeave, () => {
33
+ setIsLabelHovered(false);
34
+ }),
35
+ ...other
36
+ });
37
+ return React__default.createElement(Label$1, Object.assign({
38
+ ref: ref
39
+ }, labelProps));
40
+ });
41
+ Label.displayName = 'Label';
42
+ Label.propTypes = {
43
+ isRegular: PropTypes.bool
44
+ };
45
+
46
+ export { Label };
@@ -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
+ import React__default from 'react';
8
+ import PropTypes from 'prop-types';
9
+ import { Message as Message$1, VALIDATION } from '@zendeskgarden/react-forms';
10
+
11
+ const Message = React__default.forwardRef((props, ref) => React__default.createElement(Message$1, Object.assign({
12
+ ref: ref
13
+ }, props)));
14
+ Message.displayName = 'Message';
15
+ Message.propTypes = {
16
+ validation: PropTypes.oneOf(VALIDATION)
17
+ };
18
+
19
+ export { Message };
@@ -0,0 +1,66 @@
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 SvgPlusStroke from '../../../node_modules/@zendeskgarden/svg-icons/src/16/plus-stroke.svg.js';
10
+ import { Item } from './Item.js';
11
+ import '../../../styled/menu/StyledMenu.js';
12
+ import '../../../styled/menu/StyledMenuWrapper.js';
13
+ import '../../../styled/menu/StyledSeparator.js';
14
+ import { StyledAddItem } from '../../../styled/items/StyledAddItem.js';
15
+ import '../../../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 useMenuContext from '../../../utils/useMenuContext.js';
35
+
36
+ const AddItemComponent = 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(StyledAddItem, Object.assign({
46
+ ref: ref,
47
+ disabled: disabled
48
+ }, props), React__default.createElement(StyledItemIcon, {
49
+ isCompact: isCompact,
50
+ isVisible: true,
51
+ isDisabled: disabled
52
+ }, React__default.createElement(SvgPlusStroke, null)), children);
53
+ });
54
+ const AddItem = React__default.forwardRef((props, ref) => React__default.createElement(Item, Object.assign({
55
+ component: AddItemComponent,
56
+ ref: ref
57
+ }, props, {
58
+ hasIcon: true
59
+ })));
60
+ AddItem.displayName = 'AddItem';
61
+ AddItem.propTypes = {
62
+ value: PropTypes.any,
63
+ disabled: PropTypes.bool
64
+ };
65
+
66
+ export { AddItem };
@@ -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 { StyledHeaderIcon } from '../../../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
+
33
+ const HeaderIcon = React__default.forwardRef((props, ref) => {
34
+ const {
35
+ isCompact
36
+ } = useMenuContext();
37
+ return React__default.createElement(StyledHeaderIcon, Object.assign({
38
+ ref: ref,
39
+ isCompact: isCompact
40
+ }, props));
41
+ });
42
+ HeaderIcon.displayName = 'HeaderIcon';
43
+
44
+ export { HeaderIcon };