From 107e160e3911674d50f105402a3ae7008df532ed Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Maaria=20Wahlstr=C3=B6m?= <maaria.wahlstrom@csc.fi>
Date: Tue, 8 Oct 2024 12:00:10 +0300
Subject: [PATCH] MSCR-581 Make modal x-button stick to top right and
 interactable while spinner visible

---
 mscr-ui/src/modules/form/form.styles.tsx |  6 ++-
 mscr-ui/src/modules/form/index.tsx       | 50 ++++++++++--------------
 2 files changed, 26 insertions(+), 30 deletions(-)

diff --git a/mscr-ui/src/modules/form/form.styles.tsx b/mscr-ui/src/modules/form/form.styles.tsx
index 46cf705f5..7a6b40d0a 100644
--- a/mscr-ui/src/modules/form/form.styles.tsx
+++ b/mscr-ui/src/modules/form/form.styles.tsx
@@ -17,8 +17,12 @@ export const WideMultiSelect = styled(MultiSelect)`
 
 export const CloseButton = styled(Button)`
   max-width: 55px;
-  &&:hover {
+  position: absolute;
+  z-index: 700;
+  right: 0;
+  &&:hover, &&:focus {
     background: none;
+    position: absolute;
   }
 `;
 
diff --git a/mscr-ui/src/modules/form/index.tsx b/mscr-ui/src/modules/form/index.tsx
index 17f0d9258..d168a2cf2 100644
--- a/mscr-ui/src/modules/form/index.tsx
+++ b/mscr-ui/src/modules/form/index.tsx
@@ -551,38 +551,30 @@ export default function FormModal({
       variant={isSmall ? 'smallScreen' : 'default'}
       style={{ position: 'relative' }}
     >
+      <CloseButton
+        variant="secondaryNoBorder"
+        icon={<IconClose />}
+        aria-label="t('cancel')"
+        onClick={() => handleClose()}
+      />
       <SpinnerOverlay animationVisible={submitAnimationVisible} />
       <ModalContent>
         <div id={'modalTop'}></div>
-
-        <div className="row">
-          <div className="col-8">
-            <ModalTitle>
-              {contentType == Type.Schema
-                ? modalType == ModalType.RegisterNewFull
-                  ? t('content-form.title.schema-register')
-                  : modalType == ModalType.MscrCopy
-                    ? t('content-form.title.schema-mscr-copy')
-                    : t('content-form.title.schema-revision')
-                : modalType == ModalType.RegisterNewFull
-                  ? t('content-form.title.crosswalk-register')
-                  : modalType == ModalType.RegisterNewMscr
-                    ? t('content-form.title.crosswalk-create')
-                    : modalType == ModalType.MscrCopy
-                      ? t('content-form.title.crosswalk-mscr-copy')
-                      : t('content-form.title.crosswalk-revision')}
-            </ModalTitle>
-          </div>
-          <div className="col-4">
-            <CloseButton
-              style={{ float: 'right' }}
-              variant="secondaryNoBorder"
-              icon={<IconClose />}
-              aria-label="t('cancel')"
-              onClick={() => handleClose()}
-            ></CloseButton>
-          </div>
-        </div>
+        <ModalTitle>
+          {contentType == Type.Schema
+            ? modalType == ModalType.RegisterNewFull
+              ? t('content-form.title.schema-register')
+              : modalType == ModalType.MscrCopy
+                ? t('content-form.title.schema-mscr-copy')
+                : t('content-form.title.schema-revision')
+            : modalType == ModalType.RegisterNewFull
+              ? t('content-form.title.crosswalk-register')
+              : modalType == ModalType.RegisterNewMscr
+                ? t('content-form.title.crosswalk-create')
+                : modalType == ModalType.MscrCopy
+                  ? t('content-form.title.crosswalk-mscr-copy')
+                  : t('content-form.title.crosswalk-revision')}
+        </ModalTitle>
 
         {(modalType == ModalType.RegisterNewFull ||
             modalType == ModalType.RevisionFull) &&