213 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			213 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|     <akaunting-modal
 | |
|             :title="title"
 | |
|             :show="display"
 | |
|             @cancel="onCancel"
 | |
|             v-if="display">
 | |
|         <template #modal-body>
 | |
|             <div class="modal-body text-left">
 | |
|                 <div class="row">
 | |
|                     <div class="col-md-12">
 | |
|                         <base-input
 | |
|                             v-model="form.name"
 | |
|                             :label="text.name"
 | |
|                             prepend-icon="fas fa-tag"
 | |
|                             :placeholder="text.name"
 | |
|                             inputGroupClasses="input-group-merge"
 | |
|                         ></base-input>
 | |
|                     </div>
 | |
| 
 | |
|                     <!--
 | |
|                     <akaunting-radio-group
 | |
|                         :name="'enabled'"
 | |
|                         :text="text.enabled"
 | |
|                         :value="form.enabled"
 | |
|                         @change="onEnabled"
 | |
|                         :enable="text.yes"
 | |
|                         :disable="text.no"
 | |
|                         :col="'col-md-12'"
 | |
|                     ></akaunting-radio-group>
 | |
|                     -->
 | |
|                 </div>
 | |
|             </div>
 | |
|         </template>
 | |
| 
 | |
|         <template #card-footer>
 | |
|             <div class="row">
 | |
|                 <div class="col-md-12">
 | |
|                     <div class="float-right">
 | |
|                         <button type="button" class="btn btn-icon btn-outline-secondary" @click="onCancel">
 | |
|                             <span class="btn-inner--icon"><i class="fas fa-times"></i></span>
 | |
|                             <span class="btn-inner--text">{{ text.cancel }}</span>
 | |
|                         </button>
 | |
| 
 | |
|                         <button :disabled="form.loading" type="button" class="btn btn-icon btn-success button-submit" @click="onSave">
 | |
|                             <div v-if="form.loading" class="aka-loader-frame"><div class="aka-loader"></div></div>
 | |
|                             <span v-if="!form.loading" class="btn-inner--icon"><i class="fas fa-save"></i></span>
 | |
|                             <span v-if="!form.loading" class="btn-inner--text">{{ text.save }}</span>
 | |
|                         </button>
 | |
|                     </div>
 | |
|                 </div>
 | |
|             </div>
 | |
|         </template>
 | |
|     </akaunting-modal>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| import AkauntingModal from "./AkauntingModal";
 | |
| import AkauntingRadioGroup from './forms/AkauntingRadioGroup';
 | |
| import NProgress from 'nprogress'
 | |
| import 'nprogress/nprogress.css'
 | |
| import Form from './../plugins/form';
 | |
| import BulkAction from './../plugins/bulk-action';
 | |
| import NProgressAxios from './../plugins/nprogress-axios';
 | |
| 
 | |
| export default {
 | |
|     name: 'akaunting-dashobard',
 | |
| 
 | |
|     components: {
 | |
|         AkauntingModal,
 | |
|         AkauntingRadioGroup
 | |
|     },
 | |
| 
 | |
|     props: {
 | |
|         show: Boolean,
 | |
|         title: {
 | |
|             type: String,
 | |
|             default: '',
 | |
|             description: "Modal header title"
 | |
|         },
 | |
|         text: {},
 | |
|         name: {
 | |
|             type: String,
 | |
|             default: ''
 | |
|         },
 | |
|         enabled: Number,
 | |
|         type: {
 | |
|             type: String,
 | |
|             default: 'create',
 | |
|             description: "Modal header title"
 | |
|         },
 | |
|         dashboard_id: {
 | |
|             type: Number,
 | |
|             default: 0,
 | |
|             description: "Modal header title"
 | |
|         },
 | |
|     },
 | |
| 
 | |
|     data() {
 | |
|         return {
 | |
|             form: {
 | |
|                 loading: false,
 | |
|                 name: this.name,
 | |
|                 enabled: this.enabled
 | |
|             },
 | |
|             display: this.show
 | |
|         };
 | |
|     },
 | |
| 
 | |
|     methods: {
 | |
|         closeModal() {
 | |
|             this.$emit("update:show", false);
 | |
|             this.$emit("close");
 | |
|         },
 | |
|         onSave() {
 | |
|             this.form.loading = true;
 | |
| 
 | |
|             let data = Object.assign({}, this.form);
 | |
|             delete data.loading;
 | |
| 
 | |
|             var self = this;
 | |
| 
 | |
|             var path =  url + '/common/dashboards';
 | |
| 
 | |
|             if ((self.type != 'create')) {
 | |
|                 path = url + '/common/dashboards/' + self.dashboard_id;
 | |
|                 data['_method'] = 'PATCH';
 | |
|             }
 | |
| 
 | |
|             axios.post(path, data)
 | |
|                 .then(function (response) {
 | |
|                     self.form.loading = false;
 | |
| 
 | |
|                     if (response.data.redirect) {
 | |
|                         self.form.loading = true;
 | |
| 
 | |
|                         window.location.href = response.data.redirect;
 | |
|                     }
 | |
| 
 | |
|                     self.form.response = response.data;
 | |
|                 })
 | |
|                 .catch(function (error) {
 | |
|                     this.errors.record(error.response.data.errors);
 | |
| 
 | |
|                     self.form.loading = false;
 | |
|                 });
 | |
|         },
 | |
|         onCancel() {
 | |
|             this.display = false;
 | |
|             this.form.name = '';
 | |
|             this.form.enabled = 1;
 | |
| 
 | |
|             this.$emit("cancel");
 | |
|         },
 | |
|         onEnabled(value) {
 | |
|             this.form.enabled = value;
 | |
|         }
 | |
|     },
 | |
| 
 | |
|     watch: {
 | |
|         show(val) {
 | |
|             let documentClasses = document.body.classList;
 | |
|             if (val) {
 | |
|                 documentClasses.add("modal-open");
 | |
|             } else {
 | |
|                 documentClasses.remove("modal-open");
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| }
 | |
| </script>
 | |
| 
 | |
| <style>
 | |
|     .loader10 {
 | |
|         width: 28px;
 | |
|         height: 28px;
 | |
|         border-radius: 50%;
 | |
|         position: relative;
 | |
|         animation: loader10 0.9s ease alternate infinite;
 | |
|         animation-delay: 0.36s;
 | |
|         top: 50%;
 | |
|         margin: -42px auto 0;
 | |
|     }
 | |
| 
 | |
|     .loader10::after, .loader10::before {
 | |
|         content: '';
 | |
|         position: absolute;
 | |
|         width: 28px;
 | |
|         height: 28px;
 | |
|         border-radius: 50%;
 | |
|         animation: loader10 0.9s ease alternate infinite;
 | |
|     }
 | |
| 
 | |
|     .loader10::before {
 | |
|         left: -40px;
 | |
|         animation-delay: 0.18s;
 | |
|     }
 | |
| 
 | |
|     .loader10::after {
 | |
|         right: -40px;
 | |
|         animation-delay: 0.54s;
 | |
|     }
 | |
| 
 | |
|     @keyframes loader10 {
 | |
|         0% {
 | |
|             box-shadow: 0 28px 0 -28px #0052ec;
 | |
|         }
 | |
| 
 | |
|         100% {
 | |
|             box-shadow: 0 28px 0 #0052ec;
 | |
|         }
 | |
|     }
 | |
| </style>
 |