1
0
mirror of https://github.com/hotomoe/hotomoe synced 2024-12-13 06:08:14 +09:00
This commit is contained in:
syuilo 2018-02-12 00:58:02 +09:00
parent 910edf7c5f
commit f494310c4f
4 changed files with 42 additions and 49 deletions

View File

@ -1,47 +0,0 @@
<mk-repost-form-window>
<mk-window ref="window" is-modal={ true }>
<yield to="header">
%fa:retweet%%i18n:desktop.tags.mk-repost-form-window.title%
</yield>
<yield to="content">
<mk-repost-form ref="form" post={ parent.opts.post }/>
</yield>
</mk-window>
<style lang="stylus" scoped>
:scope
> mk-window
[data-yield='header']
> [data-fa]
margin-right 4px
</style>
<script lang="typescript">
this.onDocumentKeydown = e => {
if (e.target.tagName != 'INPUT' && e.target.tagName != 'TEXTAREA') {
if (e.which == 27) { // Esc
this.$refs.window.close();
}
}
};
this.on('mount', () => {
this.$refs.window.refs.form.on('cancel', () => {
this.$refs.window.close();
});
this.$refs.window.refs.form.on('posted', () => {
this.$refs.window.close();
});
document.addEventListener('keydown', this.onDocumentKeydown);
this.$refs.window.on('closed', () => {
this.$destroy();
});
});
this.on('unmount', () => {
document.removeEventListener('keydown', this.onDocumentKeydown);
});
</script>
</mk-repost-form-window>

View File

@ -8,6 +8,7 @@ import timelinePostSub from './timeline-post-sub.vue';
import subPostContent from './sub-post-content.vue';
import window from './window.vue';
import postFormWindow from './post-form-window.vue';
import repostFormWindow from './repost-form-window.vue';
Vue.component('mk-ui', ui);
Vue.component('mk-home', home);
@ -17,3 +18,4 @@ Vue.component('mk-timeline-post-sub', timelinePostSub);
Vue.component('mk-sub-post-content', subPostContent);
Vue.component('mk-window', window);
Vue.component('post-form-window', postFormWindow);
Vue.component('repost-form-window', repostFormWindow);

View File

@ -1,5 +1,5 @@
<template>
<mk-window is-modal @closed="$destroy">
<mk-window ref="window" is-modal @closed="$destroy">
<span slot="header">
<span v-if="!parent.opts.reply">%i18n:desktop.tags.mk-post-form-window.post%</span>
<span v-if="parent.opts.reply">%i18n:desktop.tags.mk-post-form-window.reply%</span>
@ -10,7 +10,7 @@
<mk-post-preview v-if="parent.opts.reply" :class="$style.postPreview" :post="reply"/>
<mk-post-form ref="form"
:reply="reply"
@post="$refs.window.close"
@posted="$refs.window.close"
@change-uploadings="onChangeUploadings"
@change-attached-media="onChangeMedia"/>
</div>

View File

@ -0,0 +1,38 @@
<template>
<mk-window ref="window" is-modal @closed="$destroy">
<span slot="header" :class="$style.header">%fa:retweet%%i18n:desktop.tags.mk-repost-form-window.title%</span>
<div slot="content">
<mk-repost-form ref="form" :post="post" @posted="$refs.window.close" @canceled="$refs.window.close"/>
</div>
</mk-window>
</template>
<script lang="ts">
import Vue from 'vue';
export default Vue.extend({
props: ['post'],
mounted() {
document.addEventListener('keydown', this.onDocumentKeydown);
},
beforeDestroy() {
document.removeEventListener('keydown', this.onDocumentKeydown);
},
methods: {
onDocumentKeydown(e) {
if (e.target.tagName != 'INPUT' && e.target.tagName != 'TEXTAREA') {
if (e.which == 27) { // Esc
(this.$refs.window as any).close();
}
}
}
}
});
</script>
<style lang="stylus" module>
.header
> [data-fa]
margin-right 4px
</style>