6
6
import $ from "jquery" ;
7
7
import WysiwygEvents from "mage/adminhtml/wysiwyg/events" ;
8
8
import { AdditionalDataConfigInterface } from "../../../../content-type-config" ;
9
+ import delayUntil from "../../../../utils/delay-until" ;
9
10
import WysiwygComponentInitializerInterface from "../../../wysiwyg/component-initializer-interface" ;
10
11
import WysiwygInterface from "../../../wysiwyg/wysiwyg-interface" ;
11
12
@@ -55,6 +56,11 @@ export default class ComponentInitializer implements WysiwygComponentInitializer
55
56
*/
56
57
private fade : boolean ;
57
58
59
+ /**
60
+ * Slider changing flag
61
+ */
62
+ private slideChanging : boolean = false ;
63
+
58
64
/**
59
65
* Initialize the instance
60
66
*
@@ -67,6 +73,15 @@ export default class ComponentInitializer implements WysiwygComponentInitializer
67
73
68
74
tinymce . eventBus . attachEventHandler ( WysiwygEvents . afterFocus , this . onFocus . bind ( this ) ) ;
69
75
tinymce . eventBus . attachEventHandler ( WysiwygEvents . afterBlur , this . onBlur . bind ( this ) ) ;
76
+ // Update our KO pointer to the active slide on change
77
+ $ ( this . $element . parents ( this . sliderSelector ) ) . parent ( ) . on (
78
+ "beforeChange" ,
79
+ ( ) => {
80
+ this . slideChanging = true ;
81
+ } ,
82
+ ) . on ( "afterChange" , ( ) => {
83
+ this . slideChanging = false ;
84
+ } ) ;
70
85
}
71
86
72
87
/**
@@ -79,23 +94,29 @@ export default class ComponentInitializer implements WysiwygComponentInitializer
79
94
const sliderContent = this . $element . parents ( this . sliderContentSelector ) [ 0 ] ;
80
95
const $notActiveSlides = $slider . find ( this . slideSelector ) . not ( this . activeSlideSelector ) ;
81
96
82
- $ . each ( this . config . adapter_config . parentSelectorsToUnderlay , ( i , selector ) => {
83
- this . $element . closest ( selector as string ) . css ( "z-index" , 100 ) ;
84
- } ) ;
85
-
86
- // Disable slider keyboard events and fix problem with overflow hidden issue
87
- $slider . parent ( ) . slick ( "slickSetOption" , "accessibility" , false ) ;
88
- this . autoplay = $slider . parent ( ) . slick ( "slickGetOption" , "autoplay" ) as boolean ;
89
- this . fade = $slider . parent ( ) . slick ( "slickGetOption" , "fade" ) as boolean ;
90
- if ( this . autoplay ) {
91
- $slider . parent ( ) . slick ( "slickPause" ) ;
92
- }
93
- if ( ! this . fade ) {
94
- $notActiveSlides . css ( "display" , "none" ) ;
95
- }
96
- this . sliderTransform = sliderContent . style . transform ;
97
- sliderContent . style . transform = "" ;
98
- $slider . css ( "overflow" , "visible" ) ;
97
+ delayUntil (
98
+ ( ) => {
99
+ $ . each ( this . config . adapter_config . parentSelectorsToUnderlay , ( i , selector ) => {
100
+ this . $element . closest ( selector as string ) . css ( "z-index" , 100 ) ;
101
+ } ) ;
102
+
103
+ // Disable slider keyboard events and fix problem with overflow hidden issue
104
+ $slider . parent ( ) . slick ( "slickSetOption" , "accessibility" , false ) ;
105
+ this . autoplay = $slider . parent ( ) . slick ( "slickGetOption" , "autoplay" ) as boolean ;
106
+ this . fade = $slider . parent ( ) . slick ( "slickGetOption" , "fade" ) as boolean ;
107
+ if ( this . autoplay ) {
108
+ $slider . parent ( ) . slick ( "slickPause" ) ;
109
+ }
110
+ if ( ! this . fade ) {
111
+ $notActiveSlides . css ( "display" , "none" ) ;
112
+ }
113
+ this . sliderTransform = sliderContent . style . transform ;
114
+ sliderContent . style . transform = "" ;
115
+ $slider . css ( "overflow" , "visible" ) ;
116
+ } ,
117
+ ( ) => ! this . slideChanging ,
118
+ 10 ,
119
+ ) ;
99
120
}
100
121
101
122
/**
0 commit comments