@zendeskgarden/react-forms 8.75.0 → 8.76.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 (119) hide show
  1. package/dist/esm/elements/Checkbox.js +101 -0
  2. package/dist/esm/elements/FileUpload.js +79 -0
  3. package/dist/esm/elements/Input.js +97 -0
  4. package/dist/esm/elements/MediaInput.js +160 -0
  5. package/dist/esm/elements/MultiThumbRange.js +166 -0
  6. package/dist/esm/elements/Radio.js +85 -0
  7. package/dist/esm/elements/Range.js +112 -0
  8. package/dist/esm/elements/Select.js +101 -0
  9. package/dist/esm/elements/Textarea.js +174 -0
  10. package/dist/esm/elements/Toggle.js +85 -0
  11. package/dist/esm/elements/common/Field.js +96 -0
  12. package/dist/esm/elements/common/Fieldset.js +77 -0
  13. package/dist/esm/elements/common/Hint.js +96 -0
  14. package/dist/esm/elements/common/Label.js +142 -0
  15. package/dist/esm/elements/common/Legend.js +67 -0
  16. package/dist/esm/elements/common/Message.js +117 -0
  17. package/dist/esm/elements/faux-input/FauxInput.js +104 -0
  18. package/dist/esm/elements/faux-input/components/EndIcon.js +63 -0
  19. package/dist/esm/elements/faux-input/components/StartIcon.js +63 -0
  20. package/dist/esm/elements/file-list/FileList.js +70 -0
  21. package/dist/esm/elements/file-list/components/Close.js +79 -0
  22. package/dist/esm/elements/file-list/components/Delete.js +79 -0
  23. package/dist/esm/elements/file-list/components/File.js +98 -0
  24. package/dist/esm/elements/file-list/components/Item.js +68 -0
  25. package/dist/esm/elements/file-list/utils.js +50 -0
  26. package/dist/esm/elements/input-group/InputGroup.js +79 -0
  27. package/dist/esm/elements/tiles/Tiles.js +64 -0
  28. package/dist/esm/elements/tiles/components/Description.js +68 -0
  29. package/dist/esm/elements/tiles/components/Icon.js +68 -0
  30. package/dist/esm/elements/tiles/components/Label.js +77 -0
  31. package/dist/esm/elements/tiles/components/Tile.js +95 -0
  32. package/dist/esm/index.js +27 -0
  33. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/check-circle-stroke.svg.js +33 -0
  34. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/check-sm-fill.svg.js +29 -0
  35. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/circle-sm-fill.svg.js +27 -0
  36. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/dash-fill.svg.js +27 -0
  37. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-document-stroke.svg.js +27 -0
  38. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-error-stroke.svg.js +27 -0
  39. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-generic-stroke.svg.js +26 -0
  40. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-image-stroke.svg.js +33 -0
  41. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-pdf-stroke.svg.js +35 -0
  42. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-presentation-stroke.svg.js +26 -0
  43. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-spreadsheet-stroke.svg.js +27 -0
  44. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/file-zip-stroke.svg.js +27 -0
  45. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/trash-stroke.svg.js +27 -0
  46. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/12/x-stroke.svg.js +26 -0
  47. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/alert-error-stroke.svg.js +37 -0
  48. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/alert-warning-stroke.svg.js +32 -0
  49. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/check-circle-stroke.svg.js +33 -0
  50. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/chevron-down-stroke.svg.js +25 -0
  51. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/circle-sm-fill.svg.js +27 -0
  52. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-document-stroke.svg.js +27 -0
  53. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-error-stroke.svg.js +27 -0
  54. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-generic-stroke.svg.js +26 -0
  55. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-image-stroke.svg.js +32 -0
  56. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-pdf-stroke.svg.js +35 -0
  57. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-presentation-stroke.svg.js +26 -0
  58. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-spreadsheet-stroke.svg.js +27 -0
  59. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/file-zip-stroke.svg.js +27 -0
  60. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/trash-stroke.svg.js +27 -0
  61. package/dist/esm/node_modules/@zendeskgarden/svg-icons/src/16/x-stroke.svg.js +26 -0
  62. package/dist/esm/styled/checkbox/StyledCheckHint.js +23 -0
  63. package/dist/esm/styled/checkbox/StyledCheckInput.js +34 -0
  64. package/dist/esm/styled/checkbox/StyledCheckLabel.js +23 -0
  65. package/dist/esm/styled/checkbox/StyledCheckMessage.js +23 -0
  66. package/dist/esm/styled/checkbox/StyledCheckSvg.js +25 -0
  67. package/dist/esm/styled/checkbox/StyledDashSvg.js +25 -0
  68. package/dist/esm/styled/common/StyledField.js +22 -0
  69. package/dist/esm/styled/common/StyledFieldset.js +24 -0
  70. package/dist/esm/styled/common/StyledHint.js +22 -0
  71. package/dist/esm/styled/common/StyledLabel.js +23 -0
  72. package/dist/esm/styled/common/StyledLegend.js +24 -0
  73. package/dist/esm/styled/common/StyledMessage.js +40 -0
  74. package/dist/esm/styled/common/StyledMessageIcon.js +45 -0
  75. package/dist/esm/styled/file-list/StyledFile.js +74 -0
  76. package/dist/esm/styled/file-list/StyledFileClose.js +22 -0
  77. package/dist/esm/styled/file-list/StyledFileDelete.js +23 -0
  78. package/dist/esm/styled/file-list/StyledFileIcon.js +31 -0
  79. package/dist/esm/styled/file-list/StyledFileList.js +22 -0
  80. package/dist/esm/styled/file-list/StyledFileListItem.js +24 -0
  81. package/dist/esm/styled/file-upload/StyledFileUpload.js +45 -0
  82. package/dist/esm/styled/input-group/StyledInputGroup.js +35 -0
  83. package/dist/esm/styled/radio/StyledRadioHint.js +24 -0
  84. package/dist/esm/styled/radio/StyledRadioInput.js +61 -0
  85. package/dist/esm/styled/radio/StyledRadioLabel.js +30 -0
  86. package/dist/esm/styled/radio/StyledRadioMessage.js +24 -0
  87. package/dist/esm/styled/radio/StyledRadioSvg.js +25 -0
  88. package/dist/esm/styled/range/StyledRangeInput.js +160 -0
  89. package/dist/esm/styled/range/StyledSlider.js +26 -0
  90. package/dist/esm/styled/range/StyledSliderThumb.js +45 -0
  91. package/dist/esm/styled/range/StyledSliderTrack.js +42 -0
  92. package/dist/esm/styled/range/StyledSliderTrackRail.js +28 -0
  93. package/dist/esm/styled/select/StyledSelect.js +36 -0
  94. package/dist/esm/styled/select/StyledSelectWrapper.js +24 -0
  95. package/dist/esm/styled/text/StyledTextFauxInput.js +59 -0
  96. package/dist/esm/styled/text/StyledTextInput.js +105 -0
  97. package/dist/esm/styled/text/StyledTextMediaFigure.js +57 -0
  98. package/dist/esm/styled/text/StyledTextMediaInput.js +24 -0
  99. package/dist/esm/styled/text/StyledTextarea.js +33 -0
  100. package/dist/esm/styled/tiles/StyledTile.js +53 -0
  101. package/dist/esm/styled/tiles/StyledTileDescription.js +34 -0
  102. package/dist/esm/styled/tiles/StyledTileIcon.js +38 -0
  103. package/dist/esm/styled/tiles/StyledTileInput.js +18 -0
  104. package/dist/esm/styled/tiles/StyledTileLabel.js +36 -0
  105. package/dist/esm/styled/toggle/StyledToggleHint.js +24 -0
  106. package/dist/esm/styled/toggle/StyledToggleInput.js +40 -0
  107. package/dist/esm/styled/toggle/StyledToggleLabel.js +28 -0
  108. package/dist/esm/styled/toggle/StyledToggleMessage.js +25 -0
  109. package/dist/esm/styled/toggle/StyledToggleSvg.js +23 -0
  110. package/dist/esm/types/index.js +11 -0
  111. package/dist/esm/utils/useFieldContext.js +15 -0
  112. package/dist/esm/utils/useFieldsetContext.js +15 -0
  113. package/dist/esm/utils/useFileContext.js +14 -0
  114. package/dist/esm/utils/useInputContext.js +14 -0
  115. package/dist/esm/utils/useInputGroupContext.js +14 -0
  116. package/dist/esm/utils/useTilesContext.js +14 -0
  117. package/dist/index.cjs.js +83 -99
  118. package/package.json +5 -5
  119. package/dist/index.esm.js +0 -2921
