react-base-guide
Version:
react ui components
34 lines • 2.62 kB
JavaScript
"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