Skip to content
Snippets Groups Projects
Commit 2e78f46a authored by Timothee P's avatar Timothee P :sunflower:
Browse files

use modal instead of browser confirm dialog

parent 7229a5fa
No related branches found
No related tags found
No related merge requests found
...@@ -132,7 +132,7 @@ ...@@ -132,7 +132,7 @@
class="ui button button-hover-red tiny-margin" class="ui button button-hover-red tiny-margin"
data-tooltip="Supprimer le signalement" data-tooltip="Supprimer le signalement"
data-position="bottom right" data-position="bottom right"
@click="$emit('setIsCancelling')" @click="$emit('setIsDeleting')"
> >
<i <i
class="inverted grey trash alternate icon" class="inverted grey trash alternate icon"
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
:display-to-list-button="displayToListButton" :display-to-list-button="displayToListButton"
:is-feature-creator="isFeatureCreator" :is-feature-creator="isFeatureCreator"
:can-edit-feature="canEditFeature" :can-edit-feature="canEditFeature"
@setIsCancelling="isCanceling = true" @setIsDeleting="isDeleting = true"
@tofeature="pushNgo" @tofeature="pushNgo"
/> />
</div> </div>
...@@ -63,28 +63,33 @@ ...@@ -63,28 +63,33 @@
/> />
</div> </div>
</div> </div>
<div <div
v-if="isCanceling" v-if="isDeleting"
class="ui dimmer modals visible active" class="ui dimmer modals visible active"
> >
<div <div
:class="[ :class="[
'ui mini modal subscription', 'ui mini modal',
{ 'active visible': isCanceling }, { 'active visible': isDeleting },
]" ]"
> >
<i <i
class="close icon" class="close icon"
aria-hidden="true" aria-hidden="true"
@click="isCanceling = false" @click="isDeleting = false"
/> />
<div class="ui icon header"> <div
v-if="isDeleting"
class="ui icon header"
>
<i <i
class="trash alternate icon" class="trash alternate icon"
aria-hidden="true" aria-hidden="true"
/> />
Supprimer le signalement Supprimer le signalement
</div> </div>
<div class="actions"> <div class="actions">
<button <button
type="button" type="button"
...@@ -96,7 +101,61 @@ ...@@ -96,7 +101,61 @@
</div> </div>
</div> </div>
</div> </div>
<div
v-if="isLeaving"
class="ui dimmer modals visible active"
>
<div
:class="[
'ui mini modal',
{ 'active visible': isLeaving },
]"
>
<i
class="close icon"
aria-hidden="true"
@click="isLeaving = false"
/>
<div class="ui icon header">
<i
:class="[project.fast_edition_mode && hasUnsavedChange ? 'sign-out' : 'random', 'icon']"
aria-hidden="true"
/>
Abandonner {{
project.fast_edition_mode && hasUnsavedChange ?
'les modifications' :
'la vue signalement filtré'
}}
</div>
<div class="content">
{{
project.fast_edition_mode && hasUnsavedChange ?
'Les modifications apportées au signalement ne seront pas sauvegardées, continuer ?':
`Vous allez quittez la vue signalement filtré,
l\'ordre des signalements pourrait changer après édition d\'un signalement.`
}}
</div>
<div class="actions">
<button
type="button"
class="ui green compact button"
@click="stayOnPage"
>
Annuler
</button>
<button
type="button"
class="ui red compact button"
@click="leavePage"
>
Continuer
</button>
</div>
</div>
</div>
</div> </div>
<div v-else> <div v-else>
Pas de signalement correspondant trouvé Pas de signalement correspondant trouvé
</div> </div>
...@@ -139,19 +198,19 @@ export default { ...@@ -139,19 +198,19 @@ export default {
}, },
beforeRouteUpdate (to, from, next) { beforeRouteUpdate (to, from, next) {
let leaving = true; // by default navigate to next route
if (this.hasUnsavedChange) { if (this.hasUnsavedChange) {
leaving = this.confirmLeave(); // prompt user that there is unsaved changes or that features order might change this.confirmLeave(next); // prompt user that there is unsaved changes or that features order might change
} else {
next(); // continue navigation
} }
next(leaving);
}, },
beforeRouteLeave (to, from, next) { beforeRouteLeave (to, from, next) {
let leaving = true; // by default navigate to next route
if (this.hasUnsavedChange || (from.query.offset >= 0 && to.name === 'editer-signalement')) { if (this.hasUnsavedChange || (from.query.offset >= 0 && to.name === 'editer-signalement')) {
leaving = this.confirmLeave(); // prompt user that there is unsaved changes or that features order might change this.confirmLeave(next); // prompt user that there is unsaved changes or that features order might change
} else {
next(); // continue navigation
} }
next(leaving);
}, },
data() { data() {
...@@ -173,7 +232,8 @@ export default { ...@@ -173,7 +232,8 @@ export default {
events: [], events: [],
featureType: {}, featureType: {},
featuresCount: null, featuresCount: null,
isCanceling: false, isDeleting: false,
isLeaving: false,
slugSignal: '', slugSignal: '',
displayToListButton: false, displayToListButton: false,
}; };
...@@ -309,10 +369,17 @@ export default { ...@@ -309,10 +369,17 @@ export default {
} }
}, },
confirmLeave() { confirmLeave(next) {
return window.confirm(this.project.fast_edition_mode && this.hasUnsavedChange ? this.next = next;
'Les modifications apportées au signalement ne seront pas sauvegardées, continuer ?': this.isLeaving = true;
'Vous allez quittez la vue signalement filtré, l\'ordre des signalements pourrait changer après édition d\'un signalement.'); },
stayOnPage() {
this.isLeaving = false;
},
leavePage() {
this.next();
}, },
async reloadPage() { async reloadPage() {
......
...@@ -62,7 +62,7 @@ ...@@ -62,7 +62,7 @@
> >
<div <div
:class="[ :class="[
'ui mini modal subscription', 'ui mini modal',
{ 'active visible': isDeleteModalOpen }, { 'active visible': isDeleteModalOpen },
]" ]"
> >
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment