From 1b0c81b0d685a30b013559312b8b0bd87f8e6ea0 Mon Sep 17 00:00:00 2001 From: Bram Wiepjes <bramw@protonmail.com> Date: Mon, 18 Feb 2019 21:21:49 +0100 Subject: [PATCH] created button loading animation --- web-frontend/public/login.html | 9 ++++-- web-frontend/src/scss/abstracts/_mixins.scss | 5 ++++ .../src/scss/abstracts/_variables.scss | 1 - web-frontend/src/scss/base/_helpers.scss | 10 +++++++ web-frontend/src/scss/components/_button.scss | 29 ++++++++++++++++++- 5 files changed, 50 insertions(+), 4 deletions(-) diff --git a/web-frontend/public/login.html b/web-frontend/public/login.html index 703fadff2..8c9734c9a 100644 --- a/web-frontend/public/login.html +++ b/web-frontend/public/login.html @@ -9,7 +9,7 @@ <div class="box-page"> <!-- login page --> - <div class="box login-page login-page-login"> + <div class="box login-page login-page-login hidden"> <h1 class="box-title">Baserow</h1> <div class="alert alert-error alert-has-icon"> <div class="alert-icon"> @@ -94,7 +94,7 @@ </div> <!-- sign up page --> - <div class="box login-page login-page-signup hidden"> + <div class="box login-page login-page-signup"> <h1 class="box-title">Sign up</h1> <form> <div class="control"> @@ -176,6 +176,11 @@ $(".login-page").addClass("hidden"); $($(this).attr("data-page")).removeClass("hidden"); }); + + $("[data-loading]").click(function(e) { + e.preventDefault(); + $(this).toggleClass("button-loading"); + }); })(); </script> </body> diff --git a/web-frontend/src/scss/abstracts/_mixins.scss b/web-frontend/src/scss/abstracts/_mixins.scss index e6fabe786..6566a9bcf 100644 --- a/web-frontend/src/scss/abstracts/_mixins.scss +++ b/web-frontend/src/scss/abstracts/_mixins.scss @@ -10,6 +10,11 @@ &[disabled] { background-color: $background; } + + &.button-loading { + background-color: $active-background; + color: $active-background; + } } @mixin button-size($font-size, $height, $left-right-space) { diff --git a/web-frontend/src/scss/abstracts/_variables.scss b/web-frontend/src/scss/abstracts/_variables.scss index 0396f6a5a..5ff6294b8 100644 --- a/web-frontend/src/scss/abstracts/_variables.scss +++ b/web-frontend/src/scss/abstracts/_variables.scss @@ -1,7 +1,6 @@ $text-font-stack: 'Open Sans', sans-serif; $logo-font-stack: 'Montserrat', sans-serif; - // primary colors $color-primary-100: #ebf7ff !default; $color-primary-200: #b5dbf5 !default; diff --git a/web-frontend/src/scss/base/_helpers.scss b/web-frontend/src/scss/base/_helpers.scss index 2b5154db1..e63071912 100644 --- a/web-frontend/src/scss/base/_helpers.scss +++ b/web-frontend/src/scss/base/_helpers.scss @@ -5,3 +5,13 @@ .align-right { text-align: right; } + +@keyframes spin { + 0% { + transform: rotate(0deg); + } + + 100% { + transform: rotate(360deg); + } +} diff --git a/web-frontend/src/scss/components/_button.scss b/web-frontend/src/scss/components/_button.scss index ab489a39b..72570c7b2 100644 --- a/web-frontend/src/scss/components/_button.scss +++ b/web-frontend/src/scss/components/_button.scss @@ -9,8 +9,9 @@ vertical-align: middle; text-decoration: none; border-radius: 3px; + transition: padding 0.05s ease-in-out; - @include button-size(14px, 32px, 12px); + @include button-size(14px, 32px, 14px); @include button-style($color-primary-500, $color-primary-600); &:hover, @@ -56,3 +57,29 @@ margin: 0 3px; } } + +.button-loading { + position: relative; + cursor: wait; + user-select: none; + + &:hover, + &:focus { + box-shadow: none; + } + + &::after { + content: " "; + position: absolute; + left: 50%; + top: 50%; + margin: -0.7em; + display: block; + width: 1.4em; + height: 1.4em; + border-radius: 50%; + border: 0.25em solid #fff; + border-color: #fff transparent #fff transparent; + animation: spin 1.2s linear infinite; + } +}