diff --git a/wechat/README.md b/wechat/README.md new file mode 100644 index 00000000..e097b0ca --- /dev/null +++ b/wechat/README.md @@ -0,0 +1,12 @@ +# 云开发 quickstart + +这是云开发的快速启动指引,其中演示了如何上手使用云开发的三大基础能力: + +- 数据库:一个既可在小程序前端操作,也能在云函数中读写的 JSON 文档型数据库 +- 文件存储:在小程序前端直接上传/下载云端文件,在云开发控制台可视化管理 +- 云函数:在云端运行的代码,微信私有协议天然鉴权,开发者只需编写业务逻辑代码 + +## 参考文档 + +- [云开发文档](https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/getting-started.html) + diff --git a/wechat/cloudfunctions/callback/config.json b/wechat/cloudfunctions/callback/config.json new file mode 100644 index 00000000..43aa5fcf --- /dev/null +++ b/wechat/cloudfunctions/callback/config.json @@ -0,0 +1,7 @@ +{ + "permissions": { + "openapi": [ + "customerServiceMessage.send" + ] + } +} \ No newline at end of file diff --git a/wechat/cloudfunctions/callback/index.js b/wechat/cloudfunctions/callback/index.js new file mode 100644 index 00000000..2f4ff454 --- /dev/null +++ b/wechat/cloudfunctions/callback/index.js @@ -0,0 +1,25 @@ +const cloud = require('wx-server-sdk') + +cloud.init({ + // API 调用都保持和云函数当前所在环境一致 + env: cloud.DYNAMIC_CURRENT_ENV +}) + +// 云函数入口函数 +exports.main = async (event, context) => { + console.log(event) + + const { OPENID } = cloud.getWXContext() + + const result = await cloud.openapi.customerServiceMessage.send({ + touser: OPENID, + msgtype: 'text', + text: { + content: `收到:${event.Content}`, + } + }) + + console.log(result) + + return result +} diff --git a/wechat/cloudfunctions/callback/package.json b/wechat/cloudfunctions/callback/package.json new file mode 100644 index 00000000..2e6bc01b --- /dev/null +++ b/wechat/cloudfunctions/callback/package.json @@ -0,0 +1,14 @@ +{ + "name": "callback", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "wx-server-sdk": "~2.5.1" + } +} \ No newline at end of file diff --git a/wechat/cloudfunctions/echo/config.json b/wechat/cloudfunctions/echo/config.json new file mode 100644 index 00000000..16348ced --- /dev/null +++ b/wechat/cloudfunctions/echo/config.json @@ -0,0 +1,5 @@ +{ + "permissions": { + "openapi": [] + } +} diff --git a/wechat/cloudfunctions/echo/index.js b/wechat/cloudfunctions/echo/index.js new file mode 100644 index 00000000..4f838788 --- /dev/null +++ b/wechat/cloudfunctions/echo/index.js @@ -0,0 +1,8 @@ +const cloud = require('wx-server-sdk') + +exports.main = async (event, context) => { + // event.userInfo 是已废弃的保留字段,在此不做展示 + // 获取 OPENID 等微信上下文请使用 cloud.getWXContext() + delete event.userInfo + return event +} diff --git a/wechat/cloudfunctions/echo/package.json b/wechat/cloudfunctions/echo/package.json new file mode 100644 index 00000000..78bff6b6 --- /dev/null +++ b/wechat/cloudfunctions/echo/package.json @@ -0,0 +1,14 @@ +{ + "name": "echo", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "wx-server-sdk": "~2.5.1" + } +} \ No newline at end of file diff --git a/wechat/cloudfunctions/login/config.json b/wechat/cloudfunctions/login/config.json new file mode 100644 index 00000000..16348ced --- /dev/null +++ b/wechat/cloudfunctions/login/config.json @@ -0,0 +1,5 @@ +{ + "permissions": { + "openapi": [] + } +} diff --git a/wechat/cloudfunctions/login/index.js b/wechat/cloudfunctions/login/index.js new file mode 100644 index 00000000..46c44aad --- /dev/null +++ b/wechat/cloudfunctions/login/index.js @@ -0,0 +1,36 @@ +// 云函数模板 +// 部署:在 cloud-functions/login 文件夹右击选择 “上传并部署” + +const cloud = require('wx-server-sdk') + +// 初始化 cloud +cloud.init({ + // API 调用都保持和云函数当前所在环境一致 + env: cloud.DYNAMIC_CURRENT_ENV +}) + +/** + * 这个示例将经自动鉴权过的小程序用户 openid 返回给小程序端 + * + * event 参数包含小程序端调用传入的 data + * + */ +exports.main = async (event, context) => { + console.log(event) + console.log(context) + + // 可执行其他自定义逻辑 + // console.log 的内容可以在云开发云函数调用日志查看 + + // 获取 WX Context (微信调用上下文),包括 OPENID、APPID、及 UNIONID(需满足 UNIONID 获取条件)等信息 + const wxContext = cloud.getWXContext() + + return { + event, + openid: wxContext.OPENID, + appid: wxContext.APPID, + unionid: wxContext.UNIONID, + env: wxContext.ENV, + } +} + diff --git a/wechat/cloudfunctions/login/package.json b/wechat/cloudfunctions/login/package.json new file mode 100644 index 00000000..029ec82e --- /dev/null +++ b/wechat/cloudfunctions/login/package.json @@ -0,0 +1,14 @@ +{ + "name": "login", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "wx-server-sdk": "~2.5.1" + } +} diff --git a/wechat/cloudfunctions/openapi/config.json b/wechat/cloudfunctions/openapi/config.json new file mode 100644 index 00000000..0074569f --- /dev/null +++ b/wechat/cloudfunctions/openapi/config.json @@ -0,0 +1,15 @@ +{ + "permissions": { + "openapi": [ + "wxacode.get", + "subscribeMessage.send", + "subscribeMessage.addTemplate", + "templateMessage.send", + "templateMessage.addTemplate", + "templateMessage.deleteTemplate", + "templateMessage.getTemplateList", + "templateMessage.getTemplateLibraryById", + "templateMessage.getTemplateLibraryList" + ] + } +} \ No newline at end of file diff --git a/wechat/cloudfunctions/openapi/index.js b/wechat/cloudfunctions/openapi/index.js new file mode 100644 index 00000000..be4cfe84 --- /dev/null +++ b/wechat/cloudfunctions/openapi/index.js @@ -0,0 +1,86 @@ +// 云函数入口文件 +const cloud = require('wx-server-sdk') + +cloud.init() + +// 云函数入口函数 +exports.main = async (event, context) => { + console.log(event) + switch (event.action) { + case 'requestSubscribeMessage': { + return requestSubscribeMessage(event) + } + case 'sendSubscribeMessage': { + return sendSubscribeMessage(event) + } + case 'getWXACode': { + return getWXACode(event) + } + case 'getOpenData': { + return getOpenData(event) + } + default: { + return + } + } +} + +async function requestSubscribeMessage(event) { + // 此处为模板 ID,开发者需要到小程序管理后台 - 订阅消息 - 公共模板库中添加模板, + // 然后在我的模板中找到对应模板的 ID,填入此处 + return '请到管理后台申请模板 ID 然后在此替换' // 如 'N_J6F05_bjhqd6zh2h1LHJ9TAv9IpkCiAJEpSw0PrmQ' +} + +async function sendSubscribeMessage(event) { + const { OPENID } = cloud.getWXContext() + + const { templateId } = event + + const sendResult = await cloud.openapi.subscribeMessage.send({ + touser: OPENID, + templateId, + miniprogram_state: 'developer', + page: 'pages/openapi/openapi', + // 此处字段应修改为所申请模板所要求的字段 + data: { + thing1: { + value: '咖啡', + }, + time3: { + value: '2020-01-01 00:00', + }, + } + }) + + return sendResult +} + +async function getWXACode(event) { + // 此处将获取永久有效的小程序码,并将其保存在云文件存储中,最后返回云文件 ID 给前端使用 + + const wxacodeResult = await cloud.openapi.wxacode.get({ + path: 'pages/openapi/openapi', + }) + + const fileExtensionMatches = wxacodeResult.contentType.match(/\/([^/]+)/) + const fileExtension = (fileExtensionMatches && fileExtensionMatches[1]) || 'jpg' + + const uploadResult = await cloud.uploadFile({ + // 云文件路径,此处为演示采用一个固定名称 + cloudPath: `wxacode_default_openapi_page.${fileExtension}`, + // 要上传的文件内容可直接传入图片 Buffer + fileContent: wxacodeResult.buffer, + }) + + if (!uploadResult.fileID) { + throw new Error(`upload failed with empty fileID and storage server status code ${uploadResult.statusCode}`) + } + + return uploadResult.fileID +} + +async function getOpenData(event) { + return cloud.getOpenData({ + list: event.openData.list, + }) +} diff --git a/wechat/cloudfunctions/openapi/package.json b/wechat/cloudfunctions/openapi/package.json new file mode 100644 index 00000000..2760a42b --- /dev/null +++ b/wechat/cloudfunctions/openapi/package.json @@ -0,0 +1,14 @@ +{ + "name": "openapi", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "wx-server-sdk": "~2.5.1" + } +} diff --git a/wechat/miniprogram/API/request.js b/wechat/miniprogram/API/request.js new file mode 100644 index 00000000..621ba142 --- /dev/null +++ b/wechat/miniprogram/API/request.js @@ -0,0 +1,43 @@ + +const baseURL = 'http://106.12.9.213:80/prod-api'; +const token = wx.getStorageSync('token') || ''; + +const loginApi = (url, params = {} ) => { + return new Promise((resolve,reject) => { + wx.request({ + url:baseURL+url, + ...params, + success:(res)=>{ + resolve(res); + }, + fail:(err) => { + reject(err) + } + }) + }) + } + +const requestApi = ( url, params={} ) => { + return new Promise((resolve,reject) => { + wx.request({ + url:baseURL+url, + ...params, + header:{ + "Authorization":token + }, + success:(res)=>{ + resolve(res); + }, + fail:(err) => { + reject(err) + } + }) + }) +} + + + +module.exports={ + loginApi, + requestApi +} \ No newline at end of file diff --git a/wechat/miniprogram/app.js b/wechat/miniprogram/app.js new file mode 100644 index 00000000..c3130061 --- /dev/null +++ b/wechat/miniprogram/app.js @@ -0,0 +1,38 @@ +//app.js +import { request } from "./utils/request.js"; + +App({ + onLaunch:async function () { + + // const res =await request('ag-api.ctwing.cn/aep_product_management/products','GET',20190507004824, + // { + // 'searchValue':'', + // 'pageSize':'', + // 'pageNow':'' + // }); + // const res = await request('ag-api.ctwing.cn/aep_device_management/device','PUT',20181031202122, + // {'MasterKey':'f9ceed06f3374bb28cfc0083e2899bac', + // 'deviceId':'15058943ssdhhsnfvvf23' + // }, + // { + // "deviceName": "ssd", + // "operator": "qll", + // "productId": 15058943 + // }) + + if (!wx.cloud) { + console.error('请使用 2.2.3 或以上的基础库以使用云能力') + } else { + wx.cloud.init({ + // env 参数说明: + // env 参数决定接下来小程序发起的云开发调用(wx.cloud.xxx)会默认请求到哪个云环境的资源 + // 此处请填入环境 ID, 环境 ID 可打开云控制台查看 + // 如不填则使用默认环境(第一个创建的环境) + env: 'mmydev-1ge33h7a9c3abf3fy-env-id', + traceUser: true, + }) + } + + this.globalData = {} + } +}) diff --git a/wechat/miniprogram/app.json b/wechat/miniprogram/app.json new file mode 100644 index 00000000..cd6cf10d --- /dev/null +++ b/wechat/miniprogram/app.json @@ -0,0 +1,20 @@ +{ + "pages": [ + "pages/index/index", + "pages/login/index", + "pages/roomSystem/index" + ], + "window": { + "backgroundColor": "#F6F6F6", + "backgroundTextStyle": "light", + "navigationBarBackgroundColor": "#F6F6F6", + "navigationBarTitleText": "智慧宿舍", + "navigationBarTextStyle": "black" + }, + "sitemapLocation": "sitemap.json", + "permission": { + "scope.userLocation": { + "desc": "你的位置信息将用于小程序位置接口的效果展示" + } + } +} \ No newline at end of file diff --git a/wechat/miniprogram/app.wxss b/wechat/miniprogram/app.wxss new file mode 100644 index 00000000..82678d67 --- /dev/null +++ b/wechat/miniprogram/app.wxss @@ -0,0 +1,156 @@ +/**app.wxss**/ +.container { + display: flex; + flex-direction: column; + align-items: center; + box-sizing: border-box; +} + +button { + background: initial; +} + +button:focus{ + outline: 0; +} + +button::after{ + border: none; +} + + +page { + background: #f6f6f6; + display: flex; + flex-direction: column; + justify-content: flex-start; +} + +.userinfo, .uploader, .tunnel { + margin-top: 40rpx; + height: 140rpx; + width: 100%; + background: #fff; + border: 1px solid rgba(0, 0, 0, 0.1); + border-left: none; + border-right: none; + display: flex; + flex-direction: row; + align-items: center; + transition: all 300ms ease; +} + +.userinfo-avatar { + width: 100rpx; + height: 100rpx; + margin: 20rpx; + border-radius: 50%; + background-size: cover; + background-color: white; +} + +.userinfo-avatar:after { + border: none; +} + +.userinfo-nickname { + font-size: 32rpx; + color: #007aff; + background-color: white; + background-size: cover; +} + +.userinfo-nickname::after { + border: none; +} + +.uploader, .tunnel { + height: auto; + padding: 0 0 0 40rpx; + flex-direction: column; + align-items: flex-start; + box-sizing: border-box; +} + +.uploader-text, .tunnel-text { + width: 100%; + line-height: 52px; + font-size: 34rpx; + color: #007aff; +} + +.uploader-container { + width: 100%; + height: 400rpx; + padding: 20rpx 20rpx 20rpx 0; + display: flex; + align-content: center; + justify-content: center; + box-sizing: border-box; + border-top: 1px solid rgba(0, 0, 0, 0.1); +} + +.uploader-image { + width: 100%; + height: 360rpx; +} + +.tunnel { + padding: 0 0 0 40rpx; +} + +.tunnel-text { + position: relative; + color: #222; + display: flex; + flex-direction: row; + align-content: center; + justify-content: space-between; + box-sizing: border-box; + border-top: 1px solid rgba(0, 0, 0, 0.1); +} + +.tunnel-text:first-child { + border-top: none; +} + +.tunnel-switch { + position: absolute; + right: 20rpx; + top: -2rpx; +} + +.disable { + color: #888; +} + +.service { + position: fixed; + right: 40rpx; + bottom: 40rpx; + width: 140rpx; + height: 140rpx; + border-radius: 50%; + background: linear-gradient(#007aff, #0063ce); + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); + display: flex; + align-content: center; + justify-content: center; + transition: all 300ms ease; +} + +.service-button { + position: absolute; + top: 40rpx; +} + +.service:active { + box-shadow: none; +} + +.request-text { + padding: 20rpx 0; + font-size: 24rpx; + line-height: 36rpx; + word-break: break-all; +} diff --git a/wechat/miniprogram/components/chatroom/chatroom.js b/wechat/miniprogram/components/chatroom/chatroom.js new file mode 100644 index 00000000..adeec16b --- /dev/null +++ b/wechat/miniprogram/components/chatroom/chatroom.js @@ -0,0 +1,337 @@ +const FATAL_REBUILD_TOLERANCE = 10 +const SETDATA_SCROLL_TO_BOTTOM = { + scrollTop: 100000, + scrollWithAnimation: true, +} + +Component({ + properties: { + envId: String, + collection: String, + groupId: String, + groupName: String, + userInfo: Object, + onGetUserInfo: { + type: Function, + }, + getOpenID: { + type: Function, + }, + }, + + data: { + chats: [], + textInputValue: '', + openId: '', + scrollTop: 0, + scrollToMessage: '', + hasKeyboard: false, + }, + + methods: { + onGetUserInfo(e) { + this.properties.onGetUserInfo(e) + }, + + getOpenID() { + return this.properties.getOpenID() + }, + + mergeCommonCriteria(criteria) { + return { + groupId: this.data.groupId, + ...criteria, + } + }, + + async initRoom() { + this.try(async () => { + await this.initOpenID() + + const { envId, collection } = this.properties + this.db = wx.cloud.database({ + env: envId, + }) + const db = this.db + const _ = db.command + + const { data: initList } = await db.collection(collection).where(this.mergeCommonCriteria()).orderBy('sendTimeTS', 'desc').get() + + console.log('init query chats', initList) + + this.setData({ + chats: initList.reverse(), + scrollTop: 10000, + }) + + this.initWatch(initList.length ? { + sendTimeTS: _.gt(initList[initList.length - 1].sendTimeTS), + } : {}) + }, '初始化失败') + }, + + async initOpenID() { + return this.try(async () => { + const openId = await this.getOpenID() + + this.setData({ + openId, + }) + }, '初始化 openId 失败') + }, + + async initWatch(criteria) { + this.try(() => { + const { collection } = this.properties + const db = this.db + const _ = db.command + + console.warn(`开始监听`, criteria) + this.messageListener = db.collection(collection).where(this.mergeCommonCriteria(criteria)).watch({ + onChange: this.onRealtimeMessageSnapshot.bind(this), + onError: e => { + if (!this.inited || this.fatalRebuildCount >= FATAL_REBUILD_TOLERANCE) { + this.showError(this.inited ? '监听错误,已断开' : '初始化监听失败', e, '重连', () => { + this.initWatch(this.data.chats.length ? { + sendTimeTS: _.gt(this.data.chats[this.data.chats.length - 1].sendTimeTS), + } : {}) + }) + } else { + this.initWatch(this.data.chats.length ? { + sendTimeTS: _.gt(this.data.chats[this.data.chats.length - 1].sendTimeTS), + } : {}) + } + }, + }) + }, '初始化监听失败') + }, + + onRealtimeMessageSnapshot(snapshot) { + console.warn(`收到消息`, snapshot) + + if (snapshot.type === 'init') { + this.setData({ + chats: [ + ...this.data.chats, + ...[...snapshot.docs].sort((x, y) => x.sendTimeTS - y.sendTimeTS), + ], + }) + this.scrollToBottom() + this.inited = true + } else { + let hasNewMessage = false + let hasOthersMessage = false + const chats = [...this.data.chats] + for (const docChange of snapshot.docChanges) { + switch (docChange.queueType) { + case 'enqueue': { + hasOthersMessage = docChange.doc._openid !== this.data.openId + const ind = chats.findIndex(chat => chat._id === docChange.doc._id) + if (ind > -1) { + if (chats[ind].msgType === 'image' && chats[ind].tempFilePath) { + chats.splice(ind, 1, { + ...docChange.doc, + tempFilePath: chats[ind].tempFilePath, + }) + } else chats.splice(ind, 1, docChange.doc) + } else { + hasNewMessage = true + chats.push(docChange.doc) + } + break + } + } + } + this.setData({ + chats: chats.sort((x, y) => x.sendTimeTS - y.sendTimeTS), + }) + if (hasOthersMessage || hasNewMessage) { + this.scrollToBottom() + } + } + }, + + async onConfirmSendText(e) { + this.try(async () => { + if (!e.detail.value) { + return + } + + const { collection } = this.properties + const db = this.db + const _ = db.command + + const doc = { + _id: `${Math.random()}_${Date.now()}`, + groupId: this.data.groupId, + avatar: this.data.userInfo.avatarUrl, + nickName: this.data.userInfo.nickName, + msgType: 'text', + textContent: e.detail.value, + sendTime: new Date(), + sendTimeTS: Date.now(), // fallback + } + + this.setData({ + textInputValue: '', + chats: [ + ...this.data.chats, + { + ...doc, + _openid: this.data.openId, + writeStatus: 'pending', + }, + ], + }) + this.scrollToBottom(true) + + await db.collection(collection).add({ + data: doc, + }) + + this.setData({ + chats: this.data.chats.map(chat => { + if (chat._id === doc._id) { + return { + ...chat, + writeStatus: 'written', + } + } else return chat + }), + }) + }, '发送文字失败') + }, + + async onChooseImage(e) { + wx.chooseImage({ + count: 1, + sourceType: ['album', 'camera'], + success: async res => { + const { envId, collection } = this.properties + const doc = { + _id: `${Math.random()}_${Date.now()}`, + groupId: this.data.groupId, + avatar: this.data.userInfo.avatarUrl, + nickName: this.data.userInfo.nickName, + msgType: 'image', + sendTime: new Date(), + sendTimeTS: Date.now(), // fallback + } + + this.setData({ + chats: [ + ...this.data.chats, + { + ...doc, + _openid: this.data.openId, + tempFilePath: res.tempFilePaths[0], + writeStatus: 0, + }, + ] + }) + this.scrollToBottom(true) + + const uploadTask = wx.cloud.uploadFile({ + cloudPath: `${this.data.openId}/${Math.random()}_${Date.now()}.${res.tempFilePaths[0].match(/\.(\w+)$/)[1]}`, + filePath: res.tempFilePaths[0], + config: { + env: envId, + }, + success: res => { + this.try(async () => { + await this.db.collection(collection).add({ + data: { + ...doc, + imgFileID: res.fileID, + }, + }) + }, '发送图片失败') + }, + fail: e => { + this.showError('发送图片失败', e) + }, + }) + + uploadTask.onProgressUpdate(({ progress }) => { + this.setData({ + chats: this.data.chats.map(chat => { + if (chat._id === doc._id) { + return { + ...chat, + writeStatus: progress, + } + } else return chat + }) + }) + }) + }, + }) + }, + + onMessageImageTap(e) { + wx.previewImage({ + urls: [e.target.dataset.fileid], + }) + }, + + scrollToBottom(force) { + if (force) { + console.log('force scroll to bottom') + this.setData(SETDATA_SCROLL_TO_BOTTOM) + return + } + + this.createSelectorQuery().select('.body').boundingClientRect(bodyRect => { + this.createSelectorQuery().select(`.body`).scrollOffset(scroll => { + if (scroll.scrollTop + bodyRect.height * 3 > scroll.scrollHeight) { + console.log('should scroll to bottom') + this.setData(SETDATA_SCROLL_TO_BOTTOM) + } + }).exec() + }).exec() + }, + + async onScrollToUpper() { + if (this.db && this.data.chats.length) { + const { collection } = this.properties + const _ = this.db.command + const { data } = await this.db.collection(collection).where(this.mergeCommonCriteria({ + sendTimeTS: _.lt(this.data.chats[0].sendTimeTS), + })).orderBy('sendTimeTS', 'desc').get() + this.data.chats.unshift(...data.reverse()) + this.setData({ + chats: this.data.chats, + scrollToMessage: `item-${data.length}`, + scrollWithAnimation: false, + }) + } + }, + + async try(fn, title) { + try { + await fn() + } catch (e) { + this.showError(title, e) + } + }, + + showError(title, content, confirmText, confirmCallback) { + console.error(title, content) + wx.showModal({ + title, + content: content.toString(), + showCancel: confirmText ? true : false, + confirmText, + success: res => { + res.confirm && confirmCallback() + }, + }) + }, + }, + + ready() { + global.chatroom = this + this.initRoom() + this.fatalRebuildCount = 0 + }, +}) diff --git a/wechat/miniprogram/components/chatroom/chatroom.json b/wechat/miniprogram/components/chatroom/chatroom.json new file mode 100644 index 00000000..e8cfaaf8 --- /dev/null +++ b/wechat/miniprogram/components/chatroom/chatroom.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/wechat/miniprogram/components/chatroom/chatroom.wxml b/wechat/miniprogram/components/chatroom/chatroom.wxml new file mode 100644 index 00000000..056a44ca --- /dev/null +++ b/wechat/miniprogram/components/chatroom/chatroom.wxml @@ -0,0 +1,85 @@ + + + + + + {{groupName}} + + + + + + + + + + {{item.nickName}} + + + {{item.writeStatus}}% + + + + + + ··· + {{item.textContent}} + + + + + + + + + + + + + + + + + + + + + diff --git a/wechat/miniprogram/components/chatroom/chatroom.wxss b/wechat/miniprogram/components/chatroom/chatroom.wxss new file mode 100644 index 00000000..d7261275 --- /dev/null +++ b/wechat/miniprogram/components/chatroom/chatroom.wxss @@ -0,0 +1,161 @@ +.chatroom { + width: 100%; + height: 100%; + display: flex; + flex-direction: column; +} + +.chatroom .header { + flex-basis: fit-content; + display: flex; + flex-direction: row; + border-bottom: 1px solid #ddd; + padding: 20rpx 0 30rpx; + font-size: 30rpx; + /* background: rgb(34, 187, 47); + color: rgba(255, 255, 255, 1) */ + /* font-family: 'Microsoft YaHei' */ +} + +.chatroom .header .left { + flex: 1; +} + +.chatroom .header .middle { + flex: 2; + text-align: center; +} + +.chatroom .header .right { + flex: 1; +} + +.chatroom .body { + flex: 2; + display: flex; + flex-direction: column; + background: rgb(237,237,237); + padding-bottom: 16rpx; +} + +.body .message { + display: flex; + flex-direction: row; + position: relative; + margin: 12rpx 0; +} + +.body .message.message__self { + flex-direction: row-reverse; +} + +.body .message .avatar { + position: relative; + top: 5rpx; + width: 60rpx; + height: 60rpx; + border-radius: 5rpx; + margin: 15rpx; +} + +.body .message .main { + flex: 1; + display: flex; + flex-direction: column; + align-items: flex-start; +} + +.body .message.message__self .main { + align-items: flex-end; +} + +.body .message .nickname { + font-size: 24rpx; + color: #444; +} + +.body .message .text-content { + border: 1px solid transparent; + border-radius: 3px; + background-color: #fff; + margin: 2px 0 0 0; + padding: 4px 10px; + font-size: 30rpx; + display: inline-block; +} + +.body .message.message__self .text-content { + background-color: paleturquoise; +} + +.body .message .text-wrapper { + display: flex; + flex-direction: row; + align-items: center; + max-width: 80%; +} + +.body .message.message__self .text-wrapper .loading{ + font-size: 16rpx; + margin-right: 18rpx; +} + +.body .message .image-wrapper { + display: flex; + flex-direction: row; + align-items: center; +} + +.body .message .image-content { + max-width: 240rpx; + max-height: 240rpx; +} + +.body .message.message__self .image-wrapper .loading { + font-size: 20rpx; + margin-right: 18rpx; +} + +.chatroom .footer { + flex-basis: fit-content; + display: flex; + flex-direction: row; + border-top: 1px solid #ddd; + font-size: 10rpx; + padding: 20rpx 30rpx; + background: rgb(246,246,246); +} + +.chatroom .footer .message-sender { + flex: 1; + display: flex; + flex-direction: row; +} + +.message-sender .text-input { + flex: 1; + font-size: 16px; + border: 1px solid transparent; + border-radius: 5px; + padding: 3px 6px; + margin: 0 10px 0 5px; + background: #fff; +} + +.message-sender .btn-send-image { + width: 50rpx; + height: 50rpx; + align-self: center; +} + +button { + font-size: 30rpx; +} + +button.userinfo { + background: darkturquoise; + color: aliceblue; + padding: 0 100rpx; + border: 1px solid #ddd; + border-radius: 20px; +} diff --git a/wechat/miniprogram/components/chatroom/dots.gif b/wechat/miniprogram/components/chatroom/dots.gif new file mode 100644 index 00000000..17582e4e Binary files /dev/null and b/wechat/miniprogram/components/chatroom/dots.gif differ diff --git a/wechat/miniprogram/components/chatroom/photo.png b/wechat/miniprogram/components/chatroom/photo.png new file mode 100644 index 00000000..ddc4f34e Binary files /dev/null and b/wechat/miniprogram/components/chatroom/photo.png differ diff --git a/wechat/miniprogram/icons/add.png b/wechat/miniprogram/icons/add.png new file mode 100644 index 00000000..dcb9fc1c Binary files /dev/null and b/wechat/miniprogram/icons/add.png differ diff --git a/wechat/miniprogram/icons/close.png b/wechat/miniprogram/icons/close.png new file mode 100644 index 00000000..c84a511e Binary files /dev/null and b/wechat/miniprogram/icons/close.png differ diff --git a/wechat/miniprogram/icons/device.jpg b/wechat/miniprogram/icons/device.jpg new file mode 100644 index 00000000..a090ee4d Binary files /dev/null and b/wechat/miniprogram/icons/device.jpg differ diff --git a/wechat/miniprogram/icons/home.png b/wechat/miniprogram/icons/home.png new file mode 100644 index 00000000..aab8d049 Binary files /dev/null and b/wechat/miniprogram/icons/home.png differ diff --git a/wechat/miniprogram/icons/home_selected.png b/wechat/miniprogram/icons/home_selected.png new file mode 100644 index 00000000..bc3d6009 Binary files /dev/null and b/wechat/miniprogram/icons/home_selected.png differ diff --git a/wechat/miniprogram/icons/open.png b/wechat/miniprogram/icons/open.png new file mode 100644 index 00000000..152ade8b Binary files /dev/null and b/wechat/miniprogram/icons/open.png differ diff --git a/wechat/miniprogram/icons/pwd.png b/wechat/miniprogram/icons/pwd.png new file mode 100644 index 00000000..0b62d0c3 Binary files /dev/null and b/wechat/miniprogram/icons/pwd.png differ diff --git a/wechat/miniprogram/icons/route.png b/wechat/miniprogram/icons/route.png new file mode 100644 index 00000000..05faf746 Binary files /dev/null and b/wechat/miniprogram/icons/route.png differ diff --git a/wechat/miniprogram/icons/start.png b/wechat/miniprogram/icons/start.png new file mode 100644 index 00000000..e2a96a4a Binary files /dev/null and b/wechat/miniprogram/icons/start.png differ diff --git a/wechat/miniprogram/icons/user.png b/wechat/miniprogram/icons/user.png new file mode 100644 index 00000000..eaebf027 Binary files /dev/null and b/wechat/miniprogram/icons/user.png differ diff --git a/wechat/miniprogram/icons/user_selected.png b/wechat/miniprogram/icons/user_selected.png new file mode 100644 index 00000000..68de6db3 Binary files /dev/null and b/wechat/miniprogram/icons/user_selected.png differ diff --git a/wechat/miniprogram/icons/wifi.png b/wechat/miniprogram/icons/wifi.png new file mode 100644 index 00000000..3369b60a Binary files /dev/null and b/wechat/miniprogram/icons/wifi.png differ diff --git a/wechat/miniprogram/images/curtain.png b/wechat/miniprogram/images/curtain.png new file mode 100644 index 00000000..b9436d1b Binary files /dev/null and b/wechat/miniprogram/images/curtain.png differ diff --git a/wechat/miniprogram/images/fan.png b/wechat/miniprogram/images/fan.png new file mode 100644 index 00000000..5264cd92 Binary files /dev/null and b/wechat/miniprogram/images/fan.png differ diff --git a/wechat/miniprogram/images/power_off.png b/wechat/miniprogram/images/power_off.png new file mode 100644 index 00000000..6eb8e6bb Binary files /dev/null and b/wechat/miniprogram/images/power_off.png differ diff --git a/wechat/miniprogram/images/power_on.png b/wechat/miniprogram/images/power_on.png new file mode 100644 index 00000000..1b3c23ab Binary files /dev/null and b/wechat/miniprogram/images/power_on.png differ diff --git a/wechat/miniprogram/images/room.jpeg b/wechat/miniprogram/images/room.jpeg new file mode 100644 index 00000000..69cb5696 Binary files /dev/null and b/wechat/miniprogram/images/room.jpeg differ diff --git a/wechat/miniprogram/images/temp.png b/wechat/miniprogram/images/temp.png new file mode 100644 index 00000000..c0ded330 Binary files /dev/null and b/wechat/miniprogram/images/temp.png differ diff --git a/wechat/miniprogram/libs/amap-wx.js b/wechat/miniprogram/libs/amap-wx.js new file mode 100644 index 00000000..eb969c33 --- /dev/null +++ b/wechat/miniprogram/libs/amap-wx.js @@ -0,0 +1 @@ +function AMapWX(a){this.key=a.key,this.requestConfig={key:a.key,s:"rsx",platform:"WXJS",appname:a.key,sdkversion:"1.2.0",logversion:"2.0"}}AMapWX.prototype.getWxLocation=function(a,b){wx.getLocation({type:"gcj02",success:function(a){var c=a.longitude+","+a.latitude;wx.setStorage({key:"userLocation",data:c}),b(c)},fail:function(c){wx.getStorage({key:"userLocation",success:function(a){a.data&&b(a.data)}}),a.fail({errCode:"0",errMsg:c.errMsg||""})}})},AMapWX.prototype.getRegeo=function(a){function c(c){var d=b.requestConfig;wx.request({url:"https://restapi.amap.com/v3/geocode/regeo",data:{key:b.key,location:c,extensions:"all",s:d.s,platform:d.platform,appname:b.key,sdkversion:d.sdkversion,logversion:d.logversion},method:"GET",header:{"content-type":"application/json"},success:function(b){var d,e,f,g,h,i,j,k,l;b.data.status&&"1"==b.data.status?(d=b.data.regeocode,e=d.addressComponent,f=[],g="",d&&d.roads[0]&&d.roads[0].name&&(g=d.roads[0].name+"附近"),h=c.split(",")[0],i=c.split(",")[1],d.pois&&d.pois[0]&&(g=d.pois[0].name+"附近",j=d.pois[0].location,j&&(h=parseFloat(j.split(",")[0]),i=parseFloat(j.split(",")[1]))),e.provice&&f.push(e.provice),e.city&&f.push(e.city),e.district&&f.push(e.district),e.streetNumber&&e.streetNumber.street&&e.streetNumber.number?(f.push(e.streetNumber.street),f.push(e.streetNumber.number)):(k="",d&&d.roads[0]&&d.roads[0].name&&(k=d.roads[0].name),f.push(k)),f=f.join(""),l=[{iconPath:a.iconPath,width:a.iconWidth,height:a.iconHeight,name:f,desc:g,longitude:h,latitude:i,id:0,regeocodeData:d}],a.success(l)):a.fail({errCode:b.data.infocode,errMsg:b.data.info})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})}var b=this;a.location?c(a.location):b.getWxLocation(a,function(a){c(a)})},AMapWX.prototype.getWeather=function(a){function d(d){var e="base";a.type&&"forecast"==a.type&&(e="all"),wx.request({url:"https://restapi.amap.com/v3/weather/weatherInfo",data:{key:b.key,city:d,extensions:e,s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion},method:"GET",header:{"content-type":"application/json"},success:function(b){function c(a){var b={city:{text:"城市",data:a.city},weather:{text:"天气",data:a.weather},temperature:{text:"温度",data:a.temperature},winddirection:{text:"风向",data:a.winddirection+"风"},windpower:{text:"风力",data:a.windpower+"级"},humidity:{text:"湿度",data:a.humidity+"%"}};return b}var d,e;b.data.status&&"1"==b.data.status?b.data.lives?(d=b.data.lives,d&&d.length>0&&(d=d[0],e=c(d),e["liveData"]=d,a.success(e))):b.data.forecasts&&b.data.forecasts[0]&&a.success({forecast:b.data.forecasts[0]}):a.fail({errCode:b.data.infocode,errMsg:b.data.info})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})}function e(e){wx.request({url:"https://restapi.amap.com/v3/geocode/regeo",data:{key:b.key,location:e,extensions:"all",s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion},method:"GET",header:{"content-type":"application/json"},success:function(b){var c,e;b.data.status&&"1"==b.data.status?(e=b.data.regeocode,e.addressComponent?c=e.addressComponent.adcode:e.aois&&e.aois.length>0&&(c=e.aois[0].adcode),d(c)):a.fail({errCode:b.data.infocode,errMsg:b.data.info})},fail:function(b){a.fail({errCode:"0",errMsg:b.errMsg||""})}})}var b=this,c=b.requestConfig;a.city?d(a.city):b.getWxLocation(a,function(a){e(a)})},AMapWX.prototype.getPoiAround=function(a){function d(d){var e={key:b.key,location:d,s:c.s,platform:c.platform,appname:b.key,sdkversion:c.sdkversion,logversion:c.logversion};a.querytypes&&(e["types"]=a.querytypes),a.querykeywords&&(e["keywords"]=a.querykeywords),wx.request({url:"https://restapi.amap.com/v3/place/around",data:e,method:"GET",header:{"content-type":"application/json"},success:function(b){var c,d,e,f;if(b.data.status&&"1"==b.data.status){if(b=b.data,b&&b.pois){for(c=[],d=0;d 0.5 ? d / (2 - max - min) : d / (max + min); + switch (max) { + case r: + h = (g - b) / d + (g < b ? 6 : 0); + break; + case g: + h = (b - r) / d + 2; + break; + case b: + h = (r - g) / d + 4; + break; + } + h /= 6; + } + return [h, s, l]; +} + +let hslToRgb = function(h, s, l) { + var r, g, b; + if (s == 0) { + r = g = b = l; // achromatic + } else { + var hue2rgb = function hue2rgb(p, q, t) { + if (t < 0) t += 1; + if (t > 1) t -= 1; + if (t < 1 / 6) return p + (q - p) * 6 * t; + if (t < 1 / 2) return q; + if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6; + return p; + } + var q = l < 0.5 ? l * (1 + s) : l + s - l * s; + var p = 2 * l - q; + r = hue2rgb(p, q, h + 1 / 3); + g = hue2rgb(p, q, h); + b = hue2rgb(p, q, h - 1 / 3); + } + return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)]; +} + +let drawRing = function(ctx, width, height) { + // 画圆环 + var radius = width / 2; + var toRad = (2 * Math.PI) / 360; + var step = 0.1; + for (var i = 0; i < 360; i += step) { + var rad = i * toRad; + var color = hslToRgb(i / 360, 1, 0.5); + ctx.strokeStyle = `rgb(${color[0]},${color[1]},${color[2]})`; + ctx.beginPath(); + ctx.moveTo(radius, radius); + ctx.lineTo(radius + radius * Math.cos(rad), radius + radius * Math.sin(rad)); + ctx.stroke(); + } + + ctx.fillStyle = 'rgb(255, 255, 255)'; + ctx.strokeStyle = 'rgb(0, 255, 255)'; + ctx.beginPath(); + ctx.arc(radius, radius, radius * 0.65, 0, Math.PI * 2, true); + ctx.closePath(); + ctx.fill(); + ctx.draw(); +}; + +let drawSlider = function(ctx, width, height, angle) { + var radius = width / 2; + + ctx.save(); + ctx.clearRect(0, 0, width, height); + ctx.translate(width / 2, height / 2); + + var color = hslToRgb(angle, 1, 0.5); + + ctx.fillStyle = `rgb(${color[0]},${color[1]},${color[2]})`; + ctx.beginPath(); + ctx.arc(0, 0, radius * 0.3, 0, Math.PI * 2, true); + ctx.closePath(); + ctx.fill(); + ctx.rotate((angle * 360) * Math.PI / 180); + + ctx.beginPath() + ctx.setLineWidth(height * 0.015); + //圆心的 x 坐标 , 圆心的 Y 坐标 , 圆的半径 + ctx.arc(height * 0.41, 0, 17, 0, 2 * Math.PI); + + const grd = ctx.createCircularGradient(height * 0.41, 0, 17) + grd.addColorStop(0, '#fff'); + grd.addColorStop(0.2, '#fff'); + grd.addColorStop(.7, '#bfbfbf'); + grd.addColorStop(1, '#666'); + + // Fill with gradient + ctx.setFillStyle(grd); + ctx.fill(); + // ctx.strokeStyle = 'rgb(255, 255, 255)'; + // ctx.stroke() + + ctx.draw(); + ctx.restore(); +}; + + +module.exports = { + rgb2hsl: rgb2hsl, + hslToRgb: hslToRgb, + drawRing: drawRing, + drawSlider: drawSlider, +} \ No newline at end of file diff --git a/wechat/miniprogram/libs/wx-promisify.js b/wechat/miniprogram/libs/wx-promisify.js new file mode 100644 index 00000000..d4beba91 --- /dev/null +++ b/wechat/miniprogram/libs/wx-promisify.js @@ -0,0 +1,8 @@ +module.exports = api => (object, ...params) => new Promise((resolve, reject) => { + if (api) { + api.call(wx, { ...object, success: resolve, fail: reject }, ...params); + } else { + console.error('调用不支持的 API'); + reject({ errCode: 'WXAPI_NOT_SUPPORTED' }); + } +}); \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/action-sheet/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/action-sheet/index.js new file mode 100644 index 00000000..48e5a81c --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/action-sheet/index.js @@ -0,0 +1,76 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +var component_1 = require('../common/component'); +var button_1 = require('../mixins/button'); +component_1.VantComponent({ + mixins: [button_1.button], + 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 _this = this; + var index = event.currentTarget.dataset.index; + var _a = this.data, + actions = _a.actions, + closeOnClickAction = _a.closeOnClickAction, + canIUseGetUserProfile = _a.canIUseGetUserProfile; + var item = actions[index]; + if (item) { + this.$emit('select', item); + if (closeOnClickAction) { + this.onClose(); + } + if (item.openType === 'getUserInfo' && canIUseGetUserProfile) { + wx.getUserProfile({ + desc: item.getUserProfileDesc || ' ', + complete: function (userProfile) { + _this.$emit('getuserinfo', userProfile); + }, + }); + } + } + }, + onCancel: function () { + this.$emit('cancel'); + }, + onClose: function () { + this.$emit('close'); + }, + onClickOverlay: function () { + this.$emit('click-overlay'); + this.onClose(); + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/action-sheet/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/action-sheet/index.json new file mode 100644 index 00000000..19bf9891 --- /dev/null +++ b/wechat/miniprogram/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" + } +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/action-sheet/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/action-sheet/index.wxml new file mode 100644 index 00000000..b04cc3a3 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/action-sheet/index.wxml @@ -0,0 +1,69 @@ + + + + + {{ title }} + + + + {{ description }} + + + + + + + + + + {{ cancelText }} + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/action-sheet/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/action-sheet/index.wxss new file mode 100644 index 00000000..9b247d5d --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/action-sheet/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-action-sheet{max-height:90%!important;max-height:var(--action-sheet-max-height,90%)!important;color:#323233;color:var(--action-sheet-item-text-color,#323233)}.van-action-sheet__cancel,.van-action-sheet__item{padding:14px 16px;text-align:center;font-size:16px;font-size:var(--action-sheet-item-font-size,16px);line-height:22px;line-height:var(--action-sheet-item-line-height,22px);background-color:#fff;background-color:var(--action-sheet-item-background,#fff)}.van-action-sheet__cancel--hover,.van-action-sheet__item--hover{background-color:#f2f3f5;background-color:var(--active-color,#f2f3f5)}.van-action-sheet__cancel:after,.van-action-sheet__item:after{border-width:0}.van-action-sheet__cancel{color:#646566;color:var(--action-sheet-cancel-text-color,#646566)}.van-action-sheet__gap{display:block;height:8px;height:var(--action-sheet-cancel-padding-top,8px);background-color:#f7f8fa;background-color:var(--action-sheet-cancel-padding-color,#f7f8fa)}.van-action-sheet__item--disabled{color:#c8c9cc;color:var(--action-sheet-item-disabled-text-color,#c8c9cc)}.van-action-sheet__item--disabled.van-action-sheet__item--hover{background-color:#fff;background-color:var(--action-sheet-item-background,#fff)}.van-action-sheet__subname{margin-top:8px;margin-top:var(--padding-xs,8px);font-size:12px;font-size:var(--action-sheet-subname-font-size,12px);color:#969799;color:var(--action-sheet-subname-color,#969799);line-height:20px;line-height:var(--action-sheet-subname-line-height,20px)}.van-action-sheet__header{text-align:center;font-weight:500;font-weight:var(--font-weight-bold,500);font-size:16px;font-size:var(--action-sheet-header-font-size,16px);line-height:48px;line-height:var(--action-sheet-header-height,48px)}.van-action-sheet__description{text-align:center;padding:20px 16px;padding:20px var(--padding-md,16px);color:#969799;color:var(--action-sheet-description-color,#969799);font-size:14px;font-size:var(--action-sheet-description-font-size,14px);line-height:20px;line-height:var(--action-sheet-description-line-height,20px)}.van-action-sheet__close{position:absolute!important;top:0;right:0;line-height:inherit!important;padding:0 16px;padding:var(--action-sheet-close-icon-padding,0 16px);font-size:22px!important;font-size:var(--action-sheet-close-icon-size,22px)!important;color:#c8c9cc;color:var(--action-sheet-close-icon-color,#c8c9cc)}.van-action-sheet__loading{display:-webkit-flex!important;display:flex!important} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/area/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/area/index.js new file mode 100644 index 00000000..6b17a07c --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/area/index.js @@ -0,0 +1,266 @@ +'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; + var _b = event.detail, + index = _b.index, + picker = _b.picker, + value = _b.value; + this.code = value[index].code; + (_a = this.setValues()) === null || _a === void 0 + ? void 0 + : _a.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(); + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/area/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/area/index.json new file mode 100644 index 00000000..a778e91c --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/area/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-picker": "../picker/index" + } +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/area/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/area/index.wxml new file mode 100644 index 00000000..f7dc51f5 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/area/index.wxml @@ -0,0 +1,20 @@ + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/area/index.wxs b/wechat/miniprogram/miniprogram_npm/@vant/weapp/area/index.wxs new file mode 100644 index 00000000..07723c11 --- /dev/null +++ b/wechat/miniprogram/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, +}; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/area/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/area/index.wxss new file mode 100644 index 00000000..99694d60 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/area/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/button/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/button/index.js new file mode 100644 index 00000000..ca757d74 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/button/index.js @@ -0,0 +1,69 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +var component_1 = require('../common/component'); +var button_1 = require('../mixins/button'); +var version_1 = require('../common/version'); +var mixins = [button_1.button]; +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 (event) { + var _this = this; + this.$emit('click', event); + var _a = this.data, + canIUseGetUserProfile = _a.canIUseGetUserProfile, + openType = _a.openType, + getUserProfileDesc = _a.getUserProfileDesc; + if (openType === 'getUserInfo' && canIUseGetUserProfile) { + wx.getUserProfile({ + desc: getUserProfileDesc || ' ', + complete: function (userProfile) { + _this.$emit('getuserinfo', userProfile); + }, + }); + } + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/button/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/button/index.json new file mode 100644 index 00000000..e00a5887 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/button/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index", + "van-loading": "../loading/index" + } +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/button/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/button/index.wxml new file mode 100644 index 00000000..80348459 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/button/index.wxml @@ -0,0 +1,53 @@ + + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/button/index.wxs b/wechat/miniprogram/miniprogram_npm/@vant/weapp/button/index.wxs new file mode 100644 index 00000000..8b649fe1 --- /dev/null +++ b/wechat/miniprogram/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 data.customStyle; + } + + 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, data.customStyle]); +} + +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, +}; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/button/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/button/index.wxss new file mode 100644 index 00000000..5a591fbd --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/button/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-button{position:relative;display:-webkit-inline-flex;display:inline-flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;padding:0;text-align:center;vertical-align:middle;-webkit-appearance:none;-webkit-text-size-adjust:100%;height:44px;height:var(--button-default-height,44px);line-height:20px;line-height:var(--button-line-height,20px);font-size:16px;font-size:var(--button-default-font-size,16px);transition:opacity .2s;transition:opacity var(--animation-duration-fast,.2s);border-radius:2px;border-radius:var(--button-border-radius,2px)}.van-button:before{position:absolute;top:50%;left:50%;width:100%;height:100%;border:inherit;border-radius:inherit;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);opacity:0;content:" ";background-color:#000;background-color:var(--black,#000);border-color:#000;border-color:var(--black,#000)}.van-button:after{border-width:0}.van-button--active:before{opacity:.15}.van-button--unclickable:after{display:none}.van-button--default{color:#323233;color:var(--button-default-color,#323233);background:#fff;background:var(--button-default-background-color,#fff);border:1px solid #ebedf0;border:var(--button-border-width,1px) solid var(--button-default-border-color,#ebedf0)}.van-button--primary{color:#fff;color:var(--button-primary-color,#fff);background:#07c160;background:var(--button-primary-background-color,#07c160);border:1px solid #07c160;border:var(--button-border-width,1px) solid var(--button-primary-border-color,#07c160)}.van-button--info{color:#fff;color:var(--button-info-color,#fff);background:#1989fa;background:var(--button-info-background-color,#1989fa);border:1px solid #1989fa;border:var(--button-border-width,1px) solid var(--button-info-border-color,#1989fa)}.van-button--danger{color:#fff;color:var(--button-danger-color,#fff);background:#ee0a24;background:var(--button-danger-background-color,#ee0a24);border:1px solid #ee0a24;border:var(--button-border-width,1px) solid var(--button-danger-border-color,#ee0a24)}.van-button--warning{color:#fff;color:var(--button-warning-color,#fff);background:#ff976a;background:var(--button-warning-background-color,#ff976a);border:1px solid #ff976a;border:var(--button-border-width,1px) solid var(--button-warning-border-color,#ff976a)}.van-button--plain{background:#fff;background:var(--button-plain-background-color,#fff)}.van-button--plain.van-button--primary{color:#07c160;color:var(--button-primary-background-color,#07c160)}.van-button--plain.van-button--info{color:#1989fa;color:var(--button-info-background-color,#1989fa)}.van-button--plain.van-button--danger{color:#ee0a24;color:var(--button-danger-background-color,#ee0a24)}.van-button--plain.van-button--warning{color:#ff976a;color:var(--button-warning-background-color,#ff976a)}.van-button--large{width:100%;height:50px;height:var(--button-large-height,50px)}.van-button--normal{padding:0 15px;font-size:14px;font-size:var(--button-normal-font-size,14px)}.van-button--small{min-width:60px;min-width:var(--button-small-min-width,60px);height:30px;height:var(--button-small-height,30px);padding:0 8px;padding:0 var(--padding-xs,8px);font-size:12px;font-size:var(--button-small-font-size,12px)}.van-button--mini{display:inline-block;min-width:50px;min-width:var(--button-mini-min-width,50px);height:22px;height:var(--button-mini-height,22px);font-size:10px;font-size:var(--button-mini-font-size,10px)}.van-button--mini+.van-button--mini{margin-left:5px}.van-button--block{display:-webkit-flex;display:flex;width:100%}.van-button--round{border-radius:999px;border-radius:var(--button-round-border-radius,999px)}.van-button--square{border-radius:0}.van-button--disabled{opacity:.5;opacity:var(--button-disabled-opacity,.5)}.van-button__text{display:inline}.van-button__icon+.van-button__text:not(:empty),.van-button__loading-text{margin-left:4px}.van-button__icon{min-width:1em;line-height:inherit!important;vertical-align:top}.van-button--hairline{padding-top:1px;border-width:0}.van-button--hairline:after{border-color:inherit;border-width:1px;border-radius:4px;border-radius:calc(var(--button-border-radius, 2px)*2)}.van-button--hairline.van-button--round:after{border-radius:999px;border-radius:var(--button-round-border-radius,999px)}.van-button--hairline.van-button--square:after{border-radius:0} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/calendar.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/calendar.wxml new file mode 100644 index 00000000..4872e191 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/calendar.wxml @@ -0,0 +1,67 @@ + +
+ +
+ + + + + + + + + + + + {{ + computed.getButtonDisabled(type, currentDate) + ? confirmDisabledText + : confirmText + }} + + +
diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/header/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/header/index.js new file mode 100644 index 00000000..314ca9ad --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/header/index.js @@ -0,0 +1,43 @@ +'use strict'; +var __spreadArray = + (this && this.__spreadArray) || + function (to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; +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, + firstDayOfWeek: { + type: Number, + observer: 'initWeekDay', + }, + }, + data: { + weekdays: [], + }, + created: function () { + this.initWeekDay(); + }, + methods: { + initWeekDay: function () { + var defaultWeeks = ['日', '一', '二', '三', '四', '五', '六']; + var firstDayOfWeek = this.data.firstDayOfWeek || 0; + this.setData({ + weekdays: __spreadArray( + __spreadArray([], defaultWeeks.slice(firstDayOfWeek, 7)), + defaultWeeks.slice(0, firstDayOfWeek) + ), + }); + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/header/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/header/index.json new file mode 100644 index 00000000..467ce294 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/header/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/header/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/header/index.wxml new file mode 100644 index 00000000..eb8e4b47 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/header/index.wxml @@ -0,0 +1,16 @@ + + + + {{ title }} + + + + {{ subtitle }} + + + + + {{ item }} + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/header/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/header/index.wxss new file mode 100644 index 00000000..4075e48f --- /dev/null +++ b/wechat/miniprogram/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)} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/month/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/month/index.js new file mode 100644 index 00000000..1dcb49aa --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/month/index.js @@ -0,0 +1,173 @@ +'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: null, + formatter: { + type: null, + observer: 'setDays', + }, + currentDate: { + type: null, + observer: 'setDays', + }, + firstDayOfWeek: { + type: Number, + 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'; + } + return ''; + }, + 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); + } + return ''; + }, + getBottomInfo: function (type) { + if (this.data.type === 'range') { + if (type === 'start') { + return '开始'; + } + if (type === 'end') { + return '结束'; + } + if (type === 'start-end') { + return '开始/结束'; + } + } + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/month/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/month/index.json new file mode 100644 index 00000000..467ce294 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/month/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxml new file mode 100644 index 00000000..4a2c47c9 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxml @@ -0,0 +1,39 @@ + + + + + + {{ computed.formatMonthTitle(date) }} + + + + + {{ computed.getMark(date) }} + + + + + {{ item.topInfo }} + {{ item.text }} + + {{ item.bottomInfo }} + + + + + {{ item.topInfo }} + {{ item.text }} + + {{ item.bottomInfo }} + + + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxs b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxs new file mode 100644 index 00000000..55e45a57 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxs @@ -0,0 +1,71 @@ +/* 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, firstDayOfWeek) { + var style = []; + var current = getDate(date).getDay() || 7; + var offset = current < firstDayOfWeek ? (7 - firstDayOfWeek + current) : + current === 7 && firstDayOfWeek === 0 ? 0 : + (current - firstDayOfWeek); + + 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 === 'start-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 +}; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/month/index.wxss new file mode 100644 index 00000000..17c12f4e --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/components/month/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%;background-color:#fff;background-color:var(--calendar-background-color,#fff)}.van-calendar__month-title{text-align:center;height:44px;height:var(--calendar-header-title-height,44px);font-weight:500;font-weight:var(--font-weight-bold,500);font-size:14px;font-size:var(--calendar-month-title-font-size,14px);line-height:44px;line-height:var(--calendar-header-title-height,44px)}.van-calendar__days{position:relative;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-webkit-user-select:none;user-select:none}.van-calendar__month-mark{position:absolute;top:50%;left:50%;z-index:0;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);pointer-events:none;color:rgba(242,243,245,.8);color:var(--calendar-month-mark-color,rgba(242,243,245,.8));font-size:160px;font-size:var(--calendar-month-mark-font-size,160px)}.van-calendar__day,.van-calendar__selected-day{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;text-align:center}.van-calendar__day{position:relative;width:14.285%;height:64px;height:var(--calendar-day-height,64px);font-size:16px;font-size:var(--calendar-day-font-size,16px)}.van-calendar__day--end,.van-calendar__day--multiple-middle,.van-calendar__day--multiple-selected,.van-calendar__day--start,.van-calendar__day--start-end{color:#fff;color:var(--calendar-range-edge-color,#fff);background-color:#ee0a24;background-color:var(--calendar-range-edge-background-color,#ee0a24)}.van-calendar__day--start{border-radius:4px 0 0 4px;border-radius:var(--border-radius-md,4px) 0 0 var(--border-radius-md,4px)}.van-calendar__day--end{border-radius:0 4px 4px 0;border-radius:0 var(--border-radius-md,4px) var(--border-radius-md,4px) 0}.van-calendar__day--multiple-selected,.van-calendar__day--start-end{border-radius:4px;border-radius:var(--border-radius-md,4px)}.van-calendar__day--middle{color:#ee0a24;color:var(--calendar-range-middle-color,#ee0a24)}.van-calendar__day--middle:after{position:absolute;top:0;right:0;bottom:0;left:0;background-color:currentColor;content:"";opacity:.1;opacity:var(--calendar-range-middle-background-opacity,.1)}.van-calendar__day--disabled{cursor:default;color:#c8c9cc;color:var(--calendar-day-disabled-color,#c8c9cc)}.van-calendar__bottom-info,.van-calendar__top-info{position:absolute;right:0;left:0;font-size:10px;font-size:var(--calendar-info-font-size,10px);line-height:14px;line-height:var(--calendar-info-line-height,14px)}@media (max-width:350px){.van-calendar__bottom-info,.van-calendar__top-info{font-size:9px}}.van-calendar__top-info{top:6px}.van-calendar__bottom-info{bottom:6px}.van-calendar__selected-day{width:54px;width:var(--calendar-selected-day-size,54px);height:54px;height:var(--calendar-selected-day-size,54px);color:#fff;color:var(--calendar-selected-day-color,#fff);background-color:#ee0a24;background-color:var(--calendar-selected-day-background-color,#ee0a24);border-radius:4px;border-radius:var(--border-radius-md,4px)} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/index.js new file mode 100644 index 00000000..1db8d75e --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/index.js @@ -0,0 +1,335 @@ +'use strict'; +var __spreadArray = + (this && this.__spreadArray) || + function (to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; +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, + showRangePrompt: { + type: Boolean, + value: true, + }, + defaultDate: { + type: null, + 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: null, + 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: null, + value: null, + }, + firstDayOfWeek: { + type: Number, + value: 0, + }, + }, + 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(__spreadArray(__spreadArray([], 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, + showRangePrompt = _a.showRangePrompt; + if (maxRange && utils_1.calcDateNum(date) > maxRange) { + if (showRangePrompt) { + toast_1.default({ + duration: 0, + context: this, + message: + rangePrompt || + '\u9009\u62E9\u5929\u6570\u4E0D\u80FD\u8D85\u8FC7 ' + + maxRange + + ' \u5929', + }); + } + this.$emit('over-range'); + 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)); + }); + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/index.json new file mode 100644 index 00000000..397d5aea --- /dev/null +++ b/wechat/miniprogram/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" + } +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/index.wxml new file mode 100644 index 00000000..7df0b980 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/index.wxml @@ -0,0 +1,25 @@ + + + + + + + + + + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/index.wxs b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/index.wxs new file mode 100644 index 00000000..2c04be10 --- /dev/null +++ b/wechat/miniprogram/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 +}; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/index.wxss new file mode 100644 index 00000000..9d78e0f4 --- /dev/null +++ b/wechat/miniprogram/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} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/utils.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/utils.js new file mode 100644 index 00000000..cdd1a0cb --- /dev/null +++ b/wechat/miniprogram/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; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/utils.wxs b/wechat/miniprogram/miniprogram_npm/@vant/weapp/calendar/utils.wxs new file mode 100644 index 00000000..e57f6b32 --- /dev/null +++ b/wechat/miniprogram/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 +}; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/card/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/card/index.js new file mode 100644 index 00000000..cb0f9827 --- /dev/null +++ b/wechat/miniprogram/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'); + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/card/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/card/index.json new file mode 100644 index 00000000..e9174076 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/card/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-tag": "../tag/index" + } +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/card/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/card/index.wxml new file mode 100644 index 00000000..62173e4a --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/card/index.wxml @@ -0,0 +1,56 @@ + + + + + + + + + {{ tag }} + + + + + + + {{ title }} + + + {{ desc }} + + + + + + + + + {{ currency }} + {{ integerStr }} + {{ decimalStr }} + + + {{ currency }} {{ originPrice }} + + x {{ num }} + + + + + + + + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/card/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/card/index.wxss new file mode 100644 index 00000000..a21a5995 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/card/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-card{position:relative;box-sizing:border-box;padding:8px 16px;padding:var(--card-padding,8px 16px);font-size:12px;font-size:var(--card-font-size,12px);color:#323233;color:var(--card-text-color,#323233);background-color:#fafafa;background-color:var(--card-background-color,#fafafa)}.van-card__header{display:-webkit-flex;display:flex}.van-card__header--center{-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}.van-card__thumb{position:relative;-webkit-flex:none;flex:none;width:88px;width:var(--card-thumb-size,88px);height:88px;height:var(--card-thumb-size,88px);margin-right:8px;margin-right:var(--padding-xs,8px)}.van-card__thumb:empty{display:none}.van-card__img{width:100%;height:100%;border-radius:8px;border-radius:var(--border-radius-lg,8px)}.van-card__content{position:relative;display:-webkit-flex;display:flex;-webkit-flex:1;flex:1;-webkit-flex-direction:column;flex-direction:column;-webkit-justify-content:space-between;justify-content:space-between;min-width:0;min-height:88px;min-height:var(--card-thumb-size,88px)}.van-card__content--center{-webkit-justify-content:center;justify-content:center}.van-card__desc,.van-card__title{word-wrap:break-word}.van-card__title{font-weight:700;line-height:16px;line-height:var(--card-title-line-height,16px)}.van-card__desc{line-height:20px;line-height:var(--card-desc-line-height,20px);color:#646566;color:var(--card-desc-color,#646566)}.van-card__bottom{line-height:20px}.van-card__price{display:inline-block;font-weight:700;color:#ee0a24;color:var(--card-price-color,#ee0a24);font-size:12px;font-size:var(--card-price-font-size,12px)}.van-card__price-integer{font-size:16px;font-size:var(--card-price-integer-font-size,16px)}.van-card__price-decimal,.van-card__price-integer{font-family:Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif;font-family:var(--card-price-font-family,Avenir-Heavy,PingFang SC,Helvetica Neue,Arial,sans-serif)}.van-card__origin-price{display:inline-block;margin-left:5px;text-decoration:line-through;font-size:10px;font-size:var(--card-origin-price-font-size,10px);color:#646566;color:var(--card-origin-price-color,#646566)}.van-card__num{float:right}.van-card__tag{position:absolute!important;top:2px;left:0}.van-card__footer{-webkit-flex:none;flex:none;width:100%;text-align:right} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell-group/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell-group/index.js new file mode 100644 index 00000000..7d934870 --- /dev/null +++ b/wechat/miniprogram/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, + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell-group/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell-group/index.json new file mode 100644 index 00000000..467ce294 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell-group/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell-group/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell-group/index.wxml new file mode 100644 index 00000000..6e0b471d --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell-group/index.wxml @@ -0,0 +1,9 @@ + + {{ title }} + + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell-group/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell-group/index.wxss new file mode 100644 index 00000000..edbccd59 --- /dev/null +++ b/wechat/miniprogram/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)} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell/index.js new file mode 100644 index 00000000..7a18c9f2 --- /dev/null +++ b/wechat/miniprogram/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(); + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell/index.json new file mode 100644 index 00000000..0a336c08 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index" + } +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell/index.wxml new file mode 100644 index 00000000..8387c3c8 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell/index.wxml @@ -0,0 +1,47 @@ + + + + + + + + + + {{ title }} + + + + + {{ label }} + + + + + {{ value }} + + + + + + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell/index.wxs b/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell/index.wxs new file mode 100644 index 00000000..e3500c43 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell/index.wxs @@ -0,0 +1,17 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function titleStyle(data) { + return style([ + { + 'max-width': addUnit(data.titleWidth), + 'min-width': addUnit(data.titleWidth), + }, + data.titleStyle, + ]); +} + +module.exports = { + titleStyle: titleStyle, +}; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell/index.wxss new file mode 100644 index 00000000..605570db --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/cell/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-cell{position:relative;display:-webkit-flex;display:flex;box-sizing:border-box;width:100%;padding:10px 16px;padding:var(--cell-vertical-padding,10px) var(--cell-horizontal-padding,16px);font-size:14px;font-size:var(--cell-font-size,14px);line-height:24px;line-height:var(--cell-line-height,24px);color:#323233;color:var(--cell-text-color,#323233);background-color:#fff;background-color:var(--cell-background-color,#fff)}.van-cell:after{position:absolute;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;content:" ";pointer-events:none;right:16px;bottom:0;left:16px;border-bottom:1px solid #ebedf0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.van-cell--borderless:after{display:none}.van-cell-group{background-color:#fff;background-color:var(--cell-background-color,#fff)}.van-cell__label{margin-top:3px;margin-top:var(--cell-label-margin-top,3px);font-size:12px;font-size:var(--cell-label-font-size,12px);line-height:18px;line-height:var(--cell-label-line-height,18px);color:#969799;color:var(--cell-label-color,#969799)}.van-cell__value{overflow:hidden;text-align:right;vertical-align:middle;color:#969799;color:var(--cell-value-color,#969799)}.van-cell__title,.van-cell__value{-webkit-flex:1;flex:1}.van-cell__title:empty,.van-cell__value:empty{display:none}.van-cell__left-icon-wrap,.van-cell__right-icon-wrap{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;height:24px;height:var(--cell-line-height,24px);font-size:16px;font-size:var(--cell-icon-size,16px)}.van-cell__left-icon-wrap{margin-right:4px;margin-right:var(--padding-base,4px)}.van-cell__right-icon-wrap{margin-left:4px;margin-left:var(--padding-base,4px);color:#969799;color:var(--cell-right-icon-color,#969799)}.van-cell__left-icon{vertical-align:middle}.van-cell__left-icon,.van-cell__right-icon{line-height:24px;line-height:var(--cell-line-height,24px)}.van-cell--clickable.van-cell--hover{background-color:#f2f3f5;background-color:var(--cell-active-color,#f2f3f5)}.van-cell--required{overflow:visible}.van-cell--required:before{position:absolute;content:"*";left:8px;left:var(--padding-xs,8px);font-size:14px;font-size:var(--cell-font-size,14px);color:#ee0a24;color:var(--cell-required-color,#ee0a24)}.van-cell--center{-webkit-align-items:center;align-items:center}.van-cell--large{padding-top:12px;padding-top:var(--cell-large-vertical-padding,12px);padding-bottom:12px;padding-bottom:var(--cell-large-vertical-padding,12px)}.van-cell--large .van-cell__title{font-size:16px;font-size:var(--cell-large-title-font-size,16px)}.van-cell--large .van-cell__value{font-size:16px;font-size:var(--cell-large-value-font-size,16px)}.van-cell--large .van-cell__label{font-size:14px;font-size:var(--cell-large-label-font-size,14px)} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox-group/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox-group/index.js new file mode 100644 index 00000000..1c8016a6 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox-group/index.js @@ -0,0 +1,38 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +var relation_1 = require('../common/relation'); +var component_1 = require('../common/component'); +component_1.VantComponent({ + field: true, + relation: relation_1.useChildren('checkbox', 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, + }); + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox-group/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox-group/index.json new file mode 100644 index 00000000..467ce294 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox-group/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox-group/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox-group/index.wxml new file mode 100644 index 00000000..4fa864ce --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox-group/index.wxml @@ -0,0 +1 @@ + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox-group/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox-group/index.wxss new file mode 100644 index 00000000..99694d60 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox-group/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.js new file mode 100644 index 00000000..7b9598bb --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.js @@ -0,0 +1,83 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +var relation_1 = require('../common/relation'); +var component_1 = require('../common/component'); +function emit(target, value) { + target.$emit('input', value); + target.$emit('change', value); +} +component_1.VantComponent({ + field: true, + relation: relation_1.useParent('checkbox-group'), + classes: ['icon-class', 'label-class'], + props: { + value: Boolean, + disabled: Boolean, + useIconSlot: Boolean, + checkedColor: String, + labelPosition: { + type: String, + value: 'right', + }, + 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); + } + } + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.json new file mode 100644 index 00000000..0a336c08 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-icon": "../icon/index" + } +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.wxml new file mode 100644 index 00000000..0c008d81 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.wxml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.wxs b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.wxs new file mode 100644 index 00000000..eb9c7726 --- /dev/null +++ b/wechat/miniprogram/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, +}; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/checkbox/index.wxss new file mode 100644 index 00000000..afaf37be --- /dev/null +++ b/wechat/miniprogram/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} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/circle/canvas.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/circle/canvas.js new file mode 100644 index 00000000..dbee1d73 --- /dev/null +++ b/wechat/miniprogram/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; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/circle/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/circle/index.js new file mode 100644 index 00000000..e4f02479 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/circle/index.js @@ -0,0 +1,215 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +var color_1 = require('../common/color'); +var component_1 = require('../common/component'); +var utils_1 = require('../common/utils'); +var validator_1 = require('../common/validator'); +var version_1 = require('../common/version'); +var canvas_1 = require('./canvas'); +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: null, + 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 === '' || !version_1.canIUseCanvas2d()) { + 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 (Math.abs(_this.currentValue - value) < STEP) { + _this.currentValue = value; + } else { + 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(); + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/circle/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/circle/index.json new file mode 100644 index 00000000..467ce294 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/circle/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/circle/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/circle/index.wxml new file mode 100644 index 00000000..52bc59fc --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/circle/index.wxml @@ -0,0 +1,9 @@ + + + + + + + + {{ text }} + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/circle/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/circle/index.wxss new file mode 100644 index 00000000..3ab63dfd --- /dev/null +++ b/wechat/miniprogram/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)} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/col/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/col/index.js new file mode 100644 index 00000000..a33c44b9 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/col/index.js @@ -0,0 +1,11 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +var relation_1 = require('../common/relation'); +var component_1 = require('../common/component'); +component_1.VantComponent({ + relation: relation_1.useParent('row'), + props: { + span: Number, + offset: Number, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/col/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/col/index.json new file mode 100644 index 00000000..467ce294 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/col/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/col/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/col/index.wxml new file mode 100644 index 00000000..975348b6 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/col/index.wxml @@ -0,0 +1,9 @@ + + + + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/col/index.wxs b/wechat/miniprogram/miniprogram_npm/@vant/weapp/col/index.wxs new file mode 100644 index 00000000..507c1cb9 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/col/index.wxs @@ -0,0 +1,18 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function rootStyle(data) { + if (!data.gutter) { + return ''; + } + + return style({ + 'padding-right': addUnit(data.gutter / 2), + 'padding-left': addUnit(data.gutter / 2), + }); +} + +module.exports = { + rootStyle: rootStyle, +}; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/col/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/col/index.wxss new file mode 100644 index 00000000..44c896a3 --- /dev/null +++ b/wechat/miniprogram/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%} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse-item/animate.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse-item/animate.js new file mode 100644 index 00000000..43173837 --- /dev/null +++ b/wechat/miniprogram/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; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse-item/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse-item/index.js new file mode 100644 index 00000000..b30315cf --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse-item/index.js @@ -0,0 +1,68 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +var component_1 = require('../common/component'); +var relation_1 = require('../common/relation'); +var animate_1 = require('./animate'); +component_1.VantComponent({ + classes: ['title-class', 'content-class'], + relation: relation_1.useParent('collapse'), + 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); + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse-item/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse-item/index.json new file mode 100644 index 00000000..0e5425cd --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse-item/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-cell": "../cell/index" + } +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse-item/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse-item/index.wxml new file mode 100644 index 00000000..ae4cc831 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse-item/index.wxml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse-item/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse-item/index.wxss new file mode 100644 index 00000000..0bb936c0 --- /dev/null +++ b/wechat/miniprogram/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)} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse/index.js new file mode 100644 index 00000000..4e2c0973 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse/index.js @@ -0,0 +1,50 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +var component_1 = require('../common/component'); +var relation_1 = require('../common/relation'); +component_1.VantComponent({ + relation: relation_1.useChildren('collapse-item'), + 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); + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse/index.json new file mode 100644 index 00000000..467ce294 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse/index.wxml new file mode 100644 index 00000000..fd4e1719 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse/index.wxml @@ -0,0 +1,3 @@ + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse/index.wxss new file mode 100644 index 00000000..99694d60 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/collapse/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/color.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/color.js new file mode 100644 index 00000000..885acaa7 --- /dev/null +++ b/wechat/miniprogram/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'; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/component.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/component.js new file mode 100644 index 00000000..2274506e --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/component.js @@ -0,0 +1,48 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.VantComponent = void 0; +var basic_1 = require('../mixins/basic'); +function mapKeys(source, target, map) { + Object.keys(map).forEach(function (key) { + if (source[key]) { + target[map[key]] = source[key]; + } + }); +} +function VantComponent(vantOptions) { + var options = {}; + mapKeys(vantOptions, options, { + data: 'data', + props: 'properties', + mixins: 'behaviors', + methods: 'methods', + beforeCreate: 'created', + created: 'attached', + mounted: 'ready', + destroyed: 'detached', + classes: 'externalClasses', + }); + // 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); + // add relations + var relation = vantOptions.relation; + if (relation) { + options.relations = relation.relations; + options.behaviors.push(relation.mixin); + } + // map field to form-field behavior + if (vantOptions.field) { + options.behaviors.push('wx://form-field'); + } + // add default options + options.options = { + multipleSlots: true, + addGlobalClass: true, + }; + Component(options); +} +exports.VantComponent = VantComponent; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/index.wxss new file mode 100644 index 00000000..976825d7 --- /dev/null +++ b/wechat/miniprogram/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} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/relation.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/relation.js new file mode 100644 index 00000000..fcf9824c --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/relation.js @@ -0,0 +1,79 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.useChildren = exports.useParent = void 0; +function useParent(name, onEffect) { + var _a; + var path = '../' + name + '/index'; + return { + relations: + ((_a = {}), + (_a[path] = { + type: 'ancestor', + linked: function () { + onEffect && onEffect.call(this); + }, + linkChanged: function () { + onEffect && onEffect.call(this); + }, + unlinked: function () { + onEffect && onEffect.call(this); + }, + }), + _a), + mixin: Behavior({ + created: function () { + var _this = this; + Object.defineProperty(this, 'parent', { + get: function () { + return _this.getRelationNodes(path)[0]; + }, + }); + Object.defineProperty(this, 'index', { + // @ts-ignore + get: function () { + var _a, _b; + return (_b = + (_a = _this.parent) === null || _a === void 0 + ? void 0 + : _a.children) === null || _b === void 0 + ? void 0 + : _b.indexOf(_this); + }, + }); + }, + }), + }; +} +exports.useParent = useParent; +function useChildren(name, onEffect) { + var _a; + var path = '../' + name + '/index'; + return { + relations: + ((_a = {}), + (_a[path] = { + type: 'descendant', + linked: function (target) { + onEffect && onEffect.call(this, target); + }, + linkChanged: function (target) { + onEffect && onEffect.call(this, target); + }, + unlinked: function (target) { + onEffect && onEffect.call(this, target); + }, + }), + _a), + mixin: Behavior({ + created: function () { + var _this = this; + Object.defineProperty(this, 'children', { + get: function () { + return _this.getRelationNodes(path) || []; + }, + }); + }, + }), + }; +} +exports.useChildren = useChildren; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/clearfix.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/clearfix.wxss new file mode 100644 index 00000000..a0ca8384 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/clearfix.wxss @@ -0,0 +1 @@ +.van-clearfix:after{display:table;clear:both;content:""} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/ellipsis.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/ellipsis.wxss new file mode 100644 index 00000000..1e9dbc9e --- /dev/null +++ b/wechat/miniprogram/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} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/hairline.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/hairline.wxss new file mode 100644 index 00000000..49b9e656 --- /dev/null +++ b/wechat/miniprogram/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} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/mixins/clearfix.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/mixins/clearfix.wxss new file mode 100644 index 00000000..e69de29b diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/mixins/ellipsis.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/mixins/ellipsis.wxss new file mode 100644 index 00000000..e69de29b diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/mixins/hairline.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/mixins/hairline.wxss new file mode 100644 index 00000000..e69de29b diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/theme.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/theme.wxss new file mode 100644 index 00000000..e69de29b diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/var.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/style/var.wxss new file mode 100644 index 00000000..e69de29b diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/utils.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/utils.js new file mode 100644 index 00000000..c2cac34c --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/utils.js @@ -0,0 +1,113 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.getCurrentPage = 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; +function getCurrentPage() { + var pages = getCurrentPages(); + return pages[pages.length - 1]; +} +exports.getCurrentPage = getCurrentPage; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/validator.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/validator.js new file mode 100644 index 00000000..798f0548 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/validator.js @@ -0,0 +1,43 @@ +'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; +// eslint-disable-next-line @typescript-eslint/ban-types +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; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/version.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/version.js new file mode 100644 index 00000000..c7dc5dbf --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/common/version.js @@ -0,0 +1,58 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.canIUseGetUserProfile = exports.canIUseCanvas2d = 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 gte(version) { + var system = utils_1.getSystemInfoSync(); + return compareVersion(system.SDKVersion, version) >= 0; +} +function canIUseModel() { + return gte('2.9.3'); +} +exports.canIUseModel = canIUseModel; +function canIUseFormFieldButton() { + return gte('2.10.3'); +} +exports.canIUseFormFieldButton = canIUseFormFieldButton; +function canIUseAnimate() { + return gte('2.9.0'); +} +exports.canIUseAnimate = canIUseAnimate; +function canIUseGroupSetData() { + return gte('2.4.0'); +} +exports.canIUseGroupSetData = canIUseGroupSetData; +function canIUseNextTick() { + return wx.canIUse('nextTick'); +} +exports.canIUseNextTick = canIUseNextTick; +function canIUseCanvas2d() { + return gte('2.9.0'); +} +exports.canIUseCanvas2d = canIUseCanvas2d; +function canIUseGetUserProfile() { + return !!wx.getUserProfile; +} +exports.canIUseGetUserProfile = canIUseGetUserProfile; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/count-down/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/count-down/index.js new file mode 100644 index 00000000..348d4898 --- /dev/null +++ b/wechat/miniprogram/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'); + } + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/count-down/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/count-down/index.json new file mode 100644 index 00000000..467ce294 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/count-down/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/count-down/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/count-down/index.wxml new file mode 100644 index 00000000..e206e167 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/count-down/index.wxml @@ -0,0 +1,4 @@ + + + {{ formattedTime }} + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/count-down/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/count-down/index.wxss new file mode 100644 index 00000000..bc33f5dc --- /dev/null +++ b/wechat/miniprogram/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)} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/count-down/utils.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/count-down/utils.js new file mode 100644 index 00000000..10864a21 --- /dev/null +++ b/wechat/miniprogram/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; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/datetime-picker/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/datetime-picker/index.js new file mode 100644 index 00000000..6444056a --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/datetime-picker/index.js @@ -0,0 +1,375 @@ +'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 __spreadArray = + (this && this.__spreadArray) || + function (to, from) { + for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) + to[j] = from[i]; + return to; + }; +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; + this.updateColumnValue(val).then(function () { + if (!isEqual) { + _this.$emit('input', val); + } + }); + }, + 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, + __spreadArray(__spreadArray([], 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; + return type === 'year' ? '' + value : padZero(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); + }); + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/datetime-picker/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/datetime-picker/index.json new file mode 100644 index 00000000..a778e91c --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/datetime-picker/index.json @@ -0,0 +1,6 @@ +{ + "component": true, + "usingComponents": { + "van-picker": "../picker/index" + } +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/datetime-picker/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/datetime-picker/index.wxml new file mode 100644 index 00000000..ade22024 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/datetime-picker/index.wxml @@ -0,0 +1,16 @@ + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/datetime-picker/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/datetime-picker/index.wxss new file mode 100644 index 00000000..99694d60 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/datetime-picker/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss'; \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/definitions/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/definitions/index.js new file mode 100644 index 00000000..c8ad2e54 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/definitions/index.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/dialog/dialog.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dialog/dialog.js new file mode 100644 index 00000000..d90d8ea4 --- /dev/null +++ b/wechat/miniprogram/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 --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/dialog/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dialog/index.js new file mode 100644 index 00000000..135ce71f --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dialog/index.js @@ -0,0 +1,126 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +var component_1 = require('../common/component'); +var button_1 = require('../mixins/button'); +var color_1 = require('../common/color'); +var utils_1 = require('../common/utils'); +component_1.VantComponent({ + mixins: [button_1.button], + props: { + show: { + type: Boolean, + observer: function (show) { + !show && this.stopLoading(); + }, + }, + title: String, + message: String, + theme: { + type: String, + value: 'default', + }, + useSlot: Boolean, + className: String, + customStyle: String, + asyncClose: Boolean, + messageAlign: String, + beforeClose: null, + overlayStyle: String, + useTitleSlot: Boolean, + showCancelButton: Boolean, + closeOnClickOverlay: Boolean, + confirmButtonOpenType: String, + width: null, + zIndex: { + type: Number, + value: 2000, + }, + confirmButtonText: { + type: String, + value: '确认', + }, + cancelButtonText: { + type: String, + value: '取消', + }, + confirmButtonColor: { + type: String, + value: color_1.RED, + }, + cancelButtonColor: { + type: String, + value: color_1.GRAY, + }, + showConfirmButton: { + type: Boolean, + value: true, + }, + overlay: { + type: Boolean, + value: true, + }, + transition: { + type: String, + value: 'scale', + }, + }, + data: { + loading: { + confirm: false, + cancel: false, + }, + callback: function () {}, + }, + methods: { + onConfirm: function () { + this.handleAction('confirm'); + }, + onCancel: function () { + this.handleAction('cancel'); + }, + onClickOverlay: function () { + this.close('overlay'); + }, + close: function (action) { + var _this = this; + this.setData({ show: false }); + wx.nextTick(function () { + _this.$emit('close', action); + var callback = _this.data.callback; + if (callback) { + callback(action, _this); + } + }); + }, + stopLoading: function () { + this.setData({ + loading: { + confirm: false, + cancel: false, + }, + }); + }, + handleAction: function (action) { + var _a; + var _this = this; + this.$emit(action, { dialog: this }); + var _b = this.data, + asyncClose = _b.asyncClose, + beforeClose = _b.beforeClose; + if (!asyncClose && !beforeClose) { + this.close(action); + return; + } + this.setData(((_a = {}), (_a['loading.' + action] = true), _a)); + if (beforeClose) { + utils_1.toPromise(beforeClose(action)).then(function (value) { + if (value) { + _this.close(action); + } else { + _this.stopLoading(); + } + }); + } + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/dialog/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dialog/index.json new file mode 100644 index 00000000..43417fc8 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dialog/index.json @@ -0,0 +1,9 @@ +{ + "component": true, + "usingComponents": { + "van-popup": "../popup/index", + "van-button": "../button/index", + "van-goods-action": "../goods-action/index", + "van-goods-action-button": "../goods-action-button/index" + } +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/dialog/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dialog/index.wxml new file mode 100644 index 00000000..f49dee40 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dialog/index.wxml @@ -0,0 +1,113 @@ + + + + + + {{ title }} + + + + + {{ message }} + + + + + {{ cancelButtonText }} + + + {{ confirmButtonText }} + + + + + + {{ cancelButtonText }} + + + {{ confirmButtonText }} + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/dialog/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dialog/index.wxss new file mode 100644 index 00000000..c6bac957 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dialog/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-dialog{top:45%!important;overflow:hidden;width:320px;width:var(--dialog-width,320px);font-size:16px;font-size:var(--dialog-font-size,16px);border-radius:16px;border-radius:var(--dialog-border-radius,16px);background-color:#fff;background-color:var(--dialog-background-color,#fff)}@media (max-width:321px){.van-dialog{width:90%;width:var(--dialog-small-screen-width,90%)}}.van-dialog__header{text-align:center;padding-top:24px;padding-top:var(--dialog-header-padding-top,24px);font-weight:500;font-weight:var(--dialog-header-font-weight,500);line-height:24px;line-height:var(--dialog-header-line-height,24px)}.van-dialog__header--isolated{padding:24px 0;padding:var(--dialog-header-isolated-padding,24px 0)}.van-dialog__message{overflow-y:auto;text-align:center;-webkit-overflow-scrolling:touch;font-size:14px;font-size:var(--dialog-message-font-size,14px);line-height:20px;line-height:var(--dialog-message-line-height,20px);max-height:60vh;max-height:var(--dialog-message-max-height,60vh);padding:24px;padding:var(--dialog-message-padding,24px)}.van-dialog__message-text{word-wrap:break-word}.van-dialog__message--hasTitle{padding-top:8px;padding-top:var(--dialog-has-title-message-padding-top,8px);color:#646566;color:var(--dialog-has-title-message-text-color,#646566)}.van-dialog__message--round-button{padding-bottom:16px;color:#323233}.van-dialog__message--left{text-align:left}.van-dialog__message--right{text-align:right}.van-dialog__footer{display:-webkit-flex;display:flex}.van-dialog__footer--round-button{position:relative!important;padding:8px 24px 16px!important}.van-dialog__button{-webkit-flex:1;flex:1}.van-dialog__cancel,.van-dialog__confirm{border:0!important}.van-dialog-bounce-enter{-webkit-transform:translate3d(-50%,-50%,0) scale(.7);transform:translate3d(-50%,-50%,0) scale(.7);opacity:0}.van-dialog-bounce-leave-active{-webkit-transform:translate3d(-50%,-50%,0) scale(.9);transform:translate3d(-50%,-50%,0) scale(.9);opacity:0} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/divider/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/divider/index.js new file mode 100644 index 00000000..b643841f --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/divider/index.js @@ -0,0 +1,14 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +var component_1 = require('../common/component'); +component_1.VantComponent({ + props: { + dashed: Boolean, + hairline: Boolean, + contentPosition: String, + fontSize: String, + borderColor: String, + textColor: String, + customStyle: String, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/divider/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/divider/index.json new file mode 100644 index 00000000..a89ef4db --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/divider/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/divider/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/divider/index.wxml new file mode 100644 index 00000000..f6a5a457 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/divider/index.wxml @@ -0,0 +1,9 @@ + + + + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/divider/index.wxs b/wechat/miniprogram/miniprogram_npm/@vant/weapp/divider/index.wxs new file mode 100644 index 00000000..215b14f4 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/divider/index.wxs @@ -0,0 +1,18 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function rootStyle(data) { + return style([ + { + 'border-color': data.borderColor, + color: data.textColor, + 'font-size': addUnit(data.fontSize), + }, + data.customStyle, + ]); +} + +module.exports = { + rootStyle: rootStyle, +}; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/divider/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/divider/index.wxss new file mode 100644 index 00000000..c055e3af --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/divider/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-divider{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;margin:16px 0;margin:var(--divider-margin,16px 0);color:#969799;color:var(--divider-text-color,#969799);font-size:14px;font-size:var(--divider-font-size,14px);line-height:24px;line-height:var(--divider-line-height,24px);border:0 solid #ebedf0;border-color:var(--divider-border-color,#ebedf0)}.van-divider:after,.van-divider:before{display:block;-webkit-flex:1;flex:1;box-sizing:border-box;height:1px;border-color:inherit;border-style:inherit;border-width:1px 0 0}.van-divider:before{content:""}.van-divider--hairline:after,.van-divider--hairline:before{-webkit-transform:scaleY(.5);transform:scaleY(.5)}.van-divider--dashed{border-style:dashed}.van-divider--center:before,.van-divider--left:before,.van-divider--right:before{margin-right:16px;margin-right:var(--divider-content-padding,16px)}.van-divider--center:after,.van-divider--left:after,.van-divider--right:after{content:"";margin-left:16px;margin-left:var(--divider-content-padding,16px)}.van-divider--left:before{max-width:10%;max-width:var(--divider-content-left-width,10%)}.van-divider--right:after{max-width:10%;max-width:var(--divider-content-right-width,10%)} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-item/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-item/index.js new file mode 100644 index 00000000..aac47c99 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-item/index.js @@ -0,0 +1,117 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +var relation_1 = require('../common/relation'); +var component_1 = require('../common/component'); +component_1.VantComponent({ + field: true, + relation: relation_1.useParent('dropdown-menu', function () { + this.updateDataFromParent(); + }), + props: { + value: { + type: null, + observer: 'rerender', + }, + title: { + type: String, + observer: 'rerender', + }, + disabled: Boolean, + titleClass: { + type: String, + observer: 'rerender', + }, + options: { + type: Array, + value: [], + observer: 'rerender', + }, + popupStyle: String, + }, + data: { + transition: true, + showPopup: false, + showWrapper: false, + displayTitle: '', + }, + methods: { + rerender: function () { + var _this = this; + wx.nextTick(function () { + var _a; + (_a = _this.parent) === null || _a === void 0 + ? void 0 + : _a.updateItemListData(); + }); + }, + updateDataFromParent: function () { + if (this.parent) { + var _a = this.parent.data, + overlay = _a.overlay, + duration = _a.duration, + activeColor = _a.activeColor, + closeOnClickOverlay = _a.closeOnClickOverlay, + direction = _a.direction; + this.setData({ + overlay: overlay, + duration: duration, + activeColor: activeColor, + closeOnClickOverlay: closeOnClickOverlay, + direction: direction, + }); + } + }, + onOpen: function () { + this.$emit('open'); + }, + onOpened: function () { + this.$emit('opened'); + }, + onClose: function () { + this.$emit('close'); + }, + onClosed: function () { + this.$emit('closed'); + this.setData({ showWrapper: false }); + }, + onOptionTap: function (event) { + var option = event.currentTarget.dataset.option; + var value = option.value; + var shouldEmitChange = this.data.value !== value; + this.setData({ showPopup: false, value: value }); + this.$emit('close'); + this.rerender(); + if (shouldEmitChange) { + this.$emit('change', value); + } + }, + toggle: function (show, options) { + var _this = this; + var _a; + if (options === void 0) { + options = {}; + } + var showPopup = this.data.showPopup; + if (typeof show !== 'boolean') { + show = !showPopup; + } + if (show === showPopup) { + return; + } + this.setData({ + transition: !options.immediate, + showPopup: show, + }); + if (show) { + (_a = this.parent) === null || _a === void 0 + ? void 0 + : _a.getChildWrapperStyle().then(function (wrapperStyle) { + _this.setData({ wrapperStyle: wrapperStyle, showWrapper: true }); + _this.rerender(); + }); + } else { + this.rerender(); + } + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-item/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-item/index.json new file mode 100644 index 00000000..88d54099 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-item/index.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "van-popup": "../popup/index", + "van-cell": "../cell/index", + "van-icon": "../icon/index" + } +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-item/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-item/index.wxml new file mode 100644 index 00000000..dd75292f --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-item/index.wxml @@ -0,0 +1,48 @@ + + + + + + + {{ item.text }} + + + + + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-item/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-item/index.wxss new file mode 100644 index 00000000..7cab3f28 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-item/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-dropdown-item{position:fixed;right:0;left:0;overflow:hidden}.van-dropdown-item__option{text-align:left}.van-dropdown-item__option--active .van-dropdown-item__icon,.van-dropdown-item__option--active .van-dropdown-item__title{color:#ee0a24;color:var(--dropdown-menu-option-active-color,#ee0a24)}.van-dropdown-item--up{top:0}.van-dropdown-item--down{bottom:0}.van-dropdown-item__icon{display:block;line-height:inherit} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-item/shared.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-item/shared.js new file mode 100644 index 00000000..db8b17d5 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-item/shared.js @@ -0,0 +1,2 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-menu/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-menu/index.js new file mode 100644 index 00000000..9c27c647 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-menu/index.js @@ -0,0 +1,126 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +var component_1 = require('../common/component'); +var relation_1 = require('../common/relation'); +var utils_1 = require('../common/utils'); +var ARRAY = []; +component_1.VantComponent({ + field: true, + relation: relation_1.useChildren('dropdown-item', function () { + this.updateItemListData(); + }), + props: { + activeColor: { + type: String, + observer: 'updateChildrenData', + }, + overlay: { + type: Boolean, + value: true, + observer: 'updateChildrenData', + }, + zIndex: { + type: Number, + value: 10, + }, + duration: { + type: Number, + value: 200, + observer: 'updateChildrenData', + }, + direction: { + type: String, + value: 'down', + observer: 'updateChildrenData', + }, + closeOnClickOverlay: { + type: Boolean, + value: true, + observer: 'updateChildrenData', + }, + closeOnClickOutside: { + type: Boolean, + value: true, + }, + }, + data: { + itemListData: [], + }, + beforeCreate: function () { + var windowHeight = utils_1.getSystemInfoSync().windowHeight; + this.windowHeight = windowHeight; + ARRAY.push(this); + }, + destroyed: function () { + var _this = this; + ARRAY = ARRAY.filter(function (item) { + return item !== _this; + }); + }, + methods: { + updateItemListData: function () { + this.setData({ + itemListData: this.children.map(function (child) { + return child.data; + }), + }); + }, + updateChildrenData: function () { + this.children.forEach(function (child) { + child.updateDataFromParent(); + }); + }, + toggleItem: function (active) { + this.children.forEach(function (item, index) { + var showPopup = item.data.showPopup; + if (index === active) { + item.toggle(); + } else if (showPopup) { + item.toggle(false, { immediate: true }); + } + }); + }, + close: function () { + this.children.forEach(function (child) { + child.toggle(false, { immediate: true }); + }); + }, + getChildWrapperStyle: function () { + var _this = this; + var _a = this.data, + zIndex = _a.zIndex, + direction = _a.direction; + return utils_1.getRect(this, '.van-dropdown-menu').then(function (rect) { + var _a = rect.top, + top = _a === void 0 ? 0 : _a, + _b = rect.bottom, + bottom = _b === void 0 ? 0 : _b; + var offset = direction === 'down' ? bottom : _this.windowHeight - top; + var wrapperStyle = 'z-index: ' + zIndex + ';'; + if (direction === 'down') { + wrapperStyle += 'top: ' + utils_1.addUnit(offset) + ';'; + } else { + wrapperStyle += 'bottom: ' + utils_1.addUnit(offset) + ';'; + } + return wrapperStyle; + }); + }, + onTitleTap: function (event) { + var _this = this; + var index = event.currentTarget.dataset.index; + var child = this.children[index]; + if (!child.data.disabled) { + ARRAY.forEach(function (menuItem) { + if ( + menuItem && + menuItem.data.closeOnClickOutside && + menuItem !== _this + ) { + menuItem.close(); + } + }); + this.toggleItem(index); + } + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-menu/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-menu/index.json new file mode 100644 index 00000000..467ce294 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-menu/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxml new file mode 100644 index 00000000..037ac3b6 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxml @@ -0,0 +1,23 @@ + + + + + + + + {{ computed.displayTitle(item) }} + + + + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxs b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxs new file mode 100644 index 00000000..65388549 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxs @@ -0,0 +1,16 @@ +/* eslint-disable */ +function displayTitle(item) { + if (item.title) { + return item.title; + } + + var match = item.options.filter(function(option) { + return option.value === item.value; + }); + var displayTitle = match.length ? match[0].text : ''; + return displayTitle; +} + +module.exports = { + displayTitle: displayTitle +}; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxss new file mode 100644 index 00000000..ec6caff6 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/dropdown-menu/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-dropdown-menu{display:-webkit-flex;display:flex;box-shadow:0 2px 12px rgba(100,101,102,.12);-webkit-user-select:none;user-select:none;height:50px;height:var(--dropdown-menu-height,50px);background-color:#fff;background-color:var(--dropdown-menu-background-color,#fff)}.van-dropdown-menu__item{display:-webkit-flex;display:flex;-webkit-flex:1;flex:1;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;min-width:0}.van-dropdown-menu__item:active{opacity:.7}.van-dropdown-menu__item--disabled:active{opacity:1}.van-dropdown-menu__item--disabled .van-dropdown-menu__title{color:#969799;color:var(--dropdown-menu-title-disabled-text-color,#969799)}.van-dropdown-menu__title{position:relative;box-sizing:border-box;max-width:100%;padding:0 8px;padding:var(--dropdown-menu-title-padding,0 8px);color:#323233;color:var(--dropdown-menu-title-text-color,#323233);font-size:15px;font-size:var(--dropdown-menu-title-font-size,15px);line-height:18px;line-height:var(--dropdown-menu-title-line-height,18px)}.van-dropdown-menu__title:after{position:absolute;top:50%;right:-4px;margin-top:-5px;border-color:transparent transparent currentcolor currentcolor;border-style:solid;border-width:3px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:.8;content:""}.van-dropdown-menu__title--active{color:#ee0a24;color:var(--dropdown-menu-title-active-text-color,#ee0a24)}.van-dropdown-menu__title--down:after{margin-top:-1px;-webkit-transform:rotate(135deg);transform:rotate(135deg)} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/empty/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/empty/index.js new file mode 100644 index 00000000..d5b20259 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/empty/index.js @@ -0,0 +1,12 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +var component_1 = require('../common/component'); +component_1.VantComponent({ + props: { + description: String, + image: { + type: String, + value: 'default', + }, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/empty/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/empty/index.json new file mode 100644 index 00000000..e8cfaaf8 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/empty/index.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/empty/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/empty/index.wxml new file mode 100644 index 00000000..9c7b719a --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/empty/index.wxml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + {{ description }} + + + + + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/empty/index.wxs b/wechat/miniprogram/miniprogram_npm/@vant/weapp/empty/index.wxs new file mode 100644 index 00000000..9696dd47 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/empty/index.wxs @@ -0,0 +1,14 @@ +/* eslint-disable */ +var PRESETS = ['error', 'search', 'default', 'network']; + +function imageUrl(image) { + if (PRESETS.indexOf(image) !== -1) { + return 'https://img.yzcdn.cn/vant/empty-image-' + image + '.png'; + } + + return image; +} + +module.exports = { + imageUrl: imageUrl, +}; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/empty/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/empty/index.wxss new file mode 100644 index 00000000..aeb9d4b1 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/empty/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-empty{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;padding:32px 0}.van-empty__image{width:160px;height:160px}.van-empty__image:empty{display:none}.van-empty__image__img{width:100%;height:100%}.van-empty__image:not(:empty)+.van-empty__image{display:none}.van-empty__description{margin-top:16px;padding:0 60px;color:#969799;font-size:14px;line-height:20px}.van-empty__description:empty,.van-empty__description:not(:empty)+.van-empty__description{display:none}.van-empty__bottom{margin-top:24px} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/index.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/index.js new file mode 100644 index 00000000..e017616a --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/index.js @@ -0,0 +1,151 @@ +'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 utils_1 = require('../common/utils'); +var component_1 = require('../common/component'); +var props_1 = require('./props'); +component_1.VantComponent({ + field: true, + classes: ['input-class', 'right-icon-class', 'label-class'], + props: __assign( + __assign( + __assign(__assign({}, props_1.commonProps), props_1.inputProps), + props_1.textareaProps + ), + { + size: String, + icon: String, + label: String, + error: Boolean, + center: Boolean, + isLink: Boolean, + leftIcon: String, + rightIcon: String, + autosize: null, + required: Boolean, + iconClass: String, + clickable: Boolean, + inputAlign: String, + customStyle: String, + errorMessage: String, + arrowDirection: String, + showWordLimit: Boolean, + errorMessageAlign: String, + readonly: { + type: Boolean, + observer: 'setShowClear', + }, + clearable: { + type: Boolean, + observer: 'setShowClear', + }, + border: { + type: Boolean, + value: true, + }, + titleWidth: { + type: String, + value: '6.2em', + }, + } + ), + data: { + focused: false, + innerValue: '', + showClear: false, + }, + created: function () { + this.value = this.data.value; + this.setData({ innerValue: this.value }); + }, + methods: { + onInput: function (event) { + var _a = (event.detail || {}).value, + value = _a === void 0 ? '' : _a; + this.value = value; + this.setShowClear(); + this.emitChange(); + }, + onFocus: function (event) { + this.focused = true; + this.setShowClear(); + this.$emit('focus', event.detail); + }, + onBlur: function (event) { + this.focused = false; + this.setShowClear(); + this.$emit('blur', event.detail); + }, + onClickIcon: function () { + this.$emit('click-icon'); + }, + onClickInput: function (event) { + this.$emit('click-input', event.detail); + }, + onClear: function () { + var _this = this; + this.setData({ innerValue: '' }); + this.value = ''; + this.setShowClear(); + utils_1.nextTick(function () { + _this.emitChange(); + _this.$emit('clear', ''); + }); + }, + onConfirm: function (event) { + var _a = (event.detail || {}).value, + value = _a === void 0 ? '' : _a; + this.value = value; + this.setShowClear(); + this.$emit('confirm', value); + }, + setValue: function (value) { + this.value = value; + this.setShowClear(); + if (value === '') { + this.setData({ innerValue: '' }); + } + this.emitChange(); + }, + onLineChange: function (event) { + this.$emit('linechange', event.detail); + }, + onKeyboardHeightChange: function (event) { + this.$emit('keyboardheightchange', event.detail); + }, + emitChange: function () { + var _this = this; + this.setData({ value: this.value }); + utils_1.nextTick(function () { + _this.$emit('input', _this.value); + _this.$emit('change', _this.value); + }); + }, + setShowClear: function () { + var _a = this.data, + clearable = _a.clearable, + readonly = _a.readonly; + var _b = this, + focused = _b.focused, + value = _b.value; + this.setData({ + showClear: !!clearable && !!focused && !!value && !readonly, + }); + }, + noop: function () {}, + }, +}); diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/index.json b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/index.json new file mode 100644 index 00000000..5906c504 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/index.json @@ -0,0 +1,7 @@ +{ + "component": true, + "usingComponents": { + "van-cell": "../cell/index", + "van-icon": "../icon/index" + } +} diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/index.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/index.wxml new file mode 100644 index 00000000..9dc8b666 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/index.wxml @@ -0,0 +1,56 @@ + + + + + + + {{ label }} + + + + + + + + + + + + + + + + + + + + + {{ value.length >= maxlength ? maxlength : value.length }}/{{ maxlength }} + + + {{ errorMessage }} + + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/index.wxs b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/index.wxs new file mode 100644 index 00000000..78575b9a --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/index.wxs @@ -0,0 +1,18 @@ +/* eslint-disable */ +var style = require('../wxs/style.wxs'); +var addUnit = require('../wxs/add-unit.wxs'); + +function inputStyle(autosize) { + if (autosize && autosize.constructor === 'Object') { + return style({ + 'min-height': addUnit(autosize.minHeight), + 'max-height': addUnit(autosize.maxHeight), + }); + } + + return ''; +} + +module.exports = { + inputStyle: inputStyle, +}; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/index.wxss b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/index.wxss new file mode 100644 index 00000000..171f6133 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/index.wxss @@ -0,0 +1 @@ +@import '../common/index.wxss';.van-field{--cell-icon-size:16px;--cell-icon-size:var(--field-icon-size,16px)}.van-field__label{color:#646566;color:var(--field-label-color,#646566)}.van-field__label--disabled{color:#c8c9cc;color:var(--field-disabled-text-color,#c8c9cc)}.van-field__body{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center}.van-field__body--textarea{box-sizing:border-box;padding:3.6px 0;line-height:1.2em;min-height:24px;min-height:var(--cell-line-height,24px)}.van-field__control:empty+.van-field__control{display:block}.van-field__control{position:relative;display:none;box-sizing:border-box;width:100%;margin:0;padding:0;line-height:inherit;text-align:left;background-color:initial;border:0;resize:none;color:#323233;color:var(--field-input-text-color,#323233);height:24px;height:var(--cell-line-height,24px);min-height:24px;min-height:var(--cell-line-height,24px)}.van-field__control:empty{display:none}.van-field__control--textarea{height:18px;height:var(--field-text-area-min-height,18px);min-height:18px;min-height:var(--field-text-area-min-height,18px)}.van-field__control--error{color:#ee0a24;color:var(--field-input-error-text-color,#ee0a24)}.van-field__control--disabled{background-color:initial;opacity:1;color:#c8c9cc;color:var(--field-input-disabled-text-color,#c8c9cc)}.van-field__control--center{text-align:center}.van-field__control--right{text-align:right}.van-field__control--custom{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;min-height:24px;min-height:var(--cell-line-height,24px)}.van-field__placeholder{position:absolute;top:0;right:0;left:0;pointer-events:none;color:#c8c9cc;color:var(--field-placeholder-text-color,#c8c9cc)}.van-field__placeholder--error{color:#ee0a24;color:var(--field-error-message-color,#ee0a24)}.van-field__icon-root{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;min-height:24px;min-height:var(--cell-line-height,24px)}.van-field__clear-root,.van-field__icon-container{line-height:inherit;vertical-align:middle;padding:0 8px;padding:0 var(--padding-xs,8px);margin-right:-8px;margin-right:-var(--padding-xs,8px)}.van-field__button,.van-field__clear-root,.van-field__icon-container{-webkit-flex-shrink:0;flex-shrink:0}.van-field__clear-root{font-size:16px;font-size:var(--field-clear-icon-size,16px);color:#c8c9cc;color:var(--field-clear-icon-color,#c8c9cc)}.van-field__icon-container{font-size:16px;font-size:var(--field-icon-size,16px);color:#969799;color:var(--field-icon-container-color,#969799)}.van-field__icon-container:empty{display:none}.van-field__button{padding-left:8px;padding-left:var(--padding-xs,8px)}.van-field__button:empty{display:none}.van-field__error-message{text-align:left;font-size:12px;font-size:var(--field-error-message-text-font-size,12px);color:#ee0a24;color:var(--field-error-message-color,#ee0a24)}.van-field__error-message--center{text-align:center}.van-field__error-message--right{text-align:right}.van-field__word-limit{text-align:right;margin-top:4px;margin-top:var(--padding-base,4px);color:#646566;color:var(--field-word-limit-color,#646566);font-size:12px;font-size:var(--field-word-limit-font-size,12px);line-height:16px;line-height:var(--field-word-limit-line-height,16px)}.van-field__word-num{display:inline}.van-field__word-num--full{color:#ee0a24;color:var(--field-word-num-full-color,#ee0a24)} \ No newline at end of file diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/input.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/input.wxml new file mode 100644 index 00000000..3ecab243 --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/input.wxml @@ -0,0 +1,27 @@ + diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/props.js b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/props.js new file mode 100644 index 00000000..6ce703be --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/props.js @@ -0,0 +1,66 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.textareaProps = exports.inputProps = exports.commonProps = void 0; +exports.commonProps = { + value: { + type: String, + observer: function (value) { + if (value !== this.value) { + this.setData({ innerValue: value }); + this.value = value; + } + }, + }, + placeholder: String, + placeholderStyle: String, + placeholderClass: String, + disabled: Boolean, + maxlength: { + type: Number, + value: -1, + }, + cursorSpacing: { + type: Number, + value: 50, + }, + autoFocus: Boolean, + focus: Boolean, + cursor: { + type: Number, + value: -1, + }, + selectionStart: { + type: Number, + value: -1, + }, + selectionEnd: { + type: Number, + value: -1, + }, + adjustPosition: { + type: Boolean, + value: true, + }, + holdKeyboard: Boolean, +}; +exports.inputProps = { + type: { + type: String, + value: 'text', + }, + password: Boolean, + confirmType: String, + confirmHold: Boolean, +}; +exports.textareaProps = { + autoHeight: Boolean, + fixed: Boolean, + showConfirmBar: { + type: Boolean, + value: true, + }, + disableDefaultPadding: { + type: Boolean, + value: true, + }, +}; diff --git a/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/textarea.wxml b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/textarea.wxml new file mode 100644 index 00000000..5015a51d --- /dev/null +++ b/wechat/miniprogram/miniprogram_npm/@vant/weapp/field/textarea.wxml @@ -0,0 +1,29 @@ +