cache messages element

This commit is contained in:
Kirill Braslavsky 2021-03-02 19:40:55 +02:00
parent 750d5912b0
commit a256cc6d53

View file

@ -4,6 +4,7 @@ class ErrorHandler {
{ {
this.genericErrorText = genericErrorText; this.genericErrorText = genericErrorText;
this.wrapper = document.querySelector('.woocommerce-notices-wrapper'); this.wrapper = document.querySelector('.woocommerce-notices-wrapper');
this.messagesList = document.querySelector('ul.woocommerce-error');
} }
genericError() { genericError() {
@ -16,7 +17,14 @@ class ErrorHandler {
message(text, persist = false) message(text, persist = false)
{ {
let messagesList = this.prepareMessagesList(); if(! typeof String || text.length === 0){
throw new Error('A new message text must be a non-empty string.');
}
if(this.messagesList === null){
this.prepareMessagesList();
}
if (persist) { if (persist) {
this.wrapper.classList.add('ppcp-persist'); this.wrapper.classList.add('ppcp-persist');
} else { } else {
@ -24,23 +32,19 @@ class ErrorHandler {
} }
let messageNode = this.prepareMessagesListItem(text); let messageNode = this.prepareMessagesListItem(text);
messagesList.appendChild(messageNode); this.messagesList.appendChild(messageNode);
jQuery.scroll_to_notices(jQuery('.woocommerce-notices-wrapper')) jQuery.scroll_to_notices(jQuery('.woocommerce-notices-wrapper'))
} }
prepareMessagesList() prepareMessagesList()
{ {
let messagesList = document.querySelector('ul.woocommerce-error'); if(this.messagesList === null){
this.messagesList = document.createElement('ul');
if(messagesList === null){ this.messagesList.setAttribute('class', 'woocommerce-error');
messagesList = document.createElement('ul'); this.messagesList.setAttribute('role', 'alert');
messagesList.setAttribute('class', 'woocommerce-error'); this.wrapper.appendChild(this.messagesList);
messagesList.setAttribute('role', 'alert');
this.wrapper.appendChild(messagesList);
} }
return messagesList;
} }
prepareMessagesListItem(message) prepareMessagesListItem(message)