Merge pull request #416 from SamR1/modal-fix
fix modal navigation and closing
This commit is contained in:
		
							
								
								
									
										2
									
								
								fittrackee/dist/index.html
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								fittrackee/dist/index.html
									
									
									
									
										vendored
									
									
								
							@@ -1 +1 @@
 | 
			
		||||
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><!--[if IE]><link rel="icon" href="/favicon.ico"><![endif]--><link rel="stylesheet" href="/static/css/fork-awesome.min.css"/><link rel="stylesheet" href="/static/css/leaflet.css"/><title>FitTrackee</title><script defer="defer" src="/static/js/chunk-vendors.fe4fa96d.js"></script><script defer="defer" src="/static/js/app.19032807.js"></script><link href="/static/css/app.0a104971.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="/img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/img/icons/favicon-16x16.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="no"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="apple-mobile-web-app-title" content="fittrackee_client"><link rel="apple-touch-icon" href="/img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="/img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="/img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><body><noscript><strong>We're sorry but FitTrackee doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
 | 
			
		||||
<!doctype html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><!--[if IE]><link rel="icon" href="/favicon.ico"><![endif]--><link rel="stylesheet" href="/static/css/fork-awesome.min.css"/><link rel="stylesheet" href="/static/css/leaflet.css"/><title>FitTrackee</title><script defer="defer" src="/static/js/chunk-vendors.5345c351.js"></script><script defer="defer" src="/static/js/app.07e92a66.js"></script><link href="/static/css/app.a587cef2.css" rel="stylesheet"><link rel="icon" type="image/png" sizes="32x32" href="/img/icons/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/img/icons/favicon-16x16.png"><link rel="manifest" href="/manifest.json"><meta name="theme-color" content="#4DBA87"><meta name="apple-mobile-web-app-capable" content="no"><meta name="apple-mobile-web-app-status-bar-style" content="default"><meta name="apple-mobile-web-app-title" content="fittrackee_client"><link rel="apple-touch-icon" href="/img/icons/apple-touch-icon-152x152.png"><link rel="mask-icon" href="/img/icons/safari-pinned-tab.svg" color="#4DBA87"><meta name="msapplication-TileImage" content="/img/icons/msapplication-icon-144x144.png"><meta name="msapplication-TileColor" content="#000000"></head><body><noscript><strong>We're sorry but FitTrackee doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div></body></html>
 | 
			
		||||
							
								
								
									
										2
									
								
								fittrackee/dist/service-worker.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								fittrackee/dist/service-worker.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								fittrackee/dist/service-worker.js.map
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								fittrackee/dist/service-worker.js.map
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								fittrackee/dist/static/js/app.07e92a66.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								fittrackee/dist/static/js/app.07e92a66.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								fittrackee/dist/static/js/app.07e92a66.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								fittrackee/dist/static/js/app.07e92a66.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								fittrackee/dist/static/js/app.19032807.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								fittrackee/dist/static/js/app.19032807.js
									
									
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								fittrackee/dist/static/js/chunk-vendors.5345c351.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								fittrackee/dist/static/js/chunk-vendors.5345c351.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -1,2 +1,2 @@
 | 
			
		||||
