pengx17
2024-09-18 02:10:46 +00:00
parent 7a1aa24424
commit 8d4bda1dcc
2 changed files with 44 additions and 30 deletions

View File

@@ -26,6 +26,7 @@ import clsx from 'clsx';
import type { HTMLAttributes } from 'react'; import type { HTMLAttributes } from 'react';
import { forwardRef, useCallback, useEffect, useState } from 'react'; import { forwardRef, useCallback, useEffect, useState } from 'react';
import { useCatchEventCallback } from '../../hooks/use-catch-event-hook';
import * as styles from './styles.css'; import * as styles from './styles.css';
const CloudWorkspaceStatus = () => { const CloudWorkspaceStatus = () => {
@@ -262,6 +263,14 @@ export const WorkspaceCard = forwardRef<
const name = information?.name ?? UNTITLED_WORKSPACE_NAME; const name = information?.name ?? UNTITLED_WORKSPACE_NAME;
const onEnableCloud = useCatchEventCallback(() => {
onClickEnableCloud?.(workspaceMetadata);
}, [onClickEnableCloud, workspaceMetadata]);
const onOpenSettings = useCatchEventCallback(() => {
onClickOpenSettings?.(workspaceMetadata);
}, [onClickOpenSettings, workspaceMetadata]);
return ( return (
<div <div
className={clsx( className={clsx(
@@ -301,14 +310,12 @@ export const WorkspaceCard = forwardRef<
<Skeleton width={100} /> <Skeleton width={100} />
)} )}
</div> </div>
<div className={styles.showOnCardHover}>
{onClickEnableCloud && {onClickEnableCloud &&
workspaceMetadata.flavour === WorkspaceFlavour.LOCAL ? ( workspaceMetadata.flavour === WorkspaceFlavour.LOCAL ? (
<Button <Button
className={styles.showOnCardHover} className={styles.enableCloudButton}
onClick={e => { onClick={onEnableCloud}
e.stopPropagation();
onClickEnableCloud(workspaceMetadata);
}}
> >
Enable Cloud Enable Cloud
</Button> </Button>
@@ -317,16 +324,12 @@ export const WorkspaceCard = forwardRef<
<CollaborationIcon /> <CollaborationIcon />
)} )}
{onClickOpenSettings && ( {onClickOpenSettings && (
<div <div className={styles.settingButton} onClick={onOpenSettings}>
className={styles.settingButton}
onClick={e => {
e.stopPropagation();
onClickOpenSettings(workspaceMetadata);
}}
>
<SettingsIcon width={16} height={16} /> <SettingsIcon width={16} height={16} />
</div> </div>
)} )}
</div>
{showArrowDownIcon && <ArrowDownSmallIcon />} {showArrowDownIcon && <ArrowDownSmallIcon />}
</div> </div>
); );

View File

@@ -125,6 +125,15 @@ export const workspaceTitleContainer = style({
overflow: 'hidden', overflow: 'hidden',
}); });
export const enableCloudButton = style({
opacity: 0,
selectors: {
[`.${container}:hover &`]: {
opacity: 1,
},
},
});
export const settingButton = style({ export const settingButton = style({
transition: 'all 0.13s ease', transition: 'all 0.13s ease',
width: 0, width: 0,
@@ -152,12 +161,14 @@ export const settingButton = style({
}); });
export const showOnCardHover = style({ export const showOnCardHover = style({
visibility: 'hidden', position: 'absolute',
opacity: 0, right: 0,
display: 'flex',
gap: 8,
alignItems: 'center',
selectors: { selectors: {
[`.${container}:hover &`]: { [`.${container}:hover &`]: {
visibility: 'visible', position: 'relative',
opacity: 1,
}, },
}, },
}); });