@nlabs/gothamjs
Version:
Platform
88 lines (87 loc) • 8.91 kB
JavaScript
import { forwardRef } from "react";
import { Controller, useFormContext } from "react-hook-form";
import { ErrorMessage } from "../ErrorMessage/ErrorMessage.js";
import { InputField } from "../InputField/InputField.js";
import { Label } from "../Label/Label.js";
import { useTranslation } from "react-i18next";
import { jsx, jsxs } from "react/jsx-runtime";
const TextField = forwardRef(({
borderColor = "black",
borderType,
className,
color = "neutral",
defaultValue = "",
error: externalError,
errorColor = "error",
inputClass,
label = "",
labelClass = "mb-1",
labelColor = "neutral",
multiline = false,
name,
onChange: onChangeProp,
onValidate,
pattern,
placeholder = "",
placeholderColor = "neutral",
rows,
textColor = "neutral",
value,
...restInputProps
}, ref) => {
const { t } = useTranslation();
const { control, formState: { errors } } = useFormContext();
const formError = errors?.[name];
const hasError = !!formError;
const placeholderText = t(placeholder);
return /* @__PURE__ */ jsx(
Controller,
{
control,
name,
defaultValue,
render: ({ field: { onBlur, onChange, ref: fieldRef, value: value2 } }) => /* @__PURE__ */ jsxs("div", { className: "flex flex-col w-full", children: [
/* @__PURE__ */ jsx(
Label,
{
className: labelClass,
color: labelColor,
label,
name
}
),
/* @__PURE__ */ jsxs("div", { className: "relative", children: [
/* @__PURE__ */ jsx(
InputField,
{
borderColor,
borderType,
className: inputClass,
color: hasError ? "error" : color,
id: name,
multiline,
onBlur,
onChange,
placeholder: placeholderText,
placeholderColor,
textColor,
value: value2,
ref: (e) => {
fieldRef(e);
if (ref && typeof ref === "object") {
ref.current = e;
}
},
...restInputProps
}
),
/* @__PURE__ */ jsx(ErrorMessage, { message: formError?.message, color: errorColor })
] })
] })
}
);
});
export {
TextField
};
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVGV4dEZpZWxkL1RleHRGaWVsZC50c3giXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDI1LVByZXNlbnQsIE5pdHJvZ2VuIExhYnMsIEluYy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG5pbXBvcnQgUmVhY3QsIHtmb3J3YXJkUmVmfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge0NvbnRyb2xsZXIsIHVzZUZvcm1Db250ZXh0fSBmcm9tICdyZWFjdC1ob29rLWZvcm0nO1xuXG5pbXBvcnQge0Vycm9yTWVzc2FnZX0gZnJvbSAnLi4vRXJyb3JNZXNzYWdlL0Vycm9yTWVzc2FnZS5qcyc7XG5pbXBvcnQge0lucHV0RmllbGR9IGZyb20gJy4uL0lucHV0RmllbGQvSW5wdXRGaWVsZC5qcyc7XG5pbXBvcnQge0xhYmVsfSBmcm9tICcuLi9MYWJlbC9MYWJlbC5qcyc7XG5cbmltcG9ydCB7dXNlVHJhbnNsYXRpb259IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuaW1wb3J0IHR5cGUge0dvdGhhbUNvbG9yfSBmcm9tICcuLi8uLi91dGlscy9jb2xvclV0aWxzLmpzJztcbmltcG9ydCB0eXBlIHtJbnB1dEJvcmRlclR5cGV9IGZyb20gJy4uL0lucHV0RmllbGQvSW5wdXRGaWVsZC5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGV4dEZpZWxkUHJvcHMgZXh0ZW5kcyBSZWFjdC5JbnB1dEhUTUxBdHRyaWJ1dGVzPEhUTUxJbnB1dEVsZW1lbnQgfCBIVE1MVGV4dEFyZWFFbGVtZW50PiB7XG4gIHJlYWRvbmx5IGJvcmRlckNvbG9yPzogR290aGFtQ29sb3I7XG4gIHJlYWRvbmx5IGJvcmRlclR5cGU/OiBJbnB1dEJvcmRlclR5cGU7XG4gIHJlYWRvbmx5IGNsYXNzTmFtZT86IHN0cmluZztcbiAgcmVhZG9ubHkgY29sb3I/OiBHb3RoYW1Db2xvcjtcbiAgcmVhZG9ubHkgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuICByZWFkb25seSBlcnJvcj86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGVycm9yQ29sb3I/OiBHb3RoYW1Db2xvcjtcbiAgcmVhZG9ubHkgaGFzRXJyb3I/OiBib29sZWFuO1xuICByZWFkb25seSBpbnB1dENsYXNzPzogc3RyaW5nO1xuICByZWFkb25seSBsYWJlbD86IHN0cmluZztcbiAgcmVhZG9ubHkgbGFiZWxDbGFzcz86IHN0cmluZztcbiAgcmVhZG9ubHkgbGFiZWxDb2xvcj86IEdvdGhhbUNvbG9yO1xuICByZWFkb25seSBtdWx0aWxpbmU/OiBib29sZWFuO1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IG9uVmFsaWRhdGU/OiAoaXNWYWxpZDogYm9vbGVhbikgPT4gdm9pZDtcbiAgcmVhZG9ubHkgcGF0dGVybj86IHN0cmluZztcbiAgcmVhZG9ubHkgcGxhY2Vob2xkZXJDb2xvcj86IEdvdGhhbUNvbG9yO1xuICByZWFkb25seSByb3dzPzogbnVtYmVyO1xuICByZWFkb25seSB0ZXh0Q29sb3I/OiBHb3RoYW1Db2xvcjtcbn1cblxuZXhwb3J0IGNvbnN0IFRleHRGaWVsZCA9IGZvcndhcmRSZWY8SFRNTElucHV0RWxlbWVudCB8IEhUTUxUZXh0QXJlYUVsZW1lbnQsIFRleHRGaWVsZFByb3BzPigoe1xuICBib3JkZXJDb2xvciA9ICdibGFjaycsXG4gIGJvcmRlclR5cGUsXG4gIGNsYXNzTmFtZSxcbiAgY29sb3IgPSAnbmV1dHJhbCcsXG4gIGRlZmF1bHRWYWx1ZSA9ICcnLFxuICBlcnJvcjogZXh0ZXJuYWxFcnJvcixcbiAgZXJyb3JDb2xvciA9ICdlcnJvcicsXG4gIGlucHV0Q2xhc3MsXG4gIGxhYmVsID0gJycsXG4gIGxhYmVsQ2xhc3MgPSAnbWItMScsXG4gIGxhYmVsQ29sb3IgPSAnbmV1dHJhbCcsXG4gIG11bHRpbGluZSA9IGZhbHNlLFxuICBuYW1lLFxuICBvbkNoYW5nZTogb25DaGFuZ2VQcm9wLFxuICBvblZhbGlkYXRlLFxuICBwYXR0ZXJuLFxuICBwbGFjZWhvbGRlciA9ICcnLFxuICBwbGFjZWhvbGRlckNvbG9yID0gJ25ldXRyYWwnLFxuICByb3dzLFxuICB0ZXh0Q29sb3IgPSAnbmV1dHJhbCcsXG4gIHZhbHVlLFxuICAuLi5yZXN0SW5wdXRQcm9wc1xufSwgcmVmKSA9PiB7XG4gIGNvbnN0IHt0fSA9IHVzZVRyYW5zbGF0aW9uKCk7XG4gIGNvbnN0IHtjb250cm9sLCBmb3JtU3RhdGU6IHtlcnJvcnN9fSA9IHVzZUZvcm1Db250ZXh0KCk7XG4gIGNvbnN0IGZvcm1FcnJvciA9IGVycm9ycz8uW25hbWVdO1xuICBjb25zdCBoYXNFcnJvciA9ICEhZm9ybUVycm9yO1xuICBjb25zdCBwbGFjZWhvbGRlclRleHQgPSB0KHBsYWNlaG9sZGVyKTtcbiAgcmV0dXJuIChcbiAgICA8Q29udHJvbGxlclxuICAgICAgY29udHJvbD17Y29udHJvbH1cbiAgICAgIG5hbWU9e25hbWV9XG4gICAgICBkZWZhdWx0VmFsdWU9e2RlZmF1bHRWYWx1ZX1cbiAgICAgIHJlbmRlcj17KHtmaWVsZDoge29uQmx1ciwgb25DaGFuZ2UsIHJlZjogZmllbGRSZWYsIHZhbHVlfX0pID0+IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIHctZnVsbFwiPlxuICAgICAgICAgIDxMYWJlbFxuICAgICAgICAgICAgY2xhc3NOYW1lPXtsYWJlbENsYXNzfVxuICAgICAgICAgICAgY29sb3I9e2xhYmVsQ29sb3J9XG4gICAgICAgICAgICBsYWJlbD17bGFiZWx9XG4gICAgICAgICAgICBuYW1lPXtuYW1lfSAvPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmVcIj5cbiAgICAgICAgICAgIDxJbnB1dEZpZWxkXG4gICAgICAgICAgICAgIGJvcmRlckNvbG9yPXtib3JkZXJDb2xvcn1cbiAgICAgICAgICAgICAgYm9yZGVyVHlwZT17Ym9yZGVyVHlwZX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtpbnB1dENsYXNzfVxuICAgICAgICAgICAgICBjb2xvcj17aGFzRXJyb3IgPyAnZXJyb3InIDogY29sb3J9XG4gICAgICAgICAgICAgIGlkPXtuYW1lfVxuICAgICAgICAgICAgICBtdWx0aWxpbmU9e211bHRpbGluZX1cbiAgICAgICAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtvbkNoYW5nZX1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyVGV4dH1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXJDb2xvcj17cGxhY2Vob2xkZXJDb2xvcn1cbiAgICAgICAgICAgICAgdGV4dENvbG9yPXt0ZXh0Q29sb3J9XG4gICAgICAgICAgICAgIHZhbHVlPXt2YWx1ZX1cbiAgICAgICAgICAgICAgcmVmPXsoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGZpZWxkUmVmKGUpO1xuXG4gICAgICAgICAgICAgICAgaWYgKHJlZiAmJiB0eXBlb2YgcmVmID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgICAgICAgcmVmLmN1cnJlbnQgPSBlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgey4uLnJlc3RJbnB1dFByb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxFcnJvck1lc3NhZ2UgbWVzc2FnZT17Zm9ybUVycm9yPy5tZXNzYWdlIGFzIHN0cmluZ30gY29sb3I9e2Vycm9yQ29sb3J9IC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICAvPlxuICApO1xufSk7Il0sCiAgIm1hcHBpbmdzIjogIkFBSUEsU0FBZSxrQkFBaUI7QUFDaEMsU0FBUSxZQUFZLHNCQUFxQjtBQUV6QyxTQUFRLG9CQUFtQjtBQUMzQixTQUFRLGtCQUFpQjtBQUN6QixTQUFRLGFBQVk7QUFFcEIsU0FBUSxzQkFBcUI7QUE4RG5CLGNBS0EsWUFMQTtBQXBDSCxNQUFNLFlBQVksV0FBbUUsQ0FBQztBQUFBLEVBQzNGLGNBQWM7QUFBQSxFQUNkO0FBQUEsRUFDQTtBQUFBLEVBQ0EsUUFBUTtBQUFBLEVBQ1IsZUFBZTtBQUFBLEVBQ2YsT0FBTztBQUFBLEVBQ1AsYUFBYTtBQUFBLEVBQ2I7QUFBQSxFQUNBLFFBQVE7QUFBQSxFQUNSLGFBQWE7QUFBQSxFQUNiLGFBQWE7QUFBQSxFQUNiLFlBQVk7QUFBQSxFQUNaO0FBQUEsRUFDQSxVQUFVO0FBQUEsRUFDVjtBQUFBLEVBQ0E7QUFBQSxFQUNBLGNBQWM7QUFBQSxFQUNkLG1CQUFtQjtBQUFBLEVBQ25CO0FBQUEsRUFDQSxZQUFZO0FBQUEsRUFDWjtBQUFBLEVBQ0EsR0FBRztBQUNMLEdBQUcsUUFBUTtBQUNULFFBQU0sRUFBQyxFQUFDLElBQUksZUFBZTtBQUMzQixRQUFNLEVBQUMsU0FBUyxXQUFXLEVBQUMsT0FBTSxFQUFDLElBQUksZUFBZTtBQUN0RCxRQUFNLFlBQVksU0FBUyxJQUFJO0FBQy9CLFFBQU0sV0FBVyxDQUFDLENBQUM7QUFDbkIsUUFBTSxrQkFBa0IsRUFBRSxXQUFXO0FBQ3JDLFNBQ0U7QUFBQSxJQUFDO0FBQUE7QUFBQSxNQUNDO0FBQUEsTUFDQTtBQUFBLE1BQ0E7QUFBQSxNQUNBLFFBQVEsQ0FBQyxFQUFDLE9BQU8sRUFBQyxRQUFRLFVBQVUsS0FBSyxVQUFVLE9BQUFBLE9BQUssRUFBQyxNQUN2RCxxQkFBQyxTQUFJLFdBQVUsd0JBQ2I7QUFBQTtBQUFBLFVBQUM7QUFBQTtBQUFBLFlBQ0MsV0FBVztBQUFBLFlBQ1gsT0FBTztBQUFBLFlBQ1A7QUFBQSxZQUNBO0FBQUE7QUFBQSxRQUFZO0FBQUEsUUFDZCxxQkFBQyxTQUFJLFdBQVUsWUFDYjtBQUFBO0FBQUEsWUFBQztBQUFBO0FBQUEsY0FDQztBQUFBLGNBQ0E7QUFBQSxjQUNBLFdBQVc7QUFBQSxjQUNYLE9BQU8sV0FBVyxVQUFVO0FBQUEsY0FDNUIsSUFBSTtBQUFBLGNBQ0o7QUFBQSxjQUNBO0FBQUEsY0FDQTtBQUFBLGNBQ0EsYUFBYTtBQUFBLGNBQ2I7QUFBQSxjQUNBO0FBQUEsY0FDQSxPQUFPQTtBQUFBLGNBQ1AsS0FBSyxDQUFDLE1BQU07QUFDVix5QkFBUyxDQUFDO0FBRVYsb0JBQUksT0FBTyxPQUFPLFFBQVEsVUFBVTtBQUNsQyxzQkFBSSxVQUFVO0FBQUEsZ0JBQ2hCO0FBQUEsY0FDRjtBQUFBLGNBQ0MsR0FBRztBQUFBO0FBQUEsVUFDTjtBQUFBLFVBQ0Esb0JBQUMsZ0JBQWEsU0FBUyxXQUFXLFNBQW1CLE9BQU8sWUFBWTtBQUFBLFdBQzFFO0FBQUEsU0FDRjtBQUFBO0FBQUEsRUFFSjtBQUVKLENBQUM7IiwKICAibmFtZXMiOiBbInZhbHVlIl0KfQo=