40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import Vue from 'vue'
|
|
import { Component } from 'vue-property-decorator'
|
|
import { namespace } from "vuex-class";
|
|
import { Favourite } from "../store/favourites";
|
|
import { SavedState } from "../store/root";
|
|
|
|
const { State, Mutation } = namespace('favourites');
|
|
|
|
@Component({ template: require('../../components/favourites.html' )})
|
|
export class FavouritesComponent extends Vue {
|
|
@State favourites: Favourite[];
|
|
@Mutation remove: (fav: Favourite) => void;
|
|
|
|
choose(favourite: Favourite) {
|
|
this.$store.dispatch('load', favourite.state);
|
|
}
|
|
}
|
|
|
|
@Component({ template: require('../../components/favourites/save.html' )})
|
|
export class FavouritesAdderComponent extends Vue {
|
|
private name = "";
|
|
|
|
@Mutation add: (fav: Favourite) => void;
|
|
|
|
async save() {
|
|
const state = await this.$store.dispatch('save') as SavedState;
|
|
const name = this.name;
|
|
|
|
const favourite: Favourite = { name, state };
|
|
|
|
this.add(favourite);
|
|
this.name = '';
|
|
|
|
this.$emit('saved', favourite);
|
|
}
|
|
}
|
|
|
|
Vue.component('Favourites', FavouritesComponent);
|
|
Vue.component('FavouritesAdder', FavouritesAdderComponent);
|