trashposs/src/client/app/desktop/views/components/user-lists-window.vue

70 lines
1.4 KiB
Vue
Raw Normal View History

2018-04-24 23:34:50 +02:00
<template>
2018-04-26 04:19:57 +02:00
<mk-window ref="window" is-modal width="450px" height="500px" @closed="$destroy">
2018-06-02 06:34:53 +02:00
<span slot="header">%fa:list% %i18n:@title%</span>
2018-04-24 23:34:50 +02:00
2018-05-23 22:28:46 +02:00
<div data-id="6e4caea3-d8f9-4ab7-96de-ab67fe8d5c82" :data-darkmode="$store.state.device.darkmode">
<button class="ui" @click="add">%i18n:@create-list%</button>
2018-04-26 04:19:57 +02:00
<a v-for="list in lists" :key="list.id" @click="choice(list)">{{ list.title }}</a>
</div>
2018-04-24 23:34:50 +02:00
</mk-window>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
data() {
return {
fetching: true,
lists: []
};
},
mounted() {
(this as any).api('users/lists/list').then(lists => {
this.fetching = false;
this.lists = lists;
});
},
methods: {
2018-04-25 05:36:54 +02:00
add() {
(this as any).apis.input({
title: 'リスト名',
}).then(async title => {
const list = await (this as any).api('users/lists/create', {
title
});
2018-04-25 16:08:40 +02:00
this.$emit('choosen', list);
2018-04-25 05:36:54 +02:00
});
},
2018-04-25 16:08:40 +02:00
choice(list) {
this.$emit('choosen', list);
},
2018-04-24 23:34:50 +02:00
close() {
(this as any).$refs.window.close();
}
}
});
</script>
<style lang="stylus" scoped>
2018-04-26 04:19:57 +02:00
root(isDark)
padding 16px
> button
margin-bottom 16px
> a
display block
padding 16px
border solid 1px isDark ? #1c2023 : #eee
border-radius 4px
[data-id="6e4caea3-d8f9-4ab7-96de-ab67fe8d5c82"][data-darkmode]
root(true)
[data-id="6e4caea3-d8f9-4ab7-96de-ab67fe8d5c82"]:not([data-darkmode])
root(false)
2018-04-24 23:34:50 +02:00
</style>