From 10f8e04c7085283700878829dcb3e5d872285bac Mon Sep 17 00:00:00 2001 From: Esurio/1673beta <60435625+1673beta@users.noreply.github.com> Date: Wed, 14 Aug 2024 17:18:12 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20Alt=E5=91=A8=E3=82=8A=E3=81=AE=E5=BC=B7?= =?UTF-8?q?=E5=8C=96=20(#142)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * enhance: apngの場合apngと表示するように * 画像のタイトルには必ずファイル名を使用するように * ファイル名とALTを同時に表示するように * ALTがない時にはALTのブロックを非表示に * 隠すボタンのスタイル調整 * altが存在するときに投稿フォームでインジケータを表示するように * Altが設定されてない場合警告を出すように * add locale * update changelog * fix: 画像のクロップ時にモバイルUIでは画像の全体が表示されない問題 * update changelog --------- Co-authored-by: Esurio --- CHANGELOG_engawa.md | 7 +++ locales/en-US.yml | 5 ++ locales/index.d.ts | 14 +++++ locales/ja-JP.yml | 5 ++ .../src/components/MkCropperDialog.vue | 3 ++ .../src/components/MkDriveFileThumbnail.vue | 11 ++-- .../src/components/MkImgWithBlurhash.vue | 20 +++++++ .../frontend/src/components/MkMediaImage.vue | 9 ++-- .../frontend/src/components/MkMediaList.vue | 53 ++++++++++++++++++- .../frontend/src/components/MkPostForm.vue | 13 ++++- .../src/components/MkPostFormAttaches.vue | 2 +- .../frontend/src/pages/settings/general.vue | 2 + packages/frontend/src/store.ts | 4 ++ 13 files changed, 136 insertions(+), 12 deletions(-) diff --git a/CHANGELOG_engawa.md b/CHANGELOG_engawa.md index 198ac15954..77c24011e8 100644 --- a/CHANGELOG_engawa.md +++ b/CHANGELOG_engawa.md @@ -27,6 +27,13 @@ ### Client - 検索ウィジェットにオートフォーカスが当たらなくなりました +- 画像がAPNGの場合GIFではなくAPNGと表示するように +- 隠すボタンのスタイル調整 +- ファイル名とALTを同時に表示するように +- ALTテキストが存在する場合投稿フォームのファイルにインジケータを表示するように +- ALTテキストがない場合警告を出すオプションを追加 +- 画像のタイトルには必ずファイル名を使用するように +- fix: クロッパーで画像の全体が表示されないことがある問題 ### Server - 検索機能に新しいパラメータを追加( [1673beta/cherrypick#94](https://github.com/1673beta/cherrypick/issues/94) ) diff --git a/locales/en-US.yml b/locales/en-US.yml index 7cbc2611dd..e019b6ee02 100644 --- a/locales/en-US.yml +++ b/locales/en-US.yml @@ -3024,3 +3024,8 @@ _dice: _isIndexable: title: "Indexable" description: "This is kmyblue compatible feature. If you want to prevent your account from being indexed by search engines, please disable this option." + +_altWarning: + noAltWarning: "ファイルに代替テキストが設定されていません。" + showNoAltWarning: "画像に代替テキストが設定されていない場合に警告を表示する" + postAnyWay: "投稿フォームへ" diff --git a/locales/index.d.ts b/locales/index.d.ts index 245caa0406..90a3be076b 100644 --- a/locales/index.d.ts +++ b/locales/index.d.ts @@ -11797,6 +11797,20 @@ export interface Locale extends ILocale { */ "description": string; }; + "_altWarning": { + /** + * ファイルに代替テキストが設定されていません。 + */ + "noAltWarning": string; + /** + * 画像に代替テキストが設定されていない場合に警告を表示する + */ + "showNoAltWarning": string; + /** + * 投稿フォームへ + */ + "postAnyWay": string; + }; } declare const locales: { [lang: string]: Locale; diff --git a/locales/ja-JP.yml b/locales/ja-JP.yml index fe86a0188f..6389c4affd 100644 --- a/locales/ja-JP.yml +++ b/locales/ja-JP.yml @@ -3149,3 +3149,8 @@ _dice: _isIndexable: title: "公開ノートをインデックス化" description: "kmy互換機能。公開ノートをインデックス化するかどうかを設定します。" + +_altWarning: + noAltWarning: "ファイルに代替テキストが設定されていません。" + showNoAltWarning: "画像に代替テキストが設定されていない場合に警告を表示する" + postAnyWay: "投稿フォームへ" diff --git a/packages/frontend/src/components/MkCropperDialog.vue b/packages/frontend/src/components/MkCropperDialog.vue index 46e6003623..fcc7a5842f 100644 --- a/packages/frontend/src/components/MkCropperDialog.vue +++ b/packages/frontend/src/components/MkCropperDialog.vue @@ -113,6 +113,7 @@ const onImageLoad = () => { loading.value = false; if (cropper) { + cropper.getCropperCanvas(); cropper.getCropperImage()!.$center('contain'); cropper.getCropperSelection()!.$center(); } @@ -159,6 +160,7 @@ onMounted(() => { width: var(--vw); height: var(--vh); position: relative; + object-fit: contain; > .loading { position: absolute; @@ -183,6 +185,7 @@ onMounted(() => { > ::v-deep(cropper-canvas) { width: 100%; height: 100%; + object-fit: contain; > cropper-selection > cropper-handle[action="move"] { background: transparent; diff --git a/packages/frontend/src/components/MkDriveFileThumbnail.vue b/packages/frontend/src/components/MkDriveFileThumbnail.vue index 082de10d3c..a2073e8995 100644 --- a/packages/frontend/src/components/MkDriveFileThumbnail.vue +++ b/packages/frontend/src/components/MkDriveFileThumbnail.vue @@ -5,7 +5,7 @@ SPDX-License-Identifier: AGPL-3.0-only @@ -82,6 +83,7 @@ const props = withDefaults(defineProps<{ forceBlurhash?: boolean; onlyAvgColor?: boolean; // 軽量化のためにBlurhashを使わずに平均色だけを描画 noDrag?: boolean; + showAltIndicator?: boolean; }>(), { transition: null, src: null, @@ -93,6 +95,7 @@ const props = withDefaults(defineProps<{ forceBlurhash: false, onlyAvgColor: false, noDrag: false, + showAltIndicator: false, }); const viewId = uuid(); @@ -269,4 +272,21 @@ onUnmounted(() => { -webkit-user-drag: none; } } + +.altIndicator { + display: flex; + gap: 4px; + position: absolute; + border-radius: 8px; + overflow: hidden; + top: 0; + right: 0; + background-color: var(--bg); + -webkit-backdrop-filter: var(--blur, blur(15px)); + backdrop-filter: var(--blur, blur(15px)); + color: var(--accent); + font-size: 1em; + padding: 6px 8px; + text-align: center; +} diff --git a/packages/frontend/src/components/MkMediaImage.vue b/packages/frontend/src/components/MkMediaImage.vue index 9ddce88ccd..0cc72025f3 100644 --- a/packages/frontend/src/components/MkMediaImage.vue +++ b/packages/frontend/src/components/MkMediaImage.vue @@ -23,7 +23,7 @@ SPDX-License-Identifier: AGPL-3.0-only :forceBlurhash="hide" :cover="hide || cover" :alt="image.comment || image.name" - :title="image.comment || image.name" + :title="image.name" :width="image.properties.width" :height="image.properties.height" :style="hide ? 'filter: brightness(0.7);' : null" @@ -44,7 +44,8 @@ SPDX-License-Identifier: AGPL-3.0-only