feat: VivesPOS landing on Winter CMS 1.2 — theme + plugin + Dockerfile
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
Some checks are pending
Module sub-split / Sub-split (push) Waiting to run
- Base: wintercms/winter branch 1.2 (full framework) - Theme vivespos: Canvas 7 + Bootstrap 5 CDN, custom CSS - Layout: deferred GTM/GA4 tracking, JSON-LD SoftwareApplication - Partials: hero (offline-first), features, modes (offline/nube toggle), screenshots, pricing (3 planes), comparison, FAQ, CTA - Plugin VivesPOS.Site with ContactForm - Dockerfile: PHP 8.2 Apache, port 80, healthcheck - Added winter/wn-pages, blog, sitemap, seo plugins - Active theme set to vivespos
This commit is contained in:
70
modules/system/assets/js/snowboard/extras/AttachLoading.js
Normal file
70
modules/system/assets/js/snowboard/extras/AttachLoading.js
Normal file
@@ -0,0 +1,70 @@
|
||||
import Singleton from '../abstracts/Singleton';
|
||||
|
||||
/**
|
||||
* Allows attaching a loading class on elements that an AJAX request is targeting.
|
||||
*
|
||||
* @copyright 2021 Winter.
|
||||
* @author Ben Thomson <git@alfreido.com>
|
||||
*/
|
||||
export default class AttachLoading extends Singleton {
|
||||
/**
|
||||
* Defines dependenices.
|
||||
*
|
||||
* @returns {string[]}
|
||||
*/
|
||||
dependencies() {
|
||||
return ['request'];
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines listeners.
|
||||
*
|
||||
* @returns {Object}
|
||||
*/
|
||||
listens() {
|
||||
return {
|
||||
ajaxStart: 'ajaxStart',
|
||||
ajaxDone: 'ajaxDone',
|
||||
};
|
||||
}
|
||||
|
||||
ajaxStart(promise, request) {
|
||||
if (!request.element) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (request.element.tagName === 'FORM') {
|
||||
const loadElements = request.element.querySelectorAll('[data-attach-loading]');
|
||||
if (loadElements.length > 0) {
|
||||
loadElements.forEach((element) => {
|
||||
element.classList.add(this.getLoadingClass(element));
|
||||
});
|
||||
}
|
||||
} else if (request.element.dataset.attachLoading !== undefined) {
|
||||
request.element.classList.add(this.getLoadingClass(request.element));
|
||||
}
|
||||
}
|
||||
|
||||
ajaxDone(data, request) {
|
||||
if (!request.element) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (request.element.tagName === 'FORM') {
|
||||
const loadElements = request.element.querySelectorAll('[data-attach-loading]');
|
||||
if (loadElements.length > 0) {
|
||||
loadElements.forEach((element) => {
|
||||
element.classList.remove(this.getLoadingClass(element));
|
||||
});
|
||||
}
|
||||
} else if (request.element.dataset.attachLoading !== undefined) {
|
||||
request.element.classList.remove(this.getLoadingClass(request.element));
|
||||
}
|
||||
}
|
||||
|
||||
getLoadingClass(element) {
|
||||
return (element.dataset.attachLoading !== undefined && element.dataset.attachLoading !== '')
|
||||
? element.dataset.attachLoading
|
||||
: 'wn-loading';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user