mediawiki.action.edit.preview: Use CSS instead of jQuery for animation
authorFomafix <fomafix@googlemail.com>
Wed, 3 Jul 2019 16:02:35 +0000 (18:02 +0200)
committerFomafix <fomafix@googlemail.com>
Wed, 3 Jul 2019 17:40:54 +0000 (19:40 +0200)
Change-Id: I9f79ddf2cf4548dbf8b8553da030d6da4772187e

resources/Resources.php
resources/src/mediawiki.action/mediawiki.action.edit.preview.css [new file with mode: 0644]
resources/src/mediawiki.action/mediawiki.action.edit.preview.js

index 92b4fd4..f510329 100644 (file)
@@ -1365,6 +1365,7 @@ return [
        ],
        'mediawiki.action.edit.preview' => [
                'scripts' => 'resources/src/mediawiki.action/mediawiki.action.edit.preview.js',
+               'styles' => 'resources/src/mediawiki.action/mediawiki.action.edit.preview.css',
                'dependencies' => [
                        'jquery.spinner',
                        'jquery.textSelection',
diff --git a/resources/src/mediawiki.action/mediawiki.action.edit.preview.css b/resources/src/mediawiki.action/mediawiki.action.edit.preview.css
new file mode 100644 (file)
index 0000000..87030df
--- /dev/null
@@ -0,0 +1,7 @@
+.mw-preview-copyelements {
+       transition: opacity 200ms;
+}
+
+.mw-preview-copyelements-loading {
+       opacity: 0.4;
+}
index 3af8222..7f2dbdd 100644 (file)
                        $spinner.show();
                }
 
-               // Can't use fadeTo because it calls show(), and we might want to keep some elements hidden
-               // (e.g. empty #catlinks)
-               // FIXME: Use CSS transition
-               // eslint-disable-next-line no-jquery/no-animate
-               $copyElements.animate( { opacity: 0.4 }, 'fast' );
+               $copyElements.addClass( [ 'mw-preview-copyelements', 'mw-preview-copyelements-loading' ] );
 
                api = new mw.Api();
                postData = {
                        mw.hook( 'wikipage.editform' ).fire( $editform );
                } ).always( function () {
                        $spinner.hide();
-                       // FIXME: Use CSS transition
-                       // eslint-disable-next-line no-jquery/no-animate
-                       $copyElements.animate( {
-                               opacity: 1
-                       }, 'fast' );
+                       $copyElements.removeClass( 'mw-preview-copyelements-loading' );
                } ).fail( function ( code, result ) {
                        // This just shows the error for whatever request failed first
                        var errorMsg = 'API error: ' + code;