Pginer has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/53353


Change subject: Loading indicator and mixins for SVG and animation support
......................................................................

Loading indicator and mixins for SVG and animation support

This patchset includes:
* Loading indicator with a gif fallback
* A mixin for cross-browser SVG support
* A mixin for rotation-based animations
* An example file to see the loading indicator in action

This loading indicator is based on the ine used at
translatewiki.net/w/i.php?title=Special:Translate&tux=1

Change-Id: Iabe8c27f2256a07b72a646aede505f798b990d13
---
M modules/css/ext.agora.css
A modules/img/loading.gif
A modules/img/loading.svg
M modules/scss/components/_all.scss
A modules/scss/components/_status.scss
M modules/scss/mixins/_all.scss
A modules/scss/mixins/_animation.scss
A modules/scss/mixins/_images.scss
A tests/loading-indicator.html
9 files changed, 159 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/Agora 
refs/changes/53/53353/1

diff --git a/modules/css/ext.agora.css b/modules/css/ext.agora.css
index 704ce1b..ada9714 100644
--- a/modules/css/ext.agora.css
+++ b/modules/css/ext.agora.css
@@ -1,3 +1,4 @@
+@charset "UTF-8";
 /* Agora styles */
 /* _effects.scss */
 /* Mixins for visual effects in CSS3 */
@@ -253,7 +254,7 @@
   margin: 0 0 0.2em 0;
   padding: 0;
 }
-/* line 38, ../scss/components/_forms.scss */
+/* line 37, ../scss/components/_forms.scss */
 ul.mw-ui-formlist li label.mw-ui-checkbox-label, ul.mw-ui-formlist li 
label.mw-ui-radio-label {
   cursor: pointer;
   vertical-align: bottom;
@@ -272,7 +273,7 @@
   border-color: #c9c9c9;
   cursor: pointer;
 }
-/* line 45, ../scss/components/_forms.scss */
+/* line 44, ../scss/components/_forms.scss */
 ul.mw-ui-formlist li input[type="checkbox"],
 ul.mw-ui-formlist li input[type="radio"] {
   display: inline;
@@ -282,7 +283,7 @@
   width: auto;
 }
 
-/* line 60, ../scss/components/_forms.scss */
+/* line 59, ../scss/components/_forms.scss */
 .mw-ui-input, .mw-ui-formlist li input {
   outline: 0;
   font-family: "Helvetica Neue", "Helvetica", "Arial", sans-serif;
@@ -303,7 +304,7 @@
   border-color: #4091ed;
 }
 
-/* line 65, ../scss/components/_forms.scss */
+/* line 64, ../scss/components/_forms.scss */
 .mw-ui-block-label, .mw-ui-formlist li label {
   font-weight: bold;
   font-size: 0.9em;
@@ -314,7 +315,7 @@
   font-weight: normal;
 }
 
-/* line 74, ../scss/components/_forms.scss */
+/* line 73, ../scss/components/_forms.scss */
 .mw-ui-checkbox-label, .mw-ui-radio-label {
   cursor: pointer;
   vertical-align: bottom;
@@ -333,3 +334,46 @@
   border-color: #c9c9c9;
   cursor: pointer;
 }
+
+@-webkit-keyframes spin {
+  /* line 15, ../scss/mixins/_animation.scss */
+  from {
+    -webkit-transform: rotate(0deg);
+  }
+
+  /* line 16, ../scss/mixins/_animation.scss */
+  to {
+    -webkit-transform: rotate(360deg);
+  }
+}
+
+@keyframes spin {
+  /* line 20, ../scss/mixins/_animation.scss */
+  from {
+    transform: rotate(0deg);
+  }
+
+  /* line 21, ../scss/mixins/_animation.scss */
+  to {
+    transform: rotate(360deg);
+  }
+}
+
+/* line 3, ../scss/components/_status.scss */
+.loading-indicator {
+  background: transparent url("../img/loading.gif") right bottom no-repeat;
+  background-image: -webkit-linear-gradient(transparent, transparent), 
url("../img/loading.svg");
+  background-image: linear-gradient(transparent, transparent), 
url("../img/loading.svg");
+  background-size: 100%;
+  -webkit-animation-name: spin;
+  -webkit-animation-duration: 1s;
+  -webkit-animation-iteration-count: infinite;
+  -webkit-animation-timing-function: linear;
+  animation-name: spin;
+  animation-duration: 1s;
+  animation-iteration-count: infinite;
+  animation-timing-function: linear;
+  height: 34px;
+  width: 34px;
+  backface-visibility: hidden;
+}
diff --git a/modules/img/loading.gif b/modules/img/loading.gif
new file mode 100644
index 0000000..2212db9
--- /dev/null
+++ b/modules/img/loading.gif
Binary files differ
diff --git a/modules/img/loading.svg b/modules/img/loading.svg
new file mode 100644
index 0000000..92f84cd
--- /dev/null
+++ b/modules/img/loading.svg
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   version="1.1"
+   width="34"
+   height="34.03125"
+   id="svg9613">
+  <defs
+     id="defs9615" />
+  <metadata
+     id="metadata9618">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     id="g2987">
+    <path
+       d="m 16.977523,0.24095147 c -9.2629169,0 -16.73280045,7.51449143 
-16.73280045,16.77740253 0,9.262912 7.46988355,16.777403 16.73280045,16.777403 
9.262917,0 16.777413,-7.514491 16.777413,-16.777403 0,-9.2629111 
-7.514496,-16.77740253 -16.777413,-16.77740253 z m 0,4.14972823 c 6.966927,0 
12.627682,5.6607523 12.627682,12.6276743 0,6.966923 -5.660755,12.583053 
-12.627682,12.583053 -6.966937,0 -12.5830596,-5.61613 -12.5830596,-12.583053 
0,-6.966922 5.6161226,-12.6276743 12.5830596,-12.6276743 z"
+       id="path15290-7-0-9-5-1-59-0-3-2"
+       
style="color:#000000;fill:#000000;fill-opacity:0.08333333;fill-rule:nonzero;stroke:#565656;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.19607843;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+    <path
+       d="M 31.677259,17.003529 A 14.680208,14.680199 0 0 1 
20.796571,31.183505"
+       id="path15290-6-0-6-1-0-0-16-1-0-06"
+       
style="color:#000000;fill:none;stroke:#3366bb;stroke-width:2.2583456;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
 />
