UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

37 lines (36 loc) 1.53 kB
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 };