@grafana/ui
Version:
Grafana Components Library
58 lines (53 loc) • 1.84 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var jsxRuntime = require('react/jsx-runtime');
var css = require('@emotion/css');
var React = require('react');
var ThemeContext = require('../../themes/ThemeContext.cjs');
var FieldContext = require('../Forms/FieldContext.cjs');
var commonStyles = require('../Forms/commonStyles.cjs');
;
const TextArea = React.forwardRef(
({
"aria-describedby": ariaDescribedByProp,
disabled: disabledProp,
invalid: invalidProp,
id: idProp,
className,
...props
}, ref) => {
const fieldContext = FieldContext.useFieldContext();
const invalid = invalidProp != null ? invalidProp : fieldContext.invalid;
const id = idProp != null ? idProp : fieldContext.id;
const disabled = disabledProp != null ? disabledProp : fieldContext.disabled;
const ariaDescribedBy = ariaDescribedByProp != null ? ariaDescribedByProp : fieldContext["aria-describedby"];
const styles = ThemeContext.useStyles2(getTextAreaStyle, invalid);
return /* @__PURE__ */ jsxRuntime.jsx(
"textarea",
{
...props,
id,
disabled,
"aria-describedby": ariaDescribedBy,
className: css.cx(styles.textarea, className),
ref
}
);
}
);
const getTextAreaStyle = (theme, invalid = false) => ({
textarea: css.cx(
commonStyles.sharedInputStyle(theme),
commonStyles.getFocusStyle(theme),
css.css({
display: "block",
borderRadius: theme.shape.radius.default,
padding: `${theme.spacing.gridSize / 4}px ${theme.spacing.gridSize}px`,
width: "100%",
borderColor: invalid ? theme.colors.error.border : theme.components.input.borderColor
})
)
});
TextArea.displayName = "TextArea";
exports.TextArea = TextArea;
//# sourceMappingURL=TextArea.cjs.map