@teambit/component.ui.version-dropdown 0.0.492 → 0.0.495
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/lane-info/index.d.ts +1 -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 +21 -0
- package/dist/lane-info/lane-info.js.map +1 -0
- package/dist/lane-info/lane-info.module.scss +30 -0
- package/dist/version-dropdown.composition.js +3 -3
- package/dist/version-dropdown.composition.js.map +1 -1
- package/dist/version-dropdown.d.ts +14 -4
- package/dist/version-dropdown.js +77 -15
- package/dist/version-dropdown.js.map +1 -1
- package/dist/version-dropdown.module.scss +48 -7
- package/dist/version-info/index.d.ts +1 -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 +7 -0
- package/dist/version-info/version-info.js +53 -0
- package/dist/version-info/version-info.js.map +1 -0
- package/dist/version-info/version-info.module.scss +44 -0
- package/lane-info/index.ts +1 -0
- package/lane-info/lane-info.module.scss +30 -0
- package/lane-info/lane-info.tsx +26 -0
- package/package-tar/teambit-component.ui.version-dropdown-0.0.495.tgz +0 -0
- package/package.json +9 -3
- package/{__preview-1645365357220.js → preview-1646709972516.js} +2 -2
- package/version-dropdown.composition.tsx +3 -3
- package/version-dropdown.module.scss +48 -7
- package/version-dropdown.tsx +143 -32
- package/version-info/index.ts +1 -0
- package/version-info/version-info.module.scss +44 -0
- package/version-info/version-info.tsx +43 -0
- package/package-tar/teambit-component.ui.version-dropdown-0.0.492.tgz +0 -0
@@ -0,0 +1 @@
|
|
1
|
+
export { LaneInfo, LaneInfoProps } from './lane-info';
|
@@ -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,yCAAsD;AAA7C,qGAAA,QAAQ,OAAA"}
|
@@ -0,0 +1,21 @@
|
|
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 = void 0;
|
7
|
+
const classnames_1 = __importDefault(require("classnames"));
|
8
|
+
const react_1 = __importDefault(require("react"));
|
9
|
+
const base_ui_routing_nav_link_1 = require("@teambit/base-ui.routing.nav-link");
|
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, url, currentLane }) {
|
13
|
+
const isCurrent = (currentLane === null || currentLane === void 0 ? void 0 : currentLane.id) === id;
|
14
|
+
return (react_1.default.createElement("div", { key: id },
|
15
|
+
react_1.default.createElement(base_ui_routing_nav_link_1.NavLink, { href: url, className: (0, classnames_1.default)(lane_info_module_scss_1.default.versionLine, lane_info_module_scss_1.default.versionRow, isCurrent && lane_info_module_scss_1.default.currentVersion) },
|
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))));
|
19
|
+
}
|
20
|
+
exports.LaneInfo = LaneInfo;
|
21
|
+
//# sourceMappingURL=lane-info.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"lane-info.js","sourceRoot":"","sources":["../../lane-info/lane-info.tsx"],"names":[],"mappings":";;;;;;AACA,4DAAoC;AACpC,kDAA0B;AAC1B,gFAA4D;AAC5D,gFAAyD;AACzD,oFAA6C;AAI7C,SAAgB,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAiB;IAC9D,MAAM,SAAS,GAAG,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,EAAE,MAAK,EAAE,CAAC;IAEzC,OAAO,CACL,uCAAK,GAAG,EAAE,EAAE;QACV,8BAAC,kCAAO,IACN,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,IAAA,oBAAU,EAAC,+BAAM,CAAC,WAAW,EAAE,+BAAM,CAAC,UAAU,EAAE,SAAS,IAAI,+BAAM,CAAC,cAAc,CAAC;YAEhG;gBACE,8BAAC,+BAAI,IAAC,SAAS,EAAE,+BAAM,CAAC,QAAQ,EAAE,EAAE,EAAC,MAAM,GAAQ;gBAClD,EAAE,CACE,CACC,CACN,CACP,CAAC;AACJ,CAAC;AAhBD,4BAgBC"}
|
@@ -0,0 +1,30 @@
|
|
1
|
+
.versionLine {
|
2
|
+
cursor: pointer;
|
3
|
+
display: flex;
|
4
|
+
align-items: center;
|
5
|
+
height: 36px;
|
6
|
+
padding: 0 24px;
|
7
|
+
text-decoration: none;
|
8
|
+
color: var(--bit-text-color-heavy);
|
9
|
+
&:hover {
|
10
|
+
background-color: var(--bit-bg-heavy, #f6f6f6);
|
11
|
+
}
|
12
|
+
&:last-child {
|
13
|
+
margin-bottom: 8px;
|
14
|
+
}
|
15
|
+
&.currentVersion {
|
16
|
+
background: var(--bit-accent-bg, #eceaff);
|
17
|
+
}
|
18
|
+
.label {
|
19
|
+
background-color: white;
|
20
|
+
padding: 0px 8px;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
.versionRow {
|
25
|
+
display: flex;
|
26
|
+
justify-content: space-between;
|
27
|
+
.laneIcon {
|
28
|
+
padding: 0px 4px;
|
29
|
+
}
|
30
|
+
}
|
@@ -12,15 +12,15 @@ const version_dropdown_1 = require("./version-dropdown");
|
|
12
12
|
const style = { display: 'flex', justifyContent: 'center', alignContent: 'center' };
|
13
13
|
const VersionDropdownWithOneVersion = () => {
|
14
14
|
return (react_1.default.createElement(documenter_theme_theme_compositions_1.ThemeCompositions, { style: style },
|
15
|
-
react_1.default.createElement(version_dropdown_1.VersionDropdown, {
|
15
|
+
react_1.default.createElement(version_dropdown_1.VersionDropdown, { tags: [{ version: '0.1' }], currentVersion: "0.1" })));
|
16
16
|
};
|
17
17
|
exports.VersionDropdownWithOneVersion = VersionDropdownWithOneVersion;
|
18
18
|
const VersionDropdownWithMultipleVersions = () => {
|
19
19
|
const history = (0, history_1.createBrowserHistory)();
|
20
|
-
const versions = ['0.3', '0.2', '0.1'];
|
20
|
+
const versions = ['0.3', '0.2', '0.1'].map((version) => ({ version }));
|
21
21
|
return (react_1.default.createElement(documenter_theme_theme_compositions_1.ThemeCompositions, { style: style },
|
22
22
|
react_1.default.createElement(react_router_dom_1.Router, { history: history },
|
23
|
-
react_1.default.createElement(version_dropdown_1.VersionDropdown, {
|
23
|
+
react_1.default.createElement(version_dropdown_1.VersionDropdown, { tags: versions, currentVersion: versions[0].version }))));
|
24
24
|
};
|
25
25
|
exports.VersionDropdownWithMultipleVersions = VersionDropdownWithMultipleVersions;
|
26
26
|
//# sourceMappingURL=version-dropdown.composition.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version-dropdown.composition.js","sourceRoot":"","sources":["../version-dropdown.composition.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,uDAA0C;AAC1C,qCAA+C;AAC/C,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,IAAC,
|
1
|
+
{"version":3,"file":"version-dropdown.composition.js","sourceRoot":"","sources":["../version-dropdown.composition.tsx"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,uDAA0C;AAC1C,qCAA+C;AAC/C,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,IAAC,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,cAAc,EAAC,KAAK,GAAG,CAClD,CACrB,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,6BAA6B,iCAMxC;AAEK,MAAM,mCAAmC,GAAG,GAAG,EAAE;IACtD,MAAM,OAAO,GAAG,IAAA,8BAAoB,GAAE,CAAC;IACvC,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;IACvE,OAAO,CACL,8BAAC,uDAAiB,IAAC,KAAK,EAAE,KAAK;QAC7B,8BAAC,yBAAM,IAAC,OAAO,EAAE,OAAO;YACtB,8BAAC,kCAAe,IAAC,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,GAAI,CACjE,CACS,CACrB,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,mCAAmC,uCAU9C"}
|
@@ -1,8 +1,18 @@
|
|
1
|
+
import { LegacyComponentLog } from '@teambit/legacy-component-log';
|
2
|
+
import { LaneModel } from '@teambit/lanes.ui.lanes';
|
1
3
|
import React from 'react';
|
2
|
-
declare
|
3
|
-
|
4
|
+
export declare const LOCAL_VERSION = "workspace";
|
5
|
+
export declare type DropdownComponentVersion = Partial<LegacyComponentLog> & {
|
6
|
+
version: string;
|
7
|
+
};
|
8
|
+
export declare type VersionDropdownProps = {
|
9
|
+
tags: DropdownComponentVersion[];
|
10
|
+
snaps?: DropdownComponentVersion[];
|
11
|
+
lanes?: LaneModel[];
|
12
|
+
localVersion?: boolean;
|
4
13
|
currentVersion?: string;
|
14
|
+
currentLane?: LaneModel;
|
5
15
|
latestVersion?: string;
|
16
|
+
loading?: boolean;
|
6
17
|
} & React.HTMLAttributes<HTMLDivElement>;
|
7
|
-
export declare function VersionDropdown({
|
8
|
-
export {};
|
18
|
+
export declare function VersionDropdown({ snaps, tags, lanes, currentVersion, latestVersion, localVersion, loading, currentLane, }: VersionDropdownProps): JSX.Element;
|
package/dist/version-dropdown.js
CHANGED
@@ -1,33 +1,63 @@
|
|
1
1
|
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
5
|
+
}) : (function(o, m, k, k2) {
|
6
|
+
if (k2 === undefined) k2 = k;
|
7
|
+
o[k2] = m[k];
|
8
|
+
}));
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
11
|
+
}) : function(o, v) {
|
12
|
+
o["default"] = v;
|
13
|
+
});
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
15
|
+
if (mod && mod.__esModule) return mod;
|
16
|
+
var result = {};
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
18
|
+
__setModuleDefault(result, mod);
|
19
|
+
return result;
|
20
|
+
};
|
21
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
22
|
+
var t = {};
|
23
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
24
|
+
t[p] = s[p];
|
25
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
26
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
27
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
28
|
+
t[p[i]] = s[p[i]];
|
29
|
+
}
|
30
|
+
return t;
|
31
|
+
};
|
2
32
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
3
33
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
4
34
|
};
|
5
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
6
|
-
exports.VersionDropdown = void 0;
|
36
|
+
exports.VersionDropdown = exports.LOCAL_VERSION = void 0;
|
7
37
|
const evangelist_elements_icon_1 = require("@teambit/evangelist.elements.icon");
|
8
38
|
const base_ui_routing_nav_link_1 = require("@teambit/base-ui.routing.nav-link");
|
9
39
|
const evangelist_surfaces_dropdown_1 = require("@teambit/evangelist.surfaces.dropdown");
|
10
|
-
const component_ui_version_label_1 = require("@teambit/component.ui.version-label");
|
11
40
|
const design_ui_styles_ellipsis_1 = require("@teambit/design.ui.styles.ellipsis");
|
41
|
+
const ui_foundation_ui_use_box_tab_1 = require("@teambit/ui-foundation.ui.use-box.tab");
|
42
|
+
const design_ui_avatar_1 = require("@teambit/design.ui.avatar");
|
43
|
+
const base_ui_loaders_skeleton_1 = require("@teambit/base-ui.loaders.skeleton");
|
12
44
|
const classnames_1 = __importDefault(require("classnames"));
|
13
|
-
const react_1 =
|
45
|
+
const react_1 = __importStar(require("react"));
|
14
46
|
const version_dropdown_module_scss_1 = __importDefault(require("./version-dropdown.module.scss"));
|
15
|
-
const
|
16
|
-
|
17
|
-
|
47
|
+
const version_info_1 = require("./version-info");
|
48
|
+
const lane_info_1 = require("./lane-info");
|
49
|
+
exports.LOCAL_VERSION = 'workspace';
|
50
|
+
function VersionDropdown({ snaps, tags, lanes, currentVersion, latestVersion, localVersion, loading, currentLane, }) {
|
51
|
+
const [key, setKey] = (0, react_1.useState)(0);
|
52
|
+
const singleVersion = (snaps || []).concat(tags).length < 2;
|
53
|
+
if (singleVersion && !loading) {
|
18
54
|
return (react_1.default.createElement("div", { className: version_dropdown_module_scss_1.default.noVersions },
|
19
55
|
react_1.default.createElement(VersionPlaceholder, { currentVersion: currentVersion })));
|
20
56
|
}
|
21
57
|
return (react_1.default.createElement("div", { className: version_dropdown_module_scss_1.default.versionDropdown },
|
22
|
-
react_1.default.createElement(evangelist_surfaces_dropdown_1.Dropdown, { className: version_dropdown_module_scss_1.default.dropdown, dropClass: version_dropdown_module_scss_1.default.menu,
|
23
|
-
react_1.default.createElement(
|
24
|
-
|
25
|
-
react_1.default.createElement("div", { className: version_dropdown_module_scss_1.default.versionContainer }, versions.map((version, index) => {
|
26
|
-
const isCurrent = version === currentVersion;
|
27
|
-
return (react_1.default.createElement(base_ui_routing_nav_link_1.NavLink, { href: version === LOCAL_VERSION ? '?' : `?version=${version}`, key: index, className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.versionLine, isCurrent && version_dropdown_module_scss_1.default.currentVersion) },
|
28
|
-
react_1.default.createElement("span", { className: version_dropdown_module_scss_1.default.version }, version),
|
29
|
-
version === latestVersion && react_1.default.createElement(component_ui_version_label_1.VersionLabel, { className: version_dropdown_module_scss_1.default.label, status: "latest" })));
|
30
|
-
}))))));
|
58
|
+
react_1.default.createElement(evangelist_surfaces_dropdown_1.Dropdown, { className: version_dropdown_module_scss_1.default.dropdown, dropClass: version_dropdown_module_scss_1.default.menu, clickToggles: false, clickPlaceholderToggles: true, onChange: (_e, open) => open && setKey((x) => x + 1), placeholder: react_1.default.createElement(VersionPlaceholder, { currentVersion: currentVersion, className: version_dropdown_module_scss_1.default.withVersions }) },
|
59
|
+
loading && react_1.default.createElement(base_ui_loaders_skeleton_1.LineSkeleton, { className: version_dropdown_module_scss_1.default.loading, count: 6 }),
|
60
|
+
loading || (react_1.default.createElement(VersionMenu, { key: key, tags: tags, snaps: snaps, lanes: lanes, currentVersion: currentVersion, latestVersion: latestVersion, localVersion: localVersion, currentLane: currentLane })))));
|
31
61
|
}
|
32
62
|
exports.VersionDropdown = VersionDropdown;
|
33
63
|
function VersionPlaceholder({ currentVersion, className }) {
|
@@ -35,4 +65,36 @@ function VersionPlaceholder({ currentVersion, className }) {
|
|
35
65
|
react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, null, currentVersion),
|
36
66
|
react_1.default.createElement(evangelist_elements_icon_1.Icon, { of: "fat-arrow-down" })));
|
37
67
|
}
|
68
|
+
const VERSION_TAB_NAMES = ['TAG', 'SNAP', 'LANE'];
|
69
|
+
function VersionMenu(_a) {
|
70
|
+
var { tags, snaps, lanes, currentVersion, localVersion, latestVersion, currentLane } = _a, rest = __rest(_a, ["tags", "snaps", "lanes", "currentVersion", "localVersion", "latestVersion", "currentLane"]);
|
71
|
+
const [activeTabIndex, setActiveTab] = (0, react_1.useState)(0);
|
72
|
+
const tabs = VERSION_TAB_NAMES.map((name) => {
|
73
|
+
switch (name) {
|
74
|
+
case 'SNAP':
|
75
|
+
return { name, payload: snaps || [] };
|
76
|
+
case 'LANE':
|
77
|
+
return { name, payload: lanes || [] };
|
78
|
+
default:
|
79
|
+
return { name, payload: tags || [] };
|
80
|
+
}
|
81
|
+
}).filter((tab) => tab.payload.length > 0);
|
82
|
+
const multipleTabs = tabs.length > 1;
|
83
|
+
return (react_1.default.createElement("div", Object.assign({}, rest),
|
84
|
+
react_1.default.createElement("div", { className: version_dropdown_module_scss_1.default.top },
|
85
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.titleContainer, multipleTabs && version_dropdown_module_scss_1.default.title) }, multipleTabs && react_1.default.createElement("span", null, "Switch to view tags, snaps, or lanes")),
|
86
|
+
localVersion && (react_1.default.createElement(base_ui_routing_nav_link_1.NavLink, { href: '?', className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.versionLine, version_dropdown_module_scss_1.default.versionRow, currentVersion === exports.LOCAL_VERSION && version_dropdown_module_scss_1.default.currentVersion) },
|
87
|
+
react_1.default.createElement("div", { className: version_dropdown_module_scss_1.default.version },
|
88
|
+
react_1.default.createElement(design_ui_avatar_1.UserAvatar, { size: 20, account: {}, className: version_dropdown_module_scss_1.default.versionUserAvatar }),
|
89
|
+
react_1.default.createElement("span", { className: version_dropdown_module_scss_1.default.versionName }, exports.LOCAL_VERSION))))),
|
90
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(multipleTabs && version_dropdown_module_scss_1.default.tabs) }, multipleTabs &&
|
91
|
+
tabs.map(({ name }, index) => {
|
92
|
+
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));
|
93
|
+
})),
|
94
|
+
react_1.default.createElement("div", { className: version_dropdown_module_scss_1.default.versionContainer },
|
95
|
+
tabs[activeTabIndex].name === 'LANE' &&
|
96
|
+
tabs[activeTabIndex].payload.map((payload) => (react_1.default.createElement(lane_info_1.LaneInfo, Object.assign({ key: payload.id, currentLane: currentLane }, payload)))),
|
97
|
+
tabs[activeTabIndex].name !== 'LANE' &&
|
98
|
+
tabs[activeTabIndex].payload.map((payload) => (react_1.default.createElement(version_info_1.VersionInfo, Object.assign({ key: payload.hash, currentVersion: currentVersion, latestVersion: latestVersion }, payload)))))));
|
99
|
+
}
|
38
100
|
//# sourceMappingURL=version-dropdown.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version-dropdown.js","sourceRoot":"","sources":["../version-dropdown.tsx"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"version-dropdown.js","sourceRoot":"","sources":["../version-dropdown.tsx"],"names":[],"mappings":"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"}
|
@@ -6,7 +6,7 @@
|
|
6
6
|
align-items: center;
|
7
7
|
}
|
8
8
|
.menu {
|
9
|
-
width:
|
9
|
+
width: 350px;
|
10
10
|
padding: 0;
|
11
11
|
right: 0;
|
12
12
|
// top: 43px;
|
@@ -19,13 +19,17 @@
|
|
19
19
|
padding: 16px;
|
20
20
|
padding-bottom: 12px;
|
21
21
|
border-bottom: 1px solid var(--bit-border-color-lightest, #ededed);
|
22
|
-
|
22
|
+
}
|
23
|
+
|
24
|
+
.titleContainer {
|
25
|
+
margin-bottom: 2px;
|
23
26
|
}
|
24
27
|
|
25
28
|
.versionContainer {
|
26
29
|
max-height: 240px;
|
27
30
|
overflow-y: scroll;
|
28
31
|
}
|
32
|
+
|
29
33
|
.versionLine {
|
30
34
|
cursor: pointer;
|
31
35
|
display: flex;
|
@@ -38,17 +42,15 @@
|
|
38
42
|
background-color: var(--bit-bg-heavy, #f6f6f6);
|
39
43
|
}
|
40
44
|
&:last-child {
|
41
|
-
margin-bottom:
|
45
|
+
margin-bottom: 2px;
|
46
|
+
border-bottom: 1px solid var(--bit-border-color-lightest, #ededed);
|
42
47
|
}
|
43
48
|
&.currentVersion {
|
44
49
|
background: var(--bit-accent-bg, #eceaff);
|
45
50
|
}
|
46
|
-
.version {
|
47
|
-
margin-right: 16px;
|
48
|
-
}
|
49
51
|
.label {
|
50
52
|
background-color: white;
|
51
|
-
|
53
|
+
padding: 0px 8px;
|
52
54
|
}
|
53
55
|
}
|
54
56
|
|
@@ -90,3 +92,42 @@
|
|
90
92
|
}
|
91
93
|
}
|
92
94
|
}
|
95
|
+
|
96
|
+
.tabs {
|
97
|
+
display: flex;
|
98
|
+
padding: 0 24px;
|
99
|
+
line-height: 14px;
|
100
|
+
border-bottom: 1px solid var(--bit-border-color-lightest, #ededed);
|
101
|
+
overflow-x: auto;
|
102
|
+
.tab {
|
103
|
+
font-weight: bold;
|
104
|
+
padding-top: 4px;
|
105
|
+
font-size: 12px;
|
106
|
+
}
|
107
|
+
}
|
108
|
+
.versionRow {
|
109
|
+
display: flex;
|
110
|
+
justify-content: space-between;
|
111
|
+
|
112
|
+
.versionTimestamp {
|
113
|
+
margin-right: 2px;
|
114
|
+
}
|
115
|
+
.versionUserAvatar {
|
116
|
+
padding: 0px 8px;
|
117
|
+
}
|
118
|
+
.laneIcon {
|
119
|
+
padding: 0px 4px;
|
120
|
+
}
|
121
|
+
.version {
|
122
|
+
width: 60%;
|
123
|
+
display: flex;
|
124
|
+
flex-direction: row;
|
125
|
+
align-content: space-between;
|
126
|
+
}
|
127
|
+
.versionName {
|
128
|
+
padding: 0px 8px;
|
129
|
+
}
|
130
|
+
}
|
131
|
+
.loading {
|
132
|
+
color: var(--bit-bg-heavy, #f6f6f6);
|
133
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export { VersionInfo, VersionInfoProps } from './version-info';
|
@@ -0,0 +1,6 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.VersionInfo = void 0;
|
4
|
+
var version_info_1 = require("./version-info");
|
5
|
+
Object.defineProperty(exports, "VersionInfo", { enumerable: true, get: function () { return version_info_1.VersionInfo; } });
|
6
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../version-info/index.ts"],"names":[],"mappings":";;;AAAA,+CAA+D;AAAtD,2GAAA,WAAW,OAAA"}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
/// <reference types="react" />
|
2
|
+
import { DropdownComponentVersion } from '../version-dropdown';
|
3
|
+
export declare type VersionInfoProps = DropdownComponentVersion & {
|
4
|
+
currentVersion?: string;
|
5
|
+
latestVersion?: string;
|
6
|
+
};
|
7
|
+
export declare function VersionInfo({ version, currentVersion, latestVersion, date, username, email }: VersionInfoProps): JSX.Element;
|
@@ -0,0 +1,53 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
5
|
+
}) : (function(o, m, k, k2) {
|
6
|
+
if (k2 === undefined) k2 = k;
|
7
|
+
o[k2] = m[k];
|
8
|
+
}));
|
9
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
10
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
11
|
+
}) : function(o, v) {
|
12
|
+
o["default"] = v;
|
13
|
+
});
|
14
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
15
|
+
if (mod && mod.__esModule) return mod;
|
16
|
+
var result = {};
|
17
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
18
|
+
__setModuleDefault(result, mod);
|
19
|
+
return result;
|
20
|
+
};
|
21
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
22
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
23
|
+
};
|
24
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
25
|
+
exports.VersionInfo = void 0;
|
26
|
+
const base_ui_routing_nav_link_1 = require("@teambit/base-ui.routing.nav-link");
|
27
|
+
const design_ui_time_ago_1 = require("@teambit/design.ui.time-ago");
|
28
|
+
const component_ui_version_label_1 = require("@teambit/component.ui.version-label");
|
29
|
+
const react_1 = __importStar(require("react"));
|
30
|
+
const classnames_1 = __importDefault(require("classnames"));
|
31
|
+
const design_ui_avatar_1 = require("@teambit/design.ui.avatar");
|
32
|
+
const design_ui_styles_ellipsis_1 = require("@teambit/design.ui.styles.ellipsis");
|
33
|
+
const version_dropdown_1 = require("../version-dropdown");
|
34
|
+
const version_info_module_scss_1 = __importDefault(require("./version-info.module.scss"));
|
35
|
+
function VersionInfo({ version, currentVersion, latestVersion, date, username, email }) {
|
36
|
+
const isCurrent = version === currentVersion;
|
37
|
+
const author = (0, react_1.useMemo)(() => {
|
38
|
+
return {
|
39
|
+
displayName: username,
|
40
|
+
email,
|
41
|
+
};
|
42
|
+
}, [version]);
|
43
|
+
const timestamp = (0, react_1.useMemo)(() => (date ? new Date(parseInt(date)).toString() : new Date().toString()), [date]);
|
44
|
+
return (react_1.default.createElement("div", { key: version },
|
45
|
+
react_1.default.createElement(base_ui_routing_nav_link_1.NavLink, { href: version === version_dropdown_1.LOCAL_VERSION ? '?' : `?version=${version}`, className: (0, classnames_1.default)(version_info_module_scss_1.default.versionLine, version_info_module_scss_1.default.versionRow, isCurrent && version_info_module_scss_1.default.currentVersion) },
|
46
|
+
react_1.default.createElement("div", { className: version_info_module_scss_1.default.version },
|
47
|
+
react_1.default.createElement(design_ui_avatar_1.UserAvatar, { size: 20, account: author, className: version_info_module_scss_1.default.versionUserAvatar, showTooltip: true }),
|
48
|
+
react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: version_info_module_scss_1.default.versionName }, version),
|
49
|
+
version === latestVersion && react_1.default.createElement(component_ui_version_label_1.VersionLabel, { className: version_info_module_scss_1.default.label, status: "latest" })),
|
50
|
+
react_1.default.createElement(design_ui_time_ago_1.TimeAgo, { className: version_info_module_scss_1.default.versionTimestamp, date: timestamp }))));
|
51
|
+
}
|
52
|
+
exports.VersionInfo = VersionInfo;
|
53
|
+
//# sourceMappingURL=version-info.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"version-info.js","sourceRoot":"","sources":["../../version-info/version-info.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gFAA4D;AAC5D,oEAAsD;AACtD,oFAAmE;AACnE,+CAAuC;AACvC,4DAAoC;AACpC,gEAAuD;AACvD,kFAA8D;AAE9D,0DAA8E;AAC9E,0FAAgD;AAOhD,SAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAoB;IAC7G,MAAM,SAAS,GAAG,OAAO,KAAK,cAAc,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC1B,OAAO;YACL,WAAW,EAAE,QAAQ;YACrB,KAAK;SACN,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,SAAS,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAE9G,OAAO,CACL,uCAAK,GAAG,EAAE,OAAO;QACf,8BAAC,kCAAO,IACN,IAAI,EAAE,OAAO,KAAK,gCAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,OAAO,EAAE,EAC7D,SAAS,EAAE,IAAA,oBAAU,EAAC,kCAAM,CAAC,WAAW,EAAE,kCAAM,CAAC,UAAU,EAAE,SAAS,IAAI,kCAAM,CAAC,cAAc,CAAC;YAEhG,uCAAK,SAAS,EAAE,kCAAM,CAAC,OAAO;gBAC5B,8BAAC,6BAAU,IAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,kCAAM,CAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,GAAI;gBACjG,8BAAC,oCAAQ,IAAC,SAAS,EAAE,kCAAM,CAAC,WAAW,IAAG,OAAO,CAAY;gBAC5D,OAAO,KAAK,aAAa,IAAI,8BAAC,yCAAY,IAAC,SAAS,EAAE,kCAAM,CAAC,KAAK,EAAE,MAAM,EAAC,QAAQ,GAAG,CACnF;YACN,8BAAC,4BAAO,IAAC,SAAS,EAAE,kCAAM,CAAC,gBAAgB,EAAE,IAAI,EAAE,SAAS,GAAI,CACxD,CACN,CACP,CAAC;AACJ,CAAC;AA1BD,kCA0BC"}
|
@@ -0,0 +1,44 @@
|
|
1
|
+
.versionRow {
|
2
|
+
display: flex;
|
3
|
+
justify-content: space-between;
|
4
|
+
|
5
|
+
.versionTimestamp {
|
6
|
+
margin-right: 2px;
|
7
|
+
}
|
8
|
+
.versionUserAvatar {
|
9
|
+
padding: 0px 8px;
|
10
|
+
}
|
11
|
+
.version {
|
12
|
+
width: 60%;
|
13
|
+
display: flex;
|
14
|
+
flex-direction: row;
|
15
|
+
align-content: space-between;
|
16
|
+
}
|
17
|
+
.versionName {
|
18
|
+
padding: 0px 8px;
|
19
|
+
align-self: center;
|
20
|
+
line-height: 14px;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
.versionLine {
|
24
|
+
cursor: pointer;
|
25
|
+
display: flex;
|
26
|
+
align-items: center;
|
27
|
+
height: 36px;
|
28
|
+
padding: 0 24px;
|
29
|
+
text-decoration: none;
|
30
|
+
color: var(--bit-text-color-heavy);
|
31
|
+
&:hover {
|
32
|
+
background-color: var(--bit-bg-heavy, #f6f6f6);
|
33
|
+
}
|
34
|
+
&:last-child {
|
35
|
+
margin-bottom: 8px;
|
36
|
+
}
|
37
|
+
&.currentVersion {
|
38
|
+
background: var(--bit-accent-bg, #eceaff);
|
39
|
+
}
|
40
|
+
.label {
|
41
|
+
background-color: white;
|
42
|
+
padding: 0px 8px;
|
43
|
+
}
|
44
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export { LaneInfo, LaneInfoProps } from './lane-info';
|
@@ -0,0 +1,30 @@
|
|
1
|
+
.versionLine {
|
2
|
+
cursor: pointer;
|
3
|
+
display: flex;
|
4
|
+
align-items: center;
|
5
|
+
height: 36px;
|
6
|
+
padding: 0 24px;
|
7
|
+
text-decoration: none;
|
8
|
+
color: var(--bit-text-color-heavy);
|
9
|
+
&:hover {
|
10
|
+
background-color: var(--bit-bg-heavy, #f6f6f6);
|
11
|
+
}
|
12
|
+
&:last-child {
|
13
|
+
margin-bottom: 8px;
|
14
|
+
}
|
15
|
+
&.currentVersion {
|
16
|
+
background: var(--bit-accent-bg, #eceaff);
|
17
|
+
}
|
18
|
+
.label {
|
19
|
+
background-color: white;
|
20
|
+
padding: 0px 8px;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
|
24
|
+
.versionRow {
|
25
|
+
display: flex;
|
26
|
+
justify-content: space-between;
|
27
|
+
.laneIcon {
|
28
|
+
padding: 0px 4px;
|
29
|
+
}
|
30
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { LaneModel } from '@teambit/lanes.ui.lanes';
|
2
|
+
import classNames from 'classnames';
|
3
|
+
import React from 'react';
|
4
|
+
import { NavLink } from '@teambit/base-ui.routing.nav-link';
|
5
|
+
import { Icon } from '@teambit/evangelist.elements.icon';
|
6
|
+
import styles from './lane-info.module.scss';
|
7
|
+
|
8
|
+
export type LaneInfoProps = LaneModel & { currentLane?: LaneModel };
|
9
|
+
|
10
|
+
export function LaneInfo({ id, url, currentLane }: LaneInfoProps) {
|
11
|
+
const isCurrent = currentLane?.id === id;
|
12
|
+
|
13
|
+
return (
|
14
|
+
<div key={id}>
|
15
|
+
<NavLink
|
16
|
+
href={url}
|
17
|
+
className={classNames(styles.versionLine, styles.versionRow, isCurrent && styles.currentVersion)}
|
18
|
+
>
|
19
|
+
<span>
|
20
|
+
<Icon className={styles.laneIcon} of="lane"></Icon>
|
21
|
+
{id}
|
22
|
+
</span>
|
23
|
+
</NavLink>
|
24
|
+
</div>
|
25
|
+
);
|
26
|
+
}
|
Binary file
|
package/package.json
CHANGED
@@ -1,21 +1,27 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/component.ui.version-dropdown",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.495",
|
4
4
|
"homepage": "https://bit.dev/teambit/component/ui/version-dropdown",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"componentId": {
|
7
7
|
"scope": "teambit.component",
|
8
8
|
"name": "ui/version-dropdown",
|
9
|
-
"version": "0.0.
|
9
|
+
"version": "0.0.495"
|
10
10
|
},
|
11
11
|
"dependencies": {
|
12
12
|
"classnames": "2.2.6",
|
13
13
|
"core-js": "^3.0.0",
|
14
|
+
"@teambit/base-ui.loaders.skeleton": "1.0.1",
|
14
15
|
"@teambit/base-ui.routing.nav-link": "1.0.0",
|
15
16
|
"@teambit/evangelist.elements.icon": "1.0.2",
|
16
17
|
"@teambit/evangelist.surfaces.dropdown": "1.0.2",
|
18
|
+
"@teambit/design.ui.avatar": "0.0.494",
|
19
|
+
"@teambit/design.ui.styles.ellipsis": "0.0.347",
|
20
|
+
"@teambit/lanes.ui.lanes": "0.0.11",
|
21
|
+
"@teambit/legacy-component-log": "0.0.391",
|
22
|
+
"@teambit/ui-foundation.ui.use-box.tab": "0.0.105",
|
17
23
|
"@teambit/component.ui.version-label": "0.0.491",
|
18
|
-
"@teambit/design.ui.
|
24
|
+
"@teambit/design.ui.time-ago": "0.0.351"
|
19
25
|
},
|
20
26
|
"devDependencies": {
|
21
27
|
"history": "4.10.1",
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_ui_version-dropdown@0.0.
|
2
|
-
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_ui_version-dropdown@0.0.
|
1
|
+
export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_ui_version-dropdown@0.0.495/dist/version-dropdown.composition.js')]
|
2
|
+
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_ui_version-dropdown@0.0.495/dist/version-dropdown.docs.js')]
|
@@ -9,18 +9,18 @@ const style = { display: 'flex', justifyContent: 'center', alignContent: 'center
|
|
9
9
|
export const VersionDropdownWithOneVersion = () => {
|
10
10
|
return (
|
11
11
|
<ThemeCompositions style={style}>
|
12
|
-
<VersionDropdown
|
12
|
+
<VersionDropdown tags={[{ version: '0.1' }]} currentVersion="0.1" />
|
13
13
|
</ThemeCompositions>
|
14
14
|
);
|
15
15
|
};
|
16
16
|
|
17
17
|
export const VersionDropdownWithMultipleVersions = () => {
|
18
18
|
const history = createBrowserHistory();
|
19
|
-
const versions = ['0.3', '0.2', '0.1'];
|
19
|
+
const versions = ['0.3', '0.2', '0.1'].map((version) => ({ version }));
|
20
20
|
return (
|
21
21
|
<ThemeCompositions style={style}>
|
22
22
|
<Router history={history}>
|
23
|
-
<VersionDropdown
|
23
|
+
<VersionDropdown tags={versions} currentVersion={versions[0].version} />
|
24
24
|
</Router>
|
25
25
|
</ThemeCompositions>
|
26
26
|
);
|
@@ -6,7 +6,7 @@
|
|
6
6
|
align-items: center;
|
7
7
|
}
|
8
8
|
.menu {
|
9
|
-
width:
|
9
|
+
width: 350px;
|
10
10
|
padding: 0;
|
11
11
|
right: 0;
|
12
12
|
// top: 43px;
|
@@ -19,13 +19,17 @@
|
|
19
19
|
padding: 16px;
|
20
20
|
padding-bottom: 12px;
|
21
21
|
border-bottom: 1px solid var(--bit-border-color-lightest, #ededed);
|
22
|
-
|
22
|
+
}
|
23
|
+
|
24
|
+
.titleContainer {
|
25
|
+
margin-bottom: 2px;
|
23
26
|
}
|
24
27
|
|
25
28
|
.versionContainer {
|
26
29
|
max-height: 240px;
|
27
30
|
overflow-y: scroll;
|
28
31
|
}
|
32
|
+
|
29
33
|
.versionLine {
|
30
34
|
cursor: pointer;
|
31
35
|
display: flex;
|
@@ -38,17 +42,15 @@
|
|
38
42
|
background-color: var(--bit-bg-heavy, #f6f6f6);
|
39
43
|
}
|
40
44
|
&:last-child {
|
41
|
-
margin-bottom:
|
45
|
+
margin-bottom: 2px;
|
46
|
+
border-bottom: 1px solid var(--bit-border-color-lightest, #ededed);
|
42
47
|
}
|
43
48
|
&.currentVersion {
|
44
49
|
background: var(--bit-accent-bg, #eceaff);
|
45
50
|
}
|
46
|
-
.version {
|
47
|
-
margin-right: 16px;
|
48
|
-
}
|
49
51
|
.label {
|
50
52
|
background-color: white;
|
51
|
-
|
53
|
+
padding: 0px 8px;
|
52
54
|
}
|
53
55
|
}
|
54
56
|
|
@@ -90,3 +92,42 @@
|
|
90
92
|
}
|
91
93
|
}
|
92
94
|
}
|
95
|
+
|
96
|
+
.tabs {
|
97
|
+
display: flex;
|
98
|
+
padding: 0 24px;
|
99
|
+
line-height: 14px;
|
100
|
+
border-bottom: 1px solid var(--bit-border-color-lightest, #ededed);
|
101
|
+
overflow-x: auto;
|
102
|
+
.tab {
|
103
|
+
font-weight: bold;
|
104
|
+
padding-top: 4px;
|
105
|
+
font-size: 12px;
|
106
|
+
}
|
107
|
+
}
|
108
|
+
.versionRow {
|
109
|
+
display: flex;
|
110
|
+
justify-content: space-between;
|
111
|
+
|
112
|
+
.versionTimestamp {
|
113
|
+
margin-right: 2px;
|
114
|
+
}
|
115
|
+
.versionUserAvatar {
|
116
|
+
padding: 0px 8px;
|
117
|
+
}
|
118
|
+
.laneIcon {
|
119
|
+
padding: 0px 4px;
|
120
|
+
}
|
121
|
+
.version {
|
122
|
+
width: 60%;
|
123
|
+
display: flex;
|
124
|
+
flex-direction: row;
|
125
|
+
align-content: space-between;
|
126
|
+
}
|
127
|
+
.versionName {
|
128
|
+
padding: 0px 8px;
|
129
|
+
}
|
130
|
+
}
|
131
|
+
.loading {
|
132
|
+
color: var(--bit-bg-heavy, #f6f6f6);
|
133
|
+
}
|
package/version-dropdown.tsx
CHANGED
@@ -1,23 +1,50 @@
|
|
1
1
|
import { Icon } from '@teambit/evangelist.elements.icon';
|
2
2
|
import { NavLink } from '@teambit/base-ui.routing.nav-link';
|
3
3
|
import { Dropdown } from '@teambit/evangelist.surfaces.dropdown';
|
4
|
-
|
4
|
+
|
5
5
|
import { Ellipsis } from '@teambit/design.ui.styles.ellipsis';
|
6
|
+
import { Tab } from '@teambit/ui-foundation.ui.use-box.tab';
|
7
|
+
import { LegacyComponentLog } from '@teambit/legacy-component-log';
|
8
|
+
import { UserAvatar } from '@teambit/design.ui.avatar';
|
9
|
+
import { LineSkeleton } from '@teambit/base-ui.loaders.skeleton';
|
10
|
+
import { LaneModel } from '@teambit/lanes.ui.lanes';
|
6
11
|
import classNames from 'classnames';
|
7
|
-
import React from 'react';
|
12
|
+
import React, { useState } from 'react';
|
8
13
|
|
9
14
|
import styles from './version-dropdown.module.scss';
|
15
|
+
import { VersionInfo } from './version-info';
|
16
|
+
import { LaneInfo } from './lane-info';
|
17
|
+
|
18
|
+
export const LOCAL_VERSION = 'workspace';
|
10
19
|
|
11
|
-
|
20
|
+
export type DropdownComponentVersion = Partial<LegacyComponentLog> & { version: string };
|
12
21
|
|
13
|
-
type VersionDropdownProps = {
|
14
|
-
|
22
|
+
export type VersionDropdownProps = {
|
23
|
+
tags: DropdownComponentVersion[];
|
24
|
+
snaps?: DropdownComponentVersion[];
|
25
|
+
lanes?: LaneModel[];
|
26
|
+
localVersion?: boolean;
|
15
27
|
currentVersion?: string;
|
28
|
+
currentLane?: LaneModel;
|
16
29
|
latestVersion?: string;
|
30
|
+
loading?: boolean;
|
17
31
|
} & React.HTMLAttributes<HTMLDivElement>;
|
18
32
|
|
19
|
-
export function VersionDropdown({
|
20
|
-
|
33
|
+
export function VersionDropdown({
|
34
|
+
snaps,
|
35
|
+
tags,
|
36
|
+
lanes,
|
37
|
+
currentVersion,
|
38
|
+
latestVersion,
|
39
|
+
localVersion,
|
40
|
+
loading,
|
41
|
+
currentLane,
|
42
|
+
}: VersionDropdownProps) {
|
43
|
+
const [key, setKey] = useState(0);
|
44
|
+
|
45
|
+
const singleVersion = (snaps || []).concat(tags).length < 2;
|
46
|
+
|
47
|
+
if (singleVersion && !loading) {
|
21
48
|
return (
|
22
49
|
<div className={styles.noVersions}>
|
23
50
|
<VersionPlaceholder currentVersion={currentVersion} />
|
@@ -30,32 +57,24 @@ export function VersionDropdown({ versions, currentVersion, latestVersion }: Ver
|
|
30
57
|
<Dropdown
|
31
58
|
className={styles.dropdown}
|
32
59
|
dropClass={styles.menu}
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
)}
|
60
|
+
clickToggles={false}
|
61
|
+
clickPlaceholderToggles={true}
|
62
|
+
onChange={(_e, open) => open && setKey((x) => x + 1)} // to reset menu to initial state when toggling
|
63
|
+
placeholder={<VersionPlaceholder currentVersion={currentVersion} className={styles.withVersions} />}
|
38
64
|
>
|
39
|
-
<
|
40
|
-
|
41
|
-
<
|
42
|
-
{
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
{version === latestVersion && <VersionLabel className={styles.label} status="latest" />}
|
53
|
-
{/* {version === currentVersion && <VersionLabel className={styles.label} status="checked-out" />} */}
|
54
|
-
</NavLink>
|
55
|
-
);
|
56
|
-
})}
|
57
|
-
</div>
|
58
|
-
</div>
|
65
|
+
{loading && <LineSkeleton className={styles.loading} count={6} />}
|
66
|
+
{loading || (
|
67
|
+
<VersionMenu
|
68
|
+
key={key}
|
69
|
+
tags={tags}
|
70
|
+
snaps={snaps}
|
71
|
+
lanes={lanes}
|
72
|
+
currentVersion={currentVersion}
|
73
|
+
latestVersion={latestVersion}
|
74
|
+
localVersion={localVersion}
|
75
|
+
currentLane={currentLane}
|
76
|
+
/>
|
77
|
+
)}
|
59
78
|
</Dropdown>
|
60
79
|
</div>
|
61
80
|
);
|
@@ -69,3 +88,95 @@ function VersionPlaceholder({ currentVersion, className }: { currentVersion?: st
|
|
69
88
|
</div>
|
70
89
|
);
|
71
90
|
}
|
91
|
+
type VersionMenuProps = {
|
92
|
+
tags?: DropdownComponentVersion[];
|
93
|
+
snaps?: DropdownComponentVersion[];
|
94
|
+
lanes?: LaneModel[];
|
95
|
+
localVersion?: boolean;
|
96
|
+
currentVersion?: string;
|
97
|
+
latestVersion?: string;
|
98
|
+
currentLane?: LaneModel;
|
99
|
+
} & React.HTMLAttributes<HTMLDivElement>;
|
100
|
+
|
101
|
+
const VERSION_TAB_NAMES = ['TAG', 'SNAP', 'LANE'] as const;
|
102
|
+
|
103
|
+
function VersionMenu({
|
104
|
+
tags,
|
105
|
+
snaps,
|
106
|
+
lanes,
|
107
|
+
currentVersion,
|
108
|
+
localVersion,
|
109
|
+
latestVersion,
|
110
|
+
currentLane,
|
111
|
+
...rest
|
112
|
+
}: VersionMenuProps) {
|
113
|
+
const [activeTabIndex, setActiveTab] = useState<number>(0);
|
114
|
+
|
115
|
+
const tabs = VERSION_TAB_NAMES.map((name) => {
|
116
|
+
switch (name) {
|
117
|
+
case 'SNAP':
|
118
|
+
return { name, payload: snaps || [] };
|
119
|
+
case 'LANE':
|
120
|
+
return { name, payload: lanes || [] };
|
121
|
+
default:
|
122
|
+
return { name, payload: tags || [] };
|
123
|
+
}
|
124
|
+
}).filter((tab) => tab.payload.length > 0);
|
125
|
+
|
126
|
+
const multipleTabs = tabs.length > 1;
|
127
|
+
|
128
|
+
return (
|
129
|
+
<div {...rest}>
|
130
|
+
<div className={styles.top}>
|
131
|
+
<div className={classNames(styles.titleContainer, multipleTabs && styles.title)}>
|
132
|
+
{multipleTabs && <span>Switch to view tags, snaps, or lanes</span>}
|
133
|
+
</div>
|
134
|
+
{localVersion && (
|
135
|
+
<NavLink
|
136
|
+
href={'?'}
|
137
|
+
className={classNames(
|
138
|
+
styles.versionLine,
|
139
|
+
styles.versionRow,
|
140
|
+
currentVersion === LOCAL_VERSION && styles.currentVersion
|
141
|
+
)}
|
142
|
+
>
|
143
|
+
<div className={styles.version}>
|
144
|
+
<UserAvatar size={20} account={{}} className={styles.versionUserAvatar} />
|
145
|
+
<span className={styles.versionName}>{LOCAL_VERSION}</span>
|
146
|
+
</div>
|
147
|
+
</NavLink>
|
148
|
+
)}
|
149
|
+
</div>
|
150
|
+
<div className={classNames(multipleTabs && styles.tabs)}>
|
151
|
+
{multipleTabs &&
|
152
|
+
tabs.map(({ name }, index) => {
|
153
|
+
return (
|
154
|
+
<Tab
|
155
|
+
className={styles.tab}
|
156
|
+
key={name}
|
157
|
+
isActive={activeTabIndex === index}
|
158
|
+
onClick={() => setActiveTab(index)}
|
159
|
+
>
|
160
|
+
{name}
|
161
|
+
</Tab>
|
162
|
+
);
|
163
|
+
})}
|
164
|
+
</div>
|
165
|
+
<div className={styles.versionContainer}>
|
166
|
+
{tabs[activeTabIndex].name === 'LANE' &&
|
167
|
+
tabs[activeTabIndex].payload.map((payload) => (
|
168
|
+
<LaneInfo key={payload.id} currentLane={currentLane} {...payload}></LaneInfo>
|
169
|
+
))}
|
170
|
+
{tabs[activeTabIndex].name !== 'LANE' &&
|
171
|
+
tabs[activeTabIndex].payload.map((payload) => (
|
172
|
+
<VersionInfo
|
173
|
+
key={payload.hash}
|
174
|
+
currentVersion={currentVersion}
|
175
|
+
latestVersion={latestVersion}
|
176
|
+
{...payload}
|
177
|
+
></VersionInfo>
|
178
|
+
))}
|
179
|
+
</div>
|
180
|
+
</div>
|
181
|
+
);
|
182
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export { VersionInfo, VersionInfoProps } from './version-info';
|
@@ -0,0 +1,44 @@
|
|
1
|
+
.versionRow {
|
2
|
+
display: flex;
|
3
|
+
justify-content: space-between;
|
4
|
+
|
5
|
+
.versionTimestamp {
|
6
|
+
margin-right: 2px;
|
7
|
+
}
|
8
|
+
.versionUserAvatar {
|
9
|
+
padding: 0px 8px;
|
10
|
+
}
|
11
|
+
.version {
|
12
|
+
width: 60%;
|
13
|
+
display: flex;
|
14
|
+
flex-direction: row;
|
15
|
+
align-content: space-between;
|
16
|
+
}
|
17
|
+
.versionName {
|
18
|
+
padding: 0px 8px;
|
19
|
+
align-self: center;
|
20
|
+
line-height: 14px;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
.versionLine {
|
24
|
+
cursor: pointer;
|
25
|
+
display: flex;
|
26
|
+
align-items: center;
|
27
|
+
height: 36px;
|
28
|
+
padding: 0 24px;
|
29
|
+
text-decoration: none;
|
30
|
+
color: var(--bit-text-color-heavy);
|
31
|
+
&:hover {
|
32
|
+
background-color: var(--bit-bg-heavy, #f6f6f6);
|
33
|
+
}
|
34
|
+
&:last-child {
|
35
|
+
margin-bottom: 8px;
|
36
|
+
}
|
37
|
+
&.currentVersion {
|
38
|
+
background: var(--bit-accent-bg, #eceaff);
|
39
|
+
}
|
40
|
+
.label {
|
41
|
+
background-color: white;
|
42
|
+
padding: 0px 8px;
|
43
|
+
}
|
44
|
+
}
|
@@ -0,0 +1,43 @@
|
|
1
|
+
import { NavLink } from '@teambit/base-ui.routing.nav-link';
|
2
|
+
import { TimeAgo } from '@teambit/design.ui.time-ago';
|
3
|
+
import { VersionLabel } from '@teambit/component.ui.version-label';
|
4
|
+
import React, { useMemo } from 'react';
|
5
|
+
import classNames from 'classnames';
|
6
|
+
import { UserAvatar } from '@teambit/design.ui.avatar';
|
7
|
+
import { Ellipsis } from '@teambit/design.ui.styles.ellipsis';
|
8
|
+
|
9
|
+
import { DropdownComponentVersion, LOCAL_VERSION } from '../version-dropdown';
|
10
|
+
import styles from './version-info.module.scss';
|
11
|
+
|
12
|
+
export type VersionInfoProps = DropdownComponentVersion & {
|
13
|
+
currentVersion?: string;
|
14
|
+
latestVersion?: string;
|
15
|
+
};
|
16
|
+
|
17
|
+
export function VersionInfo({ version, currentVersion, latestVersion, date, username, email }: VersionInfoProps) {
|
18
|
+
const isCurrent = version === currentVersion;
|
19
|
+
const author = useMemo(() => {
|
20
|
+
return {
|
21
|
+
displayName: username,
|
22
|
+
email,
|
23
|
+
};
|
24
|
+
}, [version]);
|
25
|
+
|
26
|
+
const timestamp = useMemo(() => (date ? new Date(parseInt(date)).toString() : new Date().toString()), [date]);
|
27
|
+
|
28
|
+
return (
|
29
|
+
<div key={version}>
|
30
|
+
<NavLink
|
31
|
+
href={version === LOCAL_VERSION ? '?' : `?version=${version}`}
|
32
|
+
className={classNames(styles.versionLine, styles.versionRow, isCurrent && styles.currentVersion)}
|
33
|
+
>
|
34
|
+
<div className={styles.version}>
|
35
|
+
<UserAvatar size={20} account={author} className={styles.versionUserAvatar} showTooltip={true} />
|
36
|
+
<Ellipsis className={styles.versionName}>{version}</Ellipsis>
|
37
|
+
{version === latestVersion && <VersionLabel className={styles.label} status="latest" />}
|
38
|
+
</div>
|
39
|
+
<TimeAgo className={styles.versionTimestamp} date={timestamp} />
|
40
|
+
</NavLink>
|
41
|
+
</div>
|
42
|
+
);
|
43
|
+
}
|
Binary file
|