@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
55 lines (54 loc) • 1.43 kB
JavaScript
import { jsx } from "react/jsx-runtime";
import { useDefaultProps } from "@hitachivantara/uikit-react-utils";
import { fixedForwardRef } from "../types/generic.js";
import { useClasses } from "./ButtonBase.styles.js";
import { staticClasses } from "./ButtonBase.styles.js";
const HvButtonBase = fixedForwardRef(function HvButtonBase2(props, ref) {
const {
className,
classes: classesProp,
children,
selected,
disabled,
focusableWhenDisabled,
component: Component = "button",
onClick: onClickProp,
onMouseDown: onMouseDownProp,
...others
} = useDefaultProps("HvButtonBase", props);
const { classes, cx } = useClasses(classesProp);
return /* @__PURE__ */ jsx(
Component,
{
ref,
className: cx(
classes.root,
{
[classes.disabled]: disabled
},
className
),
onClick: (e) => {
if (disabled) return;
onClickProp?.(e);
},
onMouseDown: (e) => {
if (disabled) return;
onMouseDownProp?.(e);
},
...Component === "button" && { type: "button" },
...disabled && {
disabled: !focusableWhenDisabled,
tabIndex: focusableWhenDisabled ? 0 : -1,
"aria-disabled": true
},
...selected && { "aria-pressed": selected },
...others,
children
}
);
});
export {
HvButtonBase,
staticClasses as buttonBaseClasses
};