| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- import {FORM_STATUS, SUBMIT_TYPE} from "~/types/enums";
- import {useContext} from "@nuxtjs/composition-api";
- import {Store} from "vuex";
- import {AnyJson} from "~/types/interfaces";
- import {Route} from "vue-router";
- /**
- * @category composables/form
- * @class UseNextStepFactory
- * Use Classe pour gérer actions post submit
- */
- export default class UseNextStepFactory{
- private store: Store<any>
- private router: any
- constructor() {
- const {store, app: {router}} = useContext()
- this.store = store
- this.router = router
- }
- invoke(args: any, response: AnyJson){
- const factory: AnyJson = {}
- factory[SUBMIT_TYPE.SAVE] = () => this.save(args, response.id)
- factory[SUBMIT_TYPE.SAVE_AND_BACK] = () => this.saveAndGoTo(args)
- return factory
- }
- /**
- * Action Sauvegarder qui redirige vers la page d'edit si on est en mode create
- * @param route
- * @param id
- */
- save(route: Route, id: number){
- if(this.store.state.form.formStatus === FORM_STATUS.CREATE){
- route.path += id
- this.router.push(route)
- }
- }
- /**
- * Action sauvegarder et route suivante qui redirige vers une route
- * @param route
- */
- saveAndGoTo(route: Route){
- this.router.push(route)
- }
- }
|