wip: migrate paging components to composition api
This commit is contained in:
		| @@ -32,8 +32,7 @@ const props = defineProps<{ | ||||
| const pagingComponent = ref<InstanceType<typeof MkPagination>>(); | ||||
|  | ||||
| const updated = (oldValue, newValue) => { | ||||
| 	const i = pagingComponent.value.items.findIndex(n => n === oldValue); | ||||
| 	pagingComponent.value.items[i] = newValue; | ||||
| 	pagingComponent.value?.updateItem(oldValue.id, () => newValue); | ||||
| }; | ||||
|  | ||||
| defineExpose({ | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
|  | ||||
| 	<template #default="{ items: notifications }"> | ||||
| 		<XList v-slot="{ item: notification }" class="elsfgstc" :items="notifications" :no-gap="true"> | ||||
| 			<XNote v-if="['reply', 'quote', 'mention'].includes(notification.type)" :key="notification.id" :note="notification.note" @update:note="noteUpdated(notification.note, $event)"/> | ||||
| 			<XNote v-if="['reply', 'quote', 'mention'].includes(notification.type)" :key="notification.id" :note="notification.note" @update:note="noteUpdated(notification, $event)"/> | ||||
| 			<XNotification v-else :key="notification.id" :notification="notification" :with-time="true" :full="true" class="_panel notification"/> | ||||
| 		</XList> | ||||
| 	</template> | ||||
| @@ -62,12 +62,11 @@ const onNotification = (notification) => { | ||||
| 	} | ||||
| }; | ||||
|  | ||||
| const noteUpdated = (oldValue, newValue) => { | ||||
| 	const i = pagingComponent.value.items.findIndex(n => n.note === oldValue); | ||||
| 	pagingComponent.value.items[i] = { | ||||
| 		...pagingComponent.value.items[i], | ||||
| 		note: newValue, | ||||
| 	}; | ||||
| const noteUpdated = (item, note) => { | ||||
| 	pagingComponent.value?.updateItem(item.id, old => ({ | ||||
| 		...old, | ||||
| 		note: note, | ||||
| 	})); | ||||
| }; | ||||
|  | ||||
| onMounted(() => { | ||||
|   | ||||
| @@ -205,7 +205,6 @@ const prepend = (item) => { | ||||
| 		// TODO | ||||
| 	} else { | ||||
| 		const isTop = isBackTop.value || (document.body.contains(rootEl.value) && isTopVisible(rootEl.value)); | ||||
| 		console.log(item, top); | ||||
|  | ||||
| 		if (isTop) { | ||||
| 			// Prepend the item | ||||
| @@ -236,7 +235,15 @@ const append = (item) => { | ||||
| 	items.value.push(item); | ||||
| }; | ||||
|  | ||||
| watch(props.pagination.params, init, { deep: true }); | ||||
| const updateItem = (id, replacer: (item: any) => any): void => { | ||||
| 	const i = items.value.findIndex(item => item.id === id); | ||||
| 	items.value[i] = replacer(items.value[i]); | ||||
| }; | ||||
|  | ||||
| if (props.pagination.params && isRef(props.pagination.params)) { | ||||
| 	watch(props.pagination.params, init, { deep: true }); | ||||
| } | ||||
|  | ||||
| watch(queue, (a, b) => { | ||||
| 	if (a.length === 0 && b.length === 0) return; | ||||
| 	emit('queue', queue.value.length); | ||||
| @@ -253,11 +260,11 @@ onDeactivated(() => { | ||||
| }); | ||||
|  | ||||
| defineExpose({ | ||||
| 	items, | ||||
| 	reload, | ||||
| 	fetchMoreAhead, | ||||
| 	prepend, | ||||
| 	append, | ||||
| 	updateItem, | ||||
| }); | ||||
| </script> | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 syuilo
					syuilo