@payfit/unity-components
Version:
43 lines (42 loc) • 1.39 kB
JavaScript
import { useFormField as e } from "../FormField.context.js";
import { useMemo as t } from "react";
import { jsx as n } from "react/jsx-runtime";
import { Slot as r } from "@radix-ui/react-slot";
import { mergeProps as i } from "react-aria/mergeProps";
import { useController as a, useFormContext as o } from "react-hook-form";
//#region src/components/form-field/parts/FormControl.tsx
function s({ ...s }) {
let { name: c, hasHelperText: l, hasContextualLink: u, fieldState: d, formLabelId: f, formItemId: p, formDescriptionId: m, formMessageId: h, formContextualLinkId: g } = e(), { control: _ } = o(), { field: { ref: v, ...y }, fieldState: { invalid: b, error: x } } = a({
name: c,
control: _
}), S = t(() => [x ? h : void 0, l ? m : void 0].filter(Boolean).join(" "), [
x,
l,
m,
h
]), C = {
isInvalid: b,
isDisabled: d.isDisabled,
isLoading: d.isLoading,
isReadOnly: d.isReadOnly
};
return /* @__PURE__ */ n(r, {
...i(s, C, y),
ref: v,
"data-slot": "form-control",
id: p,
"aria-labelledby": f,
"aria-describedby": S,
"aria-details": u ? g : void 0,
"aria-invalid": C.isInvalid,
"data-invalid": C.isInvalid,
"aria-disabled": C.isDisabled,
"data-disabled": C.isDisabled,
"aria-readonly": C.isReadOnly,
"data-readonly": C.isReadOnly,
"aria-busy": C.isLoading
});
}
s.displayName = "FormControl";
//#endregion
export { s as FormControl };