UNPKG

4.11 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports.BreadcrumbSeparator = exports.BreadcrumbItem = exports.BreadcrumbLink = exports["default"] = void 0;
7
8var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
12var _core = require("@emotion/core");
13
14var _react = require("react");
15
16var _Box = _interopRequireDefault(require("../Box"));
17
18var _Link = _interopRequireDefault(require("../Link"));
19
20var _utils = require("../utils");
21
22/** @jsx jsx */
23var BreadcrumbSeparator = (0, _react.forwardRef)(function (_ref, ref) {
24 var spacing = _ref.spacing,
25 props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, ["spacing"]);
26 return (0, _core.jsx)(_Box["default"], (0, _extends2["default"])({
27 ref: ref,
28 role: "presentation",
29 as: "span",
30 mx: spacing
31 }, props));
32});
33exports.BreadcrumbSeparator = BreadcrumbSeparator;
34BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
35var Span = (0, _react.forwardRef)(function (props, ref) {
36 return (0, _core.jsx)(_Box["default"], (0, _extends2["default"])({
37 ref: ref,
38 as: "span"
39 }, props));
40});
41var BreadcrumbLink = (0, _react.forwardRef)(function (_ref2, ref) {
42 var isCurrentPage = _ref2.isCurrentPage,
43 props = (0, _objectWithoutPropertiesLoose2["default"])(_ref2, ["isCurrentPage"]);
44 var Comp = isCurrentPage ? Span : _Link["default"];
45 return (0, _core.jsx)(Comp, (0, _extends2["default"])({
46 ref: ref,
47 "aria-current": isCurrentPage ? "page" : null
48 }, props));
49});
50exports.BreadcrumbLink = BreadcrumbLink;
51BreadcrumbLink.displayName = "BreadcrumbLink";
52
53var BreadcrumbItem = function BreadcrumbItem(_ref3) {
54 var isCurrentPage = _ref3.isCurrentPage,
55 separator = _ref3.separator,
56 isLastChild = _ref3.isLastChild,
57 addSeparator = _ref3.addSeparator,
58 spacing = _ref3.spacing,
59 children = _ref3.children,
60 rest = (0, _objectWithoutPropertiesLoose2["default"])(_ref3, ["isCurrentPage", "separator", "isLastChild", "addSeparator", "spacing", "children"]);
61 var validChildren = (0, _utils.cleanChildren)(children);
62 var clones = validChildren.map(function (child) {
63 if (child.type === BreadcrumbLink) {
64 return (0, _react.cloneElement)(child, {
65 isCurrentPage: isCurrentPage
66 });
67 }
68
69 if (child.type === BreadcrumbSeparator) {
70 return (0, _react.cloneElement)(child, {
71 spacing: spacing,
72 children: child.props.children || separator
73 });
74 }
75
76 return child;
77 });
78 return (0, _core.jsx)(_Box["default"], (0, _extends2["default"])({
79 display: "inline-flex",
80 alignItems: "center",
81 as: "li"
82 }, rest), clones, !isLastChild && addSeparator && (0, _core.jsx)(BreadcrumbSeparator, {
83 spacing: spacing,
84 children: separator
85 }));
86};
87
88exports.BreadcrumbItem = BreadcrumbItem;
89
90var Breadcrumb = function Breadcrumb(_ref4) {
91 var children = _ref4.children,
92 _ref4$spacing = _ref4.spacing,
93 spacing = _ref4$spacing === void 0 ? 2 : _ref4$spacing,
94 _ref4$addSeparator = _ref4.addSeparator,
95 addSeparator = _ref4$addSeparator === void 0 ? true : _ref4$addSeparator,
96 _ref4$separator = _ref4.separator,
97 separator = _ref4$separator === void 0 ? "/" : _ref4$separator,
98 rest = (0, _objectWithoutPropertiesLoose2["default"])(_ref4, ["children", "spacing", "addSeparator", "separator"]);
99 var validChildren = (0, _utils.cleanChildren)(children);
100 var clones = validChildren.map(function (child, index) {
101 return (0, _react.cloneElement)(child, {
102 addSeparator: addSeparator,
103 separator: separator,
104 spacing: spacing,
105 isLastChild: validChildren.length === index + 1
106 });
107 });
108 return (0, _core.jsx)(_Box["default"], (0, _extends2["default"])({
109 as: "nav",
110 "aria-label": "breadcrumb"
111 }, rest), (0, _core.jsx)(_Box["default"], {
112 as: "ol"
113 }, clones));
114};
115
116var _default = Breadcrumb;
117exports["default"] = _default;
\No newline at end of file