From fd010ed75e338906aefd401438acbb972ad50ff4 Mon Sep 17 00:00:00 2001
From: Paul <paulmakles@gmail.com>
Date: Sun, 1 Aug 2021 21:08:42 +0100
Subject: [PATCH] Closing animation for settings.

---
 src/pages/settings/GenericSettings.tsx  | 24 +++++++++++++++++-------
 src/pages/settings/Settings.module.scss |  4 ++++
 2 files changed, 21 insertions(+), 7 deletions(-)

diff --git a/src/pages/settings/GenericSettings.tsx b/src/pages/settings/GenericSettings.tsx
index b9c9f54..42dd9f9 100644
--- a/src/pages/settings/GenericSettings.tsx
+++ b/src/pages/settings/GenericSettings.tsx
@@ -3,8 +3,9 @@ import { Helmet } from "react-helmet";
 import { Switch, useHistory, useParams } from "react-router-dom";
 
 import styles from "./Settings.module.scss";
+import classNames from "classnames";
 import { Text } from "preact-i18n";
-import { useContext, useEffect } from "preact/hooks";
+import { useContext, useEffect, useState } from "preact/hooks";
 
 import { isTouchscreenDevice } from "../../lib/isTouchscreenDevice";
 
@@ -48,12 +49,17 @@ export function GenericSettings({
     const theme = useContext(ThemeContext);
     const { page } = useParams<{ page: string }>();
 
+    const [closing, setClosing] = useState(false);
     function exitSettings() {
-        if (history.length > 0) {
-            history.goBack();
-        } else {
-            history.push("/");
-        }
+        setClosing(true);
+
+        setTimeout(() => {
+            if (history.length > 0) {
+                history.goBack();
+            } else {
+                history.push("/");
+            }
+        }, 100);
     }
 
     useEffect(() => {
@@ -68,7 +74,11 @@ export function GenericSettings({
     }, []);
 
     return (
-        <div className={styles.settings} data-mobile={isTouchscreenDevice}>
+        <div
+            className={classNames(styles.settings, {
+                [styles.closing]: closing,
+            })}
+            data-mobile={isTouchscreenDevice}>
             <Helmet>
                 <meta
                     name="theme-color"
diff --git a/src/pages/settings/Settings.module.scss b/src/pages/settings/Settings.module.scss
index b34ddd9..7dc73b2 100644
--- a/src/pages/settings/Settings.module.scss
+++ b/src/pages/settings/Settings.module.scss
@@ -69,6 +69,10 @@
     height: 100%;
     position: fixed;
     animation: open 0.18s ease-out, opacity 0.18s;
+
+    &.closing {
+        animation: close 0.18s ease-in;
+    }
 }
 
 .settings {
-- 
GitLab