"use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[845],{4264:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});r(7658);var n=r(6252),a=r(2262),s=r(3577),u=r(2201),o=r(7167),i=r(5801),c=r(9917);const l={key:0,id:"account-confirmation",class:"center-card with-margin"},E={class:"error-message"};var _=(0,n.aZ)({__name:"AccountConfirmationView",setup(e){const t=(0,u.yj)(),r=(0,u.tv)(),_=(0,c.o)(),d=(0,n.Fl)((()=>_.getters[i.SY.GETTERS.ERROR_MESSAGES])),S=(0,n.Fl)((()=>t.query.token));function m(){S.value?_.dispatch(i.YN.ACTIONS.CONFIRM_ACCOUNT,{token:S.value}):r.push("/")}return(0,n.wF)((()=>m())),(0,n.Ah)((()=>_.commit(i.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(e,t)=>{const r=(0,n.up)("router-link");return(0,a.SU)(d)?((0,n.wg)(),(0,n.iD)("div",l,[(0,n.Wm)(o.Z),(0,n._)("p",E,[(0,n._)("span",null,(0,s.zw)(e.$t("error.SOMETHING_WRONG"))+".",1),(0,n.Wm)(r,{class:"links",to:"/account-confirmation/resend"},{default:(0,n.w5)((()=>[(0,n.Uk)((0,s.zw)(e.$t("buttons.ACCOUNT-CONFIRMATION-RESEND"))+"? ",1)])),_:1})])])):(0,n.kq)("",!0)}}}),d=r(3744);const S=(0,d.Z)(_,[["__scopeId","data-v-785df978"]]);var m=S},8160:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});r(7658);var n=r(6252),a=r(2262),s=r(3577),u=r(2201),o=r(7167),i=r(5801),c=r(9917);const l={key:0,id:"email-update",class:"center-card with-margin"},E={class:"error-message"};var _=(0,n.aZ)({__name:"EmailUpdateView",setup(e){const t=(0,u.yj)(),r=(0,u.tv)(),_=(0,c.o)(),d=(0,n.Fl)((()=>_.getters[i.YN.GETTERS.AUTH_USER_PROFILE])),S=(0,n.Fl)((()=>_.getters[i.YN.GETTERS.IS_AUTHENTICATED])),m=(0,n.Fl)((()=>_.getters[i.SY.GETTERS.ERROR_MESSAGES])),p=(0,n.Fl)((()=>t.query.token));function R(){p.value?_.dispatch(i.YN.ACTIONS.CONFIRM_EMAIL,{token:p.value,refreshUser:S.value}):r.push("/")}return(0,n.wF)((()=>R())),(0,n.Ah)((()=>_.commit(i.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,n.YP)((()=>m.value),(e=>{d.value.username&&e&&r.push("/")})),(e,t)=>{const r=(0,n.up)("router-link"),u=(0,n.up)("i18n-t");return(0,a.SU)(m)&&!(0,a.SU)(d).username?((0,n.wg)(),(0,n.iD)("div",l,[(0,n.Wm)(o.Z),(0,n._)("p",E,[(0,n._)("span",null,(0,s.zw)(e.$t("error.SOMETHING_WRONG"))+".",1),(0,n._)("span",null,[(0,n.Wm)(u,{keypath:"user.PROFILE.ERRORED_EMAIL_UPDATE"},{default:(0,n.w5)((()=>[(0,n.Wm)(r,{to:"/login"},{default:(0,n.w5)((()=>[(0,n.Uk)((0,s.zw)(e.$t("user.LOG_IN")),1)])),_:1})])),_:1})])])])):(0,n.kq)("",!0)}}}),d=r(3744);const S=(0,d.Z)(_,[["__scopeId","data-v-8c2ec9ce"]]);var m=S},4669:function(e,t,r){r.r(t),r.d(t,{default:function(){return d}});var n=r(6252),a=r(2262),s=r(5801),u=r(9917);const o=e=>((0,n.dD)("data-v-641164f3"),e=e(),(0,n.Cn)(),e),i={key:0,id:"profile",class:"view"},c=o((()=>(0,n._)("div",{id:"bottom"},null,-1)));var l=(0,n.aZ)({__name:"ProfileView",setup(e){const t=(0,u.o)(),r=(0,n.Fl)((()=>t.getters[s.YN.GETTERS.AUTH_USER_PROFILE]));return(e,t)=>{const s=(0,n.up)("router-view");return(0,a.SU)(r).username?((0,n.wg)(),(0,n.iD)("div",i,[(0,n.Wm)(s,{user:(0,a.SU)(r)},null,8,["user"]),c])):(0,n.kq)("",!0)}}}),E=r(3744);const _=(0,E.Z)(l,[["__scopeId","data-v-641164f3"]]);var d=_},9453:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});var n=r(6252),a=r(2262),s=r(2201),u=r(2179),o=r(8732),i=r(5801),c=r(9917);const l={key:0,id:"user",class:"view"},E={class:"box"};var _=(0,n.aZ)({__name:"UserView",props:{fromAdmin:{type:Boolean}},setup(e){const t=e,{fromAdmin:r}=(0,a.BK)(t),_=(0,s.yj)(),d=(0,c.o)(),S=(0,n.Fl)((()=>d.getters[i.RT.GETTERS.USER]));return(0,n.wF)((()=>{_.params.username&&"string"===typeof _.params.username&&d.dispatch(i.RT.ACTIONS.GET_USER,_.params.username)})),(0,n.Jd)((()=>{d.dispatch(i.RT.ACTIONS.EMPTY_USER)})),(e,t)=>(0,a.SU)(S).username?((0,n.wg)(),(0,n.iD)("div",l,[(0,n.Wm)(u.Z,{user:(0,a.SU)(S)},null,8,["user"]),(0,n._)("div",E,[(0,n.Wm)(o.Z,{user:(0,a.SU)(S),"from-admin":(0,a.SU)(r)},null,8,["user","from-admin"])])])):(0,n.kq)("",!0)}}),d=r(3744);const S=(0,d.Z)(_,[["__scopeId","data-v-af7007f4"]]);var m=S}}]);
 | 
			
		||||
