diff --git a/packages/uni-cli-shared/components/ad.mixin.mp.js b/packages/uni-cli-shared/components/ad.mixin.mp.js index f250d01cd34d48bbe07461e503550f6ca8a1a13a..1b59851489d17b63ed1ce7d55146146e55aca965 100644 --- a/packages/uni-cli-shared/components/ad.mixin.mp.js +++ b/packages/uni-cli-shared/components/ad.mixin.mp.js @@ -27,6 +27,12 @@ export default { loadnext: { type: [Boolean, String], default: false + }, + urlCallback: { + type: Object, + default () { + return {} + } } }, data () { @@ -58,7 +64,31 @@ export default { show () { this.errorMessage = null this._ad = this.selectComponent('.uniad-plugin') - this._ad.show() + if (this._hasCallback()) { + const userCryptoManager = wx.getUserCryptoManager() + userCryptoManager.getLatestUserKey({ + success: ({ + encryptKey, + iv, + version, + expireTime + }) => { + this._ad.show({ + userId: this.urlCallback.userId || '', + extra: this.urlCallback.extra || '', + encryptKey, + iv, + version, + expireTime + }) + }, + fail: (err) => { + this._dispatchEvent(EventType.Error, err) + } + }) + } else { + this._ad.show() + } }, _onclick () { @@ -80,6 +110,11 @@ export default { return result }, + _hasCallback () { + return false + // return (typeof this.urlCallback === 'object' && Object.keys(this.urlCallback).length > 0) + }, + _onmpload (e) { this.loading = false this._dispatchEvent(EventType.Load, {}) @@ -87,6 +122,31 @@ export default { _onmpclose (e) { this._dispatchEvent(EventType.Close, e.detail) + if (e.detail.adsdata) { + const adv = e.detail.adv + const adsdata = e.detail.adsdata + const version = e.detail.version + + /* eslint-disable no-undef */ + uniCloud.callFunction({ + name: 'uniAdCallback', + data: { + adv: adv, + adsdata: adsdata, + version: version + }, + secretType: 'both', + success: (res) => { + }, + fail: (err) => { + this._dispatchEvent(EventType.Error, err) + } + }) + + delete e.detail.adv + delete e.detail.adsdata + delete e.detail.version + } }, _onmperror (e) { diff --git a/packages/vue-cli-plugin-hbuilderx/build/webpack.nvue.conf.js b/packages/vue-cli-plugin-hbuilderx/build/webpack.nvue.conf.js index 4f572e5037c71cc941849046b3a19a847fd0398a..97be217eea33cf3a70872553674c2fd809080151 100644 --- a/packages/vue-cli-plugin-hbuilderx/build/webpack.nvue.conf.js +++ b/packages/vue-cli-plugin-hbuilderx/build/webpack.nvue.conf.js @@ -13,6 +13,12 @@ const { getTemplatePath } = require('@dcloudio/uni-cli-shared') const fileLoader = require('@dcloudio/uni-cli-shared/lib/file-loader') +const { + compileI18nJsonStr +} = require('@dcloudio/uni-i18n') +const { + initI18nOptions +} = require('@dcloudio/uni-cli-shared/lib/i18n') const WebpackAppPlusNVuePlugin = process.env.UNI_USING_V3 ? require('../packages/webpack-app-plus-plugin') : require('../packages/webpack-app-plus-nvue-plugin') @@ -226,11 +232,25 @@ if (process.env.UNI_USING_NATIVE || process.env.UNI_USING_V3_NATIVE) { }] // 自动化测试时,不启用androidPrivacy.json if (!process.env.UNI_AUTOMATOR_WS_ENDPOINT) { - const androidPrivacyPath = path.resolve(process.env.UNI_INPUT_DIR, 'androidPrivacy.json') - if (fs.existsSync(androidPrivacyPath)) { + const fileName = 'androidPrivacy.json' + const context = path.resolve(process.env.UNI_INPUT_DIR) + if (fs.existsSync(path.join(context, fileName))) { patterns.push({ - from: androidPrivacyPath, - to: 'androidPrivacy.json' + from: fileName, + context, + to: fileName, + transform (content) { + const options = initI18nOptions( + process.env.UNI_PLATFORM, + process.env.UNI_INPUT_DIR, + false, + true + ) + if (!options) { + return content + } + return compileI18nJsonStr(content.toString(), options) + } }) } } diff --git a/packages/vue-cli-plugin-uni/lib/copy-webpack-options.js b/packages/vue-cli-plugin-uni/lib/copy-webpack-options.js index 76d7e9e5e1228c01d7ad643ba13ffa54f7e8fbe9..4fe5c91dff03442b2db6b502b62a140dbfe213df 100644 --- a/packages/vue-cli-plugin-uni/lib/copy-webpack-options.js +++ b/packages/vue-cli-plugin-uni/lib/copy-webpack-options.js @@ -92,16 +92,14 @@ function getCopyWebpackPluginOptions (platformOptions, vueOptions) { }) // 自动化测试时,不启用androidPrivacy.json if (process.env.UNI_PLATFORM === 'app-plus' && !process.env.UNI_AUTOMATOR_WS_ENDPOINT) { - const from = 'android*.json' const fileName = 'androidPrivacy.json' const context = path.resolve(process.env.UNI_INPUT_DIR) - const options = { - from, - context, - to: `[name]${CopyWebpackPluginVersion > 5 ? '' : '.'}[ext]`, - noErrorOnMissing: true, - transform (content, path) { - if (path.endsWith(fileName)) { + if (fs.existsSync(path.join(context, fileName))) { + copyOptions.push({ + from: fileName, + context, + to: fileName, + transform (content) { const options = initI18nOptions( process.env.UNI_PLATFORM, process.env.UNI_INPUT_DIR, @@ -113,22 +111,7 @@ function getCopyWebpackPluginOptions (platformOptions, vueOptions) { } return compileI18nJsonStr(content.toString(), options) } - return content - } - } - // copy-webpack-plugin/glob-parent 存在 Bug,例如:/test/dir(1 - const globParent = require(require.resolve('glob-parent', { paths: [require.resolve('copy-webpack-plugin')] })) - const parent = globParent(path.join(context, from)) - let canNotWatch - if (parent !== context) { - options.from = fileName - if (!fs.existsSync(path.join(context, fileName))) { - canNotWatch = true - // console.warn(`invalid path: ${context}, can not watch ${fileName}`) - } - } - if (!canNotWatch) { - copyOptions.push(options) + }) } } return copyOptions diff --git a/packages/webpack-uni-mp-loader/lib/plugin/mp-weixin-uniad-app.json.js b/packages/webpack-uni-mp-loader/lib/plugin/mp-weixin-uniad-app.json.js index 4417a5d1eca1a9f17a58eb467271dfdbcf05da9d..ab1511d90624d89a3c0cc2ff908a5c5dca0dacbf 100644 --- a/packages/webpack-uni-mp-loader/lib/plugin/mp-weixin-uniad-app.json.js +++ b/packages/webpack-uni-mp-loader/lib/plugin/mp-weixin-uniad-app.json.js @@ -4,8 +4,8 @@ module.exports = function (appJson) { } if (!appJson.plugins['uni-ad']) { appJson.plugins['uni-ad'] = { - version: '1.1.0', - provider: 'wx999bf02c8e05dfc9' + version: '1.0.0', + provider: 'wxf72d316417b6767f' } } if (!appJson.plugins['coral-adv']) { diff --git a/src/core/runtime/wrapper/util.js b/src/core/runtime/wrapper/util.js index 4ffa28caa98c22c90e5f2132e7b25b619156c066..ec1a8ba366ebce2a7d77b89ba8c2add2a662eb53 100644 --- a/src/core/runtime/wrapper/util.js +++ b/src/core/runtime/wrapper/util.js @@ -142,7 +142,7 @@ export function initData (vueOptions, context) { try { // 对 data 格式化 data = JSON.parse(JSON.stringify(data)) - } catch (e) {} + } catch (e) { } } if (!isPlainObject(data)) { @@ -332,7 +332,7 @@ function wrapper (event) { // TODO 又得兼容 mpvue 的 mp 对象 try { event.mp = JSON.parse(JSON.stringify(event)) - } catch (e) {} + } catch (e) { } event.stopPropagation = noop event.preventDefault = noop @@ -413,7 +413,7 @@ function getExtraValue (vm, dataPathsArray) { return context } -function processEventExtra (vm, extra, event) { +function processEventExtra (vm, extra, event, __args__) { const extraObj = {} if (Array.isArray(extra) && extra.length) { @@ -436,11 +436,7 @@ function processEventExtra (vm, extra, event) { if (dataPath === '$event') { // $event extraObj['$' + index] = event } else if (dataPath === 'arguments') { - if (event.detail && event.detail.__args__) { - extraObj['$' + index] = event.detail.__args__ - } else { - extraObj['$' + index] = [event] - } + extraObj['$' + index] = event.detail ? event.detail.__args__ || __args__ : __args__ } else if (dataPath.indexOf('$event.') === 0) { // $event.target.value extraObj['$' + index] = vm.__get_value(dataPath.replace('$event.', ''), event) } else { @@ -467,6 +463,12 @@ function getObjByArray (arr) { function processEventArgs (vm, event, args = [], extra = [], isCustom, methodName) { let isCustomMPEvent = false // wxcomponent 组件,传递原始 event 对象 + + // fixed 用户直接触发 mpInstance.triggerEvent + const __args__ = isPlainObject(event.detail) + ? event.detail.__args__ || [event.detail] + : [event.detail] + if (isCustom) { // 自定义事件 isCustomMPEvent = event.currentTarget && event.currentTarget.dataset && @@ -475,11 +477,11 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam if (isCustomMPEvent) { return [event] } - return event.detail.__args__ || event.detail + return __args__ } } - const extraObj = processEventExtra(vm, extra, event) + const extraObj = processEventExtra(vm, extra, event, __args__) const ret = [] args.forEach(arg => { @@ -488,7 +490,7 @@ function processEventArgs (vm, event, args = [], extra = [], isCustom, methodNam ret.push(event.target.value) } else { if (isCustom && !isCustomMPEvent) { - ret.push(event.detail.__args__[0]) + ret.push(__args__[0]) } else { // wxcomponent 组件或内置组件 ret.push(event) } diff --git a/src/core/service/api/ui/create-selector-query.js b/src/core/service/api/ui/create-selector-query.js index 06243900425bc387dbb502afc33047f456b81321..37c6fe4ffd8e03d2b0a85cc4bd9ce0b333a70e56 100644 --- a/src/core/service/api/ui/create-selector-query.js +++ b/src/core/service/api/ui/create-selector-query.js @@ -92,6 +92,7 @@ class SelectorQuery { this._page = page this._queue = [] this._queueCb = [] + this._nodesRef = null } exec (callback) { @@ -110,6 +111,8 @@ class SelectorQuery { }) isFn(callback) && callback.call(this, res) }) + + return this._nodesRef } ['in'] (component) { @@ -119,15 +122,15 @@ class SelectorQuery { } select (selector) { - return new NodesRef(this, this._component, selector, true) + return (this._nodesRef = new NodesRef(this, this._component, selector, true)) } selectAll (selector) { - return new NodesRef(this, this._component, selector, false) + return (this._nodesRef = new NodesRef(this, this._component, selector, false)) } selectViewport () { - return new NodesRef(this, 0, '', true) + return (this._nodesRef = new NodesRef(this, 0, '', true)) } _push (selector, component, single, fields, callback) { diff --git a/src/platforms/h5/service/api/device/clipboard.js b/src/platforms/h5/service/api/device/clipboard.js index cb5d416ef11551afb269c213ca9cb0dcd8664dd8..4f473b41be85fbd74758295237ad08783ec24954 100644 --- a/src/platforms/h5/service/api/device/clipboard.js +++ b/src/platforms/h5/service/api/device/clipboard.js @@ -26,8 +26,8 @@ export function setClipboardData ({ textarea.style.zIndex = '-9999' document.body.appendChild(textarea) textarea.value = data - textarea.focus() textarea.select() + textarea.setSelectionRange(0, textarea.value.length) const result = document.execCommand('Copy', false, null) textarea.blur() if (result) { diff --git a/src/platforms/h5/view/components/map/index.vue b/src/platforms/h5/view/components/map/index.vue index 5131d395576a4b684df53f5164a869223a4394ac..e7ed397fb670df598281ca4b798bd22a3ac9a1ca 100644 --- a/src/platforms/h5/view/components/map/index.vue +++ b/src/platforms/h5/view/components/map/index.vue @@ -3,13 +3,17 @@ :id="id" ref="mapContainer" v-on="$listeners" - @touchend="handleAMapClick" > +