@koi-design/uxd-ui 14.0.27 → 14.0.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/es/components/Modal/ConfirmDialog.mjs +2 -2
  2. package/es/components/Modal/ConfirmDialog.mjs.map +1 -1
  3. package/es/components/Upload/Upload.d.ts +9 -0
  4. package/es/components/Upload/Upload.mjs +2 -1
  5. package/es/components/Upload/Upload.mjs.map +1 -1
  6. package/es/components/Upload/Upload.type.d.ts +4 -0
  7. package/es/components/Upload/Upload.type.mjs +4 -0
  8. package/es/components/Upload/Upload.type.mjs.map +1 -1
  9. package/es/components/Upload/UploadDragger.mjs +8 -1
  10. package/es/components/Upload/UploadDragger.mjs.map +1 -1
  11. package/es/components/Upload/UploadDragger.vue.d.ts +9 -0
  12. package/es/components/Upload/Uploader.mjs +6 -1
  13. package/es/components/Upload/Uploader.mjs.map +1 -1
  14. package/es/components/Upload/Uploader.vue.d.ts +18 -0
  15. package/es/components/Upload/index.d.ts +15 -0
  16. package/lib/components/Modal/ConfirmDialog.js +2 -2
  17. package/lib/components/Modal/ConfirmDialog.js.map +1 -1
  18. package/lib/components/Upload/Upload.d.ts +9 -0
  19. package/lib/components/Upload/Upload.js +2 -1
  20. package/lib/components/Upload/Upload.js.map +1 -1
  21. package/lib/components/Upload/Upload.type.d.ts +4 -0
  22. package/lib/components/Upload/Upload.type.js +4 -0
  23. package/lib/components/Upload/Upload.type.js.map +1 -1
  24. package/lib/components/Upload/UploadDragger.js +8 -1
  25. package/lib/components/Upload/UploadDragger.js.map +1 -1
  26. package/lib/components/Upload/UploadDragger.vue.d.ts +9 -0
  27. package/lib/components/Upload/Uploader.js +6 -1
  28. package/lib/components/Upload/Uploader.js.map +1 -1
  29. package/lib/components/Upload/Uploader.vue.d.ts +18 -0
  30. package/lib/components/Upload/index.d.ts +15 -0
  31. package/package.json +1 -1
  32. package/styles/components/upload/index.css +1 -1
  33. package/styles/components/upload/index.less +5 -0
  34. package/styles/index.css +1 -1
  35. package/types/components/Upload/Upload.d.ts +9 -0
  36. package/types/components/Upload/Upload.type.d.ts +4 -0
  37. package/types/components/Upload/UploadDragger.vue.d.ts +9 -0
  38. package/types/components/Upload/Uploader.vue.d.ts +18 -0
  39. package/types/components/Upload/index.d.ts +15 -0
  40. package/uxd-ui.css +1 -1
  41. package/uxd-ui.esm.min.mjs +4 -4
  42. package/uxd-ui.esm.mjs +23 -6
  43. package/uxd-ui.umd.js +23 -6
  44. package/uxd-ui.umd.min.js +2 -2
@@ -107,7 +107,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
107
107
  _: 1
108
108
  }, 8, ["size", "onClick"])) : createCommentVNode("v-if", true),
109
109
  createVNode(_component_UButton, {
110
- type: "primary",
110
+ type: _ctx.okType,
111
111
  size: _ctx.size,
112
112
  loading: _ctx.stateLoading,
113
113
  onClick: _ctx.handleOk
@@ -116,7 +116,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
116
116
  createTextVNode(toDisplayString(_ctx.okText || _ctx.computedLocale.okText), 1)
117
117
  ]),
118
118
  _: 1
119
- }, 8, ["size", "loading", "onClick"])
119
+ }, 8, ["type", "size", "loading", "onClick"])
120
120
  ]),
121
121
  default: withCtx(() => [
122
122
  createElementVNode("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmDialog.mjs","sources":["../../../../src/components/Modal/ConfirmDialog.vue"],"sourcesContent":["<template>\n <Modal\n :id=\"id\"\n :visible=\"visible\"\n :custom-class=\"confirmClass\"\n :mask-closable=\"false\"\n :width=\"computedWidth\"\n :size=\"size\"\n :after-close=\"afterClose\"\n :closable=\"closable\"\n @close=\"closableClose\"\n >\n <div :class=\"`${prefixCls}-confirm-body-wrapper`\">\n <div :class=\"`${prefixCls}-confirm-body`\">\n <UIcon :class=\"`${prefixCls}-confirm-icon`\">\n <component :is=\"iconName\" />\n </UIcon>\n <div :class=\"`${prefixCls}-confirm-content-wrap`\">\n <span v-if=\"title !== undefined\" :class=\"`${prefixCls}-confirm-title`\">\n {{ title }}\n </span>\n <div :class=\"`${prefixCls}-confirm-content`\">\n <template v-if=\"typeof content === 'function'\">\n <Render :render=\"content\" />\n </template>\n <template v-else> {{ content }} </template>\n </div>\n </div>\n </div>\n </div>\n <template #footer>\n <UButton v-if=\"okCancel\" :size=\"size\" @click=\"handleCancel\">\n {{ cancelText || computedLocale.cancelText }}\n </UButton>\n <UButton type=\"primary\" :size=\"size\" :loading=\"stateLoading\" @click=\"handleOk\">\n {{ okText || computedLocale.okText }}\n </UButton>\n </template>\n </Modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref } from 'vue';\n\nimport UIcon from '@uxd-ui/components/Icon';\nimport { Info, CheckCircle, CircleX, CircleAlert, HelpCircle, CircleHelp } from 'lucide-vue-next';\nimport UButton from '@uxd-ui/components/Button';\nimport Render from '../base/Render';\nimport Modal from './Modal.vue';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport { confirmDialogProps, type ModalCloseType } from './Modal.type';\n\nexport default defineComponent({\n name: 'ConfirmDialog',\n components: {\n Modal,\n UIcon,\n UButton,\n Info,\n CheckCircle,\n CircleX,\n CircleAlert,\n HelpCircle,\n CircleHelp,\n Render\n },\n props: confirmDialogProps,\n setup(props) {\n const { prefixCls, config: globalConfig } = useGlobalConfig('modal');\n const stateLoading = ref(false);\n // ===================== computed ============================\n const confirmClass = computed(() => {\n return [`${prefixCls.value}-confirm`, `${prefixCls.value}-confirm-${props.type}`, `${prefixCls.value}-${props.type}`];\n });\n const computedLocale = computed(() => {\n return props.locale || globalConfig.locale.modal;\n });\n // ===================== computed ============================\n const closeConfirm = () => {\n if (props.close) {\n props.close();\n }\n };\n const handleCancel = () => {\n if (props.onCancel) {\n props.onCancel();\n }\n closeConfirm();\n };\n const handleOk = () => {\n if (props.onOk) {\n props.onOk();\n }\n if (props.loading) {\n stateLoading.value = true;\n } else {\n closeConfirm();\n }\n };\n\n const closableClose = (type: ModalCloseType) => {\n if (props.closable && type === 'close') {\n closeConfirm();\n }\n };\n\n const computedWidth = computed(() => {\n if (props.width) {\n return props.width;\n }\n if (props.size === 'small') {\n return 384;\n }\n return 416;\n });\n\n return {\n prefixCls,\n confirmClass,\n stateLoading,\n computedLocale,\n computedWidth,\n handleOk,\n handleCancel,\n closableClose\n };\n }\n});\n</script>\n"],"names":["_createBlock","_withCtx","_createVNode","_createElementVNode","_normalizeClass","_resolveDynamicComponent","_createElementBlock","_Fragment"],"mappings":";;;;;;;;;;AAoDA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AACF,EACA,OAAO;AAAA,EACP,MAAM,OAAO;UACL,EAAE,WAAW,QAAQ,iBAAiB,gBAAgB,OAAO;UAC7D,eAAe,IAAI,KAAK;UAExB,eAAe,SAAS,MAAM;aAC3B,CAAC,GAAG,UAAU,iBAAiB,GAAG,UAAU,iBAAiB,MAAM,QAAQ,GAAG,UAAU,SAAS,MAAM,MAAM;AAAA,KACrH;UACK,iBAAiB,SAAS,MAAM;aAC7B,MAAM,UAAU,aAAa,OAAO;AAAA,KAC5C;UAEK,eAAe,MAAM;UACrB,MAAM,OAAO;cACT;AAAM;AACd;UAEI,eAAe,MAAM;UACrB,MAAM,UAAU;cACZ;AAAS;;AAEJ;UAET,WAAW,MAAM;UACjB,MAAM,MAAM;cACR;AAAK;UAET,MAAM,SAAS;qBACJ,QAAQ;AAAA,aAChB;;AACQ;AACf;UAGI,gBAAgB,CAAC,SAAyB;UAC1C,MAAM,YAAY,SAAS,SAAS;;AACzB;AACf;UAGI,gBAAgB,SAAS,MAAM;UAC/B,MAAM,OAAO;eACR,MAAM;AAAA;UAEX,MAAM,SAAS,SAAS;eACnB;AAAA;aAEF;AAAA,KACR;WAEM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;;;;sBA9HCA,YAqCQ;IApCL,IAAI;IACJ,SAAS;IACT,gBAAc;IACd,iBAAe;AAAA,IACf,OAAO;IACP,MAAM;IACN,eAAa;IACb,UAAU;IACV,SAAO;;IAoBG,QAAMC,QACf,MAEU;AAAA,MAFK,8BAAfD,YAEU;;QAFgB,MAAM;QAAO,SAAO;;yBAC5C,MAA6C;AAAA,0CAA1C,mBAAc,oBAAe,UAAU;;;;MAE5CE,YAEU;QAFD,MAAK;AAAA,QAAW,MAAM;QAAO,SAAS;QAAe,SAAO;;yBACnE,MAAqC;AAAA,0CAAlC,eAAU,oBAAe,MAAM;;;;;qBAvBtC,MAiBM;AAAA,MAjBNC,mBAiBM;QAjBA,OAAKC,kBAAK,qCAAS;AAAA;QACvBD,mBAeM;UAfA,OAAKC,kBAAK,6BAAS;AAAA;UACvBF,YAEQ;YAFA,OAAKE,kBAAK,6BAAS;AAAA;6BACzB,MAA4B;AAAA,4BAA5BJ,YAA4BK,wBAAZ,aAAQ;;;;UAE1BF,mBAUM;YAVA,OAAKC,kBAAK,qCAAS;AAAA;YACX,eAAU,uBAAtBE,mBAEO;;cAF2B,OAAKF,kBAAK,8BAAS;AAAA,+BAChD,UAAK;YAEVD,mBAKM;cALA,OAAKC,kBAAK,gCAAS;AAAA;qBACA,iBAAO,2BAC5BJ,YAA4B;;gBAAnB,QAAQ;uDAEnBM,mBAA2CC;gDAAtB,YAAO;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ConfirmDialog.mjs","sources":["../../../../src/components/Modal/ConfirmDialog.vue"],"sourcesContent":["<template>\n <Modal\n :id=\"id\"\n :visible=\"visible\"\n :custom-class=\"confirmClass\"\n :mask-closable=\"false\"\n :width=\"computedWidth\"\n :size=\"size\"\n :after-close=\"afterClose\"\n :closable=\"closable\"\n @close=\"closableClose\"\n >\n <div :class=\"`${prefixCls}-confirm-body-wrapper`\">\n <div :class=\"`${prefixCls}-confirm-body`\">\n <UIcon :class=\"`${prefixCls}-confirm-icon`\">\n <component :is=\"iconName\" />\n </UIcon>\n <div :class=\"`${prefixCls}-confirm-content-wrap`\">\n <span v-if=\"title !== undefined\" :class=\"`${prefixCls}-confirm-title`\">\n {{ title }}\n </span>\n <div :class=\"`${prefixCls}-confirm-content`\">\n <template v-if=\"typeof content === 'function'\">\n <Render :render=\"content\" />\n </template>\n <template v-else> {{ content }} </template>\n </div>\n </div>\n </div>\n </div>\n <template #footer>\n <UButton v-if=\"okCancel\" :size=\"size\" @click=\"handleCancel\">\n {{ cancelText || computedLocale.cancelText }}\n </UButton>\n <UButton :type=\"okType\" :size=\"size\" :loading=\"stateLoading\" @click=\"handleOk\">\n {{ okText || computedLocale.okText }}\n </UButton>\n </template>\n </Modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref } from 'vue';\n\nimport UIcon from '@uxd-ui/components/Icon';\nimport { Info, CheckCircle, CircleX, CircleAlert, HelpCircle, CircleHelp } from 'lucide-vue-next';\nimport UButton from '@uxd-ui/components/Button';\nimport Render from '../base/Render';\nimport Modal from './Modal.vue';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport { confirmDialogProps, type ModalCloseType } from './Modal.type';\n\nexport default defineComponent({\n name: 'ConfirmDialog',\n components: {\n Modal,\n UIcon,\n UButton,\n Info,\n CheckCircle,\n CircleX,\n CircleAlert,\n HelpCircle,\n CircleHelp,\n Render\n },\n props: confirmDialogProps,\n setup(props) {\n const { prefixCls, config: globalConfig } = useGlobalConfig('modal');\n const stateLoading = ref(false);\n // ===================== computed ============================\n const confirmClass = computed(() => {\n return [`${prefixCls.value}-confirm`, `${prefixCls.value}-confirm-${props.type}`, `${prefixCls.value}-${props.type}`];\n });\n const computedLocale = computed(() => {\n return props.locale || globalConfig.locale.modal;\n });\n // ===================== computed ============================\n const closeConfirm = () => {\n if (props.close) {\n props.close();\n }\n };\n const handleCancel = () => {\n if (props.onCancel) {\n props.onCancel();\n }\n closeConfirm();\n };\n const handleOk = () => {\n if (props.onOk) {\n props.onOk();\n }\n if (props.loading) {\n stateLoading.value = true;\n } else {\n closeConfirm();\n }\n };\n\n const closableClose = (type: ModalCloseType) => {\n if (props.closable && type === 'close') {\n closeConfirm();\n }\n };\n\n const computedWidth = computed(() => {\n if (props.width) {\n return props.width;\n }\n if (props.size === 'small') {\n return 384;\n }\n return 416;\n });\n\n return {\n prefixCls,\n confirmClass,\n stateLoading,\n computedLocale,\n computedWidth,\n handleOk,\n handleCancel,\n closableClose\n };\n }\n});\n</script>\n"],"names":["_createBlock","_withCtx","_createVNode","_createElementVNode","_normalizeClass","_resolveDynamicComponent","_createElementBlock","_Fragment"],"mappings":";;;;;;;;;;AAoDA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AACF,EACA,OAAO;AAAA,EACP,MAAM,OAAO;UACL,EAAE,WAAW,QAAQ,iBAAiB,gBAAgB,OAAO;UAC7D,eAAe,IAAI,KAAK;UAExB,eAAe,SAAS,MAAM;aAC3B,CAAC,GAAG,UAAU,iBAAiB,GAAG,UAAU,iBAAiB,MAAM,QAAQ,GAAG,UAAU,SAAS,MAAM,MAAM;AAAA,KACrH;UACK,iBAAiB,SAAS,MAAM;aAC7B,MAAM,UAAU,aAAa,OAAO;AAAA,KAC5C;UAEK,eAAe,MAAM;UACrB,MAAM,OAAO;cACT;AAAM;AACd;UAEI,eAAe,MAAM;UACrB,MAAM,UAAU;cACZ;AAAS;;AAEJ;UAET,WAAW,MAAM;UACjB,MAAM,MAAM;cACR;AAAK;UAET,MAAM,SAAS;qBACJ,QAAQ;AAAA,aAChB;;AACQ;AACf;UAGI,gBAAgB,CAAC,SAAyB;UAC1C,MAAM,YAAY,SAAS,SAAS;;AACzB;AACf;UAGI,gBAAgB,SAAS,MAAM;UAC/B,MAAM,OAAO;eACR,MAAM;AAAA;UAEX,MAAM,SAAS,SAAS;eACnB;AAAA;aAEF;AAAA,KACR;WAEM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;;;;sBA9HCA,YAqCQ;IApCL,IAAI;IACJ,SAAS;IACT,gBAAc;IACd,iBAAe;AAAA,IACf,OAAO;IACP,MAAM;IACN,eAAa;IACb,UAAU;IACV,SAAO;;IAoBG,QAAMC,QACf,MAEU;AAAA,MAFK,8BAAfD,YAEU;;QAFgB,MAAM;QAAO,SAAO;;yBAC5C,MAA6C;AAAA,0CAA1C,mBAAc,oBAAe,UAAU;;;;MAE5CE,YAEU;QAFA,MAAM;QAAS,MAAM;QAAO,SAAS;QAAe,SAAO;;yBACnE,MAAqC;AAAA,0CAAlC,eAAU,oBAAe,MAAM;;;;;qBAvBtC,MAiBM;AAAA,MAjBNC,mBAiBM;QAjBA,OAAKC,kBAAK,qCAAS;AAAA;QACvBD,mBAeM;UAfA,OAAKC,kBAAK,6BAAS;AAAA;UACvBF,YAEQ;YAFA,OAAKE,kBAAK,6BAAS;AAAA;6BACzB,MAA4B;AAAA,4BAA5BJ,YAA4BK,wBAAZ,aAAQ;;;;UAE1BF,mBAUM;YAVA,OAAKC,kBAAK,qCAAS;AAAA;YACX,eAAU,uBAAtBE,mBAEO;;cAF2B,OAAKF,kBAAK,8BAAS;AAAA,+BAChD,UAAK;YAEVD,mBAKM;cALA,OAAKC,kBAAK,gCAAS;AAAA;qBACA,iBAAO,2BAC5BJ,YAA4B;;gBAAnB,QAAQ;uDAEnBM,mBAA2CC;gDAAtB,YAAO;;;;;;;;;;;;;;"}
@@ -80,6 +80,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
80
80
  type: import("vue").PropType<import("./Upload.type").OnUploadError>;
81
81
  default: () => void;
82
82
  };
83
+ error: {
84
+ type: BooleanConstructor;
85
+ default: boolean;
86
+ };
83
87
  }>, {
84
88
  prefixCls: import("vue").ComputedRef<string>;
85
89
  uploaderRef: import("vue").Ref<any, any>;
@@ -201,6 +205,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
201
205
  type: import("vue").PropType<import("./Upload.type").OnUploadError>;
202
206
  default: () => void;
203
207
  };
