UNPKG

react-base-guide

Version:

react ui components

34 lines 2.62 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const jsx_runtime_1 = require("react/jsx-runtime"); const react_1 = require("react"); const LabelRoot_1 = __importDefault(require("./LabelRoot")); const Fieldset_1 = __importDefault(require("./Fieldset")); const Text_1 = __importDefault(require("./Text")); const Label = (props) => { var _a, _b; const [variant, setVariant] = (0, react_1.useState)(props.variant === "standard" ? props.variant : "outlined"); const updateVariant = (value) => { const newPosition = ((value === "" || value === undefined || value === null) && props.focus === false) ? "text" : (props.variant || "outlined"); setVariant(newPosition); }; const labelRef = (0, react_1.useCallback)(node => { if (node) { const child = node.querySelector("input, textarea"); if (child) { const value = child === null || child === void 0 ? void 0 : child.value; updateVariant(value); } return node; } }, [props.focus, props.variant]); if (props.variant === "standard") { return ((0, jsx_runtime_1.jsx)(LabelRoot_1.default, Object.assign({ className: props.labelClassName, "$focus": props.focus, "$variant": variant, "$label": props.label, "$error": props.error, "$warning": props.warning, "$success": props.success, "$styled": props.styled }, { children: (0, jsx_runtime_1.jsxs)(Text_1.default, Object.assign({ "$variant": variant, className: props.className }, { children: [props.label, props.children] })) }))); } return ((0, jsx_runtime_1.jsxs)(LabelRoot_1.default, Object.assign({ ref: labelRef, className: props.labelClassName, "$focus": props.focus, "$variant": variant, "$label": props.label, "$error": props.error, "$warning": props.warning, "$success": props.success, "$styled": props.styled }, { children: [props.children, (0, jsx_runtime_1.jsx)(Fieldset_1.default, { error: props.error, warning: props.warning, success: props.success, height: (_a = props.styled) === null || _a === void 0 ? void 0 : _a.height, minHeight: (_b = props.styled) === null || _b === void 0 ? void 0 : _b.minHeight, hidden: props.hidden, variant: variant, label: props.label }), props.label && (0, jsx_runtime_1.jsx)(Text_1.default, Object.assign({ "$variant": variant }, { children: props.label }))] }))); }; exports.default = Label; //# sourceMappingURL=index.js.map