UNPKG

@icreate/ics-mui

Version:

京东风格的轻量级移动端 Vue2、Vue3 组件库(支持小程序开发)

183 lines (182 loc) 7.05 kB
var __defProp = Object.defineProperty; var __defProps = Object.defineProperties; var __getOwnPropDescs = Object.getOwnPropertyDescriptors; var __getOwnPropSymbols = Object.getOwnPropertySymbols; var __hasOwnProp = Object.prototype.hasOwnProperty; var __propIsEnum = Object.prototype.propertyIsEnumerable; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __spreadValues = (a, b) => { for (var prop in b || (b = {})) if (__hasOwnProp.call(b, prop)) __defNormalProp(a, prop, b[prop]); if (__getOwnPropSymbols) for (var prop of __getOwnPropSymbols(b)) { if (__propIsEnum.call(b, prop)) __defNormalProp(a, prop, b[prop]); } return a; }; var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)); import { defineComponent, toRef, ref, openBlock, createElementBlock, Fragment, renderList, createBlock, unref, createCommentVNode, createElementVNode, toDisplayString, renderSlot, createVNode, normalizeClass } from "vue"; import { r as g, u, C } from "../style_icon-C4_0S-Vm.js"; import { u as useFormDisabled } from "../common-DXugw-he.js"; import { w as withInstall } from "../with-install-DWwOiZS3.js"; const _hoisted_1 = { class: "nut-choose-image" }; const _hoisted_2 = { key: 0, class: "nut-choose-image__preview-img" }; const _hoisted_3 = { key: 0, class: "nut-choose-image__preview__progress" }; const _hoisted_4 = { class: "nut-choose-image__preview__progress__msg" }; const _hoisted_5 = ["onClick"]; const _hoisted_6 = ["src", "onClick"]; const _hoisted_7 = { key: 3, class: "nut-choose-image__preview-img__file" }; const _hoisted_8 = ["onClick"]; const _hoisted_9 = { class: "file__name_tips" }; const _hoisted_10 = { class: "tips" }; const _sfc_main = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, { name: "IcsChooseMedia" }), { __name: "index", props: { fileList: { type: Array, default: () => [ { name: "文件1.png", url: "https://m.360buyimg.com/babel/jfs/t1/164410/22/25162/93384/616eac6cE6c711350/0cac53c1b82e1b05.gif", status: "success", message: "上传成功", type: "image" }, { name: "文件2.png", url: "https://m.360buyimg.com/babel/jfs/t1/164410/22/25162/93384/616eac6cE6c711350/0cac53c1b82e1b05.gif", status: "error", message: "上传失败", type: "image" }, { name: "文件3.png", url: "https://m.360buyimg.com/babel/jfs/t1/164410/22/25162/93384/616eac6cE6c711350/0cac53c1b82e1b05.gif", status: "uploading", message: "上传中...", type: "image" } ] }, isPreview: { type: Boolean, default: true }, isDeletable: { type: Boolean, default: true }, listType: { type: String, default: "picture" }, multiple: { type: Boolean, default: false }, disabled: { type: Boolean, default: false }, maximum: { type: [Number, String], default: 1 } }, emits: [ "start", "progress", "oversize", "success", "failure", "change", "delete", "update:fileList", "fileItemClick", "uploader" ], setup(__props, { emit: __emit }) { const props = __props; const emits = __emit; const disabled = useFormDisabled(toRef(props, "disabled")); const fileList = ref(props.fileList); const fileItemClick = (fileItem) => { emits("fileItemClick", { fileItem }); }; const deleted = (file, index) => { fileList.value.splice(index, 1); emits("delete", { file, fileList: fileList.value, index }); }; const onDelete = (file, index) => { if (disabled.value) return; deleted(file, index); }; const onUploader = () => { emits("uploader", {}); }; return (_ctx, _cache) => { return openBlock(), createElementBlock("div", _hoisted_1, [ (openBlock(true), createElementBlock(Fragment, null, renderList(fileList.value, (item, index) => { var _a; return openBlock(), createElementBlock("div", { key: item.uid, class: "nut-choose-image__preview" }, [ __props.listType == "picture" && !_ctx.$slots.default ? (openBlock(), createElementBlock("div", _hoisted_2, [ item.status != "success" ? (openBlock(), createElementBlock("div", _hoisted_3, [ item.status != "ready" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [ item.status == "error" ? (openBlock(), createBlock(unref(g), { key: 0, color: "#fff" })) : (openBlock(), createBlock(unref(u), { key: 1, name: "loading", color: "#fff" })) ], 64)) : createCommentVNode("", true), createElementVNode("div", _hoisted_4, toDisplayString(item.message), 1) ])) : createCommentVNode("", true), __props.isDeletable ? (openBlock(), createElementBlock("div", { key: 1, class: "close", onClick: ($event) => onDelete(item, index) }, [ renderSlot(_ctx.$slots, "delete-icon", {}, () => [ createVNode(unref(g)) ]) ], 8, _hoisted_5)) : createCommentVNode("", true), ((_a = item == null ? void 0 : item.type) == null ? void 0 : _a.includes("image")) && item.url ? (openBlock(), createElementBlock("img", { key: 2, class: "nut-choose-image__preview-img__c", src: item.url, onClick: ($event) => fileItemClick(item) }, null, 8, _hoisted_6)) : (openBlock(), createElementBlock("div", _hoisted_7, [ createElementVNode("div", { class: "nut-choose-image__preview-img__file__name", onClick: ($event) => fileItemClick(item) }, [ createElementVNode("div", _hoisted_9, toDisplayString(item.name), 1) ], 8, _hoisted_8) ])), createElementVNode("div", _hoisted_10, toDisplayString(item.name), 1) ])) : createCommentVNode("", true) ]); }), 128)), __props.listType == "picture" && !_ctx.$slots.default && Number(__props.maximum) - fileList.value.length ? (openBlock(), createElementBlock("div", { key: 0, class: normalizeClass(["nut-choose-image__upload", [__props.listType]]), onClick: onUploader }, [ renderSlot(_ctx.$slots, "upload-icon", {}, () => [ createVNode(unref(C), { color: "#808080" }) ]) ], 2)) : createCommentVNode("", true) ]); }; } })); withInstall(_sfc_main); export { _sfc_main as ChooseMedia, _sfc_main as default };