| @@ -22,7 +22,7 @@ SPDX-License-Identifier: AGPL-3.0-only | ||||
| 	</ol> | ||||
| 	<ol v-else-if="emojis.length > 0" ref="suggests" :class="$style.list"> | ||||
| 		<li v-for="emoji in emojis" :key="emoji.emoji" :class="$style.item" tabindex="-1" @click="complete(type, emoji.emoji)" @keydown="onKeydown"> | ||||
| 			<MkCustomEmoji v-if="'isCustomEmoji' in emoji && emoji.isCustomEmoji" :name="emoji.emoji" :class="$style.emoji"/> | ||||
| 			<MkCustomEmoji v-if="'isCustomEmoji' in emoji && emoji.isCustomEmoji" :name="emoji.emoji" :class="$style.emoji" :fallbackToImage="true"/> | ||||
| 			<MkEmoji v-else :emoji="emoji.emoji" :class="$style.emoji"/> | ||||
| 			<!-- eslint-disable-next-line vue/no-v-html --> | ||||
| 			<span v-if="q" :class="$style.emojiName" v-html="sanitizeHtml(emoji.name.replace(q, `<b>${q}</b>`))"></span> | ||||
|   | ||||
| @@ -20,7 +20,7 @@ SPDX-License-Identifier: AGPL-3.0-only | ||||
| 			@pointerenter="computeButtonTitle" | ||||
| 			@click="emit('chosen', emoji, $event)" | ||||
| 		> | ||||
| 			<MkCustomEmoji v-if="emoji[0] === ':'" class="emoji" :name="emoji" :normal="true"/> | ||||
| 			<MkCustomEmoji v-if="emoji[0] === ':'" class="emoji" :name="emoji" :normal="true" :fallbackToImage="true"/> | ||||
| 			<MkEmoji v-else class="emoji" :emoji="emoji" :normal="true"/> | ||||
| 		</button> | ||||
| 	</div> | ||||
|   | ||||
| @@ -19,7 +19,7 @@ SPDX-License-Identifier: AGPL-3.0-only | ||||
| 					tabindex="0" | ||||
| 					@click="chosen(emoji, $event)" | ||||
| 				> | ||||
| 					<MkCustomEmoji class="emoji" :name="emoji.name"/> | ||||
| 					<MkCustomEmoji class="emoji" :name="emoji.name" :fallbackToImage="true"/> | ||||
| 				</button> | ||||
| 			</div> | ||||
| 			<div v-if="searchResultUnicode.length > 0" class="body"> | ||||
|   | ||||
| @@ -4,7 +4,7 @@ SPDX-License-Identifier: AGPL-3.0-only | ||||
| --> | ||||
|  | ||||
| <template> | ||||
| <MkCustomEmoji v-if="reaction[0] === ':'" ref="elRef" :name="reaction" :normal="true" :noStyle="noStyle" :url="emojiUrl"/> | ||||
| <MkCustomEmoji v-if="reaction[0] === ':'" ref="elRef" :name="reaction" :normal="true" :noStyle="noStyle" :url="emojiUrl" :fallbackToImage="true"/> | ||||
| <MkEmoji v-else ref="elRef" :emoji="reaction" :normal="true" :noStyle="noStyle"/> | ||||
| </template> | ||||
|  | ||||
|   | ||||
| @@ -48,10 +48,18 @@ export const Missing = { | ||||
| 		name: Default.args.name, | ||||
| 	}, | ||||
| } satisfies StoryObj<typeof MkCustomEmoji>; | ||||
| export const Error = { | ||||
| export const ErrorToText = { | ||||
| 	...Default, | ||||
| 	args: { | ||||
| 		url: 'https://example.com/404', | ||||
| 		name: Default.args.name, | ||||
| 	}, | ||||
| } satisfies StoryObj<typeof MkCustomEmoji>; | ||||
| export const ErrorToImage = { | ||||
| 	...Default, | ||||
| 	args: { | ||||
| 		url: 'https://example.com/404', | ||||
| 		name: Default.args.name, | ||||
| 		fallbackToImage: true, | ||||
| 	}, | ||||
| } satisfies StoryObj<typeof MkCustomEmoji>; | ||||
|   | ||||
| @@ -5,11 +5,12 @@ SPDX-License-Identifier: AGPL-3.0-only | ||||
|  | ||||
| <template> | ||||
| <img | ||||
| 	v-if="errored" | ||||
| 	v-if="errored && fallbackToImage" | ||||
| 	:class="[$style.root, { [$style.normal]: normal, [$style.noStyle]: noStyle }]" | ||||
| 	src="/client-assets/dummy.png" | ||||
| 	:title="alt" | ||||
| /> | ||||
| <span v-else-if="errored">:{{ customEmojiName }}:</span> | ||||
| <img | ||||
| 	v-else | ||||
| 	:class="[$style.root, { [$style.normal]: normal, [$style.noStyle]: noStyle }]" | ||||
| @@ -44,6 +45,7 @@ const props = defineProps<{ | ||||
| 	useOriginalSize?: boolean; | ||||
| 	menu?: boolean; | ||||
| 	menuReaction?: boolean; | ||||
| 	fallbackToImage?: boolean; | ||||
| }>(); | ||||
|  | ||||
| const react = inject<((name: string) => void) | null>('react', null); | ||||
|   | ||||
| @@ -407,6 +407,7 @@ export default function (props: MfmProps, { emit }: { emit: SetupContext<MfmEven | ||||
| 						useOriginalSize: scale >= 2.5, | ||||
| 						menu: props.enableEmojiMenu, | ||||
| 						menuReaction: props.enableEmojiMenuReaction, | ||||
| 						fallbackToImage: false, | ||||
| 					})]; | ||||
| 				} else { | ||||
| 					// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition | ||||
|   | ||||
| @@ -15,7 +15,7 @@ SPDX-License-Identifier: AGPL-3.0-only | ||||
| 						<div class="misskey">Misskey</div> | ||||
| 						<div class="version">v{{ version }}</div> | ||||
| 						<span v-for="emoji in easterEggEmojis" :key="emoji.id" class="emoji" :data-physics-x="emoji.left" :data-physics-y="emoji.top" :class="{ _physics_circle_: !emoji.emoji.startsWith(':') }"> | ||||
| 							<MkCustomEmoji v-if="emoji.emoji[0] === ':'" class="emoji" :name="emoji.emoji" :normal="true" :noStyle="true"/> | ||||
| 							<MkCustomEmoji v-if="emoji.emoji[0] === ':'" class="emoji" :name="emoji.emoji" :normal="true" :noStyle="true" :fallbackToImage="true"/> | ||||
| 							<MkEmoji v-else class="emoji" :emoji="emoji.emoji" :normal="true" :noStyle="true"/> | ||||
| 						</span> | ||||
| 					</div> | ||||
|   | ||||
| @@ -23,7 +23,7 @@ SPDX-License-Identifier: AGPL-3.0-only | ||||
| 					> | ||||
| 						<template #item="{element}"> | ||||
| 							<button class="_button" :class="$style.emojisItem" @click="removeReaction(element, $event)"> | ||||
| 								<MkCustomEmoji v-if="element[0] === ':'" :name="element" :normal="true"/> | ||||
| 								<MkCustomEmoji v-if="element[0] === ':'" :name="element" :normal="true" :fallbackToImage="true"/> | ||||
| 								<MkEmoji v-else :emoji="element" :normal="true"/> | ||||
| 							</button> | ||||
| 						</template> | ||||
| @@ -63,7 +63,7 @@ SPDX-License-Identifier: AGPL-3.0-only | ||||
| 					> | ||||
| 						<template #item="{element}"> | ||||
| 							<button class="_button" :class="$style.emojisItem" @click="removeEmoji(element, $event)"> | ||||
| 								<MkCustomEmoji v-if="element[0] === ':'" :name="element" :normal="true"/> | ||||
| 								<MkCustomEmoji v-if="element[0] === ':'" :name="element" :normal="true" :fallbackToImage="true"/> | ||||
| 								<MkEmoji v-else :emoji="element" :normal="true"/> | ||||
| 							</button> | ||||
| 						</template> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 tamaina
					tamaina