@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
101 lines (100 loc) • 3.35 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 AppSwitcher_styles = require("./AppSwitcher.styles.cjs");
const Action = require("./Action/Action.cjs");
const Panel = require("../Panel/Panel.cjs");
const Typography = require("../Typography/Typography.cjs");
const OverflowTooltip = require("../OverflowTooltip/OverflowTooltip.cjs");
const ListContainer = require("../ListContainer/ListContainer.cjs");
const HvAppSwitcher = React.forwardRef(function HvAppSwitcher2(props, ref) {
const {
className,
classes: classesProp,
layout = "single",
title,
applications,
onActionClickedCallback = () => {
},
isActionSelectedCallback = () => false,
header,
footer,
isOpen,
...others
} = uikitReactUtils.useDefaultProps("HvAppSwitcher", props);
const { classes, cx } = AppSwitcher_styles.useClasses(classesProp);
const panelActions = React.useMemo(
() => applications?.map((application) => {
if (application.name) {
return /* @__PURE__ */ jsxRuntime.jsx(
Action.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__ */ jsxRuntime.jsxs(
Panel.HvPanel,
{
ref,
className: cx(
classes.root,
classes[layout],
{ [classes.open]: !!isOpen, [classes.closed]: isOpen === false },
className
),
...others,
children: [
header && /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { component: "div", variant: "label", className: classes.title, children: header }) || title && /* @__PURE__ */ jsxRuntime.jsx(
OverflowTooltip.HvOverflowTooltip,
{
className: classes.title,
data: title,
placement: "top-start",
classes: {
tooltipAnchorParagraph: classes.titleAnchor
}
}
),
/* @__PURE__ */ jsxRuntime.jsx(
ListContainer.HvListContainer,
{
condensed: true,
disableGutters: true,
className: classes.actionsContainer,
children: panelActions
}
),
footer && /* @__PURE__ */ jsxRuntime.jsx(
Typography.HvTypography,
{
component: "div",
variant: "label",
className: classes.footerContainer,
children: footer
}
)
]
}
);
});
exports.appSwitcherClasses = AppSwitcher_styles.staticClasses;
exports.HvAppSwitcher = HvAppSwitcher;