1 | "use client";
|
2 |
|
3 | var __rest = this && this.__rest || function (s, e) {
|
4 | var t = {};
|
5 | for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
|
6 | if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
7 | if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
|
8 | }
|
9 | return t;
|
10 | };
|
11 | import * as React from 'react';
|
12 | import DownOutlined from "@ant-design/icons/es/icons/DownOutlined";
|
13 | import { devUseWarning } from '../_util/warning';
|
14 | import { ConfigContext } from '../config-provider';
|
15 | import Dropdown from '../dropdown/dropdown';
|
16 | import BreadcrumbSeparator from './BreadcrumbSeparator';
|
17 | import { renderItem } from './useItemRender';
|
18 | export const InternalBreadcrumbItem = props => {
|
19 | const {
|
20 | prefixCls,
|
21 | separator = '/',
|
22 | children,
|
23 | menu,
|
24 | overlay,
|
25 | dropdownProps,
|
26 | href
|
27 | } = props;
|
28 |
|
29 | if (process.env.NODE_ENV !== 'production') {
|
30 | const warning = devUseWarning('Breadcrumb.Item');
|
31 | warning.deprecated(!('overlay' in props), 'overlay', 'menu');
|
32 | }
|
33 |
|
34 | const renderBreadcrumbNode = breadcrumbItem => {
|
35 | if (menu || overlay) {
|
36 | const mergeDropDownProps = Object.assign({}, dropdownProps);
|
37 | if (menu) {
|
38 | const _a = menu || {},
|
39 | {
|
40 | items
|
41 | } = _a,
|
42 | menuProps = __rest(_a, ["items"]);
|
43 | mergeDropDownProps.menu = Object.assign(Object.assign({}, menuProps), {
|
44 | items: items === null || items === void 0 ? void 0 : items.map((_a, index) => {
|
45 | var {
|
46 | key,
|
47 | title,
|
48 | label,
|
49 | path
|
50 | } = _a,
|
51 | itemProps = __rest(_a, ["key", "title", "label", "path"]);
|
52 | let mergedLabel = label !== null && label !== void 0 ? label : title;
|
53 | if (path) {
|
54 | mergedLabel = React.createElement("a", {
|
55 | href: `${href}${path}`
|
56 | }, mergedLabel);
|
57 | }
|
58 | return Object.assign(Object.assign({}, itemProps), {
|
59 | key: key !== null && key !== void 0 ? key : index,
|
60 | label: mergedLabel
|
61 | });
|
62 | })
|
63 | });
|
64 | } else if (overlay) {
|
65 | mergeDropDownProps.overlay = overlay;
|
66 | }
|
67 | return React.createElement(Dropdown, Object.assign({
|
68 | placement: "bottom"
|
69 | }, mergeDropDownProps), React.createElement("span", {
|
70 | className: `${prefixCls}-overlay-link`
|
71 | }, breadcrumbItem, React.createElement(DownOutlined, null)));
|
72 | }
|
73 | return breadcrumbItem;
|
74 | };
|
75 |
|
76 | const link = renderBreadcrumbNode(children);
|
77 | if (link !== undefined && link !== null) {
|
78 | return React.createElement(React.Fragment, null, React.createElement("li", null, link), separator && React.createElement(BreadcrumbSeparator, null, separator));
|
79 | }
|
80 | return null;
|
81 | };
|
82 | const BreadcrumbItem = props => {
|
83 | const {
|
84 | prefixCls: customizePrefixCls,
|
85 | children,
|
86 | href
|
87 | } = props,
|
88 | restProps = __rest(props, ["prefixCls", "children", "href"]);
|
89 | const {
|
90 | getPrefixCls
|
91 | } = React.useContext(ConfigContext);
|
92 | const prefixCls = getPrefixCls('breadcrumb', customizePrefixCls);
|
93 | return React.createElement(InternalBreadcrumbItem, Object.assign({}, restProps, {
|
94 | prefixCls: prefixCls
|
95 | }), renderItem(prefixCls, restProps, children, href));
|
96 | };
|
97 | BreadcrumbItem.__ANT_BREADCRUMB_ITEM = true;
|
98 | export default BreadcrumbItem; |
\ | No newline at end of file |