Joe 4 سال پیش
کامیت
cd5acfe35a
100فایلهای تغییر یافته به همراه3671 افزوده شده و 0 حذف شده
  1. 41 0
      api/home.js
  2. 81 0
      app.js
  3. 44 0
      app.json
  4. 16 0
      app.wxss
  5. 64 0
      miniprogram_npm/@vant/weapp/action-sheet/index.js
  6. 8 0
      miniprogram_npm/@vant/weapp/action-sheet/index.json
  7. 69 0
      miniprogram_npm/@vant/weapp/action-sheet/index.wxml
  8. 0 0
      miniprogram_npm/@vant/weapp/action-sheet/index.wxss
  9. 263 0
      miniprogram_npm/@vant/weapp/area/index.js
  10. 6 0
      miniprogram_npm/@vant/weapp/area/index.json
  11. 20 0
      miniprogram_npm/@vant/weapp/area/index.wxml
  12. 8 0
      miniprogram_npm/@vant/weapp/area/index.wxs
  13. 1 0
      miniprogram_npm/@vant/weapp/area/index.wxss
  14. 60 0
      miniprogram_npm/@vant/weapp/button/index.js
  15. 7 0
      miniprogram_npm/@vant/weapp/button/index.json
  16. 53 0
      miniprogram_npm/@vant/weapp/button/index.wxml
  17. 39 0
      miniprogram_npm/@vant/weapp/button/index.wxs
  18. 0 0
      miniprogram_npm/@vant/weapp/button/index.wxss
  19. 57 0
      miniprogram_npm/@vant/weapp/calendar/calendar.wxml
  20. 18 0
      miniprogram_npm/@vant/weapp/calendar/components/header/index.js
  21. 3 0
      miniprogram_npm/@vant/weapp/calendar/components/header/index.json
  22. 16 0
      miniprogram_npm/@vant/weapp/calendar/components/header/index.wxml
  23. 1 0
      miniprogram_npm/@vant/weapp/calendar/components/header/index.wxss
  24. 167 0
      miniprogram_npm/@vant/weapp/calendar/components/month/index.js
  25. 3 0
      miniprogram_npm/@vant/weapp/calendar/components/month/index.json
  26. 39 0
      miniprogram_npm/@vant/weapp/calendar/components/month/index.wxml
  27. 67 0
      miniprogram_npm/@vant/weapp/calendar/components/month/index.wxs
  28. 0 0
      miniprogram_npm/@vant/weapp/calendar/components/month/index.wxss
  29. 325 0
      miniprogram_npm/@vant/weapp/calendar/index.js
  30. 10 0
      miniprogram_npm/@vant/weapp/calendar/index.json
  31. 31 0
      miniprogram_npm/@vant/weapp/calendar/index.wxml
  32. 37 0
      miniprogram_npm/@vant/weapp/calendar/index.wxs
  33. 1 0
      miniprogram_npm/@vant/weapp/calendar/index.wxss
  34. 91 0
      miniprogram_npm/@vant/weapp/calendar/utils.js
  35. 25 0
      miniprogram_npm/@vant/weapp/calendar/utils.wxs
  36. 51 0
      miniprogram_npm/@vant/weapp/card/index.js
  37. 6 0
      miniprogram_npm/@vant/weapp/card/index.json
  38. 56 0
      miniprogram_npm/@vant/weapp/card/index.wxml
  39. 0 0
      miniprogram_npm/@vant/weapp/card/index.wxss
  40. 12 0
      miniprogram_npm/@vant/weapp/cell-group/index.js
  41. 3 0
      miniprogram_npm/@vant/weapp/cell-group/index.json
  42. 9 0
      miniprogram_npm/@vant/weapp/cell-group/index.wxml
  43. 1 0
      miniprogram_npm/@vant/weapp/cell-group/index.wxss
  44. 40 0
      miniprogram_npm/@vant/weapp/cell/index.js
  45. 6 0
      miniprogram_npm/@vant/weapp/cell/index.json
  46. 45 0
      miniprogram_npm/@vant/weapp/cell/index.wxml
  47. 0 0
      miniprogram_npm/@vant/weapp/cell/index.wxss
  48. 42 0
      miniprogram_npm/@vant/weapp/checkbox-group/index.js
  49. 3 0
      miniprogram_npm/@vant/weapp/checkbox-group/index.json
  50. 1 0
      miniprogram_npm/@vant/weapp/checkbox-group/index.wxml
  51. 1 0
      miniprogram_npm/@vant/weapp/checkbox-group/index.wxss
  52. 83 0
      miniprogram_npm/@vant/weapp/checkbox/index.js
  53. 6 0
      miniprogram_npm/@vant/weapp/checkbox/index.json
  54. 20 0
      miniprogram_npm/@vant/weapp/checkbox/index.wxml
  55. 20 0
      miniprogram_npm/@vant/weapp/checkbox/index.wxs
  56. 1 0
      miniprogram_npm/@vant/weapp/checkbox/index.wxss
  57. 47 0
      miniprogram_npm/@vant/weapp/circle/canvas.js
  58. 210 0
      miniprogram_npm/@vant/weapp/circle/index.js
  59. 3 0
      miniprogram_npm/@vant/weapp/circle/index.json
  60. 9 0
      miniprogram_npm/@vant/weapp/circle/index.wxml
  61. 1 0
      miniprogram_npm/@vant/weapp/circle/index.wxss
  62. 28 0
      miniprogram_npm/@vant/weapp/col/index.js
  63. 3 0
      miniprogram_npm/@vant/weapp/col/index.json
  64. 8 0
      miniprogram_npm/@vant/weapp/col/index.wxml
  65. 1 0
      miniprogram_npm/@vant/weapp/col/index.wxss
  66. 77 0
      miniprogram_npm/@vant/weapp/collapse-item/animate.js
  67. 71 0
      miniprogram_npm/@vant/weapp/collapse-item/index.js
  68. 6 0
      miniprogram_npm/@vant/weapp/collapse-item/index.json
  69. 44 0
      miniprogram_npm/@vant/weapp/collapse-item/index.wxml
  70. 1 0
      miniprogram_npm/@vant/weapp/collapse-item/index.wxss
  71. 53 0
      miniprogram_npm/@vant/weapp/collapse/index.js
  72. 3 0
      miniprogram_npm/@vant/weapp/collapse/index.json
  73. 3 0
      miniprogram_npm/@vant/weapp/collapse/index.wxml
  74. 1 0
      miniprogram_npm/@vant/weapp/collapse/index.wxss
  75. 10 0
      miniprogram_npm/@vant/weapp/common/color.js
  76. 123 0
      miniprogram_npm/@vant/weapp/common/component.js
  77. 1 0
      miniprogram_npm/@vant/weapp/common/index.wxss
  78. 1 0
      miniprogram_npm/@vant/weapp/common/style/clearfix.wxss
  79. 1 0
      miniprogram_npm/@vant/weapp/common/style/ellipsis.wxss
  80. 1 0
      miniprogram_npm/@vant/weapp/common/style/hairline.wxss
  81. 0 0
      miniprogram_npm/@vant/weapp/common/style/mixins/clearfix.wxss
  82. 0 0
      miniprogram_npm/@vant/weapp/common/style/mixins/ellipsis.wxss
  83. 0 0
      miniprogram_npm/@vant/weapp/common/style/mixins/hairline.wxss
  84. 0 0
      miniprogram_npm/@vant/weapp/common/style/theme.wxss
  85. 0 0
      miniprogram_npm/@vant/weapp/common/style/var.wxss
  86. 108 0
      miniprogram_npm/@vant/weapp/common/utils.js
  87. 42 0
      miniprogram_npm/@vant/weapp/common/validator.js
  88. 50 0
      miniprogram_npm/@vant/weapp/common/version.js
  89. 103 0
      miniprogram_npm/@vant/weapp/count-down/index.js
  90. 3 0
      miniprogram_npm/@vant/weapp/count-down/index.json
  91. 4 0
      miniprogram_npm/@vant/weapp/count-down/index.wxml
  92. 1 0
      miniprogram_npm/@vant/weapp/count-down/index.wxss
  93. 65 0
      miniprogram_npm/@vant/weapp/count-down/utils.js
  94. 381 0
      miniprogram_npm/@vant/weapp/datetime-picker/index.js
  95. 6 0
      miniprogram_npm/@vant/weapp/datetime-picker/index.json
  96. 16 0
      miniprogram_npm/@vant/weapp/datetime-picker/index.wxml
  97. 1 0
      miniprogram_npm/@vant/weapp/datetime-picker/index.wxss
  98. 2 0
      miniprogram_npm/@vant/weapp/definitions/index.js
  99. 2 0
      miniprogram_npm/@vant/weapp/definitions/weapp.js
  100. 104 0
      miniprogram_npm/@vant/weapp/dialog/dialog.js

+ 41 - 0
api/home.js

@@ -0,0 +1,41 @@
+/**
+ * Copyright © 2020 suxinghua. All rights Reserved.
+ */
+import {
+  mGet,
+  mPost
+} from "../utils/request/xhr";
+//定义接口前缀:demo-演示版  api-正式版
+const prefix='demo';
+//获取油站列表方法
+const getStationList = (params) => mGet("/"+prefix+"/getStationInfoList", params);
+//获取油枪list方法
+const getOilGunList = (params) => mGet("/"+prefix+"/stationOilGunList", params);
+//根据code获取openid方法
+const getMpOpenId = (params) => mGet("/"+prefix+"/getSessionKeyAndOpenID", params);
+//调用后台生成订单方法
+const postOrderInfo = (params) => mPost("/"+prefix+"/AddPayOrderInfo", params);
+//确认订单信息方法
+const confirmOrder = (params) => mGet("/"+prefix+"/getPayOrderList", params);
+//聚合支付信息获取方法
+const getJhPayInfo = (params) => mPost("/"+prefix+"/getJhPayInfo", params);
+//保存app用户信息
+const saveAppUserInfo = (params) => mPost("/"+prefix+"/addAppUserInfo", params);
+//获取手机号解密
+const decryptEncryptedData = (params) => mPost("/"+prefix+"/decryptEncryptedData", params);
+//获取优惠信息
+const getCustomerGradeList = (params) => mGet("/"+prefix+"/getCustomerGradeList", params);
+//获取优惠信息-直降、立减、满减方案
+const getCustomerGradeInfo = (params) => mPost("/"+prefix+"/getCustomerGradeInfo", params);
+export {
+  getStationList,
+  getOilGunList,
+  getMpOpenId,
+  postOrderInfo,
+  confirmOrder,
+  getJhPayInfo,
+  saveAppUserInfo,
+  decryptEncryptedData,
+  getCustomerGradeList,
+  getCustomerGradeInfo
+};

+ 81 - 0
app.js

@@ -0,0 +1,81 @@
+//app.js
+import {
+  getMpOpenId
+} from "api/home"
+App({
+  onLaunch: function () {
+    // 展示本地存储能力
+    var logs = wx.getStorageSync('logs') || []
+    logs.unshift(Date.now())
+    wx.setStorageSync('logs', logs)
+
+    // 登录
+    wx.login({
+      success: res => {
+        // console.log("code:"+res.code);
+        
+
+        let code = res.code;
+        // console.log("app.js code="+res.code);
+        // 发送 res.code 到后台换取 openId, sessionKey, unionId
+        getMpOpenId({
+          code: code,
+          stationId:1
+        }).then(res => { // handle success
+          // console.log("app.js openid:"+res.openid);
+
+          // console.log("app.js unoiid " + res.unionid)
+          this.mpOpenId = res.openid;
+          this.globalData.unionId = res.unionId
+          this.unionId = res.unionid
+          // console.log(this.globalData)
+          // console.log(this)
+        }).catch(error => { // handle error
+          console.log(error);
+        })
+      }
+    })
+    // 获取用户信息
+    wx.getSetting({
+      success: res => {
+        if (res.authSetting['scope.userInfo']) {
+          // 已经授权,可以直接调用 getUserInfo 获取头像昵称,不会弹框
+          wx.getUserInfo({
+            success: res => {
+              // 可以将 res 发送给后台解码出 unionId
+              this.globalData.userInfo = res.userInfo
+              // 由于 getUserInfo 是网络请求,可能会在 Page.onLoad 之后才返回
+              // 所以此处加入 callback 以防止这种情况
+              if (this.userInfoReadyCallback) {
+                this.userInfoReadyCallback(res)
+              }
+            }
+          })
+        }
+      }
+    })
+  },
+
+  globalData: {
+    mpVersion:null,//小程序当前是开发版?体验版?正式版?
+    userInfo: null, //用户信息
+    phoneNumber:null,//用户手机号
+    mpOpenId: null,
+    unionId:null,
+    appId:'wxe1135cd390b38a54',//小程序的appid
+    stationId: null, //加油站ID
+    stationName: null, //油站名称
+    picUrl: null, //油站图片URL
+    mno: null, //油站绑定的商户号
+    oilGunNum: null, //油枪号
+    oilGunName: null, //油品名
+    oilPrice: null, //油品价格
+    orderNo: null, //订单号
+    orderAmount: null, //订单金额
+    manJianAmount: null, //满减金额
+    liJianAmount: null, //立减金额
+    youHuiAmount: null, //优惠券金额
+    payAmount: null //实付金额
+  }
+
+})

+ 44 - 0
app.json

@@ -0,0 +1,44 @@
+{
+  "pages": [
+    "pages/gasup/index",
+    "pages/logs/logs",
+    "pages/orders/myorder",
+    "pages/order/create",
+    "pages/order/confirm",
+    "pages/order/success"
+  ],
+  "permission": {
+    "scope.userLocation": {
+      "desc": "您的位置信息将用于小程序位置接口的效果展示"
+    }
+  },
+  "window": {
+    "backgroundTextStyle": "light",
+    "navigationBarBackgroundColor": "#12A273",
+    "navigationBarTitleText": "油站列表",
+    "navigationBarTextStyle": "white",
+    "backgroundColor": "#eeeeee"
+  },
+  "tabBar": {
+    "color": "#999",
+    "backgroundColor": "#fafafa",
+    "selectedColor": "#333",
+    "borderStyle": "white",
+    "list": [
+      {
+        "text": "油站",
+        "pagePath": "pages/gasup/index",
+        "iconPath": "static/tabs/home.png",
+        "selectedIconPath": "static/tabs/home-active.png"
+      },
+      {
+        "text": "订单",
+        "pagePath": "pages/orders/myorder",
+        "iconPath": "static/tabs/orders.png",
+        "selectedIconPath": "static/tabs/orders-active.png"
+      }
+    ],
+    "position": "bottom"
+  },
+  "sitemapLocation": "sitemap.json"
+}

+ 16 - 0
app.wxss

@@ -0,0 +1,16 @@
+/**app.wxss**/
+
+.container {
+  height: 100%;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  justify-content: space-between;
+  padding: 200rpx 0;
+  box-sizing: border-box;
+} 
+page {
+  font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Helvetica,
+    Segoe UI, Arial, Roboto, 'PingFang SC', 'miui', 'Hiragino Sans GB', 'Microsoft Yahei',
+    sans-serif;
+}

+ 64 - 0
miniprogram_npm/@vant/weapp/action-sheet/index.js

@@ -0,0 +1,64 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var component_1 = require('../common/component');
+var button_1 = require('../mixins/button');
+var open_type_1 = require('../mixins/open-type');
+component_1.VantComponent({
+  mixins: [button_1.button, open_type_1.openType],
+  props: {
+    show: Boolean,
+    title: String,
+    cancelText: String,
+    description: String,
+    round: {
+      type: Boolean,
+      value: true,
+    },
+    zIndex: {
+      type: Number,
+      value: 100,
+    },
+    actions: {
+      type: Array,
+      value: [],
+    },
+    overlay: {
+      type: Boolean,
+      value: true,
+    },
+    closeOnClickOverlay: {
+      type: Boolean,
+      value: true,
+    },
+    closeOnClickAction: {
+      type: Boolean,
+      value: true,
+    },
+    safeAreaInsetBottom: {
+      type: Boolean,
+      value: true,
+    },
+  },
+  methods: {
+    onSelect: function (event) {
+      var index = event.currentTarget.dataset.index;
+      var item = this.data.actions[index];
+      if (item && !item.disabled && !item.loading) {
+        this.$emit('select', item);
+        if (this.data.closeOnClickAction) {
+          this.onClose();
+        }
+      }
+    },
+    onCancel: function () {
+      this.$emit('cancel');
+    },
+    onClose: function () {
+      this.$emit('close');
+    },
+    onClickOverlay: function () {
+      this.$emit('click-overlay');
+      this.onClose();
+    },
+  },
+});

