mediawiki.skinning: Show border-bottom when figcaption is absent on Parsoid
authorArlo Breault <abreault@wikimedia.org>
Fri, 21 Jul 2017 18:58:45 +0000 (14:58 -0400)
committerArlo Breault <abreault@wikimedia.org>
Tue, 1 Aug 2017 19:41:44 +0000 (15:41 -0400)
 * Parsoid doesn't emit a figcaption when no caption is present, so
   having the border-bottom styled on it meant there are cases where it
   goes missing.

Change-Id: I2ff8e41d3cb973f56f6571d84fb662aed23b1f10

resources/src/mediawiki.skinning/content.parsoid.less

index ddf9b05..45188dc 100644 (file)
@@ -80,31 +80,14 @@ figure[typeof*='mw:Audio'] {
        &.mw-halign-center {
                margin: 0 auto 0.5em auto;
                display: table;
+               border-collapse: collapse;
                clear: none;
                float: none;
        }
 
+       /* Hide the caption for frameless and plain floated images */
        > figcaption {
-               display: table-caption;
-               caption-side: bottom;
-               /* In mw-core the font-size is duplicated, 94% in thumbiner
-                * and again 94% in thumbcaption. 88.4% for font size of the
-                * caption results in the same behavior. */
-               font-size: 88.4%;
-               line-height: 1.4em;
-               text-align: left;
-
-               border: 1px solid #c8ccd1;
-               border-top: 0;
-
-               /* taken from .thumbcaption, plus .thumbinner */
-               padding: 0 6px 6px 6px;
-               background-color: #f8f9fa;
-
-               table {
-                       /* reset caption side for tables inside figcaptions */
-                       caption-side: top;
-               }
+               display: none;
        }
 }
 
@@ -115,12 +98,18 @@ figure[typeof~='mw:Image/Frame'],
 figure[typeof~='mw:Video/Frame'],
 figure[typeof~='mw:Audio/Frame'] {
        display: table;
-       overflow: auto;
        text-align: center;
        border: 1px solid #c8ccd1;
-       border-bottom: 0; // No border to caption
-       border-collapse: collapse;
+       border-collapse: separate;
+       border-spacing: 3px;
        background-color: #f8f9fa;
+       width: 1px;  // From https://stackoverflow.com/a/6536025
+
+       // Avoid !important
+       &.mw-halign-center {
+               border-collapse: separate;
+       }
+
        // Default to right alignment. This is needed since Parsoid only specifies the
        // alignment class when the alignment is explicitly set.
        margin: 0.5em 0 1.3em 1.4em;
@@ -131,10 +120,23 @@ figure[typeof~='mw:Audio/Frame'] {
                > img,
                > video {
                        border: 1px solid #c8ccd1;
-                       margin: 3px;
                        background: #fff;
                }
        }
+
+       > figcaption {
+               display: block;
+
+               /* In mw-core the font-size is duplicated, 94% in thumbiner
+                * and again 94% in thumbcaption. 88.4% for font size of the
+                * caption results in the same behavior. */
+               font-size: 88.4%;
+               line-height: 1.4em;
+               text-align: left;
+
+               /* taken from .thumbcaption, plus .thumbinner */
+               padding: 3px;
+       }
 }
 
 /* Same as img.thumbborder in content.css */
@@ -144,15 +146,3 @@ figure[typeof~='mw:Audio/Frame'] {
                border: 1px solid #eaecf0;
        }
 }
-
-/* Hide the caption for frameless and plain floated images */
-figure[typeof~='mw:Image/Frameless'],
-figure[typeof~='mw:Video/Frameless'],
-figure[typeof~='mw:Audio/Frameless'],
-figure[typeof~='mw:Image'],
-figure[typeof~='mw:Video'],
-figure[typeof~='mw:Audio'] {
-       > figcaption {
-               display: none;
-       }
-}