+  </g>
+</svg>
diff --git a/modules/scss/components/_all.scss 
b/modules/scss/components/_all.scss
index 760fdee..c1d5df1 100644
--- a/modules/scss/components/_all.scss
+++ b/modules/scss/components/_all.scss
@@ -1,3 +1,4 @@
 @import "utilities";
 @import "buttons";
-@import "forms";
\ No newline at end of file
+@import "forms";
+@import "status";
\ No newline at end of file
diff --git a/modules/scss/components/_status.scss 
b/modules/scss/components/_status.scss
new file mode 100644
index 0000000..3656d3f
--- /dev/null
+++ b/modules/scss/components/_status.scss
@@ -0,0 +1,9 @@
+@include animation-rotate(spin);
+
+.loading-indicator{
+       @include vector-image("../img/loading.svg", "../img/loading.gif", right 
bottom);
+       @include animation(spin, 1s, infinite, linear);
+       height: 34px;
+       width: 34px;
+       backface-visibility: hidden;
+}
\ No newline at end of file
diff --git a/modules/scss/mixins/_all.scss b/modules/scss/mixins/_all.scss
index adc48cd..a4bec8e 100644
--- a/modules/scss/mixins/_all.scss
+++ b/modules/scss/mixins/_all.scss
@@ -1,4 +1,6 @@
 @import "utilities";
 @import "type";
 @import "effects";
-@import "forms";
\ No newline at end of file
+@import "forms";
+@import "images";
+@import "animation";
\ No newline at end of file
diff --git a/modules/scss/mixins/_animation.scss 
b/modules/scss/mixins/_animation.scss
new file mode 100644
index 0000000..bc47983
--- /dev/null
+++ b/modules/scss/mixins/_animation.scss
@@ -0,0 +1,23 @@
+@mixin animation($name, $duration, $iteration-count:infinite, 
$timing-function:ease) {
+  -webkit-animation-name: $name;
+  -webkit-animation-duration: $duration;
+  -webkit-animation-iteration-count: $iteration-count;
+  -webkit-animation-timing-function: $timing-function;
+
+  animation-name: $name;
+  animation-duration: $duration;
+  animation-iteration-count: $iteration-count;
+  animation-timing-function: $timing-function;
+}
+
+@mixin animation-rotate($name, $from: 0deg, $to: 360deg) {
+  @-webkit-keyframes $name {
+    from { -webkit-transform: rotate($from); }
+    to { -webkit-transform: rotate($to); }
+  }
+  
+  @keyframes $name {
+    from { transform: rotate($from); }
+    to { transform: rotate($to); }
+  }
+}
diff --git a/modules/scss/mixins/_images.scss b/modules/scss/mixins/_images.scss
new file mode 100644
index 0000000..ba963b2
--- /dev/null
+++ b/modules/scss/mixins/_images.scss
@@ -0,0 +1,10 @@
+// ----------------------------------------------------------------------------
+// SVG with fallback support
+// ----------------------------------------------------------------------------
+
+@mixin vector-image($img, $fallback, $position: center center, $size: 100%) {
+  background: transparent url($fallback) $position no-repeat;
+  background-image: -webkit-linear-gradient(transparent, transparent), 
url($img);
+  background-image: linear-gradient(transparent, transparent), url($img);
+  background-size: $size;
+}
\ No newline at end of file
diff --git a/tests/loading-indicator.html b/tests/loading-indicator.html
new file mode 100644
index 0000000..55dee33
--- /dev/null
+++ b/tests/loading-indicator.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
+<html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="eng" lang="eng">
+       <head>
+               <meta http-equiv="content-type" content="text/html; 
charset=utf-8" />
+               <title>Loading sprite</title>
+               <meta name="keywords" content="" />
+
+               <style type="text/css">
+                       #container {
+                               margin: 100px 100px;
+                       }
+               </style>
+               <link rel="stylesheet" href="../modules/css/ext.agora.css">
+       </head>
+       <body>
+               <div id="container">
+                       <div class="loading-indicator"></div>
+                       <div>
+                               Loading...
+                       </div>
+               </div>
+       </body>
+</html>

-- 
To view, visit https://gerrit.wikimedia.org/r/53353
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iabe8c27f2256a07b72a646aede505f798b990d13
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/Agora
Gerrit-Branch: master
Gerrit-Owner: Pginer <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to