208
+ error: {
209
+ type: BooleanConstructor;
210
+ default: boolean;
211
+ };
204
212
  }>> & Readonly<{
205
213
  onChange?: (file: FileInfo, fileList: FileInfo[]) => any;
206
214
  onPreview?: (file: FileInfo) => any;
@@ -209,6 +217,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
209
217
  }>, {
210
218
  data: Record<string, any>;
211
219
  drag: boolean;
220
+ error: boolean;
212
221
  name: string;
213
222
  onProgress: import("./Upload.type").OnUploadProgress;
214
223
  onError: import("./Upload.type").OnUploadError;
@@ -104,7 +104,8 @@ var Upload = defineComponent({
104
104
  "withCredentials": this.withCredentials,
105
105
  "disabled": this.disabled,
106
106
  "limit": limit,
107
- "customRequest": this.customRequest
107
+ "customRequest": this.customRequest,
108
+ "error": this.error
108
109
  }), _isSlot(_slot = this.getChild()) ? _slot : {
109
110
  default: () => [_slot]
110
111
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.mjs","sources":["../../../../src/components/Upload/Upload.tsx"],"sourcesContent":["import { defineComponent, provide } from 'vue';\nimport { getSlot, cloneVNode } from '../../utils/slots';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport Uploader from './Uploader.vue';\nimport UploadList from './UploadList.vue';\nimport useFileUpload from './hooks/useFileUpload';\nimport { type FileInfo, uploadProps, uploadEmits } from './Upload.type';\n\nexport default defineComponent({\n name: 'UUpload',\n inheritAttrs: false,\n props: uploadProps,\n emits: uploadEmits,\n setup(props, { slots, emit }) {\n const { prefixCls } = useGlobalConfig('upload');\n\n const { uploaderRef, uploadFileList, abort, clearFiles, submit, handleError, handleSuccess, handleProgress, handleStart, handleRemove } =\n useFileUpload(props, emit);\n\n const getChild = () => {\n const children = getSlot(slots);\n const newChildren = children.map((child) => {\n return cloneVNode(child as any, {\n disabled: props.disabled ? true : undefined\n });\n });\n return newChildren;\n };\n\n const handleExceed = (files: File[]) => {\n props.onError('exceed the upload limit', files, uploadFileList.value);\n };\n\n const handlePreview = (file: FileInfo) => {\n emit('preview', file);\n };\n\n const handleItemClick = (file: FileInfo) => {\n emit('item-click', file);\n };\n\n provide('UploadContext', {\n uploadFileList,\n handleError,\n handleSuccess,\n handleProgress,\n handleStart,\n handleRemove,\n handleExceed,\n handlePreview\n });\n\n return {\n prefixCls,\n uploaderRef,\n uploadFileList,\n abort,\n clearFiles,\n submit,\n handleRemove,\n handlePreview,\n handleItemClick,\n getChild\n };\n },\n render() {\n const { showFileList, listType, prefixCls } = this;\n\n let limit;\n if (this.limit && typeof this.limit === 'number') {\n limit = this.limit - this.uploadFileList.length;\n limit = limit > 0 ? limit : 0;\n }\n\n const attrs = this.$attrs;\n\n const uploader = (\n <Uploader\n ref=\"uploaderRef\"\n {...attrs}\n prefixCls={prefixCls}\n action={this.action}\n name={this.name}\n multiple={this.multiple}\n listType={this.listType}\n accept={this.accept}\n headers={this.headers}\n drag={this.drag}\n data={this.data}\n beforeUpload={this.beforeUpload}\n withCredentials={this.withCredentials}\n disabled={this.disabled}\n limit={limit}\n customRequest={this.customRequest}\n >\n {this.getChild()}\n </Uploader>\n );\n\n const uploadList = (append?: any) =>\n showFileList ? (\n <UploadList\n prefixCls={prefixCls}\n disabled={this.disabled}\n files={this.uploadFileList}\n listType={listType}\n listItemClass={this.listItemClass}\n onRemove={this.handleRemove}\n onPreview={this.handlePreview}\n onClick={this.handleItemClick}\n v-slots={{\n ...(this.$slots.file\n ? {\n default: ({ file }: { file: FileInfo }) => {\n return this.$slots.file?.({\n file\n });\n }\n }\n : {}),\n\n ...(append\n ? {\n append: () => append\n }\n : {})\n }}\n ></UploadList>\n ) : null;\n\n const tips = <div class={`${prefixCls}-tip`}>{this.$slots.tip?.()}</div>;\n\n if (this.listType === 'picture-card' && showFileList) {\n return <>{[uploadList(uploader), tips]}</>;\n }\n return <>{[uploader, tips, uploadList()]}</>;\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","inheritAttrs","props","uploadProps","emits","uploadEmits","setup","slots","emit","prefixCls","useGlobalConfig","uploaderRef","uploadFileList","abort","clearFiles","submit","handleError","handleSuccess","handleProgress","handleStart","handleRemove","useFileUpload","getChild","children","getSlot","newChildren","map","child","cloneVNode","disabled","undefined","handleExceed","files","onError","value","handlePreview","file","handleItemClick","provide","render","_slot","showFileList","listType","limit","length","attrs","$attrs","uploader","_createVNode","Uploader","_mergeProps","action","multiple","accept","headers","drag","data","beforeUpload","withCredentials","customRequest","default","uploadList","append","UploadList","listItemClass","$slots","_a","_b","tips","tip","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"Upload.mjs","sources":["../../../../src/components/Upload/Upload.tsx"],"sourcesContent":["import { defineComponent, provide } from 'vue';\nimport { getSlot, cloneVNode } from '../../utils/slots';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport Uploader from './Uploader.vue';\nimport UploadList from './UploadList.vue';\nimport useFileUpload from './hooks/useFileUpload';\nimport { type FileInfo, uploadProps, uploadEmits } from './Upload.type';\n\nexport default defineComponent({\n name: 'UUpload',\n inheritAttrs: false,\n props: uploadProps,\n emits: uploadEmits,\n setup(props, { slots, emit }) {\n const { prefixCls } = useGlobalConfig('upload');\n\n const { uploaderRef, uploadFileList, abort, clearFiles, submit, handleError, handleSuccess, handleProgress, handleStart, handleRemove } =\n useFileUpload(props, emit);\n\n const getChild = () => {\n const children = getSlot(slots);\n const newChildren = children.map((child) => {\n return cloneVNode(child as any, {\n disabled: props.disabled ? true : undefined\n });\n });\n return newChildren;\n };\n\n const handleExceed = (files: File[]) => {\n props.onError('exceed the upload limit', files, uploadFileList.value);\n };\n\n const handlePreview = (file: FileInfo) => {\n emit('preview', file);\n };\n\n const handleItemClick = (file: FileInfo) => {\n emit('item-click', file);\n };\n\n provide('UploadContext', {\n uploadFileList,\n handleError,\n handleSuccess,\n handleProgress,\n handleStart,\n handleRemove,\n handleExceed,\n handlePreview\n });\n\n return {\n prefixCls,\n uploaderRef,\n uploadFileList,\n abort,\n clearFiles,\n submit,\n handleRemove,\n handlePreview,\n handleItemClick,\n getChild\n };\n },\n render() {\n const { showFileList, listType, prefixCls } = this;\n\n let limit;\n if (this.limit && typeof this.limit === 'number') {\n limit = this.limit - this.uploadFileList.length;\n limit = limit > 0 ? limit : 0;\n }\n\n const attrs = this.$attrs;\n\n const uploader = (\n <Uploader\n ref=\"uploaderRef\"\n {...attrs}\n prefixCls={prefixCls}\n action={this.action}\n name={this.name}\n multiple={this.multiple}\n listType={this.listType}\n accept={this.accept}\n headers={this.headers}\n drag={this.drag}\n data={this.data}\n beforeUpload={this.beforeUpload}\n withCredentials={this.withCredentials}\n disabled={this.disabled}\n limit={limit}\n customRequest={this.customRequest}\n error={this.error}\n >\n {this.getChild()}\n </Uploader>\n );\n\n const uploadList = (append?: any) =>\n showFileList ? (\n <UploadList\n prefixCls={prefixCls}\n disabled={this.disabled}\n files={this.uploadFileList}\n listType={listType}\n listItemClass={this.listItemClass}\n onRemove={this.handleRemove}\n onPreview={this.handlePreview}\n onClick={this.handleItemClick}\n v-slots={{\n ...(this.$slots.file\n ? {\n default: ({ file }: { file: FileInfo }) => {\n return this.$slots.file?.({\n file\n });\n }\n }\n : {}),\n\n ...(append\n ? {\n append: () => append\n }\n : {})\n }}\n ></UploadList>\n ) : null;\n\n const tips = <div class={`${prefixCls}-tip`}>{this.$slots.tip?.()}</div>;\n\n if (this.listType === 'picture-card' && showFileList) {\n return <>{[uploadList(uploader), tips]}</>;\n }\n return <>{[uploader, tips, uploadList()]}</>;\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","inheritAttrs","props","uploadProps","emits","uploadEmits","setup","slots","emit","prefixCls","useGlobalConfig","uploaderRef","uploadFileList","abort","clearFiles","submit","handleError","handleSuccess","handleProgress","handleStart","handleRemove","useFileUpload","getChild","children","getSlot","newChildren","map","child","cloneVNode","disabled","undefined","handleExceed","files","onError","value","handlePreview","file","handleItemClick","provide","render","_slot","showFileList","listType","limit","length","attrs","$attrs","uploader","_createVNode","Uploader","_mergeProps","action","multiple","accept","headers","drag","data","beforeUpload","withCredentials","customRequest","error","default","uploadList","append","UploadList","listItemClass","$slots","_a","_b","tips","tip","_Fragment"],"mappings":"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"}
@@ -125,6 +125,10 @@ export declare const uploadProps: {
125
125
  type: PropType<OnUploadError>;
126
126
  default: () => void;
127
127
  };
128
+ error: {
129
+ type: BooleanConstructor;
130
+ default: boolean;
131
+ };
128
132
  };
129
133
  export type UploadProps = ExtractPropTypes<typeof uploadProps>;
130
134
  export declare const uploadEmits: {
@@ -82,6 +82,10 @@ const uploadProps = {
82
82
  onError: {
83
83
  type: Function,
84
84
  default: NOOP
85
+ },
86
+ error: {
87
+ type: Boolean,
88
+ default: false
85
89
  }
86
90
  };
87
91
  const uploadEmits = {
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.type.mjs","sources":["../../../../src/components/Upload/Upload.type.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType, Ref } from 'vue';\nimport type { EmitFn } from '../../utils/globalType';\nimport { oneOf } from '../../utils/propsValidators';\n\nexport type FileStatus = 'ready' | 'uploading' | 'fail' | 'done';\n\nexport type ListType = 'text' | 'picture' | 'picture-card';\n\nexport type RawFile = any & { uid: string };\nexport interface FileInfo {\n type?: string;\n uid?: string;\n name?: string;\n url?: string;\n thumbUrl?: string;\n status?: FileStatus;\n size?: number;\n raw?: any;\n percent?: number;\n response?: any;\n}\n\nexport interface UploadError extends Error {\n status?: number;\n method?: string;\n url?: string;\n}\n\nexport type BeforeUpload = (file: RawFile, isLast: boolean) => boolean | Promise<any>;\nexport type BeforeRemove = (files: FileInfo, uploadFileList: FileInfo[]) => boolean | Promise<boolean>;\nexport type OnUploadRemove = (files: FileInfo, uploadFileList: FileInfo[]) => void;\nexport type OnUploadProgress = (e: any, files: FileInfo, uploadFileList: FileInfo[]) => void;\nexport type OnUploadSuccess = (files: FileInfo, uploadFileList: FileInfo[]) => void;\nexport type OnUploadError = (msg: string | UploadError, files: FileInfo | File[], uploadFileList: FileInfo[]) => void;\nexport interface UploadProgress extends ProgressEvent {\n percent?: number;\n}\nexport interface UploadRequestConfig {\n method?: string;\n headers: Record<string, any>;\n withCredentials: boolean;\n file: any;\n data: Record<string, any>;\n fileName: string;\n action: string;\n onProgress: (e: UploadProgress) => void;\n onSuccess: (rep: Request) => void;\n onError: (err: UploadError) => void;\n}\n\nexport type UploadRequest = (params: UploadRequestConfig) => Promise<any>;\n\nconst NOOP = () => {};\n\nexport const uploadProps = {\n action: {\n type: String\n },\n name: {\n type: String,\n default: 'file'\n },\n data: {\n type: Object,\n default: () => ({})\n },\n multiple: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number\n },\n headers: {\n type: Object,\n default: () => ({})\n },\n drag: {\n type: Boolean,\n default: false\n },\n accept: {\n type: String\n },\n limit: {\n type: Number\n },\n disabled: {\n type: Boolean,\n default: false\n },\n withCredentials: {\n type: Boolean,\n default: false\n },\n beforeUpload: {\n type: Function as PropType<BeforeUpload>\n },\n customRequest: {\n type: Function as PropType<UploadRequest>\n },\n showFileList: {\n type: Boolean,\n default: true\n },\n fileList: {\n type: Array as PropType<FileInfo[]>\n },\n listType: {\n type: String as PropType<ListType>,\n default: 'text',\n validator: oneOf(['text', 'picture', 'picture-card'])\n },\n listItemClass: {\n type: String\n },\n beforeRemove: {\n type: Function as PropType<BeforeRemove>\n },\n onRemove: {\n type: Function as PropType<OnUploadRemove>,\n default: NOOP\n },\n onProgress: {\n type: Function as PropType<OnUploadProgress>,\n default: NOOP\n },\n onSuccess: {\n type: Function as PropType<OnUploadSuccess>,\n default: NOOP\n },\n onError: {\n type: Function as PropType<OnUploadError>,\n default: NOOP\n }\n};\n\nexport type UploadProps = ExtractPropTypes<typeof uploadProps>;\n\nexport const uploadEmits = {\n change: (file: FileInfo, fileList: FileInfo[]) => file.uid !== undefined && Array.isArray(fileList),\n preview: (file: FileInfo) => file.uid !== undefined,\n 'item-click': (file: FileInfo) => file.uid !== undefined,\n 'update:fileList': (fileList: FileInfo[]) => Array.isArray(fileList)\n};\n\nexport type UploadEmits = typeof uploadEmits;\n\nexport type UploadEmit = EmitFn<UploadEmits>;\n\nexport interface UploadContext {\n uploadFileList: Ref<FileInfo[]>;\n handleError: (err: UploadError, rawFile: RawFile) => void;\n handleSuccess: (res: Request, rawFile: RawFile) => void;\n handleProgress: (e: UploadProgress, rawFile: RawFile) => void;\n handleStart: (rawFile: RawFile) => void;\n handleRemove: (rawFile: RawFile) => void;\n handleExceed: (files: File[]) => void;\n handlePreview: (file: FileInfo) => void;\n}\n"],"names":[],"mappings":";;AAoDA,MAAM,OAAO,MAAM;AAAC;MAEP,cAAc;AAAA,EACzB,QAAQ;AAAA,IACN,MAAM;AAAA;AACR,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS,OAAO;AAAC;AACnB,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,KAAK;AAAA,IACH,MAAM;AAAA;AACR,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,SAAS,OAAO;AAAC;AACnB,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,QAAQ;AAAA,IACN,MAAM;AAAA;AACR,EACA,OAAO;AAAA,IACL,MAAM;AAAA;AACR,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,cAAc;AAAA,IACZ,MAAM;AAAA;AACR,EACA,eAAe;AAAA,IACb,MAAM;AAAA;AACR,EACA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,UAAU;AAAA,IACR,MAAM;AAAA;AACR,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW,MAAM,CAAC,QAAQ,WAAW,cAAc,CAAC;AAAA;AACtD,EACA,eAAe;AAAA,IACb,MAAM;AAAA;AACR,EACA,cAAc;AAAA,IACZ,MAAM;AAAA;AACR,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,YAAY;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA;AAEb;MAIa,cAAc;AAAA,EACzB,QAAQ,CAAC,MAAgB,aAAyB,KAAK,QAAQ,UAAa,MAAM,QAAQ,QAAQ;AAAA,EAClG,SAAS,CAAC,SAAmB,KAAK,QAAQ;AAAA,EAC1C,cAAc,CAAC,SAAmB,KAAK,QAAQ;AAAA,EAC/C,mBAAmB,CAAC,aAAyB,MAAM,QAAQ,QAAQ;AACrE;;;;"}
1
+ {"version":3,"file":"Upload.type.mjs","sources":["../../../../src/components/Upload/Upload.type.ts"],"sourcesContent":["import type { ExtractPropTypes, PropType, Ref } from 'vue';\nimport type { EmitFn } from '../../utils/globalType';\nimport { oneOf } from '../../utils/propsValidators';\n\nexport type FileStatus = 'ready' | 'uploading' | 'fail' | 'done';\n\nexport type ListType = 'text' | 'picture' | 'picture-card';\n\nexport type RawFile = any & { uid: string };\nexport interface FileInfo {\n type?: string;\n uid?: string;\n name?: string;\n url?: string;\n thumbUrl?: string;\n status?: FileStatus;\n size?: number;\n raw?: any;\n percent?: number;\n response?: any;\n}\n\nexport interface UploadError extends Error {\n status?: number;\n method?: string;\n url?: string;\n}\n\nexport type BeforeUpload = (file: RawFile, isLast: boolean) => boolean | Promise<any>;\nexport type BeforeRemove = (files: FileInfo, uploadFileList: FileInfo[]) => boolean | Promise<boolean>;\nexport type OnUploadRemove = (files: FileInfo, uploadFileList: FileInfo[]) => void;\nexport type OnUploadProgress = (e: any, files: FileInfo, uploadFileList: FileInfo[]) => void;\nexport type OnUploadSuccess = (files: FileInfo, uploadFileList: FileInfo[]) => void;\nexport type OnUploadError = (msg: string | UploadError, files: FileInfo | File[], uploadFileList: FileInfo[]) => void;\nexport interface UploadProgress extends ProgressEvent {\n percent?: number;\n}\nexport interface UploadRequestConfig {\n method?: string;\n headers: Record<string, any>;\n withCredentials: boolean;\n file: any;\n data: Record<string, any>;\n fileName: string;\n action: string;\n onProgress: (e: UploadProgress) => void;\n onSuccess: (rep: Request) => void;\n onError: (err: UploadError) => void;\n}\n\nexport type UploadRequest = (params: UploadRequestConfig) => Promise<any>;\n\nconst NOOP = () => {};\n\nexport const uploadProps = {\n action: {\n type: String\n },\n name: {\n type: String,\n default: 'file'\n },\n data: {\n type: Object,\n default: () => ({})\n },\n multiple: {\n type: Boolean,\n default: false\n },\n max: {\n type: Number\n },\n headers: {\n type: Object,\n default: () => ({})\n },\n drag: {\n type: Boolean,\n default: false\n },\n accept: {\n type: String\n },\n limit: {\n type: Number\n },\n disabled: {\n type: Boolean,\n default: false\n },\n withCredentials: {\n type: Boolean,\n default: false\n },\n beforeUpload: {\n type: Function as PropType<BeforeUpload>\n },\n customRequest: {\n type: Function as PropType<UploadRequest>\n },\n showFileList: {\n type: Boolean,\n default: true\n },\n fileList: {\n type: Array as PropType<FileInfo[]>\n },\n listType: {\n type: String as PropType<ListType>,\n default: 'text',\n validator: oneOf(['text', 'picture', 'picture-card'])\n },\n listItemClass: {\n type: String\n },\n beforeRemove: {\n type: Function as PropType<BeforeRemove>\n },\n onRemove: {\n type: Function as PropType<OnUploadRemove>,\n default: NOOP\n },\n onProgress: {\n type: Function as PropType<OnUploadProgress>,\n default: NOOP\n },\n onSuccess: {\n type: Function as PropType<OnUploadSuccess>,\n default: NOOP\n },\n onError: {\n type: Function as PropType<OnUploadError>,\n default: NOOP\n },\n error: {\n type: Boolean,\n default: false\n }\n};\n\nexport type UploadProps = ExtractPropTypes<typeof uploadProps>;\n\nexport const uploadEmits = {\n change: (file: FileInfo, fileList: FileInfo[]) => file.uid !== undefined && Array.isArray(fileList),\n preview: (file: FileInfo) => file.uid !== undefined,\n 'item-click': (file: FileInfo) => file.uid !== undefined,\n 'update:fileList': (fileList: FileInfo[]) => Array.isArray(fileList)\n};\n\nexport type UploadEmits = typeof uploadEmits;\n\nexport type UploadEmit = EmitFn<UploadEmits>;\n\nexport interface UploadContext {\n uploadFileList: Ref<FileInfo[]>;\n handleError: (err: UploadError, rawFile: RawFile) => void;\n handleSuccess: (res: Request, rawFile: RawFile) => void;\n handleProgress: (e: UploadProgress, rawFile: RawFile) => void;\n handleStart: (rawFile: RawFile) => void;\n handleRemove: (rawFile: RawFile) => void;\n handleExceed: (files: File[]) => void;\n handlePreview: (file: FileInfo) => void;\n}\n"],"names":[],"mappings":";;AAoDA,MAAM,OAAO,MAAM;AAAC;MAEP,cAAc;AAAA,EACzB,QAAQ;AAAA,IACN,MAAM;AAAA;AACR,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS,OAAO;AAAC;AACnB,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,KAAK;AAAA,IACH,MAAM;AAAA;AACR,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,SAAS,OAAO;AAAC;AACnB,EACA,MAAM;AAAA,IACJ,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,QAAQ;AAAA,IACN,MAAM;AAAA;AACR,EACA,OAAO;AAAA,IACL,MAAM;AAAA;AACR,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,iBAAiB;AAAA,IACf,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,cAAc;AAAA,IACZ,MAAM;AAAA;AACR,EACA,eAAe;AAAA,IACb,MAAM;AAAA;AACR,EACA,cAAc;AAAA,IACZ,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,UAAU;AAAA,IACR,MAAM;AAAA;AACR,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA,IACT,WAAW,MAAM,CAAC,QAAQ,WAAW,cAAc,CAAC;AAAA;AACtD,EACA,eAAe;AAAA,IACb,MAAM;AAAA;AACR,EACA,cAAc;AAAA,IACZ,MAAM;AAAA;AACR,EACA,UAAU;AAAA,IACR,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,YAAY;AAAA,IACV,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,WAAW;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,SAAS;AAAA,IACP,MAAM;AAAA,IACN,SAAS;AAAA;AACX,EACA,OAAO;AAAA,IACL,MAAM;AAAA,IACN,SAAS;AAAA;AAEb;MAIa,cAAc;AAAA,EACzB,QAAQ,CAAC,MAAgB,aAAyB,KAAK,QAAQ,UAAa,MAAM,QAAQ,QAAQ;AAAA,EAClG,SAAS,CAAC,SAAmB,KAAK,QAAQ;AAAA,EAC1C,cAAc,CAAC,SAAmB,KAAK,QAAQ;AAAA,EAC/C,mBAAmB,CAAC,aAAyB,MAAM,QAAQ,QAAQ;AACrE;;;;"}
@@ -14,6 +14,10 @@ const _sfc_main = defineComponent({
14
14
  },
15
15
  accept: {
16
16
  type: String
17
+ },
18
+ error: {
19
+ type: Boolean,
20
+ default: false
17
21
  }
18
22
  },
19
23
  emits: ["file"],
@@ -24,6 +28,7 @@ const _sfc_main = defineComponent({
24
28
  return;
25
29
  if (!props.accept) {
26
30
  emit("file", e.dataTransfer.files);
31
+ dragover.value = false;
27
32
  } else {
28
33
  const { accept } = props;
29
34
  const files = Array.from(e.dataTransfer.files).filter((file) => {
@@ -42,6 +47,7 @@ const _sfc_main = defineComponent({
42
47
  });
43
48
  });
44
49
  emit("file", files);
50
+ dragover.value = false;
45
51
  }
46
52
  };
47
53
  const onDragover = () => {
@@ -65,7 +71,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
65
71
  class: normalizeClass({
66
72
  [`${_ctx.prefixCls}-dragger`]: true,
67
73
  [`${_ctx.prefixCls}-dragger-hover`]: _ctx.dragover,
68
- [`${_ctx.prefixCls}-dragger-disabled`]: _ctx.disabled
74
+ [`${_ctx.prefixCls}-dragger-disabled`]: _ctx.disabled,
75
+ [`${_ctx.prefixCls}-dragger-error`]: _ctx.error
69
76
  }),
70
77
  onDrop: _cache[0] || (_cache[0] = withModifiers((...args) => _ctx.onDrop && _ctx.onDrop(...args), ["prevent"])),
71
78
  onDragover: _cache[1] || (_cache[1] = withModifiers((...args) => _ctx.onDragover && _ctx.onDragover(...args), ["prevent"])),
@@ -1 +1 @@
1
- {"version":3,"file":"UploadDragger.mjs","sources":["../../../../src/components/Upload/UploadDragger.vue"],"sourcesContent":["<template>\n <div\n :class=\"{\n [`${prefixCls}-dragger`]: true,\n [`${prefixCls}-dragger-hover`]: dragover,\n [`${prefixCls}-dragger-disabled`]: disabled\n }\"\n @drop.prevent=\"onDrop\"\n @dragover.prevent=\"onDragover\"\n @dragleave.prevent=\"onDragLeave\"\n >\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref } from 'vue';\n\nexport default defineComponent({\n name: 'UUploadDragger',\n props: {\n prefixCls: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n },\n accept: {\n type: String\n }\n },\n emits: ['file'],\n setup(props, { emit }) {\n const dragover = ref(false);\n\n const onDrop = (e: any) => {\n if (props.disabled) return;\n if (!props.accept) {\n emit('file', e.dataTransfer.files);\n } else {\n const { accept } = props;\n const files = Array.from(e.dataTransfer.files).filter((file) => {\n const { type, name } = file as any;\n const extname = name.indexOf('.') > -1 ? `.${name.split('.').pop()}` : '';\n const baseType = type.replace(/\\/.*/, '');\n return accept.split(',').some((acceptType) => {\n const validType = acceptType.trim();\n if (validType.startsWith('.')) {\n return extname === validType;\n }\n if (/\\/\\*$/.test(validType)) {\n return baseType === validType.replace(/\\/.*$/, '');\n }\n return type === validType;\n });\n });\n emit('file', files);\n }\n };\n\n const onDragover = () => {\n if (!props.disabled) {\n dragover.value = true;\n }\n };\n\n const onDragLeave = () => {\n dragover.value = false;\n };\n\n return {\n dragover,\n onDrop,\n onDragover,\n onDragLeave\n };\n }\n});\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_renderSlot"],"mappings":";;;AAkBA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,QAAQ;AAAA,MACN,MAAM;AAAA;AACR;AACF,EACA,OAAO,CAAC,MAAM;AAAA,EACd,MAAM,OAAO,EAAE,QAAQ;UACf,WAAW,IAAI,KAAK;UAEpB,SAAS,CAAC,MAAW;UACrB,MAAM;;UACN,CAAC,MAAM,QAAQ;aACZ,QAAQ,EAAE,aAAa,KAAK;AAAA,aAC5B;cACC,EAAE,WAAW;cACb,QAAQ,MAAM,KAAK,EAAE,aAAa,KAAK,EAAE,OAAO,CAAC,SAAS;gBACxD,EAAE,MAAM,SAAS;gBACjB,UAAU,KAAK,QAAQ,GAAG,IAAI,KAAK,IAAI,KAAK,MAAM,GAAG,EAAE,UAAU;gBACjE,WAAW,KAAK,QAAQ,QAAQ,EAAE;iBACjC,OAAO,MAAM,GAAG,EAAE,KAAK,CAAC,eAAe;kBACtC,YAAY,WAAW;gBACzB,UAAU,WAAW,GAAG,GAAG;qBACtB,YAAY;AAAA;gBAEjB,QAAQ,KAAK,SAAS,GAAG;qBACpB,aAAa,UAAU,QAAQ,SAAS,EAAE;AAAA;mBAE5C,SAAS;AAAA,WACjB;AAAA,SACF;aACI,QAAQ,KAAK;AAAA;AACpB;UAGI,aAAa,MAAM;UACnB,CAAC,MAAM,UAAU;iBACV,QAAQ;AAAA;AACnB;UAGI,cAAc,MAAM;eACf,QAAQ;AAAA;WAGZ;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;sBA9ECA,mBAWM;IAVH,OAAKC;UAAc,2BAAS;AAAA,UAA6B,iCAA4B;UAAoB,oCAA+B;;IAKxI,QAAI,qDAAU,qCAAM;IACpB,YAAQ,qDAAU,6CAAU;IAC5B,aAAS,qDAAU,+CAAW;;IAE/BC,WAAQ;;;;;;;"}
1
+ {"version":3,"file":"UploadDragger.mjs","sources":["../../../../src/components/Upload/UploadDragger.vue"],"sourcesContent":["<template>\n <div\n :class=\"{\n [`${prefixCls}-dragger`]: true,\n [`${prefixCls}-dragger-hover`]: dragover,\n [`${prefixCls}-dragger-disabled`]: disabled,\n [`${prefixCls}-dragger-error`]: error\n }\"\n @drop.prevent=\"onDrop\"\n @dragover.prevent=\"onDragover\"\n @dragleave.prevent=\"onDragLeave\"\n >\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref } from 'vue';\n\nexport default defineComponent({\n name: 'UUploadDragger',\n props: {\n prefixCls: {\n type: String,\n default: ''\n },\n disabled: {\n type: Boolean,\n default: false\n },\n accept: {\n type: String\n },\n error: {\n type: Boolean,\n default: false\n }\n },\n emits: ['file'],\n setup(props, { emit }) {\n const dragover = ref(false);\n\n const onDrop = (e: any) => {\n if (props.disabled) return;\n if (!props.accept) {\n emit('file', e.dataTransfer.files);\n dragover.value = false;\n } else {\n const { accept } = props;\n const files = Array.from(e.dataTransfer.files).filter((file) => {\n const { type, name } = file as any;\n const extname = name.indexOf('.') > -1 ? `.${name.split('.').pop()}` : '';\n const baseType = type.replace(/\\/.*/, '');\n return accept.split(',').some((acceptType) => {\n const validType = acceptType.trim();\n if (validType.startsWith('.')) {\n return extname === validType;\n }\n if (/\\/\\*$/.test(validType)) {\n return baseType === validType.replace(/\\/.*$/, '');\n }\n return type === validType;\n });\n });\n\n emit('file', files);\n dragover.value = false;\n }\n };\n\n const onDragover = () => {\n if (!props.disabled) {\n dragover.value = true;\n }\n };\n\n const onDragLeave = () => {\n dragover.value = false;\n };\n\n return {\n dragover,\n onDrop,\n onDragover,\n onDragLeave\n };\n }\n});\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_renderSlot"],"mappings":";;;AAmBA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,IACL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,QAAQ;AAAA,MACN,MAAM;AAAA;AACR,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA;AACX;AACF,EACA,OAAO,CAAC,MAAM;AAAA,EACd,MAAM,OAAO,EAAE,QAAQ;UACf,WAAW,IAAI,KAAK;UAEpB,SAAS,CAAC,MAAW;UACrB,MAAM;;UACN,CAAC,MAAM,QAAQ;aACZ,QAAQ,EAAE,aAAa,KAAK;iBACxB,QAAQ;AAAA,aACZ;cACC,EAAE,WAAW;cACb,QAAQ,MAAM,KAAK,EAAE,aAAa,KAAK,EAAE,OAAO,CAAC,SAAS;gBACxD,EAAE,MAAM,SAAS;gBACjB,UAAU,KAAK,QAAQ,GAAG,IAAI,KAAK,IAAI,KAAK,MAAM,GAAG,EAAE,UAAU;gBACjE,WAAW,KAAK,QAAQ,QAAQ,EAAE;iBACjC,OAAO,MAAM,GAAG,EAAE,KAAK,CAAC,eAAe;kBACtC,YAAY,WAAW;gBACzB,UAAU,WAAW,GAAG,GAAG;qBACtB,YAAY;AAAA;gBAEjB,QAAQ,KAAK,SAAS,GAAG;qBACpB,aAAa,UAAU,QAAQ,SAAS,EAAE;AAAA;mBAE5C,SAAS;AAAA,WACjB;AAAA,SACF;aAEI,QAAQ,KAAK;iBACT,QAAQ;AAAA;AACnB;UAGI,aAAa,MAAM;UACnB,CAAC,MAAM,UAAU;iBACV,QAAQ;AAAA;AACnB;UAGI,cAAc,MAAM;eACf,QAAQ;AAAA;WAGZ;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;sBAtFCA,mBAYM;IAXH,OAAKC;UAAc,2BAAS;AAAA,UAA6B,iCAA4B;UAAoB,oCAA+B;UAAoB,iCAA4B;;IAMxL,QAAI,qDAAU,qCAAM;IACpB,YAAQ,qDAAU,6CAAU;IAC5B,aAAS,qDAAU,+CAAW;;IAE/BC,WAAQ;;;;;;;"}
@@ -10,6 +10,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
10
10
  accept: {
11
11
  type: StringConstructor;
12
12
  };
13
+ error: {
14
+ type: BooleanConstructor;
15
+ default: boolean;
16
+ };
13
17
  }>, {
14
18
  dragover: import("vue").Ref<boolean, boolean>;
15
19
  onDrop: (e: any) => void;
@@ -27,9 +31,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
27
31
  accept: {
28
32
  type: StringConstructor;
29
33
  };
34
+ error: {
35
+ type: BooleanConstructor;
36
+ default: boolean;
37
+ };
30
38
  }>> & Readonly<{
31
39
  onFile?: (...args: any[]) => any;
32
40
  }>, {
41
+ error: boolean;
33
42
  prefixCls: string;
34
43
  disabled: boolean;
35
44
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -61,6 +61,10 @@ const _sfc_main = defineComponent({
61
61
  },
62
62
  customRequest: {
63
63
  type: Function
64
+ },
65
+ error: {
66
+ type: Boolean,
67
+ default: false
64
68
  }
65
69
  },
66
70
  setup(props) {
@@ -205,6 +209,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
205
209
  key: 0,
206
210
  disabled: _ctx.disabled,
207
211
  "prefix-cls": _ctx.prefixCls,
212
+ error: _ctx.error,
208
213
  accept: _ctx.accept,
209
214
  onFile: _ctx.uploadFiles
210
215
  }, {
@@ -212,7 +217,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
212
217
  renderSlot(_ctx.$slots, "default")
213
218
  ]),
214
219
  _: 3
215
- }, 8, ["disabled", "prefix-cls", "accept", "onFile"])) : renderSlot(_ctx.$slots, "default", { key: 1 }),
220
+ }, 8, ["disabled", "prefix-cls", "error", "accept", "onFile"])) : renderSlot(_ctx.$slots, "default", { key: 1 }),
216
221
  createElementVNode("input", {
217
222
  ref: "fileRef",
218
223
  class: normalizeClass(`${_ctx.prefixCls}-input`),
@@ -1 +1 @@
1
- {"version":3,"file":"Uploader.mjs","sources":["../../../../src/components/Upload/Uploader.vue"],"sourcesContent":["<template>\n <div\n :class=\"{\n [`${prefixCls}`]: true,\n [`${prefixCls}-${listType}`]: true,\n [`${prefixCls}-drag`]: drag,\n [`${prefixCls}-disabled`]: disabled\n }\"\n tabindex=\"0\"\n @click=\"handleClick\"\n @keydown.enter=\"handleEnter\"\n >\n <template v-if=\"drag\">\n <UploadDragger :disabled=\"disabled\" :prefix-cls=\"prefixCls\" :accept=\"accept\" @file=\"uploadFiles\">\n <slot />\n </UploadDragger>\n </template>\n <template v-else>\n <slot />\n </template>\n <input ref=\"fileRef\" :class=\"`${prefixCls}-input`\" type=\"file\" :name=\"name\" :multiple=\"multiple\" :accept=\"accept\" @change=\"handleChange\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, inject } from 'vue';\nimport type { PropType } from 'vue';\nimport defaultRequest from './uitls/request';\nimport UploadDragger from './UploadDragger.vue';\nimport getUid from './uitls/uid';\nimport type { BeforeUpload, ListType, UploadContext, UploadRequest, RawFile, FileInfo, UploadProgress, UploadError } from './Upload.type';\n\nexport default defineComponent({\n name: 'UUploader',\n components: {\n UploadDragger\n },\n props: {\n prefixCls: {\n type: String,\n default: ''\n },\n listType: {\n type: String as PropType<ListType>,\n default: 'text',\n validator: (v: string) => ['text', 'picture', 'picture-card'].includes(v)\n },\n action: {\n type: String\n },\n name: {\n type: String,\n default: 'file'\n },\n data: {\n type: Object,\n default: () => ({})\n },\n multiple: {\n type: Boolean,\n default: false\n },\n headers: {\n type: Object,\n default: () => ({})\n },\n drag: {\n type: Boolean,\n default: false\n },\n accept: {\n type: String\n },\n limit: {\n type: Number\n },\n disabled: {\n type: Boolean,\n default: false\n },\n withCredentials: {\n type: Boolean,\n default: false\n },\n beforeUpload: {\n type: Function as PropType<BeforeUpload>\n },\n customRequest: {\n type: Function as PropType<UploadRequest>\n }\n },\n setup(props) {\n const reqs = ref<Record<string, XMLHttpRequest | undefined>>({});\n const fileRef = ref<any | null>(null);\n\n const { handleError, handleSuccess, handleProgress, handleStart, handleExceed } = inject<UploadContext>('UploadContext', {} as UploadContext);\n\n const post = (rawFile: any) => {\n const { uid } = rawFile;\n if (!props.action) {\n return;\n }\n const option = {\n headers: props.headers,\n withCredentials: props.withCredentials,\n file: rawFile,\n data: props.data,\n fileName: props.name,\n action: props.action,\n onProgress: (e: UploadProgress) => {\n handleProgress(e, rawFile);\n },\n onSuccess: (res: any) => {\n handleSuccess(res, rawFile);\n delete reqs.value[uid];\n },\n onError: (err: UploadError) => {\n handleError(err, rawFile);\n delete reqs.value[uid];\n }\n };\n const request = defaultRequest || props.customRequest;\n const req = request(option) as XMLHttpRequest;\n handleStart(rawFile);\n reqs.value[uid] = req;\n if (req instanceof Promise) {\n req.then(option.onSuccess, option.onError);\n }\n };\n\n const upload = (rawFile: RawFile, isLast = false) => {\n if (fileRef.value) {\n fileRef.value.value = '';\n }\n if (!props.beforeUpload) {\n return post(rawFile);\n }\n const before = props.beforeUpload(rawFile, isLast);\n if (before instanceof Promise) {\n before\n .then((processedFile) => {\n const processedFileType = Object.prototype.toString.call(processedFile);\n if (processedFileType === '[object File]' || processedFileType === '[object Blob]') {\n post(processedFile);\n } else {\n post(rawFile);\n }\n })\n .catch((e) => {\n handleError(e, rawFile);\n });\n } else if (before !== false) {\n post(rawFile);\n }\n };\n\n const abort = (file: FileInfo) => {\n const _reqs = reqs.value;\n if (file) {\n const uid = file.uid!;\n if (_reqs[uid] && _reqs[uid]?.abort) {\n _reqs[uid]?.abort();\n }\n delete _reqs[uid];\n } else {\n Object.keys(_reqs).forEach((uid) => {\n if (_reqs[uid]) _reqs[uid]?.abort();\n delete _reqs[uid];\n });\n }\n };\n\n const uploadFiles = (files: File[]) => {\n if (props.limit !== undefined && files.length > props.limit) {\n handleExceed(files);\n return;\n }\n let postFiles = Array.from(files);\n if (!props.multiple) {\n postFiles = postFiles.slice(0, 1);\n }\n if (postFiles.length === 0) {\n return;\n }\n postFiles\n .map((f) => {\n (f as RawFile).uid = getUid();\n return f;\n })\n .forEach((rawFile, i) => {\n upload(rawFile, i === postFiles.length - 1);\n });\n };\n\n const handleClick = () => {\n if (!props.disabled) {\n if (fileRef.value) {\n fileRef.value.value = '';\n fileRef.value.click();\n }\n }\n };\n\n const handleEnter = () => {\n handleClick();\n };\n\n const handleChange = (e: any) => {\n const { files } = e.target;\n if (!files) return;\n uploadFiles(files);\n };\n\n return {\n abort,\n upload,\n fileRef,\n uploadFiles,\n handleClick,\n handleEnter,\n handleChange\n };\n }\n});\n</script>\n"],"names":["defaultRequest","upload","_a","_createElementBlock","_normalizeClass","_createBlock","_renderSlot","_createElementVNode"],"mappings":"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"}
1
+ {"version":3,"file":"Uploader.mjs","sources":["../../../../src/components/Upload/Uploader.vue"],"sourcesContent":["<template>\n <div\n :class=\"{\n [`${prefixCls}`]: true,\n [`${prefixCls}-${listType}`]: true,\n [`${prefixCls}-drag`]: drag,\n [`${prefixCls}-disabled`]: disabled\n }\"\n tabindex=\"0\"\n @click=\"handleClick\"\n @keydown.enter=\"handleEnter\"\n >\n <template v-if=\"drag\">\n <UploadDragger :disabled=\"disabled\" :prefix-cls=\"prefixCls\" :error=\"error\" :accept=\"accept\" @file=\"uploadFiles\">\n <slot />\n </UploadDragger>\n </template>\n <template v-else>\n <slot />\n </template>\n <input ref=\"fileRef\" :class=\"`${prefixCls}-input`\" type=\"file\" :name=\"name\" :multiple=\"multiple\" :accept=\"accept\" @change=\"handleChange\" />\n </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, ref, inject } from 'vue';\nimport type { PropType } from 'vue';\nimport defaultRequest from './uitls/request';\nimport UploadDragger from './UploadDragger.vue';\nimport getUid from './uitls/uid';\nimport type { BeforeUpload, ListType, UploadContext, UploadRequest, RawFile, FileInfo, UploadProgress, UploadError } from './Upload.type';\n\nexport default defineComponent({\n name: 'UUploader',\n components: {\n UploadDragger\n },\n props: {\n prefixCls: {\n type: String,\n default: ''\n },\n listType: {\n type: String as PropType<ListType>,\n default: 'text',\n validator: (v: string) => ['text', 'picture', 'picture-card'].includes(v)\n },\n action: {\n type: String\n },\n name: {\n type: String,\n default: 'file'\n },\n data: {\n type: Object,\n default: () => ({})\n },\n multiple: {\n type: Boolean,\n default: false\n },\n headers: {\n type: Object,\n default: () => ({})\n },\n drag: {\n type: Boolean,\n default: false\n },\n accept: {\n type: String\n },\n limit: {\n type: Number\n },\n disabled: {\n type: Boolean,\n default: false\n },\n withCredentials: {\n type: Boolean,\n default: false\n },\n beforeUpload: {\n type: Function as PropType<BeforeUpload>\n },\n customRequest: {\n type: Function as PropType<UploadRequest>\n },\n error: {\n type: Boolean,\n default: false\n }\n },\n setup(props) {\n const reqs = ref<Record<string, XMLHttpRequest | undefined>>({});\n const fileRef = ref<any | null>(null);\n\n const { handleError, handleSuccess, handleProgress, handleStart, handleExceed } = inject<UploadContext>('UploadContext', {} as UploadContext);\n\n const post = (rawFile: any) => {\n const { uid } = rawFile;\n if (!props.action) {\n return;\n }\n const option = {\n headers: props.headers,\n withCredentials: props.withCredentials,\n file: rawFile,\n data: props.data,\n fileName: props.name,\n action: props.action,\n onProgress: (e: UploadProgress) => {\n handleProgress(e, rawFile);\n },\n onSuccess: (res: any) => {\n handleSuccess(res, rawFile);\n delete reqs.value[uid];\n },\n onError: (err: UploadError) => {\n handleError(err, rawFile);\n delete reqs.value[uid];\n }\n };\n const request = defaultRequest || props.customRequest;\n const req = request(option) as XMLHttpRequest;\n handleStart(rawFile);\n reqs.value[uid] = req;\n if (req instanceof Promise) {\n req.then(option.onSuccess, option.onError);\n }\n };\n\n const upload = (rawFile: RawFile, isLast = false) => {\n if (fileRef.value) {\n fileRef.value.value = '';\n }\n if (!props.beforeUpload) {\n return post(rawFile);\n }\n const before = props.beforeUpload(rawFile, isLast);\n if (before instanceof Promise) {\n before\n .then((processedFile) => {\n const processedFileType = Object.prototype.toString.call(processedFile);\n if (processedFileType === '[object File]' || processedFileType === '[object Blob]') {\n post(processedFile);\n } else {\n post(rawFile);\n }\n })\n .catch((e) => {\n handleError(e, rawFile);\n });\n } else if (before !== false) {\n post(rawFile);\n }\n };\n\n const abort = (file: FileInfo) => {\n const _reqs = reqs.value;\n if (file) {\n const uid = file.uid!;\n if (_reqs[uid] && _reqs[uid]?.abort) {\n _reqs[uid]?.abort();\n }\n delete _reqs[uid];\n } else {\n Object.keys(_reqs).forEach((uid) => {\n if (_reqs[uid]) _reqs[uid]?.abort();\n delete _reqs[uid];\n });\n }\n };\n\n const uploadFiles = (files: File[]) => {\n if (props.limit !== undefined && files.length > props.limit) {\n handleExceed(files);\n return;\n }\n let postFiles = Array.from(files);\n if (!props.multiple) {\n postFiles = postFiles.slice(0, 1);\n }\n if (postFiles.length === 0) {\n return;\n }\n postFiles\n .map((f) => {\n (f as RawFile).uid = getUid();\n return f;\n })\n .forEach((rawFile, i) => {\n upload(rawFile, i === postFiles.length - 1);\n });\n };\n\n const handleClick = () => {\n if (!props.disabled) {\n if (fileRef.value) {\n fileRef.value.value = '';\n fileRef.value.click();\n }\n }\n };\n\n const handleEnter = () => {\n handleClick();\n };\n\n const handleChange = (e: any) => {\n const { files } = e.target;\n if (!files) return;\n uploadFiles(files);\n };\n\n return {\n abort,\n upload,\n fileRef,\n uploadFiles,\n handleClick,\n handleEnter,\n handleChange\n };\n }\n});\n</script>\n"],"names":["defaultRequest","upload","_a","_createElementBlock","_normalizeClass","_createBlock","_renderSlot","_createElementVNode"],"mappings":";;;;;;AAgCA,MAAK,YAAa,gBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,IACV;AAAA;AACF,EACA,OAAO;AAAA,IACL,WAAW;AAAA,MACT,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA,MACT,WAAW,CAAC,MAAc,CAAC,QAAQ,WAAW,cAAc,EAAE,SAAS,CAAC;AAAA;AAC1E,IACA,QAAQ;AAAA,MACN,MAAM;AAAA;AACR,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,OAAO;AAAC;AACnB,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,SAAS;AAAA,MACP,MAAM;AAAA,MACN,SAAS,OAAO;AAAC;AACnB,IACA,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,QAAQ;AAAA,MACN,MAAM;AAAA;AACR,IACA,OAAO;AAAA,MACL,MAAM;AAAA;AACR,IACA,UAAU;AAAA,MACR,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,iBAAiB;AAAA,MACf,MAAM;AAAA,MACN,SAAS;AAAA;AACX,IACA,cAAc;AAAA,MACZ,MAAM;AAAA;AACR,IACA,eAAe;AAAA,MACb,MAAM;AAAA;AACR,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA;AACX;AACF,EACA,MAAM,OAAO;UACL,OAAO,IAAgD,EAAE;UACzD,UAAU,IAAgB,IAAI;UAE9B,EAAE,aAAa,eAAe,gBAAgB,aAAa,iBAAiB,OAAsB,iBAAiB,EAAmB;UAEtI,OAAO,CAAC,YAAiB;YACvB,EAAE,QAAQ;UACZ,CAAC,MAAM,QAAQ;;;YAGb,SAAS;AAAA,QACb,SAAS,MAAM;AAAA,QACf,iBAAiB,MAAM;AAAA,QACvB,MAAM;AAAA,QACN,MAAM,MAAM;AAAA,QACZ,UAAU,MAAM;AAAA,QAChB,QAAQ,MAAM;AAAA,QACd,YAAY,CAAC,MAAsB;yBAClB,GAAG,OAAO;AAAA;AAC3B,QACA,WAAW,CAAC,QAAa;wBACT,KAAK,OAAO;iBACnB,KAAK,MAAM;AAAA;AACpB,QACA,SAAS,CAAC,QAAqB;sBACjB,KAAK,OAAO;iBACjB,KAAK,MAAM;AAAA;AACpB;YAEI,UAAUA,UAAkB,MAAM;YAClC,MAAM,QAAQ,MAAM;kBACd,OAAO;WACd,MAAM,OAAO;UACd,eAAe,SAAS;YACtB,KAAK,OAAO,WAAW,OAAO,OAAO;AAAA;AAC3C;UAGIC,WAAS,CAAC,SAAkB,SAAS,UAAU;UAC/C,QAAQ,OAAO;gBACT,MAAM,QAAQ;AAAA;UAEpB,CAAC,MAAM,cAAc;eAChB,KAAK,OAAO;AAAA;YAEf,SAAS,MAAM,aAAa,SAAS,MAAM;UAC7C,kBAAkB,SAAS;eAE1B,KAAK,CAAC,kBAAkB;gBACjB,oBAAoB,OAAO,UAAU,SAAS,KAAK,aAAa;cAClE,sBAAsB,mBAAmB,sBAAsB,iBAAiB;iBAC7E,aAAa;AAAA,iBACb;iBACA,OAAO;AAAA;AACd,SACD,EACA,MAAM,CAAC,MAAM;sBACA,GAAG,OAAO;AAAA,SACvB;AAAA,iBACM,WAAW,OAAO;aACtB,OAAO;AAAA;AACd;UAGI,QAAQ,CAAC,SAAmB;AAvItC;YAwIY,QAAQ,KAAK;UACf,MAAM;cACF,MAAM,KAAK;YACb,MAAM,UAAQ,WAAM,SAAN,mBAAY,QAAO;sBAC7B,4BAAM;AAAA;eAEP,MAAM;AAAA,aACR;eACE,KAAK,KAAK,EAAE,QAAQ,CAAC,QAAQ;AAhJ5C,cAAAC;cAiJc,MAAM;yBAAY,6BAAM;iBACrB,MAAM;AAAA,SACd;AAAA;AACH;UAGI,cAAc,CAAC,UAAkB;UACjC,MAAM,UAAU,UAAa,MAAM,SAAS,MAAM,OAAO;qBAC9C,KAAK;;;UAGhB,YAAY,MAAM,KAAK,KAAK;UAC5B,CAAC,MAAM,UAAU;oBACP,UAAU,MAAM,GAAG,CAAC;AAAA;UAE9B,UAAU,WAAW,GAAG;;;gBAIzB,IAAI,CAAC,MAAM;AACT,UAAc,MAAM;eACd;AAAA,OACR,EACA,QAAQ,CAAC,SAAS,MAAM;iBAChB,SAAS,MAAM,UAAU,SAAS,CAAC;AAAA,OAC3C;AAAA;UAGC,cAAc,MAAM;UACpB,CAAC,MAAM,UAAU;YACf,QAAQ,OAAO;kBACT,MAAM,QAAQ;kBACd,MAAM;AAAM;AACtB;AACF;UAGI,cAAc,MAAM;;AACZ;UAGR,eAAe,CAAC,MAAW;YACzB,EAAE,UAAU,EAAE;UAChB,CAAC;;kBACO,KAAK;AAAA;WAGZ;AAAA,MACL;AAAA,cACAD;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;;sBAlOCE,mBAoBM;IAnBH,OAAKC;UAAc,mBAAS;AAAA,UAAqB,kBAAa,kBAAQ;AAAA,UAAqB,wBAAmB;UAAgB,4BAAuB;;IAMtJ,UAAS;AAAA,IACR,SAAK,uCAAE;IACP,WAAO,gDAAQ,+CAAW;;IAEX,0BACdC,YAEgB;;MAFA,UAAU;MAAW,cAAY;MAAY,OAAO;MAAQ,QAAQ;MAAS,QAAM;;uBACjG,MAAQ;AAAA,QAARC,WAAQ;;;sEAIVA,WAAQ;IAEVC,mBAA2I;MAApI,KAAI;AAAA,MAAW,OAAKH,kBAAK,sBAAS;AAAA,MAAU,MAAK;AAAA,MAAQ,MAAM;MAAO,UAAU;MAAW,QAAQ;MAAS,UAAM,uCAAE;;;;;;;;"}
@@ -53,6 +53,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
53
53
  customRequest: {
54
54
  type: PropType<UploadRequest>;
55
55
  };
56
+ error: {
57
+ type: BooleanConstructor;
58
+ default: boolean;
59
+ };
56
60
  }>, {
57
61
  abort: (file: FileInfo) => void;
58
62
  upload: (rawFile: RawFile, isLast?: boolean) => void;
@@ -114,7 +118,12 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
114
118
  customRequest: {
115
119
  type: PropType<UploadRequest>;
116
120
  };
121
+ error: {
122
+ type: BooleanConstructor;
123
+ default: boolean;
124
+ };
117
125
  }>> & Readonly<{}>, {
126
+ error: boolean;
118
127
  name: string;
119
128
  prefixCls: string;
120
129
  data: Record<string, any>;
@@ -137,6 +146,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
137
146
  accept: {
138
147
  type: StringConstructor;
139
148
  };
149
+ error: {
150
+ type: BooleanConstructor;
151
+ default: boolean;
152
+ };
140
153
  }>, {
141
154
  dragover: import("vue").Ref<boolean, boolean>;
142
155
  onDrop: (e: any) => void;
@@ -154,9 +167,14 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
154
167
  accept: {
155
168
  type: StringConstructor;
156
169
  };
170
+ error: {
171
+ type: BooleanConstructor;
172
+ default: boolean;
173
+ };
157
174
  }>> & Readonly<{
158
175
  onFile?: (...args: any[]) => any;
159
176
  }>, {
177
+ error: boolean;
160
178
  prefixCls: string;
161
179
  disabled: boolean;
162
180
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
@@ -80,6 +80,10 @@ export declare const UUpload: {
80
80
  type: import("vue").PropType<import("./Upload.type").OnUploadError>;
81
81
  default: () => void;
82
82
  };
83
+ error: {
84
+ type: BooleanConstructor;
85
+ default: boolean;
86
+ };
83
87
  }>> & Readonly<{
84
88
  onChange?: (file: import("./Upload.type").FileInfo, fileList: import("./Upload.type").FileInfo[]) => any;
85
89
  onPreview?: (file: import("./Upload.type").FileInfo) => any;
@@ -126,6 +130,7 @@ export declare const UUpload: {
126
130
  'item-click': (file: import("./Upload.type").FileInfo) => boolean;
127
131
  'update:fileList': (fileList: import("./Upload.type").FileInfo[]) => boolean;
128
132
  }, import("vue").PublicProps, {
133
+ error: boolean;
129
134
  name: string;
130
135
  data: Record<string, any>;
131
136
  onError: import("./Upload.type").OnUploadError;
@@ -227,6 +232,10 @@ export declare const UUpload: {
227
232
  type: import("vue").PropType<import("./Upload.type").OnUploadError>;
228
233
  default: () => void;
229
234
  };
235
+ error: {
236
+ type: BooleanConstructor;
237
+ default: boolean;
238
+ };
230
239
  }>> & Readonly<{
231
240
  onChange?: (file: import("./Upload.type").FileInfo, fileList: import("./Upload.type").FileInfo[]) => any;
232
241
  onPreview?: (file: import("./Upload.type").FileInfo) => any;
@@ -268,6 +277,7 @@ export declare const UUpload: {
268
277
  [key: string]: any;
269
278
  }>[];
270
279
  }, {}, {}, {}, {
280
+ error: boolean;
271
281
  name: string;
272
282
  data: Record<string, any>;
273
283
  onError: import("./Upload.type").OnUploadError;
@@ -366,6 +376,10 @@ export declare const UUpload: {
366
376
  type: import("vue").PropType<import("./Upload.type").OnUploadError>;
367
377
  default: () => void;
368
378
  };
379
+ error: {
380
+ type: BooleanConstructor;
381
+ default: boolean;
382
+ };
369
383
  }>> & Readonly<{
370
384
  onChange?: (file: import("./Upload.type").FileInfo, fileList: import("./Upload.type").FileInfo[]) => any;
371
385
  onPreview?: (file: import("./Upload.type").FileInfo) => any;
@@ -412,6 +426,7 @@ export declare const UUpload: {
412
426
  'item-click': (file: import("./Upload.type").FileInfo) => boolean;
413
427
  'update:fileList': (fileList: import("./Upload.type").FileInfo[]) => boolean;
414
428
  }, string, {
429
+ error: boolean;
415
430
  name: string;
416
431
  data: Record<string, any>;
417
432
  onError: import("./Upload.type").OnUploadError;
@@ -111,7 +111,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
111
111
  _: 1
112
112
  }, 8, ["size", "onClick"])) : vue.createCommentVNode("v-if", true),
113
113
  vue.createVNode(_component_UButton, {
114
- type: "primary",
114
+ type: _ctx.okType,
115
115
  size: _ctx.size,
116
116
  loading: _ctx.stateLoading,
117
117
  onClick: _ctx.handleOk
@@ -120,7 +120,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
120
120
  vue.createTextVNode(vue.toDisplayString(_ctx.okText || _ctx.computedLocale.okText), 1)
121
121
  ]),
122
122
  _: 1
123
- }, 8, ["size", "loading", "onClick"])
123
+ }, 8, ["type", "size", "loading", "onClick"])
124
124
  ]),
