diff --git a/src/components/Inbox/DialogCard.module.scss b/src/components/Inbox/DialogCard.module.scss index e2011b68..d01b6e28 100644 --- a/src/components/Inbox/DialogCard.module.scss +++ b/src/components/Inbox/DialogCard.module.scss @@ -6,10 +6,10 @@ font-size: 14px; padding: 12px; transition: background 0.3s ease-in-out; - cursor: pointer; width: 100%; &.hovered:hover { + cursor: pointer; background: #f7f7f7; } diff --git a/src/components/Inbox/Message.module.scss b/src/components/Inbox/Message.module.scss index 3a3bb818..ef1aa745 100644 --- a/src/components/Inbox/Message.module.scss +++ b/src/components/Inbox/Message.module.scss @@ -51,10 +51,14 @@ $actionsWidth: 32px * 2; z-index: -1; transition: 0.3s ease-in-out; } - + &.popupVisible { + position: relative; + z-index: 100; + } + &.popupVisible, &:hover { .actions { - z-index: 100; + z-index: 10000; opacity: 1; right: -$actionsWidth; } @@ -102,8 +106,11 @@ $actionsWidth: 32px * 2; } } - &:hover .actions { - left: -$actionsWidth; + &.popupVisible, + &:hover { + .actions { + left: -$actionsWidth; + } } } diff --git a/src/components/Inbox/Message.tsx b/src/components/Inbox/Message.tsx index aa7b790a..0d32c981 100644 --- a/src/components/Inbox/Message.tsx +++ b/src/components/Inbox/Message.tsx @@ -29,10 +29,6 @@ const Message = (props: Props) => { const [isPopupVisible, setIsPopupVisible] = createSignal(false) const [selectedAction, setSelectedAction] = createSignal() - const handleMouseLeave = () => { - if (isPopupVisible()) setIsPopupVisible(false) - } - return (
@@ -41,14 +37,13 @@ const Message = (props: Props) => {
{user.name}
-
+
setSelectedAction(selectedAction)} onVisibilityChange={(isVisible) => setIsPopupVisible(isVisible)} trigger={} diff --git a/src/components/Inbox/MessageActionsPopup.tsx b/src/components/Inbox/MessageActionsPopup.tsx index dfa83e24..add82b53 100644 --- a/src/components/Inbox/MessageActionsPopup.tsx +++ b/src/components/Inbox/MessageActionsPopup.tsx @@ -3,11 +3,13 @@ import type { PopupProps } from '../_shared/Popup' import { Popup } from '../_shared/Popup' import { t } from '../../utils/intl' +export type MessageActionType = 'reply' | 'copy' | 'pin' | 'forward' | 'select' | 'delete' + type MessageActionsPopup = { actionSelect?: (selectedAction) => void } & Omit -const actions = [ +const actions: { name: string; action: MessageActionType }[] = [ { name: t('Reply'), action: 'reply' }, { name: t('Copy'), action: 'copy' }, { name: t('Pin'), action: 'pin' }, @@ -17,7 +19,8 @@ const actions = [ ] export const MessageActionsPopup = (props: MessageActionsPopup) => { - const [selectedAction, setSelectedAction] = createSignal() + const [selectedAction, setSelectedAction] = createSignal(null) + createEffect(() => { if (props.actionSelect) props.actionSelect(selectedAction()) }) @@ -25,7 +28,14 @@ export const MessageActionsPopup = (props: MessageActionsPopup) => {
    - {(item) =>
  • setSelectedAction(item.action)}>{item.name}
  • } + {(item) => ( +
  • setSelectedAction(item.action)} + > + {item.name} +
  • + )}
diff --git a/src/components/_shared/Popup/Popup.tsx b/src/components/_shared/Popup/Popup.tsx index e78452aa..3b32d760 100644 --- a/src/components/_shared/Popup/Popup.tsx +++ b/src/components/_shared/Popup/Popup.tsx @@ -13,7 +13,6 @@ export type PopupProps = { onVisibilityChange?: (isVisible) => void horizontalAnchor?: HorizontalAnchor variant?: 'bordered' | 'tiny' - forceHide?: boolean } export const Popup = (props: PopupProps) => { @@ -34,9 +33,6 @@ export const Popup = (props: PopupProps) => { handler: () => setIsVisible(false) }) - createEffect(() => { - if (props.forceHide) setIsVisible(false) - }) const toggle = () => setIsVisible((oldVisible) => !oldVisible) return (