diff --git a/assets/admin/src/components/form/AksField.vue b/assets/admin/src/components/form/AksField.vue index b6827d0f..2e2a371a 100644 --- a/assets/admin/src/components/form/AksField.vue +++ b/assets/admin/src/components/form/AksField.vue @@ -329,6 +329,7 @@ :model-value="modelValue" :options="normalizedOptions" :disabled="schema.disabled" + :preview-width="schema.previewWidth" @update:model-value="emit('update:modelValue', $event)" /> diff --git a/assets/admin/src/components/form/AksImageSelectField.vue b/assets/admin/src/components/form/AksImageSelectField.vue index e7d8fae0..03c53a33 100644 --- a/assets/admin/src/components/form/AksImageSelectField.vue +++ b/assets/admin/src/components/form/AksImageSelectField.vue @@ -11,8 +11,8 @@ :disabled="disabled" @click="emit('update:modelValue', opt.value)" > - - + + {{ opt.label }} @@ -24,12 +24,21 @@ /** image_select:带预览图的单选。 */ import FaIcon from './FaIcon.vue' -defineProps({ +const props = defineProps({ modelValue: { default: null }, options: { type: Array, default: () => [] }, disabled: { type: Boolean, default: false }, + // Preview width in px. Layout strips (header/footer) are very wide and only + // need enough width to be legible; near-square previews want more room. + previewWidth: { type: [Number, String], default: 140 }, }) const emit = defineEmits(['update:modelValue']) + +// An option may override the group width via its own `width`. +function imgStyle(opt) { + const width = opt && opt.width ? opt.width : props.previewWidth + return { '--aksrt-image-select-max': typeof width === 'number' ? `${width}px` : width } +}