UNPKG

xdesign-vue-next

Version:

XDesign Component for vue-next

1 lines 27.3 kB
{"version":3,"file":"multiple-flow-list.mjs","sources":["../../../src/upload/themes/multiple-flow-list.tsx"],"sourcesContent":["import { computed, defineComponent, toRefs, PropType, ref } from 'vue';\nimport ImageViewer from '../../image-viewer';\nimport { CommonDisplayFileProps } from '../interface';\nimport { commonProps } from '../constants';\nimport TButton from '../../button';\nimport { UploadFile, TdUploadProps } from '../type';\nimport useDrag, { UploadDragEvents } from '../hooks/useDrag';\nimport {\n abridgeName,\n returnFileSize,\n IMAGE_REGEXP,\n FILE_PDF_REGEXP,\n FILE_EXCEL_REGEXP,\n FILE_WORD_REGEXP,\n FILE_PPT_REGEXP,\n VIDEO_REGEXP,\n} from '../../_common/js/upload/utils';\nimport TLoading from '../../loading';\nimport { useTNodeJSX } from '../../hooks';\nimport Link from '../../link';\nimport { UploadConfig } from '../../config-provider';\nimport Image from '../../image';\n\nexport interface ImageFlowListProps extends CommonDisplayFileProps {\n uploadFiles?: (toFiles?: UploadFile[]) => void;\n cancelUpload?: (context: { e: MouseEvent; file?: UploadFile }) => void;\n dragEvents: UploadDragEvents;\n disabled?: boolean;\n isBatchUpload?: boolean;\n draggable?: boolean;\n onPreview?: TdUploadProps['onPreview'];\n}\n\nexport default defineComponent({\n name: 'UploadMultipleFlowList',\n\n props: {\n ...commonProps,\n showThumbnail: Boolean,\n uploadFiles: Function as PropType<ImageFlowListProps['uploadFiles']>,\n cancelUpload: Function as PropType<ImageFlowListProps['cancelUpload']>,\n dragEvents: Object as PropType<ImageFlowListProps['dragEvents']>,\n disabled: Boolean,\n isBatchUpload: Boolean,\n draggable: Boolean,\n onPreview: Function as PropType<ImageFlowListProps['onPreview']>,\n },\n\n setup(props, { slots }) {\n // locale 已经在 useUpload 中统一处理优先级\n const { uploading, disabled, displayFiles, classPrefix, accept } = toRefs(props);\n const uploadPrefix = computed(() => `${classPrefix.value}-upload`);\n\n const locale = computed(() => props.locale as UploadConfig);\n\n const renderTNodeJSX = useTNodeJSX();\n\n const drag = useDrag(props.dragEvents, accept);\n\n const currentPreviewFile = ref<UploadFile[]>([]);\n const previewIndex = ref(0);\n\n const uploadText = computed(() => {\n if (uploading.value) return `${locale.value.progress.uploadingText}`;\n return locale.value.triggerUploadText.normal;\n });\n\n const innerDragEvents = computed(() => {\n const draggable = props.draggable === undefined ? true : props.draggable;\n return draggable\n ? {\n onDrop: drag.handleDrop,\n onDragenter: drag.handleDragenter,\n onDragover: drag.handleDragover,\n onDragleave: drag.handleDragleave,\n }\n : {};\n });\n\n const getStatusMap = () => {\n const iconMap = {\n success: <icon-ri-checkbox-circle-fill />,\n fail: <icon-ri-error-warning-fill />,\n progress: <TLoading />,\n waiting: <icon-ri-time-fill />,\n };\n const { progress } = locale.value;\n const textMap = {\n success: progress?.successText,\n fail: progress?.failText,\n progress: progress?.uploadingText,\n waiting: progress?.waitingText,\n };\n return {\n iconMap,\n textMap,\n };\n };\n\n const renderEmpty = () => (\n <div class={`${uploadPrefix.value}__flow-empty`}>\n {drag.dragActive.value ? locale.value.dragger.dragDropText : locale.value.dragger.clickAndDragText}\n </div>\n );\n\n const renderImgItem = (file: UploadFile, index: number) => {\n const { iconMap, textMap } = getStatusMap();\n const fileName = props.abridgeName && file.name ? abridgeName(file.name, ...props.abridgeName) : file.name;\n return (\n <li class={`${uploadPrefix.value}__card-item`} key={file.name + index + file.percent + file.status || '0'}>\n <div\n class={[\n `${uploadPrefix.value}__card-content`,\n { [`${classPrefix.value}-is-bordered`]: file.status !== 'waiting' },\n ]}\n >\n {['fail', 'progress'].includes(file.status) && (\n <div\n class={`${uploadPrefix.value}__card-status-wrap ${uploadPrefix.value}__${props.theme}-${file.status}`}\n >\n {iconMap[file.status as 'fail' | 'progress']}\n <p>\n {textMap[file.status as 'fail' | 'progress']}\n {props.showUploadProgress && file.status === 'progress' ? ` ${file.percent}%` : ''}\n </p>\n </div>\n )}\n {(['waiting', 'success'].includes(file.status) || (!file.status && file.url)) && (\n <Image class={`${uploadPrefix.value}__card-image`} src={file.url || file.raw} error=\"\" loading=\"\" />\n )}\n <div class={`${uploadPrefix.value}__card-mask`}>\n {file.url && (\n <span class={`${uploadPrefix.value}__card-mask-item`}>\n <icon-ri-eye-line\n onClick={({ e }: { e: MouseEvent }) => {\n previewIndex.value = index;\n currentPreviewFile.value = displayFiles.value;\n props.onPreview?.({ file, index, e });\n }}\n />\n <span class={`${uploadPrefix.value}__card-mask-item-divider`}></span>\n </span>\n )}\n {!disabled.value && (\n <span\n class={`${uploadPrefix.value}__card-mask-item ${uploadPrefix.value}__delete`}\n onClick={(e: MouseEvent) => props.onRemove({ e, index, file })}\n >\n <icon-ri-delete-bin-2-line />\n </span>\n )}\n </div>\n </div>\n <p class={`${uploadPrefix.value}__card-name`}>{fileName}</p>\n </li>\n );\n };\n\n const renderStatus = (file: UploadFile) => {\n const { iconMap, textMap } = getStatusMap();\n return (\n <div class={`${uploadPrefix.value}__flow-status`}>\n {iconMap[file.status]}\n <span class={`${uploadPrefix.value}__${props.theme}-${file.status}`}>\n {textMap[file.status]}\n {props.showUploadProgress && file.status === 'progress' ? ` ${file.percent || 0}%` : ''}\n </span>\n </div>\n );\n };\n\n const renderNormalActionCol = (file: UploadFile, index: number) => (\n <td>\n <TButton\n theme=\"primary\"\n variant=\"text\"\n content={locale.value?.triggerUploadText?.delete}\n class={`${uploadPrefix.value}__delete`}\n onClick={(e: MouseEvent) => props.onRemove({ e, index, file })}\n ></TButton>\n </td>\n );\n\n // batchUpload action col\n const renderBatchActionCol = (index: number) =>\n // 第一行数据才需要合并单元格\n index === 0 ? (\n <td rowSpan={displayFiles.value.length} class={`${uploadPrefix.value}__flow-table__batch-row`}>\n <TButton\n theme=\"primary\"\n variant=\"text\"\n content={locale.value?.triggerUploadText?.delete}\n class={`${uploadPrefix.value}__delete`}\n onClick={(e: MouseEvent) => props.onRemove({ e, index: -1, file: undefined })}\n ></TButton>\n </td>\n ) : null;\n\n const getFileThumbnailIcon = (fileType: string) => {\n if (FILE_PDF_REGEXP.test(fileType)) {\n return <icon-ri-file-pdf-2-line />;\n }\n if (FILE_EXCEL_REGEXP.test(fileType)) {\n return <icon-ri-file-excel-line />;\n }\n if (FILE_WORD_REGEXP.test(fileType)) {\n return <icon-ri-file-word-line />;\n }\n if (FILE_PPT_REGEXP.test(fileType)) {\n return <icon-ri-file-ppt-line />;\n }\n if (VIDEO_REGEXP.test(fileType)) {\n return <icon-ri-video-line />;\n }\n return <icon-ri-file-line />;\n };\n\n const renderFileThumbnail = (file: UploadFile) => {\n if (!file || (!file.raw && file.url)) return null;\n const fileType = file.raw.type;\n const className = `${uploadPrefix.value}__file-thumbnail`;\n if (IMAGE_REGEXP.test(fileType)) {\n return (\n <Image\n class={className}\n src={file.url || file.raw}\n fit=\"scale-down\"\n error=\"\"\n loading=\"\"\n onClick={(e: MouseEvent) => {\n e.preventDefault();\n currentPreviewFile.value = [file];\n previewIndex.value = 0;\n props.onPreview?.({ file, index: 0, e });\n }}\n />\n );\n }\n return <div class={className}>{getFileThumbnailIcon(fileType)}</div>;\n };\n\n const renderFileList = () => {\n const customList = renderTNodeJSX('fileListDisplay', {\n params: {\n files: props.displayFiles,\n dragEvents: innerDragEvents.value,\n },\n });\n if (customList || props.fileListDisplay) return customList;\n return (\n <table class={`${uploadPrefix.value}__flow-table`} {...innerDragEvents.value}>\n <thead>\n <tr>\n <th>{locale.value.file?.fileNameText}</th>\n <th style={{ minWidth: '120px' }}>{locale.value.file?.fileSizeText}</th>\n <th style={{ minWidth: '120px' }}>{locale.value.file?.fileStatusText}</th>\n {disabled.value ? null : <th>{locale.value.file?.fileOperationText}</th>}\n </tr>\n </thead>\n <tbody>\n {!displayFiles.value.length && (\n <tr>\n <td colSpan={4}>{renderEmpty()}</td>\n </tr>\n )}\n {displayFiles.value.map((file, index) => {\n // 合并操作出现条件为:当前为合并上传模式且列表内没有待上传文件\n const showBatchUploadAction = props.isBatchUpload;\n const deleteNode =\n showBatchUploadAction && displayFiles.value.every((item) => item.status === 'success' || !item.status)\n ? renderBatchActionCol(index)\n : renderNormalActionCol(file, index);\n const fileName = props.abridgeName?.length ? abridgeName(file.name, ...props.abridgeName) : file.name;\n const thumbnailNode = props.showThumbnail ? (\n <div class={`${uploadPrefix.value}__file-info`}>\n {renderFileThumbnail(file)}\n {fileName}\n </div>\n ) : (\n fileName\n );\n const fileNameNode = file.url ? (\n <Link href={file.url} target=\"_blank\" hover=\"color\">\n {thumbnailNode}\n </Link>\n ) : (\n thumbnailNode\n );\n return (\n <tr key={file.name + index + file.size}>\n <td class={`${uploadPrefix.value}__file-name`} key={file.name + file.url}>\n {fileNameNode}\n </td>\n <td>{returnFileSize(file.size)}</td>\n <td>{renderStatus(file)}</td>\n {disabled.value ? null : deleteNode}\n </tr>\n );\n })}\n </tbody>\n </table>\n );\n };\n\n const renderImageList = () => {\n const customList = renderTNodeJSX('fileListDisplay', {\n params: {\n files: props.displayFiles,\n dragEvents: innerDragEvents.value,\n },\n });\n if (customList || props.fileListDisplay) return customList;\n return (\n <ul class={`${uploadPrefix.value}__card clearfix`}>\n {props.displayFiles.map((file, index) => renderImgItem(file, index))}\n </ul>\n );\n };\n\n return () => {\n const cardClassName = `${uploadPrefix.value}__flow-card-area`;\n return (\n <div class={`${uploadPrefix.value}__flow ${uploadPrefix.value}__flow-${props.theme}`}>\n <div class={`${uploadPrefix.value}__flow-op`}>\n {slots.default?.()}\n {props.placeholder && (\n <small class={`${uploadPrefix.value}__flow-placeholder ${uploadPrefix.value}__placeholder`}>\n {props.placeholder}\n </small>\n )}\n </div>\n\n {props.theme === 'image-flow' && (\n <div class={cardClassName} {...innerDragEvents.value}>\n {displayFiles.value.length ? renderImageList() : renderEmpty()}\n </div>\n )}\n\n {props.theme === 'file-flow' &&\n (displayFiles.value.length ? (\n renderFileList()\n ) : (\n <div class={cardClassName} {...innerDragEvents.value}>\n {renderEmpty()}\n </div>\n ))}\n\n {!props.autoUpload && (\n <div class={`${uploadPrefix.value}__flow-bottom`}>\n <TButton\n theme=\"default\"\n disabled={disabled.value || !uploading.value}\n content={locale.value?.cancelUploadText}\n class={`${uploadPrefix.value}__cancel`}\n onClick={(e) => props.cancelUpload?.({ e })}\n ></TButton>\n <TButton\n disabled={disabled.value || uploading.value || !displayFiles.value.length}\n theme=\"primary\"\n loading={uploading.value}\n class={`${uploadPrefix.value}__continue`}\n content={uploadText.value}\n onClick={() => props.uploadFiles?.()}\n ></TButton>\n </div>\n )}\n\n <ImageViewer\n images={currentPreviewFile.value.map((t) => t.url || t.raw)}\n visible={!!currentPreviewFile.value.length}\n onClose={() => {\n currentPreviewFile.value = [];\n }}\n index={previewIndex.value}\n onIndexChange={(val) => (previewIndex.value = val)}\n ></ImageViewer>\n </div>\n );\n };\n },\n});\n"],"names":["_isVNode","name","props","showThumbnail","uploadFiles","cancelUpload","dragEvents","disabled","isBatchUpload","draggable","onPreview","setup","success","_resolveComponent","fail","progress","waiting","iconMap","textMap","_createVNode","currentPreviewFile","file","index","e","TButton","params","minWidth","_mergeProps"],"mappings":"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"}