UNPKG

alinea

Version:
70 lines (66 loc) 2.06 kB
import { dist_default } from "../../chunks/chunk-A5O3N2GS.js"; import "../../chunks/chunk-NZLE2WMY.js"; // src/field/text/TextField.view.tsx import { useField } from "alinea/dashboard/editor/UseField"; import { InputLabel } from "alinea/dashboard/view/InputLabel"; import { HStack } from "alinea/ui"; import { IcRoundTextFields } from "alinea/ui/icons/IcRoundTextFields"; import { TextareaAutosize } from "alinea/ui/util/TextareaAutosize"; import { useState } from "react"; // src/field/text/TextField.module.scss var TextField_module_default = { "root-input": "alinea-TextField-input", "rootInput": "alinea-TextField-input" }; // src/field/text/TextField.view.tsx import { jsx, jsxs } from "react/jsx-runtime"; var styles = dist_default(TextField_module_default); function TextInput({ field }) { const { value, mutator, label, options, error } = useField(field); const [focus, setFocus] = useState(false); const { multiline, inline, iconLeft: IconLeft, iconRight: IconRight, autoFocus, readOnly } = options; const Input = multiline ? TextareaAutosize : "input"; const placeholder = options.placeholder || (inline ? label : ""); const empty = value === ""; return /* @__PURE__ */ jsx( InputLabel, { asLabel: true, ...options, error, empty, focused: focus, icon: IcRoundTextFields, children: /* @__PURE__ */ jsxs(HStack, { center: true, gap: 8, children: [ IconLeft && /* @__PURE__ */ jsx(IconLeft, {}), /* @__PURE__ */ jsx( Input, { className: styles.root.input({ readOnly }), type: options.type || "text", value: value || "", onChange: (e) => mutator(e.currentTarget.value), onFocus: () => setFocus(true), onBlur: () => setFocus(false), placeholder, autoFocus, readOnly: options.readOnly } ), IconRight && /* @__PURE__ */ jsx(IconRight, {}) ] }) } ); } export { TextInput };