Skip to content

Commit f4c9d83

Browse files
committed
Themeroller: Fix opacityOverlay computation
ThemeRoller sometimes gets post-processed `vars` in `options`, e.g. in `buildPackages` in `Gruntfile.js`. To avoid dividing `opacityOverlay` by 100 twice, resulting in invalid values for `opacity` of the `ui-widget-overlay` class, record original percentage values with the `Perc` suffix and use those for computation inputs.
1 parent 4196de8 commit f4c9d83

File tree

1 file changed

+23
-12
lines changed

1 file changed

+23
-12
lines changed

lib/themeroller.js

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ function ThemeRoller( options ) {
8888
vars = options.vars;
8989
if ( vars === false || vars === null ) {
9090
this.isNull = true;
91-
this.vars = {};
91+
vars = {};
9292
return;
9393
} else if ( vars ) {
9494
vars = { ...vars };
@@ -115,13 +115,24 @@ function ThemeRoller( options ) {
115115
}
116116
oldImagesBackCompat( vars || {} );
117117
this.serializedVars = querystring.stringify( vars );
118-
vars = this.vars = Object.assign( {}, ThemeRoller.defaults, vars );
118+
vars = this.vars = {
119+
...ThemeRoller.defaults,
120+
...vars
121+
};
119122
this.images = [];
120123

121-
// Opacity fix
122-
// TODO: Remove `filter` style when dropping support for IE8 and earlier.
123-
vars.opacityOverlayPerc = vars.opacityOverlay;
124-
vars.opacityShadowPerc = vars.opacityShadow;
124+
// Opacity fix.
125+
// ThemeRoller sometimes gets post-processed `vars` in `options`,
126+
// e.g. in `buildPackages` in `Gruntfile.js`. To avoid dividing
127+
// `opacityOverlay` by 100 twice, resulting in invalid values,
128+
// record original percentage values with the `Perc` suffix and
129+
// use those for computation inputs.
130+
if ( !( "opacityOverlayPerc" in vars ) ) {
131+
vars.opacityOverlayPerc = vars.opacityOverlay;
132+
}
133+
if ( !( "opacityShadowPerc" in vars ) ) {
134+
vars.opacityShadowPerc = vars.opacityShadow;
135+
}
125136
if ( semver.lt( this.jqueryUi.pkg.version, "1.13.0-a" ) ) {
126137

127138
// For version <1.13.0, `filter` has its own separate line
@@ -134,8 +145,8 @@ function ThemeRoller( options ) {
134145
};
135146
vars.opacityFilterOverlay = opacityFilter( vars.opacityOverlay );
136147
vars.opacityFilterShadow = opacityFilter( vars.opacityShadow );
137-
vars.opacityOverlay = opacityFix( vars.opacityOverlay );
138-
vars.opacityShadow = opacityFix( vars.opacityShadow );
148+
vars.opacityOverlay = opacityFix( vars.opacityOverlayPerc );
149+
vars.opacityShadow = opacityFix( vars.opacityShadowPerc );
139150
} else if ( semver.lt( this.jqueryUi.pkg.version, "1.14.0-a" ) ) {
140151

141152
// For version >=1.13.0 <1.14.0, `-ms-filter` has its own separate line
@@ -148,17 +159,17 @@ function ThemeRoller( options ) {
148159
};
149160
vars.opacityFilterOverlay = opacityFilter( vars.opacityOverlay );
150161
vars.opacityFilterShadow = opacityFilter( vars.opacityShadow );
151-
vars.opacityOverlay = opacityFix( vars.opacityOverlay );
152-
vars.opacityShadow = opacityFix( vars.opacityShadow );
162+
vars.opacityOverlay = opacityFix( vars.opacityOverlayPerc );
163+
vars.opacityShadow = opacityFix( vars.opacityShadowPerc );
153164
} else {
154165

155166
// For version >=1.14.0, IE is not supported so there's no `filter`
156167
// or `-ms-filter`.
157168
opacityFix = function( opacity ) {
158169
return ( opacity / 100 ).toString().replace( /^0\./, "." );
159170
};
160-
vars.opacityOverlay = opacityFix( vars.opacityOverlay );
161-
vars.opacityShadow = opacityFix( vars.opacityShadow );
171+
vars.opacityOverlay = opacityFix( vars.opacityOverlayPerc );
172+
vars.opacityShadow = opacityFix( vars.opacityShadowPerc );
162173
}
163174

164175
// Add '#' in the beginning of the colors if needed

0 commit comments

Comments
 (0)