1
1
<template >
2
- <div >
3
- <p class =" text-muted-color" >
4
- Une page additionelle est insérée automatiquement au début du formulaire,
5
- contenant le nom de l'auteur.ice ainsi qu'un champ libre.
6
- </p >
7
-
8
- <AdminFamiliesEditForm
9
- :original-form-fields =" fetchedFamily.comment_form.fields"
10
- :on-save-callback =" onSave"
11
- kind-name =" commentaire"
12
- kind =" comment"
13
- :categories =" categories"
14
- />
15
- </div >
2
+ <Tabs v-model:value =" tabValue" >
3
+ <TabList >
4
+ <Tab value =" 0" >
5
+ Éditeur visuel
6
+ </Tab >
7
+ <Tab value =" 1" >
8
+ Éditeur avancé
9
+ </Tab >
10
+ </TabList >
11
+ <TabPanels >
12
+ <TabPanel value =" 0" >
13
+ <p class =" text-muted-color" >
14
+ Une page additionelle est insérée automatiquement au début du formulaire,
15
+ contenant le nom de l'auteur.ice ainsi qu'un champ libre.
16
+ </p >
17
+
18
+ <AdminFamiliesEditForm
19
+ :original-form-fields =" fetchedFamily.comment_form.fields"
20
+ :categories =" categories"
21
+ :on-save-callback =" onSave"
22
+ class =" -ml-4"
23
+ kind =" comment"
24
+ kind-name =" commentaire"
25
+ />
26
+ </TabPanel >
27
+ <TabPanel value =" 1" >
28
+ <AdminFamiliesEditFormJson
29
+ :original-form-fields =" fetchedFamily.comment_form.fields"
30
+ :on-sync-callback =" onSynchronise"
31
+ kind =" comment"
32
+ kind-name =" commentaire"
33
+ />
34
+ </TabPanel >
35
+ </TabPanels >
36
+ </Tabs >
16
37
</template >
17
38
18
39
<script setup lang="ts">
@@ -28,9 +49,9 @@ if (!state.is_admin)
28
49
navigateTo (' /admin/home' )
29
50
30
51
const id = useRoute ().params .id as string
52
+ const tabValue = ref (' 0' )
31
53
32
54
const fetchedFamily = await state .fetchFamily (id )
33
- const editedFamily = JSON .parse (JSON .stringify (fetchedFamily ))
34
55
await state .fetchCategories ()
35
56
const categories = state .categories .filter (category => category .family_id == fetchedFamily .id )
36
57
@@ -47,13 +68,24 @@ initAdminLayout(
47
68
48
69
async function onSave(newFormFields : FormField []): Promise <{ error: Error | undefined }> {
49
70
try {
50
- editedFamily .comment_form .fields = newFormFields
51
- await state .client .updateFamily (id , editedFamily )
71
+ fetchedFamily .comment_form .fields = newFormFields
72
+ await state .client .updateFamily (id , fetchedFamily )
52
73
navigateTo (' /admin/families' )
53
74
return { error: undefined }
54
75
}
55
76
catch (error ) {
56
77
return { error: error as Error }
57
78
}
58
79
}
80
+
81
+ async function onSynchronise(newFormFields : FormField []): Promise <{ error: Error | undefined }> {
82
+ try {
83
+ fetchedFamily .comment_form .fields = newFormFields
84
+ tabValue .value = ' 0' // Switch back to the visual editor tab after synchronization
85
+ return { error: undefined }
86
+ }
87
+ catch (error ) {
88
+ return { error: error as Error }
89
+ }
90
+ }
59
91
</script >
0 commit comments