mirror of
https://gitee.com/vant-contrib/vant.git
synced 2025-04-06 03:57:59 +08:00
refactor(Sku): header image (#6614)
This commit is contained in:
parent
01e9cde2b8
commit
c93319a4c0
@ -74,6 +74,22 @@ export default createComponent({
|
|||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true,
|
default: true,
|
||||||
},
|
},
|
||||||
|
customStepperConfig: {
|
||||||
|
type: Object,
|
||||||
|
default: () => ({}),
|
||||||
|
},
|
||||||
|
showHeaderImage: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
previewOnClickImage: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
|
safeAreaInsetBottom: {
|
||||||
|
type: Boolean,
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
bodyOffsetTop: {
|
bodyOffsetTop: {
|
||||||
type: Number,
|
type: Number,
|
||||||
default: 200,
|
default: 200,
|
||||||
@ -87,22 +103,6 @@ export default createComponent({
|
|||||||
uploadMaxSize: 5,
|
uploadMaxSize: 5,
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
customStepperConfig: {
|
|
||||||
type: Object,
|
|
||||||
default: () => ({}),
|
|
||||||
},
|
|
||||||
previewOnClickImage: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
safeAreaInsetBottom: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
showHeaderImage: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
|
|
||||||
data() {
|
data() {
|
||||||
|
@ -3,6 +3,9 @@ import { createNamespace } from '../../utils';
|
|||||||
import { inherit } from '../../utils/functional';
|
import { inherit } from '../../utils/functional';
|
||||||
import { BORDER_BOTTOM } from '../../utils/constant';
|
import { BORDER_BOTTOM } from '../../utils/constant';
|
||||||
|
|
||||||
|
// Components
|
||||||
|
import Image from '../../image';
|
||||||
|
|
||||||
// Types
|
// Types
|
||||||
import Vue, { CreateElement, RenderContext } from 'vue/types';
|
import Vue, { CreateElement, RenderContext } from 'vue/types';
|
||||||
import { DefaultSlots, ScopedSlot } from '../../utils/types';
|
import { DefaultSlots, ScopedSlot } from '../../utils/types';
|
||||||
@ -58,19 +61,23 @@ function SkuHeader(
|
|||||||
showHeaderImage = true,
|
showHeaderImage = true,
|
||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
const goodsImg = getSkuImg(sku, selectedSku) || goods.picture;
|
const imgUrl = getSkuImg(sku, selectedSku) || goods.picture;
|
||||||
|
|
||||||
const previewImage = () => {
|
const previewImage = () => {
|
||||||
skuEventBus.$emit('sku:previewImage', goodsImg);
|
skuEventBus.$emit('sku:previewImage', imgUrl);
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div class={[bem(), BORDER_BOTTOM]} {...inherit(ctx)}>
|
<div class={[bem(), BORDER_BOTTOM]} {...inherit(ctx)}>
|
||||||
{showHeaderImage && (
|
{showHeaderImage && (
|
||||||
<div class={bem('img-wrap')} onClick={previewImage}>
|
<Image
|
||||||
<img src={goodsImg} />
|
fit="cover"
|
||||||
|
src={imgUrl}
|
||||||
|
class={bem('img-wrap')}
|
||||||
|
onClick={previewImage}
|
||||||
|
>
|
||||||
{slots['sku-header-image-extra']?.()}
|
{slots['sku-header-image-extra']?.()}
|
||||||
</div>
|
</Image>
|
||||||
)}
|
)}
|
||||||
<div class={bem('goods-info')}>{slots.default?.()}</div>
|
<div class={bem('goods-info')}>{slots.default?.()}</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -29,24 +29,12 @@
|
|||||||
margin: 0 @padding-md;
|
margin: 0 @padding-md;
|
||||||
|
|
||||||
&__img-wrap {
|
&__img-wrap {
|
||||||
position: relative;
|
|
||||||
width: 96px;
|
width: 96px;
|
||||||
height: 96px;
|
height: 96px;
|
||||||
margin: @padding-sm @padding-sm @padding-sm 0;
|
margin: @padding-sm @padding-sm @padding-sm 0;
|
||||||
background: @background-color;
|
overflow: hidden;
|
||||||
|
|
||||||
img {
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
bottom: 0;
|
|
||||||
left: 0;
|
|
||||||
max-width: 100%;
|
|
||||||
max-height: 100%;
|
|
||||||
margin: auto;
|
|
||||||
border-radius: @border-radius-md;
|
border-radius: @border-radius-md;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
&__goods-info {
|
&__goods-info {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user