@teambit/component.ui.version-dropdown 0.0.0-1905e01a2ab875c900fb8be39d736a8a7842b40b
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-1753203475518.js +7 -0
- package/dist/version-dropdown-placeholder.d.ts +16 -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 +22 -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 +108 -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 +330 -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,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
|
+
}
|
@@ -0,0 +1,87 @@
|
|
1
|
+
import { MenuLinkItem } from '@teambit/design.ui.surfaces.menu.link-item';
|
2
|
+
import { TimeAgo } from '@teambit/design.ui.time-ago';
|
3
|
+
import { VersionLabel } from '@teambit/component.ui.version-label';
|
4
|
+
import React, { useMemo, useRef, useEffect } from 'react';
|
5
|
+
import { UserAvatar } from '@teambit/design.ui.avatar';
|
6
|
+
import { Ellipsis } from '@teambit/design.ui.styles.ellipsis';
|
7
|
+
import classNames from 'classnames';
|
8
|
+
|
9
|
+
import { DropdownComponentVersion } from '../version-dropdown';
|
10
|
+
import styles from './version-info.module.scss';
|
11
|
+
|
12
|
+
export interface VersionInfoProps extends DropdownComponentVersion {
|
13
|
+
currentVersion?: string;
|
14
|
+
latestVersion?: string;
|
15
|
+
overrideVersionHref?: (version: string) => string;
|
16
|
+
showDetails?: boolean;
|
17
|
+
onVersionClicked?: () => void;
|
18
|
+
}
|
19
|
+
|
20
|
+
export const VersionInfo = React.memo(React.forwardRef<HTMLDivElement, VersionInfoProps>(_VersionInfo));
|
21
|
+
function _VersionInfo(
|
22
|
+
{
|
23
|
+
version,
|
24
|
+
currentVersion,
|
25
|
+
latestVersion,
|
26
|
+
date,
|
27
|
+
username,
|
28
|
+
displayName,
|
29
|
+
email,
|
30
|
+
overrideVersionHref,
|
31
|
+
showDetails,
|
32
|
+
message,
|
33
|
+
tag,
|
34
|
+
profileImage,
|
35
|
+
onVersionClicked,
|
36
|
+
}: VersionInfoProps,
|
37
|
+
ref?: React.ForwardedRef<HTMLDivElement>
|
38
|
+
) {
|
39
|
+
const isCurrent = version === currentVersion;
|
40
|
+
const author = useMemo(() => {
|
41
|
+
return {
|
42
|
+
displayName: displayName ?? '',
|
43
|
+
email,
|
44
|
+
name: username ?? '',
|
45
|
+
profileImage,
|
46
|
+
};
|
47
|
+
}, [displayName, email, username, profileImage]);
|
48
|
+
|
49
|
+
const timestamp = useMemo(() => (date ? new Date(parseInt(date)).toString() : new Date().toString()), [date]);
|
50
|
+
const currentVersionRef = useRef<HTMLDivElement>(null);
|
51
|
+
|
52
|
+
useEffect(() => {
|
53
|
+
if (isCurrent) {
|
54
|
+
currentVersionRef.current?.scrollIntoView({ block: 'nearest' });
|
55
|
+
}
|
56
|
+
}, [isCurrent]);
|
57
|
+
|
58
|
+
const href = overrideVersionHref ? overrideVersionHref(version) : `?version=${version}`;
|
59
|
+
|
60
|
+
const formattedVersion = useMemo(() => {
|
61
|
+
return tag ? version : version.slice(0, 6);
|
62
|
+
}, [tag, version]);
|
63
|
+
|
64
|
+
const isLatest = version === latestVersion;
|
65
|
+
|
66
|
+
return (
|
67
|
+
<div ref={ref || currentVersionRef} onClick={onVersionClicked}>
|
68
|
+
<MenuLinkItem active={isCurrent} href={href} className={styles.versionRow}>
|
69
|
+
<div className={styles.version}>
|
70
|
+
<UserAvatar size={24} account={author} className={styles.versionUserAvatar} showTooltip={true} />
|
71
|
+
<Ellipsis className={classNames(styles.versionName)}>{formattedVersion}</Ellipsis>
|
72
|
+
{isLatest && <VersionLabel status="latest" />}
|
73
|
+
<CommitMessage message={message} showDetails={showDetails} />
|
74
|
+
</div>
|
75
|
+
<Ellipsis className={styles.versionTimestamp}>
|
76
|
+
<TimeAgo date={timestamp} />
|
77
|
+
</Ellipsis>
|
78
|
+
</MenuLinkItem>
|
79
|
+
</div>
|
80
|
+
);
|
81
|
+
}
|
82
|
+
|
83
|
+
function CommitMessage({ message, showDetails }: { message?: string; showDetails?: boolean }) {
|
84
|
+
if (!showDetails) return null;
|
85
|
+
if (!message || message === '') return <Ellipsis className={styles.emptyMessage}>No commit message</Ellipsis>;
|
86
|
+
return <Ellipsis className={styles.commitMessage}>{message}</Ellipsis>;
|
87
|
+
}
|