@portnet/ui 0.0.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +70 -0
  2. package/dist/components/buttons/PuiButton.js +133 -0
  3. package/dist/components/buttons/PuiIconButton.js +94 -0
  4. package/dist/components/common/PuiAlertContext.js +11 -0
  5. package/dist/components/common/StyledMuiButton.js +45 -0
  6. package/dist/components/common/StyledMuiTextField.js +109 -0
  7. package/dist/components/inputs/PuiAutocomplete.js +338 -0
  8. package/dist/components/inputs/PuiCheckbox.js +264 -0
  9. package/dist/components/inputs/PuiCheckboxGroup.js +216 -0
  10. package/dist/components/inputs/PuiCheckboxItem.js +158 -0
  11. package/dist/components/inputs/PuiDateField.js +259 -0
  12. package/dist/components/inputs/PuiFileField.js +244 -0
  13. package/dist/components/inputs/PuiSelect.js +349 -0
  14. package/dist/components/inputs/PuiTextField.js +256 -0
  15. package/dist/components/others/PuiBadge.js +57 -0
  16. package/dist/components/others/PuiChip.js +145 -0
  17. package/dist/components/others/PuiDialog.js +100 -0
  18. package/dist/components/others/PuiFormikForm.js +57 -0
  19. package/dist/components/others/PuiGrid.js +22 -0
  20. package/dist/components/others/PuiIcon.js +88 -0
  21. package/dist/components/others/PuiLoadingBackdrop.js +33 -0
  22. package/dist/components/others/PuiMainContainer.js +37 -0
  23. package/dist/components/others/PuiNavigation.js +64 -0
  24. package/dist/components/others/PuiSection.js +94 -0
  25. package/dist/components/others/PuiTooltip.js +85 -0
  26. package/dist/components/providers/PuiAlertProvider.js +117 -0
  27. package/dist/components/referentiel/common/ReferetielContext.js +11 -0
  28. package/dist/components/referentiel/components/PuiSimplePopupReferentielField.js +306 -0
  29. package/dist/components/referentiel/components/PuiSimpleReferentielField.js +190 -0
  30. package/dist/components/referentiel/components/PuiSpecificReferentielField.js +302 -0
  31. package/dist/components/referentiel/components/constants/specificReferentielsApis.js +17 -0
  32. package/dist/components/referentiel/components/constants/specificReferentielsBaseColumns.js +337 -0
  33. package/dist/components/referentiel/components/constants/specificReferentielsBaseFilters.js +325 -0
  34. package/dist/components/referentiel/components/constants/specificReferentielsInitialValues.js +48 -0
  35. package/dist/components/referentiel/components/constants/specificReferentielsKeys.js +18 -0
  36. package/dist/components/referentiel/components/constants/specificReferentielsTitles.js +17 -0
  37. package/dist/components/referentiel/components/constants/specificReferentielsValidationSchemas.js +53 -0
  38. package/dist/components/referentiel/components/general/PuiPopupReferentielBase.js +303 -0
  39. package/dist/components/referentiel/providers/PuiReferentielProvider.js +56 -0
  40. package/dist/components/tab/PuiTab.js +26 -0
  41. package/dist/components/tab/PuiTabs.js +137 -0
  42. package/dist/components/table/PuiTable.js +352 -0
  43. package/dist/components/table/PuiTableAction.js +63 -0
  44. package/dist/components/typography/PuiDefinition.js +43 -0
  45. package/dist/components/typography/PuiIndication.js +76 -0
  46. package/dist/components/typography/PuiMainTitle.js +82 -0
  47. package/dist/components/ui/dialogs/PuiSearchDialog.js +96 -0
  48. package/dist/components/ui/pages/errors/PuiErrorBasePage.js +70 -0
  49. package/dist/components/ui/pages/errors/PuiNetworkErrorPage.js +37 -0
  50. package/dist/components/ui/pages/errors/PuiNotFoundErrorPage.js +31 -0
  51. package/dist/components/ui/pages/errors/PuiServerErrorPage.js +38 -0
  52. package/dist/components/ui/pages/general/PuiDefaultPage.js +65 -0
  53. package/dist/components/ui/pages/general/PuiSearchPage.js +161 -0
  54. package/dist/config/apperance.js +26 -0
  55. package/dist/config/mapping.js +28 -0
  56. package/dist/config/referentiel.js +11 -0
  57. package/dist/general/yupValidationErrors.js +10 -0
  58. package/dist/hooks/useAlert.js +17 -0
  59. package/dist/hooks/useAxios.js +22 -0
  60. package/dist/hooks/useQuery.js +20 -0
  61. package/dist/index.js +293 -0
  62. package/package.json +93 -0
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ require("core-js/modules/web.dom-collections.iterator.js");
8
+ require("core-js/modules/es.promise.js");
9
+ require("core-js/modules/es.symbol.description.js");
10
+ var _material = require("@mui/material");
11
+ var _styles = require("@mui/material/styles");
12
+ var _formik = require("formik");
13
+ var _propTypes = _interopRequireDefault(require("prop-types"));
14
+ var _react = _interopRequireDefault(require("react"));
15
+ var _PuiButton = _interopRequireDefault(require("../buttons/PuiButton"));
16
+ var _StyledMuiTextField = _interopRequireDefault(require("../common/StyledMuiTextField"));
17
+ var _jsxRuntime = require("react/jsx-runtime");
18
+ const _excluded = ["id", "className", "sx", "name", "label", "buttonText", "error", "disabled", "helperText", "focused", "fullWidth", "InputProps", "required", "accept", "multiple", "formatValue", "onChange"],
19
+ _excluded2 = ["id", "className", "sx", "name", "label", "buttonText", "error", "helperText", "disabled", "focused", "fullWidth", "InputProps", "required", "accept", "multiple", "formatValue", "onChange"],
20
+ _excluded3 = ["formik", "id", "className", "sx", "name", "label", "buttonText", "error", "disabled", "helperText", "focused", "fullWidth", "InputProps", "required", "accept", "multiple", "formatValue", "onChange"];
21
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
22
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
23
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
24
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
25
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
26
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
27
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
28
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
29
+ const StyledFileMuiTextField = (0, _styles.styled)( /*#__PURE__*/_react.default.forwardRef((props, ref) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_StyledMuiTextField.default, _objectSpread({
30
+ ref: ref
31
+ }, props))))(() => {
32
+ return {
33
+ "& .MuiInputBase-root": {
34
+ alignItems: "stretch",
35
+ padding: 0,
36
+ "& .MuiButtonBase-root": {
37
+ minWidth: "fit-content",
38
+ fontSize: ".7rem",
39
+ paddingRight: "18px",
40
+ paddingLeft: "18px",
41
+ margin: "-2px"
42
+ }
43
+ }
44
+ };
45
+ });
46
+ const PuiStandardFileField = /*#__PURE__*/_react.default.forwardRef((_ref, ref) => {
47
+ let {
48
+ id,
49
+ className,
50
+ sx,
51
+ name,
52
+ label,
53
+ buttonText,
54
+ error,
55
+ disabled,
56
+ helperText,
57
+ focused,
58
+ fullWidth,
59
+ InputProps,
60
+ required,
61
+ accept,
62
+ multiple,
63
+ formatValue,
64
+ onChange
65
+ } = _ref,
66
+ rest = _objectWithoutProperties(_ref, _excluded);
67
+ const fileInputRef = _react.default.useRef();
68
+ const [fileDescription, setFileDecription] = _react.default.useState("");
69
+ const fileChangeHandler = async event => {
70
+ const files = event.target.files;
71
+ const filesCount = files.length;
72
+ if (filesCount > 1) {
73
+ setFileDecription("".concat(filesCount, " Fichiers charg\xE9es"));
74
+ } else {
75
+ setFileDecription(files[0].name);
76
+ }
77
+ onChange(formatValue(files));
78
+ };
79
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
80
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(StyledFileMuiTextField, _objectSpread(_objectSpread({
81
+ ref: ref,
82
+ id: id,
83
+ className: className,
84
+ sx: sx,
85
+ label: label,
86
+ value: fileDescription,
87
+ required: required,
88
+ disabled: disabled,
89
+ type: "text",
90
+ error: error,
91
+ focused: focused,
92
+ fullWidth: fullWidth,
93
+ helperText: helperText,
94
+ InputProps: _objectSpread({
95
+ endAdornment: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PuiButton.default, {
96
+ children: buttonText
97
+ }),
98
+ readOnly: true
99
+ }, InputProps)
100
+ }, rest), {}, {
101
+ onClick: () => {
102
+ fileInputRef.current.click();
103
+ }
104
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Input, {
105
+ type: "file",
106
+ inputRef: fileInputRef,
107
+ name: name,
108
+ inputProps: {
109
+ accept,
110
+ multiple
111
+ },
112
+ sx: {
113
+ display: "none"
114
+ },
115
+ onChange: fileChangeHandler
116
+ })]
117
+ });
118
+ });
119
+ const PuiFormikFileField = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
120
+ let {
121
+ id,
122
+ className,
123
+ sx,
124
+ name,
125
+ label,
126
+ buttonText,
127
+ error,
128
+ helperText,
129
+ disabled,
130
+ focused,
131
+ fullWidth,
132
+ InputProps,
133
+ required,
134
+ accept,
135
+ multiple,
136
+ formatValue,
137
+ onChange
138
+ } = _ref2,
139
+ rest = _objectWithoutProperties(_ref2, _excluded2);
140
+ const [, meta] = (0, _formik.useField)(name);
141
+ const [hasError, setHasError] = _react.default.useState(false);
142
+ const formikContext = (0, _formik.useFormikContext)();
143
+ const handleChange = files => {
144
+ formikContext.setFieldValue(name, formatValue(files));
145
+ onChange(files);
146
+ };
147
+ _react.default.useEffect(() => {
148
+ setHasError(Boolean(name) && Boolean(meta) && Boolean(meta.touched) && Boolean(meta.error));
149
+ }, [name, meta]);
150
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(PuiStandardFileField, _objectSpread({
151
+ id: id,
152
+ ref: ref,
153
+ className: className,
154
+ sx: sx,
155
+ name: name,
156
+ label: label,
157
+ buttonText: buttonText,
158
+ disabled: disabled,
159
+ error: error || hasError,
160
+ helperText: hasError && Boolean(meta.error) ? meta.error : helperText !== null && helperText !== void 0 ? helperText : "",
161
+ focued: focused,
162
+ fullWidth: fullWidth,
163
+ InputProps: InputProps,
164
+ required: required,
165
+ accept: accept,
166
+ multiple: multiple,
167
+ onChange: handleChange
168
+ }, rest));
169
+ });
170
+ const PuiFileField = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
171
+ let {
172
+ formik,
173
+ id,
174
+ className,
175
+ sx,
176
+ name,
177
+ label,
178
+ buttonText,
179
+ error,
180
+ disabled,
181
+ helperText,
182
+ focused,
183
+ fullWidth,
184
+ InputProps,
185
+ required,
186
+ accept,
187
+ multiple,
188
+ formatValue,
189
+ onChange
190
+ } = _ref3,
191
+ rest = _objectWithoutProperties(_ref3, _excluded3);
192
+ return /*#__PURE__*/_react.default.createElement(formik ? PuiFormikFileField : PuiStandardFileField, _objectSpread({
193
+ ref,
194
+ id,
195
+ className,
196
+ sx,
197
+ name,
198
+ label,
199
+ buttonText,
200
+ error,
201
+ disabled,
202
+ helperText,
203
+ focused,
204
+ fullWidth,
205
+ InputProps,
206
+ required,
207
+ accept,
208
+ multiple,
209
+ formatValue,
210
+ onChange
211
+ }, rest));
212
+ });
213
+ PuiFileField.propTypes = {
214
+ id: _propTypes.default.string,
215
+ className: _propTypes.default.string,
216
+ sx: _propTypes.default.object,
217
+ label: _propTypes.default.string,
218
+ name: _propTypes.default.string,
219
+ buttonText: _propTypes.default.string.isRequired,
220
+ helperText: _propTypes.default.string,
221
+ accept: _propTypes.default.string,
222
+ formik: _propTypes.default.bool,
223
+ disabled: _propTypes.default.bool,
224
+ required: _propTypes.default.bool,
225
+ error: _propTypes.default.bool,
226
+ focused: _propTypes.default.bool,
227
+ fullWidth: _propTypes.default.bool,
228
+ multiple: _propTypes.default.bool,
229
+ InputProps: _propTypes.default.object,
230
+ formatValue: _propTypes.default.func,
231
+ onChange: _propTypes.default.func
232
+ };
233
+ PuiFileField.defaultProps = {
234
+ formik: false,
235
+ disabled: false,
236
+ required: false,
237
+ error: false,
238
+ fullWidth: false,
239
+ multiple: false,
240
+ formatValue: value => value,
241
+ onChange: () => {}
242
+ };
243
+ var _default = PuiFileField;
244
+ exports.default = _default;
@@ -0,0 +1,349 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ require("core-js/modules/web.dom-collections.iterator.js");
8
+ require("core-js/modules/es.symbol.description.js");
9
+ var _ArrowDropDown = _interopRequireDefault(require("@mui/icons-material/ArrowDropDown"));
10
+ var _material = require("@mui/material");
11
+ var _styles = require("@mui/material/styles");
12
+ var _formik = require("formik");
13
+ var _propTypes = _interopRequireDefault(require("prop-types"));
14
+ var _react = _interopRequireDefault(require("react"));
15
+ var _apperance = require("../../config/apperance");
16
+ var _PuiIcon = _interopRequireDefault(require("../others/PuiIcon"));
17
+ var _PuiIndication = _interopRequireDefault(require("../typography/PuiIndication"));
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+ const _excluded = ["id", "className", "sx", "name", "label", "value", "error", "helperText", "fullWidth", "disabled", "focused", "loading", "readOnly", "required", "options", "getOptionKey", "getOptionLabel", "getOptionValue", "onChange"],
20
+ _excluded2 = ["id", "className", "sx", "name", "label", "value", "error", "helperText", "fullWidth", "disabled", "focused", "loading", "readOnly", "required", "options", "getOptionKey", "getOptionLabel", "getOptionValue", "onChange"],
21
+ _excluded3 = ["formik", "id", "className", "sx", "name", "label", "value", "error", "helperText", "fullWidth", "disabled", "focused", "loading", "readOnly", "required", "options", "getOptionKey", "getOptionLabel", "getOptionValue", "onChange"];
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
24
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
25
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
26
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
27
+ function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
28
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }
29
+ function _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
30
+ const StyledMuiFormControl = (0, _styles.styled)( /*#__PURE__*/_react.default.forwardRef((props, ref) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.FormControl, _objectSpread(_objectSpread({}, props), {}, {
31
+ ref: ref
32
+ }))))(() => {
33
+ return {
34
+ "&.MuiFormControl-root": {
35
+ "& .MuiSelect-select": {
36
+ minHeight: "auto",
37
+ height: "1.4375em",
38
+ display: "flex",
39
+ alignItems: "center",
40
+ lineHeight: "1"
41
+ },
42
+ "&.required .MuiInputBase-root": {
43
+ backgroundColor: _apperance.palette.background.required
44
+ },
45
+ "& .MuiFormLabel-root": {
46
+ zIndex: 0,
47
+ lineSpacing: "-0.03em",
48
+ position: "initial",
49
+ transform: "none",
50
+ fontSize: "0.8rem",
51
+ fontWeight: "600",
52
+ marginBottom: "4px",
53
+ color: _apperance.palette.gray.darker,
54
+ "&.Mui-focused ": {
55
+ color: _apperance.palette.primary
56
+ },
57
+ "&.Mui-disabled": {
58
+ color: _apperance.palette.gray.darker
59
+ },
60
+ "&.Mui-error": {
61
+ color: _apperance.palette.error
62
+ }
63
+ },
64
+ "& .MuiInputBase-root": {
65
+ backgroundColor: _apperance.palette.white,
66
+ border: "2px solid ".concat(_apperance.palette.gray.dark),
67
+ borderRadius: "5px",
68
+ "&.Mui-focused ": {
69
+ border: "2px solid ".concat(_apperance.palette.primary)
70
+ },
71
+ "&.Mui-error ": {
72
+ border: "2px solid ".concat(_apperance.palette.error),
73
+ backgroundColor: _apperance.palette.background.error
74
+ },
75
+ "&.Mui-disabled ": {
76
+ backgroundColor: "".concat(_apperance.palette.secondary)
77
+ },
78
+ "& .MuiInputBase-input": {
79
+ padding: "4px 12px",
80
+ fontSize: "0.7rem"
81
+ }
82
+ },
83
+ "& .MuiFormHelperText-root": {
84
+ fontWeight: "bold",
85
+ fontSize: ".7rem",
86
+ color: _apperance.palette.gray.darker
87
+ },
88
+ "& fieldset": {
89
+ display: "none"
90
+ }
91
+ }
92
+ };
93
+ });
94
+ const LoadingProgress = () => {
95
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.CircularProgress, {
96
+ size: 16,
97
+ sx: {
98
+ color: _apperance.palette.primary,
99
+ position: "absolute",
100
+ right: "14px"
101
+ }
102
+ });
103
+ };
104
+ const PuiStandardSelect = _ref => {
105
+ let {
106
+ id,
107
+ className,
108
+ sx,
109
+ name,
110
+ label,
111
+ value,
112
+ error,
113
+ helperText,
114
+ fullWidth,
115
+ disabled,
116
+ focused,
117
+ loading,
118
+ readOnly,
119
+ required,
120
+ options,
121
+ getOptionKey,
122
+ getOptionLabel,
123
+ getOptionValue,
124
+ onChange
125
+ } = _ref,
126
+ rest = _objectWithoutProperties(_ref, _excluded);
127
+ const selectId = _react.default.useId();
128
+ const [selectedValue, setSelectedValue] = _react.default.useState(value !== null && value !== void 0 ? value : "");
129
+ const changeHandler = (event, option) => {
130
+ setSelectedValue(option.props.value);
131
+ onChange(option.props.value);
132
+ };
133
+ _react.default.useEffect(() => {
134
+ setSelectedValue(value !== null && value !== void 0 ? value : "");
135
+ }, [value]);
136
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(StyledMuiFormControl, {
137
+ fullWidth: fullWidth,
138
+ sx: sx,
139
+ className: "".concat(required ? "required" : "", " ").concat(className),
140
+ focused: focused,
141
+ error: error,
142
+ disabled: disabled || loading,
143
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_material.InputLabel, {
144
+ id: selectId,
145
+ required: required,
146
+ children: label
147
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.Select, _objectSpread(_objectSpread({
148
+ labelId: selectId,
149
+ id: id,
150
+ label: label,
151
+ onChange: changeHandler,
152
+ value: selectedValue,
153
+ IconComponent: loading ? LoadingProgress : _ArrowDropDown.default,
154
+ inputProps: {
155
+ readOnly,
156
+ name
157
+ },
158
+ MenuProps: {
159
+ sx: {
160
+ "& .MuiMenu-list": {
161
+ padding: 0,
162
+ "& .MuiMenuItem-root:not(:last-child)": {
163
+ borderBottom: "1px solid ".concat(_apperance.palette.gray.light)
164
+ },
165
+ "& .MuiMenuItem-root": {
166
+ fontSize: 13,
167
+ height: "fit-content",
168
+ minHeight: "auto"
169
+ }
170
+ }
171
+ }
172
+ }
173
+ }, rest), {}, {
174
+ children: Boolean(options) && options.map(option => /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.MenuItem, {
175
+ value: getOptionValue(option),
176
+ children: getOptionLabel(option)
177
+ }, getOptionKey(option)))
178
+ })), /*#__PURE__*/(0, _jsxRuntime.jsx)(_material.FormHelperText, {
179
+ component: "div",
180
+ children: error && Boolean(helperText) ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_PuiIndication.default, {
181
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)(_PuiIcon.default, {
182
+ type: "danger"
183
+ }),
184
+ color: "error",
185
+ size: "small",
186
+ children: helperText
187
+ }) : helperText
188
+ })]
189
+ });
190
+ };
191
+ const PuiFormikSelect = /*#__PURE__*/_react.default.forwardRef((_ref2, ref) => {
192
+ let {
193
+ id,
194
+ className,
195
+ sx,
196
+ name,
197
+ label,
198
+ value,
199
+ error,
200
+ helperText,
201
+ fullWidth,
202
+ disabled,
203
+ focused,
204
+ loading,
205
+ readOnly,
206
+ required,
207
+ options,
208
+ getOptionKey,
209
+ getOptionLabel,
210
+ getOptionValue,
211
+ onChange
212
+ } = _ref2,
213
+ rest = _objectWithoutProperties(_ref2, _excluded2);
214
+ const [innerValue, setInnerValue] = _react.default.useState(value);
215
+ const [field, meta] = (0, _formik.useField)(name);
216
+ const [hasError, setHasError] = _react.default.useState(false);
217
+ const formikContext = (0, _formik.useFormikContext)();
218
+ const changeHandler = option => {
219
+ formikContext.setFieldValue(name, option);
220
+ onChange(option);
221
+ };
222
+ _react.default.useEffect(() => {
223
+ setHasError(Boolean(meta) && Boolean(meta.touched) && Boolean(meta.error));
224
+ }, [meta]);
225
+ _react.default.useEffect(() => {
226
+ if (value !== undefined) {
227
+ formikContext.setFieldValue(name, typeof value === "object" ? getOptionValue(value) : value);
228
+ }
229
+ // eslint-disable-next-line react-hooks/exhaustive-deps
230
+ }, [value]);
231
+ _react.default.useEffect(() => {
232
+ setInnerValue(field.value);
233
+ // eslint-disable-next-line react-hooks/exhaustive-deps
234
+ }, [field.value]);
235
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(PuiStandardSelect, _objectSpread({
236
+ id: id,
237
+ ref: ref,
238
+ className: className,
239
+ sx: sx,
240
+ name: name,
241
+ label: label,
242
+ value: innerValue,
243
+ error: error || hasError,
244
+ helperText: hasError && Boolean(meta.error) ? meta.error : helperText !== null && helperText !== void 0 ? helperText : "",
245
+ fullWidth: fullWidth,
246
+ disabled: disabled,
247
+ focused: focused,
248
+ loading: loading,
249
+ readOnly: readOnly,
250
+ required: required,
251
+ options: options,
252
+ getOptionKey: getOptionKey,
253
+ getOptionLabel: getOptionLabel,
254
+ getOptionValue: getOptionValue,
255
+ onChange: changeHandler
256
+ }, rest));
257
+ });
258
+ const PuiSelect = /*#__PURE__*/_react.default.forwardRef((_ref3, ref) => {
259
+ let {
260
+ formik,
261
+ id,
262
+ className,
263
+ sx,
264
+ name,
265
+ label,
266
+ value,
267
+ error,
268
+ helperText,
269
+ fullWidth,
270
+ disabled,
271
+ focused,
272
+ loading,
273
+ readOnly,
274
+ required,
275
+ options,
276
+ getOptionKey,
277
+ getOptionLabel,
278
+ getOptionValue,
279
+ onChange
280
+ } = _ref3,
281
+ rest = _objectWithoutProperties(_ref3, _excluded3);
282
+ return /*#__PURE__*/_react.default.createElement(formik ? PuiFormikSelect : PuiStandardSelect, _objectSpread({
283
+ ref,
284
+ id,
285
+ className,
286
+ sx,
287
+ name,
288
+ label,
289
+ value,
290
+ error,
291
+ helperText,
292
+ fullWidth,
293
+ disabled,
294
+ focused,
295
+ loading,
296
+ readOnly,
297
+ required,
298
+ options,
299
+ getOptionKey,
300
+ getOptionLabel,
301
+ getOptionValue,
302
+ onChange
303
+ }, rest));
304
+ });
305
+ PuiSelect.propTypes = {
306
+ id: _propTypes.default.string,
307
+ className: _propTypes.default.string,
308
+ sx: _propTypes.default.object,
309
+ name: _propTypes.default.string,
310
+ label: _propTypes.default.string,
311
+ helperText: _propTypes.default.string,
312
+ formik: _propTypes.default.bool,
313
+ disabled: _propTypes.default.bool,
314
+ required: _propTypes.default.bool,
315
+ error: _propTypes.default.bool,
316
+ focused: _propTypes.default.bool,
317
+ loading: _propTypes.default.bool,
318
+ readOnly: _propTypes.default.bool,
319
+ fullWidth: _propTypes.default.bool,
320
+ options: _propTypes.default.array.isRequired,
321
+ getOptionKey: _propTypes.default.func,
322
+ getOptionValue: _propTypes.default.func,
323
+ getOptionLabel: _propTypes.default.func.isRequired,
324
+ onChange: _propTypes.default.func
325
+ };
326
+ PuiSelect.defaultProps = {
327
+ formik: false,
328
+ disabled: false,
329
+ loading: false,
330
+ required: false,
331
+ error: false,
332
+ fullWidth: true,
333
+ readOnly: false,
334
+ options: [],
335
+ getOptionKey: option => {
336
+ if (typeof option === "object") {
337
+ let key = "";
338
+ Object.keys(option).forEach(optionKey => {
339
+ key += "".concat(key.length === 0 ? "" : "-").concat(String(option[optionKey]));
340
+ });
341
+ return key;
342
+ }
343
+ return option;
344
+ },
345
+ getOptionValue: option => option,
346
+ onChange: () => {}
347
+ };
348
+ var _default = PuiSelect;
349
+ exports.default = _default;