@mui/material 5.2.7 → 5.4.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/Autocomplete/Autocomplete.d.ts +7 -0
- package/Autocomplete/Autocomplete.js +22 -10
- package/Backdrop/Backdrop.js +3 -1
- package/Badge/Badge.js +6 -7
- package/Breadcrumbs/BreadcrumbCollapsed.js +1 -3
- package/Button/buttonClasses.d.ts +1 -1
- package/ButtonBase/TouchRipple.js +1 -2
- package/CHANGELOG.md +284 -33
- package/FilledInput/FilledInput.js +4 -1
- package/FormControlLabel/FormControlLabel.js +14 -4
- package/FormControlLabel/formControlLabelClasses.d.ts +2 -0
- package/FormControlLabel/formControlLabelClasses.js +1 -1
- package/FormGroup/FormGroup.js +14 -3
- package/FormGroup/formGroupClasses.d.ts +2 -0
- package/FormGroup/formGroupClasses.js +1 -1
- package/FormHelperText/FormHelperText.js +7 -9
- package/Grid/Grid.js +2 -4
- package/Input/Input.js +4 -1
- package/InputAdornment/InputAdornment.js +6 -9
- package/InputBase/InputBase.js +4 -1
- package/InputLabel/InputLabel.js +4 -0
- package/ListItem/ListItem.js +3 -1
- package/Modal/Modal.js +3 -1
- package/OutlinedInput/NotchedOutline.js +14 -16
- package/OutlinedInput/OutlinedInput.js +1 -1
- package/README.md +5 -4
- package/Radio/RadioButtonIcon.js +2 -6
- package/Select/Select.d.ts +9 -1
- package/Select/Select.js +10 -1
- package/Select/SelectInput.d.ts +1 -0
- package/Select/SelectInput.js +32 -13
- package/Slider/Slider.d.ts +2 -0
- package/Slider/Slider.js +126 -53
- package/StepLabel/StepLabel.js +3 -1
- package/SvgIcon/SvgIcon.js +9 -9
- package/SwipeableDrawer/SwipeArea.js +1 -3
- package/TextField/TextField.d.ts +1 -0
- package/TextField/TextField.js +2 -1
- package/Tooltip/Tooltip.js +6 -1
- package/index.d.ts +7 -2
- package/index.js +6 -3
- package/internal/SwitchBase.js +2 -6
- package/legacy/Autocomplete/Autocomplete.js +23 -10
- package/legacy/Backdrop/Backdrop.js +3 -1
- package/legacy/Badge/Badge.js +6 -7
- package/legacy/Breadcrumbs/BreadcrumbCollapsed.js +1 -3
- package/legacy/ButtonBase/TouchRipple.js +1 -2
- package/legacy/FilledInput/FilledInput.js +4 -1
- package/legacy/FormControlLabel/FormControlLabel.js +14 -4
- package/legacy/FormControlLabel/formControlLabelClasses.js +1 -1
- package/legacy/FormGroup/FormGroup.js +14 -3
- package/legacy/FormGroup/formGroupClasses.js +1 -1
- package/legacy/FormHelperText/FormHelperText.js +7 -9
- package/legacy/Grid/Grid.js +2 -4
- package/legacy/Input/Input.js +4 -1
- package/legacy/InputAdornment/InputAdornment.js +6 -9
- package/legacy/InputBase/InputBase.js +4 -1
- package/legacy/InputLabel/InputLabel.js +4 -0
- package/legacy/ListItem/ListItem.js +3 -1
- package/legacy/Modal/Modal.js +3 -1
- package/legacy/OutlinedInput/NotchedOutline.js +14 -16
- package/legacy/OutlinedInput/OutlinedInput.js +1 -1
- package/legacy/Radio/RadioButtonIcon.js +2 -6
- package/legacy/Select/Select.js +11 -1
- package/legacy/Select/SelectInput.js +36 -16
- package/legacy/Slider/Slider.js +127 -54
- package/legacy/StepLabel/StepLabel.js +3 -1
- package/legacy/SvgIcon/SvgIcon.js +9 -9
- package/legacy/SwipeableDrawer/SwipeArea.js +1 -3
- package/legacy/TextField/TextField.js +2 -1
- package/legacy/Tooltip/Tooltip.js +6 -1
- package/legacy/index.js +6 -3
- package/legacy/internal/SwitchBase.js +2 -6
- package/legacy/useMediaQuery/useMediaQuery.js +86 -31
- package/legacy/utils/shouldSpreadAdditionalProps.js +7 -0
- package/modern/Autocomplete/Autocomplete.js +21 -9
- package/modern/Backdrop/Backdrop.js +3 -1
- package/modern/Badge/Badge.js +6 -7
- package/modern/Breadcrumbs/BreadcrumbCollapsed.js +1 -3
- package/modern/ButtonBase/TouchRipple.js +1 -2
- package/modern/FilledInput/FilledInput.js +4 -1
- package/modern/FormControlLabel/FormControlLabel.js +14 -4
- package/modern/FormControlLabel/formControlLabelClasses.js +1 -1
- package/modern/FormGroup/FormGroup.js +14 -3
- package/modern/FormGroup/formGroupClasses.js +1 -1
- package/modern/FormHelperText/FormHelperText.js +7 -9
- package/modern/Grid/Grid.js +2 -4
- package/modern/Input/Input.js +4 -1
- package/modern/InputAdornment/InputAdornment.js +6 -9
- package/modern/InputBase/InputBase.js +4 -1
- package/modern/InputLabel/InputLabel.js +4 -0
- package/modern/ListItem/ListItem.js +3 -1
- package/modern/Modal/Modal.js +3 -1
- package/modern/OutlinedInput/NotchedOutline.js +14 -16
- package/modern/OutlinedInput/OutlinedInput.js +1 -1
- package/modern/Radio/RadioButtonIcon.js +2 -6
- package/modern/Select/Select.js +10 -1
- package/modern/Select/SelectInput.js +32 -13
- package/modern/Slider/Slider.js +126 -53
- package/modern/StepLabel/StepLabel.js +3 -1
- package/modern/SvgIcon/SvgIcon.js +8 -8
- package/modern/SwipeableDrawer/SwipeArea.js +1 -3
- package/modern/TextField/TextField.js +2 -1
- package/modern/Tooltip/Tooltip.js +6 -1
- package/modern/index.js +6 -3
- package/modern/internal/SwitchBase.js +2 -6
- package/modern/useMediaQuery/useMediaQuery.js +68 -26
- package/modern/utils/shouldSpreadAdditionalProps.js +7 -0
- package/node/Autocomplete/Autocomplete.js +22 -10
- package/node/Backdrop/Backdrop.js +3 -1
- package/node/Badge/Badge.js +8 -8
- package/node/Breadcrumbs/BreadcrumbCollapsed.js +1 -3
- package/node/ButtonBase/TouchRipple.js +1 -2
- package/node/FilledInput/FilledInput.js +4 -1
- package/node/FormControlLabel/FormControlLabel.js +15 -4
- package/node/FormControlLabel/formControlLabelClasses.js +1 -1
- package/node/FormGroup/FormGroup.js +15 -3
- package/node/FormGroup/formGroupClasses.js +1 -1
- package/node/FormHelperText/FormHelperText.js +6 -9
- package/node/Grid/Grid.js +2 -4
- package/node/Input/Input.js +4 -1
- package/node/InputAdornment/InputAdornment.js +5 -9
- package/node/InputBase/InputBase.js +4 -1
- package/node/InputLabel/InputLabel.js +4 -0
- package/node/ListItem/ListItem.js +3 -1
- package/node/Modal/Modal.js +3 -1
- package/node/OutlinedInput/NotchedOutline.js +12 -16
- package/node/OutlinedInput/OutlinedInput.js +1 -1
- package/node/Radio/RadioButtonIcon.js +2 -6
- package/node/Select/Select.js +10 -1
- package/node/Select/SelectInput.js +31 -13
- package/node/Slider/Slider.js +112 -45
- package/node/StepLabel/StepLabel.js +3 -1
- package/node/SvgIcon/SvgIcon.js +9 -9
- package/node/SwipeableDrawer/SwipeArea.js +1 -3
- package/node/TextField/TextField.js +2 -1
- package/node/Tooltip/Tooltip.js +6 -1
- package/node/index.js +41 -16
- package/node/internal/SwitchBase.js +2 -6
- package/node/useMediaQuery/useMediaQuery.js +68 -26
- package/node/utils/shouldSpreadAdditionalProps.js +15 -0
- package/package.json +7 -7
- package/styles/ThemeProvider.d.ts +1 -1
- package/styles/components.d.ts +452 -113
- package/styles/createTheme.d.ts +12 -6
- package/styles/overrides.d.ts +16 -4
- package/styles/useThemeProps.d.ts +2 -1
- package/umd/material-ui.development.js +2988 -4926
- package/umd/material-ui.production.min.js +21 -21
- package/useMediaQuery/useMediaQuery.d.ts +4 -0
- package/useMediaQuery/useMediaQuery.js +68 -26
- package/utils/shouldSpreadAdditionalProps.js +7 -0
|
@@ -63,7 +63,7 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
63
63
|
|
|
64
64
|
var _ClearIcon, _ArrowDropDownIcon;
|
|
65
65
|
|
|
66
|
-
const _excluded = ["autoComplete", "autoHighlight", "autoSelect", "blurOnSelect", "ChipProps", "className", "clearIcon", "clearOnBlur", "clearOnEscape", "clearText", "closeText", "componentsProps", "defaultValue", "disableClearable", "disableCloseOnSelect", "disabled", "disabledItemsFocusable", "disableListWrap", "disablePortal", "filterOptions", "filterSelectedOptions", "forcePopupIcon", "freeSolo", "fullWidth", "getLimitTagsText", "getOptionDisabled", "getOptionLabel", "isOptionEqualToValue", "groupBy", "handleHomeEndKeys", "id", "includeInputInList", "inputValue", "limitTags", "ListboxComponent", "ListboxProps", "loading", "loadingText", "multiple", "noOptionsText", "onChange", "onClose", "onHighlightChange", "onInputChange", "onOpen", "open", "openOnFocus", "openText", "options", "PaperComponent", "PopperComponent", "popupIcon", "renderGroup", "renderInput", "renderOption", "renderTags", "selectOnFocus", "size", "value"];
|
|
66
|
+
const _excluded = ["autoComplete", "autoHighlight", "autoSelect", "blurOnSelect", "ChipProps", "className", "clearIcon", "clearOnBlur", "clearOnEscape", "clearText", "closeText", "componentsProps", "defaultValue", "disableClearable", "disableCloseOnSelect", "disabled", "disabledItemsFocusable", "disableListWrap", "disablePortal", "filterOptions", "filterSelectedOptions", "forcePopupIcon", "freeSolo", "fullWidth", "getLimitTagsText", "getOptionDisabled", "getOptionLabel", "isOptionEqualToValue", "groupBy", "handleHomeEndKeys", "id", "includeInputInList", "inputValue", "limitTags", "ListboxComponent", "ListboxProps", "loading", "loadingText", "multiple", "noOptionsText", "onChange", "onClose", "onHighlightChange", "onInputChange", "onOpen", "open", "openOnFocus", "openText", "options", "PaperComponent", "PopperComponent", "popupIcon", "readOnly", "renderGroup", "renderInput", "renderOption", "renderTags", "selectOnFocus", "size", "value"];
|
|
67
67
|
|
|
68
68
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
69
69
|
|
|
@@ -389,7 +389,7 @@ const AutocompleteGroupUl = (0, _styled.default)('ul', {
|
|
|
389
389
|
}
|
|
390
390
|
});
|
|
391
391
|
const Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps, ref) {
|
|
392
|
-
var _componentsProps$clea;
|
|
392
|
+
var _componentsProps$clea, _componentsProps$pape;
|
|
393
393
|
|
|
394
394
|
const props = (0, _useThemeProps.default)({
|
|
395
395
|
props: inProps,
|
|
@@ -444,6 +444,7 @@ const Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps
|
|
|
444
444
|
PaperComponent = _Paper.default,
|
|
445
445
|
PopperComponent = _Popper.default,
|
|
446
446
|
popupIcon = _ArrowDropDownIcon || (_ArrowDropDownIcon = /*#__PURE__*/(0, _jsxRuntime.jsx)(_ArrowDropDown.default, {})),
|
|
447
|
+
readOnly = false,
|
|
447
448
|
renderGroup: renderGroupProp,
|
|
448
449
|
renderInput,
|
|
449
450
|
renderOption: renderOptionProp,
|
|
@@ -476,7 +477,7 @@ const Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps
|
|
|
476
477
|
} = (0, _base.useAutocomplete)((0, _extends2.default)({}, props, {
|
|
477
478
|
componentName: 'Autocomplete'
|
|
478
479
|
}));
|
|
479
|
-
const hasClearIcon = !disableClearable && !disabled && dirty;
|
|
480
|
+
const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;
|
|
480
481
|
const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;
|
|
481
482
|
const ownerState = (0, _extends2.default)({}, props, {
|
|
482
483
|
disablePortal,
|
|
@@ -593,7 +594,8 @@ const Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps
|
|
|
593
594
|
},
|
|
594
595
|
inputProps: (0, _extends2.default)({
|
|
595
596
|
className: (0, _clsx.default)(classes.input),
|
|
596
|
-
disabled
|
|
597
|
+
disabled,
|
|
598
|
+
readOnly
|
|
597
599
|
}, getInputProps())
|
|
598
600
|
})
|
|
599
601
|
})), popupOpen && anchorEl ? /*#__PURE__*/(0, _jsxRuntime.jsx)(AutocompletePopper, {
|
|
@@ -607,10 +609,11 @@ const Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps
|
|
|
607
609
|
role: "presentation",
|
|
608
610
|
anchorEl: anchorEl,
|
|
609
611
|
open: true,
|
|
610
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(AutocompletePaper, {
|
|
611
|
-
as: PaperComponent,
|
|
612
|
-
className: classes.paper,
|
|
612
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(AutocompletePaper, (0, _extends2.default)({
|
|
613
613
|
ownerState: ownerState,
|
|
614
|
+
as: PaperComponent
|
|
615
|
+
}, componentsProps.paper, {
|
|
616
|
+
className: (0, _clsx.default)(classes.paper, (_componentsProps$pape = componentsProps.paper) == null ? void 0 : _componentsProps$pape.className),
|
|
614
617
|
children: [loading && groupedOptions.length === 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(AutocompleteLoading, {
|
|
615
618
|
className: classes.loading,
|
|
616
619
|
ownerState: ownerState,
|
|
@@ -641,7 +644,7 @@ const Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps
|
|
|
641
644
|
return renderListOption(option, index);
|
|
642
645
|
})
|
|
643
646
|
})) : null]
|
|
644
|
-
})
|
|
647
|
+
}))
|
|
645
648
|
}) : null]
|
|
646
649
|
});
|
|
647
650
|
});
|
|
@@ -711,7 +714,7 @@ process.env.NODE_ENV !== "production" ? Autocomplete.propTypes
|
|
|
711
714
|
* If `true`, the input's text is cleared on blur if no value is selected.
|
|
712
715
|
*
|
|
713
716
|
* Set to `true` if you want to help the user enter a new value.
|
|
714
|
-
* Set to `false` if you want to help the user resume
|
|
717
|
+
* Set to `false` if you want to help the user resume their search.
|
|
715
718
|
* @default !props.freeSolo
|
|
716
719
|
*/
|
|
717
720
|
clearOnBlur: _propTypes.default.bool,
|
|
@@ -742,7 +745,10 @@ process.env.NODE_ENV !== "production" ? Autocomplete.propTypes
|
|
|
742
745
|
* The props used for each slot inside.
|
|
743
746
|
* @default {}
|
|
744
747
|
*/
|
|
745
|
-
componentsProps: _propTypes.default.
|
|
748
|
+
componentsProps: _propTypes.default.shape({
|
|
749
|
+
clearIndicator: _propTypes.default.object,
|
|
750
|
+
paper: _propTypes.default.object
|
|
751
|
+
}),
|
|
746
752
|
|
|
747
753
|
/**
|
|
748
754
|
* The default value. Use when the component is not controlled.
|
|
@@ -1030,6 +1036,12 @@ process.env.NODE_ENV !== "production" ? Autocomplete.propTypes
|
|
|
1030
1036
|
*/
|
|
1031
1037
|
popupIcon: _propTypes.default.node,
|
|
1032
1038
|
|
|
1039
|
+
/**
|
|
1040
|
+
* If `true`, the component becomes readonly. It is also supported for multiple tags where the tag cannot be deleted.
|
|
1041
|
+
* @default false
|
|
1042
|
+
*/
|
|
1043
|
+
readOnly: _propTypes.default.bool,
|
|
1044
|
+
|
|
1033
1045
|
/**
|
|
1034
1046
|
* Render the group.
|
|
1035
1047
|
*
|
|
@@ -148,7 +148,9 @@ process.env.NODE_ENV !== "production" ? Backdrop.propTypes
|
|
|
148
148
|
* The props used for each slot inside the Backdrop.
|
|
149
149
|
* @default {}
|
|
150
150
|
*/
|
|
151
|
-
componentsProps: _propTypes.default.
|
|
151
|
+
componentsProps: _propTypes.default.shape({
|
|
152
|
+
root: _propTypes.default.object
|
|
153
|
+
}),
|
|
152
154
|
|
|
153
155
|
/**
|
|
154
156
|
* If `true`, the backdrop is invisible.
|
package/node/Badge/Badge.js
CHANGED
|
@@ -27,6 +27,8 @@ var _styled = _interopRequireDefault(require("../styles/styled"));
|
|
|
27
27
|
|
|
28
28
|
var _useThemeProps = _interopRequireDefault(require("../styles/useThemeProps"));
|
|
29
29
|
|
|
30
|
+
var _shouldSpreadAdditionalProps = _interopRequireDefault(require("../utils/shouldSpreadAdditionalProps"));
|
|
31
|
+
|
|
30
32
|
var _capitalize = _interopRequireDefault(require("../utils/capitalize"));
|
|
31
33
|
|
|
32
34
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -179,11 +181,6 @@ const BadgeBadge = (0, _styled.default)('span', {
|
|
|
179
181
|
duration: theme.transitions.duration.leavingScreen
|
|
180
182
|
})
|
|
181
183
|
}));
|
|
182
|
-
|
|
183
|
-
const shouldSpreadAdditionalProps = Slot => {
|
|
184
|
-
return !Slot || !(0, _base.isHostComponent)(Slot);
|
|
185
|
-
};
|
|
186
|
-
|
|
187
184
|
const Badge = /*#__PURE__*/React.forwardRef(function Badge(inProps, ref) {
|
|
188
185
|
var _componentsProps$root, _componentsProps$badg;
|
|
189
186
|
|
|
@@ -242,14 +239,14 @@ const Badge = /*#__PURE__*/React.forwardRef(function Badge(inProps, ref) {
|
|
|
242
239
|
Badge: BadgeBadge
|
|
243
240
|
}, components),
|
|
244
241
|
componentsProps: {
|
|
245
|
-
root: (0, _extends2.default)({}, componentsProps.root,
|
|
242
|
+
root: (0, _extends2.default)({}, componentsProps.root, (0, _shouldSpreadAdditionalProps.default)(components.Root) && {
|
|
246
243
|
as: component,
|
|
247
244
|
ownerState: (0, _extends2.default)({}, (_componentsProps$root = componentsProps.root) == null ? void 0 : _componentsProps$root.ownerState, {
|
|
248
245
|
color,
|
|
249
246
|
overlap
|
|
250
247
|
})
|
|
251
248
|
}),
|
|
252
|
-
badge: (0, _extends2.default)({}, componentsProps.badge,
|
|
249
|
+
badge: (0, _extends2.default)({}, componentsProps.badge, (0, _shouldSpreadAdditionalProps.default)(components.Badge) && {
|
|
253
250
|
ownerState: (0, _extends2.default)({}, (_componentsProps$badg = componentsProps.badge) == null ? void 0 : _componentsProps$badg.ownerState, {
|
|
254
251
|
color,
|
|
255
252
|
overlap
|
|
@@ -323,7 +320,10 @@ process.env.NODE_ENV !== "production" ? Badge.propTypes
|
|
|
323
320
|
* The props used for each slot inside the Badge.
|
|
324
321
|
* @default {}
|
|
325
322
|
*/
|
|
326
|
-
componentsProps: _propTypes.default.
|
|
323
|
+
componentsProps: _propTypes.default.shape({
|
|
324
|
+
badge: _propTypes.default.object,
|
|
325
|
+
root: _propTypes.default.object
|
|
326
|
+
}),
|
|
327
327
|
|
|
328
328
|
/**
|
|
329
329
|
* If `true`, the badge is invisible.
|
|
@@ -27,9 +27,7 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
|
|
|
27
27
|
|
|
28
28
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
29
29
|
|
|
30
|
-
const BreadcrumbCollapsedButton = (0, _styled.default)(_ButtonBase.default
|
|
31
|
-
skipSx: true
|
|
32
|
-
})(({
|
|
30
|
+
const BreadcrumbCollapsedButton = (0, _styled.default)(_ButtonBase.default)(({
|
|
33
31
|
theme
|
|
34
32
|
}) => (0, _extends2.default)({
|
|
35
33
|
display: 'flex',
|
|
@@ -279,7 +279,10 @@ process.env.NODE_ENV !== "production" ? FilledInput.propTypes
|
|
|
279
279
|
* The props used for each slot inside the Input.
|
|
280
280
|
* @default {}
|
|
281
281
|
*/
|
|
282
|
-
componentsProps: _propTypes.default.
|
|
282
|
+
componentsProps: _propTypes.default.shape({
|
|
283
|
+
input: _propTypes.default.object,
|
|
284
|
+
root: _propTypes.default.object
|
|
285
|
+
}),
|
|
283
286
|
|
|
284
287
|
/**
|
|
285
288
|
* The default value. Use when the component is not controlled.
|
|
@@ -33,6 +33,8 @@ var _useThemeProps = _interopRequireDefault(require("../styles/useThemeProps"));
|
|
|
33
33
|
|
|
34
34
|
var _formControlLabelClasses = _interopRequireWildcard(require("./formControlLabelClasses"));
|
|
35
35
|
|
|
36
|
+
var _formControlState = _interopRequireDefault(require("../FormControl/formControlState"));
|
|
37
|
+
|
|
36
38
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
37
39
|
|
|
38
40
|
const _excluded = ["checked", "className", "componentsProps", "control", "disabled", "disableTypography", "inputRef", "label", "labelPlacement", "name", "onChange", "value"];
|
|
@@ -45,10 +47,11 @@ const useUtilityClasses = ownerState => {
|
|
|
45
47
|
const {
|
|
46
48
|
classes,
|
|
47
49
|
disabled,
|
|
48
|
-
labelPlacement
|
|
50
|
+
labelPlacement,
|
|
51
|
+
error
|
|
49
52
|
} = ownerState;
|
|
50
53
|
const slots = {
|
|
51
|
-
root: ['root', disabled && 'disabled', `labelPlacement${(0, _capitalize.default)(labelPlacement)}
|
|
54
|
+
root: ['root', disabled && 'disabled', `labelPlacement${(0, _capitalize.default)(labelPlacement)}`, error && 'error'],
|
|
52
55
|
label: ['label', disabled && 'disabled']
|
|
53
56
|
};
|
|
54
57
|
return (0, _base.unstable_composeClasses)(slots, _formControlLabelClasses.getFormControlLabelUtilityClasses, classes);
|
|
@@ -139,10 +142,16 @@ const FormControlLabel = /*#__PURE__*/React.forwardRef(function FormControlLabel
|
|
|
139
142
|
controlProps[key] = props[key];
|
|
140
143
|
}
|
|
141
144
|
});
|
|
145
|
+
const fcs = (0, _formControlState.default)({
|
|
146
|
+
props,
|
|
147
|
+
muiFormControl,
|
|
148
|
+
states: ['error']
|
|
149
|
+
});
|
|
142
150
|
const ownerState = (0, _extends2.default)({}, props, {
|
|
143
151
|
disabled,
|
|
144
152
|
label,
|
|
145
|
-
labelPlacement
|
|
153
|
+
labelPlacement,
|
|
154
|
+
error: fcs.error
|
|
146
155
|
});
|
|
147
156
|
const classes = useUtilityClasses(ownerState);
|
|
148
157
|
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(FormControlLabelRoot, (0, _extends2.default)({
|
|
@@ -185,7 +194,9 @@ process.env.NODE_ENV !== "production" ? FormControlLabel.propTypes
|
|
|
185
194
|
* The props used for each slot inside.
|
|
186
195
|
* @default {}
|
|
187
196
|
*/
|
|
188
|
-
componentsProps: _propTypes.default.
|
|
197
|
+
componentsProps: _propTypes.default.shape({
|
|
198
|
+
typography: _propTypes.default.object
|
|
199
|
+
}),
|
|
189
200
|
|
|
190
201
|
/**
|
|
191
202
|
* A control element. For instance, it can be a `Radio`, a `Switch` or a `Checkbox`.
|
|
@@ -12,6 +12,6 @@ function getFormControlLabelUtilityClasses(slot) {
|
|
|
12
12
|
return (0, _base.generateUtilityClass)('MuiFormControlLabel', slot);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
const formControlLabelClasses = (0, _base.generateUtilityClasses)('MuiFormControlLabel', ['root', 'labelPlacementStart', 'labelPlacementTop', 'labelPlacementBottom', 'disabled', 'label']);
|
|
15
|
+
const formControlLabelClasses = (0, _base.generateUtilityClasses)('MuiFormControlLabel', ['root', 'labelPlacementStart', 'labelPlacementTop', 'labelPlacementBottom', 'disabled', 'label', 'error']);
|
|
16
16
|
var _default = formControlLabelClasses;
|
|
17
17
|
exports.default = _default;
|
|
@@ -25,6 +25,10 @@ var _useThemeProps = _interopRequireDefault(require("../styles/useThemeProps"));
|
|
|
25
25
|
|
|
26
26
|
var _formGroupClasses = require("./formGroupClasses");
|
|
27
27
|
|
|
28
|
+
var _useFormControl = _interopRequireDefault(require("../FormControl/useFormControl"));
|
|
29
|
+
|
|
30
|
+
var _formControlState = _interopRequireDefault(require("../FormControl/formControlState"));
|
|
31
|
+
|
|
28
32
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
29
33
|
|
|
30
34
|
const _excluded = ["className", "row"];
|
|
@@ -36,10 +40,11 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
36
40
|
const useUtilityClasses = ownerState => {
|
|
37
41
|
const {
|
|
38
42
|
classes,
|
|
39
|
-
row
|
|
43
|
+
row,
|
|
44
|
+
error
|
|
40
45
|
} = ownerState;
|
|
41
46
|
const slots = {
|
|
42
|
-
root: ['root', row && 'row']
|
|
47
|
+
root: ['root', row && 'row', error && 'error']
|
|
43
48
|
};
|
|
44
49
|
return (0, _base.unstable_composeClasses)(slots, _formGroupClasses.getFormGroupUtilityClass, classes);
|
|
45
50
|
};
|
|
@@ -78,8 +83,15 @@ const FormGroup = /*#__PURE__*/React.forwardRef(function FormGroup(inProps, ref)
|
|
|
78
83
|
row = false
|
|
79
84
|
} = props,
|
|
80
85
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
86
|
+
const muiFormControl = (0, _useFormControl.default)();
|
|
87
|
+
const fcs = (0, _formControlState.default)({
|
|
88
|
+
props,
|
|
89
|
+
muiFormControl,
|
|
90
|
+
states: ['error']
|
|
91
|
+
});
|
|
81
92
|
const ownerState = (0, _extends2.default)({}, props, {
|
|
82
|
-
row
|
|
93
|
+
row,
|
|
94
|
+
error: fcs.error
|
|
83
95
|
});
|
|
84
96
|
const classes = useUtilityClasses(ownerState);
|
|
85
97
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(FormGroupRoot, (0, _extends2.default)({
|
|
@@ -12,6 +12,6 @@ function getFormGroupUtilityClass(slot) {
|
|
|
12
12
|
return (0, _base.generateUtilityClass)('MuiFormGroup', slot);
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
const formGroupClasses = (0, _base.generateUtilityClasses)('MuiFormGroup', ['root', 'row']);
|
|
15
|
+
const formGroupClasses = (0, _base.generateUtilityClasses)('MuiFormGroup', ['root', 'row', 'error']);
|
|
16
16
|
var _default = formGroupClasses;
|
|
17
17
|
exports.default = _default;
|
|
@@ -33,6 +33,8 @@ var _useThemeProps = _interopRequireDefault(require("../styles/useThemeProps"));
|
|
|
33
33
|
|
|
34
34
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
35
35
|
|
|
36
|
+
var _span;
|
|
37
|
+
|
|
36
38
|
const _excluded = ["children", "className", "component", "disabled", "error", "filled", "focused", "margin", "required", "variant"];
|
|
37
39
|
|
|
38
40
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -123,16 +125,11 @@ const FormHelperText = /*#__PURE__*/React.forwardRef(function FormHelperText(inP
|
|
|
123
125
|
className: (0, _clsx.default)(classes.root, className),
|
|
124
126
|
ref: ref
|
|
125
127
|
}, other, {
|
|
126
|
-
children: children === ' ' ?
|
|
127
|
-
/*#__PURE__*/
|
|
128
|
-
// notranslate needed while Google Translate will not fix zero-width space issue
|
|
129
|
-
// eslint-disable-next-line react/no-danger
|
|
130
|
-
(0, _jsxRuntime.jsx)("span", {
|
|
128
|
+
children: children === ' ' ? // notranslate needed while Google Translate will not fix zero-width space issue
|
|
129
|
+
_span || (_span = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
131
130
|
className: "notranslate",
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
}
|
|
135
|
-
}) : children
|
|
131
|
+
children: "\u200B"
|
|
132
|
+
})) : children
|
|
136
133
|
}));
|
|
137
134
|
});
|
|
138
135
|
process.env.NODE_ENV !== "production" ? FormHelperText.propTypes
|
package/node/Grid/Grid.js
CHANGED
|
@@ -286,10 +286,8 @@ const GridRoot = (0, _styled.default)('div', {
|
|
|
286
286
|
|
|
287
287
|
}, ownerState.zeroMinWidth && {
|
|
288
288
|
minWidth: 0
|
|
289
|
-
}, ownerState.wrap
|
|
290
|
-
flexWrap:
|
|
291
|
-
}, ownerState.wrap === 'reverse' && {
|
|
292
|
-
flexWrap: 'wrap-reverse'
|
|
289
|
+
}, ownerState.wrap !== 'wrap' && {
|
|
290
|
+
flexWrap: ownerState.wrap
|
|
293
291
|
}), generateDirection, generateRowGap, generateColumnGap, generateGrid);
|
|
294
292
|
|
|
295
293
|
const useUtilityClasses = ownerState => {
|
package/node/Input/Input.js
CHANGED
|
@@ -215,7 +215,10 @@ process.env.NODE_ENV !== "production" ? Input.propTypes
|
|
|
215
215
|
* The props used for each slot inside the Input.
|
|
216
216
|
* @default {}
|
|
217
217
|
*/
|
|
218
|
-
componentsProps: _propTypes.default.
|
|
218
|
+
componentsProps: _propTypes.default.shape({
|
|
219
|
+
input: _propTypes.default.object,
|
|
220
|
+
root: _propTypes.default.object
|
|
221
|
+
}),
|
|
219
222
|
|
|
220
223
|
/**
|
|
221
224
|
* The default value. Use when the component is not controlled.
|
|
@@ -35,6 +35,8 @@ var _useThemeProps = _interopRequireDefault(require("../styles/useThemeProps"));
|
|
|
35
35
|
|
|
36
36
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
37
37
|
|
|
38
|
+
var _span;
|
|
39
|
+
|
|
38
40
|
const _excluded = ["children", "className", "component", "disablePointerEvents", "disableTypography", "position", "variant"];
|
|
39
41
|
|
|
40
42
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -144,17 +146,11 @@ const InputAdornment = /*#__PURE__*/React.forwardRef(function InputAdornment(inP
|
|
|
144
146
|
children: children
|
|
145
147
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
|
|
146
148
|
children: [position === 'start' ?
|
|
147
|
-
/*#__PURE__*/
|
|
148
|
-
|
|
149
149
|
/* notranslate needed while Google Translate will not fix zero-width space issue */
|
|
150
|
-
|
|
151
|
-
/* eslint-disable-next-line react/no-danger */
|
|
152
|
-
(0, _jsxRuntime.jsx)("span", {
|
|
150
|
+
_span || (_span = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
153
151
|
className: "notranslate",
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
}
|
|
157
|
-
}) : null, children]
|
|
152
|
+
children: "\u200B"
|
|
153
|
+
})) : null, children]
|
|
158
154
|
})
|
|
159
155
|
}))
|
|
160
156
|
});
|
|
@@ -584,7 +584,10 @@ process.env.NODE_ENV !== "production" ? InputBase.propTypes
|
|
|
584
584
|
* The props used for each slot inside the Input.
|
|
585
585
|
* @default {}
|
|
586
586
|
*/
|
|
587
|
-
componentsProps: _propTypes.default.
|
|
587
|
+
componentsProps: _propTypes.default.shape({
|
|
588
|
+
input: _propTypes.default.object,
|
|
589
|
+
root: _propTypes.default.object
|
|
590
|
+
}),
|
|
588
591
|
|
|
589
592
|
/**
|
|
590
593
|
* The default value. Use when the component is not controlled.
|
|
@@ -107,6 +107,8 @@ const InputLabelRoot = (0, _styled.default)(_FormLabel.default, {
|
|
|
107
107
|
}, ownerState.size === 'small' && {
|
|
108
108
|
transform: 'translate(12px, 13px) scale(1)'
|
|
109
109
|
}, ownerState.shrink && (0, _extends2.default)({
|
|
110
|
+
userSelect: 'none',
|
|
111
|
+
pointerEvents: 'auto',
|
|
110
112
|
transform: 'translate(12px, 7px) scale(0.75)',
|
|
111
113
|
maxWidth: 'calc(133% - 24px)'
|
|
112
114
|
}, ownerState.size === 'small' && {
|
|
@@ -120,6 +122,8 @@ const InputLabelRoot = (0, _styled.default)(_FormLabel.default, {
|
|
|
120
122
|
}, ownerState.size === 'small' && {
|
|
121
123
|
transform: 'translate(14px, 9px) scale(1)'
|
|
122
124
|
}, ownerState.shrink && {
|
|
125
|
+
userSelect: 'none',
|
|
126
|
+
pointerEvents: 'auto',
|
|
123
127
|
maxWidth: 'calc(133% - 24px)',
|
|
124
128
|
transform: 'translate(14px, -9px) scale(0.75)'
|
|
125
129
|
})));
|
|
@@ -375,7 +375,9 @@ process.env.NODE_ENV !== "production" ? ListItem.propTypes
|
|
|
375
375
|
* The props used for each slot inside the Input.
|
|
376
376
|
* @default {}
|
|
377
377
|
*/
|
|
378
|
-
componentsProps: _propTypes.default.
|
|
378
|
+
componentsProps: _propTypes.default.shape({
|
|
379
|
+
root: _propTypes.default.object
|
|
380
|
+
}),
|
|
379
381
|
|
|
380
382
|
/**
|
|
381
383
|
* The container component used when a `ListItemSecondaryAction` is the last child.
|
package/node/Modal/Modal.js
CHANGED
|
@@ -201,7 +201,9 @@ process.env.NODE_ENV !== "production" ? Modal.propTypes
|
|
|
201
201
|
* The props used for each slot inside the Modal.
|
|
202
202
|
* @default {}
|
|
203
203
|
*/
|
|
204
|
-
componentsProps: _propTypes.default.
|
|
204
|
+
componentsProps: _propTypes.default.shape({
|
|
205
|
+
root: _propTypes.default.object
|
|
206
|
+
}),
|
|
205
207
|
|
|
206
208
|
/**
|
|
207
209
|
* An HTML element or function that returns one.
|
|
@@ -19,6 +19,8 @@ var _styled = _interopRequireDefault(require("../styles/styled"));
|
|
|
19
19
|
|
|
20
20
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
21
21
|
|
|
22
|
+
var _span;
|
|
23
|
+
|
|
22
24
|
const _excluded = ["children", "classes", "className", "label", "notched"];
|
|
23
25
|
|
|
24
26
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
@@ -41,14 +43,12 @@ const NotchedOutlineRoot = (0, _styled.default)('fieldset')({
|
|
|
41
43
|
overflow: 'hidden',
|
|
42
44
|
minWidth: '0%'
|
|
43
45
|
});
|
|
44
|
-
const NotchedOutlineLegend = (0, _styled.default)('legend'
|
|
45
|
-
skipSx: true
|
|
46
|
-
})(({
|
|
46
|
+
const NotchedOutlineLegend = (0, _styled.default)('legend')(({
|
|
47
47
|
ownerState,
|
|
48
48
|
theme
|
|
49
49
|
}) => (0, _extends2.default)({
|
|
50
50
|
float: 'unset'
|
|
51
|
-
}, ownerState.
|
|
51
|
+
}, !ownerState.withLabel && {
|
|
52
52
|
padding: 0,
|
|
53
53
|
lineHeight: '11px',
|
|
54
54
|
// sync with `height` in `legend` styles
|
|
@@ -56,7 +56,7 @@ const NotchedOutlineLegend = (0, _styled.default)('legend', {
|
|
|
56
56
|
duration: 150,
|
|
57
57
|
easing: theme.transitions.easing.easeOut
|
|
58
58
|
})
|
|
59
|
-
}, ownerState.
|
|
59
|
+
}, ownerState.withLabel && (0, _extends2.default)({
|
|
60
60
|
display: 'block',
|
|
61
61
|
// Fix conflict with normalize.css and sanitize.css
|
|
62
62
|
width: 'auto',
|
|
@@ -96,9 +96,10 @@ function NotchedOutline(props) {
|
|
|
96
96
|
notched
|
|
97
97
|
} = props,
|
|
98
98
|
other = (0, _objectWithoutPropertiesLoose2.default)(props, _excluded);
|
|
99
|
+
const withLabel = label != null && label !== '';
|
|
99
100
|
const ownerState = (0, _extends2.default)({}, props, {
|
|
100
101
|
notched,
|
|
101
|
-
|
|
102
|
+
withLabel
|
|
102
103
|
});
|
|
103
104
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(NotchedOutlineRoot, (0, _extends2.default)({
|
|
104
105
|
"aria-hidden": true,
|
|
@@ -107,18 +108,13 @@ function NotchedOutline(props) {
|
|
|
107
108
|
}, other, {
|
|
108
109
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(NotchedOutlineLegend, {
|
|
109
110
|
ownerState: ownerState,
|
|
110
|
-
children:
|
|
111
|
+
children: withLabel ? /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
111
112
|
children: label
|
|
112
|
-
}) :
|
|
113
|
-
/*#__PURE__*/
|
|
114
|
-
// notranslate needed while Google Translate will not fix zero-width space issue
|
|
115
|
-
// eslint-disable-next-line react/no-danger
|
|
116
|
-
(0, _jsxRuntime.jsx)("span", {
|
|
113
|
+
}) : // notranslate needed while Google Translate will not fix zero-width space issue
|
|
114
|
+
_span || (_span = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
|
|
117
115
|
className: "notranslate",
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
}
|
|
121
|
-
})
|
|
116
|
+
children: "\u200B"
|
|
117
|
+
}))
|
|
122
118
|
})
|
|
123
119
|
}));
|
|
124
120
|
}
|
|
@@ -160,7 +160,7 @@ const OutlinedInput = /*#__PURE__*/React.forwardRef(function OutlinedInput(inPro
|
|
|
160
160
|
}, components),
|
|
161
161
|
renderSuffix: state => /*#__PURE__*/(0, _jsxRuntime.jsx)(NotchedOutlineRoot, {
|
|
162
162
|
className: classes.notchedOutline,
|
|
163
|
-
label: label && fcs.required ? _React$Fragment || (_React$Fragment = /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
|
|
163
|
+
label: label != null && label !== '' && fcs.required ? _React$Fragment || (_React$Fragment = /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
|
|
164
164
|
children: [label, "\xA0", '*']
|
|
165
165
|
})) : label,
|
|
166
166
|
notched: typeof notched !== 'undefined' ? notched : Boolean(state.startAdornment || state.filled || state.focused)
|
|
@@ -29,15 +29,11 @@ const RadioButtonIconRoot = (0, _styled.default)('span')({
|
|
|
29
29
|
position: 'relative',
|
|
30
30
|
display: 'flex'
|
|
31
31
|
});
|
|
32
|
-
const RadioButtonIconBackground = (0, _styled.default)(_RadioButtonUnchecked.default
|
|
33
|
-
skipSx: true
|
|
34
|
-
})({
|
|
32
|
+
const RadioButtonIconBackground = (0, _styled.default)(_RadioButtonUnchecked.default)({
|
|
35
33
|
// Scale applied to prevent dot misalignment in Safari
|
|
36
34
|
transform: 'scale(1)'
|
|
37
35
|
});
|
|
38
|
-
const RadioButtonIconDot = (0, _styled.default)(_RadioButtonChecked.default
|
|
39
|
-
skipSx: true
|
|
40
|
-
})(({
|
|
36
|
+
const RadioButtonIconDot = (0, _styled.default)(_RadioButtonChecked.default)(({
|
|
41
37
|
theme,
|
|
42
38
|
ownerState
|
|
43
39
|
}) => (0, _extends2.default)({
|
package/node/Select/Select.js
CHANGED
|
@@ -43,7 +43,7 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
43
43
|
|
|
44
44
|
var _Input, _FilledInput;
|
|
45
45
|
|
|
46
|
-
const _excluded = ["autoWidth", "children", "classes", "className", "displayEmpty", "IconComponent", "id", "input", "inputProps", "label", "labelId", "MenuProps", "multiple", "native", "onClose", "onOpen", "open", "renderValue", "SelectDisplayProps", "variant"];
|
|
46
|
+
const _excluded = ["autoWidth", "children", "classes", "className", "defaultOpen", "displayEmpty", "IconComponent", "id", "input", "inputProps", "label", "labelId", "MenuProps", "multiple", "native", "onClose", "onOpen", "open", "renderValue", "SelectDisplayProps", "variant"];
|
|
47
47
|
|
|
48
48
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
49
49
|
|
|
@@ -66,6 +66,7 @@ const Select = /*#__PURE__*/React.forwardRef(function Select(inProps, ref) {
|
|
|
66
66
|
children,
|
|
67
67
|
classes: classesProp = {},
|
|
68
68
|
className,
|
|
69
|
+
defaultOpen = false,
|
|
69
70
|
displayEmpty = false,
|
|
70
71
|
IconComponent = _ArrowDropDown.default,
|
|
71
72
|
id,
|
|
@@ -119,6 +120,7 @@ const Select = /*#__PURE__*/React.forwardRef(function Select(inProps, ref) {
|
|
|
119
120
|
id
|
|
120
121
|
} : {
|
|
121
122
|
autoWidth,
|
|
123
|
+
defaultOpen,
|
|
122
124
|
displayEmpty,
|
|
123
125
|
labelId,
|
|
124
126
|
MenuProps,
|
|
@@ -173,6 +175,13 @@ process.env.NODE_ENV !== "production" ? Select.propTypes
|
|
|
173
175
|
*/
|
|
174
176
|
className: _propTypes.default.string,
|
|
175
177
|
|
|
178
|
+
/**
|
|
179
|
+
* If `true`, the component is initially open. Use when the component open state is not controlled (i.e. the `open` prop is not defined).
|
|
180
|
+
* You can only use it when the `native` prop is `false` (default).
|
|
181
|
+
* @default false
|
|
182
|
+
*/
|
|
183
|
+
defaultOpen: _propTypes.default.bool,
|
|
184
|
+
|
|
176
185
|
/**
|
|
177
186
|
* The default value. Use when the component is not controlled.
|
|
178
187
|
*/
|