@@ -69,12 +69,24 @@ class ExtensionManager {
6969 }
7070 }
7171
72+ removeVisiblePanels ( ) {
73+ const panels = document . querySelectorAll ( '.cv-panel.cv-panel--visible' ) ;
74+ if ( ! panels . length ) return ;
75+
76+ panels . forEach ( ( panel ) => {
77+ panel . classList . remove ( 'cv-panel--visible' ) ;
78+ setTimeout ( ( ) => {
79+ panel . remove ( ) ;
80+ } , 300 ) ;
81+ } ) ;
82+ }
83+
7284 async togglePanel ( panelType ) {
7385 try {
74- const panel = this . panels . get ( panelType ) ;
86+ const visiblePanels = document . querySelectorAll ( '.cv-panel.cv-panel--visible' ) ;
7587
76- if ( panel && panel . isVisible ) {
77- this . closePanel ( panelType ) ;
88+ if ( visiblePanels . length ) {
89+ this . removeVisiblePanels ( ) ;
7890 } else {
7991 await this . openPanel ( panelType ) ;
8092 }
@@ -98,6 +110,8 @@ class ExtensionManager {
98110 }
99111
100112 async openPanel ( panelType , data = { } ) {
113+ this . removeVisiblePanels ( ) ;
114+
101115 let panel = this . panels . get ( panelType ) ;
102116
103117 // Create a new panel if one does not already exist
@@ -111,10 +125,10 @@ class ExtensionManager {
111125 await panel . show ( ) ;
112126 }
113127
114- closePanel ( panelType ) {
128+ async closePanel ( panelType ) {
115129 const panel = this . panels . get ( panelType ) ;
116130 if ( panel ) {
117- panel . hide ( ) ;
131+ await panel . hide ( ) ;
118132 }
119133 }
120134
@@ -137,3 +151,5 @@ class ExtensionManager {
137151}
138152
139153export { ExtensionManager } ;
154+
155+ export const extensionManager = new ExtensionManager ( ) ;
0 commit comments