@teambit/component.ui.version-dropdown 0.0.548 → 0.0.551

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 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,uDAAqD;AAA5C,mHAAA,eAAe,OAAA"}
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?: string;
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;
@@ -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 evangelist_elements_icon_1 = require("@teambit/evangelist.elements.icon");
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({ snaps, tags, lanes, currentVersion, latestVersion, localVersion, loading, currentLane, }) {
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
- if (singleVersion && !loading) {
54
- return (react_1.default.createElement("div", { className: version_dropdown_module_scss_1.default.noVersions },
55
- react_1.default.createElement(VersionPlaceholder, { currentVersion: currentVersion })));
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), placeholder: react_1.default.createElement(VersionPlaceholder, { currentVersion: currentVersion, className: version_dropdown_module_scss_1.default.withVersions }) },
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 tabs.findIndex((tab) => tab.name === 'TAG');
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":"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"}
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 24px;
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: `?version=${version}`, className: version_info_module_scss_1.default.versionRow },
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
- react_1.default.createElement(design_ui_time_ago_1.TimeAgo, { className: version_info_module_scss_1.default.versionTimestamp, date: timestamp }))));
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;AAG9D,0FAAgD;AAOhD,SAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAoB;IAC7G,MAAM,SAAS,GAAG,OAAO,KAAK,cAAc,CAAC;IAC7C,MAAM,MAAM,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAC1B,OAAO;YACL,WAAW,EAAE,QAAQ;YACrB,KAAK;SACN,CAAC;IACJ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,MAAM,SAAS,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;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,EAAE,CAAC;SAC7C;IACH,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,OAAO,CACL,uCAAK,GAAG,EAAE,iBAAiB;QACzB,8BAAC,gDAAY,IAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,YAAY,OAAO,EAAE,EAAE,SAAS,EAAE,kCAAM,CAAC,UAAU;YAChG,uCAAK,SAAS,EAAE,kCAAM,CAAC,OAAO;gBAC5B,8BAAC,6BAAU,IAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,kCAAM,CAAC,iBAAiB,EAAE,WAAW,EAAE,IAAI,GAAI;gBACjG,8BAAC,oCAAQ,IAAC,SAAS,EAAE,kCAAM,CAAC,WAAW,IAAG,OAAO,CAAY;gBAC5D,OAAO,KAAK,aAAa,IAAI,8BAAC,yCAAY,IAAC,SAAS,EAAE,kCAAM,CAAC,KAAK,EAAE,MAAM,EAAC,QAAQ,GAAG,CACnF;YACN,8BAAC,4BAAO,IAAC,SAAS,EAAE,kCAAM,CAAC,gBAAgB,EAAE,IAAI,EAAE,SAAS,GAAI,CACnD,CACX,CACP,CAAC;AACJ,CAAC;AA7BD,kCA6BC"}
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 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;
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
- .versionName {
25
- padding: 0px 8px;
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';
package/package.json CHANGED
@@ -1,34 +1,34 @@
1
1
  {
2
2
  "name": "@teambit/component.ui.version-dropdown",
3
- "version": "0.0.548",
3
+ "version": "0.0.551",
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.548"
9
+ "version": "0.0.551"
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/lanes.ui.lanes": "0.0.62",
20
+ "@teambit/design.ui.time-ago": "0.0.352",
21
+ "@teambit/lanes.ui.lanes": "0.0.64",
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.548/dist/version-dropdown.composition.js')]
2
- export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_ui_version-dropdown@0.0.548/dist/version-dropdown.docs.js')]
1
+ export const compositions = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_ui_version-dropdown@0.0.551/dist/version-dropdown.composition.js')]
2
+ export const overview = [require('/home/circleci/Library/Caches/Bit/capsules/8891be5ad3d35bfc38b9cd90c0e05b598a5a55af/teambit.component_ui_version-dropdown@0.0.551/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 24px;
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;
@@ -1,19 +1,17 @@
1
- import { Icon } from '@teambit/evangelist.elements.icon';
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?: string;
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
- if (singleVersion && !loading) {
48
- return (
49
- <div className={styles.noVersions}>
50
- <VersionPlaceholder currentVersion={currentVersion} />
51
- </div>
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
- placeholder={<VersionPlaceholder currentVersion={currentVersion} className={styles.withVersions} />}
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 tabs.findIndex((tab) => tab.name === 'TAG');
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 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;
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
- .versionName {
25
- padding: 0px 8px;
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({ version, currentVersion, latestVersion, date, username, email }: VersionInfoProps) {
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={`?version=${version}`} className={styles.versionRow}>
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}>{version}</Ellipsis>
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
- <TimeAgo className={styles.versionTimestamp} date={timestamp} />
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
+ }