UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

56 lines (55 loc) 1.7 kB
import { jsx } from "react/jsx-runtime"; import { forwardRef, useContext } from "react"; import { useDefaultProps } from "@hitachivantara/uikit-react-utils"; import { HvFormElementContext, HvFormElementDescriptorsContext } from "../context.js"; import { useClasses } from "./Adornment.styles.js"; import { staticClasses } from "./Adornment.styles.js"; import { HvButtonBase } from "../../ButtonBase/ButtonBase.js"; const HvAdornment = forwardRef(function HvAdornment2(props, ref) { const { classes: classesProp, className, icon, showWhen, onClick, isVisible, tabIndex, ...others } = useDefaultProps("HvAdornment", props); const { classes, cx } = useClasses(classesProp); const { status, disabled } = useContext(HvFormElementContext); const { input } = useContext(HvFormElementDescriptorsContext); const displayIcon = isVisible ?? (showWhen == null || status === showWhen); const Component = onClick ? HvButtonBase : "div"; return /* @__PURE__ */ jsx( Component, { ref, "aria-hidden": tabIndex == null || tabIndex < 0 ? true : void 0, className: cx( classes.root, classes.adornment, classes.icon, onClick ? classes.adornmentButton : classes.adornmentIcon, { [classes.hideIcon]: !displayIcon, [classes.disabled]: disabled }, className ), ...onClick && { disabled, tabIndex: tabIndex ?? -1, "aria-controls": input?.[0]?.id, onClick, onMouseDown: (event) => event.preventDefault() }, ...others, children: icon } ); }); export { HvAdornment, staticClasses as adornmentClasses };