diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-08 17:41:09 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2023-01-08 17:41:09 +0900 |
| commit | 27c2ca50488680595c114dfae6f8de2ec3c48b32 (patch) | |
| tree | 913bad82798e39c40e14d1bbc7fa20683bdf3622 /packages/frontend/src/widgets | |
| parent | :art: (diff) | |
| download | misskey-27c2ca50488680595c114dfae6f8de2ec3c48b32.tar.gz misskey-27c2ca50488680595c114dfae6f8de2ec3c48b32.tar.bz2 misskey-27c2ca50488680595c114dfae6f8de2ec3c48b32.zip | |
feat(client): 🍪👈
Diffstat (limited to 'packages/frontend/src/widgets')
| -rw-r--r-- | packages/frontend/src/widgets/clicker.vue | 44 | ||||
| -rw-r--r-- | packages/frontend/src/widgets/index.ts | 2 |
2 files changed, 46 insertions, 0 deletions
diff --git a/packages/frontend/src/widgets/clicker.vue b/packages/frontend/src/widgets/clicker.vue new file mode 100644 index 0000000000..77d1777e97 --- /dev/null +++ b/packages/frontend/src/widgets/clicker.vue @@ -0,0 +1,44 @@ +<template> +<MkContainer :show-header="widgetProps.showHeader" class="mkw-clicker"> + <template #header><i class="ti ti-cookie"></i>Clicker</template> + <MkClickerGame/> +</MkContainer> +</template> + +<script lang="ts" setup> +import { onMounted, onUnmounted, Ref, ref, watch } from 'vue'; +import { useWidgetPropsManager, Widget, WidgetComponentEmits, WidgetComponentExpose, WidgetComponentProps } from './widget'; +import { GetFormResultType } from '@/scripts/form'; +import { $i } from '@/account'; +import MkContainer from '@/components/MkContainer.vue'; +import MkClickerGame from '@/components/MkClickerGame.vue'; + +const name = 'clicker'; + +const widgetPropsDef = { + showHeader: { + type: 'boolean' as const, + default: true, + }, +}; + +type WidgetProps = GetFormResultType<typeof widgetPropsDef>; + +// 現時点ではvueの制限によりimportしたtypeをジェネリックに渡せない +//const props = defineProps<WidgetComponentProps<WidgetProps>>(); +//const emit = defineEmits<WidgetComponentEmits<WidgetProps>>(); +const props = defineProps<{ widget?: Widget<WidgetProps>; }>(); +const emit = defineEmits<{ (ev: 'updateProps', props: WidgetProps); }>(); + +const { widgetProps, configure } = useWidgetPropsManager(name, + widgetPropsDef, + props, + emit, +); + +defineExpose<WidgetComponentExpose>({ + name, + configure, + id: props.widget ? props.widget.id : null, +}); +</script> diff --git a/packages/frontend/src/widgets/index.ts b/packages/frontend/src/widgets/index.ts index 3966649da4..eba4abd2f7 100644 --- a/packages/frontend/src/widgets/index.ts +++ b/packages/frontend/src/widgets/index.ts @@ -25,6 +25,7 @@ export default function(app: App) { app.component('MkwAiscriptApp', defineAsyncComponent(() => import('./aiscript-app.vue'))); app.component('MkwAichan', defineAsyncComponent(() => import('./aichan.vue'))); app.component('MkwUserList', defineAsyncComponent(() => import('./user-list.vue'))); + app.component('MkwClicker', defineAsyncComponent(() => import('./clicker.vue'))); } export const widgets = [ @@ -52,4 +53,5 @@ export const widgets = [ 'aiscriptApp', 'aichan', 'userList', + 'clicker', ]; |