summaryrefslogtreecommitdiff
path: root/packages/frontend
diff options
context:
space:
mode:
authortamaina <tamaina@hotmail.co.jp>2023-01-25 14:22:26 +0000
committertamaina <tamaina@hotmail.co.jp>2023-01-25 14:22:26 +0000
commit605b0f27e4cfe95dfa5201b0dbf07a5dbcc8e806 (patch)
tree5e79388ef2a7b7a76be56d897b3590ce2d1a88dd /packages/frontend
parentfix (diff)
parent:art: (diff)
downloadmisskey-605b0f27e4cfe95dfa5201b0dbf07a5dbcc8e806.tar.gz
misskey-605b0f27e4cfe95dfa5201b0dbf07a5dbcc8e806.tar.bz2
misskey-605b0f27e4cfe95dfa5201b0dbf07a5dbcc8e806.zip
Merge branch 'develop' into emoji-re
Diffstat (limited to 'packages/frontend')
-rw-r--r--packages/frontend/package.json8
-rw-r--r--packages/frontend/src/components/MkAchievements.vue6
-rw-r--r--packages/frontend/src/components/MkMenu.vue3
-rw-r--r--packages/frontend/src/components/MkNotification.vue4
-rw-r--r--packages/frontend/src/components/MkReactionsViewer.reaction.vue2
-rw-r--r--packages/frontend/src/components/MkSuperMenu.vue6
-rw-r--r--packages/frontend/src/components/global/MkEmoji.vue2
-rw-r--r--packages/frontend/src/components/mfm.ts10
-rw-r--r--packages/frontend/src/navbar.ts2
-rw-r--r--packages/frontend/src/pages/about-misskey.vue65
-rw-r--r--packages/frontend/src/pages/achievements.vue2
-rw-r--r--packages/frontend/src/pages/admin/object-storage.vue2
-rw-r--r--packages/frontend/src/pages/emojis.emoji.vue9
-rw-r--r--packages/frontend/src/pages/user/achievements.vue2
-rw-r--r--packages/frontend/src/pages/user/index.vue2
-rw-r--r--packages/frontend/src/scripts/aiscript/ui.ts2
-rw-r--r--packages/frontend/src/style.scss8
-rw-r--r--packages/frontend/vite.config.ts2
18 files changed, 102 insertions, 35 deletions
diff --git a/packages/frontend/package.json b/packages/frontend/package.json
index cdfa96ea82..da568a9eac 100644
--- a/packages/frontend/package.json
+++ b/packages/frontend/package.json
@@ -12,7 +12,7 @@
"@rollup/plugin-json": "6.0.0",
"@rollup/pluginutils": "5.0.2",
"@syuilo/aiscript": "0.12.2",
- "@tabler/icons": "^1.118.0",
+ "@tabler/icons-webfont": "^2.0.0",
"@vitejs/plugin-vue": "4.0.0",
"@vue/compiler-sfc": "3.2.45",
"autobind-decorator": "2.4.0",
@@ -82,15 +82,15 @@
"@types/uuid": "9.0.0",
"@types/websocket": "1.0.5",
"@types/ws": "8.5.4",
- "@typescript-eslint/eslint-plugin": "5.48.2",
- "@typescript-eslint/parser": "5.48.2",
+ "@typescript-eslint/eslint-plugin": "5.49.0",
+ "@typescript-eslint/parser": "5.49.0",
"@vue/runtime-core": "3.2.45",
"cross-env": "7.0.3",
"cypress": "12.3.0",
"eslint": "8.32.0",
"eslint-plugin-import": "2.27.5",
"eslint-plugin-vue": "9.9.0",
- "start-server-and-test": "1.15.2",
+ "start-server-and-test": "1.15.3",
"vue-eslint-parser": "^9.1.0",
"vue-tsc": "^1.0.24"
}
diff --git a/packages/frontend/src/components/MkAchievements.vue b/packages/frontend/src/components/MkAchievements.vue
index 64fea96354..19d04721d8 100644
--- a/packages/frontend/src/components/MkAchievements.vue
+++ b/packages/frontend/src/components/MkAchievements.vue
@@ -16,8 +16,8 @@
<time v-tooltip="new Date(achievement.unlockedAt).toLocaleString()">{{ new Date(achievement.unlockedAt).getFullYear() }}/{{ new Date(achievement.unlockedAt).getMonth() + 1 }}/{{ new Date(achievement.unlockedAt).getDate() }}</time>
</span>
</div>
- <div :class="$style.description">{{ i18n.ts._achievements._types['_' + achievement.name].description }}</div>
- <div v-if="i18n.ts._achievements._types['_' + achievement.name].flavor" :class="$style.flavor">{{ i18n.ts._achievements._types['_' + achievement.name].flavor }}</div>
+ <div :class="$style.description">{{ withDescription ? i18n.ts._achievements._types['_' + achievement.name].description : '???' }}</div>
+ <div v-if="i18n.ts._achievements._types['_' + achievement.name].flavor && withDescription" :class="$style.flavor">{{ i18n.ts._achievements._types['_' + achievement.name].flavor }}</div>
</div>
</div>
<template v-if="withLocked">
@@ -49,8 +49,10 @@ import { ACHIEVEMENT_TYPES, ACHIEVEMENT_BADGES, claimAchievement } from '@/scrip
const props = withDefaults(defineProps<{
user: misskey.entities.User;
withLocked: boolean;
+ withDescription: boolean;
}>(), {
withLocked: true,
+ withDescription: true,
});
let achievements = $ref();
diff --git a/packages/frontend/src/components/MkMenu.vue b/packages/frontend/src/components/MkMenu.vue
index 94dabcac90..eee77a9475 100644
--- a/packages/frontend/src/components/MkMenu.vue
+++ b/packages/frontend/src/components/MkMenu.vue
@@ -335,8 +335,7 @@ onBeforeUnmount(() => {
}
.icon {
- margin-right: 5px;
- width: 20px;
+ margin-right: 8px;
}
.caret {
diff --git a/packages/frontend/src/components/MkNotification.vue b/packages/frontend/src/components/MkNotification.vue
index e992495a78..a8b8fec346 100644
--- a/packages/frontend/src/components/MkNotification.vue
+++ b/packages/frontend/src/components/MkNotification.vue
@@ -15,7 +15,7 @@
<i v-else-if="notification.type === 'mention'" class="ti ti-at"></i>
<i v-else-if="notification.type === 'quote'" class="ti ti-quote"></i>
<i v-else-if="notification.type === 'pollEnded'" class="ti ti-chart-arrows"></i>
- <i v-else-if="notification.type === 'achievementEarned'" class="ti ti-military-award"></i>
+ <i v-else-if="notification.type === 'achievementEarned'" class="ti ti-medal"></i>
<!-- notification.reaction が null になることはまずないが、ここでoptional chaining使うと一部ブラウザで刺さるので念の為 -->
<MkReactionIcon
v-else-if="notification.type === 'reaction'"
@@ -249,7 +249,7 @@ useTooltip(reactionRef, (showing) => {
.t_achievementEarned {
padding: 3px;
- background: #88a6b7;
+ background: #cb9a11;
pointer-events: none;
}
diff --git a/packages/frontend/src/components/MkReactionsViewer.reaction.vue b/packages/frontend/src/components/MkReactionsViewer.reaction.vue
index ec4042d18c..eed6b46594 100644
--- a/packages/frontend/src/components/MkReactionsViewer.reaction.vue
+++ b/packages/frontend/src/components/MkReactionsViewer.reaction.vue
@@ -21,6 +21,7 @@ import { useTooltip } from '@/scripts/use-tooltip';
import { $i } from '@/account';
import MkReactionEffect from '@/components/MkReactionEffect.vue';
import { claimAchievement } from '@/scripts/achievements';
+import { defaultStore } from '@/store';
const props = defineProps<{
reaction: string;
@@ -61,6 +62,7 @@ const toggleReaction = () => {
const anime = () => {
if (document.hidden) return;
+ if (!defaultStore.state.animation) return;
const rect = buttonEl.value.getBoundingClientRect();
const x = rect.left + 16;
diff --git a/packages/frontend/src/components/MkSuperMenu.vue b/packages/frontend/src/components/MkSuperMenu.vue
index bb2a789b3f..5d33ad0ad3 100644
--- a/packages/frontend/src/components/MkSuperMenu.vue
+++ b/packages/frontend/src/components/MkSuperMenu.vue
@@ -6,15 +6,15 @@
<div class="items">
<template v-for="(item, i) in group.items">
<a v-if="item.type === 'a'" :href="item.href" :target="item.target" :tabindex="i" class="_button item" :class="{ danger: item.danger, active: item.active }">
- <i v-if="item.icon" class="icon ti-fw" :class="item.icon"></i>
+ <span v-if="item.icon" class="icon"><i :class="item.icon" class="ti-fw"></i></span>
<span class="text">{{ item.text }}</span>
</a>
<button v-else-if="item.type === 'button'" :tabindex="i" class="_button item" :class="{ danger: item.danger, active: item.active }" :disabled="item.active" @click="ev => item.action(ev)">
- <i v-if="item.icon" class="icon ti-fw" :class="item.icon"></i>
+ <span v-if="item.icon" class="icon"><i :class="item.icon" class="ti-fw"></i></span>
<span class="text">{{ item.text }}</span>
</button>
<MkA v-else :to="item.to" :tabindex="i" class="_button item" :class="{ danger: item.danger, active: item.active }">
- <i v-if="item.icon" class="icon ti-fw" :class="item.icon"></i>
+ <span v-if="item.icon" class="icon"><i :class="item.icon" class="ti-fw"></i></span>
<span class="text">{{ item.text }}</span>
</MkA>
</template>
diff --git a/packages/frontend/src/components/global/MkEmoji.vue b/packages/frontend/src/components/global/MkEmoji.vue
index c489ab5fa1..b554d5e47c 100644
--- a/packages/frontend/src/components/global/MkEmoji.vue
+++ b/packages/frontend/src/components/global/MkEmoji.vue
@@ -33,7 +33,7 @@ const url = computed(() => {
return char2path(char.value);
} else if (props.host == null && !customEmojiName.value.includes('@')) {
const found = customEmojis.value.find(x => x.name === customEmojiName.value);
- return found ? found.url : null;
+ return found ? defaultStore.state.disableShowingAnimatedImages ? getStaticImageUrl(found.url) : found.url : null;
} else {
const rawUrl = props.host ? `/emoji/${customEmojiName.value}@${props.host}.webp` : `/emoji/${customEmojiName.value}.webp`;
return defaultStore.state.disableShowingAnimatedImages
diff --git a/packages/frontend/src/components/mfm.ts b/packages/frontend/src/components/mfm.ts
index 91875de9cf..b9ed9002ac 100644
--- a/packages/frontend/src/components/mfm.ts
+++ b/packages/frontend/src/components/mfm.ts
@@ -190,19 +190,19 @@ export default defineComponent({
return h(MkSparkle, {}, genEl(token.children));
}
case 'rotate': {
- const degrees = parseInt(token.props.args.deg) ?? '90';
+ const degrees = parseFloat(token.props.args.deg) ?? '90';
style = `transform: rotate(${degrees}deg); transform-origin: center center;`;
break;
}
case 'position': {
- const x = parseInt(token.props.args.x ?? '0');
- const y = parseInt(token.props.args.y ?? '0');
+ const x = parseFloat(token.props.args.x ?? '0');
+ const y = parseFloat(token.props.args.y ?? '0');
style = `transform: translateX(${x}em) translateY(${y}em);`;
break;
}
case 'scale': {
- const x = Math.min(parseInt(token.props.args.x ?? '1'), 5);
- const y = Math.min(parseInt(token.props.args.y ?? '1'), 5);
+ const x = Math.min(parseFloat(token.props.args.x ?? '1'), 5);
+ const y = Math.min(parseFloat(token.props.args.y ?? '1'), 5);
style = `transform: scale(${x}, ${y});`;
break;
}
diff --git a/packages/frontend/src/navbar.ts b/packages/frontend/src/navbar.ts
index 3d16a52e62..4f809d888e 100644
--- a/packages/frontend/src/navbar.ts
+++ b/packages/frontend/src/navbar.ts
@@ -105,7 +105,7 @@ export const navbarItemDef = reactive({
},
achievements: {
title: i18n.ts.achievements,
- icon: 'ti ti-military-award',
+ icon: 'ti ti-medal',
show: computed(() => $i != null),
to: '/my/achievements',
},
diff --git a/packages/frontend/src/pages/about-misskey.vue b/packages/frontend/src/pages/about-misskey.vue
index 82f4e30a45..bc63d7159a 100644
--- a/packages/frontend/src/pages/about-misskey.vue
+++ b/packages/frontend/src/pages/about-misskey.vue
@@ -40,11 +40,31 @@
</FormSection>
<FormSection>
<template #label>{{ i18n.ts._aboutMisskey.contributors }}</template>
- <div class="_formLinksGrid">
- <FormLink to="https://github.com/syuilo" external>@syuilo</FormLink>
- <FormLink to="https://github.com/tamaina" external>@tamaina</FormLink>
- <FormLink to="https://github.com/acid-chicken" external>@acid-chicken</FormLink>
- <FormLink to="https://github.com/rinsuki" external>@rinsuki</FormLink>
+ <div :class="$style.contributors">
+ <a href="https://github.com/syuilo" target="_blank" :class="$style.contributor">
+ <img src="https://avatars.githubusercontent.com/u/4439005?v=4" :class="$style.contributorAvatar">
+ <span :class="$style.contributorUsername">@syuilo</span>
+ </a>
+ <a href="https://github.com/tamaina" target="_blank" :class="$style.contributor">
+ <img src="https://avatars.githubusercontent.com/u/7973572?v=4" :class="$style.contributorAvatar">
+ <span :class="$style.contributorUsername">@tamaina</span>
+ </a>
+ <a href="https://github.com/acid-chicken" target="_blank" :class="$style.contributor">
+ <img src="https://avatars.githubusercontent.com/u/20679825?v=4" :class="$style.contributorAvatar">
+ <span :class="$style.contributorUsername">@acid-chicken</span>
+ </a>
+ <a href="https://github.com/rinsuki" target="_blank" :class="$style.contributor">
+ <img src="https://avatars.githubusercontent.com/u/6533808?v=4" :class="$style.contributorAvatar">
+ <span :class="$style.contributorUsername">@rinsuki</span>
+ </a>
+ <a href="https://github.com/mei23" target="_blank" :class="$style.contributor">
+ <img src="https://avatars.githubusercontent.com/u/30769358?v=4" :class="$style.contributorAvatar">
+ <span :class="$style.contributorUsername">@mei23</span>
+ </a>
+ <a href="https://github.com/robflop" target="_blank" :class="$style.contributor">
+ <img src="https://avatars.githubusercontent.com/u/8159402?v=4" :class="$style.contributorAvatar">
+ <span :class="$style.contributorUsername">@robflop</span>
+ </a>
</div>
<template #caption><MkLink url="https://github.com/misskey-dev/misskey/graphs/contributors">{{ i18n.ts._aboutMisskey.allContributors }}</MkLink></template>
</FormSection>
@@ -295,3 +315,38 @@ definePageMetadata({
}
}
</style>
+
+<style lang="scss" module>
+.contributors {
+ display: grid;
+ grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
+ grid-gap: 12px;
+}
+
+.contributor {
+ display: flex;
+ align-items: center;
+ padding: 12px;
+ background: var(--buttonBg);
+ border-radius: 6px;
+
+ &:hover {
+ text-decoration: none;
+ background: var(--buttonHoverBg);
+ }
+
+ &.active {
+ color: var(--accent);
+ background: var(--buttonHoverBg);
+ }
+}
+
+.contributorAvatar {
+ width: 30px;
+ border-radius: 100%;
+}
+
+.contributorUsername {
+ margin-left: 12px;
+}
+</style>
diff --git a/packages/frontend/src/pages/achievements.vue b/packages/frontend/src/pages/achievements.vue
index 14b8520696..effa2fcaf4 100644
--- a/packages/frontend/src/pages/achievements.vue
+++ b/packages/frontend/src/pages/achievements.vue
@@ -45,7 +45,7 @@ onDeactivated(() => {
definePageMetadata({
title: i18n.ts.achievements,
- icon: 'ti ti-military-award',
+ icon: 'ti ti-medal',
});
</script>
diff --git a/packages/frontend/src/pages/admin/object-storage.vue b/packages/frontend/src/pages/admin/object-storage.vue
index 54d7e09532..6a6af637ed 100644
--- a/packages/frontend/src/pages/admin/object-storage.vue
+++ b/packages/frontend/src/pages/admin/object-storage.vue
@@ -38,7 +38,7 @@
<template #label>Access key</template>
</MkInput>
- <MkInput v-model="objectStorageSecretKey">
+ <MkInput v-model="objectStorageSecretKey" type="password">
<template #prefix><i class="ti ti-key"></i></template>
<template #label>Secret key</template>
</MkInput>
diff --git a/packages/frontend/src/pages/emojis.emoji.vue b/packages/frontend/src/pages/emojis.emoji.vue
index fb3bce570c..0edc290801 100644
--- a/packages/frontend/src/pages/emojis.emoji.vue
+++ b/packages/frontend/src/pages/emojis.emoji.vue
@@ -1,6 +1,6 @@
<template>
<button class="zuvgdzyu _button" @click="menu">
- <img :src="`/emoji/${emoji.name}.webp`" class="img" loading="lazy"/>
+ <img :src="emoji.url" class="img" loading="lazy"/>
<div class="body">
<div class="name _monospace">{{ emoji.name }}</div>
<div class="info">{{ emoji.aliases.join(' ') }}</div>
@@ -15,7 +15,12 @@ import copyToClipboard from '@/scripts/copy-to-clipboard';
import { i18n } from '@/i18n';
const props = defineProps<{
- emoji: Record<string, unknown>; // TODO
+ emoji: {
+ name: string;
+ aliases: string[];
+ category: string;
+ url: string;
+ };
}>();
function menu(ev) {
diff --git a/packages/frontend/src/pages/user/achievements.vue b/packages/frontend/src/pages/user/achievements.vue
index eaea26db4a..615613b7fc 100644
--- a/packages/frontend/src/pages/user/achievements.vue
+++ b/packages/frontend/src/pages/user/achievements.vue
@@ -1,6 +1,6 @@
<template>
<MkSpacer :content-max="1200">
- <MkAchievements :user="user" :with-locked="false"/>
+ <MkAchievements :user="user" :with-locked="false" :with-description="$i != null && (props.user.id === $i.id)"/>
</MkSpacer>
</template>
diff --git a/packages/frontend/src/pages/user/index.vue b/packages/frontend/src/pages/user/index.vue
index d63aa3a3a5..120f67d8a5 100644
--- a/packages/frontend/src/pages/user/index.vue
+++ b/packages/frontend/src/pages/user/index.vue
@@ -81,7 +81,7 @@ const headerTabs = $computed(() => user ? [{
}, ...(user.host == null ? [{
key: 'achievements',
title: i18n.ts.achievements,
- icon: 'ti ti-military-award',
+ icon: 'ti ti-medal',
}] : []), ...($i && ($i.id === user.id)) || user.publicReactions ? [{
key: 'reactions',
title: i18n.ts.reaction,
diff --git a/packages/frontend/src/scripts/aiscript/ui.ts b/packages/frontend/src/scripts/aiscript/ui.ts
index b1895a5f33..fb73c0b4b7 100644
--- a/packages/frontend/src/scripts/aiscript/ui.ts
+++ b/packages/frontend/src/scripts/aiscript/ui.ts
@@ -303,7 +303,7 @@ function getButtonOptions(def: values.Value | undefined, call: (fn: values.VFn,
if (primary) utils.assertBoolean(primary);
const rounded = def.value.get('rounded');
if (rounded) utils.assertBoolean(rounded);
- const disabled = button.value.get('disabled');
+ const disabled = def.value.get('disabled');
if (disabled) utils.assertBoolean(disabled);
return {
diff --git a/packages/frontend/src/style.scss b/packages/frontend/src/style.scss
index 4c6b764357..aa4efe3052 100644
--- a/packages/frontend/src/style.scss
+++ b/packages/frontend/src/style.scss
@@ -127,11 +127,13 @@ hr {
}
.ti {
- vertical-align: -10%;
- line-height: 0.9em;
+ vertical-align: -40%;
+ line-height: 1em;
&:before {
- font-size: 130%;
+ display: inline-block;
+ font-size: 165%;
+ width: 0.74em;
}
}
diff --git a/packages/frontend/vite.config.ts b/packages/frontend/vite.config.ts
index 0bf35ec1b4..89b6dbde25 100644
--- a/packages/frontend/vite.config.ts
+++ b/packages/frontend/vite.config.ts
@@ -54,6 +54,8 @@ export default defineConfig(({ command, mode }) => {
'@/': __dirname + '/src/',
'/client-assets/': __dirname + '/assets/',
'/static-assets/': __dirname + '/../backend/assets/',
+ '/fluent-emojis/': __dirname + '/../../fluent-emojis/dist/',
+ '/fluent-emoji/': __dirname + '/../../fluent-emojis/dist/',
},
},