@@ -0,0 +1,85 @@
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 useFieldContext from '../utils/useFieldContext.js';
10
+ import { InputContext } from '../utils/useInputContext.js';
11
+ import '../styled/common/StyledField.js';
12
+ import '../styled/common/StyledFieldset.js';
13
+ import '../styled/common/StyledLegend.js';
14
+ import '../styled/common/StyledHint.js';
15
+ import '../styled/common/StyledLabel.js';
16
+ import '../styled/common/StyledMessage.js';
17
+ import '../styled/common/StyledMessageIcon.js';
18
+ import '../styled/text/StyledTextInput.js';
19
+ import '../styled/text/StyledTextarea.js';
20
+ import '../styled/text/StyledTextFauxInput.js';
21
+ import '../styled/text/StyledTextMediaInput.js';
22
+ import '../styled/text/StyledTextMediaFigure.js';
23
+ import '../styled/input-group/StyledInputGroup.js';
24
+ import '../styled/checkbox/StyledCheckLabel.js';
25
+ import '../styled/checkbox/StyledCheckHint.js';
26
+ import '../styled/checkbox/StyledCheckInput.js';
27
+ import '../styled/checkbox/StyledCheckMessage.js';
28
+ import '../styled/checkbox/StyledCheckSvg.js';
29
+ import '../styled/checkbox/StyledDashSvg.js';
30
+ import '../styled/file-upload/StyledFileUpload.js';
31
+ import '../styled/file-list/StyledFile.js';
32
+ import '../styled/file-list/StyledFileClose.js';
33
+ import '../styled/file-list/StyledFileDelete.js';
34
+ import '../styled/file-list/StyledFileIcon.js';
35
+ import '../styled/file-list/StyledFileList.js';
36
+ import '../styled/file-list/StyledFileListItem.js';
37
+ import '../styled/radio/StyledRadioLabel.js';
38
+ import '../styled/radio/StyledRadioHint.js';
39
+ import { StyledRadioInput } from '../styled/radio/StyledRadioInput.js';
40
+ import '../styled/radio/StyledRadioMessage.js';
41
+ import '../styled/radio/StyledRadioSvg.js';
42
+ import '../styled/toggle/StyledToggleLabel.js';
43
+ import '../styled/toggle/StyledToggleHint.js';
44
+ import '../styled/toggle/StyledToggleInput.js';
45
+ import '../styled/toggle/StyledToggleMessage.js';
46
+ import '../styled/toggle/StyledToggleSvg.js';
47
+ import '../styled/select/StyledSelect.js';
48
+ import '../styled/select/StyledSelectWrapper.js';
49
+ import '../styled/range/StyledRangeInput.js';
50
+ import '../styled/range/StyledSlider.js';
51
+ import '../styled/range/StyledSliderThumb.js';
52
+ import '../styled/range/StyledSliderTrack.js';
53
+ import '../styled/range/StyledSliderTrackRail.js';
54
+ import '../styled/tiles/StyledTile.js';
55
+ import '../styled/tiles/StyledTileDescription.js';
56
+ import '../styled/tiles/StyledTileIcon.js';
57
+ import '../styled/tiles/StyledTileInput.js';
58
+ import '../styled/tiles/StyledTileLabel.js';
59
+ import useFieldsetContext from '../utils/useFieldsetContext.js';
60
+
61
+ const Radio = React__default.forwardRef((_ref, ref) => {
62
+ let {
63
+ children,
64
+ ...props
65
+ } = _ref;
66
+ const fieldsetContext = useFieldsetContext();
67
+ const fieldContext = useFieldContext();
68
+ let combinedProps = {
69
+ ref,
70
+ ...props,
71
+ ...fieldsetContext
72
+ };
73
+ if (fieldContext) {
74
+ combinedProps = fieldContext.getInputProps(combinedProps);
75
+ }
76
+ return React__default.createElement(InputContext.Provider, {
77
+ value: "radio"
78
+ }, React__default.createElement(StyledRadioInput, combinedProps), children);
79
+ });
80
+ Radio.displayName = 'Radio';
81
+ Radio.propTypes = {
82
+ isCompact: PropTypes.bool
83
+ };
84
+
85
+ export { Radio };
@@ -0,0 +1,112 @@
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, { useState, useRef, useCallback, useEffect } from 'react';
8
+ import { composeEventHandlers } from '@zendeskgarden/container-utilities';
9
+ import mergeRefs from 'react-merge-refs';
10
+ import useFieldContext from '../utils/useFieldContext.js';
11
+ import '../styled/common/StyledField.js';
12
+ import '../styled/common/StyledFieldset.js';
13
+ import '../styled/common/StyledLegend.js';
14
+ import '../styled/common/StyledHint.js';
15
+ import '../styled/common/StyledLabel.js';
16
+ import '../styled/common/StyledMessage.js';
17
+ import '../styled/common/StyledMessageIcon.js';
18
+ import '../styled/text/StyledTextInput.js';
19
+ import '../styled/text/StyledTextarea.js';
20
+ import '../styled/text/StyledTextFauxInput.js';
21
+ import '../styled/text/StyledTextMediaInput.js';
22
+ import '../styled/text/StyledTextMediaFigure.js';
23
+ import '../styled/input-group/StyledInputGroup.js';
24
+ import '../styled/checkbox/StyledCheckLabel.js';
25
+ import '../styled/checkbox/StyledCheckHint.js';
26
+ import '../styled/checkbox/StyledCheckInput.js';
27
+ import '../styled/checkbox/StyledCheckMessage.js';
28
+ import '../styled/checkbox/StyledCheckSvg.js';
29
+ import '../styled/checkbox/StyledDashSvg.js';
30
+ import '../styled/file-upload/StyledFileUpload.js';
31
+ import '../styled/file-list/StyledFile.js';
32
+ import '../styled/file-list/StyledFileClose.js';
33
+ import '../styled/file-list/StyledFileDelete.js';
34
+ import '../styled/file-list/StyledFileIcon.js';
35
+ import '../styled/file-list/StyledFileList.js';
36
+ import '../styled/file-list/StyledFileListItem.js';
37
+ import '../styled/radio/StyledRadioLabel.js';
38
+ import '../styled/radio/StyledRadioHint.js';
39
+ import '../styled/radio/StyledRadioInput.js';
40
+ import '../styled/radio/StyledRadioMessage.js';
41
+ import '../styled/radio/StyledRadioSvg.js';
42
+ import '../styled/toggle/StyledToggleLabel.js';
43
+ import '../styled/toggle/StyledToggleHint.js';
44
+ import '../styled/toggle/StyledToggleInput.js';
45
+ import '../styled/toggle/StyledToggleMessage.js';
46
+ import '../styled/toggle/StyledToggleSvg.js';
47
+ import '../styled/select/StyledSelect.js';
48
+ import '../styled/select/StyledSelectWrapper.js';
49
+ import { StyledRangeInput } from '../styled/range/StyledRangeInput.js';
50
+ import '../styled/range/StyledSlider.js';
51
+ import '../styled/range/StyledSliderThumb.js';
52
+ import '../styled/range/StyledSliderTrack.js';
53
+ import '../styled/range/StyledSliderTrackRail.js';
54
+ import '../styled/tiles/StyledTile.js';
55
+ import '../styled/tiles/StyledTileDescription.js';
56
+ import '../styled/tiles/StyledTileIcon.js';
57
+ import '../styled/tiles/StyledTileInput.js';
58
+ import '../styled/tiles/StyledTileLabel.js';
59
+
60
+ const Range = React__default.forwardRef((_ref, ref) => {
61
+ let {
62
+ hasLowerTrack,
63
+ min,
64
+ max,
65
+ step,
66
+ ...props
67
+ } = _ref;
68
+ const [backgroundSize, setBackgroundSize] = useState('0');
69
+ const rangeRef = useRef();
70
+ const fieldContext = useFieldContext();
71
+ const updateBackgroundWidthFromInput = useCallback(rangeTarget => {
72
+ let relativeMax = max;
73
+ const {
74
+ value
75
+ } = rangeTarget;
76
+ if (parseFloat(relativeMax) < parseFloat(min)) {
77
+ relativeMax = 100;
78
+ }
79
+ const percentage = 100 * (value - min) / (relativeMax - min);
80
+ setBackgroundSize(`${percentage}%`);
81
+ },
82
+ [max, min, step]);
83
+ useEffect(() => {
84
+ updateBackgroundWidthFromInput(rangeRef.current);
85
+ }, [rangeRef, updateBackgroundWidthFromInput, props.value]);
86
+ const onChange = hasLowerTrack ? composeEventHandlers(props.onChange, event => {
87
+ updateBackgroundWidthFromInput(event.target);
88
+ }) : props.onChange;
89
+ let combinedProps = {
90
+ ref: mergeRefs([rangeRef, ref]),
91
+ hasLowerTrack,
92
+ min,
93
+ max,
94
+ step,
95
+ backgroundSize,
96
+ ...props,
97
+ onChange
98
+ };
99
+ if (fieldContext) {
100
+ combinedProps = fieldContext.getInputProps(combinedProps);
101
+ }
102
+ return React__default.createElement(StyledRangeInput, combinedProps);
103
+ });
104
+ Range.defaultProps = {
105
+ hasLowerTrack: true,
106
+ min: 0,
107
+ max: 100,
108
+ step: 1
109
+ };
110
+ Range.displayName = 'Range';
111
+
112
+ export { Range };
@@ -0,0 +1,101 @@
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 SvgChevronDownStroke from '../node_modules/@zendeskgarden/svg-icons/src/16/chevron-down-stroke.svg.js';
10
+ import { VALIDATION } from '../types/index.js';
11
+ import '../styled/common/StyledField.js';
12
+ import '../styled/common/StyledFieldset.js';
13
+ import '../styled/common/StyledLegend.js';
14
+ import '../styled/common/StyledHint.js';
15
+ import '../styled/common/StyledLabel.js';
16
+ import '../styled/common/StyledMessage.js';
17
+ import '../styled/common/StyledMessageIcon.js';
18
+ import '../styled/text/StyledTextInput.js';
19
+ import '../styled/text/StyledTextarea.js';
20
+ import '../styled/text/StyledTextFauxInput.js';
21
+ import '../styled/text/StyledTextMediaInput.js';
22
+ import '../styled/text/StyledTextMediaFigure.js';
23
+ import '../styled/input-group/StyledInputGroup.js';
24
+ import '../styled/checkbox/StyledCheckLabel.js';
25
+ import '../styled/checkbox/StyledCheckHint.js';
26
+ import '../styled/checkbox/StyledCheckInput.js';
27
+ import '../styled/checkbox/StyledCheckMessage.js';
28
+ import '../styled/checkbox/StyledCheckSvg.js';
29
+ import '../styled/checkbox/StyledDashSvg.js';
30
+ import '../styled/file-upload/StyledFileUpload.js';
31
+ import '../styled/file-list/StyledFile.js';
32
+ import '../styled/file-list/StyledFileClose.js';
33
+ import '../styled/file-list/StyledFileDelete.js';
34
+ import '../styled/file-list/StyledFileIcon.js';
35
+ import '../styled/file-list/StyledFileList.js';
36
+ import '../styled/file-list/StyledFileListItem.js';
37
+ import '../styled/radio/StyledRadioLabel.js';
38
+ import '../styled/radio/StyledRadioHint.js';
39
+ import '../styled/radio/StyledRadioInput.js';
40
+ import '../styled/radio/StyledRadioMessage.js';
41
+ import '../styled/radio/StyledRadioSvg.js';
42
+ import '../styled/toggle/StyledToggleLabel.js';
43
+ import '../styled/toggle/StyledToggleHint.js';
44
+ import '../styled/toggle/StyledToggleInput.js';
45
+ import '../styled/toggle/StyledToggleMessage.js';
46
+ import '../styled/toggle/StyledToggleSvg.js';
47
+ import { StyledSelect } from '../styled/select/StyledSelect.js';
48
+ import { StyledSelectWrapper } from '../styled/select/StyledSelectWrapper.js';
49
+ import '../styled/range/StyledRangeInput.js';
50
+ import '../styled/range/StyledSlider.js';
51
+ import '../styled/range/StyledSliderThumb.js';
52
+ import '../styled/range/StyledSliderTrack.js';
53
+ import '../styled/range/StyledSliderTrackRail.js';
54
+ import '../styled/tiles/StyledTile.js';
55
+ import '../styled/tiles/StyledTileDescription.js';
56
+ import '../styled/tiles/StyledTileIcon.js';
57
+ import '../styled/tiles/StyledTileInput.js';
58
+ import '../styled/tiles/StyledTileLabel.js';
59
+ import { FauxInput } from './faux-input/FauxInput.js';
60
+ import useFieldContext from '../utils/useFieldContext.js';
61
+
62
+ const Select = React__default.forwardRef((_ref, ref) => {
63
+ let {
64
+ disabled,
65
+ isCompact,
66
+ validation,
67
+ focusInset,
68
+ isBare,
69
+ ...props
70
+ } = _ref;
71
+ const fieldContext = useFieldContext();
72
+ let combinedProps = {
73
+ disabled,
74
+ isBare,
75
+ isCompact,
76
+ validation,
77
+ focusInset,
78
+ ref,
79
+ ...props
80
+ };
81
+ if (fieldContext) {
82
+ combinedProps = fieldContext.getInputProps(combinedProps);
83
+ }
84
+ return React__default.createElement(StyledSelectWrapper, {
85
+ isCompact: isCompact,
86
+ isBare: isBare,
87
+ validation: validation,
88
+ focusInset: focusInset
89
+ }, React__default.createElement(StyledSelect, combinedProps), !isBare && React__default.createElement(FauxInput.EndIcon, {
90
+ isDisabled: disabled
91
+ }, React__default.createElement(SvgChevronDownStroke, null)));
92
+ });
93
+ Select.propTypes = {
94
+ isCompact: PropTypes.bool,
95
+ isBare: PropTypes.bool,
96
+ focusInset: PropTypes.bool,
97
+ validation: PropTypes.oneOf(VALIDATION)
98
+ };
99
+ Select.displayName = 'Select';
100
+
101
+ export { Select };
@@ -0,0 +1,174 @@
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, useCallback, useLayoutEffect } from 'react';
8
+ import PropTypes from 'prop-types';
9
+ import { composeEventHandlers } from '@zendeskgarden/container-utilities';
10
+ import mergeRefs from 'react-merge-refs';
11
+ import { VALIDATION } from '../types/index.js';
12
+ import useFieldContext from '../utils/useFieldContext.js';
13
+ import '../styled/common/StyledField.js';
14
+ import '../styled/common/StyledFieldset.js';
15
+ import '../styled/common/StyledLegend.js';
16
+ import '../styled/common/StyledHint.js';
17
+ import '../styled/common/StyledLabel.js';
18
+ import '../styled/common/StyledMessage.js';
19
+ import '../styled/common/StyledMessageIcon.js';
20
+ import '../styled/text/StyledTextInput.js';
21
+ import { StyledTextarea } from '../styled/text/StyledTextarea.js';
22
+ import '../styled/text/StyledTextFauxInput.js';
23
+ import '../styled/text/StyledTextMediaInput.js';
24
+ import '../styled/text/StyledTextMediaFigure.js';
25
+ import '../styled/input-group/StyledInputGroup.js';
26
+ import '../styled/checkbox/StyledCheckLabel.js';
27
+ import '../styled/checkbox/StyledCheckHint.js';
28
+ import '../styled/checkbox/StyledCheckInput.js';
29
+ import '../styled/checkbox/StyledCheckMessage.js';
30
+ import '../styled/checkbox/StyledCheckSvg.js';
31
+ import '../styled/checkbox/StyledDashSvg.js';
32
+ import '../styled/file-upload/StyledFileUpload.js';
33
+ import '../styled/file-list/StyledFile.js';
34
+ import '../styled/file-list/StyledFileClose.js';
35
+ import '../styled/file-list/StyledFileDelete.js';
36
+ import '../styled/file-list/StyledFileIcon.js';
37
+ import '../styled/file-list/StyledFileList.js';
38
+ import '../styled/file-list/StyledFileListItem.js';
39
+ import '../styled/radio/StyledRadioLabel.js';
40
+ import '../styled/radio/StyledRadioHint.js';
41
+ import '../styled/radio/StyledRadioInput.js';
42
+ import '../styled/radio/StyledRadioMessage.js';
43
+ import '../styled/radio/StyledRadioSvg.js';
44
+ import '../styled/toggle/StyledToggleLabel.js';
45
+ import '../styled/toggle/StyledToggleHint.js';
46
+ import '../styled/toggle/StyledToggleInput.js';
47
+ import '../styled/toggle/StyledToggleMessage.js';
48
+ import '../styled/toggle/StyledToggleSvg.js';
49
+ import '../styled/select/StyledSelect.js';
50
+ import '../styled/select/StyledSelectWrapper.js';
51
+ import '../styled/range/StyledRangeInput.js';
52
+ import '../styled/range/StyledSlider.js';
53
+ import '../styled/range/StyledSliderThumb.js';
54
+ import '../styled/range/StyledSliderTrack.js';
55
+ import '../styled/range/StyledSliderTrackRail.js';
56
+ import '../styled/tiles/StyledTile.js';
57
+ import '../styled/tiles/StyledTileDescription.js';
58
+ import '../styled/tiles/StyledTileIcon.js';
59
+ import '../styled/tiles/StyledTileInput.js';
60
+ import '../styled/tiles/StyledTileLabel.js';
61
+
62
+ const parseStyleValue = value => {
63
+ return parseInt(value, 10) || 0;
64
+ };
65
+ const Textarea = React__default.forwardRef((_ref, ref) => {
66
+ let {
67
+ minRows,
68
+ maxRows,
69
+ style,
70
+ onChange,
71
+ onSelect,
72
+ ...props
73
+ } = _ref;
74
+ const fieldContext = useFieldContext();
75
+ const textAreaRef = useRef();
76
+ const shadowTextAreaRef = useRef(null);
77
+ const [state, setState] = useState({
78
+ overflow: false,
79
+ height: 0
80
+ });
81
+ const isControlled = props.value !== null && props.value !== undefined;
82
+ const isAutoResizable = (minRows !== undefined || maxRows !== undefined) && !props.isResizable;
83
+ const calculateHeight = useCallback(() => {
84
+ if (!isAutoResizable) {
85
+ return;
86
+ }
87
+ const textarea = textAreaRef.current;
88
+ const computedStyle = window.getComputedStyle(textarea);
89
+ const shadowTextArea = shadowTextAreaRef.current;
90
+ shadowTextArea.style.width = computedStyle.width;
91
+ shadowTextArea.value = textarea.value || textarea.placeholder || ' ';
92
+ const boxSizing = computedStyle.boxSizing;
93
+ const padding = parseStyleValue(computedStyle.paddingBottom) + parseStyleValue(computedStyle.paddingTop);
94
+ const border = parseStyleValue(computedStyle.borderTopWidth) + parseStyleValue(computedStyle.borderBottomWidth);
95
+ const innerHeight = shadowTextArea.scrollHeight - padding;
96
+ shadowTextArea.value = 'x';
97
+ const singleRowHeight = shadowTextArea.scrollHeight - padding;
98
+ let outerHeight = innerHeight;
99
+ if (minRows) {
100
+ outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);
101
+ }
102
+ if (maxRows) {
103
+ outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);
104
+ }
105
+ outerHeight = Math.max(outerHeight, singleRowHeight);
106
+ const updatedHeight = outerHeight + (boxSizing === 'border-box' ? padding + border : 0);
107
+ const overflow = Math.abs(outerHeight - innerHeight) <= 1;
108
+ setState(prevState => {
109
+ if (updatedHeight > 0 && Math.abs((prevState.height || 0) - updatedHeight) > 1 || prevState.overflow !== overflow) {
110
+ return {
111
+ overflow,
112
+ height: updatedHeight
113
+ };
114
+ }
115
+ return prevState;
116
+ });
117
+ }, [maxRows, minRows, textAreaRef, isAutoResizable]);
118
+ const onChangeHandler = useCallback(e => {
119
+ if (!isControlled) {
120
+ calculateHeight();
121
+ }
122
+ if (onChange) {
123
+ onChange(e);
124
+ }
125
+ }, [calculateHeight, isControlled, onChange]);
126
+ useLayoutEffect(() => {
127
+ calculateHeight();
128
+ });
129
+ const computedStyle = {};
130
+ if (isAutoResizable) {
131
+ computedStyle.height = state.height;
132
+ computedStyle.overflow = state.overflow ? 'hidden' : undefined;
133
+ }
134
+ const onSelectHandler = props.readOnly ? composeEventHandlers(onSelect, event => {
135
+ event.currentTarget.select();
136
+ }) : onSelect;
137
+ let combinedProps = {
138
+ ref: mergeRefs([textAreaRef, ref]),
139
+ rows: minRows,
140
+ onChange: onChangeHandler,
141
+ onSelect: onSelectHandler,
142
+ style: {
143
+ ...computedStyle,
144
+ ...style
145
+ },
146
+ ...props
147
+ };
148
+ if (fieldContext) {
149
+ combinedProps = fieldContext.getInputProps(combinedProps);
150
+ }
151
+ return React__default.createElement(React__default.Fragment, null, React__default.createElement(StyledTextarea, combinedProps), isAutoResizable && React__default.createElement(StyledTextarea, {
152
+ "aria-hidden": true,
153
+ readOnly: true,
154
+ isHidden: true,
155
+ className: props.className,
156
+ ref: shadowTextAreaRef,
157
+ tabIndex: -1,
158
+ isBare: props.isBare,
159
+ isCompact: props.isCompact,
160
+ style: style
161
+ }));
162
+ });
163
+ Textarea.propTypes = {
164
+ isCompact: PropTypes.bool,
165
+ isBare: PropTypes.bool,
166
+ focusInset: PropTypes.bool,
167
+ isResizable: PropTypes.bool,
168
+ minRows: PropTypes.number,
169
+ maxRows: PropTypes.number,
170
+ validation: PropTypes.oneOf(VALIDATION)
171
+ };
172
+ Textarea.displayName = 'Textarea';
173
+
174
+ export { Textarea };
@@ -0,0 +1,85 @@
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 useFieldContext from '../utils/useFieldContext.js';
10
+ import { InputContext } from '../utils/useInputContext.js';
11
+ import '../styled/common/StyledField.js';
12
+ import '../styled/common/StyledFieldset.js';
13
+ import '../styled/common/StyledLegend.js';
14
+ import '../styled/common/StyledHint.js';
15
+ import '../styled/common/StyledLabel.js';
16
+ import '../styled/common/StyledMessage.js';
17
+ import '../styled/common/StyledMessageIcon.js';
18
+ import '../styled/text/StyledTextInput.js';
19
+ import '../styled/text/StyledTextarea.js';
20
+ import '../styled/text/StyledTextFauxInput.js';
21
+ import '../styled/text/StyledTextMediaInput.js';
22
+ import '../styled/text/StyledTextMediaFigure.js';
23
+ import '../styled/input-group/StyledInputGroup.js';
24
+ import '../styled/checkbox/StyledCheckLabel.js';
25
+ import '../styled/checkbox/StyledCheckHint.js';
26
+ import '../styled/checkbox/StyledCheckInput.js';
27
+ import '../styled/checkbox/StyledCheckMessage.js';
28
+ import '../styled/checkbox/StyledCheckSvg.js';
29
+ import '../styled/checkbox/StyledDashSvg.js';
30
+ import '../styled/file-upload/StyledFileUpload.js';
31
+ import '../styled/file-list/StyledFile.js';
32
+ import '../styled/file-list/StyledFileClose.js';
33
+ import '../styled/file-list/StyledFileDelete.js';
34
+ import '../styled/file-list/StyledFileIcon.js';
35
+ import '../styled/file-list/StyledFileList.js';
36
+ import '../styled/file-list/StyledFileListItem.js';
37
+ import '../styled/radio/StyledRadioLabel.js';
38
+ import '../styled/radio/StyledRadioHint.js';
39
+ import '../styled/radio/StyledRadioInput.js';
40
+ import '../styled/radio/StyledRadioMessage.js';
41
+ import '../styled/radio/StyledRadioSvg.js';
42
+ import '../styled/toggle/StyledToggleLabel.js';
43
+ import '../styled/toggle/StyledToggleHint.js';
44
+ import { StyledToggleInput } from '../styled/toggle/StyledToggleInput.js';
45
+ import '../styled/toggle/StyledToggleMessage.js';
46
+ import '../styled/toggle/StyledToggleSvg.js';
47
+ import '../styled/select/StyledSelect.js';
48
+ import '../styled/select/StyledSelectWrapper.js';
49
+ import '../styled/range/StyledRangeInput.js';
50
+ import '../styled/range/StyledSlider.js';
51
+ import '../styled/range/StyledSliderThumb.js';
52
+ import '../styled/range/StyledSliderTrack.js';
53
+ import '../styled/range/StyledSliderTrackRail.js';
54
+ import '../styled/tiles/StyledTile.js';
55
+ import '../styled/tiles/StyledTileDescription.js';
56
+ import '../styled/tiles/StyledTileIcon.js';
57
+ import '../styled/tiles/StyledTileInput.js';
58
+ import '../styled/tiles/StyledTileLabel.js';
59
+ import useFieldsetContext from '../utils/useFieldsetContext.js';
60
+
61
+ const Toggle = React__default.forwardRef((_ref, ref) => {
62
+ let {
63
+ children,
64
+ ...props
65
+ } = _ref;
66
+ const fieldsetContext = useFieldsetContext();
67
+ const fieldContext = useFieldContext();
68
+ let combinedProps = {
69
+ ref,
70
+ ...props,
71
+ ...fieldsetContext
72
+ };
73
+ if (fieldContext) {
74
+ combinedProps = fieldContext.getInputProps(combinedProps);
75
+ }
76
+ return React__default.createElement(InputContext.Provider, {
77
+ value: "toggle"
78
+ }, React__default.createElement(StyledToggleInput, combinedProps), children);
79
+ });
80
+ Toggle.displayName = 'Toggle';
81
+ Toggle.propTypes = {
82
+ isCompact: PropTypes.bool
83
+ };
84
+
85
+ export { Toggle };
@@ -0,0 +1,96 @@
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, { useState, useRef, useMemo } from 'react';
8
+ import { useField } from '@zendeskgarden/container-field';
9
+ import { FieldContext } from '../../utils/useFieldContext.js';
10
+ import { StyledField } from '../../styled/common/StyledField.js';
11
+ import '../../styled/common/StyledFieldset.js';
12
+ import '../../styled/common/StyledLegend.js';
13
+ import '../../styled/common/StyledHint.js';
14
+ import '../../styled/common/StyledLabel.js';
15
+ import '../../styled/common/StyledMessage.js';
16
+ import '../../styled/common/StyledMessageIcon.js';
17
+ import '../../styled/text/StyledTextInput.js';
18
+ import '../../styled/text/StyledTextarea.js';
19
+ import '../../styled/text/StyledTextFauxInput.js';
20
+ import '../../styled/text/StyledTextMediaInput.js';
21
+ import '../../styled/text/StyledTextMediaFigure.js';
22
+ import '../../styled/input-group/StyledInputGroup.js';
23
+ import '../../styled/checkbox/StyledCheckLabel.js';
24
+ import '../../styled/checkbox/StyledCheckHint.js';
25
+ import '../../styled/checkbox/StyledCheckInput.js';
26
+ import '../../styled/checkbox/StyledCheckMessage.js';
27
+ import '../../styled/checkbox/StyledCheckSvg.js';
28
+ import '../../styled/checkbox/StyledDashSvg.js';
29
+ import '../../styled/file-upload/StyledFileUpload.js';
30
+ import '../../styled/file-list/StyledFile.js';
31
+ import '../../styled/file-list/StyledFileClose.js';
32
+ import '../../styled/file-list/StyledFileDelete.js';
33
+ import '../../styled/file-list/StyledFileIcon.js';
34
+ import '../../styled/file-list/StyledFileList.js';
35
+ import '../../styled/file-list/StyledFileListItem.js';
36
+ import '../../styled/radio/StyledRadioLabel.js';
37
+ import '../../styled/radio/StyledRadioHint.js';
38
+ import '../../styled/radio/StyledRadioInput.js';
39
+ import '../../styled/radio/StyledRadioMessage.js';
40
+ import '../../styled/radio/StyledRadioSvg.js';
41
+ import '../../styled/toggle/StyledToggleLabel.js';
42
+ import '../../styled/toggle/StyledToggleHint.js';
43
+ import '../../styled/toggle/StyledToggleInput.js';
44
+ import '../../styled/toggle/StyledToggleMessage.js';
45
+ import '../../styled/toggle/StyledToggleSvg.js';
46
+ import '../../styled/select/StyledSelect.js';
47
+ import '../../styled/select/StyledSelectWrapper.js';
48
+ import '../../styled/range/StyledRangeInput.js';
49
+ import '../../styled/range/StyledSlider.js';
50
+ import '../../styled/range/StyledSliderThumb.js';
51
+ import '../../styled/range/StyledSliderTrack.js';
52
+ import '../../styled/range/StyledSliderTrackRail.js';
53
+ import '../../styled/tiles/StyledTile.js';
54
+ import '../../styled/tiles/StyledTileDescription.js';
55
+ import '../../styled/tiles/StyledTileIcon.js';
56
+ import '../../styled/tiles/StyledTileInput.js';
57
+ import '../../styled/tiles/StyledTileLabel.js';
58
+
59
+ const Field = React__default.forwardRef((props, ref) => {
60
+ const [hasHint, setHasHint] = useState(false);
61
+ const [hasMessage, setHasMessage] = useState(false);
62
+ const [isLabelActive, setIsLabelActive] = useState(false);
63
+ const [isLabelHovered, setIsLabelHovered] = useState(false);
64
+ const multiThumbRangeRef = useRef(null);
65
+ const {
66
+ getInputProps,
67
+ getMessageProps,
68
+ ...propGetters
69
+ } = useField({
70
+ idPrefix: props.id,
71
+ hasHint,
72
+ hasMessage
73
+ });
74
+ const fieldProps = useMemo(() => ({
75
+ ...propGetters,
76
+ getInputProps,
77
+ getMessageProps,
78
+ isLabelActive,
79
+ setIsLabelActive,
80
+ isLabelHovered,
81
+ setIsLabelHovered,
82
+ hasHint,
83
+ setHasHint,
84
+ hasMessage,
85
+ setHasMessage,
86
+ multiThumbRangeRef
87
+ }), [propGetters, getInputProps, getMessageProps, isLabelActive, isLabelHovered, hasHint, hasMessage]);
88
+ return React__default.createElement(FieldContext.Provider, {
89
+ value: fieldProps
90
+ }, React__default.createElement(StyledField, Object.assign({}, props, {
91
+ ref: ref
92
+ })));
93
+ });
94
+ Field.displayName = 'Field';
95
+
96
+ export { Field };