Skip to content

Commit

Permalink
feat(inputs): ✨ Add Export flow menu button
Browse files Browse the repository at this point in the history
  • Loading branch information
baptisteArno committed Jan 12, 2022
1 parent c02c61c commit 659f50e
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 0 deletions.
2 changes: 2 additions & 0 deletions apps/builder/components/board/Board.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import { StepTypesList } from './StepTypesList'
import { PreviewDrawer } from './preview/PreviewDrawer'
import { RightPanel, useEditor } from 'contexts/EditorContext'
import { GraphProvider } from 'contexts/GraphContext'
import { BoardMenuButton } from './BoardMenuButton'

export const Board = () => {
const { rightPanel } = useEditor()
Expand All @@ -16,6 +17,7 @@ export const Board = () => {
<GraphProvider>
<Graph flex="1" />
{rightPanel === RightPanel.PREVIEW && <PreviewDrawer />}
<BoardMenuButton pos="absolute" right="20px" top="20px" />
</GraphProvider>
</DndContext>
</Flex>
Expand Down
49 changes: 49 additions & 0 deletions apps/builder/components/board/BoardMenuButton.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import {
IconButton,
Menu,
MenuButton,
MenuButtonProps,
MenuItem,
MenuList,
} from '@chakra-ui/react'
import { DownloadIcon, MoreVerticalIcon } from 'assets/icons'
import { useTypebot } from 'contexts/TypebotContext'
import React, { useState } from 'react'
import { parseDefaultPublicId } from 'services/typebots'

export const BoardMenuButton = (props: MenuButtonProps) => {
const { typebot } = useTypebot()
const [isDownloading, setIsDownloading] = useState(false)

const downloadFlow = () => {
if (!typebot) return
setIsDownloading(true)
const data =
'data:application/json;charset=utf-8,' +
encodeURIComponent(JSON.stringify(typebot))
const fileName = `typebot-export-${parseDefaultPublicId(
typebot.name,
typebot.id
)}.json`
const linkElement = document.createElement('a')
linkElement.setAttribute('href', data)
linkElement.setAttribute('download', fileName)
linkElement.click()
setIsDownloading(false)
}
return (
<Menu>
<MenuButton
as={IconButton}
icon={<MoreVerticalIcon transform={'rotate(90deg)'} />}
isLoading={isDownloading}
{...props}
/>
<MenuList>
<MenuItem icon={<DownloadIcon />} onClick={downloadFlow}>
Export flow
</MenuItem>
</MenuList>
</Menu>
)
}

0 comments on commit 659f50e

Please sign in to comment.