@redocly/theme 0.57.0-next.4 → 0.57.0-next.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/Breadcrumbs/Breadcrumb.d.ts +2 -1
- package/lib/components/Breadcrumbs/Breadcrumb.js +70 -22
- package/lib/components/Breadcrumbs/BreadcrumbDropdown.d.ts +14 -0
- package/lib/components/Breadcrumbs/BreadcrumbDropdown.js +138 -0
- package/lib/components/Breadcrumbs/BreadcrumbIcon.d.ts +7 -0
- package/lib/components/Breadcrumbs/BreadcrumbIcon.js +23 -0
- package/lib/components/Breadcrumbs/Breadcrumbs.js +68 -25
- package/lib/components/Breadcrumbs/variables.js +16 -4
- package/lib/components/Buttons/EditPageButton.js +1 -1
- package/lib/components/Catalog/CatalogCardView/CatalogCard.js +1 -1
- package/lib/components/CatalogClassic/CatalogClassicActions.js +1 -1
- package/lib/components/CatalogClassic/CatalogClassicCard.js +1 -1
- package/lib/components/Feedback/ReportDialog.js +1 -1
- package/lib/components/Footer/FooterItem.js +1 -1
- package/lib/components/Logo/Logo.js +1 -1
- package/lib/components/Navbar/Navbar.js +2 -2
- package/lib/components/Search/SearchInput.js +1 -1
- package/lib/components/Search/SearchRecent.js +1 -1
- package/lib/components/SidebarActions/ChangeViewButton.js +10 -4
- package/lib/components/SidebarActions/SidebarActions.js +13 -11
- package/lib/components/SidebarActions/styled.d.ts +1 -1
- package/lib/components/SidebarActions/styled.js +2 -1
- package/lib/components/TableOfContent/TableOfContent.js +1 -1
- package/lib/components/Tooltip/Tooltip.d.ts +2 -1
- package/lib/components/Tooltip/Tooltip.js +126 -41
- package/lib/components/Tooltip/variables.dark.d.ts +1 -0
- package/lib/components/Tooltip/variables.dark.js +9 -0
- package/lib/components/Tooltip/variables.js +8 -8
- package/lib/components/UserMenu/LoginButton.js +1 -1
- package/lib/components/UserMenu/LogoutMenuItem.js +1 -1
- package/lib/core/constants/breadcrumb.d.ts +1 -0
- package/lib/core/constants/breadcrumb.js +5 -0
- package/lib/core/constants/index.d.ts +1 -0
- package/lib/core/constants/index.js +1 -0
- package/lib/core/hooks/__mocks__/use-theme-hooks.js +1 -1
- package/lib/core/hooks/use-page-actions.js +26 -8
- package/lib/core/hooks/use-theme-hooks.js +2 -1
- package/lib/core/styles/dark.js +2 -0
- package/lib/core/types/hooks.d.ts +5 -1
- package/lib/core/types/l10n.d.ts +1 -1
- package/lib/core/utils/text-trimmer.js +1 -1
- package/lib/markdoc/tags/code-walkthrough.js +10 -10
- package/lib/markdoc/tags/img.js +1 -0
- package/package.json +2 -2
- package/src/components/Breadcrumbs/Breadcrumb.tsx +75 -34
- package/src/components/Breadcrumbs/BreadcrumbDropdown.tsx +170 -0
- package/src/components/Breadcrumbs/BreadcrumbIcon.tsx +30 -0
- package/src/components/Breadcrumbs/Breadcrumbs.tsx +112 -29
- package/src/components/Breadcrumbs/variables.ts +16 -4
- package/src/components/Buttons/EditPageButton.tsx +1 -1
- package/src/components/Catalog/CatalogCardView/CatalogCard.tsx +1 -1
- package/src/components/CatalogClassic/CatalogClassicActions.tsx +1 -1
- package/src/components/CatalogClassic/CatalogClassicCard.tsx +1 -1
- package/src/components/Feedback/ReportDialog.tsx +1 -1
- package/src/components/Footer/FooterItem.tsx +1 -1
- package/src/components/Logo/Logo.tsx +1 -1
- package/src/components/Navbar/Navbar.tsx +2 -2
- package/src/components/Search/SearchInput.tsx +1 -1
- package/src/components/Search/SearchRecent.tsx +1 -1
- package/src/components/SidebarActions/ChangeViewButton.tsx +24 -8
- package/src/components/SidebarActions/SidebarActions.tsx +20 -15
- package/src/components/SidebarActions/styled.tsx +2 -1
- package/src/components/TableOfContent/TableOfContent.tsx +1 -1
- package/src/components/Tooltip/Tooltip.tsx +149 -53
- package/src/components/Tooltip/variables.dark.ts +6 -0
- package/src/components/Tooltip/variables.ts +8 -8
- package/src/components/UserMenu/LoginButton.tsx +1 -1
- package/src/components/UserMenu/LogoutMenuItem.tsx +1 -1
- package/src/core/constants/breadcrumb.ts +1 -0
- package/src/core/constants/index.ts +1 -0
- package/src/core/hooks/__mocks__/use-theme-hooks.ts +1 -1
- package/src/core/hooks/use-page-actions.ts +42 -7
- package/src/core/hooks/use-theme-hooks.ts +2 -1
- package/src/core/styles/dark.ts +2 -0
- package/src/core/types/hooks.ts +5 -1
- package/src/core/types/l10n.ts +8 -1
- package/src/core/utils/text-trimmer.ts +1 -1
- package/src/markdoc/tags/code-walkthrough.ts +10 -11
- package/src/markdoc/tags/img.ts +1 -0
|
@@ -4,6 +4,7 @@ type BreadcrumbProps = {
|
|
|
4
4
|
link?: string;
|
|
5
5
|
isActive: boolean;
|
|
6
6
|
onClick?: () => void;
|
|
7
|
+
icon?: string;
|
|
7
8
|
};
|
|
8
|
-
export declare function Breadcrumb({ label, link, isActive, onClick }: BreadcrumbProps): JSX.Element;
|
|
9
|
+
export declare function Breadcrumb({ label, link, isActive, onClick, icon }: BreadcrumbProps): JSX.Element;
|
|
9
10
|
export {};
|
|
@@ -1,39 +1,87 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
26
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
27
|
};
|
|
5
28
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
29
|
exports.Breadcrumb = Breadcrumb;
|
|
7
30
|
const react_1 = __importDefault(require("react"));
|
|
8
|
-
const styled_components_1 =
|
|
31
|
+
const styled_components_1 = __importStar(require("styled-components"));
|
|
9
32
|
const Link_1 = require("../../components/Link/Link");
|
|
10
|
-
|
|
11
|
-
|
|
33
|
+
const Tooltip_1 = require("../../components/Tooltip/Tooltip");
|
|
34
|
+
const BreadcrumbIcon_1 = require("../../components/Breadcrumbs/BreadcrumbIcon");
|
|
35
|
+
const utils_1 = require("../../core/utils");
|
|
36
|
+
const constants_1 = require("../../core/constants");
|
|
37
|
+
function Breadcrumb({ label, link, isActive, onClick, icon }) {
|
|
38
|
+
const isTruncated = label.length > constants_1.BREADCRUMB_MAX_LENGTH;
|
|
39
|
+
const displayLabel = (0, utils_1.trimText)(label, constants_1.BREADCRUMB_MAX_LENGTH);
|
|
40
|
+
const content = (react_1.default.createElement(react_1.default.Fragment, null,
|
|
41
|
+
react_1.default.createElement(BreadcrumbIcon_1.BreadcrumbIcon, { icon: icon }),
|
|
42
|
+
displayLabel));
|
|
43
|
+
const breadcrumbContent = link ? (react_1.default.createElement(BreadcrumbLink, { "data-component-name": "Breadcrumbs/BreadcrumbLink", to: link, onClick: onClick, "$isActive": isActive }, content)) : (react_1.default.createElement(BreadcrumbWrapper, { "data-component-name": "Breadcrumbs/BreadcrumbWrapper", "$isActive": isActive, onClick: onClick, tabIndex: -1 }, content));
|
|
44
|
+
return isTruncated ? (react_1.default.createElement(Tooltip_1.TooltipComponent, { tip: label, placement: "bottom", width: "max-content" }, breadcrumbContent)) : (breadcrumbContent);
|
|
12
45
|
}
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
46
|
+
const baseBreadcrumbStyles = `
|
|
47
|
+
display: flex;
|
|
48
|
+
align-items: center;
|
|
49
|
+
gap: var(--breadcrumbs-gap);
|
|
50
|
+
padding: var(--breadcrumb-padding);
|
|
17
51
|
border-radius: var(--border-radius);
|
|
52
|
+
color: var(--breadcrumbs-text-color);
|
|
53
|
+
text-decoration: none;
|
|
18
54
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
text-decoration: var(--breadcrumbs-text-decoration-hover);
|
|
23
|
-
}
|
|
24
|
-
`}
|
|
55
|
+
&:hover {
|
|
56
|
+
background-color: var(--breadcrumbs-background-color-hover);
|
|
57
|
+
}
|
|
25
58
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
59
|
+
&:focus {
|
|
60
|
+
box-shadow: var(--breadcrumbs-box-shadow-focus);
|
|
61
|
+
outline: none;
|
|
62
|
+
}
|
|
30
63
|
`;
|
|
31
|
-
const
|
|
32
|
-
text-
|
|
33
|
-
|
|
64
|
+
const activeColorStyles = (0, styled_components_1.css) `
|
|
65
|
+
color: var(--breadcrumbs-text-color-active);
|
|
66
|
+
`;
|
|
67
|
+
const BreadcrumbWrapper = styled_components_1.default.div `
|
|
68
|
+
${baseBreadcrumbStyles}
|
|
69
|
+
|
|
70
|
+
${(props) => props.$isActive && activeColorStyles}
|
|
71
|
+
cursor: default;
|
|
72
|
+
pointer-events: none;
|
|
73
|
+
|
|
74
|
+
&:focus {
|
|
75
|
+
box-shadow: none;
|
|
76
|
+
outline: none;
|
|
77
|
+
}
|
|
34
78
|
|
|
35
|
-
&:
|
|
36
|
-
color:
|
|
79
|
+
&:hover {
|
|
80
|
+
background-color: transparent;
|
|
37
81
|
}
|
|
38
82
|
`;
|
|
83
|
+
const BreadcrumbLink = (0, styled_components_1.default)(Link_1.Link) `
|
|
84
|
+
${baseBreadcrumbStyles}
|
|
85
|
+
${(props) => props.$isActive && activeColorStyles}
|
|
86
|
+
`;
|
|
39
87
|
//# sourceMappingURL=Breadcrumb.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BreadcrumbItem } from '@redocly/config';
|
|
3
|
+
import type { JSX } from 'react';
|
|
4
|
+
type BreadcrumbDropdownProps = {
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
label: string;
|
|
7
|
+
items: (BreadcrumbItem & {
|
|
8
|
+
isActive?: boolean;
|
|
9
|
+
})[];
|
|
10
|
+
onItemClick?: (item: BreadcrumbItem, index: number) => void;
|
|
11
|
+
className?: string;
|
|
12
|
+
};
|
|
13
|
+
export declare function BreadcrumbDropdown({ children, label, items, onItemClick, className, }: BreadcrumbDropdownProps): JSX.Element | null;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.BreadcrumbDropdown = BreadcrumbDropdown;
|
|
30
|
+
const react_1 = __importDefault(require("react"));
|
|
31
|
+
const styled_components_1 = __importStar(require("styled-components"));
|
|
32
|
+
const hooks_1 = require("../../core/hooks");
|
|
33
|
+
const Dropdown_1 = require("../../components/Dropdown/Dropdown");
|
|
34
|
+
const DropdownMenu_1 = require("../../components/Dropdown/DropdownMenu");
|
|
35
|
+
const DropdownMenuItem_1 = require("../../components/Dropdown/DropdownMenuItem");
|
|
36
|
+
const Tooltip_1 = require("../../components/Tooltip/Tooltip");
|
|
37
|
+
const GenericIcon_1 = require("../../icons/GenericIcon/GenericIcon");
|
|
38
|
+
const constants_1 = require("../../core/constants");
|
|
39
|
+
const BreadcrumbIcon_1 = require("../../components/Breadcrumbs/BreadcrumbIcon");
|
|
40
|
+
function BreadcrumbDropdown({ children, label, items, onItemClick, className, }) {
|
|
41
|
+
const { useTelemetry, useTranslate } = (0, hooks_1.useThemeHooks)();
|
|
42
|
+
const telemetry = useTelemetry();
|
|
43
|
+
const { translate } = useTranslate();
|
|
44
|
+
if (!items || items.length === 0) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
const isTruncated = label.length > constants_1.BREADCRUMB_MAX_LENGTH;
|
|
48
|
+
const triggerContent = isTruncated ? (react_1.default.createElement(Tooltip_1.TooltipComponent, { tip: label, placement: "bottom", width: "max-content" },
|
|
49
|
+
react_1.default.createElement(TriggerContentWrapper, null, children))) : (children);
|
|
50
|
+
const trigger = react_1.default.createElement(StyledDropdownTrigger, null, triggerContent);
|
|
51
|
+
return (react_1.default.createElement(BreadcrumbDropdownWrapper, { "data-component-name": "Breadcrumbs/BreadcrumbDropdown", className: className, "data-testid": "breadcrumb-dropdown" },
|
|
52
|
+
react_1.default.createElement(Dropdown_1.Dropdown, { trigger: trigger, closeOnClick: true },
|
|
53
|
+
react_1.default.createElement(DropdownMenu_1.DropdownMenu, null, items.map((item, index) => {
|
|
54
|
+
const isActive = Boolean(item === null || item === void 0 ? void 0 : item.isActive);
|
|
55
|
+
const hasLink = Boolean(item.link);
|
|
56
|
+
const translatedLabel = translate(item.labelTranslationKey, item.label);
|
|
57
|
+
return (react_1.default.createElement(StyledDropdownMenuItem, { key: index, onAction: () => {
|
|
58
|
+
onItemClick === null || onItemClick === void 0 ? void 0 : onItemClick(item, index);
|
|
59
|
+
telemetry.sendBreadcrumbClickedMessage({
|
|
60
|
+
link: item.link,
|
|
61
|
+
position: index + 1,
|
|
62
|
+
totalBreadcrumbs: items.length,
|
|
63
|
+
});
|
|
64
|
+
}, "$hasLink": hasLink, to: item.link, dataAttributes: !hasLink ? { 'aria-disabled': 'true' } : {} },
|
|
65
|
+
react_1.default.createElement(DropdownContent, { "$isActive": isActive },
|
|
66
|
+
react_1.default.createElement(BreadcrumbIcon_1.BreadcrumbIcon, { icon: item.icon }),
|
|
67
|
+
react_1.default.createElement(DropdownLabel, null, translatedLabel),
|
|
68
|
+
isActive && (react_1.default.createElement(ActiveIcon, null,
|
|
69
|
+
react_1.default.createElement(GenericIcon_1.GenericIcon, { icon: "check" }))))));
|
|
70
|
+
})))));
|
|
71
|
+
}
|
|
72
|
+
const BreadcrumbDropdownWrapper = styled_components_1.default.div `
|
|
73
|
+
display: inline-flex;
|
|
74
|
+
align-items: center;
|
|
75
|
+
`;
|
|
76
|
+
const StyledDropdownTrigger = styled_components_1.default.button `
|
|
77
|
+
display: flex;
|
|
78
|
+
align-items: center;
|
|
79
|
+
gap: var(--breadcrumbs-gap);
|
|
80
|
+
border: none;
|
|
81
|
+
background: none;
|
|
82
|
+
border-radius: var(--breadcrumbs-border-radius);
|
|
83
|
+
color: var(--breadcrumbs-text-color);
|
|
84
|
+
cursor: pointer;
|
|
85
|
+
font-size: var(--breadcrumbs-font-size);
|
|
86
|
+
|
|
87
|
+
&:hover {
|
|
88
|
+
background-color: var(--breadcrumbs-background-color-hover);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
&:focus {
|
|
92
|
+
box-shadow: var(--breadcrumbs-box-shadow-focus);
|
|
93
|
+
outline: none;
|
|
94
|
+
}
|
|
95
|
+
`;
|
|
96
|
+
const StyledDropdownMenuItem = (0, styled_components_1.default)(DropdownMenuItem_1.DropdownMenuItem) `
|
|
97
|
+
cursor: ${(props) => (props.$hasLink ? 'pointer' : 'default')};
|
|
98
|
+
|
|
99
|
+
${(props) => !props.$hasLink &&
|
|
100
|
+
(0, styled_components_1.css) `
|
|
101
|
+
&:focus,
|
|
102
|
+
&:focus-visible {
|
|
103
|
+
outline: none;
|
|
104
|
+
box-shadow: none;
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
&:hover {
|
|
108
|
+
background-color: transparent;
|
|
109
|
+
color: inherit;
|
|
110
|
+
}
|
|
111
|
+
`}
|
|
112
|
+
`;
|
|
113
|
+
const TriggerContentWrapper = styled_components_1.default.span `
|
|
114
|
+
display: flex;
|
|
115
|
+
align-items: center;
|
|
116
|
+
gap: var(--breadcrumbs-gap);
|
|
117
|
+
`;
|
|
118
|
+
const DropdownContent = styled_components_1.default.div `
|
|
119
|
+
display: flex;
|
|
120
|
+
align-items: center;
|
|
121
|
+
gap: var(--breadcrumbs-gap);
|
|
122
|
+
padding: var(--breadcrumb-padding);
|
|
123
|
+
color: ${(props) => (props.$isActive ? 'var(--breadcrumbs-text-color-active)' : 'inherit')};
|
|
124
|
+
font-weight: ${(props) => props.$isActive ? 'var(--breadcrumbs-font-weight-active)' : 'inherit'};
|
|
125
|
+
`;
|
|
126
|
+
const DropdownLabel = styled_components_1.default.span `
|
|
127
|
+
color: inherit;
|
|
128
|
+
`;
|
|
129
|
+
const ActiveIcon = styled_components_1.default.span `
|
|
130
|
+
position: absolute;
|
|
131
|
+
left: var(--breadcrumb-dropdown-active-icon-position);
|
|
132
|
+
display: inline-flex;
|
|
133
|
+
align-items: center;
|
|
134
|
+
color: inherit;
|
|
135
|
+
width: var(--breadcrumbs-icon-size);
|
|
136
|
+
height: var(--breadcrumbs-icon-size);
|
|
137
|
+
`;
|
|
138
|
+
//# sourceMappingURL=BreadcrumbDropdown.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.BreadcrumbIcon = BreadcrumbIcon;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const styled_components_1 = __importDefault(require("styled-components"));
|
|
9
|
+
const GenericIcon_1 = require("../../icons/GenericIcon/GenericIcon");
|
|
10
|
+
function BreadcrumbIcon({ icon, className }) {
|
|
11
|
+
if (!icon) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
return (react_1.default.createElement(BreadcrumbIconWrapper, { "data-component-name": "Breadcrumbs/BreadcrumbIcon", className: className },
|
|
15
|
+
react_1.default.createElement(GenericIcon_1.GenericIcon, { icon: icon, size: "var(--breadcrumbs-icon-size)" })));
|
|
16
|
+
}
|
|
17
|
+
const BreadcrumbIconWrapper = styled_components_1.default.span `
|
|
18
|
+
display: inline-flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
width: var(--breadcrumbs-icon-size);
|
|
21
|
+
justify-content: center;
|
|
22
|
+
`;
|
|
23
|
+
//# sourceMappingURL=BreadcrumbIcon.js.map
|
|
@@ -8,25 +8,77 @@ const react_1 = __importDefault(require("react"));
|
|
|
8
8
|
const styled_components_1 = __importDefault(require("styled-components"));
|
|
9
9
|
const hooks_1 = require("../../core/hooks");
|
|
10
10
|
const Breadcrumb_1 = require("../../components/Breadcrumbs/Breadcrumb");
|
|
11
|
+
const BreadcrumbDropdown_1 = require("../../components/Breadcrumbs/BreadcrumbDropdown");
|
|
12
|
+
const BreadcrumbIcon_1 = require("../../components/Breadcrumbs/BreadcrumbIcon");
|
|
13
|
+
const utils_1 = require("../../core/utils");
|
|
14
|
+
const constants_1 = require("../../core/constants");
|
|
15
|
+
const GenericIcon_1 = require("../../icons/GenericIcon/GenericIcon");
|
|
11
16
|
function Breadcrumbs(props) {
|
|
12
|
-
const { useBreadcrumbs, useTelemetry } = (0, hooks_1.useThemeHooks)();
|
|
13
|
-
const fileBreadcrumbs = useBreadcrumbs();
|
|
14
|
-
const breadcrumbs = [...fileBreadcrumbs, ...(props.additionalBreadcrumbs || [])];
|
|
17
|
+
const { useBreadcrumbs, useTelemetry, useTranslate } = (0, hooks_1.useThemeHooks)();
|
|
18
|
+
const { breadcrumbs: fileBreadcrumbs, currentItemSiblings } = useBreadcrumbs();
|
|
15
19
|
const telemetry = useTelemetry();
|
|
20
|
+
const { translate } = useTranslate();
|
|
21
|
+
const breadcrumbs = react_1.default.useMemo(() => {
|
|
22
|
+
var _a;
|
|
23
|
+
const extra = (_a = props.additionalBreadcrumbs) !== null && _a !== void 0 ? _a : [];
|
|
24
|
+
return [...(fileBreadcrumbs || []), ...extra];
|
|
25
|
+
}, [fileBreadcrumbs, props.additionalBreadcrumbs]);
|
|
26
|
+
const shouldCollapse = breadcrumbs.length > 4;
|
|
27
|
+
const isInDropdown = (index, total, collapsed) => collapsed && index > 0 && index < total - 2;
|
|
28
|
+
const items = react_1.default.useMemo(() => {
|
|
29
|
+
const total = breadcrumbs.length;
|
|
30
|
+
return breadcrumbs.map((b, i) => ({
|
|
31
|
+
breadcrumb: b,
|
|
32
|
+
idx: i,
|
|
33
|
+
isLast: i === total - 1,
|
|
34
|
+
inDropdown: isInDropdown(i, total, shouldCollapse),
|
|
35
|
+
}));
|
|
36
|
+
}, [breadcrumbs, shouldCollapse]);
|
|
16
37
|
if (breadcrumbs.length === 0) {
|
|
17
38
|
return null;
|
|
18
39
|
}
|
|
19
|
-
|
|
20
|
-
const
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
40
|
+
const renderBreadcrumb = (breadcrumb, idx, isActive) => {
|
|
41
|
+
const isParentOfActive = idx === breadcrumbs.length - 2 && currentItemSiblings && currentItemSiblings.length > 0;
|
|
42
|
+
if (isParentOfActive) {
|
|
43
|
+
const currentActiveBreadcrumb = breadcrumbs[breadcrumbs.length - 1];
|
|
44
|
+
const siblingsWithActive = [
|
|
45
|
+
Object.assign(Object.assign({}, currentActiveBreadcrumb), { isActive: true }),
|
|
46
|
+
...currentItemSiblings,
|
|
47
|
+
];
|
|
48
|
+
const translatedLabel = translate(breadcrumb.labelTranslationKey, breadcrumb.label);
|
|
49
|
+
return (react_1.default.createElement(BreadcrumbDropdown_1.BreadcrumbDropdown, { label: translatedLabel, items: siblingsWithActive, onItemClick: (item, itemIdx) => telemetry.sendBreadcrumbClickedMessage({
|
|
50
|
+
link: item.link,
|
|
51
|
+
position: itemIdx + 1,
|
|
52
|
+
totalBreadcrumbs: siblingsWithActive.length,
|
|
53
|
+
}) },
|
|
54
|
+
react_1.default.createElement(BreadcrumbIcon_1.BreadcrumbIcon, { icon: breadcrumb.icon }),
|
|
55
|
+
(0, utils_1.trimText)(translatedLabel, constants_1.BREADCRUMB_MAX_LENGTH),
|
|
56
|
+
react_1.default.createElement(GenericIcon_1.GenericIcon, { icon: "chevron-down" })));
|
|
57
|
+
}
|
|
58
|
+
return (react_1.default.createElement(Breadcrumb_1.Breadcrumb, { link: breadcrumb.link, label: translate(breadcrumb.labelTranslationKey, breadcrumb.label), isActive: isActive, icon: breadcrumb.icon, onClick: () => telemetry.sendBreadcrumbClickedMessage({
|
|
59
|
+
link: breadcrumb.link,
|
|
60
|
+
position: idx + 1,
|
|
61
|
+
totalBreadcrumbs: breadcrumbs.length,
|
|
62
|
+
}) }));
|
|
63
|
+
};
|
|
64
|
+
return (react_1.default.createElement(BreadcrumbsWrapper, { "data-component-name": "Breadcrumbs/Breadcrumbs", className: props.className }, items.map(({ breadcrumb, idx, isLast, inDropdown }) => {
|
|
65
|
+
if (inDropdown)
|
|
66
|
+
return null;
|
|
67
|
+
if (shouldCollapse && idx === 0) {
|
|
68
|
+
const collapsedBreadcrumbs = breadcrumbs.slice(1, -2);
|
|
69
|
+
return (react_1.default.createElement(react_1.default.Fragment, { key: idx },
|
|
70
|
+
renderBreadcrumb(breadcrumb, idx, isLast),
|
|
71
|
+
react_1.default.createElement(BreadcrumbSeparator, null, "/"),
|
|
72
|
+
react_1.default.createElement(BreadcrumbDropdown_1.BreadcrumbDropdown, { label: "...", items: collapsedBreadcrumbs, onItemClick: (item, itemIdx) => telemetry.sendBreadcrumbClickedMessage({
|
|
73
|
+
link: item.link,
|
|
74
|
+
position: itemIdx + 1,
|
|
26
75
|
totalBreadcrumbs: breadcrumbs.length,
|
|
27
|
-
})
|
|
28
|
-
|
|
29
|
-
|
|
76
|
+
}) }, "..."),
|
|
77
|
+
react_1.default.createElement(BreadcrumbSeparator, null, "/")));
|
|
78
|
+
}
|
|
79
|
+
return (react_1.default.createElement(react_1.default.Fragment, { key: idx },
|
|
80
|
+
renderBreadcrumb(breadcrumb, idx, isLast),
|
|
81
|
+
isLast ? null : react_1.default.createElement(BreadcrumbSeparator, null, "/")));
|
|
30
82
|
})));
|
|
31
83
|
}
|
|
32
84
|
const BreadcrumbsWrapper = styled_components_1.default.div `
|
|
@@ -36,17 +88,8 @@ const BreadcrumbsWrapper = styled_components_1.default.div `
|
|
|
36
88
|
color: var(--breadcrumbs-text-color);
|
|
37
89
|
font-size: var(--breadcrumbs-font-size);
|
|
38
90
|
flex-wrap: wrap;
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
> span {
|
|
45
|
-
padding: var(--breadcrumbs-gap);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
@media print {
|
|
49
|
-
display: none;
|
|
50
|
-
}
|
|
91
|
+
`;
|
|
92
|
+
const BreadcrumbSeparator = styled_components_1.default.span `
|
|
93
|
+
padding: var(--breadcrumbs-padding);
|
|
51
94
|
`;
|
|
52
95
|
//# sourceMappingURL=Breadcrumbs.js.map
|
|
@@ -8,12 +8,24 @@ exports.breadcrumbs = (0, styled_components_1.css) `
|
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
10
|
--breadcrumbs-text-color: var(--text-color-description); // @presenter Color
|
|
11
|
-
--breadcrumbs-font-size: var(--font-size-base); // @presenter FontSize
|
|
12
11
|
--breadcrumbs-text-color-active: var(--text-color-primary); // @presenter Color
|
|
13
|
-
--breadcrumbs-text-
|
|
14
|
-
|
|
15
|
-
--breadcrumbs-
|
|
12
|
+
--breadcrumbs-text-color-border-hover: var(--color-info-border-hover); // @presenter Color
|
|
13
|
+
|
|
14
|
+
--breadcrumbs-font-size: var(--font-size-base); // @presenter FontSize
|
|
15
|
+
--breadcrumbs-icon-size: var(--font-size-base); // @presenter FontSize
|
|
16
|
+
--breadcrumbs-font-weight-active: var(--font-weight-medium); // @presenter FontWeight
|
|
17
|
+
|
|
18
|
+
--breadcrumbs-border-radius: var(--border-radius); // @presenter BorderRadius
|
|
19
|
+
--breadcrumbs-gap: var(--spacing-xxs); // @presenter Spacing
|
|
20
|
+
|
|
21
|
+
--breadcrumbs-padding: 2px var(--spacing-xs); // @presenter Spacing
|
|
16
22
|
--breadcrumbs-margin-bottom: var(--spacing-lg); // @presenter Spacing
|
|
23
|
+
--breadcrumbs-background-color-hover: var(--color-hover-base); // @presenter Color
|
|
24
|
+
--breadcrumbs-background-color-focus: var(--color-info-border-hover); // @presenter Color
|
|
25
|
+
--breadcrumbs-box-shadow-focus: 0 0 0 1px var(--breadcrumbs-background-color-focus); // @presenter Color
|
|
26
|
+
|
|
27
|
+
--breadcrumb-padding: var(--spacing-xxs); // @presenter Spacing
|
|
28
|
+
--breadcrumb-dropdown-active-icon-position: var(--spacing-xs); // @presenter Spacing
|
|
17
29
|
|
|
18
30
|
// @tokens End
|
|
19
31
|
`;
|
|
@@ -13,7 +13,7 @@ function EditPageButton({ to }) {
|
|
|
13
13
|
const { useTranslate, useTelemetry } = (0, hooks_1.useThemeHooks)();
|
|
14
14
|
const { translate } = useTranslate();
|
|
15
15
|
const telemetry = useTelemetry();
|
|
16
|
-
return (react_1.default.createElement(EditPageButtonWrapper, { "data-component-name": "Buttons/EditPageButton", target: "_blank", to: to, onClick: () => telemetry.sendEditPageLinkClickedMessage(
|
|
16
|
+
return (react_1.default.createElement(EditPageButtonWrapper, { "data-component-name": "Buttons/EditPageButton", target: "_blank", to: to, onClick: () => telemetry.sendEditPageLinkClickedMessage() },
|
|
17
17
|
react_1.default.createElement(ButtonIcon, null),
|
|
18
18
|
react_1.default.createElement(ButtonText, { "data-translation-key": "markdown.editPage.text" }, translate('markdown.editPage.text', 'Edit'))));
|
|
19
19
|
}
|
|
@@ -22,7 +22,7 @@ function CatalogCard({ entity, catalogConfig }) {
|
|
|
22
22
|
const pathPrefix = (0, utils_1.getPathPrefix)();
|
|
23
23
|
return (react_1.default.createElement(CatalogCardWrapper, { "data-component-name": "Catalog/CatalogCardView/CatalogCard", onClick: () => {
|
|
24
24
|
window.location.assign(`${pathPrefix}/catalogs/${catalogConfig.slug}/entities/${entity.key}`);
|
|
25
|
-
telemetry.sendCatalogItemClickedMessage(
|
|
25
|
+
telemetry.sendCatalogItemClickedMessage();
|
|
26
26
|
} },
|
|
27
27
|
react_1.default.createElement(CardContent, null,
|
|
28
28
|
react_1.default.createElement(CardHeader, null,
|
|
@@ -51,7 +51,7 @@ function CatalogClassicActions(props) {
|
|
|
51
51
|
return (React.createElement(CatalogActionsWrapper, { "data-component-name": "CatalogClassic/CatalogClassicActions" },
|
|
52
52
|
React.createElement(Button_1.Button, { variant: "ghost", size: "small", icon: React.createElement(FilterIcon_1.FilterIcon, null), iconPosition: "left", onClick: () => {
|
|
53
53
|
onOpenFilter();
|
|
54
|
-
telemetry.sendCatalogActionsButtonClickedMessage(
|
|
54
|
+
telemetry.sendCatalogActionsButtonClickedMessage();
|
|
55
55
|
}, "data-translation-key": "catalog.filters.title" }, translate('catalog.filters.title', 'Filters')),
|
|
56
56
|
activeFilters > 0 ? React.createElement(CounterTag_1.CounterTag, { borderless: true }, activeFilters) : null));
|
|
57
57
|
}
|
|
@@ -54,7 +54,7 @@ function CatalogClassicCard({ item }) {
|
|
|
54
54
|
const { useTelemetry } = (0, hooks_1.useThemeHooks)();
|
|
55
55
|
const telemetry = useTelemetry();
|
|
56
56
|
return (React.createElement(Link_1.Link, { key: item.docsLink || item.link, to: item.docsLink || item.link },
|
|
57
|
-
React.createElement(StyledCard, { "data-component-name": "CatalogClassic/CatalogClassicCard", onClick: () => telemetry.sendCatalogItemClickedMessage(
|
|
57
|
+
React.createElement(StyledCard, { "data-component-name": "CatalogClassic/CatalogClassicCard", onClick: () => telemetry.sendCatalogItemClickedMessage() },
|
|
58
58
|
React.createElement(CardContent, null,
|
|
59
59
|
React.createElement(CardTitleWrapper, null,
|
|
60
60
|
React.createElement(CardTitle, null,
|
|
@@ -34,7 +34,7 @@ function ReportDialog({ location, settings, onSubmit, onCancel, submitFeedback,
|
|
|
34
34
|
path: pathname,
|
|
35
35
|
lang,
|
|
36
36
|
});
|
|
37
|
-
telemetry.sendCodeSnippetReportedMessage(
|
|
37
|
+
telemetry.sendCodeSnippetReportedMessage();
|
|
38
38
|
onSubmit();
|
|
39
39
|
}), isDialog: true, onCancel: onCancel }))));
|
|
40
40
|
}
|
|
@@ -20,7 +20,7 @@ function FooterItem({ item, iconsOnly, className }) {
|
|
|
20
20
|
}
|
|
21
21
|
const hasIcon = Boolean(item.icon || item.srcSet);
|
|
22
22
|
const iconWithoutLabel = Boolean(item.label === item.link && hasIcon);
|
|
23
|
-
return (react_1.default.createElement(FooterItemWrapper, { className: className, "data-component-name": "Footer/FooterItem", iconsOnly: iconsOnly, item: item }, item.type === 'separator' ? (react_1.default.createElement(FooterSeparator, { "data-translation-key": item.labelTranslationKey }, translate(item.labelTranslationKey, item.label))) : (react_1.default.createElement(FooterLink, { to: item.link, external: item.external, target: item.target, "data-testid": item.label, onClick: () => telemetry.sendFooterItemClickedMessage(
|
|
23
|
+
return (react_1.default.createElement(FooterItemWrapper, { className: className, "data-component-name": "Footer/FooterItem", iconsOnly: iconsOnly, item: item }, item.type === 'separator' ? (react_1.default.createElement(FooterSeparator, { "data-translation-key": item.labelTranslationKey }, translate(item.labelTranslationKey, item.label))) : (react_1.default.createElement(FooterLink, { to: item.link, external: item.external, target: item.target, "data-testid": item.label, onClick: () => telemetry.sendFooterItemClickedMessage(), "data-translation-key": item.labelTranslationKey },
|
|
24
24
|
hasIcon ? (react_1.default.createElement(FooterLinkIcon, { iconsOnly: iconsOnly },
|
|
25
25
|
react_1.default.createElement(GenericIcon_1.GenericIcon, { icon: item.icon, srcSet: item.srcSet }))) : null,
|
|
26
26
|
!iconWithoutLabel ? translate(item.labelTranslationKey, item.label) : null,
|
|
@@ -28,7 +28,7 @@ function Logo(_a) {
|
|
|
28
28
|
return null;
|
|
29
29
|
}
|
|
30
30
|
const image = (react_1.default.createElement(Image_1.Image, { className: className, src: config.image, srcSet: config.srcSet, alt: config.altText }));
|
|
31
|
-
return (react_1.default.createElement(LogoWrapper, Object.assign({ "data-component-name": "Logo/Logo", className: className }, otherProps), config.link ? (react_1.default.createElement(Link_1.Link, { to: config.link, onClick: () => telemetry.sendLogoClickedMessage(
|
|
31
|
+
return (react_1.default.createElement(LogoWrapper, Object.assign({ "data-component-name": "Logo/Logo", className: className }, otherProps), config.link ? (react_1.default.createElement(Link_1.Link, { to: config.link, onClick: () => telemetry.sendLogoClickedMessage() }, image)) : (image)));
|
|
32
32
|
}
|
|
33
33
|
const LogoWrapper = styled_components_1.default.div `
|
|
34
34
|
max-width: var(--logo-max-width);
|
|
@@ -45,11 +45,11 @@ function Navbar({ className }) {
|
|
|
45
45
|
react_1.default.createElement(MobileMenuButton, { variant: "text", "data-testid": "mobile-menu-button", onClick: isOpen
|
|
46
46
|
? () => {
|
|
47
47
|
closeMobileMenu();
|
|
48
|
-
telemetry.sendMobileMenuButtonCloseClickedMessage(
|
|
48
|
+
telemetry.sendMobileMenuButtonCloseClickedMessage();
|
|
49
49
|
}
|
|
50
50
|
: () => {
|
|
51
51
|
openMobileMenu();
|
|
52
|
-
telemetry.sendMobileMenuButtonOpenClickedMessage(
|
|
52
|
+
telemetry.sendMobileMenuButtonOpenClickedMessage();
|
|
53
53
|
}, icon: isOpen ? react_1.default.createElement(CloseIcon_1.CloseIcon, null) : react_1.default.createElement(MenuIcon_1.MenuIcon, null), "aria-label": isOpen ? 'Close menu button' : 'Open menu button' }),
|
|
54
54
|
hideUserMenu ? null : react_1.default.createElement(UserMenu_1.UserMenu, null))));
|
|
55
55
|
}
|
|
@@ -27,7 +27,7 @@ function SearchInput({ placeholder, value, onChange, isLoading, showReturnButton
|
|
|
27
27
|
const handleOnReset = () => {
|
|
28
28
|
onChange('');
|
|
29
29
|
addSearchHistoryItem(value);
|
|
30
|
-
telemetry.sendSearchInputResetButtonClickedMessage(
|
|
30
|
+
telemetry.sendSearchInputResetButtonClickedMessage();
|
|
31
31
|
};
|
|
32
32
|
return (react_1.default.createElement(SearchInputWrapper, { "data-component-name": "Search/SearchInput", className: className },
|
|
33
33
|
showReturnButton ? (react_1.default.createElement(Button_1.Button, { icon: react_1.default.createElement(ChevronLeftIcon_1.ChevronLeftIcon, null), onClick: onReturn })) : value && isLoading ? (react_1.default.createElement(Spinner_1.Spinner, { size: "24px", color: "--search-input-icon-color" })) : (react_1.default.createElement(SearchIcon_1.SearchIcon, { size: "24px", color: "--search-input-icon-color" })),
|
|
@@ -44,7 +44,7 @@ function SearchRecent({ onSelect, className }) {
|
|
|
44
44
|
const handleOnRemove = (e, item) => {
|
|
45
45
|
e.stopPropagation();
|
|
46
46
|
removeSearchHistoryItem(item);
|
|
47
|
-
telemetry.sendSearchRecentRemoveButtonClickedMessage(
|
|
47
|
+
telemetry.sendSearchRecentRemoveButtonClickedMessage();
|
|
48
48
|
};
|
|
49
49
|
const handleKeyDown = (e, item, index) => {
|
|
50
50
|
if (e.key === 'Enter') {
|
|
@@ -8,15 +8,21 @@ const react_1 = __importDefault(require("react"));
|
|
|
8
8
|
const HorizontalViewIcon_1 = require("../../icons/HorizontalViewIcon/HorizontalViewIcon");
|
|
9
9
|
const VerticalViewIcon_1 = require("../../icons/VerticalViewIcon/VerticalViewIcon");
|
|
10
10
|
const SidebarActions_1 = require("../../components/SidebarActions/SidebarActions");
|
|
11
|
-
const styled_1 = require("../../components/SidebarActions/styled");
|
|
12
11
|
const hooks_1 = require("../../core/hooks");
|
|
12
|
+
const styled_1 = require("../../components/SidebarActions/styled");
|
|
13
13
|
const ChangeViewButton = ({ layout, onClick, collapsedSidebar, }) => {
|
|
14
14
|
const { useTranslate } = (0, hooks_1.useThemeHooks)();
|
|
15
15
|
const { translate } = useTranslate();
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
const isStacked = layout === SidebarActions_1.LayoutVariant.STACKED;
|
|
17
|
+
const isThreePanel = layout === SidebarActions_1.LayoutVariant.THREE_PANEL;
|
|
18
|
+
return (react_1.default.createElement(styled_1.StyledChangeViewButton, { onClick: onClick, collapsedSidebar: collapsedSidebar },
|
|
19
|
+
react_1.default.createElement(styled_1.StyledChangeViewButtonWrap, { placement: collapsedSidebar ? 'right' : 'top', arrowPosition: collapsedSidebar ? 'center' : 'right', active: isStacked, tip: isStacked
|
|
20
|
+
? translate('sidebar.actions.singleColumn', 'Single column')
|
|
21
|
+
: translate('sidebar.actions.changeToSingleColumn', 'Switch to single column') },
|
|
18
22
|
react_1.default.createElement(HorizontalViewIcon_1.HorizontalViewIcon, { size: "14px", color: "--segmented-buttons-content-color" })),
|
|
19
|
-
react_1.default.createElement(styled_1.StyledChangeViewButtonWrap, { active:
|
|
23
|
+
react_1.default.createElement(styled_1.StyledChangeViewButtonWrap, { active: isThreePanel, placement: collapsedSidebar ? 'right' : 'top', arrowPosition: collapsedSidebar ? 'center' : 'right', tip: isThreePanel
|
|
24
|
+
? translate('sidebar.actions.twoColumns', 'Two columns')
|
|
25
|
+
: translate('sidebar.actions.changeToTwoColumns', 'Switch to two columns') },
|
|
20
26
|
react_1.default.createElement(VerticalViewIcon_1.VerticalViewIcon, { size: "14px", color: "--segmented-buttons-content-color" }))));
|
|
21
27
|
};
|
|
22
28
|
exports.ChangeViewButton = ChangeViewButton;
|
|
@@ -13,26 +13,28 @@ const Button_1 = require("../../components/Button/Button");
|
|
|
13
13
|
const SidePanelCloseIcon_1 = require("../../icons/SidePanelCloseIcon/SidePanelCloseIcon");
|
|
14
14
|
const SidePanelOpenIcon_1 = require("../../icons/SidePanelOpenIcon/SidePanelOpenIcon");
|
|
15
15
|
const styled_1 = require("../../components/SidebarActions/styled");
|
|
16
|
+
const Tooltip_1 = require("../../components/Tooltip/Tooltip");
|
|
16
17
|
const SidebarActions = ({ layout, hideCollapseSidebarButton = false, collapsedSidebar, isApiDocs, onChangeViewClick, onChangeCollapseSidebarClick, requestAccessButton, className, }) => {
|
|
17
18
|
const { useTelemetry, useTranslate } = (0, hooks_1.useThemeHooks)();
|
|
18
19
|
const { translate } = useTranslate();
|
|
19
20
|
const telemetry = useTelemetry();
|
|
20
21
|
return (react_1.default.createElement(styled_1.ControlsWrap, { className: className, isCollapsed: collapsedSidebar, "data-component-name": "Sidebar/SidebarActions" },
|
|
21
|
-
!hideCollapseSidebarButton && (react_1.default.createElement(
|
|
22
|
-
onChangeCollapseSidebarClick();
|
|
23
|
-
if (collapsedSidebar) {
|
|
24
|
-
telemetry.sendSidebarItemExpandedMessage(undefined);
|
|
25
|
-
}
|
|
26
|
-
else {
|
|
27
|
-
telemetry.sendSidebarItemCollapsedMessage(undefined);
|
|
28
|
-
}
|
|
29
|
-
}, title: collapsedSidebar
|
|
22
|
+
!hideCollapseSidebarButton && (react_1.default.createElement(Tooltip_1.Tooltip, { placement: collapsedSidebar ? 'right' : 'top', tip: collapsedSidebar
|
|
30
23
|
? translate('sidebar.actions.show', 'Show sidebar')
|
|
31
|
-
: translate('sidebar.actions.hide', 'Hide sidebar')
|
|
24
|
+
: translate('sidebar.actions.hide', 'Hide sidebar') },
|
|
25
|
+
react_1.default.createElement(Button_1.Button, { onClick: () => {
|
|
26
|
+
onChangeCollapseSidebarClick();
|
|
27
|
+
if (collapsedSidebar) {
|
|
28
|
+
telemetry.sendSidebarItemExpandedMessage();
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
telemetry.sendSidebarItemCollapsedMessage();
|
|
32
|
+
}
|
|
33
|
+
}, size: "small", variant: "outlined", icon: collapsedSidebar ? react_1.default.createElement(SidePanelOpenIcon_1.SidePanelOpenIcon, null) : react_1.default.createElement(SidePanelCloseIcon_1.SidePanelCloseIcon, null) }))),
|
|
32
34
|
isApiDocs && (react_1.default.createElement(styled_1.ControlsWrapChangeLayoutButtons, { isCollapsed: collapsedSidebar },
|
|
33
35
|
react_1.default.createElement(ChangeViewButton_1.ChangeViewButton, { collapsedSidebar: collapsedSidebar, layout: layout, onClick: () => {
|
|
34
36
|
onChangeViewClick();
|
|
35
|
-
telemetry.sendChangeLayoutButtonClickedMessage(
|
|
37
|
+
telemetry.sendChangeLayoutButtonClickedMessage();
|
|
36
38
|
} }))),
|
|
37
39
|
!collapsedSidebar && requestAccessButton));
|
|
38
40
|
};
|