|
Lines 93-99
Link Here
|
| 93 |
!instancedResource.stickyToolbar.includes('Form')) |
93 |
!instancedResource.stickyToolbar.includes('Form')) |
| 94 |
" |
94 |
" |
| 95 |
> |
95 |
> |
| 96 |
<ButtonSubmit /> |
96 |
<DropdownButtons :dropdownButtons="dropdownButtons" :cssClass="'btn-primary'"> |
|
|
97 |
<ButtonSubmit :title="buttonTextLeader" /> |
| 98 |
</DropdownButtons> |
| 97 |
<router-link |
99 |
<router-link |
| 98 |
:to="{ name: instancedResource.components.list }" |
100 |
:to="{ name: instancedResource.components.list }" |
| 99 |
role="button" |
101 |
role="button" |
|
Lines 109-122
Link Here
|
| 109 |
import { computed, onBeforeMount, reactive, ref, useTemplateRef } from "vue"; |
111 |
import { computed, onBeforeMount, reactive, ref, useTemplateRef } from "vue"; |
| 110 |
import FormElement from "./FormElement.vue"; |
112 |
import FormElement from "./FormElement.vue"; |
| 111 |
import ButtonSubmit from "./ButtonSubmit.vue"; |
113 |
import ButtonSubmit from "./ButtonSubmit.vue"; |
|
|
114 |
import DropdownButtons from "./DropdownButtons.vue"; |
| 112 |
import TabsWrapper from "./TabsWrapper.vue"; |
115 |
import TabsWrapper from "./TabsWrapper.vue"; |
| 113 |
import AccordionWrapper from "./AccordionWrapper.vue"; |
116 |
import AccordionWrapper from "./AccordionWrapper.vue"; |
|
|
117 |
import { $__ } from "@koha-vue/i18n" |
| 114 |
|
118 |
|
| 115 |
export default { |
119 |
export default { |
| 116 |
inheritAttrs: false, |
120 |
inheritAttrs: false, |
| 117 |
setup(props) { |
121 |
setup(props) { |
| 118 |
const initialized = ref(false); |
122 |
const initialized = ref(false); |
| 119 |
const resource = ref(null); |
123 |
const resource = ref(null); |
|
|
124 |
const editMode = ref(false); |
| 125 |
const buttonTextLeader = computed(() => editMode.value ? $__("Save") : $__("Submit")) |
| 120 |
|
126 |
|
| 121 |
const resourceToSave = computed(() => { |
127 |
const resourceToSave = computed(() => { |
| 122 |
return ( |
128 |
return ( |
|
Lines 139-144
export default {
Link Here
|
| 139 |
props.instancedResource.idAttr |
145 |
props.instancedResource.idAttr |
| 140 |
] |
146 |
] |
| 141 |
) { |
147 |
) { |
|
|
148 |
editMode.value = true |
| 142 |
props.instancedResource.getResource( |
149 |
props.instancedResource.getResource( |
| 143 |
props.instancedResource.route.params[ |
150 |
props.instancedResource.route.params[ |
| 144 |
props.instancedResource.idAttr |
151 |
props.instancedResource.idAttr |
|
Lines 158-164
export default {
Link Here
|
| 158 |
const saveAndNavigate = ($event, resourceToSave) => { |
165 |
const saveAndNavigate = ($event, resourceToSave) => { |
| 159 |
const { components, navigationOnFormSave, onFormSave, router, idAttr } = props.instancedResource |
166 |
const { components, navigationOnFormSave, onFormSave, router, idAttr } = props.instancedResource |
| 160 |
// Default to show |
167 |
// Default to show |
| 161 |
const navigationAction = navigationOnFormSave || components.show |
168 |
const navigationAction = saveOptionSelected.value || navigationOnFormSave || components.show |
| 162 |
const idParamRequired = navigationAction === components.show || navigationAction === components.edit |
169 |
const idParamRequired = navigationAction === components.show || navigationAction === components.edit |
| 163 |
onFormSave($event, resourceToSave).then(resource => { |
170 |
onFormSave($event, resourceToSave).then(resource => { |
| 164 |
if(resource) { |
171 |
if(resource) { |
|
Lines 173-184
export default {
Link Here
|
| 173 |
} |
180 |
} |
| 174 |
}) |
181 |
}) |
| 175 |
} |
182 |
} |
|
|
183 |
|
| 184 |
const saveOptionSelected = ref(props.instancedResource.navigationOnFormSave) |
| 185 |
const dropdownButtons = computed(() => { |
| 186 |
const { components, navigationOnFormSave } = props.instancedResource |
| 187 |
|
| 188 |
const buttonOptions = { |
| 189 |
list: { |
| 190 |
title: $__("%s and return to list").format(buttonTextLeader.value), |
| 191 |
action: "submit", |
| 192 |
cssClass: "btn btn-default", |
| 193 |
callback: () => { |
| 194 |
saveOptionSelected.value = components.list |
| 195 |
} |
| 196 |
}, |
| 197 |
show: { |
| 198 |
title: $__("%s and show").format(buttonTextLeader.value), |
| 199 |
action: "submit", |
| 200 |
cssClass: "btn btn-default", |
| 201 |
callback: () => { |
| 202 |
saveOptionSelected.value = components.show |
| 203 |
} |
| 204 |
}, |
| 205 |
edit: { |
| 206 |
title: $__("%s and continue editing").format(buttonTextLeader.value), |
| 207 |
action: "submit", |
| 208 |
cssClass: "btn btn-default", |
| 209 |
callback: () => { |
| 210 |
saveOptionSelected.value = components.edit |
| 211 |
} |
| 212 |
} |
| 213 |
} |
| 214 |
return Object.keys(buttonOptions).reduce((acc, key) => { |
| 215 |
if(key === "show" && !navigationOnFormSave) return acc |
| 216 |
if(components[key] === navigationOnFormSave) return acc |
| 217 |
return [buttonOptions[key], ...acc] |
| 218 |
},[]) |
| 219 |
}) |
| 220 |
|
| 176 |
return { |
221 |
return { |
| 177 |
initialized, |
222 |
initialized, |
| 178 |
resource, |
223 |
resource, |
| 179 |
resourceToSave, |
224 |
resourceToSave, |
| 180 |
resourceForm, |
225 |
resourceForm, |
| 181 |
saveAndNavigate |
226 |
saveAndNavigate, |
|
|
227 |
editMode, |
| 228 |
dropdownButtons, |
| 229 |
buttonTextLeader |
| 182 |
}; |
230 |
}; |
| 183 |
}, |
231 |
}, |
| 184 |
props: { |
232 |
props: { |
|
Lines 189-194
export default {
Link Here
|
| 189 |
FormElement, |
237 |
FormElement, |
| 190 |
TabsWrapper, |
238 |
TabsWrapper, |
| 191 |
AccordionWrapper, |
239 |
AccordionWrapper, |
|
|
240 |
DropdownButtons |
| 192 |
}, |
241 |
}, |
| 193 |
name: "ResourceFormSave", |
242 |
name: "ResourceFormSave", |
| 194 |
}; |
243 |
}; |