@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
105 lines (104 loc) • 3.38 kB
JavaScript
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
import { forwardRef } from "react";
import { useDefaultProps, useTheme } from "@hitachivantara/uikit-react-utils";
import { CounterLabel } from "../utils/CounterLabel.js";
import { setId } from "../utils/setId.js";
import { useClasses } from "./BulkActions.styles.js";
import { staticClasses } from "./BulkActions.styles.js";
import { HvButton } from "../Button/Button.js";
import { HvCheckBox } from "../CheckBox/CheckBox.js";
import { HvActionsGeneric } from "../ActionsGeneric/ActionsGeneric.js";
const HvBulkActions = forwardRef(function HvBulkActions2(props, ref) {
const {
id,
className,
classes: classesProp,
selectAllPagesLabel,
actionsDisabled,
maxVisibleActions,
checkboxProps,
actions,
numTotal = 0,
numSelected = 0,
selectAllConjunctionLabel = "/",
showSelectAllPages = false,
semantic = true,
actionsCallback,
// TODO - remove in v6
onAction,
onSelectAll,
onSelectAllPages,
...others
} = useDefaultProps("HvBulkActions", props);
const { classes, cx } = useClasses(classesProp);
const { activeTheme } = useTheme();
const anySelected = numSelected > 0;
const isSemantic = semantic && anySelected;
return /* @__PURE__ */ jsxs(
"div",
{
ref,
id,
className: cx(
classes.root,
{ [classes.semantic]: isSemantic },
className
),
...others,
children: [
/* @__PURE__ */ jsxs("div", { className: classes.selectAllContainer, children: [
/* @__PURE__ */ jsx(
HvCheckBox,
{
id: setId(id, "select"),
className: classes.selectAll,
checked: numSelected > 0,
semantic: isSemantic,
onChange: onSelectAll,
indeterminate: numSelected > 0 && numSelected < numTotal,
label: /* @__PURE__ */ jsx(
CounterLabel,
{
selected: numSelected,
total: numTotal,
conjunctionLabel: selectAllConjunctionLabel
}
),
...checkboxProps
}
),
showSelectAllPages && anySelected && numSelected < numTotal && /* @__PURE__ */ jsxs(Fragment, { children: [
/* @__PURE__ */ jsx("div", { className: classes.divider }),
/* @__PURE__ */ jsx(
HvButton,
{
id: setId(id, "pages"),
className: classes.selectAllPages,
variant: isSemantic ? activeTheme?.bulkActions.actionButtonVariant : "secondaryGhost",
onClick: onSelectAllPages,
children: selectAllPagesLabel ?? `Select all ${numTotal} items`
}
)
] })
] }),
/* @__PURE__ */ jsx(
HvActionsGeneric,
{
id: setId(id, "actions"),
classes: { root: classes.actions },
variant: isSemantic ? activeTheme?.bulkActions.actionButtonVariant : "secondaryGhost",
actions,
disabled: actionsDisabled ?? numSelected === 0,
actionsCallback,
onAction,
maxVisibleActions
}
)
]
}
);
});
export {
HvBulkActions,
staticClasses as bulkActionsClasses
};