{"version":3,"file":"upload-list.vue.mjs","sources":["../../../../../packages/components/upload/src/upload-list.vue"],"sourcesContent":["<template>\n  <transition-group\n    tag=\"ul\"\n    :class=\"[nsUpload.b('list'), nsUpload.bm('list', listType), nsUpload.is('disabled', disabled)]\"\n    :name=\"nsList.b()\"\n  >\n    <li\n      v-for=\"file in files\"\n      :key=\"file.uid || file\"\n      :class=\"[nsUpload.be('list', 'item'), nsUpload.is(file.status), { focusing }]\"\n      tabindex=\"0\"\n      @keydown.delete=\"!disabled && handleRemove(file)\"\n      @focus=\"focusing = true\"\n      @blur=\"focusing = false\"\n      @click=\"onFileClicked\"\n    >\n      <slot :file=\"file\">\n        <img\n          v-if=\"file.status !== 'uploading' && ['picture-card', 'picture'].includes(listType)\"\n          :class=\"nsUpload.be('list', 'item-thumbnail')\"\n          :src=\"file.url\"\n          alt=\"\"\n        />\n        <a :class=\"nsUpload.be('list', 'item-name')\" @click=\"handleClick(file)\">\n          <el-icon :class=\"nsIcon.m('document')\"><document /></el-icon>\n          {{ file.name }}\n        </a>\n        <label :class=\"nsUpload.be('list', 'item-status-label')\">\n          <el-icon\n            v-if=\"listType === 'text'\"\n            :class=\"[nsIcon.m('upload-success'), nsIcon.m('circle-check')]\"\n          >\n            <circle-check />\n          </el-icon>\n          <el-icon\n            v-else-if=\"['picture-card', 'picture'].includes(listType)\"\n            :class=\"[nsIcon.m('upload-success'), nsIcon.m('check')]\"\n          >\n            <check />\n          </el-icon>\n        </label>\n        <el-icon v-if=\"!disabled\" :class=\"nsIcon.m('close')\" @click=\"handleRemove(file)\">\n          <close />\n        </el-icon>\n        <!-- Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn-->\n        <!-- This is a bug which needs to be fixed -->\n        <!-- TODO: Fix the incorrect navigation interaction -->\n        <i v-if=\"!disabled\" :class=\"nsIcon.m('close-tip')\">按 delete 键可删除</i>\n        <el-progress\n          v-if=\"file.status === 'uploading'\"\n          :type=\"listType === 'picture-card' ? 'circle' : 'line'\"\n          :stroke-width=\"listType === 'picture-card' ? 6 : 2\"\n          :percentage=\"+file.percentage\"\n          style=\"margin-top: 0.5rem\"\n        />\n        <span v-if=\"listType === 'picture-card'\" :class=\"nsUpload.be('list', 'item-actions')\">\n          <span :class=\"nsUpload.be('list', 'item-preview')\" @click=\"handlePreview(file)\">\n            <el-icon :class=\"nsIcon.m('zoom-in')\"><zoom-in /></el-icon>\n          </span>\n          <span\n            v-if=\"!disabled\"\n            :class=\"nsUpload.be('list', 'item-delete')\"\n            @click=\"handleRemove(file)\"\n          >\n            <el-icon :class=\"nsIcon.m('delete')\"><delete /></el-icon>\n          </span>\n        </span>\n      </slot>\n    </li>\n  </transition-group>\n</template>\n<script lang=\"ts\">\nimport { defineComponent, ref } from 'vue'\nimport { NOOP } from '@vue/shared'\nimport { ElIcon } from '@element-ultra/components/icon'\nimport { Document, Delete, Close, ZoomIn, Check, CircleCheck } from 'icon-ultra'\nimport { useNamespace } from '@element-ultra/hooks'\nimport ElProgress from '@element-ultra/components/progress'\n\nimport type { PropType } from 'vue'\nimport type { UploadFile } from './upload.type'\n\nexport default defineComponent({\n  name: 'ElUploadList',\n  components: {\n    ElProgress,\n    ElIcon,\n    Document,\n    Delete,\n    Close,\n    ZoomIn,\n    Check,\n    CircleCheck\n  },\n  props: {\n    files: {\n      type: Array as PropType<UploadFile[]>,\n      default: () => [] as File[]\n    },\n    disabled: {\n      type: Boolean,\n      default: false\n    },\n    handlePreview: {\n      type: Function as PropType<(file: UploadFile) => void>,\n      default: () => NOOP\n    },\n    listType: {\n      type: String as PropType<'picture' | 'picture-card' | 'text'>,\n      default: 'text'\n    }\n  },\n  emits: ['remove'],\n  setup(props, { emit }) {\n    const nsUpload = useNamespace('upload')\n    const nsIcon = useNamespace('icon')\n    const nsList = useNamespace('list')\n\n    const handleClick = (file: UploadFile) => {\n      props.handlePreview(file)\n    }\n\n    const onFileClicked = (e: Event) => {\n      ;(e.target as HTMLElement).focus()\n    }\n\n    const handleRemove = (file: UploadFile) => {\n      emit('remove', file)\n    }\n    return {\n      focusing: ref(false),\n      handleClick,\n      handleRemove,\n      onFileClicked,\n      nsUpload,\n      nsIcon,\n      nsList\n    }\n  }\n})\n</script>\n"],"names":["_resolveComponent","_openBlock","_createBlock","_TransitionGroup","_normalizeClass","_createElementBlock","_Fragment","_renderList","_withKeys","_createCommentVNode","_createElementVNode","_createTextVNode","_toDisplayString"],"mappings":"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"}