@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
79 lines (78 loc) • 2.95 kB
JavaScript
"use strict";
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const jsxRuntime = require("react/jsx-runtime");
const React = require("react");
const uikitReactUtils = require("@hitachivantara/uikit-react-utils");
const useControlled = require("../hooks/useControlled.cjs");
const setId = require("../utils/setId.cjs");
const ControlsContext = require("./context/ControlsContext.cjs");
const Controls_styles = require("./Controls.styles.cjs");
const MultiButton = require("../MultiButton/MultiButton.cjs");
const Button = require("../Button/Button.cjs");
const HvControls = (props) => {
const {
id,
className,
classes: classesProp,
views,
callbacks,
selectedView,
defaultView,
children,
hideViewSwitcher = false,
onViewChange
} = uikitReactUtils.useDefaultProps("HvControls", props);
const { classes, cx } = Controls_styles.useClasses(classesProp);
const [currentView, setCurrentView] = useControlled.useControlled(
selectedView,
defaultView
);
const onViewChangeHandler = (evt, btnId) => {
setCurrentView(btnId);
onViewChange?.(evt, btnId);
};
const onSearchHandler = (value) => callbacks?.setGlobalFilter?.(value);
const onSortHandler = (value) => callbacks?.setSortBy?.([
{
id: value?.accessor,
desc: value?.desc
}
]);
const childrenCount = React.Children.count(children);
const childrenArray = React.Children.toArray(children);
const childrenIndexCut = childrenCount > 0 ? Math.round(childrenCount * 0.5) : 0;
const leftChildren = childrenArray.slice(0, childrenIndexCut);
const rightChildren = childrenArray.slice(
childrenIndexCut,
childrenCount || 0
);
return /* @__PURE__ */ jsxRuntime.jsx("div", { id, className: cx(classes.root, className), children: /* @__PURE__ */ jsxRuntime.jsxs(
ControlsContext.HvControlsContextProvider,
{
value: {
onSearch: onSearchHandler,
onSort: onSortHandler
},
children: [
/* @__PURE__ */ jsxRuntime.jsx("div", { className: cx(classes.section, classes.leftSection), children: leftChildren }),
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: cx(classes.section, classes.rightSection), children: [
rightChildren,
views && !hideViewSwitcher && views?.length > 0 && /* @__PURE__ */ jsxRuntime.jsx(MultiButton.HvMultiButton, { id: setId.setId(id, "view-multi-button"), children: views.map(({ id: btnId, icon, ...others }) => /* @__PURE__ */ jsxRuntime.jsx(
Button.HvButton,
{
id: btnId,
icon: true,
selected: currentView === btnId,
onClick: (evt) => onViewChangeHandler(evt, btnId),
...others,
children: icon
},
btnId
)) })
] })
]
}
) });
};
exports.controlsClasses = Controls_styles.staticClasses;
exports.HvControls = HvControls;