diff --git a/apps/builder/src/features/blocks/inputs/rating/components/RatingInputSettingsBody.tsx b/apps/builder/src/features/blocks/inputs/rating/components/RatingInputSettings.tsx similarity index 89% rename from apps/builder/src/features/blocks/inputs/rating/components/RatingInputSettingsBody.tsx rename to apps/builder/src/features/blocks/inputs/rating/components/RatingInputSettings.tsx index 19559d2c15..9273975817 100644 --- a/apps/builder/src/features/blocks/inputs/rating/components/RatingInputSettingsBody.tsx +++ b/apps/builder/src/features/blocks/inputs/rating/components/RatingInputSettings.tsx @@ -42,6 +42,9 @@ export const RatingInputSettings = ({ const handleVariableChange = (variable?: Variable) => onOptionsChange({ ...options, variableId: variable?.id }) + const handleOneClickSubmitChange = (isOneClickSubmitEnabled: boolean) => + onOptionsChange({ ...options, isOneClickSubmitEnabled }) + return ( @@ -108,6 +111,12 @@ export const RatingInputSettings = ({ placeholder="Extremely likely" /> + Button label: diff --git a/apps/builder/src/features/blocks/inputs/rating/index.ts b/apps/builder/src/features/blocks/inputs/rating/index.ts index fb8395d034..dba9d8df95 100644 --- a/apps/builder/src/features/blocks/inputs/rating/index.ts +++ b/apps/builder/src/features/blocks/inputs/rating/index.ts @@ -1,3 +1,3 @@ -export { RatingInputSettings } from './components/RatingInputSettingsBody' +export { RatingInputSettings } from './components/RatingInputSettings' export { RatingInputContent } from './components/RatingInputContent' export { RatingInputIcon } from './components/RatingInputIcon' diff --git a/apps/builder/src/features/blocks/inputs/rating/rating.spec.ts b/apps/builder/src/features/blocks/inputs/rating/rating.spec.ts index 3e58884ed8..dbe896272a 100644 --- a/apps/builder/src/features/blocks/inputs/rating/rating.spec.ts +++ b/apps/builder/src/features/blocks/inputs/rating/rating.spec.ts @@ -40,6 +40,7 @@ test('options should work', async ({ page }) => { await page.click('text=Rate from 0 to 10') await page.click('text="10"') await page.click('text="5"') + await page.getByText('One click submit').click() await page.click('text=Numbers') await page.click('text=Icons') await page.click('text="Custom icon?"') @@ -56,6 +57,5 @@ test('options should work', async ({ page }) => { typebotViewer(page).locator(`text=Extremely likely`) ).toBeVisible() await typebotViewer(page).locator(`svg >> nth=4`).click() - await typebotViewer(page).locator(`text=Send`).click() await expect(typebotViewer(page).locator(`text=5`)).toBeVisible() }) diff --git a/packages/bot-engine/src/features/blocks/inputs/rating/components/RatingForm.tsx b/packages/bot-engine/src/features/blocks/inputs/rating/components/RatingForm.tsx index 519f1de02a..29f59cac44 100644 --- a/packages/bot-engine/src/features/blocks/inputs/rating/components/RatingForm.tsx +++ b/packages/bot-engine/src/features/blocks/inputs/rating/components/RatingForm.tsx @@ -18,7 +18,11 @@ export const RatingForm = ({ block, onSubmit }: Props) => { onSubmit({ value: rating.toString() }) } - const handleClick = (rating: number) => setRating(rating) + const handleClick = (rating: number) => { + if (block.options.isOneClickSubmitEnabled) + onSubmit({ value: rating.toString() }) + setRating(rating) + } return (
diff --git a/packages/js/src/features/blocks/inputs/rating/components/RatingForm.tsx b/packages/js/src/features/blocks/inputs/rating/components/RatingForm.tsx index e43506b415..7652a16e0c 100644 --- a/packages/js/src/features/blocks/inputs/rating/components/RatingForm.tsx +++ b/packages/js/src/features/blocks/inputs/rating/components/RatingForm.tsx @@ -21,7 +21,11 @@ export const RatingForm = (props: Props) => { props.onSubmit({ value: rating.toString() }) } - const handleClick = (rating: number) => setRating(rating) + const handleClick = (rating: number) => { + if (props.block.options.isOneClickSubmitEnabled) + props.onSubmit({ value: rating.toString() }) + setRating(rating) + } return ( diff --git a/packages/models/src/features/blocks/inputs/rating.ts b/packages/models/src/features/blocks/inputs/rating.ts index f1e6130e12..f421316226 100644 --- a/packages/models/src/features/blocks/inputs/rating.ts +++ b/packages/models/src/features/blocks/inputs/rating.ts @@ -26,6 +26,7 @@ export const ratingInputOptionsSchema = optionBaseSchema.and( isEnabled: z.boolean(), svg: z.string().optional(), }), + isOneClickSubmitEnabled: z.boolean().optional(), }) )