UNPKG

react95

Version:

Refreshed Windows95 UI components for modern web apps - React95

71 lines (64 loc) 2.83 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var React = require('react'); var styled = require('styled-components'); var index = require('../common/index.js'); var system = require('../common/system.js'); var index$1 = require('../common/utils/index.js'); var ScrollView = require('../ScrollView/ScrollView.js'); function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var React__default = /*#__PURE__*/_interopDefaultLegacy(React); var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled); const sharedWrapperStyles = styled.css` display: flex; align-items: center; width: ${({ fullWidth }) => fullWidth ? "100%" : "auto"}; min-height: ${system.blockSizes.md}; `; const Wrapper = styled__default["default"](ScrollView.StyledScrollView).attrs({ "data-testid": "variant-default" })` ${sharedWrapperStyles} background: ${({ $disabled, theme }) => $disabled ? theme.material : theme.canvas}; `; const FlatWrapper = styled__default["default"].div.attrs({ "data-testid": "variant-flat" })` ${index.createFlatBoxStyles()} ${sharedWrapperStyles} position: relative; `; const sharedInputStyles = styled.css` display: block; box-sizing: border-box; width: 100%; height: 100%; outline: none; border: none; background: none; font-size: 1rem; min-height: 27px; font-family: inherit; color: ${({ theme }) => theme.canvasText}; ${({ disabled, variant }) => variant !== "flat" && disabled && index.createDisabledTextStyles()} `; const StyledTextInput = styled__default["default"].input` ${sharedInputStyles} padding: 0 8px; `; const StyledTextArea = styled__default["default"].textarea` ${sharedInputStyles} padding: 8px; resize: none; ${({ variant }) => index.createScrollbars(variant)} `; const TextInput = React.forwardRef(({ className, disabled = false, fullWidth, onChange = index$1.noOp, shadow = true, style, variant = "default", ...otherProps }, ref) => { const WrapperComponent = variant === "flat" ? FlatWrapper : Wrapper; const field = React.useMemo(() => { var _a; return otherProps.multiline ? React__default["default"].createElement(StyledTextArea, { disabled, onChange: disabled ? void 0 : onChange, readOnly: disabled, ref, variant, ...otherProps }) : React__default["default"].createElement(StyledTextInput, { disabled, onChange: disabled ? void 0 : onChange, readOnly: disabled, ref, type: (_a = otherProps.type) !== null && _a !== void 0 ? _a : "text", variant, ...otherProps }); }, [disabled, onChange, otherProps, ref, variant]); return React__default["default"].createElement(WrapperComponent, { className, fullWidth, "$disabled": disabled, shadow, style }, field); }); TextInput.displayName = "TextInput"; exports.TextInput = TextInput;