@teambit/component.ui.version-dropdown 0.0.0-0aa660598a05d04f2b124cb0ae8b4a1c05b66d78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +4 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/lane-info/index.d.ts +2 -0
- package/dist/lane-info/index.js +6 -0
- package/dist/lane-info/index.js.map +1 -0
- package/dist/lane-info/lane-info.d.ts +6 -0
- package/dist/lane-info/lane-info.js +20 -0
- package/dist/lane-info/lane-info.js.map +1 -0
- package/dist/lane-info/lane-info.module.scss +27 -0
- package/dist/preview-1753890535938.js +7 -0
- package/dist/version-dropdown-placeholder.d.ts +17 -0
- package/dist/version-dropdown-placeholder.js +92 -0
- package/dist/version-dropdown-placeholder.js.map +1 -0
- package/dist/version-dropdown-placeholder.module.scss +50 -0
- package/dist/version-dropdown.composition.d.ts +3 -0
- package/dist/version-dropdown.composition.js +28 -0
- package/dist/version-dropdown.composition.js.map +1 -0
- package/dist/version-dropdown.d.ts +53 -0
- package/dist/version-dropdown.docs.d.ts +35 -0
- package/dist/version-dropdown.docs.js +67 -0
- package/dist/version-dropdown.docs.js.map +1 -0
- package/dist/version-dropdown.js +153 -0
- package/dist/version-dropdown.js.map +1 -0
- package/dist/version-dropdown.module.scss +128 -0
- package/dist/version-dropdown.spec.d.ts +1 -0
- package/dist/version-dropdown.spec.js +33 -0
- package/dist/version-dropdown.spec.js.map +1 -0
- package/dist/version-info/index.d.ts +2 -0
- package/dist/version-info/index.js +6 -0
- package/dist/version-info/index.js.map +1 -0
- package/dist/version-info/version-info.d.ts +10 -0
- package/dist/version-info/version-info.js +79 -0
- package/dist/version-info/version-info.js.map +1 -0
- package/dist/version-info/version-info.module.scss +54 -0
- package/index.ts +4 -0
- package/lane-info/index.ts +2 -0
- package/lane-info/lane-info.module.scss +27 -0
- package/lane-info/lane-info.tsx +23 -0
- package/package.json +71 -0
- package/types/asset.d.ts +29 -0
- package/types/style.d.ts +42 -0
- package/version-dropdown-placeholder.module.scss +50 -0
- package/version-dropdown-placeholder.tsx +109 -0
- package/version-dropdown.composition.tsx +36 -0
- package/version-dropdown.docs.tsx +68 -0
- package/version-dropdown.module.scss +128 -0
- package/version-dropdown.spec.tsx +29 -0
- package/version-dropdown.tsx +331 -0
- package/version-info/index.ts +2 -0
- package/version-info/version-info.module.scss +54 -0
- package/version-info/version-info.tsx +87 -0
@@ -0,0 +1,153 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
25
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
26
|
+
var t = {};
|
27
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
28
|
+
t[p] = s[p];
|
29
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
30
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
31
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
32
|
+
t[p[i]] = s[p[i]];
|
33
|
+
}
|
34
|
+
return t;
|
35
|
+
};
|
36
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
37
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
38
|
+
};
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
40
|
+
exports.VersionDropdown = exports.LOCAL_VERSION = void 0;
|
41
|
+
const react_1 = __importStar(require("react"));
|
42
|
+
const design_ui_surfaces_menu_link_item_1 = require("@teambit/design.ui.surfaces.menu.link-item");
|
43
|
+
const evangelist_surfaces_dropdown_1 = require("@teambit/evangelist.surfaces.dropdown");
|
44
|
+
const ui_foundation_ui_use_box_tab_1 = require("@teambit/ui-foundation.ui.use-box.tab");
|
45
|
+
const design_ui_avatar_1 = require("@teambit/design.ui.avatar");
|
46
|
+
const base_ui_loaders_skeleton_1 = require("@teambit/base-ui.loaders.skeleton");
|
47
|
+
const classnames_1 = __importDefault(require("classnames"));
|
48
|
+
const version_dropdown_module_scss_1 = __importDefault(require("./version-dropdown.module.scss"));
|
49
|
+
const version_info_1 = require("./version-info");
|
50
|
+
const lane_info_1 = require("./lane-info");
|
51
|
+
const version_dropdown_placeholder_1 = require("./version-dropdown-placeholder");
|
52
|
+
exports.LOCAL_VERSION = 'workspace';
|
53
|
+
exports.VersionDropdown = react_1.default.memo(_VersionDropdown);
|
54
|
+
const VersionMenu = react_1.default.memo(_VersionMenu);
|
55
|
+
function _VersionDropdown(_a) {
|
56
|
+
var { currentVersion, latestVersion, localVersion, useCurrentVersionLog, hasMoreVersions, loading, overrideVersionHref, className, placeholderClassName, getActiveTabIndex, dropdownClassName, menuClassName, showVersionDetails = true, disabled, PlaceholderComponent: _PlaceholderComponent, currentLane, useComponentVersions, lanes } = _a, rest = __rest(_a, ["currentVersion", "latestVersion", "localVersion", "useCurrentVersionLog", "hasMoreVersions", "loading", "overrideVersionHref", "className", "placeholderClassName", "getActiveTabIndex", "dropdownClassName", "menuClassName", "showVersionDetails", "disabled", "PlaceholderComponent", "currentLane", "useComponentVersions", "lanes"]);
|
57
|
+
const [key, setKey] = (0, react_1.useState)(0);
|
58
|
+
const singleVersion = !hasMoreVersions;
|
59
|
+
const [open, setOpen] = (0, react_1.useState)(false);
|
60
|
+
react_1.default.useEffect(() => {
|
61
|
+
if (loading && open) {
|
62
|
+
setOpen(false);
|
63
|
+
}
|
64
|
+
}, [loading]);
|
65
|
+
const handlePlaceholderClicked = (e) => {
|
66
|
+
if (loading)
|
67
|
+
return;
|
68
|
+
if (e.target === e.currentTarget) {
|
69
|
+
setOpen((o) => !o);
|
70
|
+
}
|
71
|
+
};
|
72
|
+
const defaultPlaceholder = (react_1.default.createElement(version_dropdown_placeholder_1.SimpleVersion, { useCurrentVersionLog: useCurrentVersionLog, disabled: disabled, className: placeholderClassName, currentVersion: currentVersion, onClick: handlePlaceholderClicked, hasMoreVersions: hasMoreVersions, loading: loading, showFullVersion: currentVersion === 'workspace' }));
|
73
|
+
const PlaceholderComponent = _PlaceholderComponent ? (react_1.default.createElement(_PlaceholderComponent, { useCurrentVersionLog: useCurrentVersionLog, disabled: disabled, className: placeholderClassName, currentVersion: currentVersion, onClick: handlePlaceholderClicked, hasMoreVersions: hasMoreVersions, loading: loading, showFullVersion: currentVersion === 'workspace' })) : (defaultPlaceholder);
|
74
|
+
if (disabled || (singleVersion && !loading)) {
|
75
|
+
return react_1.default.createElement("div", { className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.noVersions, className) }, PlaceholderComponent);
|
76
|
+
}
|
77
|
+
return (react_1.default.createElement("div", Object.assign({}, rest, { className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.versionDropdown, className) }),
|
78
|
+
react_1.default.createElement(evangelist_surfaces_dropdown_1.Dropdown, { className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.dropdown, dropdownClassName), dropClass: (0, classnames_1.default)(version_dropdown_module_scss_1.default.menu, menuClassName), open: open, onClick: handlePlaceholderClicked, onClickOutside: () => setOpen(false), onChange: (_e, _open) => _open && setKey((x) => x + 1), PlaceholderComponent: (_a) => {
|
79
|
+
var { children } = _a, other = __rest(_a, ["children"]);
|
80
|
+
return (react_1.default.createElement("div", Object.assign({}, other, { className: placeholderClassName, onClick: handlePlaceholderClicked }), children));
|
81
|
+
}, placeholder: PlaceholderComponent },
|
82
|
+
react_1.default.createElement(VersionMenu, { className: menuClassName, key: key, currentVersion: currentVersion, latestVersion: latestVersion, localVersion: localVersion, overrideVersionHref: overrideVersionHref, showVersionDetails: showVersionDetails, currentLane: currentLane, getActiveTabIndex: getActiveTabIndex, lanes: lanes, useVersions: useComponentVersions, onVersionClicked: () => setOpen(false), open: open }))));
|
83
|
+
}
|
84
|
+
const defaultActiveTabIndex = (currentVersion, tabs = [], tags, snaps) => {
|
85
|
+
if ((snaps || []).some((snap) => snap.version === currentVersion))
|
86
|
+
return tabs.findIndex((tab) => tab.name === 'SNAP');
|
87
|
+
return 0;
|
88
|
+
};
|
89
|
+
const VERSION_TAB_NAMES = ['TAG', 'SNAP', 'LANE'];
|
90
|
+
function _VersionMenu(_a) {
|
91
|
+
var _b, _c;
|
92
|
+
var { currentVersion, localVersion, latestVersion, overrideVersionHref, showVersionDetails, useVersions, currentLane, lanes, getActiveTabIndex = defaultActiveTabIndex, loading: loadingFromProps, open, onVersionClicked } = _a, rest = __rest(_a, ["currentVersion", "localVersion", "latestVersion", "overrideVersionHref", "showVersionDetails", "useVersions", "currentLane", "lanes", "getActiveTabIndex", "loading", "open", "onVersionClicked"]);
|
93
|
+
const { snaps, tags, loading: loadingVersions } = (useVersions === null || useVersions === void 0 ? void 0 : useVersions()) || {};
|
94
|
+
const loading = loadingFromProps || loadingVersions;
|
95
|
+
const tabs = react_1.default.useMemo(() => VERSION_TAB_NAMES.map((name) => {
|
96
|
+
switch (name) {
|
97
|
+
case 'SNAP':
|
98
|
+
return { name, payload: snaps || [] };
|
99
|
+
case 'LANE':
|
100
|
+
return { name, payload: lanes || [] };
|
101
|
+
default:
|
102
|
+
return { name, payload: tags || [] };
|
103
|
+
}
|
104
|
+
}).filter((tab) => tab.payload.length > 0), [snaps === null || snaps === void 0 ? void 0 : snaps.length, tags === null || tags === void 0 ? void 0 : tags.length, lanes === null || lanes === void 0 ? void 0 : lanes.length, loading]);
|
105
|
+
const [activeTabIndex, setActiveTab] = react_1.default.useState(getActiveTabIndex(currentVersion, tabs, tags, snaps, currentLane));
|
106
|
+
const activeTab = react_1.default.useMemo(() => (activeTabIndex !== undefined ? tabs[activeTabIndex] : undefined), [activeTabIndex, tabs]);
|
107
|
+
react_1.default.useEffect(() => {
|
108
|
+
if (!currentLane)
|
109
|
+
return;
|
110
|
+
if (tabs.length === 0)
|
111
|
+
return;
|
112
|
+
const _activeTabIndex = getActiveTabIndex(currentVersion, tabs, tags, snaps, currentLane);
|
113
|
+
if (_activeTabIndex !== activeTabIndex)
|
114
|
+
setActiveTab(_activeTabIndex);
|
115
|
+
}, [currentLane, tabs.length, tags === null || tags === void 0 ? void 0 : tags.length, snaps === null || snaps === void 0 ? void 0 : snaps.length, currentVersion, loading]);
|
116
|
+
const multipleTabs = tabs.length > 1;
|
117
|
+
const message = multipleTabs
|
118
|
+
? 'Switch to view tags, snaps, or lanes'
|
119
|
+
: `Switch between ${(_b = tabs[0]) === null || _b === void 0 ? void 0 : _b.name.toLocaleLowerCase()}s`;
|
120
|
+
const showTab = activeTabIndex !== undefined && ((_c = tabs[activeTabIndex]) === null || _c === void 0 ? void 0 : _c.payload.length) > 0;
|
121
|
+
const _rowRenderer = react_1.default.useCallback(function VersionRowRenderer({ index }) {
|
122
|
+
const { name, payload = [] } = activeTab || {};
|
123
|
+
const item = payload[index];
|
124
|
+
if (!item)
|
125
|
+
return null;
|
126
|
+
if (name === 'LANE') {
|
127
|
+
const lane = item;
|
128
|
+
return react_1.default.createElement(lane_info_1.LaneInfo, Object.assign({ key: lane.id.toString(), currentLane: currentLane }, lane));
|
129
|
+
}
|
130
|
+
const version = item;
|
131
|
+
return (react_1.default.createElement(version_info_1.VersionInfo, Object.assign({ key: version.version, currentVersion: currentVersion, latestVersion: latestVersion, overrideVersionHref: overrideVersionHref, showDetails: showVersionDetails, onVersionClicked: onVersionClicked }, version)));
|
132
|
+
}, [activeTab, currentVersion, latestVersion, showVersionDetails, currentLane === null || currentLane === void 0 ? void 0 : currentLane.id.toString(), showTab]);
|
133
|
+
const rowRenderer = react_1.default.useMemo(() => (showTab && activeTab ? _rowRenderer : () => null), [showTab, activeTab, _rowRenderer]);
|
134
|
+
const ActiveTab = react_1.default.useMemo(() => {
|
135
|
+
return activeTab === null || activeTab === void 0 ? void 0 : activeTab.payload.map((payload, index) => {
|
136
|
+
return rowRenderer({ index });
|
137
|
+
});
|
138
|
+
}, [activeTab]);
|
139
|
+
return (react_1.default.createElement("div", Object.assign({}, rest, { className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.versionMenuContainer, !open && version_dropdown_module_scss_1.default.hide) }),
|
140
|
+
react_1.default.createElement("div", { className: version_dropdown_module_scss_1.default.top },
|
141
|
+
loading && react_1.default.createElement(base_ui_loaders_skeleton_1.LineSkeleton, { count: 6, className: version_dropdown_module_scss_1.default.loader }),
|
142
|
+
!loading && react_1.default.createElement("div", { className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.titleContainer, version_dropdown_module_scss_1.default.title) }, message),
|
143
|
+
!loading && localVersion && (react_1.default.createElement(design_ui_surfaces_menu_link_item_1.MenuLinkItem, { href: '?', active: currentVersion === exports.LOCAL_VERSION, className: (0, classnames_1.default)(version_dropdown_module_scss_1.default.versionRow, version_dropdown_module_scss_1.default.localVersion), onClick: onVersionClicked },
|
144
|
+
react_1.default.createElement("div", { className: version_dropdown_module_scss_1.default.version },
|
145
|
+
react_1.default.createElement(design_ui_avatar_1.UserAvatar, { size: 24, account: {}, className: version_dropdown_module_scss_1.default.versionUserAvatar }),
|
146
|
+
react_1.default.createElement("span", { className: version_dropdown_module_scss_1.default.versionName }, exports.LOCAL_VERSION))))),
|
147
|
+
react_1.default.createElement("div", { className: (0, classnames_1.default)(multipleTabs && version_dropdown_module_scss_1.default.tabs) }, multipleTabs &&
|
148
|
+
tabs.map(({ name }, index) => {
|
149
|
+
return (react_1.default.createElement(ui_foundation_ui_use_box_tab_1.Tab, { className: version_dropdown_module_scss_1.default.tab, key: name, isActive: activeTabIndex === index, onClick: () => setActiveTab(index) }, name));
|
150
|
+
})),
|
151
|
+
react_1.default.createElement("div", { className: version_dropdown_module_scss_1.default.versionContainerRoot }, ActiveTab)));
|
152
|
+
}
|
153
|
+
//# sourceMappingURL=version-dropdown.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"version-dropdown.js","sourceRoot":"","sources":["../version-dropdown.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,128 @@
|
|
1
|
+
@import '@teambit/ui-foundation.ui.constants.z-indexes/z-indexes.module.scss';
|
2
|
+
|
3
|
+
.versionDropdown {
|
4
|
+
height: 100%;
|
5
|
+
|
6
|
+
> div {
|
7
|
+
height: 100%;
|
8
|
+
display: flex;
|
9
|
+
align-items: center;
|
10
|
+
}
|
11
|
+
.menu {
|
12
|
+
padding: 0;
|
13
|
+
right: 0;
|
14
|
+
// top: 43px;
|
15
|
+
font-size: var(--bit-p-xs);
|
16
|
+
border-radius: 6px;
|
17
|
+
z-index: $modal-z-index;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
|
21
|
+
.title {
|
22
|
+
padding: 16px;
|
23
|
+
padding-bottom: 12px;
|
24
|
+
border-bottom: 1px solid var(--bit-border-color-lightest, #ededed);
|
25
|
+
}
|
26
|
+
|
27
|
+
.titleContainer {
|
28
|
+
margin-bottom: 2px;
|
29
|
+
}
|
30
|
+
|
31
|
+
.versionContainerRoot {
|
32
|
+
max-height: 240px;
|
33
|
+
overflow-y: scroll;
|
34
|
+
padding-bottom: 8px;
|
35
|
+
position: relative;
|
36
|
+
}
|
37
|
+
|
38
|
+
.versionRow {
|
39
|
+
display: flex;
|
40
|
+
justify-content: space-between;
|
41
|
+
align-items: center;
|
42
|
+
height: 40px;
|
43
|
+
padding: 0 16px;
|
44
|
+
|
45
|
+
&:hover {
|
46
|
+
background-color: var(--surface-hover-color, #eceaff) !important;
|
47
|
+
}
|
48
|
+
|
49
|
+
&.localVersion {
|
50
|
+
border-bottom: 1px solid var(--bit-border-color-lightest, #ededed);
|
51
|
+
}
|
52
|
+
.versionTimestamp {
|
53
|
+
margin-right: 2px;
|
54
|
+
}
|
55
|
+
.versionUserAvatar {
|
56
|
+
padding: 0px 8px;
|
57
|
+
}
|
58
|
+
.laneIcon {
|
59
|
+
padding: 0px 4px;
|
60
|
+
}
|
61
|
+
.version {
|
62
|
+
width: 60%;
|
63
|
+
display: flex;
|
64
|
+
flex-direction: row;
|
65
|
+
align-content: space-between;
|
66
|
+
align-items: center;
|
67
|
+
}
|
68
|
+
.versionName {
|
69
|
+
padding: 0px 8px;
|
70
|
+
min-width: fit-content;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
|
74
|
+
.withVersions {
|
75
|
+
cursor: pointer;
|
76
|
+
> div {
|
77
|
+
margin-right: 5px;
|
78
|
+
}
|
79
|
+
> span {
|
80
|
+
display: unset;
|
81
|
+
}
|
82
|
+
&:hover {
|
83
|
+
background-color: var(--bit-bg-heavy);
|
84
|
+
}
|
85
|
+
[data-open='true'] & {
|
86
|
+
transition:
|
87
|
+
color 300ms,
|
88
|
+
background-color 300ms ease-in-out;
|
89
|
+
background-color: var(--bit-bg-color, #ffffff);
|
90
|
+
color: var(--bit-accent-color, #6c5ce7);
|
91
|
+
&:hover {
|
92
|
+
background-color: var(--bit-bg-color, #ffffff);
|
93
|
+
}
|
94
|
+
}
|
95
|
+
}
|
96
|
+
|
97
|
+
.tabs {
|
98
|
+
display: flex;
|
99
|
+
padding: 0 24px;
|
100
|
+
line-height: 14px;
|
101
|
+
border-bottom: 1px solid var(--bit-border-color-lightest, #ededed);
|
102
|
+
overflow-x: auto;
|
103
|
+
margin-top: 8px;
|
104
|
+
|
105
|
+
.tab {
|
106
|
+
font-weight: bold;
|
107
|
+
padding-top: 4px;
|
108
|
+
font-size: 12px;
|
109
|
+
}
|
110
|
+
}
|
111
|
+
|
112
|
+
.loading {
|
113
|
+
color: var(--bit-bg-dent, #f6f6f6);
|
114
|
+
}
|
115
|
+
|
116
|
+
.loader {
|
117
|
+
color: var(--bit-bg-dent, #f6f6f6);
|
118
|
+
> div {
|
119
|
+
padding: 8px 0px;
|
120
|
+
}
|
121
|
+
}
|
122
|
+
|
123
|
+
.versionMenuContainer {
|
124
|
+
display: initial;
|
125
|
+
&.hide {
|
126
|
+
display: none;
|
127
|
+
}
|
128
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -0,0 +1,33 @@
|
|
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
|
+
const react_1 = __importDefault(require("react"));
|
7
|
+
const react_2 = require("@testing-library/react");
|
8
|
+
const chai_1 = require("chai");
|
9
|
+
const version_dropdown_composition_1 = require("./version-dropdown.composition");
|
10
|
+
describe('version dropdown tests', () => {
|
11
|
+
/**
|
12
|
+
* https://github.com/jsdom/jsdom/issues/1695
|
13
|
+
* scrollIntoView is not implemented in jsdom
|
14
|
+
* */
|
15
|
+
beforeEach(() => {
|
16
|
+
Element.prototype.scrollIntoView = jest.fn();
|
17
|
+
});
|
18
|
+
it('should render one version', () => {
|
19
|
+
const { getByText } = (0, react_2.render)(react_1.default.createElement(version_dropdown_composition_1.VersionDropdownWithOneVersion, null));
|
20
|
+
const textVersion = getByText(/^0.1$/);
|
21
|
+
(0, chai_1.expect)(textVersion).to.exist;
|
22
|
+
});
|
23
|
+
it('should not return multiple versions when mounted (lazy loading)', () => {
|
24
|
+
(0, react_2.render)(react_1.default.createElement(version_dropdown_composition_1.VersionDropdownWithMultipleVersions, null));
|
25
|
+
const textVersionOne = react_2.screen.queryByText(/^0.1$/);
|
26
|
+
const textVersionTwo = react_2.screen.queryByText(/^0.2$/);
|
27
|
+
const textVersionThree = react_2.screen.getAllByText(/^0.3$/);
|
28
|
+
(0, chai_1.expect)(textVersionOne).to.be.null;
|
29
|
+
(0, chai_1.expect)(textVersionTwo).to.be.null;
|
30
|
+
(0, chai_1.expect)(textVersionThree).to.have.lengthOf.at.least(1);
|
31
|
+
});
|
32
|
+
});
|
33
|
+
//# sourceMappingURL=version-dropdown.spec.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"version-dropdown.spec.js","sourceRoot":"","sources":["../version-dropdown.spec.tsx"],"names":[],"mappings":";;;;;AAAA,kDAA0B;AAC1B,kDAAwD;AACxD,+BAA8B;AAC9B,iFAAoH;AAEpH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC;;;SAGK;IACL,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,CAAC,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC/C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAA,cAAM,EAAC,8BAAC,4DAA6B,OAAG,CAAC,CAAC;QAChE,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACvC,IAAA,aAAM,EAAC,WAAW,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,IAAA,cAAM,EAAC,8BAAC,kEAAmC,OAAG,CAAC,CAAC;QAChD,MAAM,cAAc,GAAG,cAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,cAAc,GAAG,cAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACnD,MAAM,gBAAgB,GAAG,cAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAEtD,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAClC,IAAA,aAAM,EAAC,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAClC,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
@@ -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,+CAA6C;AAApC,2GAAA,WAAW,OAAA"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import React from 'react';
|
2
|
+
import type { DropdownComponentVersion } from '../version-dropdown';
|
3
|
+
export interface VersionInfoProps extends DropdownComponentVersion {
|
4
|
+
currentVersion?: string;
|
5
|
+
latestVersion?: string;
|
6
|
+
overrideVersionHref?: (version: string) => string;
|
7
|
+
showDetails?: boolean;
|
8
|
+
onVersionClicked?: () => void;
|
9
|
+
}
|
10
|
+
export declare const VersionInfo: React.MemoExoticComponent<React.ForwardRefExoticComponent<VersionInfoProps & React.RefAttributes<HTMLDivElement>>>;
|
@@ -0,0 +1,79 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
3
|
+
if (k2 === undefined) k2 = k;
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
7
|
+
}
|
8
|
+
Object.defineProperty(o, k2, desc);
|
9
|
+
}) : (function(o, m, k, k2) {
|
10
|
+
if (k2 === undefined) k2 = k;
|
11
|
+
o[k2] = m[k];
|
12
|
+
}));
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
15
|
+
}) : function(o, v) {
|
16
|
+
o["default"] = v;
|
17
|
+
});
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
19
|
+
if (mod && mod.__esModule) return mod;
|
20
|
+
var result = {};
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
22
|
+
__setModuleDefault(result, mod);
|
23
|
+
return result;
|
24
|
+
};
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
27
|
+
};
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
29
|
+
exports.VersionInfo = void 0;
|
30
|
+
const design_ui_surfaces_menu_link_item_1 = require("@teambit/design.ui.surfaces.menu.link-item");
|
31
|
+
const design_ui_time_ago_1 = require("@teambit/design.ui.time-ago");
|
32
|
+
const component_ui_version_label_1 = require("@teambit/component.ui.version-label");
|
33
|
+
const react_1 = __importStar(require("react"));
|
34
|
+
const design_ui_avatar_1 = require("@teambit/design.ui.avatar");
|
35
|
+
const design_ui_styles_ellipsis_1 = require("@teambit/design.ui.styles.ellipsis");
|
36
|
+
const classnames_1 = __importDefault(require("classnames"));
|
37
|
+
const version_info_module_scss_1 = __importDefault(require("./version-info.module.scss"));
|
38
|
+
exports.VersionInfo = react_1.default.memo(react_1.default.forwardRef(_VersionInfo));
|
39
|
+
function _VersionInfo({ version, currentVersion, latestVersion, date, username, displayName, email, overrideVersionHref, showDetails, message, tag, profileImage, onVersionClicked, }, ref) {
|
40
|
+
const isCurrent = version === currentVersion;
|
41
|
+
const author = (0, react_1.useMemo)(() => {
|
42
|
+
return {
|
43
|
+
displayName: displayName !== null && displayName !== void 0 ? displayName : '',
|
44
|
+
email,
|
45
|
+
name: username !== null && username !== void 0 ? username : '',
|
46
|
+
profileImage,
|
47
|
+
};
|
48
|
+
}, [displayName, email, username, profileImage]);
|
49
|
+
const timestamp = (0, react_1.useMemo)(() => (date ? new Date(parseInt(date)).toString() : new Date().toString()), [date]);
|
50
|
+
const currentVersionRef = (0, react_1.useRef)(null);
|
51
|
+
(0, react_1.useEffect)(() => {
|
52
|
+
var _a;
|
53
|
+
if (isCurrent) {
|
54
|
+
(_a = currentVersionRef.current) === null || _a === void 0 ? void 0 : _a.scrollIntoView({ block: 'nearest' });
|
55
|
+
}
|
56
|
+
}, [isCurrent]);
|
57
|
+
const href = overrideVersionHref ? overrideVersionHref(version) : `?version=${version}`;
|
58
|
+
const formattedVersion = (0, react_1.useMemo)(() => {
|
59
|
+
return tag ? version : version.slice(0, 6);
|
60
|
+
}, [tag, version]);
|
61
|
+
const isLatest = version === latestVersion;
|
62
|
+
return (react_1.default.createElement("div", { ref: ref || currentVersionRef, onClick: onVersionClicked },
|
63
|
+
react_1.default.createElement(design_ui_surfaces_menu_link_item_1.MenuLinkItem, { active: isCurrent, href: href, className: version_info_module_scss_1.default.versionRow },
|
64
|
+
react_1.default.createElement("div", { className: version_info_module_scss_1.default.version },
|
65
|
+
react_1.default.createElement(design_ui_avatar_1.UserAvatar, { size: 24, account: author, className: version_info_module_scss_1.default.versionUserAvatar, showTooltip: true }),
|
66
|
+
react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: (0, classnames_1.default)(version_info_module_scss_1.default.versionName) }, formattedVersion),
|
67
|
+
isLatest && react_1.default.createElement(component_ui_version_label_1.VersionLabel, { status: "latest" }),
|
68
|
+
react_1.default.createElement(CommitMessage, { message: message, showDetails: showDetails })),
|
69
|
+
react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: version_info_module_scss_1.default.versionTimestamp },
|
70
|
+
react_1.default.createElement(design_ui_time_ago_1.TimeAgo, { date: timestamp })))));
|
71
|
+
}
|
72
|
+
function CommitMessage({ message, showDetails }) {
|
73
|
+
if (!showDetails)
|
74
|
+
return null;
|
75
|
+
if (!message || message === '')
|
76
|
+
return react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: version_info_module_scss_1.default.emptyMessage }, "No commit message");
|
77
|
+
return react_1.default.createElement(design_ui_styles_ellipsis_1.Ellipsis, { className: version_info_module_scss_1.default.commitMessage }, message);
|
78
|
+
}
|
79
|
+
//# sourceMappingURL=version-info.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"version-info.js","sourceRoot":"","sources":["../../version-info/version-info.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,54 @@
|
|
1
|
+
.versionRow {
|
2
|
+
display: flex;
|
3
|
+
justify-content: space-between;
|
4
|
+
align-items: center;
|
5
|
+
height: 40px;
|
6
|
+
padding: 0 16px;
|
7
|
+
line-height: 1.2em;
|
8
|
+
|
9
|
+
&:hover {
|
10
|
+
background-color: var(--surface-hover-color, #eceaff) !important;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
.versionTimestamp {
|
15
|
+
min-width: fit-content;
|
16
|
+
margin-right: 2px;
|
17
|
+
text-align: right;
|
18
|
+
}
|
19
|
+
|
20
|
+
.versionUserAvatar {
|
21
|
+
flex: none;
|
22
|
+
padding: 0px 8px;
|
23
|
+
}
|
24
|
+
|
25
|
+
.laneIcon {
|
26
|
+
padding: 0px 4px;
|
27
|
+
}
|
28
|
+
|
29
|
+
.version {
|
30
|
+
max-width: 70%;
|
31
|
+
display: flex;
|
32
|
+
flex-direction: row;
|
33
|
+
align-items: center;
|
34
|
+
justify-content: flex-start;
|
35
|
+
overflow: hidden;
|
36
|
+
}
|
37
|
+
|
38
|
+
.versionName {
|
39
|
+
padding: 0px 8px;
|
40
|
+
flex-grow: 1;
|
41
|
+
min-width: fit-content;
|
42
|
+
}
|
43
|
+
|
44
|
+
.commitMessage {
|
45
|
+
flex-grow: 1;
|
46
|
+
padding: 0px 8px;
|
47
|
+
}
|
48
|
+
|
49
|
+
.emptyMessage {
|
50
|
+
font-style: italic;
|
51
|
+
color: var(--bit-text-color-light, #6c707c);
|
52
|
+
padding: 0px 8px;
|
53
|
+
font-size: (var-bit-p-xs, 14px);
|
54
|
+
}
|
package/index.ts
ADDED
@@ -0,0 +1,4 @@
|
|
1
|
+
export { SimpleVersion, DetailedVersion } from './version-dropdown-placeholder';
|
2
|
+
export type { VersionProps } from './version-dropdown-placeholder';
|
3
|
+
export { VersionDropdown } from './version-dropdown';
|
4
|
+
export type { DropdownComponentVersion, GetActiveTabIndex } from './version-dropdown';
|
@@ -0,0 +1,27 @@
|
|
1
|
+
.versionRow {
|
2
|
+
display: flex;
|
3
|
+
justify-content: space-between;
|
4
|
+
align-items: center;
|
5
|
+
height: 40px;
|
6
|
+
padding: 0 24px;
|
7
|
+
|
8
|
+
.versionTimestamp {
|
9
|
+
margin-right: 2px;
|
10
|
+
}
|
11
|
+
.versionUserAvatar {
|
12
|
+
padding: 0px 8px;
|
13
|
+
}
|
14
|
+
.laneIcon {
|
15
|
+
padding: 0px 4px;
|
16
|
+
}
|
17
|
+
.version {
|
18
|
+
width: 60%;
|
19
|
+
display: flex;
|
20
|
+
flex-direction: row;
|
21
|
+
align-content: space-between;
|
22
|
+
align-items: center;
|
23
|
+
}
|
24
|
+
.versionName {
|
25
|
+
padding: 0px 8px;
|
26
|
+
}
|
27
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
import type { LaneModel } from '@teambit/lanes.ui.models.lanes-model';
|
2
|
+
import { LanesModel } from '@teambit/lanes.ui.models.lanes-model';
|
3
|
+
import React from 'react';
|
4
|
+
import { MenuLinkItem } from '@teambit/design.ui.surfaces.menu.link-item';
|
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, currentLane }: LaneInfoProps) {
|
11
|
+
const isCurrent = currentLane && id.isEqual(currentLane.id);
|
12
|
+
|
13
|
+
return (
|
14
|
+
<div key={id.toString()}>
|
15
|
+
<MenuLinkItem active={isCurrent} href={LanesModel.getLaneUrl(id)} className={styles.versionRow}>
|
16
|
+
<span>
|
17
|
+
<Icon className={styles.laneIcon} of="lane"></Icon>
|
18
|
+
{id.toString()}
|
19
|
+
</span>
|
20
|
+
</MenuLinkItem>
|
21
|
+
</div>
|
22
|
+
);
|
23
|
+
}
|
package/package.json
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
{
|
2
|
+
"name": "@teambit/component.ui.version-dropdown",
|
3
|
+
"version": "0.0.0-0aa660598a05d04f2b124cb0ae8b4a1c05b66d78",
|
4
|
+
"homepage": "https://bit.cloud/teambit/component/ui/version-dropdown",
|
5
|
+
"main": "dist/index.js",
|
6
|
+
"componentId": {
|
7
|
+
"scope": "teambit.component",
|
8
|
+
"name": "ui/version-dropdown",
|
9
|
+
"version": "0aa660598a05d04f2b124cb0ae8b4a1c05b66d78"
|
10
|
+
},
|
11
|
+
"dependencies": {
|
12
|
+
"classnames": "2.2.6",
|
13
|
+
"semver": "7.7.1",
|
14
|
+
"core-js": "^3.0.0",
|
15
|
+
"@teambit/base-ui.loaders.skeleton": "1.0.1",
|
16
|
+
"@teambit/design.ui.styles.ellipsis": "0.0.357",
|
17
|
+
"@teambit/evangelist.elements.icon": "1.0.2",
|
18
|
+
"@teambit/ui-foundation.ui.constants.z-indexes": "0.0.504",
|
19
|
+
"@teambit/design.ui.surfaces.menu.link-item": "1.0.12",
|
20
|
+
"@teambit/evangelist.surfaces.dropdown": "1.0.2",
|
21
|
+
"@teambit/legacy-component-log": "0.0.408",
|
22
|
+
"@teambit/ui-foundation.ui.use-box.tab": "0.0.122",
|
23
|
+
"@teambit/component.ui.version-label": "0.0.509",
|
24
|
+
"@teambit/design.ui.avatar": "0.0.0-b608e87351ba5197d6555f2cd8f428fe2f4fcff6",
|
25
|
+
"@teambit/design.ui.time-ago": "0.0.0-c4a6511f1e58171b1607278db4608877ddedd790",
|
26
|
+
"@teambit/lanes.ui.models.lanes-model": "0.0.0-820e3004a8778034bb2558a3b16ec1c7322707a9"
|
27
|
+
},
|
28
|
+
"devDependencies": {
|
29
|
+
"@types/classnames": "2.2.11",
|
30
|
+
"@types/react": "^17.0.8",
|
31
|
+
"@types/semver": "7.5.8",
|
32
|
+
"@types/chai": "4.2.15",
|
33
|
+
"chai": "4.3.0",
|
34
|
+
"@types/mocha": "9.1.0",
|
35
|
+
"@types/node": "12.20.4",
|
36
|
+
"@types/react-dom": "^17.0.5",
|
37
|
+
"@types/jest": "^26.0.0",
|
38
|
+
"@babel/runtime": "7.20.0",
|
39
|
+
"@types/testing-library__jest-dom": "5.9.5",
|
40
|
+
"@teambit/documenter.theme.theme-compositions": "4.1.1",
|
41
|
+
"@teambit/documenter.ui.section": "4.1.1",
|
42
|
+
"@teambit/documenter.ui.separator": "4.1.1"
|
43
|
+
},
|
44
|
+
"peerDependencies": {
|
45
|
+
"@testing-library/react": "^12.1.5",
|
46
|
+
"react-router-dom": "^6.22.3",
|
47
|
+
"react": "^16.8.0 || ^17.0.0",
|
48
|
+
"react-dom": "^16.8.0 || ^17.0.0"
|
49
|
+
},
|
50
|
+
"license": "Apache-2.0",
|
51
|
+
"optionalDependencies": {},
|
52
|
+
"peerDependenciesMeta": {},
|
53
|
+
"private": false,
|
54
|
+
"engines": {
|
55
|
+
"node": ">=12.22.0"
|
56
|
+
},
|
57
|
+
"repository": {
|
58
|
+
"type": "git",
|
59
|
+
"url": "https://github.com/teambit/bit"
|
60
|
+
},
|
61
|
+
"keywords": [
|
62
|
+
"bit",
|
63
|
+
"components",
|
64
|
+
"collaboration",
|
65
|
+
"web",
|
66
|
+
"react",
|
67
|
+
"react-components",
|
68
|
+
"angular",
|
69
|
+
"angular-components"
|
70
|
+
]
|
71
|
+
}
|