@redocly/theme 0.9.12 → 0.9.13
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/Sidebar/FooterWrapper.d.ts +2 -2
- package/lib/Sidebar/FooterWrapper.js +6 -3
- package/lib/Sidebar/SidebarLayout.d.ts +6 -3
- package/lib/Sidebar/SidebarLayout.js +55 -7
- package/lib/Sidebar/index.d.ts +1 -0
- package/lib/Sidebar/index.js +1 -0
- package/lib/SidebarActions/ChangeViewButton.d.ts +8 -0
- package/lib/SidebarActions/ChangeViewButton.js +14 -0
- package/lib/SidebarActions/CollapseSidebarButton.d.ts +7 -0
- package/lib/SidebarActions/CollapseSidebarButton.js +13 -0
- package/lib/SidebarActions/SidebarActions.d.ts +20 -0
- package/lib/SidebarActions/SidebarActions.js +26 -0
- package/lib/SidebarActions/ToggleRightPanelButton.d.ts +7 -0
- package/lib/SidebarActions/ToggleRightPanelButton.js +13 -0
- package/lib/SidebarActions/index.d.ts +1 -0
- package/lib/SidebarActions/index.js +7 -0
- package/lib/SidebarActions/styled.d.ts +17 -0
- package/lib/SidebarActions/styled.js +124 -0
- package/lib/globalStyle.js +1 -2
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -0
- package/package.json +1 -1
- package/src/Sidebar/FooterWrapper.tsx +7 -4
- package/src/Sidebar/SidebarLayout.tsx +66 -18
- package/src/Sidebar/index.ts +1 -0
- package/src/SidebarActions/ChangeViewButton.tsx +20 -0
- package/src/SidebarActions/CollapseSidebarButton.tsx +21 -0
- package/src/SidebarActions/SidebarActions.tsx +64 -0
- package/src/SidebarActions/ToggleRightPanelButton.tsx +21 -0
- package/src/SidebarActions/index.tsx +1 -0
- package/src/SidebarActions/styled.tsx +157 -0
- package/src/globalStyle.ts +1 -2
- package/src/index.ts +1 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare const FooterWrapper: import("styled-components").StyledComponent<"div", any, {
|
|
2
|
-
|
|
3
|
-
},
|
|
2
|
+
collapsed?: boolean | undefined;
|
|
3
|
+
}, never>;
|
|
@@ -5,9 +5,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.FooterWrapper = void 0;
|
|
7
7
|
const styled_components_1 = __importDefault(require("styled-components"));
|
|
8
|
-
exports.FooterWrapper = styled_components_1.default.div
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
exports.FooterWrapper = styled_components_1.default.div `
|
|
9
|
+
${({ collapsed }) => collapsed &&
|
|
10
|
+
`
|
|
11
|
+
position: sticky;
|
|
12
|
+
bottom: 0;
|
|
13
|
+
`}
|
|
11
14
|
margin: var(--sidebar-offset-top) 0 var(--sidebar-spacing-unit) var(--sidebar-offset-left);
|
|
12
15
|
padding-top: var(--sidebar-spacing-unit);
|
|
13
16
|
padding-right: var(--sidebar-spacing-unit);
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
interface SidebarLayoutProps {
|
|
3
|
-
versions
|
|
4
|
-
menu
|
|
3
|
+
versions?: React.ReactNode;
|
|
4
|
+
menu?: React.ReactNode;
|
|
5
5
|
backLink?: {
|
|
6
6
|
label: string;
|
|
7
7
|
slug: string;
|
|
8
8
|
};
|
|
9
9
|
footer?: React.ReactNode;
|
|
10
|
+
actions?: React.ReactNode;
|
|
10
11
|
header?: React.ReactNode;
|
|
11
12
|
growContent?: boolean;
|
|
13
|
+
collapsed?: boolean;
|
|
14
|
+
onToggleMenu?: (isOpen: boolean) => void;
|
|
12
15
|
}
|
|
13
|
-
export declare function SidebarLayout({ versions, menu, footer, header, growContent, }: SidebarLayoutProps): JSX.Element | null;
|
|
16
|
+
export declare function SidebarLayout({ versions, menu, footer, header, growContent, collapsed, onToggleMenu, }: SidebarLayoutProps): JSX.Element | null;
|
|
14
17
|
export {};
|
|
@@ -1,10 +1,33 @@
|
|
|
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.SidebarLayout = void 0;
|
|
7
|
-
const react_1 =
|
|
30
|
+
const react_1 = __importStar(require("react"));
|
|
8
31
|
const styled_components_1 = __importDefault(require("styled-components"));
|
|
9
32
|
const Sidebar_1 = require("../Sidebar/Sidebar");
|
|
10
33
|
const FooterWrapper_1 = require("../Sidebar/FooterWrapper");
|
|
@@ -15,23 +38,48 @@ const MenuContainer_1 = require("../Sidebar/MenuContainer");
|
|
|
15
38
|
const SidebarSearch_1 = require("../Search/SidebarSearch");
|
|
16
39
|
const useThemeConfig_1 = require("../hooks/useThemeConfig");
|
|
17
40
|
const MobileSidebarIcon_1 = require("./MobileSidebarIcon");
|
|
18
|
-
|
|
41
|
+
const StyledFooterWrapper = (0, styled_components_1.default)(FooterWrapper_1.FooterWrapper) `
|
|
42
|
+
display: none;
|
|
43
|
+
|
|
44
|
+
${({ theme }) => { var _a; return (_a = theme.mediaQueries) === null || _a === void 0 ? void 0 : _a.medium; }} {
|
|
45
|
+
display: flex;
|
|
46
|
+
}
|
|
47
|
+
`;
|
|
48
|
+
function SidebarLayout({ versions, menu, footer, header, growContent, collapsed, onToggleMenu, }) {
|
|
19
49
|
const [isOpen, setIsOpen] = (0, useMobileMenu_1.useMobileMenu)();
|
|
20
|
-
const
|
|
50
|
+
const [mappedCollapsed, setMappedCollapsed] = react_1.default.useState(collapsed);
|
|
51
|
+
(0, react_1.useEffect)(() => {
|
|
52
|
+
setMappedCollapsed(collapsed && !isOpen);
|
|
53
|
+
}, [isOpen, collapsed, setMappedCollapsed]);
|
|
54
|
+
const toggleMenu = () => {
|
|
55
|
+
onToggleMenu === null || onToggleMenu === void 0 ? void 0 : onToggleMenu(!isOpen);
|
|
56
|
+
setIsOpen(!isOpen);
|
|
57
|
+
};
|
|
21
58
|
const { search, sidebar } = (0, useThemeConfig_1.useThemeConfig)();
|
|
22
59
|
if (sidebar === null || sidebar === void 0 ? void 0 : sidebar.hide) {
|
|
23
60
|
return null;
|
|
24
61
|
}
|
|
25
|
-
return (react_1.default.createElement(Wrapper, {
|
|
62
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, mappedCollapsed ? (footer ? (react_1.default.createElement(Wrapper, { collapsed: true },
|
|
63
|
+
react_1.default.createElement(StyledFooterWrapper, { "data-component-name": "Sidebar/FooterWrapper", collapsed: true }, footer),
|
|
64
|
+
react_1.default.createElement(MobileSidebarButton_1.MobileSidebarButton, { opened: isOpen, onClick: toggleMenu },
|
|
65
|
+
react_1.default.createElement(MobileSidebarIcon_1.MobileSidebarIcon, null)))) : null) : (react_1.default.createElement(Wrapper, { "data-component-name": "Sidebar/SidebarLayout" },
|
|
26
66
|
react_1.default.createElement(MobileSidebarButton_1.MobileSidebarButton, { opened: isOpen, onClick: toggleMenu },
|
|
27
67
|
react_1.default.createElement(MobileSidebarIcon_1.MobileSidebarIcon, null)),
|
|
28
68
|
!(search === null || search === void 0 ? void 0 : search.hide) && (search === null || search === void 0 ? void 0 : search.placement) === 'sidebar' ? react_1.default.createElement(SidebarSearch_1.SidebarSearch, null) : null,
|
|
29
69
|
react_1.default.createElement(Sidebar_1.Sidebar, { animate: true, opened: isOpen },
|
|
30
70
|
header ? react_1.default.createElement(HeaderWrapper_1.HeaderWrapper, null, header) : null,
|
|
31
|
-
versions,
|
|
71
|
+
versions ? react_1.default.createElement(react_1.default.Fragment, null, versions) : null,
|
|
32
72
|
react_1.default.createElement(MenuContainer_1.MenuContainer, { growContent: growContent }, menu),
|
|
33
|
-
footer ? react_1.default.createElement(FooterWrapper_1.FooterWrapper,
|
|
73
|
+
footer && !isOpen ? (react_1.default.createElement(FooterWrapper_1.FooterWrapper, { "data-component-name": "Sidebar/FooterWrapper" }, footer)) : null)))));
|
|
34
74
|
}
|
|
35
75
|
exports.SidebarLayout = SidebarLayout;
|
|
36
|
-
const Wrapper = styled_components_1.default.div
|
|
76
|
+
const Wrapper = styled_components_1.default.div `
|
|
77
|
+
${({ collapsed }) => collapsed &&
|
|
78
|
+
`
|
|
79
|
+
display: flex;
|
|
80
|
+
flex-direction: column;
|
|
81
|
+
justify-content: flex-end;
|
|
82
|
+
border-right: 1px solid var(--sidebar-border-color);
|
|
83
|
+
`}
|
|
84
|
+
`;
|
|
37
85
|
//# sourceMappingURL=SidebarLayout.js.map
|
package/lib/Sidebar/index.d.ts
CHANGED
|
@@ -13,6 +13,7 @@ export * from '../Sidebar/MenuItemLabel';
|
|
|
13
13
|
export * from '../Sidebar/MenuLink';
|
|
14
14
|
export * from '../Sidebar/MenuLinkItem';
|
|
15
15
|
export * from '../Sidebar/MobileSidebarButton';
|
|
16
|
+
export * from '../Sidebar/MobileSidebarIcon';
|
|
16
17
|
export * from '../Sidebar/Separator';
|
|
17
18
|
export * from '../Sidebar/SeparatorItem';
|
|
18
19
|
export * from '../Sidebar/Sidebar';
|
package/lib/Sidebar/index.js
CHANGED
|
@@ -29,6 +29,7 @@ __exportStar(require("../Sidebar/MenuItemLabel"), exports);
|
|
|
29
29
|
__exportStar(require("../Sidebar/MenuLink"), exports);
|
|
30
30
|
__exportStar(require("../Sidebar/MenuLinkItem"), exports);
|
|
31
31
|
__exportStar(require("../Sidebar/MobileSidebarButton"), exports);
|
|
32
|
+
__exportStar(require("../Sidebar/MobileSidebarIcon"), exports);
|
|
32
33
|
__exportStar(require("../Sidebar/Separator"), exports);
|
|
33
34
|
__exportStar(require("../Sidebar/SeparatorItem"), exports);
|
|
34
35
|
__exportStar(require("../Sidebar/Sidebar"), exports);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import { LayoutVariant } from './SidebarActions';
|
|
3
|
+
interface ChangeViewButtonProps {
|
|
4
|
+
layout: LayoutVariant;
|
|
5
|
+
onClick: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare const ChangeViewButton: ({ layout, onClick, }: ChangeViewButtonProps) => JSX.Element | null;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
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.ChangeViewButton = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const SidebarActions_1 = require("./SidebarActions");
|
|
9
|
+
const styled_1 = require("./styled");
|
|
10
|
+
const ChangeViewButton = ({ layout, onClick, }) => {
|
|
11
|
+
return (react_1.default.createElement(styled_1.StyledChangeViewButton, { title: "Change layout", onClick: onClick }, layout === SidebarActions_1.LayoutVariant.STACKED ? react_1.default.createElement(styled_1.ChangeViewSvgRow, null) : react_1.default.createElement(styled_1.ChangeViewSvgColumn, null)));
|
|
12
|
+
};
|
|
13
|
+
exports.ChangeViewButton = ChangeViewButton;
|
|
14
|
+
//# sourceMappingURL=ChangeViewButton.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
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.CollapseSidebarButton = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const styled_1 = require("./styled");
|
|
9
|
+
const CollapseSidebarButton = ({ initialValue, onClick, }) => {
|
|
10
|
+
return (react_1.default.createElement(styled_1.StyledToggleRightPanelButton, { title: initialValue ? 'Show sidebar' : 'Hide sidebar', onClick: onClick }, initialValue ? react_1.default.createElement(styled_1.HideLeftPanelSVG, null) : react_1.default.createElement(styled_1.ShowLeftPanelSVG, null)));
|
|
11
|
+
};
|
|
12
|
+
exports.CollapseSidebarButton = CollapseSidebarButton;
|
|
13
|
+
//# sourceMappingURL=CollapseSidebarButton.js.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export declare enum LayoutVariant {
|
|
3
|
+
STACKED = "stacked",
|
|
4
|
+
THREE_PANEL = "three-panel"
|
|
5
|
+
}
|
|
6
|
+
interface SidebarActionsProps {
|
|
7
|
+
showChangeLayoutButton: boolean;
|
|
8
|
+
showRightPanelToggle: boolean;
|
|
9
|
+
layout: LayoutVariant;
|
|
10
|
+
initialShowRightPanelToggle: boolean;
|
|
11
|
+
collapsedSidebar: boolean;
|
|
12
|
+
isOpenapiDocs: boolean;
|
|
13
|
+
hideCollapseSidebarButton?: boolean;
|
|
14
|
+
onChangeRightPanelViewClick: () => void;
|
|
15
|
+
onChangeViewClick: () => void;
|
|
16
|
+
onChangeCollapseSidebarClick: () => void;
|
|
17
|
+
requestAccessButton?: React.ReactElement | null;
|
|
18
|
+
}
|
|
19
|
+
export declare const SidebarActions: ({ showChangeLayoutButton, showRightPanelToggle, layout, initialShowRightPanelToggle, hideCollapseSidebarButton, collapsedSidebar, isOpenapiDocs, onChangeRightPanelViewClick, onChangeViewClick, onChangeCollapseSidebarClick, requestAccessButton, }: SidebarActionsProps) => JSX.Element;
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,26 @@
|
|
|
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.SidebarActions = exports.LayoutVariant = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const ChangeViewButton_1 = require("./ChangeViewButton");
|
|
9
|
+
const ToggleRightPanelButton_1 = require("./ToggleRightPanelButton");
|
|
10
|
+
const CollapseSidebarButton_1 = require("./CollapseSidebarButton");
|
|
11
|
+
const styled_1 = require("./styled");
|
|
12
|
+
var LayoutVariant;
|
|
13
|
+
(function (LayoutVariant) {
|
|
14
|
+
LayoutVariant["STACKED"] = "stacked";
|
|
15
|
+
LayoutVariant["THREE_PANEL"] = "three-panel";
|
|
16
|
+
})(LayoutVariant = exports.LayoutVariant || (exports.LayoutVariant = {}));
|
|
17
|
+
const SidebarActions = ({ showChangeLayoutButton, showRightPanelToggle, layout, initialShowRightPanelToggle, hideCollapseSidebarButton = false, collapsedSidebar, isOpenapiDocs, onChangeRightPanelViewClick, onChangeViewClick, onChangeCollapseSidebarClick, requestAccessButton, }) => {
|
|
18
|
+
return (react_1.default.createElement(styled_1.ControlsWrap, { isOpenapiDocs: isOpenapiDocs, isCollapsed: collapsedSidebar },
|
|
19
|
+
isOpenapiDocs && (react_1.default.createElement(styled_1.ControlsWrapChangeLayoutButtons, { isCollapsed: collapsedSidebar },
|
|
20
|
+
initialShowRightPanelToggle && (react_1.default.createElement(ToggleRightPanelButton_1.ToggleRightPanelButton, { showRightPanelToggle: showRightPanelToggle, onClick: onChangeRightPanelViewClick })),
|
|
21
|
+
showChangeLayoutButton && showRightPanelToggle && (react_1.default.createElement(ChangeViewButton_1.ChangeViewButton, { layout: layout, onClick: onChangeViewClick })))),
|
|
22
|
+
!collapsedSidebar && requestAccessButton,
|
|
23
|
+
!hideCollapseSidebarButton && (react_1.default.createElement(CollapseSidebarButton_1.CollapseSidebarButton, { initialValue: collapsedSidebar, onClick: onChangeCollapseSidebarClick }))));
|
|
24
|
+
};
|
|
25
|
+
exports.SidebarActions = SidebarActions;
|
|
26
|
+
//# sourceMappingURL=SidebarActions.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
interface ToggleRightPanelButtonProps {
|
|
3
|
+
showRightPanelToggle: boolean;
|
|
4
|
+
onClick: () => void;
|
|
5
|
+
}
|
|
6
|
+
export declare const ToggleRightPanelButton: ({ showRightPanelToggle, onClick, }: ToggleRightPanelButtonProps) => JSX.Element;
|
|
7
|
+
export {};
|
|
@@ -0,0 +1,13 @@
|
|
|
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.ToggleRightPanelButton = void 0;
|
|
7
|
+
const react_1 = __importDefault(require("react"));
|
|
8
|
+
const styled_1 = require("./styled");
|
|
9
|
+
const ToggleRightPanelButton = ({ showRightPanelToggle, onClick, }) => {
|
|
10
|
+
return (react_1.default.createElement(styled_1.StyledToggleRightPanelButton, { title: showRightPanelToggle ? 'Hide samples' : 'Show samples', onClick: onClick }, showRightPanelToggle ? react_1.default.createElement(styled_1.HideRightPanelSVG, null) : react_1.default.createElement(styled_1.ShowRightPanelSVG, null)));
|
|
11
|
+
};
|
|
12
|
+
exports.ToggleRightPanelButton = ToggleRightPanelButton;
|
|
13
|
+
//# sourceMappingURL=ToggleRightPanelButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { SidebarActions, LayoutVariant } from './SidebarActions';
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LayoutVariant = exports.SidebarActions = void 0;
|
|
4
|
+
var SidebarActions_1 = require("./SidebarActions");
|
|
5
|
+
Object.defineProperty(exports, "SidebarActions", { enumerable: true, get: function () { return SidebarActions_1.SidebarActions; } });
|
|
6
|
+
Object.defineProperty(exports, "LayoutVariant", { enumerable: true, get: function () { return SidebarActions_1.LayoutVariant; } });
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
export declare const ShowLeftPanelSVG: import("styled-components").StyledComponent<() => JSX.Element, any, {}, never>;
|
|
3
|
+
export declare const HideLeftPanelSVG: import("styled-components").StyledComponent<() => JSX.Element, any, {}, never>;
|
|
4
|
+
export declare const StyledToggleRightPanelButton: import("styled-components").StyledComponent<"a", any, {}, never>;
|
|
5
|
+
export declare const HideRightPanelSVG: import("styled-components").StyledComponent<() => JSX.Element, any, {}, never>;
|
|
6
|
+
export declare const ShowRightPanelSVG: import("styled-components").StyledComponent<() => JSX.Element, any, {}, never>;
|
|
7
|
+
export declare const StyledChangeViewButton: import("styled-components").StyledComponent<"a", any, {}, never>;
|
|
8
|
+
export declare const ChangeViewSvgRow: import("styled-components").StyledComponent<() => JSX.Element, any, {}, never>;
|
|
9
|
+
export declare const ChangeViewSvgColumn: import("styled-components").StyledComponent<() => JSX.Element, any, {}, never>;
|
|
10
|
+
export declare const ControlsWrap: import("styled-components").StyledComponent<"span", any, {
|
|
11
|
+
iconCount?: number | undefined;
|
|
12
|
+
isCollapsed?: boolean | undefined;
|
|
13
|
+
isOpenapiDocs?: boolean | undefined;
|
|
14
|
+
}, never>;
|
|
15
|
+
export declare const ControlsWrapChangeLayoutButtons: import("styled-components").StyledComponent<"span", any, {
|
|
16
|
+
isCollapsed?: boolean | undefined;
|
|
17
|
+
}, never>;
|
|
@@ -0,0 +1,124 @@
|
|
|
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.ControlsWrapChangeLayoutButtons = exports.ControlsWrap = exports.ChangeViewSvgColumn = exports.ChangeViewSvgRow = exports.StyledChangeViewButton = exports.ShowRightPanelSVG = exports.HideRightPanelSVG = exports.StyledToggleRightPanelButton = exports.HideLeftPanelSVG = exports.ShowLeftPanelSVG = void 0;
|
|
30
|
+
const react_1 = __importDefault(require("react"));
|
|
31
|
+
const styled_components_1 = __importStar(require("styled-components"));
|
|
32
|
+
exports.ShowLeftPanelSVG = (0, styled_components_1.default)(() => (react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
33
|
+
react_1.default.createElement("path", { d: "M4.375 7L8.75 2.625L9.3625 3.2375L5.6 7L9.3625 10.7625L8.75 11.375L4.375 7Z", fill: "var(--color-emphasis-400)" })))) `
|
|
34
|
+
position: absolute;
|
|
35
|
+
`;
|
|
36
|
+
exports.HideLeftPanelSVG = (0, styled_components_1.default)(() => (react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
37
|
+
react_1.default.createElement("path", { d: "M9.62495 7L5.24995 11.375L4.63745 10.7625L8.39995 7L4.63745 3.2375L5.24995 2.625L9.62495 7Z", fill: "var(--color-emphasis-400)" })))) `
|
|
38
|
+
position: absolute;
|
|
39
|
+
`;
|
|
40
|
+
exports.StyledToggleRightPanelButton = styled_components_1.default.a `
|
|
41
|
+
display: flex;
|
|
42
|
+
justify-content: center;
|
|
43
|
+
align-items: center;
|
|
44
|
+
cursor: pointer;
|
|
45
|
+
z-index: 1;
|
|
46
|
+
/* Rectangle 201 */
|
|
47
|
+
border-radius: var(--border-radius);
|
|
48
|
+
padding: var(--spacing-unit);
|
|
49
|
+
|
|
50
|
+
&:hover {
|
|
51
|
+
background-color: var(--sidebar-item-active-background-color);
|
|
52
|
+
}
|
|
53
|
+
`;
|
|
54
|
+
exports.HideRightPanelSVG = (0, styled_components_1.default)(() => (react_1.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
55
|
+
react_1.default.createElement("path", { d: "M14 2H2C1.73478 2 1.48043 2.10536 1.29289 2.29289C1.10536 2.48043 1 2.73478 1 3V13C1 13.2652 1.10536 13.5196 1.29289 13.7071C1.48043 13.8946 1.73478 14 2 14H14C14.2652 14 14.5196 13.8946 14.7071 13.7071C14.8946 13.5196 15 13.2652 15 13V3C15 2.73478 14.8946 2.48043 14.7071 2.29289C14.5196 2.10536 14.2652 2 14 2V2ZM2 3H10V13H2V3Z", fill: "var(--color-emphasis-400)" })))) `
|
|
56
|
+
position: absolute;
|
|
57
|
+
`;
|
|
58
|
+
exports.ShowRightPanelSVG = (0, styled_components_1.default)(() => (react_1.default.createElement("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
59
|
+
react_1.default.createElement("path", { d: "M14 2H2C1.73478 2 1.48043 2.10536 1.29289 2.29289C1.10536 2.48043 1 2.73478 1 3V13C1 13.2652 1.10536 13.5196 1.29289 13.7071C1.48043 13.8946 1.73478 14 2 14H14C14.2652 14 14.5196 13.8946 14.7071 13.7071C14.8946 13.5196 15 13.2652 15 13V3C15 2.73478 14.8946 2.48043 14.7071 2.29289C14.5196 2.10536 14.2652 2 14 2V2ZM2 3H10V13H2V3ZM14 13H11V3H14V13Z", fill: "var(--color-emphasis-400)" })))) `
|
|
60
|
+
position: absolute;
|
|
61
|
+
`;
|
|
62
|
+
exports.StyledChangeViewButton = styled_components_1.default.a `
|
|
63
|
+
display: flex;
|
|
64
|
+
position: relative;
|
|
65
|
+
justify-content: center;
|
|
66
|
+
align-items: center;
|
|
67
|
+
cursor: pointer;
|
|
68
|
+
border-radius: var(--border-radius);
|
|
69
|
+
z-index: 1;
|
|
70
|
+
/* Rectangle 201 */
|
|
71
|
+
padding: var(--spacing-unit);
|
|
72
|
+
|
|
73
|
+
&:hover {
|
|
74
|
+
background-color: var(--sidebar-item-active-background-color);
|
|
75
|
+
}
|
|
76
|
+
`;
|
|
77
|
+
exports.ChangeViewSvgRow = (0, styled_components_1.default)(() => (react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
78
|
+
react_1.default.createElement("path", { d: "M1.75 2.625L12.25 2.625L12.25 1.75L1.75 1.75L1.75 2.625Z", fill: "var(--color-emphasis-400)" }),
|
|
79
|
+
react_1.default.createElement("path", { d: "M1.75 5.6875L12.25 5.6875L12.25 4.8125L1.75 4.8125L1.75 5.6875Z", fill: "var(--color-emphasis-400)" }),
|
|
80
|
+
react_1.default.createElement("path", { d: "M2.625 11.375L2.625 8.75L11.375 8.75L11.375 11.375L2.625 11.375ZM2.625 12.25L11.375 12.25C11.6071 12.25 11.8296 12.1578 11.9937 11.9937C12.1578 11.8296 12.25 11.6071 12.25 11.375L12.25 8.75C12.25 8.51794 12.1578 8.29538 11.9937 8.13128C11.8296 7.96719 11.6071 7.875 11.375 7.875L2.625 7.875C2.39294 7.875 2.17038 7.96719 2.00628 8.13128C1.84219 8.29538 1.75 8.51793 1.75 8.75L1.75 11.375C1.75 11.6071 1.84219 11.8296 2.00628 11.9937C2.17038 12.1578 2.39294 12.25 2.625 12.25Z", fill: "var(--color-emphasis-400)" })))) `
|
|
81
|
+
position: absolute;
|
|
82
|
+
`;
|
|
83
|
+
exports.ChangeViewSvgColumn = (0, styled_components_1.default)(() => (react_1.default.createElement("svg", { width: "14", height: "14", viewBox: "0 0 14 14", fill: "none", xmlns: "http://www.w3.org/2000/svg" },
|
|
84
|
+
react_1.default.createElement("path", { d: "M2.625 12.25L2.625 1.75L1.75 1.75L1.75 12.25L2.625 12.25Z", fill: "var(--color-emphasis-400)" }),
|
|
85
|
+
react_1.default.createElement("path", { d: "M5.6875 12.25L5.6875 1.75L4.8125 1.75L4.8125 12.25L5.6875 12.25Z", fill: "var(--color-emphasis-400)" }),
|
|
86
|
+
react_1.default.createElement("path", { d: "M11.375 11.375L8.75 11.375L8.75 2.625L11.375 2.625L11.375 11.375ZM12.25 11.375L12.25 2.625C12.25 2.39294 12.1578 2.17038 11.9937 2.00628C11.8296 1.84219 11.6071 1.75 11.375 1.75L8.75 1.75C8.51794 1.75 8.29538 1.84219 8.13128 2.00628C7.96719 2.17038 7.875 2.39294 7.875 2.625L7.875 11.375C7.875 11.6071 7.96719 11.8296 8.13128 11.9937C8.29538 12.1578 8.51794 12.25 8.75 12.25L11.375 12.25C11.6071 12.25 11.8296 12.1578 11.9937 11.9937C12.1578 11.8296 12.25 11.6071 12.25 11.375Z", fill: "var(--color-emphasis-400)" })))) `
|
|
87
|
+
position: absolute;
|
|
88
|
+
`;
|
|
89
|
+
exports.ControlsWrap = styled_components_1.default.span `
|
|
90
|
+
display: none;
|
|
91
|
+
justify-content: ${({ isOpenapiDocs }) => (isOpenapiDocs ? 'space-between' : 'flex-end')};
|
|
92
|
+
bottom: 0;
|
|
93
|
+
flex-direction: row;
|
|
94
|
+
gap: var(--spacing-unit);
|
|
95
|
+
align-items: center;
|
|
96
|
+
margin-left: '15px';
|
|
97
|
+
z-index: 2;
|
|
98
|
+
background: var(--sidebar-background-color);
|
|
99
|
+
|
|
100
|
+
${({ isCollapsed }) => isCollapsed &&
|
|
101
|
+
(0, styled_components_1.css) `
|
|
102
|
+
flex-direction: column;
|
|
103
|
+
gap: 10px;
|
|
104
|
+
padding-bottom: 10px;
|
|
105
|
+
`}
|
|
106
|
+
|
|
107
|
+
${({ theme }) => (0, styled_components_1.css) `
|
|
108
|
+
${theme.mediaQueries[theme.showAtBreakpoint.sidebar]} {
|
|
109
|
+
display: flex;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
${theme.mediaQueries.print} {
|
|
113
|
+
display: none;
|
|
114
|
+
}
|
|
115
|
+
`}
|
|
116
|
+
`;
|
|
117
|
+
exports.ControlsWrapChangeLayoutButtons = styled_components_1.default.span `
|
|
118
|
+
display: flex;
|
|
119
|
+
bottom: 0;
|
|
120
|
+
flex-direction: ${({ isCollapsed }) => (isCollapsed ? 'column-reverse' : 'row')};
|
|
121
|
+
gap: ${({ isCollapsed }) => (isCollapsed ? '10px' : 'var(--spacing-unit)')};
|
|
122
|
+
align-items: center;
|
|
123
|
+
`;
|
|
124
|
+
//# sourceMappingURL=styled.js.map
|
package/lib/globalStyle.js
CHANGED
|
@@ -1273,8 +1273,7 @@ const apiReferenceDocs = (0, styled_components_1.css) `
|
|
|
1273
1273
|
/**
|
|
1274
1274
|
* @tokens API Reference Schemas Layout
|
|
1275
1275
|
*/
|
|
1276
|
-
|
|
1277
|
-
--layout-controls-top-offset: 20px; // @presenter Spacing
|
|
1276
|
+
--layout-controls-margin: 20px; // @presenter Spacing
|
|
1278
1277
|
--layout-controls-height: 36px; // @presenter Spacing
|
|
1279
1278
|
--layout-controls-width: 36px; // @presenter Spacing
|
|
1280
1279
|
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
|
@@ -40,4 +40,5 @@ __exportStar(require("./config"), exports);
|
|
|
40
40
|
__exportStar(require("./Pages"), exports);
|
|
41
41
|
__exportStar(require("./Markdown"), exports);
|
|
42
42
|
__exportStar(require("./ReferenceDocs"), exports);
|
|
43
|
+
__exportStar(require("./SidebarActions"), exports);
|
|
43
44
|
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import styled from 'styled-components';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
export const FooterWrapper = styled.div<{ collapsed?: boolean }>`
|
|
3
|
+
${({ collapsed }) =>
|
|
4
|
+
collapsed &&
|
|
5
|
+
`
|
|
6
|
+
position: sticky;
|
|
7
|
+
bottom: 0;
|
|
8
|
+
`}
|
|
6
9
|
margin: var(--sidebar-offset-top) 0 var(--sidebar-spacing-unit) var(--sidebar-offset-left);
|
|
7
10
|
padding-top: var(--sidebar-spacing-unit);
|
|
8
11
|
padding-right: var(--sidebar-spacing-unit);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React from 'react';
|
|
1
|
+
import React, { useEffect } from 'react';
|
|
2
2
|
import styled from 'styled-components';
|
|
3
3
|
|
|
4
4
|
import { Sidebar } from '@theme/Sidebar/Sidebar';
|
|
@@ -13,26 +13,49 @@ import { useThemeConfig } from '@theme/hooks/useThemeConfig';
|
|
|
13
13
|
import { MobileSidebarIcon } from './MobileSidebarIcon';
|
|
14
14
|
|
|
15
15
|
interface SidebarLayoutProps {
|
|
16
|
-
versions
|
|
17
|
-
menu
|
|
16
|
+
versions?: React.ReactNode;
|
|
17
|
+
menu?: React.ReactNode;
|
|
18
18
|
backLink?: {
|
|
19
19
|
label: string;
|
|
20
20
|
slug: string;
|
|
21
21
|
};
|
|
22
22
|
footer?: React.ReactNode;
|
|
23
|
+
actions?: React.ReactNode;
|
|
23
24
|
header?: React.ReactNode;
|
|
24
25
|
growContent?: boolean;
|
|
26
|
+
collapsed?: boolean;
|
|
27
|
+
onToggleMenu?: (isOpen: boolean) => void;
|
|
25
28
|
}
|
|
26
29
|
|
|
30
|
+
const StyledFooterWrapper = styled(FooterWrapper)`
|
|
31
|
+
display: none;
|
|
32
|
+
|
|
33
|
+
${({ theme }) => theme.mediaQueries?.medium} {
|
|
34
|
+
display: flex;
|
|
35
|
+
}
|
|
36
|
+
`;
|
|
37
|
+
|
|
27
38
|
export function SidebarLayout({
|
|
28
39
|
versions,
|
|
29
40
|
menu,
|
|
30
41
|
footer,
|
|
31
42
|
header,
|
|
32
43
|
growContent,
|
|
44
|
+
collapsed,
|
|
45
|
+
onToggleMenu,
|
|
33
46
|
}: SidebarLayoutProps): JSX.Element | null {
|
|
34
47
|
const [isOpen, setIsOpen] = useMobileMenu();
|
|
35
|
-
const
|
|
48
|
+
const [mappedCollapsed, setMappedCollapsed] = React.useState(collapsed);
|
|
49
|
+
|
|
50
|
+
useEffect(() => {
|
|
51
|
+
setMappedCollapsed(collapsed && !isOpen);
|
|
52
|
+
}, [isOpen, collapsed, setMappedCollapsed]);
|
|
53
|
+
|
|
54
|
+
const toggleMenu = () => {
|
|
55
|
+
onToggleMenu?.(!isOpen);
|
|
56
|
+
setIsOpen(!isOpen);
|
|
57
|
+
};
|
|
58
|
+
|
|
36
59
|
const { search, sidebar } = useThemeConfig();
|
|
37
60
|
|
|
38
61
|
if (sidebar?.hide) {
|
|
@@ -40,20 +63,45 @@ export function SidebarLayout({
|
|
|
40
63
|
}
|
|
41
64
|
|
|
42
65
|
return (
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
66
|
+
<>
|
|
67
|
+
{mappedCollapsed ? (
|
|
68
|
+
footer ? (
|
|
69
|
+
<Wrapper collapsed={true}>
|
|
70
|
+
<StyledFooterWrapper data-component-name="Sidebar/FooterWrapper" collapsed={true}>
|
|
71
|
+
{footer}
|
|
72
|
+
</StyledFooterWrapper>
|
|
73
|
+
<MobileSidebarButton opened={isOpen} onClick={toggleMenu}>
|
|
74
|
+
<MobileSidebarIcon />
|
|
75
|
+
</MobileSidebarButton>
|
|
76
|
+
</Wrapper>
|
|
77
|
+
) : null
|
|
78
|
+
) : (
|
|
79
|
+
<Wrapper data-component-name="Sidebar/SidebarLayout">
|
|
80
|
+
<MobileSidebarButton opened={isOpen} onClick={toggleMenu}>
|
|
81
|
+
<MobileSidebarIcon />
|
|
82
|
+
</MobileSidebarButton>
|
|
83
|
+
{!search?.hide && search?.placement === 'sidebar' ? <SidebarSearch /> : null}
|
|
84
|
+
<Sidebar animate={true} opened={isOpen}>
|
|
85
|
+
{header ? <HeaderWrapper>{header}</HeaderWrapper> : null}
|
|
86
|
+
{versions ? <>{versions}</> : null}
|
|
87
|
+
<MenuContainer growContent={growContent}>{menu}</MenuContainer>
|
|
88
|
+
{footer && !isOpen ? (
|
|
89
|
+
<FooterWrapper data-component-name="Sidebar/FooterWrapper">{footer}</FooterWrapper>
|
|
90
|
+
) : null}
|
|
91
|
+
</Sidebar>
|
|
92
|
+
</Wrapper>
|
|
93
|
+
)}
|
|
94
|
+
</>
|
|
56
95
|
);
|
|
57
96
|
}
|
|
58
97
|
|
|
59
|
-
const Wrapper = styled.div
|
|
98
|
+
const Wrapper = styled.div<{ collapsed?: boolean }>`
|
|
99
|
+
${({ collapsed }) =>
|
|
100
|
+
collapsed &&
|
|
101
|
+
`
|
|
102
|
+
display: flex;
|
|
103
|
+
flex-direction: column;
|
|
104
|
+
justify-content: flex-end;
|
|
105
|
+
border-right: 1px solid var(--sidebar-border-color);
|
|
106
|
+
`}
|
|
107
|
+
`;
|
package/src/Sidebar/index.ts
CHANGED
|
@@ -13,6 +13,7 @@ export * from '@theme/Sidebar/MenuItemLabel';
|
|
|
13
13
|
export * from '@theme/Sidebar/MenuLink';
|
|
14
14
|
export * from '@theme/Sidebar/MenuLinkItem';
|
|
15
15
|
export * from '@theme/Sidebar/MobileSidebarButton';
|
|
16
|
+
export * from '@theme/Sidebar/MobileSidebarIcon';
|
|
16
17
|
export * from '@theme/Sidebar/Separator';
|
|
17
18
|
export * from '@theme/Sidebar/SeparatorItem';
|
|
18
19
|
export * from '@theme/Sidebar/Sidebar';
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { LayoutVariant } from './SidebarActions';
|
|
4
|
+
import { StyledChangeViewButton, ChangeViewSvgRow, ChangeViewSvgColumn } from './styled';
|
|
5
|
+
|
|
6
|
+
interface ChangeViewButtonProps {
|
|
7
|
+
layout: LayoutVariant;
|
|
8
|
+
onClick: () => void;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export const ChangeViewButton = ({
|
|
12
|
+
layout,
|
|
13
|
+
onClick,
|
|
14
|
+
}: ChangeViewButtonProps): JSX.Element | null => {
|
|
15
|
+
return (
|
|
16
|
+
<StyledChangeViewButton title="Change layout" onClick={onClick}>
|
|
17
|
+
{layout === LayoutVariant.STACKED ? <ChangeViewSvgRow /> : <ChangeViewSvgColumn />}
|
|
18
|
+
</StyledChangeViewButton>
|
|
19
|
+
);
|
|
20
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { StyledToggleRightPanelButton, HideLeftPanelSVG, ShowLeftPanelSVG } from './styled';
|
|
4
|
+
|
|
5
|
+
interface CollapseSidebarButtonProps {
|
|
6
|
+
initialValue: boolean;
|
|
7
|
+
onClick: () => void;
|
|
8
|
+
}
|
|
9
|
+
export const CollapseSidebarButton = ({
|
|
10
|
+
initialValue,
|
|
11
|
+
onClick,
|
|
12
|
+
}: CollapseSidebarButtonProps): JSX.Element => {
|
|
13
|
+
return (
|
|
14
|
+
<StyledToggleRightPanelButton
|
|
15
|
+
title={initialValue ? 'Show sidebar' : 'Hide sidebar'}
|
|
16
|
+
onClick={onClick}
|
|
17
|
+
>
|
|
18
|
+
{initialValue ? <HideLeftPanelSVG /> : <ShowLeftPanelSVG />}
|
|
19
|
+
</StyledToggleRightPanelButton>
|
|
20
|
+
);
|
|
21
|
+
};
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { ChangeViewButton } from './ChangeViewButton';
|
|
4
|
+
import { ToggleRightPanelButton } from './ToggleRightPanelButton';
|
|
5
|
+
import { CollapseSidebarButton } from './CollapseSidebarButton';
|
|
6
|
+
import { ControlsWrap, ControlsWrapChangeLayoutButtons } from './styled';
|
|
7
|
+
|
|
8
|
+
export enum LayoutVariant {
|
|
9
|
+
STACKED = 'stacked',
|
|
10
|
+
THREE_PANEL = 'three-panel',
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
interface SidebarActionsProps {
|
|
14
|
+
showChangeLayoutButton: boolean;
|
|
15
|
+
showRightPanelToggle: boolean;
|
|
16
|
+
layout: LayoutVariant;
|
|
17
|
+
initialShowRightPanelToggle: boolean;
|
|
18
|
+
collapsedSidebar: boolean;
|
|
19
|
+
isOpenapiDocs: boolean;
|
|
20
|
+
hideCollapseSidebarButton?: boolean;
|
|
21
|
+
onChangeRightPanelViewClick: () => void;
|
|
22
|
+
onChangeViewClick: () => void;
|
|
23
|
+
onChangeCollapseSidebarClick: () => void;
|
|
24
|
+
requestAccessButton?: React.ReactElement | null;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export const SidebarActions = ({
|
|
28
|
+
showChangeLayoutButton,
|
|
29
|
+
showRightPanelToggle,
|
|
30
|
+
layout,
|
|
31
|
+
initialShowRightPanelToggle,
|
|
32
|
+
hideCollapseSidebarButton = false,
|
|
33
|
+
collapsedSidebar,
|
|
34
|
+
isOpenapiDocs,
|
|
35
|
+
onChangeRightPanelViewClick,
|
|
36
|
+
onChangeViewClick,
|
|
37
|
+
onChangeCollapseSidebarClick,
|
|
38
|
+
requestAccessButton,
|
|
39
|
+
}: SidebarActionsProps) => {
|
|
40
|
+
return (
|
|
41
|
+
<ControlsWrap isOpenapiDocs={isOpenapiDocs} isCollapsed={collapsedSidebar}>
|
|
42
|
+
{isOpenapiDocs && (
|
|
43
|
+
<ControlsWrapChangeLayoutButtons isCollapsed={collapsedSidebar}>
|
|
44
|
+
{initialShowRightPanelToggle && (
|
|
45
|
+
<ToggleRightPanelButton
|
|
46
|
+
showRightPanelToggle={showRightPanelToggle}
|
|
47
|
+
onClick={onChangeRightPanelViewClick}
|
|
48
|
+
/>
|
|
49
|
+
)}
|
|
50
|
+
{showChangeLayoutButton && showRightPanelToggle && (
|
|
51
|
+
<ChangeViewButton layout={layout} onClick={onChangeViewClick} />
|
|
52
|
+
)}
|
|
53
|
+
</ControlsWrapChangeLayoutButtons>
|
|
54
|
+
)}
|
|
55
|
+
{!collapsedSidebar && requestAccessButton}
|
|
56
|
+
{!hideCollapseSidebarButton && (
|
|
57
|
+
<CollapseSidebarButton
|
|
58
|
+
initialValue={collapsedSidebar}
|
|
59
|
+
onClick={onChangeCollapseSidebarClick}
|
|
60
|
+
/>
|
|
61
|
+
)}
|
|
62
|
+
</ControlsWrap>
|
|
63
|
+
);
|
|
64
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { StyledToggleRightPanelButton, HideRightPanelSVG, ShowRightPanelSVG } from './styled';
|
|
4
|
+
|
|
5
|
+
interface ToggleRightPanelButtonProps {
|
|
6
|
+
showRightPanelToggle: boolean;
|
|
7
|
+
onClick: () => void;
|
|
8
|
+
}
|
|
9
|
+
export const ToggleRightPanelButton = ({
|
|
10
|
+
showRightPanelToggle,
|
|
11
|
+
onClick,
|
|
12
|
+
}: ToggleRightPanelButtonProps): JSX.Element => {
|
|
13
|
+
return (
|
|
14
|
+
<StyledToggleRightPanelButton
|
|
15
|
+
title={showRightPanelToggle ? 'Hide samples' : 'Show samples'}
|
|
16
|
+
onClick={onClick}
|
|
17
|
+
>
|
|
18
|
+
{showRightPanelToggle ? <HideRightPanelSVG /> : <ShowRightPanelSVG />}
|
|
19
|
+
</StyledToggleRightPanelButton>
|
|
20
|
+
);
|
|
21
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { SidebarActions, LayoutVariant } from './SidebarActions';
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import styled, { css } from 'styled-components';
|
|
3
|
+
|
|
4
|
+
export const ShowLeftPanelSVG = styled(() => (
|
|
5
|
+
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
6
|
+
<path
|
|
7
|
+
d="M4.375 7L8.75 2.625L9.3625 3.2375L5.6 7L9.3625 10.7625L8.75 11.375L4.375 7Z"
|
|
8
|
+
fill="var(--color-emphasis-400)"
|
|
9
|
+
/>
|
|
10
|
+
</svg>
|
|
11
|
+
))`
|
|
12
|
+
position: absolute;
|
|
13
|
+
`;
|
|
14
|
+
|
|
15
|
+
export const HideLeftPanelSVG = styled(() => (
|
|
16
|
+
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
17
|
+
<path
|
|
18
|
+
d="M9.62495 7L5.24995 11.375L4.63745 10.7625L8.39995 7L4.63745 3.2375L5.24995 2.625L9.62495 7Z"
|
|
19
|
+
fill="var(--color-emphasis-400)"
|
|
20
|
+
/>
|
|
21
|
+
</svg>
|
|
22
|
+
))`
|
|
23
|
+
position: absolute;
|
|
24
|
+
`;
|
|
25
|
+
|
|
26
|
+
export const StyledToggleRightPanelButton = styled.a`
|
|
27
|
+
display: flex;
|
|
28
|
+
justify-content: center;
|
|
29
|
+
align-items: center;
|
|
30
|
+
cursor: pointer;
|
|
31
|
+
z-index: 1;
|
|
32
|
+
/* Rectangle 201 */
|
|
33
|
+
border-radius: var(--border-radius);
|
|
34
|
+
padding: var(--spacing-unit);
|
|
35
|
+
|
|
36
|
+
&:hover {
|
|
37
|
+
background-color: var(--sidebar-item-active-background-color);
|
|
38
|
+
}
|
|
39
|
+
`;
|
|
40
|
+
|
|
41
|
+
export const HideRightPanelSVG = styled(() => (
|
|
42
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
43
|
+
<path
|
|
44
|
+
d="M14 2H2C1.73478 2 1.48043 2.10536 1.29289 2.29289C1.10536 2.48043 1 2.73478 1 3V13C1 13.2652 1.10536 13.5196 1.29289 13.7071C1.48043 13.8946 1.73478 14 2 14H14C14.2652 14 14.5196 13.8946 14.7071 13.7071C14.8946 13.5196 15 13.2652 15 13V3C15 2.73478 14.8946 2.48043 14.7071 2.29289C14.5196 2.10536 14.2652 2 14 2V2ZM2 3H10V13H2V3Z"
|
|
45
|
+
fill="var(--color-emphasis-400)"
|
|
46
|
+
/>
|
|
47
|
+
</svg>
|
|
48
|
+
))`
|
|
49
|
+
position: absolute;
|
|
50
|
+
`;
|
|
51
|
+
|
|
52
|
+
export const ShowRightPanelSVG = styled(() => (
|
|
53
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
54
|
+
<path
|
|
55
|
+
d="M14 2H2C1.73478 2 1.48043 2.10536 1.29289 2.29289C1.10536 2.48043 1 2.73478 1 3V13C1 13.2652 1.10536 13.5196 1.29289 13.7071C1.48043 13.8946 1.73478 14 2 14H14C14.2652 14 14.5196 13.8946 14.7071 13.7071C14.8946 13.5196 15 13.2652 15 13V3C15 2.73478 14.8946 2.48043 14.7071 2.29289C14.5196 2.10536 14.2652 2 14 2V2ZM2 3H10V13H2V3ZM14 13H11V3H14V13Z"
|
|
56
|
+
fill="var(--color-emphasis-400)"
|
|
57
|
+
/>
|
|
58
|
+
</svg>
|
|
59
|
+
))`
|
|
60
|
+
position: absolute;
|
|
61
|
+
`;
|
|
62
|
+
|
|
63
|
+
export const StyledChangeViewButton = styled.a`
|
|
64
|
+
display: flex;
|
|
65
|
+
position: relative;
|
|
66
|
+
justify-content: center;
|
|
67
|
+
align-items: center;
|
|
68
|
+
cursor: pointer;
|
|
69
|
+
border-radius: var(--border-radius);
|
|
70
|
+
z-index: 1;
|
|
71
|
+
/* Rectangle 201 */
|
|
72
|
+
padding: var(--spacing-unit);
|
|
73
|
+
|
|
74
|
+
&:hover {
|
|
75
|
+
background-color: var(--sidebar-item-active-background-color);
|
|
76
|
+
}
|
|
77
|
+
`;
|
|
78
|
+
|
|
79
|
+
export const ChangeViewSvgRow = styled(() => (
|
|
80
|
+
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
81
|
+
<path
|
|
82
|
+
d="M1.75 2.625L12.25 2.625L12.25 1.75L1.75 1.75L1.75 2.625Z"
|
|
83
|
+
fill="var(--color-emphasis-400)"
|
|
84
|
+
/>
|
|
85
|
+
<path
|
|
86
|
+
d="M1.75 5.6875L12.25 5.6875L12.25 4.8125L1.75 4.8125L1.75 5.6875Z"
|
|
87
|
+
fill="var(--color-emphasis-400)"
|
|
88
|
+
/>
|
|
89
|
+
<path
|
|
90
|
+
d="M2.625 11.375L2.625 8.75L11.375 8.75L11.375 11.375L2.625 11.375ZM2.625 12.25L11.375 12.25C11.6071 12.25 11.8296 12.1578 11.9937 11.9937C12.1578 11.8296 12.25 11.6071 12.25 11.375L12.25 8.75C12.25 8.51794 12.1578 8.29538 11.9937 8.13128C11.8296 7.96719 11.6071 7.875 11.375 7.875L2.625 7.875C2.39294 7.875 2.17038 7.96719 2.00628 8.13128C1.84219 8.29538 1.75 8.51793 1.75 8.75L1.75 11.375C1.75 11.6071 1.84219 11.8296 2.00628 11.9937C2.17038 12.1578 2.39294 12.25 2.625 12.25Z"
|
|
91
|
+
fill="var(--color-emphasis-400)"
|
|
92
|
+
/>
|
|
93
|
+
</svg>
|
|
94
|
+
))`
|
|
95
|
+
position: absolute;
|
|
96
|
+
`;
|
|
97
|
+
|
|
98
|
+
export const ChangeViewSvgColumn = styled(() => (
|
|
99
|
+
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
100
|
+
<path
|
|
101
|
+
d="M2.625 12.25L2.625 1.75L1.75 1.75L1.75 12.25L2.625 12.25Z"
|
|
102
|
+
fill="var(--color-emphasis-400)"
|
|
103
|
+
/>
|
|
104
|
+
<path
|
|
105
|
+
d="M5.6875 12.25L5.6875 1.75L4.8125 1.75L4.8125 12.25L5.6875 12.25Z"
|
|
106
|
+
fill="var(--color-emphasis-400)"
|
|
107
|
+
/>
|
|
108
|
+
<path
|
|
109
|
+
d="M11.375 11.375L8.75 11.375L8.75 2.625L11.375 2.625L11.375 11.375ZM12.25 11.375L12.25 2.625C12.25 2.39294 12.1578 2.17038 11.9937 2.00628C11.8296 1.84219 11.6071 1.75 11.375 1.75L8.75 1.75C8.51794 1.75 8.29538 1.84219 8.13128 2.00628C7.96719 2.17038 7.875 2.39294 7.875 2.625L7.875 11.375C7.875 11.6071 7.96719 11.8296 8.13128 11.9937C8.29538 12.1578 8.51794 12.25 8.75 12.25L11.375 12.25C11.6071 12.25 11.8296 12.1578 11.9937 11.9937C12.1578 11.8296 12.25 11.6071 12.25 11.375Z"
|
|
110
|
+
fill="var(--color-emphasis-400)"
|
|
111
|
+
/>
|
|
112
|
+
</svg>
|
|
113
|
+
))`
|
|
114
|
+
position: absolute;
|
|
115
|
+
`;
|
|
116
|
+
|
|
117
|
+
export const ControlsWrap = styled.span<{
|
|
118
|
+
iconCount?: number;
|
|
119
|
+
isCollapsed?: boolean;
|
|
120
|
+
isOpenapiDocs?: boolean;
|
|
121
|
+
}>`
|
|
122
|
+
display: none;
|
|
123
|
+
justify-content: ${({ isOpenapiDocs }) => (isOpenapiDocs ? 'space-between' : 'flex-end')};
|
|
124
|
+
bottom: 0;
|
|
125
|
+
flex-direction: row;
|
|
126
|
+
gap: var(--spacing-unit);
|
|
127
|
+
align-items: center;
|
|
128
|
+
margin-left: '15px';
|
|
129
|
+
z-index: 2;
|
|
130
|
+
background: var(--sidebar-background-color);
|
|
131
|
+
|
|
132
|
+
${({ isCollapsed }) =>
|
|
133
|
+
isCollapsed &&
|
|
134
|
+
css`
|
|
135
|
+
flex-direction: column;
|
|
136
|
+
gap: 10px;
|
|
137
|
+
padding-bottom: 10px;
|
|
138
|
+
`}
|
|
139
|
+
|
|
140
|
+
${({ theme }) => css`
|
|
141
|
+
${theme.mediaQueries[theme.showAtBreakpoint.sidebar]} {
|
|
142
|
+
display: flex;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
${theme.mediaQueries.print} {
|
|
146
|
+
display: none;
|
|
147
|
+
}
|
|
148
|
+
`}
|
|
149
|
+
`;
|
|
150
|
+
|
|
151
|
+
export const ControlsWrapChangeLayoutButtons = styled.span<{ isCollapsed?: boolean }>`
|
|
152
|
+
display: flex;
|
|
153
|
+
bottom: 0;
|
|
154
|
+
flex-direction: ${({ isCollapsed }) => (isCollapsed ? 'column-reverse' : 'row')};
|
|
155
|
+
gap: ${({ isCollapsed }) => (isCollapsed ? '10px' : 'var(--spacing-unit)')};
|
|
156
|
+
align-items: center;
|
|
157
|
+
`;
|
package/src/globalStyle.ts
CHANGED
|
@@ -1285,8 +1285,7 @@ const apiReferenceDocs = css`
|
|
|
1285
1285
|
/**
|
|
1286
1286
|
* @tokens API Reference Schemas Layout
|
|
1287
1287
|
*/
|
|
1288
|
-
|
|
1289
|
-
--layout-controls-top-offset: 20px; // @presenter Spacing
|
|
1288
|
+
--layout-controls-margin: 20px; // @presenter Spacing
|
|
1290
1289
|
--layout-controls-height: 36px; // @presenter Spacing
|
|
1291
1290
|
--layout-controls-width: 36px; // @presenter Spacing
|
|
1292
1291
|
|
package/src/index.ts
CHANGED