UNPKG

7.07 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 _capitalize = _interopRequireDefault(require("../utils/capitalize"));
15var _Typography = _interopRequireDefault(require("../Typography"));
16var _FormControlContext = _interopRequireDefault(require("../FormControl/FormControlContext"));
17var _useFormControl = _interopRequireDefault(require("../FormControl/useFormControl"));
18var _zeroStyled = require("../zero-styled");
19var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
20var _DefaultPropsProvider = require("../DefaultPropsProvider");
21var _inputAdornmentClasses = _interopRequireWildcard(require("./inputAdornmentClasses"));
22var _jsxRuntime = require("react/jsx-runtime");
23var _span;
24const overridesResolver = (props, styles) => {
25 const {
26 ownerState
27 } = props;
28 return [styles.root, styles[`position${(0, _capitalize.default)(ownerState.position)}`], ownerState.disablePointerEvents === true && styles.disablePointerEvents, styles[ownerState.variant]];
29};
30const useUtilityClasses = ownerState => {
31 const {
32 classes,
33 disablePointerEvents,
34 hiddenLabel,
35 position,
36 size,
37 variant
38 } = ownerState;
39 const slots = {
40 root: ['root', disablePointerEvents && 'disablePointerEvents', position && `position${(0, _capitalize.default)(position)}`, variant, hiddenLabel && 'hiddenLabel', size && `size${(0, _capitalize.default)(size)}`]
41 };
42 return (0, _composeClasses.default)(slots, _inputAdornmentClasses.getInputAdornmentUtilityClass, classes);
43};
44const InputAdornmentRoot = (0, _zeroStyled.styled)('div', {
45 name: 'MuiInputAdornment',
46 slot: 'Root',
47 overridesResolver
48})((0, _memoTheme.default)(({
49 theme
50}) => ({
51 display: 'flex',
52 maxHeight: '2em',
53 alignItems: 'center',
54 whiteSpace: 'nowrap',
55 color: (theme.vars || theme).palette.action.active,
56 variants: [{
57 props: {
58 variant: 'filled'
59 },
60 style: {
61 [`&.${_inputAdornmentClasses.default.positionStart}&:not(.${_inputAdornmentClasses.default.hiddenLabel})`]: {
62 marginTop: 16
63 }
64 }
65 }, {
66 props: {
67 position: 'start'
68 },
69 style: {
70 marginRight: 8
71 }
72 }, {
73 props: {
74 position: 'end'
75 },
76 style: {
77 marginLeft: 8
78 }
79 }, {
80 props: {
81 disablePointerEvents: true
82 },
83 style: {
84 pointerEvents: 'none'
85 }
86 }]
87})));
88const InputAdornment = /*#__PURE__*/React.forwardRef(function InputAdornment(inProps, ref) {
89 const props = (0, _DefaultPropsProvider.useDefaultProps)({
90 props: inProps,
91 name: 'MuiInputAdornment'
92 });
93 const {
94 children,
95 className,
96 component = 'div',
97 disablePointerEvents = false,
98 disableTypography = false,
99 position,
100 variant: variantProp,
101 ...other
102 } = props;
103 const muiFormControl = (0, _useFormControl.default)() || {};
104 let variant = variantProp;
105 if (variantProp && muiFormControl.variant) {
106 if (process.env.NODE_ENV !== 'production') {
107 if (variantProp === muiFormControl.variant) {
108 console.error('MUI: The `InputAdornment` variant infers the variant prop ' + 'you do not have to provide one.');
109 }
110 }
111 }
112 if (muiFormControl && !variant) {
113 variant = muiFormControl.variant;
114 }
115 const ownerState = {
116 ...props,
117 hiddenLabel: muiFormControl.hiddenLabel,
118 size: muiFormControl.size,
119 disablePointerEvents,
120 position,
121 variant
122 };
123 const classes = useUtilityClasses(ownerState);
124 return /*#__PURE__*/(0, _jsxRuntime.jsx)(_FormControlContext.default.Provider, {
125 value: null,
126 children: /*#__PURE__*/(0, _jsxRuntime.jsx)(InputAdornmentRoot, {
127 as: component,
128 ownerState: ownerState,
129 className: (0, _clsx.default)(classes.root, className),
130 ref: ref,
131 ...other,
132 children: typeof children === 'string' && !disableTypography ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_Typography.default, {
133 color: "textSecondary",
134 children: children
135 }) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(React.Fragment, {
136 children: [position === 'start' ? (/* notranslate needed while Google Translate will not fix zero-width space issue */_span || (_span = /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
137 className: "notranslate",
138 children: "\u200B"
139 }))) : null, children]
140 })
141 })
142 });
143});
144process.env.NODE_ENV !== "production" ? InputAdornment.propTypes /* remove-proptypes */ = {
145 // ┌────────────────────────────── Warning ──────────────────────────────┐
146 // │ These PropTypes are generated from the TypeScript type definitions. │
147 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
148 // └─────────────────────────────────────────────────────────────────────┘
149 /**
150 * The content of the component, normally an `IconButton` or string.
151 */
152 children: _propTypes.default.node,
153 /**
154 * Override or extend the styles applied to the component.
155 */
156 classes: _propTypes.default.object,
157 /**
158 * @ignore
159 */
160 className: _propTypes.default.string,
161 /**
162 * The component used for the root node.
163 * Either a string to use a HTML element or a component.
164 */
165 component: _propTypes.default.elementType,
166 /**
167 * Disable pointer events on the root.
168 * This allows for the content of the adornment to focus the `input` on click.
169 * @default false
170 */
171 disablePointerEvents: _propTypes.default.bool,
172 /**
173 * If children is a string then disable wrapping in a Typography component.
174 * @default false
175 */
176 disableTypography: _propTypes.default.bool,
177 /**
178 * The position this adornment should appear relative to the `Input`.
179 */
180 position: _propTypes.default.oneOf(['end', 'start']).isRequired,
181 /**
182 * The system prop that allows defining system overrides as well as additional CSS styles.
183 */
184 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]),
185 /**
186 * The variant to use.
187 * Note: If you are using the `TextField` component or the `FormControl` component
188 * you do not have to set this manually.
189 */
190 variant: _propTypes.default.oneOf(['filled', 'outlined', 'standard'])
191} : void 0;
192var _default = exports.default = InputAdornment;
\No newline at end of file