webapp/src/components/Article/SharePopup.tsx
Ilya Y 0e6bb81b6a
Article action menu (#352)
* Article action menu
2024-01-05 22:31:28 +03:00

42 lines
1.1 KiB
TypeScript

import type { PopupProps } from '../_shared/Popup'
import { createEffect, createSignal } from 'solid-js'
import { Popup } from '../_shared/Popup'
import { ShareLinks } from '../_shared/ShareLinks'
type SharePopupProps = {
title: string
shareUrl: string
imageUrl: string
description: string
onVisibilityChange?: (value: boolean) => void
} & Omit<PopupProps, 'children'>
export const getShareUrl = (params: { pathname?: string } = {}) => {
if (typeof location === 'undefined') return ''
const pathname = params.pathname ?? location.pathname
return location.origin + pathname
}
export const SharePopup = (props: SharePopupProps) => {
const [isVisible, setIsVisible] = createSignal(false)
createEffect(() => {
if (props.onVisibilityChange) {
props.onVisibilityChange(isVisible())
}
})
return (
<Popup {...props} variant="bordered" onVisibilityChange={(value) => setIsVisible(value)}>
<ShareLinks
variant="inPopup"
title={props.title}
shareUrl={props.shareUrl}
imageUrl={props.imageUrl}
description={props.description}
/>
</Popup>
)
}