From 4be7d3845f19ae62981e40e34820fad0f121369f Mon Sep 17 00:00:00 2001 From: Steven Giesel Date: Sat, 15 Mar 2025 19:39:22 +0100 Subject: [PATCH] feat: Refactor Like button and remove custom animation --- .../ShowBlogPost/Components/Like.razor | 21 ++++++++++++-- .../ShowBlogPost/Components/Like.razor.css | 26 ------------------ .../wwwroot/assets/ClapAnimation.webp | Bin 15158 -> 0 bytes 3 files changed, 18 insertions(+), 29 deletions(-) delete mode 100644 src/LinkDotNet.Blog.Web/Features/ShowBlogPost/Components/Like.razor.css delete mode 100644 src/LinkDotNet.Blog.Web/wwwroot/assets/ClapAnimation.webp diff --git a/src/LinkDotNet.Blog.Web/Features/ShowBlogPost/Components/Like.razor b/src/LinkDotNet.Blog.Web/Features/ShowBlogPost/Components/Like.razor index 798fe3fe..2b69de55 100644 --- a/src/LinkDotNet.Blog.Web/Features/ShowBlogPost/Components/Like.razor +++ b/src/LinkDotNet.Blog.Web/Features/ShowBlogPost/Components/Like.razor @@ -1,8 +1,21 @@ @using LinkDotNet.Blog.Domain @using LinkDotNet.Blog.Web.Features.Services @inject ILocalStorageService LocalStorage - @code { @@ -16,7 +29,9 @@ private bool HasLiked { get; set; } - private string BtnClass => HasLiked ? "clap-active" : string.Empty; + private string ButtonClass => HasLiked + ? "btn-primary" + : "btn-outline-secondary"; protected override void OnParametersSet() { diff --git a/src/LinkDotNet.Blog.Web/Features/ShowBlogPost/Components/Like.razor.css b/src/LinkDotNet.Blog.Web/Features/ShowBlogPost/Components/Like.razor.css deleted file mode 100644 index 571b34a4..00000000 --- a/src/LinkDotNet.Blog.Web/Features/ShowBlogPost/Components/Like.razor.css +++ /dev/null @@ -1,26 +0,0 @@ -.clap-btn { - display: inline-block; - Cursor: pointer; - width: 32px; - height: 32px; - background: url('assets/ClapAnimation.webp') no-repeat 0 50%; - background-size: 900%; -} - -html[data-bs-theme='light'] .clap-btn { - filter: invert(100%); -} - -.clap-active { - animation-name: animate; - animation-duration: .8s; - animation-iteration-count: 1; - animation-fill-mode: forwards; - animation-timing-function: steps(8); -} - -@keyframes animate { - 0% { background-position: left; } - 50% { background-position: right; } - 100% { background-position: right; } - } diff --git a/src/LinkDotNet.Blog.Web/wwwroot/assets/ClapAnimation.webp b/src/LinkDotNet.Blog.Web/wwwroot/assets/ClapAnimation.webp deleted file mode 100644 index f7fafdfba2e2aaa4532f96e7772549beeed68ca3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15158 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 OmNeljfA{;L<^Kio`vDdJ