From a4d8abb631b73a973bb0d35fb704a399e44ba7f6 Mon Sep 17 00:00:00 2001 From: Mathias Kresin Date: Tue, 2 Dec 2014 16:29:00 +0100 Subject: [PATCH] Move update icon and update icon blinking to css Use CSS3 Animation for the "loading icon" blinking and move the definition of the loading icon to CSS as well. CSS3 Animations are supported by IE10, Firefox and using the -webkit prefix by Chrome and Safari. I've dropped the usage of element.classList in favour of supporting refreshing/ article downloading in IE9 (again). The classList stuff isn't necessarily needed, as the elements in question only get one or no class assigned. I've dropped no longer supported css options like: the appearance option isn't supported by any browser, the -webkit-appearance doesn't change anything visible. -webkit-font-smoothing support was dropped in chrome 22 and font-smoothing isn't specified anywhere. --- assets/css/app.css | 51 +++++++------ assets/js/all.min.js | 39 +++++----- assets/js/app.js | 8 -- assets/js/feed.js | 75 ++++--------------- assets/js/item.js | 41 +++------- templates/feeds.php | 4 +- themes/bootstrap-light/css/app.css | 17 ++++- .../bootstrap-light/less/miniflux-base.less | 15 +++- themes/bootstrap-light/less/variables.less | 1 + themes/bootswatch-cyborg/css/app.css | 17 ++++- .../bootswatch-cyborg/less/miniflux-base.less | 15 +++- themes/bootswatch-cyborg/less/variables.less | 1 + themes/hello/css/app.css | 15 ++++ themes/hello/scss/_common.scss | 3 +- themes/hello/scss/_icons.scss | 13 ++++ themes/midnight/css/app.css | 2 +- themes/still/css/app.css | 2 +- 17 files changed, 167 insertions(+), 152 deletions(-) diff --git a/assets/css/app.css b/assets/css/app.css index a4ed895..858b8c6 100644 --- a/assets/css/app.css +++ b/assets/css/app.css @@ -22,8 +22,6 @@ body { max-width: 780px; color: #333; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; - -webkit-font-smoothing: antialiased; - font-smoothing: antialiased; text-rendering: optimizeLegibility; } @@ -173,8 +171,6 @@ input[type="text"] { font-size: 99%; margin-bottom: 10px; margin-top: 5px; - -webkit-appearance: none; - appearance: none; } input[type="email"]:focus, @@ -281,8 +277,6 @@ textarea.form-error { /* buttons */ .btn { - -webkit-appearance: none; - appearance: none; display: inline-block; color: #333; border: 1px solid #ccc; @@ -301,7 +295,7 @@ a.btn { } .btn-red { - border-color: #b0281a;; + border-color: #b0281a; background: #d14836; color: #fff; } @@ -352,6 +346,31 @@ span#nav-counter:not(:empty):after, span#page-counter:not(:empty):after, span[id content: ")"; } +@keyframes blinker { + 0% { opacity: 1.0; } + 50% { opacity: 0.0; } + 100% { opacity: 1.0; } +} + +/* Chrome, Safari, Opera */ +@-webkit-keyframes blinker { + 0% { opacity: 1.0; } + 50% { opacity: 0.0; } + 100% { opacity: 1.0; } +} + +.loading-icon:before { + content: "☀"; + animation-name: blinker; + -webkit-animation-name: blinker; /* Chrome, Safari, Opera */ + animation-duration: 500ms; + -webkit-animation-duration: 500ms; /* Chrome, Safari, Opera */ + animation-timing-function: ease-in-out; + -webkit-animation-timing-function: ease-in-out; /* Chrome, Safari, Opera */ + animation-iteration-count: infinite; + -webkit-animation-iteration-count: infinite; /* Chrome, Safari, Opera */ +} + /* header */ header { margin-bottom: 50px; @@ -629,13 +648,7 @@ ul.item-infos { margin-bottom: 20px; } -span.downloading img { - display: inline; - margin: 0; - padding: 0; -} - -.downloading { +#download-item { color: #000; } @@ -690,16 +703,6 @@ iframe { color: #333; } -.loading-icon { - color: #000; - opacity: 1; - transition: opacity 0.2s ease-in-out; -} - -.loading-icon-blink { - opacity: 0; -} - #login { width: 350px; margin: 0 auto; diff --git a/assets/js/all.min.js b/assets/js/all.min.js index ff35db5..29a7ee8 100644 --- a/assets/js/all.min.js +++ b/assets/js/all.min.js @@ -1,20 +1,19 @@ -var Miniflux={};Miniflux.App=function(){return{BlinkIcon:function(){var e=document.querySelectorAll(".loading-icon");[].forEach.call(e,function(d){d.classList.toggle("loading-icon-blink")})},Run:function(){Miniflux.Event.ListenKeyboardEvents();Miniflux.Event.ListenMouseEvents()}}}(); -Miniflux.Feed=function(){function e(c){if(c=document.getElementById("loading-feed-"+c))c.appendChild(document.createTextNode("\u2600")),c.classList.add("loading-icon-blink");f||(f=setInterval(Miniflux.App.BlinkIcon,500))}function d(){for(var c=document.getElementsByTagName("a"),h=0,g=c.length;ha.length;){var h=b.shift();a.push(h);Miniflux.Feed.Update(h, -function(h){h=a.indexOf(h.feed_id);0<=h&&a.splice(h,1);0==b.length&&0==a.length&&(clearInterval(c),clearInterval(f),window.location.href="?action=unread")})}},100)}}}(); -Miniflux.Item=function(){function e(c){return item_id=c.getAttribute("data-item-id")}function d(c){if(c&&c.hasAttribute("data-reverse-label")){var b=c.innerHTML;c.innerHTML=c.getAttribute("data-reverse-label");c.setAttribute("data-reverse-label",b)}}function b(c){"mouse"!==Miniflux.Event.lastEventType&&Miniflux.Nav.SelectNextItem();c.parentNode.removeChild(c);var b=document.getElementById("page-counter");if(b){c=c.getAttribute("data-item-page");var a=parseInt(b.textContent,10)-1,d=document.getElementsByTagName("article"); -if(0===a||0===d.length)window.location=location.href;b.textContent=a;switch(c){case "unread":document.title="Miniflux ("+a+")";document.getElementById("nav-counter").textContent=a;break;case "feed-items":document.title="("+a+") "+b.parentNode.firstChild.nodeValue;break;default:document.title=b.parentNode.firstChild.nodeValue+" ("+a+")"}}}function a(c){var a=e(c),g=new XMLHttpRequest;g.onload=function(){if(Miniflux.Nav.IsListing())if(c.getAttribute("data-hide"))b(c);else{c.setAttribute("data-item-status", -"read");var a=c.querySelector("a.mark");d(a);(a=c.querySelector("a.mark"))&&a.setAttribute("data-action","mark-unread")}};g.open("POST","?action=mark-item-read&id="+a,!0);g.send()}function f(c){var a=e(c),g=new XMLHttpRequest;g.onload=function(){if(Miniflux.Nav.IsListing())if(c.getAttribute("data-hide"))b(c);else{c.setAttribute("data-item-status","unread");var a=c.querySelector("a.mark");d(a);(a=c.querySelector("a.mark"))&&a.setAttribute("data-action","mark-read")}};g.open("POST","?action=mark-item-unread&id="+ -a,!0);g.send()}return{MarkAsRead:a,MarkAsUnread:f,MarkAsRemoved:function(c){var a=e(c),d=new XMLHttpRequest;d.onload=function(){Miniflux.Nav.IsListing()&&b(c)};d.open("POST","?action=mark-item-removed&id="+a,!0);d.send()},SwitchBookmark:function(c){var a=e(c),g="1"===c.getAttribute("data-item-bookmark")?"0":"1",k=new XMLHttpRequest;k.onload=function(){if(Miniflux.Nav.IsListing()&&"bookmarks"===c.getAttribute("data-item-page"))b(c);else if(c.setAttribute("data-item-bookmark",g),Miniflux.Nav.IsListing()){var a= -c.querySelector("a.bookmark");d(a)}else if((a=c.querySelector("a.bookmark-icon"))&&a.hasAttribute("data-reverse-title")){var h=a.getAttribute("title");a.setAttribute("title",a.getAttribute("data-reverse-title"));a.setAttribute("data-reverse-title",h)}};k.open("POST","?action=bookmark&id="+a+"&value="+g,!0);k.send()},SwitchStatus:function(c){var b=c.getAttribute("data-item-status");"read"===b?f(c):"unread"===b&&a(c)},Show:function(a){(a=a.querySelector("a.show"))&&a.click()},OpenOriginal:function(b){var d= -b.querySelector("a.original");d&&("unread"===b.getAttribute("data-item-status")&&a(b),d.removeAttribute("data-action"),d.click())},DownloadContent:function(a){var b=document.getElementById("download-item");if(b){a=e(a);var d=b.getAttribute("data-before-message"),k=document.createElement("span");k.appendChild(document.createTextNode("\u2600"));k.className="loading-icon";b.innerHTML="";b.className="downloading";b.appendChild(k);b.appendChild(document.createTextNode(" "+d));var f=setInterval(Miniflux.App.BlinkIcon, -250),l=new XMLHttpRequest;l.onload=function(){var a=JSON.parse(l.responseText);clearInterval(f);if(a.result){var c=document.getElementById("item-content");c&&(c.innerHTML=a.content);b&&(a=b.getAttribute("data-after-message"),b.innerHTML="",b.appendChild(document.createTextNode(" "+a)))}else b&&(a=b.getAttribute("data-failure-message"),b.innerHTML="",b.appendChild(document.createTextNode(" "+a)))};l.open("POST","?action=download-item&id="+a,!0);l.send()}},MarkListingAsRead:function(a){for(var b=document.getElementsByTagName("article"), -d=[],f=0,m=b.length;fa-(b.offsetTop+b.offsetHeight)||a-b.offsetTop>document.documentElement.clientHeight)&&window.scrollTo(0,b.offsetTop-10)}function d(){return document.getElementById("listing")?!0:!1}return{OpenNextPage:function(){var b=document.getElementById("next-page");b&&b.click()},OpenPreviousPage:function(){var b=document.getElementById("previous-page");b&&b.click()},SelectNextItem:function(){var b=document.getElementById("next-item"); -if(b)b.click();else if(d())if(b=document.getElementsByTagName("article"),document.getElementById("current-item"))for(var a=0,f=b.length;ad.length;){var c=e.shift();d.push(c);Miniflux.Feed.Update(c,function(c){c=d.indexOf(c.feed_id);0<=c&&d.splice(c,1);0===e.length&&0===d.length&&(clearInterval(k),window.location.href="?action=unread")})}},100)}}}(); +Miniflux.Item=function(){function e(c){return item_id=c.getAttribute("data-item-id")}function d(c){if(c&&c.hasAttribute("data-reverse-label")){var a=c.innerHTML;c.innerHTML=c.getAttribute("data-reverse-label");c.setAttribute("data-reverse-label",a)}}function a(c){"mouse"!==Miniflux.Event.lastEventType&&Miniflux.Nav.SelectNextItem();c.parentNode.removeChild(c);var a=document.getElementById("page-counter");if(a){c=c.getAttribute("data-item-page");var d=parseInt(a.textContent,10)-1,b=document.getElementsByTagName("article"); +if(0===d||0===b.length)window.location=location.href;a.textContent=d;switch(c){case "unread":document.title="Miniflux ("+d+")";document.getElementById("nav-counter").textContent=d;break;case "feed-items":document.title="("+d+") "+a.parentNode.firstChild.nodeValue;break;default:document.title=a.parentNode.firstChild.nodeValue+" ("+d+")"}}}function b(c){var b=e(c),f=new XMLHttpRequest;f.onload=function(){if(Miniflux.Nav.IsListing())if(c.getAttribute("data-hide"))a(c);else{c.setAttribute("data-item-status", +"read");var b=c.querySelector("a.mark");d(b);(b=c.querySelector("a.mark"))&&b.setAttribute("data-action","mark-unread")}};f.open("POST","?action=mark-item-read&id="+b,!0);f.send()}function h(c){var b=e(c),f=new XMLHttpRequest;f.onload=function(){if(Miniflux.Nav.IsListing())if(c.getAttribute("data-hide"))a(c);else{c.setAttribute("data-item-status","unread");var b=c.querySelector("a.mark");d(b);(b=c.querySelector("a.mark"))&&b.setAttribute("data-action","mark-read")}};f.open("POST","?action=mark-item-unread&id="+ +b,!0);f.send()}return{MarkAsRead:b,MarkAsUnread:h,MarkAsRemoved:function(c){var b=e(c),d=new XMLHttpRequest;d.onload=function(){Miniflux.Nav.IsListing()&&a(c)};d.open("POST","?action=mark-item-removed&id="+b,!0);d.send()},SwitchBookmark:function(c){var b=e(c),f="1"===c.getAttribute("data-item-bookmark")?"0":"1",g=new XMLHttpRequest;g.onload=function(){if(Miniflux.Nav.IsListing()&&"bookmarks"===c.getAttribute("data-item-page"))a(c);else if(c.setAttribute("data-item-bookmark",f),Miniflux.Nav.IsListing()){var b= +c.querySelector("a.bookmark");d(b)}else if((b=c.querySelector("a.bookmark-icon"))&&b.hasAttribute("data-reverse-title")){var e=b.getAttribute("title");b.setAttribute("title",b.getAttribute("data-reverse-title"));b.setAttribute("data-reverse-title",e)}};g.open("POST","?action=bookmark&id="+b+"&value="+f,!0);g.send()},SwitchStatus:function(c){var a=c.getAttribute("data-item-status");"read"===a?h(c):"unread"===a&&b(c)},Show:function(c){(c=c.querySelector("a.show"))&&c.click()},OpenOriginal:function(c){var a= +c.querySelector("a.original");a&&("unread"===c.getAttribute("data-item-status")&&b(c),a.removeAttribute("data-action"),a.click())},DownloadContent:function(c){var a=document.getElementById("download-item");if(a){a.innerHTML=" "+a.getAttribute("data-before-message");a.className="loading-icon";var b=new XMLHttpRequest;b.onload=function(){var c=JSON.parse(b.responseText);a.className="";if(c.result){var d=document.getElementById("item-content");d&&(d.innerHTML=c.content);a.innerHTML=a.getAttribute("data-after-message")}else a.innerHTML= +a.getAttribute("data-failure-message")};c=e(c);b.open("POST","?action=download-item&id="+c,!0);b.send()}},MarkListingAsRead:function(a){for(var b=document.getElementsByTagName("article"),d=[],g=0,h=b.length;gb-(a.offsetTop+a.offsetHeight)||b-a.offsetTop>document.documentElement.clientHeight)&&window.scrollTo(0,a.offsetTop-10)}function d(){return document.getElementById("listing")?!0:!1}return{OpenNextPage:function(){var a=document.getElementById("next-page");a&&a.click()},OpenPreviousPage:function(){var a=document.getElementById("previous-page");a&&a.click()},SelectNextItem:function(){var a=document.getElementById("next-item"); +if(a)a.click();else if(d())if(a=document.getElementsByTagName("article"),document.getElementById("current-item"))for(var b=0,h=a.length;b 0 && queue.length < queue_length) { - var feed_id = feeds.shift(); queue.push(feed_id); Miniflux.Feed.Update(feed_id, function(response) { - var index = queue.indexOf(response.feed_id); if (index >= 0) queue.splice(index, 1); - if (feeds.length == 0 && queue.length == 0) { + if (feeds.length === 0 && queue.length === 0) { clearInterval(interval); - clearInterval(icon_interval); window.location.href = "?action=unread"; } }); } - }, 100); } }; diff --git a/assets/js/item.js b/assets/js/item.js index 29408f6..809a590 100644 --- a/assets/js/item.js +++ b/assets/js/item.js @@ -188,48 +188,27 @@ Miniflux.Item = (function() { var container = document.getElementById("download-item"); if (! container) return; - var item_id = getItemID(item); - var message = container.getAttribute("data-before-message"); - - var span = document.createElement("span"); - span.appendChild(document.createTextNode("☀")); - span.className = "loading-icon"; - - container.innerHTML = ""; - container.className = "downloading"; - container.appendChild(span); - container.appendChild(document.createTextNode(" " + message)); - - var icon_interval = setInterval(Miniflux.App.BlinkIcon, 250); - + container.innerHTML = " " + container.getAttribute("data-before-message"); + container.className = "loading-icon"; + var request = new XMLHttpRequest(); - request.onload = function() { var response = JSON.parse(request.responseText); - clearInterval(icon_interval); - + container.className = ""; + if (response.result) { - var content = document.getElementById("item-content"); if (content) content.innerHTML = response.content; - - if (container) { - var message = container.getAttribute("data-after-message"); - container.innerHTML = ""; - container.appendChild(document.createTextNode(" " + message)); - } + + container.innerHTML = container.getAttribute("data-after-message"); } else { - - if (container) { - var message = container.getAttribute("data-failure-message"); - container.innerHTML = ""; - container.appendChild(document.createTextNode(" " + message)); - } + container.innerHTML = container.getAttribute("data-failure-message"); } }; - + + var item_id = getItemID(item); request.open("POST", "?action=download-item&id=" + item_id, true); request.send(); }, diff --git a/templates/feeds.php b/templates/feeds.php index c5d1a85..2fbb55a 100644 --- a/templates/feeds.php +++ b/templates/feeds.php @@ -21,11 +21,9 @@
-

+

> ✖ - - diff --git a/themes/bootstrap-light/css/app.css b/themes/bootstrap-light/css/app.css index dd5ed50..6961d45 100644 --- a/themes/bootstrap-light/css/app.css +++ b/themes/bootstrap-light/css/app.css @@ -377,7 +377,7 @@ cite { font-style: normal; } .text-muted, -.downloading, +#download-item, .feed-last-checked { color: #999999; } @@ -5089,6 +5089,21 @@ span[id^="items-count-"]:before { span[id^="items-count-"]:after { content: ")"; } +.loading-icon:before { + content: "☀"; + animation-name: blinker; + -webkit-animation-name: blinker; + /* Chrome, Safari, Opera */ + animation-duration: 500ms; + -webkit-animation-duration: 500ms; + /* Chrome, Safari, Opera */ + animation-timing-function: ease-in-out; + -webkit-animation-timing-function: ease-in-out; + /* Chrome, Safari, Opera */ + animation-iteration-count: infinite; + -webkit-animation-iteration-count: infinite; + /* Chrome, Safari, Opera */ +} .logo { min-width: 100px; min-height: 45px; diff --git a/themes/bootstrap-light/less/miniflux-base.less b/themes/bootstrap-light/less/miniflux-base.less index 2117cf4..863fd35 100644 --- a/themes/bootstrap-light/less/miniflux-base.less +++ b/themes/bootstrap-light/less/miniflux-base.less @@ -67,6 +67,19 @@ span { } } +// Loading +.loading-icon:before { + content: "@{icon-loading}"; + animation-name: blinker; + -webkit-animation-name: blinker; /* Chrome, Safari, Opera */ + animation-duration: 500ms; + -webkit-animation-duration: 500ms; /* Chrome, Safari, Opera */ + animation-timing-function: ease-in-out; + -webkit-animation-timing-function: ease-in-out; /* Chrome, Safari, Opera */ + animation-iteration-count: infinite; + -webkit-animation-iteration-count: infinite; /* Chrome, Safari, Opera */ +} + // Logo .logo { min-width: 100px; @@ -264,7 +277,7 @@ article ul.item-menu { } } -.downloading { +#download-item { &:extend(.text-muted all); } diff --git a/themes/bootstrap-light/less/variables.less b/themes/bootstrap-light/less/variables.less index 7f4e4ec..9aa3df2 100644 --- a/themes/bootstrap-light/less/variables.less +++ b/themes/bootstrap-light/less/variables.less @@ -65,6 +65,7 @@ @icon-read: "✔"; @icon-bookmarked: "★"; @icon-not-bookmarked: "☆"; +@icon-loading: "☀"; // Components // ------------------------- diff --git a/themes/bootswatch-cyborg/css/app.css b/themes/bootswatch-cyborg/css/app.css index 0b4fa74..0b974bc 100644 --- a/themes/bootswatch-cyborg/css/app.css +++ b/themes/bootswatch-cyborg/css/app.css @@ -377,7 +377,7 @@ cite { font-style: normal; } .text-muted, -.downloading, +#download-item, .feed-last-checked { color: #888888; } @@ -5089,6 +5089,21 @@ span[id^="items-count-"]:before { span[id^="items-count-"]:after { content: ")"; } +.loading-icon:before { + content: "☀"; + animation-name: blinker; + -webkit-animation-name: blinker; + /* Chrome, Safari, Opera */ + animation-duration: 500ms; + -webkit-animation-duration: 500ms; + /* Chrome, Safari, Opera */ + animation-timing-function: ease-in-out; + -webkit-animation-timing-function: ease-in-out; + /* Chrome, Safari, Opera */ + animation-iteration-count: infinite; + -webkit-animation-iteration-count: infinite; + /* Chrome, Safari, Opera */ +} .logo { min-width: 100px; min-height: 45px; diff --git a/themes/bootswatch-cyborg/less/miniflux-base.less b/themes/bootswatch-cyborg/less/miniflux-base.less index 2117cf4..863fd35 100644 --- a/themes/bootswatch-cyborg/less/miniflux-base.less +++ b/themes/bootswatch-cyborg/less/miniflux-base.less @@ -67,6 +67,19 @@ span { } } +// Loading +.loading-icon:before { + content: "@{icon-loading}"; + animation-name: blinker; + -webkit-animation-name: blinker; /* Chrome, Safari, Opera */ + animation-duration: 500ms; + -webkit-animation-duration: 500ms; /* Chrome, Safari, Opera */ + animation-timing-function: ease-in-out; + -webkit-animation-timing-function: ease-in-out; /* Chrome, Safari, Opera */ + animation-iteration-count: infinite; + -webkit-animation-iteration-count: infinite; /* Chrome, Safari, Opera */ +} + // Logo .logo { min-width: 100px; @@ -264,7 +277,7 @@ article ul.item-menu { } } -.downloading { +#download-item { &:extend(.text-muted all); } diff --git a/themes/bootswatch-cyborg/less/variables.less b/themes/bootswatch-cyborg/less/variables.less index 9bec3e6..f8b50cf 100644 --- a/themes/bootswatch-cyborg/less/variables.less +++ b/themes/bootswatch-cyborg/less/variables.less @@ -65,6 +65,7 @@ @icon-read: "✔"; @icon-bookmarked: "★"; @icon-not-bookmarked: "☆"; +@icon-loading: "☀"; // Components // ------------------------- diff --git a/themes/hello/css/app.css b/themes/hello/css/app.css index 5a89ffe..87751fb 100755 --- a/themes/hello/css/app.css +++ b/themes/hello/css/app.css @@ -65,6 +65,21 @@ article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, header nav li > a:before, .page-header ul li a, .items .item-menu li a:before { font-family: "FontAwesome"; } +.loading-icon:before { + content: "☀"; + animation-name: blinker; + -webkit-animation-name: blinker; + /* Chrome, Safari, Opera */ + animation-duration: 500ms; + -webkit-animation-duration: 500ms; + /* Chrome, Safari, Opera */ + animation-timing-function: ease-in-out; + -webkit-animation-timing-function: ease-in-out; + /* Chrome, Safari, Opera */ + animation-iteration-count: infinite; + -webkit-animation-iteration-count: infinite; + /* Chrome, Safari, Opera */ } + form { background-color: #fFFFFF; padding: 10px; } diff --git a/themes/hello/scss/_common.scss b/themes/hello/scss/_common.scss index f12e5f9..da5ece5 100755 --- a/themes/hello/scss/_common.scss +++ b/themes/hello/scss/_common.scss @@ -37,4 +37,5 @@ $icon-bracket-open: "("; $icon-bracket-close: ")"; $icon-read: "✔"; $icon-bookmarked: "★"; -$icon-not-bookmarked: "☆"; \ No newline at end of file +$icon-not-bookmarked: "☆"; +$icon-loading: "☀"; \ No newline at end of file diff --git a/themes/hello/scss/_icons.scss b/themes/hello/scss/_icons.scss index 47b34e3..08532be 100644 --- a/themes/hello/scss/_icons.scss +++ b/themes/hello/scss/_icons.scss @@ -8,3 +8,16 @@ %awesome { font-family: "FontAwesome"; } + +// Loading +.loading-icon:before { + content: $icon-loading; + animation-name: blinker; + -webkit-animation-name: blinker; /* Chrome, Safari, Opera */ + animation-duration: 500ms; + -webkit-animation-duration: 500ms; /* Chrome, Safari, Opera */ + animation-timing-function: ease-in-out; + -webkit-animation-timing-function: ease-in-out; /* Chrome, Safari, Opera */ + animation-iteration-count: infinite; + -webkit-animation-iteration-count: infinite; /* Chrome, Safari, Opera */ +} \ No newline at end of file diff --git a/themes/midnight/css/app.css b/themes/midnight/css/app.css index e3281a7..376be2c 100644 --- a/themes/midnight/css/app.css +++ b/themes/midnight/css/app.css @@ -149,6 +149,6 @@ textarea:focus { color: #fff; } -.loading-icon { +.loading-icon:before { color: #fff; } \ No newline at end of file diff --git a/themes/still/css/app.css b/themes/still/css/app.css index cd22b60..339f940 100644 --- a/themes/still/css/app.css +++ b/themes/still/css/app.css @@ -178,6 +178,6 @@ textarea:focus { color: #fff; } -.loading-icon { +.loading-icon:before { color: #fff; } \ No newline at end of file