@teambit/component.ui.version-dropdown 0.0.549 → 0.0.552
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 +1 -1
- package/dist/index.js.map +1 -1
- package/dist/version-dropdown-placeholder.d.ts +10 -0
- package/dist/version-dropdown-placeholder.js +70 -0
- package/dist/version-dropdown-placeholder.js.map +1 -0
- package/dist/version-dropdown-placeholder.module.scss +96 -0
- package/dist/version-dropdown.d.ts +9 -3
- package/dist/version-dropdown.js +16 -18
- package/dist/version-dropdown.js.map +1 -1
- package/dist/version-dropdown.module.scss +4 -20
- package/dist/version-info/version-info.d.ts +3 -1
- package/dist/version-info/version-info.js +15 -6
- package/dist/version-info/version-info.js.map +1 -1
- package/dist/version-info/version-info.module.scss +36 -19
- package/index.ts +1 -1
- package/package-tar/teambit-component.ui.version-dropdown-0.0.552.tgz +0 -0
- package/package.json +8 -8
- package/{preview-1654313169583.js → preview-1654697373869.js} +2 -2
- package/version-dropdown-placeholder.module.scss +96 -0
- package/version-dropdown-placeholder.tsx +83 -0
- package/version-dropdown.module.scss +4 -20
- package/version-dropdown.tsx +55 -25
- package/version-info/version-info.module.scss +36 -19
- package/version-info/version-info.tsx +31 -5
- package/package-tar/teambit-component.ui.version-dropdown-0.0.549.tgz +0 -0
package/dist/index.d.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export { VersionDropdown } from './version-dropdown';
|
1
|
+
export { VersionDropdown, DropdownComponentVersion } from './version-dropdown';
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;AAAA,uDAA+E;AAAtE,mHAAA,eAAe,OAAA"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { HTMLAttributes } from 'react';
|
2
|
+
import { DropdownComponentVersion } from './version-dropdown';
|
3
|
+
export declare type VersionProps = {
|
4
|
+
tags: DropdownComponentVersion[];
|
5
|
+
snaps?: DropdownComponentVersion[];
|
6
|
+
currentVersion: string;
|
7
|
+
disabled?: boolean;
|
8
|
+
} & HTMLAttributes<HTMLDivElement>;
|
9
|
+
export declare function SimpleVersion({ currentVersion, className, disabled, tags, snaps }: VersionProps): JSX.Element;
|
10
|
+
export declare function DetailedVersion({ currentVersion, className, disabled, snaps, tags }: VersionProps): JSX.Element;
|
@@ -0,0 +1,70 @@
|
|
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.DetailedVersion = exports.SimpleVersion = void 0;
|
26
|
+
const react_1 = __importStar(require("react"));
|
27
|
+
const design_ui_styles_ellipsis_1 = require("@teambit/design.ui.styles.ellipsis");
|
28
|
+
const classnames_1 = __importDefault(require("classnames"));
|
29
|
+
const evangelist_elements_icon_1 = require("@teambit/evangelist.elements.icon");
|
30
|
+
const design_ui_time_ago_1 = require("@teambit/design.ui.time-ago");
|
31
|
+
const design_ui_avatar_1 = require("@teambit/design.ui.avatar");
|
32
|
+
const version_dropdown_placeholder_module_scss_1 = __importDefault(require("./version-dropdown-placeholder.module.scss"));
|
33
|
+
const getVersionDetailFromTags = (version, tags) => tags.find((tag) => tag.tag === version);
|
34
|
+
const getVersionDetailFromSnaps = (version, snaps) => (snaps || []).find((snap) => snap.hash === version);
|
35
|
+
const getVersionDetails = (version, tags, snaps) => {
|
36
|
+
if (version === 'workspace' || version === 'new')
|
37
|
+
return { version };
|
38
|
+
return getVersionDetailFromTags(version, tags) || getVersionDetailFromSnaps(version, snaps);
|
39
|
+
};
|
40
|
+
function SimpleVersion({ currentVersion, className, disabled, tags, snaps }) {
|
41
|
+
const versionDetails = (0, react_1.useMemo)(() => getVersionDetails(currentVersion, tags, snaps), [currentVersion, tags, snaps]);
|
42
|
+
return (react_1.default.createElement("div", { className: (0, classnames_1.default)(version_dropdown_placeholder_module_scss_1.default.simple, className, disabled && version_dropdown_placeholder_module_scss_1.default.disabled) },
|
43
|
+
react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: (0, classnames_1.default)(version_dropdown_placeholder_module_scss_1.default.versionName, (versionDetails === null || versionDetails === void 0 ? void 0 : versionDetails.tag) && version_dropdown_placeholder_module_scss_1.default.tag, !(versionDetails === null || versionDetails === void 0 ? void 0 : versionDetails.tag) && version_dropdown_placeholder_module_scss_1.default.snap) }, currentVersion),
|
44
|
+
react_1.default.createElement(evangelist_elements_icon_1.Icon, { of: "fat-arrow-down" })));
|
45
|
+
}
|
46
|
+
exports.SimpleVersion = SimpleVersion;
|
47
|
+
function DetailedVersion({ currentVersion, className, disabled, snaps, tags }) {
|
48
|
+
const versionDetails = (0, react_1.useMemo)(() => getVersionDetails(currentVersion, tags, snaps), [currentVersion, tags, snaps]);
|
49
|
+
const timestamp = (0, react_1.useMemo)(() => ((versionDetails === null || versionDetails === void 0 ? void 0 : versionDetails.date) ? new Date(parseInt(versionDetails.date)).toString() : new Date().toString()), [versionDetails === null || versionDetails === void 0 ? void 0 : versionDetails.date]);
|
50
|
+
const author = (0, react_1.useMemo)(() => {
|
51
|
+
return {
|
52
|
+
displayName: versionDetails === null || versionDetails === void 0 ? void 0 : versionDetails.username,
|
53
|
+
email: versionDetails === null || versionDetails === void 0 ? void 0 : versionDetails.email,
|
54
|
+
};
|
55
|
+
}, [versionDetails]);
|
56
|
+
return (react_1.default.createElement("div", { className: (0, classnames_1.default)(version_dropdown_placeholder_module_scss_1.default.detailed, className, disabled && version_dropdown_placeholder_module_scss_1.default.disabled) },
|
57
|
+
react_1.default.createElement(design_ui_avatar_1.UserAvatar, { size: 24, account: author, className: version_dropdown_placeholder_module_scss_1.default.versionUserAvatar, showTooltip: true }),
|
58
|
+
react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: (0, classnames_1.default)(version_dropdown_placeholder_module_scss_1.default.versionName, (versionDetails === null || versionDetails === void 0 ? void 0 : versionDetails.tag) && version_dropdown_placeholder_module_scss_1.default.tag, !(versionDetails === null || versionDetails === void 0 ? void 0 : versionDetails.tag) && version_dropdown_placeholder_module_scss_1.default.snap) }, currentVersion),
|
59
|
+
commitMessage(versionDetails === null || versionDetails === void 0 ? void 0 : versionDetails.message),
|
60
|
+
react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: version_dropdown_placeholder_module_scss_1.default.versionTimestamp },
|
61
|
+
react_1.default.createElement(design_ui_time_ago_1.TimeAgo, { date: timestamp })),
|
62
|
+
react_1.default.createElement(evangelist_elements_icon_1.Icon, { of: "fat-arrow-down" })));
|
63
|
+
}
|
64
|
+
exports.DetailedVersion = DetailedVersion;
|
65
|
+
function commitMessage(message) {
|
66
|
+
if (!message || message === '')
|
67
|
+
return react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: version_dropdown_placeholder_module_scss_1.default.emptyMessage }, "No commit message");
|
68
|
+
return react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: version_dropdown_placeholder_module_scss_1.default.commitMessage }, message);
|
69
|
+
}
|
70
|
+
//# 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,96 @@
|
|
1
|
+
.simple {
|
2
|
+
cursor: pointer;
|
3
|
+
border: 1px solid var(--bit-border-color, #babec9);
|
4
|
+
border-radius: 6px;
|
5
|
+
transition: background-color 300ms ease-in-out;
|
6
|
+
height: 30px;
|
7
|
+
padding: 0 8px;
|
8
|
+
display: flex;
|
9
|
+
align-items: center;
|
10
|
+
box-sizing: border-box;
|
11
|
+
user-select: none;
|
12
|
+
|
13
|
+
> div {
|
14
|
+
margin-right: 5px;
|
15
|
+
}
|
16
|
+
&:hover {
|
17
|
+
background-color: var(--bit-bg-heavy);
|
18
|
+
}
|
19
|
+
|
20
|
+
> div {
|
21
|
+
max-width: 80px;
|
22
|
+
}
|
23
|
+
&.disabled {
|
24
|
+
cursor: default;
|
25
|
+
background-color: #ededed;
|
26
|
+
> span {
|
27
|
+
display: none;
|
28
|
+
}
|
29
|
+
}
|
30
|
+
.versionName {
|
31
|
+
padding: 0px 8px;
|
32
|
+
&.tag {
|
33
|
+
min-width: fit-content;
|
34
|
+
}
|
35
|
+
&.snap {
|
36
|
+
min-width: 20%;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
.detailed {
|
42
|
+
display: flex;
|
43
|
+
align-items: center;
|
44
|
+
box-sizing: border-box;
|
45
|
+
padding: 0 8px;
|
46
|
+
height: 30px;
|
47
|
+
border-radius: 6px;
|
48
|
+
user-select: none;
|
49
|
+
transition: background-color 300ms ease-in-out;
|
50
|
+
border: 1px solid var(--bit-border-color, #babec9);
|
51
|
+
|
52
|
+
cursor: pointer;
|
53
|
+
> div {
|
54
|
+
margin-right: 5px;
|
55
|
+
}
|
56
|
+
&:hover {
|
57
|
+
background-color: var(--bit-bg-heavy);
|
58
|
+
}
|
59
|
+
> div {
|
60
|
+
max-width: 80px;
|
61
|
+
}
|
62
|
+
&.disabled {
|
63
|
+
cursor: default;
|
64
|
+
background-color: #ededed;
|
65
|
+
> span {
|
66
|
+
display: none;
|
67
|
+
}
|
68
|
+
}
|
69
|
+
.versionName {
|
70
|
+
padding: 0px 8px;
|
71
|
+
&.tag {
|
72
|
+
min-width: fit-content;
|
73
|
+
}
|
74
|
+
&.snap {
|
75
|
+
min-width: 20%;
|
76
|
+
}
|
77
|
+
}
|
78
|
+
.commitMessage,
|
79
|
+
.emptyMessage {
|
80
|
+
max-width: 50%;
|
81
|
+
padding: 0px 8px;
|
82
|
+
}
|
83
|
+
.emptyMessage {
|
84
|
+
font-style: italic;
|
85
|
+
color: var(--bit-text-color-light, #6c707c);
|
86
|
+
}
|
87
|
+
.author {
|
88
|
+
text-transform: capitalize;
|
89
|
+
min-width: fit-content;
|
90
|
+
}
|
91
|
+
.versionTimestamp {
|
92
|
+
min-width: fit-content;
|
93
|
+
margin-right: 2px;
|
94
|
+
text-align: right;
|
95
|
+
}
|
96
|
+
}
|
@@ -1,6 +1,6 @@
|
|
1
|
+
import React from 'react';
|
1
2
|
import { LegacyComponentLog } from '@teambit/legacy-component-log';
|
2
3
|
import { LaneModel } from '@teambit/lanes.ui.lanes';
|
3
|
-
import React from 'react';
|
4
4
|
export declare const LOCAL_VERSION = "workspace";
|
5
5
|
export declare type DropdownComponentVersion = Partial<LegacyComponentLog> & {
|
6
6
|
version: string;
|
@@ -10,9 +10,15 @@ export declare type VersionDropdownProps = {
|
|
10
10
|
snaps?: DropdownComponentVersion[];
|
11
11
|
lanes?: LaneModel[];
|
12
12
|
localVersion?: boolean;
|
13
|
-
currentVersion
|
13
|
+
currentVersion: string;
|
14
14
|
currentLane?: LaneModel;
|
15
15
|
latestVersion?: string;
|
16
16
|
loading?: boolean;
|
17
|
+
overrideVersionHref?: (version: string) => string;
|
18
|
+
placeholderClassName?: string;
|
19
|
+
dropdownClassName?: string;
|
20
|
+
menuClassName?: string;
|
21
|
+
showVersionDetails?: boolean;
|
22
|
+
disabled?: boolean;
|
17
23
|
} & React.HTMLAttributes<HTMLDivElement>;
|
18
|
-
export declare function VersionDropdown({ snaps, tags, lanes, currentVersion, latestVersion, localVersion, loading, currentLane, }: VersionDropdownProps): JSX.Element;
|
24
|
+
export declare function VersionDropdown({ snaps, tags, lanes, currentVersion, latestVersion, localVersion, loading, currentLane, overrideVersionHref, className, placeholderClassName, dropdownClassName, menuClassName, showVersionDetails, disabled, ...rest }: VersionDropdownProps): JSX.Element;
|
package/dist/version-dropdown.js
CHANGED
@@ -34,40 +34,38 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
34
34
|
};
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
36
36
|
exports.VersionDropdown = exports.LOCAL_VERSION = void 0;
|
37
|
-
const
|
37
|
+
const react_1 = __importStar(require("react"));
|
38
38
|
const design_ui_surfaces_menu_link_item_1 = require("@teambit/design.ui.surfaces.menu.link-item");
|
39
39
|
const evangelist_surfaces_dropdown_1 = require("@teambit/evangelist.surfaces.dropdown");
|
40
|
-
const design_ui_styles_ellipsis_1 = require("@teambit/design.ui.styles.ellipsis");
|
41
40
|
const ui_foundation_ui_use_box_tab_1 = require("@teambit/ui-foundation.ui.use-box.tab");
|
42
41
|
const design_ui_avatar_1 = require("@teambit/design.ui.avatar");
|
43
42
|
const base_ui_loaders_skeleton_1 = require("@teambit/base-ui.loaders.skeleton");
|
44
43
|
const classnames_1 = __importDefault(require("classnames"));
|
45
|
-
const react_1 = __importStar(require("react"));
|
46
44
|
const version_dropdown_module_scss_1 = __importDefault(require("./version-dropdown.module.scss"));
|
47
45
|
const version_info_1 = require("./version-info");
|
48
46
|
const lane_info_1 = require("./lane-info");
|
47
|
+
const version_dropdown_placeholder_1 = require("./version-dropdown-placeholder");
|
49
48
|
exports.LOCAL_VERSION = 'workspace';
|
50
|
-
function VersionDropdown(
|
49
|
+
function VersionDropdown(_a) {
|
50
|
+
var { snaps, tags, lanes, currentVersion, latestVersion, localVersion, loading, currentLane, overrideVersionHref, className, placeholderClassName, dropdownClassName, menuClassName, showVersionDetails, disabled } = _a, rest = __rest(_a, ["snaps", "tags", "lanes", "currentVersion", "latestVersion", "localVersion", "loading", "currentLane", "overrideVersionHref", "className", "placeholderClassName", "dropdownClassName", "menuClassName", "showVersionDetails", "disabled"]);
|
51
51
|
const [key, setKey] = (0, react_1.useState)(0);
|
52
52
|
const singleVersion = (snaps || []).concat(tags).length < 2 && !localVersion;
|
53
|
-
|
54
|
-
|
55
|
-
|
53
|
+
const placeholder = (showVersionDetails && (react_1.default.createElement(version_dropdown_placeholder_1.DetailedVersion, { disabled: disabled, snaps: snaps, tags: tags, className: placeholderClassName, currentVersion: currentVersion }))) || (react_1.default.createElement(version_dropdown_placeholder_1.SimpleVersion, { disabled: disabled, snaps: snaps, tags: tags, className: placeholderClassName, currentVersion: currentVersion }));
|
54
|
+
if (disabled || (singleVersion && !loading)) {
|
55
|
+
return react_1.default.createElement("div", { className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.noVersions, className) }, placeholder);
|
56
56
|
}
|
57
|
-
return (react_1.default.createElement("div", { className: version_dropdown_module_scss_1.default.versionDropdown },
|
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),
|
57
|
+
return (react_1.default.createElement("div", Object.assign({}, rest, { className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.versionDropdown, className) }),
|
58
|
+
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), clickToggles: false, clickPlaceholderToggles: true, onChange: (_e, open) => open && setKey((x) => x + 1), PlaceholderComponent: (_a) => {
|
59
|
+
var { children } = _a, other = __rest(_a, ["children"]);
|
60
|
+
return (react_1.default.createElement("div", Object.assign({}, other, { className: placeholderClassName }), children));
|
61
|
+
}, placeholder: placeholder },
|
59
62
|
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 })))));
|
63
|
+
loading || (react_1.default.createElement(VersionMenu, { className: menuClassName, key: key, tags: tags, snaps: snaps, lanes: lanes, currentVersion: currentVersion, latestVersion: latestVersion, localVersion: localVersion, currentLane: currentLane, overrideVersionHref: overrideVersionHref, showVersionDetails: showVersionDetails })))));
|
61
64
|
}
|
62
65
|
exports.VersionDropdown = VersionDropdown;
|
63
|
-
function VersionPlaceholder({ currentVersion, className }) {
|
64
|
-
return (react_1.default.createElement("div", { className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.placeholder, className) },
|
65
|
-
react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, null, currentVersion),
|
66
|
-
react_1.default.createElement(evangelist_elements_icon_1.Icon, { of: "fat-arrow-down" })));
|
67
|
-
}
|
68
66
|
const VERSION_TAB_NAMES = ['TAG', 'SNAP', 'LANE'];
|
69
67
|
function VersionMenu(_a) {
|
70
|
-
var { tags, snaps, lanes, currentVersion, localVersion, latestVersion, currentLane } = _a, rest = __rest(_a, ["tags", "snaps", "lanes", "currentVersion", "localVersion", "latestVersion", "currentLane"]);
|
68
|
+
var { tags, snaps, lanes, currentVersion, localVersion, latestVersion, currentLane, overrideVersionHref, showVersionDetails } = _a, rest = __rest(_a, ["tags", "snaps", "lanes", "currentVersion", "localVersion", "latestVersion", "currentLane", "overrideVersionHref", "showVersionDetails"]);
|
71
69
|
const tabs = VERSION_TAB_NAMES.map((name) => {
|
72
70
|
switch (name) {
|
73
71
|
case 'SNAP':
|
@@ -83,7 +81,7 @@ function VersionMenu(_a) {
|
|
83
81
|
return tabs.findIndex((tab) => tab.name === 'LANE');
|
84
82
|
if ((snaps || []).some((snap) => snap.version === currentVersion))
|
85
83
|
return tabs.findIndex((tab) => tab.name === 'SNAP');
|
86
|
-
return
|
84
|
+
return 0;
|
87
85
|
};
|
88
86
|
const [activeTabIndex, setActiveTab] = (0, react_1.useState)(getActiveTabIndex());
|
89
87
|
const multipleTabs = tabs.length > 1;
|
@@ -105,6 +103,6 @@ function VersionMenu(_a) {
|
|
105
103
|
tabs[activeTabIndex].name === 'LANE' &&
|
106
104
|
tabs[activeTabIndex].payload.map((payload) => (react_1.default.createElement(lane_info_1.LaneInfo, Object.assign({ key: payload.id, currentLane: currentLane }, payload)))),
|
107
105
|
tabs[activeTabIndex].name !== 'LANE' &&
|
108
|
-
tabs[activeTabIndex].payload.map((payload) => (react_1.default.createElement(version_info_1.VersionInfo, Object.assign({ key: payload.version, currentVersion: currentVersion, latestVersion: latestVersion }, payload)))))));
|
106
|
+
tabs[activeTabIndex].payload.map((payload) => (react_1.default.createElement(version_info_1.VersionInfo, Object.assign({ key: payload.version, currentVersion: currentVersion, latestVersion: latestVersion, overrideVersionHref: overrideVersionHref, showDetails: showVersionDetails }, payload)))))));
|
109
107
|
}
|
110
108
|
//# sourceMappingURL=version-dropdown.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version-dropdown.js","sourceRoot":"","sources":["../version-dropdown.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA
|
1
|
+
{"version":3,"file":"version-dropdown.js","sourceRoot":"","sources":["../version-dropdown.tsx"],"names":[],"mappings":"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"}
|
@@ -6,7 +6,6 @@
|
|
6
6
|
align-items: center;
|
7
7
|
}
|
8
8
|
.menu {
|
9
|
-
width: 350px;
|
10
9
|
padding: 0;
|
11
10
|
right: 0;
|
12
11
|
// top: 43px;
|
@@ -36,7 +35,7 @@
|
|
36
35
|
justify-content: space-between;
|
37
36
|
align-items: center;
|
38
37
|
height: 40px;
|
39
|
-
padding: 0
|
38
|
+
padding: 0 16px;
|
40
39
|
|
41
40
|
&.localVersion {
|
42
41
|
border-bottom: 1px solid var(--bit-border-color-lightest, #ededed);
|
@@ -59,24 +58,7 @@
|
|
59
58
|
}
|
60
59
|
.versionName {
|
61
60
|
padding: 0px 8px;
|
62
|
-
|
63
|
-
}
|
64
|
-
|
65
|
-
.placeholder {
|
66
|
-
display: flex;
|
67
|
-
align-items: center;
|
68
|
-
box-sizing: border-box;
|
69
|
-
padding: 0 8px;
|
70
|
-
height: 30px;
|
71
|
-
border-radius: 6px;
|
72
|
-
user-select: none;
|
73
|
-
transition: background-color 300ms ease-in-out;
|
74
|
-
border: 1px solid var(--bit-border-color, #babec9);
|
75
|
-
> span {
|
76
|
-
display: none;
|
77
|
-
}
|
78
|
-
> div {
|
79
|
-
max-width: 80px;
|
61
|
+
min-width: fit-content;
|
80
62
|
}
|
81
63
|
}
|
82
64
|
|
@@ -107,6 +89,8 @@
|
|
107
89
|
line-height: 14px;
|
108
90
|
border-bottom: 1px solid var(--bit-border-color-lightest, #ededed);
|
109
91
|
overflow-x: auto;
|
92
|
+
margin-top: 8px;
|
93
|
+
|
110
94
|
.tab {
|
111
95
|
font-weight: bold;
|
112
96
|
padding-top: 4px;
|
@@ -3,5 +3,7 @@ import { DropdownComponentVersion } from '../version-dropdown';
|
|
3
3
|
export declare type VersionInfoProps = DropdownComponentVersion & {
|
4
4
|
currentVersion?: string;
|
5
5
|
latestVersion?: string;
|
6
|
+
overrideVersionHref?: (version: string) => string;
|
7
|
+
showDetails?: boolean;
|
6
8
|
};
|
7
|
-
export declare function VersionInfo({ version, currentVersion, latestVersion, date, username, email }: VersionInfoProps): JSX.Element;
|
9
|
+
export declare function VersionInfo({ version, currentVersion, latestVersion, date, username, email, overrideVersionHref, showDetails, message, tag, }: VersionInfoProps): JSX.Element;
|
@@ -29,8 +29,9 @@ const component_ui_version_label_1 = require("@teambit/component.ui.version-labe
|
|
29
29
|
const react_1 = __importStar(require("react"));
|
30
30
|
const design_ui_avatar_1 = require("@teambit/design.ui.avatar");
|
31
31
|
const design_ui_styles_ellipsis_1 = require("@teambit/design.ui.styles.ellipsis");
|
32
|
+
const classnames_1 = __importDefault(require("classnames"));
|
32
33
|
const version_info_module_scss_1 = __importDefault(require("./version-info.module.scss"));
|
33
|
-
function VersionInfo({ version, currentVersion, latestVersion, date, username, email }) {
|
34
|
+
function VersionInfo({ version, currentVersion, latestVersion, date, username, email, overrideVersionHref, showDetails, message, tag, }) {
|
34
35
|
const isCurrent = version === currentVersion;
|
35
36
|
const author = (0, react_1.useMemo)(() => {
|
36
37
|
return {
|
@@ -43,16 +44,24 @@ function VersionInfo({ version, currentVersion, latestVersion, date, username, e
|
|
43
44
|
(0, react_1.useEffect)(() => {
|
44
45
|
var _a;
|
45
46
|
if (isCurrent) {
|
46
|
-
(_a = currentVersionRef.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView();
|
47
|
+
(_a = currentVersionRef.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
|
47
48
|
}
|
48
49
|
}, [isCurrent]);
|
50
|
+
const href = overrideVersionHref ? overrideVersionHref(version) : `?version=${version}`;
|
49
51
|
return (react_1.default.createElement("div", { ref: currentVersionRef },
|
50
|
-
react_1.default.createElement(design_ui_surfaces_menu_link_item_1.MenuLinkItem, { isActive: () => isCurrent, href:
|
52
|
+
react_1.default.createElement(design_ui_surfaces_menu_link_item_1.MenuLinkItem, { isActive: () => isCurrent, href: href, className: version_info_module_scss_1.default.versionRow },
|
51
53
|
react_1.default.createElement("div", { className: version_info_module_scss_1.default.version },
|
52
54
|
react_1.default.createElement(design_ui_avatar_1.UserAvatar, { size: 24, account: author, className: version_info_module_scss_1.default.versionUserAvatar, showTooltip: true }),
|
53
|
-
react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: version_info_module_scss_1.default.versionName }, version),
|
54
|
-
version === latestVersion && react_1.default.createElement(component_ui_version_label_1.VersionLabel, { className: version_info_module_scss_1.default.label, status: "latest" })
|
55
|
-
|
55
|
+
react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: (0, classnames_1.default)(version_info_module_scss_1.default.versionName, tag && version_info_module_scss_1.default.tag, !tag && version_info_module_scss_1.default.snap) }, version),
|
56
|
+
version === latestVersion && react_1.default.createElement(component_ui_version_label_1.VersionLabel, { className: version_info_module_scss_1.default.label, status: "latest" }),
|
57
|
+
showDetails && commitMessage(message)),
|
58
|
+
react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: version_info_module_scss_1.default.versionTimestamp },
|
59
|
+
react_1.default.createElement(design_ui_time_ago_1.TimeAgo, { date: timestamp })))));
|
56
60
|
}
|
57
61
|
exports.VersionInfo = VersionInfo;
|
62
|
+
function commitMessage(message) {
|
63
|
+
if (!message || message === '')
|
64
|
+
return react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: version_info_module_scss_1.default.emptyMessage }, "No commit message");
|
65
|
+
return react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: version_info_module_scss_1.default.commitMessage }, message);
|
66
|
+
}
|
58
67
|
//# sourceMappingURL=version-info.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version-info.js","sourceRoot":"","sources":["../../version-info/version-info.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kGAA0E;AAC1E,oEAAsD;AACtD,oFAAmE;AACnE,+CAA0D;AAC1D,gEAAuD;AACvD,kFAA8D;
|
1
|
+
{"version":3,"file":"version-info.js","sourceRoot":"","sources":["../../version-info/version-info.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kGAA0E;AAC1E,oEAAsD;AACtD,oFAAmE;AACnE,+CAA0D;AAC1D,gEAAuD;AACvD,kFAA8D;AAC9D,4DAAoC;AAGpC,0FAAgD;AAShD,SAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,cAAc,EACd,aAAa,EACb,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,mBAAmB,EACnB,WAAW,EACX,OAAO,EACP,GAAG,GACc;IACjB,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;IAC9G,MAAM,iBAAiB,GAAG,IAAA,cAAM,EAAiB,IAAI,CAAC,CAAC;IACvD,IAAA,iBAAS,EAAC,GAAG,EAAE;;QACb,IAAI,SAAS,EAAE;YACb,MAAA,iBAAiB,CAAC,OAAO,0CAAE,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;SACrF;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,MAAM,IAAI,GAAG,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,OAAO,EAAE,CAAC;IAExF,OAAO,CACL,uCAAK,GAAG,EAAE,iBAAiB;QACzB,8BAAC,gDAAY,IAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,kCAAM,CAAC,UAAU;YAC/E,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,IAAA,oBAAU,EAAC,kCAAM,CAAC,WAAW,EAAE,GAAG,IAAI,kCAAM,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,kCAAM,CAAC,IAAI,CAAC,IACxF,OAAO,CACC;gBACV,OAAO,KAAK,aAAa,IAAI,8BAAC,yCAAY,IAAC,SAAS,EAAE,kCAAM,CAAC,KAAK,EAAE,MAAM,EAAC,QAAQ,GAAG;gBACtF,WAAW,IAAI,aAAa,CAAC,OAAO,CAAC,CAClC;YACN,8BAAC,oCAAQ,IAAC,SAAS,EAAE,kCAAM,CAAC,gBAAgB;gBAC1C,8BAAC,4BAAO,IAAC,IAAI,EAAE,SAAS,GAAI,CACnB,CACE,CACX,CACP,CAAC;AACJ,CAAC;AA/CD,kCA+CC;AAED,SAAS,aAAa,CAAC,OAAgB;IACrC,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,8BAAC,oCAAQ,IAAC,SAAS,EAAE,kCAAM,CAAC,YAAY,wBAA8B,CAAC;IAC9G,OAAO,8BAAC,oCAAQ,IAAC,SAAS,EAAE,kCAAM,CAAC,aAAa,IAAG,OAAO,CAAY,CAAC;AACzE,CAAC"}
|
@@ -3,25 +3,42 @@
|
|
3
3
|
justify-content: space-between;
|
4
4
|
align-items: center;
|
5
5
|
height: 40px;
|
6
|
-
padding: 0
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
6
|
+
padding: 0 16px;
|
7
|
+
}
|
8
|
+
.versionTimestamp {
|
9
|
+
min-width: fit-content;
|
10
|
+
margin-right: 2px;
|
11
|
+
text-align: right;
|
12
|
+
}
|
13
|
+
.versionUserAvatar {
|
14
|
+
padding: 0px 8px;
|
15
|
+
}
|
16
|
+
.laneIcon {
|
17
|
+
padding: 0px 4px;
|
18
|
+
}
|
19
|
+
.version {
|
20
|
+
max-width: 70%;
|
21
|
+
display: flex;
|
22
|
+
flex-direction: row;
|
23
|
+
align-content: space-between;
|
24
|
+
align-items: center;
|
25
|
+
}
|
26
|
+
.versionName {
|
27
|
+
padding: 0px 8px;
|
28
|
+
&.tag {
|
29
|
+
min-width: fit-content;
|
23
30
|
}
|
24
|
-
|
25
|
-
|
31
|
+
&.snap {
|
32
|
+
min-width: 20%;
|
26
33
|
}
|
27
34
|
}
|
35
|
+
|
36
|
+
.commitMessage,
|
37
|
+
.emptyMessage {
|
38
|
+
min-width: 50%;
|
39
|
+
padding: 0px 8px;
|
40
|
+
}
|
41
|
+
.emptyMessage {
|
42
|
+
font-style: italic;
|
43
|
+
color: var(--bit-text-color-light, #6c707c);
|
44
|
+
}
|
package/index.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export { VersionDropdown } from './version-dropdown';
|
1
|
+
export { VersionDropdown, DropdownComponentVersion } from './version-dropdown';
|
Binary file
|
package/package.json
CHANGED
@@ -1,34 +1,34 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/component.ui.version-dropdown",
|
3
|
-
"version": "0.0.
|
3
|
+
"version": "0.0.552",
|
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.552"
|
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",
|
15
14
|
"@teambit/design.ui.avatar": "0.1.2",
|
16
|
-
"@teambit/design.ui.surfaces.menu.link-item": "0.0.379",
|
17
15
|
"@teambit/evangelist.elements.icon": "1.0.2",
|
16
|
+
"@teambit/base-ui.loaders.skeleton": "1.0.1",
|
17
|
+
"@teambit/design.ui.surfaces.menu.link-item": "0.0.379",
|
18
18
|
"@teambit/evangelist.surfaces.dropdown": "1.0.2",
|
19
19
|
"@teambit/design.ui.styles.ellipsis": "0.0.347",
|
20
|
-
"@teambit/
|
20
|
+
"@teambit/design.ui.time-ago": "0.0.352",
|
21
|
+
"@teambit/lanes.ui.lanes": "0.0.65",
|
21
22
|
"@teambit/legacy-component-log": "0.0.392",
|
22
23
|
"@teambit/ui-foundation.ui.use-box.tab": "0.0.105",
|
23
|
-
"@teambit/component.ui.version-label": "0.0.493"
|
24
|
-
"@teambit/design.ui.time-ago": "0.0.352"
|
24
|
+
"@teambit/component.ui.version-label": "0.0.493"
|
25
25
|
},
|
26
26
|
"devDependencies": {
|
27
|
+
"@types/classnames": "2.2.11",
|
27
28
|
"@types/react": "^17.0.8",
|
28
29
|
"@testing-library/react": "11.2.6",
|
29
30
|
"chai": "4.3.0",
|
30
31
|
"@types/chai": "4.2.15",
|
31
|
-
"@types/classnames": "2.2.11",
|
32
32
|
"@types/mocha": "9.1.0",
|
33
33
|
"@types/testing-library__jest-dom": "5.9.5",
|
34
34
|
"@babel/runtime": "7.12.18",
|
@@ -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.552/dist/version-dropdown.composition.js')]
|
2
|
+
export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_ui_version-dropdown@0.0.552/dist/version-dropdown.docs.js')]
|
@@ -0,0 +1,96 @@
|
|
1
|
+
.simple {
|
2
|
+
cursor: pointer;
|
3
|
+
border: 1px solid var(--bit-border-color, #babec9);
|
4
|
+
border-radius: 6px;
|
5
|
+
transition: background-color 300ms ease-in-out;
|
6
|
+
height: 30px;
|
7
|
+
padding: 0 8px;
|
8
|
+
display: flex;
|
9
|
+
align-items: center;
|
10
|
+
box-sizing: border-box;
|
11
|
+
user-select: none;
|
12
|
+
|
13
|
+
> div {
|
14
|
+
margin-right: 5px;
|
15
|
+
}
|
16
|
+
&:hover {
|
17
|
+
background-color: var(--bit-bg-heavy);
|
18
|
+
}
|
19
|
+
|
20
|
+
> div {
|
21
|
+
max-width: 80px;
|
22
|
+
}
|
23
|
+
&.disabled {
|
24
|
+
cursor: default;
|
25
|
+
background-color: #ededed;
|
26
|
+
> span {
|
27
|
+
display: none;
|
28
|
+
}
|
29
|
+
}
|
30
|
+
.versionName {
|
31
|
+
padding: 0px 8px;
|
32
|
+
&.tag {
|
33
|
+
min-width: fit-content;
|
34
|
+
}
|
35
|
+
&.snap {
|
36
|
+
min-width: 20%;
|
37
|
+
}
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
.detailed {
|
42
|
+
display: flex;
|
43
|
+
align-items: center;
|
44
|
+
box-sizing: border-box;
|
45
|
+
padding: 0 8px;
|
46
|
+
height: 30px;
|
47
|
+
border-radius: 6px;
|
48
|
+
user-select: none;
|
49
|
+
transition: background-color 300ms ease-in-out;
|
50
|
+
border: 1px solid var(--bit-border-color, #babec9);
|
51
|
+
|
52
|
+
cursor: pointer;
|
53
|
+
> div {
|
54
|
+
margin-right: 5px;
|
55
|
+
}
|
56
|
+
&:hover {
|
57
|
+
background-color: var(--bit-bg-heavy);
|
58
|
+
}
|
59
|
+
> div {
|
60
|
+
max-width: 80px;
|
61
|
+
}
|
62
|
+
&.disabled {
|
63
|
+
cursor: default;
|
64
|
+
background-color: #ededed;
|
65
|
+
> span {
|
66
|
+
display: none;
|
67
|
+
}
|
68
|
+
}
|
69
|
+
.versionName {
|
70
|
+
padding: 0px 8px;
|
71
|
+
&.tag {
|
72
|
+
min-width: fit-content;
|
73
|
+
}
|
74
|
+
&.snap {
|
75
|
+
min-width: 20%;
|
76
|
+
}
|
77
|
+
}
|
78
|
+
.commitMessage,
|
79
|
+
.emptyMessage {
|
80
|
+
max-width: 50%;
|
81
|
+
padding: 0px 8px;
|
82
|
+
}
|
83
|
+
.emptyMessage {
|
84
|
+
font-style: italic;
|
85
|
+
color: var(--bit-text-color-light, #6c707c);
|
86
|
+
}
|
87
|
+
.author {
|
88
|
+
text-transform: capitalize;
|
89
|
+
min-width: fit-content;
|
90
|
+
}
|
91
|
+
.versionTimestamp {
|
92
|
+
min-width: fit-content;
|
93
|
+
margin-right: 2px;
|
94
|
+
text-align: right;
|
95
|
+
}
|
96
|
+
}
|
@@ -0,0 +1,83 @@
|
|
1
|
+
import React, { HTMLAttributes, useMemo } from 'react';
|
2
|
+
import { Ellipsis } from '@teambit/design.ui.styles.ellipsis';
|
3
|
+
import classNames from 'classnames';
|
4
|
+
import { Icon } from '@teambit/evangelist.elements.icon';
|
5
|
+
import { TimeAgo } from '@teambit/design.ui.time-ago';
|
6
|
+
import { UserAvatar } from '@teambit/design.ui.avatar';
|
7
|
+
import { DropdownComponentVersion } from './version-dropdown';
|
8
|
+
|
9
|
+
import styles from './version-dropdown-placeholder.module.scss';
|
10
|
+
|
11
|
+
export type VersionProps = {
|
12
|
+
tags: DropdownComponentVersion[];
|
13
|
+
snaps?: DropdownComponentVersion[];
|
14
|
+
currentVersion: string;
|
15
|
+
disabled?: boolean;
|
16
|
+
} & HTMLAttributes<HTMLDivElement>;
|
17
|
+
|
18
|
+
const getVersionDetailFromTags = (version, tags) => tags.find((tag) => tag.tag === version);
|
19
|
+
const getVersionDetailFromSnaps = (version, snaps) => (snaps || []).find((snap) => snap.hash === version);
|
20
|
+
const getVersionDetails = (version, tags, snaps) => {
|
21
|
+
if (version === 'workspace' || version === 'new') return { version };
|
22
|
+
return getVersionDetailFromTags(version, tags) || getVersionDetailFromSnaps(version, snaps);
|
23
|
+
};
|
24
|
+
|
25
|
+
export function SimpleVersion({ currentVersion, className, disabled, tags, snaps }: VersionProps) {
|
26
|
+
const versionDetails = useMemo(() => getVersionDetails(currentVersion, tags, snaps), [currentVersion, tags, snaps]);
|
27
|
+
|
28
|
+
return (
|
29
|
+
<div className={classNames(styles.simple, className, disabled && styles.disabled)}>
|
30
|
+
<Ellipsis
|
31
|
+
className={classNames(
|
32
|
+
styles.versionName,
|
33
|
+
versionDetails?.tag && styles.tag,
|
34
|
+
!versionDetails?.tag && styles.snap
|
35
|
+
)}
|
36
|
+
>
|
37
|
+
{currentVersion}
|
38
|
+
</Ellipsis>
|
39
|
+
<Icon of="fat-arrow-down" />
|
40
|
+
</div>
|
41
|
+
);
|
42
|
+
}
|
43
|
+
|
44
|
+
export function DetailedVersion({ currentVersion, className, disabled, snaps, tags }: VersionProps) {
|
45
|
+
const versionDetails = useMemo(() => getVersionDetails(currentVersion, tags, snaps), [currentVersion, tags, snaps]);
|
46
|
+
|
47
|
+
const timestamp = useMemo(
|
48
|
+
() => (versionDetails?.date ? new Date(parseInt(versionDetails.date)).toString() : new Date().toString()),
|
49
|
+
[versionDetails?.date]
|
50
|
+
);
|
51
|
+
|
52
|
+
const author = useMemo(() => {
|
53
|
+
return {
|
54
|
+
displayName: versionDetails?.username,
|
55
|
+
email: versionDetails?.email,
|
56
|
+
};
|
57
|
+
}, [versionDetails]);
|
58
|
+
|
59
|
+
return (
|
60
|
+
<div className={classNames(styles.detailed, className, disabled && styles.disabled)}>
|
61
|
+
<UserAvatar size={24} account={author} className={styles.versionUserAvatar} showTooltip={true} />
|
62
|
+
<Ellipsis
|
63
|
+
className={classNames(
|
64
|
+
styles.versionName,
|
65
|
+
versionDetails?.tag && styles.tag,
|
66
|
+
!versionDetails?.tag && styles.snap
|
67
|
+
)}
|
68
|
+
>
|
69
|
+
{currentVersion}
|
70
|
+
</Ellipsis>
|
71
|
+
{commitMessage(versionDetails?.message)}
|
72
|
+
<Ellipsis className={styles.versionTimestamp}>
|
73
|
+
<TimeAgo date={timestamp} />
|
74
|
+
</Ellipsis>
|
75
|
+
<Icon of="fat-arrow-down" />
|
76
|
+
</div>
|
77
|
+
);
|
78
|
+
}
|
79
|
+
|
80
|
+
function commitMessage(message?: string) {
|
81
|
+
if (!message || message === '') return <Ellipsis className={styles.emptyMessage}>No commit message</Ellipsis>;
|
82
|
+
return <Ellipsis className={styles.commitMessage}>{message}</Ellipsis>;
|
83
|
+
}
|
@@ -6,7 +6,6 @@
|
|
6
6
|
align-items: center;
|
7
7
|
}
|
8
8
|
.menu {
|
9
|
-
width: 350px;
|
10
9
|
padding: 0;
|
11
10
|
right: 0;
|
12
11
|
// top: 43px;
|
@@ -36,7 +35,7 @@
|
|
36
35
|
justify-content: space-between;
|
37
36
|
align-items: center;
|
38
37
|
height: 40px;
|
39
|
-
padding: 0
|
38
|
+
padding: 0 16px;
|
40
39
|
|
41
40
|
&.localVersion {
|
42
41
|
border-bottom: 1px solid var(--bit-border-color-lightest, #ededed);
|
@@ -59,24 +58,7 @@
|
|
59
58
|
}
|
60
59
|
.versionName {
|
61
60
|
padding: 0px 8px;
|
62
|
-
|
63
|
-
}
|
64
|
-
|
65
|
-
.placeholder {
|
66
|
-
display: flex;
|
67
|
-
align-items: center;
|
68
|
-
box-sizing: border-box;
|
69
|
-
padding: 0 8px;
|
70
|
-
height: 30px;
|
71
|
-
border-radius: 6px;
|
72
|
-
user-select: none;
|
73
|
-
transition: background-color 300ms ease-in-out;
|
74
|
-
border: 1px solid var(--bit-border-color, #babec9);
|
75
|
-
> span {
|
76
|
-
display: none;
|
77
|
-
}
|
78
|
-
> div {
|
79
|
-
max-width: 80px;
|
61
|
+
min-width: fit-content;
|
80
62
|
}
|
81
63
|
}
|
82
64
|
|
@@ -107,6 +89,8 @@
|
|
107
89
|
line-height: 14px;
|
108
90
|
border-bottom: 1px solid var(--bit-border-color-lightest, #ededed);
|
109
91
|
overflow-x: auto;
|
92
|
+
margin-top: 8px;
|
93
|
+
|
110
94
|
.tab {
|
111
95
|
font-weight: bold;
|
112
96
|
padding-top: 4px;
|
package/version-dropdown.tsx
CHANGED
@@ -1,19 +1,17 @@
|
|
1
|
-
import {
|
1
|
+
import React, { useState } from 'react';
|
2
2
|
import { MenuLinkItem } from '@teambit/design.ui.surfaces.menu.link-item';
|
3
3
|
import { Dropdown } from '@teambit/evangelist.surfaces.dropdown';
|
4
|
-
|
5
|
-
import { Ellipsis } from '@teambit/design.ui.styles.ellipsis';
|
6
4
|
import { Tab } from '@teambit/ui-foundation.ui.use-box.tab';
|
7
5
|
import { LegacyComponentLog } from '@teambit/legacy-component-log';
|
8
6
|
import { UserAvatar } from '@teambit/design.ui.avatar';
|
9
7
|
import { LineSkeleton } from '@teambit/base-ui.loaders.skeleton';
|
10
8
|
import { LaneModel } from '@teambit/lanes.ui.lanes';
|
11
9
|
import classNames from 'classnames';
|
12
|
-
import React, { useState } from 'react';
|
13
10
|
|
14
11
|
import styles from './version-dropdown.module.scss';
|
15
12
|
import { VersionInfo } from './version-info';
|
16
13
|
import { LaneInfo } from './lane-info';
|
14
|
+
import { DetailedVersion, SimpleVersion } from './version-dropdown-placeholder';
|
17
15
|
|
18
16
|
export const LOCAL_VERSION = 'workspace';
|
19
17
|
|
@@ -24,10 +22,16 @@ export type VersionDropdownProps = {
|
|
24
22
|
snaps?: DropdownComponentVersion[];
|
25
23
|
lanes?: LaneModel[];
|
26
24
|
localVersion?: boolean;
|
27
|
-
currentVersion
|
25
|
+
currentVersion: string;
|
28
26
|
currentLane?: LaneModel;
|
29
27
|
latestVersion?: string;
|
30
28
|
loading?: boolean;
|
29
|
+
overrideVersionHref?: (version: string) => string;
|
30
|
+
placeholderClassName?: string;
|
31
|
+
dropdownClassName?: string;
|
32
|
+
menuClassName?: string;
|
33
|
+
showVersionDetails?: boolean;
|
34
|
+
disabled?: boolean;
|
31
35
|
} & React.HTMLAttributes<HTMLDivElement>;
|
32
36
|
|
33
37
|
export function VersionDropdown({
|
@@ -39,32 +43,58 @@ export function VersionDropdown({
|
|
39
43
|
localVersion,
|
40
44
|
loading,
|
41
45
|
currentLane,
|
46
|
+
overrideVersionHref,
|
47
|
+
className,
|
48
|
+
placeholderClassName,
|
49
|
+
dropdownClassName,
|
50
|
+
menuClassName,
|
51
|
+
showVersionDetails,
|
52
|
+
disabled,
|
53
|
+
...rest
|
42
54
|
}: VersionDropdownProps) {
|
43
55
|
const [key, setKey] = useState(0);
|
44
56
|
|
45
57
|
const singleVersion = (snaps || []).concat(tags).length < 2 && !localVersion;
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
58
|
+
const placeholder = (showVersionDetails && (
|
59
|
+
<DetailedVersion
|
60
|
+
disabled={disabled}
|
61
|
+
snaps={snaps}
|
62
|
+
tags={tags}
|
63
|
+
className={placeholderClassName}
|
64
|
+
currentVersion={currentVersion}
|
65
|
+
/>
|
66
|
+
)) || (
|
67
|
+
<SimpleVersion
|
68
|
+
disabled={disabled}
|
69
|
+
snaps={snaps}
|
70
|
+
tags={tags}
|
71
|
+
className={placeholderClassName}
|
72
|
+
currentVersion={currentVersion}
|
73
|
+
/>
|
74
|
+
);
|
75
|
+
if (disabled || (singleVersion && !loading)) {
|
76
|
+
return <div className={classNames(styles.noVersions, className)}>{placeholder}</div>;
|
53
77
|
}
|
54
78
|
|
55
79
|
return (
|
56
|
-
<div className={styles.versionDropdown}>
|
80
|
+
<div {...rest} className={classNames(styles.versionDropdown, className)}>
|
57
81
|
<Dropdown
|
58
|
-
className={styles.dropdown}
|
59
|
-
dropClass={styles.menu}
|
82
|
+
className={classNames(styles.dropdown, dropdownClassName)}
|
83
|
+
dropClass={classNames(styles.menu, menuClassName)}
|
60
84
|
clickToggles={false}
|
61
85
|
clickPlaceholderToggles={true}
|
62
86
|
onChange={(_e, open) => open && setKey((x) => x + 1)} // to reset menu to initial state when toggling
|
63
|
-
|
87
|
+
PlaceholderComponent={({ children, ...other }) => (
|
88
|
+
<div {...other} className={placeholderClassName}>
|
89
|
+
{children}
|
90
|
+
</div>
|
91
|
+
)}
|
92
|
+
placeholder={placeholder}
|
64
93
|
>
|
65
94
|
{loading && <LineSkeleton className={styles.loading} count={6} />}
|
66
95
|
{loading || (
|
67
96
|
<VersionMenu
|
97
|
+
className={menuClassName}
|
68
98
|
key={key}
|
69
99
|
tags={tags}
|
70
100
|
snaps={snaps}
|
@@ -73,6 +103,8 @@ export function VersionDropdown({
|
|
73
103
|
latestVersion={latestVersion}
|
74
104
|
localVersion={localVersion}
|
75
105
|
currentLane={currentLane}
|
106
|
+
overrideVersionHref={overrideVersionHref}
|
107
|
+
showVersionDetails={showVersionDetails}
|
76
108
|
/>
|
77
109
|
)}
|
78
110
|
</Dropdown>
|
@@ -80,14 +112,6 @@ export function VersionDropdown({
|
|
80
112
|
);
|
81
113
|
}
|
82
114
|
|
83
|
-
function VersionPlaceholder({ currentVersion, className }: { currentVersion?: string; className?: string }) {
|
84
|
-
return (
|
85
|
-
<div className={classNames(styles.placeholder, className)}>
|
86
|
-
<Ellipsis>{currentVersion}</Ellipsis>
|
87
|
-
<Icon of="fat-arrow-down" />
|
88
|
-
</div>
|
89
|
-
);
|
90
|
-
}
|
91
115
|
type VersionMenuProps = {
|
92
116
|
tags?: DropdownComponentVersion[];
|
93
117
|
snaps?: DropdownComponentVersion[];
|
@@ -96,6 +120,8 @@ type VersionMenuProps = {
|
|
96
120
|
currentVersion?: string;
|
97
121
|
latestVersion?: string;
|
98
122
|
currentLane?: LaneModel;
|
123
|
+
overrideVersionHref?: (version: string) => string;
|
124
|
+
showVersionDetails?: boolean;
|
99
125
|
} & React.HTMLAttributes<HTMLDivElement>;
|
100
126
|
|
101
127
|
const VERSION_TAB_NAMES = ['TAG', 'SNAP', 'LANE'] as const;
|
@@ -108,6 +134,8 @@ function VersionMenu({
|
|
108
134
|
localVersion,
|
109
135
|
latestVersion,
|
110
136
|
currentLane,
|
137
|
+
overrideVersionHref,
|
138
|
+
showVersionDetails,
|
111
139
|
...rest
|
112
140
|
}: VersionMenuProps) {
|
113
141
|
const tabs = VERSION_TAB_NAMES.map((name) => {
|
@@ -125,7 +153,7 @@ function VersionMenu({
|
|
125
153
|
if (currentLane) return tabs.findIndex((tab) => tab.name === 'LANE');
|
126
154
|
if ((snaps || []).some((snap) => snap.version === currentVersion))
|
127
155
|
return tabs.findIndex((tab) => tab.name === 'SNAP');
|
128
|
-
return
|
156
|
+
return 0;
|
129
157
|
};
|
130
158
|
|
131
159
|
const [activeTabIndex, setActiveTab] = useState<number>(getActiveTabIndex());
|
@@ -178,6 +206,8 @@ function VersionMenu({
|
|
178
206
|
key={payload.version}
|
179
207
|
currentVersion={currentVersion}
|
180
208
|
latestVersion={latestVersion}
|
209
|
+
overrideVersionHref={overrideVersionHref}
|
210
|
+
showDetails={showVersionDetails}
|
181
211
|
{...payload}
|
182
212
|
></VersionInfo>
|
183
213
|
))}
|
@@ -3,25 +3,42 @@
|
|
3
3
|
justify-content: space-between;
|
4
4
|
align-items: center;
|
5
5
|
height: 40px;
|
6
|
-
padding: 0
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
6
|
+
padding: 0 16px;
|
7
|
+
}
|
8
|
+
.versionTimestamp {
|
9
|
+
min-width: fit-content;
|
10
|
+
margin-right: 2px;
|
11
|
+
text-align: right;
|
12
|
+
}
|
13
|
+
.versionUserAvatar {
|
14
|
+
padding: 0px 8px;
|
15
|
+
}
|
16
|
+
.laneIcon {
|
17
|
+
padding: 0px 4px;
|
18
|
+
}
|
19
|
+
.version {
|
20
|
+
max-width: 70%;
|
21
|
+
display: flex;
|
22
|
+
flex-direction: row;
|
23
|
+
align-content: space-between;
|
24
|
+
align-items: center;
|
25
|
+
}
|
26
|
+
.versionName {
|
27
|
+
padding: 0px 8px;
|
28
|
+
&.tag {
|
29
|
+
min-width: fit-content;
|
23
30
|
}
|
24
|
-
|
25
|
-
|
31
|
+
&.snap {
|
32
|
+
min-width: 20%;
|
26
33
|
}
|
27
34
|
}
|
35
|
+
|
36
|
+
.commitMessage,
|
37
|
+
.emptyMessage {
|
38
|
+
min-width: 50%;
|
39
|
+
padding: 0px 8px;
|
40
|
+
}
|
41
|
+
.emptyMessage {
|
42
|
+
font-style: italic;
|
43
|
+
color: var(--bit-text-color-light, #6c707c);
|
44
|
+
}
|
@@ -4,6 +4,7 @@ import { VersionLabel } from '@teambit/component.ui.version-label';
|
|
4
4
|
import React, { useMemo, useRef, useEffect } from 'react';
|
5
5
|
import { UserAvatar } from '@teambit/design.ui.avatar';
|
6
6
|
import { Ellipsis } from '@teambit/design.ui.styles.ellipsis';
|
7
|
+
import classNames from 'classnames';
|
7
8
|
|
8
9
|
import { DropdownComponentVersion } from '../version-dropdown';
|
9
10
|
import styles from './version-info.module.scss';
|
@@ -11,9 +12,22 @@ import styles from './version-info.module.scss';
|
|
11
12
|
export type VersionInfoProps = DropdownComponentVersion & {
|
12
13
|
currentVersion?: string;
|
13
14
|
latestVersion?: string;
|
15
|
+
overrideVersionHref?: (version: string) => string;
|
16
|
+
showDetails?: boolean;
|
14
17
|
};
|
15
18
|
|
16
|
-
export function VersionInfo({
|
19
|
+
export function VersionInfo({
|
20
|
+
version,
|
21
|
+
currentVersion,
|
22
|
+
latestVersion,
|
23
|
+
date,
|
24
|
+
username,
|
25
|
+
email,
|
26
|
+
overrideVersionHref,
|
27
|
+
showDetails,
|
28
|
+
message,
|
29
|
+
tag,
|
30
|
+
}: VersionInfoProps) {
|
17
31
|
const isCurrent = version === currentVersion;
|
18
32
|
const author = useMemo(() => {
|
19
33
|
return {
|
@@ -26,20 +40,32 @@ export function VersionInfo({ version, currentVersion, latestVersion, date, user
|
|
26
40
|
const currentVersionRef = useRef<HTMLDivElement>(null);
|
27
41
|
useEffect(() => {
|
28
42
|
if (isCurrent) {
|
29
|
-
currentVersionRef.current?.scrollIntoView();
|
43
|
+
currentVersionRef.current?.scrollIntoView({ block: 'nearest', behavior: 'smooth' });
|
30
44
|
}
|
31
45
|
}, [isCurrent]);
|
32
46
|
|
47
|
+
const href = overrideVersionHref ? overrideVersionHref(version) : `?version=${version}`;
|
48
|
+
|
33
49
|
return (
|
34
50
|
<div ref={currentVersionRef}>
|
35
|
-
<MenuLinkItem isActive={() => isCurrent} href={
|
51
|
+
<MenuLinkItem isActive={() => isCurrent} href={href} className={styles.versionRow}>
|
36
52
|
<div className={styles.version}>
|
37
53
|
<UserAvatar size={24} account={author} className={styles.versionUserAvatar} showTooltip={true} />
|
38
|
-
<Ellipsis className={styles.versionName}>
|
54
|
+
<Ellipsis className={classNames(styles.versionName, tag && styles.tag, !tag && styles.snap)}>
|
55
|
+
{version}
|
56
|
+
</Ellipsis>
|
39
57
|
{version === latestVersion && <VersionLabel className={styles.label} status="latest" />}
|
58
|
+
{showDetails && commitMessage(message)}
|
40
59
|
</div>
|
41
|
-
<
|
60
|
+
<Ellipsis className={styles.versionTimestamp}>
|
61
|
+
<TimeAgo date={timestamp} />
|
62
|
+
</Ellipsis>
|
42
63
|
</MenuLinkItem>
|
43
64
|
</div>
|
44
65
|
);
|
45
66
|
}
|
67
|
+
|
68
|
+
function commitMessage(message?: string) {
|
69
|
+
if (!message || message === '') return <Ellipsis className={styles.emptyMessage}>No commit message</Ellipsis>;
|
70
|
+
return <Ellipsis className={styles.commitMessage}>{message}</Ellipsis>;
|
71
|
+
}
|
Binary file
|