upload-list2.js 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. 'use strict';
  2. Object.defineProperty(exports, '__esModule', { value: true });
  3. var vue = require('vue');
  4. var index$2 = require('../../icon/index.js');
  5. var iconsVue = require('@element-plus/icons-vue');
  6. var index$3 = require('../../progress/index.js');
  7. var uploadList = require('./upload-list.js');
  8. var pluginVue_exportHelper = require('../../../_virtual/plugin-vue_export-helper.js');
  9. var index = require('../../../hooks/use-locale/index.js');
  10. var index$1 = require('../../../hooks/use-namespace/index.js');
  11. var useFormCommonProps = require('../../form/src/hooks/use-form-common-props.js');
  12. const __default__ = vue.defineComponent({
  13. name: "ElUploadList"
  14. });
  15. const _sfc_main = /* @__PURE__ */ vue.defineComponent({
  16. ...__default__,
  17. props: uploadList.uploadListProps,
  18. emits: uploadList.uploadListEmits,
  19. setup(__props, { emit }) {
  20. const props = __props;
  21. const { t } = index.useLocale();
  22. const nsUpload = index$1.useNamespace("upload");
  23. const nsIcon = index$1.useNamespace("icon");
  24. const nsList = index$1.useNamespace("list");
  25. const disabled = useFormCommonProps.useFormDisabled();
  26. const focusing = vue.ref(false);
  27. const containerKls = vue.computed(() => [
  28. nsUpload.b("list"),
  29. nsUpload.bm("list", props.listType),
  30. nsUpload.is("disabled", props.disabled)
  31. ]);
  32. const handleRemove = (file) => {
  33. emit("remove", file);
  34. };
  35. return (_ctx, _cache) => {
  36. return vue.openBlock(), vue.createBlock(vue.TransitionGroup, {
  37. tag: "ul",
  38. class: vue.normalizeClass(vue.unref(containerKls)),
  39. name: vue.unref(nsList).b()
  40. }, {
  41. default: vue.withCtx(() => [
  42. (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(_ctx.files, (file, index) => {
  43. return vue.openBlock(), vue.createElementBlock("li", {
  44. key: file.uid || file.name,
  45. class: vue.normalizeClass([
  46. vue.unref(nsUpload).be("list", "item"),
  47. vue.unref(nsUpload).is(file.status),
  48. { focusing: focusing.value }
  49. ]),
  50. tabindex: "0",
  51. onKeydown: vue.withKeys(($event) => !vue.unref(disabled) && handleRemove(file), ["delete"]),
  52. onFocus: ($event) => focusing.value = true,
  53. onBlur: ($event) => focusing.value = false,
  54. onClick: ($event) => focusing.value = false
  55. }, [
  56. vue.renderSlot(_ctx.$slots, "default", {
  57. file,
  58. index
  59. }, () => [
  60. _ctx.listType === "picture" || file.status !== "uploading" && _ctx.listType === "picture-card" ? (vue.openBlock(), vue.createElementBlock("img", {
  61. key: 0,
  62. class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-thumbnail")),
  63. src: file.url,
  64. crossorigin: _ctx.crossorigin,
  65. alt: ""
  66. }, null, 10, ["src", "crossorigin"])) : vue.createCommentVNode("v-if", true),
  67. file.status === "uploading" || _ctx.listType !== "picture-card" ? (vue.openBlock(), vue.createElementBlock("div", {
  68. key: 1,
  69. class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-info"))
  70. }, [
  71. vue.createElementVNode("a", {
  72. class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-name")),
  73. onClick: vue.withModifiers(($event) => _ctx.handlePreview(file), ["prevent"])
  74. }, [
  75. vue.createVNode(vue.unref(index$2.ElIcon), {
  76. class: vue.normalizeClass(vue.unref(nsIcon).m("document"))
  77. }, {
  78. default: vue.withCtx(() => [
  79. vue.createVNode(vue.unref(iconsVue.Document))
  80. ]),
  81. _: 1
  82. }, 8, ["class"]),
  83. vue.createElementVNode("span", {
  84. class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-file-name")),
  85. title: file.name
  86. }, vue.toDisplayString(file.name), 11, ["title"])
  87. ], 10, ["onClick"]),
  88. file.status === "uploading" ? (vue.openBlock(), vue.createBlock(vue.unref(index$3.ElProgress), {
  89. key: 0,
  90. type: _ctx.listType === "picture-card" ? "circle" : "line",
  91. "stroke-width": _ctx.listType === "picture-card" ? 6 : 2,
  92. percentage: Number(file.percentage),
  93. style: vue.normalizeStyle(_ctx.listType === "picture-card" ? "" : "margin-top: 0.5rem")
  94. }, null, 8, ["type", "stroke-width", "percentage", "style"])) : vue.createCommentVNode("v-if", true)
  95. ], 2)) : vue.createCommentVNode("v-if", true),
  96. vue.createElementVNode("label", {
  97. class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-status-label"))
  98. }, [
  99. _ctx.listType === "text" ? (vue.openBlock(), vue.createBlock(vue.unref(index$2.ElIcon), {
  100. key: 0,
  101. class: vue.normalizeClass([vue.unref(nsIcon).m("upload-success"), vue.unref(nsIcon).m("circle-check")])
  102. }, {
  103. default: vue.withCtx(() => [
  104. vue.createVNode(vue.unref(iconsVue.CircleCheck))
  105. ]),
  106. _: 1
  107. }, 8, ["class"])) : ["picture-card", "picture"].includes(_ctx.listType) ? (vue.openBlock(), vue.createBlock(vue.unref(index$2.ElIcon), {
  108. key: 1,
  109. class: vue.normalizeClass([vue.unref(nsIcon).m("upload-success"), vue.unref(nsIcon).m("check")])
  110. }, {
  111. default: vue.withCtx(() => [
  112. vue.createVNode(vue.unref(iconsVue.Check))
  113. ]),
  114. _: 1
  115. }, 8, ["class"])) : vue.createCommentVNode("v-if", true)
  116. ], 2),
  117. !vue.unref(disabled) ? (vue.openBlock(), vue.createBlock(vue.unref(index$2.ElIcon), {
  118. key: 2,
  119. class: vue.normalizeClass(vue.unref(nsIcon).m("close")),
  120. onClick: ($event) => handleRemove(file)
  121. }, {
  122. default: vue.withCtx(() => [
  123. vue.createVNode(vue.unref(iconsVue.Close))
  124. ]),
  125. _: 2
  126. }, 1032, ["class", "onClick"])) : vue.createCommentVNode("v-if", true),
  127. vue.createCommentVNode(" Due to close btn only appears when li gets focused disappears after li gets blurred, thus keyboard navigation can never reach close btn"),
  128. vue.createCommentVNode(" This is a bug which needs to be fixed "),
  129. vue.createCommentVNode(" TODO: Fix the incorrect navigation interaction "),
  130. !vue.unref(disabled) ? (vue.openBlock(), vue.createElementBlock("i", {
  131. key: 3,
  132. class: vue.normalizeClass(vue.unref(nsIcon).m("close-tip"))
  133. }, vue.toDisplayString(vue.unref(t)("el.upload.deleteTip")), 3)) : vue.createCommentVNode("v-if", true),
  134. _ctx.listType === "picture-card" ? (vue.openBlock(), vue.createElementBlock("span", {
  135. key: 4,
  136. class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-actions"))
  137. }, [
  138. vue.createElementVNode("span", {
  139. class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-preview")),
  140. onClick: ($event) => _ctx.handlePreview(file)
  141. }, [
  142. vue.createVNode(vue.unref(index$2.ElIcon), {
  143. class: vue.normalizeClass(vue.unref(nsIcon).m("zoom-in"))
  144. }, {
  145. default: vue.withCtx(() => [
  146. vue.createVNode(vue.unref(iconsVue.ZoomIn))
  147. ]),
  148. _: 1
  149. }, 8, ["class"])
  150. ], 10, ["onClick"]),
  151. !vue.unref(disabled) ? (vue.openBlock(), vue.createElementBlock("span", {
  152. key: 0,
  153. class: vue.normalizeClass(vue.unref(nsUpload).be("list", "item-delete")),
  154. onClick: ($event) => handleRemove(file)
  155. }, [
  156. vue.createVNode(vue.unref(index$2.ElIcon), {
  157. class: vue.normalizeClass(vue.unref(nsIcon).m("delete"))
  158. }, {
  159. default: vue.withCtx(() => [
  160. vue.createVNode(vue.unref(iconsVue.Delete))
  161. ]),
  162. _: 1
  163. }, 8, ["class"])
  164. ], 10, ["onClick"])) : vue.createCommentVNode("v-if", true)
  165. ], 2)) : vue.createCommentVNode("v-if", true)
  166. ])
  167. ], 42, ["onKeydown", "onFocus", "onBlur", "onClick"]);
  168. }), 128)),
  169. vue.renderSlot(_ctx.$slots, "append")
  170. ]),
  171. _: 3
  172. }, 8, ["class", "name"]);
  173. };
  174. }
  175. });
  176. var UploadList = /* @__PURE__ */ pluginVue_exportHelper["default"](_sfc_main, [["__file", "upload-list.vue"]]);
  177. exports["default"] = UploadList;
  178. //# sourceMappingURL=upload-list2.js.map