@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
37 lines (36 loc) • 1.53 kB
JavaScript
import { jsx } from "react/jsx-runtime";
import { useMemo } from "react";
import { useDefaultProps } from "@hitachivantara/uikit-react-utils";
import { useUniqueId } from "../hooks/useUniqueId.js";
import { HvFormElementContext, HvFormElementValueContext, HvFormElementDescriptorsContext } from "./context.js";
import { useClasses } from "./FormElement.styles.js";
import { staticClasses } from "./FormElement.styles.js";
import { findDescriptors } from "./utils.js";
const HvFormElement = (props) => {
const {
classes: classesProp,
className,
children,
id: idProp,
name,
value,
disabled,
required,
readOnly,
status = "standBy",
...others
} = useDefaultProps("HvFormElement", props);
const { classes, cx } = useClasses(classesProp);
const id = useUniqueId(idProp);
const contextValue = useMemo(
() => ({ id, name, status, disabled, required, readOnly }),
[id, name, status, disabled, required, readOnly]
);
const descriptors = useMemo(() => findDescriptors(children), [children]);
return /* @__PURE__ */ jsx("div", { id, className: cx(classes.root, className), ...others, children: /* @__PURE__ */ jsx(HvFormElementContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx(HvFormElementValueContext.Provider, { value, children: /* @__PURE__ */ jsx(HvFormElementDescriptorsContext.Provider, { value: descriptors, children }) }) }) });
};
HvFormElement.formElementType = "formelement";
export {
HvFormElement,
staticClasses as formElementClasses
};