@botonic/react
Version:
Build Chatbots using React
60 lines (55 loc) • 1.73 kB
JSX
import React, { useContext } from 'react'
import styled from 'styled-components'
import { Button } from '../../components/button/index'
import { ROLES, WEBCHAT } from '../../constants'
import { WebchatContext } from '../context'
import { useComponentVisible } from '../hooks'
const ButtonsContainer = styled.div`
position: absolute;
z-index: 2;
width: 100%;
bottom: 0;
text-align: center;
`
export const OpenedPersistentMenu = ({ onClick, options, borderRadius }) => {
const { ref, isComponentVisible } = useComponentVisible(true, onClick)
const { getThemeProperty } = useContext(WebchatContext)
const CustomPersistentMenu = getThemeProperty(
WEBCHAT.CUSTOM_PROPERTIES.customPersistentMenu
)
let closeLabel = 'Cancel'
try {
closeLabel = options.filter(opt => opt.closeLabel !== undefined)[0]
.closeLabel
} catch (e) {}
return (
<div ref={ref} role={ROLES.PERSISTENT_MENU}>
{isComponentVisible && CustomPersistentMenu ? (
<CustomPersistentMenu onClick={onClick} options={options} />
) : (
<ButtonsContainer>
{Object.values(options).map((e, i) => {
return (
e.label && (
<Button
onClick={onClick}
url={e.url}
target={e.target}
webview={e.webview}
payload={e.payload}
key={i}
>
{e.label}
</Button>
)
)
})}
<Button onClick={onClick} bottomRadius={borderRadius}>
{closeLabel}
</Button>
</ButtonsContainer>
)}
</div>
)
}
export default OpenedPersistentMenu