@teambit/component.ui.version-dropdown 0.0.0-1905e01a2ab875c900fb8be39d736a8a7842b40b
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/dist/index.d.ts +4 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/lane-info/index.d.ts +2 -0
- package/dist/lane-info/index.js +6 -0
- package/dist/lane-info/index.js.map +1 -0
- package/dist/lane-info/lane-info.d.ts +6 -0
- package/dist/lane-info/lane-info.js +20 -0
- package/dist/lane-info/lane-info.js.map +1 -0
- package/dist/lane-info/lane-info.module.scss +27 -0
- package/dist/preview-1753203475518.js +7 -0
- package/dist/version-dropdown-placeholder.d.ts +16 -0
- package/dist/version-dropdown-placeholder.js +92 -0
- package/dist/version-dropdown-placeholder.js.map +1 -0
- package/dist/version-dropdown-placeholder.module.scss +50 -0
- package/dist/version-dropdown.composition.d.ts +3 -0
- package/dist/version-dropdown.composition.js +28 -0
- package/dist/version-dropdown.composition.js.map +1 -0
- package/dist/version-dropdown.d.ts +53 -0
- package/dist/version-dropdown.docs.d.ts +35 -0
- package/dist/version-dropdown.docs.js +67 -0
- package/dist/version-dropdown.docs.js.map +1 -0
- package/dist/version-dropdown.js +153 -0
- package/dist/version-dropdown.js.map +1 -0
- package/dist/version-dropdown.module.scss +128 -0
- package/dist/version-dropdown.spec.d.ts +1 -0
- package/dist/version-dropdown.spec.js +33 -0
- package/dist/version-dropdown.spec.js.map +1 -0
- package/dist/version-info/index.d.ts +2 -0
- package/dist/version-info/index.js +6 -0
- package/dist/version-info/index.js.map +1 -0
- package/dist/version-info/version-info.d.ts +10 -0
- package/dist/version-info/version-info.js +79 -0
- package/dist/version-info/version-info.js.map +1 -0
- package/dist/version-info/version-info.module.scss +54 -0
- package/index.ts +4 -0
- package/lane-info/index.ts +2 -0
- package/lane-info/lane-info.module.scss +27 -0
- package/lane-info/lane-info.tsx +22 -0
- package/package.json +71 -0
- package/types/asset.d.ts +29 -0
- package/types/style.d.ts +42 -0
- package/version-dropdown-placeholder.module.scss +50 -0
- package/version-dropdown-placeholder.tsx +108 -0
- package/version-dropdown.composition.tsx +36 -0
- package/version-dropdown.docs.tsx +68 -0
- package/version-dropdown.module.scss +128 -0
- package/version-dropdown.spec.tsx +29 -0
- package/version-dropdown.tsx +330 -0
- package/version-info/index.ts +2 -0
- package/version-info/version-info.module.scss +54 -0
- package/version-info/version-info.tsx +87 -0
package/dist/index.d.ts
ADDED
@@ -0,0 +1,4 @@
|
|
1
|
+
export { SimpleVersion, DetailedVersion } from './version-dropdown-placeholder';
|
2
|
+
export type { VersionProps } from './version-dropdown-placeholder';
|
3
|
+
export { VersionDropdown } from './version-dropdown';
|
4
|
+
export type { DropdownComponentVersion, GetActiveTabIndex } from './version-dropdown';
|
package/dist/index.js
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.VersionDropdown = exports.DetailedVersion = exports.SimpleVersion = void 0;
|
4
|
+
var version_dropdown_placeholder_1 = require("./version-dropdown-placeholder");
|
5
|
+
Object.defineProperty(exports, "SimpleVersion", { enumerable: true, get: function () { return version_dropdown_placeholder_1.SimpleVersion; } });
|
6
|
+
Object.defineProperty(exports, "DetailedVersion", { enumerable: true, get: function () { return version_dropdown_placeholder_1.DetailedVersion; } });
|
7
|
+
var version_dropdown_1 = require("./version-dropdown");
|
8
|
+
Object.defineProperty(exports, "VersionDropdown", { enumerable: true, get: function () { return version_dropdown_1.VersionDropdown; } });
|
9
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,+EAAgF;AAAvE,6HAAA,aAAa,OAAA;AAAE,+HAAA,eAAe,OAAA;AAEvC,uDAAqD;AAA5C,mHAAA,eAAe,OAAA"}
|
@@ -0,0 +1,6 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.LaneInfo = void 0;
|
4
|
+
var lane_info_1 = require("./lane-info");
|
5
|
+
Object.defineProperty(exports, "LaneInfo", { enumerable: true, get: function () { return lane_info_1.LaneInfo; } });
|
6
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lane-info/index.ts"],"names":[],"mappings":";;;AAAA,yCAAuC;AAA9B,qGAAA,QAAQ,OAAA"}
|
@@ -0,0 +1,20 @@
|
|
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.LaneInfo = LaneInfo;
|
7
|
+
const lanes_ui_models_lanes_model_1 = require("@teambit/lanes.ui.models.lanes-model");
|
8
|
+
const react_1 = __importDefault(require("react"));
|
9
|
+
const design_ui_surfaces_menu_link_item_1 = require("@teambit/design.ui.surfaces.menu.link-item");
|
10
|
+
const evangelist_elements_icon_1 = require("@teambit/evangelist.elements.icon");
|
11
|
+
const lane_info_module_scss_1 = __importDefault(require("./lane-info.module.scss"));
|
12
|
+
function LaneInfo({ id, currentLane }) {
|
13
|
+
const isCurrent = currentLane && id.isEqual(currentLane.id);
|
14
|
+
return (react_1.default.createElement("div", { key: id.toString() },
|
15
|
+
react_1.default.createElement(design_ui_surfaces_menu_link_item_1.MenuLinkItem, { active: isCurrent, href: lanes_ui_models_lanes_model_1.LanesModel.getLaneUrl(id), className: lane_info_module_scss_1.default.versionRow },
|
16
|
+
react_1.default.createElement("span", null,
|
17
|
+
react_1.default.createElement(evangelist_elements_icon_1.Icon, { className: lane_info_module_scss_1.default.laneIcon, of: "lane" }),
|
18
|
+
id.toString()))));
|
19
|
+
}
|
20
|
+
//# sourceMappingURL=lane-info.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"lane-info.js","sourceRoot":"","sources":["../../lane-info/lane-info.tsx"],"names":[],"mappings":";;;;;AAQA,4BAaC;AArBD,sFAA6E;AAC7E,kDAA0B;AAC1B,kGAA0E;AAC1E,gFAAyD;AACzD,oFAA6C;AAI7C,SAAgB,QAAQ,CAAC,EAAE,EAAE,EAAE,WAAW,EAAiB;IACzD,MAAM,SAAS,GAAG,WAAW,IAAI,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAE5D,OAAO,CACL,uCAAK,GAAG,EAAE,EAAE,CAAC,QAAQ,EAAE;QACrB,8BAAC,gDAAY,IAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,wCAAU,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,+BAAM,CAAC,UAAU;YAC5F;gBACE,8BAAC,+BAAI,IAAC,SAAS,EAAE,+BAAM,CAAC,QAAQ,EAAE,EAAE,EAAC,MAAM,GAAQ;gBAClD,EAAE,CAAC,QAAQ,EAAE,CACT,CACM,CACX,CACP,CAAC;AACJ,CAAC"}
|
@@ -0,0 +1,27 @@
|
|
1
|
+
.versionRow {
|
2
|
+
display: flex;
|
3
|
+
justify-content: space-between;
|
4
|
+
align-items: center;
|
5
|
+
height: 40px;
|
6
|
+
padding: 0 24px;
|
7
|
+
|
8
|
+
.versionTimestamp {
|
9
|
+
margin-right: 2px;
|
10
|
+
}
|
11
|
+
.versionUserAvatar {
|
12
|
+
padding: 0px 8px;
|
13
|
+
}
|
14
|
+
.laneIcon {
|
15
|
+
padding: 0px 4px;
|
16
|
+
}
|
17
|
+
.version {
|
18
|
+
width: 60%;
|
19
|
+
display: flex;
|
20
|
+
flex-direction: row;
|
21
|
+
align-content: space-between;
|
22
|
+
align-items: center;
|
23
|
+
}
|
24
|
+
.versionName {
|
25
|
+
padding: 0px 8px;
|
26
|
+
}
|
27
|
+
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import * as compositions_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_ui_version-dropdown@1905e01a2ab875c900fb8be39d736a8a7842b40b/dist/version-dropdown.composition.js';
|
2
|
+
import * as overview_0 from '/home/circleci/Library/Caches/Bit/capsules/8891be5ad/teambit.component_ui_version-dropdown@1905e01a2ab875c900fb8be39d736a8a7842b40b/dist/version-dropdown.docs.js';
|
3
|
+
|
4
|
+
export const compositions = [compositions_0];
|
5
|
+
export const overview = [overview_0];
|
6
|
+
|
7
|
+
export const compositions_metadata = {"compositions":[{"displayName":"Version dropdown with one version","identifier":"VersionDropdownWithOneVersion"},{"displayName":"Version dropdown with multiple versions","identifier":"VersionDropdownWithMultipleVersions"}]};
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import React, { HTMLAttributes } from 'react';
|
2
|
+
import { DropdownComponentVersion } from './version-dropdown';
|
3
|
+
export type VersionProps = {
|
4
|
+
currentVersion?: string;
|
5
|
+
isTag?: (version?: string) => boolean;
|
6
|
+
disabled?: boolean;
|
7
|
+
hasMoreVersions?: boolean;
|
8
|
+
showFullVersion?: boolean;
|
9
|
+
loading?: boolean;
|
10
|
+
useCurrentVersionLog?: (props: {
|
11
|
+
skip?: boolean;
|
12
|
+
version?: string;
|
13
|
+
}) => DropdownComponentVersion | undefined;
|
14
|
+
} & HTMLAttributes<HTMLDivElement>;
|
15
|
+
export declare function SimpleVersion({ currentVersion, className, disabled, hasMoreVersions, isTag, useCurrentVersionLog, showFullVersion, loading, ...rest }: VersionProps): React.JSX.Element;
|
16
|
+
export declare function DetailedVersion({ currentVersion, className, disabled, hasMoreVersions, isTag, loading, useCurrentVersionLog, showFullVersion, ...rest }: VersionProps): React.JSX.Element;
|
@@ -0,0 +1,92 @@
|
|
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 __rest = (this && this.__rest) || function (s, e) {
|
26
|
+
var t = {};
|
27
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
28
|
+
t[p] = s[p];
|
29
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
30
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
31
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
32
|
+
t[p[i]] = s[p[i]];
|
33
|
+
}
|
34
|
+
return t;
|
35
|
+
};
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
38
|
+
};
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
40
|
+
exports.SimpleVersion = SimpleVersion;
|
41
|
+
exports.DetailedVersion = DetailedVersion;
|
42
|
+
const react_1 = __importDefault(require("react"));
|
43
|
+
const design_ui_styles_ellipsis_1 = require("@teambit/design.ui.styles.ellipsis");
|
44
|
+
const classnames_1 = __importDefault(require("classnames"));
|
45
|
+
const semver = __importStar(require("semver"));
|
46
|
+
const evangelist_elements_icon_1 = require("@teambit/evangelist.elements.icon");
|
47
|
+
const design_ui_time_ago_1 = require("@teambit/design.ui.time-ago");
|
48
|
+
const design_ui_avatar_1 = require("@teambit/design.ui.avatar");
|
49
|
+
const base_ui_loaders_skeleton_1 = require("@teambit/base-ui.loaders.skeleton");
|
50
|
+
const version_dropdown_placeholder_module_scss_1 = __importDefault(require("./version-dropdown-placeholder.module.scss"));
|
51
|
+
function SimpleVersion(_a) {
|
52
|
+
var { currentVersion, className, disabled, hasMoreVersions, isTag = (version) => semver.valid(version) !== null,
|
53
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
54
|
+
useCurrentVersionLog, showFullVersion, loading } = _a, rest = __rest(_a, ["currentVersion", "className", "disabled", "hasMoreVersions", "isTag", "useCurrentVersionLog", "showFullVersion", "loading"]);
|
55
|
+
if (loading)
|
56
|
+
return react_1.default.createElement(base_ui_loaders_skeleton_1.WordSkeleton, { className: version_dropdown_placeholder_module_scss_1.default.loader, length: 9 });
|
57
|
+
const formattedVersion = showFullVersion || isTag(currentVersion) ? currentVersion : currentVersion === null || currentVersion === void 0 ? void 0 : currentVersion.slice(0, 6);
|
58
|
+
return (react_1.default.createElement("div", Object.assign({}, rest, { className: (0, classnames_1.default)(version_dropdown_placeholder_module_scss_1.default.simple, className, disabled && version_dropdown_placeholder_module_scss_1.default.disabled) }),
|
59
|
+
react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: (0, classnames_1.default)(version_dropdown_placeholder_module_scss_1.default.versionName), onClick: rest.onClick }, formattedVersion),
|
60
|
+
hasMoreVersions && react_1.default.createElement(evangelist_elements_icon_1.Icon, { of: "fat-arrow-down", onClick: rest.onClick })));
|
61
|
+
}
|
62
|
+
function DetailedVersion(_a) {
|
63
|
+
var { currentVersion, className, disabled, hasMoreVersions, isTag = (version) => semver.valid(version) !== null, loading, useCurrentVersionLog, showFullVersion } = _a, rest = __rest(_a, ["currentVersion", "className", "disabled", "hasMoreVersions", "isTag", "loading", "useCurrentVersionLog", "showFullVersion"]);
|
64
|
+
const currentVersionLog = useCurrentVersionLog === null || useCurrentVersionLog === void 0 ? void 0 : useCurrentVersionLog({ skip: loading, version: currentVersion });
|
65
|
+
const { displayName, message, username, email, date: _date, profileImage } = currentVersionLog || {};
|
66
|
+
const author = react_1.default.useMemo(() => {
|
67
|
+
return {
|
68
|
+
displayName: displayName !== null && displayName !== void 0 ? displayName : '',
|
69
|
+
email,
|
70
|
+
name: username !== null && username !== void 0 ? username : '',
|
71
|
+
profileImage,
|
72
|
+
};
|
73
|
+
}, [displayName, email, username, profileImage]);
|
74
|
+
const formattedVersion = showFullVersion || isTag(currentVersion) ? currentVersion : currentVersion === null || currentVersion === void 0 ? void 0 : currentVersion.slice(0, 6);
|
75
|
+
const date = _date ? new Date(+_date) : undefined;
|
76
|
+
const timestamp = react_1.default.useMemo(() => (date ? new Date(+date).toString() : new Date().toString()), [date]);
|
77
|
+
if (loading)
|
78
|
+
return react_1.default.createElement(base_ui_loaders_skeleton_1.WordSkeleton, { className: version_dropdown_placeholder_module_scss_1.default.loader, length: 9 });
|
79
|
+
return (react_1.default.createElement("div", Object.assign({}, rest, { className: (0, classnames_1.default)(version_dropdown_placeholder_module_scss_1.default.detailed, className, disabled && version_dropdown_placeholder_module_scss_1.default.disabled) }),
|
80
|
+
react_1.default.createElement(design_ui_avatar_1.UserAvatar, { size: 24, account: author !== null && author !== void 0 ? author : {}, className: version_dropdown_placeholder_module_scss_1.default.versionUserAvatar, showTooltip: true, onClick: rest.onClick }),
|
81
|
+
react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: (0, classnames_1.default)(version_dropdown_placeholder_module_scss_1.default.versionName), onClick: rest.onClick }, formattedVersion),
|
82
|
+
commitMessage(message, rest.onClick),
|
83
|
+
react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: version_dropdown_placeholder_module_scss_1.default.versionTimestamp, onClick: rest.onClick },
|
84
|
+
react_1.default.createElement(design_ui_time_ago_1.TimeAgo, { date: timestamp, onClick: rest.onClick })),
|
85
|
+
hasMoreVersions && react_1.default.createElement(evangelist_elements_icon_1.Icon, { of: "fat-arrow-down", onClick: rest.onClick })));
|
86
|
+
}
|
87
|
+
function commitMessage(message, onClick) {
|
88
|
+
if (!message || message === '')
|
89
|
+
return (react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: version_dropdown_placeholder_module_scss_1.default.emptyMessage, onClick: onClick }, "No commit message"));
|
90
|
+
return (react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: version_dropdown_placeholder_module_scss_1.default.commitMessage, onClick: onClick }, message));
|
91
|
+
}
|
92
|
+
//# sourceMappingURL=version-dropdown-placeholder.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"version-dropdown-placeholder.js","sourceRoot":"","sources":["../version-dropdown-placeholder.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,50 @@
|
|
1
|
+
.simple,
|
2
|
+
.detailed {
|
3
|
+
cursor: pointer;
|
4
|
+
border: 1px solid var(--bit-border-color, #babec9);
|
5
|
+
border-radius: 6px;
|
6
|
+
transition: background-color 300ms ease-in-out;
|
7
|
+
height: 30px;
|
8
|
+
display: flex;
|
9
|
+
align-items: center;
|
10
|
+
box-sizing: border-box;
|
11
|
+
user-select: none;
|
12
|
+
flex-wrap: nowrap;
|
13
|
+
gap: 8px;
|
14
|
+
padding: 8px;
|
15
|
+
line-height: 1.2em;
|
16
|
+
|
17
|
+
&:hover {
|
18
|
+
background-color: var(--bit-bg-heavy);
|
19
|
+
}
|
20
|
+
|
21
|
+
&.disabled {
|
22
|
+
cursor: default;
|
23
|
+
background-color: var(--border-medium-color, #ededed);
|
24
|
+
color: var(--on-background-medium-color, #707279);
|
25
|
+
> span {
|
26
|
+
display: none;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
30
|
+
.versionName {
|
31
|
+
flex-grow: 1;
|
32
|
+
min-width: fit-content;
|
33
|
+
}
|
34
|
+
|
35
|
+
.commitMessage {
|
36
|
+
flex-grow: 1;
|
37
|
+
max-width: 200px;
|
38
|
+
}
|
39
|
+
|
40
|
+
.versionUserAvatar {
|
41
|
+
flex: none;
|
42
|
+
margin-right: 5px;
|
43
|
+
}
|
44
|
+
|
45
|
+
.loader {
|
46
|
+
color: var(--bit-bg-dent, #f6f6f6);
|
47
|
+
> span {
|
48
|
+
padding: 4px;
|
49
|
+
}
|
50
|
+
}
|
@@ -0,0 +1,28 @@
|
|
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.VersionDropdownWithMultipleVersions = exports.VersionDropdownWithOneVersion = void 0;
|
7
|
+
const react_1 = __importDefault(require("react"));
|
8
|
+
const react_router_dom_1 = require("react-router-dom");
|
9
|
+
const documenter_theme_theme_compositions_1 = require("@teambit/documenter.theme.theme-compositions");
|
10
|
+
const version_dropdown_1 = require("./version-dropdown");
|
11
|
+
const style = { display: 'flex', justifyContent: 'center', alignContent: 'center' };
|
12
|
+
const VersionDropdownWithOneVersion = () => {
|
13
|
+
return (react_1.default.createElement(documenter_theme_theme_compositions_1.ThemeCompositions, { style: style },
|
14
|
+
react_1.default.createElement(version_dropdown_1.VersionDropdown, { useComponentVersions: () => ({
|
15
|
+
tags: [{ version: '0.1' }],
|
16
|
+
}), currentVersion: "0.1" })));
|
17
|
+
};
|
18
|
+
exports.VersionDropdownWithOneVersion = VersionDropdownWithOneVersion;
|
19
|
+
const VersionDropdownWithMultipleVersions = () => {
|
20
|
+
const versions = ['0.3', '0.2', '0.1'].map((version) => ({ version }));
|
21
|
+
return (react_1.default.createElement(documenter_theme_theme_compositions_1.ThemeCompositions, { style: style },
|
22
|
+
react_1.default.createElement(react_router_dom_1.MemoryRouter, null,
|
23
|
+
react_1.default.createElement(version_dropdown_1.VersionDropdown, { useComponentVersions: () => ({
|
24
|
+
tags: [{ version: '0.1' }],
|
25
|
+
}), currentVersion: versions[0].version }))));
|
26
|
+
};
|
27
|
+
exports.VersionDropdownWithMultipleVersions = VersionDropdownWithMultipleVersions;
|
28
|
+
//# sourceMappingURL=version-dropdown.composition.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"version-dropdown.composition.js","sourceRoot":"","sources":["../version-dropdown.composition.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,uDAAgD;AAChD,sGAAiF;AACjF,yDAAqD;AAErD,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AAE7E,MAAM,6BAA6B,GAAG,GAAG,EAAE;IAChD,OAAO,CACL,8BAAC,uDAAiB,IAAC,KAAK,EAAE,KAAK;QAC7B,8BAAC,kCAAe,IACd,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;gBAC3B,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;aAC3B,CAAC,EACF,cAAc,EAAC,KAAK,GACpB,CACgB,CACrB,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,6BAA6B,iCAWxC;AAEK,MAAM,mCAAmC,GAAG,GAAG,EAAE;IACtD,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAEvE,OAAO,CACL,8BAAC,uDAAiB,IAAC,KAAK,EAAE,KAAK;QAC7B,8BAAC,+BAAY;YACX,8BAAC,kCAAe,IACd,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;oBAC3B,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;iBAC3B,CAAC,EACF,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,GACnC,CACW,CACG,CACrB,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,mCAAmC,uCAe9C"}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { LegacyComponentLog } from '@teambit/legacy-component-log';
|
3
|
+
import { LaneModel } from '@teambit/lanes.ui.models.lanes-model';
|
4
|
+
import { VersionProps } from './version-dropdown-placeholder';
|
5
|
+
export declare const LOCAL_VERSION = "workspace";
|
6
|
+
export type DropdownComponentVersion = Partial<LegacyComponentLog> & {
|
7
|
+
version: string;
|
8
|
+
};
|
9
|
+
export type UseComponentDropdownVersionsResult = {
|
10
|
+
tags?: DropdownComponentVersion[];
|
11
|
+
snaps?: DropdownComponentVersion[];
|
12
|
+
loading?: boolean;
|
13
|
+
};
|
14
|
+
export type UseComponentDropdownVersionsProps = {
|
15
|
+
skip?: boolean;
|
16
|
+
};
|
17
|
+
export type UseComponentDropdownVersions = (props?: UseComponentDropdownVersionsProps) => UseComponentDropdownVersionsResult;
|
18
|
+
export type GetActiveTabIndex = (currentVersion?: string, tabs?: Array<VersionMenuTab>, tags?: DropdownComponentVersion[], snaps?: DropdownComponentVersion[], currentLane?: LaneModel) => number;
|
19
|
+
export type VersionDropdownProps = {
|
20
|
+
localVersion?: boolean;
|
21
|
+
latestVersion?: string;
|
22
|
+
currentVersion: string;
|
23
|
+
useCurrentVersionLog?: (props?: {
|
24
|
+
skip?: boolean;
|
25
|
+
version?: string;
|
26
|
+
}) => DropdownComponentVersion | undefined;
|
27
|
+
hasMoreVersions?: boolean;
|
28
|
+
loading?: boolean;
|
29
|
+
useComponentVersions?: UseComponentDropdownVersions;
|
30
|
+
currentLane?: LaneModel;
|
31
|
+
lanes?: LaneModel[];
|
32
|
+
getActiveTabIndex?: GetActiveTabIndex;
|
33
|
+
overrideVersionHref?: (version: string) => string;
|
34
|
+
placeholderClassName?: string;
|
35
|
+
dropdownClassName?: string;
|
36
|
+
menuClassName?: string;
|
37
|
+
showVersionDetails?: boolean;
|
38
|
+
disabled?: boolean;
|
39
|
+
PlaceholderComponent?: React.ComponentType<VersionProps>;
|
40
|
+
} & React.HTMLAttributes<HTMLDivElement>;
|
41
|
+
export declare const VersionDropdown: React.MemoExoticComponent<typeof _VersionDropdown>;
|
42
|
+
declare function _VersionDropdown({ currentVersion, latestVersion, localVersion, useCurrentVersionLog, hasMoreVersions, loading, overrideVersionHref, className, placeholderClassName, getActiveTabIndex, dropdownClassName, menuClassName, showVersionDetails, disabled, PlaceholderComponent: _PlaceholderComponent, currentLane, useComponentVersions, lanes, ...rest }: VersionDropdownProps): React.JSX.Element;
|
43
|
+
export type VersionMenuTab = {
|
44
|
+
name: 'SNAP';
|
45
|
+
payload: DropdownComponentVersion[];
|
46
|
+
} | {
|
47
|
+
name: 'LANE';
|
48
|
+
payload: LaneModel[];
|
49
|
+
} | {
|
50
|
+
name: 'TAG';
|
51
|
+
payload: DropdownComponentVersion[];
|
52
|
+
};
|
53
|
+
export {};
|
@@ -0,0 +1,35 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import { MemoryRouter } from 'react-router-dom';
|
3
|
+
declare function Overview(): React.JSX.Element;
|
4
|
+
declare namespace Overview {
|
5
|
+
var abstract: string;
|
6
|
+
var labels: string[];
|
7
|
+
var examples: ({
|
8
|
+
scope: {
|
9
|
+
VersionDropdown: React.MemoExoticComponent<({ currentVersion, latestVersion, localVersion, useCurrentVersionLog, hasMoreVersions, loading, overrideVersionHref, className, placeholderClassName, getActiveTabIndex, dropdownClassName, menuClassName, showVersionDetails, disabled, PlaceholderComponent: _PlaceholderComponent, currentLane, useComponentVersions, lanes, ...rest }: import("./version-dropdown").VersionDropdownProps) => React.JSX.Element>;
|
10
|
+
style: {
|
11
|
+
display: string;
|
12
|
+
justifyContent: string;
|
13
|
+
alignContent: string;
|
14
|
+
};
|
15
|
+
MemoryRouter?: undefined;
|
16
|
+
};
|
17
|
+
title: string;
|
18
|
+
description: string;
|
19
|
+
code: string;
|
20
|
+
} | {
|
21
|
+
scope: {
|
22
|
+
VersionDropdown: React.MemoExoticComponent<({ currentVersion, latestVersion, localVersion, useCurrentVersionLog, hasMoreVersions, loading, overrideVersionHref, className, placeholderClassName, getActiveTabIndex, dropdownClassName, menuClassName, showVersionDetails, disabled, PlaceholderComponent: _PlaceholderComponent, currentLane, useComponentVersions, lanes, ...rest }: import("./version-dropdown").VersionDropdownProps) => React.JSX.Element>;
|
23
|
+
style: {
|
24
|
+
display: string;
|
25
|
+
justifyContent: string;
|
26
|
+
alignContent: string;
|
27
|
+
};
|
28
|
+
MemoryRouter: typeof MemoryRouter;
|
29
|
+
};
|
30
|
+
title: string;
|
31
|
+
description: string;
|
32
|
+
code: string;
|
33
|
+
})[];
|
34
|
+
}
|
35
|
+
export default Overview;
|
@@ -0,0 +1,67 @@
|
|
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.default = Overview;
|
7
|
+
const react_1 = __importDefault(require("react"));
|
8
|
+
const react_router_dom_1 = require("react-router-dom");
|
9
|
+
const documenter_ui_section_1 = require("@teambit/documenter.ui.section");
|
10
|
+
const documenter_theme_theme_compositions_1 = require("@teambit/documenter.theme.theme-compositions");
|
11
|
+
const documenter_ui_separator_1 = require("@teambit/documenter.ui.separator");
|
12
|
+
const version_dropdown_1 = require("./version-dropdown");
|
13
|
+
function Overview() {
|
14
|
+
return (react_1.default.createElement(documenter_theme_theme_compositions_1.ThemeCompositions, null,
|
15
|
+
react_1.default.createElement(react_1.default.Fragment, null,
|
16
|
+
react_1.default.createElement(documenter_ui_section_1.Section, null,
|
17
|
+
"The version-dropdown displays the latest version of the viewed component. ",
|
18
|
+
react_1.default.createElement("br", null),
|
19
|
+
"If previous versions are available, the component will display a list of them, when clicked. ",
|
20
|
+
react_1.default.createElement("br", null),
|
21
|
+
"This allows the user to navigate to previous versions, and explore them."),
|
22
|
+
react_1.default.createElement(documenter_ui_separator_1.Separator, null))));
|
23
|
+
}
|
24
|
+
Overview.abstract = 'The version-dropdown lists the latest and previous versions of the viewed component.';
|
25
|
+
Overview.labels = ['react', 'typescript', 'version', 'dropdown'];
|
26
|
+
const style = { display: 'flex', justifyContent: 'center', alignContent: 'center' };
|
27
|
+
Overview.examples = [
|
28
|
+
{
|
29
|
+
scope: {
|
30
|
+
VersionDropdown: version_dropdown_1.VersionDropdown,
|
31
|
+
style,
|
32
|
+
},
|
33
|
+
title: 'Version Dropdown',
|
34
|
+
description: 'Using the Version Dropdown component with one verion',
|
35
|
+
code: `
|
36
|
+
() => {
|
37
|
+
return (
|
38
|
+
<div style={{...style, minHeight: 150 }}>
|
39
|
+
<VersionDropdown versions={['0.1']} currentVersion="0.1" />
|
40
|
+
</div>
|
41
|
+
);
|
42
|
+
}
|
43
|
+
`,
|
44
|
+
},
|
45
|
+
{
|
46
|
+
scope: {
|
47
|
+
VersionDropdown: version_dropdown_1.VersionDropdown,
|
48
|
+
style,
|
49
|
+
MemoryRouter: react_router_dom_1.MemoryRouter,
|
50
|
+
},
|
51
|
+
title: 'Version Dropdown with multiple versions',
|
52
|
+
description: 'Using the Version Dropdown component with more than one version',
|
53
|
+
code: `
|
54
|
+
() => {
|
55
|
+
const versions = ['0.3', '0.2', '0.1'];
|
56
|
+
return (
|
57
|
+
<div style={{...style, minHeight: 400, alignItems: 'end', justifyContent: 'flex-end', margin: 10 }}>
|
58
|
+
<MemoryRouter>
|
59
|
+
<VersionDropdown versions={versions} currentVersion={versions[0]} />
|
60
|
+
</MemoryRouter>
|
61
|
+
</div>
|
62
|
+
);
|
63
|
+
}
|
64
|
+
`,
|
65
|
+
},
|
66
|
+
];
|
67
|
+
//# sourceMappingURL=version-dropdown.docs.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"version-dropdown.docs.js","sourceRoot":"","sources":["../version-dropdown.docs.tsx"],"names":[],"mappings":";;;;;AAOA,2BAaC;AApBD,kDAA0B;AAC1B,uDAAgD;AAChD,0EAAyD;AACzD,sGAAiF;AACjF,8EAA6D;AAC7D,yDAAqD;AAErD,SAAwB,QAAQ;IAC9B,OAAO,CACL,8BAAC,uDAAiB;QAChB;YACE,8BAAC,+BAAO;;gBACoE,yCAAM;;gBACa,yCAAM;2FAE3F;YACV,8BAAC,mCAAS,OAAG,CACZ,CACe,CACrB,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,QAAQ,GAAG,sFAAsF,CAAC;AAE3G,QAAQ,CAAC,MAAM,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAEjE,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,QAAQ,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AAEpF,QAAQ,CAAC,QAAQ,GAAG;IAClB;QACE,KAAK,EAAE;YACL,eAAe,EAAf,kCAAe;YACf,KAAK;SACN;QACD,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,sDAAsD;QACnE,IAAI,EAAE;;;;;;;;OAQH;KACJ;IACD;QACE,KAAK,EAAE;YACL,eAAe,EAAf,kCAAe;YACf,KAAK;YACL,YAAY,EAAZ,+BAAY;SACb;QACD,KAAK,EAAE,yCAAyC;QAChD,WAAW,EAAE,iEAAiE;QAC9E,IAAI,EAAE;;;;;;;;;;;OAWH;KACJ;CACF,CAAC"}
|
@@ -0,0 +1,153 @@
|
|
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 __rest = (this && this.__rest) || function (s, e) {
|
26
|
+
var t = {};
|
27
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
28
|
+
t[p] = s[p];
|
29
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
30
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
31
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
32
|
+
t[p[i]] = s[p[i]];
|
33
|
+
}
|
34
|
+
return t;
|
35
|
+
};
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
38
|
+
};
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
40
|
+
exports.VersionDropdown = exports.LOCAL_VERSION = void 0;
|
41
|
+
const react_1 = __importStar(require("react"));
|
42
|
+
const design_ui_surfaces_menu_link_item_1 = require("@teambit/design.ui.surfaces.menu.link-item");
|
43
|
+
const evangelist_surfaces_dropdown_1 = require("@teambit/evangelist.surfaces.dropdown");
|
44
|
+
const ui_foundation_ui_use_box_tab_1 = require("@teambit/ui-foundation.ui.use-box.tab");
|
45
|
+
const design_ui_avatar_1 = require("@teambit/design.ui.avatar");
|
46
|
+
const base_ui_loaders_skeleton_1 = require("@teambit/base-ui.loaders.skeleton");
|
47
|
+
const classnames_1 = __importDefault(require("classnames"));
|
48
|
+
const version_dropdown_module_scss_1 = __importDefault(require("./version-dropdown.module.scss"));
|
49
|
+
const version_info_1 = require("./version-info");
|
50
|
+
const lane_info_1 = require("./lane-info");
|
51
|
+
const version_dropdown_placeholder_1 = require("./version-dropdown-placeholder");
|
52
|
+
exports.LOCAL_VERSION = 'workspace';
|
53
|
+
exports.VersionDropdown = react_1.default.memo(_VersionDropdown);
|
54
|
+
const VersionMenu = react_1.default.memo(_VersionMenu);
|
55
|
+
function _VersionDropdown(_a) {
|
56
|
+
var { currentVersion, latestVersion, localVersion, useCurrentVersionLog, hasMoreVersions, loading, overrideVersionHref, className, placeholderClassName, getActiveTabIndex, dropdownClassName, menuClassName, showVersionDetails = true, disabled, PlaceholderComponent: _PlaceholderComponent, currentLane, useComponentVersions, lanes } = _a, rest = __rest(_a, ["currentVersion", "latestVersion", "localVersion", "useCurrentVersionLog", "hasMoreVersions", "loading", "overrideVersionHref", "className", "placeholderClassName", "getActiveTabIndex", "dropdownClassName", "menuClassName", "showVersionDetails", "disabled", "PlaceholderComponent", "currentLane", "useComponentVersions", "lanes"]);
|
57
|
+
const [key, setKey] = (0, react_1.useState)(0);
|
58
|
+
const singleVersion = !hasMoreVersions;
|
59
|
+
const [open, setOpen] = (0, react_1.useState)(false);
|
60
|
+
react_1.default.useEffect(() => {
|
61
|
+
if (loading && open) {
|
62
|
+
setOpen(false);
|
63
|
+
}
|
64
|
+
}, [loading]);
|
65
|
+
const handlePlaceholderClicked = (e) => {
|
66
|
+
if (loading)
|
67
|
+
return;
|
68
|
+
if (e.target === e.currentTarget) {
|
69
|
+
setOpen((o) => !o);
|
70
|
+
}
|
71
|
+
};
|
72
|
+
const defaultPlaceholder = (react_1.default.createElement(version_dropdown_placeholder_1.SimpleVersion, { useCurrentVersionLog: useCurrentVersionLog, disabled: disabled, className: placeholderClassName, currentVersion: currentVersion, onClick: handlePlaceholderClicked, hasMoreVersions: hasMoreVersions, loading: loading, showFullVersion: currentVersion === 'workspace' }));
|
73
|
+
const PlaceholderComponent = _PlaceholderComponent ? (react_1.default.createElement(_PlaceholderComponent, { useCurrentVersionLog: useCurrentVersionLog, disabled: disabled, className: placeholderClassName, currentVersion: currentVersion, onClick: handlePlaceholderClicked, hasMoreVersions: hasMoreVersions, loading: loading, showFullVersion: currentVersion === 'workspace' })) : (defaultPlaceholder);
|
74
|
+
if (disabled || (singleVersion && !loading)) {
|
75
|
+
return react_1.default.createElement("div", { className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.noVersions, className) }, PlaceholderComponent);
|
76
|
+
}
|
77
|
+
return (react_1.default.createElement("div", Object.assign({}, rest, { className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.versionDropdown, className) }),
|
78
|
+
react_1.default.createElement(evangelist_surfaces_dropdown_1.Dropdown, { className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.dropdown, dropdownClassName), dropClass: (0, classnames_1.default)(version_dropdown_module_scss_1.default.menu, menuClassName), open: open, onClick: handlePlaceholderClicked, onClickOutside: () => setOpen(false), onChange: (_e, _open) => _open && setKey((x) => x + 1), PlaceholderComponent: (_a) => {
|
79
|
+
var { children } = _a, other = __rest(_a, ["children"]);
|
80
|
+
return (react_1.default.createElement("div", Object.assign({}, other, { className: placeholderClassName, onClick: handlePlaceholderClicked }), children));
|
81
|
+
}, placeholder: PlaceholderComponent },
|
82
|
+
react_1.default.createElement(VersionMenu, { className: menuClassName, key: key, currentVersion: currentVersion, latestVersion: latestVersion, localVersion: localVersion, overrideVersionHref: overrideVersionHref, showVersionDetails: showVersionDetails, currentLane: currentLane, getActiveTabIndex: getActiveTabIndex, lanes: lanes, useVersions: useComponentVersions, onVersionClicked: () => setOpen(false), open: open }))));
|
83
|
+
}
|
84
|
+
const defaultActiveTabIndex = (currentVersion, tabs = [], tags, snaps) => {
|
85
|
+
if ((snaps || []).some((snap) => snap.version === currentVersion))
|
86
|
+
return tabs.findIndex((tab) => tab.name === 'SNAP');
|
87
|
+
return 0;
|
88
|
+
};
|
89
|
+
const VERSION_TAB_NAMES = ['TAG', 'SNAP', 'LANE'];
|
90
|
+
function _VersionMenu(_a) {
|
91
|
+
var _b, _c;
|
92
|
+
var { currentVersion, localVersion, latestVersion, overrideVersionHref, showVersionDetails, useVersions, currentLane, lanes, getActiveTabIndex = defaultActiveTabIndex, loading: loadingFromProps, open, onVersionClicked } = _a, rest = __rest(_a, ["currentVersion", "localVersion", "latestVersion", "overrideVersionHref", "showVersionDetails", "useVersions", "currentLane", "lanes", "getActiveTabIndex", "loading", "open", "onVersionClicked"]);
|
93
|
+
const { snaps, tags, loading: loadingVersions } = (useVersions === null || useVersions === void 0 ? void 0 : useVersions()) || {};
|
94
|
+
const loading = loadingFromProps || loadingVersions;
|
95
|
+
const tabs = react_1.default.useMemo(() => VERSION_TAB_NAMES.map((name) => {
|
96
|
+
switch (name) {
|
97
|
+
case 'SNAP':
|
98
|
+
return { name, payload: snaps || [] };
|
99
|
+
case 'LANE':
|
100
|
+
return { name, payload: lanes || [] };
|
101
|
+
default:
|
102
|
+
return { name, payload: tags || [] };
|
103
|
+
}
|
104
|
+
}).filter((tab) => tab.payload.length > 0), [snaps === null || snaps === void 0 ? void 0 : snaps.length, tags === null || tags === void 0 ? void 0 : tags.length, lanes === null || lanes === void 0 ? void 0 : lanes.length, loading]);
|
105
|
+
const [activeTabIndex, setActiveTab] = react_1.default.useState(getActiveTabIndex(currentVersion, tabs, tags, snaps, currentLane));
|
106
|
+
const activeTab = react_1.default.useMemo(() => (activeTabIndex !== undefined ? tabs[activeTabIndex] : undefined), [activeTabIndex, tabs]);
|
107
|
+
react_1.default.useEffect(() => {
|
108
|
+
if (!currentLane)
|
109
|
+
return;
|
110
|
+
if (tabs.length === 0)
|
111
|
+
return;
|
112
|
+
const _activeTabIndex = getActiveTabIndex(currentVersion, tabs, tags, snaps, currentLane);
|
113
|
+
if (_activeTabIndex !== activeTabIndex)
|
114
|
+
setActiveTab(_activeTabIndex);
|
115
|
+
}, [currentLane, tabs.length, tags === null || tags === void 0 ? void 0 : tags.length, snaps === null || snaps === void 0 ? void 0 : snaps.length, currentVersion, loading]);
|
116
|
+
const multipleTabs = tabs.length > 1;
|
117
|
+
const message = multipleTabs
|
118
|
+
? 'Switch to view tags, snaps, or lanes'
|
119
|
+
: `Switch between ${(_b = tabs[0]) === null || _b === void 0 ? void 0 : _b.name.toLocaleLowerCase()}s`;
|
120
|
+
const showTab = activeTabIndex !== undefined && ((_c = tabs[activeTabIndex]) === null || _c === void 0 ? void 0 : _c.payload.length) > 0;
|
121
|
+
const _rowRenderer = react_1.default.useCallback(function VersionRowRenderer({ index }) {
|
122
|
+
const { name, payload = [] } = activeTab || {};
|
123
|
+
const item = payload[index];
|
124
|
+
if (!item)
|
125
|
+
return null;
|
126
|
+
if (name === 'LANE') {
|
127
|
+
const lane = item;
|
128
|
+
return react_1.default.createElement(lane_info_1.LaneInfo, Object.assign({ key: lane.id.toString(), currentLane: currentLane }, lane));
|
129
|
+
}
|
130
|
+
const version = item;
|
131
|
+
return (react_1.default.createElement(version_info_1.VersionInfo, Object.assign({ key: version.version, currentVersion: currentVersion, latestVersion: latestVersion, overrideVersionHref: overrideVersionHref, showDetails: showVersionDetails, onVersionClicked: onVersionClicked }, version)));
|
132
|
+
}, [activeTab, currentVersion, latestVersion, showVersionDetails, currentLane === null || currentLane === void 0 ? void 0 : currentLane.id.toString(), showTab]);
|
133
|
+
const rowRenderer = react_1.default.useMemo(() => (showTab && activeTab ? _rowRenderer : () => null), [showTab, activeTab, _rowRenderer]);
|
134
|
+
const ActiveTab = react_1.default.useMemo(() => {
|
135
|
+
return activeTab === null || activeTab === void 0 ? void 0 : activeTab.payload.map((payload, index) => {
|
136
|
+
return rowRenderer({ index });
|
137
|
+
});
|
138
|
+
}, [activeTab]);
|
139
|
+
return (react_1.default.createElement("div", Object.assign({}, rest, { className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.versionMenuContainer, !open && version_dropdown_module_scss_1.default.hide) }),
|
140
|
+
react_1.default.createElement("div", { className: version_dropdown_module_scss_1.default.top },
|
141
|
+
loading && react_1.default.createElement(base_ui_loaders_skeleton_1.LineSkeleton, { count: 6, className: version_dropdown_module_scss_1.default.loader }),
|
142
|
+
!loading && react_1.default.createElement("div", { className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.titleContainer, version_dropdown_module_scss_1.default.title) }, message),
|
143
|
+
!loading && localVersion && (react_1.default.createElement(design_ui_surfaces_menu_link_item_1.MenuLinkItem, { href: '?', active: currentVersion === exports.LOCAL_VERSION, className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.versionRow, version_dropdown_module_scss_1.default.localVersion), onClick: onVersionClicked },
|
144
|
+
react_1.default.createElement("div", { className: version_dropdown_module_scss_1.default.version },
|
145
|
+
react_1.default.createElement(design_ui_avatar_1.UserAvatar, { size: 24, account: {}, className: version_dropdown_module_scss_1.default.versionUserAvatar }),
|
146
|
+
react_1.default.createElement("span", { className: version_dropdown_module_scss_1.default.versionName }, exports.LOCAL_VERSION))))),
|
147
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(multipleTabs && version_dropdown_module_scss_1.default.tabs) }, multipleTabs &&
|
148
|
+
tabs.map(({ name }, index) => {
|
149
|
+
return (react_1.default.createElement(ui_foundation_ui_use_box_tab_1.Tab, { className: version_dropdown_module_scss_1.default.tab, key: name, isActive: activeTabIndex === index, onClick: () => setActiveTab(index) }, name));
|
150
|
+
})),
|
151
|
+
react_1.default.createElement("div", { className: version_dropdown_module_scss_1.default.versionContainerRoot }, ActiveTab)));
|
152
|
+
}
|
153
|
+
//# sourceMappingURL=version-dropdown.js.map
|