<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>