+ 8 - 0
miniprogram_npm/@vant/weapp/action-sheet/index.json

@@ -0,0 +1,8 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-icon": "../icon/index",
+    "van-popup": "../popup/index",
+    "van-loading": "../loading/index"
+  }
+}

+ 69 - 0
miniprogram_npm/@vant/weapp/action-sheet/index.wxml

@@ -0,0 +1,69 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<van-popup
+  show="{{ show }}"
+  position="bottom"
+  round="{{ round }}"
+  z-index="{{ zIndex }}"
+  overlay="{{ overlay }}"
+  custom-class="van-action-sheet"
+  safe-area-inset-bottom="{{ safeAreaInsetBottom }}"
+  close-on-click-overlay="{{ closeOnClickOverlay }}"
+  bind:close="onClickOverlay"
+>
+  <view wx:if="{{ title }}" class="van-action-sheet__header">
+    {{ title }}
+    <van-icon
+      name="cross"
+      custom-class="van-action-sheet__close"
+      bind:click="onClose"
+    />
+  </view>
+  <view wx:if="{{ description }}" class="van-action-sheet__description van-hairline--bottom">
+    {{ description }}
+  </view>
+  <view wx:if="{{ actions && actions.length }}">
+    <!-- button外包一层view,防止actions动态变化,导致渲染时button被打散 -->
+    <button
+      wx:for="{{ actions }}"
+      wx:key="index"
+      open-type="{{ item.openType }}"
+      style="{{ item.color ? 'color: ' + item.color : '' }}"
+      class="{{ utils.bem('action-sheet__item', { disabled: item.disabled || item.loading }) }} {{ item.className || '' }}"
+      hover-class="van-action-sheet__item--hover"
+      data-index="{{ index }}"
+      bind:tap="onSelect"
+      bindgetuserinfo="bindGetUserInfo"
+      bindcontact="bindContact"
+      bindgetphonenumber="bindGetPhoneNumber"
+      binderror="bindError"
+      bindlaunchapp="bindLaunchApp"
+      bindopensetting="bindOpenSetting"
+      lang="{{ lang }}"
+      session-from="{{ sessionFrom }}"
+      send-message-title="{{ sendMessageTitle }}"
+      send-message-path="{{ sendMessagePath }}"
+      send-message-img="{{ sendMessageImg }}"
+      show-message-card="{{ showMessageCard }}"
+      app-parameter="{{ appParameter }}"
+    >
+      <block wx:if="{{ !item.loading }}">
+        {{ item.name }}
+        <view wx:if="{{ item.subname }}" class="van-action-sheet__subname" >{{ item.subname }}</view>
+      </block>
+      <van-loading wx:else custom-class="van-action-sheet__loading" size="22px" />
+    </button>
+  </view>
+  <slot />
+  <block wx:if="{{ cancelText }}">
+    <view class="van-action-sheet__gap" />
+    <view
+      class="van-action-sheet__cancel"
+      hover-class="van-action-sheet__cancel--hover"
+      hover-stay-time="70"
+      bind:tap="onCancel"
+    >
+      {{ cancelText }}
+    </view>
+  </block>
+</van-popup>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
miniprogram_npm/@vant/weapp/action-sheet/index.wxss


+ 263 - 0
miniprogram_npm/@vant/weapp/area/index.js

@@ -0,0 +1,263 @@
+'use strict';
+var __assign =
+  (this && this.__assign) ||
+  function () {
+    __assign =
+      Object.assign ||
+      function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+          s = arguments[i];
+          for (var p in s)
+            if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+      };
+    return __assign.apply(this, arguments);
+  };
+Object.defineProperty(exports, '__esModule', { value: true });
+var component_1 = require('../common/component');
+var shared_1 = require('../picker/shared');
+var utils_1 = require('../common/utils');
+var EMPTY_CODE = '000000';
+component_1.VantComponent({
+  classes: ['active-class', 'toolbar-class', 'column-class'],
+  props: __assign(__assign({}, shared_1.pickerProps), {
+    value: {
+      type: String,
+      observer: function (value) {
+        this.code = value;
+        this.setValues();
+      },
+    },
+    areaList: {
+      type: Object,
+      value: {},
+      observer: 'setValues',
+    },
+    columnsNum: {
+      type: null,
+      value: 3,
+    },
+    columnsPlaceholder: {
+      type: Array,
+      observer: function (val) {
+        this.setData({
+          typeToColumnsPlaceholder: {
+            province: val[0] || '',
+            city: val[1] || '',
+            county: val[2] || '',
+          },
+        });
+      },
+    },
+  }),
+  data: {
+    columns: [{ values: [] }, { values: [] }, { values: [] }],
+    typeToColumnsPlaceholder: {},
+  },
+  mounted: function () {
+    var _this = this;
+    utils_1.requestAnimationFrame(function () {
+      _this.setValues();
+    });
+  },
+  methods: {
+    getPicker: function () {
+      if (this.picker == null) {
+        this.picker = this.selectComponent('.van-area__picker');
+      }
+      return this.picker;
+    },
+    onCancel: function (event) {
+      this.emit('cancel', event.detail);
+    },
+    onConfirm: function (event) {
+      var index = event.detail.index;
+      var value = event.detail.value;
+      value = this.parseValues(value);
+      this.emit('confirm', { value: value, index: index });
+    },
+    emit: function (type, detail) {
+      detail.values = detail.value;
+      delete detail.value;
+      this.$emit(type, detail);
+    },
+    parseValues: function (values) {
+      var columnsPlaceholder = this.data.columnsPlaceholder;
+      return values.map(function (value, index) {
+        if (
+          value &&
+          (!value.code || value.name === columnsPlaceholder[index])
+        ) {
+          return __assign(__assign({}, value), { code: '', name: '' });
+        }
+        return value;
+      });
+    },
+    onChange: function (event) {
+      var _this = this;
+      var _a = event.detail,
+        index = _a.index,
+        picker = _a.picker,
+        value = _a.value;
+      this.code = value[index].code;
+      this.setValues().then(function () {
+        _this.$emit('change', {
+          picker: picker,
+          values: _this.parseValues(picker.getValues()),
+          index: index,
+        });
+      });
+    },
+    getConfig: function (type) {
+      var areaList = this.data.areaList;
+      return (areaList && areaList[type + '_list']) || {};
+    },
+    getList: function (type, code) {
+      if (type !== 'province' && !code) {
+        return [];
+      }
+      var typeToColumnsPlaceholder = this.data.typeToColumnsPlaceholder;
+      var list = this.getConfig(type);
+      var result = Object.keys(list).map(function (code) {
+        return {
+          code: code,
+          name: list[code],
+        };
+      });
+      if (code != null) {
+        // oversea code
+        if (code[0] === '9' && type === 'city') {
+          code = '9';
+        }
+        result = result.filter(function (item) {
+          return item.code.indexOf(code) === 0;
+        });
+      }
+      if (typeToColumnsPlaceholder[type] && result.length) {
+        // set columns placeholder
+        var codeFill =
+          type === 'province'
+            ? ''
+            : type === 'city'
+            ? EMPTY_CODE.slice(2, 4)
+            : EMPTY_CODE.slice(4, 6);
+        result.unshift({
+          code: '' + code + codeFill,
+          name: typeToColumnsPlaceholder[type],
+        });
+      }
+      return result;
+    },
+    getIndex: function (type, code) {
+      var compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6;
+      var list = this.getList(type, code.slice(0, compareNum - 2));
+      // oversea code
+      if (code[0] === '9' && type === 'province') {
+        compareNum = 1;
+      }
+      code = code.slice(0, compareNum);
+      for (var i = 0; i < list.length; i++) {
+        if (list[i].code.slice(0, compareNum) === code) {
+          return i;
+        }
+      }
+      return 0;
+    },
+    setValues: function () {
+      var picker = this.getPicker();
+      if (!picker) {
+        return;
+      }
+      var code = this.code || this.getDefaultCode();
+      var provinceList = this.getList('province');
+      var cityList = this.getList('city', code.slice(0, 2));
+      var stack = [];
+      var indexes = [];
+      var columnsNum = this.data.columnsNum;
+      if (columnsNum >= 1) {
+        stack.push(picker.setColumnValues(0, provinceList, false));
+        indexes.push(this.getIndex('province', code));
+      }
+      if (columnsNum >= 2) {
+        stack.push(picker.setColumnValues(1, cityList, false));
+        indexes.push(this.getIndex('city', code));
+        if (cityList.length && code.slice(2, 4) === '00') {
+          code = cityList[0].code;
+        }
+      }
+      if (columnsNum === 3) {
+        stack.push(
+          picker.setColumnValues(
+            2,
+            this.getList('county', code.slice(0, 4)),
+            false
+          )
+        );
+        indexes.push(this.getIndex('county', code));
+      }
+      return Promise.all(stack)
+        .catch(function () {})
+        .then(function () {
+          return picker.setIndexes(indexes);
+        })
+        .catch(function () {});
+    },
+    getDefaultCode: function () {
+      var columnsPlaceholder = this.data.columnsPlaceholder;
+      if (columnsPlaceholder.length) {
+        return EMPTY_CODE;
+      }
+      var countyCodes = Object.keys(this.getConfig('county'));
+      if (countyCodes[0]) {
+        return countyCodes[0];
+      }
+      var cityCodes = Object.keys(this.getConfig('city'));
+      if (cityCodes[0]) {
+        return cityCodes[0];
+      }
+      return '';
+    },
+    getValues: function () {
+      var picker = this.getPicker();
+      if (!picker) {
+        return [];
+      }
+      return this.parseValues(
+        picker.getValues().filter(function (value) {
+          return !!value;
+        })
+      );
+    },
+    getDetail: function () {
+      var values = this.getValues();
+      var area = {
+        code: '',
+        country: '',
+        province: '',
+        city: '',
+        county: '',
+      };
+      if (!values.length) {
+        return area;
+      }
+      var names = values.map(function (item) {
+        return item.name;
+      });
+      area.code = values[values.length - 1].code;
+      if (area.code[0] === '9') {
+        area.country = names[1] || '';
+        area.province = names[2] || '';
+      } else {
+        area.province = names[0] || '';
+        area.city = names[1] || '';
+        area.county = names[2] || '';
+      }
+      return area;
+    },
+    reset: function (code) {
+      this.code = code || '';
+      return this.setValues();
+    },
+  },
+});

+ 6 - 0
miniprogram_npm/@vant/weapp/area/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-picker": "../picker/index"
+  }
+}

+ 20 - 0
miniprogram_npm/@vant/weapp/area/index.wxml

@@ -0,0 +1,20 @@
+<wxs src="./index.wxs" module="computed" />
+
+<van-picker
+  class="van-area__picker"
+  active-class="active-class"
+  toolbar-class="toolbar-class"
+  column-class="column-class"
+  show-toolbar
+  value-key="name"
+  title="{{ title }}"
+  loading="{{ loading }}"
+  columns="{{ computed.displayColumns(columns, columnsNum) }}"
+  item-height="{{ itemHeight }}"
+  visible-item-count="{{ visibleItemCount }}"
+  cancel-button-text="{{ cancelButtonText }}"
+  confirm-button-text="{{ confirmButtonText }}"
+  bind:change="onChange"
+  bind:confirm="onConfirm"
+  bind:cancel="onCancel"
+/>

+ 8 - 0
miniprogram_npm/@vant/weapp/area/index.wxs

@@ -0,0 +1,8 @@
+/* eslint-disable */
+function displayColumns(columns, columnsNum) {
+  return columns.slice(0, +columnsNum);
+}
+
+module.exports = {
+  displayColumns: displayColumns,
+};

+ 1 - 0
miniprogram_npm/@vant/weapp/area/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';

+ 60 - 0
miniprogram_npm/@vant/weapp/button/index.js

@@ -0,0 +1,60 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var component_1 = require('../common/component');
+var button_1 = require('../mixins/button');
+var open_type_1 = require('../mixins/open-type');
+var version_1 = require('../common/version');
+var mixins = [button_1.button, open_type_1.openType];
+if (version_1.canIUseFormFieldButton()) {
+  mixins.push('wx://form-field-button');
+}
+component_1.VantComponent({
+  mixins: mixins,
+  classes: ['hover-class', 'loading-class'],
+  data: {
+    baseStyle: '',
+  },
+  props: {
+    formType: String,
+    icon: String,
+    classPrefix: {
+      type: String,
+      value: 'van-icon',
+    },
+    plain: Boolean,
+    block: Boolean,
+    round: Boolean,
+    square: Boolean,
+    loading: Boolean,
+    hairline: Boolean,
+    disabled: Boolean,
+    loadingText: String,
+    customStyle: String,
+    loadingType: {
+      type: String,
+      value: 'circular',
+    },
+    type: {
+      type: String,
+      value: 'default',
+    },
+    dataset: null,
+    size: {
+      type: String,
+      value: 'normal',
+    },
+    loadingSize: {
+      type: String,
+      value: '20px',
+    },
+    color: String,
+  },
+  methods: {
+    onClick: function () {
+      if (!this.data.loading) {
+        this.$emit('click');
+      }
+    },
+    noop: function () {},
+  },
+});

+ 7 - 0
miniprogram_npm/@vant/weapp/button/index.json

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

+ 53 - 0
miniprogram_npm/@vant/weapp/button/index.wxml

@@ -0,0 +1,53 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+<wxs src="./index.wxs" module="computed" />
+
+<button
+  id="{{ id }}"
+  data-detail="{{ dataset }}"
+  class="custom-class {{ utils.bem('button', [type, size, { block, round, plain, square, loading, disabled, hairline, unclickable: disabled || loading }]) }} {{ hairline ? 'van-hairline--surround' : '' }}"
+  hover-class="van-button--active hover-class"
+  lang="{{ lang }}"
+  form-type="{{ formType }}"
+  style="{{ computed.rootStyle({ plain, color }) }} {{ customStyle }}"
+  open-type="{{ disabled ? '' : openType }}"
+  business-id="{{ businessId }}"
+  session-from="{{ sessionFrom }}"
+  send-message-title="{{ sendMessageTitle }}"
+  send-message-path="{{ sendMessagePath }}"
+  send-message-img="{{ sendMessageImg }}"
+  show-message-card="{{ showMessageCard }}"
+  app-parameter="{{ appParameter }}"
+  aria-label="{{ ariaLabel }}"
+  bindtap="{{ !disabled ? 'onClick' : 'noop' }}"
+  bindgetuserinfo="bindGetUserInfo"
+  bindcontact="bindContact"
+  bindgetphonenumber="bindGetPhoneNumber"
+  binderror="bindError"
+  bindlaunchapp="bindLaunchApp"
+  bindopensetting="bindOpenSetting"
+>
+  <block wx:if="{{ loading }}">
+    <van-loading
+      custom-class="loading-class"
+      size="{{ loadingSize }}"
+      type="{{ loadingType }}"
+      color="{{ computed.loadingColor({ type, color, plain }) }}"
+    />
+    <view wx:if="{{ loadingText }}" class="van-button__loading-text">
+      {{ loadingText }}
+    </view>
+  </block>
+  <block wx:else>
+    <van-icon
+      wx:if="{{ icon }}"
+      size="1.2em"
+      name="{{ icon }}"
+      class-prefix="{{ classPrefix }}"
+      class="van-button__icon"
+      custom-style="line-height: inherit;"
+    />
+    <view class="van-button__text">
+      <slot />
+    </view>
+  </block>
+</button>

+ 39 - 0
miniprogram_npm/@vant/weapp/button/index.wxs

@@ -0,0 +1,39 @@
+/* eslint-disable */
+var style = require('../wxs/style.wxs');
+
+function rootStyle(data) {
+  if (!data.color) {
+    return '';
+  }
+
+  var properties = {
+    color: data.plain ? data.color : '#fff',
+    background: data.plain ? null : data.color,
+  };
+
+  // hide border when color is linear-gradient
+  if (data.color.indexOf('gradient') !== -1) {
+    properties.border = 0;
+  } else {
+    properties['border-color'] = data.color;
+  }
+
+  return style(properties);
+}
+
+function loadingColor(data) {
+  if (data.plain) {
+    return data.color ? data.color : '#c9c9c9';
+  }
+
+  if (data.type === 'default') {
+    return '#c9c9c9';
+  }
+
+  return '#fff';
+}
+
+module.exports = {
+  rootStyle: rootStyle,
+  loadingColor: loadingColor,
+};

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


