77 <NcNoteCard v-if =" errorMessage" type =" error" >
88 {{ errorMessage }}
99 </NcNoteCard >
10- <div class =" signature-flow-options" >
10+
11+ <div class =" signature-flow-toggle" >
12+ <NcCheckboxRadioSwitch type =" switch"
13+ :checked =" enabled"
14+ :disabled =" loading"
15+ @update:checked =" onToggleChange" >
16+ <span >{{ t('libresign', 'Set default signing order') }}</span >
17+ </NcCheckboxRadioSwitch >
18+ <span v-if =" loading && !flowChanging" class =" toggle-status" >
19+ <NcLoadingIcon :size =" 20" />
20+ </span >
21+ <span v-else-if =" saved && !flowChanging" class =" toggle-status" >
22+ <NcSavingIndicatorIcon :size =" 20" />
23+ </span >
24+ <span v-else-if =" showErrorIcon && !flowChanging" class =" toggle-status" >
25+ <NcSavingIndicatorIcon :size =" 20" error />
26+ </span >
27+ </div >
28+
29+ <div v-if =" enabled" class =" signature-flow-options" >
1130 <NcCheckboxRadioSwitch v-for =" flow in availableFlows"
1231 :key =" flow.value"
1332 type =" radio"
2443 </p >
2544 </div >
2645 <div v-if =" selectedFlow?.value === flow.value" class =" signature-flow-option-status" >
27- <NcLoadingIcon v-if =" loading" :size =" 20" />
28- <NcSavingIndicatorIcon v-else-if =" saved" :size =" 20" />
29- <NcSavingIndicatorIcon v-else-if =" showErrorIcon" :size =" 20" error />
46+ <NcLoadingIcon v-if =" loading && flowChanging " :size =" 20" />
47+ <NcSavingIndicatorIcon v-else-if =" saved && flowChanging " :size =" 20" />
48+ <NcSavingIndicatorIcon v-else-if =" showErrorIcon && flowChanging " :size =" 20" error />
3049 </div >
3150 </div >
3251 </NcCheckboxRadioSwitch >
@@ -58,6 +77,7 @@ export default {
5877 data () {
5978 return {
6079 name: t (' libresign' , ' Signing order' ),
80+ enabled: false ,
6181 selectedFlow: null ,
6282 availableFlows: [
6383 {
@@ -75,6 +95,7 @@ export default {
7595 errorMessage: ' ' ,
7696 saved: false ,
7797 showErrorIcon: false ,
98+ flowChanging: false ,
7899 }
79100 },
80101 async mounted () {
@@ -83,25 +104,40 @@ export default {
83104 methods: {
84105 loadConfig () {
85106 try {
86- const mode = loadState (' libresign' , ' signature_flow' , ' parallel' )
87-
88- this .selectedFlow = this .availableFlows .find (
89- flow => flow .value === mode
90- )
107+ const mode = loadState (' libresign' , ' signature_flow' , null )
91108
92- if (! this .selectedFlow ) {
109+ if (mode === null || mode === ' ' ) {
110+ this .enabled = false
93111 this .selectedFlow = this .availableFlows [0 ]
112+ } else {
113+ this .enabled = true
114+ this .selectedFlow = this .availableFlows .find (
115+ flow => flow .value === mode
116+ )
117+
118+ if (! this .selectedFlow ) {
119+ this .selectedFlow = this .availableFlows [0 ]
120+ }
94121 }
95122 } catch (error) {
96123 console .error (' Error loading signature flow configuration:' , error)
97124 this .errorMessage = t (' libresign' , ' Could not load configuration.' )
125+ this .enabled = false
98126 this .selectedFlow = this .availableFlows [0 ]
99127 }
100128 },
129+ onToggleChange (value ) {
130+ this .enabled = value
131+ this .errorMessage = ' '
132+ this .showErrorIcon = false
133+ this .flowChanging = false
134+ this .saveConfig ()
135+ },
101136 onFlowChange (value ) {
102137 this .selectedFlow = this .availableFlows .find (flow => flow .value === value)
103138 this .errorMessage = ' '
104139 this .showErrorIcon = false
140+ this .flowChanging = true
105141 this .saveConfig ()
106142 },
107143 async saveConfig () {
@@ -113,12 +149,14 @@ export default {
113149 try {
114150 const url = generateOcsUrl (' apps/libresign/api/v1/admin/signature-flow/config' )
115151 await axios .post (url, {
116- mode: this .selectedFlow ? .value ?? ' parallel' ,
152+ enabled: this .enabled ,
153+ mode: this .enabled ? (this .selectedFlow ? .value ?? ' parallel' ) : null ,
117154 })
118155
119156 this .saved = true
120157 setTimeout (() => {
121158 this .saved = false
159+ this .flowChanging = false
122160 }, 3000 )
123161 } catch (error) {
124162 console .error (' Error saving signature flow configuration:' , error)
@@ -134,8 +172,27 @@ export default {
134172< / script>
135173
136174< style lang= " scss" scoped>
175+ .signature - flow- toggle {
176+ margin- bottom: 1 .5rem ;
177+ display: flex;
178+ align- items: center;
179+ gap: 0 .5rem ;
180+
181+ : deep (.checkbox - radio - switch ) {
182+ flex- shrink: 0 ;
183+ }
184+
185+ .toggle - status {
186+ display: flex;
187+ align- items: center;
188+ flex- shrink: 0 ;
189+ }
190+ }
191+
137192.signature - flow - options {
138193 margin- top: 0 .5rem ;
194+ margin- left: 2rem ;
195+ padding- top: 0 .5rem ;
139196
140197 .signature - flow- option {
141198 display: flex;
0 commit comments