UNPKG

@hitachivantara/uikit-react-core

Version:

Core React components for the NEXT Design System.

72 lines (71 loc) 2.68 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 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;