+ 57 - 0
miniprogram_npm/@vant/weapp/calendar/calendar.wxml

@@ -0,0 +1,57 @@
+<wxs src="./index.wxs" module="computed"></wxs>
+
+<template name="calendar">
+  <view class="van-calendar">
+    <header
+      title="{{ title }}"
+      showTitle="{{ showTitle }}"
+      subtitle="{{ subtitle }}"
+      showSubtitle="{{ showSubtitle }}"
+    >
+      <slot name="title" slot="title"></slot>
+    </header>
+
+    <scroll-view class="van-calendar__body" scroll-y scroll-into-view="{{ scrollIntoView }}">
+      <month
+        wx:for="{{ computed.getMonths(minDate, maxDate) }}"
+        wx:key="index"
+        id="month{{ index }}"
+        class="month"
+        data-date="{{ item }}"
+        date="{{ item }}"
+        type="{{ type }}"
+        color="{{ color }}"
+        minDate="{{ minDate }}"
+        maxDate="{{ maxDate }}"
+        showMark="{{ showMark }}"
+        formatter="{{ formatter }}"
+        rowHeight="{{ rowHeight }}"
+        currentDate="{{ currentDate }}"
+        showSubtitle="{{ showSubtitle }}"
+        allowSameDay="{{ allowSameDay }}"
+        showMonthTitle="{{ index !== 0 || !showSubtitle }}"
+        bind:click="onClickDay"
+      />
+    </scroll-view>
+
+    <view class="van-calendar__footer {{ safeAreaInsetBottom ? 'van-calendar__footer--safe-area-inset-bottom' : '' }}">
+      <slot name="footer"></slot>
+    </view>
+
+    <view class="van-calendar__footer {{ safeAreaInsetBottom ? 'van-calendar__footer--safe-area-inset-bottom' : '' }}">
+      <van-button
+        wx:if="{{ showConfirm }}"
+        round
+        block
+        type="danger"
+        color="{{ color }}"
+        custom-class="van-calendar__confirm"
+        disabled="{{ computed.getButtonDisabled(type, currentDate) }}"
+        nativeType="text"
+        bind:click="onConfirm"
+      >
+        {{ computed.getButtonDisabled(type, currentDate) ? confirmDisabledText : confirmText }}
+      </van-button>
+    </view>
+  </view>
+</template>

+ 18 - 0
miniprogram_npm/@vant/weapp/calendar/components/header/index.js

@@ -0,0 +1,18 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var component_1 = require('../../../common/component');
+component_1.VantComponent({
+  props: {
+    title: {
+      type: String,
+      value: '日期选择',
+    },
+    subtitle: String,
+    showTitle: Boolean,
+    showSubtitle: Boolean,
+  },
+  data: {
+    weekdays: ['日', '一', '二', '三', '四', '五', '六'],
+  },
+  methods: {},
+});

+ 3 - 0
miniprogram_npm/@vant/weapp/calendar/components/header/index.json

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

+ 16 - 0
miniprogram_npm/@vant/weapp/calendar/components/header/index.wxml

@@ -0,0 +1,16 @@
+<view class="van-calendar__header">
+  <block wx:if="{{ showTitle }}">
+    <view class="van-calendar__header-title"><slot name="title"></slot></view>
+    <view class="van-calendar__header-title">{{ title }}</view>
+  </block>
+
+  <view wx:if="{{ showSubtitle }}" class="van-calendar__header-subtitle">
+    {{ subtitle }}
+  </view>
+
+  <view class="van-calendar__weekdays">
+    <view wx:for="{{ weekdays }}" wx:key="index" class="van-calendar__weekday">
+      {{ item }}
+    </view>
+  </view>
+</view>

+ 1 - 0
miniprogram_npm/@vant/weapp/calendar/components/header/index.wxss

@@ -0,0 +1 @@
+@import '../../../common/index.wxss';.van-calendar__header{-webkit-flex-shrink:0;flex-shrink:0;box-shadow:0 2px 10px rgba(125,126,128,.16);box-shadow:var(--calendar-header-box-shadow,0 2px 10px rgba(125,126,128,.16))}.van-calendar__header-subtitle,.van-calendar__header-title{text-align:center;height:44px;height:var(--calendar-header-title-height,44px);font-weight:500;font-weight:var(--font-weight-bold,500);line-height:44px;line-height:var(--calendar-header-title-height,44px)}.van-calendar__header-title+.van-calendar__header-title,.van-calendar__header-title:empty{display:none}.van-calendar__header-title:empty+.van-calendar__header-title{display:block!important}.van-calendar__weekdays{display:-webkit-flex;display:flex}.van-calendar__weekday{-webkit-flex:1;flex:1;text-align:center;font-size:12px;font-size:var(--calendar-weekdays-font-size,12px);line-height:30px;line-height:var(--calendar-weekdays-height,30px)}

+ 167 - 0
miniprogram_npm/@vant/weapp/calendar/components/month/index.js

@@ -0,0 +1,167 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var component_1 = require('../../../common/component');
+var utils_1 = require('../../utils');
+component_1.VantComponent({
+  props: {
+    date: {
+      type: null,
+      observer: 'setDays',
+    },
+    type: {
+      type: String,
+      observer: 'setDays',
+    },
+    color: String,
+    minDate: {
+      type: null,
+      observer: 'setDays',
+    },
+    maxDate: {
+      type: null,
+      observer: 'setDays',
+    },
+    showMark: Boolean,
+    rowHeight: [Number, String],
+    formatter: {
+      type: null,
+      observer: 'setDays',
+    },
+    currentDate: {
+      type: [null, Array],
+      observer: 'setDays',
+    },
+    allowSameDay: Boolean,
+    showSubtitle: Boolean,
+    showMonthTitle: Boolean,
+  },
+  data: {
+    visible: true,
+    days: [],
+  },
+  methods: {
+    onClick: function (event) {
+      var index = event.currentTarget.dataset.index;
+      var item = this.data.days[index];
+      if (item.type !== 'disabled') {
+        this.$emit('click', item);
+      }
+    },
+    setDays: function () {
+      var days = [];
+      var startDate = new Date(this.data.date);
+      var year = startDate.getFullYear();
+      var month = startDate.getMonth();
+      var totalDay = utils_1.getMonthEndDay(
+        startDate.getFullYear(),
+        startDate.getMonth() + 1
+      );
+      for (var day = 1; day <= totalDay; day++) {
+        var date = new Date(year, month, day);
+        var type = this.getDayType(date);
+        var config = {
+          date: date,
+          type: type,
+          text: day,
+          bottomInfo: this.getBottomInfo(type),
+        };
+        if (this.data.formatter) {
+          config = this.data.formatter(config);
+        }
+        days.push(config);
+      }
+      this.setData({ days: days });
+    },
+    getMultipleDayType: function (day) {
+      var currentDate = this.data.currentDate;
+      if (!Array.isArray(currentDate)) {
+        return '';
+      }
+      var isSelected = function (date) {
+        return currentDate.some(function (item) {
+          return utils_1.compareDay(item, date) === 0;
+        });
+      };
+      if (isSelected(day)) {
+        var prevDay = utils_1.getPrevDay(day);
+        var nextDay = utils_1.getNextDay(day);
+        var prevSelected = isSelected(prevDay);
+        var nextSelected = isSelected(nextDay);
+        if (prevSelected && nextSelected) {
+          return 'multiple-middle';
+        }
+        if (prevSelected) {
+          return 'end';
+        }
+        return nextSelected ? 'start' : 'multiple-selected';
+      }
+      return '';
+    },
+    getRangeDayType: function (day) {
+      var _a = this.data,
+        currentDate = _a.currentDate,
+        allowSameDay = _a.allowSameDay;
+      if (!Array.isArray(currentDate)) {
+        return;
+      }
+      var startDay = currentDate[0],
+        endDay = currentDate[1];
+      if (!startDay) {
+        return;
+      }
+      var compareToStart = utils_1.compareDay(day, startDay);
+      if (!endDay) {
+        return compareToStart === 0 ? 'start' : '';
+      }
+      var compareToEnd = utils_1.compareDay(day, endDay);
+      if (compareToStart === 0 && compareToEnd === 0 && allowSameDay) {
+        return 'start-end';
+      }
+      if (compareToStart === 0) {
+        return 'start';
+      }
+      if (compareToEnd === 0) {
+        return 'end';
+      }
+      if (compareToStart > 0 && compareToEnd < 0) {
+        return 'middle';
+      }
+    },
+    getDayType: function (day) {
+      var _a = this.data,
+        type = _a.type,
+        minDate = _a.minDate,
+        maxDate = _a.maxDate,
+        currentDate = _a.currentDate;
+      if (
+        utils_1.compareDay(day, minDate) < 0 ||
+        utils_1.compareDay(day, maxDate) > 0
+      ) {
+        return 'disabled';
+      }
+      if (type === 'single') {
+        return utils_1.compareDay(day, currentDate) === 0 ? 'selected' : '';
+      }
+      if (type === 'multiple') {
+        return this.getMultipleDayType(day);
+      }
+      /* istanbul ignore else */
+      if (type === 'range') {
+        return this.getRangeDayType(day);
+      }
+    },
+    getBottomInfo: function (type) {
+      if (this.data.type === 'range') {
+        if (type === 'start') {
+          return '开始';
+        }
+        if (type === 'end') {
+          return '结束';
+        }
+        if (type === 'start-end') {
+          return '开始/结束';
+        }
+      }
+    },
+  },
+});

+ 3 - 0
miniprogram_npm/@vant/weapp/calendar/components/month/index.json

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

+ 39 - 0
miniprogram_npm/@vant/weapp/calendar/components/month/index.wxml

@@ -0,0 +1,39 @@
+<wxs src="./index.wxs" module="computed"></wxs>
+<wxs src="../../../wxs/utils.wxs" module="utils" />
+
+<view class="van-calendar__month" style="{{ computed.getMonthStyle(visible, date, rowHeight) }}">
+  <view wx:if="{{ showMonthTitle }}" class="van-calendar__month-title">
+    {{ computed.formatMonthTitle(date) }}
+  </view>
+
+  <view wx:if="{{ visible }}" class="van-calendar__days">
+    <view wx:if="{{ showMark }}" class="van-calendar__month-mark">
+      {{ computed.getMark(date) }}
+    </view>
+
+    <view
+      wx:for="{{ days }}"
+      wx:key="index"
+      style="{{ computed.getDayStyle(item.type, index, date, rowHeight, color) }}"
+      class="{{ utils.bem('calendar__day', [item.type]) }} {{ item.className }}"
+      data-index="{{ index }}"
+      bindtap="onClick"
+    >
+      <view wx:if="{{ item.type === 'selected' }}" class="van-calendar__selected-day" style="background: {{ color }}">
+        <view wx:if="{{ item.topInfo }}" class="van-calendar__top-info">{{ item.topInfo }}</view>
+        {{ item.text }}
+        <view wx:if="{{ item.bottomInfo }}" class="van-calendar__bottom-info">
+          {{ item.bottomInfo }}
+        </view>
+      </view>
+
+      <view wx:else>
+        <view wx:if="{{ item.topInfo }}" class="van-calendar__top-info">{{ item.topInfo }}</view>
+        {{ item.text }}
+        <view wx:if="{{ item.bottomInfo }}" class="van-calendar__bottom-info">
+          {{ item.bottomInfo }}
+        </view>
+      </view>
+    </view>
+  </view>
+</view>

+ 67 - 0
miniprogram_npm/@vant/weapp/calendar/components/month/index.wxs

@@ -0,0 +1,67 @@
+/* eslint-disable */
+var utils = require('../../utils.wxs');
+
+function getMark(date) {
+  return getDate(date).getMonth() + 1;
+}
+
+var ROW_HEIGHT = 64;
+
+function getDayStyle(type, index, date, rowHeight, color) {
+  var style = [];
+  var offset = getDate(date).getDay();
+
+  if (index === 0) {
+    style.push(['margin-left', (100 * offset) / 7 + '%']);
+  }
+
+  if (rowHeight !== ROW_HEIGHT) {
+    style.push(['height', rowHeight + 'px']);
+  }
+
+  if (color) {
+    if (
+      type === 'start' ||
+      type === 'end' ||
+      type === 'multiple-selected' ||
+      type === 'multiple-middle'
+    ) {
+      style.push(['background', color]);
+    } else if (type === 'middle') {
+      style.push(['color', color]);
+    }
+  }
+
+  return style
+    .map(function(item) {
+      return item.join(':');
+    })
+    .join(';');
+}
+
+function formatMonthTitle(date) {
+  date = getDate(date);
+  return date.getFullYear() + '年' + (date.getMonth() + 1) + '月';
+}
+
+function getMonthStyle(visible, date, rowHeight) {
+  if (!visible) {
+    date = getDate(date);
+
+    var totalDay = utils.getMonthEndDay(
+      date.getFullYear(),
+      date.getMonth() + 1
+    );
+    var offset = getDate(date).getDay();
+    var padding = Math.ceil((totalDay + offset) / 7) * rowHeight;
+
+    return 'padding-bottom:' + padding + 'px';
+  }
+}
+
+module.exports = {
+  getMark: getMark,
+  getDayStyle: getDayStyle,
+  formatMonthTitle: formatMonthTitle,
+  getMonthStyle: getMonthStyle
+};

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
miniprogram_npm/@vant/weapp/calendar/components/month/index.wxss


+ 325 - 0
miniprogram_npm/@vant/weapp/calendar/index.js

