From 7d61de70e35086286478d96a9b9795477fc1f78f Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 28 Oct 2026 15:58:01 +0800 Subject: [PATCH] fix(admin): keep image previews at natural aspect ratio Media/gallery previews no longer stretch or crop: use object-fit contain, natural sizing for single media, and the uncropped medium size instead of the square thumbnail for gallery and native meta-box previews. Co-Authored-By: Claude Fable 5 --- .../admin/src/components/form/AksGalleryField.vue | 11 ++++++++--- assets/admin/src/components/form/AksMediaField.vue | 13 +++++++++++-- assets/css/admin/pay-meta-box.css | 3 ++- assets/css/admin/post-extension.css | 3 ++- assets/js/admin-pay-meta-box.js | 2 +- assets/js/admin-post-extension.js | 2 +- 6 files changed, 25 insertions(+), 9 deletions(-) diff --git a/assets/admin/src/components/form/AksGalleryField.vue b/assets/admin/src/components/form/AksGalleryField.vue index 3b6cc7c6..63272619 100644 --- a/assets/admin/src/components/form/AksGalleryField.vue +++ b/assets/admin/src/components/form/AksGalleryField.vue @@ -124,7 +124,7 @@ async function hydratePreviews() { const sizes = attachment.get('sizes') || {} return [attachmentId, { - url: sizes.thumbnail?.url || sizes.medium?.url || attachment.get('url') || '', + url: sizes.medium?.url || attachment.get('url') || '', alt: attachment.get('alt') || attachment.get('title') || '', }] })) @@ -185,14 +185,19 @@ watch(attachmentIds, hydratePreviews, { immediate: true }) background: var(--aksrt-color-canvas); } -.aksrt-gallery-field__image, +.aksrt-gallery-field__image { + display: block; + width: 100%; + aspect-ratio: 4 / 3; + object-fit: contain; +} + .aksrt-gallery-field__placeholder { display: flex; width: 100%; aspect-ratio: 4 / 3; align-items: center; justify-content: center; - object-fit: cover; } .aksrt-gallery-field__placeholder { diff --git a/assets/admin/src/components/form/AksMediaField.vue b/assets/admin/src/components/form/AksMediaField.vue index d56b4959..673f44d6 100644 --- a/assets/admin/src/components/form/AksMediaField.vue +++ b/assets/admin/src/components/form/AksMediaField.vue @@ -97,20 +97,29 @@ function clearMedia() {