@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
67 lines (66 loc) • 1.99 kB
JavaScript
import { jsx, jsxs } from "react/jsx-runtime";
import { useContext } from "react";
import { useDefaultProps } from "@hitachivantara/uikit-react-utils";
import { HvIcon } from "../../icons.js";
import { setId } from "../../utils/setId.js";
import { HvFormElementContext } from "../context.js";
import { useClasses } from "./WarningText.styles.js";
import { staticClasses } from "./WarningText.styles.js";
const HvWarningText = (props) => {
const {
children,
adornment: adornmentProp,
isVisible: isVisibleProp,
classes: classesProp,
className,
id: idProp,
disabled: disabledProp,
disableGutter,
disableBorder,
disableAdornment,
hideText,
...others
} = useDefaultProps("HvWarningText", props);
const { classes, cx } = useClasses(classesProp);
const context = useContext(HvFormElementContext);
const disabled = disabledProp ?? context.disabled;
const visible = isVisibleProp ?? context.status === "invalid";
const id = idProp ?? setId(context.id, "error");
const showWarning = visible && !disabled;
const adornment = adornmentProp || /* @__PURE__ */ jsx(HvIcon, { name: "Fail", size: "xs", className: classes.defaultIcon });
return /* @__PURE__ */ jsxs(
"div",
{
className: cx(
classes.root,
{
[classes.show]: showWarning,
[classes.topBorder]: !disableBorder
},
className
),
children: [
!disableAdornment && adornment,
/* @__PURE__ */ jsx(
"span",
{
id,
className: cx(classes.warningText, {
[classes.topGutter]: !disableGutter,
[classes.hideText]: hideText
}),
role: "status",
"aria-live": "polite",
"aria-relevant": "additions text",
...others,
children: showWarning && children
}
)
]
}
);
};
export {
HvWarningText,
staticClasses as warningTextClasses
};