tweak note componsnt
This commit is contained in:
		
							parent
							
								
									4594fb11de
								
							
						
					
					
						commit
						49f3090edd
					
				
					 5 changed files with 29 additions and 59 deletions
				
			
		|  | @ -13,7 +13,7 @@ | ||||||
| 	<div v-if="appearNote._prId_" class="info"><i class="fas fa-bullhorn"></i> {{ i18n.ts.promotion }}<button class="_textButton hide" @click="readPromo()">{{ i18n.ts.hideThisNote }} <i class="ti ti-x"></i></button></div> | 	<div v-if="appearNote._prId_" class="info"><i class="fas fa-bullhorn"></i> {{ i18n.ts.promotion }}<button class="_textButton hide" @click="readPromo()">{{ i18n.ts.hideThisNote }} <i class="ti ti-x"></i></button></div> | ||||||
| 	<div v-if="appearNote._featuredId_" class="info"><i class="ti ti-bolt"></i> {{ i18n.ts.featured }}</div> | 	<div v-if="appearNote._featuredId_" class="info"><i class="ti ti-bolt"></i> {{ i18n.ts.featured }}</div> | ||||||
| 	<div v-if="isRenote" class="renote"> | 	<div v-if="isRenote" class="renote"> | ||||||
| 		<MkAvatar class="avatar" :user="note.user"/> | 		<MkAvatar v-once class="avatar" :user="note.user"/> | ||||||
| 		<i class="ti ti-repeat"></i> | 		<i class="ti ti-repeat"></i> | ||||||
| 		<I18n :src="i18n.ts.renotedBy" tag="span"> | 		<I18n :src="i18n.ts.renotedBy" tag="span"> | ||||||
| 			<template #user> | 			<template #user> | ||||||
|  | @ -27,11 +27,16 @@ | ||||||
| 				<i v-if="isMyRenote" class="ti ti-dots dropdownIcon"></i> | 				<i v-if="isMyRenote" class="ti ti-dots dropdownIcon"></i> | ||||||
| 				<MkTime :time="note.createdAt"/> | 				<MkTime :time="note.createdAt"/> | ||||||
| 			</button> | 			</button> | ||||||
| 			<MkVisibility :note="note"/> | 			<span v-if="note.visibility !== 'public'" style="{ margin-left: 0.5em; }" :title="i18n.ts._visibility[note.visibility]"> | ||||||
|  | 				<i v-if="note.visibility === 'home'" class="ti ti-home"></i> | ||||||
|  | 				<i v-else-if="note.visibility === 'followers'" class="ti ti-lock-open"></i> | ||||||
|  | 				<i v-else-if="note.visibility === 'specified'" ref="specified" class="ti ti-mail"></i> | ||||||
|  | 			</span> | ||||||
|  | 			<span v-if="note.localOnly" style="{ margin-left: 0.5em; }" :title="i18n.ts._visibility['localOnly']"><i class="ti ti-world-off"></i></span> | ||||||
| 		</div> | 		</div> | ||||||
| 	</div> | 	</div> | ||||||
| 	<article class="article" @contextmenu.stop="onContextmenu"> | 	<article class="article" @contextmenu.stop="onContextmenu"> | ||||||
| 		<MkAvatar class="avatar" :user="appearNote.user"/> | 		<MkAvatar v-once class="avatar" :user="appearNote.user"/> | ||||||
| 		<div class="main"> | 		<div class="main"> | ||||||
| 			<MkNoteHeader class="header" :note="appearNote" :mini="true"/> | 			<MkNoteHeader class="header" :note="appearNote" :mini="true"/> | ||||||
| 			<MkInstanceTicker v-if="showTicker" class="ticker" :instance="appearNote.user.instance"/> | 			<MkInstanceTicker v-if="showTicker" class="ticker" :instance="appearNote.user.instance"/> | ||||||
|  | @ -126,7 +131,6 @@ import MkPoll from '@/components/MkPoll.vue'; | ||||||
| import MkUsersTooltip from '@/components/MkUsersTooltip.vue'; | import MkUsersTooltip from '@/components/MkUsersTooltip.vue'; | ||||||
| import MkUrlPreview from '@/components/MkUrlPreview.vue'; | import MkUrlPreview from '@/components/MkUrlPreview.vue'; | ||||||
| import MkInstanceTicker from '@/components/MkInstanceTicker.vue'; | import MkInstanceTicker from '@/components/MkInstanceTicker.vue'; | ||||||
| import MkVisibility from '@/components/MkVisibility.vue'; |  | ||||||
| import { pleaseLogin } from '@/scripts/please-login'; | import { pleaseLogin } from '@/scripts/please-login'; | ||||||
| import { focusPrev, focusNext } from '@/scripts/focus'; | import { focusPrev, focusNext } from '@/scripts/focus'; | ||||||
| import { checkWordMute } from '@/scripts/check-word-mute'; | import { checkWordMute } from '@/scripts/check-word-mute'; | ||||||
|  |  | ||||||
|  | @ -25,7 +25,12 @@ | ||||||
| 				<i v-if="isMyRenote" class="ti ti-dots dropdownIcon"></i> | 				<i v-if="isMyRenote" class="ti ti-dots dropdownIcon"></i> | ||||||
| 				<MkTime :time="note.createdAt"/> | 				<MkTime :time="note.createdAt"/> | ||||||
| 			</button> | 			</button> | ||||||
| 			<MkVisibility :note="note"/> | 			<span v-if="note.visibility !== 'public'" style="{ margin-left: 0.5em; }" :title="i18n.ts._visibility[note.visibility]"> | ||||||
|  | 				<i v-if="note.visibility === 'home'" class="ti ti-home"></i> | ||||||
|  | 				<i v-else-if="note.visibility === 'followers'" class="ti ti-lock-open"></i> | ||||||
|  | 				<i v-else-if="note.visibility === 'specified'" ref="specified" class="ti ti-mail"></i> | ||||||
|  | 			</span> | ||||||
|  | 			<span v-if="note.localOnly" style="{ margin-left: 0.5em; }" :title="i18n.ts._visibility['localOnly']"><i class="ti ti-world-off"></i></span> | ||||||
| 		</div> | 		</div> | ||||||
| 	</div> | 	</div> | ||||||
| 	<article class="article" @contextmenu.stop="onContextmenu"> | 	<article class="article" @contextmenu.stop="onContextmenu"> | ||||||
|  | @ -38,7 +43,12 @@ | ||||||
| 					</MkA> | 					</MkA> | ||||||
| 					<span v-if="appearNote.user.isBot" class="is-bot">bot</span> | 					<span v-if="appearNote.user.isBot" class="is-bot">bot</span> | ||||||
| 					<div class="info"> | 					<div class="info"> | ||||||
| 						<MkVisibility :note="appearNote"/> | 						<span v-if="appearNote.visibility !== 'public'" style="{ margin-left: 0.5em; }" :title="i18n.ts._visibility[appearNote.visibility]"> | ||||||
|  | 							<i v-if="appearNote.visibility === 'home'" class="ti ti-home"></i> | ||||||
|  | 							<i v-else-if="appearNote.visibility === 'followers'" class="ti ti-lock-open"></i> | ||||||
|  | 							<i v-else-if="appearNote.visibility === 'specified'" ref="specified" class="ti ti-mail"></i> | ||||||
|  | 						</span> | ||||||
|  | 						<span v-if="appearNote.localOnly" style="{ margin-left: 0.5em; }" :title="i18n.ts._visibility['localOnly']"><i class="ti ti-world-off"></i></span> | ||||||
| 					</div> | 					</div> | ||||||
| 				</div> | 				</div> | ||||||
| 				<div class="username"><MkAcct :user="appearNote.user"/></div> | 				<div class="username"><MkAcct :user="appearNote.user"/></div> | ||||||
|  | @ -136,7 +146,6 @@ import MkPoll from '@/components/MkPoll.vue'; | ||||||
| import MkUsersTooltip from '@/components/MkUsersTooltip.vue'; | import MkUsersTooltip from '@/components/MkUsersTooltip.vue'; | ||||||
| import MkUrlPreview from '@/components/MkUrlPreview.vue'; | import MkUrlPreview from '@/components/MkUrlPreview.vue'; | ||||||
| import MkInstanceTicker from '@/components/MkInstanceTicker.vue'; | import MkInstanceTicker from '@/components/MkInstanceTicker.vue'; | ||||||
| import MkVisibility from '@/components/MkVisibility.vue'; |  | ||||||
| import { pleaseLogin } from '@/scripts/please-login'; | import { pleaseLogin } from '@/scripts/please-login'; | ||||||
| import { checkWordMute } from '@/scripts/check-word-mute'; | import { checkWordMute } from '@/scripts/check-word-mute'; | ||||||
| import { userPage } from '@/filters/user'; | import { userPage } from '@/filters/user'; | ||||||
|  |  | ||||||
|  | @ -1,6 +1,6 @@ | ||||||
| <template> | <template> | ||||||
| <header class="kkwtjztg"> | <header class="kkwtjztg"> | ||||||
| 	<MkA v-user-preview="note.user.id" class="name" :to="userPage(note.user)"> | 	<MkA v-once v-user-preview="note.user.id" class="name" :to="userPage(note.user)"> | ||||||
| 		<MkUserName :user="note.user"/> | 		<MkUserName :user="note.user"/> | ||||||
| 	</MkA> | 	</MkA> | ||||||
| 	<div v-if="note.user.isBot" class="is-bot">bot</div> | 	<div v-if="note.user.isBot" class="is-bot">bot</div> | ||||||
|  | @ -9,7 +9,12 @@ | ||||||
| 		<MkA class="created-at" :to="notePage(note)"> | 		<MkA class="created-at" :to="notePage(note)"> | ||||||
| 			<MkTime :time="note.createdAt"/> | 			<MkTime :time="note.createdAt"/> | ||||||
| 		</MkA> | 		</MkA> | ||||||
| 		<MkVisibility :note="note"/> | 		<span v-if="note.visibility !== 'public'" style="{ margin-left: 0.5em; }" :title="i18n.ts._visibility[note.visibility]"> | ||||||
|  | 			<i v-if="note.visibility === 'home'" class="ti ti-home"></i> | ||||||
|  | 			<i v-else-if="note.visibility === 'followers'" class="ti ti-lock-open"></i> | ||||||
|  | 			<i v-else-if="note.visibility === 'specified'" ref="specified" class="ti ti-mail"></i> | ||||||
|  | 		</span> | ||||||
|  | 		<span v-if="note.localOnly" style="{ margin-left: 0.5em; }" :title="i18n.ts._visibility['localOnly']"><i class="ti ti-world-off"></i></span> | ||||||
| 	</div> | 	</div> | ||||||
| </header> | </header> | ||||||
| </template> | </template> | ||||||
|  | @ -17,7 +22,7 @@ | ||||||
| <script lang="ts" setup> | <script lang="ts" setup> | ||||||
| import { } from 'vue'; | import { } from 'vue'; | ||||||
| import * as misskey from 'misskey-js'; | import * as misskey from 'misskey-js'; | ||||||
| import MkVisibility from '@/components/MkVisibility.vue'; | import { i18n } from '@/i18n'; | ||||||
| import { notePage } from '@/filters/note'; | import { notePage } from '@/filters/note'; | ||||||
| import { userPage } from '@/filters/user'; | import { userPage } from '@/filters/user'; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ | ||||||
| 		<span v-if="note.isHidden" style="opacity: 0.5">({{ i18n.ts.private }})</span> | 		<span v-if="note.isHidden" style="opacity: 0.5">({{ i18n.ts.private }})</span> | ||||||
| 		<span v-if="note.deletedAt" style="opacity: 0.5">({{ i18n.ts.deleted }})</span> | 		<span v-if="note.deletedAt" style="opacity: 0.5">({{ i18n.ts.deleted }})</span> | ||||||
| 		<MkA v-if="note.replyId" class="reply" :to="`/notes/${note.replyId}`"><i class="ti ti-arrow-back-up"></i></MkA> | 		<MkA v-if="note.replyId" class="reply" :to="`/notes/${note.replyId}`"><i class="ti ti-arrow-back-up"></i></MkA> | ||||||
| 		<Mfm v-if="note.text" :text="note.text" :author="note.user" :i="$i"/> | 		<Mfm v-if="note.text" v-once :text="note.text" :author="note.user" :i="$i"/> | ||||||
| 		<MkA v-if="note.renoteId" class="rp" :to="`/notes/${note.renoteId}`">RN: ...</MkA> | 		<MkA v-if="note.renoteId" class="rp" :to="`/notes/${note.renoteId}`">RN: ...</MkA> | ||||||
| 	</div> | 	</div> | ||||||
| 	<details v-if="note.files.length > 0"> | 	<details v-if="note.files.length > 0"> | ||||||
|  |  | ||||||
|  | @ -1,48 +0,0 @@ | ||||||
| <template> |  | ||||||
| <span v-if="note.visibility !== 'public'" :class="$style.visibility" :title="i18n.ts._visibility[note.visibility]"> |  | ||||||
| 	<i v-if="note.visibility === 'home'" class="ti ti-home"></i> |  | ||||||
| 	<i v-else-if="note.visibility === 'followers'" class="ti ti-lock-open"></i> |  | ||||||
| 	<i v-else-if="note.visibility === 'specified'" ref="specified" class="ti ti-mail"></i> |  | ||||||
| </span> |  | ||||||
| <span v-if="note.localOnly" :class="$style.localOnly" :title="i18n.ts._visibility['localOnly']"><i class="ti ti-world-off"></i></span> |  | ||||||
| </template> |  | ||||||
| 
 |  | ||||||
