From 9e363d0e8a12f4fc205de08958622d6e8e250c81 Mon Sep 17 00:00:00 2001 From: Ed Sanders Date: Mon, 25 Jan 2016 17:14:29 +0000 Subject: [PATCH] TableSorter: Avoid FOUC and preserve styling in VisualEditor Always make space for the icon and display a placeholder if JavaScript is loaded, even if we haven't set up table sorting for a given table yet. The table will not be sortable in VE mode but for layout preview we should show some disabled sort icons. Bug: T95189 Change-Id: Ieb21cf79ae68e388e824923cb6e2d7d552a4afc6 --- resources/src/jquery/jquery.tablesorter.less | 9 +++++---- resources/src/mediawiki.skinning/content.css | 13 +++++++++++++ .../images/sort_both_readonly.png | Bin 0 -> 230 bytes .../images/sort_both_readonly.svg | 4 ++++ 4 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 resources/src/mediawiki.skinning/images/sort_both_readonly.png create mode 100644 resources/src/mediawiki.skinning/images/sort_both_readonly.svg diff --git a/resources/src/jquery/jquery.tablesorter.less b/resources/src/jquery/jquery.tablesorter.less index f4ef540954..85c58d745c 100644 --- a/resources/src/jquery/jquery.tablesorter.less +++ b/resources/src/jquery/jquery.tablesorter.less @@ -1,19 +1,20 @@ @import "mediawiki.mixins"; -/* Table Sorting */ +// Table Sorting -table.jquery-tablesorter th.headerSort { +.client-js table.jquery-tablesorter th.headerSort { .background-image-svg( 'images/sort_both.svg', 'images/sort_both.png' ); cursor: pointer; + // Keep synchronized with mediawiki.skinning.content styles background-repeat: no-repeat; background-position: center right; padding-right: 21px; } -table.jquery-tablesorter th.headerSortUp { +.client-js table.jquery-tablesorter th.headerSortUp { .background-image-svg( 'images/sort_up.svg', 'images/sort_up.png' ); } -table.jquery-tablesorter th.headerSortDown { +.client-js table.jquery-tablesorter th.headerSortDown { .background-image-svg( 'images/sort_down.svg', 'images/sort_down.png' ); } diff --git a/resources/src/mediawiki.skinning/content.css b/resources/src/mediawiki.skinning/content.css index c88d00dd8b..a873cdfae4 100644 --- a/resources/src/mediawiki.skinning/content.css +++ b/resources/src/mediawiki.skinning/content.css @@ -241,3 +241,16 @@ div.tright { div.tleft { margin: .5em 1.4em 1.3em 0; } + +/* Make space for the jquery.tablesorter icon and display a placeholder if JavaScript is loaded, while + tablesorter is still loading and setting up the tables for sorting. This avoids a flash of + unstyled content during page load (FOUC). The styles can also be used by WYSIWYG editors. */ +.client-js table.sortable th:not(.unsortable) { + background-image: url(images/sort_both_readonly.png); + /* @embed */ + background-image: linear-gradient(transparent, transparent), url(images/sort_both_readonly.svg); + /* Keep synchronised with jquery.tablesorter styles */ + background-repeat: no-repeat; + background-position: center right; + padding-right: 21px; +} diff --git a/resources/src/mediawiki.skinning/images/sort_both_readonly.png b/resources/src/mediawiki.skinning/images/sort_both_readonly.png new file mode 100644 index 0000000000000000000000000000000000000000..bdb09e3d52312ccf0583cd4a8dc4ac3be9386779 GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^qCm{a!3HGnGN+dTDVAa<&kznEsNqQI07({jL>2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4*gH U+ULi8K + + + -- 2.20.1