diff --git a/components.json b/components.json
index ae66b64be..a8c7f15f9 100644
--- a/components.json
+++ b/components.json
@@ -31,6 +31,8 @@
"actionsheet": "./packages/actionsheet/index.js",
"quantity": "./packages/quantity/index.js",
"progress": "./packages/progress/index.js",
+ "uploader": "./packages/uploader/index.js",
"swipe": "./packages/swipe/index.js",
"swipe-item": "./packages/swipe-item/index.js"
+
}
diff --git a/docs/examples-docs/uploader.md b/docs/examples-docs/uploader.md
new file mode 100644
index 000000000..193714197
--- /dev/null
+++ b/docs/examples-docs/uploader.md
@@ -0,0 +1,54 @@
+
+
+## Uploader 组件
+
+### 基础用法
+
+:::demo 基础用法
+```html
+
+
+
+
+```
+:::
+### 自定义上传图标
+:::demo 自定义上传图标
+```html
+
+
+
+
+
+```
+:::
+
+
+### API
+
+| 参数 | 说明 | 类型 | 默认值 | 可选值 |
+|-----------|-----------|-----------|-------------|-------------|
+| result-type | 读取文件的方式,以base64的方式读取;以文本的方式读取 | String | 'dataUrl' | 'dataUrl','text' |
+| disable | 是否禁用上传,在图片上传期间设置为true,禁止用户点击此组件上传图片 | boolean | false | |
+| before-read | 读文件之前的钩子,参数为选择的文件,若返回 false 则停止读取文件。 | Function | | |
+| file-readed | 文件读完之后出发此事件,参数为{name:'文件名',type:'文件类型',size:'文件大小',content:'读的内容'} | Function | | |
+
+### Slot
+
+| name | 描述 |
+|-----------|-----------|
+| - | 自定义上传显示图标 |
diff --git a/docs/nav.config.json b/docs/nav.config.json
index bee4487f5..68dc4d62e 100644
--- a/docs/nav.config.json
+++ b/docs/nav.config.json
@@ -106,8 +106,8 @@
"title": "Toast"
},
{
- "path": "/img-uploader",
- "title": "Img Uploader"
+ "path": "/uploader",
+ "title": "Uploader"
},
{
"path": "/picker",
diff --git a/packages/uploader/index.js b/packages/uploader/index.js
new file mode 100644
index 000000000..923a084e7
--- /dev/null
+++ b/packages/uploader/index.js
@@ -0,0 +1,3 @@
+import Uploader from './src/main';
+
+export default Uploader;
diff --git a/packages/uploader/src/main.vue b/packages/uploader/src/main.vue
new file mode 100644
index 000000000..1bcec4541
--- /dev/null
+++ b/packages/uploader/src/main.vue
@@ -0,0 +1,64 @@
+
+
+
+
+
diff --git a/packages/zanui-css/src/index.css b/packages/zanui-css/src/index.css
index 11f7b10de..c252f4a22 100644
--- a/packages/zanui-css/src/index.css
+++ b/packages/zanui-css/src/index.css
@@ -25,4 +25,6 @@
@import './actionsheet.css';
@import './quantity.css';
@import './progress.css';
+@import './uploader.css';
@import './swipe.css';
+
diff --git a/packages/zanui-css/src/uploader.css b/packages/zanui-css/src/uploader.css
new file mode 100644
index 000000000..d451b6caa
--- /dev/null
+++ b/packages/zanui-css/src/uploader.css
@@ -0,0 +1,24 @@
+
+@component-namespace zan {
+ @b uploader {
+ position: relative;
+ display: inline-block;
+
+ @e input {
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ display: block;
+ width: 100%;
+ height: 100%;
+ opacity: 0;
+ cursor:pointer;
+ }
+
+ input[type="file" i]::-webkit-file-upload-button {
+ cursor:pointer;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/index.js b/src/index.js
index a3ce28f30..b698261b2 100644
--- a/src/index.js
+++ b/src/index.js
@@ -30,6 +30,7 @@ import Row from '../packages/row/index.js';
import Actionsheet from '../packages/actionsheet/index.js';
import Quantity from '../packages/quantity/index.js';
import Progress from '../packages/progress/index.js';
+import Uploader from '../packages/uploader/index.js';
import Swipe from '../packages/swipe/index.js';
import SwipeItem from '../packages/swipe-item/index.js';
@@ -64,6 +65,7 @@ const install = function(Vue) {
Vue.component(Actionsheet.name, Actionsheet);
Vue.component(Quantity.name, Quantity);
Vue.component(Progress.name, Progress);
+ Vue.component(Uploader.name, Uploader);
Vue.component(Swipe.name, Swipe);
Vue.component(SwipeItem.name, SwipeItem);
};
@@ -108,6 +110,7 @@ module.exports = {
Actionsheet,
Quantity,
Progress,
+ Uploader,
Swipe,
SwipeItem
};