Skip to content

Commit 127d60d

Browse files
feat: 添加默认的trigger代码
1 parent 542d69e commit 127d60d

File tree

3 files changed

+32
-5
lines changed

3 files changed

+32
-5
lines changed

packages/components/image-viewer/image-viewer.tsx

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ChevronDownIcon, ChevronLeftIcon, CloseIcon } from 'tdesign-icons-vue-next';
1+
import { BrowseIcon, ChevronDownIcon, ChevronLeftIcon, CloseIcon } from 'tdesign-icons-vue-next';
22
import { Teleport, Transition, computed, defineComponent, nextTick, ref, toRefs, watch } from 'vue';
33

44
import {
@@ -226,11 +226,38 @@ export default defineComponent({
226226
);
227227
};
228228

229+
// 渲染默认trigger
230+
// 原本需要手动配置 需要添加完template插槽之后设置DOM元素,现在添加默认DOM
231+
const renderDefaultTrigger = () => {
232+
if (props.trigger) {
233+
return renderTNodeJSX('trigger', { params: { open: openHandler } });
234+
}
235+
236+
// 如果没有提供trigger,则渲染默认的图片预览按钮
237+
const firstImage = images.value[0];
238+
if (!firstImage) return null;
239+
240+
const imageSrc =
241+
typeof firstImage === 'string' ? firstImage : (firstImage as any).mainImage || (firstImage as any).thumbnail;
242+
243+
return (
244+
<div class={`${COMPONENT_NAME.value}__trigger`}>
245+
<img src={imageSrc} alt="preview" class={`${COMPONENT_NAME.value}__trigger--img`} />
246+
<div class={`${COMPONENT_NAME.value}__trigger--hover`} onClick={openHandler}>
247+
<span>
248+
<BrowseIcon size="1.4em" class={`${COMPONENT_NAME.value}__trigger--icon`} />
249+
预览
250+
</span>
251+
</div>
252+
</div>
253+
);
254+
};
255+
229256
return () => {
230257
if (props.mode === 'modeless') {
231258
return (
232259
<>
233-
{renderTNodeJSX('trigger', { params: { open: openHandler } })}
260+
{renderDefaultTrigger()}
234261
<TImageViewerModal
235262
zIndex={zIndexValue.value}
236263
visible={visibleValue.value}
@@ -258,7 +285,7 @@ export default defineComponent({
258285

259286
return (
260287
<>
261-
{renderTNodeJSX('trigger', { params: { open: openHandler } })}
288+
{renderDefaultTrigger()}
262289
<Teleport disabled={!props.attach || !teleportElement.value} to={teleportElement.value}>
263290
<Transition>
264291
{(visibleValue.value || !animationEnd.value) && (

packages/components/image-viewer/props.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ export default {
5454
/** 图片数组。`mainImage` 表示主图,必传;`thumbnail` 表示缩略图,如果不存在,则使用主图显示;`download` 是否允许下载图片,默认允许下载。示例: `['img_url_1', 'img_url_2']`,`[{ thumbnail: 'small_image_url', mainImage: 'big_image_url', download: false }]` */
5555
images: {
5656
type: Array as PropType<TdImageViewerProps['images']>,
57-
default: (): TdImageViewerProps['images'] => [],
57+
default: (): TdImageViewerProps['images'] => ['https://tdesign.gtimg.com/demo/demo-image-1.png'],
5858
},
5959
/** 当前预览图片所在的下标 */
6060
index: {

0 commit comments

Comments
 (0)