@widergy/energy-ui 3.37.2 → 3.38.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.
- package/CHANGELOG.md +7 -0
- package/dist/components/UTBadge/index.js +1 -1
- package/dist/components/UTBaseInputField/components/BadgeAdornment/index.js +24 -0
- package/dist/components/UTBaseInputField/components/IconAdornment/index.js +12 -6
- package/dist/components/UTBaseInputField/constants.js +3 -0
- package/dist/components/UTBaseInputField/index.js +32 -18
- package/dist/components/UTBaseInputField/theme.js +83 -31
- package/dist/components/UTCheckList/versions/V1/constants.js +3 -2
- package/dist/components/UTCheckList/versions/V1/index.js +15 -13
- package/dist/components/UTCheckbox/versions/V1/index.js +2 -4
- package/dist/components/UTCheckbox/versions/V1/theme.js +1 -1
- package/dist/components/UTPaper/index.js +29 -0
- package/dist/components/UTPaper/theme.js +26 -0
- package/dist/components/UTPasswordField/versions/V0/index.js +1 -1
- package/dist/components/UTPhoneInput/versions/V1/index.js +3 -3
- package/dist/components/UTSelect/index.js +12 -185
- package/dist/components/UTSelect/versions/V0/index.js +199 -0
- package/dist/components/UTSelect/{stylesJS.js → versions/V0/stylesJS.js} +1 -1
- package/dist/components/UTSelect/{theme.js → versions/V0/theme.js} +1 -1
- package/dist/components/UTSelect/versions/V1/README.md +90 -0
- package/dist/components/UTSelect/versions/V1/components/InputComponent/index.js +98 -0
- package/dist/components/UTSelect/versions/V1/components/ListboxComponent/index.js +51 -0
- package/dist/components/UTSelect/versions/V1/components/ListboxComponent/styles.module.scss +7 -0
- package/dist/components/UTSelect/versions/V1/index.js +203 -0
- package/dist/components/UTSelect/versions/V1/styles.module.scss +5 -0
- package/dist/components/UTSelect/versions/V1/utils.js +116 -0
- package/dist/components/UTTouchableWithoutFeedback/index.js +9 -4
- package/package.json +1 -1
- /package/dist/components/UTSelect/{components → versions/V0/components}/Option/index.js +0 -0
- /package/dist/components/UTSelect/{constants.js → versions/V0/constants.js} +0 -0
- /package/dist/components/UTSelect/{styles.module.scss → versions/V0/styles.module.scss} +0 -0
- /package/dist/components/UTSelect/{utils.js → versions/V0/utils.js} +0 -0
|
@@ -4,196 +4,23 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _react =
|
|
8
|
-
var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
|
|
9
|
-
var _ListSubheader = _interopRequireDefault(require("@material-ui/core/ListSubheader"));
|
|
10
|
-
var _InputLabel = _interopRequireDefault(require("@material-ui/core/InputLabel"));
|
|
11
|
-
var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
|
|
12
|
-
var _FormControl = _interopRequireDefault(require("@material-ui/core/FormControl"));
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
13
8
|
var _propTypes = require("prop-types");
|
|
14
|
-
var
|
|
15
|
-
var
|
|
16
|
-
var _form = require("@widergy/web-utils/lib/form");
|
|
17
|
-
var _FormHelperText = _interopRequireDefault(require("@material-ui/core/FormHelperText"));
|
|
18
|
-
var _array = require("@widergy/web-utils/lib/array");
|
|
19
|
-
var _clone = _interopRequireDefault(require("lodash/clone"));
|
|
20
|
-
var _formTypes = require("../../types/formTypes");
|
|
21
|
-
var _UTTooltip = _interopRequireDefault(require("../UTTooltip"));
|
|
22
|
-
var _WithTheme = _interopRequireDefault(require("../WithTheme"));
|
|
23
|
-
var _UTLabel = _interopRequireDefault(require("../UTLabel"));
|
|
24
|
-
var _classesUtils = require("../../utils/classesUtils");
|
|
25
|
-
var _Option = _interopRequireDefault(require("./components/Option"));
|
|
26
|
-
var _theme = require("./theme");
|
|
27
|
-
var _stylesJS = _interopRequireDefault(require("./stylesJS"));
|
|
28
|
-
var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
|
|
29
|
-
var _constants = require("./constants");
|
|
30
|
-
var _utils = require("./utils");
|
|
9
|
+
var _V = _interopRequireDefault(require("./versions/V0"));
|
|
10
|
+
var _V2 = _interopRequireDefault(require("./versions/V1"));
|
|
31
11
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
32
|
-
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
33
|
-
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
34
|
-
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
35
12
|
const UTSelect = _ref => {
|
|
36
13
|
let {
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
classes: themeClasses,
|
|
40
|
-
disabled,
|
|
41
|
-
disableFirstOption,
|
|
42
|
-
field,
|
|
43
|
-
iconPlaceholder: IconPlaceholder,
|
|
44
|
-
input,
|
|
45
|
-
labelKey,
|
|
46
|
-
labelProps,
|
|
47
|
-
menuPlaceholder,
|
|
48
|
-
meta,
|
|
49
|
-
options,
|
|
50
|
-
placeholder,
|
|
51
|
-
selectProps,
|
|
52
|
-
tooltip,
|
|
53
|
-
valueKey,
|
|
54
|
-
variant,
|
|
55
|
-
withAutoReset,
|
|
56
|
-
withOrder,
|
|
57
|
-
withoutFirstOption
|
|
14
|
+
version = 'V0',
|
|
15
|
+
...props
|
|
58
16
|
} = _ref;
|
|
59
|
-
const {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
(0, _react.useEffect)(() => {
|
|
65
|
-
if (withAutoReset && (0, _utils.shouldReset)(input.value, options, valueKey, isMultiple)) input.onChange(null);
|
|
66
|
-
}, [options]);
|
|
67
|
-
const handleChange = event => input.onChange(event.target.value);
|
|
68
|
-
const handleRenderValue = selected => {
|
|
69
|
-
const selectedOptions = options.filter(option => selected.includes(option[valueKey]));
|
|
70
|
-
return selectedOptions.map(selection => selection[labelKey]).join(', ');
|
|
71
|
-
};
|
|
72
|
-
let sortedOptions = [...options];
|
|
73
|
-
sortedOptions = withOrder ? sortedOptions.sort((a, b) => a.order < b.order ? -1 : 1) : sortedOptions;
|
|
74
|
-
const optionCommonProps = {
|
|
75
|
-
classes,
|
|
76
|
-
isMultiple,
|
|
77
|
-
labelKey,
|
|
78
|
-
value: input.value,
|
|
79
|
-
valueKey
|
|
80
|
-
};
|
|
81
|
-
const SelectInput = /*#__PURE__*/_react.default.createElement(_react.Fragment, null, upperTitle && /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
|
|
82
|
-
className: classes.upperTitle
|
|
83
|
-
}, upperTitle), /*#__PURE__*/_react.default.createElement(_FormControl.default, {
|
|
84
|
-
className: classes.formControl,
|
|
85
|
-
error: (0, _form.shouldShowErrors)(meta),
|
|
86
|
-
variant: variant
|
|
87
|
-
}, /*#__PURE__*/_react.default.createElement(_InputLabel.default, _extends({}, labelProps, {
|
|
88
|
-
disabled: disabled
|
|
89
|
-
}), IconPlaceholder ? /*#__PURE__*/_react.default.createElement("div", {
|
|
90
|
-
className: classes.labelContainer
|
|
91
|
-
}, /*#__PURE__*/_react.default.createElement(IconPlaceholder, {
|
|
92
|
-
className: classes.labelIcon
|
|
93
|
-
}), /*#__PURE__*/_react.default.createElement("div", null, placeholder)) : placeholder), /*#__PURE__*/_react.default.createElement(_Select.default, _extends({
|
|
94
|
-
name: input.name,
|
|
95
|
-
multiple: isMultiple,
|
|
96
|
-
value: isMultiple ? (0, _array.isEmpty)(input.value) ? [] : (0, _clone.default)(input.value) : input.value,
|
|
97
|
-
onChange: handleChange,
|
|
98
|
-
disabled: disabled,
|
|
99
|
-
label: variant === 'outlined' && placeholder,
|
|
100
|
-
classes: {
|
|
101
|
-
nativeInput: _stylesModule.default.nativeInput
|
|
102
|
-
}
|
|
103
|
-
}, isMultiple ? {
|
|
104
|
-
renderValue: handleRenderValue
|
|
105
|
-
} : {}, selectProps), !withoutFirstOption && /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
|
|
106
|
-
value: "",
|
|
107
|
-
disabled: isMultiple || disableFirstOption
|
|
108
|
-
}, menuPlaceholder || (isMultiple ? _constants.MENU_TITLE_MULTIPLE : _constants.MENU_TITLE)), sortedOptions.map(option => (0, _array.isEmpty)(option.subOptions) ? /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
|
|
109
|
-
key: option[valueKey],
|
|
110
|
-
value: option[valueKey]
|
|
111
|
-
}, /*#__PURE__*/_react.default.createElement(_Option.default, _extends({
|
|
112
|
-
optionProps: option
|
|
113
|
-
}, optionCommonProps))) : [/*#__PURE__*/_react.default.createElement(_ListSubheader.default, {
|
|
114
|
-
className: _stylesModule.default.subHeader
|
|
115
|
-
}, option[labelKey]), option.subOptions.map(subOption => /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
|
|
116
|
-
className: classes.subOption,
|
|
117
|
-
key: subOption[valueKey],
|
|
118
|
-
value: subOption[valueKey]
|
|
119
|
-
}, /*#__PURE__*/_react.default.createElement(_Option.default, _extends({
|
|
120
|
-
isSuboption: true,
|
|
121
|
-
optionProps: subOption
|
|
122
|
-
}, optionCommonProps))))])), captionLabel && /*#__PURE__*/_react.default.createElement(_FormHelperText.default, {
|
|
123
|
-
classes: {
|
|
124
|
-
...classes.formHelperText
|
|
125
|
-
}
|
|
126
|
-
}, captionLabel), (0, _form.shouldShowErrors)(meta) && /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
|
|
127
|
-
className: _stylesModule.default.errorLabel,
|
|
128
|
-
colorTheme: "error",
|
|
129
|
-
variant: "small"
|
|
130
|
-
}, meta.error)));
|
|
131
|
-
return /*#__PURE__*/_react.default.createElement("div", {
|
|
132
|
-
className: classes.container
|
|
133
|
-
}, tooltip ? /*#__PURE__*/_react.default.createElement(_Grid.default, {
|
|
134
|
-
style: _stylesJS.default.gridContainer,
|
|
135
|
-
container: true,
|
|
136
|
-
spacing: 1,
|
|
137
|
-
alignItems: "flex-end"
|
|
138
|
-
}, /*#__PURE__*/_react.default.createElement(_Grid.default, {
|
|
139
|
-
item: true,
|
|
140
|
-
xs: true
|
|
141
|
-
}, SelectInput), /*#__PURE__*/_react.default.createElement(_Grid.default, {
|
|
142
|
-
item: true,
|
|
143
|
-
style: _stylesJS.default.icon
|
|
144
|
-
}, /*#__PURE__*/_react.default.createElement(_UTTooltip.default, {
|
|
145
|
-
content: tooltip
|
|
146
|
-
}, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_HelpOutline.default, {
|
|
147
|
-
className: classes.tooltipIcon
|
|
148
|
-
}))))) : SelectInput);
|
|
149
|
-
};
|
|
150
|
-
UTSelect.defaultProps = {
|
|
151
|
-
classNames: {},
|
|
152
|
-
classes: {},
|
|
153
|
-
field: {
|
|
154
|
-
configuration: {
|
|
155
|
-
multiple: false
|
|
156
|
-
}
|
|
157
|
-
},
|
|
158
|
-
labelKey: _constants.LABEL_KEY,
|
|
159
|
-
labelProps: {},
|
|
160
|
-
meta: {},
|
|
161
|
-
options: [],
|
|
162
|
-
selectProps: {},
|
|
163
|
-
valueKey: _constants.VALUE_KEY,
|
|
164
|
-
withAutoReset: true,
|
|
165
|
-
withoutFirstOption: false
|
|
17
|
+
const Component = {
|
|
18
|
+
V0: _V.default,
|
|
19
|
+
V1: _V2.default
|
|
20
|
+
}[version];
|
|
21
|
+
return /*#__PURE__*/_react.default.createElement(Component, props);
|
|
166
22
|
};
|
|
167
23
|
UTSelect.propTypes = {
|
|
168
|
-
|
|
169
|
-
classNames: (0, _propTypes.objectOf)(_propTypes.string),
|
|
170
|
-
classes: (0, _propTypes.shape)({
|
|
171
|
-
container: _propTypes.string,
|
|
172
|
-
labelContainer: _propTypes.string,
|
|
173
|
-
formControl: _propTypes.string,
|
|
174
|
-
formHelperText: (0, _propTypes.objectOf)(_propTypes.string),
|
|
175
|
-
labelIcon: _propTypes.string,
|
|
176
|
-
optionIcon: _propTypes.string,
|
|
177
|
-
tooltipIcon: _propTypes.string,
|
|
178
|
-
upperTitle: _propTypes.string
|
|
179
|
-
}),
|
|
180
|
-
disabled: _propTypes.bool,
|
|
181
|
-
disableFirstOption: _propTypes.bool,
|
|
182
|
-
field: _formTypes.fieldType,
|
|
183
|
-
iconPlaceholder: _propTypes.node,
|
|
184
|
-
input: _formTypes.inputPropTypes,
|
|
185
|
-
labelKey: _propTypes.string,
|
|
186
|
-
labelProps: _propTypes.object,
|
|
187
|
-
menuPlaceholder: _propTypes.string,
|
|
188
|
-
meta: _formTypes.metaPropTypes,
|
|
189
|
-
options: (0, _propTypes.arrayOf)(_propTypes.object),
|
|
190
|
-
placeholder: _propTypes.string,
|
|
191
|
-
selectProps: _propTypes.object,
|
|
192
|
-
tooltip: _propTypes.string,
|
|
193
|
-
valueKey: _propTypes.string,
|
|
194
|
-
variant: _propTypes.string,
|
|
195
|
-
withAutoReset: _propTypes.bool,
|
|
196
|
-
withOrder: _propTypes.bool,
|
|
197
|
-
withoutFirstOption: _propTypes.bool
|
|
24
|
+
version: _propTypes.string
|
|
198
25
|
};
|
|
199
|
-
var _default = exports.default =
|
|
26
|
+
var _default = exports.default = UTSelect;
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _Select = _interopRequireDefault(require("@material-ui/core/Select"));
|
|
9
|
+
var _ListSubheader = _interopRequireDefault(require("@material-ui/core/ListSubheader"));
|
|
10
|
+
var _InputLabel = _interopRequireDefault(require("@material-ui/core/InputLabel"));
|
|
11
|
+
var _MenuItem = _interopRequireDefault(require("@material-ui/core/MenuItem"));
|
|
12
|
+
var _FormControl = _interopRequireDefault(require("@material-ui/core/FormControl"));
|
|
13
|
+
var _propTypes = require("prop-types");
|
|
14
|
+
var _Grid = _interopRequireDefault(require("@material-ui/core/Grid"));
|
|
15
|
+
var _HelpOutline = _interopRequireDefault(require("@material-ui/icons/HelpOutline"));
|
|
16
|
+
var _form = require("@widergy/web-utils/lib/form");
|
|
17
|
+
var _FormHelperText = _interopRequireDefault(require("@material-ui/core/FormHelperText"));
|
|
18
|
+
var _array = require("@widergy/web-utils/lib/array");
|
|
19
|
+
var _clone = _interopRequireDefault(require("lodash/clone"));
|
|
20
|
+
var _formTypes = require("../../../../types/formTypes");
|
|
21
|
+
var _UTTooltip = _interopRequireDefault(require("../../../UTTooltip"));
|
|
22
|
+
var _WithTheme = _interopRequireDefault(require("../../../WithTheme"));
|
|
23
|
+
var _UTLabel = _interopRequireDefault(require("../../../UTLabel"));
|
|
24
|
+
var _classesUtils = require("../../../../utils/classesUtils");
|
|
25
|
+
var _Option = _interopRequireDefault(require("./components/Option"));
|
|
26
|
+
var _theme = require("./theme");
|
|
27
|
+
var _stylesJS = _interopRequireDefault(require("./stylesJS"));
|
|
28
|
+
var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
|
|
29
|
+
var _constants = require("./constants");
|
|
30
|
+
var _utils = require("./utils");
|
|
31
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
32
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
33
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
34
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
35
|
+
const UTSelect = _ref => {
|
|
36
|
+
let {
|
|
37
|
+
captionLabel,
|
|
38
|
+
classNames,
|
|
39
|
+
classes: themeClasses,
|
|
40
|
+
disabled,
|
|
41
|
+
disableFirstOption,
|
|
42
|
+
field,
|
|
43
|
+
iconPlaceholder: IconPlaceholder,
|
|
44
|
+
input,
|
|
45
|
+
labelKey,
|
|
46
|
+
labelProps,
|
|
47
|
+
menuPlaceholder,
|
|
48
|
+
meta,
|
|
49
|
+
options,
|
|
50
|
+
placeholder,
|
|
51
|
+
selectProps,
|
|
52
|
+
tooltip,
|
|
53
|
+
valueKey,
|
|
54
|
+
variant,
|
|
55
|
+
withAutoReset,
|
|
56
|
+
withOrder,
|
|
57
|
+
withoutFirstOption
|
|
58
|
+
} = _ref;
|
|
59
|
+
const {
|
|
60
|
+
multiple: isMultiple,
|
|
61
|
+
upperTitle
|
|
62
|
+
} = (field === null || field === void 0 ? void 0 : field.configuration) || {};
|
|
63
|
+
const classes = (0, _react.useMemo)(() => (0, _classesUtils.mergeClasses)(themeClasses, classNames), [classNames]);
|
|
64
|
+
(0, _react.useEffect)(() => {
|
|
65
|
+
if (withAutoReset && (0, _utils.shouldReset)(input.value, options, valueKey, isMultiple)) input.onChange(null);
|
|
66
|
+
}, [options]);
|
|
67
|
+
const handleChange = event => input.onChange(event.target.value);
|
|
68
|
+
const handleRenderValue = selected => {
|
|
69
|
+
const selectedOptions = options.filter(option => selected.includes(option[valueKey]));
|
|
70
|
+
return selectedOptions.map(selection => selection[labelKey]).join(', ');
|
|
71
|
+
};
|
|
72
|
+
let sortedOptions = [...options];
|
|
73
|
+
sortedOptions = withOrder ? sortedOptions.sort((a, b) => a.order < b.order ? -1 : 1) : sortedOptions;
|
|
74
|
+
const optionCommonProps = {
|
|
75
|
+
classes,
|
|
76
|
+
isMultiple,
|
|
77
|
+
labelKey,
|
|
78
|
+
value: input.value,
|
|
79
|
+
valueKey
|
|
80
|
+
};
|
|
81
|
+
const SelectInput = /*#__PURE__*/_react.default.createElement(_react.Fragment, null, upperTitle && /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
|
|
82
|
+
className: classes.upperTitle
|
|
83
|
+
}, upperTitle), /*#__PURE__*/_react.default.createElement(_FormControl.default, {
|
|
84
|
+
className: classes.formControl,
|
|
85
|
+
error: (0, _form.shouldShowErrors)(meta),
|
|
86
|
+
variant: variant
|
|
87
|
+
}, /*#__PURE__*/_react.default.createElement(_InputLabel.default, _extends({}, labelProps, {
|
|
88
|
+
disabled: disabled
|
|
89
|
+
}), IconPlaceholder ? /*#__PURE__*/_react.default.createElement("div", {
|
|
90
|
+
className: classes.labelContainer
|
|
91
|
+
}, /*#__PURE__*/_react.default.createElement(IconPlaceholder, {
|
|
92
|
+
className: classes.labelIcon
|
|
93
|
+
}), /*#__PURE__*/_react.default.createElement("div", null, placeholder)) : placeholder), /*#__PURE__*/_react.default.createElement(_Select.default, _extends({
|
|
94
|
+
name: input.name,
|
|
95
|
+
multiple: isMultiple,
|
|
96
|
+
value: isMultiple ? (0, _array.isEmpty)(input.value) ? [] : (0, _clone.default)(input.value) : input.value,
|
|
97
|
+
onChange: handleChange,
|
|
98
|
+
disabled: disabled,
|
|
99
|
+
label: variant === 'outlined' && placeholder,
|
|
100
|
+
classes: {
|
|
101
|
+
nativeInput: _stylesModule.default.nativeInput
|
|
102
|
+
}
|
|
103
|
+
}, isMultiple ? {
|
|
104
|
+
renderValue: handleRenderValue
|
|
105
|
+
} : {}, selectProps), !withoutFirstOption && /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
|
|
106
|
+
value: "",
|
|
107
|
+
disabled: isMultiple || disableFirstOption
|
|
108
|
+
}, menuPlaceholder || (isMultiple ? _constants.MENU_TITLE_MULTIPLE : _constants.MENU_TITLE)), sortedOptions.map(option => (0, _array.isEmpty)(option.subOptions) ? /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
|
|
109
|
+
key: option[valueKey],
|
|
110
|
+
value: option[valueKey]
|
|
111
|
+
}, /*#__PURE__*/_react.default.createElement(_Option.default, _extends({
|
|
112
|
+
optionProps: option
|
|
113
|
+
}, optionCommonProps))) : [/*#__PURE__*/_react.default.createElement(_ListSubheader.default, {
|
|
114
|
+
className: _stylesModule.default.subHeader
|
|
115
|
+
}, option[labelKey]), option.subOptions.map(subOption => /*#__PURE__*/_react.default.createElement(_MenuItem.default, {
|
|
116
|
+
className: classes.subOption,
|
|
117
|
+
key: subOption[valueKey],
|
|
118
|
+
value: subOption[valueKey]
|
|
119
|
+
}, /*#__PURE__*/_react.default.createElement(_Option.default, _extends({
|
|
120
|
+
isSuboption: true,
|
|
121
|
+
optionProps: subOption
|
|
122
|
+
}, optionCommonProps))))])), captionLabel && /*#__PURE__*/_react.default.createElement(_FormHelperText.default, {
|
|
123
|
+
classes: {
|
|
124
|
+
...classes.formHelperText
|
|
125
|
+
}
|
|
126
|
+
}, captionLabel), (0, _form.shouldShowErrors)(meta) && /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
|
|
127
|
+
className: _stylesModule.default.errorLabel,
|
|
128
|
+
colorTheme: "error",
|
|
129
|
+
variant: "small"
|
|
130
|
+
}, meta.error)));
|
|
131
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
132
|
+
className: classes.container
|
|
133
|
+
}, tooltip ? /*#__PURE__*/_react.default.createElement(_Grid.default, {
|
|
134
|
+
style: _stylesJS.default.gridContainer,
|
|
135
|
+
container: true,
|
|
136
|
+
spacing: 1,
|
|
137
|
+
alignItems: "flex-end"
|
|
138
|
+
}, /*#__PURE__*/_react.default.createElement(_Grid.default, {
|
|
139
|
+
item: true,
|
|
140
|
+
xs: true
|
|
141
|
+
}, SelectInput), /*#__PURE__*/_react.default.createElement(_Grid.default, {
|
|
142
|
+
item: true,
|
|
143
|
+
style: _stylesJS.default.icon
|
|
144
|
+
}, /*#__PURE__*/_react.default.createElement(_UTTooltip.default, {
|
|
145
|
+
content: tooltip
|
|
146
|
+
}, /*#__PURE__*/_react.default.createElement("span", null, /*#__PURE__*/_react.default.createElement(_HelpOutline.default, {
|
|
147
|
+
className: classes.tooltipIcon
|
|
148
|
+
}))))) : SelectInput);
|
|
149
|
+
};
|
|
150
|
+
UTSelect.defaultProps = {
|
|
151
|
+
classNames: {},
|
|
152
|
+
classes: {},
|
|
153
|
+
field: {
|
|
154
|
+
configuration: {
|
|
155
|
+
multiple: false
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
labelKey: _constants.LABEL_KEY,
|
|
159
|
+
labelProps: {},
|
|
160
|
+
meta: {},
|
|
161
|
+
options: [],
|
|
162
|
+
selectProps: {},
|
|
163
|
+
valueKey: _constants.VALUE_KEY,
|
|
164
|
+
withAutoReset: true,
|
|
165
|
+
withoutFirstOption: false
|
|
166
|
+
};
|
|
167
|
+
UTSelect.propTypes = {
|
|
168
|
+
captionLabel: _propTypes.string,
|
|
169
|
+
classNames: (0, _propTypes.objectOf)(_propTypes.string),
|
|
170
|
+
classes: (0, _propTypes.shape)({
|
|
171
|
+
container: _propTypes.string,
|
|
172
|
+
labelContainer: _propTypes.string,
|
|
173
|
+
formControl: _propTypes.string,
|
|
174
|
+
formHelperText: (0, _propTypes.objectOf)(_propTypes.string),
|
|
175
|
+
labelIcon: _propTypes.string,
|
|
176
|
+
optionIcon: _propTypes.string,
|
|
177
|
+
tooltipIcon: _propTypes.string,
|
|
178
|
+
upperTitle: _propTypes.string
|
|
179
|
+
}),
|
|
180
|
+
disabled: _propTypes.bool,
|
|
181
|
+
disableFirstOption: _propTypes.bool,
|
|
182
|
+
field: _formTypes.fieldType,
|
|
183
|
+
iconPlaceholder: _propTypes.node,
|
|
184
|
+
input: _formTypes.inputPropTypes,
|
|
185
|
+
labelKey: _propTypes.string,
|
|
186
|
+
labelProps: _propTypes.object,
|
|
187
|
+
menuPlaceholder: _propTypes.string,
|
|
188
|
+
meta: _formTypes.metaPropTypes,
|
|
189
|
+
options: (0, _propTypes.arrayOf)(_propTypes.object),
|
|
190
|
+
placeholder: _propTypes.string,
|
|
191
|
+
selectProps: _propTypes.object,
|
|
192
|
+
tooltip: _propTypes.string,
|
|
193
|
+
valueKey: _propTypes.string,
|
|
194
|
+
variant: _propTypes.string,
|
|
195
|
+
withAutoReset: _propTypes.bool,
|
|
196
|
+
withOrder: _propTypes.bool,
|
|
197
|
+
withoutFirstOption: _propTypes.bool
|
|
198
|
+
};
|
|
199
|
+
var _default = exports.default = (0, _WithTheme.default)(_theme.retrieveStyle, _theme.retrieveMuiTheme)(UTSelect);
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
var _colorsModule = _interopRequireDefault(require("
|
|
7
|
+
var _colorsModule = _interopRequireDefault(require("../../../../scss/variables/colors.module.scss"));
|
|
8
8
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
9
|
var _default = exports.default = {
|
|
10
10
|
icon: {
|
|
@@ -7,7 +7,7 @@ exports.retrieveStyle = exports.retrieveMuiTheme = void 0;
|
|
|
7
7
|
var _seamlessImmutable = require("seamless-immutable");
|
|
8
8
|
var _styles = require("@material-ui/core/styles");
|
|
9
9
|
var _merge = _interopRequireDefault(require("lodash/merge"));
|
|
10
|
-
var _colorsModule = _interopRequireDefault(require("
|
|
10
|
+
var _colorsModule = _interopRequireDefault(require("../../../../scss/variables/colors.module.scss"));
|
|
11
11
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
12
12
|
const retrieveStyle = _ref => {
|
|
13
13
|
let {
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# UTSelect
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
|
|
5
|
+
`UTSelect` is a customizable dropdown select component, built on top of Material UI's `Autocomplete`. It allows users to select single or multiple options from a provided list with features like search, dynamic filtering, and adornments (prefixes, suffixes, icons, and badges).
|
|
6
|
+
|
|
7
|
+
| Name | Type | Default | Description |
|
|
8
|
+
| --------------------- | -------------------------- | -------- | --------------------------------------------------------------------------------------------------------- |
|
|
9
|
+
| action | object | | Action object containing `Icon`, `onClick`, and `size` for the action button. |
|
|
10
|
+
| alwaysShowPlaceholder | bool | true | Determines if the placeholder should always be shown, even when there is a value. |
|
|
11
|
+
| clearable | bool | true | Determines whether a button to clear the current selection should be shown. |
|
|
12
|
+
| disabled | bool | false | Disables the select input. |
|
|
13
|
+
| disableFilterOptions | bool | false | Disables option filtering, showing all options even when typing in the search field. |
|
|
14
|
+
| error | string | | Error message to display below the input field. |
|
|
15
|
+
| helpText | string | | Help text displayed below the input field. |
|
|
16
|
+
| multiple | bool | false | Allows multiple selection if true. |
|
|
17
|
+
| noMatchesText | string | | Text to display when no matches are found in the search. |
|
|
18
|
+
| onChange | func | | Function to call when the selected value(s) change. |
|
|
19
|
+
| onChangeSearchTerm | func | | Function to call when the search term changes. |
|
|
20
|
+
| options | array | | Array of options to be displayed in the dropdown. Each option is an object with `label` and `value`. |
|
|
21
|
+
| placeholder | string | | Placeholder text for the select field. |
|
|
22
|
+
| prefix | string | | Text to display as a prefix inside the input field. |
|
|
23
|
+
| readOnly | bool | false | Makes the select field read-only, preventing changes but allowing the dropdown to open. |
|
|
24
|
+
| required | bool | false | Indicates if the select field is required. |
|
|
25
|
+
| suffix | string | | Text to display as a suffix inside the input field. |
|
|
26
|
+
| title | string | | Title for the select field, displayed above the input. |
|
|
27
|
+
| value | oneOfType([string, array]) | null | The value of the input field. It can be a string for single selection or an array for multiple selection. |
|
|
28
|
+
| variant | string | 'select' | Determines the visual variant, either `select` or `picker`. |
|
|
29
|
+
| withAutoReset | bool | true | Automatically resets the select value if the current selection is no longer available in the options. |
|
|
30
|
+
|
|
31
|
+
### Option Object
|
|
32
|
+
|
|
33
|
+
The `options` prop is an array of objects, each representing an option:
|
|
34
|
+
|
|
35
|
+
| Name | Type | Description |
|
|
36
|
+
| ----- | -------------- | -------------------------------- |
|
|
37
|
+
| label | string | Label to display for the option. |
|
|
38
|
+
| value | string, number | Value of the option. |
|
|
39
|
+
|
|
40
|
+
### `withAutoReset`
|
|
41
|
+
|
|
42
|
+
`withAutoReset` is a prop that controls the behavior of the `UTSelect` component when the selected value is no longer available in the current options. This prop ensures that the selected value resets to `null` if the chosen option is no longer valid. When an auto-reset occurs, the options are re-sorted to ensure the list is up-to-date with the current selections.
|
|
43
|
+
|
|
44
|
+
### Option Sorting Behavior
|
|
45
|
+
|
|
46
|
+
The `UTSelect` component sorts the options in a way that selected values are displayed at the top. For single selections, this sorting happens immediately after a selection is made. For multiple selections, the sorting occurs when the dropdown gains focus (opens) or loses focus (closes). This ensures that the selected options are prominently displayed when interacting with the dropdown, without disrupting the user's ongoing selection process.
|
|
47
|
+
|
|
48
|
+
### `multiple` Selection Mode
|
|
49
|
+
|
|
50
|
+
When using the `multiple` prop, the dropdown stays open after selecting an option, allowing users to select more items without the dropdown closing each time. The sorting behavior in this mode is controlled to ensure that reordering of options happens only when the dropdown gains or loses focus, preventing unwanted changes to the displayed options while the user is actively selecting items.
|
|
51
|
+
|
|
52
|
+
## Adornments
|
|
53
|
+
|
|
54
|
+
`UTSelect` allows for additional adornments, such as prefixes, suffixes, and custom action buttons. The `prefix` and `suffix` props can be used to display text or icons inside the input. You can also add a custom action button using the `action` prop.
|
|
55
|
+
|
|
56
|
+
## Usage
|
|
57
|
+
|
|
58
|
+
```jsx
|
|
59
|
+
import React, { useState } from 'react';
|
|
60
|
+
import UTSelect from './UTSelect';
|
|
61
|
+
|
|
62
|
+
const options = [
|
|
63
|
+
{ label: 'Option 1', value: '1' },
|
|
64
|
+
{ label: 'Option 2', value: '2' },
|
|
65
|
+
{ label: 'Option 3', value: '3' },
|
|
66
|
+
{ label: 'Option 4', value: '4' }
|
|
67
|
+
];
|
|
68
|
+
|
|
69
|
+
const UTSelectExample = () => {
|
|
70
|
+
const [selectedOption, setSelectedOption] = useState(null);
|
|
71
|
+
|
|
72
|
+
return (
|
|
73
|
+
<div style={{ padding: 20 }}>
|
|
74
|
+
<UTSelect
|
|
75
|
+
title="Select an Option"
|
|
76
|
+
noMatchesText="No matches found"
|
|
77
|
+
onChange={setSelectedOption}
|
|
78
|
+
options={options}
|
|
79
|
+
placeholder="Choose an option"
|
|
80
|
+
clearable
|
|
81
|
+
value={selectedOption}
|
|
82
|
+
variant="select"
|
|
83
|
+
/>
|
|
84
|
+
<p>Selected Option: {selectedOption}</p>
|
|
85
|
+
</div>
|
|
86
|
+
);
|
|
87
|
+
};
|
|
88
|
+
|
|
89
|
+
export default UTSelectExample;
|
|
90
|
+
```
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _propTypes = require("prop-types");
|
|
9
|
+
var _UTBaseInputField = _interopRequireDefault(require("../../../../../UTBaseInputField"));
|
|
10
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
11
|
+
const InputComponent = _ref => {
|
|
12
|
+
let {
|
|
13
|
+
alwaysShowPlaceholder,
|
|
14
|
+
disabled,
|
|
15
|
+
error,
|
|
16
|
+
inputRef,
|
|
17
|
+
leftAdornments,
|
|
18
|
+
onBlur,
|
|
19
|
+
onChange,
|
|
20
|
+
onFocus,
|
|
21
|
+
params,
|
|
22
|
+
placeholder,
|
|
23
|
+
readOnly,
|
|
24
|
+
rightAdornments,
|
|
25
|
+
value,
|
|
26
|
+
variant
|
|
27
|
+
} = _ref;
|
|
28
|
+
const {
|
|
29
|
+
InputProps: {
|
|
30
|
+
startAdornment,
|
|
31
|
+
endAdornment,
|
|
32
|
+
className,
|
|
33
|
+
...restInputProps
|
|
34
|
+
},
|
|
35
|
+
inputProps: {
|
|
36
|
+
onBlur: paramsOnBlur,
|
|
37
|
+
onChange: paramsOnChange,
|
|
38
|
+
onFocus: paramsOnFocus,
|
|
39
|
+
value: paramsValue,
|
|
40
|
+
...restInputPropsFromField
|
|
41
|
+
},
|
|
42
|
+
...restParams
|
|
43
|
+
} = params;
|
|
44
|
+
const modifiedParams = {
|
|
45
|
+
...restParams,
|
|
46
|
+
InputProps: restInputProps,
|
|
47
|
+
inputProps: restInputPropsFromField
|
|
48
|
+
};
|
|
49
|
+
const fieldVariant = variant === 'picker' ? 'transparent' : 'white';
|
|
50
|
+
return /*#__PURE__*/_react.default.createElement(_UTBaseInputField.default, {
|
|
51
|
+
alwaysShowPlaceholder: alwaysShowPlaceholder,
|
|
52
|
+
disabled: disabled,
|
|
53
|
+
error: error,
|
|
54
|
+
inputRef: inputRef,
|
|
55
|
+
leftAdornments: leftAdornments,
|
|
56
|
+
onBlur: onBlur,
|
|
57
|
+
onChange: onChange,
|
|
58
|
+
onFocus: onFocus,
|
|
59
|
+
muiProps: modifiedParams,
|
|
60
|
+
placeholder: placeholder,
|
|
61
|
+
readOnly: readOnly,
|
|
62
|
+
rightAdornments: rightAdornments,
|
|
63
|
+
value: value,
|
|
64
|
+
variant: fieldVariant
|
|
65
|
+
});
|
|
66
|
+
};
|
|
67
|
+
InputComponent.propTypes = {
|
|
68
|
+
alwaysShowPlaceholder: _propTypes.bool,
|
|
69
|
+
disabled: _propTypes.bool,
|
|
70
|
+
error: _propTypes.string,
|
|
71
|
+
inputRef: (0, _propTypes.oneOfType)([_propTypes.func, (0, _propTypes.shape)({
|
|
72
|
+
current: (0, _propTypes.instanceOf)(Element)
|
|
73
|
+
})]),
|
|
74
|
+
leftAdornments: (0, _propTypes.arrayOf)((0, _propTypes.shape)({
|
|
75
|
+
name: _propTypes.string,
|
|
76
|
+
props: _propTypes.object
|
|
77
|
+
})),
|
|
78
|
+
onBlur: _propTypes.func,
|
|
79
|
+
onChange: _propTypes.func,
|
|
80
|
+
onFocus: _propTypes.func,
|
|
81
|
+
params: (0, _propTypes.shape)({
|
|
82
|
+
InputProps: _propTypes.object,
|
|
83
|
+
inputProps: (0, _propTypes.shape)({
|
|
84
|
+
onChange: _propTypes.func,
|
|
85
|
+
onBlur: _propTypes.func,
|
|
86
|
+
onFocus: _propTypes.func
|
|
87
|
+
})
|
|
88
|
+
}),
|
|
89
|
+
placeholder: _propTypes.string,
|
|
90
|
+
readOnly: _propTypes.bool,
|
|
91
|
+
rightAdornments: (0, _propTypes.arrayOf)((0, _propTypes.shape)({
|
|
92
|
+
name: _propTypes.string,
|
|
93
|
+
props: _propTypes.object
|
|
94
|
+
})),
|
|
95
|
+
value: _propTypes.string,
|
|
96
|
+
variant: _propTypes.string
|
|
97
|
+
};
|
|
98
|
+
var _default = exports.default = InputComponent;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
9
|
+
var _propTypes = require("prop-types");
|
|
10
|
+
var _reactPerfectScrollbar = _interopRequireDefault(require("react-perfect-scrollbar"));
|
|
11
|
+
var _UTLabel = _interopRequireDefault(require("../../../../../UTLabel"));
|
|
12
|
+
var _UTCheckList = _interopRequireDefault(require("../../../../../UTCheckList"));
|
|
13
|
+
var _stylesModule = _interopRequireDefault(require("./styles.module.scss"));
|
|
14
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
15
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
|
+
const ListboxComponent = _ref => {
|
|
18
|
+
let {
|
|
19
|
+
filteredOptions,
|
|
20
|
+
handleSelectionChange,
|
|
21
|
+
multiple,
|
|
22
|
+
noMatchesText,
|
|
23
|
+
value
|
|
24
|
+
} = _ref;
|
|
25
|
+
const hasNoOptions = (0, _react.useMemo)(() => (0, _isEmpty.default)(filteredOptions), [filteredOptions]);
|
|
26
|
+
return hasNoOptions ? /*#__PURE__*/_react.default.createElement(_UTLabel.default, {
|
|
27
|
+
colorTheme: "gray",
|
|
28
|
+
className: _stylesModule.default.noOptionsLabel
|
|
29
|
+
}, noMatchesText) : /*#__PURE__*/_react.default.createElement(_reactPerfectScrollbar.default, {
|
|
30
|
+
className: _stylesModule.default.scrollbar
|
|
31
|
+
}, /*#__PURE__*/_react.default.createElement(_UTCheckList.default, {
|
|
32
|
+
isSimple: !multiple,
|
|
33
|
+
onChange: handleSelectionChange,
|
|
34
|
+
options: filteredOptions,
|
|
35
|
+
showSelectAll: false,
|
|
36
|
+
value: multiple ? value : [value],
|
|
37
|
+
variant: "button",
|
|
38
|
+
version: "V1"
|
|
39
|
+
}));
|
|
40
|
+
};
|
|
41
|
+
ListboxComponent.propTypes = {
|
|
42
|
+
filteredOptions: (0, _propTypes.arrayOf)((0, _propTypes.shape)({
|
|
43
|
+
label: _propTypes.string,
|
|
44
|
+
value: (0, _propTypes.oneOfType)([_propTypes.string, _propTypes.number])
|
|
45
|
+
})),
|
|
46
|
+
handleSelectionChange: _propTypes.func,
|
|
47
|
+
multiple: _propTypes.bool,
|
|
48
|
+
noMatchesText: _propTypes.string,
|
|
49
|
+
value: (0, _propTypes.oneOfType)([(0, _propTypes.arrayOf)((0, _propTypes.oneOfType)([_propTypes.string, _propTypes.number])), _propTypes.string, _propTypes.number])
|
|
50
|
+
};
|
|
51
|
+
var _default = exports.default = ListboxComponent;
|