125
125
  default: vue.withCtx(() => [
126
126
  vue.createElementVNode("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"ConfirmDialog.js","sources":["../../../../src/components/Modal/ConfirmDialog.vue"],"sourcesContent":["<template>\n <Modal\n :id=\"id\"\n :visible=\"visible\"\n :custom-class=\"confirmClass\"\n :mask-closable=\"false\"\n :width=\"computedWidth\"\n :size=\"size\"\n :after-close=\"afterClose\"\n :closable=\"closable\"\n @close=\"closableClose\"\n >\n <div :class=\"`${prefixCls}-confirm-body-wrapper`\">\n <div :class=\"`${prefixCls}-confirm-body`\">\n <UIcon :class=\"`${prefixCls}-confirm-icon`\">\n <component :is=\"iconName\" />\n </UIcon>\n <div :class=\"`${prefixCls}-confirm-content-wrap`\">\n <span v-if=\"title !== undefined\" :class=\"`${prefixCls}-confirm-title`\">\n {{ title }}\n </span>\n <div :class=\"`${prefixCls}-confirm-content`\">\n <template v-if=\"typeof content === 'function'\">\n <Render :render=\"content\" />\n </template>\n <template v-else> {{ content }} </template>\n </div>\n </div>\n </div>\n </div>\n <template #footer>\n <UButton v-if=\"okCancel\" :size=\"size\" @click=\"handleCancel\">\n {{ cancelText || computedLocale.cancelText }}\n </UButton>\n <UButton type=\"primary\" :size=\"size\" :loading=\"stateLoading\" @click=\"handleOk\">\n {{ okText || computedLocale.okText }}\n </UButton>\n </template>\n </Modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref } from 'vue';\n\nimport UIcon from '@uxd-ui/components/Icon';\nimport { Info, CheckCircle, CircleX, CircleAlert, HelpCircle, CircleHelp } from 'lucide-vue-next';\nimport UButton from '@uxd-ui/components/Button';\nimport Render from '../base/Render';\nimport Modal from './Modal.vue';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport { confirmDialogProps, type ModalCloseType } from './Modal.type';\n\nexport default defineComponent({\n name: 'ConfirmDialog',\n components: {\n Modal,\n UIcon,\n UButton,\n Info,\n CheckCircle,\n CircleX,\n CircleAlert,\n HelpCircle,\n CircleHelp,\n Render\n },\n props: confirmDialogProps,\n setup(props) {\n const { prefixCls, config: globalConfig } = useGlobalConfig('modal');\n const stateLoading = ref(false);\n // ===================== computed ============================\n const confirmClass = computed(() => {\n return [`${prefixCls.value}-confirm`, `${prefixCls.value}-confirm-${props.type}`, `${prefixCls.value}-${props.type}`];\n });\n const computedLocale = computed(() => {\n return props.locale || globalConfig.locale.modal;\n });\n // ===================== computed ============================\n const closeConfirm = () => {\n if (props.close) {\n props.close();\n }\n };\n const handleCancel = () => {\n if (props.onCancel) {\n props.onCancel();\n }\n closeConfirm();\n };\n const handleOk = () => {\n if (props.onOk) {\n props.onOk();\n }\n if (props.loading) {\n stateLoading.value = true;\n } else {\n closeConfirm();\n }\n };\n\n const closableClose = (type: ModalCloseType) => {\n if (props.closable && type === 'close') {\n closeConfirm();\n }\n };\n\n const computedWidth = computed(() => {\n if (props.width) {\n return props.width;\n }\n if (props.size === 'small') {\n return 384;\n }\n return 416;\n });\n\n return {\n prefixCls,\n confirmClass,\n stateLoading,\n computedLocale,\n computedWidth,\n handleOk,\n handleCancel,\n closableClose\n };\n }\n});\n</script>\n"],"names":["defineComponent","Modal","UIcon","UButton","Info","CheckCircle","CircleX","CircleAlert","HelpCircle","CircleHelp","Render","confirmDialogProps","useGlobalConfig","ref","computed","_createBlock","_withCtx","_createVNode","_createElementVNode","_normalizeClass","_resolveDynamicComponent","_createElementBlock","_Fragment"],"mappings":";;;;;;;;;;;;;;AAoDA,MAAK,YAAaA,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,WACVC;AAAA,WACAC;AAAA,aACAC;AAAA,UACAC;AAAA,iBACAC;AAAA,aACAC;AAAA,iBACAC;AAAA,gBACAC;AAAA,gBACAC;AAAA,YACAC;AAAA;AACF,EACA,OAAOC;AAAA,EACP,MAAM,OAAO;UACL,EAAE,WAAW,QAAQ,iBAAiBC,2BAAgB,OAAO;UAC7D,eAAeC,QAAI,KAAK;UAExB,eAAeC,aAAS,MAAM;aAC3B,CAAC,GAAG,UAAU,iBAAiB,GAAG,UAAU,iBAAiB,MAAM,QAAQ,GAAG,UAAU,SAAS,MAAM,MAAM;AAAA,KACrH;UACK,iBAAiBA,aAAS,MAAM;aAC7B,MAAM,UAAU,aAAa,OAAO;AAAA,KAC5C;UAEK,eAAe,MAAM;UACrB,MAAM,OAAO;cACT;AAAM;AACd;UAEI,eAAe,MAAM;UACrB,MAAM,UAAU;cACZ;AAAS;;AAEJ;UAET,WAAW,MAAM;UACjB,MAAM,MAAM;cACR;AAAK;UAET,MAAM,SAAS;qBACJ,QAAQ;AAAA,aAChB;;AACQ;AACf;UAGI,gBAAgB,CAAC,SAAyB;UAC1C,MAAM,YAAY,SAAS,SAAS;;AACzB;AACf;UAGI,gBAAgBA,aAAS,MAAM;UAC/B,MAAM,OAAO;eACR,MAAM;AAAA;UAEX,MAAM,SAAS,SAAS;eACnB;AAAA;aAEF;AAAA,KACR;WAEM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;;;;0BA9HCC,gBAqCQ;IApCL,IAAI;IACJ,SAAS;IACT,gBAAc;IACd,iBAAe;AAAA,IACf,OAAO;IACP,MAAM;IACN,eAAa;IACb,UAAU;IACV,SAAO;;IAoBG,QAAMC,YACf,MAEU;AAAA,MAFK,kCAAfD,gBAEU;;QAFgB,MAAM;QAAO,SAAO;;6BAC5C,MAA6C;AAAA,kDAA1C,mBAAc,oBAAe,UAAU;;;;MAE5CE,gBAEU;QAFD,MAAK;AAAA,QAAW,MAAM;QAAO,SAAS;QAAe,SAAO;;6BACnE,MAAqC;AAAA,kDAAlC,eAAU,oBAAe,MAAM;;;;;yBAvBtC,MAiBM;AAAA,MAjBNC,uBAiBM;QAjBA,OAAKC,sBAAK,qCAAS;AAAA;QACvBD,uBAeM;UAfA,OAAKC,sBAAK,6BAAS;AAAA;UACvBF,gBAEQ;YAFA,OAAKE,sBAAK,6BAAS;AAAA;iCACzB,MAA4B;AAAA,gCAA5BJ,gBAA4BK,4BAAZ,aAAQ;;;;UAE1BF,uBAUM;YAVA,OAAKC,sBAAK,qCAAS;AAAA;YACX,eAAU,2BAAtBE,uBAEO;;cAF2B,OAAKF,sBAAK,8BAAS;AAAA,mCAChD,UAAK;YAEVD,uBAKM;cALA,OAAKC,sBAAK,gCAAS;AAAA;qBACA,iBAAO,+BAC5BJ,gBAA4B;;gBAAnB,QAAQ;2DAEnBM,uBAA2CC;wDAAtB,YAAO;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"ConfirmDialog.js","sources":["../../../../src/components/Modal/ConfirmDialog.vue"],"sourcesContent":["<template>\n <Modal\n :id=\"id\"\n :visible=\"visible\"\n :custom-class=\"confirmClass\"\n :mask-closable=\"false\"\n :width=\"computedWidth\"\n :size=\"size\"\n :after-close=\"afterClose\"\n :closable=\"closable\"\n @close=\"closableClose\"\n >\n <div :class=\"`${prefixCls}-confirm-body-wrapper`\">\n <div :class=\"`${prefixCls}-confirm-body`\">\n <UIcon :class=\"`${prefixCls}-confirm-icon`\">\n <component :is=\"iconName\" />\n </UIcon>\n <div :class=\"`${prefixCls}-confirm-content-wrap`\">\n <span v-if=\"title !== undefined\" :class=\"`${prefixCls}-confirm-title`\">\n {{ title }}\n </span>\n <div :class=\"`${prefixCls}-confirm-content`\">\n <template v-if=\"typeof content === 'function'\">\n <Render :render=\"content\" />\n </template>\n <template v-else> {{ content }} </template>\n </div>\n </div>\n </div>\n </div>\n <template #footer>\n <UButton v-if=\"okCancel\" :size=\"size\" @click=\"handleCancel\">\n {{ cancelText || computedLocale.cancelText }}\n </UButton>\n <UButton :type=\"okType\" :size=\"size\" :loading=\"stateLoading\" @click=\"handleOk\">\n {{ okText || computedLocale.okText }}\n </UButton>\n </template>\n </Modal>\n</template>\n\n<script lang=\"ts\">\nimport { computed, defineComponent, ref } from 'vue';\n\nimport UIcon from '@uxd-ui/components/Icon';\nimport { Info, CheckCircle, CircleX, CircleAlert, HelpCircle, CircleHelp } from 'lucide-vue-next';\nimport UButton from '@uxd-ui/components/Button';\nimport Render from '../base/Render';\nimport Modal from './Modal.vue';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport { confirmDialogProps, type ModalCloseType } from './Modal.type';\n\nexport default defineComponent({\n name: 'ConfirmDialog',\n components: {\n Modal,\n UIcon,\n UButton,\n Info,\n CheckCircle,\n CircleX,\n CircleAlert,\n HelpCircle,\n CircleHelp,\n Render\n },\n props: confirmDialogProps,\n setup(props) {\n const { prefixCls, config: globalConfig } = useGlobalConfig('modal');\n const stateLoading = ref(false);\n // ===================== computed ============================\n const confirmClass = computed(() => {\n return [`${prefixCls.value}-confirm`, `${prefixCls.value}-confirm-${props.type}`, `${prefixCls.value}-${props.type}`];\n });\n const computedLocale = computed(() => {\n return props.locale || globalConfig.locale.modal;\n });\n // ===================== computed ============================\n const closeConfirm = () => {\n if (props.close) {\n props.close();\n }\n };\n const handleCancel = () => {\n if (props.onCancel) {\n props.onCancel();\n }\n closeConfirm();\n };\n const handleOk = () => {\n if (props.onOk) {\n props.onOk();\n }\n if (props.loading) {\n stateLoading.value = true;\n } else {\n closeConfirm();\n }\n };\n\n const closableClose = (type: ModalCloseType) => {\n if (props.closable && type === 'close') {\n closeConfirm();\n }\n };\n\n const computedWidth = computed(() => {\n if (props.width) {\n return props.width;\n }\n if (props.size === 'small') {\n return 384;\n }\n return 416;\n });\n\n return {\n prefixCls,\n confirmClass,\n stateLoading,\n computedLocale,\n computedWidth,\n handleOk,\n handleCancel,\n closableClose\n };\n }\n});\n</script>\n"],"names":["defineComponent","Modal","UIcon","UButton","Info","CheckCircle","CircleX","CircleAlert","HelpCircle","CircleHelp","Render","confirmDialogProps","useGlobalConfig","ref","computed","_createBlock","_withCtx","_createVNode","_createElementVNode","_normalizeClass","_resolveDynamicComponent","_createElementBlock","_Fragment"],"mappings":";;;;;;;;;;;;;;AAoDA,MAAK,YAAaA,oBAAa;AAAA,EAC7B,MAAM;AAAA,EACN,YAAY;AAAA,WACVC;AAAA,WACAC;AAAA,aACAC;AAAA,UACAC;AAAA,iBACAC;AAAA,aACAC;AAAA,iBACAC;AAAA,gBACAC;AAAA,gBACAC;AAAA,YACAC;AAAA;AACF,EACA,OAAOC;AAAA,EACP,MAAM,OAAO;UACL,EAAE,WAAW,QAAQ,iBAAiBC,2BAAgB,OAAO;UAC7D,eAAeC,QAAI,KAAK;UAExB,eAAeC,aAAS,MAAM;aAC3B,CAAC,GAAG,UAAU,iBAAiB,GAAG,UAAU,iBAAiB,MAAM,QAAQ,GAAG,UAAU,SAAS,MAAM,MAAM;AAAA,KACrH;UACK,iBAAiBA,aAAS,MAAM;aAC7B,MAAM,UAAU,aAAa,OAAO;AAAA,KAC5C;UAEK,eAAe,MAAM;UACrB,MAAM,OAAO;cACT;AAAM;AACd;UAEI,eAAe,MAAM;UACrB,MAAM,UAAU;cACZ;AAAS;;AAEJ;UAET,WAAW,MAAM;UACjB,MAAM,MAAM;cACR;AAAK;UAET,MAAM,SAAS;qBACJ,QAAQ;AAAA,aAChB;;AACQ;AACf;UAGI,gBAAgB,CAAC,SAAyB;UAC1C,MAAM,YAAY,SAAS,SAAS;;AACzB;AACf;UAGI,gBAAgBA,aAAS,MAAM;UAC/B,MAAM,OAAO;eACR,MAAM;AAAA;UAEX,MAAM,SAAS,SAAS;eACnB;AAAA;aAEF;AAAA,KACR;WAEM;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AACF;AAEJ,CAAC;;;;;;0BA9HCC,gBAqCQ;IApCL,IAAI;IACJ,SAAS;IACT,gBAAc;IACd,iBAAe;AAAA,IACf,OAAO;IACP,MAAM;IACN,eAAa;IACb,UAAU;IACV,SAAO;;IAoBG,QAAMC,YACf,MAEU;AAAA,MAFK,kCAAfD,gBAEU;;QAFgB,MAAM;QAAO,SAAO;;6BAC5C,MAA6C;AAAA,kDAA1C,mBAAc,oBAAe,UAAU;;;;MAE5CE,gBAEU;QAFA,MAAM;QAAS,MAAM;QAAO,SAAS;QAAe,SAAO;;6BACnE,MAAqC;AAAA,kDAAlC,eAAU,oBAAe,MAAM;;;;;yBAvBtC,MAiBM;AAAA,MAjBNC,uBAiBM;QAjBA,OAAKC,sBAAK,qCAAS;AAAA;QACvBD,uBAeM;UAfA,OAAKC,sBAAK,6BAAS;AAAA;UACvBF,gBAEQ;YAFA,OAAKE,sBAAK,6BAAS;AAAA;iCACzB,MAA4B;AAAA,gCAA5BJ,gBAA4BK,4BAAZ,aAAQ;;;;UAE1BF,uBAUM;YAVA,OAAKC,sBAAK,qCAAS;AAAA;YACX,eAAU,2BAAtBE,uBAEO;;cAF2B,OAAKF,sBAAK,8BAAS;AAAA,mCAChD,UAAK;YAEVD,uBAKM;cALA,OAAKC,sBAAK,gCAAS;AAAA;qBACA,iBAAO,+BAC5BJ,gBAA4B;;gBAAnB,QAAQ;2DAEnBM,uBAA2CC;wDAAtB,YAAO;;;;;;;;;;;;;;"}