@@ -0,0 +1,325 @@
+'use strict';
+var __spreadArrays =
+  (this && this.__spreadArrays) ||
+  function () {
+    for (var s = 0, i = 0, il = arguments.length; i < il; i++)
+      s += arguments[i].length;
+    for (var r = Array(s), k = 0, i = 0; i < il; i++)
+      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+        r[k] = a[j];
+    return r;
+  };
+var __importDefault =
+  (this && this.__importDefault) ||
+  function (mod) {
+    return mod && mod.__esModule ? mod : { default: mod };
+  };
+Object.defineProperty(exports, '__esModule', { value: true });
+var component_1 = require('../common/component');
+var utils_1 = require('./utils');
+var toast_1 = __importDefault(require('../toast/toast'));
+var utils_2 = require('../common/utils');
+component_1.VantComponent({
+  props: {
+    title: {
+      type: String,
+      value: '日期选择',
+    },
+    color: String,
+    show: {
+      type: Boolean,
+      observer: function (val) {
+        if (val) {
+          this.initRect();
+          this.scrollIntoView();
+        }
+      },
+    },
+    formatter: null,
+    confirmText: {
+      type: String,
+      value: '确定',
+    },
+    rangePrompt: String,
+    defaultDate: {
+      type: [Number, Array],
+      observer: function (val) {
+        this.setData({ currentDate: val });
+        this.scrollIntoView();
+      },
+    },
+    allowSameDay: Boolean,
+    confirmDisabledText: String,
+    type: {
+      type: String,
+      value: 'single',
+      observer: 'reset',
+    },
+    minDate: {
+      type: null,
+      value: Date.now(),
+    },
+    maxDate: {
+      type: null,
+      value: new Date(
+        new Date().getFullYear(),
+        new Date().getMonth() + 6,
+        new Date().getDate()
+      ).getTime(),
+    },
+    position: {
+      type: String,
+      value: 'bottom',
+    },
+    rowHeight: {
+      type: [Number, String],
+      value: utils_1.ROW_HEIGHT,
+    },
+    round: {
+      type: Boolean,
+      value: true,
+    },
+    poppable: {
+      type: Boolean,
+      value: true,
+    },
+    showMark: {
+      type: Boolean,
+      value: true,
+    },
+    showTitle: {
+      type: Boolean,
+      value: true,
+    },
+    showConfirm: {
+      type: Boolean,
+      value: true,
+    },
+    showSubtitle: {
+      type: Boolean,
+      value: true,
+    },
+    safeAreaInsetBottom: {
+      type: Boolean,
+      value: true,
+    },
+    closeOnClickOverlay: {
+      type: Boolean,
+      value: true,
+    },
+    maxRange: {
+      type: [Number, String],
+      value: null,
+    },
+  },
+  data: {
+    subtitle: '',
+    currentDate: null,
+    scrollIntoView: '',
+  },
+  created: function () {
+    this.setData({
+      currentDate: this.getInitialDate(),
+    });
+  },
+  mounted: function () {
+    if (this.data.show || !this.data.poppable) {
+      this.initRect();
+      this.scrollIntoView();
+    }
+  },
+  methods: {
+    reset: function () {
+      this.setData({ currentDate: this.getInitialDate() });
+      this.scrollIntoView();
+    },
+    initRect: function () {
+      var _this = this;
+      if (this.contentObserver != null) {
+        this.contentObserver.disconnect();
+      }
+      var contentObserver = this.createIntersectionObserver({
+        thresholds: [0, 0.1, 0.9, 1],
+        observeAll: true,
+      });
+      this.contentObserver = contentObserver;
+      contentObserver.relativeTo('.van-calendar__body');
+      contentObserver.observe('.month', function (res) {
+        if (res.boundingClientRect.top <= res.relativeRect.top) {
+          // @ts-ignore
+          _this.setData({
+            subtitle: utils_1.formatMonthTitle(res.dataset.date),
+          });
+        }
+      });
+    },
+    getInitialDate: function () {
+      var _a = this.data,
+        type = _a.type,
+        defaultDate = _a.defaultDate,
+        minDate = _a.minDate;
+      if (type === 'range') {
+        var _b = defaultDate || [],
+          startDay = _b[0],
+          endDay = _b[1];
+        return [
+          startDay || minDate,
+          endDay || utils_1.getNextDay(new Date(minDate)).getTime(),
+        ];
+      }
+      if (type === 'multiple') {
+        return defaultDate || [minDate];
+      }
+      return defaultDate || minDate;
+    },
+    scrollIntoView: function () {
+      var _this = this;
+      utils_2.requestAnimationFrame(function () {
+        var _a = _this.data,
+          currentDate = _a.currentDate,
+          type = _a.type,
+          show = _a.show,
+          poppable = _a.poppable,
+          minDate = _a.minDate,
+          maxDate = _a.maxDate;
+        // @ts-ignore
+        var targetDate = type === 'single' ? currentDate : currentDate[0];
+        var displayed = show || !poppable;
+        if (!targetDate || !displayed) {
+          return;
+        }
+        var months = utils_1.getMonths(minDate, maxDate);
+        months.some(function (month, index) {
+          if (utils_1.compareMonth(month, targetDate) === 0) {
+            _this.setData({ scrollIntoView: 'month' + index });
+            return true;
+          }
+          return false;
+        });
+      });
+    },
+    onOpen: function () {
+      this.$emit('open');
+    },
+    onOpened: function () {
+      this.$emit('opened');
+    },
+    onClose: function () {
+      this.$emit('close');
+    },
+    onClosed: function () {
+      this.$emit('closed');
+    },
+    onClickDay: function (event) {
+      var date = event.detail.date;
+      var _a = this.data,
+        type = _a.type,
+        currentDate = _a.currentDate,
+        allowSameDay = _a.allowSameDay;
+      if (type === 'range') {
+        // @ts-ignore
+        var startDay = currentDate[0],
+          endDay = currentDate[1];
+        if (startDay && !endDay) {
+          var compareToStart = utils_1.compareDay(date, startDay);
+          if (compareToStart === 1) {
+            this.select([startDay, date], true);
+          } else if (compareToStart === -1) {
+            this.select([date, null]);
+          } else if (allowSameDay) {
+            this.select([date, date]);
+          }
+        } else {
+          this.select([date, null]);
+        }
+      } else if (type === 'multiple') {
+        var selectedIndex_1;
+        // @ts-ignore
+        var selected = currentDate.some(function (dateItem, index) {
+          var equal = utils_1.compareDay(dateItem, date) === 0;
+          if (equal) {
+            selectedIndex_1 = index;
+          }
+          return equal;
+        });
+        if (selected) {
+          // @ts-ignore
+          var cancelDate = currentDate.splice(selectedIndex_1, 1);
+          this.setData({ currentDate: currentDate });
+          this.unselect(cancelDate);
+        } else {
+          // @ts-ignore
+          this.select(__spreadArrays(currentDate, [date]));
+        }
+      } else {
+        this.select(date, true);
+      }
+    },
+    unselect: function (dateArray) {
+      var date = dateArray[0];
+      if (date) {
+        this.$emit('unselect', utils_1.copyDates(date));
+      }
+    },
+    select: function (date, complete) {
+      if (complete && this.data.type === 'range') {
+        var valid = this.checkRange(date);
+        if (!valid) {
+          // auto selected to max range if showConfirm
+          if (this.data.showConfirm) {
+            this.emit([
+              date[0],
+              utils_1.getDayByOffset(date[0], this.data.maxRange - 1),
+            ]);
+          } else {
+            this.emit(date);
+          }
+          return;
+        }
+      }
+      this.emit(date);
+      if (complete && !this.data.showConfirm) {
+        this.onConfirm();
+      }
+    },
+    emit: function (date) {
+      var getTime = function (date) {
+        return date instanceof Date ? date.getTime() : date;
+      };
+      this.setData({
+        currentDate: Array.isArray(date) ? date.map(getTime) : getTime(date),
+      });
+      this.$emit('select', utils_1.copyDates(date));
+    },
+    checkRange: function (date) {
+      var _a = this.data,
+        maxRange = _a.maxRange,
+        rangePrompt = _a.rangePrompt;
+      if (maxRange && utils_1.calcDateNum(date) > maxRange) {
+        toast_1.default({
+          context: this,
+          message:
+            rangePrompt ||
+            '\u9009\u62E9\u5929\u6570\u4E0D\u80FD\u8D85\u8FC7 ' +
+              maxRange +
+              ' \u5929',
+        });
+        return false;
+      }
+      return true;
+    },
+    onConfirm: function () {
+      var _this = this;
+      if (
+        this.data.type === 'range' &&
+        !this.checkRange(this.data.currentDate)
+      ) {
+        return;
+      }
+      wx.nextTick(function () {
+        // @ts-ignore
+        _this.$emit('confirm', utils_1.copyDates(_this.data.currentDate));
+      });
+    },
+  },
+});

+ 10 - 0
miniprogram_npm/@vant/weapp/calendar/index.json

@@ -0,0 +1,10 @@
+{
+  "component": true,
+  "usingComponents": {
+    "header": "./components/header/index",
+    "month": "./components/month/index",
+    "van-button": "../button/index",
+    "van-popup": "../popup/index",
+    "van-toast": "../toast/index"
+  }
+}

+ 31 - 0
miniprogram_npm/@vant/weapp/calendar/index.wxml

@@ -0,0 +1,31 @@
+<wxs src="./index.wxs" module="computed" />
+
+<import src="./calendar.wxml" />
+
+<van-popup
+  wx:if="{{ poppable }}"
+  custom-class="van-calendar__popup--{{ position }}"
+  close-icon-class="van-calendar__close-icon"
+  show="{{ show }}"
+  round="{{ round }}"
+  position="{{ position }}"
+  closeable="{{ showTitle || showSubtitle }}"
+  close-on-click-overlay="{{ closeOnClickOverlay }}"
+  bind:enter="onOpen"
+  bind:close="onClose"
+  bind:after-enter="onOpened"
+  bind:after-leave="onClosed"
+>
+  <template
+    is="calendar"
+    data="{{ title, subtitle, showTitle, showSubtitle, minDate, maxDate, type, color, showMark, formatter, rowHeight, currentDate, safeAreaInsetBottom, showConfirm, confirmDisabledText, confirmText, scrollIntoView, allowSameDay }}"
+  />
+</van-popup>
+
+<template
+  wx:else
+  is="calendar"
+  data="{{ title, subtitle, showTitle, showSubtitle, minDate, maxDate, type, color, showMark, formatter, rowHeight, currentDate, safeAreaInsetBottom, showConfirm, confirmDisabledText, confirmText, scrollIntoView, allowSameDay }}"
+/>
+
+<van-toast id="van-toast" />

+ 37 - 0
miniprogram_npm/@vant/weapp/calendar/index.wxs

@@ -0,0 +1,37 @@
+/* eslint-disable */
+var utils = require('./utils.wxs');
+
+function getMonths(minDate, maxDate) {
+  var months = [];
+  var cursor = getDate(minDate);
+
+  cursor.setDate(1);
+
+  do {
+    months.push(cursor.getTime());
+    cursor.setMonth(cursor.getMonth() + 1);
+  } while (utils.compareMonth(cursor, getDate(maxDate)) !== 1);
+
+  return months;
+}
+
+function getButtonDisabled(type, currentDate) {
+  if (currentDate == null) {
+    return true;
+  }
+
+  if (type === 'range') {
+    return !currentDate[0] || !currentDate[1];
+  }
+
+  if (type === 'multiple') {
+    return !currentDate.length;
+  }
+
+  return !currentDate;
+}
+
+module.exports = {
+  getMonths: getMonths,
+  getButtonDisabled: getButtonDisabled
+};

+ 1 - 0
miniprogram_npm/@vant/weapp/calendar/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-calendar{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;height:100%;height:var(--calendar-height,100%);background-color:#fff;background-color:var(--calendar-background-color,#fff)}.van-calendar__close-icon{top:11px}.van-calendar__popup--bottom,.van-calendar__popup--top{height:80%;height:var(--calendar-popup-height,80%)}.van-calendar__popup--left,.van-calendar__popup--right{height:100%}.van-calendar__body{-webkit-flex:1;flex:1;overflow:auto;-webkit-overflow-scrolling:touch}.van-calendar__footer{-webkit-flex-shrink:0;flex-shrink:0;padding:0 16px;padding:0 var(--padding-md,16px)}.van-calendar__footer--safe-area-inset-bottom{padding-bottom:env(safe-area-inset-bottom)}.van-calendar__footer+.van-calendar__footer,.van-calendar__footer:empty{display:none}.van-calendar__footer:empty+.van-calendar__footer{display:block!important}.van-calendar__confirm{height:36px!important;height:var(--calendar-confirm-button-height,36px)!important;margin:7px 0!important;margin:var(--calendar-confirm-button-margin,7px 0)!important;line-height:34px!important;line-height:var(--calendar-confirm-button-line-height,34px)!important}

+ 91 - 0
miniprogram_npm/@vant/weapp/calendar/utils.js

@@ -0,0 +1,91 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+exports.getMonths = exports.getMonthEndDay = exports.copyDates = exports.calcDateNum = exports.getNextDay = exports.getPrevDay = exports.getDayByOffset = exports.compareDay = exports.compareMonth = exports.formatMonthTitle = exports.ROW_HEIGHT = void 0;
+exports.ROW_HEIGHT = 64;
+function formatMonthTitle(date) {
+  if (!(date instanceof Date)) {
+    date = new Date(date);
+  }
+  return date.getFullYear() + '\u5E74' + (date.getMonth() + 1) + '\u6708';
+}
+exports.formatMonthTitle = formatMonthTitle;
+function compareMonth(date1, date2) {
+  if (!(date1 instanceof Date)) {
+    date1 = new Date(date1);
+  }
+  if (!(date2 instanceof Date)) {
+    date2 = new Date(date2);
+  }
+  var year1 = date1.getFullYear();
+  var year2 = date2.getFullYear();
+  var month1 = date1.getMonth();
+  var month2 = date2.getMonth();
+  if (year1 === year2) {
+    return month1 === month2 ? 0 : month1 > month2 ? 1 : -1;
+  }
+  return year1 > year2 ? 1 : -1;
+}
+exports.compareMonth = compareMonth;
+function compareDay(day1, day2) {
+  if (!(day1 instanceof Date)) {
+    day1 = new Date(day1);
+  }
+  if (!(day2 instanceof Date)) {
+    day2 = new Date(day2);
+  }
+  var compareMonthResult = compareMonth(day1, day2);
+  if (compareMonthResult === 0) {
+    var date1 = day1.getDate();
+    var date2 = day2.getDate();
+    return date1 === date2 ? 0 : date1 > date2 ? 1 : -1;
+  }
+  return compareMonthResult;
+}
+exports.compareDay = compareDay;
+function getDayByOffset(date, offset) {
+  date = new Date(date);
+  date.setDate(date.getDate() + offset);
+  return date;
+}
+exports.getDayByOffset = getDayByOffset;
+function getPrevDay(date) {
+  return getDayByOffset(date, -1);
+}
+exports.getPrevDay = getPrevDay;
+function getNextDay(date) {
+  return getDayByOffset(date, 1);
+}
+exports.getNextDay = getNextDay;
+function calcDateNum(date) {
+  var day1 = new Date(date[0]).getTime();
+  var day2 = new Date(date[1]).getTime();
+  return (day2 - day1) / (1000 * 60 * 60 * 24) + 1;
+}
+exports.calcDateNum = calcDateNum;
+function copyDates(dates) {
+  if (Array.isArray(dates)) {
+    return dates.map(function (date) {
+      if (date === null) {
+        return date;
+      }
+      return new Date(date);
+    });
+  }
+  return new Date(dates);
+}
+exports.copyDates = copyDates;
+function getMonthEndDay(year, month) {
+  return 32 - new Date(year, month - 1, 32).getDate();
+}
+exports.getMonthEndDay = getMonthEndDay;
+function getMonths(minDate, maxDate) {
+  var months = [];
+  var cursor = new Date(minDate);
+  cursor.setDate(1);
+  do {
+    months.push(cursor.getTime());
+    cursor.setMonth(cursor.getMonth() + 1);
+  } while (compareMonth(cursor, maxDate) !== 1);
+  return months;
+}
+exports.getMonths = getMonths;

+ 25 - 0
miniprogram_npm/@vant/weapp/calendar/utils.wxs

@@ -0,0 +1,25 @@
+/* eslint-disable */
+function getMonthEndDay(year, month) {
+  return 32 -  getDate(year, month - 1, 32).getDate();
+}
+
+function compareMonth(date1, date2) {
+  date1 = getDate(date1);
+  date2 = getDate(date2);
+
+  var year1 = date1.getFullYear();
+  var year2 = date2.getFullYear();
+  var month1 = date1.getMonth();
+  var month2 = date2.getMonth();
+
+  if (year1 === year2) {
+    return month1 === month2 ? 0 : month1 > month2 ? 1 : -1;
+  }
+
+  return year1 > year2 ? 1 : -1;
+}
+
+module.exports = {
+  getMonthEndDay: getMonthEndDay,
+  compareMonth: compareMonth
+};

+ 51 - 0
miniprogram_npm/@vant/weapp/card/index.js

@@ -0,0 +1,51 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var link_1 = require('../mixins/link');
+var component_1 = require('../common/component');
+component_1.VantComponent({
+  classes: [
+    'num-class',
+    'desc-class',
+    'thumb-class',
+    'title-class',
+    'price-class',
+    'origin-price-class',
+  ],
+  mixins: [link_1.link],
+  props: {
+    tag: String,
+    num: String,
+    desc: String,
+    thumb: String,
+    title: String,
+    price: {
+      type: String,
+      observer: 'updatePrice',
+    },
+    centered: Boolean,
+    lazyLoad: Boolean,
+    thumbLink: String,
+    originPrice: String,
+    thumbMode: {
+      type: String,
+      value: 'aspectFit',
+    },
+    currency: {
+      type: String,
+      value: '¥',
+    },
+  },
+  methods: {
+    updatePrice: function () {
+      var price = this.data.price;
+      var priceArr = price.toString().split('.');
+      this.setData({
+        integerStr: priceArr[0],
+        decimalStr: priceArr[1] ? '.' + priceArr[1] : '',
+      });
+    },
+    onClickThumb: function () {
+      this.jumpLink('thumbLink');
+    },
+  },
+});

+ 6 - 0
miniprogram_npm/@vant/weapp/card/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-tag": "../tag/index"
+  }
+}

+ 56 - 0
miniprogram_npm/@vant/weapp/card/index.wxml

