feat(frontend): 横スワイプでタブを切り替える機能 (#13011)
* (add) 横スワイプでタブを切り替える機能 * Change Changelog * y方向の移動が一定量を超えたらスワイプを中断するように * Update swipe distance thresholds * Remove console.log * adjust threshold * rename, use v-model * fix * Update MkHorizontalSwipe.vue Co-authored-by: syuilo <Syuilotan@yahoo.co.jp> * use css module --------- Co-authored-by: syuilo <Syuilotan@yahoo.co.jp>
This commit is contained in:
		| @@ -7,20 +7,22 @@ SPDX-License-Identifier: AGPL-3.0-only | ||||
| <MkStickyContainer> | ||||
| 	<template #header><MkPageHeader v-model:tab="tab" :actions="headerActions" :tabs="headerTabs"/></template> | ||||
| 	<MkSpacer :contentMax="700"> | ||||
| 		<div v-if="tab === 'my'" class="_gaps"> | ||||
| 			<MkButton primary rounded class="add" @click="create"><i class="ti ti-plus"></i> {{ i18n.ts.add }}</MkButton> | ||||
| 		<MkHorizontalSwipe v-model:tab="tab" :tabs="headerTabs"> | ||||
| 			<div v-if="tab === 'my'" key="my" class="_gaps"> | ||||
| 				<MkButton primary rounded class="add" @click="create"><i class="ti ti-plus"></i> {{ i18n.ts.add }}</MkButton> | ||||
|  | ||||
| 			<MkPagination v-slot="{items}" ref="pagingComponent" :pagination="pagination" class="_gaps"> | ||||
| 				<MkA v-for="item in items" :key="item.id" :to="`/clips/${item.id}`"> | ||||
| 				<MkPagination v-slot="{items}" ref="pagingComponent" :pagination="pagination" class="_gaps"> | ||||
| 					<MkA v-for="item in items" :key="item.id" :to="`/clips/${item.id}`"> | ||||
| 						<MkClipPreview :clip="item"/> | ||||
| 					</MkA> | ||||
| 				</MkPagination> | ||||
| 			</div> | ||||
| 			<div v-else-if="tab === 'favorites'" key="favorites" class="_gaps"> | ||||
| 				<MkA v-for="item in favorites" :key="item.id" :to="`/clips/${item.id}`"> | ||||
| 					<MkClipPreview :clip="item"/> | ||||
| 				</MkA> | ||||
| 			</MkPagination> | ||||
| 		</div> | ||||
| 		<div v-else-if="tab === 'favorites'" class="_gaps"> | ||||
| 			<MkA v-for="item in favorites" :key="item.id" :to="`/clips/${item.id}`"> | ||||
| 				<MkClipPreview :clip="item"/> | ||||
| 			</MkA> | ||||
| 		</div> | ||||
| 			</div> | ||||
| 		</MkHorizontalSwipe> | ||||
| 	</MkSpacer> | ||||
| </MkStickyContainer> | ||||
| </template> | ||||
| @@ -36,6 +38,7 @@ import { misskeyApi } from '@/scripts/misskey-api.js'; | ||||
| import { i18n } from '@/i18n.js'; | ||||
| import { definePageMetadata } from '@/scripts/page-metadata.js'; | ||||
| import { clipsCache } from '@/cache.js'; | ||||
| import MkHorizontalSwipe from '@/components/MkHorizontalSwipe.vue'; | ||||
|  | ||||
| const pagination = { | ||||
| 	endpoint: 'clips/list' as const, | ||||
| @@ -44,6 +47,7 @@ const pagination = { | ||||
| }; | ||||
|  | ||||
| const tab = ref('my'); | ||||
|  | ||||
| const favorites = ref<Misskey.entities.Clip[] | null>(null); | ||||
|  | ||||
| const pagingComponent = shallowRef<InstanceType<typeof MkPagination>>(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 かっこかり
					かっこかり