k.zhang 3 سال پیش
کامیت
df9159e139
100فایلهای تغییر یافته به همراه819 افزوده شده و 0 حذف شده
  1. 38 0
      app.js
  2. 44 0
      app.json
  3. 10 0
      app.wxss
  4. 23 0
      components/column-title/index.js
  5. 4 0
      components/column-title/index.json
  6. 2 0
      components/column-title/index.wxml
  7. 1 0
      components/column-title/index.wxss
  8. 33 0
      components/content-card/index.js
  9. 4 0
      components/content-card/index.json
  10. 12 0
      components/content-card/index.wxml
  11. 55 0
      components/content-card/index.wxss
  12. 37 0
      components/content-title/index.js
  13. 4 0
      components/content-title/index.json
  14. 9 0
      components/content-title/index.wxml
  15. 60 0
      components/content-title/index.wxss
  16. 26 0
      components/detail-navi-card/index.js
  17. 4 0
      components/detail-navi-card/index.json
  18. 13 0
      components/detail-navi-card/index.wxml
  19. 50 0
      components/detail-navi-card/index.wxss
  20. 25 0
      components/navi-card/index.js
  21. 4 0
      components/navi-card/index.json
  22. 5 0
      components/navi-card/index.wxml
  23. 24 0
      components/navi-card/index.wxss
  24. 24 0
      components/navi-content/index.js
  25. 7 0
      components/navi-content/index.json
  26. 15 0
      components/navi-content/index.wxml
  27. 21 0
      components/navi-content/index.wxss
  28. 24 0
      components/navi-title/index.js
  29. 4 0
      components/navi-title/index.json
  30. 9 0
      components/navi-title/index.wxml
  31. 38 0
      components/navi-title/index.wxss
  32. 23 0
      components/tabs-card/index.js
  33. 4 0
      components/tabs-card/index.json
  34. 2 0
      components/tabs-card/index.wxml
  35. 1 0
      components/tabs-card/index.wxss
  36. 1 0
      dist/avatar/index.js
  37. 1 0
      dist/avatar/index.json
  38. 12 0
      dist/avatar/index.wxml
  39. 1 0
      dist/avatar/index.wxss
  40. 1 0
      dist/badge/index.js
  41. 1 0
      dist/badge/index.json
  42. 7 0
      dist/badge/index.wxml
  43. 1 0
      dist/badge/index.wxss
  44. 1 0
      dist/behaviors/computeOffset.js
  45. 1 0
      dist/behaviors/countdown.js
  46. 1 0
      dist/behaviors/hover.js
  47. 1 0
      dist/behaviors/rules.js
  48. 1 0
      dist/behaviors/scrollCenter.js
  49. 1 0
      dist/behaviors/transition.js
  50. 1 0
      dist/behaviors/validator.js
  51. 1 0
      dist/behaviors/watchShow.js
  52. 1 0
      dist/behaviors/zIndex.js
  53. 1 0
      dist/button/index.js
  54. 1 0
      dist/button/index.json
  55. 16 0
      dist/button/index.wxml
  56. 1 0
      dist/button/index.wxss
  57. 1 0
      dist/card/index.js
  58. 1 0
      dist/card/index.json
  59. 22 0
      dist/card/index.wxml
  60. 1 0
      dist/card/index.wxss
  61. 1 0
      dist/combined-tabs/index.js
  62. 1 0
      dist/combined-tabs/index.json
  63. 44 0
      dist/combined-tabs/index.wxml
  64. 1 0
      dist/combined-tabs/index.wxss
  65. 1 0
      dist/common/async-validator/index.js
  66. 1 0
      dist/common/async-validator/messages.js
  67. 1 0
      dist/common/async-validator/rule/enum.js
  68. 1 0
      dist/common/async-validator/rule/index.js
  69. 1 0
      dist/common/async-validator/rule/pattern.js
  70. 1 0
      dist/common/async-validator/rule/range.js
  71. 1 0
      dist/common/async-validator/rule/required.js
  72. 1 0
      dist/common/async-validator/rule/type.js
  73. 1 0
      dist/common/async-validator/rule/whitespace.js
  74. 1 0
      dist/common/async-validator/util.js
  75. 1 0
      dist/common/async-validator/validator/array.js
  76. 1 0
      dist/common/async-validator/validator/boolean.js
  77. 1 0
      dist/common/async-validator/validator/date.js
  78. 1 0
      dist/common/async-validator/validator/enum.js
  79. 1 0
      dist/common/async-validator/validator/float.js
  80. 1 0
      dist/common/async-validator/validator/index.js
  81. 1 0
      dist/common/async-validator/validator/integer.js
  82. 1 0
      dist/common/async-validator/validator/method.js
  83. 1 0
      dist/common/async-validator/validator/number.js
  84. 1 0
      dist/common/async-validator/validator/object.js
  85. 1 0
      dist/common/async-validator/validator/pattern.js
  86. 1 0
      dist/common/async-validator/validator/regexp.js
  87. 1 0
      dist/common/async-validator/validator/required.js
  88. 1 0
      dist/common/async-validator/validator/string.js
  89. 1 0
      dist/common/async-validator/validator/type.js
  90. 1 0
      dist/core/utils/data-util.js
  91. 1 0
      dist/core/utils/event-bus.js
  92. 1 0
      dist/core/utils/event-util.js
  93. 1 0
      dist/core/utils/node-util.js
  94. 1 0
      dist/core/utils/pixel-util.js
  95. 1 0
      dist/error-tip/index.js
  96. 1 0
      dist/error-tip/index.json
  97. 1 0
      dist/error-tip/index.wxml
  98. 1 0
      dist/error-tip/index.wxss
  99. 1 0
      dist/grid-item/index.js
  100. 0 0
      dist/grid-item/index.json

+ 38 - 0
app.js

@@ -0,0 +1,38 @@
+// app.js
+App({
+  onLaunch() {
+    // 展示本地存储能力
+    const logs = wx.getStorageSync('logs') || []
+    logs.unshift(Date.now())
+    wx.setStorageSync('logs', logs)
+
+    // 登录
+    // wx.login({
+    //   success: res => {
+    //     // 发送 res.code 到后台换取 openId, sessionKey, unionId
+    //     console.log(res)
+    //     wx.request( { 
+    //       url: this.globalData.url + "/v1/user/open.id/set", 
+    //       header: { 
+    //        "Content-Type": "application/json"
+    //       }, 
+    //       method: "POST",
+    //       data:  { code: res.code }, 
+    //       complete: function( res ) { 
+    //        if (res.data.code == 200){
+    //         wx.setStorageSync('openId', res.data.data.openid)
+    //        }
+          
+    //       } 
+    //      }) 
+    //   }
+    // })
+
+  },
+  globalData: {
+    userInfo: null,
+    //url:"http://127.0.0.1:8081"
+    //url:"http://www.tao1024.com:8081"
+    url:"https://www.shisanmiao.com"
+  }
+})

+ 44 - 0
app.json

@@ -0,0 +1,44 @@
+{
+  "pages": [
+    "pages/boutique/outique",
+    "pages/shouye/shouye",
+    "pages/index/index",
+    "pages/logs/logs",
+    "pages/details/details",
+    "pages/order/order",
+    "pages/search-details/earch-details",
+    "pages/friends/friends",
+    "pages/friends-list/friends-list"
+  ],
+  "window": {
+    "backgroundTextStyle": "light",
+    "navigationBarBackgroundColor": "#fff",
+  
+    "navigationBarTextStyle": "black"
+  },
+  "tabBar": {
+  
+   "color": "#a9b7b7",  
+   "selectedColor": "#11cd6e",  
+   "borderStyle": "black" ,
+    "list": [
+      {
+        "pagePath": "pages/boutique/outique",
+        "text": "首页"
+      },
+      {
+        "pagePath": "pages/index/index",
+        "text": "我的"
+      }
+    ]
+  },
+  
+  "usingComponents": {
+    "l-button": "/dist/button/index"
+   
+  },
+
+
+  "style": "v2",
+  "sitemapLocation": "sitemap.json"
+}

+ 10 - 0
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;
+} 

+ 23 - 0
components/column-title/index.js

@@ -0,0 +1,23 @@
+// components/column-title/index.js
+Component({
+  /**
+   * 组件的属性列表
+   */
+  properties: {
+
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {
+
+  },
+
+  /**
+   * 组件的方法列表
+   */
+  methods: {
+
+  }
+});

+ 4 - 0
components/column-title/index.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 2 - 0
components/column-title/index.wxml

@@ -0,0 +1,2 @@
+<!--components/column-title/index.wxml-->
+<text>components/column-title/index.wxml</text>

+ 1 - 0
components/column-title/index.wxss

@@ -0,0 +1 @@
+/* components/column-title/index.wxss */

+ 33 - 0
components/content-card/index.js

@@ -0,0 +1,33 @@
+// components/cotent-title/index.js
+Component({
+  options:{
+    multipleSlots:true
+  },
+  externalClasses: ['l-content'],
+  /**
+   * 组件的属性列表
+   */
+  properties: {
+    name: {
+      type: String
+    },
+    cardPadding: {
+      type: Boolean,
+      value: true
+    }
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {
+
+  },
+
+  /**
+   * 组件的方法列表
+   */
+  methods: {
+
+  }
+});

+ 4 - 0
components/content-card/index.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 12 - 0
components/content-card/index.wxml

@@ -0,0 +1,12 @@
+<view class="content-card">
+  <view class="card-top">
+    <view class="card-top-left">
+      <view class="card-dot"></view>
+      <view class="content-name">{{name}}</view>
+    </view>
+    <slot name="top-right" />
+  </view>
+  <view class="card-bottom l-content {{cardPadding?'card-padding':'padd'}}">
+    <slot />
+  </view>
+</view>

+ 55 - 0
components/content-card/index.wxss

@@ -0,0 +1,55 @@
+.content-card {
+  display: flex;
+  flex-direction: column;
+  background-color: #fff;
+  background: rgba(255, 255, 255, 1);
+  box-shadow: 0px -4rpx 16rpx 0px rgba(148, 163, 178, 0.05);
+  border-radius: 20rpx 20rpx 0px 0px;
+  border-bottom: 20rpx solid #f7f7f7;
+}
+
+.card-dot {
+  width: 18rpx;
+  height: 18rpx;
+  border-radius: 50%;
+  border: 6rpx solid #3963BC;
+  margin-left: 26rpx;
+}
+
+.card-top-left{
+  display: flex;
+  align-items: center;
+}
+
+.card-top {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+  justify-content: space-between;
+  width: 750rpx;
+  height: 100rpx;
+  padding-right: 26rpx;
+  box-sizing: border-box;
+}
+
+.content-name {
+  font-size: 28rpx;
+  font-family: PingFangSC-Regular;
+  font-weight: 400;
+  color: rgba(69, 82, 107, 1);
+  line-height: 20px;
+  margin-left: 8px;
+}
+
+.card-bottom {
+  width: 750rpx;
+  box-sizing: border-box;
+}
+
+.card-padding {
+  padding: 0rpx 20rpx 40rpx 20rpx;
+}
+
+.padd{
+  padding-bottom: 40rpx;
+}

+ 37 - 0
components/content-title/index.js

@@ -0,0 +1,37 @@
+// components/cotent-title/index.js
+Component({
+  /**
+   * 组件的属性列表
+   */
+  properties: {
+    name: {
+      type: String
+    },
+    describe: {
+      type: String
+    },
+    doc: {
+      type: Boolean,
+      value: true
+    }
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {
+
+  },
+
+  /**
+   * 组件的方法列表
+   */
+  methods: {
+    onDoc() {
+      wx.navigateToMiniProgram({
+        appId: 'wxb05fa7b69aa7e5b7',
+        path: '/pages/md/index?title=' + this.properties.name + '&desc=' + this.properties.describe
+      });
+    }
+  }
+});

+ 4 - 0
components/content-title/index.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 9 - 0
components/content-title/index.wxml

@@ -0,0 +1,9 @@
+<view class="content-title">
+  <view class="content-name">{{name}}</view>
+  <view class="content-line"></view>
+  <view class="content-describe">{{describe}}</view>
+  <slot />
+  <view wx:if="{{doc}}" class="doc-container" bindtap="onDoc">
+    <image src='/images/doc.png' class='doc-img'></image>
+  </view>
+</view>

+ 60 - 0
components/content-title/index.wxss

@@ -0,0 +1,60 @@
+.content-title {
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  background: transparent;
+  box-sizing: border-box;
+  padding-bottom: 160rpx;
+}
+
+.content-name {
+  font-size: 36rpx;
+  font-family: PingFangSC-Regular;
+  font-weight: 400;
+  color: rgba(69, 82, 107, 1);
+  line-height: 50rpx;
+  margin-top: 22rpx;
+}
+
+.content-line {
+  width: 28rpx;
+  height: 6rpx;
+  background: rgba(69, 82, 107, 1);
+  border-radius: 2px;
+}
+
+.content-describe {
+  font-size: 24rpx;
+  font-family: PingFangSC-Regular;
+  font-weight: 400;
+  color: rgba(140, 152, 174, 1);
+  line-height: 24rpx;
+  margin-top: 6rpx;
+  margin-bottom: 22rpx
+}
+
+.doc-container{
+  position: fixed;
+  right: 40rpx;
+  bottom: 60rpx;
+  z-index: 2;
+  width: 100rpx;
+  height: 100rpx;
+  border-radius: 50%;
+  box-shadow:0px 3px 8px 0px rgba(155,193,185,0.5);
+  display: flex;
+  justify-content: center;
+  background-color: #fff;
+  align-items: center;
+}
+
+.doc-img{
+  width: 50rpx;
+  height:50rpx;
+}
+
+.doc-txt{
+  font-size: 28rpx;
+  color: #3963BC;
+  margin-top: 15rpx;
+}

+ 26 - 0
components/detail-navi-card/index.js

@@ -0,0 +1,26 @@
+// components/detail-navi-card/index.js
+Component({
+  /**
+   * 组件的属性列表
+   */
+  properties: {
+    componentsPath: String,
+    title: String,
+    desc: String,
+    icon: String
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {
+
+  },
+
+  /**
+   * 组件的方法列表
+   */
+  methods: {
+
+  }
+});

+ 4 - 0
components/detail-navi-card/index.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 13 - 0
components/detail-navi-card/index.wxml

@@ -0,0 +1,13 @@
+<!--components/detail-navi-card/index.wxml-->
+<navigator url="{{componentsPath}}">
+  <view class="detail-navi">
+    <view class="detail-left">
+      <image src="{{icon}}" class="detail-icon" />
+      <view class="detail-content">
+        <text class="detail-navi-name"> {{title}}</text>
+        <text class="detail-navi-desc"> {{desc}}</text>
+      </view>
+    </view>
+    <image class="navi-button" src="/images/right-arrow.png" />
+  </view>
+</navigator>

+ 50 - 0
components/detail-navi-card/index.wxss

@@ -0,0 +1,50 @@
+/* components/detail-navi-card/index.wxss */
+
+.detail-navi {
+  width: 690rpx;
+  height: 120rpx;
+  background: rgba(255, 255, 255, 1);
+  box-shadow: 0px 4rpx 16rpx 0px rgba(140, 160, 181, 0.2);
+  border-radius: 12rpx;
+  display: flex;
+  align-items: center;
+  padding:0 40rpx;
+  justify-content: space-between;
+  box-sizing: border-box;
+  margin-bottom: 30rpx;
+}
+
+.detail-left {
+  display: flex;
+  flex-direction: row;
+  align-items: center;
+}
+
+.detail-icon {
+  width: 48rpx;
+  height: 48rpx;
+}
+
+.detail-content {
+  display: flex;
+  flex-direction: column;
+  margin-left: 38rpx;
+}
+
+.detail-navi-name {
+  font-size:32rpx;
+font-weight:600;
+color:rgba(69,82,107,1);
+line-height:44rpx;
+}
+
+.detail-navi-desc {
+  font-size:24rpx;
+  color:rgba(140,152,174,1);
+  line-height:34rpx;
+}
+
+.navi-button {
+  width:32rpx;
+  height:24rpx;
+}

+ 25 - 0
components/navi-card/index.js

@@ -0,0 +1,25 @@
+// components/navi-card/index.js
+Component({
+  /**
+   * 组件的属性列表
+   */
+  properties: {
+    title:String,
+    icon:String,
+    navigatePath:String
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {
+
+  },
+
+  /**
+   * 组件的方法列表
+   */
+  methods: {
+
+  }
+});

+ 4 - 0
components/navi-card/index.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 5 - 0
components/navi-card/index.wxml

@@ -0,0 +1,5 @@
+<!--components/navi-card/index.wxml-->
+<view class="navi-card">
+  <image class="navi-icon" src="{{icon}}" />
+  <text>{{title}}</text>
+</view>

+ 24 - 0
components/navi-card/index.wxss

@@ -0,0 +1,24 @@
+/* components/navi-card/index.wxss */
+
+.navi-card {
+  width: 330rpx;
+  height: 240rpx;
+  background: rgba(255, 255, 255, 1);
+  box-shadow: 0px 8rpx 20rpx 0px rgba(9, 36, 66, 0.04);
+  border-radius: 8rpx;
+  display: flex;
+  flex-direction: column;
+  justify-content: center;
+  align-items: center;
+  font-size: 28rpx;
+  font-weight: 400;
+  color: rgba(89, 108, 142, 1);
+  line-height: 40rpx;
+  margin-top: 30rpx;
+}
+
+.navi-icon {
+  width: 66rpx;
+  height: 66rpx;
+  margin-bottom: 34rpx;
+}

+ 24 - 0
components/navi-content/index.js

@@ -0,0 +1,24 @@
+// components/navi-content/index.js
+Component({
+  /**
+   * 组件的属性列表
+   */
+  properties: {
+    config:Array,
+    title:String
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {
+
+  },
+
+  /**
+   * 组件的方法列表
+   */
+  methods: {
+
+  }
+});

+ 7 - 0
components/navi-content/index.json

@@ -0,0 +1,7 @@
+{
+  "component": true,
+  "usingComponents": {
+    "detail-navi-card": "/components/detail-navi-card/index",
+    "navi-title": "/components/navi-title/index"
+  }
+}

+ 15 - 0
components/navi-content/index.wxml

@@ -0,0 +1,15 @@
+<view class="container">
+  <view class="section">
+    <navi-title title="{{title}}" count="{{config.length}}"/>
+    <view class="section-content">
+      <detail-navi-card
+        wx:for="{{config}}"
+        wx:for-item="config"
+        wx:key="index"
+        icon="{{config.icon}}"
+        title="{{config.title}}"
+        componentsPath="{{config.componentsPath}}"
+        desc="{{config.desc}}"/>
+    </view>
+  </view>
+</view>

+ 21 - 0
components/navi-content/index.wxss

@@ -0,0 +1,21 @@
+.container {
+  min-height: 100vh;
+  min-width: 100vw;
+  box-sizing: border-box;
+}
+
+.section {
+  width: 100%;
+  height: 100%;
+  background: #fff;
+  border-radius: 8rpx 8rpx 0 0;
+  padding-bottom: 100rpx;
+  border-top: 20rpx solid #f7f7f7;
+}
+
+.section-content {
+  display: flex;
+  justify-content: center;
+  flex-direction: column;
+  align-items: center;
+}

+ 24 - 0
components/navi-title/index.js

@@ -0,0 +1,24 @@
+// components/navi-title/index.js
+Component({
+  /**
+   * 组件的属性列表
+   */
+  properties: {
+    title:String,
+    count:String
+  },
+
+  /**
+   * 组件的初始数据
+   */
+  data: {
+
+  },
+
+  /**
+   * 组件的方法列表
+   */
+  methods: {
+
+  }
+});

+ 4 - 0
components/navi-title/index.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 9 - 0
components/navi-title/index.wxml

@@ -0,0 +1,9 @@
+<view class='navi-title'>
+  <view class="title-left">
+    <view class="line"></view>
+    <text class="title-left-text">{{title}}</text>
+  </view>
+  <view class="count">
+    <text >{{count}}</text>
+  </view>
+</view>

+ 38 - 0
components/navi-title/index.wxss

@@ -0,0 +1,38 @@
+.navi-title {
+  display: flex;
+  justify-content: space-between;
+  width: 750rpx;
+  height: 100rpx;
+  align-items: center;
+  border-radius: 12rpx 12rpx 0 0 ;
+}
+
+.line {
+  width: 8rpx;
+  height: 28rpx;
+  background: #3963BC;
+  border-radius: 0px 6rpx 6rpx 0px;
+  margin-right: 22rpx;
+}
+
+.title-left {
+  display: flex;
+  align-items: center;
+}
+
+.title-left .title-left-text {
+  font-size: 28rpx;
+  color: #3683d6;
+}
+
+.count {
+  width: 44rpx;
+  height: 44rpx;
+  background: rgba(223, 237, 255, 1);
+  font-size: 28rpx;
+  color: #3963BC;
+  text-align: center;
+  margin-right: 32rpx;
+  line-height: 44rpx;
+  border-radius: 50%;
+}

+ 23 - 0
components/tabs-card/index.js

@@ -0,0 +1,23 @@
+// components/tabs-card/index.js
+Component({
+  /**
+   * Component properties
+   */
+  properties: {
+
+  },
+
+  /**
+   * Component initial data
+   */
+  data: {
+
+  },
+
+  /**
+   * Component methods
+   */
+  methods: {
+
+  }
+});

+ 4 - 0
components/tabs-card/index.json

@@ -0,0 +1,4 @@
+{
+  "component": true,
+  "usingComponents": {}
+}

+ 2 - 0
components/tabs-card/index.wxml

@@ -0,0 +1,2 @@
+<!--components/tabs-card/index.wxml-->
+<text>components/tabs-card/index.wxml</text>

+ 1 - 0
components/tabs-card/index.wxss

@@ -0,0 +1 @@
+/* components/tabs-card/index.wxss */

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/avatar/index.js


+ 1 - 0
dist/avatar/index.json

@@ -0,0 +1 @@
+{"component":true,"usingComponents":{"l-icon":"../icon/index"}  }

+ 12 - 0
dist/avatar/index.wxml

@@ -0,0 +1,12 @@
+
+<view class="l-avatar {{text||_isHaveUserNickName?'l-placement-'+placement:''}}" mut-bind:tap="tapAvatar">
+    <view class="l-avatar-image {{shape?'l-'+shape:''}} l-class" wx:if="{{_isHaveUserAvatarUrl||icon||src}}" style="width:{{size}}rpx;height:{{size}}rpx;min-width:{{size}}rpx;min-height:{{size}}rpx;">
+        <open-data class="open-data" wx:if="{{_isHaveUserAvatarUrl}}" type="userAvatarUrl"/>
+        <l-icon wx:elif="{{icon}}" size="{{iconSize || size*0.6}}" color="{{iconColor||'#ffffff'}}" name="{{icon}}"/>
+        <image wx:elif="{{src}}" src="{{src}}" mode="{{mode}}" style="width:{{size}}rpx;height:{{size}}rpx"/>
+    </view>
+    <view class="l-avatar-text l-class-text l-text-class" wx:if="{{text||_isHaveUserNickName}}">
+        <open-data class="open-data" wx:if="{{_isHaveUserNickName}}" type="userNickName"/>
+        <text class="l-avatar-text-text" wx:elif="{{text}}">{{text}}</text>
+    </view>
+</view>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/avatar/index.wxss


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/badge/index.js


+ 1 - 0
dist/badge/index.json

@@ -0,0 +1 @@
+{"component":true,"usingComponents":{}}

+ 7 - 0
dist/badge/index.wxml

@@ -0,0 +1,7 @@
+<view class="l-badge" mut-bind:tap="handleTap">
+  <slot/>
+  <block wx:if="{{show}}">
+    <view wx:if="{{dot}}" class="l-badge-dot l-class l-class-self l-self-class"></view>
+    <view wx:else class="{{'l-badge-content-'+shape}} l-badge-content l-class l-class-self l-self-class">{{finalCount}}</view>
+  </block>
+</view>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/badge/index.wxss


+ 1 - 0
dist/behaviors/computeOffset.js

@@ -0,0 +1 @@
+export default Behavior({behaviors:[],properties:{},data:{distance:0},attached(){this.offsetMargin()},methods:{offsetMargin(){const{windowHeight:t,screenHeight:e}=wx.getSystemInfoSync();this.setData({distance:e-t})}}});

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/behaviors/countdown.js


+ 1 - 0
dist/behaviors/hover.js

@@ -0,0 +1 @@
+export default Behavior({behaviors:[],properties:{isHover:{type:Boolean,value:!0}}});

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/behaviors/rules.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/behaviors/scrollCenter.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/behaviors/transition.js


+ 1 - 0
dist/behaviors/validator.js

@@ -0,0 +1 @@
+export default Behavior({definitionFilter(e){const{properties:o}=e;Object.keys(o).forEach(e=>{const{options:t}=o[e];t&&(o[e].observer=function(o){!t.includes(o)&&o&&console.error(`${e}: ${o} must be in the [${t}]`)})})}});

+ 1 - 0
dist/behaviors/watchShow.js

@@ -0,0 +1 @@
+export default Behavior({observers:{show:function(t){t&&this.changeStatus(),t||this.setData({status:t})}},methods:{changeStatus(){this.setData({status:!0}),this.data.timer&&clearTimeout(this.data.timer),this.data.timer=setTimeout(()=>{this.setData({status:!1}),this.data.success&&this.data.success(),this.data.timer=null},this.properties.duration)}}});

+ 1 - 0
dist/behaviors/zIndex.js

@@ -0,0 +1 @@
+export default Behavior({behaviors:[],properties:{zIndex:{type:Number,value:777}}});

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/button/index.js


+ 1 - 0
dist/button/index.json

@@ -0,0 +1 @@
+{"component":true,"usingComponents":{"l-icon":"../icon/index"}}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 16 - 0
dist/button/index.wxml


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/button/index.wxss


+ 1 - 0
dist/card/index.js

@@ -0,0 +1 @@
+import validator from"../behaviors/validator";Component({externalClasses:["l-class","l-img-class","l-title-class"],options:{multipleSlots:!0},behaviors:[validator],properties:{image:String,title:String,describe:String,plaintext:Boolean,full:Boolean,position:{type:String,value:"left",options:["left","right"]},type:{type:String,value:"primary",options:["primary","avatar","cover"]},imageMode:{type:String,value:"scaleToFill"}},data:{},methods:{}});

+ 1 - 0
dist/card/index.json

@@ -0,0 +1 @@
+{"component":true,"usingComponents":{}}

+ 22 - 0
dist/card/index.wxml

@@ -0,0 +1,22 @@
+<view class="l-class card-container {{'card-container-' + type}} {{'card-container-' + type + '-' + position}} {{full?'card-container-full':'card-container-unfull'}}">
+  <block wx:if="{{type ==='primary' || type ==='cover'}}">
+    <image wx:if="{{!plaintext}}" class="l-img-class {{full?'cover-img-full':'cover-img-unfull'}} {{ 'card-img-' + type }} {{ 'card-img-' + type + '-' + position }}" mode="{{imageMode}}" lazy-load src="{{image}}"></image>
+    <view class="card-content">
+      <text class="l-title-class card-title {{'card-title-' + type}}">{{title}}</text>
+      <slot/>
+    </view>
+  </block>
+  <block wx:if="{{type ==='avatar'}}">
+    <view class="card-avatar-top">
+      <view class="card-avatar-left">
+        <image mode="aspectFill" class="l-img-class {{ 'card-img-' + type }}" src="{{image}}" mode="{{imageMode}}" lazy-load></image>
+        <view class="card-avatar">
+          <text class="l-title-class card-title {{'card-title-' + type}}">{{title}}</text>
+          <text class="describe">{{describe}}</text>
+        </view>
+      </view>
+      <slot name="more"/>
+    </view>
+    <slot/>
+  </block>
+</view>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/card/index.wxss


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/combined-tabs/index.js


+ 1 - 0
dist/combined-tabs/index.json

@@ -0,0 +1 @@
+{"component":true,"usingComponents":{"l-icon":"../icon/index","l-badge":"../badge/index"}}

+ 44 - 0
dist/combined-tabs/index.wxml

@@ -0,0 +1,44 @@
+
+<view class="l-tabs l-placement-top l-tabs-horizontal {{aminmated ? 'l-aminmated' :''}} {{scrollable ? 'l-tabs-scroll':''}}">
+    <template is="tab-header" data="{{tab:tabList,placemanet,scrollable,transformY,transformX,activeKey,hasLine,activeColor,inactiveColor,headerType:'tab'}}"></template>
+    <view class="l-tabs l-sub-placement-left l-tabs-vertical {{aminmated ? 'l-aminmated' :''}} {{scrollable ? 'l-tabs-scroll':''}}">
+        <template is="tab-header" wx:if="{{tabList[currentIndex].subTabs.length}}" data="{{tab:tabList[currentIndex].subTabs,placemanet,scrollable,transformY,transformX,activeKey:tabList[currentIndex].activeSubKey,hasLine,activeColor,inactiveColor,headerType:'subTab'}}"></template>
+        <view class="l-tabs-main">
+            <view wx:if="{{!swipeable}}" class="l-tabpanel-content l-content-class">
+                <view class="l-tabpanel {{item.key===activeKey?'l-tabpanel-active':'l-tabpanel-inactive'}}" wx:for="{{tabList}}" wx:key="key" style="{{placement=='left'||placement=='right' ? 'position:absolute;width:100%;height:100%;transform:translate(0,'+ 100 * index +'%) translateZ(0px);':''}}">
+                    <view class="l-subpanel-content" wx:if="{{item.subTabs.length>0}}" style="{{'transform:translate(0,'+ -100 * item.subCurrentIndex +'%) translateZ(0px);'}}">
+                        <view class="l-subpanel" wx:for="{{item.subTabs}}" wx:for-item="tab" wx:key="key">
+                            <slot name="{{tab.key}}"></slot>
+                        </view>
+                    </view>
+                    <slot name="{{item.key}}" wx:else></slot>
+                </view>
+            </view>
+            <swiper wx:else class="l-tabpanel-content l-content-class" bindchange="swiperChange" current="{{currentIndex}}">
+                <swiper-item class="l-tabpanel {{item.key===activeKey?'l-tabpanel-active':''}}" wx:for="{{tabList}}" wx:key="key">
+                    <view wx:if="{{item.subTabs.length>0}}">
+                        <swiper class="" vertical bindchange="subSwiperChange" current="{{item.subCurrentIndex}}">
+                            <swiper-item wx:for="{{item.subTabs}}" wx:for-item="tab" wx:key="key">
+                                <slot name="{{tab.key}}"></slot>
+                            </swiper-item>
+                        </swiper>
+
+                    </view>
+                      <slot name="{{item.key}}" wx:else></slot>
+                </swiper-item>
+            </swiper>
+        </view>
+    </view>
+</view>
+<template name="tab-header">
+    <scroll-view scroll-x="{{headerType==='tab' && scrollable}}" scroll-y="{{headerType==='subTab' && scrollable}}" scroll-top="{{transformY}}" scroll-left="{{transformX}}" scroll-with-animation class="l-tabsscroll">
+        <view class="l-tabs-header l-class-header l-header-class {{hasLine?'l-tabs-header-line':''}}">
+            <view id="{{item.key}}" class="l-tabs-item {{item.key===activeKey ?'l-class-active l-active-class l-tabs-active':'l-class-inactive l-inactive-class l-tabs-inactive'}} {{'l-tab-image-placement-'+item.image.placement}}" style="color:{{item.key===activeKey?activeColor:inactiveColor}}" wx:for="{{tab}}" wx:key="key" data-key="{{item.key}}" data-index="{{index}}" data-header-type="{{headerType}}" mut-bind:tap="handleChange">
+                <image wx:if="{{ item.image.activeImage || item.image.defaultImage }}" src="{{item.key===activeKey? item.image.activeImage:item.image.defaultImage}}" class="l-tab-image l-class-tabimage l-tabimage-class"/>
+                <l-icon wx:if="{{item.icon}}" l-class="{{item.key===activeKey ? 'l-icon-active':'l-icon-inactive'}}" name="{{item.icon}}" size="28" color="{{item.key===activeKey?activeColor:inactiveColor}}"/>
+                {{item.tab}}
+                <view class="l-tab-line l-class-line l-line-class" wx:if="{{hasLine && item.key===activeKey}}" style="background:{{item.key===activeKey?activeColor:inactiveColor}}"></view>
+            </view>
+        </view>
+    </scroll-view>
+</template>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/combined-tabs/index.wxss


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/common/async-validator/index.js


تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/common/async-validator/messages.js


+ 1 - 0
dist/common/async-validator/rule/enum.js

@@ -0,0 +1 @@
+import*as util from"../util";const ENUM="enum";function enumerable(e,u,n,m,r){e.enum=Array.isArray(e.enum)?e.enum:[],-1===e.enum.indexOf(u)&&m.push(util.format(r.messages.enum,e.fullField,e.enum.join(", ")))}export default enumerable;

+ 1 - 0
dist/common/async-validator/rule/index.js

@@ -0,0 +1 @@
+import required from"./required.js";import whitespace from"./whitespace.js";import type from"./type.js";import range from"./range.js";import enumRule from"./enum.js";import pattern from"./pattern.js";export default{required:required,whitespace:whitespace,type:type,range:range,enum:enumRule,pattern:pattern};

+ 1 - 0
dist/common/async-validator/rule/pattern.js

@@ -0,0 +1 @@
+import*as util from"../util";function pattern(t,e,a,p,n){if(t.pattern)if(t.pattern instanceof RegExp)t.pattern.lastIndex=0,t.pattern.test(e)||p.push(util.format(n.messages.pattern.mismatch,t.fullField,e,t.pattern));else if("string"==typeof t.pattern){new RegExp(t.pattern.replace(/^\/|\/$/g,"")).test(e)||p.push(util.format(n.messages.pattern.mismatch,t.fullField,e,t.pattern))}}export default pattern;

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/common/async-validator/rule/range.js


+ 1 - 0
dist/common/async-validator/rule/required.js

@@ -0,0 +1 @@
+import*as util from"../util";function required(e,r,i,u,t,l){!e.required||i.hasOwnProperty(e.field)&&!util.isEmptyValue(r,l||e.type)||u.push(util.format(t.messages.required,e.fullField))}export default required;

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/common/async-validator/rule/type.js


+ 1 - 0
dist/common/async-validator/rule/whitespace.js

@@ -0,0 +1 @@
+import*as util from"../util";function whitespace(t,e,s,i,a){(/^\s+$/.test(e)||""===e)&&i.push(util.format(a.messages.whitespace,t.fullField))}export default whitespace;

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/common/async-validator/util.js


+ 1 - 0
dist/common/async-validator/validator/array.js

@@ -0,0 +1 @@
+import rules from"../rule/index.js";import{isEmptyValue}from"../util";function array(r,e,a,u,i){const t=[];if(r.required||!r.required&&u.hasOwnProperty(r.field)){if(isEmptyValue(e,"array")&&!r.required)return a();rules.required(r,e,u,t,i,"array"),isEmptyValue(e,"array")||(rules.type(r,e,u,t,i),rules.range(r,e,u,t,i))}a(t)}export default array;

+ 1 - 0
dist/common/async-validator/validator/boolean.js

@@ -0,0 +1 @@
+import{isEmptyValue}from"../util";import rules from"../rule/index.js";function boolean(e,r,i,u,o){const t=[];if(e.required||!e.required&&u.hasOwnProperty(e.field)){if(isEmptyValue(r)&&!e.required)return i();rules.required(e,r,u,t,o),void 0!==r&&rules.type(e,r,u,t,o)}i(t)}export default boolean;

+ 1 - 0
dist/common/async-validator/validator/date.js

@@ -0,0 +1 @@
+import rules from"../rule/index.js";import{isEmptyValue}from"../util";function date(e,r,t,i,u){const l=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(isEmptyValue(r)&&!e.required)return t();if(rules.required(e,r,i,l,u),!isEmptyValue(r)){let t;t="number"==typeof r?new Date(r):r,rules.type(e,t,i,l,u),t&&rules.range(e,t.getTime(),i,l,u)}}t(l)}export default date;

+ 1 - 0
dist/common/async-validator/validator/enum.js

@@ -0,0 +1 @@
+import rules from"../rule/index.js";import{isEmptyValue}from"../util";const ENUM="enum";function enumerable(e,r,u,i,t){const l=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(isEmptyValue(r)&&!e.required)return u();rules.required(e,r,i,l,t),r&&rules.enum(e,r,i,l,t)}u(l)}export default enumerable;

+ 1 - 0
dist/common/async-validator/validator/float.js

@@ -0,0 +1 @@
+import rules from"../rule/index.js";import{isEmptyValue}from"../util";function floatFn(e,r,i,u,t){const l=[];if(e.required||!e.required&&u.hasOwnProperty(e.field)){if(isEmptyValue(r)&&!e.required)return i();rules.required(e,r,u,l,t),void 0!==r&&(rules.type(e,r,u,l,t),rules.range(e,r,u,l,t))}i(l)}export default floatFn;

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/common/async-validator/validator/index.js


+ 1 - 0
dist/common/async-validator/validator/integer.js

@@ -0,0 +1 @@
+import rules from"../rule/index.js";import{isEmptyValue}from"../util";function integer(e,r,i,u,t){const l=[];if(e.required||!e.required&&u.hasOwnProperty(e.field)){if(isEmptyValue(r)&&!e.required)return i();rules.required(e,r,u,l,t),void 0!==r&&(rules.type(e,r,u,l,t),rules.range(e,r,u,l,t))}i(l)}export default integer;

+ 1 - 0
dist/common/async-validator/validator/method.js

@@ -0,0 +1 @@
+import rules from"../rule/index.js";import{isEmptyValue}from"../util";function method(e,r,i,t,u){const o=[];if(e.required||!e.required&&t.hasOwnProperty(e.field)){if(isEmptyValue(r)&&!e.required)return i();rules.required(e,r,t,o,u),void 0!==r&&rules.type(e,r,t,o,u)}i(o)}export default method;

+ 1 - 0
dist/common/async-validator/validator/number.js

@@ -0,0 +1 @@
+import rules from"../rule/index.js";import{isEmptyValue}from"../util";function number(e,r,u,i,t){const l=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(isEmptyValue(r)&&!e.required)return u();rules.required(e,r,i,l,t),void 0!==r&&(rules.type(e,r,i,l,t),rules.range(e,r,i,l,t))}u(l)}export default number;

+ 1 - 0
dist/common/async-validator/validator/object.js

@@ -0,0 +1 @@
+import rules from"../rule/index.js";import{isEmptyValue}from"../util";function object(e,r,i,t,u){const o=[];if(e.required||!e.required&&t.hasOwnProperty(e.field)){if(isEmptyValue(r)&&!e.required)return i();rules.required(e,r,t,o,u),void 0!==r&&rules.type(e,r,t,o,u)}i(o)}export default object;

+ 1 - 0
dist/common/async-validator/validator/pattern.js

@@ -0,0 +1 @@
+import rules from"../rule/index.js";import{isEmptyValue}from"../util";function pattern(r,e,t,i,u){const n=[];if(r.required||!r.required&&i.hasOwnProperty(r.field)){if(isEmptyValue(e,"string")&&!r.required)return t();rules.required(r,e,i,n,u),isEmptyValue(e,"string")||rules.pattern(r,e,i,n,u)}t(n)}export default pattern;

+ 1 - 0
dist/common/async-validator/validator/regexp.js

@@ -0,0 +1 @@
+import rules from"../rule/index.js";import{isEmptyValue}from"../util";function regexp(e,r,i,u,t){const l=[];if(e.required||!e.required&&u.hasOwnProperty(e.field)){if(isEmptyValue(r)&&!e.required)return i();rules.required(e,r,u,l,t),isEmptyValue(r)||rules.type(e,r,u,l,t)}i(l)}export default regexp;

+ 1 - 0
dist/common/async-validator/validator/required.js

@@ -0,0 +1 @@
+import rules from"../rule/index.js";function required(r,e,u,i,o){const t=[],a=Array.isArray(e)?"array":typeof e;rules.required(r,e,i,t,o,a),u(t)}export default required;

+ 1 - 0
dist/common/async-validator/validator/string.js

@@ -0,0 +1 @@
+import rules from"../rule/index.js";import{isEmptyValue}from"../util";function string(e,r,i,t,s){const u=[];if(e.required||!e.required&&t.hasOwnProperty(e.field)){if(isEmptyValue(r,"string")&&!e.required)return i();rules.required(e,r,t,u,s,"string"),isEmptyValue(r,"string")||(rules.type(e,r,t,u,s),rules.range(e,r,t,u,s),rules.pattern(e,r,t,u,s),!0===e.whitespace&&rules.whitespace(e,r,t,u,s))}i(u)}export default string;

+ 1 - 0
dist/common/async-validator/validator/type.js

@@ -0,0 +1 @@
+import rules from"../rule/index.js";import{isEmptyValue}from"../util";function type(e,r,t,i,u){const p=e.type,l=[];if(e.required||!e.required&&i.hasOwnProperty(e.field)){if(isEmptyValue(r,p)&&!e.required)return t();rules.required(e,r,i,l,u,p),isEmptyValue(r,p)||rules.type(e,r,i,l,u)}t(l)}export default type;

+ 1 - 0
dist/core/utils/data-util.js

@@ -0,0 +1 @@
+class DataUtil{setDiffData(t,a){const e={};Object.keys(a).forEach(s=>{t.data[s]!==a[s]&&(e[s]=a[s])}),Object.keys(e).length&&t.setData(e)}}const dataUtil=new DataUtil;export default dataUtil;

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/core/utils/event-bus.js


+ 1 - 0
dist/core/utils/event-util.js

@@ -0,0 +1 @@
+class EventUtil{emit(e,t,l){e.triggerEvent(t,l,{bubbles:!0,composed:!0,capturePhase:!0})}}const eventUtil=new EventUtil;export default eventUtil;

+ 1 - 0
dist/core/utils/node-util.js

@@ -0,0 +1 @@
+class NodeUtil{async getNodeRectFromComponent(e,t){return await new Promise(o=>{e.createSelectorQuery().select(t).boundingClientRect(e=>{o(e)}).exec()})}async getNodesRectFromComponent(e,t){return await new Promise(o=>{e.createSelectorQuery().selectAll(t).boundingClientRect(e=>{o(e)}).exec()})}async getNodeFieldsFromComponent(e,t,o){return await new Promise(n=>{e.createSelectorQuery().select(t).fields(o,e=>{n(e)}).exec()})}}const nodeUtil=new NodeUtil;export default nodeUtil;

+ 1 - 0
dist/core/utils/pixel-util.js

@@ -0,0 +1 @@
+class PixelUtil{constructor(t){this.systemInfo=t}px2rpx(t){return 750/this.systemInfo.screenWidth*t}rpx2px(t){return t/750*this.systemInfo.screenWidth}}const pixelUtil=new PixelUtil(wx.getSystemInfoSync());export default pixelUtil;

+ 1 - 0
dist/error-tip/index.js

@@ -0,0 +1 @@
+Component({externalClasses:["l-error-text","l-error-text-class"],properties:{errorText:String},data:{},methods:{}});

+ 1 - 0
dist/error-tip/index.json

@@ -0,0 +1 @@
+{"component":true,"usingComponents":{}  }

+ 1 - 0
dist/error-tip/index.wxml

@@ -0,0 +1 @@
+<view class="error-text l-error-text l-error-text-class" wx:if="{{errorText}}">{{errorText}}</view>

+ 1 - 0
dist/error-tip/index.wxss

@@ -0,0 +1 @@
+.error-text{font-size:22rpx;color:#f4516c;margin-right:20rpx;line-height:2}

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 1 - 0
dist/grid-item/index.js


+ 0 - 0
dist/grid-item/index.json


برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است