@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.
Files changed (52) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/index.js +9 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/lane-info/index.d.ts +2 -0
  5. package/dist/lane-info/index.js +6 -0
  6. package/dist/lane-info/index.js.map +1 -0
  7. package/dist/lane-info/lane-info.d.ts +6 -0
  8. package/dist/lane-info/lane-info.js +20 -0
  9. package/dist/lane-info/lane-info.js.map +1 -0
  10. package/dist/lane-info/lane-info.module.scss +27 -0
  11. package/dist/preview-1753890535938.js +7 -0
  12. package/dist/version-dropdown-placeholder.d.ts +17 -0
  13. package/dist/version-dropdown-placeholder.js +92 -0
  14. package/dist/version-dropdown-placeholder.js.map +1 -0
  15. package/dist/version-dropdown-placeholder.module.scss +50 -0
  16. package/dist/version-dropdown.composition.d.ts +3 -0
  17. package/dist/version-dropdown.composition.js +28 -0
  18. package/dist/version-dropdown.composition.js.map +1 -0
  19. package/dist/version-dropdown.d.ts +53 -0
  20. package/dist/version-dropdown.docs.d.ts +35 -0
  21. package/dist/version-dropdown.docs.js +67 -0
  22. package/dist/version-dropdown.docs.js.map +1 -0
  23. package/dist/version-dropdown.js +153 -0
  24. package/dist/version-dropdown.js.map +1 -0
  25. package/dist/version-dropdown.module.scss +128 -0
  26. package/dist/version-dropdown.spec.d.ts +1 -0
  27. package/dist/version-dropdown.spec.js +33 -0
  28. package/dist/version-dropdown.spec.js.map +1 -0
  29. package/dist/version-info/index.d.ts +2 -0
  30. package/dist/version-info/index.js +6 -0
  31. package/dist/version-info/index.js.map +1 -0
  32. package/dist/version-info/version-info.d.ts +10 -0
  33. package/dist/version-info/version-info.js +79 -0
  34. package/dist/version-info/version-info.js.map +1 -0
  35. package/dist/version-info/version-info.module.scss +54 -0
  36. package/index.ts +4 -0
  37. package/lane-info/index.ts +2 -0
  38. package/lane-info/lane-info.module.scss +27 -0
  39. package/lane-info/lane-info.tsx +23 -0
  40. package/package.json +71 -0
  41. package/types/asset.d.ts +29 -0
  42. package/types/style.d.ts +42 -0
  43. package/version-dropdown-placeholder.module.scss +50 -0
  44. package/version-dropdown-placeholder.tsx +109 -0
  45. package/version-dropdown.composition.tsx +36 -0
  46. package/version-dropdown.docs.tsx +68 -0
  47. package/version-dropdown.module.scss +128 -0
  48. package/version-dropdown.spec.tsx +29 -0
  49. package/version-dropdown.tsx +331 -0
  50. package/version-info/index.ts +2 -0
  51. package/version-info/version-info.module.scss +54 -0
  52. 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,2 @@
1
+ export { VersionInfo } from './version-info';
2
+ export type { 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,+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,2 @@
1
+ export { LaneInfo } from './lane-info';
2
+ export type { LaneInfoProps } from './lane-info';
@@ -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
+ }