1
0
mirror of https://github.com/misskey-dev/misskey.git synced 2026-05-05 00:45:50 +02:00

enhance(frontend): 投稿フォームのヒントを追加 (#16712)

* wip

* wip

* Update MkSpot.vue

* Update MkPostForm.vue

* wip

* wip

* Update CHANGELOG.md
This commit is contained in:
syuilo
2025-11-07 11:03:33 +09:00
committed by GitHub
parent e8c78e12d5
commit e312283ea0
7 changed files with 333 additions and 3 deletions

View File

@@ -0,0 +1,49 @@
/*
* SPDX-FileCopyrightText: syuilo and misskey-project
* SPDX-License-Identifier: AGPL-3.0-only
*/
import { computed, ref, shallowRef, watch } from 'vue';
import * as os from '@/os.js';
type TourStep = {
title: string;
description: string;
element: HTMLElement;
};
export function startTour(steps: TourStep[]) {
return new Promise<void>(async (resolve) => {
const currentStepIndex = ref(0);
const titleRef = ref(steps[0].title);
const descriptionRef = ref(steps[0].description);
const anchorElementRef = shallowRef<HTMLElement>(steps[0].element);
watch(currentStepIndex, (newIndex) => {
const step = steps[newIndex];
titleRef.value = step.title;
descriptionRef.value = step.description;
anchorElementRef.value = step.element;
});
const { dispose } = os.popup(await import('@/components/MkSpot.vue').then(x => x.default), {
title: titleRef,
description: descriptionRef,
anchorElement: anchorElementRef,
hasPrev: computed(() => currentStepIndex.value > 0),
hasNext: computed(() => currentStepIndex.value < steps.length - 1),
}, {
next: () => {
if (currentStepIndex.value >= steps.length - 1) {
dispose();
resolve();
return;
}
currentStepIndex.value++;
},
prev: () => {
currentStepIndex.value--;
},
});
});
}