From bee718ed145a972d0c004f58f0bb38d3772ebfb7 Mon Sep 17 00:00:00 2001 From: Rain Sun Date: Fri, 14 Dec 2018 19:25:48 +0800 Subject: [PATCH] Initial Commit --- .gitignore | 14 +++ app.js | 16 ++++ app.json | 25 +++++ app.wxss | 10 ++ dist/action-sheet/index.js | 47 ++++++++++ dist/action-sheet/index.json | 8 ++ dist/action-sheet/index.wxml | 23 +++++ dist/action-sheet/index.wxss | 1 + dist/alert/index.js | 37 ++++++++ dist/alert/index.json | 7 ++ dist/alert/index.wxml | 15 +++ dist/alert/index.wxss | 1 + dist/avatar/index.js | 20 ++++ dist/avatar/index.json | 3 + dist/avatar/index.wxml | 4 + dist/avatar/index.wxss | 1 + dist/badge/index.js | 29 ++++++ dist/badge/index.json | 3 + dist/badge/index.wxml | 5 + dist/badge/index.wxss | 1 + dist/base/index.js | 37 ++++++++ dist/button/index.js | 80 ++++++++++++++++ dist/button/index.json | 3 + dist/button/index.wxml | 20 ++++ dist/button/index.wxss | 1 + dist/card/index.js | 26 ++++++ dist/card/index.json | 3 + dist/card/index.wxml | 11 +++ dist/card/index.wxss | 1 + dist/cell-group/index.js | 33 +++++++ dist/cell-group/index.json | 3 + dist/cell-group/index.wxml | 3 + dist/cell/index.js | 86 ++++++++++++++++++ dist/cell/index.json | 3 + dist/cell/index.wxml | 16 ++++ dist/cell/index.wxss | 1 + dist/checkbox-group/index.js | 38 ++++++++ dist/checkbox-group/index.json | 7 ++ dist/checkbox-group/index.wxml | 3 + dist/checkbox-group/index.wxss | 0 dist/checkbox/index.js | 56 ++++++++++++ dist/checkbox/index.json | 7 ++ dist/checkbox/index.wxml | 8 ++ dist/checkbox/index.wxss | 1 + dist/col/index.js | 20 ++++ dist/col/index.json | 3 + dist/col/index.wxml | 1 + dist/col/index.wxss | 1 + dist/collapse-item/index.js | 46 ++++++++++ dist/collapse-item/index.json | 7 ++ dist/collapse-item/index.wxml | 9 ++ dist/collapse-item/index.wxss | 1 + dist/collapse/index.js | 31 +++++++ dist/collapse/index.json | 3 + dist/collapse/index.wxml | 4 + dist/collapse/index.wxss | 0 dist/count-down/index.js | 90 ++++++++++++++++++ dist/count-down/index.json | 4 + dist/count-down/index.wxml | 4 + dist/count-down/index.wxss | 0 dist/divider/index.js | 25 +++++ dist/divider/index.json | 3 + dist/divider/index.wxml | 19 ++++ dist/divider/index.wxss | 1 + dist/drawer/index.js | 33 +++++++ dist/drawer/index.json | 3 + dist/drawer/index.wxml | 6 ++ dist/drawer/index.wxss | 1 + dist/grid-icon/index.js | 10 ++ dist/grid-icon/index.json | 3 + dist/grid-icon/index.wxml | 1 + dist/grid-icon/index.wxss | 1 + dist/grid-item/index.js | 16 ++++ dist/grid-item/index.json | 3 + dist/grid-item/index.wxml | 1 + dist/grid-item/index.wxss | 1 + dist/grid-label/index.js | 10 ++ dist/grid-label/index.json | 3 + dist/grid-label/index.wxml | 1 + dist/grid-label/index.wxss | 1 + dist/grid/index.js | 50 ++++++++++ dist/grid/index.json | 3 + dist/grid/index.wxml | 1 + dist/grid/index.wxss | 1 + dist/icon/index.js | 22 +++++ dist/icon/index.json | 3 + dist/icon/index.wxml | 1 + dist/icon/index.wxss | 1 + dist/index-item/index.js | 32 +++++++ dist/index-item/index.json | 3 + dist/index-item/index.wxml | 11 +++ dist/index-item/index.wxss | 1 + dist/index/index.js | 158 ++++++++++++++++++++++++++++++++ dist/index/index.json | 3 + dist/index/index.wxml | 38 ++++++++ dist/index/index.wxss | 1 + dist/input-number/index.js | 101 +++++++++++++++++++++ dist/input-number/index.json | 3 + dist/input-number/index.wxml | 5 + dist/input-number/index.wxss | 1 + dist/input/index.js | 61 +++++++++++++ dist/input/index.json | 3 + dist/input/index.wxml | 31 +++++++ dist/input/index.wxss | 1 + dist/load-more/index.js | 14 +++ dist/load-more/index.json | 3 + dist/load-more/index.wxml | 8 ++ dist/load-more/index.wxss | 1 + dist/message/index.js | 45 +++++++++ dist/message/index.json | 3 + dist/message/index.wxml | 3 + dist/message/index.wxss | 1 + dist/modal/index.js | 54 +++++++++++ dist/modal/index.json | 9 ++ dist/modal/index.wxml | 40 ++++++++ dist/modal/index.wxss | 1 + dist/notice-bar/index.js | 112 +++++++++++++++++++++++ dist/notice-bar/index.json | 7 ++ dist/notice-bar/index.wxml | 9 ++ dist/notice-bar/index.wxss | 1 + dist/page/index.js | 42 +++++++++ dist/page/index.json | 7 ++ dist/page/index.wxml | 14 +++ dist/page/index.wxss | 1 + dist/panel/index.js | 19 ++++ dist/panel/index.json | 3 + dist/panel/index.wxml | 4 + dist/panel/index.wxss | 1 + dist/progress/index.js | 23 +++++ dist/progress/index.json | 3 + dist/progress/index.wxml | 10 ++ dist/progress/index.wxss | 1 + dist/radio-group/index.js | 38 ++++++++ dist/radio-group/index.json | 7 ++ dist/radio-group/index.wxml | 3 + dist/radio-group/index.wxss | 0 dist/radio/index.js | 56 ++++++++++++ dist/radio/index.json | 7 ++ dist/radio/index.wxml | 8 ++ dist/radio/index.wxss | 1 + dist/rate/index.js | 69 ++++++++++++++ dist/rate/index.json | 6 ++ dist/rate/index.wxml | 23 +++++ dist/rate/index.wxss | 1 + dist/row/index.js | 9 ++ dist/row/index.json | 3 + dist/row/index.wxml | 1 + dist/row/index.wxss | 1 + dist/slide/index.js | 15 +++ dist/slide/index.json | 8 ++ dist/slide/index.wxml | 4 + dist/slide/index.wxss | 0 dist/spin/index.js | 23 +++++ dist/spin/index.json | 3 + dist/spin/index.wxml | 6 ++ dist/spin/index.wxss | 1 + dist/step/index.js | 52 +++++++++++ dist/step/index.json | 7 ++ dist/step/index.wxml | 70 ++++++++++++++ dist/step/index.wxss | 1 + dist/steps/index.js | 50 ++++++++++ dist/steps/index.json | 3 + dist/steps/index.wxml | 3 + dist/steps/index.wxss | 1 + dist/sticky-item/index.js | 40 ++++++++ dist/sticky-item/index.json | 3 + dist/sticky-item/index.wxml | 10 ++ dist/sticky-item/index.wxss | 1 + dist/sticky/index.js | 63 +++++++++++++ dist/sticky/index.json | 3 + dist/sticky/index.wxml | 3 + dist/sticky/index.wxss | 0 dist/swipeout/index.js | 161 +++++++++++++++++++++++++++++++++ dist/swipeout/index.json | 7 ++ dist/swipeout/index.wxml | 39 ++++++++ dist/swipeout/index.wxss | 1 + dist/switch/index.js | 38 ++++++++ dist/switch/index.json | 3 + dist/switch/index.wxml | 26 ++++++ dist/switch/index.wxss | 1 + dist/tab-bar-item/index.js | 62 +++++++++++++ dist/tab-bar-item/index.json | 8 ++ dist/tab-bar-item/index.wxml | 10 ++ dist/tab-bar-item/index.wxss | 1 + dist/tab-bar/index.js | 66 ++++++++++++++ dist/tab-bar/index.json | 3 + dist/tab-bar/index.wxml | 6 ++ dist/tab-bar/index.wxss | 1 + dist/tab/index.js | 50 ++++++++++ dist/tab/index.json | 7 ++ dist/tab/index.wxml | 9 ++ dist/tab/index.wxss | 1 + dist/tabs/index.js | 56 ++++++++++++ dist/tabs/index.json | 3 + dist/tabs/index.wxml | 2 + dist/tabs/index.wxss | 1 + dist/tag/index.js | 42 +++++++++ dist/tag/index.json | 3 + dist/tag/index.wxml | 27 ++++++ dist/tag/index.wxss | 1 + dist/toast/index.js | 48 ++++++++++ dist/toast/index.json | 7 ++ dist/toast/index.wxml | 16 ++++ dist/toast/index.wxss | 1 + images/title_bg.jpg | Bin 0 -> 119718 bytes pages/index/index.js | 66 ++++++++++++++ pages/index/index.json | 1 + pages/index/index.wxml | 2 + pages/index/index.wxss | 1 + pages/main/main.js | 128 ++++++++++++++++++++++++++ pages/main/main.json | 3 + pages/main/main.wxml | 30 ++++++ pages/main/main.wxss | 123 +++++++++++++++++++++++++ project.config.json | 39 ++++++++ 214 files changed, 3760 insertions(+) create mode 100644 .gitignore create mode 100644 app.js create mode 100644 app.json create mode 100644 app.wxss create mode 100644 dist/action-sheet/index.js create mode 100644 dist/action-sheet/index.json create mode 100644 dist/action-sheet/index.wxml create mode 100644 dist/action-sheet/index.wxss create mode 100644 dist/alert/index.js create mode 100644 dist/alert/index.json create mode 100644 dist/alert/index.wxml create mode 100644 dist/alert/index.wxss create mode 100644 dist/avatar/index.js create mode 100644 dist/avatar/index.json create mode 100644 dist/avatar/index.wxml create mode 100644 dist/avatar/index.wxss create mode 100644 dist/badge/index.js create mode 100644 dist/badge/index.json create mode 100644 dist/badge/index.wxml create mode 100644 dist/badge/index.wxss create mode 100644 dist/base/index.js create mode 100644 dist/button/index.js create mode 100644 dist/button/index.json create mode 100644 dist/button/index.wxml create mode 100644 dist/button/index.wxss create mode 100644 dist/card/index.js create mode 100644 dist/card/index.json create mode 100644 dist/card/index.wxml create mode 100644 dist/card/index.wxss create mode 100644 dist/cell-group/index.js create mode 100644 dist/cell-group/index.json create mode 100644 dist/cell-group/index.wxml create mode 100644 dist/cell/index.js create mode 100644 dist/cell/index.json create mode 100644 dist/cell/index.wxml create mode 100644 dist/cell/index.wxss create mode 100644 dist/checkbox-group/index.js create mode 100644 dist/checkbox-group/index.json create mode 100644 dist/checkbox-group/index.wxml create mode 100644 dist/checkbox-group/index.wxss create mode 100644 dist/checkbox/index.js create mode 100644 dist/checkbox/index.json create mode 100644 dist/checkbox/index.wxml create mode 100644 dist/checkbox/index.wxss create mode 100644 dist/col/index.js create mode 100644 dist/col/index.json create mode 100644 dist/col/index.wxml create mode 100644 dist/col/index.wxss create mode 100644 dist/collapse-item/index.js create mode 100644 dist/collapse-item/index.json create mode 100644 dist/collapse-item/index.wxml create mode 100644 dist/collapse-item/index.wxss create mode 100644 dist/collapse/index.js create mode 100644 dist/collapse/index.json create mode 100644 dist/collapse/index.wxml create mode 100644 dist/collapse/index.wxss create mode 100644 dist/count-down/index.js create mode 100644 dist/count-down/index.json create mode 100644 dist/count-down/index.wxml create mode 100644 dist/count-down/index.wxss create mode 100644 dist/divider/index.js create mode 100644 dist/divider/index.json create mode 100644 dist/divider/index.wxml create mode 100644 dist/divider/index.wxss create mode 100644 dist/drawer/index.js create mode 100644 dist/drawer/index.json create mode 100644 dist/drawer/index.wxml create mode 100644 dist/drawer/index.wxss create mode 100644 dist/grid-icon/index.js create mode 100644 dist/grid-icon/index.json create mode 100644 dist/grid-icon/index.wxml create mode 100644 dist/grid-icon/index.wxss create mode 100644 dist/grid-item/index.js create mode 100644 dist/grid-item/index.json create mode 100644 dist/grid-item/index.wxml create mode 100644 dist/grid-item/index.wxss create mode 100644 dist/grid-label/index.js create mode 100644 dist/grid-label/index.json create mode 100644 dist/grid-label/index.wxml create mode 100644 dist/grid-label/index.wxss create mode 100644 dist/grid/index.js create mode 100644 dist/grid/index.json create mode 100644 dist/grid/index.wxml create mode 100644 dist/grid/index.wxss create mode 100644 dist/icon/index.js create mode 100644 dist/icon/index.json create mode 100644 dist/icon/index.wxml create mode 100644 dist/icon/index.wxss create mode 100644 dist/index-item/index.js create mode 100644 dist/index-item/index.json create mode 100644 dist/index-item/index.wxml create mode 100644 dist/index-item/index.wxss create mode 100644 dist/index/index.js create mode 100644 dist/index/index.json create mode 100644 dist/index/index.wxml create mode 100644 dist/index/index.wxss create mode 100644 dist/input-number/index.js create mode 100644 dist/input-number/index.json create mode 100644 dist/input-number/index.wxml create mode 100644 dist/input-number/index.wxss create mode 100644 dist/input/index.js create mode 100644 dist/input/index.json create mode 100644 dist/input/index.wxml create mode 100644 dist/input/index.wxss create mode 100644 dist/load-more/index.js create mode 100644 dist/load-more/index.json create mode 100644 dist/load-more/index.wxml create mode 100644 dist/load-more/index.wxss create mode 100644 dist/message/index.js create mode 100644 dist/message/index.json create mode 100644 dist/message/index.wxml create mode 100644 dist/message/index.wxss create mode 100644 dist/modal/index.js create mode 100644 dist/modal/index.json create mode 100644 dist/modal/index.wxml create mode 100644 dist/modal/index.wxss create mode 100644 dist/notice-bar/index.js create mode 100644 dist/notice-bar/index.json create mode 100644 dist/notice-bar/index.wxml create mode 100644 dist/notice-bar/index.wxss create mode 100644 dist/page/index.js create mode 100644 dist/page/index.json create mode 100644 dist/page/index.wxml create mode 100644 dist/page/index.wxss create mode 100644 dist/panel/index.js create mode 100644 dist/panel/index.json create mode 100644 dist/panel/index.wxml create mode 100644 dist/panel/index.wxss create mode 100644 dist/progress/index.js create mode 100644 dist/progress/index.json create mode 100644 dist/progress/index.wxml create mode 100644 dist/progress/index.wxss create mode 100644 dist/radio-group/index.js create mode 100644 dist/radio-group/index.json create mode 100644 dist/radio-group/index.wxml create mode 100644 dist/radio-group/index.wxss create mode 100644 dist/radio/index.js create mode 100644 dist/radio/index.json create mode 100644 dist/radio/index.wxml create mode 100644 dist/radio/index.wxss create mode 100644 dist/rate/index.js create mode 100644 dist/rate/index.json create mode 100644 dist/rate/index.wxml create mode 100644 dist/rate/index.wxss create mode 100644 dist/row/index.js create mode 100644 dist/row/index.json create mode 100644 dist/row/index.wxml create mode 100644 dist/row/index.wxss create mode 100644 dist/slide/index.js create mode 100644 dist/slide/index.json create mode 100644 dist/slide/index.wxml create mode 100644 dist/slide/index.wxss create mode 100644 dist/spin/index.js create mode 100644 dist/spin/index.json create mode 100644 dist/spin/index.wxml create mode 100644 dist/spin/index.wxss create mode 100644 dist/step/index.js create mode 100644 dist/step/index.json create mode 100644 dist/step/index.wxml create mode 100644 dist/step/index.wxss create mode 100644 dist/steps/index.js create mode 100644 dist/steps/index.json create mode 100644 dist/steps/index.wxml create mode 100644 dist/steps/index.wxss create mode 100644 dist/sticky-item/index.js create mode 100644 dist/sticky-item/index.json create mode 100644 dist/sticky-item/index.wxml create mode 100644 dist/sticky-item/index.wxss create mode 100644 dist/sticky/index.js create mode 100644 dist/sticky/index.json create mode 100644 dist/sticky/index.wxml create mode 100644 dist/sticky/index.wxss create mode 100644 dist/swipeout/index.js create mode 100644 dist/swipeout/index.json create mode 100644 dist/swipeout/index.wxml create mode 100644 dist/swipeout/index.wxss create mode 100644 dist/switch/index.js create mode 100644 dist/switch/index.json create mode 100644 dist/switch/index.wxml create mode 100644 dist/switch/index.wxss create mode 100644 dist/tab-bar-item/index.js create mode 100644 dist/tab-bar-item/index.json create mode 100644 dist/tab-bar-item/index.wxml create mode 100644 dist/tab-bar-item/index.wxss create mode 100644 dist/tab-bar/index.js create mode 100644 dist/tab-bar/index.json create mode 100644 dist/tab-bar/index.wxml create mode 100644 dist/tab-bar/index.wxss create mode 100644 dist/tab/index.js create mode 100644 dist/tab/index.json create mode 100644 dist/tab/index.wxml create mode 100644 dist/tab/index.wxss create mode 100644 dist/tabs/index.js create mode 100644 dist/tabs/index.json create mode 100644 dist/tabs/index.wxml create mode 100644 dist/tabs/index.wxss create mode 100644 dist/tag/index.js create mode 100644 dist/tag/index.json create mode 100644 dist/tag/index.wxml create mode 100644 dist/tag/index.wxss create mode 100644 dist/toast/index.js create mode 100644 dist/toast/index.json create mode 100644 dist/toast/index.wxml create mode 100644 dist/toast/index.wxss create mode 100644 images/title_bg.jpg create mode 100644 pages/index/index.js create mode 100644 pages/index/index.json create mode 100644 pages/index/index.wxml create mode 100644 pages/index/index.wxss create mode 100644 pages/main/main.js create mode 100644 pages/main/main.json create mode 100644 pages/main/main.wxml create mode 100644 pages/main/main.wxss create mode 100644 project.config.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..10fa70b --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +# Windows +[Dd]esktop.ini +Thumbs.db +$RECYCLE.BIN/ + +# macOS +.DS_Store +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes + +# Node.js +node_modules/ diff --git a/app.js b/app.js new file mode 100644 index 0000000..aac0ff4 --- /dev/null +++ b/app.js @@ -0,0 +1,16 @@ +//app.js +App({ + onLaunch: function () { + wx.getSystemInfo({ + success: res => { + //导航高度 + this.globalData.navHeight = res.statusBarHeight + 46; + }, fail(err) { + console.log(err); + } + }) + }, + globalData: { + navHeight:0 + } +}) \ No newline at end of file diff --git a/app.json b/app.json new file mode 100644 index 0000000..e9c1821 --- /dev/null +++ b/app.json @@ -0,0 +1,25 @@ +{ + "pages":[ + "pages/main/main", + "pages/index/index" + ], + "window":{ + "backgroundTextStyle":"light", + "navigationBarBackgroundColor": "#fff", + "navigationBarTitleText": "WeChat", + "navigationBarTextStyle":"black", + "navigationStyle":"custom" + } +} + + + + + + + + + + + + diff --git a/app.wxss b/app.wxss new file mode 100644 index 0000000..0fef46a --- /dev/null +++ b/app.wxss @@ -0,0 +1,10 @@ +/**app.wxss**/ +.container { + height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: space-between; + padding: 200rpx 0; + box-sizing: border-box; +} diff --git a/dist/action-sheet/index.js b/dist/action-sheet/index.js new file mode 100644 index 0000000..2db31aa --- /dev/null +++ b/dist/action-sheet/index.js @@ -0,0 +1,47 @@ +Component({ + externalClasses: ['i-class', 'i-class-mask', 'i-class-header'], + + options: { + multipleSlots: true + }, + + properties: { + visible: { + type: Boolean, + value: false + }, + maskClosable: { + type: Boolean, + value: true + }, + showCancel: { + type: Boolean, + value: false + }, + cancelText: { + type: String, + value: '取消' + }, + actions: { + type: Array, + value: [] + } + }, + + methods: { + handleClickMask () { + if (!this.data.maskClosable) return; + this.handleClickCancel(); + }, + + handleClickItem ({ currentTarget = {} }) { + const dataset = currentTarget.dataset || {}; + const { index } = dataset; + this.triggerEvent('click', { index }); + }, + + handleClickCancel () { + this.triggerEvent('cancel'); + } + } +}); diff --git a/dist/action-sheet/index.json b/dist/action-sheet/index.json new file mode 100644 index 0000000..6b1e67d --- /dev/null +++ b/dist/action-sheet/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": + { + "i-button": "../button/index", + "i-icon": "../icon/index" + } +} diff --git a/dist/action-sheet/index.wxml b/dist/action-sheet/index.wxml new file mode 100644 index 0000000..332f393 --- /dev/null +++ b/dist/action-sheet/index.wxml @@ -0,0 +1,23 @@ + + + + + + + + + {{ item.name }} + + + + + {{ cancelText }} + + diff --git a/dist/action-sheet/index.wxss b/dist/action-sheet/index.wxss new file mode 100644 index 0000000..05c6f04 --- /dev/null +++ b/dist/action-sheet/index.wxss @@ -0,0 +1 @@ +.i-as{position:fixed;width:100%;box-sizing:border-box;left:0;right:0;bottom:0;background:#f7f7f7;transform:translate3d(0,100%,0);transform-origin:center;transition:all .2s ease-in-out;z-index:900;visibility:hidden}.i-as-show{transform:translate3d(0,0,0);visibility:visible}.i-as-mask{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);z-index:900;transition:all .2s ease-in-out;opacity:0;visibility:hidden}.i-as-mask-show{opacity:1;visibility:visible}.i-as-action-item{position:relative}.i-as-action-item::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-bottom-width:1px}.i-as-header{background:#fff;text-align:center;position:relative;font-size:12px;color:#80848f}.i-as-header::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-bottom-width:1px}.i-as-cancel{margin-top:6px}.i-as-btn-loading{display:inline-block;vertical-align:middle;margin-right:10px;width:12px;height:12px;background:0 0;border-radius:50%;border:2px solid #e5e5e5;border-color:#666 #e5e5e5 #e5e5e5 #e5e5e5;animation:btn-spin .6s linear;animation-iteration-count:infinite}.i-as-btn-text{display:inline-block;vertical-align:middle}.i-as-btn-icon{font-size:14px!important;margin-right:4px}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/dist/alert/index.js b/dist/alert/index.js new file mode 100644 index 0000000..461b67d --- /dev/null +++ b/dist/alert/index.js @@ -0,0 +1,37 @@ +Component({ + externalClasses: ['i-class'], + options: { + multipleSlots: true + }, + properties: { + //info, success, warning, error + type: { + type: String, + value: 'info' + }, + closable: { + type: Boolean, + value: false + }, + showIcon: { + type: Boolean, + default: false + }, + desc: { + type: Boolean, + default: false + }, + }, + data: { + closed: false + }, + methods: { + handleTap() { + this.setData({ + closed: !this.data.closed, + }); + this.triggerEvent('close'); + }, + + } +}); diff --git a/dist/alert/index.json b/dist/alert/index.json new file mode 100644 index 0000000..db3afc0 --- /dev/null +++ b/dist/alert/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/dist/alert/index.wxml b/dist/alert/index.wxml new file mode 100644 index 0000000..eebabde --- /dev/null +++ b/dist/alert/index.wxml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + diff --git a/dist/alert/index.wxss b/dist/alert/index.wxss new file mode 100644 index 0000000..0e61fce --- /dev/null +++ b/dist/alert/index.wxss @@ -0,0 +1 @@ +.i-alert{position:relative;margin:10px;padding:8px 48px 8px 16px;font-size:14px;border-radius:2px;color:#fff;background:#f7f7f7;color:#495060}.i-alert.i-alert-with-icon{padding:8px 48px 8px 38px}.i-alert-info{color:#fff;background:#2db7f5}.i-alert-success{color:#fff;background:#19be6b}.i-alert-warning{color:#fff;background:#f90}.i-alert-error{color:#fff;background:#ed3f14}.i-alert-icon{position:absolute;top:9px;left:16px;font-size:14px}.i-alert-desc{font-size:12px}.i-alert-with-desc{padding:16px;position:relative}.i-alert-with-desc.i-alert-with-icon{padding:16px 16px 16px 69px}.i-alert-with-desc .i-alert-icon{top:50%;left:24px;margin-top:-21px;font-size:28px}.i-alert-close{font-size:12px;position:absolute;right:16px;top:8px;overflow:hidden;cursor:pointer} \ No newline at end of file diff --git a/dist/avatar/index.js b/dist/avatar/index.js new file mode 100644 index 0000000..fae9476 --- /dev/null +++ b/dist/avatar/index.js @@ -0,0 +1,20 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + // circle || square + shape: { + type: String, + value: 'circle' + }, + // small || large || default + size: { + type: String, + value: 'default' + }, + src: { + type: String, + value: '' + } + } +}); diff --git a/dist/avatar/index.json b/dist/avatar/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/avatar/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/avatar/index.wxml b/dist/avatar/index.wxml new file mode 100644 index 0000000..11730c6 --- /dev/null +++ b/dist/avatar/index.wxml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/dist/avatar/index.wxss b/dist/avatar/index.wxss new file mode 100644 index 0000000..8f6e636 --- /dev/null +++ b/dist/avatar/index.wxss @@ -0,0 +1 @@ +.i-avatar{display:inline-block;text-align:center;background:#ccc;color:#fff;white-space:nowrap;position:relative;overflow:hidden;vertical-align:middle;width:32px;height:32px;line-height:32px;border-radius:16px;font-size:18px}.i-avatar .ivu-avatar-string{line-height:32px}.i-avatar-large{width:40px;height:40px;line-height:40px;border-radius:20px;font-size:24px}.i-avatar-large .ivu-avatar-string{line-height:40px}.i-avatar-small{width:24px;height:24px;line-height:24px;border-radius:12px;font-size:14px}.i-avatar-small .ivu-avatar-string{line-height:24px}.i-avatar-image{background:0 0}.i-avatar-square{border-radius:4px}.i-avatar>image{width:100%;height:100%} \ No newline at end of file diff --git a/dist/badge/index.js b/dist/badge/index.js new file mode 100644 index 0000000..2b9fb30 --- /dev/null +++ b/dist/badge/index.js @@ -0,0 +1,29 @@ +Component({ + externalClasses: ['i-class', 'i-class-alone'], + + properties: { + count: { + type: Number, + value: 0, + observer: 'finalCount' + }, + overflowCount: { + type: Number, + value: 99 + }, + dot: { + type: Boolean, + value: false + }, + }, + data: { + finalCount: 0 + }, + methods: { + finalCount() { + this.setData({ + finalCount: parseInt(this.data.count) >= parseInt(this.data.overflowCount) ? `${this.data.overflowCount}+` : this.data.count + }); + }, + } +}); diff --git a/dist/badge/index.json b/dist/badge/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/badge/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/badge/index.wxml b/dist/badge/index.wxml new file mode 100644 index 0000000..372fd7f --- /dev/null +++ b/dist/badge/index.wxml @@ -0,0 +1,5 @@ + + + + {{ finalCount }} + diff --git a/dist/badge/index.wxss b/dist/badge/index.wxss new file mode 100644 index 0000000..281658f --- /dev/null +++ b/dist/badge/index.wxss @@ -0,0 +1 @@ +.i-badge{position:relative;display:inline-block;line-height:1;vertical-align:middle}.i-badge-count{position:absolute;transform:translateX(50%);top:-6px;right:0;height:18px;border-radius:9px;min-width:18px;background:#ed3f14;border:1px solid transparent;color:#fff;line-height:18px;text-align:center;padding:0 5px;font-size:12px;white-space:nowrap;transform-origin:-10% center;z-index:10;box-shadow:0 0 0 1px #fff;box-sizing:border-box;text-rendering:optimizeLegibility}.i-badge-count-alone{top:auto;display:block;position:relative;transform:translateX(0)}.i-badge-dot{position:absolute;transform:translateX(-50%);transform-origin:0 center;top:-4px;right:-8px;height:8px;width:8px;border-radius:100%;background:#ed3f14;z-index:10;box-shadow:0 0 0 1px #fff} \ No newline at end of file diff --git a/dist/base/index.js b/dist/base/index.js new file mode 100644 index 0000000..6cb977f --- /dev/null +++ b/dist/base/index.js @@ -0,0 +1,37 @@ +function getCtx (selector) { + const pages = getCurrentPages(); + const ctx = pages[pages.length - 1]; + + const componentCtx = ctx.selectComponent(selector); + + if (!componentCtx) { + console.error('无法找到对应的组件,请按文档说明使用组件'); + return null; + } + return componentCtx; +} + +function Toast(options) { + const { selector = '#toast' } = options; + const ctx = getCtx(selector); + + ctx.handleShow(options); +} + +Toast.hide = function (selector = '#toast') { + const ctx = getCtx(selector); + + ctx.handleHide(); +}; + +function Message(options) { + const { selector = '#message' } = options; + const ctx = getCtx(selector); + + ctx.handleShow(options); +} + +module.exports = { + $Toast: Toast, + $Message: Message +}; \ No newline at end of file diff --git a/dist/button/index.js b/dist/button/index.js new file mode 100644 index 0000000..f0e9b3e --- /dev/null +++ b/dist/button/index.js @@ -0,0 +1,80 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + // default, primary, ghost, info, success, warning, error + type: { + type: String, + value: '', + }, + inline: { + type: Boolean, + value: false + }, + // default, large, small + size: { + type: String, + value: '', + }, + // circle, square + shape: { + type: String, + value: 'square' + }, + disabled: { + type: Boolean, + value: false, + }, + loading: { + type: Boolean, + value: false, + }, + long: { + type: Boolean, + value: false + }, + openType: String, + appParameter: String, + hoverStopPropagation: Boolean, + hoverStartTime: { + type: Number, + value: 20 + }, + hoverStayTime: { + type: Number, + value: 70 + }, + lang: { + type: String, + value: 'en' + }, + sessionFrom: { + type: String, + value: '' + }, + sendMessageTitle: String, + sendMessagePath: String, + sendMessageImg: String, + showMessageCard: Boolean + }, + + methods: { + handleTap () { + if (this.data.disabled) return false; + + this.triggerEvent('click'); + }, + bindgetuserinfo({ detail = {} } = {}) { + this.triggerEvent('getuserinfo', detail); + }, + bindcontact({ detail = {} } = {}) { + this.triggerEvent('contact', detail); + }, + bindgetphonenumber({ detail = {} } = {}) { + this.triggerEvent('getphonenumber', detail); + }, + binderror({ detail = {} } = {}) { + this.triggerEvent('error', detail); + } + } +}); diff --git a/dist/button/index.json b/dist/button/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/button/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/button/index.wxml b/dist/button/index.wxml new file mode 100644 index 0000000..e154eee --- /dev/null +++ b/dist/button/index.wxml @@ -0,0 +1,20 @@ + \ No newline at end of file diff --git a/dist/button/index.wxss b/dist/button/index.wxss new file mode 100644 index 0000000..550bc81 --- /dev/null +++ b/dist/button/index.wxss @@ -0,0 +1 @@ +.i-btn{text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;white-space:nowrap;user-select:none;font-size:14px;border-radius:2px;border:0!important;position:relative;text-decoration:none;height:44px;line-height:44px;box-shadow:inset 0 0 0 1px rgba(0,0,0,.1);color:#fff!important;background:#f7f7f7!important;color:#495060!important;margin:10px}.i-btn-hover{opacity:.9}.i-btn-long{border-radius:0;margin:0;box-shadow:none}.i-btn-large{height:48px;line-height:48px}.i-btn-small{height:40px;line-height:40px}.i-btn-primary{color:#fff!important;background:#2d8cf0!important}.i-btn-ghost{color:#fff!important;background:#fff!important;color:#495060!important}.i-btn-success{color:#fff!important;background:#19be6b!important}.i-btn-warning{color:#fff!important;background:#f90!important}.i-btn-error{color:#fff!important;background:#ed3f14!important}.i-btn-info{color:#fff!important;background:#2db7f5!important}.i-btn-circle{border-radius:44px}.i-btn-large.i-btn-circle{border-radius:48px}.i-btn-small.i-btn-circle{border-radius:40px}.i-btn-loading{opacity:.6}.i-btn-loading-inner{display:inline-block;margin-right:12px;vertical-align:middle;width:14px;height:14px;background:0 0;border-radius:50%;border:2px solid #fff;border-color:#fff #fff #fff transparent;animation:btn-spin .6s linear;animation-iteration-count:infinite}.i-btn-disabled{color:#bbbec4!important;background:#f7f7f7!important}.i-btn-inline{display:inline-block}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/dist/card/index.js b/dist/card/index.js new file mode 100644 index 0000000..20ad106 --- /dev/null +++ b/dist/card/index.js @@ -0,0 +1,26 @@ +Component({ + externalClasses: ['i-class'], + + options: { + multipleSlots: true + }, + + properties: { + full: { + type: Boolean, + value: false + }, + thumb: { + type: String, + value: '' + }, + title: { + type: String, + value: '' + }, + extra: { + type: String, + value: '' + } + } +}); diff --git a/dist/card/index.json b/dist/card/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/card/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/card/index.wxml b/dist/card/index.wxml new file mode 100644 index 0000000..4792293 --- /dev/null +++ b/dist/card/index.wxml @@ -0,0 +1,11 @@ + + + + + {{ title }} + + {{ extra }} + + + + diff --git a/dist/card/index.wxss b/dist/card/index.wxss new file mode 100644 index 0000000..fd8fad4 --- /dev/null +++ b/dist/card/index.wxss @@ -0,0 +1 @@ +.i-card{margin:0 16px;font-size:14px;overflow:hidden;position:relative;background:#fff;border:1rpx solid #dddee1;border-radius:5px}.i-card-full{margin:0;border-left:none;border-right:none;border-radius:0}.i-card-header{display:flex;padding:6px 16px;align-items:center}.i-card-header-content{flex:1;text-align:left}.i-card-header-thumb{display:inline-block;width:64px;height:64px;position:relative;margin-left:auto;margin-right:auto;overflow:hidden;background-size:cover;vertical-align:middle}.i-card-header-title{display:inline-block;vertical-align:middle;font-size:14px;color:#1c2438}.i-card-header-extra{flex:1;text-align:right;font-size:14px;color:#80848f}.i-card-body{position:relative;padding:6px 16px;color:#495060;font-size:14px}.i-card-body::before{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-top-width:1px}.i-card-footer{position:relative;padding:6px 16px;color:#80848f;font-size:12px} \ No newline at end of file diff --git a/dist/cell-group/index.js b/dist/cell-group/index.js new file mode 100644 index 0000000..ad36baa --- /dev/null +++ b/dist/cell-group/index.js @@ -0,0 +1,33 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../cell/index': { + type: 'child', + linked () { + this._updateIsLastCell(); + }, + linkChanged () { + this._updateIsLastCell(); + }, + unlinked () { + this._updateIsLastCell(); + } + } + }, + + methods: { + _updateIsLastCell() { + let cells = this.getRelationNodes('../cell/index'); + const len = cells.length; + + if (len > 0) { + let lastIndex = len - 1; + + cells.forEach((cell, index) => { + cell.updateIsLastCell(index === lastIndex); + }); + } + } + } +}); diff --git a/dist/cell-group/index.json b/dist/cell-group/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/cell-group/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/cell-group/index.wxml b/dist/cell-group/index.wxml new file mode 100644 index 0000000..1897919 --- /dev/null +++ b/dist/cell-group/index.wxml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/dist/cell/index.js b/dist/cell/index.js new file mode 100644 index 0000000..50e635c --- /dev/null +++ b/dist/cell/index.js @@ -0,0 +1,86 @@ +const warn = (msg, getValue) => { + console.warn(msg); + console.log('接受到的值为:', getValue); +}; + +Component({ + externalClasses: ['i-class'], + + options: { + multipleSlots: true + }, + + relations: { + '../cell-group/index': { + type: 'parent' + } + }, + + properties: { + // 左侧标题 + title: { + type: String + }, + // 标题下方的描述信息 + label: { + type: String + }, + // 右侧内容 + value: { + type: String + }, + // 只有点击 footer 区域才触发 tab 事件 + onlyTapFooter: { + type: Boolean + }, + // 是否展示右侧箭头并开启尝试以 url 跳转 + isLink: { + type: null, + value: '' + }, + // 链接类型,可选值为 navigateTo,redirectTo,switchTab,reLaunch + linkType: { + type: String, + value: 'navigateTo' + }, + url: { + type: String, + value: '' + } + }, + + data: { + isLastCell: true + }, + + methods: { + navigateTo () { + const { url } = this.data; + const type = typeof this.data.isLink; + + this.triggerEvent('click', {}); + + if (!this.data.isLink || !url || url === 'true' || url === 'false') return; + + if (type !== 'boolean' && type !== 'string') { + warn('isLink 属性值必须是一个字符串或布尔值', this.data.isLink); + return; + } + + if (['navigateTo', 'redirectTo', 'switchTab', 'reLaunch'].indexOf(this.data.linkType) === -1) { + warn('linkType 属性可选值为 navigateTo,redirectTo,switchTab,reLaunch', this.data.linkType); + return; + } + wx[this.data.linkType].call(wx, {url}); + }, + handleTap () { + if (!this.data.onlyTapFooter) { + this.navigateTo(); + } + }, + + updateIsLastCell (isLastCell) { + this.setData({ isLastCell }); + } + } +}); diff --git a/dist/cell/index.json b/dist/cell/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/cell/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/cell/index.wxml b/dist/cell/index.wxml new file mode 100644 index 0000000..c3683e3 --- /dev/null +++ b/dist/cell/index.wxml @@ -0,0 +1,16 @@ + + + + + + {{ title }} + {{ label }} + + + + {{ value }} + + + + + \ No newline at end of file diff --git a/dist/cell/index.wxss b/dist/cell/index.wxss new file mode 100644 index 0000000..e45ad75 --- /dev/null +++ b/dist/cell/index.wxss @@ -0,0 +1 @@ +.i-cell{position:relative;padding:12px 15px;display:flex;background:#fff;align-items:center;line-height:1.4;font-size:14px;overflow:hidden}.i-cell::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-bottom-width:1px;left:15px;right:0}.i-cell-last::after{display:none}.i-cell-icon{margin-right:5px}.i-cell-icon:empty{display:none}.i-cell-bd{flex:1}.i-cell-text{line-height:24px;font-size:14px}.i-cell-desc{line-height:1.2;font-size:12px;color:#80848f}.i-cell-ft{position:relative;text-align:right;color:#495060}.i-cell-access .i-cell-ft{padding-right:13px}.i-cell-access .i-cell-ft::after{content:" ";display:inline-block;width:6px;height:6px;position:absolute;top:50%;right:2px;border-width:2px 2px 0 0;border-color:#dddee1;border-style:solid;transform:translateY(-50%) matrix(.71,.71,-.71,.71,0,0)} \ No newline at end of file diff --git a/dist/checkbox-group/index.js b/dist/checkbox-group/index.js new file mode 100644 index 0000000..6465450 --- /dev/null +++ b/dist/checkbox-group/index.js @@ -0,0 +1,38 @@ +Component({ + externalClasses: ['i-class'], + relations: { + '../checkbox/index': { + type: 'child', + linked() { + this.changeCurrent(); + }, + linkChanged() { + this.changeCurrent(); + }, + unlinked() { + this.changeCurrent(); + } + } + }, + properties: { + current: { + type: Array, + value: [], + observer: 'changeCurrent' + }, + }, + methods: { + changeCurrent(val = this.data.current) { + let items = this.getRelationNodes('../checkbox/index'); + const len = items.length; + if (len > 0) { + items.forEach(item => { + item.changeCurrent(val.indexOf(item.data.value) !== -1); + }); + } + }, + emitEvent(current) { + this.triggerEvent('change', current); + } + } +}); diff --git a/dist/checkbox-group/index.json b/dist/checkbox-group/index.json new file mode 100644 index 0000000..edf138d --- /dev/null +++ b/dist/checkbox-group/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell-group": "../cell-group/index" + } +} diff --git a/dist/checkbox-group/index.wxml b/dist/checkbox-group/index.wxml new file mode 100644 index 0000000..6940180 --- /dev/null +++ b/dist/checkbox-group/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/dist/checkbox-group/index.wxss b/dist/checkbox-group/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/dist/checkbox/index.js b/dist/checkbox/index.js new file mode 100644 index 0000000..b383952 --- /dev/null +++ b/dist/checkbox/index.js @@ -0,0 +1,56 @@ +const prefixCls = 'i-checkbox'; + +Component({ + externalClasses: ['i-class'], + relations: { + '../checkbox-group/index': { + type: 'parent' + } + }, + properties: { + value: { + type: String, + value: '' + }, + checked: { + type: Boolean, + value: false + }, + disabled: { + type: Boolean, + value: false + }, + color: { + type: String, + value: '#2d8cf0' + }, + position: { + type: String, + value: 'left', //left right + observer: 'setPosition' + } + }, + data: { + checked: true, + positionCls: `${prefixCls}-checkbox-left`, + }, + attached() { + this.setPosition(); + }, + methods: { + changeCurrent(current) { + this.setData({ checked: current }); + }, + checkboxChange() { + if (this.data.disabled) return; + const item = { current: !this.data.checked, value: this.data.value }; + const parent = this.getRelationNodes('../checkbox-group/index')[0]; + parent ? parent.emitEvent(item) : this.triggerEvent('change', item); + }, + setPosition() { + this.setData({ + positionCls: this.data.position.indexOf('left') !== -1 ? `${prefixCls}-checkbox-left` : `${prefixCls}-checkbox-right`, + }); + } + } +}); diff --git a/dist/checkbox/index.json b/dist/checkbox/index.json new file mode 100644 index 0000000..e2ab49a --- /dev/null +++ b/dist/checkbox/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell": "../cell/index" + } +} diff --git a/dist/checkbox/index.wxml b/dist/checkbox/index.wxml new file mode 100644 index 0000000..214493f --- /dev/null +++ b/dist/checkbox/index.wxml @@ -0,0 +1,8 @@ + + + + + diff --git a/dist/checkbox/index.wxss b/dist/checkbox/index.wxss new file mode 100644 index 0000000..a07699f --- /dev/null +++ b/dist/checkbox/index.wxss @@ -0,0 +1 @@ +.i-checkbox-cell::after{display:block}.i-checkbox-checkbox-left{float:left}.i-checkbox-checkbox-right{float:right}.i-checkbox-radio{vertical-align:middle}.i-checkbox-title{display:inline-block;vertical-align:middle} \ No newline at end of file diff --git a/dist/col/index.js b/dist/col/index.js new file mode 100644 index 0000000..9b2d65d --- /dev/null +++ b/dist/col/index.js @@ -0,0 +1,20 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../row/index': { + type: 'parent' + } + }, + + properties: { + span: { + value: 0, + type: Number + }, + offset: { + value: 0, + type: Number + } + } +}); diff --git a/dist/col/index.json b/dist/col/index.json new file mode 100644 index 0000000..32640e0 --- /dev/null +++ b/dist/col/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/dist/col/index.wxml b/dist/col/index.wxml new file mode 100644 index 0000000..838a22b --- /dev/null +++ b/dist/col/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/col/index.wxss b/dist/col/index.wxss new file mode 100644 index 0000000..bdce125 --- /dev/null +++ b/dist/col/index.wxss @@ -0,0 +1 @@ +.i-col{float:left;box-sizing:border-box;width:0}.i-col-span-1{display:block;width:4.16666667%}.i-col-offset-1{margin-left:4.16666667%}.i-col-span-2{display:block;width:8.33333333%}.i-col-offset-2{margin-left:8.33333333%}.i-col-span-3{display:block;width:12.5%}.i-col-offset-3{margin-left:12.5%}.i-col-span-4{display:block;width:16.66666667%}.i-col-offset-4{margin-left:16.66666667%}.i-col-span-5{display:block;width:20.83333333%}.i-col-offset-5{margin-left:20.83333333%}.i-col-span-6{display:block;width:25%}.i-col-offset-6{margin-left:25%}.i-col-span-7{display:block;width:29.16666667%}.i-col-offset-7{margin-left:29.16666667%}.i-col-span-8{display:block;width:33.33333333%}.i-col-offset-8{margin-left:33.33333333%}.i-col-span-9{display:block;width:37.5%}.i-col-offset-9{margin-left:37.5%}.i-col-span-10{display:block;width:41.66666667%}.i-col-offset-10{margin-left:41.66666667%}.i-col-span-11{display:block;width:45.83333333%}.i-col-offset-11{margin-left:45.83333333%}.i-col-span-12{display:block;width:50%}.i-col-offset-12{margin-left:50%}.i-col-span-13{display:block;width:54.16666667%}.i-col-offset-13{margin-left:54.16666667%}.i-col-span-14{display:block;width:58.33333333%}.i-col-offset-14{margin-left:58.33333333%}.i-col-span-15{display:block;width:62.5%}.i-col-offset-15{margin-left:62.5%}.i-col-span-16{display:block;width:66.66666667%}.i-col-offset-16{margin-left:66.66666667%}.i-col-span-17{display:block;width:70.83333333%}.i-col-offset-17{margin-left:70.83333333%}.i-col-span-18{display:block;width:75%}.i-col-offset-18{margin-left:75%}.i-col-span-19{display:block;width:79.16666667%}.i-col-offset-19{margin-left:79.16666667%}.i-col-span-20{display:block;width:83.33333333%}.i-col-offset-20{margin-left:83.33333333%}.i-col-span-21{display:block;width:87.5%}.i-col-offset-21{margin-left:87.5%}.i-col-span-22{display:block;width:91.66666667%}.i-col-offset-22{margin-left:91.66666667%}.i-col-span-23{display:block;width:95.83333333%}.i-col-offset-23{margin-left:95.83333333%}.i-col-span-24{display:block;width:100%}.i-col-offset-24{margin-left:100%} \ No newline at end of file diff --git a/dist/collapse-item/index.js b/dist/collapse-item/index.js new file mode 100644 index 0000000..bc415c1 --- /dev/null +++ b/dist/collapse-item/index.js @@ -0,0 +1,46 @@ +Component({ + externalClasses: ['i-class-content', 'i-class-title', 'i-class'], + + relations: { + '../collapse/index': { + type: 'parent', + linked: function (target) { + const options = { + accordion: target.data.accordion + } + if (target.data.name === this.data.name) { + options.showContent = 'i-collapse-item-show-content'; + } + this.setData(options); + } + } + }, + + properties: { + title: String, + name: String + }, + + data: { + showContent: '', + accordion: false + }, + + options: { + multipleSlots: true + }, + + methods: { + trigger(e) { + const data = this.data; + if (data.accordion) { + this.triggerEvent('collapse', {name: data.name}, {composed: true, bubbles: true}); + } else { + this.setData({ + showContent: data.showContent ? '' : 'i-collapse-item-show-content' + }); + } + }, + } +}); + diff --git a/dist/collapse-item/index.json b/dist/collapse-item/index.json new file mode 100644 index 0000000..54575da --- /dev/null +++ b/dist/collapse-item/index.json @@ -0,0 +1,7 @@ + +{ + "component": true, + "usingComponents": { + "i-icon": "../icon/index" + } +} diff --git a/dist/collapse-item/index.wxml b/dist/collapse-item/index.wxml new file mode 100644 index 0000000..ba22b0a --- /dev/null +++ b/dist/collapse-item/index.wxml @@ -0,0 +1,9 @@ + + + + {{title}} + + + + + \ No newline at end of file diff --git a/dist/collapse-item/index.wxss b/dist/collapse-item/index.wxss new file mode 100644 index 0000000..d44c032 --- /dev/null +++ b/dist/collapse-item/index.wxss @@ -0,0 +1 @@ +.i-collapse-item{padding:2px 8px;border-top:1px solid #dddee1}.i-collapse-item-title{vertical-align:middle}.i-collapse-item-title-wrap{padding:2px 0 0}.i-collapse-item-content{padding:6px;display:none}.i-collapse-item-show-content{display:block}.i-collapse-item-arrow{transition:transform .2s ease-in-out}.i-collapse-item-arrow-show{transition:transform .2s ease-in-out;transform:rotate(90deg)} \ No newline at end of file diff --git a/dist/collapse/index.js b/dist/collapse/index.js new file mode 100644 index 0000000..acc1455 --- /dev/null +++ b/dist/collapse/index.js @@ -0,0 +1,31 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../collapse-item/index': { + type: 'child' + } + }, + properties: { + name: String, + accordion: Boolean + }, + methods: { + clickfn(e) { + const params = e.detail; + const allList = this.getRelationNodes('../collapse-item/index'); + allList.forEach((item) => { + if (params.name === item.data.name) { + item.setData({ + showContent: 'i-collapse-item-show-content' + }); + } else { + item.setData({ + showContent: '' + }); + } + }); + }, + } +}); + diff --git a/dist/collapse/index.json b/dist/collapse/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/collapse/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/collapse/index.wxml b/dist/collapse/index.wxml new file mode 100644 index 0000000..0f379f7 --- /dev/null +++ b/dist/collapse/index.wxml @@ -0,0 +1,4 @@ + + + + diff --git a/dist/collapse/index.wxss b/dist/collapse/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/dist/count-down/index.js b/dist/count-down/index.js new file mode 100644 index 0000000..f1da533 --- /dev/null +++ b/dist/count-down/index.js @@ -0,0 +1,90 @@ +Component({ + properties: { + target: Number, + showDay: Boolean, + callback: String, + format: Array, + clearTimer: Boolean + }, + externalClasses: ['countdown-class'], + data: { + time: '', + resultFormat: [], + changeFormat: false + }, + ready() { + this.getFormat(); + + }, + methods: { + getFormat() { + const data = this.data; + const len = data.format.length; + + if (!data.showDay) data.resultFormat.push(''); + + if (len >= 3) { + for (let i = 0; i < len; i++) { + if (data.resultFormat.length >= 4) break; + if (data.format[i]) { + data.resultFormat.push(data.format[i].toString()); + } + } + + if (data.resultFormat.length >= 4) data.changeFormat = true; + } + + this.getLastTime(); + }, + init() { + const self = this; + setTimeout(function () { + self.getLastTime.call(self); + }, 1000); + }, + getLastTime() { + const data = this.data; + const gapTime = Math.ceil((data.target - new Date().getTime()) / 1000); + let result = ''; + let time = '00:00:00'; + let day = '00'; + const format = data.resultFormat; + + if (gapTime > 0) { + day = this.formatNum(parseInt(gapTime / 86400)); + let lastTime = gapTime % 86400; + const hour = this.formatNum(parseInt(lastTime / 3600)); + lastTime = lastTime % 3600; + const minute = this.formatNum(parseInt(lastTime / 60)); + const second = this.formatNum(lastTime % 60); + + if (data.changeFormat) time = `${hour}${format[1]}${minute}${format[2]}${second}${format[3]}`; + else time = `${hour}:${minute}:${second}`; + + if (!data.clearTimer) this.init.call(this); + } else { + this.endfn(); + } + + if (data.showDay) { + if (data.changeFormat) { + result = `${day}${format[0]} ${time}`; + } else { + result = `${day}d ${time}`; + } + } else { + result = time; + } + this.setData({ + time: result + }); + + }, + formatNum(num) { + return num > 9 ? num : `0${num}`; + }, + endfn() { + this.triggerEvent('callback', {}); + } + } +}); diff --git a/dist/count-down/index.json b/dist/count-down/index.json new file mode 100644 index 0000000..74f1315 --- /dev/null +++ b/dist/count-down/index.json @@ -0,0 +1,4 @@ + +{ + "component": true +} diff --git a/dist/count-down/index.wxml b/dist/count-down/index.wxml new file mode 100644 index 0000000..e4bec57 --- /dev/null +++ b/dist/count-down/index.wxml @@ -0,0 +1,4 @@ + + {{time}} + + diff --git a/dist/count-down/index.wxss b/dist/count-down/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/dist/divider/index.js b/dist/divider/index.js new file mode 100644 index 0000000..6b0e448 --- /dev/null +++ b/dist/divider/index.js @@ -0,0 +1,25 @@ +Component({ + externalClasses: ['i-class'], + properties: { + content: { + type: String, + value: '' + }, + height : { + type: Number, + value: 48 + }, + color : { + type : String, + value : '#80848f' + }, + lineColor : { + type : String, + value : '#e9eaec' + }, + size : { + type: String, + value: 12 + } + } +}); diff --git a/dist/divider/index.json b/dist/divider/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/divider/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/divider/index.wxml b/dist/divider/index.wxml new file mode 100644 index 0000000..b7111d3 --- /dev/null +++ b/dist/divider/index.wxml @@ -0,0 +1,19 @@ + + + {{content}} + + + + + + + + module.exports = { + getStyle : function(color,size,height){ + var color = 'color:' + color +';'; + var size = 'font-size:' + size + 'px;'; + var height = 'height:' + height+'px;' + return color + size + height; + } + } + diff --git a/dist/divider/index.wxss b/dist/divider/index.wxss new file mode 100644 index 0000000..98827ab --- /dev/null +++ b/dist/divider/index.wxss @@ -0,0 +1 @@ +.i-divider{width:100%;text-align:center;font-size:12px;position:relative;display:flex;align-items:center;justify-content:center}.i-divider-line{position:absolute;left:0;width:100%;height:1rpx;background-color:#f7f7f7;top:50%}.i-divider-content{background:#fff;position:relative;z-index:1;display:inline-block;padding:0 10px} \ No newline at end of file diff --git a/dist/drawer/index.js b/dist/drawer/index.js new file mode 100644 index 0000000..adb248a --- /dev/null +++ b/dist/drawer/index.js @@ -0,0 +1,33 @@ +Component({ + externalClasses: ['i-class'], + properties: { + visible: { + type: Boolean, + value: false + }, + + mask: { + type: Boolean, + value: true + }, + + maskClosable: { + type: Boolean, + value: true + }, + + mode: { + type: String, + value: 'left' // left right + } + }, + data: {}, + methods: { + handleMaskClick() { + if (!this.data.maskClosable) { + return; + } + this.triggerEvent('close', {}); + } + } +}); diff --git a/dist/drawer/index.json b/dist/drawer/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/drawer/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/drawer/index.wxml b/dist/drawer/index.wxml new file mode 100644 index 0000000..67380d9 --- /dev/null +++ b/dist/drawer/index.wxml @@ -0,0 +1,6 @@ + + + + + + diff --git a/dist/drawer/index.wxss b/dist/drawer/index.wxss new file mode 100644 index 0000000..2824713 --- /dev/null +++ b/dist/drawer/index.wxss @@ -0,0 +1 @@ +.i-drawer{visibility:hidden}.i-drawer-show{visibility:visible}.i-drawer-show .i-drawer-mask{display:block;opacity:1}.i-drawer-show .i-drawer-container{opacity:1}.i-drawer-show.i-drawer-left .i-drawer-container,.i-drawer-show.i-drawer-right .i-drawer-container{transform:translate3d(0,-50%,0)}.i-drawer-mask{opacity:0;position:fixed;top:0;left:0;right:0;bottom:0;z-index:6;background:rgba(0,0,0,.6);transition:all .3s ease-in-out}.i-drawer-container{position:fixed;left:50%;top:50%;transform:translate3d(-50%,-50%,0);transform-origin:center;transition:all .3s ease-in-out;z-index:7;opacity:0}.i-drawer-left .i-drawer-container{left:0;top:50%;transform:translate3d(-100%,-50%,0)}.i-drawer-right .i-drawer-container{right:0;top:50%;left:auto;transform:translate3d(100%,-50%,0)} \ No newline at end of file diff --git a/dist/grid-icon/index.js b/dist/grid-icon/index.js new file mode 100644 index 0000000..5315185 --- /dev/null +++ b/dist/grid-icon/index.js @@ -0,0 +1,10 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid-item/index': { + type: 'parent' + } + }, + +}); diff --git a/dist/grid-icon/index.json b/dist/grid-icon/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/grid-icon/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/grid-icon/index.wxml b/dist/grid-icon/index.wxml new file mode 100644 index 0000000..b9f9025 --- /dev/null +++ b/dist/grid-icon/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/grid-icon/index.wxss b/dist/grid-icon/index.wxss new file mode 100644 index 0000000..88c58a7 --- /dev/null +++ b/dist/grid-icon/index.wxss @@ -0,0 +1 @@ +.i-grid-icon{display:block;width:28px;height:28px;margin:0 auto}.i-grid-icon image{width:100%;height:100%} \ No newline at end of file diff --git a/dist/grid-item/index.js b/dist/grid-item/index.js new file mode 100644 index 0000000..e492542 --- /dev/null +++ b/dist/grid-item/index.js @@ -0,0 +1,16 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid/index': { + type: 'parent' + }, + '../grid-icon/index': { + type: 'child' + } + }, + + data: { + width: '33.33%' + } +}); diff --git a/dist/grid-item/index.json b/dist/grid-item/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/grid-item/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/grid-item/index.wxml b/dist/grid-item/index.wxml new file mode 100644 index 0000000..8e133cd --- /dev/null +++ b/dist/grid-item/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/grid-item/index.wxss b/dist/grid-item/index.wxss new file mode 100644 index 0000000..ed0f395 --- /dev/null +++ b/dist/grid-item/index.wxss @@ -0,0 +1 @@ +.i-grid-item{position:relative;float:left;padding:20px 10px;width:33.33333333%;box-sizing:border-box;border-right:1rpx solid #e9eaec;border-bottom:1rpx solid #e9eaec} \ No newline at end of file diff --git a/dist/grid-label/index.js b/dist/grid-label/index.js new file mode 100644 index 0000000..5315185 --- /dev/null +++ b/dist/grid-label/index.js @@ -0,0 +1,10 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid-item/index': { + type: 'parent' + } + }, + +}); diff --git a/dist/grid-label/index.json b/dist/grid-label/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/grid-label/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/grid-label/index.wxml b/dist/grid-label/index.wxml new file mode 100644 index 0000000..7ab5a8a --- /dev/null +++ b/dist/grid-label/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/grid-label/index.wxss b/dist/grid-label/index.wxss new file mode 100644 index 0000000..d45a990 --- /dev/null +++ b/dist/grid-label/index.wxss @@ -0,0 +1 @@ +.i-grid-label{margin-top:5px;display:block;text-align:center;color:#1c2438;font-size:14px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden} \ No newline at end of file diff --git a/dist/grid/index.js b/dist/grid/index.js new file mode 100644 index 0000000..f9c9c40 --- /dev/null +++ b/dist/grid/index.js @@ -0,0 +1,50 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../grid-item/index': { + type: 'child', + linked () { + this.setGridItemWidth(); + }, + linkChanged () { + this.setGridItemWidth(); + }, + unlinked () { + this.setGridItemWidth(); + } + } + }, + + methods: { + setGridItemWidth () { + const nodes = this.getRelationNodes('../grid-item/index'); + + // const len = nodes.length; + // if (len < 3) { + // nodes.forEach(item => { + // item.setData({ + // 'width': '33.33%' + // }); + // }); + // } else { + // const width = 100 / nodes.length; + // nodes.forEach(item => { + // item.setData({ + // 'width': width + '%' + // }); + // }); + // } + const width = 100 / nodes.length; + nodes.forEach(item => { + item.setData({ + 'width': width + '%' + }); + }); + } + }, + + ready () { + this.setGridItemWidth(); + } +}); diff --git a/dist/grid/index.json b/dist/grid/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/grid/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/grid/index.wxml b/dist/grid/index.wxml new file mode 100644 index 0000000..4c9143c --- /dev/null +++ b/dist/grid/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/grid/index.wxss b/dist/grid/index.wxss new file mode 100644 index 0000000..842fc98 --- /dev/null +++ b/dist/grid/index.wxss @@ -0,0 +1 @@ +.i-grid{border-top:1rpx solid #e9eaec;border-left:1rpx solid #e9eaec;overflow:hidden} \ No newline at end of file diff --git a/dist/icon/index.js b/dist/icon/index.js new file mode 100644 index 0000000..eb43ab9 --- /dev/null +++ b/dist/icon/index.js @@ -0,0 +1,22 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + type: { + type: String, + value: '' + }, + custom: { + type: String, + value: '' + }, + size: { + type: Number, + value: 14 + }, + color: { + type: String, + value: '' + } + } +}); diff --git a/dist/icon/index.json b/dist/icon/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/icon/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/icon/index.wxml b/dist/icon/index.wxml new file mode 100644 index 0000000..d689bc5 --- /dev/null +++ b/dist/icon/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/icon/index.wxss b/dist/icon/index.wxss new file mode 100644 index 0000000..b18dcbb --- /dev/null +++ b/dist/icon/index.wxss @@ -0,0 +1 @@ +@font-face{font-family:iconfont;src:url('data:application/x-font-woff;charset=utf-8;base64,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') format('woff')}.i-icon{display:inline-block;font-family:iconfont;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;vertical-align:middle}.i-icon-accessory:before{content:"\e6dd"}.i-icon-activity:before{content:"\e6de"}.i-icon-activity_fill:before{content:"\e6df"}.i-icon-add:before{content:"\e6e0"}.i-icon-addressbook_fill:before{content:"\e6e2"}.i-icon-addressbook:before{content:"\e6e3"}.i-icon-barrage_fill:before{content:"\e6e4"}.i-icon-barrage:before{content:"\e6e5"}.i-icon-browse_fill:before{content:"\e6e6"}.i-icon-browse:before{content:"\e6e7"}.i-icon-brush:before{content:"\e6e8"}.i-icon-brush_fill:before{content:"\e6e9"}.i-icon-businesscard_fill:before{content:"\e6ea"}.i-icon-businesscard:before{content:"\e6eb"}.i-icon-camera_fill:before{content:"\e6ec"}.i-icon-camera:before{content:"\e6ed"}.i-icon-clock_fill:before{content:"\e6ee"}.i-icon-clock:before{content:"\e6ef"}.i-icon-close:before{content:"\e6f0"}.i-icon-collection_fill:before{content:"\e6f1"}.i-icon-collection:before{content:"\e6f2"}.i-icon-computer_fill:before{content:"\e6f3"}.i-icon-computer:before{content:"\e6f4"}.i-icon-coordinates_fill:before{content:"\e6f5"}.i-icon-coordinates:before{content:"\e6f6"}.i-icon-coupons_fill:before{content:"\e6f7"}.i-icon-coupons:before{content:"\e6f8"}.i-icon-createtask_fill:before{content:"\e6f9"}.i-icon-createtask:before{content:"\e6fa"}.i-icon-customerservice_fill:before{content:"\e6fb"}.i-icon-customerservice:before{content:"\e6fc"}.i-icon-delete_fill:before{content:"\e6fd"}.i-icon-delete:before{content:"\e6fe"}.i-icon-document:before{content:"\e6ff"}.i-icon-document_fill:before{content:"\e700"}.i-icon-dynamic_fill:before{content:"\e701"}.i-icon-dynamic:before{content:"\e702"}.i-icon-editor:before{content:"\e703"}.i-icon-eit:before{content:"\e704"}.i-icon-emoji_fill:before{content:"\e705"}.i-icon-emoji:before{content:"\e706"}.i-icon-enter:before{content:"\e707"}.i-icon-enterinto:before{content:"\e708"}.i-icon-enterinto_fill:before{content:"\e709"}.i-icon-feedback_fill:before{content:"\e70a"}.i-icon-feedback:before{content:"\e70b"}.i-icon-flag_fill:before{content:"\e70c"}.i-icon-flag:before{content:"\e70d"}.i-icon-flashlight:before{content:"\e70e"}.i-icon-flashlight_fill:before{content:"\e70f"}.i-icon-fullscreen:before{content:"\e710"}.i-icon-group:before{content:"\e711"}.i-icon-group_fill:before{content:"\e712"}.i-icon-homepage_fill:before{content:"\e713"}.i-icon-homepage:before{content:"\e714"}.i-icon-integral_fill:before{content:"\e715"}.i-icon-integral:before{content:"\e716"}.i-icon-interactive_fill:before{content:"\e717"}.i-icon-interactive:before{content:"\e718"}.i-icon-keyboard:before{content:"\e719"}.i-icon-label:before{content:"\e71a"}.i-icon-label_fill:before{content:"\e71b"}.i-icon-like_fill:before{content:"\e71c"}.i-icon-like:before{content:"\e71d"}.i-icon-live_fill:before{content:"\e71e"}.i-icon-live:before{content:"\e71f"}.i-icon-lock_fill:before{content:"\e720"}.i-icon-lock:before{content:"\e721"}.i-icon-mail:before{content:"\e722"}.i-icon-mail_fill:before{content:"\e723"}.i-icon-message:before{content:"\e724"}.i-icon-message_fill:before{content:"\e725"}.i-icon-mine:before{content:"\e726"}.i-icon-mine_fill:before{content:"\e727"}.i-icon-mobilephone_fill:before{content:"\e728"}.i-icon-mobilephone:before{content:"\e729"}.i-icon-more:before{content:"\e72a"}.i-icon-narrow:before{content:"\e72b"}.i-icon-offline_fill:before{content:"\e72c"}.i-icon-offline:before{content:"\e72d"}.i-icon-other:before{content:"\e72e"}.i-icon-picture_fill:before{content:"\e72f"}.i-icon-picture:before{content:"\e730"}.i-icon-play:before{content:"\e731"}.i-icon-play_fill:before{content:"\e732"}.i-icon-playon_fill:before{content:"\e733"}.i-icon-playon:before{content:"\e734"}.i-icon-praise_fill:before{content:"\e735"}.i-icon-praise:before{content:"\e736"}.i-icon-prompt_fill:before{content:"\e737"}.i-icon-prompt:before{content:"\e738"}.i-icon-redpacket_fill:before{content:"\e739"}.i-icon-redpacket:before{content:"\e73a"}.i-icon-refresh:before{content:"\e73b"}.i-icon-remind_fill:before{content:"\e73c"}.i-icon-remind:before{content:"\e73d"}.i-icon-return:before{content:"\e73e"}.i-icon-right:before{content:"\e73f"}.i-icon-scan:before{content:"\e740"}.i-icon-send:before{content:"\e741"}.i-icon-service_fill:before{content:"\e742"}.i-icon-service:before{content:"\e743"}.i-icon-setup_fill:before{content:"\e744"}.i-icon-setup:before{content:"\e745"}.i-icon-share_fill:before{content:"\e746"}.i-icon-share:before{content:"\e747"}.i-icon-success_fill:before{content:"\e748"}.i-icon-success:before{content:"\e749"}.i-icon-suspend:before{content:"\e74a"}.i-icon-switch:before{content:"\e74b"}.i-icon-systemprompt_fill:before{content:"\e74c"}.i-icon-systemprompt:before{content:"\e74d"}.i-icon-tailor:before{content:"\e74e"}.i-icon-task:before{content:"\e74f"}.i-icon-task_fill:before{content:"\e750"}.i-icon-tasklist_fill:before{content:"\e751"}.i-icon-tasklist:before{content:"\e752"}.i-icon-time_fill:before{content:"\e753"}.i-icon-time:before{content:"\e754"}.i-icon-translation_fill:before{content:"\e755"}.i-icon-translation:before{content:"\e756"}.i-icon-trash:before{content:"\e757"}.i-icon-trash_fill:before{content:"\e758"}.i-icon-undo:before{content:"\e759"}.i-icon-video:before{content:"\e75a"}.i-icon-video_fill:before{content:"\e75b"}.i-icon-warning_fill:before{content:"\e75c"}.i-icon-warning:before{content:"\e75d"}.i-icon-search:before{content:"\e75e"}.i-icon-searchfill:before{content:"\e75f"}.i-icon-publishgoods_fill:before{content:"\e760"}.i-icon-shop_fill:before{content:"\e761"}.i-icon-transaction_fill:before{content:"\e762"}.i-icon-packup:before{content:"\e763"}.i-icon-unfold:before{content:"\e764"}.i-icon-financial_fill:before{content:"\e765"}.i-icon-commodity:before{content:"\e766"} \ No newline at end of file diff --git a/dist/index-item/index.js b/dist/index-item/index.js new file mode 100644 index 0000000..ed818df --- /dev/null +++ b/dist/index-item/index.js @@ -0,0 +1,32 @@ +Component({ + externalClasses: ['i-class'], + properties : { + name : { + type : String, + value : '' + } + }, + relations : { + '../index/index' : { + type : 'parent' + } + }, + data : { + top : 0, + height : 0, + currentName : '' + }, + methods: { + updateDataChange() { + const className = '.i-index-item'; + const query = wx.createSelectorQuery().in(this); + query.select( className ).boundingClientRect((res)=>{ + this.setData({ + top : res.top, + height : res.height, + currentName : this.data.name + }) + }).exec() + } + } +}) \ No newline at end of file diff --git a/dist/index-item/index.json b/dist/index-item/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/index-item/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/index-item/index.wxml b/dist/index-item/index.wxml new file mode 100644 index 0000000..8986c8d --- /dev/null +++ b/dist/index-item/index.wxml @@ -0,0 +1,11 @@ + + {{name}} + + + + + + module.exports = { + + } + diff --git a/dist/index-item/index.wxss b/dist/index-item/index.wxss new file mode 100644 index 0000000..aeecf8d --- /dev/null +++ b/dist/index-item/index.wxss @@ -0,0 +1 @@ +.i-index-item-header{height:30px;line-height:30px;background:#eee;font-size:14px;padding-left:10px;width:100%;box-sizing:border-box}.i-index-item-content{font-size:14px} \ No newline at end of file diff --git a/dist/index/index.js b/dist/index/index.js new file mode 100644 index 0000000..c556f19 --- /dev/null +++ b/dist/index/index.js @@ -0,0 +1,158 @@ +Component({ + externalClasses: ['i-class'], + properties : { + height : { + type : String, + value : '300' + }, + itemHeight : { + type : Number, + value : 18 + } + }, + relations : { + '../index-item/index' : { + type : 'child', + linked(){ + this._updateDataChange(); + }, + linkChanged () { + this._updateDataChange(); + }, + unlinked () { + this._updateDataChange(); + } + } + }, + data : { + scrollTop : 0, + fixedData : [], + current : 0, + timer : null, + startTop : 0, + itemLength : 0, + currentName : '', + isTouches : false + }, + methods : { + loop(){}, + _updateDataChange( ){ + const indexItems = this.getRelationNodes('../index-item/index'); + const len = indexItems.length; + const fixedData = this.data.fixedData; + /* + * 使用函数节流限制重复去设置数组内容进而限制多次重复渲染 + * 暂时没有研究微信在渲染的时候是否会进行函数节流 + */ + if (len > 0) { + + if( this.data.timer ){ + clearTimeout( this.data.timer ) + this.setData({ + timer : null + }) + } + + this.data.timer = setTimeout(()=>{ + const data = []; + indexItems.forEach((item) => { + if( item.data.name && fixedData.indexOf( item.data.name ) === -1 ){ + data.push(item.data.name); + item.updateDataChange(); + } + }) + this.setData({ + fixedData : data, + itemLength : indexItems.length + }) + //组件加载完成之后重新设置顶部高度 + this.setTouchStartVal(); + },0); + this.setData({ + timer : this.data.timer + }) + + } + }, + handlerScroll(event){ + const detail = event.detail; + const scrollTop = detail.scrollTop; + const indexItems = this.getRelationNodes('../index-item/index'); + indexItems.forEach((item,index)=>{ + let data = item.data; + let offset = data.top + data.height; + if( scrollTop < offset && scrollTop >= data.top ){ + this.setData({ + current : index, + currentName : data.currentName + }) + } + }) + }, + getCurrentItem(index){ + const indexItems = this.getRelationNodes('../index-item/index'); + let result = {}; + result = indexItems[index].data; + result.total = indexItems.length; + return result; + }, + triggerCallback(options){ + this.triggerEvent('change',options) + }, + handlerFixedTap(event){ + const eindex = event.currentTarget.dataset.index; + const item = this.getCurrentItem(eindex); + this.setData({ + scrollTop : item.top, + currentName : item.currentName, + isTouches : true + }) + this.triggerCallback({ + index : eindex, + current : item.currentName + }) + }, + handlerTouchMove(event){ + const data = this.data; + const touches = event.touches[0] || {}; + const pageY = touches.pageY; + const rest = pageY - data.startTop; + let index = Math.ceil( rest/data.itemHeight ); + index = index >= data.itemLength ? data.itemLength -1 : index; + const movePosition = this.getCurrentItem(index); + + /* + * 当touch选中的元素和当前currentName不相等的时候才震动一下 + * 微信震动事件 + */ + if( movePosition.name !== this.data.currentName ){ + wx.vibrateShort(); + } + + this.setData({ + scrollTop : movePosition.top, + currentName : movePosition.name, + isTouches : true + }) + + this.triggerCallback({ + index : index, + current : movePosition.name + }) + }, + handlerTouchEnd(){ + this.setData({ + isTouches : false + }) + }, + setTouchStartVal(){ + const className = '.i-index-fixed'; + const query = wx.createSelectorQuery().in(this); + query.select( className ).boundingClientRect((res)=>{ + this.setData({ + startTop : res.top + }) + }).exec() + } + } +}) \ No newline at end of file diff --git a/dist/index/index.json b/dist/index/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/index/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/index/index.wxml b/dist/index/index.wxml new file mode 100644 index 0000000..f83d847 --- /dev/null +++ b/dist/index/index.wxml @@ -0,0 +1,38 @@ + + + + + + {{item}} + + + {{currentName}} + + + + module.exports = { + setScrollStyle : function(height){ + var units = ['%','px','rem','rpx','em','rem']; + var hasUnits = false; + for( var i = 0; i < units.length;i++ ){ + var u = units[i]; + if( height.indexOf( u ) > -1 ){ + hasUnits = true; + break; + } + } + return 'height:'+ ( hasUnits ? height : height+'px' ); + } + } + diff --git a/dist/index/index.wxss b/dist/index/index.wxss new file mode 100644 index 0000000..c0887c1 --- /dev/null +++ b/dist/index/index.wxss @@ -0,0 +1 @@ +.i-index{width:100%;height:100%}.i-index-line{position:absolute;left:0;width:100%;height:1rpx;background-color:#f7f7f7;top:50%}.i-index-content{background:#fff;position:relative;z-index:1;display:inline-block;padding:0 10px}.i-index-fixed{position:fixed;right:0;top:50%;z-index:10;padding-left:10px;transform:translateY(-50%)}.i-index-fixed-item{display:block;height:18px;line-height:18px;padding:0 5px;text-align:center;color:#2d8cf0;font-size:12px;border-radius:50%}.i-index-fixed-item-current{background:#2d8cf0;color:#fff}.i-index-tooltip{position:fixed;left:50%;top:50%;transform:translate3d(-50%,-50%,0);background:rgba(0,0,0,.7);color:#fff;font-size:24px;border-radius:50%;width:80px;height:80px;line-height:80px;text-align:center} \ No newline at end of file diff --git a/dist/input-number/index.js b/dist/input-number/index.js new file mode 100644 index 0000000..7a7d3f5 --- /dev/null +++ b/dist/input-number/index.js @@ -0,0 +1,101 @@ +function addNum (num1, num2) { + let sq1, sq2, m; + try { + sq1 = num1.toString().split('.')[1].length; + } + catch (e) { + sq1 = 0; + } + try { + sq2 = num2.toString().split('.')[1].length; + } + catch (e) { + sq2 = 0; + } + m = Math.pow(10, Math.max(sq1, sq2)); + return (Math.round(num1 * m) + Math.round(num2 * m)) / m; +} + +Component({ + externalClasses: ['i-class'], + + properties: { + // small || default || large + size: String, + value: { + type: Number, + value: 1 + }, + min: { + type: Number, + value: -Infinity + }, + max: { + type: Number, + value: Infinity + }, + step: { + type: Number, + value: 1 + } + }, + + + methods: { + handleChangeStep(e, type) { + const { dataset = {} } = e.currentTarget; + const { disabled } = dataset; + const { step } = this.data; + let { value } = this.data; + + if (disabled) return null; + + if (type === 'minus') { + value = addNum(value, -step); + } else if (type === 'plus') { + value = addNum(value, step); + } + + if (value < this.data.min || value > this.data.max) return null; + + this.handleEmit(value, type); + }, + + handleMinus(e) { + this.handleChangeStep(e, 'minus'); + }, + + handlePlus(e) { + this.handleChangeStep(e, 'plus'); + }, + + handleBlur(e) { + let { value } = e.detail; + const { min, max } = this.data; + + if (!value) { + setTimeout(() => { + this.handleEmit(value); + }, 16); + return; + } + + value = +value; + if (value > max) { + value = max; + } else if (value < min) { + value = min; + } + + this.handleEmit(value); + }, + handleEmit (value, type) { + const data = { + value: value + }; + if (type) data.type = type; + + this.triggerEvent('change', data); + } + } +}); diff --git a/dist/input-number/index.json b/dist/input-number/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/input-number/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/input-number/index.wxml b/dist/input-number/index.wxml new file mode 100644 index 0000000..b3503f4 --- /dev/null +++ b/dist/input-number/index.wxml @@ -0,0 +1,5 @@ + + - + + + + diff --git a/dist/input-number/index.wxss b/dist/input-number/index.wxss new file mode 100644 index 0000000..f696bb4 --- /dev/null +++ b/dist/input-number/index.wxss @@ -0,0 +1 @@ +.i-input-number{color:#495060}.i-input-number view{display:inline-block;line-height:20px;padding:5px 0;text-align:center;min-width:40px;box-sizing:border-box;vertical-align:middle;font-size:12px;border:1rpx solid #dddee1}.i-input-number-minus{border-right:none;border-radius:2px 0 0 2px}.i-input-number-plus{border-left:none;border-radius:0 2px 2px 0}.i-input-number-text{border:1rpx solid #dddee1;display:inline-block;text-align:center;vertical-align:middle;height:30px;width:40px;min-height:auto;font-size:12px;line-height:30px}.i-input-number-disabled{border-color:#dddee1;color:#bbbec4;background:#f7f7f7} \ No newline at end of file diff --git a/dist/input/index.js b/dist/input/index.js new file mode 100644 index 0000000..c9d4c41 --- /dev/null +++ b/dist/input/index.js @@ -0,0 +1,61 @@ +Component({ + behaviors: ['wx://form-field'], + + externalClasses: ['i-class'], + + properties: { + title: { + type: String + }, + // text || textarea || password || number + type: { + type: String, + value: 'text' + }, + disabled: { + type: Boolean, + value: false + }, + placeholder: { + type: String, + value: '' + }, + autofocus: { + type: Boolean, + value: false + }, + mode: { + type: String, + value: 'normal' + }, + right: { + type: Boolean, + value: false + }, + error: { + type: Boolean, + value: false + }, + maxlength: { + type: Number + } + }, + + methods: { + handleInputChange(event) { + const { detail = {} } = event; + const { value = '' } = detail; + this.setData({ value }); + + this.triggerEvent('change', event); + }, + + handleInputFocus(event) { + this.triggerEvent('focus', event); + }, + + handleInputBlur(event) { + this.triggerEvent('blur', event); + } + } +}); diff --git a/dist/input/index.json b/dist/input/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/input/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/input/index.wxml b/dist/input/index.wxml new file mode 100644 index 0000000..52b0ee3 --- /dev/null +++ b/dist/input/index.wxml @@ -0,0 +1,31 @@ + + {{ title }} + + + diff --git a/dist/input/index.wxss b/dist/input/index.wxss new file mode 100644 index 0000000..9e7e9c1 --- /dev/null +++ b/dist/input/index.wxss @@ -0,0 +1 @@ +.i-cell{position:relative;padding:12px 15px;display:flex;background:#fff;align-items:center;line-height:1.4;font-size:14px;overflow:hidden}.i-cell::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-bottom-width:1px;left:15px;right:0}.i-cell-last::after{display:none}.i-cell-icon{margin-right:5px}.i-cell-icon:empty{display:none}.i-cell-bd{flex:1}.i-cell-text{line-height:24px;font-size:14px}.i-cell-desc{line-height:1.2;font-size:12px;color:#80848f}.i-cell-ft{position:relative;text-align:right;color:#495060}.i-cell-access .i-cell-ft{padding-right:13px}.i-cell-access .i-cell-ft::after{content:" ";display:inline-block;width:6px;height:6px;position:absolute;top:50%;right:2px;border-width:2px 2px 0 0;border-color:#dddee1;border-style:solid;transform:translateY(-50%) matrix(.71,.71,-.71,.71,0,0)}.i-input{padding:7px 15px;color:#495060}.i-input-wrapped{margin:10px 15px;background-color:#fff}.i-input-wrapped::after{left:0;border-width:1px;border-radius:4px}.i-input-error{color:#ed3f14}.i-input-title{color:#495060;min-width:65px;padding-right:10px}.i-input-input{flex:1;line-height:1.6;padding:4px 0;min-height:22px;height:auto;font-size:14px}.i-input-placeholder{font-size:14px}.i-input-input-right{text-align:right}.i-input.i-input-wrapped::after{display:block}.i-input-wrapped.i-input-error::after{border-color:#ed3f14} \ No newline at end of file diff --git a/dist/load-more/index.js b/dist/load-more/index.js new file mode 100644 index 0000000..d0cd46c --- /dev/null +++ b/dist/load-more/index.js @@ -0,0 +1,14 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + loading: { + type: Boolean, + value: true + }, + tip: { + type: String, + value: '' + } + }, +}); diff --git a/dist/load-more/index.json b/dist/load-more/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/load-more/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/load-more/index.wxml b/dist/load-more/index.wxml new file mode 100644 index 0000000..66571af --- /dev/null +++ b/dist/load-more/index.wxml @@ -0,0 +1,8 @@ + + + + {{ tip }} + 正在加载 + + + \ No newline at end of file diff --git a/dist/load-more/index.wxss b/dist/load-more/index.wxss new file mode 100644 index 0000000..ffe4026 --- /dev/null +++ b/dist/load-more/index.wxss @@ -0,0 +1 @@ +.i-load-more{width:65%;margin:1.5em auto;line-height:1.6em;font-size:14px;text-align:center}.i-load-more-loading{display:inline-block;margin-right:12px;vertical-align:middle;width:14px;height:14px;background:0 0;border-radius:50%;border:2px solid #e9eaec;border-color:#e9eaec #e9eaec #e9eaec #2d8cf0;animation:btn-spin .6s linear;animation-iteration-count:infinite}.i-load-more-tip{display:inline-block;vertical-align:middle;color:#495060}.i-load-more-line{border-top:1px solid #dddee1;display:flex;border-top:0}.i-load-more-line::before{position:relative;top:-1px;-webkit-box-flex:1;-webkit-flex:1;flex:1;content:'';border-top:1px solid #dddee1}.i-load-more-line::after{position:relative;top:-1px;-webkit-box-flex:1;-webkit-flex:1;flex:1;content:'';border-top:1px solid #dddee1}.i-load-more-line .i-load-more-tip{position:relative;top:-.9em;padding:0 .55em}.i-load-more-empty{width:4px;height:4px;border-radius:50%;background-color:#e5e5e5;display:inline-block;position:relative;vertical-align:0;top:-.16em}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/dist/message/index.js b/dist/message/index.js new file mode 100644 index 0000000..21a6d68 --- /dev/null +++ b/dist/message/index.js @@ -0,0 +1,45 @@ +const default_data = { + visible: false, + content: '', + duration: 2, + type: 'default', // default || success || warning || error +}; + +let timmer = null; + +Component({ + externalClasses: ['i-class'], + + data: { + ...default_data + }, + + methods: { + handleShow (options) { + const { type = 'default', duration = 2 } = options; + + this.setData({ + ...options, + type, + duration, + visible: true + }); + + const d = this.data.duration * 1000; + + if (timmer) clearTimeout(timmer); + if (d !== 0) { + timmer = setTimeout(() => { + this.handleHide(); + timmer = null; + }, d); + } + }, + + handleHide () { + this.setData({ + ...default_data + }); + } + } +}); \ No newline at end of file diff --git a/dist/message/index.json b/dist/message/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/message/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/message/index.wxml b/dist/message/index.wxml new file mode 100644 index 0000000..aecaad9 --- /dev/null +++ b/dist/message/index.wxml @@ -0,0 +1,3 @@ + + {{ content }} + \ No newline at end of file diff --git a/dist/message/index.wxss b/dist/message/index.wxss new file mode 100644 index 0000000..e6a79a6 --- /dev/null +++ b/dist/message/index.wxss @@ -0,0 +1 @@ +.i-message{display:block;width:100%;min-height:32px;line-height:2.3;position:fixed;top:0;left:0;right:0;background:#2d8cf0;color:#fff;text-align:center;font-size:14px;z-index:1010;opacity:0;-webkit-transform:translateZ(0) translateY(-100%);transition:all .4s ease-in-out}.i-message-show{-webkit-transform:translateZ(0) translateY(0);opacity:1}.i-message-default{background:#2d8cf0}.i-message-success{background:#19be6b}.i-message-warning{background:#f90}.i-message-error{background:#ed3f14} \ No newline at end of file diff --git a/dist/modal/index.js b/dist/modal/index.js new file mode 100644 index 0000000..ae178e5 --- /dev/null +++ b/dist/modal/index.js @@ -0,0 +1,54 @@ +Component({ + externalClasses: ['i-class', 'i-class-mask'], + + properties: { + visible: { + type: Boolean, + value: false + }, + title: { + type: String, + value: '' + }, + showOk: { + type: Boolean, + value: true + }, + showCancel: { + type: Boolean, + value: true + }, + okText: { + type: String, + value: '确定' + }, + cancelText: { + type: String, + value: '取消' + }, + // 按钮组,有此值时,不显示 ok 和 cancel 按钮 + actions: { + type: Array, + value: [] + }, + // horizontal || vertical + actionMode: { + type: String, + value: 'horizontal' + } + }, + + methods: { + handleClickItem ({ currentTarget = {} }) { + const dataset = currentTarget.dataset || {}; + const { index } = dataset; + this.triggerEvent('click', { index }); + }, + handleClickOk () { + this.triggerEvent('ok'); + }, + handleClickCancel () { + this.triggerEvent('cancel'); + } + } +}); diff --git a/dist/modal/index.json b/dist/modal/index.json new file mode 100644 index 0000000..50d034a --- /dev/null +++ b/dist/modal/index.json @@ -0,0 +1,9 @@ +{ + "component": true, + "usingComponents": { + "i-grid": "../grid/index", + "i-grid-item": "../grid-item/index", + "i-button": "../button/index", + "i-icon": "../icon/index" + } +} diff --git a/dist/modal/index.wxml b/dist/modal/index.wxml new file mode 100644 index 0000000..11bcbd4 --- /dev/null +++ b/dist/modal/index.wxml @@ -0,0 +1,40 @@ + + + + + {{ title }} + + + + + + + + + + + + + + + + + + + {{ cancelText }} + + + {{ okText }} + + + + + + + \ No newline at end of file diff --git a/dist/modal/index.wxss b/dist/modal/index.wxss new file mode 100644 index 0000000..d1c42fc --- /dev/null +++ b/dist/modal/index.wxss @@ -0,0 +1 @@ +.i-modal{position:fixed;overflow:auto;top:0;right:0;bottom:0;left:0;height:100%;z-index:1000;display:flex;outline:0;-webkit-box-align:center;align-items:center;-webkit-box-pack:center;justify-content:center;transform:translateZ(1px);opacity:0;visibility:hidden}.i-modal-show{visibility:visible;opacity:1}.i-modal-mask{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(0,0,0,.7);z-index:1000;transition:all .2s ease-in-out;opacity:0;visibility:hidden}.i-modal-mask-show{opacity:1;visibility:visible}.i-modal-main{width:270px;position:relative}.i-modal-content{border-radius:7px;padding-top:15px;position:relative;background-color:#fff;border:0;background-clip:padding-box;text-align:center;height:100%;overflow:hidden}.i-modal-body{max-height:100px;margin-bottom:15px;font-size:14px;color:#80848f;height:100%;line-height:1.5;overflow:auto}.i-modal-title{padding:6px 15px 15px;margin:0;font-size:18px;line-height:1;color:#1c2438;text-align:center}.i-modal-actions{margin:0 1px}.i-modal-action-vertical{position:relative}.i-modal-action-vertical:after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-top-width:1px}.i-modal-grid{border-radius:0 0 7px 7px;border-left:none}.i-modal-grid-item,.i-modal-grid-item-last{padding:0;border-bottom:none}.i-modal-grid-item-last{border-right:none}.i-modal-btn-ok{color:#2d8cf0!important}.i-modal-btn-loading{display:inline-block;vertical-align:middle;margin-right:10px;width:12px;height:12px;background:0 0;border-radius:50%;border:2px solid #e5e5e5;border-color:#666 #e5e5e5 #e5e5e5 #e5e5e5;animation:btn-spin .6s linear;animation-iteration-count:infinite}.i-modal-btn-text{display:inline-block;vertical-align:middle}.i-modal-btn-icon{font-size:14px!important;margin-right:4px}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/dist/notice-bar/index.js b/dist/notice-bar/index.js new file mode 100644 index 0000000..7043dbd --- /dev/null +++ b/dist/notice-bar/index.js @@ -0,0 +1,112 @@ +const VALID_MODE = ['closeable']; +const FONT_COLOR = '#f60'; +const BG_COLOR = '#fff7cc'; + +Component({ + externalClasses: ['i-class'], + + properties: { + closable: { + type: Boolean, + value: false + }, + icon: { + type: String, + value: '' + }, + loop: { + type: Boolean, + value: false + }, + // 背景颜色 + backgroundcolor: { + type: String, + value: '#fefcec' + }, + // 字体及图标颜色 + color: { + type: String, + value: '#f76a24' + }, + // 滚动速度 + speed: { + type: Number, + value: 1000 + } + }, + + data: { + show: true, + wrapWidth: 0, + width: 0, + duration: 0, + animation: null, + timer: null, + }, + detached() { + this.destroyTimer(); + }, + ready() { + if (this.data.loop) { + this.initAnimation(); + } + }, + + methods: { + initAnimation() { + wx.createSelectorQuery().in(this).select('.i-noticebar-content-wrap').boundingClientRect((wrapRect) => { + wx.createSelectorQuery().in(this).select('.i-noticebar-content').boundingClientRect((rect) => { + const duration = rect.width / 40 * this.data.speed; + const animation = wx.createAnimation({ + duration: duration, + timingFunction: "linear", + }); + this.setData({ + wrapWidth: wrapRect.width, + width: rect.width, + duration: duration, + animation: animation + }, () => { + this.startAnimation(); + }); + }).exec(); + + }).exec(); + }, + startAnimation() { + //reset + if (this.data.animation.option.transition.duration !== 0) { + this.data.animation.option.transition.duration = 0; + const resetAnimation = this.data.animation.translateX(this.data.wrapWidth).step(); + this.setData({ + animationData: resetAnimation.export() + }); + } + this.data.animation.option.transition.duration = this.data.duration; + const animationData = this.data.animation.translateX(-this.data.width).step(); + setTimeout(() => { + this.setData({ + animationData: animationData.export() + }); + }, 100); + const timer = setTimeout(() => { + this.startAnimation(); + }, this.data.duration); + this.setData({ + timer, + }); + }, + destroyTimer() { + if (this.data.timer) { + clearTimeout(this.data.timer); + } + }, + handleClose() { + this.destroyTimer(); + this.setData({ + show: false, + timer: null + }); + } + } +}); diff --git a/dist/notice-bar/index.json b/dist/notice-bar/index.json new file mode 100644 index 0000000..db3afc0 --- /dev/null +++ b/dist/notice-bar/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/dist/notice-bar/index.wxml b/dist/notice-bar/index.wxml new file mode 100644 index 0000000..5de1e11 --- /dev/null +++ b/dist/notice-bar/index.wxml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/dist/notice-bar/index.wxss b/dist/notice-bar/index.wxss new file mode 100644 index 0000000..9ea2aa7 --- /dev/null +++ b/dist/notice-bar/index.wxss @@ -0,0 +1 @@ +.i-noticebar{display:flex;height:72rpx;line-height:72rpx;font-size:14px;color:#f76a24;background-color:#fefcec;overflow:hidden}.i-noticebar-icon{display:flex;margin-left:30rpx;align-items:center}.i-noticebar-icon+view{margin-left:10rpx}.i-noticebar-operation{display:flex;margin-right:16rpx;align-items:center}.i-noticebar-content-wrap{position:relative;flex:1;margin:0 30rpx;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.i-noticebar-content-wrap .i-noticebar-content{position:absolute;transition-duration:20s} \ No newline at end of file diff --git a/dist/page/index.js b/dist/page/index.js new file mode 100644 index 0000000..e0f44c5 --- /dev/null +++ b/dist/page/index.js @@ -0,0 +1,42 @@ +Component({ + externalClasses: ['i-class'], + + options: { + multipleSlots: true + }, + + properties: { + // button || number || pointer + mode: { + type: String, + value: 'button' + }, + current: { + type: Number, + value: 1 + }, + total: { + type: Number, + value: 0 + }, + // 是否隐藏数值 + simple: { + type: Boolean, + value: false + } + }, + + methods: { + handleChange (type) { + this.triggerEvent('change', { + type: type + }); + }, + handlePrev () { + this.handleChange('prev'); + }, + handleNext () { + this.handleChange('next'); + } + } +}); diff --git a/dist/page/index.json b/dist/page/index.json new file mode 100644 index 0000000..7b1a128 --- /dev/null +++ b/dist/page/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-button": "../button/index" + } +} diff --git a/dist/page/index.wxml b/dist/page/index.wxml new file mode 100644 index 0000000..a84d47b --- /dev/null +++ b/dist/page/index.wxml @@ -0,0 +1,14 @@ + + + + + + {{ current }}/{{total}} + + + + + + + + diff --git a/dist/page/index.wxss b/dist/page/index.wxss new file mode 100644 index 0000000..06c5c3b --- /dev/null +++ b/dist/page/index.wxss @@ -0,0 +1 @@ +.i-page{display:block;width:100%;height:44px;overflow:hidden;box-sizing:border-box;position:relative}.i-page-prev{position:absolute;left:10px;top:0}.i-page-next{position:absolute;right:10px;top:0}.i-page-number{width:100%;height:44px;line-height:44px;margin:0 auto;text-align:center}.i-page-number-current{display:inline;color:#2d8cf0}.i-page-pointer{width:100%;height:44px;line-height:44px;margin:0 auto;text-align:center}.i-page-pointer-dot{display:inline-block;width:8px;height:8px;margin:0 2px;border-radius:50%;background:#bbbec4}.i-page-pointer-dot.current{background:#80848f}.i-page-button{display:inline-block;margin:0} \ No newline at end of file diff --git a/dist/panel/index.js b/dist/panel/index.js new file mode 100644 index 0000000..b572da5 --- /dev/null +++ b/dist/panel/index.js @@ -0,0 +1,19 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + title: { + type: String, + value: '' + }, + // 标题顶部距离 + hideTop: { + type: Boolean, + value: false + }, + hideBorder: { + type: Boolean, + value: false + } + } +}); diff --git a/dist/panel/index.json b/dist/panel/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/panel/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/panel/index.wxml b/dist/panel/index.wxml new file mode 100644 index 0000000..aa91c20 --- /dev/null +++ b/dist/panel/index.wxml @@ -0,0 +1,4 @@ + + {{ title }} + + diff --git a/dist/panel/index.wxss b/dist/panel/index.wxss new file mode 100644 index 0000000..edee3b8 --- /dev/null +++ b/dist/panel/index.wxss @@ -0,0 +1 @@ +.i-panel{position:relative;overflow:hidden}.i-panel-title{font-size:14px;line-height:1;color:#1c2438;padding:20px 16px 10px}.i-panel-title-hide-top{padding-top:0}.i-panel-content{position:relative;background:#fff;overflow:hidden}.i-panel-content::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-top-width:1px;border-bottom-width:1px}.i-panel-without-border::after{border:0 none} \ No newline at end of file diff --git a/dist/progress/index.js b/dist/progress/index.js new file mode 100644 index 0000000..b87b962 --- /dev/null +++ b/dist/progress/index.js @@ -0,0 +1,23 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + percent: { + type: Number, + value: 0 + }, + // normal || active || wrong || success + status: { + type: String, + value: 'normal' + }, + strokeWidth: { + type: Number, + value: 10 + }, + hideInfo: { + type: Boolean, + value: false + } + } +}); diff --git a/dist/progress/index.json b/dist/progress/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/progress/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/progress/index.wxml b/dist/progress/index.wxml new file mode 100644 index 0000000..09b5abc --- /dev/null +++ b/dist/progress/index.wxml @@ -0,0 +1,10 @@ + + + + + + + + {{ percent }}% + + \ No newline at end of file diff --git a/dist/progress/index.wxss b/dist/progress/index.wxss new file mode 100644 index 0000000..21b9d9c --- /dev/null +++ b/dist/progress/index.wxss @@ -0,0 +1 @@ +.i-progress{display:inline-block;width:100%;font-size:12px;position:relative}.i-progress-outer{display:inline-block;width:100%;margin-right:0;padding-right:0;box-sizing:border-box}.i-progress-show-info .i-progress-outer{padding-right:55px;margin-right:-55px}.i-progress-inner{display:inline-block;width:100%;background-color:#f3f3f3;border-radius:100px;vertical-align:middle}.i-progress-bg{border-radius:100px;background-color:#2db7f5;transition:all .2s linear;position:relative}.i-progress-text{display:inline-block;margin-left:5px;text-align:left;font-size:1em;vertical-align:middle}.i-progress-active .i-progress-bg:before{content:'';opacity:0;position:absolute;top:0;left:0;right:0;bottom:0;background:#fff;border-radius:10px;animation:i-progress-active 2s ease-in-out infinite}.i-progress-wrong .i-progress-bg{background-color:#ed3f14}.i-progress-wrong .i-progress-text{color:#ed3f14}.i-progress-success .i-progress-bg{background-color:#19be6b}.i-progress-success .i-progress-text{color:#19be6b}@keyframes i-progress-active{0%{opacity:.3;width:0}100%{opacity:0;width:100%}} \ No newline at end of file diff --git a/dist/radio-group/index.js b/dist/radio-group/index.js new file mode 100644 index 0000000..db76e41 --- /dev/null +++ b/dist/radio-group/index.js @@ -0,0 +1,38 @@ +Component({ + externalClasses: ['i-class'], + relations: { + '../radio/index': { + type: 'child', + linked() { + this.changeCurrent(); + }, + linkChanged() { + this.changeCurrent(); + }, + unlinked() { + this.changeCurrent(); + } + } + }, + properties: { + current: { + type: String, + value: '', + observer: 'changeCurrent' + }, + }, + methods: { + changeCurrent(val = this.data.current) { + let items = this.getRelationNodes('../radio/index'); + const len = items.length; + if (len > 0) { + items.forEach(item => { + item.changeCurrent(val === item.data.value); + }); + } + }, + emitEvent(current) { + this.triggerEvent('change', current); + } + } +}); diff --git a/dist/radio-group/index.json b/dist/radio-group/index.json new file mode 100644 index 0000000..edf138d --- /dev/null +++ b/dist/radio-group/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell-group": "../cell-group/index" + } +} diff --git a/dist/radio-group/index.wxml b/dist/radio-group/index.wxml new file mode 100644 index 0000000..6940180 --- /dev/null +++ b/dist/radio-group/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/dist/radio-group/index.wxss b/dist/radio-group/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/dist/radio/index.js b/dist/radio/index.js new file mode 100644 index 0000000..cb73db5 --- /dev/null +++ b/dist/radio/index.js @@ -0,0 +1,56 @@ +const prefixCls = 'i-radio'; + +Component({ + externalClasses: ['i-class'], + relations: { + '../radio-group/index': { + type: 'parent' + } + }, + properties: { + value: { + type: String, + value: '' + }, + checked: { + type: Boolean, + value: false + }, + disabled: { + type: Boolean, + value: false + }, + color: { + type: String, + value: '#2d8cf0' + }, + position: { + type: String, + value: 'left', //left right + observer: 'setPosition' + } + }, + data: { + checked: true, + positionCls: `${prefixCls}-radio-left`, + }, + attached() { + this.setPosition(); + }, + methods: { + changeCurrent(current) { + this.setData({ checked: current }); + }, + radioChange() { + if (this.data.disabled) return; + const item = { current: !this.data.checked, value: this.data.value }; + const parent = this.getRelationNodes('../radio-group/index')[0]; + parent ? parent.emitEvent(item) : this.triggerEvent('change', item); + }, + setPosition() { + this.setData({ + positionCls: this.data.position.indexOf('left') !== -1 ? `${prefixCls}-radio-left` : `${prefixCls}-radio-right`, + }); + } + } +}); diff --git a/dist/radio/index.json b/dist/radio/index.json new file mode 100644 index 0000000..e2ab49a --- /dev/null +++ b/dist/radio/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-cell": "../cell/index" + } +} diff --git a/dist/radio/index.wxml b/dist/radio/index.wxml new file mode 100644 index 0000000..1e20b79 --- /dev/null +++ b/dist/radio/index.wxml @@ -0,0 +1,8 @@ + + + + + diff --git a/dist/radio/index.wxss b/dist/radio/index.wxss new file mode 100644 index 0000000..c52b211 --- /dev/null +++ b/dist/radio/index.wxss @@ -0,0 +1 @@ +.i-radio-cell::after{display:block}.i-radio-radio-left{float:left}.i-radio-radio-right{float:right}.i-radio-radio{vertical-align:middle}.i-radio-title{display:inline-block;vertical-align:middle} \ No newline at end of file diff --git a/dist/rate/index.js b/dist/rate/index.js new file mode 100644 index 0000000..a7e374a --- /dev/null +++ b/dist/rate/index.js @@ -0,0 +1,69 @@ +Component({ + externalClasses: ['i-class'], + properties : { + count : { + type : Number, + value : 5 + }, + value : { + type : Number, + value : 0 + }, + disabled : { + type : Boolean, + value : false + }, + size : { + type : Number, + value : 20 + }, + name : { + type : String, + value : '' + } + }, + data : { + touchesStart : { + pageX : 0 + } + }, + methods : { + handleClick(e){ + const data = this.data; + if( data.disabled ){ + return; + } + const index = e.currentTarget.dataset.index; + this.triggerEvent('change',{ + index : index + 1 + }) + }, + handleTouchMove(e){ + const data = this.data; + if( data.disabled ){ + return; + } + if( !e.changedTouches[0] ){ + return; + } + const movePageX = e.changedTouches[0].pageX; + const space = movePageX - data.touchesStart.pageX; + + if( space <= 0 ){ + return; + } + let setIndex = Math.ceil( space/data.size ); + setIndex = setIndex > data.count ? data.count : setIndex ; + this.triggerEvent('change',{ + index : setIndex + }) + } + }, + ready(){ + const className = '.i-rate'; + var query = wx.createSelectorQuery().in(this) + query.select( className ).boundingClientRect((res)=>{ + this.data.touchesStart.pageX = res.left || 0; + }).exec() + } +}); diff --git a/dist/rate/index.json b/dist/rate/index.json new file mode 100644 index 0000000..687543c --- /dev/null +++ b/dist/rate/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents":{ + "i-icon": "../icon/index" + } +} diff --git a/dist/rate/index.wxml b/dist/rate/index.wxml new file mode 100644 index 0000000..d600660 --- /dev/null +++ b/dist/rate/index.wxml @@ -0,0 +1,23 @@ + + + + + + + + +var prefixCls = 'i-rate'; +module.exports = { + getCurrent : function( value,index ){ + if( index < value ){ + return prefixCls + '-current' + } + } +} + diff --git a/dist/rate/index.wxss b/dist/rate/index.wxss new file mode 100644 index 0000000..e889107 --- /dev/null +++ b/dist/rate/index.wxss @@ -0,0 +1 @@ +.i-rate{margin:0;padding:0;font-size:20px;display:inline-block;vertical-align:middle;font-weight:400;font-style:normal}.i-rate-hide-input{display:none}.i-rate-star{display:inline-block;color:#e9e9e9}.i-rate-current{color:#f5a623}.i-rate-text{display:inline-block;vertical-align:middle;margin-left:6px;font-size:14px} \ No newline at end of file diff --git a/dist/row/index.js b/dist/row/index.js new file mode 100644 index 0000000..3428387 --- /dev/null +++ b/dist/row/index.js @@ -0,0 +1,9 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../col/index': { + type: 'child' + } + } +}); diff --git a/dist/row/index.json b/dist/row/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/row/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/row/index.wxml b/dist/row/index.wxml new file mode 100644 index 0000000..fe8159e --- /dev/null +++ b/dist/row/index.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/dist/row/index.wxss b/dist/row/index.wxss new file mode 100644 index 0000000..3b8b432 --- /dev/null +++ b/dist/row/index.wxss @@ -0,0 +1 @@ +.i-row:after{content:"";display:table;clear:both} \ No newline at end of file diff --git a/dist/slide/index.js b/dist/slide/index.js new file mode 100644 index 0000000..a397f4f --- /dev/null +++ b/dist/slide/index.js @@ -0,0 +1,15 @@ +Component({ + externalClasses: ['i-class'], + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + methods : { + handleTap2(){ + console.log(event,1111111) + }, + handleTap3(){ + + } + } +}); diff --git a/dist/slide/index.json b/dist/slide/index.json new file mode 100644 index 0000000..6b1e67d --- /dev/null +++ b/dist/slide/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": + { + "i-button": "../button/index", + "i-icon": "../icon/index" + } +} diff --git a/dist/slide/index.wxml b/dist/slide/index.wxml new file mode 100644 index 0000000..a13c673 --- /dev/null +++ b/dist/slide/index.wxml @@ -0,0 +1,4 @@ + + 1111 + + \ No newline at end of file diff --git a/dist/slide/index.wxss b/dist/slide/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/dist/spin/index.js b/dist/spin/index.js new file mode 100644 index 0000000..3297f81 --- /dev/null +++ b/dist/spin/index.js @@ -0,0 +1,23 @@ +Component({ + externalClasses: ['i-class'], + + properties: { + // small || default || large + size: { + type: String, + value: 'default' + }, + fix: { + type: Boolean, + value: false + }, + fullscreen: { + type: Boolean, + value: false + }, + custom: { + type: Boolean, + value: false + } + } +}); diff --git a/dist/spin/index.json b/dist/spin/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/spin/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/spin/index.wxml b/dist/spin/index.wxml new file mode 100644 index 0000000..8c25439 --- /dev/null +++ b/dist/spin/index.wxml @@ -0,0 +1,6 @@ + +
+ +
+
+
diff --git a/dist/spin/index.wxss b/dist/spin/index.wxss new file mode 100644 index 0000000..8ed714a --- /dev/null +++ b/dist/spin/index.wxss @@ -0,0 +1 @@ +.i-spin{color:#2d8cf0;vertical-align:middle;text-align:center}.i-spin-dot{position:relative;display:block;border-radius:50%;background-color:#2d8cf0;width:20px;height:20px;animation:ani-spin-bounce 1s 0s ease-in-out infinite}.i-spin-large .i-spin-dot{width:32px;height:32px}.i-spin-small .i-spin-dot{width:12px;height:12px}.i-spin-fix{position:absolute;top:0;left:0;z-index:8;width:100%;height:100%;background-color:rgba(255,255,255,.9)}.i-spin-fullscreen{z-index:2010}.i-spin-fullscreen-wrapper{position:fixed;top:0;right:0;bottom:0;left:0}.i-spin-fix .i-spin-main{position:absolute;top:50%;left:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.i-spin-fix .i-spin-dot{display:inline-block}.i-spin-show-text .i-spin-dot,.i-spin-text{display:none}.i-spin-show-text .i-spin-text{display:block;font-size:14px}@keyframes ani-spin-bounce{0%{transform:scale(0)}100%{transform:scale(1);opacity:0}} \ No newline at end of file diff --git a/dist/step/index.js b/dist/step/index.js new file mode 100644 index 0000000..06a81a2 --- /dev/null +++ b/dist/step/index.js @@ -0,0 +1,52 @@ +Component({ + externalClasses: ['i-class'], + properties : { + status : { + type : String, + //wait、process、finish、error + value : '' + }, + title : { + type : String, + value : '' + }, + content : { + type : String, + value : '' + }, + icon : { + type : String, + value : '' + } + }, + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + relations : { + '../steps/index' : { + type : 'parent' + } + }, + data : { + //step length + len : 1, + //current in step index + index : 0, + //parent component select current index + current : 0, + //css direction + direction : 'horizontal' + }, + methods : { + updateDataChange( options ){ + this.setData({ + len : options.len, + index : options.index, + current : options.current, + direction : options.direction + }) + } + } + +}) \ No newline at end of file diff --git a/dist/step/index.json b/dist/step/index.json new file mode 100644 index 0000000..ffb5dee --- /dev/null +++ b/dist/step/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/dist/step/index.wxml b/dist/step/index.wxml new file mode 100644 index 0000000..63549dc --- /dev/null +++ b/dist/step/index.wxml @@ -0,0 +1,70 @@ + + + {{ index+1 }} + + + + + + + + {{title}} + + + + + + {{content}} + + + + + + + +var allStatus = ['wait','process','finish','error']; +module.exports = { + noIco : function( status,current,index,icon ){ + var aindex = allStatus.indexOf(status); + var noIcon = true; + if( index < current || icon !== '' ){ + noIcon = false; + } + return noIcon; + }, + getIcoClass : function( status,ico ){ + var class = ''; + if( status === 'error' ){ + class = 'close'; + }else{ + class = 'right'; + } + if( ico !== '' ){ + class = ico; + } + return class; + }, + getItemStyle : function(len,direction){ + if( direction === 'horizontal' ){ + return 'width :'+100/len + '%'; + }else{ + return 'width : 100%;'; + } + }, + getClass : function( status,current,index ) { + //wait、process、finish、error + var startClass = 'i-step-' + var classes = ''; + var cindex = allStatus.indexOf( status ); + if( cindex !== -1 ){ + classes = startClass + allStatus[cindex]; + } + if( index < current ){ + classes = startClass + 'finish'; + }else if( index === current ){ + classes = startClass + 'process'; + } + return classes; + } +} + \ No newline at end of file diff --git a/dist/step/index.wxss b/dist/step/index.wxss new file mode 100644 index 0000000..284b42a --- /dev/null +++ b/dist/step/index.wxss @@ -0,0 +1 @@ +.i-step-ico{width:24px;height:100%;border-radius:100%;background:#fff;position:relative;z-index:2;margin:0 auto;border:#dddee1 solid 1px}.i-step-ico-in{vertical-align:baseline}.i-step-line{position:absolute;left:50%;top:12px;width:100%;height:1px;background:#dddee1}.i-step-horizontal .i-step-ico::after{position:absolute;top:11px;left:23px;z-index:1;content:'';height:1px;background:#fff;width:10px}.i-step-horizontal .i-step-item-main{text-align:center}.i-step-horizontal .i-step-ico::before{position:absolute;top:11px;left:-11px;z-index:1;content:'';height:1px;background:#fff;width:10px}.i-step-ico{box-sizing:border-box;font-size:12px}.i-step-process .i-step-ico{border:#2d8cf0 solid 1px;color:#fff;background:#2d8cf0}.i-step-wait .i-step-ico{border:#e9eaec solid 1px;color:#e9eaec}.i-step-wait .i-step-line{background:#2d8cf0}.i-step-finish .i-step-ico{border:#2d8cf0 solid 1px;color:#2d8cf0}.i-step-finish .i-step-line{background:#2d8cf0}.i-step-error .i-step-ico{border:#ed3f14 solid 1px;color:#ed3f14}.i-step-error .i-step-line{background:#ed3f14}.i-step-item{font-size:12px;position:relative;display:inline-block;box-sizing:border-box;padding-left:10px;vertical-align:top}.i-step-item-ico{width:100%;height:24px;line-height:24px;text-align:center}.i-step-item-main{margin-top:10px;clear:both}.i-step-item-title{font-size:14px;font-weight:700;color:#1c2438}.i-step-item-content{font-size:12px;font-weight:700;margin-top:2px;color:#80848f}.i-step-vertical{padding-bottom:30px}.i-step-vertical .i-step-item-ico{width:24px;float:left}.i-step-vertical .i-step-item-main{margin-left:40px;margin-top:0;clear:inherit}.i-step-vertical .i-step-line{position:absolute;height:100%;top:0;left:10px;margin:0 0 0 12px;width:1px} \ No newline at end of file diff --git a/dist/steps/index.js b/dist/steps/index.js new file mode 100644 index 0000000..06bed88 --- /dev/null +++ b/dist/steps/index.js @@ -0,0 +1,50 @@ +Component({ + externalClasses: ['i-class'], + properties : { + current : { + type : Number, + value : -1, + observer : '_updateDataChange' + }, + status : { + type : String, + //wait、process、finish、error + value : '' + }, + direction : { + type : String, + //value has horizontal or vertical + value : 'horizontal' + } + }, + relations : { + '../step/index' : { + type : 'child', + linked(){ + this._updateDataChange(); + }, + linkChanged () { + this._updateDataChange(); + }, + unlinked () { + this._updateDataChange(); + } + } + }, + methods: { + _updateDataChange() { + let steps = this.getRelationNodes('../step/index'); + const len = steps.length; + if (len > 0) { + steps.forEach((step, index) => { + step.updateDataChange({ + len : len, + index : index, + current : this.data.current, + direction : this.data.direction + }); + }); + } + } + } +}) \ No newline at end of file diff --git a/dist/steps/index.json b/dist/steps/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/steps/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/steps/index.wxml b/dist/steps/index.wxml new file mode 100644 index 0000000..d9c7942 --- /dev/null +++ b/dist/steps/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/dist/steps/index.wxss b/dist/steps/index.wxss new file mode 100644 index 0000000..616ed04 --- /dev/null +++ b/dist/steps/index.wxss @@ -0,0 +1 @@ +.i-steps{width:100%} \ No newline at end of file diff --git a/dist/sticky-item/index.js b/dist/sticky-item/index.js new file mode 100644 index 0000000..4fc3dbe --- /dev/null +++ b/dist/sticky-item/index.js @@ -0,0 +1,40 @@ +Component({ + externalClasses: ['i-class'], + options: { + multipleSlots: true + }, + relations : { + '../sticky/index' : { + type : 'parent' + } + }, + data : { + top : 0, + height : 0, + isFixed : false, + index : -1, + }, + methods: { + updateScrollTopChange(scrollTop){ + const data = this.data; + const top = data.top; + const height = data.height; + this.setData({ + isFixed : ( scrollTop >= top && scrollTop < top + height ) ? true : false + }) + }, + updateDataChange(index) { + const className = '.i-sticky-item'; + const query = wx.createSelectorQuery().in(this); + query.select( className ).boundingClientRect((res)=>{ + if( res ){ + this.setData({ + top : res.top, + height : res.height, + index : index + }) + } + }).exec() + } + } +}) \ No newline at end of file diff --git a/dist/sticky-item/index.json b/dist/sticky-item/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/sticky-item/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/sticky-item/index.wxml b/dist/sticky-item/index.wxml new file mode 100644 index 0000000..613a5c0 --- /dev/null +++ b/dist/sticky-item/index.wxml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/dist/sticky-item/index.wxss b/dist/sticky-item/index.wxss new file mode 100644 index 0000000..7328f0f --- /dev/null +++ b/dist/sticky-item/index.wxss @@ -0,0 +1 @@ +.i-sticky-item-header{background:#eee;font-size:14px;width:100%;height:32px;line-height:32px}.i-sticky-item-content{font-size:14px}.i-sticky-title{width:100%;padding:0 15px;box-sizing:border-box;background:#eee}.i-sticky-fixed .i-sticky-title{position:fixed;top:0} \ No newline at end of file diff --git a/dist/sticky/index.js b/dist/sticky/index.js new file mode 100644 index 0000000..546aa4c --- /dev/null +++ b/dist/sticky/index.js @@ -0,0 +1,63 @@ +Component({ + externalClasses: ['i-class'], + properties : { + scrollTop : { + type : Number, + observer(val){ + this._updateScrollTopChange(); + } + } + }, + relations : { + '../sticky-item/index' : { + type : 'child', + linked(){ + this._updateDataChange(); + }, + linkChanged () { + this._updateDataChange(); + }, + unlinked () { + this._updateDataChange(); + } + } + }, + data : { + timer : null, + itemLength : 0, + }, + methods : { + _updateScrollTopChange(){ + const stickies = this.getRelationNodes('../sticky-item/index'); + if( stickies.length > 0 ){ + stickies.forEach((item) => { + if( item ){ + item.updateScrollTopChange( this.data.scrollTop ); + } + }) + } + }, + _updateDataChange( ){ + const stickies = this.getRelationNodes('../sticky-item/index'); + if( stickies.length > 0 ){ + if( this.data.timer ){ + clearTimeout( this.data.timer ) + this.setData({ + timer : null + }) + } + this.data.timer = setTimeout(()=>{ + stickies.forEach((item,index) => { + if( item ){ + item.updateDataChange(index); + } + }) + },0) + this.setData({ + timer : this.data.timer + }) + } + } + } + +}) \ No newline at end of file diff --git a/dist/sticky/index.json b/dist/sticky/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/sticky/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/sticky/index.wxml b/dist/sticky/index.wxml new file mode 100644 index 0000000..aee0c63 --- /dev/null +++ b/dist/sticky/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/dist/sticky/index.wxss b/dist/sticky/index.wxss new file mode 100644 index 0000000..e69de29 diff --git a/dist/swipeout/index.js b/dist/swipeout/index.js new file mode 100644 index 0000000..b23748c --- /dev/null +++ b/dist/swipeout/index.js @@ -0,0 +1,161 @@ + /* +* touch事件判断方式 +* https://github.com/madrobby/zepto/blob/master/src/touch.js#files +*/ +function swipeDirection(x1, x2, y1, y2) { + return Math.abs(x1 - x2) >= + Math.abs(y1 - y2) ? (x1 - x2 > 0 ? 'Left' : 'Right') : (y1 - y2 > 0 ? 'Up' : 'Down') +} + +Component({ + externalClasses: ['i-class'], + properties: { + actions: { + value: [], + type: Array, + observer : '_updateButtonSize' + }, + unclosable : { + value : false, + type : Boolean + }, + toggle : { + value : false, + type : Boolean, + observer : 'closeButtonGroup' + }, + operateWidth : { + type : Number, + value : 160 + } + }, + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + data : { + //touch start position + tStart : { + pageX : 0, + pageY : 0 + }, + //限制滑动距离 + limitMove : 0, + //element move position + position : { + pageX : 0, + pageY : 0 + } + }, + methods : { + //阻止事件冒泡 + loop(){}, + _updateButtonSize(){ + const actions = this.data.actions; + if( actions.length > 0 ){ + const query = wx.createSelectorQuery().in(this); + let limitMovePosition = 0; + actions.forEach(item => { + limitMovePosition += item.width || 0; + }); + this.data.limitMove = limitMovePosition; + /* + * 动态获取每个传进值的按钮尺寸不能正确获取,在安卓上少了6px + * 暂时实现需要在actions里面传递宽度 + * 需要后期调研 + */ + //query.selectAll('.i-swipeout-button-right-item').boundingClientRect((rects)=>{ + // if( rects ){ + // console.log(rects,1111111) + // rects.forEach(item => { + // limitMovePosition += item.width; + // }); + // this.data.limitMove = limitMovePosition; + // console.log(limitMovePosition,111111111) + // } + // }).exec() + }else{ + this.data.limitMove = this.data.operateWidth; + + } + }, + handlerTouchstart(event){ + const touches = event.touches ? event.touches[0] : {}; + const tStart = this.data.tStart; + if( touches ){ + for( let i in tStart ){ + if( touches[i] ){ + tStart[i] = touches[i]; + } + } + } + }, + swipper(touches){ + const data = this.data; + const start = data.tStart; + const spacing = { + pageX : touches.pageX - start.pageX, + pageY : touches.pageY - start.pageY + } + if( data.limitMove < Math.abs( spacing.pageX ) ){ + spacing.pageX = -data.limitMove; + + } + this.setData({ + 'position' : spacing + }) + }, + handlerTouchmove(event){ + const start = this.data.tStart; + const touches = event.touches ? event.touches[0] : {}; + if( touches ){ + const direction = swipeDirection( start.pageX,touches.pageX,start.pageY,touches.pageY ); + if( direction === 'Left' ){ + this.swipper( touches ); + } + } + }, + handlerTouchend(event){ + const start = this.data.tStart; + const touches = event.changedTouches ? event.changedTouches[0] : {}; + if( touches ){ + const direction = swipeDirection( start.pageX,touches.pageX,start.pageY,touches.pageY ); + const spacing = { + pageX : touches.pageX - start.pageX, + pageY : touches.pageY - start.pageY + } + if( Math.abs( spacing.pageX ) >= 40 && direction === "Left" ){ + spacing.pageX = spacing.pageX < 0 ? - this.data.limitMove : this.data.limitMove; + }else{ + spacing.pageX = 0; + } + this.setData({ + 'position' : spacing + }) + } + }, + handlerButton(event){ + if( !this.data.unclosable ){ + this.closeButtonGroup(); + } + const dataset = event.currentTarget.dataset; + this.triggerEvent('change',{ + index : dataset.index + }) + }, + closeButtonGroup(){ + this.setData({ + 'position' : {pageX : 0,pageY : 0} + }) + }, + //控制自定义组件 + handlerParentButton(event){ + if( !this.data.unclosable ){ + this.closeButtonGroup(); + } + } + }, + ready(){ + this._updateButtonSize(); + } +}); diff --git a/dist/swipeout/index.json b/dist/swipeout/index.json new file mode 100644 index 0000000..c63f9a6 --- /dev/null +++ b/dist/swipeout/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "i-cell": "../cell/index", + "i-icon": "../icon/index" + } +} \ No newline at end of file diff --git a/dist/swipeout/index.wxml b/dist/swipeout/index.wxml new file mode 100644 index 0000000..f588015 --- /dev/null +++ b/dist/swipeout/index.wxml @@ -0,0 +1,39 @@ + + + + + + + + + + {{item.name}} + + + + + + + + + module.exports = { + setStyle : function( item ){ + var defaults = '#f7f7f7'; + return 'background:' + ( item.background ? item.background : defaults ) +';' + 'color:'+ item.color; + }, + setPosition : function( position ){ + return 'transform:translate(' + position.pageX + 'px,0);'; + } + } + \ No newline at end of file diff --git a/dist/swipeout/index.wxss b/dist/swipeout/index.wxss new file mode 100644 index 0000000..597cffc --- /dev/null +++ b/dist/swipeout/index.wxss @@ -0,0 +1 @@ +.i-swipeout-wrap{border-bottom:#dddee1 solid 1px;background:#fff;position:relative;overflow:hidden}.i-swipeout-item{width:100%;padding:15px 20px;box-sizing:border-box;transition:transform .2s ease;font-size:14px}.i-swipeout-content{white-space:nowrap;overflow:hidden}.i-swipeout-button-right-group{position:absolute;right:-100%;top:0;height:100%;z-index:1;width:100%}.i-swipeout-button-right-item{height:100%;float:left;white-space:nowrap;box-sizing:border-box;display:flex;align-items:center;justify-content:center} \ No newline at end of file diff --git a/dist/switch/index.js b/dist/switch/index.js new file mode 100644 index 0000000..5ebccfa --- /dev/null +++ b/dist/switch/index.js @@ -0,0 +1,38 @@ +Component({ + externalClasses: ['i-class'], + properties : { + value : { + type : Boolean, + value : false + }, + //large small default + size : { + type : String, + value : 'default' + }, + // is or not disable + disabled : { + type : Boolean, + value : false + }, + // hidden inut name + name : { + type : String, + value : '' + } + }, + options: { + // 在组件定义时的选项中启用多slot支持 + multipleSlots: true + }, + methods : { + toggle(){ + if( this.data.disabled ) return; + const data = this.data; + const value = data.value ? false : true; + this.triggerEvent('change',{ + value : value + }) + } + } +}); diff --git a/dist/switch/index.json b/dist/switch/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/switch/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/switch/index.wxml b/dist/switch/index.wxml new file mode 100644 index 0000000..a180254 --- /dev/null +++ b/dist/switch/index.wxml @@ -0,0 +1,26 @@ + + + + + + + + + + +var sizes = ['large', 'default']; +var prefixCls = 'i-switch'; +module.exports = { + setSize : function( size ){ + var index = sizes.indexOf( size ); + return prefixCls + ( index > -1 ? ( '-'+size ) : 'default' ) + }, + setCurrent : function( value,disabled ){ + var className = value && !disabled ? prefixCls + '-checked' : ''; + if( disabled ){ + className += ' ' + prefixCls + '-disabled'; + } + return className; + } +} + \ No newline at end of file diff --git a/dist/switch/index.wxss b/dist/switch/index.wxss new file mode 100644 index 0000000..128fea6 --- /dev/null +++ b/dist/switch/index.wxss @@ -0,0 +1 @@ +.i-switch{display:inline-block;width:48px;height:24px;line-height:24px;border-radius:24px;vertical-align:middle;border:1px solid #ccc;background-color:#ccc;position:relative;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:all .2s ease-in-out}.i-switch-hide-input{display:none;opacity:0}.i-switch-inner{color:#fff;font-size:12px;position:absolute;left:25px;vertical-align:middle}.i-switch-inner .i-icon{width:12px;height:12px;text-align:center;vertical-align:middle}.i-switch:after{content:'';width:22px;height:22px;border-radius:22px;background-color:#fff;position:absolute;left:1px;top:1px;cursor:pointer;transition:left .2s ease-in-out,width .2s ease-in-out}.i-switch-checked:after{left:8px}.i-switch-large{width:60px}.i-switch-large.i-switch-checked:after{left:37px}.i-switch-checked:after{left:25px}.i-switch-checked{border-color:#2d8cf0;background-color:#2d8cf0}.i-switch-checked .i-switch-inner{left:8px}.i-switch-checked:after{left:25px}.i-switch-disabled{background:#f3f3f3;border-color:#f3f3f3}.i-switch-disabled:after{background:#ccc;cursor:not-allowed}.i-switch-disabled .i-switch-inner{color:#ccc} \ No newline at end of file diff --git a/dist/tab-bar-item/index.js b/dist/tab-bar-item/index.js new file mode 100644 index 0000000..0c24c1a --- /dev/null +++ b/dist/tab-bar-item/index.js @@ -0,0 +1,62 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../tab-bar/index': { + type: 'parent' + } + }, + + properties: { + icon: { + type: String, + value: '' + }, + currentIcon: { + type: String, + value: '' + }, + img: { + type: String, + value: '' + }, + currentImg: { + type: String, + value: '' + }, + key: { + type: String, + value: '' + }, + title: { + type: String, + value: '' + }, + dot: { + type: Boolean, + value: false + }, + count: { + type: Number, + value: 0 + } + }, + + data: { + current: false, + currentColor: '' + }, + + methods: { + changeCurrent (current) { + this.setData({ current }); + }, + changeCurrentColor (currentColor) { + this.setData({ currentColor }); + }, + handleClickItem () { + const parent = this.getRelationNodes('../tab-bar/index')[0]; + parent.emitEvent(this.data.key); + } + } +}); diff --git a/dist/tab-bar-item/index.json b/dist/tab-bar-item/index.json new file mode 100644 index 0000000..918aaf8 --- /dev/null +++ b/dist/tab-bar-item/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": + { + "i-badge": "../badge/index", + "i-icon": "../icon/index" + } +} diff --git a/dist/tab-bar-item/index.wxml b/dist/tab-bar-item/index.wxml new file mode 100644 index 0000000..7153909 --- /dev/null +++ b/dist/tab-bar-item/index.wxml @@ -0,0 +1,10 @@ + + + + + + {{ title }} + {{ title }} + + + \ No newline at end of file diff --git a/dist/tab-bar-item/index.wxss b/dist/tab-bar-item/index.wxss new file mode 100644 index 0000000..0f8a9c8 --- /dev/null +++ b/dist/tab-bar-item/index.wxss @@ -0,0 +1 @@ +.i-tab-bar-item{flex:1;display:flex;width:100%;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;text-align:center}.i-tab-bar-item-icon{display:flex;-webkit-box-pack:center;justify-content:center;box-sizing:border-box;color:#80848f}.i-tab-bar-item-icon-current{color:#2d8cf0}.i-tab-bar-item-img{display:flex;-webkit-box-pack:center;justify-content:center;box-sizing:border-box;width:22px;height:22px}.i-tab-bar-item-title{font-size:10px;margin:3px 0 0;line-height:1;text-align:center;box-sizing:border-box;color:#80848f}.i-tab-bar-item-title-current{color:#2d8cf0}.i-tab-bar-item-img{display:flex;-webkit-box-pack:center;justify-content:center;box-sizing:border-box;color:#80848f} \ No newline at end of file diff --git a/dist/tab-bar/index.js b/dist/tab-bar/index.js new file mode 100644 index 0000000..ca02fe4 --- /dev/null +++ b/dist/tab-bar/index.js @@ -0,0 +1,66 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../tab-bar-item/index': { + type: 'child', + linked () { + this.changeCurrent(); + }, + linkChanged () { + this.changeCurrent(); + }, + unlinked () { + this.changeCurrent(); + } + } + }, + + properties: { + current: { + type: String, + value: '', + observer: 'changeCurrent' + }, + color: { + type: String, + value: '' + }, + fixed: { + type: Boolean, + value: false + } + }, + + data: { + list: [] + }, + + methods: { + changeCurrent (val = this.data.current) { + let items = this.getRelationNodes('../tab-bar-item/index'); + const len = items.length; + + if (len > 0) { + const list = []; + items.forEach(item => { + item.changeCurrent(item.data.key === val); + item.changeCurrentColor(this.data.color); + list.push({ + key: item.data.key + }); + }); + this.setData({ + list: list + }); + } + }, + emitEvent (key) { + this.triggerEvent('change', { key }); + }, + handleClickItem (e) { + const key = e.currentTarget.dataset.key; + this.emitEvent(key); + } + } +}); diff --git a/dist/tab-bar/index.json b/dist/tab-bar/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/tab-bar/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/tab-bar/index.wxml b/dist/tab-bar/index.wxml new file mode 100644 index 0000000..9dbfbea --- /dev/null +++ b/dist/tab-bar/index.wxml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/dist/tab-bar/index.wxss b/dist/tab-bar/index.wxss new file mode 100644 index 0000000..5c6fd9c --- /dev/null +++ b/dist/tab-bar/index.wxss @@ -0,0 +1 @@ +.i-tab-bar{display:flex;width:100%;height:50px;box-sizing:border-box;position:relative;justify-content:space-around;align-items:center;-webkit-box-align:center;background:#fff}.i-tab-bar::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-top-width:1px}.i-tab-bar-fixed{position:fixed;bottom:0;z-index:2}.i-tab-bar-list{position:absolute;top:0;bottom:0;left:0;right:0}.i-tab-bar-layer{display:block;float:left;height:100%} \ No newline at end of file diff --git a/dist/tab/index.js b/dist/tab/index.js new file mode 100644 index 0000000..c8d3079 --- /dev/null +++ b/dist/tab/index.js @@ -0,0 +1,50 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../tabs/index': { + type: 'parent' + } + }, + + properties: { + key: { + type: String, + value: '' + }, + title: { + type: String, + value: '' + }, + dot: { + type: Boolean, + value: false + }, + count: { + type: Number, + value: 0 + } + }, + + data: { + current: false, + currentColor: '', + scroll: false + }, + + methods: { + changeCurrent (current) { + this.setData({ current }); + }, + changeCurrentColor (currentColor) { + this.setData({ currentColor }); + }, + changeScroll (scroll) { + this.setData({ scroll }); + }, + handleClickItem () { + const parent = this.getRelationNodes('../tabs/index')[0]; + parent.emitEvent(this.data.key); + } + } +}); diff --git a/dist/tab/index.json b/dist/tab/index.json new file mode 100644 index 0000000..eb6877d --- /dev/null +++ b/dist/tab/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-badge": "../badge/index" + } +} diff --git a/dist/tab/index.wxml b/dist/tab/index.wxml new file mode 100644 index 0000000..29d3955 --- /dev/null +++ b/dist/tab/index.wxml @@ -0,0 +1,9 @@ + + + + {{ title }} + {{ title }} + + + + \ No newline at end of file diff --git a/dist/tab/index.wxss b/dist/tab/index.wxss new file mode 100644 index 0000000..135637b --- /dev/null +++ b/dist/tab/index.wxss @@ -0,0 +1 @@ +.i-tabs-tab{flex:1;display:flex;width:100%;-webkit-box-pack:center;justify-content:center;-webkit-box-align:center;align-items:center;-webkit-box-orient:vertical;-webkit-box-direction:normal;flex-direction:column;text-align:center;position:relative}.i-tabs-tab-bar{display:block;width:100%;height:2px;background:0 0;position:absolute;bottom:0;left:0;background:#2d8cf0}.i-tabs-tab-title{font-size:14px;text-align:center;box-sizing:border-box;color:#80848f}.i-tabs-tab-title-current{color:#2d8cf0}.i-tabs-tab-scroll{display:inline-block;width:60px} \ No newline at end of file diff --git a/dist/tabs/index.js b/dist/tabs/index.js new file mode 100644 index 0000000..b9d0326 --- /dev/null +++ b/dist/tabs/index.js @@ -0,0 +1,56 @@ +Component({ + externalClasses: ['i-class'], + + relations: { + '../tab/index': { + type: 'child', + linked () { + this.changeCurrent(); + }, + linkChanged () { + this.changeCurrent(); + }, + unlinked () { + this.changeCurrent(); + } + } + }, + + properties: { + current: { + type: String, + value: '', + observer: 'changeCurrent' + }, + color: { + type: String, + value: '' + }, + scroll: { + type: Boolean, + value: false + }, + fixed: { + type: Boolean, + value: false + } + }, + + methods: { + changeCurrent (val = this.data.current) { + let items = this.getRelationNodes('../tab/index'); + const len = items.length; + + if (len > 0) { + items.forEach(item => { + item.changeScroll(this.data.scroll); + item.changeCurrent(item.data.key === val); + item.changeCurrentColor(this.data.color); + }); + } + }, + emitEvent (key) { + this.triggerEvent('change', { key }); + } + } +}); diff --git a/dist/tabs/index.json b/dist/tabs/index.json new file mode 100644 index 0000000..467ce29 --- /dev/null +++ b/dist/tabs/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/dist/tabs/index.wxml b/dist/tabs/index.wxml new file mode 100644 index 0000000..b61d51b --- /dev/null +++ b/dist/tabs/index.wxml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/dist/tabs/index.wxss b/dist/tabs/index.wxss new file mode 100644 index 0000000..985fb18 --- /dev/null +++ b/dist/tabs/index.wxss @@ -0,0 +1 @@ +.i-tabs{display:flex;width:100%;height:42px;line-height:42px;box-sizing:border-box;position:relative;justify-content:space-around;align-items:center;-webkit-box-align:center;background:#fff}.i-tabs::after{content:'';position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:0 0;pointer-events:none;box-sizing:border-box;border:0 solid #e9eaec;border-bottom-width:1px}.i-tabs-scroll{display:block;overflow-x:auto;white-space:nowrap}.i-tabs-fixed{position:fixed;top:0;z-index:2} \ No newline at end of file diff --git a/dist/tag/index.js b/dist/tag/index.js new file mode 100644 index 0000000..338440a --- /dev/null +++ b/dist/tag/index.js @@ -0,0 +1,42 @@ +Component({ + externalClasses: ['i-class'], + properties : { + //slot name + name : { + type : String, + value : '' + }, + //can click or not click + checkable : { + type : Boolean, + value : false + }, + //is current choose + checked : { + type : Boolean, + value : true + }, + //background and color setting + color : { + type : String, + value : 'default' + }, + //control fill or not + type : { + type : String, + value : 'dot' + } + }, + methods : { + tapTag(){ + const data = this.data; + if( data.checkable ){ + const checked = data.checked ? false : true; + this.triggerEvent('change',{ + name : data.name || '', + checked : checked + }); + } + } + } +}) \ No newline at end of file diff --git a/dist/tag/index.json b/dist/tag/index.json new file mode 100644 index 0000000..1dd6c7f --- /dev/null +++ b/dist/tag/index.json @@ -0,0 +1,3 @@ +{ + "component" : true +} \ No newline at end of file diff --git a/dist/tag/index.wxml b/dist/tag/index.wxml new file mode 100644 index 0000000..ed2c675 --- /dev/null +++ b/dist/tag/index.wxml @@ -0,0 +1,27 @@ + + + + +module.exports = { + getClass : function(color,type,checked,checkable) { + var initColorList = ['blue', 'green', 'red', 'yellow', 'default']; + var theme = ''; + var className = 'i-tag-'; + if( initColorList.indexOf( color ) > -1 ){ + theme = className + color; + } + if( type === 'border' ){ + theme = className+color+'-border'; + } + if( checkable && checked ){ + theme = className+color+'-checked'; + }else if( checkable && !checked ){ + theme = ( type === 'border' ? className + color +'-border' : className+'none' ); + } + + return theme; + } +} + \ No newline at end of file diff --git a/dist/tag/index.wxss b/dist/tag/index.wxss new file mode 100644 index 0000000..e19f976 --- /dev/null +++ b/dist/tag/index.wxss @@ -0,0 +1 @@ +.i-tag{display:inline-block;height:18px;line-height:18px;padding:0 4px;border-radius:2px;background:#fff;font-size:11px;vertical-align:middle;border:1rpx solid #dddee1}.i-tag-none{border-color:#fff}.i-tag-default{border-color:#dddee1;background:#e9eaec}.i-tag-red{background:#ed3f14;color:#fff}.i-tag-red-border{color:#ed3f14;background:#fff;border-color:#ed3f14}.i-tag-red-checked{background:#ed3f14;color:#fff;border-color:#ed3f14}.i-tag-green{background:#19be6b;color:#fff;border-color:#19be6b}.i-tag-green-border{color:#19be6b;background:#fff;border-color:#19be6b}.i-tag-green-checked{background:#19be6b;color:#fff;border-color:#19be6b}.i-tag-blue{background:#2d8cf0;color:#fff;border-color:#2d8cf0}.i-tag-blue-border{color:#2d8cf0;background:#fff;border-color:#2d8cf0}.i-tag-blue-checked{background:#2d8cf0;color:#fff;border-color:#2d8cf0}.i-tag-yellow{background:#f90;color:#fff;border-color:#f90}.i-tag-yellow-border{color:#f90;background:#fff;border-color:#f90}.i-tag-yellow-checked{background:#f90;color:#fff;border-color:#f90}.i-tag-default-checked{background:#e9eaec;color:#495060;border-color:#e9eaec} \ No newline at end of file diff --git a/dist/toast/index.js b/dist/toast/index.js new file mode 100644 index 0000000..6493111 --- /dev/null +++ b/dist/toast/index.js @@ -0,0 +1,48 @@ +const default_data = { + visible: false, + content: '', + icon: '', + image: '', + duration: 2, + mask: true, + type: 'default', // default || success || warning || error || loading +}; + +let timmer = null; + +Component({ + externalClasses: ['i-class'], + + data: { + ...default_data + }, + + methods: { + handleShow (options) { + const { type = 'default', duration = 2 } = options; + + this.setData({ + ...options, + type, + duration, + visible: true + }); + + const d = this.data.duration * 1000; + + if (timmer) clearTimeout(timmer); + if (d !== 0) { + timmer = setTimeout(() => { + this.handleHide(); + timmer = null; + }, d); + } + }, + + handleHide () { + this.setData({ + ...default_data + }); + } + } +}); diff --git a/dist/toast/index.json b/dist/toast/index.json new file mode 100644 index 0000000..31309b1 --- /dev/null +++ b/dist/toast/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": + { + "i-icon": "../icon/index" + } +} diff --git a/dist/toast/index.wxml b/dist/toast/index.wxml new file mode 100644 index 0000000..ca5f732 --- /dev/null +++ b/dist/toast/index.wxml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + {{ content }} + \ No newline at end of file diff --git a/dist/toast/index.wxss b/dist/toast/index.wxss new file mode 100644 index 0000000..5b3bd7f --- /dev/null +++ b/dist/toast/index.wxss @@ -0,0 +1 @@ +.i-toast{position:fixed;top:35%;left:50%;transform:translate3d(-50%,-50%,0);background:rgba(0,0,0,.7);color:#fff;font-size:14px;line-height:1.5em;margin:0 auto;box-sizing:border-box;padding:10px 18px;text-align:center;border-radius:4px;z-index:1010}.i-toast-mask{position:fixed;top:0;bottom:0;left:0;right:0;z-index:1010}.i-toast-icon{font-size:38px!important;margin-bottom:6px}.i-toast-image{max-width:100px;max-height:100px}.i-toast-loading{display:inline-block;vertical-align:middle;width:28px;height:28px;background:0 0;border-radius:50%;border:2px solid #fff;border-color:#fff #fff #fff #2d8cf0;animation:btn-spin .8s linear;animation-iteration-count:infinite}@keyframes btn-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}} \ No newline at end of file diff --git a/images/title_bg.jpg b/images/title_bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9d3aa17c6123b1380263d1289340826765b3bbe2 GIT binary patch literal 119718 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ℜ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 z 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 literal 0 HcmV?d00001 diff --git a/pages/index/index.js b/pages/index/index.js new file mode 100644 index 0000000..3facff0 --- /dev/null +++ b/pages/index/index.js @@ -0,0 +1,66 @@ +// pages/index/index.js +Page({ + + /** + * 页面的初始数据 + */ + data: { + + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + } +}) \ No newline at end of file diff --git a/pages/index/index.json b/pages/index/index.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/pages/index/index.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/pages/index/index.wxml b/pages/index/index.wxml new file mode 100644 index 0000000..a7772aa --- /dev/null +++ b/pages/index/index.wxml @@ -0,0 +1,2 @@ + +pages/index/index.wxml diff --git a/pages/index/index.wxss b/pages/index/index.wxss new file mode 100644 index 0000000..8e9c81f --- /dev/null +++ b/pages/index/index.wxss @@ -0,0 +1 @@ +/* pages/index/index.wxss */ \ No newline at end of file diff --git a/pages/main/main.js b/pages/main/main.js new file mode 100644 index 0000000..ebf7f99 --- /dev/null +++ b/pages/main/main.js @@ -0,0 +1,128 @@ +// pages/main/main.js +const App = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + title:"主题团日知识竞答", + allData:[ + { + pngAdd:"http://powerrain.cn/styleDay/images/question_1.png", + question:"问题一:以下哪一项不是四信的内容?", + answers:[ + { name: 1, value: 'A:信念' }, + { name: 2, value: 'B:信仰' }, + { name: 3, value: 'C:信任' }, + { name: 4, value: 'D:信心' }, + ], + }, + { + pngAdd: "http://powerrain.cn/styleDay/images/question_2.png", + question: "问题二:关于以下说法,哪一项是不正确的?", + answers: [ + { name: 1, value: 'A:要成为新时代青年马克思主义者, 必须坚定对共产主义和中国特色社会主义的执着信仰' }, + { name: 2, value: 'B:要成为新时代青年马克思主义者, 只须练就高强的本领。' }, + { name: 3, value: 'C:要成为新时代青年马克思主义者, 必须常葆对人民群众的赤子之心' }, + { name: 4, value: 'D:要成为新时代青年马克思主义者, 必须树立为实现中华民族伟大复兴的中国梦而奋斗的使命担当' }, + ], + }, + { + pngAdd: "http://powerrain.cn/styleDay/images/question_3.png", + question: "问题三:马克思主义之所以是科学,仅仅在于它不再把自己的理论建立在主观臆想的基础上,而是建立在对现实社会进行科学研究的基础之上。", + answers: [ + { name: 1, value: 'A:正确' }, + { name: 2, value: 'B:错误' }, + ], + }, + { + pngAdd: "http://powerrain.cn/styleDay/images/question_4.png", + question: "问题四:习主席曾言,办好中国的事情,关键在党。", + answers: [ + { name: 1, value: 'A:正确' }, + { name: 2, value: 'B:错误' }, + ], + } + ], + disabled:true + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + wx.clearStorage(); + this.setData({ + navH: App.globalData.navHeight + }) + }, + + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady: function () { + + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow: function () { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide: function () { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload: function () { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh: function () { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage: function () { + + }, + radioChange: function (e) { + wx.setStorageSync(e.currentTarget.id, e.detail.value); + this.setData({ + disabled:this.judge() + }) + }, + judge(){ + for(let i=0;i + + {{title}} + + + + + + + + + + {{item.question}} + + + + + + + + + + + Designed by Rain Sun + 计算机科学技术学院 团委学生会学习部 + All Rights Reserved + \ No newline at end of file diff --git a/pages/main/main.wxss b/pages/main/main.wxss new file mode 100644 index 0000000..50eb340 --- /dev/null +++ b/pages/main/main.wxss @@ -0,0 +1,123 @@ +/* pages/main/main.wxss */ +Page { + background-color: #efefef; +} +.title { + width:100%; + margin:auto; + overflow:hidden; + position: fixed; + top:0; + z-index: 100; + background-image:url(https://powerrain.cn/styleDay/images/title_bg.png); + color: #fff; +} + +.title_text { + text-align: center; + margin-top:30px; + color: #fff; + font-size: 40rpx; +} + +.title_bg { + width:100%; + height:170px; + text-align:center; + line-height:50px; + position: fixed; + top:0; + z-index: -99; +} + +.title_bg:after { + width: 120%; + height: 170px; + position: fixed; + left: -10%; + top:0; + z-index: -100; + content: ''; + border-radius: 0 0 50% 50%; + background-image:url(https://powerrain.cn/styleDay/images/title_bg.png); +} + +.box_select { + height:auto; + width:650rpx; + background-color: #fff; + margin:0 auto; + border-radius: 20rpx; + margin-bottom:60rpx; + box-shadow: 0 1px 4px rgba(0,0,0,0.3),0 0 40px rgba(0,0,0,0.1) inset; +} + +.box_select .w { + height: 90%; + width:90%; + margin:auto auto; + padding-top: 30rpx; +} + +.box_png_1 { + height:240rpx; + width:100%; + margin-bottom: 30rpx; + border-top-left-radius:20rpx; + border-top-right-radius:20rpx; +} + +.box_select .question { + font-size: 40rpx; +} + +.box_select .radio-group { + margin-top:40rpx; +} + +.box_select .radio-group .radio { + margin-bottom: 30rpx; + display: flex; + flex-direction: row; + align-items: center; + justify-content: space-between; + height:auto; + border-bottom:1px #eee solid; + font-weight: lighter; +} + +.box_select .radio-group .radio .answer { + width:80%; + margin-bottom: 30rpx; +} + +.box_select .radio-group .radio radio { + margin-bottom: 30rpx; +} + + +.BT { + color: #7f8389; + font-size: 20rpx; + flex: 1; +} + +.banquan { + display: flex; + flex-direction: column; + align-items: center; + margin-bottom: 20rpx; +} + +.button { + height:80rpx; + background-color: #c91b1e; + width: 650rpx; + margin:0 auto; + border-radius: 20rpx; + margin-bottom: 30rpx; + line-height: 80rpx; + color: #fff; + font-size: 40rpx; + text-align: center; +} \ No newline at end of file diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..e796f7c --- /dev/null +++ b/project.config.json @@ -0,0 +1,39 @@ +{ + "description": "项目配置文件", + "packOptions": { + "ignore": [] + }, + "setting": { + "urlCheck": true, + "es6": true, + "postcss": true, + "minified": true, + "newFeature": true + }, + "compileType": "miniprogram", + "libVersion": "2.4.1", + "appid": "wx0df150c438e4c8f0", + "projectname": "styleDay", + "debugOptions": { + "hidedInDevtools": [] + }, + "isGameTourist": false, + "condition": { + "search": { + "current": -1, + "list": [] + }, + "conversation": { + "current": -1, + "list": [] + }, + "game": { + "currentL": -1, + "list": [] + }, + "miniprogram": { + "current": -1, + "list": [] + } + } +} \ No newline at end of file