Skip to content

Commit b883660

Browse files
committed
fix: fix Dashboard Duplication valiation checks
1 parent 9d269b9 commit b883660

1 file changed

Lines changed: 24 additions & 5 deletions

File tree

web/src/components/dashboards/perses/dashboard-action-modals.tsx

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -208,12 +208,8 @@ export const DuplicateActionModal = ({ dashboard, isOpen, onClose }: ActionModal
208208
return allProjects[0] || '';
209209
}, [dashboard, editableProjects, allProjects]);
210210

211-
const { schema: validationSchema } = useDashboardValidationSchema(defaultProject, t);
212-
213211
const form = useForm<CreateDashboardValidationType>({
214-
resolver: validationSchema
215-
? zodResolver(validationSchema)
216-
: zodResolver(createDashboardDialogValidationSchema(t)),
212+
resolver: zodResolver(createDashboardDialogValidationSchema(t)),
217213
mode: 'onBlur',
218214
defaultValues: {
219215
projectName: defaultProject,
@@ -223,6 +219,8 @@ export const DuplicateActionModal = ({ dashboard, isOpen, onClose }: ActionModal
223219

224220
const selectedProjectName = form.watch('projectName');
225221

222+
const { schema: dynamicValidationSchema } = useDashboardValidationSchema(selectedProjectName, t);
223+
226224
const projectOptions = useMemo<TypeaheadSelectOption[]>(() => {
227225
if (!editableProjects) {
228226
return [];
@@ -236,6 +234,27 @@ export const DuplicateActionModal = ({ dashboard, isOpen, onClose }: ActionModal
236234

237235
const createDashboardMutation = useCreateDashboardMutation();
238236

237+
React.useEffect(() => {
238+
if (dynamicValidationSchema && selectedProjectName) {
239+
const currentValues = form.getValues();
240+
const result = dynamicValidationSchema.safeParse(currentValues);
241+
242+
if (!result.success) {
243+
// Apply validation errors for the current form values
244+
result.error.issues.forEach((issue) => {
245+
if (issue.path[0] === 'dashboardName') {
246+
form.setError('dashboardName', {
247+
type: 'validate',
248+
message: issue.message,
249+
});
250+
}
251+
});
252+
} else {
253+
form.clearErrors('dashboardName');
254+
}
255+
}
256+
}, [selectedProjectName, dynamicValidationSchema, form]);
257+
239258
React.useEffect(() => {
240259
if (isOpen && dashboard && editableProjects?.length > 0 && defaultProject) {
241260
form.reset({

0 commit comments

Comments
 (0)