@hitachivantara/uikit-react-core
Version:
Core React components for the NEXT Design System.
72 lines (71 loc) • 2.68 kB
JavaScript
;
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 BreadCrumb_styles = require("./BreadCrumb.styles.cjs");
const utils = require("./utils.cjs");
const PathElement = require("./PathElement/PathElement.cjs");
const Page = require("./Page/Page.cjs");
const Typography = require("../Typography/Typography.cjs");
const HvBreadCrumb = React.forwardRef(function HvBreadCrumb2(props, ref) {
const {
classes: classesProp,
className,
id,
listRoute = [],
maxVisible,
url,
onClick,
component,
dropDownMenuProps,
...others
} = uikitReactUtils.useDefaultProps("HvBreadCrumb", props);
const { classes, cx } = BreadCrumb_styles.useClasses(classesProp);
const maxVisibleElem = maxVisible && maxVisible < 2 ? 2 : maxVisible;
let listPath = listRoute.slice();
if (url != null) {
const baseUrl = url.match(/^.*\/\/[^/]+/) ?? "";
const pathNames = url.replace(/^.*\/\/[^/]+/, "").split("/").filter(Boolean);
listPath = pathNames.map((elem, index) => ({
label: decodeURI(elem),
path: `${baseUrl}/${pathNames.slice(0, index + 1).join("/")}`
}));
}
const breadcrumbPath = maxVisibleElem && listPath.length > maxVisibleElem ? utils.pathWithSubMenu(
id,
listPath,
maxVisibleElem,
onClick,
dropDownMenuProps
) : listPath;
return /* @__PURE__ */ jsxRuntime.jsx("nav", { ref, id, className: cx(classes.root, className), ...others, children: /* @__PURE__ */ jsxRuntime.jsx("ol", { className: classes.orderedList, children: listPath.map((elem, index) => {
const key = `key_${index}`;
const isLast = index === breadcrumbPath.length - 1;
return /* @__PURE__ */ jsxRuntime.jsx(
PathElement.HvPathElement,
{
classes: {
centerContainer: classes.centerContainer,
separatorContainer: classes.separatorContainer
},
last: isLast,
children: React.isValidElement(elem) && elem || isLast && /* @__PURE__ */ jsxRuntime.jsx(Typography.HvTypography, { className: classes.currentPage, variant: "body", children: utils.removeExtension(elem.label) }) || /* @__PURE__ */ jsxRuntime.jsx(
Page.HvBreadCrumbPage,
{
elem,
classes: {
a: classes.a,
link: classes.link
},
component,
onClick
}
)
},
key
);
}) }) });
});
exports.breadCrumbClasses = BreadCrumb_styles.staticClasses;
exports.HvBreadCrumb = HvBreadCrumb;