@@ -0,0 +1,56 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view class="custom-class van-card">
+  <view class="{{ utils.bem('card__header', { center: centered }) }}">
+    <view class="van-card__thumb" bind:tap="onClickThumb">
+      <image
+        wx:if="{{ thumb }}"
+        src="{{ thumb }}"
+        mode="{{ thumbMode }}"
+        lazy-load="{{ lazyLoad }}"
+        class="van-card__img thumb-class"
+      />
+      <slot wx:else name="thumb" />
+      <van-tag
+        wx:if="{{ tag }}"
+        mark
+        type="danger"
+        custom-class="van-card__tag"
+      >
+        {{ tag }}
+      </van-tag>
+      <slot wx:else name="tag" />
+    </view>
+
+    <view class="van-card__content {{ utils.bem('card__content', { center: centered }) }}">
+      <view>
+        <view wx:if="{{ title }}" class="van-card__title title-class">{{ title }}</view>
+        <slot wx:else name="title" />
+
+        <view wx:if="{{ desc }}" class="van-card__desc desc-class">{{ desc }}</view>
+        <slot wx:else name="desc" />
+
+        <slot name="tags" />
+      </view>
+
+      <view class="van-card__bottom">
+        <slot name="price-top" />
+        <view wx:if="{{ price || price === 0 }}" class="van-card__price price-class">
+          <text>{{ currency }}</text>
+          <text class="van-card__price-integer">{{ integerStr }}</text>
+          <text class="van-card__price-decimal">{{ decimalStr }}</text>
+        </view>
+        <slot wx:else name="price" />
+        <view wx:if="{{ originPrice || originPrice === 0 }}" class="van-card__origin-price origin-price-class">{{ currency }} {{ originPrice }}</view>
+        <slot wx:else name="origin-price" />
+        <view wx:if="{{ num }}" class="van-card__num num-class">x {{ num }}</view>
+        <slot wx:else  name="num" />
+        <slot name="bottom" />
+      </view>
+    </view>
+  </view>
+
+  <view class="van-card__footer">
+    <slot name="footer" />
+  </view>
+</view>

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


+ 12 - 0
miniprogram_npm/@vant/weapp/cell-group/index.js

@@ -0,0 +1,12 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var component_1 = require('../common/component');
+component_1.VantComponent({
+  props: {
+    title: String,
+    border: {
+      type: Boolean,
+      value: true,
+    },
+  },
+});

+ 3 - 0
miniprogram_npm/@vant/weapp/cell-group/index.json

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

+ 9 - 0
miniprogram_npm/@vant/weapp/cell-group/index.wxml

@@ -0,0 +1,9 @@
+<view
+  wx:if="{{ title }}"
+  class="van-cell-group__title"
+>
+  {{ title }}
+</view>
+<view class="custom-class van-cell-group {{ border ? 'van-hairline--top-bottom' : '' }}">
+  <slot />
+</view>

