@@ -4,6 +4,10 @@ const templatePreviewMixin = {
44 showPreview : false ,
55 showRight : true ,
66 template : { } ,
7+ prevTemplate : { } ,
8+ nextTemplate : { } ,
9+ existPrev : false ,
10+ existNext : false ,
711 data : [ ] ,
812 templateTitle : "" ,
913 loading : true ,
@@ -28,6 +32,9 @@ const templatePreviewMixin = {
2832 this . template = info ;
2933 this . showPreview = true ;
3034 this . data = data ;
35+ this . existPrev = false ;
36+ this . existNext = false ;
37+ this . defineNextPrevTemplate ( ) ;
3138 } ,
3239 showButton ( ) {
3340 this . isMouseOver = true ;
@@ -85,6 +92,33 @@ const templatePreviewMixin = {
8592 this . showTemplatePreview = false ;
8693 this . selectedTemplate = null ;
8794 } ,
95+ closePreviewFrame ( ) {
96+ if ( this . $refs ?. preview ?. onClose ) {
97+ this . $refs . preview . onClose ( ) ;
98+ return ;
99+ }
100+ if ( typeof this . onClose === "function" ) {
101+ this . onClose ( ) ;
102+ }
103+ } ,
104+ bindPreviewTabClose ( tabSelector ) {
105+ if ( ! tabSelector || typeof $ === "undefined" ) {
106+ return ;
107+ }
108+ this . _previewTabSelector = tabSelector ;
109+ this . _previewTabHandler = ( ) => {
110+ this . closePreviewFrame ( ) ;
111+ } ;
112+ $ ( tabSelector ) . on ( "hide.bs.tab.templatePreview" , this . _previewTabHandler ) ;
113+ } ,
114+ unbindPreviewTabClose ( ) {
115+ if ( ! this . _previewTabSelector || typeof $ === "undefined" ) {
116+ return ;
117+ }
118+ $ ( this . _previewTabSelector ) . off ( "hide.bs.tab.templatePreview" , this . _previewTabHandler ) ;
119+ this . _previewTabSelector = null ;
120+ this . _previewTabHandler = null ;
121+ } ,
88122 onClose ( ) {
89123 this . $emit ( 'mark-selected-row' , 0 ) ;
90124 this . showPreview = false ;
@@ -99,6 +133,56 @@ const templatePreviewMixin = {
99133 this . isLoading = "" ;
100134 this . stopFrame = false ;
101135 this . size = 50 ;
136+ this . prevTemplate = { } ;
137+ this . nextTemplate = { } ;
138+ this . existPrev = false ;
139+ this . existNext = false ;
140+ } ,
141+ defineNextPrevTemplate ( ) {
142+ if ( ! Array . isArray ( this . data ) ) {
143+ this . prevTemplate = { } ;
144+ this . nextTemplate = { } ;
145+ this . existPrev = false ;
146+ this . existNext = false ;
147+ return ;
148+ }
149+
150+ let prevTemplate = { } ;
151+ let nextTemplate = { } ;
152+ let seeNextTemplate = false ;
153+ for ( const templateIndex in this . data ) {
154+ if ( ! seeNextTemplate ) {
155+ if ( this . data [ templateIndex ] === this . template ) {
156+ seeNextTemplate = true ;
157+ } else {
158+ prevTemplate = this . data [ templateIndex ] ;
159+ this . existPrev = true ;
160+ }
161+ } else {
162+ nextTemplate = this . data [ templateIndex ] ;
163+ this . existNext = true ;
164+ break ;
165+ }
166+ }
167+ this . prevTemplate = prevTemplate ;
168+ this . nextTemplate = nextTemplate ;
169+ } ,
170+ goPrevNext ( action ) {
171+ let targetTemplate = null ;
172+ if ( action === "Next" && this . existNext ) {
173+ targetTemplate = this . nextTemplate ;
174+ }
175+ if ( action === "Prev" && this . existPrev ) {
176+ targetTemplate = this . prevTemplate ;
177+ }
178+
179+ if ( ! targetTemplate ) {
180+ return ;
181+ }
182+
183+ this . $emit ( "select-template" , targetTemplate ) ;
184+ this . $emit ( "mark-selected-row" , targetTemplate . id ) ;
185+ this . showSideBar ( targetTemplate , this . data ) ;
102186 } ,
103187 } ,
104188} ;
0 commit comments