From 0c5635d356e38347fb6177197b7dade1c0f2f1db Mon Sep 17 00:00:00 2001 From: Szymon Lesisz Date: Wed, 8 Aug 2018 11:43:34 +0200 Subject: [PATCH] Show loader after 'Acquire Device' button is clicked --- src/js/components/common/LoaderCircle.js | 5 ++-- src/js/components/common/Notification.js | 9 +++++- src/styles/loader.less | 35 +++++++++++++++++------- 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/src/js/components/common/LoaderCircle.js b/src/js/components/common/LoaderCircle.js index fe4f4827..5443c5d4 100644 --- a/src/js/components/common/LoaderCircle.js +++ b/src/js/components/common/LoaderCircle.js @@ -3,14 +3,15 @@ import React from 'react'; -export default (props: { size: string, label?: string }): React$Element => { +export default (props: { size: string, label?: string, className?: string }): React$Element => { + const className = props.className ? `loader-circle ${props.className}` : 'loader-circle'; const style = { width: `${props.size}px`, height: `${props.size}px`, }; return ( -
+

{ props.label }

diff --git a/src/js/components/common/Notification.js b/src/js/components/common/Notification.js index 59e450fa..ab02f555 100644 --- a/src/js/components/common/Notification.js +++ b/src/js/components/common/Notification.js @@ -8,6 +8,7 @@ import { connect } from 'react-redux'; import * as NOTIFICATION from '~/js/actions/constants/notification'; import * as NotificationActions from '~/js/actions/NotificationActions'; import type { Action, State, Dispatch } from '~/flowtype'; +import Loader from './LoaderCircle'; type Props = { notifications: $ElementType, @@ -21,7 +22,8 @@ type NProps = { title: string; message?: string; actions?: Array; - close?: typeof NotificationActions.close + close?: typeof NotificationActions.close, + loading?: boolean } export const Notification = (props: NProps): React$Element => { @@ -48,6 +50,11 @@ export const Notification = (props: NProps): React$Element => { { actionButtons }
) : null } + { props.loading ? ( + + ) : null }
); diff --git a/src/styles/loader.less b/src/styles/loader.less index 6b5338ae..9e53392a 100644 --- a/src/styles/loader.less +++ b/src/styles/loader.less @@ -15,18 +15,18 @@ } .circular { - + width: 100%; height: 100%; animation: rotate 2s linear infinite; transform-origin: center center; - + position: absolute; - + .route { stroke: @color_gray_light; } - + .path { stroke-dasharray: 1, 200; stroke-dashoffset: 0; @@ -34,15 +34,15 @@ stroke-linecap: round; } } -} -@keyframes rotate { - 100% { - transform: rotate(360deg); + &.info { + .path { + animation: dash 1.5s ease-in-out infinite, colorInfo 6s ease-in-out infinite; + } } } -@keyframes dash { +@keyframes dash { 0% { stroke-dasharray: 1, 200; stroke-dashoffset: 0; @@ -57,7 +57,7 @@ } } -@keyframes color { +@keyframes color { 100%, 0% { stroke: @color_green_primary; } @@ -70,4 +70,19 @@ 80%, 90% { stroke: @color_green_tertiary; } +} + +@keyframes colorInfo { + 100%, 0% { + stroke: @color_info_primary; + } + 40% { + stroke: @color_info_primary; + } + 66% { + stroke: @color_info_primary; + } + 80%, 90% { + stroke: @color_info_primary; + } } \ No newline at end of file