UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

102 lines (101 loc) 3.12 kB
import { jsx, jsxs } from "react/jsx-runtime"; import { forwardRef, useMemo } from "react"; import { useDefaultProps } from "@hitachivantara/uikit-react-utils"; import { useClasses } from "./AppSwitcher.styles.js"; import { staticClasses } from "./AppSwitcher.styles.js"; import { HvAppSwitcherAction } from "./Action/Action.js"; import { HvPanel } from "../Panel/Panel.js"; import { HvTypography } from "../Typography/Typography.js"; import { HvOverflowTooltip } from "../OverflowTooltip/OverflowTooltip.js"; import { HvListContainer } from "../ListContainer/ListContainer.js"; const HvAppSwitcher = forwardRef(function HvAppSwitcher2(props, ref) { const { className, classes: classesProp, layout = "single", title, applications, onActionClickedCallback = () => { }, isActionSelectedCallback = () => false, header, footer, isOpen, ...others } = useDefaultProps("HvAppSwitcher", props); const { classes, cx } = useClasses(classesProp); const panelActions = useMemo( () => applications?.map((application) => { if (application.name) { return /* @__PURE__ */ jsx( HvAppSwitcherAction, { application, onClickCallback: onActionClickedCallback, isSelectedCallback: isActionSelectedCallback, classes: { root: classes.item, selected: classes.itemSelected, disabled: classes.itemDisabled, typography: classes.itemTrigger, icon: classes.itemIcon, title: classes.itemTitle, iconInfo: classes.itemInfoIcon } }, application.id || `${application.name}_${application.url}` ); } return void 0; }), [applications, classes, isActionSelectedCallback, onActionClickedCallback] ); return /* @__PURE__ */ jsxs( HvPanel, { ref, className: cx( classes.root, classes[layout], { [classes.open]: !!isOpen, [classes.closed]: isOpen === false }, className ), ...others, children: [ header && /* @__PURE__ */ jsx(HvTypography, { component: "div", variant: "label", className: classes.title, children: header }) || title && /* @__PURE__ */ jsx( HvOverflowTooltip, { className: classes.title, data: title, placement: "top-start", classes: { tooltipAnchorParagraph: classes.titleAnchor } } ), /* @__PURE__ */ jsx( HvListContainer, { condensed: true, disableGutters: true, className: classes.actionsContainer, children: panelActions } ), footer && /* @__PURE__ */ jsx( HvTypography, { component: "div", variant: "label", className: classes.footerContainer, children: footer } ) ] } ); }); export { HvAppSwitcher, staticClasses as appSwitcherClasses };