Skip to content

Commit

Permalink
⚡ (numberInput) Variabalize min, max, step
Browse files Browse the repository at this point in the history
  • Loading branch information
baptisteArno committed Jun 15, 2023
1 parent d8c1a36 commit 4223485
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,11 @@ export const NumberInputSettings = ({ options, onOptionsChange }: Props) => {
onOptionsChange({ ...options, labels: { ...options.labels, placeholder } })
const handleButtonLabelChange = (button: string) =>
onOptionsChange({ ...options, labels: { ...options.labels, button } })
const handleMinChange = (min?: number) => onOptionsChange({ ...options, min })
const handleMaxChange = (max?: number) => onOptionsChange({ ...options, max })
const handleStepChange = (step?: number) =>
const handleMinChange = (min?: NumberInputOptions['min']) =>
onOptionsChange({ ...options, min })
const handleMaxChange = (max?: NumberInputOptions['max']) =>
onOptionsChange({ ...options, max })
const handleStepChange = (step?: NumberInputOptions['step']) =>
onOptionsChange({ ...options, step })
const handleVariableChange = (variable?: Variable) => {
onOptionsChange({ ...options, variableId: variable?.id })
Expand All @@ -38,19 +40,16 @@ export const NumberInputSettings = ({ options, onOptionsChange }: Props) => {
label="Min:"
defaultValue={options.min}
onValueChange={handleMinChange}
withVariableButton={false}
/>
<NumberInput
label="Max:"
defaultValue={options.max}
onValueChange={handleMaxChange}
withVariableButton={false}
/>
<NumberInput
label="Step:"
defaultValue={options.step}
onValueChange={handleStepChange}
withVariableButton={false}
/>
<Stack>
<FormLabel mb="0" htmlFor="variable">
Expand Down
24 changes: 24 additions & 0 deletions apps/viewer/src/features/chat/helpers/executeGroup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {
isInputBlock,
isIntegrationBlock,
isLogicBlock,
isNotEmpty,
} from '@typebot.io/lib'
import { executeLogic } from './executeLogic'
import { getNextGroup } from './getNextGroup'
Expand Down Expand Up @@ -195,6 +196,29 @@ const parseInput =
state.typebot.variables
)(block)
}
case InputBlockType.NUMBER: {
const parsedBlock = deepParseVariables(state.typebot.variables)({
...block,
prefilledValue: getPrefilledInputValue(state.typebot.variables)(
block
),
})
return {
...parsedBlock,
options: {
...parsedBlock.options,
min: isNotEmpty(parsedBlock.options.min as string)
? Number(parsedBlock.options.min)
: undefined,
max: isNotEmpty(parsedBlock.options.max as string)
? Number(parsedBlock.options.max)
: undefined,
step: isNotEmpty(parsedBlock.options.step as string)
? Number(parsedBlock.options.step)
: undefined,
},
}
}
default: {
return deepParseVariables(state.typebot.variables)({
...block,
Expand Down
7 changes: 4 additions & 3 deletions packages/schemas/features/blocks/inputs/number.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@ import { optionBaseSchema, blockBaseSchema } from '../baseSchemas'
import { defaultButtonLabel } from './constants'
import { InputBlockType } from './enums'
import { textInputOptionsBaseSchema } from './text'
import { variableStringSchema } from '../../utils'

export const numberInputOptionsSchema = optionBaseSchema
.merge(textInputOptionsBaseSchema)
.merge(
z.object({
min: z.number().optional(),
max: z.number().optional(),
step: z.number().optional(),
min: z.number().or(variableStringSchema).optional(),
max: z.number().or(variableStringSchema).optional(),
step: z.number().or(variableStringSchema).optional(),
})
)

Expand Down

0 comments on commit 4223485

Please sign in to comment.