From 3af3dc82987684062b791dd7996dd87f4fc755ab Mon Sep 17 00:00:00 2001 From: Limon Monte Date: Sun, 21 Jul 2019 00:19:06 +0300 Subject: [PATCH] chore: extract focus initialization logic to initFocus() (#1682) --- src/instanceMethods/_main.js | 56 +++++++++++++++++++----------------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/src/instanceMethods/_main.js b/src/instanceMethods/_main.js index d3dcd0a86..872beee26 100644 --- a/src/instanceMethods/_main.js +++ b/src/instanceMethods/_main.js @@ -68,20 +68,10 @@ const swalPromise = (instance, domCache, innerParams) => { }, innerParams.timer) } - // Click 'confirm' button - domCache.confirmButton.onclick = () => { - handleConfirmButtonClick(instance, innerParams) - } + domCache.confirmButton.onclick = () => handleConfirmButtonClick(instance, innerParams) + domCache.cancelButton.onclick = () => handleCancelButtonClick(instance, dismissWith) - // Click 'cancel' button - domCache.cancelButton.onclick = () => { - handleCancelButtonClick(instance, dismissWith) - } - - // Closing popup by close button - domCache.closeButton.onclick = () => { - dismissWith(DismissReason.close) - } + domCache.closeButton.onclick = () => dismissWith(DismissReason.close) handlePopupClick(domCache, innerParams, dismissWith) @@ -97,19 +87,7 @@ const swalPromise = (instance, domCache, innerParams) => { openPopup(innerParams) - if (!innerParams.toast) { - if (!callIfFunction(innerParams.allowEnterKey)) { - if (document.activeElement && typeof document.activeElement.blur === 'function') { - document.activeElement.blur() - } - } else if (innerParams.focusCancel && dom.isVisible(domCache.cancelButton)) { - domCache.cancelButton.focus() - } else if (innerParams.focusConfirm && dom.isVisible(domCache.confirmButton)) { - domCache.confirmButton.focus() - } else { - setFocus(innerParams, -1, 1) - } - } + initFocus(domCache, innerParams) // Scroll container to top on open (#1247) domCache.container.scrollTop = 0 @@ -132,3 +110,29 @@ const populateDomCache = (instance) => { return domCache } + +const initFocus = (domCache, innerParams) => { + if (innerParams.toast) { + return + } + + if (!callIfFunction(innerParams.allowEnterKey)) { + return blurActiveElement() + } + + if (innerParams.focusCancel && dom.isVisible(domCache.cancelButton)) { + return domCache.cancelButton.focus() + } + + if (innerParams.focusConfirm && dom.isVisible(domCache.confirmButton)) { + return domCache.confirmButton.focus() + } + + setFocus(innerParams, -1, 1) +} + +const blurActiveElement = () => { + if (document.activeElement && typeof document.activeElement.blur === 'function') { + document.activeElement.blur() + } +}