56 lines
957 B
Vue
56 lines
957 B
Vue
<template>
|
|
<button @click="confirmInput">Confirm</button>
|
|
<button @click="saveChanges">Save Changes</button>
|
|
<ul>
|
|
<user-item
|
|
v-for="user in users"
|
|
:key="user.id"
|
|
:name="user.fullName"
|
|
:role="user.role"
|
|
></user-item>
|
|
</ul>
|
|
</template>
|
|
|
|
<script>
|
|
import UserItem from './UserItem.vue';
|
|
|
|
export default {
|
|
components: {
|
|
UserItem
|
|
},
|
|
inject: ['users'],
|
|
data() {
|
|
return {
|
|
changesSaved: false
|
|
};
|
|
},
|
|
methods: {
|
|
confirmInput() {
|
|
this.$router.push('/teams');
|
|
},
|
|
saveChanges() {
|
|
this.changesSaved = true;
|
|
}
|
|
},
|
|
beforeRouteLeave(to, from, next) {
|
|
if (this.changesSaved) {
|
|
next();
|
|
} else {
|
|
const userWantsToLeave = confirm(
|
|
'Changes might be lost, do you want to continue?'
|
|
);
|
|
next(userWantsToLeave);
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
|
|
<style scoped>
|
|
ul {
|
|
list-style: none;
|
|
margin: 2rem auto;
|
|
max-width: 20rem;
|
|
padding: 0;
|
|
}
|
|
</style>
|