//# sourceMappingURL=profile.9d01b6f0.js.map
 | 
			
		||||
"use strict";(self["webpackChunkfittrackee_client"]=self["webpackChunkfittrackee_client"]||[]).push([[845],{4264:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});r(7658);var n=r(6252),a=r(2262),s=r(3577),u=r(2201),o=r(7167),i=r(5801),c=r(9917);const l={key:0,id:"account-confirmation",class:"center-card with-margin"},E={class:"error-message"};var _=(0,n.aZ)({__name:"AccountConfirmationView",setup(e){const t=(0,u.yj)(),r=(0,u.tv)(),_=(0,c.o)(),d=(0,n.Fl)((()=>_.getters[i.SY.GETTERS.ERROR_MESSAGES])),S=(0,n.Fl)((()=>t.query.token));function m(){S.value?_.dispatch(i.YN.ACTIONS.CONFIRM_ACCOUNT,{token:S.value}):r.push("/")}return(0,n.wF)((()=>m())),(0,n.Ah)((()=>_.commit(i.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(e,t)=>{const r=(0,n.up)("router-link");return(0,a.SU)(d)?((0,n.wg)(),(0,n.iD)("div",l,[(0,n.Wm)(o.Z),(0,n._)("p",E,[(0,n._)("span",null,(0,s.zw)(e.$t("error.SOMETHING_WRONG"))+".",1),(0,n.Wm)(r,{class:"links",to:"/account-confirmation/resend"},{default:(0,n.w5)((()=>[(0,n.Uk)((0,s.zw)(e.$t("buttons.ACCOUNT-CONFIRMATION-RESEND"))+"? ",1)])),_:1})])])):(0,n.kq)("",!0)}}}),d=r(3744);const S=(0,d.Z)(_,[["__scopeId","data-v-785df978"]]);var m=S},8160:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});r(7658);var n=r(6252),a=r(2262),s=r(3577),u=r(2201),o=r(7167),i=r(5801),c=r(9917);const l={key:0,id:"email-update",class:"center-card with-margin"},E={class:"error-message"};var _=(0,n.aZ)({__name:"EmailUpdateView",setup(e){const t=(0,u.yj)(),r=(0,u.tv)(),_=(0,c.o)(),d=(0,n.Fl)((()=>_.getters[i.YN.GETTERS.AUTH_USER_PROFILE])),S=(0,n.Fl)((()=>_.getters[i.YN.GETTERS.IS_AUTHENTICATED])),m=(0,n.Fl)((()=>_.getters[i.SY.GETTERS.ERROR_MESSAGES])),p=(0,n.Fl)((()=>t.query.token));function R(){p.value?_.dispatch(i.YN.ACTIONS.CONFIRM_EMAIL,{token:p.value,refreshUser:S.value}):r.push("/")}return(0,n.wF)((()=>R())),(0,n.Ah)((()=>_.commit(i.SY.MUTATIONS.EMPTY_ERROR_MESSAGES))),(0,n.YP)((()=>m.value),(e=>{d.value.username&&e&&r.push("/")})),(e,t)=>{const r=(0,n.up)("router-link"),u=(0,n.up)("i18n-t");return(0,a.SU)(m)&&!(0,a.SU)(d).username?((0,n.wg)(),(0,n.iD)("div",l,[(0,n.Wm)(o.Z),(0,n._)("p",E,[(0,n._)("span",null,(0,s.zw)(e.$t("error.SOMETHING_WRONG"))+".",1),(0,n._)("span",null,[(0,n.Wm)(u,{keypath:"user.PROFILE.ERRORED_EMAIL_UPDATE"},{default:(0,n.w5)((()=>[(0,n.Wm)(r,{to:"/login"},{default:(0,n.w5)((()=>[(0,n.Uk)((0,s.zw)(e.$t("user.LOG_IN")),1)])),_:1})])),_:1})])])])):(0,n.kq)("",!0)}}}),d=r(3744);const S=(0,d.Z)(_,[["__scopeId","data-v-8c2ec9ce"]]);var m=S},4669:function(e,t,r){r.r(t),r.d(t,{default:function(){return d}});var n=r(6252),a=r(2262),s=r(5801),u=r(9917);const o=e=>((0,n.dD)("data-v-641164f3"),e=e(),(0,n.Cn)(),e),i={key:0,id:"profile",class:"view"},c=o((()=>(0,n._)("div",{id:"bottom"},null,-1)));var l=(0,n.aZ)({__name:"ProfileView",setup(e){const t=(0,u.o)(),r=(0,n.Fl)((()=>t.getters[s.YN.GETTERS.AUTH_USER_PROFILE]));return(e,t)=>{const s=(0,n.up)("router-view");return(0,a.SU)(r).username?((0,n.wg)(),(0,n.iD)("div",i,[(0,n.Wm)(s,{user:(0,a.SU)(r)},null,8,["user"]),c])):(0,n.kq)("",!0)}}}),E=r(3744);const _=(0,E.Z)(l,[["__scopeId","data-v-641164f3"]]);var d=_},9453:function(e,t,r){r.r(t),r.d(t,{default:function(){return m}});var n=r(6252),a=r(2262),s=r(2201),u=r(2179),o=r(9977),i=r(5801),c=r(9917);const l={key:0,id:"user",class:"view"},E={class:"box"};var _=(0,n.aZ)({__name:"UserView",props:{fromAdmin:{type:Boolean}},setup(e){const t=e,{fromAdmin:r}=(0,a.BK)(t),_=(0,s.yj)(),d=(0,c.o)(),S=(0,n.Fl)((()=>d.getters[i.RT.GETTERS.USER]));return(0,n.wF)((()=>{_.params.username&&"string"===typeof _.params.username&&d.dispatch(i.RT.ACTIONS.GET_USER,_.params.username)})),(0,n.Jd)((()=>{d.dispatch(i.RT.ACTIONS.EMPTY_USER)})),(e,t)=>(0,a.SU)(S).username?((0,n.wg)(),(0,n.iD)("div",l,[(0,n.Wm)(u.Z,{user:(0,a.SU)(S)},null,8,["user"]),(0,n._)("div",E,[(0,n.Wm)(o.Z,{user:(0,a.SU)(S),"from-admin":(0,a.SU)(r)},null,8,["user","from-admin"])])])):(0,n.kq)("",!0)}}),d=r(3744);const S=(0,d.Z)(_,[["__scopeId","data-v-af7007f4"]]);var m=S}}]);
 | 
			
		||||
//# sourceMappingURL=profile.df2cbb8b.js.map
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										2
									
								
								fittrackee/dist/static/js/workouts.6d3e7c51.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								fittrackee/dist/static/js/workouts.6d3e7c51.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										1
									
								
								fittrackee/dist/static/js/workouts.6d3e7c51.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								fittrackee/dist/static/js/workouts.6d3e7c51.js.map
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -1,5 +1,5 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <div id="modal" role="dialog">
 | 
			
		||||
  <div id="modal" role="dialog" @click.self="emit('cancelAction')">
 | 
			
		||||
    <div class="custom-modal">
 | 
			
		||||
      <Card>
 | 
			
		||||
        <template #title>
 | 
			
		||||
@@ -16,14 +16,15 @@
 | 
			
		||||
          <div class="modal-buttons">
 | 
			
		||||
            <button
 | 
			
		||||
              class="confirm"
 | 
			
		||||
              id="confirm-button"
 | 
			
		||||
              v-if="!errorMessages"
 | 
			
		||||
              @click="emit('confirmAction')"
 | 
			
		||||
            >
 | 
			
		||||
              {{ $t('buttons.YES') }}
 | 
			
		||||
            </button>
 | 
			
		||||
            <button
 | 
			
		||||
              :tabindex="0"
 | 
			
		||||
              :id="`${name}-cancel-button`"
 | 
			
		||||
              tabindex="0"
 | 
			
		||||
              id="cancel-button"
 | 
			
		||||
              class="cancel"
 | 
			
		||||
              @click="emit('cancelAction')"
 | 
			
		||||
            >
 | 
			
		||||
