@heycar-uikit/core
Version:
The React UI library from HeyCar
57 lines (51 loc) • 4.77 kB
JavaScript
var hooks_useBreakpoint_hook = require('./useBreakpoint.hook-62776d0f.js');
var React = require('react');
var cn = require('classnames');
var uuid = require('uuid');
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
var cn__default = /*#__PURE__*/_interopDefaultLegacy(cn);
var styles = {"breadcrumbWrapper":"breadcrumbs__breadcrumbWrapper_d65xi","breadcrumbsList":"breadcrumbs__breadcrumbsList_d65xi","threeDots":"breadcrumbs__threeDots_d65xi","breadcrumbLink":"breadcrumbs__breadcrumbLink_d65xi","currentBreadcrumb":"breadcrumbs__currentBreadcrumb_d65xi","disabled":"breadcrumbs__disabled_d65xi"};
require('./styles/default.css');
var DefaultLink = function (_a) {
var link = _a.link, className = _a.className, children = _a.children, rest = hooks_useBreakpoint_hook.__rest(_a, ["link", "className", "children"]);
return (React__default["default"].createElement("a", hooks_useBreakpoint_hook.__assign({ className: className, href: link }, rest), children));
};
var Breadcrumbs = function (_a) {
var breadcrumbs = _a.breadcrumbs, LinkComponent = _a.LinkComponent, dataTestId = _a.dataTestId, className = _a.className;
// eslint-disable-next-line @typescript-eslint/naming-convention
var _b = React.useState(false), showHiddenBreadcrumbs = _b[0], setShowHiddenBreadcrumbs = _b[1];
var breakpoints = hooks_useBreakpoint_hook.useBreakpoint().breakpoints;
var isMobile = breakpoints.isMobile;
if (breadcrumbs.length === 0) {
return null;
}
// Link component
var Link = (LinkComponent || DefaultLink);
var firstBreadcrumb = breadcrumbs[0];
var lastBreadcrumb = breadcrumbs[breadcrumbs.length - 1];
var hiddenBreadcrumbs = breadcrumbs.slice(1, -1);
var toggleHiddenBreadcrumbs = function () {
setShowHiddenBreadcrumbs(!showHiddenBreadcrumbs);
};
return (React__default["default"].createElement("ul", { className: cn__default["default"](styles.breadcrumbWrapper, className), "data-test-id": dataTestId },
(firstBreadcrumb === null || firstBreadcrumb === void 0 ? void 0 : firstBreadcrumb.link) ? (React__default["default"].createElement("li", { className: styles.breadcrumbsList, key: firstBreadcrumb.title + "-" + 0 },
React__default["default"].createElement(Link, { className: styles.breadcrumbLink, link: firstBreadcrumb.link },
React__default["default"].createElement("span", { itemProp: "name" }, firstBreadcrumb.title)))) : (firstBreadcrumb.title && (React__default["default"].createElement("li", { className: styles.breadcrumbsList, key: firstBreadcrumb.title },
React__default["default"].createElement("span", { itemProp: "name" }, firstBreadcrumb.title)))),
isMobile && hiddenBreadcrumbs.length > 0 && !showHiddenBreadcrumbs ? (React__default["default"].createElement("li", { className: styles.threeDots, onClick: toggleHiddenBreadcrumbs }, "\u2026")) : (React__default["default"].createElement(React__default["default"].Fragment, null, hiddenBreadcrumbs &&
hiddenBreadcrumbs.map(function (breadcrumb, i) {
if (breadcrumb.link && i + 1 !== breadcrumbs.length) {
return (React__default["default"].createElement("li", { className: styles.breadcrumbsList, key: "" + uuid.v4() },
React__default["default"].createElement(Link, { className: styles.breadcrumbLink, link: breadcrumb.link },
React__default["default"].createElement("span", { itemProp: "name" }, breadcrumb.title))));
}
return (React__default["default"].createElement("li", { className: styles.breadcrumbsList, key: breadcrumb.title },
React__default["default"].createElement("span", { className: styles.disabled, itemProp: "name" }, breadcrumb.title)));
}))),
(lastBreadcrumb === null || lastBreadcrumb === void 0 ? void 0 : lastBreadcrumb.link) ? (React__default["default"].createElement("li", { className: styles.currentBreadcrumb, key: lastBreadcrumb.title + "-" + (breadcrumbs.length - 1) },
React__default["default"].createElement(Link, { className: cn__default["default"](styles.currentBreadcrumb, styles.breadcrumbLink), link: lastBreadcrumb.link },
React__default["default"].createElement("span", { itemProp: "name" }, lastBreadcrumb.title)))) : (lastBreadcrumb.title && (React__default["default"].createElement("li", { key: lastBreadcrumb.title },
React__default["default"].createElement("span", { className: styles.currentBreadcrumb, itemProp: "name" }, lastBreadcrumb.title))))));
};
module.exports = Breadcrumbs;