Fixed document sent to and save button loading issue..

This commit is contained in:
Cüneyt Şentürk 2022-07-28 00:42:16 +03:00
parent 612e5b7172
commit 14ebe4e79b
4 changed files with 25 additions and 35 deletions

View File

@ -20,6 +20,10 @@ class Buttons extends Component
public $cancelText; public $cancelText;
public $saveDisabled;
public $saveLoading;
/** /**
* Create a new component instance. * Create a new component instance.
* *
@ -27,7 +31,8 @@ class Buttons extends Component
*/ */
public function __construct( public function __construct(
$groupClass = '', $groupClass = '',
$cancel = '', $cancelRoute = '', $cancelUrl = '', $cancelClass = '', $cancelText = '', $withoutCancel = false $cancel = '', $cancelRoute = '', $cancelUrl = '', $cancelClass = '', $cancelText = '', $withoutCancel = false,
$saveDisabled = '', $saveLoading = ''
) { ) {
$this->groupClass = $this->getGroupClass($groupClass); $this->groupClass = $this->getGroupClass($groupClass);
@ -35,6 +40,9 @@ class Buttons extends Component
$this->cancelClass = $this->getCancelClass($cancelClass); $this->cancelClass = $this->getCancelClass($cancelClass);
$this->cancelText = $this->getCancelText($cancelText); $this->cancelText = $this->getCancelText($cancelText);
$this->withoutCancel = $withoutCancel; $this->withoutCancel = $withoutCancel;
$this->saveDisabled = ! empty($saveDisabled) ? $saveDisabled : 'form.loading';
$this->saveLoading = ! empty($saveLoading) ? $saveLoading : 'form.loading';
} }
/** /**
@ -62,11 +70,11 @@ class Buttons extends Component
return $cancel; return $cancel;
} }
if (!empty($route)) { if (! empty($route)) {
return $this->getRouteAction($route); return $this->getRouteAction($route);
} }
if (!empty($url)) { if (! empty($url)) {
return $this->getUrlAction($url); return $this->getUrlAction($url);
} }

View File

@ -76,6 +76,7 @@ const app = new Vue({
',,' ',,'
], ],
email_template: false, email_template: false,
send_to: false,
} }
}, },
@ -460,7 +461,6 @@ const app = new Vue({
}, },
onSelectedTax(item_index) { onSelectedTax(item_index) {
if (! this.tax_id) { if (! this.tax_id) {
return; return;
} }
@ -968,7 +968,6 @@ const app = new Vue({
form_html.querySelectorAll('[type="submit"]').forEach((submit) => { form_html.querySelectorAll('[type="submit"]').forEach((submit) => {
submit.addEventListener('click', () => { submit.addEventListener('click', () => {
this.minor_form_loading = false;
window.onbeforeunload = null; window.onbeforeunload = null;
}); });
}); });
@ -983,33 +982,10 @@ const app = new Vue({
}, },
onSubmitViaSendEmail() { onSubmitViaSendEmail() {
let type_submit_icon = document.querySelector('[type="submit"]').querySelector('i');
let type_submit_span = document.querySelector('[type="submit"]').querySelector('span');
this.form['senddocument'] = true; this.form['senddocument'] = true;
this.send_to = true;
this.minor_form_loading = true;
if (this.form.loading) {
type_submit_icon.classList.add('hidden');
type_submit_span.classList.add('opacity-100');
}
setTimeout(() => {
if (type_submit_icon && type_submit_span) {
type_submit_icon.classList.remove('hidden');
type_submit_span.classList.remove('opacity-100');
}
}, 5000);
this.onSubmit(); this.onSubmit();
setTimeout(() => {
if (Object.keys(this.form.errors.errors.length > 0)) {
this.minor_form_loading = false;
return;
}
}, 200);
}, },
}, },
@ -1150,5 +1126,11 @@ const app = new Vue({
this.form.discount = this.form.discount.replace(',', '.'); this.form.discount = this.form.discount.replace(',', '.');
}, },
'form.loading': function (newVal, oldVal) {
if (! newVal) {
this.send_to = false;
}
},
}, },
}); });

View File

@ -1,7 +1,7 @@
<x-form.section> <x-form.section>
<x-slot name="foot"> <x-slot name="foot">
<div class="flex justify-end"> <div class="flex justify-end">
<x-form.buttons cancel-route="{{ $cancelRoute }}" /> <x-form.buttons cancel-route="{{ $cancelRoute }}" save-loading="! send_to && form.loading" />
@if (! $hideSendTo) @if (! $hideSendTo)
<x-button <x-button
@ -11,12 +11,12 @@
::disabled="form.loading" ::disabled="form.loading"
@click="onSubmitViaSendEmail" @click="onSubmitViaSendEmail"
> >
<i v-if="form.loading" class="animate-submit delay-[0.28s] absolute w-2 h-2 rounded-full left-0 right-0 -top-3.5 m-auto before:absolute before:w-2 before:h-2 before:-left-3.5 before:rounded-full before:animate-submit before:delay-[0.14s] after:absolute after:w-2 after:h-2 after:-right-3.5 after:rounded-full after:animate-submit after:delay-[0.42s]"></i> <i v-if="send_to && form.loading" class="animate-submit delay-[0.28s] absolute w-2 h-2 rounded-full left-0 right-0 -top-3.5 m-auto before:absolute before:w-2 before:h-2 before:-left-3.5 before:rounded-full before:animate-submit before:delay-[0.14s] after:absolute after:w-2 after:h-2 after:-right-3.5 after:rounded-full after:animate-submit after:delay-[0.42s]"></i>
<span :class="[{'opacity-0': form.loading}]"> <span :class="[{'opacity-0': send_to && form.loading}]">
{{ trans('general.send_to') }} {{ trans('general.send_to') }}
</span> </span>
</x-button> </x-button>
@endif @endif
</div> </div>
</x-slot> </x-slot>
</x-form.section> </x-form.section>

View File

@ -14,10 +14,10 @@
<x-button <x-button
type="submit" type="submit"
class="relative flex items-center justify-center bg-green hover:bg-green-700 text-white px-6 py-1.5 text-base rounded-lg disabled:bg-green-100" class="relative flex items-center justify-center bg-green hover:bg-green-700 text-white px-6 py-1.5 text-base rounded-lg disabled:bg-green-100"
::disabled="form.loading" ::disabled="{!! $saveDisabled !!}"
override="class" override="class"
> >
<x-button.loading> <x-button.loading action="{!! $saveLoading !!}">
{{ trans('general.save') }} {{ trans('general.save') }}
</x-button.loading> </x-button.loading>
</x-button> </x-button>