summaryrefslogtreecommitdiff
path: root/src/client/components/page
diff options
context:
space:
mode:
authorsyuilo <Syuilotan@yahoo.co.jp>2020-10-17 20:12:00 +0900
committerGitHub <noreply@github.com>2020-10-17 20:12:00 +0900
commit7199e6f4e0b3a2c2bc198e689c3e0cd0d0f0354a (patch)
tree2263a06acec7fa21882366bae26d1a983ce21135 /src/client/components/page
parentCW の input でも投稿ショートカットが動作するように (#6690) (diff)
downloadsharkey-7199e6f4e0b3a2c2bc198e689c3e0cd0d0f0354a.tar.gz
sharkey-7199e6f4e0b3a2c2bc198e689c3e0cd0d0f0354a.tar.bz2
sharkey-7199e6f4e0b3a2c2bc198e689c3e0cd0d0f0354a.zip
Migrate to Vue3 (#6587)
* Update reaction.vue * fix bug * wip * wip * wjio * wip * Revert "wip" This reverts commit e427f2160adf4e8a4147006e25a89854edab0033. * wip * wip * wip * Update init.ts * Update drive-window.vue * wip * wip * Use PascalCase for components * Use PascalCase for components * update dep * wip * wip * wip * Update init.ts * wip * Update paging.ts * Update test.vue * watch deep * wip * lint * wip * wip * wip * wip * wiop * wip * Update webpack.config.ts * alllow null poll * wip * wip * wip * wiop * UI redesign & refactor (#6714) * wip * wip * wip * wip * wip * Update drive.vue * Update word-mute.vue * wip * wip * wip * clean up * wip * Update default.vue * wip * Update notes.vue * Update mfm.ts * Update index.home.vue * Update post-form.vue * Update post-form-attaches.vue * wip * Update post-form.vue * Update sidebar.vue * wip * wip * Update index.vue * wip * Update default.vue * Update index.vue * Update index.vue * wip * Update post-form-attaches.vue * Update note.vue * wip * clean up * Update notes.vue * wip * wip * Update ja-JP.yml * wip * wip * Update index.vue * wip * wip * wip * wip * wip * wip * wip * wip * Update default.vue * wip * Update _dark.json5 * wip * wip * wip * clean up * wip * wip * Update index.vue * Update test.vue * wip * wip * fix * wip * wip * wip * wip * clena yop * wip * wip * Update store.ts * Update messaging-room.vue * Update default.widgets.vue * fix * wip * wip * Update modal.vue * wip * Update os.ts * Update os.ts * Update deck.vue * Update init.ts * wip * Update ja-JP.yml * v-sizeは単にwindowのresizeを監視するだけで良いかもしれない * Update modal.vue * wip * Update tooltip.ts * wip * wip * wip * wip * wip * Update image-viewer.vue * wip * wip * Update style.scss * Update style.scss * Update visitor.vue * wip * Update init.ts * Update init.ts * wip * wip * Update visitor.vue * Update visitor.vue * Update visitor.vue * Update visitor.vue * wip * wip * Update modal.vue * Update header.vue * Update menu.vue * Update about.vue * Update about-misskey.vue * wip * wip * Update visitor.vue * Update tooltip.ts * wip * Update drive.vue * wip * Update style.scss * Update header.vue * wip * wip * Update users.user.vue * Update announcements.vue * wip * wip * wip * Update emojis.vue * wip * Update emojis.vue * Update style.scss * Update users.vue * wip * Update style.scss * wip * Update welcome.entrance.vue * Update radio.vue * Update size.ts * Update emoji-edit-dialog.vue * wip * Update emojis.vue * wip * Update emojis.vue * Update emojis.vue * Update emojis.vue * wip * wip * wip * wip * Update file-dialog.vue * wip * wip * Update token-generate-window.vue * Update notification-setting-window.vue * wip * wip * Update _error_.vue * Update ja-JP.yml * wip * wip * Update store.ts * Update emojis.vue * Update emojis.vue * Update emojis.vue * Update announcements.vue * Update store.ts * wip * Update page-editor.vue * wip * wip * Update modal.vue * wip * Update select-file.ts * Update timeline.vue * Update emojis.vue * Update os.ts * wip * Update user-select.vue * Update mfm.ts * Update get-file-info.ts * Update drive.vue * Update init.ts * Update mfm.ts * wip * wip * Update window.vue * Update note.vue * wip * wip * Update user-info.vue * wip * wip * wip * wip * wip * Update header.vue * Update header.vue * wip * Update explore.vue * wip * wip * wip * Update webpack.config.ts * wip * wip * wip * wip * wip * wip * Update autocomplete.ts * wip * wip * wip * Update toast.vue * wip * Update post-form-dialog.vue * wip * wip * wip * wip * wip * Update users.vue * wip * Update explore.vue * wip * wip * wip * Update package.json * wip * Update icon-dialog.vue * wip * wip * Update user-preview.ts * wip * wip * wip * wip * wip * Update instance.vue * Update user-name.vue * Update federation.vue * Update instance.vue * wip * wip * Update tag.vue * wip * wip * wip * wip * wip * Update instance.vue * wip * Update os.ts * Update os.ts * wip * wip * wip * Update router.ts * wip * Update init.ts * Update note.vue * Update messages.vue * wip * wip * wip * wip * wip * google * wip * wip * wip * wip * Update theme-editor.vue * wip * wip * Update room.vue * Update channel-editor.vue * wip * Update window.vue * Update window.vue * wip * Update window.vue * Update window.vue * wip * Update menu.vue * wip * wip * wip * wip * Update messaging-room.vue * wip * Update post-form.vue * Update default.widgets.vue * Update window.vue * wip
Diffstat (limited to 'src/client/components/page')
-rw-r--r--src/client/components/page/page.block.vue4
-rw-r--r--src/client/components/page/page.button.vue13
-rw-r--r--src/client/components/page/page.canvas.vue5
-rw-r--r--src/client/components/page/page.counter.vue7
-rw-r--r--src/client/components/page/page.if.vue7
-rw-r--r--src/client/components/page/page.image.vue5
-rw-r--r--src/client/components/page/page.number-input.vue7
-rw-r--r--src/client/components/page/page.post.vue19
-rw-r--r--src/client/components/page/page.radio-button.vue7
-rw-r--r--src/client/components/page/page.section.vue7
-rw-r--r--src/client/components/page/page.switch.vue7
-rw-r--r--src/client/components/page/page.text-input.vue7
-rw-r--r--src/client/components/page/page.text.vue11
-rw-r--r--src/client/components/page/page.textarea-input.vue7
-rw-r--r--src/client/components/page/page.textarea.vue7
-rw-r--r--src/client/components/page/page.vue19
16 files changed, 76 insertions, 63 deletions
diff --git a/src/client/components/page/page.block.vue b/src/client/components/page/page.block.vue
index 0a4b068b63..412c91ee0d 100644
--- a/src/client/components/page/page.block.vue
+++ b/src/client/components/page/page.block.vue
@@ -3,7 +3,7 @@
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineComponent } from 'vue';
import XText from './page.text.vue';
import XSection from './page.section.vue';
import XImage from './page.image.vue';
@@ -19,7 +19,7 @@ import XCounter from './page.counter.vue';
import XRadioButton from './page.radio-button.vue';
import XCanvas from './page.canvas.vue';
-export default Vue.extend({
+export default defineComponent({
components: {
XText, XSection, XImage, XButton, XNumberInput, XTextInput, XTextareaInput, XTextarea, XPost, XSwitch, XIf, XCounter, XRadioButton, XCanvas
},
diff --git a/src/client/components/page/page.button.vue b/src/client/components/page/page.button.vue
index 83753b4e80..ff4c88554b 100644
--- a/src/client/components/page/page.button.vue
+++ b/src/client/components/page/page.button.vue
@@ -1,14 +1,15 @@
<template>
<div>
- <mk-button class="kudkigyw" @click="click()" :primary="value.primary">{{ hpml.interpolate(value.text) }}</mk-button>
+ <MkButton class="kudkigyw" @click="click()" :primary="value.primary">{{ hpml.interpolate(value.text) }}</MkButton>
</div>
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineComponent } from 'vue';
import MkButton from '../ui/button.vue';
+import * as os from '@/os';
-export default Vue.extend({
+export default defineComponent({
components: {
MkButton
},
@@ -24,14 +25,14 @@ export default Vue.extend({
click() {
if (this.value.action === 'dialog') {
this.hpml.eval();
- this.$root.dialog({
+ os.dialog({
text: this.hpml.interpolate(this.value.content)
});
} else if (this.value.action === 'resetRandom') {
this.hpml.updateRandomSeed(Math.random());
this.hpml.eval();
} else if (this.value.action === 'pushEvent') {
- this.$root.api('page-push', {
+ os.api('page-push', {
pageId: this.hpml.page.id,
event: this.value.event,
...(this.value.var ? {
@@ -39,7 +40,7 @@ export default Vue.extend({
} : {})
});
- this.$root.dialog({
+ os.dialog({
type: 'success',
text: this.hpml.interpolate(this.value.message)
});
diff --git a/src/client/components/page/page.canvas.vue b/src/client/components/page/page.canvas.vue
index 2d7cc1f8f9..d3bf5c1de6 100644
--- a/src/client/components/page/page.canvas.vue
+++ b/src/client/components/page/page.canvas.vue
@@ -5,9 +5,10 @@
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineComponent } from 'vue';
+import * as os from '@/os';
-export default Vue.extend({
+export default defineComponent({
props: {
value: {
required: true
diff --git a/src/client/components/page/page.counter.vue b/src/client/components/page/page.counter.vue
index a3674b87a2..9eee47c4ec 100644
--- a/src/client/components/page/page.counter.vue
+++ b/src/client/components/page/page.counter.vue
@@ -1,14 +1,15 @@
<template>
<div>
- <mk-button class="llumlmnx" @click="click()">{{ hpml.interpolate(value.text) }}</mk-button>
+ <MkButton class="llumlmnx" @click="click()">{{ hpml.interpolate(value.text) }}</MkButton>
</div>
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineComponent } from 'vue';
import MkButton from '../ui/button.vue';
+import * as os from '@/os';
-export default Vue.extend({
+export default defineComponent({
components: {
MkButton
},
diff --git a/src/client/components/page/page.if.vue b/src/client/components/page/page.if.vue
index 6bdf9cd97d..1e0c841541 100644
--- a/src/client/components/page/page.if.vue
+++ b/src/client/components/page/page.if.vue
@@ -1,13 +1,14 @@
<template>
<div v-show="hpml.vars[value.var]">
- <x-block v-for="child in value.children" :value="child" :page="page" :hpml="hpml" :key="child.id" :h="h"/>
+ <XBlock v-for="child in value.children" :value="child" :page="page" :hpml="hpml" :key="child.id" :h="h"/>
</div>
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineComponent } from 'vue';
+import * as os from '@/os';
-export default Vue.extend({
+export default defineComponent({
props: {
value: {
required: true
diff --git a/src/client/components/page/page.image.vue b/src/client/components/page/page.image.vue
index f515958515..ddcce5c37b 100644
--- a/src/client/components/page/page.image.vue
+++ b/src/client/components/page/page.image.vue
@@ -5,9 +5,10 @@
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineComponent } from 'vue';
+import * as os from '@/os';
-export default Vue.extend({
+export default defineComponent({
props: {
value: {
required: true
diff --git a/src/client/components/page/page.number-input.vue b/src/client/components/page/page.number-input.vue
index 56899b1b20..cf4000010f 100644
--- a/src/client/components/page/page.number-input.vue
+++ b/src/client/components/page/page.number-input.vue
@@ -1,14 +1,15 @@
<template>
<div>
- <mk-input class="kudkigyw" v-model="v" type="number">{{ hpml.interpolate(value.text) }}</mk-input>
+ <MkInput class="kudkigyw" v-model:value="v" type="number">{{ hpml.interpolate(value.text) }}</MkInput>
</div>
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineComponent } from 'vue';
import MkInput from '../ui/input.vue';
+import * as os from '@/os';
-export default Vue.extend({
+export default defineComponent({
components: {
MkInput
},
diff --git a/src/client/components/page/page.post.vue b/src/client/components/page/page.post.vue
index da5bc8bfab..e2b712667a 100644
--- a/src/client/components/page/page.post.vue
+++ b/src/client/components/page/page.post.vue
@@ -1,18 +1,19 @@
<template>
<div class="ngbfujlo">
- <mk-textarea :value="text" readonly style="margin: 0;"></mk-textarea>
- <mk-button class="button" primary @click="post()" :disabled="posting || posted"><fa v-if="posted" :icon="faCheck"/><fa v-else :icon="faPaperPlane"/></mk-button>
+ <MkTextarea :value="text" readonly style="margin: 0;"></MkTextarea>
+ <MkButton class="button" primary @click="post()" :disabled="posting || posted"><Fa v-if="posted" :icon="faCheck"/><Fa v-else :icon="faPaperPlane"/></MkButton>
</div>
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineComponent } from 'vue';
import { faCheck, faPaperPlane } from '@fortawesome/free-solid-svg-icons';
import MkTextarea from '../ui/textarea.vue';
import MkButton from '../ui/button.vue';
-import { apiUrl } from '../../config';
+import { apiUrl } from '@/config';
+import * as os from '@/os';
-export default Vue.extend({
+export default defineComponent({
components: {
MkTextarea,
MkButton,
@@ -44,7 +45,7 @@ export default Vue.extend({
methods: {
upload() {
return new Promise((ok) => {
- const dialog = this.$root.dialog({
+ const dialog = os.dialog({
type: 'waiting',
text: this.$t('uploading') + '...',
showOkButton: false,
@@ -75,15 +76,11 @@ export default Vue.extend({
async post() {
this.posting = true;
const file = this.value.attachCanvasImage ? await this.upload() : null;
- this.$root.api('notes/create', {
+ os.apiWithDialog('notes/create', {
text: this.text === '' ? null : this.text,
fileIds: file ? [file.id] : undefined,
}).then(() => {
this.posted = true;
- this.$root.dialog({
- type: 'success',
- iconOnly: true, autoClose: true
- });
});
}
}
diff --git a/src/client/components/page/page.radio-button.vue b/src/client/components/page/page.radio-button.vue
index 99d9ead385..9341c2421e 100644
--- a/src/client/components/page/page.radio-button.vue
+++ b/src/client/components/page/page.radio-button.vue
@@ -1,15 +1,16 @@
<template>
<div>
<div>{{ hpml.interpolate(value.title) }}</div>
- <mk-radio v-for="x in value.values" v-model="v" :value="x" :key="x">{{ x }}</mk-radio>
+ <MkRadio v-for="x in value.values" v-model:value="v" :value="x" :key="x">{{ x }}</MkRadio>
</div>
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineComponent } from 'vue';
import MkRadio from '../ui/radio.vue';
+import * as os from '@/os';
-export default Vue.extend({
+export default defineComponent({
components: {
MkRadio
},
diff --git a/src/client/components/page/page.section.vue b/src/client/components/page/page.section.vue
index c9758a0dbe..d31610bc87 100644
--- a/src/client/components/page/page.section.vue
+++ b/src/client/components/page/page.section.vue
@@ -3,15 +3,16 @@
<component :is="'h' + h">{{ value.title }}</component>
<div class="children">
- <x-block v-for="child in value.children" :value="child" :page="page" :hpml="hpml" :key="child.id" :h="h + 1"/>
+ <XBlock v-for="child in value.children" :value="child" :page="page" :hpml="hpml" :key="child.id" :h="h + 1"/>
</div>
</section>
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineComponent } from 'vue';
+import * as os from '@/os';
-export default Vue.extend({
+export default defineComponent({
props: {
value: {
required: true
diff --git a/src/client/components/page/page.switch.vue b/src/client/components/page/page.switch.vue
index 9f04ad19c4..33e4371695 100644
--- a/src/client/components/page/page.switch.vue
+++ b/src/client/components/page/page.switch.vue
@@ -1,14 +1,15 @@
<template>
<div class="hkcxmtwj">
- <mk-switch v-model="v">{{ hpml.interpolate(value.text) }}</mk-switch>
+ <MkSwitch v-model:value="v">{{ hpml.interpolate(value.text) }}</MkSwitch>
</div>
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineComponent } from 'vue';
import MkSwitch from '../ui/switch.vue';
+import * as os from '@/os';
-export default Vue.extend({
+export default defineComponent({
components: {
MkSwitch
},
diff --git a/src/client/components/page/page.text-input.vue b/src/client/components/page/page.text-input.vue
index 0d09f9fb5e..f0fe70e335 100644
--- a/src/client/components/page/page.text-input.vue
+++ b/src/client/components/page/page.text-input.vue
@@ -1,14 +1,15 @@
<template>
<div>
- <mk-input class="kudkigyw" v-model="v" type="text">{{ hpml.interpolate(value.text) }}</mk-input>
+ <MkInput class="kudkigyw" v-model:value="v" type="text">{{ hpml.interpolate(value.text) }}</MkInput>
</div>
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineComponent } from 'vue';
import MkInput from '../ui/input.vue';
+import * as os from '@/os';
-export default Vue.extend({
+export default defineComponent({
components: {
MkInput
},
diff --git a/src/client/components/page/page.text.vue b/src/client/components/page/page.text.vue
index 66e2acb90a..fff840f743 100644
--- a/src/client/components/page/page.text.vue
+++ b/src/client/components/page/page.text.vue
@@ -1,16 +1,19 @@
<template>
<div class="mrdgzndn">
- <mfm :text="text" :is-note="false" :i="$store.state.i" :key="text"/>
- <mk-url-preview v-for="url in urls" :url="url" :key="url" class="url"/>
+ <Mfm :text="text" :is-note="false" :i="$store.state.i" :key="text"/>
+ <MkUrlPreview v-for="url in urls" :url="url" :key="url" class="url"/>
</div>
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineAsyncComponent, defineComponent } from 'vue';
import { parse } from '../../../mfm/parse';
import { unique } from '../../../prelude/array';
-export default Vue.extend({
+export default defineComponent({
+ components: {
+ MkUrlPreview: defineAsyncComponent(() => import('@/components/url-preview.vue')),
+ },
props: {
value: {
required: true
diff --git a/src/client/components/page/page.textarea-input.vue b/src/client/components/page/page.textarea-input.vue
index 5e0cc43779..9e3283aa08 100644
--- a/src/client/components/page/page.textarea-input.vue
+++ b/src/client/components/page/page.textarea-input.vue
@@ -1,14 +1,15 @@
<template>
<div>
- <mk-textarea v-model="v">{{ hpml.interpolate(value.text) }}</mk-textarea>
+ <MkTextarea v-model:value="v">{{ hpml.interpolate(value.text) }}</MkTextarea>
</div>
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineComponent } from 'vue';
import MkTextarea from '../ui/textarea.vue';
+import * as os from '@/os';
-export default Vue.extend({
+export default defineComponent({
components: {
MkTextarea
},
diff --git a/src/client/components/page/page.textarea.vue b/src/client/components/page/page.textarea.vue
index abb30d78ee..e2929de5f0 100644
--- a/src/client/components/page/page.textarea.vue
+++ b/src/client/components/page/page.textarea.vue
@@ -1,12 +1,13 @@
<template>
-<mk-textarea :value="text" readonly></mk-textarea>
+<MkTextarea :value="text" readonly></MkTextarea>
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineComponent } from 'vue';
import MkTextarea from '../ui/textarea.vue';
+import * as os from '@/os';
-export default Vue.extend({
+export default defineComponent({
components: {
MkTextarea
},
diff --git a/src/client/components/page/page.vue b/src/client/components/page/page.vue
index b3cc01ec22..f7f565a8d1 100644
--- a/src/client/components/page/page.vue
+++ b/src/client/components/page/page.vue
@@ -1,19 +1,20 @@
<template>
<div class="iroscrza" :class="{ center: page.alignCenter, serif: page.font === 'serif' }" v-if="hpml">
- <x-block v-for="child in page.content" :value="child" @input="v => updateBlock(v)" :page="page" :hpml="hpml" :key="child.id" :h="2"/>
+ <XBlock v-for="child in page.content" :value="child" @update:value="v => updateBlock(v)" :page="page" :hpml="hpml" :key="child.id" :h="2"/>
</div>
</template>
<script lang="ts">
-import Vue from 'vue';
+import { defineComponent } from 'vue';
import { parse } from '@syuilo/aiscript';
import { faHeart as faHeartS } from '@fortawesome/free-solid-svg-icons';
import { faHeart } from '@fortawesome/free-regular-svg-icons';
import XBlock from './page.block.vue';
-import { Hpml } from '../../scripts/hpml/evaluator';
-import { url } from '../../config';
+import { Hpml } from '@/scripts/hpml/evaluator';
+import { url } from '@/config';
+import * as os from '@/os';
-export default Vue.extend({
+export default defineComponent({
components: {
XBlock
},
@@ -33,7 +34,7 @@ export default Vue.extend({
},
created() {
- this.hpml = new Hpml(this, this.page, {
+ this.hpml = new Hpml(this.page, {
randomSeed: Math.random(),
visitor: this.$store.state.i,
url: url,
@@ -49,7 +50,7 @@ export default Vue.extend({
ast = parse(this.page.script);
} catch (e) {
console.error(e);
- /*this.$root.dialog({
+ /*os.dialog({
type: 'error',
text: 'Syntax error :('
});*/
@@ -59,7 +60,7 @@ export default Vue.extend({
this.hpml.eval();
}).catch(e => {
console.error(e);
- /*this.$root.dialog({
+ /*os.dialog({
type: 'error',
text: e
});*/
@@ -70,7 +71,7 @@ export default Vue.extend({
});
},
- beforeDestroy() {
+ beforeUnmount() {
if (this.hpml.aiscript) this.hpml.aiscript.abort();
},
});