lfqian commited on
Commit
153bfb8
·
1 Parent(s): 12ede86

Fix: Use Teleport for Updates modal to escape footer constraints

Browse files
Files changed (1) hide show
  1. src/components/FooterOpen.vue +47 -42
src/components/FooterOpen.vue CHANGED
@@ -25,7 +25,10 @@
25
  <span class="updates-link" @click="showUpdates = true">Updates</span>
26
  </div>
27
 
28
- <!-- Updates Modal -->
 
 
 
29
  <div v-if="showUpdates" class="modal-overlay" @click.self="showUpdates = false">
30
  <div class="modal-content">
31
  <div class="modal-header">
@@ -42,7 +45,7 @@
42
  </div>
43
  </div>
44
  </div>
45
- </footer>
46
  </template>
47
 
48
  <script>
@@ -175,7 +178,47 @@ export default {
175
  text-decoration: underline;
176
  }
177
 
178
- /* Modal styles */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  .modal-overlay {
180
  position: fixed;
181
  top: 0;
@@ -186,7 +229,7 @@ export default {
186
  display: flex;
187
  align-items: center;
188
  justify-content: center;
189
- z-index: 1000;
190
  }
191
 
192
  .modal-content {
@@ -262,42 +305,4 @@ export default {
262
  .update-list li:last-child {
263
  margin-bottom: 0;
264
  }
265
-
266
- /* Responsive */
267
- @media (max-width: 768px) {
268
- .page-footer {
269
- padding: 0.75rem 1rem;
270
- gap: 0.5rem;
271
- }
272
-
273
- .logo-item {
274
- width: 60px;
275
- height: 20px;
276
- }
277
-
278
- .footer-bottom-right {
279
- position: static;
280
- margin-top: 0.5rem;
281
- justify-content: center;
282
- }
283
- }
284
-
285
- @media (max-width: 480px) {
286
- .footer-label {
287
- font-size: 0.8rem;
288
- }
289
-
290
- .logos-row {
291
- gap: 0.75rem;
292
- }
293
-
294
- .logo-item {
295
- width: 52px;
296
- height: 18px;
297
- }
298
-
299
- .footer-bottom-right {
300
- font-size: 0.7rem;
301
- }
302
- }
303
  </style>
 
25
  <span class="updates-link" @click="showUpdates = true">Updates</span>
26
  </div>
27
 
28
+ </footer>
29
+
30
+ <!-- Updates Modal - Teleport to body so it's not constrained by footer -->
31
+ <Teleport to="body">
32
  <div v-if="showUpdates" class="modal-overlay" @click.self="showUpdates = false">
33
  <div class="modal-content">
34
  <div class="modal-header">
 
45
  </div>
46
  </div>
47
  </div>
48
+ </Teleport>
49
  </template>
50
 
51
  <script>
 
178
  text-decoration: underline;
179
  }
180
 
181
+ /* Responsive */
182
+ @media (max-width: 768px) {
183
+ .page-footer {
184
+ padding: 0.75rem 1rem;
185
+ gap: 0.5rem;
186
+ }
187
+
188
+ .logo-item {
189
+ width: 60px;
190
+ height: 20px;
191
+ }
192
+
193
+ .footer-bottom-right {
194
+ position: static;
195
+ margin-top: 0.5rem;
196
+ justify-content: center;
197
+ }
198
+ }
199
+
200
+ @media (max-width: 480px) {
201
+ .footer-label {
202
+ font-size: 0.8rem;
203
+ }
204
+
205
+ .logos-row {
206
+ gap: 0.75rem;
207
+ }
208
+
209
+ .logo-item {
210
+ width: 52px;
211
+ height: 18px;
212
+ }
213
+
214
+ .footer-bottom-right {
215
+ font-size: 0.7rem;
216
+ }
217
+ }
218
+ </style>
219
+
220
+ <!-- Global styles for Teleported modal -->
221
+ <style>
222
  .modal-overlay {
223
  position: fixed;
224
  top: 0;
 
229
  display: flex;
230
  align-items: center;
231
  justify-content: center;
232
+ z-index: 9999;
233
  }
234
 
235
  .modal-content {
 
305
  .update-list li:last-child {
306
  margin-bottom: 0;
307
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
308
  </style>