UNPKG

6.81 kBJavaScriptView Raw
1"use strict";
2'use client';
3
4var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
6Object.defineProperty(exports, "__esModule", {
7 value: true
8});
9exports.default = void 0;
10var React = _interopRequireWildcard(require("react"));
11var _propTypes = _interopRequireDefault(require("prop-types"));
12var _clsx = _interopRequireDefault(require("clsx"));
13var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14var _formControlState = _interopRequireDefault(require("../FormControl/formControlState"));
15var _useFormControl = _interopRequireDefault(require("../FormControl/useFormControl"));
16var _zeroStyled = require("../zero-styled");
17var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
18var _DefaultPropsProvider = require("../DefaultPropsProvider");
19var _capitalize = _interopRequireDefault(require("../utils/capitalize"));
20var _formHelperTextClasses = _interopRequireWildcard(require("./formHelperTextClasses"));
21var _jsxRuntime = require("react/jsx-runtime");
22var _span;
23const useUtilityClasses = ownerState => {
24 const {
25 classes,
26 contained,
27 size,
28 disabled,
29 error,
30 filled,
31 focused,
32 required
33 } = ownerState;
34 const slots = {
35 root: ['root', disabled && 'disabled', error && 'error', size && `size${(0, _capitalize.default)(size)}`, contained && 'contained', focused && 'focused', filled && 'filled', required && 'required']
36 };
37 return (0, _composeClasses.default)(slots, _formHelperTextClasses.getFormHelperTextUtilityClasses, classes);
38};
39const FormHelperTextRoot = (0, _zeroStyled.styled)('p', {
40 name: 'MuiFormHelperText',
41 slot: 'Root',
42 overridesResolver: (props, styles) => {
43 const {
44 ownerState
45 } = props;
46 return [styles.root, ownerState.size && styles[`size${(0, _capitalize.default)(ownerState.size)}`], ownerState.contained && styles.contained, ownerState.filled && styles.filled];
47 }
48})((0, _memoTheme.default)(({
49 theme
50}) => ({
51 color: (theme.vars || theme).palette.text.secondary,
52 ...theme.typography.caption,
53 textAlign: 'left',
54 marginTop: 3,
55 marginRight: 0,
56 marginBottom: 0,
57 marginLeft: 0,
58 [`&.${_formHelperTextClasses.default.disabled}`]: {
59 color: (theme.vars || theme).palette.text.disabled
60 },
61 [`&.${_formHelperTextClasses.default.error}`]: {
62 color: (theme.vars || theme).palette.error.main
63 },
64 variants: [{
65 props: {
66 size: 'small'
67 },
68 style: {
69 marginTop: 4
70 }
71 }, {
72 props: ({
73 ownerState
74 }) => ownerState.contained,
75 style: {
76 marginLeft: 14,
77 marginRight: 14
78 }
79 }]
80})));
81const FormHelperText = /*#__PURE__*/React.forwardRef(function FormHelperText(inProps, ref) {
82 const props = (0, _DefaultPropsProvider.useDefaultProps)({
83 props: inProps,
84 name: 'MuiFormHelperText'
85 });
86 const {
87 children,
88 className,
89 component = 'p',
90 disabled,
91 error,
92 filled,
93 focused,
94 margin,
95 required,
96 variant,
97 ...other
98 } = props;
99 const muiFormControl = (0, _useFormControl.default)();
100 const fcs = (0, _formControlState.default)({
101 props,
102 muiFormControl,
103 states: ['variant', 'size', 'disabled', 'error', 'filled', 'focused', 'required']
104 });
105 const ownerState = {
106 ...props,
107 component,
108 contained: fcs.variant === 'filled' || fcs.variant === 'outlined',
109 variant: fcs.variant,
110 size: fcs.size,
111 disabled: fcs.disabled,
112 error: fcs.error,
113 filled: fcs.filled,
114 focused: fcs.focused,
115 required: fcs.required
116 };
117
118 // This issue explains why this is required: https://github.com/mui/material-ui/issues/42184
119 delete ownerState.ownerState;
120 const classes = useUtilityClasses(ownerState);
121 return /*#__PURE__*/(0, _jsxRuntime.jsx)(FormHelperTextRoot, {
122 as: component,
123 className: (0, _clsx.default)(classes.root, className),
124 ref: ref,
125 ...other,
126 ownerState: ownerState,
127 children: children === ' ' ? // notranslate needed while Google Translate will not fix zero-width space issue
128 _span || (_span = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
129 className: "notranslate",
130 children: "\u200B"
131 })) : children
132 });
133});
134process.env.NODE_ENV !== "production" ? FormHelperText.propTypes /* remove-proptypes */ = {
135 // ┌────────────────────────────── Warning ──────────────────────────────┐
136 // │ These PropTypes are generated from the TypeScript type definitions. │
137 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
138 // └─────────────────────────────────────────────────────────────────────┘
139 /**
140 * The content of the component.
141 *
142 * If `' '` is provided, the component reserves one line height for displaying a future message.
143 */
144 children: _propTypes.default.node,
145 /**
146 * Override or extend the styles applied to the component.
147 */
148 classes: _propTypes.default.object,
149 /**
150 * @ignore
151 */
152 className: _propTypes.default.string,
153 /**
154 * The component used for the root node.
155 * Either a string to use a HTML element or a component.
156 */
157 component: _propTypes.default.elementType,
158 /**
159 * If `true`, the helper text should be displayed in a disabled state.
160 */
161 disabled: _propTypes.default.bool,
162 /**
163 * If `true`, helper text should be displayed in an error state.
164 */
165 error: _propTypes.default.bool,
166 /**
167 * If `true`, the helper text should use filled classes key.
168 */
169 filled: _propTypes.default.bool,
170 /**
171 * If `true`, the helper text should use focused classes key.
172 */
173 focused: _propTypes.default.bool,
174 /**
175 * If `dense`, will adjust vertical spacing. This is normally obtained via context from
176 * FormControl.
177 */
178 margin: _propTypes.default.oneOf(['dense']),
179 /**
180 * If `true`, the helper text should use required classes key.
181 */
182 required: _propTypes.default.bool,
183 /**
184 * The system prop that allows defining system overrides as well as additional CSS styles.
185 */
186 sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object]),
187 /**
188 * The variant to use.
189 */
190 variant: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.oneOf(['filled', 'outlined', 'standard']), _propTypes.default.string])
191} : void 0;
192var _default = exports.default = FormHelperText;
\No newline at end of file