From d4322bf94731b59d42a48aa0d79587346a99d98c Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Fri, 19 Jan 2024 10:14:56 +0100 Subject: [PATCH] feat(clipboard): can temporary hide for nicer animation --- .../controllers/clipboard_controller.ts | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/app/javascript/controllers/clipboard_controller.ts b/app/javascript/controllers/clipboard_controller.ts index 40597f8f6..9164532ad 100644 --- a/app/javascript/controllers/clipboard_controller.ts +++ b/app/javascript/controllers/clipboard_controller.ts @@ -4,11 +4,13 @@ const SUCCESS_MESSAGE_TIMEOUT = 1000; export class ClipboardController extends Controller { static values = { text: String }; - static targets = ['success']; + static targets = ['success', 'toHide']; declare readonly textValue: string; declare readonly successTarget: HTMLElement; + declare readonly toHideTarget: HTMLElement; declare readonly hasSuccessTarget: boolean; + declare readonly hasToHideTarget: boolean; #timer?: ReturnType; @@ -23,12 +25,22 @@ export class ClipboardController extends Controller { } private displayCopyConfirmation() { + if (this.hasToHideTarget) { + this.toHideTarget.classList.add('hidden'); + } if (this.hasSuccessTarget) { this.successTarget.classList.remove('hidden'); - clearTimeout(this.#timer); - this.#timer = setTimeout(() => { - this.successTarget.classList.add('hidden'); - }, SUCCESS_MESSAGE_TIMEOUT); } + + clearTimeout(this.#timer); + + this.#timer = setTimeout(() => { + if (this.hasSuccessTarget) { + this.successTarget.classList.add('hidden'); + } + if (this.hasToHideTarget) { + this.toHideTarget.classList.remove('hidden'); + } + }, SUCCESS_MESSAGE_TIMEOUT); } }