@hitachivantara/uikit-react-core
Version:
UI Kit Core React components.
36 lines (35 loc) • 1.25 kB
JavaScript
import { fixedForwardRef } from "../types/generic.js";
import { useClasses } from "./ButtonBase.styles.js";
import { useDefaultProps } from "@hitachivantara/uikit-react-utils";
import { jsx } from "react/jsx-runtime";
//#region src/ButtonBase/ButtonBase.tsx
/**
* Button component is used to trigger an action or event.
*/
var HvButtonBase = fixedForwardRef(function HvButtonBase(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
});
});
//#endregion
export { HvButtonBase };