UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

79 lines (78 loc) 2.95 kB
"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;