@zendeskgarden/react-forms 8.75.1 → 8.76.1
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 +101 -0
- package/dist/esm/elements/FileUpload.js +79 -0
- package/dist/esm/elements/Input.js +97 -0
- package/dist/esm/elements/MediaInput.js +160 -0
- package/dist/esm/elements/MultiThumbRange.js +166 -0
- package/dist/esm/elements/Radio.js +85 -0
- package/dist/esm/elements/Range.js +112 -0
- package/dist/esm/elements/Select.js +101 -0
- package/dist/esm/elements/Textarea.js +174 -0
- package/dist/esm/elements/Toggle.js +85 -0
- package/dist/esm/elements/common/Field.js +96 -0
- package/dist/esm/elements/common/Fieldset.js +77 -0
- package/dist/esm/elements/common/Hint.js +96 -0
- package/dist/esm/elements/common/Label.js +142 -0
- package/dist/esm/elements/common/Legend.js +67 -0
- package/dist/esm/elements/common/Message.js +117 -0
- package/dist/esm/elements/faux-input/FauxInput.js +104 -0
- package/dist/esm/elements/faux-input/components/EndIcon.js +63 -0
- package/dist/esm/elements/faux-input/components/StartIcon.js +63 -0
- package/dist/esm/elements/file-list/FileList.js +70 -0
- package/dist/esm/elements/file-list/components/Close.js +79 -0
- package/dist/esm/elements/file-list/components/Delete.js +79 -0
- package/dist/esm/elements/file-list/components/File.js +98 -0
- package/dist/esm/elements/file-list/components/Item.js +68 -0
- package/dist/esm/elements/file-list/utils.js +50 -0
- package/dist/esm/elements/input-group/InputGroup.js +79 -0
- package/dist/esm/elements/tiles/Tiles.js +64 -0
- package/dist/esm/elements/tiles/components/Description.js +68 -0
- package/dist/esm/elements/tiles/components/Icon.js +68 -0
- package/dist/esm/elements/tiles/components/Label.js +77 -0
- package/dist/esm/elements/tiles/components/Tile.js +95 -0
- package/dist/esm/index.js +27 -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 +74 -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 +31 -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 +45 -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/range/StyledSlider.js +26 -0
- package/dist/esm/styled/range/StyledSliderThumb.js +45 -0
- package/dist/esm/styled/range/StyledSliderTrack.js +42 -0
- package/dist/esm/styled/range/StyledSliderTrackRail.js +28 -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 +59 -0
- package/dist/esm/styled/text/StyledTextInput.js +105 -0
- package/dist/esm/styled/text/StyledTextMediaFigure.js +57 -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 +53 -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 +82 -98
- package/package.json +5 -5
- 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 };
|