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 };