@@ -80,6 +80,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
80
80
  type: import("vue").PropType<import("./Upload.type").OnUploadError>;
81
81
  default: () => void;
82
82
  };
83
+ error: {
84
+ type: BooleanConstructor;
85
+ default: boolean;
86
+ };
83
87
  }>, {
84
88
  prefixCls: import("vue").ComputedRef<string>;
85
89
  uploaderRef: import("vue").Ref<any, any>;
@@ -201,6 +205,10 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
201
205
  type: import("vue").PropType<import("./Upload.type").OnUploadError>;
202
206
  default: () => void;
203
207
  };
208
+ error: {
209
+ type: BooleanConstructor;
210
+ default: boolean;
211
+ };
204
212
  }>> & Readonly<{
205
213
  onChange?: (file: FileInfo, fileList: FileInfo[]) => any;
206
214
  onPreview?: (file: FileInfo) => any;
@@ -209,6 +217,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
209
217
  }>, {
210
218
  data: Record<string, any>;
211
219
  drag: boolean;
220
+ error: boolean;
212
221
  name: string;
213
222
  onProgress: import("./Upload.type").OnUploadProgress;
214
223
  onError: import("./Upload.type").OnUploadError;
@@ -108,7 +108,8 @@ var Upload = vue.defineComponent({
108
108
  "withCredentials": this.withCredentials,
109
109
  "disabled": this.disabled,
110
110
  "limit": limit,
111
- "customRequest": this.customRequest
111
+ "customRequest": this.customRequest,
112
+ "error": this.error
112
113
  }), _isSlot(_slot = this.getChild()) ? _slot : {
113
114
  default: () => [_slot]
114
115
  });
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.js","sources":["../../../../src/components/Upload/Upload.tsx"],"sourcesContent":["import { defineComponent, provide } from 'vue';\nimport { getSlot, cloneVNode } from '../../utils/slots';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport Uploader from './Uploader.vue';\nimport UploadList from './UploadList.vue';\nimport useFileUpload from './hooks/useFileUpload';\nimport { type FileInfo, uploadProps, uploadEmits } from './Upload.type';\n\nexport default defineComponent({\n name: 'UUpload',\n inheritAttrs: false,\n props: uploadProps,\n emits: uploadEmits,\n setup(props, { slots, emit }) {\n const { prefixCls } = useGlobalConfig('upload');\n\n const { uploaderRef, uploadFileList, abort, clearFiles, submit, handleError, handleSuccess, handleProgress, handleStart, handleRemove } =\n useFileUpload(props, emit);\n\n const getChild = () => {\n const children = getSlot(slots);\n const newChildren = children.map((child) => {\n return cloneVNode(child as any, {\n disabled: props.disabled ? true : undefined\n });\n });\n return newChildren;\n };\n\n const handleExceed = (files: File[]) => {\n props.onError('exceed the upload limit', files, uploadFileList.value);\n };\n\n const handlePreview = (file: FileInfo) => {\n emit('preview', file);\n };\n\n const handleItemClick = (file: FileInfo) => {\n emit('item-click', file);\n };\n\n provide('UploadContext', {\n uploadFileList,\n handleError,\n handleSuccess,\n handleProgress,\n handleStart,\n handleRemove,\n handleExceed,\n handlePreview\n });\n\n return {\n prefixCls,\n uploaderRef,\n uploadFileList,\n abort,\n clearFiles,\n submit,\n handleRemove,\n handlePreview,\n handleItemClick,\n getChild\n };\n },\n render() {\n const { showFileList, listType, prefixCls } = this;\n\n let limit;\n if (this.limit && typeof this.limit === 'number') {\n limit = this.limit - this.uploadFileList.length;\n limit = limit > 0 ? limit : 0;\n }\n\n const attrs = this.$attrs;\n\n const uploader = (\n <Uploader\n ref=\"uploaderRef\"\n {...attrs}\n prefixCls={prefixCls}\n action={this.action}\n name={this.name}\n multiple={this.multiple}\n listType={this.listType}\n accept={this.accept}\n headers={this.headers}\n drag={this.drag}\n data={this.data}\n beforeUpload={this.beforeUpload}\n withCredentials={this.withCredentials}\n disabled={this.disabled}\n limit={limit}\n customRequest={this.customRequest}\n >\n {this.getChild()}\n </Uploader>\n );\n\n const uploadList = (append?: any) =>\n showFileList ? (\n <UploadList\n prefixCls={prefixCls}\n disabled={this.disabled}\n files={this.uploadFileList}\n listType={listType}\n listItemClass={this.listItemClass}\n onRemove={this.handleRemove}\n onPreview={this.handlePreview}\n onClick={this.handleItemClick}\n v-slots={{\n ...(this.$slots.file\n ? {\n default: ({ file }: { file: FileInfo }) => {\n return this.$slots.file?.({\n file\n });\n }\n }\n : {}),\n\n ...(append\n ? {\n append: () => append\n }\n : {})\n }}\n ></UploadList>\n ) : null;\n\n const tips = <div class={`${prefixCls}-tip`}>{this.$slots.tip?.()}</div>;\n\n if (this.listType === 'picture-card' && showFileList) {\n return <>{[uploadList(uploader), tips]}</>;\n }\n return <>{[uploader, tips, uploadList()]}</>;\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","inheritAttrs","props","uploadProps","emits","uploadEmits","setup","slots","emit","prefixCls","useGlobalConfig","uploaderRef","uploadFileList","abort","clearFiles","submit","handleError","handleSuccess","handleProgress","handleStart","handleRemove","useFileUpload","getChild","children","getSlot","newChildren","map","child","cloneVNode","disabled","undefined","handleExceed","files","onError","value","handlePreview","file","handleItemClick","provide","render","_slot","showFileList","listType","limit","length","attrs","$attrs","uploader","_createVNode","Uploader","_mergeProps","action","multiple","accept","headers","drag","data","beforeUpload","withCredentials","customRequest","default","uploadList","append","UploadList","listItemClass","$slots","_a","_b","tips","tip","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"Upload.js","sources":["../../../../src/components/Upload/Upload.tsx"],"sourcesContent":["import { defineComponent, provide } from 'vue';\nimport { getSlot, cloneVNode } from '../../utils/slots';\nimport useGlobalConfig from '../base/hooks/useGlobalConfig';\nimport Uploader from './Uploader.vue';\nimport UploadList from './UploadList.vue';\nimport useFileUpload from './hooks/useFileUpload';\nimport { type FileInfo, uploadProps, uploadEmits } from './Upload.type';\n\nexport default defineComponent({\n name: 'UUpload',\n inheritAttrs: false,\n props: uploadProps,\n emits: uploadEmits,\n setup(props, { slots, emit }) {\n const { prefixCls } = useGlobalConfig('upload');\n\n const { uploaderRef, uploadFileList, abort, clearFiles, submit, handleError, handleSuccess, handleProgress, handleStart, handleRemove } =\n useFileUpload(props, emit);\n\n const getChild = () => {\n const children = getSlot(slots);\n const newChildren = children.map((child) => {\n return cloneVNode(child as any, {\n disabled: props.disabled ? true : undefined\n });\n });\n return newChildren;\n };\n\n const handleExceed = (files: File[]) => {\n props.onError('exceed the upload limit', files, uploadFileList.value);\n };\n\n const handlePreview = (file: FileInfo) => {\n emit('preview', file);\n };\n\n const handleItemClick = (file: FileInfo) => {\n emit('item-click', file);\n };\n\n provide('UploadContext', {\n uploadFileList,\n handleError,\n handleSuccess,\n handleProgress,\n handleStart,\n handleRemove,\n handleExceed,\n handlePreview\n });\n\n return {\n prefixCls,\n uploaderRef,\n uploadFileList,\n abort,\n clearFiles,\n submit,\n handleRemove,\n handlePreview,\n handleItemClick,\n getChild\n };\n },\n render() {\n const { showFileList, listType, prefixCls } = this;\n\n let limit;\n if (this.limit && typeof this.limit === 'number') {\n limit = this.limit - this.uploadFileList.length;\n limit = limit > 0 ? limit : 0;\n }\n\n const attrs = this.$attrs;\n\n const uploader = (\n <Uploader\n ref=\"uploaderRef\"\n {...attrs}\n prefixCls={prefixCls}\n action={this.action}\n name={this.name}\n multiple={this.multiple}\n listType={this.listType}\n accept={this.accept}\n headers={this.headers}\n drag={this.drag}\n data={this.data}\n beforeUpload={this.beforeUpload}\n withCredentials={this.withCredentials}\n disabled={this.disabled}\n limit={limit}\n customRequest={this.customRequest}\n error={this.error}\n >\n {this.getChild()}\n </Uploader>\n );\n\n const uploadList = (append?: any) =>\n showFileList ? (\n <UploadList\n prefixCls={prefixCls}\n disabled={this.disabled}\n files={this.uploadFileList}\n listType={listType}\n listItemClass={this.listItemClass}\n onRemove={this.handleRemove}\n onPreview={this.handlePreview}\n onClick={this.handleItemClick}\n v-slots={{\n ...(this.$slots.file\n ? {\n default: ({ file }: { file: FileInfo }) => {\n return this.$slots.file?.({\n file\n });\n }\n }\n : {}),\n\n ...(append\n ? {\n append: () => append\n }\n : {})\n }}\n ></UploadList>\n ) : null;\n\n const tips = <div class={`${prefixCls}-tip`}>{this.$slots.tip?.()}</div>;\n\n if (this.listType === 'picture-card' && showFileList) {\n return <>{[uploadList(uploader), tips]}</>;\n }\n return <>{[uploader, tips, uploadList()]}</>;\n }\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defineComponent","name","inheritAttrs","props","uploadProps","emits","uploadEmits","setup","slots","emit","prefixCls","useGlobalConfig","uploaderRef","uploadFileList","abort","clearFiles","submit","handleError","handleSuccess","handleProgress","handleStart","handleRemove","useFileUpload","getChild","children","getSlot","newChildren","map","child","cloneVNode","disabled","undefined","handleExceed","files","onError","value","handlePreview","file","handleItemClick","provide","render","_slot","showFileList","listType","limit","length","attrs","$attrs","uploader","_createVNode","Uploader","_mergeProps","action","multiple","accept","headers","drag","data","beforeUpload","withCredentials","customRequest","error","default","uploadList","append","UploadList","listItemClass","$slots","_a","_b","tips","tip","_Fragment"],"mappings":"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"}
@@ -125,6 +125,10 @@ export declare const uploadProps: {
125
125
  type: PropType<OnUploadError>;
126
126
  default: () => void;
127
127
  };
128
+ error: {
129
+ type: BooleanConstructor;
130
+ default: boolean;
131
+ };
128
132
  };
129
133
  export type UploadProps = ExtractPropTypes<typeof uploadProps>;
130
134
  export declare const uploadEmits: {
@@ -86,6 +86,10 @@ const uploadProps = {
86
86
  onError: {
87
87
  type: Function,
88
88
  default: NOOP
89
+ },
90
+ error: {
91
+ type: Boolean,
92
+ default: false
89
93
  }
90
94
  };
91
95
  const uploadEmits = {