@@ -37,7 +38,14 @@
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script setup lang="ts">
 | 
			
		||||
  import { ComputedRef, computed, toRefs, withDefaults, onUnmounted } from 'vue'
 | 
			
		||||
  import {
 | 
			
		||||
    ComputedRef,
 | 
			
		||||
    computed,
 | 
			
		||||
    onUnmounted,
 | 
			
		||||
    onMounted,
 | 
			
		||||
    toRefs,
 | 
			
		||||
    withDefaults,
 | 
			
		||||
  } from 'vue'
 | 
			
		||||
 | 
			
		||||
  import { ROOT_STORE } from '@/store/constants'
 | 
			
		||||
  import { useStore } from '@/use/useStore'
 | 
			
		||||
@@ -46,11 +54,9 @@
 | 
			
		||||
    title: string
 | 
			
		||||
    message: string
 | 
			
		||||
    strongMessage?: string | null
 | 
			
		||||
    name?: string | null
 | 
			
		||||
  }
 | 
			
		||||
  const props = withDefaults(defineProps<Props>(), {
 | 
			
		||||
    strongMessage: () => null,
 | 
			
		||||
    name: 'modal',
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  const emit = defineEmits(['cancelAction', 'confirmAction'])
 | 
			
		||||
@@ -61,7 +67,35 @@
 | 
			
		||||
  const errorMessages: ComputedRef<string | string[] | null> = computed(
 | 
			
		||||
    () => store.getters[ROOT_STORE.GETTERS.ERROR_MESSAGES]
 | 
			
		||||
  )
 | 
			
		||||
  onUnmounted(() => store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES))
 | 
			
		||||
  let confirmButton: HTMLElement | null = null
 | 
			
		||||
  let cancelButton: HTMLElement | null = null
 | 
			
		||||
  let previousFocusedElement: Element | null = null
 | 
			
		||||
 | 
			
		||||
  function focusTrap(e: KeyboardEvent) {
 | 
			
		||||
    if (e.key === 'Tab' || e.keyCode === 9) {
 | 
			
		||||
      e.preventDefault()
 | 
			
		||||
      if (document.activeElement?.id === 'cancel-button') {
 | 
			
		||||
        confirmButton?.focus()
 | 
			
		||||
      } else {
 | 
			
		||||
        cancelButton?.focus()
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  onMounted(() => {
 | 
			
		||||
    previousFocusedElement = document.activeElement
 | 
			
		||||
    cancelButton = document.getElementById('cancel-button')
 | 
			
		||||
    confirmButton = document.getElementById('confirm-button')
 | 
			
		||||
    if (cancelButton) {
 | 
			
		||||
      cancelButton.focus()
 | 
			
		||||
    }
 | 
			
		||||
    document.addEventListener('keydown', focusTrap)
 | 
			
		||||
  })
 | 
			
		||||
  onUnmounted(() => {
 | 
			
		||||
    store.commit(ROOT_STORE.MUTATIONS.EMPTY_ERROR_MESSAGES)
 | 
			
		||||
    document.removeEventListener('keydown', focusTrap)
 | 
			
		||||
    previousFocusedElement?.focus()
 | 
			
		||||
  })
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style lang="scss" scoped>
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
<template>
 | 
			
		||||
  <header id="nav">
 | 
			
		||||
    <Modal
 | 
			
		||||
      v-show="displayModal"
 | 
			
		||||
      v-if="displayModal"
 | 
			
		||||
      :title="$t('common.CONFIRMATION')"
 | 
			
		||||
      :message="$t('user.LOGOUT_CONFIRMATION')"
 | 
			
		||||
      @confirmAction="logout"
 | 
			
		||||
@@ -138,12 +138,6 @@
 | 
			
		||||
  }
 | 
			
		||||
  function updateDisplayModal(display: boolean) {
 | 
			
		||||
    displayModal.value = display
 | 
			
		||||
    if (display) {
 | 
			
		||||
      const button = document.getElementById('modal-cancel-button')
 | 
			
		||||
      if (button) {
 | 
			
		||||
        button.focus()
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,6 @@
 | 
			
		||||
  <div id="user-infos" class="description-list">
 | 
			
		||||
    <Modal
 | 
			
		||||
      v-if="displayModal"
 | 
			
		||||
      name="user"
 | 
			
		||||
      :title="$t('common.CONFIRMATION')"
 | 
			
		||||
      :message="
 | 
			
		||||
        displayModal === 'delete'
 | 
			
		||||
@@ -192,10 +191,6 @@
 | 
			
		||||
  function updateDisplayModal(value: string) {
 | 
			
		||||
    displayModal.value = value
 | 
			
		||||
    if (value !== '') {
 | 
			
		||||
      const button = document.getElementById('user-cancel-button')
 | 
			
		||||
      if (button) {
 | 
			
		||||
        button.focus()
 | 
			
		||||
      }
 | 
			
		||||
      store.commit(USERS_STORE.MUTATIONS.UPDATE_IS_SUCCESS, false)
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,6 @@
 | 
			
		||||
  <div id="user-infos-edition">
 | 
			
		||||
    <Modal
 | 
			
		||||
      v-if="displayModal"
 | 
			
		||||
      name="account"
 | 
			
		||||
      :title="$t('common.CONFIRMATION')"
 | 
			
		||||
      :message="$t('user.CONFIRM_ACCOUNT_DELETION')"
 | 
			
		||||
      @confirmAction="deleteAccount(user.username)"
 | 
			
		||||
@@ -215,12 +214,6 @@
 | 
			
		||||
  }
 | 
			
		||||
  function updateDisplayModal(value: boolean) {
 | 
			
		||||
    displayModal.value = value
 | 
			
		||||
    if (displayModal.value) {
 | 
			
		||||
      const button = document.getElementById('account-cancel-button')
 | 
			
		||||
      if (button) {
 | 
			
		||||
        button.focus()
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  function deleteAccount(username: string) {
 | 
			
		||||
    store.dispatch(AUTH_USER_STORE.ACTIONS.DELETE_ACCOUNT, { username })
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,6 @@
 | 
			
		||||
  <div id="oauth2-app" class="description-list">
 | 
			
		||||
    <Modal
 | 
			
		||||
      v-if="displayModal"
 | 
			
		||||
      name="app"
 | 
			
		||||
      :title="$t('common.CONFIRMATION')"
 | 
			
		||||
      :message="$t(messageToDisplay)"
 | 
			
		||||
      @confirmAction="confirmAction(client.id)"
 | 
			
		||||
@@ -180,11 +179,6 @@
 | 
			
		||||
    displayModal.value = value
 | 
			
		||||
    if (!value) {
 | 
			
		||||
      messageToDisplay.value = null
 | 
			
		||||
    } else {
 | 
			
		||||
      const button = document.getElementById('app-cancel-button')
 | 
			
		||||
      if (button) {
 | 
			
		||||
        button.focus()
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  function confirmAction(clientId: number) {
 | 
			
		||||
 
 | 
			
		||||
@@ -45,13 +45,13 @@
 | 
			
		||||
          <button
 | 
			
		||||
            id="delete-workout-button"
 | 
			
		||||
            class="transparent icon-button"
 | 
			
		||||
            @click="displayDeleteModal"
 | 
			
		||||
            @click.prevent="displayDeleteModal"
 | 
			
		||||
            :aria-label="$t(`workouts.DELETE_WORKOUT`)"
 | 
			
		||||
          >
 | 
			
		||||
            <i class="fa fa-trash" aria-hidden="true" />
 | 
			
		||||
          </button>
 | 
			
		||||
        </div>
 | 
			
		||||
        <div class="workout-title" v-else>
 | 
			
		||||
        <div class="workout-title" v-else-if="workoutObject.segmentId">
 | 
			
		||||
          {{ workoutObject.title }}
 | 
			
		||||
          <span class="workout-segment">
 | 
			
		||||
            —
 | 
			
		||||
@@ -69,7 +69,7 @@
 | 
			
		||||
              v-if="workoutObject.type === 'SEGMENT'"
 | 
			
		||||
              :to="{
 | 
			
		||||
                name: 'Workout',
 | 
			
		||||
                params: { workoutId: workoutObject.workoutId }
 | 
			
		||||
                params: { workoutId: workoutObject.workoutId },
 | 
			
		||||
              }"
 | 
			
		||||
            >
 | 
			
		||||
              > {{ $t('workouts.BACK_TO_WORKOUT') }}
 | 
			
		||||
@@ -129,8 +129,7 @@
 | 
			
		||||
        gpxLink.click()
 | 
			
		||||
      })
 | 
			
		||||
  }
 | 
			
		||||
  function displayDeleteModal(event: Event & { target: HTMLInputElement }) {
 | 
			
		||||
    event.target.blur()
 | 
			
		||||
  function displayDeleteModal() {
 | 
			
		||||
    emit('displayModal', true)
 | 
			
		||||
  }
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,6 @@
 | 
			
		||||
  <div class="workout-detail">
 | 
			
		||||
    <Modal
 | 
			
		||||
      v-if="displayModal"
 | 
			
		||||
      name="workout"
 | 
			
		||||
      :title="$t('common.CONFIRMATION')"
 | 
			
		||||
      :message="$t('workouts.WORKOUT_DELETION_CONFIRMATION')"
 | 
			
		||||
      @confirmAction="deleteWorkout(workoutObject.workoutId)"
 | 
			
		||||
@@ -37,7 +36,6 @@
 | 
			
		||||
    ComputedRef,
 | 
			
		||||
    Ref,
 | 
			
		||||
    computed,
 | 
			
		||||
    nextTick,
 | 
			
		||||
    ref,
 | 
			
		||||
    toRefs,
 | 
			
		||||
    watch,
 | 
			
		||||
@@ -164,21 +162,9 @@
 | 
			
		||||
  }
 | 
			
		||||
  function updateDisplayModal(value: boolean) {
 | 
			
		||||
    displayModal.value = value
 | 
			
		||||
    if (displayModal.value) {
 | 
			
		||||
      nextTick(() => {
 | 
			
		||||
        const button = document.getElementById('workout-cancel-button')
 | 
			
		||||
        if (button) {
 | 
			
		||||
          button.focus()
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  function cancelDelete() {
 | 
			
		||||
    updateDisplayModal(false)
 | 
			
		||||
    const button = document.getElementById('delete-workout-button')
 | 
			
		||||
    if (button) {
 | 
			
		||||
      button.focus()
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  function deleteWorkout(workoutId: string) {
 | 
			
		||||
    updateDisplayModal(false)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user