From 4bf3a3f552c9cae04513901bb6ab468b52c9c60e Mon Sep 17 00:00:00 2001 From: aymm Date: Fri, 2 Apr 2021 10:11:10 +0200 Subject: [PATCH] Improved banner hiding animation --- composer.lock | 2 +- scripts/poll.js | 20 ++++++++++++++++---- styles/style.css | 21 +++++++++++++++++---- view_poll.php | 2 +- 4 files changed, 35 insertions(+), 10 deletions(-) diff --git a/composer.lock b/composer.lock index 488b069..a075dd3 100644 --- a/composer.lock +++ b/composer.lock @@ -12,7 +12,7 @@ "dist": { "type": "path", "url": "../APnutI", - "reference": "c2434cfedcd88d729408ebfffc868d064260cbf1" + "reference": "a0b03d439f9e8fba3e3f37a8a194a3ccabcff183" }, "require": { "ext-curl": "*", diff --git a/scripts/poll.js b/scripts/poll.js index b43a3d8..6407332 100644 --- a/scripts/poll.js +++ b/scripts/poll.js @@ -40,16 +40,28 @@ function updateVotesRemaining() { } function hideBanner() { - const banner = document.querySelector('.success-banner'); + //const banner = document.querySelector('.success-banner'); + const banner = document.querySelector('.banner-wrapper'); const animationEnd = findTransitionEnd(); banner.addEventListener(animationEnd, animationEnded); + const rect = banner.getBoundingClientRect(); + console.log('Setting height to ', `${rect.height}px`); + banner.style.height = `${rect.height}px`; banner.classList.add('hiding'); } function animationEnded(event) { - event.target.removeEventListener(findTransitionEnd(), animationEnded); - event.target.classList.add('hidden'); - event.target.classList.remove('hiding'); + const banner = event.target; + const isPhase1End = !banner.classList.contains('resizing'); + banner.innerText = ''; + if (isPhase1End) { + console.log('Resizing'); + banner.classList.add('resizing'); + banner.style.height = '0'; + } else { + event.target.removeEventListener(findTransitionEnd(), animationEnded); + event.target.classList.add('hidden'); + } } function findTransitionEnd() { diff --git a/styles/style.css b/styles/style.css index 87b23a4..2737e61 100644 --- a/styles/style.css +++ b/styles/style.css @@ -6,6 +6,7 @@ --main-accent-color: rgb(253, 122, 0); --disabled-color: gray; --green: green; + --default-shadow: 3px 3px 10px 1px var(--secondary-bg-color); } @supports (color: color(display-p3 1 1 1)) { :root { @@ -60,6 +61,7 @@ header { padding: 8px; margin-bottom: 8px; background: var(--secondary-bg-color); + box-shadow: var(--default-shadow); } .spacer { @@ -96,6 +98,7 @@ header { .poll .user .avatar { margin-right: 8px; + box-shadow: var(--default-shadow); } .datewrapper { @@ -124,18 +127,28 @@ datewrapper time { font-size: small; } +.banner-wrapper { + cursor: pointer; + transition: all 0.25s ease-in-out; + box-sizing: border-box; +} /* Success banner */ .success-banner { background-color: var(--green); padding: 8px; display: inline-block; margin-bottom: 8px; - cursor: pointer; - transition: all 0.5s ease-in; + box-shadow: var(--default-shadow); } -.success-banner.hiding { - transform: translateX(-150%); +.banner-wrapper.hiding { + transform: translateX(-200%); +} +.banner-wrapper.resizing { + height: 0px; + width: 0px; + box-shadow: 0px; + padding: 0px; } .success-banner span { diff --git a/view_poll.php b/view_poll.php index ffd3615..84ae7cc 100644 --- a/view_poll.php +++ b/view_poll.php @@ -52,7 +52,7 @@ $data_can_vote = $poll->canVote() ? 'true' : 'false'; $disabled_button = ($poll->canVote() && count($user_votes) > 0) ? '' : 'disabled'; if (array_key_exists('success', $_GET) && $_GET['success'] == 1) { ?> -
+