wip
This commit is contained in:
		
							parent
							
								
									2a54802efa
								
							
						
					
					
						commit
						e01b9d3f16
					
				
					 22 changed files with 142 additions and 129 deletions
				
			
		| 
						 | 
					@ -6,22 +6,13 @@ export default function<T extends object>(data: {
 | 
				
			||||||
}) {
 | 
					}) {
 | 
				
			||||||
	return Vue.extend({
 | 
						return Vue.extend({
 | 
				
			||||||
		props: {
 | 
							props: {
 | 
				
			||||||
			wid: {
 | 
								widget: {
 | 
				
			||||||
				type: String,
 | 
									type: Object
 | 
				
			||||||
				required: true
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			wplace: {
 | 
					 | 
				
			||||||
				type: String,
 | 
					 | 
				
			||||||
				required: true
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			wprops: {
 | 
					 | 
				
			||||||
				type: Object,
 | 
					 | 
				
			||||||
				required: false
 | 
					 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		computed: {
 | 
							computed: {
 | 
				
			||||||
			id(): string {
 | 
								id(): string {
 | 
				
			||||||
				return this.wid;
 | 
									return this.widget.id;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		data() {
 | 
							data() {
 | 
				
			||||||
| 
						 | 
					@ -32,19 +23,19 @@ export default function<T extends object>(data: {
 | 
				
			||||||
		watch: {
 | 
							watch: {
 | 
				
			||||||
			props(newProps, oldProps) {
 | 
								props(newProps, oldProps) {
 | 
				
			||||||
				if (JSON.stringify(newProps) == JSON.stringify(oldProps)) return;
 | 
									if (JSON.stringify(newProps) == JSON.stringify(oldProps)) return;
 | 
				
			||||||
				this.$root.$data.os.api('i/update_home', {
 | 
									(this as any).api('i/update_home', {
 | 
				
			||||||
					id: this.id,
 | 
										id: this.id,
 | 
				
			||||||
					data: newProps
 | 
										data: newProps
 | 
				
			||||||
				}).then(() => {
 | 
									}).then(() => {
 | 
				
			||||||
					this.$root.$data.os.i.client_settings.home.find(w => w.id == this.id).data = newProps;
 | 
										(this as any).os.i.client_settings.home.find(w => w.id == this.id).data = newProps;
 | 
				
			||||||
				});
 | 
									});
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		created() {
 | 
							created() {
 | 
				
			||||||
			if (this.props) {
 | 
								if (this.props) {
 | 
				
			||||||
				Object.keys(this.props).forEach(prop => {
 | 
									Object.keys(this.props).forEach(prop => {
 | 
				
			||||||
					if (this.wprops.hasOwnProperty(prop)) {
 | 
										if (this.widget.data.hasOwnProperty(prop)) {
 | 
				
			||||||
						this.props[prop] = this.wprops[prop];
 | 
											this.props[prop] = this.widget.data[prop];
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
				});
 | 
									});
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,6 +5,7 @@ import signup from './signup.vue';
 | 
				
			||||||
import forkit from './forkit.vue';
 | 
					import forkit from './forkit.vue';
 | 
				
			||||||
import nav from './nav.vue';
 | 
					import nav from './nav.vue';
 | 
				
			||||||
import postHtml from './post-html';
 | 
					import postHtml from './post-html';
 | 
				
			||||||
 | 
					import pollEditor from './poll-editor.vue';
 | 
				
			||||||
import reactionIcon from './reaction-icon.vue';
 | 
					import reactionIcon from './reaction-icon.vue';
 | 
				
			||||||
import reactionsViewer from './reactions-viewer.vue';
 | 
					import reactionsViewer from './reactions-viewer.vue';
 | 
				
			||||||
import time from './time.vue';
 | 
					import time from './time.vue';
 | 
				
			||||||
| 
						 | 
					@ -13,18 +14,17 @@ import uploader from './uploader.vue';
 | 
				
			||||||
import specialMessage from './special-message.vue';
 | 
					import specialMessage from './special-message.vue';
 | 
				
			||||||
import streamIndicator from './stream-indicator.vue';
 | 
					import streamIndicator from './stream-indicator.vue';
 | 
				
			||||||
import ellipsis from './ellipsis.vue';
 | 
					import ellipsis from './ellipsis.vue';
 | 
				
			||||||
import wNav from './widgets/nav.vue';
 | 
					import messaging from './messaging.vue';
 | 
				
			||||||
import wCalendar from './widgets/calendar.vue';
 | 
					import messagingForm from './messaging-form.vue';
 | 
				
			||||||
import wPhotoStream from './widgets/photo-stream.vue';
 | 
					import messagingRoom from './messaging-room.vue';
 | 
				
			||||||
import wSlideshow from './widgets/slideshow.vue';
 | 
					import messagingMessage from './messaging-message.vue';
 | 
				
			||||||
import wTips from './widgets/tips.vue';
 | 
					 | 
				
			||||||
import wDonation from './widgets/donation.vue';
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Vue.component('mk-signin', signin);
 | 
					Vue.component('mk-signin', signin);
 | 
				
			||||||
Vue.component('mk-signup', signup);
 | 
					Vue.component('mk-signup', signup);
 | 
				
			||||||
Vue.component('mk-forkit', forkit);
 | 
					Vue.component('mk-forkit', forkit);
 | 
				
			||||||
Vue.component('mk-nav', nav);
 | 
					Vue.component('mk-nav', nav);
 | 
				
			||||||
Vue.component('mk-post-html', postHtml);
 | 
					Vue.component('mk-post-html', postHtml);
 | 
				
			||||||
 | 
					Vue.component('mk-poll-editor', pollEditor);
 | 
				
			||||||
Vue.component('mk-reaction-icon', reactionIcon);
 | 
					Vue.component('mk-reaction-icon', reactionIcon);
 | 
				
			||||||
Vue.component('mk-reactions-viewer', reactionsViewer);
 | 
					Vue.component('mk-reactions-viewer', reactionsViewer);
 | 
				
			||||||
Vue.component('mk-time', time);
 | 
					Vue.component('mk-time', time);
 | 
				
			||||||
| 
						 | 
					@ -33,9 +33,7 @@ Vue.component('mk-uploader', uploader);
 | 
				
			||||||
Vue.component('mk-special-message', specialMessage);
 | 
					Vue.component('mk-special-message', specialMessage);
 | 
				
			||||||
Vue.component('mk-stream-indicator', streamIndicator);
 | 
					Vue.component('mk-stream-indicator', streamIndicator);
 | 
				
			||||||
Vue.component('mk-ellipsis', ellipsis);
 | 
					Vue.component('mk-ellipsis', ellipsis);
 | 
				
			||||||
Vue.component('mkw-nav', wNav);
 | 
					Vue.component('mk-messaging', messaging);
 | 
				
			||||||
Vue.component('mkw-calendar', wCalendar);
 | 
					Vue.component('mk-messaging-form', messagingForm);
 | 
				
			||||||
Vue.component('mkw-photo-stream', wPhotoStream);
 | 
					Vue.component('mk-messaging-room', messagingRoom);
 | 
				
			||||||
Vue.component('mkw-slideshoe', wSlideshow);
 | 
					Vue.component('mk-messaging-message', messagingMessage);
 | 
				
			||||||
Vue.component('mkw-tips', wTips);
 | 
					 | 
				
			||||||
Vue.component('mkw-donation', wDonation);
 | 
					 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -23,7 +23,7 @@ export default Vue.extend({
 | 
				
			||||||
	data() {
 | 
						data() {
 | 
				
			||||||
		return {
 | 
							return {
 | 
				
			||||||
			text: null,
 | 
								text: null,
 | 
				
			||||||
			files: [],
 | 
								file: null,
 | 
				
			||||||
			sending: false
 | 
								sending: false
 | 
				
			||||||
		};
 | 
							};
 | 
				
			||||||
	},
 | 
						},
 | 
				
			||||||
| 
						 | 
					@ -49,17 +49,17 @@ export default Vue.extend({
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		chooseFileFromDrive() {
 | 
							chooseFileFromDrive() {
 | 
				
			||||||
			const w = new MkDriveChooserWindow({
 | 
								(this as any).apis.chooseDriveFile({
 | 
				
			||||||
				propsData: {
 | 
									multiple: false
 | 
				
			||||||
					multiple: true
 | 
								}).then(file => {
 | 
				
			||||||
				}
 | 
									this.file = file;
 | 
				
			||||||
			}).$mount();
 | 
					 | 
				
			||||||
			w.$once('selected', files => {
 | 
					 | 
				
			||||||
				files.forEach(this.addFile);
 | 
					 | 
				
			||||||
			});
 | 
								});
 | 
				
			||||||
			document.body.appendChild(w.$el);
 | 
					 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							upload() {
 | 
				
			||||||
 | 
								// TODO
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		send() {
 | 
							send() {
 | 
				
			||||||
			this.sending = true;
 | 
								this.sending = true;
 | 
				
			||||||
			(this as any).api('messaging/messages/create', {
 | 
								(this as any).api('messaging/messages/create', {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
<div class="mk-messaging" :data-compact="compact">
 | 
					<div class="mk-messaging" :data-compact="compact">
 | 
				
			||||||
	<div class="search" v-if="!opts.compact">
 | 
						<div class="search" v-if="!compact">
 | 
				
			||||||
		<div class="form">
 | 
							<div class="form">
 | 
				
			||||||
			<label for="search-input">%fa:search%</label>
 | 
								<label for="search-input">%fa:search%</label>
 | 
				
			||||||
			<input v-model="q" type="search" @input="search" @keydown="onSearchKeydown" placeholder="%i18n:common.tags.mk-messaging.search-user%"/>
 | 
								<input v-model="q" type="search" @input="search" @keydown="onSearchKeydown" placeholder="%i18n:common.tags.mk-messaging.search-user%"/>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,66 +0,0 @@
 | 
				
			||||||
<mk-notifications-home-widget>
 | 
					 | 
				
			||||||
	<template v-if="!data.compact">
 | 
					 | 
				
			||||||
		<p class="title">%fa:R bell%%i18n:desktop.tags.mk-notifications-home-widget.title%</p>
 | 
					 | 
				
			||||||
		<button @click="settings" title="%i18n:desktop.tags.mk-notifications-home-widget.settings%">%fa:cog%</button>
 | 
					 | 
				
			||||||
	</template>
 | 
					 | 
				
			||||||
	<mk-notifications/>
 | 
					 | 
				
			||||||
	<style lang="stylus" scoped>
 | 
					 | 
				
			||||||
		:scope
 | 
					 | 
				
			||||||
			display block
 | 
					 | 
				
			||||||
			background #fff
 | 
					 | 
				
			||||||
			border solid 1px rgba(0, 0, 0, 0.075)
 | 
					 | 
				
			||||||
			border-radius 6px
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			> .title
 | 
					 | 
				
			||||||
				z-index 1
 | 
					 | 
				
			||||||
				margin 0
 | 
					 | 
				
			||||||
				padding 0 16px
 | 
					 | 
				
			||||||
				line-height 42px
 | 
					 | 
				
			||||||
				font-size 0.9em
 | 
					 | 
				
			||||||
				font-weight bold
 | 
					 | 
				
			||||||
				color #888
 | 
					 | 
				
			||||||
				box-shadow 0 1px rgba(0, 0, 0, 0.07)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				> [data-fa]
 | 
					 | 
				
			||||||
					margin-right 4px
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			> button
 | 
					 | 
				
			||||||
				position absolute
 | 
					 | 
				
			||||||
				z-index 2
 | 
					 | 
				
			||||||
				top 0
 | 
					 | 
				
			||||||
				right 0
 | 
					 | 
				
			||||||
				padding 0
 | 
					 | 
				
			||||||
				width 42px
 | 
					 | 
				
			||||||
				font-size 0.9em
 | 
					 | 
				
			||||||
				line-height 42px
 | 
					 | 
				
			||||||
				color #ccc
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				&:hover
 | 
					 | 
				
			||||||
					color #aaa
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				&:active
 | 
					 | 
				
			||||||
					color #999
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			> mk-notifications
 | 
					 | 
				
			||||||
				max-height 300px
 | 
					 | 
				
			||||||
				overflow auto
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	</style>
 | 
					 | 
				
			||||||
	<script lang="typescript">
 | 
					 | 
				
			||||||
		this.data = {
 | 
					 | 
				
			||||||
			compact: false
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		this.mixin('widget');
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		this.settings = () => {
 | 
					 | 
				
			||||||
			const w = riot.mount(document.body.appendChild(document.createElement('mk-settings-window')))[0];
 | 
					 | 
				
			||||||
			w.switch('notification');
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
		this.func = () => {
 | 
					 | 
				
			||||||
			this.data.compact = !this.data.compact;
 | 
					 | 
				
			||||||
			this.save();
 | 
					 | 
				
			||||||
		};
 | 
					 | 
				
			||||||
	</script>
 | 
					 | 
				
			||||||
</mk-notifications-home-widget>
 | 
					 | 
				
			||||||
| 
						 | 
					@ -1,9 +1,9 @@
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
<mk-window ref="window" @closed="$destroy" width="800px" height="500px" :popout="popout">
 | 
					<mk-window ref="window" @closed="$destroy" width="800px" height="500px" :popout="popout">
 | 
				
			||||||
	<span slot="header" :class="$style.header">
 | 
						<template slot="header">
 | 
				
			||||||
		<p class="info" v-if="usage" :class="$style.info"><b>{{ usage.toFixed(1) }}%</b> %i18n:desktop.tags.mk-drive-browser-window.used%</p>
 | 
							<p v-if="usage" :class="$style.info"><b>{{ usage.toFixed(1) }}%</b> %i18n:desktop.tags.mk-drive-browser-window.used%</p>
 | 
				
			||||||
		%fa:cloud%%i18n:desktop.tags.mk-drive-browser-window.drive%
 | 
							<span: class="$style.title">%fa:cloud%%i18n:desktop.tags.mk-drive-browser-window.drive%</span>
 | 
				
			||||||
	</span>
 | 
						</template>
 | 
				
			||||||
	<mk-drive-browser multiple :folder="folder" ref="browser"/>
 | 
						<mk-drive-browser multiple :folder="folder" ref="browser"/>
 | 
				
			||||||
</mk-window>
 | 
					</mk-window>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
| 
						 | 
					@ -38,7 +38,7 @@ export default Vue.extend({
 | 
				
			||||||
</script>
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<style lang="stylus" module>
 | 
					<style lang="stylus" module>
 | 
				
			||||||
.header
 | 
					.title
 | 
				
			||||||
	> [data-fa]
 | 
						> [data-fa]
 | 
				
			||||||
		margin-right 4px
 | 
							margin-right 4px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,7 +1,6 @@
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
<button class="mk-follow-button"
 | 
					<button class="mk-follow-button"
 | 
				
			||||||
	:class="{ wait, follow: !user.is_following, unfollow: user.is_following }"
 | 
						:class="{ wait, follow: !user.is_following, unfollow: user.is_following }"
 | 
				
			||||||
	v-if="!init"
 | 
					 | 
				
			||||||
	@click="onClick"
 | 
						@click="onClick"
 | 
				
			||||||
	:disabled="wait"
 | 
						:disabled="wait"
 | 
				
			||||||
	:title="user.is_following ? 'フォロー解除' : 'フォローする'"
 | 
						:title="user.is_following ? 'フォロー解除' : 'フォローする'"
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -41,10 +41,10 @@
 | 
				
			||||||
			<div ref="left" data-place="left">
 | 
								<div ref="left" data-place="left">
 | 
				
			||||||
				<template v-for="widget in leftWidgets">
 | 
									<template v-for="widget in leftWidgets">
 | 
				
			||||||
					<div class="customize-container" v-if="customize" :key="widget.id" @contextmenu.stop.prevent="onWidgetContextmenu(widget.id)">
 | 
										<div class="customize-container" v-if="customize" :key="widget.id" @contextmenu.stop.prevent="onWidgetContextmenu(widget.id)">
 | 
				
			||||||
						<component :is="'mk-hw-' + widget.name" :widget="widget" :ref="widget.id"/>
 | 
											<component :is="'mkw-' + widget.name" :widget="widget" :ref="widget.id"/>
 | 
				
			||||||
					</div>
 | 
										</div>
 | 
				
			||||||
					<template v-else>
 | 
										<template v-else>
 | 
				
			||||||
						<component :is="'mk-hw-' + widget.name" :key="widget.id" :widget="widget" :ref="widget.id"/>
 | 
											<component :is="'mkw-' + widget.name" :key="widget.id" :widget="widget" :ref="widget.id"/>
 | 
				
			||||||
					</template>
 | 
										</template>
 | 
				
			||||||
				</template>
 | 
									</template>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
| 
						 | 
					@ -53,10 +53,10 @@
 | 
				
			||||||
			<div class="maintop" ref="maintop" data-place="main" v-if="customize">
 | 
								<div class="maintop" ref="maintop" data-place="main" v-if="customize">
 | 
				
			||||||
				<template v-for="widget in centerWidgets">
 | 
									<template v-for="widget in centerWidgets">
 | 
				
			||||||
					<div class="customize-container" v-if="customize" :key="widget.id" @contextmenu.stop.prevent="onWidgetContextmenu(widget.id)">
 | 
										<div class="customize-container" v-if="customize" :key="widget.id" @contextmenu.stop.prevent="onWidgetContextmenu(widget.id)">
 | 
				
			||||||
						<component :is="'mk-hw-' + widget.name" :widget="widget" :ref="widget.id"/>
 | 
											<component :is="'mkw-' + widget.name" :widget="widget" :ref="widget.id"/>
 | 
				
			||||||
					</div>
 | 
										</div>
 | 
				
			||||||
					<template v-else>
 | 
										<template v-else>
 | 
				
			||||||
						<component :is="'mk-hw-' + widget.name" :key="widget.id" :widget="widget" :ref="widget.id"/>
 | 
											<component :is="'mkw-' + widget.name" :key="widget.id" :widget="widget" :ref="widget.id"/>
 | 
				
			||||||
					</template>
 | 
										</template>
 | 
				
			||||||
				</template>
 | 
									</template>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
| 
						 | 
					@ -67,10 +67,10 @@
 | 
				
			||||||
			<div ref="right" data-place="right">
 | 
								<div ref="right" data-place="right">
 | 
				
			||||||
				<template v-for="widget in rightWidgets">
 | 
									<template v-for="widget in rightWidgets">
 | 
				
			||||||
					<div class="customize-container" v-if="customize" :key="widget.id" @contextmenu.stop.prevent="onWidgetContextmenu(widget.id)">
 | 
										<div class="customize-container" v-if="customize" :key="widget.id" @contextmenu.stop.prevent="onWidgetContextmenu(widget.id)">
 | 
				
			||||||
						<component :is="'mk-hw-' + widget.name" :widget="widget" :ref="widget.id"/>
 | 
											<component :is="'mkw-' + widget.name" :widget="widget" :ref="widget.id"/>
 | 
				
			||||||
					</div>
 | 
										</div>
 | 
				
			||||||
					<template v-else>
 | 
										<template v-else>
 | 
				
			||||||
						<component :is="'mk-hw-' + widget.name" :key="widget.id" :widget="widget" :ref="widget.id"/>
 | 
											<component :is="'mkw-' + widget.name" :key="widget.id" :widget="widget" :ref="widget.id"/>
 | 
				
			||||||
					</template>
 | 
										</template>
 | 
				
			||||||
				</template>
 | 
									</template>
 | 
				
			||||||
			</div>
 | 
								</div>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -32,6 +32,13 @@ import driveFile from './drive-file.vue';
 | 
				
			||||||
import driveFolder from './drive-folder.vue';
 | 
					import driveFolder from './drive-folder.vue';
 | 
				
			||||||
import driveNavFolder from './drive-nav-folder.vue';
 | 
					import driveNavFolder from './drive-nav-folder.vue';
 | 
				
			||||||
import contextMenuMenu from './context-menu-menu.vue';
 | 
					import contextMenuMenu from './context-menu-menu.vue';
 | 
				
			||||||
 | 
					import wNav from './widgets/nav.vue';
 | 
				
			||||||
 | 
					import wCalendar from './widgets/calendar.vue';
 | 
				
			||||||
 | 
					import wPhotoStream from './widgets/photo-stream.vue';
 | 
				
			||||||
 | 
					import wSlideshow from './widgets/slideshow.vue';
 | 
				
			||||||
 | 
					import wTips from './widgets/tips.vue';
 | 
				
			||||||
 | 
					import wDonation from './widgets/donation.vue';
 | 
				
			||||||
 | 
					import wNotifications from './widgets/notifications.vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Vue.component('mk-ui', ui);
 | 
					Vue.component('mk-ui', ui);
 | 
				
			||||||
Vue.component('mk-ui-header', uiHeader);
 | 
					Vue.component('mk-ui-header', uiHeader);
 | 
				
			||||||
| 
						 | 
					@ -65,3 +72,10 @@ Vue.component('mk-drive-file', driveFile);
 | 
				
			||||||
Vue.component('mk-drive-folder', driveFolder);
 | 
					Vue.component('mk-drive-folder', driveFolder);
 | 
				
			||||||
Vue.component('mk-drive-nav-folder', driveNavFolder);
 | 
					Vue.component('mk-drive-nav-folder', driveNavFolder);
 | 
				
			||||||
Vue.component('context-menu-menu', contextMenuMenu);
 | 
					Vue.component('context-menu-menu', contextMenuMenu);
 | 
				
			||||||
 | 
					Vue.component('mkw-nav', wNav);
 | 
				
			||||||
 | 
					Vue.component('mkw-calendar', wCalendar);
 | 
				
			||||||
 | 
					Vue.component('mkw-photo-stream', wPhotoStream);
 | 
				
			||||||
 | 
					Vue.component('mkw-slideshoe', wSlideshow);
 | 
				
			||||||
 | 
					Vue.component('mkw-tips', wTips);
 | 
				
			||||||
 | 
					Vue.component('mkw-donation', wDonation);
 | 
				
			||||||
 | 
					Vue.component('mkw-notifications', wNotifications);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,5 +1,5 @@
 | 
				
			||||||
<template>
 | 
					<template>
 | 
				
			||||||
<mk-window ref="window" width='500px' height='560px' @closed="$destroy">
 | 
					<mk-window ref="window" width="500px" height="560px" @closed="$destroy">
 | 
				
			||||||
	<span slot="header" :class="$style.header">%fa:comments%メッセージ</span>
 | 
						<span slot="header" :class="$style.header">%fa:comments%メッセージ</span>
 | 
				
			||||||
	<mk-messaging :class="$style.content" @navigate="navigate"/>
 | 
						<mk-messaging :class="$style.content" @navigate="navigate"/>
 | 
				
			||||||
</mk-window>
 | 
					</mk-window>
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,8 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script lang="ts">
 | 
					<script lang="ts">
 | 
				
			||||||
import Vue from 'vue';
 | 
					import Vue from 'vue';
 | 
				
			||||||
 | 
					import MkMessagingRoomWindow from './messaging-room-window.vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default Vue.extend({
 | 
					export default Vue.extend({
 | 
				
			||||||
	methods: {
 | 
						methods: {
 | 
				
			||||||
		navigate(user) {
 | 
							navigate(user) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,6 +7,11 @@
 | 
				
			||||||
</mk-window>
 | 
					</mk-window>
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script lang="ts">
 | 
				
			||||||
 | 
					import Vue from 'vue';
 | 
				
			||||||
 | 
					export default Vue.extend({});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<style lang="stylus" module>
 | 
					<style lang="stylus" module>
 | 
				
			||||||
.header
 | 
					.header
 | 
				
			||||||
	> [data-fa]
 | 
						> [data-fa]
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -33,6 +33,7 @@
 | 
				
			||||||
<script lang="ts">
 | 
					<script lang="ts">
 | 
				
			||||||
import Vue from 'vue';
 | 
					import Vue from 'vue';
 | 
				
			||||||
import MkSettingsWindow from './settings-window.vue';
 | 
					import MkSettingsWindow from './settings-window.vue';
 | 
				
			||||||
 | 
					import MkDriveWindow from './drive-window.vue';
 | 
				
			||||||
import contains from '../../../common/scripts/contains';
 | 
					import contains from '../../../common/scripts/contains';
 | 
				
			||||||
import signout from '../../../common/scripts/signout';
 | 
					import signout from '../../../common/scripts/signout';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -69,8 +70,7 @@ export default Vue.extend({
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		drive() {
 | 
							drive() {
 | 
				
			||||||
			this.close();
 | 
								this.close();
 | 
				
			||||||
			// TODO
 | 
								document.body.appendChild(new MkDriveWindow().$mount().$el);
 | 
				
			||||||
			//document.body.appendChild(new MkDriveWindow().$mount().$el);
 | 
					 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		settings() {
 | 
							settings() {
 | 
				
			||||||
			this.close();
 | 
								this.close();
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -34,6 +34,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script lang="ts">
 | 
					<script lang="ts">
 | 
				
			||||||
import Vue from 'vue';
 | 
					import Vue from 'vue';
 | 
				
			||||||
 | 
					import MkMessagingWindow from './messaging-window.vue';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export default Vue.extend({
 | 
					export default Vue.extend({
 | 
				
			||||||
	data() {
 | 
						data() {
 | 
				
			||||||
| 
						 | 
					@ -76,8 +77,7 @@ export default Vue.extend({
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		messaging() {
 | 
							messaging() {
 | 
				
			||||||
			// TODO
 | 
								document.body.appendChild(new MkMessagingWindow().$mount().$el);
 | 
				
			||||||
			//document.body.appendChild(new MkMessagingWindow().$mount().$el);
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -35,7 +35,7 @@
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script lang="ts">
 | 
					<script lang="ts">
 | 
				
			||||||
import define from '../../../define-widget';
 | 
					import define from '../../../../common/define-widget';
 | 
				
			||||||
export default define({
 | 
					export default define({
 | 
				
			||||||
	name: 'calendar',
 | 
						name: 'calendar',
 | 
				
			||||||
	props: {
 | 
						props: {
 | 
				
			||||||
| 
						 | 
					@ -12,7 +12,7 @@
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script lang="ts">
 | 
					<script lang="ts">
 | 
				
			||||||
import define from '../../../define-widget';
 | 
					import define from '../../../../common/define-widget';
 | 
				
			||||||
export default define({
 | 
					export default define({
 | 
				
			||||||
	name: 'donation'
 | 
						name: 'donation'
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script lang="ts">
 | 
					<script lang="ts">
 | 
				
			||||||
import define from '../../../define-widget';
 | 
					import define from '../../../../common/define-widget';
 | 
				
			||||||
export default define({
 | 
					export default define({
 | 
				
			||||||
	name: 'messaging',
 | 
						name: 'messaging',
 | 
				
			||||||
	props: {
 | 
						props: {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -5,7 +5,7 @@
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script lang="ts">
 | 
					<script lang="ts">
 | 
				
			||||||
import define from '../../../define-widget';
 | 
					import define from '../../../../common/define-widget';
 | 
				
			||||||
export default define({
 | 
					export default define({
 | 
				
			||||||
	name: 'nav'
 | 
						name: 'nav'
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,70 @@
 | 
				
			||||||
 | 
					<template>
 | 
				
			||||||
 | 
					<div class="mkw-notifications">
 | 
				
			||||||
 | 
						<template v-if="!props.compact">
 | 
				
			||||||
 | 
							<p class="title">%fa:R bell%%i18n:desktop.tags.mk-notifications-home-widget.title%</p>
 | 
				
			||||||
 | 
							<button @click="settings" title="%i18n:desktop.tags.mk-notifications-home-widget.settings%">%fa:cog%</button>
 | 
				
			||||||
 | 
						</template>
 | 
				
			||||||
 | 
						<mk-notifications/>
 | 
				
			||||||
 | 
					</div>
 | 
				
			||||||
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<script lang="ts">
 | 
				
			||||||
 | 
					import define from '../../../../common/define-widget';
 | 
				
			||||||
 | 
					export default define({
 | 
				
			||||||
 | 
						name: 'notifications',
 | 
				
			||||||
 | 
						props: {
 | 
				
			||||||
 | 
							compact: false
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}).extend({
 | 
				
			||||||
 | 
						methods: {
 | 
				
			||||||
 | 
							settings() {
 | 
				
			||||||
 | 
								alert('not implemented yet');
 | 
				
			||||||
 | 
							},
 | 
				
			||||||
 | 
							func() {
 | 
				
			||||||
 | 
								this.props.compact = !this.props.compact;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					</script>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<style lang="stylus" scoped>
 | 
				
			||||||
 | 
					.mkw-notifications
 | 
				
			||||||
 | 
						background #fff
 | 
				
			||||||
 | 
						border solid 1px rgba(0, 0, 0, 0.075)
 | 
				
			||||||
 | 
						border-radius 6px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						> .title
 | 
				
			||||||
 | 
							z-index 1
 | 
				
			||||||
 | 
							margin 0
 | 
				
			||||||
 | 
							padding 0 16px
 | 
				
			||||||
 | 
							line-height 42px
 | 
				
			||||||
 | 
							font-size 0.9em
 | 
				
			||||||
 | 
							font-weight bold
 | 
				
			||||||
 | 
							color #888
 | 
				
			||||||
 | 
							box-shadow 0 1px rgba(0, 0, 0, 0.07)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							> [data-fa]
 | 
				
			||||||
 | 
								margin-right 4px
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						> button
 | 
				
			||||||
 | 
							position absolute
 | 
				
			||||||
 | 
							z-index 2
 | 
				
			||||||
 | 
							top 0
 | 
				
			||||||
 | 
							right 0
 | 
				
			||||||
 | 
							padding 0
 | 
				
			||||||
 | 
							width 42px
 | 
				
			||||||
 | 
							font-size 0.9em
 | 
				
			||||||
 | 
							line-height 42px
 | 
				
			||||||
 | 
							color #ccc
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							&:hover
 | 
				
			||||||
 | 
								color #aaa
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							&:active
 | 
				
			||||||
 | 
								color #999
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						> .mk-notifications
 | 
				
			||||||
 | 
							max-height 300px
 | 
				
			||||||
 | 
							overflow auto
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</style>
 | 
				
			||||||
| 
						 | 
					@ -10,7 +10,7 @@
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script lang="ts">
 | 
					<script lang="ts">
 | 
				
			||||||
import define from '../../../define-widget';
 | 
					import define from '../../../../common/define-widget';
 | 
				
			||||||
export default define({
 | 
					export default define({
 | 
				
			||||||
	name: 'photo-stream',
 | 
						name: 'photo-stream',
 | 
				
			||||||
	props: {
 | 
						props: {
 | 
				
			||||||
| 
						 | 
					@ -21,7 +21,7 @@
 | 
				
			||||||
</template>
 | 
					</template>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script lang="ts">
 | 
					<script lang="ts">
 | 
				
			||||||
import define from '../../../define-widget';
 | 
					import define from '../../../../common/define-widget';
 | 
				
			||||||
export default define({
 | 
					export default define({
 | 
				
			||||||
	name: 'profile',
 | 
						name: 'profile',
 | 
				
			||||||
	props: {
 | 
						props: {
 | 
				
			||||||
| 
						 | 
					@ -12,7 +12,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script lang="ts">
 | 
					<script lang="ts">
 | 
				
			||||||
import * as anime from 'animejs';
 | 
					import * as anime from 'animejs';
 | 
				
			||||||
import define from '../../../define-widget';
 | 
					import define from '../../../../common/define-widget';
 | 
				
			||||||
export default define({
 | 
					export default define({
 | 
				
			||||||
	name: 'slideshow',
 | 
						name: 'slideshow',
 | 
				
			||||||
	props: {
 | 
						props: {
 | 
				
			||||||
| 
						 | 
					@ -6,7 +6,7 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<script lang="ts">
 | 
					<script lang="ts">
 | 
				
			||||||
import * as anime from 'animejs';
 | 
					import * as anime from 'animejs';
 | 
				
			||||||
import define from '../../../define-widget';
 | 
					import define from '../../../../common/define-widget';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const tips = [
 | 
					const tips = [
 | 
				
			||||||
	'<kbd>t</kbd>でタイムラインにフォーカスできます',
 | 
						'<kbd>t</kbd>でタイムラインにフォーカスできます',
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue