UNPKG

@confi/conflux-react-ui-test-package

Version:

Modern and minimalist React UI library.

91 lines (81 loc) 5.18 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray"; import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties"; import _JSXStyle from "styled-jsx/style"; import React, { useEffect, useMemo, useState } from 'react'; import useTheme from '../styles/use-theme'; import withDefaults from '../utils/with-defaults'; import { getColors } from '../input/styles'; var defaultProps = { initialValue: '', status: 'default', width: 'initial', minHeight: '6.25rem', disabled: false, readOnly: false, className: '' }; var Textarea = function Textarea(_ref) { var width = _ref.width, status = _ref.status, minHeight = _ref.minHeight, disabled = _ref.disabled, readOnly = _ref.readOnly, onFocus = _ref.onFocus, onBlur = _ref.onBlur, className = _ref.className, initialValue = _ref.initialValue, onChange = _ref.onChange, value = _ref.value, placeholder = _ref.placeholder, props = _objectWithoutProperties(_ref, ["width", "status", "minHeight", "disabled", "readOnly", "onFocus", "onBlur", "className", "initialValue", "onChange", "value", "placeholder"]); var theme = useTheme(); var _useState = useState(initialValue), _useState2 = _slicedToArray(_useState, 2), selfValue = _useState2[0], setSelfValue = _useState2[1]; var _useState3 = useState(false), _useState4 = _slicedToArray(_useState3, 2), hover = _useState4[0], setHover = _useState4[1]; var _useMemo = useMemo(function () { return getColors(theme.palette, status); }, [theme.palette, status]), color = _useMemo.color, borderColor = _useMemo.borderColor, hoverBorder = _useMemo.hoverBorder; var changeHandler = function changeHandler(event) { if (disabled || readOnly) return; setSelfValue(event.target.value); onChange && onChange(event); }; var focusHandler = function focusHandler(e) { setHover(true); onFocus && onFocus(e); }; var blurHandler = function blurHandler(e) { setHover(false); onBlur && onBlur(e); }; useEffect(function () { if (value === undefined) return; setSelfValue(value); }, [value]); return /*#__PURE__*/React.createElement("div", { className: _JSXStyle.dynamic([["1335280583", [width, theme.layout.radius, borderColor, color, hoverBorder, theme.palette.accents_1, theme.palette.accents_2, theme.font.sans, minHeight, theme.layout.gapHalf, theme.palette.background]]]) + " " + "wrapper ".concat(hover ? 'hover' : '', " ").concat(disabled ? 'disabled' : '', " ").concat(className) }, /*#__PURE__*/React.createElement("textarea", _extends({ disabled: disabled, value: selfValue, placeholder: placeholder, readOnly: readOnly, onFocus: focusHandler, onBlur: blurHandler, onChange: changeHandler }, props, { className: _JSXStyle.dynamic([["1335280583", [width, theme.layout.radius, borderColor, color, hoverBorder, theme.palette.accents_1, theme.palette.accents_2, theme.font.sans, minHeight, theme.layout.gapHalf, theme.palette.background]]]) + " " + (props && props.className != null && props.className || "") })), /*#__PURE__*/React.createElement(_JSXStyle, { id: "1335280583", dynamic: [width, theme.layout.radius, borderColor, color, hoverBorder, theme.palette.accents_1, theme.palette.accents_2, theme.font.sans, minHeight, theme.layout.gapHalf, theme.palette.background] }, ".wrapper.__jsx-style-dynamic-selector{display:-webkit-inline-box;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;box-sizing:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:".concat(width, ";min-width:12.5rem;max-width:95vw;height:auto;border-radius:").concat(theme.layout.radius, ";border:1px solid ").concat(borderColor, ";color:").concat(color, ";-webkit-transition:border 0.2s ease 0s,color 0.2s ease 0s;transition:border 0.2s ease 0s,color 0.2s ease 0s;}.wrapper.hover.__jsx-style-dynamic-selector{border-color:").concat(hoverBorder, ";}.wrapper.disabled.__jsx-style-dynamic-selector{background-color:").concat(theme.palette.accents_1, ";border-color:").concat(theme.palette.accents_2, ";cursor:not-allowed;}textarea.__jsx-style-dynamic-selector{background-color:transparent;box-shadow:none;display:block;font-family:").concat(theme.font.sans, ";font-size:0.875rem;width:100%;height:100%;min-height:").concat(minHeight, ";resize:none;border:none;outline:none;padding:").concat(theme.layout.gapHalf, ";}.disabled.__jsx-style-dynamic-selector>textarea.__jsx-style-dynamic-selector{cursor:not-allowed;}textarea.__jsx-style-dynamic-selector:-webkit-autofill,textarea.__jsx-style-dynamic-selector:-webkit-autofill.__jsx-style-dynamic-selector:hover,textarea.__jsx-style-dynamic-selector:-webkit-autofill.__jsx-style-dynamic-selector:active,textarea.__jsx-style-dynamic-selector:-webkit-autofill.__jsx-style-dynamic-selector:focus{-webkit-box-shadow:0 0 0 30px ").concat(theme.palette.background, " inset !important;}"))); }; export default withDefaults(Textarea, defaultProps);