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