tldraw/components/style-panel/quick-dash-select.tsx

57 lines
1.5 KiB
TypeScript
Raw Normal View History

import * as DropdownMenu from '@radix-ui/react-dropdown-menu'
import { IconButton } from 'components/shared'
2021-06-02 21:17:38 +00:00
import Tooltip from 'components/tooltip'
import state, { useSelector } from 'state'
import { DashStyle } from 'types'
import {
DropdownContent,
Item,
DashDottedIcon,
DashSolidIcon,
DashDashedIcon,
2021-06-03 12:06:39 +00:00
} from '../shared'
const dashes = {
[DashStyle.Solid]: <DashSolidIcon />,
[DashStyle.Dashed]: <DashDashedIcon />,
[DashStyle.Dotted]: <DashDottedIcon />,
}
2021-06-21 21:35:28 +00:00
export default function QuickdashSelect(): JSX.Element {
const dash = useSelector((s) => s.values.selectedStyle.dash)
return (
<DropdownMenu.Root>
<DropdownMenu.Trigger
as={IconButton}
bp={{ '@initial': 'mobile', '@sm': 'small' }}
>
2021-06-02 21:17:38 +00:00
<Tooltip label="Dash">{dashes[dash]}</Tooltip>
</DropdownMenu.Trigger>
<DropdownContent sideOffset={8} direction="vertical">
<DashItem isActive={dash === DashStyle.Solid} dash={DashStyle.Solid} />
<DashItem
isActive={dash === DashStyle.Dashed}
dash={DashStyle.Dashed}
/>
<DashItem
isActive={dash === DashStyle.Dotted}
dash={DashStyle.Dotted}
/>
</DropdownContent>
</DropdownMenu.Root>
)
}
function DashItem({ dash, isActive }: { isActive: boolean; dash: DashStyle }) {
return (
<Item
as={DropdownMenu.DropdownMenuItem}
isActive={isActive}
onSelect={() => state.send('CHANGED_STYLE', { dash })}
>
{dashes[dash]}
</Item>
)
}