| <script lang="ts" setup> |  | ||||||
| import { ref } from 'vue'; |  | ||||||
| import XDetails from '@/components/MkUsersTooltip.vue'; |  | ||||||
| import * as os from '@/os'; |  | ||||||
| import { useTooltip } from '@/scripts/use-tooltip'; |  | ||||||
| import { i18n } from '@/i18n'; |  | ||||||
| 
 |  | ||||||
| const props = defineProps<{ |  | ||||||
| 	note: { |  | ||||||
| 		visibility: string; |  | ||||||
| 		localOnly?: boolean; |  | ||||||
| 		visibleUserIds?: string[]; |  | ||||||
| 	}, |  | ||||||
| }>(); |  | ||||||
| 
 |  | ||||||
| const specified = $shallowRef<HTMLElement>(); |  | ||||||
| 
 |  | ||||||
| if (props.note.visibility === 'specified') { |  | ||||||
| 	useTooltip($$(specified), async (showing) => { |  | ||||||
| 		const users = await os.api('users/show', { |  | ||||||
| 			userIds: props.note.visibleUserIds, |  | ||||||
| 			limit: 10, |  | ||||||
| 		}); |  | ||||||
| 
 |  | ||||||
| 		os.popup(XDetails, { |  | ||||||
| 			showing, |  | ||||||
| 			users, |  | ||||||
| 			count: props.note.visibleUserIds.length, |  | ||||||
| 			targetElement: specified, |  | ||||||
| 		}, {}, 'closed'); |  | ||||||
| 	}); |  | ||||||
| } |  | ||||||
| </script> |  | ||||||
| 
 |  | ||||||
| <style lang="scss" module> |  | ||||||
| .visibility, .localOnly { |  | ||||||
| 	margin-left: 0.5em; |  | ||||||
| } |  | ||||||
| </style> |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue