Add conditional choice items

Allows you to conditonnally display an item from the Buttons or the Picture choice input

Closes #546
This commit is contained in:
Baptiste Arnaud
2023-06-05 17:33:43 +02:00
parent acaa1c6223
commit ef0a2d9dc6
18 changed files with 404 additions and 157 deletions

View File

@@ -1,4 +1,4 @@
import { Flex, useColorModeValue } from '@chakra-ui/react'
import { Flex, useColorModeValue, Stack } from '@chakra-ui/react'
import { useTypebot } from '@/features/editor/providers/TypebotProvider'
import {
ChoiceInputBlock,
@@ -20,6 +20,7 @@ import {
} from '@/features/graph/providers/GraphDndProvider'
import { useGraph } from '@/features/graph/providers/GraphProvider'
import { setMultipleRefs } from '@/helpers/setMultipleRefs'
import { ConditionContent } from '@/features/blocks/logic/condition/components/ConditionContent'
type Props = {
item: Item
@@ -71,12 +72,22 @@ export const ItemNode = ({
renderMenu={() => <ItemNodeContextMenu indices={indices} />}
>
{(ref, isContextMenuOpened) => (
<Flex
<Stack
data-testid="item"
pos="relative"
ref={setMultipleRefs([ref, itemRef])}
w="full"
>
{'displayCondition' in item &&
item.displayCondition?.isEnabled &&
item.displayCondition.condition && (
<ConditionContent
condition={item.displayCondition.condition}
variables={typebot?.variables ?? []}
size="xs"
displaySemicolon
/>
)}
<Flex
align="center"
onMouseEnter={handleMouseEnter}
@@ -113,7 +124,7 @@ export const ItemNode = ({
/>
)}
</Flex>
</Flex>
</Stack>
)}
</ContextMenu>
)