From 6244dc16ffe33bc12cbfc6fdca6bd679c1daa877 Mon Sep 17 00:00:00 2001 From: Rudy Gnodde Date: Thu, 14 Mar 2024 23:04:04 +0100 Subject: [PATCH] [TASK] Add loading indicator (#9) Resolves: #4 --- src/card.js | 9 ++++++++- src/card.styles.js | 27 +++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/src/card.js b/src/card.js index ce3bbe0..2b03479 100644 --- a/src/card.js +++ b/src/card.js @@ -24,7 +24,8 @@ export class WeekPlannerCard extends LitElement { static get properties() { return { _days: { type: Array }, - _config: { type: Object } + _config: { type: Object }, + _isLoading: { type: Boolean } } } @@ -81,6 +82,10 @@ export class WeekPlannerCard extends LitElement {
${this._renderDays()}
+ ${this._isLoading ? + html`
` : + '' + } `; @@ -151,6 +156,7 @@ export class WeekPlannerCard extends LitElement { } this._loading++; + this._isLoading = true; this._events = {}; let startDate = moment().startOf('day'); @@ -182,6 +188,7 @@ export class WeekPlannerCard extends LitElement { if (this._loading === 0) { clearInterval(checkLoading); this._updateCard(); + this._isLoading = false; window.setTimeout(() => { this._updateEvents(); diff --git a/src/card.styles.js b/src/card.styles.js index 45b7e84..1c1811e 100644 --- a/src/card.styles.js +++ b/src/card.styles.js @@ -52,6 +52,33 @@ export default css` color: var(--secondary-text-color, #aaaaaa); margin: 0 0 3px 0; } + + .loader { + position: absolute; + top: 16px; + right: 16px; + width: 40px; + height: 40px; + } + .loader:after { + content: " "; + display: block; + width: 24px; + height: 24px; + margin: 4px; + border-radius: 50%; + border: 3px solid var(--primary-text-color); + border-color: var(--primary-text-color) transparent var(--primary-text-color) transparent; + animation: loader 1.2s linear infinite; + } + @keyframes loader { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } + } @container weekplanner (width <= 1280px) { div.container div.day {