2022-12-17 03:27:00 +00:00
|
|
|
import type { PopupProps } from '../_shared/Popup'
|
2023-11-14 15:10:00 +00:00
|
|
|
|
|
|
|
import { createEffect, createSignal, For } from 'solid-js'
|
|
|
|
|
2023-02-17 09:21:02 +00:00
|
|
|
import { useLocalize } from '../../context/localize'
|
2023-11-14 15:10:00 +00:00
|
|
|
import { Popup } from '../_shared/Popup'
|
2022-12-17 03:27:00 +00:00
|
|
|
|
|
|
|
export type MessageActionType = 'reply' | 'copy' | 'pin' | 'forward' | 'select' | 'delete'
|
|
|
|
|
2023-05-01 18:32:32 +00:00
|
|
|
type MessageActionsPopupProps = {
|
2022-12-17 03:27:00 +00:00
|
|
|
actionSelect?: (selectedAction) => void
|
|
|
|
} & Omit<PopupProps, 'children'>
|
|
|
|
|
2023-05-01 18:32:32 +00:00
|
|
|
export const MessageActionsPopup = (props: MessageActionsPopupProps) => {
|
2022-12-17 03:27:00 +00:00
|
|
|
const [selectedAction, setSelectedAction] = createSignal<MessageActionType | null>(null)
|
2023-02-17 09:21:02 +00:00
|
|
|
const { t } = useLocalize()
|
|
|
|
const actions: { name: string; action: MessageActionType }[] = [
|
|
|
|
{ name: t('Reply'), action: 'reply' },
|
|
|
|
{ name: t('Copy'), action: 'copy' },
|
|
|
|
{ name: t('Pin'), action: 'pin' },
|
|
|
|
{ name: t('Forward'), action: 'forward' },
|
|
|
|
{ name: t('Select'), action: 'select' },
|
2023-11-14 15:10:00 +00:00
|
|
|
{ name: t('Delete'), action: 'delete' },
|
2023-02-17 09:21:02 +00:00
|
|
|
]
|
2022-12-17 03:27:00 +00:00
|
|
|
createEffect(() => {
|
|
|
|
if (props.actionSelect) props.actionSelect(selectedAction())
|
|
|
|
})
|
|
|
|
return (
|
|
|
|
<Popup {...props} variant="tiny">
|
|
|
|
<ul class="nodash">
|
|
|
|
<For each={actions}>
|
|
|
|
{(item) => (
|
|
|
|
<li
|
|
|
|
style={item.action === 'delete' && { color: 'red' }}
|
|
|
|
onClick={() => setSelectedAction(item.action)}
|
|
|
|
>
|
|
|
|
{item.name}
|
|
|
|
</li>
|
|
|
|
)}
|
|
|
|
</For>
|
|
|
|
</ul>
|
|
|
|
</Popup>
|
|
|
|
)
|
|
|
|
}
|