+ 1 - 0
miniprogram_npm/@vant/weapp/cell-group/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-cell-group__title{padding:16px 16px 8px;padding:var(--cell-group-title-padding,16px 16px 8px);font-size:14px;font-size:var(--cell-group-title-font-size,14px);line-height:16px;line-height:var(--cell-group-title-line-height,16px);color:#969799;color:var(--cell-group-title-color,#969799)}

+ 40 - 0
miniprogram_npm/@vant/weapp/cell/index.js

@@ -0,0 +1,40 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var link_1 = require('../mixins/link');
+var component_1 = require('../common/component');
+component_1.VantComponent({
+  classes: [
+    'title-class',
+    'label-class',
+    'value-class',
+    'right-icon-class',
+    'hover-class',
+  ],
+  mixins: [link_1.link],
+  props: {
+    title: null,
+    value: null,
+    icon: String,
+    size: String,
+    label: String,
+    center: Boolean,
+    isLink: Boolean,
+    required: Boolean,
+    clickable: Boolean,
+    titleWidth: String,
+    customStyle: String,
+    arrowDirection: String,
+    useLabelSlot: Boolean,
+    border: {
+      type: Boolean,
+      value: true,
+    },
+    titleStyle: String,
+  },
+  methods: {
+    onClick: function (event) {
+      this.$emit('click', event.detail);
+      this.jumpLink();
+    },
+  },
+});

+ 6 - 0
miniprogram_npm/@vant/weapp/cell/index.json

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

+ 45 - 0
miniprogram_npm/@vant/weapp/cell/index.wxml

@@ -0,0 +1,45 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view
+  class="custom-class {{ utils.bem('cell', [size, { center, required, borderless: !border, clickable: isLink || clickable }]) }}"
+  hover-class="van-cell--hover hover-class"
+  hover-stay-time="70"
+  style="{{ customStyle }}"
+  bind:tap="onClick"
+>
+  <van-icon
+    wx:if="{{ icon }}"
+    name="{{ icon }}"
+    class="van-cell__left-icon-wrap"
+    custom-class="van-cell__left-icon"
+  />
+  <slot wx:else name="icon" />
+
+  <view
+    style="{{ (titleWidth ? 'max-width:' + titleWidth + ';min-width:' + titleWidth + ';' : '') + titleStyle }}"
+    class="van-cell__title title-class"
+  >
+    <block wx:if="{{ title }}">{{ title }}</block>
+    <slot wx:else name="title" />
+
+    <view wx:if="{{ label || useLabelSlot }}" class="van-cell__label label-class">
+      <slot wx:if="{{ useLabelSlot }}" name="label" />
+      <block wx:elif="{{ label }}">{{ label }}</block>
+    </view>
+  </view>
+
+  <view class="van-cell__value value-class">
+    <block wx:if="{{ value || value === 0 }}">{{ value }}</block>
+    <slot wx:else />
+  </view>
+
+  <van-icon
+    wx:if="{{ isLink }}"
+    name="{{ arrowDirection ? 'arrow' + '-' + arrowDirection : 'arrow' }}"
+    class="van-cell__right-icon-wrap right-icon-class"
+    custom-class="van-cell__right-icon"
+  />
+  <slot wx:else name="right-icon" />
+
+  <slot name="extra" />
+</view>

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
miniprogram_npm/@vant/weapp/cell/index.wxss


+ 42 - 0
miniprogram_npm/@vant/weapp/checkbox-group/index.js

@@ -0,0 +1,42 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var component_1 = require('../common/component');
+component_1.VantComponent({
+  field: true,
+  relation: {
+    name: 'checkbox',
+    type: 'descendant',
+    current: 'checkbox-group',
+    linked: function (target) {
+      this.updateChild(target);
+    },
+  },
+  props: {
+    max: Number,
+    value: {
+      type: Array,
+      observer: 'updateChildren',
+    },
+    disabled: {
+      type: Boolean,
+      observer: 'updateChildren',
+    },
+  },
+  methods: {
+    updateChildren: function () {
+      var _this = this;
+      (this.children || []).forEach(function (child) {
+        return _this.updateChild(child);
+      });
+    },
+    updateChild: function (child) {
+      var _a = this.data,
+        value = _a.value,
+        disabled = _a.disabled;
+      child.setData({
+        value: value.indexOf(child.data.name) !== -1,
+        parentDisabled: disabled,
+      });
+    },
+  },
+});

+ 3 - 0
miniprogram_npm/@vant/weapp/checkbox-group/index.json

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

+ 1 - 0
miniprogram_npm/@vant/weapp/checkbox-group/index.wxml

@@ -0,0 +1 @@
+<slot />

+ 1 - 0
miniprogram_npm/@vant/weapp/checkbox-group/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';

+ 83 - 0
miniprogram_npm/@vant/weapp/checkbox/index.js

@@ -0,0 +1,83 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var component_1 = require('../common/component');
+function emit(target, value) {
+  target.$emit('input', value);
+  target.$emit('change', value);
+}
+component_1.VantComponent({
+  field: true,
+  relation: {
+    name: 'checkbox-group',
+    type: 'ancestor',
+    current: 'checkbox',
+  },
+  classes: ['icon-class', 'label-class'],
+  props: {
+    value: Boolean,
+    disabled: Boolean,
+    useIconSlot: Boolean,
+    checkedColor: String,
+    labelPosition: String,
+    labelDisabled: Boolean,
+    shape: {
+      type: String,
+      value: 'round',
+    },
+    iconSize: {
+      type: null,
+      value: 20,
+    },
+  },
+  data: {
+    parentDisabled: false,
+  },
+  methods: {
+    emitChange: function (value) {
+      if (this.parent) {
+        this.setParentValue(this.parent, value);
+      } else {
+        emit(this, value);
+      }
+    },
+    toggle: function () {
+      var _a = this.data,
+        parentDisabled = _a.parentDisabled,
+        disabled = _a.disabled,
+        value = _a.value;
+      if (!disabled && !parentDisabled) {
+        this.emitChange(!value);
+      }
+    },
+    onClickLabel: function () {
+      var _a = this.data,
+        labelDisabled = _a.labelDisabled,
+        parentDisabled = _a.parentDisabled,
+        disabled = _a.disabled,
+        value = _a.value;
+      if (!disabled && !labelDisabled && !parentDisabled) {
+        this.emitChange(!value);
+      }
+    },
+    setParentValue: function (parent, value) {
+      var parentValue = parent.data.value.slice();
+      var name = this.data.name;
+      var max = parent.data.max;
+      if (value) {
+        if (max && parentValue.length >= max) {
+          return;
+        }
+        if (parentValue.indexOf(name) === -1) {
+          parentValue.push(name);
+          emit(parent, parentValue);
+        }
+      } else {
+        var index = parentValue.indexOf(name);
+        if (index !== -1) {
+          parentValue.splice(index, 1);
+          emit(parent, parentValue);
+        }
+      }
+    },
+  },
+});

+ 6 - 0
miniprogram_npm/@vant/weapp/checkbox/index.json

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

+ 20 - 0
miniprogram_npm/@vant/weapp/checkbox/index.wxml

@@ -0,0 +1,20 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+<wxs src="./index.wxs" module="computed" />
+
+<view class="van-checkbox custom-class">
+  <view class="van-checkbox__icon-wrap" bindtap="toggle">
+    <slot wx:if="{{ useIconSlot }}" name="icon" />
+    <van-icon
+      wx:else
+      name="success"
+      size="0.8em"
+      class="{{ utils.bem('checkbox__icon', [shape, { disabled: disabled || parentDisabled, checked: value }]) }}"
+      style="{{ computed.iconStyle(checkedColor, value, disabled, parentDisabled, iconSize) }}"
+      custom-class="icon-class"
+      custom-style="line-height: 1.25em;"
+    />
+  </view>
+  <view class="label-class {{ utils.bem('checkbox__label', [labelPosition, { disabled: disabled || parentDisabled }]) }}" bindtap="onClickLabel">
+    <slot />
+  </view>
+</view>

+ 20 - 0
miniprogram_npm/@vant/weapp/checkbox/index.wxs

@@ -0,0 +1,20 @@
+/* eslint-disable */
+var style = require('../wxs/style.wxs');
+var addUnit = require('../wxs/add-unit.wxs');
+
+function iconStyle(checkedColor, value, disabled, parentDisabled, iconSize) {
+  var styles = {
+    'font-size': addUnit(iconSize),
+  };
+
+  if (checkedColor && value && !disabled && !parentDisabled) {
+    styles['border-color'] = checkedColor;
+    styles['background-color'] = checkedColor;
+  }
+
+  return style(styles);
+}
+
+module.exports = {
+  iconStyle: iconStyle,
+};

+ 1 - 0
miniprogram_npm/@vant/weapp/checkbox/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-checkbox{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;overflow:hidden;-webkit-user-select:none;user-select:none}.van-checkbox__icon-wrap,.van-checkbox__label{line-height:20px;line-height:var(--checkbox-size,20px)}.van-checkbox__icon-wrap{-webkit-flex:none;flex:none}.van-checkbox__icon{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;width:1em;height:1em;color:transparent;text-align:center;transition-property:color,border-color,background-color;font-size:20px;font-size:var(--checkbox-size,20px);border:1px solid #c8c9cc;border:1px solid var(--checkbox-border-color,#c8c9cc);transition-duration:.2s;transition-duration:var(--checkbox-transition-duration,.2s)}.van-checkbox__icon--round{border-radius:100%}.van-checkbox__icon--checked{color:#fff;color:var(--white,#fff);background-color:#1989fa;background-color:var(--checkbox-checked-icon-color,#1989fa);border-color:#1989fa;border-color:var(--checkbox-checked-icon-color,#1989fa)}.van-checkbox__icon--disabled{background-color:#ebedf0;background-color:var(--checkbox-disabled-background-color,#ebedf0);border-color:#c8c9cc;border-color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__icon--disabled.van-checkbox__icon--checked{color:#c8c9cc;color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__label{word-wrap:break-word;margin-left:10px;margin-left:var(--checkbox-label-margin,10px);color:#323233;color:var(--checkbox-label-color,#323233)}.van-checkbox__label--left{float:left;margin:0 10px 0 0;margin:0 var(--checkbox-label-margin,10px) 0 0}.van-checkbox__label--disabled{color:#c8c9cc;color:var(--checkbox-disabled-label-color,#c8c9cc)}.van-checkbox__label:empty{margin:0}

+ 47 - 0
miniprogram_npm/@vant/weapp/circle/canvas.js

@@ -0,0 +1,47 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+exports.adaptor = void 0;
+function adaptor(ctx) {
+  // @ts-ignore
+  return Object.assign(ctx, {
+    setStrokeStyle: function (val) {
+      ctx.strokeStyle = val;
+    },
+    setLineWidth: function (val) {
+      ctx.lineWidth = val;
+    },
+    setLineCap: function (val) {
+      ctx.lineCap = val;
+    },
+    setFillStyle: function (val) {
+      ctx.fillStyle = val;
+    },
+    setFontSize: function (val) {
+      ctx.font = String(val);
+    },
+    setGlobalAlpha: function (val) {
+      ctx.globalAlpha = val;
+    },
+    setLineJoin: function (val) {
+      ctx.lineJoin = val;
+    },
+    setTextAlign: function (val) {
+      ctx.textAlign = val;
+    },
+    setMiterLimit: function (val) {
+      ctx.miterLimit = val;
+    },
+    setShadow: function (offsetX, offsetY, blur, color) {
+      ctx.shadowOffsetX = offsetX;
+      ctx.shadowOffsetY = offsetY;
+      ctx.shadowBlur = blur;
+      ctx.shadowColor = color;
+    },
+    setTextBaseline: function (val) {
+      ctx.textBaseline = val;
+    },
+    createCircularGradient: function () {},
+    draw: function () {},
+  });
+}
+exports.adaptor = adaptor;

+ 210 - 0
miniprogram_npm/@vant/weapp/circle/index.js

@@ -0,0 +1,210 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var component_1 = require('../common/component');
+var color_1 = require('../common/color');
+var canvas_1 = require('./canvas');
+var validator_1 = require('../common/validator');
+var utils_1 = require('../common/utils');
+function format(rate) {
+  return Math.min(Math.max(rate, 0), 100);
+}
+var PERIMETER = 2 * Math.PI;
+var BEGIN_ANGLE = -Math.PI / 2;
+var STEP = 1;
+component_1.VantComponent({
+  props: {
+    text: String,
+    lineCap: {
+      type: String,
+      value: 'round',
+    },
+    value: {
+      type: Number,
+      value: 0,
+      observer: 'reRender',
+    },
+    speed: {
+      type: Number,
+      value: 50,
+    },
+    size: {
+      type: Number,
+      value: 100,
+      observer: function () {
+        this.drawCircle(this.currentValue);
+      },
+    },
+    fill: String,
+    layerColor: {
+      type: String,
+      value: color_1.WHITE,
+    },
+    color: {
+      type: [String, Object],
+      value: color_1.BLUE,
+      observer: function () {
+        var _this = this;
+        this.setHoverColor().then(function () {
+          _this.drawCircle(_this.currentValue);
+        });
+      },
+    },
+    type: {
+      type: String,
+      value: '',
+    },
+    strokeWidth: {
+      type: Number,
+      value: 4,
+    },
+    clockwise: {
+      type: Boolean,
+      value: true,
+    },
+  },
+  data: {
+    hoverColor: color_1.BLUE,
+  },
+  methods: {
+    getContext: function () {
+      var _this = this;
+      var _a = this.data,
+        type = _a.type,
+        size = _a.size;
+      if (type === '') {
+        var ctx = wx.createCanvasContext('van-circle', this);
+        return Promise.resolve(ctx);
+      }
+      var dpr = utils_1.getSystemInfoSync().pixelRatio;
+      return new Promise(function (resolve) {
+        wx.createSelectorQuery()
+          .in(_this)
+          .select('#van-circle')
+          .node()
+          .exec(function (res) {
+            var canvas = res[0].node;
+            var ctx = canvas.getContext(type);
+            if (!_this.inited) {
+              _this.inited = true;
+              canvas.width = size * dpr;
+              canvas.height = size * dpr;
+              ctx.scale(dpr, dpr);
+            }
+            resolve(canvas_1.adaptor(ctx));
+          });
+      });
+    },
+    setHoverColor: function () {
+      var _this = this;
+      var _a = this.data,
+        color = _a.color,
+        size = _a.size;
+      if (validator_1.isObj(color)) {
+        return this.getContext().then(function (context) {
+          var LinearColor = context.createLinearGradient(size, 0, 0, 0);
+          Object.keys(color)
+            .sort(function (a, b) {
+              return parseFloat(a) - parseFloat(b);
+            })
+            .map(function (key) {
+              return LinearColor.addColorStop(
+                parseFloat(key) / 100,
+                color[key]
+              );
+            });
+          _this.hoverColor = LinearColor;
+        });
+      }
+      this.hoverColor = color;
+      return Promise.resolve();
+    },
+    presetCanvas: function (context, strokeStyle, beginAngle, endAngle, fill) {
+      var _a = this.data,
+        strokeWidth = _a.strokeWidth,
+        lineCap = _a.lineCap,
+        clockwise = _a.clockwise,
+        size = _a.size;
+      var position = size / 2;
+      var radius = position - strokeWidth / 2;
+      context.setStrokeStyle(strokeStyle);
+      context.setLineWidth(strokeWidth);
+      context.setLineCap(lineCap);
+      context.beginPath();
+      context.arc(position, position, radius, beginAngle, endAngle, !clockwise);
+      context.stroke();
+      if (fill) {
+        context.setFillStyle(fill);
+        context.fill();
+      }
+    },
+    renderLayerCircle: function (context) {
+      var _a = this.data,
+        layerColor = _a.layerColor,
+        fill = _a.fill;
+      this.presetCanvas(context, layerColor, 0, PERIMETER, fill);
+    },
+    renderHoverCircle: function (context, formatValue) {
+      var clockwise = this.data.clockwise;
+      // 结束角度
+      var progress = PERIMETER * (formatValue / 100);
+      var endAngle = clockwise
+        ? BEGIN_ANGLE + progress
+        : 3 * Math.PI - (BEGIN_ANGLE + progress);
+      this.presetCanvas(context, this.hoverColor, BEGIN_ANGLE, endAngle);
+    },
+    drawCircle: function (currentValue) {
+      var _this = this;
+      var size = this.data.size;
+      this.getContext().then(function (context) {
+        context.clearRect(0, 0, size, size);
+        _this.renderLayerCircle(context);
+        var formatValue = format(currentValue);
+        if (formatValue !== 0) {
+          _this.renderHoverCircle(context, formatValue);
+        }
+        context.draw();
+      });
+    },
+    reRender: function () {
+      var _this = this;
+      // tofector 动画暂时没有想到好的解决方案
+      var _a = this.data,
+        value = _a.value,
+        speed = _a.speed;
+      if (speed <= 0 || speed > 1000) {
+        this.drawCircle(value);
+        return;
+      }
+      this.clearInterval();
+      this.currentValue = this.currentValue || 0;
+      this.interval = setInterval(function () {
+        if (_this.currentValue !== value) {
+          if (_this.currentValue < value) {
+            _this.currentValue += STEP;
+          } else {
+            _this.currentValue -= STEP;
+          }
+          _this.drawCircle(_this.currentValue);
+        } else {
+          _this.clearInterval();
+        }
+      }, 1000 / speed);
+    },
+    clearInterval: function () {
+      if (this.interval) {
+        clearInterval(this.interval);
+        this.interval = null;
+      }
+    },
+  },
+  mounted: function () {
+    var _this = this;
+    this.currentValue = this.data.value;
+    this.setHoverColor().then(function () {
+      _this.drawCircle(_this.currentValue);
+    });
+  },
+  destroyed: function () {
+    this.clearInterval();
+  },
+});

+ 3 - 0
miniprogram_npm/@vant/weapp/circle/index.json

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

+ 9 - 0
miniprogram_npm/@vant/weapp/circle/index.wxml

@@ -0,0 +1,9 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view class="van-circle">
+  <canvas class="van-circle__canvas" type="{{ type }}" style="width: {{ utils.addUnit(size) }};height:{{ utils.addUnit(size) }}" id="van-circle" canvas-id="van-circle"></canvas>
+  <view wx:if="{{ !text }}" class="van-circle__text">
+    <slot></slot>
+  </view>
+  <cover-view wx:else class="van-circle__text">{{ text }}</cover-view>
+</view>

+ 1 - 0
miniprogram_npm/@vant/weapp/circle/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-circle{position:relative;display:inline-block;text-align:center}.van-circle__text{position:absolute;top:50%;left:0;width:100%;-webkit-transform:translateY(-50%);transform:translateY(-50%);color:#323233;color:var(--circle-text-color,#323233)}

+ 28 - 0
miniprogram_npm/@vant/weapp/col/index.js

@@ -0,0 +1,28 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var component_1 = require('../common/component');
+component_1.VantComponent({
+  relation: {
+    name: 'row',
+    type: 'ancestor',
+    current: 'col',
+  },
+  props: {
+    span: Number,
+    offset: Number,
+  },
+  data: {
+    viewStyle: '',
+  },
+  methods: {
+    setGutter: function (gutter) {
+      var padding = gutter / 2 + 'px';
+      var viewStyle = gutter
+        ? 'padding-left: ' + padding + '; padding-right: ' + padding + ';'
+        : '';
+      if (viewStyle !== this.data.viewStyle) {
+        this.setData({ viewStyle: viewStyle });
+      }
+    },
+  },
+});

+ 3 - 0
miniprogram_npm/@vant/weapp/col/index.json

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

+ 8 - 0
miniprogram_npm/@vant/weapp/col/index.wxml

@@ -0,0 +1,8 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view
+  class="custom-class {{ utils.bem('col', [span]) }} {{ offset ? 'van-col--offset-' + offset : '' }}"
+  style="{{ viewStyle }}"
+>
+  <slot />
+</view>

+ 1 - 0
miniprogram_npm/@vant/weapp/col/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-col{float:left;box-sizing:border-box}.van-col--1{width:4.16666667%}.van-col--offset-1{margin-left:4.16666667%}.van-col--2{width:8.33333333%}.van-col--offset-2{margin-left:8.33333333%}.van-col--3{width:12.5%}.van-col--offset-3{margin-left:12.5%}.van-col--4{width:16.66666667%}.van-col--offset-4{margin-left:16.66666667%}.van-col--5{width:20.83333333%}.van-col--offset-5{margin-left:20.83333333%}.van-col--6{width:25%}.van-col--offset-6{margin-left:25%}.van-col--7{width:29.16666667%}.van-col--offset-7{margin-left:29.16666667%}.van-col--8{width:33.33333333%}.van-col--offset-8{margin-left:33.33333333%}.van-col--9{width:37.5%}.van-col--offset-9{margin-left:37.5%}.van-col--10{width:41.66666667%}.van-col--offset-10{margin-left:41.66666667%}.van-col--11{width:45.83333333%}.van-col--offset-11{margin-left:45.83333333%}.van-col--12{width:50%}.van-col--offset-12{margin-left:50%}.van-col--13{width:54.16666667%}.van-col--offset-13{margin-left:54.16666667%}.van-col--14{width:58.33333333%}.van-col--offset-14{margin-left:58.33333333%}.van-col--15{width:62.5%}.van-col--offset-15{margin-left:62.5%}.van-col--16{width:66.66666667%}.van-col--offset-16{margin-left:66.66666667%}.van-col--17{width:70.83333333%}.van-col--offset-17{margin-left:70.83333333%}.van-col--18{width:75%}.van-col--offset-18{margin-left:75%}.van-col--19{width:79.16666667%}.van-col--offset-19{margin-left:79.16666667%}.van-col--20{width:83.33333333%}.van-col--offset-20{margin-left:83.33333333%}.van-col--21{width:87.5%}.van-col--offset-21{margin-left:87.5%}.van-col--22{width:91.66666667%}.van-col--offset-22{margin-left:91.66666667%}.van-col--23{width:95.83333333%}.van-col--offset-23{margin-left:95.83333333%}.van-col--24{width:100%}.van-col--offset-24{margin-left:100%}

+ 77 - 0
miniprogram_npm/@vant/weapp/collapse-item/animate.js

@@ -0,0 +1,77 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+exports.setContentAnimate = void 0;
+var version_1 = require('../common/version');
+var utils_1 = require('../common/utils');
+function useAnimate(context, expanded, mounted, height) {
+  var selector = '.van-collapse-item__wrapper';
+  if (expanded) {
+    context.animate(
+      selector,
+      [
+        { height: 0, ease: 'ease-in-out', offset: 0 },
+        { height: height + 'px', ease: 'ease-in-out', offset: 1 },
+        { height: 'auto', ease: 'ease-in-out', offset: 1 },
+      ],
+      mounted ? 300 : 0,
+      function () {
+        context.clearAnimation(selector);
+      }
+    );
+    return;
+  }
+  context.animate(
+    selector,
+    [
+      { height: height + 'px', ease: 'ease-in-out', offset: 0 },
+      { height: 0, ease: 'ease-in-out', offset: 1 },
+    ],
+    300,
+    function () {
+      context.clearAnimation(selector);
+    }
+  );
+}
+function useAnimation(context, expanded, mounted, height) {
+  var animation = wx.createAnimation({
+    duration: 0,
+    timingFunction: 'ease-in-out',
+  });
+  if (expanded) {
+    if (height === 0) {
+      animation.height('auto').top(1).step();
+    } else {
+      animation
+        .height(height)
+        .top(1)
+        .step({
+          duration: mounted ? 300 : 1,
+        })
+        .height('auto')
+        .step();
+    }
+    context.setData({
+      animation: animation.export(),
+    });
+    return;
+  }
+  animation.height(height).top(0).step({ duration: 1 }).height(0).step({
+    duration: 300,
+  });
+  context.setData({
+    animation: animation.export(),
+  });
+}
+function setContentAnimate(context, expanded, mounted) {
+  utils_1
+    .getRect(context, '.van-collapse-item__content')
+    .then(function (rect) {
+      return rect.height;
+    })
+    .then(function (height) {
+      version_1.canIUseAnimate()
+        ? useAnimate(context, expanded, mounted, height)
+        : useAnimation(context, expanded, mounted, height);
+    });
+}
+exports.setContentAnimate = setContentAnimate;

+ 71 - 0
miniprogram_npm/@vant/weapp/collapse-item/index.js

@@ -0,0 +1,71 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var component_1 = require('../common/component');
+var animate_1 = require('./animate');
+component_1.VantComponent({
+  classes: ['title-class', 'content-class'],
+  relation: {
+    name: 'collapse',
+    type: 'ancestor',
+    current: 'collapse-item',
+  },
+  props: {
+    name: null,
+    title: null,
+    value: null,
+    icon: String,
+    label: String,
+    disabled: Boolean,
+    clickable: Boolean,
+    border: {
+      type: Boolean,
+      value: true,
+    },
+    isLink: {
+      type: Boolean,
+      value: true,
+    },
+  },
+  data: {
+    expanded: false,
+  },
+  mounted: function () {
+    this.updateExpanded();
+    this.mounted = true;
+  },
+  methods: {
+    updateExpanded: function () {
+      if (!this.parent) {
+        return;
+      }
+      var _a = this.parent.data,
+        value = _a.value,
+        accordion = _a.accordion;
+      var _b = this.parent.children,
+        children = _b === void 0 ? [] : _b;
+      var name = this.data.name;
+      var index = children.indexOf(this);
+      var currentName = name == null ? index : name;
+      var expanded = accordion
+        ? value === currentName
+        : (value || []).some(function (name) {
+            return name === currentName;
+          });
+      if (expanded !== this.data.expanded) {
+        animate_1.setContentAnimate(this, expanded, this.mounted);
+      }
+      this.setData({ index: index, expanded: expanded });
+    },
+    onClick: function () {
+      if (this.data.disabled) {
+        return;
+      }
+      var _a = this.data,
+        name = _a.name,
+        expanded = _a.expanded;
+      var index = this.parent.children.indexOf(this);
+      var currentName = name == null ? index : name;
+      this.parent.switch(currentName, !expanded);
+    },
+  },
+});

+ 6 - 0
miniprogram_npm/@vant/weapp/collapse-item/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-cell": "../cell/index"
+  }
+}

+ 44 - 0
miniprogram_npm/@vant/weapp/collapse-item/index.wxml

@@ -0,0 +1,44 @@
+<wxs src="../wxs/utils.wxs" module="utils" />
+
+<view class="van-collapse-item custom-class {{ index !== 0 ? 'van-hairline--top' : '' }}">
+  <van-cell
+    title="{{ title }}"
+    title-class="title-class"
+    icon="{{ icon }}"
+    value="{{ value }}"
+    label="{{ label }}"
+    is-link="{{ isLink }}"
+    clickable="{{ clickable }}"
+    border="{{ border && expanded }}"
+    class="{{ utils.bem('collapse-item__title', { disabled, expanded }) }}"
+    right-icon-class="van-cell__right-icon"
+    custom-class="van-cell"
+    hover-class="van-cell--hover"
+    bind:click="onClick"
+  >
+    <slot
+      name="title"
+      slot="title"
+    />
+    <slot
+      name="icon"
+      slot="icon"
+    />
+    <slot name="value" />
+    <slot
+      name="right-icon"
+      slot="right-icon"
+    />
+  </van-cell>
+  <view
+    class="{{ utils.bem('collapse-item__wrapper') }}"
+    style="height: 0;"
+    animation="{{ animation }}"
+  >
+    <view
+      class="van-collapse-item__content content-class"
+    >
+      <slot />
+    </view>
+  </view>
+</view>

+ 1 - 0
miniprogram_npm/@vant/weapp/collapse-item/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-collapse-item__title .van-cell__right-icon{-webkit-transform:rotate(90deg);transform:rotate(90deg);transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;transition:-webkit-transform var(--collapse-item-transition-duration,.3s);transition:transform var(--collapse-item-transition-duration,.3s);transition:transform var(--collapse-item-transition-duration,.3s),-webkit-transform var(--collapse-item-transition-duration,.3s)}.van-collapse-item__title--expanded .van-cell__right-icon{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.van-collapse-item__title--disabled .van-cell,.van-collapse-item__title--disabled .van-cell__right-icon{color:#c8c9cc!important;color:var(--collapse-item-title-disabled-color,#c8c9cc)!important}.van-collapse-item__title--disabled .van-cell--hover{background-color:#fff!important;background-color:var(--white,#fff)!important}.van-collapse-item__wrapper{overflow:hidden}.van-collapse-item__content{padding:15px;padding:var(--collapse-item-content-padding,15px);color:#969799;color:var(--collapse-item-content-text-color,#969799);font-size:13px;font-size:var(--collapse-item-content-font-size,13px);line-height:1.5;line-height:var(--collapse-item-content-line-height,1.5);background-color:#fff;background-color:var(--collapse-item-content-background-color,#fff)}

+ 53 - 0
miniprogram_npm/@vant/weapp/collapse/index.js

@@ -0,0 +1,53 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var component_1 = require('../common/component');
+component_1.VantComponent({
+  relation: {
+    name: 'collapse-item',
+    type: 'descendant',
+    current: 'collapse',
+  },
+  props: {
+    value: {
+      type: null,
+      observer: 'updateExpanded',
+    },
+    accordion: {
+      type: Boolean,
+      observer: 'updateExpanded',
+    },
+    border: {
+      type: Boolean,
+      value: true,
+    },
+  },
+  methods: {
+    updateExpanded: function () {
+      this.children.forEach(function (child) {
+        child.updateExpanded();
+      });
+    },
+    switch: function (name, expanded) {
+      var _a = this.data,
+        accordion = _a.accordion,
+        value = _a.value;
+      var changeItem = name;
+      if (!accordion) {
+        name = expanded
+          ? (value || []).concat(name)
+          : (value || []).filter(function (activeName) {
+              return activeName !== name;
+            });
+      } else {
+        name = expanded ? name : '';
+      }
+      if (expanded) {
+        this.$emit('open', changeItem);
+      } else {
+        this.$emit('close', changeItem);
+      }
+      this.$emit('change', name);
+      this.$emit('input', name);
+    },
+  },
+});

+ 3 - 0
miniprogram_npm/@vant/weapp/collapse/index.json

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

+ 3 - 0
miniprogram_npm/@vant/weapp/collapse/index.wxml

@@ -0,0 +1,3 @@
+<view class="custom-class van-collapse {{ border ? 'van-hairline--top-bottom' : '' }}">
+  <slot />
+</view>

+ 1 - 0
miniprogram_npm/@vant/weapp/collapse/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';

+ 10 - 0
miniprogram_npm/@vant/weapp/common/color.js

@@ -0,0 +1,10 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+exports.GRAY_DARK = exports.GRAY = exports.ORANGE = exports.GREEN = exports.WHITE = exports.BLUE = exports.RED = void 0;
+exports.RED = '#ee0a24';
+exports.BLUE = '#1989fa';
+exports.WHITE = '#fff';
+exports.GREEN = '#07c160';
+exports.ORANGE = '#ff976a';
+exports.GRAY = '#323233';
+exports.GRAY_DARK = '#969799';

+ 123 - 0
miniprogram_npm/@vant/weapp/common/component.js

@@ -0,0 +1,123 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+exports.VantComponent = void 0;
+var basic_1 = require('../mixins/basic');
+var relationFunctions = {
+  ancestor: {
+    linked: function (parent) {
+      // @ts-ignore
+      this.parent = parent;
+    },
+    unlinked: function () {
+      // @ts-ignore
+      this.parent = null;
+    },
+  },
+  descendant: {
+    linked: function (child) {
+      // @ts-ignore
+      this.children = this.children || [];
+      // @ts-ignore
+      this.children.push(child);
+    },
+    unlinked: function (child) {
+      // @ts-ignore
+      this.children = (this.children || []).filter(function (it) {
+        return it !== child;
+      });
+    },
+  },
+};
+function mapKeys(source, target, map) {
+  Object.keys(map).forEach(function (key) {
+    if (source[key]) {
+      target[map[key]] = source[key];
+    }
+  });
+}
+function makeRelation(options, vantOptions, relation) {
+  var _a;
+  var type = relation.type,
+    name = relation.name,
+    linked = relation.linked,
+    unlinked = relation.unlinked,
+    linkChanged = relation.linkChanged;
+  var beforeCreate = vantOptions.beforeCreate,
+    destroyed = vantOptions.destroyed;
+  if (type === 'descendant') {
+    options.created = function () {
+      beforeCreate && beforeCreate.bind(this)();
+      this.children = this.children || [];
+    };
+    options.detached = function () {
+      this.children = [];
+      destroyed && destroyed.bind(this)();
+    };
+  }
+  options.relations = Object.assign(
+    options.relations || {},
+    ((_a = {}),
+    (_a['../' + name + '/index'] = {
+      type: type,
+      linked: function (node) {
+        relationFunctions[type].linked.bind(this)(node);
+        linked && linked.bind(this)(node);
+      },
+      linkChanged: function (node) {
+        linkChanged && linkChanged.bind(this)(node);
+      },
+      unlinked: function (node) {
+        relationFunctions[type].unlinked.bind(this)(node);
+        unlinked && unlinked.bind(this)(node);
+      },
+    }),
+    _a)
+  );
+}
+function VantComponent(vantOptions) {
+  if (vantOptions === void 0) {
+    vantOptions = {};
+  }
+  var options = {};
+  mapKeys(vantOptions, options, {
+    data: 'data',
+    props: 'properties',
+    mixins: 'behaviors',
+    methods: 'methods',
+    beforeCreate: 'created',
+    created: 'attached',
+    mounted: 'ready',
+    relations: 'relations',
+    destroyed: 'detached',
+    classes: 'externalClasses',
+  });
+  var relation = vantOptions.relation;
+  if (relation) {
+    makeRelation(options, vantOptions, relation);
+  }
+  // add default externalClasses
+  options.externalClasses = options.externalClasses || [];
+  options.externalClasses.push('custom-class');
+  // add default behaviors
+  options.behaviors = options.behaviors || [];
+  options.behaviors.push(basic_1.basic);
+  // map field to form-field behavior
+  if (vantOptions.field) {
+    options.behaviors.push('wx://form-field');
+  }
+  if (options.properties) {
+    Object.keys(options.properties).forEach(function (name) {
+      if (Array.isArray(options.properties[name])) {
+        // miniprogram do not allow multi type
+        options.properties[name] = null;
+      }
+    });
+  }
+  // add default options
+  options.options = {
+    multipleSlots: true,
+    addGlobalClass: true,
+  };
+  Component(options);
+}
+exports.VantComponent = VantComponent;

+ 1 - 0
miniprogram_npm/@vant/weapp/common/index.wxss

@@ -0,0 +1 @@
+.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{-webkit-line-clamp:3}.van-clearfix:after{display:table;clear:both;content:""}.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{position:absolute;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid #ebedf0;-webkit-transform:scale(.5);transform:scale(.5)}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px}

+ 1 - 0
miniprogram_npm/@vant/weapp/common/style/clearfix.wxss

@@ -0,0 +1 @@
+.van-clearfix:after{display:table;clear:both;content:""}

+ 1 - 0
miniprogram_npm/@vant/weapp/common/style/ellipsis.wxss

@@ -0,0 +1 @@
+.van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{-webkit-line-clamp:3}

+ 1 - 0
miniprogram_npm/@vant/weapp/common/style/hairline.wxss

@@ -0,0 +1 @@
+.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{position:absolute;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;content:" ";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid #ebedf0;-webkit-transform:scale(.5);transform:scale(.5)}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px}

+ 0 - 0
miniprogram_npm/@vant/weapp/common/style/mixins/clearfix.wxss


+ 0 - 0
miniprogram_npm/@vant/weapp/common/style/mixins/ellipsis.wxss


+ 0 - 0
miniprogram_npm/@vant/weapp/common/style/mixins/hairline.wxss


+ 0 - 0
miniprogram_npm/@vant/weapp/common/style/theme.wxss


+ 0 - 0
miniprogram_npm/@vant/weapp/common/style/var.wxss


+ 108 - 0
miniprogram_npm/@vant/weapp/common/utils.js

@@ -0,0 +1,108 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+exports.toPromise = exports.groupSetData = exports.getAllRect = exports.getRect = exports.pickExclude = exports.requestAnimationFrame = exports.addUnit = exports.getSystemInfoSync = exports.nextTick = exports.range = void 0;
+var validator_1 = require('./validator');
+var version_1 = require('./version');
+function range(num, min, max) {
+  return Math.min(Math.max(num, min), max);
+}
+exports.range = range;
+function nextTick(cb) {
+  if (version_1.canIUseNextTick()) {
+    wx.nextTick(cb);
+  } else {
+    setTimeout(function () {
+      cb();
+    }, 1000 / 30);
+  }
+}
+exports.nextTick = nextTick;
+var systemInfo;
+function getSystemInfoSync() {
+  if (systemInfo == null) {
+    systemInfo = wx.getSystemInfoSync();
+  }
+  return systemInfo;
+}
+exports.getSystemInfoSync = getSystemInfoSync;
+function addUnit(value) {
+  if (!validator_1.isDef(value)) {
+    return undefined;
+  }
+  value = String(value);
+  return validator_1.isNumber(value) ? value + 'px' : value;
+}
+exports.addUnit = addUnit;
+function requestAnimationFrame(cb) {
+  var systemInfo = getSystemInfoSync();
+  if (systemInfo.platform === 'devtools') {
+    return setTimeout(function () {
+      cb();
+    }, 1000 / 30);
+  }
+  return wx
+    .createSelectorQuery()
+    .selectViewport()
+    .boundingClientRect()
+    .exec(function () {
+      cb();
+    });
+}
+exports.requestAnimationFrame = requestAnimationFrame;
+function pickExclude(obj, keys) {
+  if (!validator_1.isPlainObject(obj)) {
+    return {};
+  }
+  return Object.keys(obj).reduce(function (prev, key) {
+    if (!keys.includes(key)) {
+      prev[key] = obj[key];
+    }
+    return prev;
+  }, {});
+}
+exports.pickExclude = pickExclude;
+function getRect(context, selector) {
+  return new Promise(function (resolve) {
+    wx.createSelectorQuery()
+      .in(context)
+      .select(selector)
+      .boundingClientRect()
+      .exec(function (rect) {
+        if (rect === void 0) {
+          rect = [];
+        }
+        return resolve(rect[0]);
+      });
+  });
+}
+exports.getRect = getRect;
+function getAllRect(context, selector) {
+  return new Promise(function (resolve) {
+    wx.createSelectorQuery()
+      .in(context)
+      .selectAll(selector)
+      .boundingClientRect()
+      .exec(function (rect) {
+        if (rect === void 0) {
+          rect = [];
+        }
+        return resolve(rect[0]);
+      });
+  });
+}
+exports.getAllRect = getAllRect;
+function groupSetData(context, cb) {
+  if (version_1.canIUseGroupSetData()) {
+    context.groupSetData(cb);
+  } else {
+    cb();
+  }
+}
+exports.groupSetData = groupSetData;
+function toPromise(promiseLike) {
+  if (validator_1.isPromise(promiseLike)) {
+    return promiseLike;
+  }
+  return Promise.resolve(promiseLike);
+}
+exports.toPromise = toPromise;

+ 42 - 0
miniprogram_npm/@vant/weapp/common/validator.js

@@ -0,0 +1,42 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+exports.isVideoUrl = exports.isImageUrl = exports.isBoolean = exports.isNumber = exports.isObj = exports.isDef = exports.isPromise = exports.isPlainObject = exports.isFunction = void 0;
+function isFunction(val) {
+  return typeof val === 'function';
+}
+exports.isFunction = isFunction;
+function isPlainObject(val) {
+  return val !== null && typeof val === 'object' && !Array.isArray(val);
+}
+exports.isPlainObject = isPlainObject;
+function isPromise(val) {
+  return isPlainObject(val) && isFunction(val.then) && isFunction(val.catch);
+}
+exports.isPromise = isPromise;
+function isDef(value) {
+  return value !== undefined && value !== null;
+}
+exports.isDef = isDef;
+function isObj(x) {
+  var type = typeof x;
+  return x !== null && (type === 'object' || type === 'function');
+}
+exports.isObj = isObj;
+function isNumber(value) {
+  return /^\d+(\.\d+)?$/.test(value);
+}
+exports.isNumber = isNumber;
+function isBoolean(value) {
+  return typeof value === 'boolean';
+}
+exports.isBoolean = isBoolean;
+var IMAGE_REGEXP = /\.(jpeg|jpg|gif|png|svg|webp|jfif|bmp|dpg)/i;
+var VIDEO_REGEXP = /\.(mp4|mpg|mpeg|dat|asf|avi|rm|rmvb|mov|wmv|flv|mkv)/i;
+function isImageUrl(url) {
+  return IMAGE_REGEXP.test(url);
+}
+exports.isImageUrl = isImageUrl;
+function isVideoUrl(url) {
+  return VIDEO_REGEXP.test(url);
+}
+exports.isVideoUrl = isVideoUrl;

+ 50 - 0
miniprogram_npm/@vant/weapp/common/version.js

@@ -0,0 +1,50 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+exports.canIUseNextTick = exports.canIUseGroupSetData = exports.canIUseAnimate = exports.canIUseFormFieldButton = exports.canIUseModel = void 0;
+var utils_1 = require('./utils');
+function compareVersion(v1, v2) {
+  v1 = v1.split('.');
+  v2 = v2.split('.');
+  var len = Math.max(v1.length, v2.length);
+  while (v1.length < len) {
+    v1.push('0');
+  }
+  while (v2.length < len) {
+    v2.push('0');
+  }
+  for (var i = 0; i < len; i++) {
+    var num1 = parseInt(v1[i], 10);
+    var num2 = parseInt(v2[i], 10);
+    if (num1 > num2) {
+      return 1;
+    }
+    if (num1 < num2) {
+      return -1;
+    }
+  }
+  return 0;
+}
+function canIUseModel() {
+  var system = utils_1.getSystemInfoSync();
+  return compareVersion(system.SDKVersion, '2.9.3') >= 0;
+}
+exports.canIUseModel = canIUseModel;
+function canIUseFormFieldButton() {
+  var system = utils_1.getSystemInfoSync();
+  return compareVersion(system.SDKVersion, '2.10.3') >= 0;
+}
+exports.canIUseFormFieldButton = canIUseFormFieldButton;
+function canIUseAnimate() {
+  var system = utils_1.getSystemInfoSync();
+  return compareVersion(system.SDKVersion, '2.9.0') >= 0;
+}
+exports.canIUseAnimate = canIUseAnimate;
+function canIUseGroupSetData() {
+  var system = utils_1.getSystemInfoSync();
+  return compareVersion(system.SDKVersion, '2.4.0') >= 0;
+}
+exports.canIUseGroupSetData = canIUseGroupSetData;
+function canIUseNextTick() {
+  return wx.canIUse('nextTick');
+}
+exports.canIUseNextTick = canIUseNextTick;

+ 103 - 0
miniprogram_npm/@vant/weapp/count-down/index.js

@@ -0,0 +1,103 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+var component_1 = require('../common/component');
+var utils_1 = require('./utils');
+function simpleTick(fn) {
+  return setTimeout(fn, 30);
+}
+component_1.VantComponent({
+  props: {
+    useSlot: Boolean,
+    millisecond: Boolean,
+    time: {
+      type: Number,
+      observer: 'reset',
+    },
+    format: {
+      type: String,
+      value: 'HH:mm:ss',
+    },
+    autoStart: {
+      type: Boolean,
+      value: true,
+    },
+  },
+  data: {
+    timeData: utils_1.parseTimeData(0),
+    formattedTime: '0',
+  },
+  destroyed: function () {
+    clearTimeout(this.tid);
+    this.tid = null;
+  },
+  methods: {
+    // 开始
+    start: function () {
+      if (this.counting) {
+        return;
+      }
+      this.counting = true;
+      this.endTime = Date.now() + this.remain;
+      this.tick();
+    },
+    // 暂停
+    pause: function () {
+      this.counting = false;
+      clearTimeout(this.tid);
+    },
+    // 重置
+    reset: function () {
+      this.pause();
+      this.remain = this.data.time;
+      this.setRemain(this.remain);
+      if (this.data.autoStart) {
+        this.start();
+      }
+    },
+    tick: function () {
+      if (this.data.millisecond) {
+        this.microTick();
+      } else {
+        this.macroTick();
+      }
+    },
+    microTick: function () {
+      var _this = this;
+      this.tid = simpleTick(function () {
+        _this.setRemain(_this.getRemain());
+        if (_this.remain !== 0) {
+          _this.microTick();
+        }
+      });
+    },
+    macroTick: function () {
+      var _this = this;
+      this.tid = simpleTick(function () {
+        var remain = _this.getRemain();
+        if (!utils_1.isSameSecond(remain, _this.remain) || remain === 0) {
+          _this.setRemain(remain);
+        }
+        if (_this.remain !== 0) {
+          _this.macroTick();
+        }
+      });
+    },
+    getRemain: function () {
+      return Math.max(this.endTime - Date.now(), 0);
+    },
+    setRemain: function (remain) {
+      this.remain = remain;
+      var timeData = utils_1.parseTimeData(remain);
+      if (this.data.useSlot) {
+        this.$emit('change', timeData);
+      }
+      this.setData({
+        formattedTime: utils_1.parseFormat(this.data.format, timeData),
+      });
+      if (remain === 0) {
+        this.pause();
+        this.$emit('finish');
+      }
+    },
+  },
+});

+ 3 - 0
miniprogram_npm/@vant/weapp/count-down/index.json

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

+ 4 - 0
miniprogram_npm/@vant/weapp/count-down/index.wxml

@@ -0,0 +1,4 @@
+<view class="van-count-down">
+  <slot wx:if="{{ useSlot }}"/>
+  <block wx:else>{{ formattedTime }}</block>
+</view>

+ 1 - 0
miniprogram_npm/@vant/weapp/count-down/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';.van-count-down{color:#323233;color:var(--count-down-text-color,#323233);font-size:14px;font-size:var(--count-down-font-size,14px);line-height:20px;line-height:var(--count-down-line-height,20px)}

+ 65 - 0
miniprogram_npm/@vant/weapp/count-down/utils.js

@@ -0,0 +1,65 @@
+'use strict';
+Object.defineProperty(exports, '__esModule', { value: true });
+exports.isSameSecond = exports.parseFormat = exports.parseTimeData = void 0;
+function padZero(num, targetLength) {
+  if (targetLength === void 0) {
+    targetLength = 2;
+  }
+  var str = num + '';
+  while (str.length < targetLength) {
+    str = '0' + str;
+  }
+  return str;
+}
+var SECOND = 1000;
+var MINUTE = 60 * SECOND;
+var HOUR = 60 * MINUTE;
+var DAY = 24 * HOUR;
+function parseTimeData(time) {
+  var days = Math.floor(time / DAY);
+  var hours = Math.floor((time % DAY) / HOUR);
+  var minutes = Math.floor((time % HOUR) / MINUTE);
+  var seconds = Math.floor((time % MINUTE) / SECOND);
+  var milliseconds = Math.floor(time % SECOND);
+  return {
+    days: days,
+    hours: hours,
+    minutes: minutes,
+    seconds: seconds,
+    milliseconds: milliseconds,
+  };
+}
+exports.parseTimeData = parseTimeData;
+function parseFormat(format, timeData) {
+  var days = timeData.days;
+  var hours = timeData.hours,
+    minutes = timeData.minutes,
+    seconds = timeData.seconds,
+    milliseconds = timeData.milliseconds;
+  if (format.indexOf('DD') === -1) {
+    hours += days * 24;
+  } else {
+    format = format.replace('DD', padZero(days));
+  }
+  if (format.indexOf('HH') === -1) {
+    minutes += hours * 60;
+  } else {
+    format = format.replace('HH', padZero(hours));
+  }
+  if (format.indexOf('mm') === -1) {
+    seconds += minutes * 60;
+  } else {
+    format = format.replace('mm', padZero(minutes));
+  }
+  if (format.indexOf('ss') === -1) {
+    milliseconds += seconds * 1000;
+  } else {
+    format = format.replace('ss', padZero(seconds));
+  }
+  return format.replace('SSS', padZero(milliseconds, 3));
+}
+exports.parseFormat = parseFormat;
+function isSameSecond(time1, time2) {
+  return Math.floor(time1 / 1000) === Math.floor(time2 / 1000);
+}
+exports.isSameSecond = isSameSecond;

+ 381 - 0
miniprogram_npm/@vant/weapp/datetime-picker/index.js

@@ -0,0 +1,381 @@
+'use strict';
+var __assign =
+  (this && this.__assign) ||
+  function () {
+    __assign =
+      Object.assign ||
+      function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+          s = arguments[i];
+          for (var p in s)
+            if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+      };
+    return __assign.apply(this, arguments);
+  };
+var __spreadArrays =
+  (this && this.__spreadArrays) ||
+  function () {
+    for (var s = 0, i = 0, il = arguments.length; i < il; i++)
+      s += arguments[i].length;
+    for (var r = Array(s), k = 0, i = 0; i < il; i++)
+      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
+        r[k] = a[j];
+    return r;
+  };
+Object.defineProperty(exports, '__esModule', { value: true });
+var component_1 = require('../common/component');
+var validator_1 = require('../common/validator');
+var shared_1 = require('../picker/shared');
+var currentYear = new Date().getFullYear();
+function isValidDate(date) {
+  return validator_1.isDef(date) && !isNaN(new Date(date).getTime());
+}
+function range(num, min, max) {
+  return Math.min(Math.max(num, min), max);
+}
+function padZero(val) {
+  return ('00' + val).slice(-2);
+}
+function times(n, iteratee) {
+  var index = -1;
+  var result = Array(n < 0 ? 0 : n);
+  while (++index < n) {
+    result[index] = iteratee(index);
+  }
+  return result;
+}
+function getTrueValue(formattedValue) {
+  if (formattedValue === undefined) {
+    formattedValue = '1';
+  }
+  while (isNaN(parseInt(formattedValue, 10))) {
+    formattedValue = formattedValue.slice(1);
+  }
+  return parseInt(formattedValue, 10);
+}
+function getMonthEndDay(year, month) {
+  return 32 - new Date(year, month - 1, 32).getDate();
+}
+var defaultFormatter = function (type, value) {
+  return value;
+};
+component_1.VantComponent({
+  classes: ['active-class', 'toolbar-class', 'column-class'],
+  props: __assign(__assign({}, shared_1.pickerProps), {
+    value: {
+      type: null,
+      observer: 'updateValue',
+    },
+    filter: null,
+    type: {
+      type: String,
+      value: 'datetime',
+      observer: 'updateValue',
+    },
+    showToolbar: {
+      type: Boolean,
+      value: true,
+    },
+    formatter: {
+      type: null,
+      value: defaultFormatter,
+    },
+    minDate: {
+      type: Number,
+      value: new Date(currentYear - 10, 0, 1).getTime(),
+      observer: 'updateValue',
+    },
+    maxDate: {
+      type: Number,
+      value: new Date(currentYear + 10, 11, 31).getTime(),
+      observer: 'updateValue',
+    },
+    minHour: {
+      type: Number,
+      value: 0,
+      observer: 'updateValue',
+    },
+    maxHour: {
+      type: Number,
+      value: 23,
+      observer: 'updateValue',
+    },
+    minMinute: {
+      type: Number,
+      value: 0,
+      observer: 'updateValue',
+    },
+    maxMinute: {
+      type: Number,
+      value: 59,
+      observer: 'updateValue',
+    },
+  }),
+  data: {
+    innerValue: Date.now(),
+    columns: [],
+  },
+  methods: {
+    updateValue: function () {
+      var _this = this;
+      var data = this.data;
+      var val = this.correctValue(data.value);
+      var isEqual = val === data.innerValue;
+      if (!isEqual) {
+        this.updateColumnValue(val).then(function () {
+          _this.$emit('input', val);
+        });
+      } else {
+        this.updateColumns();
+      }
+    },
+    getPicker: function () {
+      if (this.picker == null) {
+        this.picker = this.selectComponent('.van-datetime-picker');
+        var picker_1 = this.picker;
+        var setColumnValues_1 = picker_1.setColumnValues;
+        picker_1.setColumnValues = function () {
+          var args = [];
+          for (var _i = 0; _i < arguments.length; _i++) {
+            args[_i] = arguments[_i];
+          }
+          return setColumnValues_1.apply(
+            picker_1,
+            __spreadArrays(args, [false])
+          );
+        };
+      }
+      return this.picker;
+    },
+    updateColumns: function () {
+      var _a = this.data.formatter,
+        formatter = _a === void 0 ? defaultFormatter : _a;
+      var results = this.getOriginColumns().map(function (column) {
+        return {
+          values: column.values.map(function (value) {
+            return formatter(column.type, value);
+          }),
+        };
+      });
+      return this.set({ columns: results });
+    },
+    getOriginColumns: function () {
+      var filter = this.data.filter;
+      var results = this.getRanges().map(function (_a) {
+        var type = _a.type,
+          range = _a.range;
+        var values = times(range[1] - range[0] + 1, function (index) {
+          var value = range[0] + index;
+          value = type === 'year' ? '' + value : padZero(value);
+          return value;
+        });
+        if (filter) {
+          values = filter(type, values);
+        }
+        return { type: type, values: values };
+      });
+      return results;
+    },
+    getRanges: function () {
+      var data = this.data;
+      if (data.type === 'time') {
+        return [
+          {
+            type: 'hour',
+            range: [data.minHour, data.maxHour],
+          },
+          {
+            type: 'minute',
+            range: [data.minMinute, data.maxMinute],
+          },
+        ];
+      }
+      var _a = this.getBoundary('max', data.innerValue),
+        maxYear = _a.maxYear,
+        maxDate = _a.maxDate,
+        maxMonth = _a.maxMonth,
+        maxHour = _a.maxHour,
+        maxMinute = _a.maxMinute;
+      var _b = this.getBoundary('min', data.innerValue),
+        minYear = _b.minYear,
+        minDate = _b.minDate,
+        minMonth = _b.minMonth,
+        minHour = _b.minHour,
+        minMinute = _b.minMinute;
+      var result = [
+        {
+          type: 'year',
+          range: [minYear, maxYear],
+        },
+        {
+          type: 'month',
+          range: [minMonth, maxMonth],
+        },
+        {
+          type: 'day',
+          range: [minDate, maxDate],
+        },
+        {
+          type: 'hour',
+          range: [minHour, maxHour],
+        },
+        {
+          type: 'minute',
+          range: [minMinute, maxMinute],
+        },
+      ];
+      if (data.type === 'date') result.splice(3, 2);
+      if (data.type === 'year-month') result.splice(2, 3);
+      return result;
+    },
+    correctValue: function (value) {
+      var data = this.data;
+      // validate value
+      var isDateType = data.type !== 'time';
+      if (isDateType && !isValidDate(value)) {
+        value = data.minDate;
+      } else if (!isDateType && !value) {
+        var minHour = data.minHour;
+        value = padZero(minHour) + ':00';
+      }
+      // time type
+      if (!isDateType) {
+        var _a = value.split(':'),
+          hour = _a[0],
+          minute = _a[1];
+        hour = padZero(range(hour, data.minHour, data.maxHour));
+        minute = padZero(range(minute, data.minMinute, data.maxMinute));
+        return hour + ':' + minute;
+      }
+      // date type
+      value = Math.max(value, data.minDate);
+      value = Math.min(value, data.maxDate);
+      return value;
+    },
+    getBoundary: function (type, innerValue) {
+      var _a;
+      var value = new Date(innerValue);
+      var boundary = new Date(this.data[type + 'Date']);
+      var year = boundary.getFullYear();
+      var month = 1;
+      var date = 1;
+      var hour = 0;
+      var minute = 0;
+      if (type === 'max') {
+        month = 12;
+        date = getMonthEndDay(value.getFullYear(), value.getMonth() + 1);
+        hour = 23;
+        minute = 59;
+      }
+      if (value.getFullYear() === year) {
+        month = boundary.getMonth() + 1;
+        if (value.getMonth() + 1 === month) {
+          date = boundary.getDate();
+          if (value.getDate() === date) {
+            hour = boundary.getHours();
+            if (value.getHours() === hour) {
+              minute = boundary.getMinutes();
+            }
+          }
+        }
+      }
+      return (
+        (_a = {}),
+        (_a[type + 'Year'] = year),
+        (_a[type + 'Month'] = month),
+        (_a[type + 'Date'] = date),
+        (_a[type + 'Hour'] = hour),
+        (_a[type + 'Minute'] = minute),
+        _a
+      );
+    },
+    onCancel: function () {
+      this.$emit('cancel');
+    },
+    onConfirm: function () {
+      this.$emit('confirm', this.data.innerValue);
+    },
+    onChange: function () {
+      var _this = this;
+      var data = this.data;
+      var value;
+      var picker = this.getPicker();
+      var originColumns = this.getOriginColumns();
+      if (data.type === 'time') {
+        var indexes = picker.getIndexes();
+        value =
+          +originColumns[0].values[indexes[0]] +
+          ':' +
+          +originColumns[1].values[indexes[1]];
+      } else {
+        var indexes = picker.getIndexes();
+        var values = indexes.map(function (value, index) {
+          return originColumns[index].values[value];
+        });
+        var year = getTrueValue(values[0]);
+        var month = getTrueValue(values[1]);
+        var maxDate = getMonthEndDay(year, month);
+        var date = getTrueValue(values[2]);
+        if (data.type === 'year-month') {
+          date = 1;
+        }
+        date = date > maxDate ? maxDate : date;
+        var hour = 0;
+        var minute = 0;
+        if (data.type === 'datetime') {
+          hour = getTrueValue(values[3]);
+          minute = getTrueValue(values[4]);
+        }
+        value = new Date(year, month - 1, date, hour, minute);
+      }
+      value = this.correctValue(value);
+      this.updateColumnValue(value).then(function () {
+        _this.$emit('input', value);
+        _this.$emit('change', picker);
+      });
+    },
+    updateColumnValue: function (value) {
+      var _this = this;
+      var values = [];
+      var type = this.data.type;
+      var formatter = this.data.formatter || defaultFormatter;
+      var picker = this.getPicker();
+      if (type === 'time') {
+        var pair = value.split(':');
+        values = [formatter('hour', pair[0]), formatter('minute', pair[1])];
+      } else {
+        var date = new Date(value);
+        values = [
+          formatter('year', '' + date.getFullYear()),
+          formatter('month', padZero(date.getMonth() + 1)),
+        ];
+        if (type === 'date') {
+          values.push(formatter('day', padZero(date.getDate())));
+        }
+        if (type === 'datetime') {
+          values.push(
+            formatter('day', padZero(date.getDate())),
+            formatter('hour', padZero(date.getHours())),
+            formatter('minute', padZero(date.getMinutes()))
+          );
+        }
+      }
+      return this.set({ innerValue: value })
+        .then(function () {
+          return _this.updateColumns();
+        })
+        .then(function () {
+          return picker.setValues(values);
+        });
+    },
+  },
+  created: function () {
+    var _this = this;
+    var innerValue = this.correctValue(this.data.value);
+    this.updateColumnValue(innerValue).then(function () {
+      _this.$emit('input', innerValue);
+    });
+  },
+});

+ 6 - 0
miniprogram_npm/@vant/weapp/datetime-picker/index.json

@@ -0,0 +1,6 @@
+{
+  "component": true,
+  "usingComponents": {
+    "van-picker": "../picker/index"
+  }
+}

+ 16 - 0
miniprogram_npm/@vant/weapp/datetime-picker/index.wxml

@@ -0,0 +1,16 @@
+<van-picker
+  class="van-datetime-picker"
+  active-class="active-class"
+  toolbar-class="toolbar-class"
+  column-class="column-class"
+  title="{{ title }}"
+  columns="{{ columns }}"
+  item-height="{{ itemHeight }}"
+  show-toolbar="{{ showToolbar }}"
+  visible-item-count="{{ visibleItemCount }}"
+  confirm-button-text="{{ confirmButtonText }}"
+  cancel-button-text="{{ cancelButtonText }}"
+  bind:change="onChange"
+  bind:confirm="onConfirm"
+  bind:cancel="onCancel"
+/>

+ 1 - 0
miniprogram_npm/@vant/weapp/datetime-picker/index.wxss

@@ -0,0 +1 @@
+@import '../common/index.wxss';

+ 2 - 0
miniprogram_npm/@vant/weapp/definitions/index.js

@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });

+ 2 - 0
miniprogram_npm/@vant/weapp/definitions/weapp.js

@@ -0,0 +1,2 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });

