diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.button.vue b/packages/client/src/pages/page-editor/els/page-editor.el.button.vue index 827679d6a92d0afa11486669dd933c18c0704b96..4c2e0e4eb44c26d385379e8534f7d3bf7e2b4be6 100644 --- a/packages/client/src/pages/page-editor/els/page-editor.el.button.vue +++ b/packages/client/src/pages/page-editor/els/page-editor.el.button.vue @@ -38,44 +38,28 @@ </XContainer> </template> -<script lang="ts"> +<script lang="ts" setup> /* eslint-disable vue/no-mutating-props */ -import { defineComponent } from 'vue'; +import { } from 'vue'; import XContainer from '../page-editor.container.vue'; import MkSelect from '@/components/form/select.vue'; import MkInput from '@/components/form/input.vue'; import MkSwitch from '@/components/form/switch.vue'; -import * as os from '@/os'; -export default defineComponent({ - components: { - XContainer, MkSelect, MkInput, MkSwitch - }, - - props: { - value: { - required: true - }, - hpml: { - required: true, - }, - }, - - data() { - return { - }; - }, - - created() { - if (this.value.text == null) this.value.text = ''; - if (this.value.action == null) this.value.action = 'dialog'; - if (this.value.content == null) this.value.content = null; - if (this.value.event == null) this.value.event = null; - if (this.value.message == null) this.value.message = null; - if (this.value.primary == null) this.value.primary = false; - if (this.value.var == null) this.value.var = null; - if (this.value.fn == null) this.value.fn = null; - }, +withDefaults(defineProps<{ + value: any, + hpml: any +}>(), { + value: { + text: '', + action: 'dialog', + content: null, + event: null, + message: null, + primary: false, + var: null, + fn: null + } }); </script> diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.canvas.vue b/packages/client/src/pages/page-editor/els/page-editor.el.canvas.vue index ba5d0ba1f7ddd8bca2c3ee46346f5bf9a6a4955e..191321ae145d0a0fd0fc5e713a795ff1a27a746a 100644 --- a/packages/client/src/pages/page-editor/els/page-editor.el.canvas.vue +++ b/packages/client/src/pages/page-editor/els/page-editor.el.canvas.vue @@ -20,33 +20,19 @@ </XContainer> </template> -<script lang="ts"> +<script lang="ts" setup> /* eslint-disable vue/no-mutating-props */ -import { defineComponent } from 'vue'; +import { } from 'vue'; import XContainer from '../page-editor.container.vue'; import MkInput from '@/components/form/input.vue'; -import * as os from '@/os'; -export default defineComponent({ - components: { - XContainer, MkInput - }, - - props: { - value: { - required: true - }, - }, - - data() { - return { - }; - }, - - created() { - if (this.value.name == null) this.value.name = ''; - if (this.value.width == null) this.value.width = 300; - if (this.value.height == null) this.value.height = 200; - }, +withDefaults(defineProps<{ + value: any +}>(), { + value: { + name: '', + width: 300, + height: 200 + } }); </script> diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.counter.vue b/packages/client/src/pages/page-editor/els/page-editor.el.counter.vue index dc98a610ba8067a1f4b176164e6c26a7fb3fa991..1a2078448d91a2d0f2720d7ff623084cf116e86a 100644 --- a/packages/client/src/pages/page-editor/els/page-editor.el.counter.vue +++ b/packages/client/src/pages/page-editor/els/page-editor.el.counter.vue @@ -18,31 +18,17 @@ </XContainer> </template> -<script lang="ts"> +<script lang="ts" setup> /* eslint-disable vue/no-mutating-props */ -import { defineComponent } from 'vue'; +import { } from 'vue'; import XContainer from '../page-editor.container.vue'; import MkInput from '@/components/form/input.vue'; -import * as os from '@/os'; -export default defineComponent({ - components: { - XContainer, MkInput - }, - - props: { - value: { - required: true - }, - }, - - data() { - return { - }; - }, - - created() { - if (this.value.name == null) this.value.name = ''; - }, +withDefaults(defineProps<{ + value: any +}>(), { + value: { + name: '' + } }); </script> diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.if.vue b/packages/client/src/pages/page-editor/els/page-editor.el.if.vue index be3a520ea5639b32f87033a432ba0071c56a41e4..d763070b1569e81a63c60a4a2dddbe91207e1f21 100644 --- a/packages/client/src/pages/page-editor/els/page-editor.el.if.vue +++ b/packages/client/src/pages/page-editor/els/page-editor.el.if.vue @@ -25,54 +25,39 @@ </XContainer> </template> -<script lang="ts"> +<script lang="ts" setup> /* eslint-disable vue/no-mutating-props */ -import { defineComponent, defineAsyncComponent } from 'vue'; +import { defineAsyncComponent, inject } from 'vue'; import { v4 as uuid } from 'uuid'; import XContainer from '../page-editor.container.vue'; import MkSelect from '@/components/form/select.vue'; import * as os from '@/os'; +import { i18n } from '@/i18n'; -export default defineComponent({ - components: { - XContainer, MkSelect, - XBlocks: defineAsyncComponent(() => import('../page-editor.blocks.vue')), - }, +const XBlocks = defineAsyncComponent(() => import('../page-editor.blocks.vue')); - inject: ['getPageBlockList'], - - props: { - value: { - required: true - }, - hpml: { - required: true, - }, - }, - - data() { - return { - }; - }, +const props = withDefaults(defineProps<{ + value: any, + hpml: any +}>(), { + value: { + children: [], + var: null + } +}); - created() { - if (this.value.children == null) this.value.children = []; - if (this.value.var === undefined) this.value.var = null; - }, +const getPageBlockList = inject<(any) => any>('getPageBlockList'); - methods: { - async add() { - const { canceled, result: type } = await os.select({ - title: this.$ts._pages.chooseBlock, - groupedItems: this.getPageBlockList() - }); - if (canceled) return; +async function add() { + const { canceled, result: type } = await os.select({ + title: i18n.ts._pages.chooseBlock, + groupedItems: getPageBlockList() + }); + if (canceled) return; - const id = uuid(); - this.value.children.push({ id, type }); - }, - } -}); + const id = uuid(); + props.value.children.push({ id, type }); +} </script> <style lang="scss" scoped> diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.image.vue b/packages/client/src/pages/page-editor/els/page-editor.el.image.vue index 9a6adab30adf3ec0d05d6b4648ff216817f53a96..b22bf1cb348b5243905c313a842aeccbd1c2efd4 100644 --- a/packages/client/src/pages/page-editor/els/page-editor.el.image.vue +++ b/packages/client/src/pages/page-editor/els/page-editor.el.image.vue @@ -14,53 +14,39 @@ </XContainer> </template> -<script lang="ts"> +<script lang="ts" setup> /* eslint-disable vue/no-mutating-props */ -import { defineComponent } from 'vue'; +import { onMounted } from 'vue'; import XContainer from '../page-editor.container.vue'; import MkDriveFileThumbnail from '@/components/drive-file-thumbnail.vue'; import * as os from '@/os'; -export default defineComponent({ - components: { - XContainer, MkDriveFileThumbnail - }, - - props: { - value: { - required: true - }, - }, - - data() { - return { - file: null, - }; - }, +const props = withDefaults(defineProps<{ + value: any +}>(), { + value: { + fileId: null + } +}); - created() { - if (this.value.fileId === undefined) this.value.fileId = null; - }, +let file: any = $ref(null); - mounted() { - if (this.value.fileId == null) { - this.choose(); - } else { - os.api('drive/files/show', { - fileId: this.value.fileId - }).then(file => { - this.file = file; - }); - } - }, +async function choose() { + os.selectDriveFile(false).then((fileResponse: any) => { + file = fileResponse; + props.value.fileId = fileResponse.id; + }); +} - methods: { - async choose() { - os.selectDriveFile(false).then(file => { - this.file = file; - this.value.fileId = file.id; - }); - }, +onMounted(async () => { + if (props.value.fileId == null) { + await choose(); + } else { + os.api('drive/files/show', { + fileId: props.value.fileId + }).then(fileResponse => { + file = fileResponse; + }); } }); </script> diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.note.vue b/packages/client/src/pages/page-editor/els/page-editor.el.note.vue index 2d4d9c5dcc6d9b9c548b8408ab4ce62f37e19b66..27f9f961f3b275e5a07433d76a3ea8748aa0bd53 100644 --- a/packages/client/src/pages/page-editor/els/page-editor.el.note.vue +++ b/packages/client/src/pages/page-editor/els/page-editor.el.note.vue @@ -16,9 +16,9 @@ </XContainer> </template> -<script lang="ts"> +<script lang="ts" setup> /* eslint-disable vue/no-mutating-props */ -import { defineComponent } from 'vue'; +import { watch } from 'vue'; import XContainer from '../page-editor.container.vue'; import MkInput from '@/components/form/input.vue'; import MkSwitch from '@/components/form/switch.vue'; @@ -26,42 +26,27 @@ import XNote from '@/components/note.vue'; import XNoteDetailed from '@/components/note-detailed.vue'; import * as os from '@/os'; -export default defineComponent({ - components: { - XContainer, MkInput, MkSwitch, XNote, XNoteDetailed, - }, - - props: { - value: { - required: true - }, - }, - - data() { - return { - id: this.value.note, - note: null, - }; - }, +const props = withDefaults(defineProps<{ + value: any +}>(), { + value: { + note: null, + detailed: false + } +}); - watch: { - id: { - async handler() { - if (this.id && (this.id.startsWith('http://') || this.id.startsWith('https://'))) { - this.value.note = this.id.endsWith('/') ? this.id.substr(0, this.id.length - 1).split('/').pop() : this.id.split('/').pop(); - } else { - this.value.note = this.id; - } +let id: any = $ref(props.value.note); +let note: any = $ref(null); - this.note = await os.api('notes/show', { noteId: this.value.note }); - }, - immediate: true - }, - }, +watch(id, async () => { + if (id && (id.startsWith('http://') || id.startsWith('https://'))) { + props.value.note = (id.endsWith('/') ? id.slice(0, -1) : id).split('/').pop(); + } else { + props.value.note = id; + } - created() { - if (this.value.note == null) this.value.note = null; - if (this.value.detailed == null) this.value.detailed = false; - }, + note = await os.api('notes/show', { noteId: props.value.note }); +}, { + immediate: true }); </script> diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.number-input.vue b/packages/client/src/pages/page-editor/els/page-editor.el.number-input.vue index 9083f0c4937b706a00f1fbdbab4c059ca7bc3c81..479a859e7681bf9a5690d27cbc63cd985dc281c9 100644 --- a/packages/client/src/pages/page-editor/els/page-editor.el.number-input.vue +++ b/packages/client/src/pages/page-editor/els/page-editor.el.number-input.vue @@ -18,31 +18,17 @@ </XContainer> </template> -<script lang="ts"> +<script lang="ts" setup> /* eslint-disable vue/no-mutating-props */ -import { defineComponent } from 'vue'; +import { } from 'vue'; import XContainer from '../page-editor.container.vue'; import MkInput from '@/components/form/input.vue'; -import * as os from '@/os'; -export default defineComponent({ - components: { - XContainer, MkInput - }, - - props: { - value: { - required: true - }, - }, - - data() { - return { - }; - }, - - created() { - if (this.value.name == null) this.value.name = ''; - }, +withDefaults(defineProps<{ + value: any +}>(), { + value: { + name: '' + } }); </script> diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.post.vue b/packages/client/src/pages/page-editor/els/page-editor.el.post.vue index 3af720f4b7aacf80f4cc0e65602f0474776295a6..f8c42c296b0d4048876432f811a8882053e9a01a 100644 --- a/packages/client/src/pages/page-editor/els/page-editor.el.post.vue +++ b/packages/client/src/pages/page-editor/els/page-editor.el.post.vue @@ -11,35 +11,21 @@ </XContainer> </template> -<script lang="ts"> +<script lang="ts" setup> /* eslint-disable vue/no-mutating-props */ -import { defineComponent } from 'vue'; +import { } from 'vue'; import XContainer from '../page-editor.container.vue'; import MkTextarea from '@/components/form/textarea.vue'; import MkInput from '@/components/form/input.vue'; import MkSwitch from '@/components/form/switch.vue'; -import * as os from '@/os'; -export default defineComponent({ - components: { - XContainer, MkTextarea, MkInput, MkSwitch - }, - - props: { - value: { - required: true - }, - }, - - data() { - return { - }; - }, - - created() { - if (this.value.text == null) this.value.text = ''; - if (this.value.attachCanvasImage == null) this.value.attachCanvasImage = false; - if (this.value.canvasId == null) this.value.canvasId = ''; - }, +withDefaults(defineProps<{ + value: any +}>(), { + value: { + text: '', + attachCanvasImage: false, + canvasId: '' + } }); </script> diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.radio-button.vue b/packages/client/src/pages/page-editor/els/page-editor.el.radio-button.vue index 2502a54d791bef71717fa48731e910e03da15daf..183e60a69ab2c4083dd801cd4f067ccec5f22a29 100644 --- a/packages/client/src/pages/page-editor/els/page-editor.el.radio-button.vue +++ b/packages/client/src/pages/page-editor/els/page-editor.el.radio-button.vue @@ -12,41 +12,28 @@ </XContainer> </template> -<script lang="ts"> +<script lang="ts" setup> /* eslint-disable vue/no-mutating-props */ -import { defineComponent } from 'vue'; +import { watch } from 'vue'; import XContainer from '../page-editor.container.vue'; import MkTextarea from '@/components/form/textarea.vue'; import MkInput from '@/components/form/input.vue'; -import * as os from '@/os'; -export default defineComponent({ - components: { - XContainer, MkTextarea, MkInput - }, - props: { - value: { - required: true - }, - }, - data() { - return { - values: '', - }; - }, - watch: { - values: { - handler() { - this.value.values = this.values.split('\n'); - }, - deep: true - } - }, - created() { - if (this.value.name == null) this.value.name = ''; - if (this.value.title == null) this.value.title = ''; - if (this.value.values == null) this.value.values = []; - this.values = this.value.values.join('\n'); - }, +const props = withDefaults(defineProps<{ + value: any +}>(), { + value: { + name: '', + title: '', + values: [] + } +}); + +let values: string = $ref(props.value.values.join('\n')); + +watch(values, () => { + props.value.values = values.split('\n') +}, { + deep: true }); </script> diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.section.vue b/packages/client/src/pages/page-editor/els/page-editor.el.section.vue index 1684895fe1218e6d66f530d89d6a28c1a41906ad..7276cc1e1b08441fcb4f4470cd9bc135d1c1770b 100644 --- a/packages/client/src/pages/page-editor/els/page-editor.el.section.vue +++ b/packages/client/src/pages/page-editor/els/page-editor.el.section.vue @@ -17,66 +17,51 @@ </XContainer> </template> -<script lang="ts"> +<script lang="ts" setup> /* eslint-disable vue/no-mutating-props */ -import { defineComponent, defineAsyncComponent } from 'vue'; +import { defineAsyncComponent, inject, onMounted } from 'vue'; import { v4 as uuid } from 'uuid'; import XContainer from '../page-editor.container.vue'; import * as os from '@/os'; +import { i18n } from '@/i18n'; -export default defineComponent({ - components: { - XContainer, - XBlocks: defineAsyncComponent(() => import('../page-editor.blocks.vue')), - }, +const XBlocks = defineAsyncComponent(() => import('../page-editor.blocks.vue')); - inject: ['getPageBlockList'], - - props: { - value: { - required: true - }, - hpml: { - required: true, - }, - }, - - data() { - return { - }; - }, +const props = withDefaults(defineProps<{ + value: any, + hpml: any +}>(), { + value: { + title: null, + children: [] + } +}); - created() { - if (this.value.title == null) this.value.title = null; - if (this.value.children == null) this.value.children = []; - }, +const getPageBlockList = inject<(any) => any>('getPageBlockList'); - mounted() { - if (this.value.title == null) { - this.rename(); - } - }, +async function rename() { + const { canceled, result: title } = await os.inputText({ + title: 'Enter title', + default: props.value.title + }); + if (canceled) return; + props.value.title = title; +} - methods: { - async rename() { - const { canceled, result: title } = await os.inputText({ - title: 'Enter title', - default: this.value.title - }); - if (canceled) return; - this.value.title = title; - }, +async function add() { + const { canceled, result: type } = await os.select({ + title: i18n.ts._pages.chooseBlock, + groupedItems: getPageBlockList() + }); + if (canceled) return; - async add() { - const { canceled, result: type } = await os.select({ - title: this.$ts._pages.chooseBlock, - groupedItems: this.getPageBlockList() - }); - if (canceled) return; + const id = uuid(); + props.value.children.push({ id, type }); +} - const id = uuid(); - this.value.children.push({ id, type }); - }, +onMounted(() => { + if (props.value.title == null) { + rename(); } }); </script> diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.switch.vue b/packages/client/src/pages/page-editor/els/page-editor.el.switch.vue index b989dce0aca0c50614285e7e91a174d860b20400..ded57cf304091c606f9b58bbcac02d56ca47eae6 100644 --- a/packages/client/src/pages/page-editor/els/page-editor.el.switch.vue +++ b/packages/client/src/pages/page-editor/els/page-editor.el.switch.vue @@ -11,33 +11,19 @@ </XContainer> </template> -<script lang="ts"> +<script lang="ts" setup> /* eslint-disable vue/no-mutating-props */ -import { defineComponent } from 'vue'; +import { } from 'vue'; import XContainer from '../page-editor.container.vue'; import MkSwitch from '@/components/form/switch.vue'; import MkInput from '@/components/form/input.vue'; -import * as os from '@/os'; -export default defineComponent({ - components: { - XContainer, MkSwitch, MkInput - }, - - props: { - value: { - required: true - }, - }, - - data() { - return { - }; - }, - - created() { - if (this.value.name == null) this.value.name = ''; - }, +withDefaults(defineProps<{ + value: any +}>(), { + value: { + name: '' + } }); </script> diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.text-input.vue b/packages/client/src/pages/page-editor/els/page-editor.el.text-input.vue index b25ac38d51fc097920688022a8057ddaba4b6e22..1e269ae58cc7d71ed5781b2f16a32cd20ecc0eac 100644 --- a/packages/client/src/pages/page-editor/els/page-editor.el.text-input.vue +++ b/packages/client/src/pages/page-editor/els/page-editor.el.text-input.vue @@ -11,31 +11,17 @@ </XContainer> </template> -<script lang="ts"> +<script lang="ts" setup> /* eslint-disable vue/no-mutating-props */ -import { defineComponent } from 'vue'; +import { } from 'vue'; import XContainer from '../page-editor.container.vue'; import MkInput from '@/components/form/input.vue'; -import * as os from '@/os'; -export default defineComponent({ - components: { - XContainer, MkInput - }, - - props: { - value: { - required: true - }, - }, - - data() { - return { - }; - }, - - created() { - if (this.value.name == null) this.value.name = ''; - }, +withDefaults(defineProps<{ + value: any +}>(), { + value: { + name: '' + } }); </script> diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.text.vue b/packages/client/src/pages/page-editor/els/page-editor.el.text.vue index f23a8ded90f7500d74658c325f235278d5586de4..e0ebe68dda0fe5c7b5a7d662560b47a27a887e37 100644 --- a/packages/client/src/pages/page-editor/els/page-editor.el.text.vue +++ b/packages/client/src/pages/page-editor/els/page-editor.el.text.vue @@ -9,31 +9,17 @@ </XContainer> </template> -<script lang="ts"> +<script lang="ts" setup> /* eslint-disable vue/no-mutating-props */ -import { defineComponent } from 'vue'; +import { } from 'vue'; import XContainer from '../page-editor.container.vue'; -import * as os from '@/os'; -export default defineComponent({ - components: { - XContainer - }, - - props: { - value: { - required: true - }, - }, - - data() { - return { - }; - }, - - created() { - if (this.value.text == null) this.value.text = ''; - }, +withDefaults(defineProps<{ + value: any +}>(), { + value: { + text: '' + } }); </script> diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.textarea-input.vue b/packages/client/src/pages/page-editor/els/page-editor.el.textarea-input.vue index f61f0cb1b7b5d0a55f05cd152e4b59224489b7f2..1bb4aaa5438f4ee491b100bb95f8770131f1a2be 100644 --- a/packages/client/src/pages/page-editor/els/page-editor.el.textarea-input.vue +++ b/packages/client/src/pages/page-editor/els/page-editor.el.textarea-input.vue @@ -11,32 +11,18 @@ </XContainer> </template> -<script lang="ts"> +<script lang="ts" setup> /* eslint-disable vue/no-mutating-props */ -import { defineComponent } from 'vue'; +import { } from 'vue'; import XContainer from '../page-editor.container.vue'; import MkTextarea from '@/components/form/textarea.vue'; import MkInput from '@/components/form/input.vue'; -import * as os from '@/os'; -export default defineComponent({ - components: { - XContainer, MkTextarea, MkInput - }, - - props: { - value: { - required: true - }, - }, - - data() { - return { - }; - }, - - created() { - if (this.value.name == null) this.value.name = ''; - }, +withDefaults(defineProps<{ + value: any +}>(), { + value: { + name: '' + } }); </script> diff --git a/packages/client/src/pages/page-editor/els/page-editor.el.textarea.vue b/packages/client/src/pages/page-editor/els/page-editor.el.textarea.vue index bbabe28488592e2576bfe7a17f93634cdf547f79..dca7de8df9fa8c63749218d3c16f57a54016b989 100644 --- a/packages/client/src/pages/page-editor/els/page-editor.el.textarea.vue +++ b/packages/client/src/pages/page-editor/els/page-editor.el.textarea.vue @@ -9,31 +9,17 @@ </XContainer> </template> -<script lang="ts"> +<script lang="ts" setup> /* eslint-disable vue/no-mutating-props */ -import { defineComponent } from 'vue'; +import { } from 'vue'; import XContainer from '../page-editor.container.vue'; -import * as os from '@/os'; -export default defineComponent({ - components: { - XContainer - }, - - props: { - value: { - required: true - }, - }, - - data() { - return { - }; - }, - - created() { - if (this.value.text == null) this.value.text = ''; - }, +withDefaults(defineProps<{ + value: any +}>(), { + value: { + text: '' + } }); </script>