@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
61 lines (60 loc) • 1.96 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const jsxRuntime = require("react/jsx-runtime");
const React = require("react");
const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
const setId = require("../../utils/setId.cjs");
const context = require("../context.cjs");
const utils = require("../utils.cjs");
const Label_styles = require("./Label.styles.cjs");
const Typography = require("../../Typography/Typography.cjs");
const HvLabel = (props) => {
const {
id: idProp,
classes: classesProp,
className,
children,
label,
showGutter,
disabled: disabledProp,
required: requiredProp,
htmlFor: htmlForProp,
...others
} = uikitReactUtils.useDefaultProps("HvLabel", props);
const { classes, cx } = Label_styles.useClasses(classesProp);
const context$1 = React.useContext(context.HvFormElementContext);
const disabled = disabledProp ?? context$1.disabled;
const required = requiredProp ?? context$1.required;
const id = idProp ?? setId.setId(context$1.id, "label");
const forId = React.useMemo(
() => htmlForProp || utils.findDescriptors(children)?.input?.[0]?.id,
[children, htmlForProp]
);
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
/* @__PURE__ */ jsxRuntime.jsxs(
Typography.HvTypography,
{
id,
className: cx(
classes.root,
{
[classes.labelDisabled]: disabled,
[classes.childGutter]: showGutter || children && label
},
className
),
variant: "label",
component: "label",
htmlFor: forId,
...others,
children: [
label,
required && /* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", children: "*" })
]
}
),
children
] });
};
exports.labelClasses = Label_styles.staticClasses;
exports.HvLabel = HvLabel;