+ 104 - 0
miniprogram_npm/@vant/weapp/dialog/dialog.js

@@ -0,0 +1,104 @@
+'use strict';
+var __assign =
+  (this && this.__assign) ||
+  function () {
+    __assign =
+      Object.assign ||
+      function (t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+          s = arguments[i];
+          for (var p in s)
+            if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
+        }
+        return t;
+      };
+    return __assign.apply(this, arguments);
+  };
+Object.defineProperty(exports, '__esModule', { value: true });
+var queue = [];
+var defaultOptions = {
+  show: false,
+  title: '',
+  width: null,
+  theme: 'default',
+  message: '',
+  zIndex: 100,
+  overlay: true,
+  selector: '#van-dialog',
+  className: '',
+  asyncClose: false,
+  beforeClose: null,
+  transition: 'scale',
+  customStyle: '',
+  messageAlign: '',
+  overlayStyle: '',
+  confirmButtonText: '确认',
+  cancelButtonText: '取消',
+  showConfirmButton: true,
+  showCancelButton: false,
+  closeOnClickOverlay: false,
+  confirmButtonOpenType: '',
+};
+var currentOptions = __assign({}, defaultOptions);
+function getContext() {
+  var pages = getCurrentPages();
+  return pages[pages.length - 1];
+}
+var Dialog = function (options) {
+  options = __assign(__assign({}, currentOptions), options);
+  return new Promise(function (resolve, reject) {
+    var context = options.context || getContext();
+    var dialog = context.selectComponent(options.selector);
+    delete options.context;
+    delete options.selector;
+    if (dialog) {
+      dialog.setData(
+        __assign(
+          {
+            callback: function (action, instance) {
+              action === 'confirm' ? resolve(instance) : reject(instance);
+            },
+          },
+          options
+        )
+      );
+      wx.nextTick(function () {
+        dialog.setData({ show: true });
+      });
+      queue.push(dialog);
+    } else {
+      console.warn(
+        '未找到 van-dialog 节点,请确认 selector 及 context 是否正确'
+      );
+    }
+  });
+};
+Dialog.alert = function (options) {
+  return Dialog(options);
+};
+Dialog.confirm = function (options) {
+  return Dialog(__assign({ showCancelButton: true }, options));
+};
+Dialog.close = function () {
+  queue.forEach(function (dialog) {
+    dialog.close();
+  });
+  queue = [];
+};
+Dialog.stopLoading = function () {
+  queue.forEach(function (dialog) {
+    dialog.stopLoading();
+  });
+};
+Dialog.currentOptions = currentOptions;
+Dialog.defaultOptions = defaultOptions;
+Dialog.setDefaultOptions = function (options) {
+  currentOptions = __assign(__assign({}, currentOptions), options);
+  Dialog.currentOptions = currentOptions;
+};
+Dialog.resetDefaultOptions = function () {
+  currentOptions = __assign({}, defaultOptions);
+  Dialog.currentOptions = currentOptions;
+};
+Dialog.resetDefaultOptions();
+exports.default = Dialog;

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