({
ref,
opened,
onClose,
}: {
ref?: React.Ref<ConfigFormModalRef>
opened: boolean
onClose: () => void
})
| 119 | } |
| 120 | |
| 121 | export function ConfigFormDrawer({ |
| 122 | ref, |
| 123 | opened, |
| 124 | onClose, |
| 125 | }: { |
| 126 | ref?: React.Ref<ConfigFormModalRef> |
| 127 | opened: boolean |
| 128 | onClose: () => void |
| 129 | }) { |
| 130 | const { t } = useTranslation() |
| 131 | const [editingID, setEditingID] = useState<string>() |
| 132 | const [origins, setOrigins] = useState<FormValues>() |
| 133 | |
| 134 | const { |
| 135 | handleSubmit, |
| 136 | setValue: setValueOriginal, |
| 137 | reset, |
| 138 | control, |
| 139 | formState: { errors, isDirty }, |
| 140 | } = useForm<FormValues>({ |
| 141 | resolver: zodResolver(schema), |
| 142 | defaultValues, |
| 143 | mode: 'all', |
| 144 | }) |
| 145 | |
| 146 | const setValue = useSetValue(setValueOriginal) |
| 147 | const formValues = useWatch({ control }) |
| 148 | |
| 149 | const initOrigins = (origins: FormValues) => { |
| 150 | reset(origins) |
| 151 | setOrigins(origins) |
| 152 | } |
| 153 | |
| 154 | const resetForm = useCallback(() => { |
| 155 | reset(defaultValues) |
| 156 | }, [reset]) |
| 157 | |
| 158 | useImperativeHandle(ref, () => ({ |
| 159 | form: { |
| 160 | setValues: (values: FormValues) => reset(values), |
| 161 | reset: resetForm, |
| 162 | }, |
| 163 | setEditingID, |
| 164 | initOrigins, |
| 165 | })) |
| 166 | |
| 167 | const handleOpenChange = useCallback( |
| 168 | (open: boolean) => { |
| 169 | if (!open) { |
| 170 | onClose() |
| 171 | // Delay reset until after dialog close animation completes |
| 172 | setTimeout(() => { |
| 173 | resetForm() |
| 174 | setEditingID(undefined) |
| 175 | setOrigins(undefined) |
| 176 | }, 200) |
| 177 | } |
| 178 | }, |
nothing calls this directly
no test coverage detected