mirror of
https://github.com/woocommerce/woocommerce-paypal-payments.git
synced 2025-09-05 08:59:14 +08:00
Merge pull request #784 from woocommerce/pcp-869-fix-sticky-scroll
Fix sticky js validation
This commit is contained in:
commit
ad9446d304
2 changed files with 51 additions and 19 deletions
|
@ -66,7 +66,7 @@ const bootstrap = () => {
|
|||
|
||||
errorHandler.clear();
|
||||
if (messages.length) {
|
||||
messages.forEach(s => errorHandler.message(s));
|
||||
errorHandler.messages(messages);
|
||||
} else {
|
||||
errorHandler.message(PayPalCommerceGateway.labels.error.required.generic);
|
||||
}
|
||||
|
|
|
@ -17,21 +17,48 @@ class ErrorHandler {
|
|||
|
||||
appendPreparedErrorMessageElement(errorMessageElement)
|
||||
{
|
||||
if(this.messagesList === null) {
|
||||
this.prepareMessagesList();
|
||||
if (this.messagesList === null) {
|
||||
this._prepareMessagesList();
|
||||
}
|
||||
|
||||
this.messagesList.replaceWith(errorMessageElement);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {String} text
|
||||
* @param {Boolean} persist
|
||||
*/
|
||||
message(text, persist = false)
|
||||
{
|
||||
if(! typeof String || text.length === 0){
|
||||
this._addMessage(text, persist);
|
||||
|
||||
this._scrollToMessages();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {Array} texts
|
||||
* @param {Boolean} persist
|
||||
*/
|
||||
messages(texts, persist = false)
|
||||
{
|
||||
texts.forEach(t => this._addMessage(t, persist));
|
||||
|
||||
this._scrollToMessages();
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @param {String} text
|
||||
* @param {Boolean} persist
|
||||
*/
|
||||
_addMessage(text, persist = false)
|
||||
{
|
||||
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 (this.messagesList === null){
|
||||
this._prepareMessagesList();
|
||||
}
|
||||
|
||||
if (persist) {
|
||||
|
@ -40,15 +67,24 @@ class ErrorHandler {
|
|||
this.wrapper.classList.remove('ppcp-persist');
|
||||
}
|
||||
|
||||
let messageNode = this.prepareMessagesListItem(text);
|
||||
let messageNode = this._prepareMessagesListItem(text);
|
||||
this.messagesList.appendChild(messageNode);
|
||||
|
||||
jQuery.scroll_to_notices(jQuery('.woocommerce-notices-wrapper'))
|
||||
}
|
||||
|
||||
prepareMessagesList()
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_scrollToMessages()
|
||||
{
|
||||
if(this.messagesList === null){
|
||||
jQuery.scroll_to_notices(jQuery('.woocommerce-notices-wrapper'));
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_prepareMessagesList()
|
||||
{
|
||||
if (this.messagesList === null) {
|
||||
this.messagesList = document.createElement('ul');
|
||||
this.messagesList.setAttribute('class', 'woocommerce-error');
|
||||
this.messagesList.setAttribute('role', 'alert');
|
||||
|
@ -56,7 +92,10 @@ class ErrorHandler {
|
|||
}
|
||||
}
|
||||
|
||||
prepareMessagesListItem(message)
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
_prepareMessagesListItem(message)
|
||||
{
|
||||
const li = document.createElement('li');
|
||||
li.innerHTML = message;
|
||||
|
@ -64,13 +103,6 @@ class ErrorHandler {
|
|||
return li;
|
||||
}
|
||||
|
||||
sanitize(text)
|
||||
{
|
||||
const textarea = document.createElement('textarea');
|
||||
textarea.innerHTML = text;
|
||||
return textarea.value.replace('Error: ', '');
|
||||
}
|
||||
|
||||
clear()
|
||||
{
|
||||
if (this.messagesList === null) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue