diff --git a/public/akaunting-js/generalAction.js b/public/akaunting-js/generalAction.js
index 5a35ce460..3b5dc3b2c 100644
--- a/public/akaunting-js/generalAction.js
+++ b/public/akaunting-js/generalAction.js
@@ -290,4 +290,17 @@ function OnInput() {
this.style.height = 'auto';
this.style.height = (this.scrollHeight) + 'px';
}
-//Auto Height for Textarea
\ No newline at end of file
+//Auto Height for Textarea
+
+//Loading scenario for href links
+document.querySelectorAll('[data-link-loading]').forEach((href) => {
+ let target_link_html = href.parentElement;
+
+ target_link_html.addEventListener('click', function () {
+ this.classList.add('disabled-link');
+ this.querySelector('[data-link-spin]').classList.remove('hidden');
+ this.querySelector('[data-link-text]').classList.add('opacity-0');
+ this.querySelector('[data-link-text]').classList.remove('opacity-1');
+ });
+});
+//Loading scenario for href links
\ No newline at end of file
diff --git a/public/css/app.css b/public/css/app.css
index 07ee38b4c..5fa6b504e 100644
--- a/public/css/app.css
+++ b/public/css/app.css
@@ -35773,6 +35773,12 @@ html[dir='rtl'] .el-input__suffix {
text-overflow: unset;
}
+.disabled-link{
+ pointer-events: none;
+ cursor: default;
+ opacity: 0.5;
+}
+
@media only screen and (max-width: 480px) {
.small-table-width {
width: 450px;
diff --git a/resources/assets/sass/app.css b/resources/assets/sass/app.css
index 610fd9e42..2a2590f19 100644
--- a/resources/assets/sass/app.css
+++ b/resources/assets/sass/app.css
@@ -495,6 +495,10 @@ html[dir='rtl'] .el-input__suffix {
text-overflow: unset;
}
+.disabled-link {
+ @apply cursor-default pointer-events-none opacity-50;
+}
+
@media only screen and (max-width: 480px) {
.small-table-width {
width: 450px;
diff --git a/resources/views/components/layouts/modules.blade.php b/resources/views/components/layouts/modules.blade.php
index 6aef81c94..ac228b1d2 100644
--- a/resources/views/components/layouts/modules.blade.php
+++ b/resources/views/components/layouts/modules.blade.php
@@ -16,6 +16,8 @@