فهرست منبع

allDone event

Artur Paikin 9 سال پیش
والد
کامیت
4574b93068
2فایلهای تغییر یافته به همراه17 افزوده شده و 5 حذف شده
  1. 14 5
      src/plugins/Modal.js
  2. 3 0
      src/plugins/Present.js

+ 14 - 5
src/plugins/Modal.js

@@ -81,6 +81,10 @@ export default class Modal extends Plugin {
     }
     }
   }
   }
 
 
+  allDone () {
+    this.hideAllTabPanels()
+  }
+
   render () {
   render () {
     // http://dev.edenspiekermann.com/2016/02/11/introducing-accessible-modal-dialog
     // http://dev.edenspiekermann.com/2016/02/11/introducing-accessible-modal-dialog
 
 
@@ -118,6 +122,7 @@ export default class Modal extends Plugin {
     this.tabPanels.forEach(tabPanel => {
     this.tabPanels.forEach(tabPanel => {
       tabPanel.style.display = 'none'
       tabPanel.style.display = 'none'
     })
     })
+    this.tabs.forEach(tab => tab.classList.remove('is-selected'))
   }
   }
 
 
   showTabPanel (id) {
   showTabPanel (id) {
@@ -126,20 +131,20 @@ export default class Modal extends Plugin {
   }
   }
 
 
   initEvents () {
   initEvents () {
-    const tabs = Utils.qsa('.UppyModalTab-btn')
+    this.tabs = Utils.qsa('.UppyModalTab-btn')
     this.tabPanels = []
     this.tabPanels = []
-    tabs.forEach(tab => {
+    this.tabs.forEach(tab => {
       const tabId = tab.getAttribute('data-open')
       const tabId = tab.getAttribute('data-open')
       const tabPanel = document.querySelector(`.${tabId}`)
       const tabPanel = document.querySelector(`.${tabId}`)
       this.tabPanels.push(tabPanel)
       this.tabPanels.push(tabPanel)
 
 
       tab.addEventListener('click', event => {
       tab.addEventListener('click', event => {
         event.preventDefault()
         event.preventDefault()
-        tabs.forEach(tab => tab.classList.remove('is-selected'))
-        console.log(tabId)
+        // tabs.forEach(tab => tab.classList.remove('is-selected'))
+        this.hideAllTabPanels()
+        this.core.log(tabId)
         tab.classList.add('is-selected')
         tab.classList.add('is-selected')
         // this.core.getPlugin(tabId.substr(1)).focus()
         // this.core.getPlugin(tabId.substr(1)).focus()
-        this.hideAllTabPanels()
         this.showTabPanel(tabId)
         this.showTabPanel(tabId)
       })
       })
     })
     })
@@ -148,6 +153,10 @@ export default class Modal extends Plugin {
   }
   }
 
 
   install () {
   install () {
+    // Listen for allDone event to close all tabs
+    this.core.emitter.on('allDone', () => this.hideAllTabPanels())
+
+    // Close the Modal on esc key press
     document.body.addEventListener('keyup', event => {
     document.body.addEventListener('keyup', event => {
       if (event.keyCode === 27) {
       if (event.keyCode === 27) {
         this.hideModal()
         this.hideModal()

+ 3 - 0
src/plugins/Present.js

@@ -24,6 +24,9 @@ export default class Present extends Plugin {
   }
   }
 
 
   run () {
   run () {
+    // Emit allDone event so that, for example, Modal can hide all tabs
+    this.core.emitter.emit('allDone')
+
     const presenter = document.querySelector('.UppyPresenter')
     const presenter = document.querySelector('.UppyPresenter')
     presenter.innerHTML = `<p>Files have been uploaded, would you like to close the Modal
     presenter.innerHTML = `<p>Files have been uploaded, would you like to close the Modal
       or upload something else?</p>`
       or upload something else?</p>`