yc-design-vue 2.0.5 → 2.0.7
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.
- package/dist/index.umd.js +1 -1
- package/dist/style.css +1 -1
- package/es/Alert/index.d.ts +3 -3
- package/es/Alert/index.vue.d.ts +1 -1
- package/es/Alert/type.d.ts +2 -2
- package/es/Anchor/Anchor.vue.d.ts +1 -1
- package/es/Anchor/hooks/useContext.d.ts +1 -1
- package/es/Anchor/index.d.ts +3 -3
- package/es/Anchor/type.d.ts +3 -2
- package/es/AutoComplete/index.d.ts +18 -9
- package/es/AutoComplete/index.vue.d.ts +36 -18
- package/es/Avatar/Avatar.vue.d.ts +1 -1
- package/es/Avatar/index.d.ts +3 -3
- package/es/Avatar/type.d.ts +3 -2
- package/es/Badge/index.d.ts +3 -3
- package/es/Badge/index.vue.d.ts +1 -1
- package/es/Badge/type.d.ts +2 -2
- package/es/Button/Button.vue.d.ts +2 -2
- package/es/Button/ButtonGroup.vue.d.ts +1 -1
- package/es/Button/hooks/useContext.d.ts +3 -3
- package/es/Button/index.d.ts +9 -9
- package/es/Button/type.d.ts +6 -6
- package/es/Card/Card.vue.d.ts +1 -1
- package/es/Card/index.d.ts +3 -3
- package/es/Card/type.d.ts +1 -2
- package/es/Carousel/Carousel.vue.d.ts +2 -2
- package/es/Carousel/hooks/useContext.d.ts +3 -3
- package/es/Carousel/index.d.ts +6 -6
- package/es/Carousel/type.d.ts +6 -6
- package/es/Cascader/Cascader.vue.d.ts +7 -7
- package/es/Cascader/index.d.ts +6 -6
- package/es/Collapse/hooks/useContext.d.ts +2 -13
- package/es/Collapse/hooks/useContext.js +0 -1
- package/es/Collapse/type.d.ts +2 -1
- package/es/Descriptions/Descriptions.vue.d.ts +3 -3
- package/es/Descriptions/hooks/useContext.d.ts +1 -1
- package/es/Descriptions/index.d.ts +9 -9
- package/es/Descriptions/type.d.ts +7 -6
- package/es/Divider/index.d.ts +6 -6
- package/es/Divider/index.vue.d.ts +2 -2
- package/es/Divider/type.d.ts +4 -3
- package/es/Drawer/Drawer.vue.d.ts +1 -1
- package/es/Drawer/DrawerService.vue.d.ts +1 -1
- package/es/Drawer/index.d.ts +5 -9
- package/es/Drawer/type.d.ts +8 -4
- package/es/Dropdown/Dropdown.vue.d.ts +1 -1
- package/es/Dropdown/DropdownButton.vue.d.ts +1 -1
- package/es/Dropdown/Dsubmenu.vue.d.ts +1 -1
- package/es/Dropdown/index.d.ts +9 -9
- package/es/Dropdown/type.d.ts +4 -6
- package/es/Grid/hooks/useContext.d.ts +0 -11
- package/es/Grid/hooks/useContext.js +0 -1
- package/es/Image/Image.vue.d.ts +2 -2
- package/es/Image/ImagePreview.vue.js +1 -1
- package/es/Image/index.d.ts +6 -6
- package/es/Image/type.d.ts +3 -2
- package/es/Input/Input.vue.d.ts +1 -1
- package/es/Input/index.d.ts +3 -3
- package/es/InputNumber/InputNumber.vue.d.ts +8 -8
- package/es/InputNumber/InputOperaBtn.vue.d.ts +2 -2
- package/es/InputNumber/index.d.ts +9 -9
- package/es/InputNumber/type.d.ts +5 -4
- package/es/InputTag/index.d.ts +15 -6
- package/es/InputTag/index.vue.d.ts +5 -2
- package/es/InputTag/type.d.ts +2 -1
- package/es/Layout/LayoutSider.vue.d.ts +3 -3
- package/es/Layout/index.d.ts +8 -8
- package/es/Layout/type.d.ts +3 -4
- package/es/Link/index.d.ts +3 -3
- package/es/Link/index.vue.d.ts +1 -1
- package/es/Link/type.d.ts +2 -2
- package/es/List/List.vue.d.ts +7 -7
- package/es/List/index.d.ts +6 -6
- package/es/List/type.d.ts +2 -3
- package/es/Mention/index.d.ts +21 -12
- package/es/Mention/index.vue.d.ts +37 -19
- package/es/Mention/type.d.ts +3 -2
- package/es/Menu/Menu.vue.d.ts +2 -2
- package/es/Menu/index.d.ts +5 -5
- package/es/Menu/type.d.ts +2 -2
- package/es/Message/type.d.ts +3 -3
- package/es/Modal/Modal.vue.d.ts +1 -1
- package/es/Modal/ModalService.vue.d.ts +1 -1
- package/es/Modal/index.d.ts +13 -13
- package/es/Modal/index.js +1 -4
- package/es/Modal/type.d.ts +6 -9
- package/es/Notification/Notification.vue.d.ts +1 -1
- package/es/Notification/index.d.ts +4 -4
- package/es/Notification/type.d.ts +3 -4
- package/es/OverflowList/index.d.ts +3 -3
- package/es/OverflowList/index.vue.d.ts +1 -1
- package/es/OverflowList/type.d.ts +3 -2
- package/es/Popconfirm/index.d.ts +3 -3
- package/es/Popconfirm/index.vue.d.ts +1 -1
- package/es/Popconfirm/type.d.ts +2 -3
- package/es/Progress/Progress.vue.d.ts +1 -1
- package/es/Progress/ProgressCircle.vue.d.ts +3 -3
- package/es/Progress/ProgressLine.vue.d.ts +3 -3
- package/es/Progress/index.d.ts +3 -3
- package/es/Progress/type.d.ts +2 -3
- package/es/Radio/type.d.ts +1 -1
- package/es/ResizeBox/index.d.ts +3 -3
- package/es/ResizeBox/index.vue.d.ts +2 -2
- package/es/ResizeBox/type.d.ts +4 -4
- package/es/Result/index.d.ts +3 -3
- package/es/Result/index.vue.d.ts +1 -1
- package/es/Result/type.d.ts +3 -2
- package/es/Scrollbar/Scrollbar.vue.d.ts +1 -1
- package/es/Scrollbar/index.d.ts +3 -3
- package/es/Scrollbar/type.d.ts +2 -1
- package/es/Select/Select.vue.d.ts +31 -13
- package/es/Select/hooks/useContext.d.ts +2 -2
- package/es/Select/hooks/useSelectOptions.d.ts +2 -2
- package/es/Select/index.d.ts +18 -9
- package/es/Skeleton/SkeletonShape.vue.d.ts +2 -2
- package/es/Skeleton/index.d.ts +2 -2
- package/es/Skeleton/type.d.ts +2 -4
- package/es/Space/index.d.ts +6 -6
- package/es/Space/index.vue.d.ts +2 -2
- package/es/Space/type.d.ts +5 -4
- package/es/Switch/index.d.ts +9 -9
- package/es/Switch/index.vue.d.ts +3 -3
- package/es/Switch/type.d.ts +4 -4
- package/es/Tabs/Tabs.vue.d.ts +1 -1
- package/es/Tabs/hooks/useContext.d.ts +4 -4
- package/es/Tabs/index.d.ts +3 -3
- package/es/Tabs/type.d.ts +2 -3
- package/es/Tag/index.d.ts +3 -3
- package/es/Tag/index.vue.d.ts +1 -1
- package/es/Tag/type.d.ts +1 -2
- package/es/Textarea/type.d.ts +2 -2
- package/es/TimePicker/TimePicker.vue.d.ts +1 -1
- package/es/TimePicker/index.d.ts +3 -3
- package/es/Timeline/TimelineItem.vue.d.ts +1 -1
- package/es/Timeline/index.d.ts +3 -3
- package/es/Timeline/type.d.ts +3 -4
- package/es/Typography/TypographyBase.vue.d.ts +7 -7
- package/es/Typography/TypographyBase.vue.js +2 -2
- package/es/Typography/TypographyParagraph.vue.d.ts +1 -1
- package/es/Typography/TypographyTitle.vue.d.ts +1 -1
- package/es/Typography/type.d.ts +5 -4
- package/es/Upload/Upload.vue.d.ts +55 -0
- package/es/Upload/Upload.vue.js +120 -0
- package/es/Upload/Upload.vue3.js +5 -0
- package/es/Upload/UploadButton.vue.d.ts +2 -0
- package/es/Upload/UploadButton.vue.js +39 -0
- package/es/Upload/UploadButton.vue3.js +5 -0
- package/es/Upload/UploadDrag.vue.d.ts +2 -0
- package/es/Upload/UploadDrag.vue.js +37 -0
- package/es/Upload/UploadDrag.vue3.js +5 -0
- package/es/Upload/UploadFileList.vue.d.ts +24 -0
- package/es/Upload/UploadFileList.vue.js +7 -0
- package/es/Upload/UploadFileList.vue2.js +122 -0
- package/es/Upload/UploadPictureCard.vue.d.ts +4 -0
- package/es/Upload/UploadPictureCard.vue.js +7 -0
- package/es/Upload/UploadPictureCard.vue2.js +128 -0
- package/es/Upload/hooks/useContext.d.ts +53 -0
- package/es/Upload/hooks/useContext.js +109 -0
- package/es/Upload/hooks/useUpload.d.ts +51 -0
- package/es/Upload/hooks/useUpload.js +85 -0
- package/es/Upload/index.css +1 -0
- package/es/Upload/index.d.ts +129 -0
- package/es/Upload/index.js +10 -0
- package/es/Upload/type.d.ts +76 -0
- package/es/VerificationCode/index.d.ts +3 -3
- package/es/VerificationCode/index.vue.d.ts +1 -1
- package/es/VerificationCode/type.d.ts +5 -4
- package/es/_shared/icons/IconCopy.vue.js +1 -19
- package/es/_shared/icons/IconCopy.vue2.js +19 -1
- package/es/_shared/icons/IconEdit.vue.js +1 -19
- package/es/_shared/icons/IconEdit.vue2.js +19 -1
- package/es/_shared/icons/IconFile.vue.d.ts +2 -0
- package/es/_shared/icons/IconFile.vue.js +4 -0
- package/es/_shared/icons/IconFile.vue2.js +22 -0
- package/es/_shared/icons/IconUpload.vue.d.ts +2 -0
- package/es/_shared/icons/IconUpload.vue.js +4 -0
- package/es/_shared/icons/IconUpload.vue2.js +22 -0
- package/es/_shared/icons/index.d.ts +2 -0
- package/es/_shared/type/index.d.ts +3 -1
- package/es/_shared/utils/vue-utils.d.ts +1 -1
- package/es/_virtual/_plugin-vue_export-helper.js +10 -0
- package/es/index.d.ts +33 -31
- package/es/index.js +6 -3
- package/es/node_modules/@vueuse/core/index.js +171 -9
- package/es/node_modules/@vueuse/shared/index.js +29 -0
- package/es/style.css +1 -1
- package/lib/Alert/index.d.ts +3 -3
- package/lib/Alert/index.vue.d.ts +1 -1
- package/lib/Alert/type.d.ts +2 -2
- package/lib/Anchor/Anchor.vue.d.ts +1 -1
- package/lib/Anchor/hooks/useContext.d.ts +1 -1
- package/lib/Anchor/index.d.ts +3 -3
- package/lib/Anchor/type.d.ts +3 -2
- package/lib/AutoComplete/index.d.ts +18 -9
- package/lib/AutoComplete/index.vue.d.ts +36 -18
- package/lib/Avatar/Avatar.vue.d.ts +1 -1
- package/lib/Avatar/index.d.ts +3 -3
- package/lib/Avatar/type.d.ts +3 -2
- package/lib/Badge/index.d.ts +3 -3
- package/lib/Badge/index.vue.d.ts +1 -1
- package/lib/Badge/type.d.ts +2 -2
- package/lib/Button/Button.vue.d.ts +2 -2
- package/lib/Button/ButtonGroup.vue.d.ts +1 -1
- package/lib/Button/hooks/useContext.d.ts +3 -3
- package/lib/Button/index.d.ts +9 -9
- package/lib/Button/type.d.ts +6 -6
- package/lib/Card/Card.vue.d.ts +1 -1
- package/lib/Card/index.d.ts +3 -3
- package/lib/Card/type.d.ts +1 -2
- package/lib/Carousel/Carousel.vue.d.ts +2 -2
- package/lib/Carousel/hooks/useContext.d.ts +3 -3
- package/lib/Carousel/index.d.ts +6 -6
- package/lib/Carousel/type.d.ts +6 -6
- package/lib/Cascader/Cascader.vue.d.ts +7 -7
- package/lib/Cascader/index.d.ts +6 -6
- package/lib/Collapse/hooks/useContext.d.ts +2 -13
- package/lib/Collapse/hooks/useContext.js +1 -1
- package/lib/Collapse/type.d.ts +2 -1
- package/lib/Descriptions/Descriptions.vue.d.ts +3 -3
- package/lib/Descriptions/hooks/useContext.d.ts +1 -1
- package/lib/Descriptions/index.d.ts +9 -9
- package/lib/Descriptions/type.d.ts +7 -6
- package/lib/Divider/index.d.ts +6 -6
- package/lib/Divider/index.vue.d.ts +2 -2
- package/lib/Divider/type.d.ts +4 -3
- package/lib/Drawer/Drawer.vue.d.ts +1 -1
- package/lib/Drawer/DrawerService.vue.d.ts +1 -1
- package/lib/Drawer/index.d.ts +5 -9
- package/lib/Drawer/type.d.ts +8 -4
- package/lib/Dropdown/Dropdown.vue.d.ts +1 -1
- package/lib/Dropdown/DropdownButton.vue.d.ts +1 -1
- package/lib/Dropdown/Dsubmenu.vue.d.ts +1 -1
- package/lib/Dropdown/index.d.ts +9 -9
- package/lib/Dropdown/type.d.ts +4 -6
- package/lib/Grid/hooks/useContext.d.ts +0 -11
- package/lib/Grid/hooks/useContext.js +1 -1
- package/lib/Image/Image.vue.d.ts +2 -2
- package/lib/Image/ImagePreview.vue.js +1 -1
- package/lib/Image/index.d.ts +6 -6
- package/lib/Image/type.d.ts +3 -2
- package/lib/Input/Input.vue.d.ts +1 -1
- package/lib/Input/index.d.ts +3 -3
- package/lib/InputNumber/InputNumber.vue.d.ts +8 -8
- package/lib/InputNumber/InputOperaBtn.vue.d.ts +2 -2
- package/lib/InputNumber/index.d.ts +9 -9
- package/lib/InputNumber/type.d.ts +5 -4
- package/lib/InputTag/index.d.ts +15 -6
- package/lib/InputTag/index.vue.d.ts +5 -2
- package/lib/InputTag/type.d.ts +2 -1
- package/lib/Layout/LayoutSider.vue.d.ts +3 -3
- package/lib/Layout/index.d.ts +8 -8
- package/lib/Layout/type.d.ts +3 -4
- package/lib/Link/index.d.ts +3 -3
- package/lib/Link/index.vue.d.ts +1 -1
- package/lib/Link/type.d.ts +2 -2
- package/lib/List/List.vue.d.ts +7 -7
- package/lib/List/index.d.ts +6 -6
- package/lib/List/type.d.ts +2 -3
- package/lib/Mention/index.d.ts +21 -12
- package/lib/Mention/index.vue.d.ts +37 -19
- package/lib/Mention/type.d.ts +3 -2
- package/lib/Menu/Menu.vue.d.ts +2 -2
- package/lib/Menu/index.d.ts +5 -5
- package/lib/Menu/type.d.ts +2 -2
- package/lib/Message/type.d.ts +3 -3
- package/lib/Modal/Modal.vue.d.ts +1 -1
- package/lib/Modal/ModalService.vue.d.ts +1 -1
- package/lib/Modal/index.d.ts +13 -13
- package/lib/Modal/index.js +1 -1
- package/lib/Modal/type.d.ts +6 -9
- package/lib/Notification/Notification.vue.d.ts +1 -1
- package/lib/Notification/index.d.ts +4 -4
- package/lib/Notification/type.d.ts +3 -4
- package/lib/OverflowList/index.d.ts +3 -3
- package/lib/OverflowList/index.vue.d.ts +1 -1
- package/lib/OverflowList/type.d.ts +3 -2
- package/lib/Popconfirm/index.d.ts +3 -3
- package/lib/Popconfirm/index.vue.d.ts +1 -1
- package/lib/Popconfirm/type.d.ts +2 -3
- package/lib/Progress/Progress.vue.d.ts +1 -1
- package/lib/Progress/ProgressCircle.vue.d.ts +3 -3
- package/lib/Progress/ProgressLine.vue.d.ts +3 -3
- package/lib/Progress/index.d.ts +3 -3
- package/lib/Progress/type.d.ts +2 -3
- package/lib/Radio/type.d.ts +1 -1
- package/lib/ResizeBox/index.d.ts +3 -3
- package/lib/ResizeBox/index.vue.d.ts +2 -2
- package/lib/ResizeBox/type.d.ts +4 -4
- package/lib/Result/index.d.ts +3 -3
- package/lib/Result/index.vue.d.ts +1 -1
- package/lib/Result/type.d.ts +3 -2
- package/lib/Scrollbar/Scrollbar.vue.d.ts +1 -1
- package/lib/Scrollbar/index.d.ts +3 -3
- package/lib/Scrollbar/type.d.ts +2 -1
- package/lib/Select/Select.vue.d.ts +31 -13
- package/lib/Select/hooks/useContext.d.ts +2 -2
- package/lib/Select/hooks/useSelectOptions.d.ts +2 -2
- package/lib/Select/index.d.ts +18 -9
- package/lib/Skeleton/SkeletonShape.vue.d.ts +2 -2
- package/lib/Skeleton/index.d.ts +2 -2
- package/lib/Skeleton/type.d.ts +2 -4
- package/lib/Space/index.d.ts +6 -6
- package/lib/Space/index.vue.d.ts +2 -2
- package/lib/Space/type.d.ts +5 -4
- package/lib/Switch/index.d.ts +9 -9
- package/lib/Switch/index.vue.d.ts +3 -3
- package/lib/Switch/type.d.ts +4 -4
- package/lib/Tabs/Tabs.vue.d.ts +1 -1
- package/lib/Tabs/hooks/useContext.d.ts +4 -4
- package/lib/Tabs/index.d.ts +3 -3
- package/lib/Tabs/type.d.ts +2 -3
- package/lib/Tag/index.d.ts +3 -3
- package/lib/Tag/index.vue.d.ts +1 -1
- package/lib/Tag/type.d.ts +1 -2
- package/lib/Textarea/type.d.ts +2 -2
- package/lib/TimePicker/TimePicker.vue.d.ts +1 -1
- package/lib/TimePicker/index.d.ts +3 -3
- package/lib/Timeline/TimelineItem.vue.d.ts +1 -1
- package/lib/Timeline/index.d.ts +3 -3
- package/lib/Timeline/type.d.ts +3 -4
- package/lib/Typography/TypographyBase.vue.d.ts +7 -7
- package/lib/Typography/TypographyBase.vue.js +1 -1
- package/lib/Typography/TypographyParagraph.vue.d.ts +1 -1
- package/lib/Typography/TypographyTitle.vue.d.ts +1 -1
- package/lib/Typography/type.d.ts +5 -4
- package/lib/Upload/Upload.vue.d.ts +55 -0
- package/lib/Upload/Upload.vue.js +1 -0
- package/lib/Upload/Upload.vue3.js +1 -0
- package/lib/Upload/UploadButton.vue.d.ts +2 -0
- package/lib/Upload/UploadButton.vue.js +1 -0
- package/lib/Upload/UploadButton.vue3.js +1 -0
- package/lib/Upload/UploadDrag.vue.d.ts +2 -0
- package/lib/Upload/UploadDrag.vue.js +1 -0
- package/lib/Upload/UploadDrag.vue3.js +1 -0
- package/lib/Upload/UploadFileList.vue.d.ts +24 -0
- package/lib/Upload/UploadFileList.vue.js +1 -0
- package/lib/Upload/UploadFileList.vue2.js +1 -0
- package/lib/Upload/UploadPictureCard.vue.d.ts +4 -0
- package/lib/Upload/UploadPictureCard.vue.js +1 -0
- package/lib/Upload/UploadPictureCard.vue2.js +1 -0
- package/lib/Upload/hooks/useContext.d.ts +53 -0
- package/lib/Upload/hooks/useContext.js +1 -0
- package/lib/Upload/hooks/useUpload.d.ts +51 -0
- package/lib/Upload/hooks/useUpload.js +1 -0
- package/lib/Upload/index.css +1 -0
- package/lib/Upload/index.d.ts +129 -0
- package/lib/Upload/index.js +1 -0
- package/lib/Upload/type.d.ts +76 -0
- package/lib/VerificationCode/index.d.ts +3 -3
- package/lib/VerificationCode/index.vue.d.ts +1 -1
- package/lib/VerificationCode/type.d.ts +5 -4
- package/lib/_shared/icons/IconCopy.vue.js +1 -1
- package/lib/_shared/icons/IconCopy.vue2.js +1 -1
- package/lib/_shared/icons/IconEdit.vue.js +1 -1
- package/lib/_shared/icons/IconEdit.vue2.js +1 -1
- package/lib/_shared/icons/IconFile.vue.d.ts +2 -0
- package/lib/_shared/icons/IconFile.vue.js +1 -0
- package/lib/_shared/icons/IconFile.vue2.js +1 -0
- package/lib/_shared/icons/IconUpload.vue.d.ts +2 -0
- package/lib/_shared/icons/IconUpload.vue.js +1 -0
- package/lib/_shared/icons/IconUpload.vue2.js +1 -0
- package/lib/_shared/icons/index.d.ts +2 -0
- package/lib/_shared/type/index.d.ts +3 -1
- package/lib/_shared/utils/vue-utils.d.ts +1 -1
- package/lib/_virtual/_plugin-vue_export-helper.js +1 -0
- package/lib/index.d.ts +33 -31
- package/lib/index.js +1 -1
- package/lib/node_modules/@vueuse/core/index.js +1 -1
- package/lib/node_modules/@vueuse/shared/index.js +1 -1
- package/lib/style.css +1 -1
- package/package.json +1 -1
@@ -0,0 +1,122 @@
|
|
1
|
+
import { defineComponent, createElementBlock, openBlock, normalizeClass, unref, Fragment, renderList, renderSlot, createCommentVNode, createElementVNode, createBlock, resolveDynamicComponent, createVNode, withCtx } from "vue";
|
2
|
+
import useUploadContext from "./hooks/useContext.js";
|
3
|
+
import _sfc_main$1 from "../_shared/components/IconButton/index.vue.js";
|
4
|
+
/* empty css */
|
5
|
+
import "../_shared/utils/dom.js";
|
6
|
+
/* empty css */
|
7
|
+
/* empty css */
|
8
|
+
import _sfc_main$3 from "../_shared/icons/IconDelete.vue2.js";
|
9
|
+
import _sfc_main$2 from "../_shared/icons/IconFile.vue2.js";
|
10
|
+
const _hoisted_1 = { class: "yc-upload-list-item-content" };
|
11
|
+
const _hoisted_2 = {
|
12
|
+
key: 0,
|
13
|
+
class: "yc-upload-list-item-thumbnail"
|
14
|
+
};
|
15
|
+
const _hoisted_3 = ["src", "alt", "loading"];
|
16
|
+
const _hoisted_4 = { class: "yc-upload-list-item-name" };
|
17
|
+
const _hoisted_5 = {
|
18
|
+
key: 0,
|
19
|
+
class: "yc-upload-list-item-file-icon"
|
20
|
+
};
|
21
|
+
const _hoisted_6 = { class: "yc-upload-list-item-name-text text-ellipsis" };
|
22
|
+
const _hoisted_7 = ["href", "download"];
|
23
|
+
const _hoisted_8 = {
|
24
|
+
key: 0,
|
25
|
+
class: "yc-upload-list-item-operation"
|
26
|
+
};
|
27
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
28
|
+
__name: "UploadFileList",
|
29
|
+
setup(__props) {
|
30
|
+
const {
|
31
|
+
computedFileList,
|
32
|
+
showRemoveButton,
|
33
|
+
listType,
|
34
|
+
imageLoading,
|
35
|
+
showLink,
|
36
|
+
download,
|
37
|
+
customIcon,
|
38
|
+
slots,
|
39
|
+
handleDelFile
|
40
|
+
} = useUploadContext().inject();
|
41
|
+
const renderFileIcon = (fileItem) => {
|
42
|
+
var _a, _b;
|
43
|
+
if (slots["file-icon"]) {
|
44
|
+
return slots["file-icon"]({
|
45
|
+
fileItem
|
46
|
+
});
|
47
|
+
}
|
48
|
+
return ((_b = (_a = customIcon.value).fileIcon) == null ? void 0 : _b.call(_a, fileItem)) || _sfc_main$2;
|
49
|
+
};
|
50
|
+
const renderName = (fileItem) => {
|
51
|
+
if (slots["file-name"]) {
|
52
|
+
return slots["file-name"]({
|
53
|
+
fileItem
|
54
|
+
});
|
55
|
+
}
|
56
|
+
return () => {
|
57
|
+
var _a, _b;
|
58
|
+
return ((_b = (_a = customIcon.value).fileName) == null ? void 0 : _b.call(_a, fileItem)) || fileItem.name;
|
59
|
+
};
|
60
|
+
};
|
61
|
+
const renderDelIcon = () => {
|
62
|
+
return slots["remove-icon"] ?? (customIcon.value.removeIcon || _sfc_main$3);
|
63
|
+
};
|
64
|
+
return (_ctx, _cache) => {
|
65
|
+
return openBlock(), createElementBlock("div", {
|
66
|
+
class: normalizeClass(["yc-upload-list", `yc-upload-list-type-${unref(listType)}`])
|
67
|
+
}, [
|
68
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(computedFileList), (item, i) => {
|
69
|
+
return openBlock(), createElementBlock("div", {
|
70
|
+
key: item.uid,
|
71
|
+
class: "yc-upload-list-item"
|
72
|
+
}, [
|
73
|
+
renderSlot(_ctx.$slots, "upload-item", {
|
74
|
+
fileItem: item,
|
75
|
+
index: i
|
76
|
+
}, () => [
|
77
|
+
createElementVNode("div", _hoisted_1, [
|
78
|
+
unref(listType) == "picture" ? (openBlock(), createElementBlock("span", _hoisted_2, [
|
79
|
+
createElementVNode("img", {
|
80
|
+
src: item.url,
|
81
|
+
alt: item.name,
|
82
|
+
loading: unref(imageLoading)
|
83
|
+
}, null, 8, _hoisted_3)
|
84
|
+
])) : createCommentVNode("", true),
|
85
|
+
createElementVNode("div", _hoisted_4, [
|
86
|
+
unref(listType) == "text" ? (openBlock(), createElementBlock("span", _hoisted_5, [
|
87
|
+
(openBlock(), createBlock(resolveDynamicComponent(renderFileIcon(item))))
|
88
|
+
])) : createCommentVNode("", true),
|
89
|
+
createElementVNode("span", _hoisted_6, [
|
90
|
+
unref(showLink) ? (openBlock(), createElementBlock("a", {
|
91
|
+
key: 0,
|
92
|
+
href: item.url,
|
93
|
+
download: unref(download) ? item.name : void 0,
|
94
|
+
class: "yc-upload-list-item-name-link",
|
95
|
+
target: "_blank"
|
96
|
+
}, [
|
97
|
+
(openBlock(), createBlock(resolveDynamicComponent(renderName(item))))
|
98
|
+
], 8, _hoisted_7)) : (openBlock(), createBlock(resolveDynamicComponent(renderName(item)), { key: 1 }))
|
99
|
+
])
|
100
|
+
])
|
101
|
+
])
|
102
|
+
], true),
|
103
|
+
_ctx.$slots["extra-button"] || unref(showRemoveButton) ? (openBlock(), createElementBlock("span", _hoisted_8, [
|
104
|
+
createVNode(unref(_sfc_main$1), {
|
105
|
+
onClick: ($event) => unref(handleDelFile)(item)
|
106
|
+
}, {
|
107
|
+
default: withCtx(() => [
|
108
|
+
(openBlock(), createBlock(resolveDynamicComponent(renderDelIcon())))
|
109
|
+
]),
|
110
|
+
_: 1
|
111
|
+
}, 8, ["onClick"]),
|
112
|
+
renderSlot(_ctx.$slots, "extra-button", { fileItem: item }, void 0, true)
|
113
|
+
])) : createCommentVNode("", true)
|
114
|
+
]);
|
115
|
+
}), 128))
|
116
|
+
], 2);
|
117
|
+
};
|
118
|
+
}
|
119
|
+
});
|
120
|
+
export {
|
121
|
+
_sfc_main as default
|
122
|
+
};
|
@@ -0,0 +1,4 @@
|
|
1
|
+
declare const _default: import('vue').DefineComponent<{}, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {
|
2
|
+
uploadRef: HTMLSpanElement;
|
3
|
+
}, HTMLDivElement>;
|
4
|
+
export default _default;
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import _sfc_main from "./UploadPictureCard.vue2.js";
|
2
|
+
/* empty css */
|
3
|
+
import _export_sfc from "../_virtual/_plugin-vue_export-helper.js";
|
4
|
+
const UploadPictureCard = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-2914d73a"]]);
|
5
|
+
export {
|
6
|
+
UploadPictureCard as default
|
7
|
+
};
|
@@ -0,0 +1,128 @@
|
|
1
|
+
import { defineComponent, ref, createElementBlock, openBlock, normalizeClass, unref, createVNode, createCommentVNode, Fragment, renderList, createElementVNode, createBlock, resolveDynamicComponent, toDisplayString } from "vue";
|
2
|
+
import useUpload from "./hooks/useUpload.js";
|
3
|
+
import "../_shared/utils/dom.js";
|
4
|
+
/* empty css */
|
5
|
+
/* empty css */
|
6
|
+
/* empty css */
|
7
|
+
import _sfc_main$3 from "../_shared/icons/IconDelete.vue2.js";
|
8
|
+
import _sfc_main$4 from "../_shared/icons/IconEyeClose.vue2.js";
|
9
|
+
import _sfc_main$2 from "../_shared/icons/IconPlus.vue.js";
|
10
|
+
import "../Image/index.js";
|
11
|
+
import _sfc_main$1 from "../Image/ImagePreview.vue.js";
|
12
|
+
/* empty css */
|
13
|
+
const _hoisted_1 = ["src", "alt"];
|
14
|
+
const _hoisted_2 = { class: "yc-upload-list-picture-mask" };
|
15
|
+
const _hoisted_3 = { class: "yc-upload-list-picture-operation" };
|
16
|
+
const _hoisted_4 = ["onClick"];
|
17
|
+
const _hoisted_5 = ["onClick"];
|
18
|
+
const _hoisted_6 = { class: "yc-upload-picture-card-text" };
|
19
|
+
const _hoisted_7 = {
|
20
|
+
key: 0,
|
21
|
+
class: "yc-upload-tip"
|
22
|
+
};
|
23
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
24
|
+
__name: "UploadPictureCard",
|
25
|
+
setup(__props) {
|
26
|
+
const uploadRef = ref();
|
27
|
+
const visible = ref(false);
|
28
|
+
const url = ref("");
|
29
|
+
const {
|
30
|
+
computedFileList,
|
31
|
+
limit,
|
32
|
+
tip,
|
33
|
+
slots,
|
34
|
+
customIcon,
|
35
|
+
disabled,
|
36
|
+
imagePreview,
|
37
|
+
showPreviewButton,
|
38
|
+
showRemoveButton,
|
39
|
+
listType,
|
40
|
+
handleUpload,
|
41
|
+
handleDelFile,
|
42
|
+
emits
|
43
|
+
} = useUpload(uploadRef);
|
44
|
+
const renderDelIcon = () => {
|
45
|
+
return slots["remove-icon"] ?? (customIcon.value.removeIcon || _sfc_main$3);
|
46
|
+
};
|
47
|
+
const renderPreviewIcon = () => {
|
48
|
+
return slots["preview-icon"] ?? (customIcon.value.previewIcon || _sfc_main$4);
|
49
|
+
};
|
50
|
+
const handlePreview = (fileItem) => {
|
51
|
+
url.value = fileItem.url;
|
52
|
+
emits("preview", fileItem);
|
53
|
+
if (!imagePreview.value) return;
|
54
|
+
visible.value = true;
|
55
|
+
};
|
56
|
+
return (_ctx, _cache) => {
|
57
|
+
return openBlock(), createElementBlock("div", {
|
58
|
+
class: normalizeClass([
|
59
|
+
"yc-upload-list",
|
60
|
+
`yc-upload-list-type-${unref(listType)}`,
|
61
|
+
{
|
62
|
+
"yc-upload-list-disabled": unref(disabled)
|
63
|
+
}
|
64
|
+
])
|
65
|
+
}, [
|
66
|
+
createVNode(unref(_sfc_main$1), {
|
67
|
+
visible: visible.value,
|
68
|
+
"onUpdate:visible": _cache[0] || (_cache[0] = ($event) => visible.value = $event),
|
69
|
+
src: url.value
|
70
|
+
}, null, 8, ["visible", "src"]),
|
71
|
+
(openBlock(true), createElementBlock(Fragment, null, renderList(unref(computedFileList), (item) => {
|
72
|
+
return openBlock(), createElementBlock("div", {
|
73
|
+
key: item.uid,
|
74
|
+
class: "yc-upload-list-picture"
|
75
|
+
}, [
|
76
|
+
createElementVNode("img", {
|
77
|
+
src: item.url,
|
78
|
+
alt: item.name
|
79
|
+
}, null, 8, _hoisted_1),
|
80
|
+
createElementVNode("div", _hoisted_2, [
|
81
|
+
createElementVNode("div", _hoisted_3, [
|
82
|
+
unref(showPreviewButton) ? (openBlock(), createElementBlock("span", {
|
83
|
+
key: 0,
|
84
|
+
class: normalizeClass(["yc-upload-icon", "yc-upload-icon-preview"]),
|
85
|
+
onClick: ($event) => handlePreview(item)
|
86
|
+
}, [
|
87
|
+
(openBlock(), createBlock(resolveDynamicComponent(renderPreviewIcon())))
|
88
|
+
], 8, _hoisted_4)) : createCommentVNode("", true),
|
89
|
+
unref(showRemoveButton) ? (openBlock(), createElementBlock("span", {
|
90
|
+
key: 1,
|
91
|
+
class: normalizeClass(["yc-upload-icon", "yc-upload-icon-remove"]),
|
92
|
+
onClick: ($event) => unref(handleDelFile)(item)
|
93
|
+
}, [
|
94
|
+
(openBlock(), createBlock(resolveDynamicComponent(renderDelIcon())))
|
95
|
+
], 8, _hoisted_5)) : createCommentVNode("", true)
|
96
|
+
])
|
97
|
+
])
|
98
|
+
]);
|
99
|
+
}), 128)),
|
100
|
+
unref(limit) <= 0 || unref(computedFileList).length < unref(limit) ? (openBlock(), createElementBlock("span", {
|
101
|
+
key: 0,
|
102
|
+
class: "yc-upload",
|
103
|
+
ref_key: "uploadRef",
|
104
|
+
ref: uploadRef,
|
105
|
+
onClick: _cache[1] || (_cache[1] = //@ts-ignore
|
106
|
+
(...args) => unref(handleUpload) && unref(handleUpload)(...args))
|
107
|
+
}, [
|
108
|
+
createElementVNode("div", {
|
109
|
+
class: normalizeClass([
|
110
|
+
"yc-upload-picture-card",
|
111
|
+
{
|
112
|
+
"yc-upload-picture-card-disabled": unref(disabled)
|
113
|
+
}
|
114
|
+
])
|
115
|
+
}, [
|
116
|
+
createElementVNode("div", _hoisted_6, [
|
117
|
+
createVNode(unref(_sfc_main$2))
|
118
|
+
]),
|
119
|
+
unref(tip) ? (openBlock(), createElementBlock("div", _hoisted_7, toDisplayString(unref(tip)), 1)) : createCommentVNode("", true)
|
120
|
+
], 2)
|
121
|
+
], 512)) : createCommentVNode("", true)
|
122
|
+
], 2);
|
123
|
+
};
|
124
|
+
}
|
125
|
+
});
|
126
|
+
export {
|
127
|
+
_sfc_main as default
|
128
|
+
};
|
@@ -0,0 +1,53 @@
|
|
1
|
+
import { Ref } from 'vue';
|
2
|
+
import { UploadEmits, FileItem, FileListType, ImageLoading, UploadSlots, CustomIcon, FileName, OnBeforeUpload } from '../type';
|
3
|
+
import { RecordType } from '../../_shared/type';
|
4
|
+
type UploadContext = {
|
5
|
+
computedFileList: Ref<FileItem[]>;
|
6
|
+
disabled: Ref<boolean>;
|
7
|
+
tip: Ref<string>;
|
8
|
+
listType: Ref<FileListType>;
|
9
|
+
imageLoading: Ref<ImageLoading>;
|
10
|
+
showRemoveButton: Ref<boolean>;
|
11
|
+
showLink: Ref<boolean>;
|
12
|
+
download: Ref<boolean>;
|
13
|
+
customIcon: Ref<CustomIcon>;
|
14
|
+
limit: Ref<number>;
|
15
|
+
accept: Ref<string>;
|
16
|
+
name: FileName;
|
17
|
+
multiple: Ref<boolean>;
|
18
|
+
draggable: Ref<boolean>;
|
19
|
+
directory: Ref<boolean>;
|
20
|
+
showPreviewButton: Ref<boolean>;
|
21
|
+
imagePreview: Ref<boolean>;
|
22
|
+
slots: UploadSlots;
|
23
|
+
onBeforeUpload: OnBeforeUpload;
|
24
|
+
handleDelFile: (fileItem: FileItem) => Promise<void>;
|
25
|
+
emits: UploadEmits;
|
26
|
+
};
|
27
|
+
export default function useUploadContext(): {
|
28
|
+
provide: (props: RecordType, emits: UploadEmits) => {
|
29
|
+
computedFileList: import('vue').WritableComputedRef<FileItem[], FileItem[]>;
|
30
|
+
accept: import('vue').ComputedRef<string>;
|
31
|
+
disabled: Ref<boolean, boolean>;
|
32
|
+
directory: Ref<boolean, boolean>;
|
33
|
+
multiple: Ref<boolean, boolean>;
|
34
|
+
draggable: Ref<boolean, boolean>;
|
35
|
+
limit: Ref<number, number>;
|
36
|
+
tip: Ref<string, string>;
|
37
|
+
listType: Ref<FileListType, FileListType>;
|
38
|
+
imageLoading: Ref<ImageLoading, ImageLoading>;
|
39
|
+
showLink: Ref<boolean, boolean>;
|
40
|
+
download: Ref<boolean, boolean>;
|
41
|
+
customIcon: Ref<CustomIcon, CustomIcon>;
|
42
|
+
imagePreview: Ref<boolean, boolean>;
|
43
|
+
showRemoveButton: Ref<boolean, boolean>;
|
44
|
+
showPreviewButton: Ref<boolean, boolean>;
|
45
|
+
name: any;
|
46
|
+
slots: UploadSlots;
|
47
|
+
onBeforeUpload: any;
|
48
|
+
handleDelFile: (fileItem: FileItem) => Promise<void>;
|
49
|
+
emits: UploadEmits;
|
50
|
+
};
|
51
|
+
inject: () => UploadContext;
|
52
|
+
};
|
53
|
+
export {};
|
@@ -0,0 +1,109 @@
|
|
1
|
+
import { toRefs, useSlots, computed, provide, inject, ref } from "vue";
|
2
|
+
import { useControlValue } from "../../_shared/utils/control.js";
|
3
|
+
const UPLOAD_CONTEXT_KEY = "upload-context";
|
4
|
+
function useUploadContext() {
|
5
|
+
const provide$1 = (props, emits) => {
|
6
|
+
const {
|
7
|
+
fileList,
|
8
|
+
defaultFileList,
|
9
|
+
disabled,
|
10
|
+
multiple,
|
11
|
+
draggable,
|
12
|
+
directory,
|
13
|
+
limit,
|
14
|
+
tip,
|
15
|
+
listType,
|
16
|
+
imageLoading,
|
17
|
+
download,
|
18
|
+
showLink,
|
19
|
+
customIcon,
|
20
|
+
imagePreview,
|
21
|
+
showRemoveButton,
|
22
|
+
showPreviewButton,
|
23
|
+
accept: _accept
|
24
|
+
} = toRefs(props);
|
25
|
+
const { name, onBeforeUpload, onBeforeRemove } = props;
|
26
|
+
const slots = useSlots();
|
27
|
+
const computedFileList = useControlValue(
|
28
|
+
fileList,
|
29
|
+
defaultFileList.value,
|
30
|
+
(val) => {
|
31
|
+
emits("update:fileList", val);
|
32
|
+
}
|
33
|
+
);
|
34
|
+
const accept = computed(() => {
|
35
|
+
return listType.value != "text" ? "image/*" : _accept.value;
|
36
|
+
});
|
37
|
+
const handleDelFile = async (fileItem) => {
|
38
|
+
let isDel = true;
|
39
|
+
try {
|
40
|
+
isDel = await (onBeforeRemove == null ? void 0 : onBeforeRemove(fileItem));
|
41
|
+
} catch {
|
42
|
+
isDel = false;
|
43
|
+
}
|
44
|
+
if (!isDel) return;
|
45
|
+
computedFileList.value = computedFileList.value.filter(
|
46
|
+
(v) => v.uid != fileItem.uid
|
47
|
+
);
|
48
|
+
emits("change", computedFileList.value, []);
|
49
|
+
};
|
50
|
+
const context = {
|
51
|
+
computedFileList,
|
52
|
+
accept,
|
53
|
+
disabled,
|
54
|
+
directory,
|
55
|
+
multiple,
|
56
|
+
draggable,
|
57
|
+
limit,
|
58
|
+
tip,
|
59
|
+
listType,
|
60
|
+
imageLoading,
|
61
|
+
showLink,
|
62
|
+
download,
|
63
|
+
customIcon,
|
64
|
+
imagePreview,
|
65
|
+
showRemoveButton,
|
66
|
+
showPreviewButton,
|
67
|
+
name,
|
68
|
+
slots,
|
69
|
+
onBeforeUpload,
|
70
|
+
handleDelFile,
|
71
|
+
emits
|
72
|
+
};
|
73
|
+
provide(UPLOAD_CONTEXT_KEY, context);
|
74
|
+
return context;
|
75
|
+
};
|
76
|
+
const inject$1 = () => {
|
77
|
+
return inject(UPLOAD_CONTEXT_KEY, {
|
78
|
+
computedFileList: ref([]),
|
79
|
+
accept: ref(""),
|
80
|
+
disabled: ref(false),
|
81
|
+
directory: ref(false),
|
82
|
+
multiple: ref(false),
|
83
|
+
draggable: ref(false),
|
84
|
+
limit: ref(0),
|
85
|
+
tip: ref(""),
|
86
|
+
listType: ref("text"),
|
87
|
+
imageLoading: ref("lazy"),
|
88
|
+
showLink: ref(true),
|
89
|
+
download: ref(false),
|
90
|
+
customIcon: ref({}),
|
91
|
+
imagePreview: ref(true),
|
92
|
+
showRemoveButton: ref(true),
|
93
|
+
showPreviewButton: ref(true),
|
94
|
+
name: "",
|
95
|
+
slots: {},
|
96
|
+
handleDelFile: () => Promise.resolve(),
|
97
|
+
onBeforeUpload: () => true,
|
98
|
+
emits: () => {
|
99
|
+
}
|
100
|
+
});
|
101
|
+
};
|
102
|
+
return {
|
103
|
+
provide: provide$1,
|
104
|
+
inject: inject$1
|
105
|
+
};
|
106
|
+
}
|
107
|
+
export {
|
108
|
+
useUploadContext as default
|
109
|
+
};
|
@@ -0,0 +1,51 @@
|
|
1
|
+
import { FileItem, UploadEmits, UploadProps } from '../type';
|
2
|
+
import { Ref } from 'vue';
|
3
|
+
export default function useUpload(uploadRef: Ref<HTMLDivElement | undefined>, _props?: UploadProps, _emits?: UploadEmits): {
|
4
|
+
handleUpload: () => void;
|
5
|
+
handleFiles: (fileData: File[] | FileList | null) => void;
|
6
|
+
computedFileList: Ref<FileItem[]>;
|
7
|
+
disabled: Ref<boolean>;
|
8
|
+
tip: Ref<string>;
|
9
|
+
listType: Ref<import('..').FileListType>;
|
10
|
+
imageLoading: Ref<import('..').ImageLoading>;
|
11
|
+
showRemoveButton: Ref<boolean>;
|
12
|
+
showLink: Ref<boolean>;
|
13
|
+
download: Ref<boolean>;
|
14
|
+
customIcon: Ref<import('..').CustomIcon>;
|
15
|
+
limit: Ref<number>;
|
16
|
+
accept: Ref<string>;
|
17
|
+
name: import('..').FileName;
|
18
|
+
multiple: Ref<boolean>;
|
19
|
+
draggable: Ref<boolean>;
|
20
|
+
directory: Ref<boolean>;
|
21
|
+
showPreviewButton: Ref<boolean>;
|
22
|
+
imagePreview: Ref<boolean>;
|
23
|
+
slots: import('..').UploadSlots;
|
24
|
+
onBeforeUpload: import('..').OnBeforeUpload;
|
25
|
+
handleDelFile: (fileItem: FileItem) => Promise<void>;
|
26
|
+
emits: UploadEmits;
|
27
|
+
} | {
|
28
|
+
handleUpload: () => void;
|
29
|
+
handleFiles: (fileData: File[] | FileList | null) => void;
|
30
|
+
computedFileList: import('vue').WritableComputedRef<FileItem[], FileItem[]>;
|
31
|
+
accept: import('vue').ComputedRef<string>;
|
32
|
+
disabled: Ref<boolean, boolean>;
|
33
|
+
directory: Ref<boolean, boolean>;
|
34
|
+
multiple: Ref<boolean, boolean>;
|
35
|
+
draggable: Ref<boolean, boolean>;
|
36
|
+
limit: Ref<number, number>;
|
37
|
+
tip: Ref<string, string>;
|
38
|
+
listType: Ref<import('..').FileListType, import('..').FileListType>;
|
39
|
+
imageLoading: Ref<import('..').ImageLoading, import('..').ImageLoading>;
|
40
|
+
showLink: Ref<boolean, boolean>;
|
41
|
+
download: Ref<boolean, boolean>;
|
42
|
+
customIcon: Ref<import('..').CustomIcon, import('..').CustomIcon>;
|
43
|
+
imagePreview: Ref<boolean, boolean>;
|
44
|
+
showRemoveButton: Ref<boolean, boolean>;
|
45
|
+
showPreviewButton: Ref<boolean, boolean>;
|
46
|
+
name: any;
|
47
|
+
slots: import('..').UploadSlots;
|
48
|
+
onBeforeUpload: any;
|
49
|
+
handleDelFile: (fileItem: FileItem) => Promise<void>;
|
50
|
+
emits: UploadEmits;
|
51
|
+
};
|
@@ -0,0 +1,85 @@
|
|
1
|
+
import { nanoid } from "../../node_modules/nanoid/index.browser.js";
|
2
|
+
import "vue";
|
3
|
+
import { isString } from "../../_shared/utils/is.js";
|
4
|
+
import { useFileDialog, useDropZone } from "../../node_modules/@vueuse/core/index.js";
|
5
|
+
import useUploadContext from "./useContext.js";
|
6
|
+
function useUpload(uploadRef, _props, _emits) {
|
7
|
+
let context;
|
8
|
+
if (_props && _emits) {
|
9
|
+
context = useUploadContext().provide(_props, _emits);
|
10
|
+
} else {
|
11
|
+
context = useUploadContext().inject();
|
12
|
+
}
|
13
|
+
const {
|
14
|
+
computedFileList,
|
15
|
+
disabled,
|
16
|
+
limit,
|
17
|
+
accept,
|
18
|
+
directory,
|
19
|
+
multiple,
|
20
|
+
name,
|
21
|
+
onBeforeUpload,
|
22
|
+
emits
|
23
|
+
} = context;
|
24
|
+
const { onChange, open } = useFileDialog({
|
25
|
+
directory: directory.value,
|
26
|
+
multiple: multiple.value,
|
27
|
+
accept: accept.value,
|
28
|
+
reset: true
|
29
|
+
});
|
30
|
+
onChange((files) => handleFiles(files));
|
31
|
+
useDropZone(uploadRef, {
|
32
|
+
dataTypes: accept.value ? accept.value.split(",") : void 0,
|
33
|
+
multiple: multiple.value,
|
34
|
+
preventDefaultForUnhandled: true,
|
35
|
+
onDrop: (files) => handleFiles(files)
|
36
|
+
});
|
37
|
+
const isOutOfLimit = (length = 0) => {
|
38
|
+
return limit.value > 0 && length + computedFileList.value.length > limit.value;
|
39
|
+
};
|
40
|
+
const getFileName = (fileItem) => {
|
41
|
+
if (name) {
|
42
|
+
return isString(name) ? name : name(fileItem);
|
43
|
+
}
|
44
|
+
return fileItem.name;
|
45
|
+
};
|
46
|
+
const handleFiles = (fileData) => {
|
47
|
+
const files = [...fileData || []].filter((file) => onBeforeUpload(file));
|
48
|
+
console.log(files);
|
49
|
+
if (!files.length || disabled.value || isOutOfLimit(files.length)) {
|
50
|
+
if (!isOutOfLimit(files == null ? void 0 : files.length)) return;
|
51
|
+
emits("exceed-limit", computedFileList.value, files);
|
52
|
+
return;
|
53
|
+
}
|
54
|
+
computedFileList.value = [
|
55
|
+
...computedFileList.value,
|
56
|
+
...files.map((v) => {
|
57
|
+
const fileItem = {
|
58
|
+
name: v.name,
|
59
|
+
uid: nanoid(),
|
60
|
+
file: v,
|
61
|
+
status: "init",
|
62
|
+
percent: 0,
|
63
|
+
url: URL.createObjectURL(v)
|
64
|
+
};
|
65
|
+
return {
|
66
|
+
...fileItem,
|
67
|
+
name: getFileName(fileItem)
|
68
|
+
};
|
69
|
+
})
|
70
|
+
];
|
71
|
+
emits("change", computedFileList.value, [...files]);
|
72
|
+
};
|
73
|
+
const handleUpload = () => {
|
74
|
+
if (disabled.value) return;
|
75
|
+
open();
|
76
|
+
};
|
77
|
+
return {
|
78
|
+
...context,
|
79
|
+
handleUpload,
|
80
|
+
handleFiles
|
81
|
+
};
|
82
|
+
}
|
83
|
+
export {
|
84
|
+
useUpload as default
|
85
|
+
};
|
@@ -0,0 +1 @@
|
|
1
|
+
.yc-upload-wrapper{width:100%;display:flex;flex-direction:column}.yc-upload-wrapper .yc-upload{cursor:pointer;max-width:100%}.yc-upload-wrapper .yc-upload .yc-upload-tip{max-width:100%;color:var(--color-text-3);font-size:12px;line-height:1.5}.yc-upload-wrapper .yc-upload .yc-upload-button{display:flex;flex-direction:column;gap:4px}.yc-upload-wrapper .yc-upload .yc-upload-button .yc-button{width:fit-content;max-width:100%}.yc-upload-wrapper .yc-upload .yc-upload-drag{width:100%;padding:50px 0;background-color:var(--color-fill-1);border:1px dashed var(--color-neutral-3);border-radius:var(--border-radius-small);color:var(--color-text-1);transition:all .2s ease;display:flex;flex-direction:column;align-items:center}.yc-upload-wrapper .yc-upload .yc-upload-drag:not(.yc-upload-drag-disabled):hover{background-color:var(--color-fill-3);border-color:var(--color-neutral-4)}.yc-upload-wrapper .yc-upload .yc-upload-drag .yc-upload-drag-icon{color:var(--color-text-2)}.yc-upload-wrapper .yc-upload .yc-upload-drag .yc-upload-drag-icon .yc-icon{margin-bottom:24px;font-size:14px}.yc-upload-wrapper .yc-upload .yc-upload-drag .yc-upload-drag-text{color:var(--color-text-1);font-size:14px;line-height:1.5}.yc-upload-list-type-text,.yc-upload-list-type-picture{width:100%;margin-top:24px;display:flex;flex-direction:column;gap:12px}.yc-upload-list-type-text .yc-upload-list-item,.yc-upload-list-type-picture .yc-upload-list-item{overflow:hidden;display:flex;align-items:center;gap:12px}.yc-upload-list-type-text .yc-upload-list-item .yc-upload-list-item-content,.yc-upload-list-type-picture .yc-upload-list-item .yc-upload-list-item-content{overflow:hidden;flex:1;width:100%;padding:8px 10px 8px 12px;background-color:var(--color-fill-1);transition:background-color .1s cubic-bezier(0, 0, 1, 1);font-size:14px;display:flex;align-items:center}.yc-upload-list-type-text .yc-upload-list-item .yc-upload-list-item-content .yc-upload-list-item-thumbnail,.yc-upload-list-type-picture .yc-upload-list-item .yc-upload-list-item-content .yc-upload-list-item-thumbnail{flex-shrink:0;width:40px;height:40px;margin-right:12px}.yc-upload-list-type-text .yc-upload-list-item .yc-upload-list-item-content .yc-upload-list-item-thumbnail img,.yc-upload-list-type-picture .yc-upload-list-item .yc-upload-list-item-content .yc-upload-list-item-thumbnail img{width:100%;height:100%}.yc-upload-list-type-text .yc-upload-list-item .yc-upload-list-item-content .yc-upload-list-item-name,.yc-upload-list-type-picture .yc-upload-list-item .yc-upload-list-item-content .yc-upload-list-item-name{flex:1;overflow:hidden;color:var(--color-text-1);font-size:14px;line-height:1.4286;display:flex;align-items:center;gap:12px}.yc-upload-list-type-text .yc-upload-list-item .yc-upload-list-item-content .yc-upload-list-item-name .yc-upload-list-item-file-icon,.yc-upload-list-type-picture .yc-upload-list-item .yc-upload-list-item-content .yc-upload-list-item-name .yc-upload-list-item-file-icon{color:rgb(var(--primary-6));font-size:16px;display:flex;justify-content:center;align-items:center}.yc-upload-list-type-text .yc-upload-list-item .yc-upload-list-item-content .yc-upload-list-item-name .yc-upload-list-item-name-link,.yc-upload-list-type-picture .yc-upload-list-item .yc-upload-list-item-content .yc-upload-list-item-name .yc-upload-list-item-name-link{cursor:pointer;color:rgb(var(--link-6))}.yc-upload-list-type-text .yc-upload-list-item .yc-upload-list-item-operation,.yc-upload-list-type-picture .yc-upload-list-item .yc-upload-list-item-operation{color:var(--color-text-2);font-size:12px}.yc-upload-list-type-picture-card{display:flex;flex-wrap:wrap;gap:8px}.yc-upload-list-type-picture-card .yc-upload-list-picture{position:relative;width:80px;height:80px;overflow:hidden;line-height:80px;text-align:center;border-radius:var(--border-radius-small);transition:all .2s cubic-bezier(.34, .69, .1, 1)}.yc-upload-list-type-picture-card .yc-upload-list-picture:hover .yc-upload-list-picture-mask{opacity:1}.yc-upload-list-type-picture-card .yc-upload-list-picture img{width:100%;height:100%}.yc-upload-list-type-picture-card .yc-upload-list-picture .yc-upload-list-picture-mask{position:absolute;left:0;top:0;width:100%;height:100%;background:rgba(0,0,0,0.5);color:var(--color-white);font-size:16px;line-height:80px;cursor:pointer;opacity:0;transition:opacity .1s cubic-bezier(0, 0, 1, 1)}.yc-upload-list-type-picture-card .yc-upload-list-picture .yc-upload-list-picture-mask .yc-upload-list-picture-operation{width:100%;display:flex;justify-content:space-evenly;align-items:center}.yc-upload-list-type-picture-card .yc-upload-list-picture .yc-upload-list-picture-mask .yc-upload-list-picture-operation .yc-upload-icon{cursor:pointer}.yc-upload-list-type-picture-card .yc-upload-picture-card{min-width:80px;height:80px;background:var(--color-fill-2);border:1px dashed var(--color-neutral-3);border-radius:var(--border-radius-small);color:var(--color-text-2);transition:all .1s cubic-bezier(0, 0, 1, 1);display:flex;flex-direction:column;justify-content:center;align-items:center}.yc-upload-list-type-picture-card .yc-upload-picture-card:not(.yc-upload-picture-card-disabled):hover{color:var(--color-text-2);background-color:var(--color-fill-3);border-color:var(--color-neutral-4)}.yc-upload-disabled .yc-upload{cursor:not-allowed}.yc-upload-disabled .yc-upload .yc-upload-drag,.yc-upload-disabled .yc-upload .yc-upload-picture-card{border-color:var(--color-text-4)}.yc-upload-disabled .yc-upload .yc-upload-drag .yc-upload-drag-text,.yc-upload-disabled .yc-upload .yc-upload-picture-card .yc-upload-drag-text,.yc-upload-disabled .yc-upload .yc-upload-drag .yc-upload-tip,.yc-upload-disabled .yc-upload .yc-upload-picture-card .yc-upload-tip,.yc-upload-disabled .yc-upload .yc-upload-drag .yc-upload-drag-icon,.yc-upload-disabled .yc-upload .yc-upload-picture-card .yc-upload-drag-icon,.yc-upload-disabled .yc-upload .yc-upload-drag .yc-upload-picture-card-text,.yc-upload-disabled .yc-upload .yc-upload-picture-card .yc-upload-picture-card-text{color:var(--color-text-4)}
|