1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | exports.__esModule = true;
|
6 | exports.BreadcrumbSeparator = exports.BreadcrumbItem = exports.BreadcrumbLink = exports["default"] = void 0;
|
7 |
|
8 | var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
9 |
|
10 | var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
11 |
|
12 | var _core = require("@emotion/core");
|
13 |
|
14 | var _react = require("react");
|
15 |
|
16 | var _Box = _interopRequireDefault(require("../Box"));
|
17 |
|
18 | var _Link = _interopRequireDefault(require("../Link"));
|
19 |
|
20 | var _utils = require("../utils");
|
21 |
|
22 |
|
23 | var 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 | });
|
33 | exports.BreadcrumbSeparator = BreadcrumbSeparator;
|
34 | BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
|
35 | var 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 | });
|
41 | var 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 | });
|
50 | exports.BreadcrumbLink = BreadcrumbLink;
|
51 | BreadcrumbLink.displayName = "BreadcrumbLink";
|
52 |
|
53 | var 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 |
|
88 | exports.BreadcrumbItem = BreadcrumbItem;
|
89 |
|
90 | var 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 |
|
116 | var _default = Breadcrumb;
|
117 | exports["default"] = _default; |
\ | No newline at end of file |