* feat: add field type change warning dialog to routing forms - Add FieldTypeChangeWarningDialog component to prevent field type changes - Show informative dialog explaining data integrity concerns when users try to change field types - Provide alternative suggestion to create new field instead of changing existing one - Add i18n translations for dialog messages - Integrate dialog into routing form edit page field type selector - Bypass Teams plan restriction for testing routing forms functionality - Fix ESLint error by properly handling scrollIntoView in embed mode with disable comment Prevents data integrity issues by blocking field type changes (e.g. multiselect → text) that could make existing form responses incompatible and cause data loss. Co-Authored-By: eunjae@cal.com <hey@eunjae.dev> * fix: make field type dialog more selective to allow legitimate changes during form creation - Only show warning dialog when there's actual data integrity risk - Allow field type changes for new fields or fields without meaningful labels - Fixes E2E test timeout by not blocking legitimate field type changes - Maintains data protection for existing fields with real data Co-Authored-By: eunjae@cal.com <hey@eunjae.dev> * fix: complete field type dialog implementation with translations and component - Add FieldTypeChangeWarningDialog component with proper i18n support - Add all required translation strings for dialog messages - Ensure dialog only shows for actual data integrity risks - Allow legitimate field type changes during form creation Co-Authored-By: eunjae@cal.com <hey@eunjae.dev> * simplify field type dialog: one button, button replaces SelectField, remove forms page changes Co-Authored-By: eunjae@cal.com <hey@eunjae.dev> * use Button component * feat: restore SelectField with conditional dialog for field type changes - Restore original SelectField dropdown to allow users to see available field types - Add conditional logic to show dialog only when different type is selected AND form has responses - Prevent field type changes by not calling onChange when dialog is shown - Pass hasFormResponses prop from FormEdit to Field component - Maintain data integrity while providing clear user guidance Co-Authored-By: eunjae@cal.com <hey@eunjae.dev> * controlled value * convert dialog to tooltip * Update common.json * remove unused texts * allow type changing for new field --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: eunjae@cal.com <hey@eunjae.dev>
Routing Forms App
Vocabulary
- RaqbField refers to the field in the context of React Awesome Query Builder(RAQB)
- See
getQueryBuilderConfig
- See
- Field refers to the field in the Routing Form
Understanding the structure of queryValue(type JsonTree)
AttributeQueryValue
- { id: "Some-id-generated-and-used-internally-by-raqb" type: "group", children1: { "Some-other-id-generated-and-used-internally-by-raqb": { type: "rule", properties: { field: "ATTRIBUTE.id", operator: "multiselect_equals", // One of many operators possible value: ["AttributeOption.id"], // This is the type of the attribute and the operator corresponds to it. The data provided to jsonLogic on which the logic(generated from RAQB config and this queryValue) is applied must also be as per the requirement of the operator. valueType: ["multiselect"] } } }
}
How to run Tests
yarn e2e:app-store runs all Apps' tests. You can use describe.only() to run Routing Forms tests only.
Make sure that the app is running already with NEXT_PUBLIC_IS_E2E=1 so that the app is installable