From a7ce56171360fbeab764a6458289cfbdfedf4ac9 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Thu, 20 Jan 2022 17:45:50 +0800 Subject: [PATCH] fix(mp): camelize custom event (#3210) --- packages/uni-cli-shared/src/mp/event.ts | 5 +++++ packages/uni-mp-alipay/dist/uni.compiler.js | 7 ++++++- packages/uni-mp-alipay/dist/uni.mp.esm.js | 15 ++++++++------- packages/uni-mp-alipay/src/compiler/event.ts | 5 +++-- packages/uni-mp-alipay/src/runtime/util.ts | 14 ++++---------- packages/uni-mp-baidu/dist/uni.mp.esm.js | 13 +++++++------ packages/uni-mp-core/src/runtime/polyfill.ts | 11 ++--------- packages/uni-mp-kuaishou/dist/uni.mp.esm.js | 13 +++++++------ packages/uni-mp-lark/dist/uni.mp.esm.js | 13 +++++++------ packages/uni-mp-qq/dist/uni.mp.esm.js | 13 +++++++------ packages/uni-mp-toutiao/dist/uni.mp.esm.js | 13 +++++++------ packages/uni-mp-weixin/dist/uni.mp.esm.js | 13 +++++++------ packages/uni-quickapp-webview/dist/uni.mp.esm.js | 13 +++++++------ packages/uni-shared/dist/uni-shared.cjs.js | 5 +++++ packages/uni-shared/dist/uni-shared.d.ts | 2 ++ packages/uni-shared/dist/uni-shared.es.js | 6 +++++- packages/uni-shared/src/vue.ts | 8 +++++++- 17 files changed, 96 insertions(+), 73 deletions(-) diff --git a/packages/uni-cli-shared/src/mp/event.ts b/packages/uni-cli-shared/src/mp/event.ts index 22fa8cc23..b2d662462 100644 --- a/packages/uni-cli-shared/src/mp/event.ts +++ b/packages/uni-cli-shared/src/mp/event.ts @@ -1,3 +1,4 @@ +import { customizeEvent } from '@dcloudio/uni-shared' export function formatMiniProgramEvent( eventName: string, { @@ -10,6 +11,10 @@ export function formatMiniProgramEvent( isComponent?: boolean } ) { + if (isComponent) { + // 自定义组件的自定义事件需要格式化,因为 triggerEvent 时也会格式化 + eventName = customizeEvent(eventName) + } if (!isComponent && eventName === 'click') { eventName = 'tap' } diff --git a/packages/uni-mp-alipay/dist/uni.compiler.js b/packages/uni-mp-alipay/dist/uni.compiler.js index 4b0837517..50a7c37e4 100644 --- a/packages/uni-mp-alipay/dist/uni.compiler.js +++ b/packages/uni-mp-alipay/dist/uni.compiler.js @@ -44,13 +44,18 @@ function addVueRef(node, context) { props.splice(props.indexOf(refProp), 0, uniCliShared.createAttributeNode('ref', '__r')); } +const customizeRE = /:/g; +function customizeEvent(str) { + return shared.camelize(str.replace(customizeRE, '-')); +} + const event = { format(name, { isCatch, isComponent }) { if (!isComponent && name === 'click') { name = 'tap'; } name = eventMap[name] || name; - return `${isCatch ? 'catch' : 'on'}${shared.capitalize(shared.camelize(name))}`; + return `${isCatch ? 'catch' : 'on'}${shared.capitalize(customizeEvent(name))}`; }, }; const eventMap = { diff --git a/packages/uni-mp-alipay/dist/uni.mp.esm.js b/packages/uni-mp-alipay/dist/uni.mp.esm.js index 8c7e07b0e..f84a38556 100644 --- a/packages/uni-mp-alipay/dist/uni.mp.esm.js +++ b/packages/uni-mp-alipay/dist/uni.mp.esm.js @@ -1,4 +1,4 @@ -import { isPlainObject, hasOwn, isArray, capitalize, isFunction, extend, isString, camelize } from '@vue/shared'; +import { camelize, isPlainObject, hasOwn, isArray, capitalize, isFunction, extend, isString } from '@vue/shared'; import { injectHook, ref, findComponentPropsData, toRaw, updateProps, invalidateJob, getExposeProxy, EMPTY_OBJ, isRef, setTemplateRef, pruneComponentPropsCache } from 'vue'; // quickapp-webview 不能使用 default 作为插槽名称 @@ -25,6 +25,11 @@ const ON_PULL_DOWN_REFRESH = 'onPullDownRefresh'; const ON_ADD_TO_FAVORITES = 'onAddToFavorites'; const ON_SHARE_APP_MESSAGE = 'onShareAppMessage'; +const customizeRE = /:/g; +function customizeEvent(str) { + return camelize(str.replace(customizeRE, '-')); +} + const encode = encodeURIComponent; function stringifyQuery(obj, encodeStr = encode) { const res = obj @@ -663,10 +668,6 @@ function handleLink$1(event) { const isComponent2 = my.canIUse('component2'); const mocks = ['$id']; -const customizeRE = /:/g; -function customize(str) { - return camelize(str.replace(customizeRE, '-')); -} function initRelation(mpInstance, detail) { // onVueInit mpInstance.props.onVI(detail); @@ -771,7 +772,7 @@ function setRef(ref, refValue, refs, setupState) { } } function triggerEvent(type, detail) { - const handler = this.props[customize('on-' + type)]; + const handler = this.props[customizeEvent('on-' + type)]; if (!handler) { return; } @@ -779,7 +780,7 @@ function triggerEvent(type, detail) { dataset: {}, }; handler({ - type: customize(type), + type: customizeEvent(type), target, currentTarget: target, detail, diff --git a/packages/uni-mp-alipay/src/compiler/event.ts b/packages/uni-mp-alipay/src/compiler/event.ts index b206e77b8..610cbd1f9 100644 --- a/packages/uni-mp-alipay/src/compiler/event.ts +++ b/packages/uni-mp-alipay/src/compiler/event.ts @@ -1,4 +1,5 @@ -import { camelize, capitalize } from '@vue/shared' +import { capitalize } from '@vue/shared' +import { customizeEvent } from '@dcloudio/uni-shared' import { MiniProgramCompilerOptions } from '@dcloudio/uni-cli-shared' export const event: MiniProgramCompilerOptions['event'] = { @@ -7,7 +8,7 @@ export const event: MiniProgramCompilerOptions['event'] = { name = 'tap' } name = eventMap[name] || name - return `${isCatch ? 'catch' : 'on'}${capitalize(camelize(name))}` + return `${isCatch ? 'catch' : 'on'}${capitalize(customizeEvent(name))}` }, } diff --git a/packages/uni-mp-alipay/src/runtime/util.ts b/packages/uni-mp-alipay/src/runtime/util.ts index 042cdd306..1b6630dd4 100644 --- a/packages/uni-mp-alipay/src/runtime/util.ts +++ b/packages/uni-mp-alipay/src/runtime/util.ts @@ -1,4 +1,4 @@ -import { hasOwn, isFunction, camelize, isString } from '@vue/shared' +import { hasOwn, isFunction, isString } from '@vue/shared' import { ComponentPublicInstance, @@ -22,7 +22,7 @@ import { import { handleLink as handleBaseLink } from '@dcloudio/uni-mp-weixin' -import { ON_READY } from '@dcloudio/uni-shared' +import { customizeEvent, ON_READY } from '@dcloudio/uni-shared' type MPPageInstance = tinyapp.IPageInstance> export type MPComponentInstance = tinyapp.IComponentInstance< @@ -34,12 +34,6 @@ export const isComponent2 = my.canIUse('component2') export const mocks = ['$id'] -const customizeRE = /:/g - -function customize(str: string) { - return camelize(str.replace(customizeRE, '-')) -} - export function initRelation( mpInstance: MPComponentInstance, detail: RelationOptions @@ -189,7 +183,7 @@ export function triggerEvent( type: string, detail: object ) { - const handler = this.props[customize('on-' + type)] + const handler = this.props[customizeEvent('on-' + type)] if (!handler) { return } @@ -199,7 +193,7 @@ export function triggerEvent( } handler({ - type: customize(type), + type: customizeEvent(type), target, currentTarget: target, detail, diff --git a/packages/uni-mp-baidu/dist/uni.mp.esm.js b/packages/uni-mp-baidu/dist/uni.mp.esm.js index 366285140..193f6d7ae 100644 --- a/packages/uni-mp-baidu/dist/uni.mp.esm.js +++ b/packages/uni-mp-baidu/dist/uni.mp.esm.js @@ -1,4 +1,4 @@ -import { isPlainObject, isArray, hasOwn, isFunction, extend, camelize } from '@vue/shared'; +import { camelize, isPlainObject, isArray, hasOwn, isFunction, extend } from '@vue/shared'; import { injectHook, ref, nextTick, findComponentPropsData, toRaw, updateProps, invalidateJob, getExposeProxy, pruneComponentPropsCache } from 'vue'; // lifecycle @@ -93,6 +93,11 @@ const ON_REACH_BOTTOM = 'onReachBottom'; const ON_PULL_DOWN_REFRESH = 'onPullDownRefresh'; const ON_ADD_TO_FAVORITES = 'onAddToFavorites'; +const customizeRE = /:/g; +function customizeEvent(str) { + return camelize(str.replace(customizeRE, '-')); +} + const encode = encodeURIComponent; function stringifyQuery(obj, encodeStr = encode) { const res = obj @@ -897,14 +902,10 @@ function initCreatePage(parseOptions) { const MPPage = Page; const MPComponent = Component; -const customizeRE = /:/g; -function customize(str) { - return camelize(str.replace(customizeRE, '-')); -} function initTriggerEvent(mpInstance) { const oldTriggerEvent = mpInstance.triggerEvent; mpInstance.triggerEvent = function (event, ...args) { - return oldTriggerEvent.apply(mpInstance, [customize(event), ...args]); + return oldTriggerEvent.apply(mpInstance, [customizeEvent(event), ...args]); }; } function initHook(name, options, isComponent) { diff --git a/packages/uni-mp-core/src/runtime/polyfill.ts b/packages/uni-mp-core/src/runtime/polyfill.ts index df4b63734..ae4cbc014 100644 --- a/packages/uni-mp-core/src/runtime/polyfill.ts +++ b/packages/uni-mp-core/src/runtime/polyfill.ts @@ -1,5 +1,4 @@ -import { camelize } from '@vue/shared' -import { ON_LOAD } from '@dcloudio/uni-shared' +import { customizeEvent, ON_LOAD } from '@dcloudio/uni-shared' import { MPComponentInstance } from './component' import { initPropsObserver } from './componentOptions' import { initProps } from './componentProps' @@ -7,16 +6,10 @@ import { initProps } from './componentProps' const MPPage = Page const MPComponent = Component -const customizeRE = /:/g - -function customize(str: string) { - return camelize(str.replace(customizeRE, '-')) -} - function initTriggerEvent(mpInstance: MPComponentInstance) { const oldTriggerEvent = mpInstance.triggerEvent mpInstance.triggerEvent = function (event, ...args) { - return oldTriggerEvent.apply(mpInstance, [customize(event), ...args]) + return oldTriggerEvent.apply(mpInstance, [customizeEvent(event), ...args]) } } diff --git a/packages/uni-mp-kuaishou/dist/uni.mp.esm.js b/packages/uni-mp-kuaishou/dist/uni.mp.esm.js index 5b7c9a0c6..c6f9c49b6 100644 --- a/packages/uni-mp-kuaishou/dist/uni.mp.esm.js +++ b/packages/uni-mp-kuaishou/dist/uni.mp.esm.js @@ -1,4 +1,4 @@ -import { isPlainObject, isArray, hasOwn, isFunction, extend, camelize } from '@vue/shared'; +import { camelize, isPlainObject, isArray, hasOwn, isFunction, extend } from '@vue/shared'; import { injectHook, ref, nextTick, findComponentPropsData, toRaw, updateProps, invalidateJob, getExposeProxy, pruneComponentPropsCache } from 'vue'; const ON_READY$1 = 'onReady'; @@ -88,6 +88,11 @@ const ON_REACH_BOTTOM = 'onReachBottom'; const ON_PULL_DOWN_REFRESH = 'onPullDownRefresh'; const ON_ADD_TO_FAVORITES = 'onAddToFavorites'; +const customizeRE = /:/g; +function customizeEvent(str) { + return camelize(str.replace(customizeRE, '-')); +} + const encode = encodeURIComponent; function stringifyQuery(obj, encodeStr = encode) { const res = obj @@ -881,14 +886,10 @@ function initCreatePage(parseOptions) { const MPPage = Page; const MPComponent = Component; -const customizeRE = /:/g; -function customize(str) { - return camelize(str.replace(customizeRE, '-')); -} function initTriggerEvent(mpInstance) { const oldTriggerEvent = mpInstance.triggerEvent; mpInstance.triggerEvent = function (event, ...args) { - return oldTriggerEvent.apply(mpInstance, [customize(event), ...args]); + return oldTriggerEvent.apply(mpInstance, [customizeEvent(event), ...args]); }; } function initHook(name, options, isComponent) { diff --git a/packages/uni-mp-lark/dist/uni.mp.esm.js b/packages/uni-mp-lark/dist/uni.mp.esm.js index 97328d34c..3d218216e 100644 --- a/packages/uni-mp-lark/dist/uni.mp.esm.js +++ b/packages/uni-mp-lark/dist/uni.mp.esm.js @@ -1,4 +1,4 @@ -import { isPlainObject, isArray, hasOwn, isFunction, extend, camelize, isObject } from '@vue/shared'; +import { camelize, isPlainObject, isArray, hasOwn, isFunction, extend, isObject } from '@vue/shared'; import { injectHook, ref, nextTick, findComponentPropsData, toRaw, updateProps, invalidateJob, getExposeProxy, pruneComponentPropsCache } from 'vue'; const ON_READY$1 = 'onReady'; @@ -88,6 +88,11 @@ const ON_REACH_BOTTOM = 'onReachBottom'; const ON_PULL_DOWN_REFRESH = 'onPullDownRefresh'; const ON_ADD_TO_FAVORITES = 'onAddToFavorites'; +const customizeRE = /:/g; +function customizeEvent(str) { + return camelize(str.replace(customizeRE, '-')); +} + const encode = encodeURIComponent; function stringifyQuery(obj, encodeStr = encode) { const res = obj @@ -854,14 +859,10 @@ function initCreatePage(parseOptions) { const MPPage = Page; const MPComponent = Component; -const customizeRE = /:/g; -function customize(str) { - return camelize(str.replace(customizeRE, '-')); -} function initTriggerEvent(mpInstance) { const oldTriggerEvent = mpInstance.triggerEvent; mpInstance.triggerEvent = function (event, ...args) { - return oldTriggerEvent.apply(mpInstance, [customize(event), ...args]); + return oldTriggerEvent.apply(mpInstance, [customizeEvent(event), ...args]); }; } function initHook(name, options, isComponent) { diff --git a/packages/uni-mp-qq/dist/uni.mp.esm.js b/packages/uni-mp-qq/dist/uni.mp.esm.js index 075b4832e..cfba67eab 100644 --- a/packages/uni-mp-qq/dist/uni.mp.esm.js +++ b/packages/uni-mp-qq/dist/uni.mp.esm.js @@ -1,4 +1,4 @@ -import { isPlainObject, isArray, hasOwn, isFunction, extend, camelize } from '@vue/shared'; +import { camelize, isPlainObject, isArray, hasOwn, isFunction, extend } from '@vue/shared'; import { injectHook, ref, findComponentPropsData, toRaw, updateProps, invalidateJob, getExposeProxy, pruneComponentPropsCache } from 'vue'; const ON_READY$1 = 'onReady'; @@ -88,6 +88,11 @@ const ON_REACH_BOTTOM = 'onReachBottom'; const ON_PULL_DOWN_REFRESH = 'onPullDownRefresh'; const ON_ADD_TO_FAVORITES = 'onAddToFavorites'; +const customizeRE = /:/g; +function customizeEvent(str) { + return camelize(str.replace(customizeRE, '-')); +} + const encode = encodeURIComponent; function stringifyQuery(obj, encodeStr = encode) { const res = obj @@ -849,14 +854,10 @@ function initCreatePluginApp(parseAppOptions) { const MPPage = Page; const MPComponent = Component; -const customizeRE = /:/g; -function customize(str) { - return camelize(str.replace(customizeRE, '-')); -} function initTriggerEvent(mpInstance) { const oldTriggerEvent = mpInstance.triggerEvent; mpInstance.triggerEvent = function (event, ...args) { - return oldTriggerEvent.apply(mpInstance, [customize(event), ...args]); + return oldTriggerEvent.apply(mpInstance, [customizeEvent(event), ...args]); }; } function initHook(name, options, isComponent) { diff --git a/packages/uni-mp-toutiao/dist/uni.mp.esm.js b/packages/uni-mp-toutiao/dist/uni.mp.esm.js index 47666428a..1fcb863ce 100644 --- a/packages/uni-mp-toutiao/dist/uni.mp.esm.js +++ b/packages/uni-mp-toutiao/dist/uni.mp.esm.js @@ -1,4 +1,4 @@ -import { isPlainObject, isArray, hasOwn, isFunction, extend, camelize, isObject } from '@vue/shared'; +import { camelize, isPlainObject, isArray, hasOwn, isFunction, extend, isObject } from '@vue/shared'; import { injectHook, ref, nextTick, findComponentPropsData, toRaw, updateProps, invalidateJob, getExposeProxy, pruneComponentPropsCache } from 'vue'; const ON_READY$1 = 'onReady'; @@ -88,6 +88,11 @@ const ON_REACH_BOTTOM = 'onReachBottom'; const ON_PULL_DOWN_REFRESH = 'onPullDownRefresh'; const ON_ADD_TO_FAVORITES = 'onAddToFavorites'; +const customizeRE = /:/g; +function customizeEvent(str) { + return camelize(str.replace(customizeRE, '-')); +} + const encode = encodeURIComponent; function stringifyQuery(obj, encodeStr = encode) { const res = obj @@ -854,14 +859,10 @@ function initCreatePage(parseOptions) { const MPPage = Page; const MPComponent = Component; -const customizeRE = /:/g; -function customize(str) { - return camelize(str.replace(customizeRE, '-')); -} function initTriggerEvent(mpInstance) { const oldTriggerEvent = mpInstance.triggerEvent; mpInstance.triggerEvent = function (event, ...args) { - return oldTriggerEvent.apply(mpInstance, [customize(event), ...args]); + return oldTriggerEvent.apply(mpInstance, [customizeEvent(event), ...args]); }; } function initHook(name, options, isComponent) { diff --git a/packages/uni-mp-weixin/dist/uni.mp.esm.js b/packages/uni-mp-weixin/dist/uni.mp.esm.js index ffa5bb14f..8a9c64560 100644 --- a/packages/uni-mp-weixin/dist/uni.mp.esm.js +++ b/packages/uni-mp-weixin/dist/uni.mp.esm.js @@ -1,4 +1,4 @@ -import { isPlainObject, isArray, hasOwn, isFunction, extend, camelize } from '@vue/shared'; +import { camelize, isPlainObject, isArray, hasOwn, isFunction, extend } from '@vue/shared'; import { injectHook, ref, findComponentPropsData, toRaw, updateProps, invalidateJob, getExposeProxy, pruneComponentPropsCache } from 'vue'; // quickapp-webview 不能使用 default 作为插槽名称 @@ -23,6 +23,11 @@ const ON_REACH_BOTTOM = 'onReachBottom'; const ON_PULL_DOWN_REFRESH = 'onPullDownRefresh'; const ON_ADD_TO_FAVORITES = 'onAddToFavorites'; +const customizeRE = /:/g; +function customizeEvent(str) { + return camelize(str.replace(customizeRE, '-')); +} + const encode = encodeURIComponent; function stringifyQuery(obj, encodeStr = encode) { const res = obj @@ -723,14 +728,10 @@ const ON_READY = 'onReady'; const MPPage = Page; const MPComponent = Component; -const customizeRE = /:/g; -function customize(str) { - return camelize(str.replace(customizeRE, '-')); -} function initTriggerEvent(mpInstance) { const oldTriggerEvent = mpInstance.triggerEvent; mpInstance.triggerEvent = function (event, ...args) { - return oldTriggerEvent.apply(mpInstance, [customize(event), ...args]); + return oldTriggerEvent.apply(mpInstance, [customizeEvent(event), ...args]); }; } function initHook(name, options, isComponent) { diff --git a/packages/uni-quickapp-webview/dist/uni.mp.esm.js b/packages/uni-quickapp-webview/dist/uni.mp.esm.js index bedcce366..31cee3de1 100644 --- a/packages/uni-quickapp-webview/dist/uni.mp.esm.js +++ b/packages/uni-quickapp-webview/dist/uni.mp.esm.js @@ -1,4 +1,4 @@ -import { isPlainObject, isArray, hasOwn, isFunction, extend, camelize, isObject } from '@vue/shared'; +import { camelize, isPlainObject, isArray, hasOwn, isFunction, extend, isObject } from '@vue/shared'; import { injectHook, ref, nextTick, findComponentPropsData, toRaw, updateProps, invalidateJob, getExposeProxy, pruneComponentPropsCache } from 'vue'; const ON_READY$1 = 'onReady'; @@ -88,6 +88,11 @@ const ON_REACH_BOTTOM = 'onReachBottom'; const ON_PULL_DOWN_REFRESH = 'onPullDownRefresh'; const ON_ADD_TO_FAVORITES = 'onAddToFavorites'; +const customizeRE = /:/g; +function customizeEvent(str) { + return camelize(str.replace(customizeRE, '-')); +} + const encode = encodeURIComponent; function stringifyQuery(obj, encodeStr = encode) { const res = obj @@ -832,14 +837,10 @@ function initCreatePage(parseOptions) { const MPPage = Page; const MPComponent = Component; -const customizeRE = /:/g; -function customize(str) { - return camelize(str.replace(customizeRE, '-')); -} function initTriggerEvent(mpInstance) { const oldTriggerEvent = mpInstance.triggerEvent; mpInstance.triggerEvent = function (event, ...args) { - return oldTriggerEvent.apply(mpInstance, [customize(event), ...args]); + return oldTriggerEvent.apply(mpInstance, [customizeEvent(event), ...args]); }; } function initHook(name, options, isComponent) { diff --git a/packages/uni-shared/dist/uni-shared.cjs.js b/packages/uni-shared/dist/uni-shared.cjs.js index 9f1f7ad96..cabdd2c7b 100644 --- a/packages/uni-shared/dist/uni-shared.cjs.js +++ b/packages/uni-shared/dist/uni-shared.cjs.js @@ -284,6 +284,10 @@ function resolveOwnerEl(instance) { } function dynamicSlotName(name) { return name === 'default' ? SLOT_DEFAULT_NAME : name; +} +const customizeRE = /:/g; +function customizeEvent(str) { + return shared.camelize(str.replace(customizeRE, '-')); } let lastLogTime = 0; @@ -1406,6 +1410,7 @@ exports.callOptions = callOptions; exports.createIsCustomElement = createIsCustomElement; exports.createRpx2Unit = createRpx2Unit; exports.createUniEvent = createUniEvent; +exports.customizeEvent = customizeEvent; exports.debounce = debounce; exports.decode = decode; exports.decodedQuery = decodedQuery; diff --git a/packages/uni-shared/dist/uni-shared.d.ts b/packages/uni-shared/dist/uni-shared.d.ts index 258289f45..ec1b51394 100644 --- a/packages/uni-shared/dist/uni-shared.d.ts +++ b/packages/uni-shared/dist/uni-shared.d.ts @@ -122,6 +122,8 @@ export declare function createRpx2Unit(unit: string, unitRatio: number, unitPrec export declare function createUniEvent(evt: Record): UniEvent; +export declare function customizeEvent(str: string): string; + export declare const DATA_RE: RegExp; export declare function debounce(fn: Function, delay: number): { diff --git a/packages/uni-shared/dist/uni-shared.es.js b/packages/uni-shared/dist/uni-shared.es.js index 58cab82ec..e3527d566 100644 --- a/packages/uni-shared/dist/uni-shared.es.js +++ b/packages/uni-shared/dist/uni-shared.es.js @@ -280,6 +280,10 @@ function resolveOwnerEl(instance) { } function dynamicSlotName(name) { return name === 'default' ? SLOT_DEFAULT_NAME : name; +} +const customizeRE = /:/g; +function customizeEvent(str) { + return camelize(str.replace(customizeRE, '-')); } let lastLogTime = 0; @@ -1295,4 +1299,4 @@ function getEnvLocale() { return (lang && lang.replace(/[.:].*/, '')) || 'en'; } -export { ACTION_TYPE_ADD_EVENT, ACTION_TYPE_ADD_WXS_EVENT, ACTION_TYPE_CREATE, ACTION_TYPE_EVENT, ACTION_TYPE_INSERT, ACTION_TYPE_PAGE_CREATE, ACTION_TYPE_PAGE_CREATED, ACTION_TYPE_PAGE_SCROLL, ACTION_TYPE_REMOVE, ACTION_TYPE_REMOVE_ATTRIBUTE, ACTION_TYPE_REMOVE_EVENT, ACTION_TYPE_SET_ATTRIBUTE, ACTION_TYPE_SET_TEXT, ATTR_CHANGE_PREFIX, ATTR_CLASS, ATTR_INNER_HTML, ATTR_STYLE, ATTR_TEXT_CONTENT, ATTR_V_OWNER_ID, ATTR_V_RENDERJS, ATTR_V_SHOW, BACKGROUND_COLOR, BUILT_IN_TAGS, BUILT_IN_TAG_NAMES, COMPONENT_NAME_PREFIX, COMPONENT_PREFIX, COMPONENT_SELECTOR_PREFIX, DATA_RE, EventChannel, EventModifierFlags, I18N_JSON_DELIMITERS, JSON_PROTOCOL, LINEFEED, MINI_PROGRAM_PAGE_RUNTIME_HOOKS, NAVBAR_HEIGHT, NODE_TYPE_COMMENT, NODE_TYPE_ELEMENT, NODE_TYPE_PAGE, NODE_TYPE_TEXT, NVUE_BUILT_IN_TAGS, NVUE_U_BUILT_IN_TAGS, NVueTextNode, ON_ADD_TO_FAVORITES, ON_APP_ENTER_BACKGROUND, ON_APP_ENTER_FOREGROUND, ON_BACK_PRESS, ON_ERROR, ON_HIDE, ON_KEYBOARD_HEIGHT_CHANGE, ON_LAUNCH, ON_LOAD, ON_NAVIGATION_BAR_BUTTON_TAP, ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED, ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED, ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED, ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED, ON_PAGE_NOT_FOUND, ON_PAGE_SCROLL, ON_PULL_DOWN_REFRESH, ON_REACH_BOTTOM, ON_REACH_BOTTOM_DISTANCE, ON_READY, ON_RESIZE, ON_SHARE_APP_MESSAGE, ON_SHARE_TIMELINE, ON_SHOW, ON_TAB_ITEM_TAP, ON_THEME_CHANGE, ON_UNHANDLE_REJECTION, ON_UNLOAD, ON_WEB_INVOKE_APP_SERVICE, ON_WXS_INVOKE_CALL_METHOD, PLUS_RE, PRIMARY_COLOR, RENDERJS_MODULES, RESPONSIVE_MIN_WIDTH, SCHEME_RE, SELECTED_COLOR, SLOT_DEFAULT_NAME, TABBAR_HEIGHT, TAGS, UNI_SSR, UNI_SSR_DATA, UNI_SSR_GLOBAL_DATA, UNI_SSR_STORE, UNI_SSR_TITLE, UNI_STORAGE_LOCALE, UniBaseNode, UniCommentNode, UniElement, UniEvent, UniInputElement, UniLifecycleHooks, UniNode, UniTextAreaElement, UniTextNode, WEB_INVOKE_APPSERVICE, WXS_MODULES, WXS_PROTOCOL, addFont, addLeadingSlash, cache, cacheStringFunction, callOptions, createIsCustomElement, createRpx2Unit, createUniEvent, debounce, decode, decodedQuery, defaultMiniProgramRpx2Unit, defaultRpx2Unit, dynamicSlotName, forcePatchProp, formatAppLog, formatDateTime, formatH5Log, formatLog, getCustomDataset, getEnvLocale, getLen, getValueByDataPath, initCustomDataset, invokeArrayFns, isAppNVueNativeTag, isAppNativeTag, isBuiltInComponent, isComponentInternalInstance, isComponentTag, isH5CustomElement, isH5NativeTag, isMiniProgramNativeTag, isRootHook, normalizeDataset, normalizeEventType, normalizeTarget, once, parseEventName, parseQuery, parseUrl, passive, plusReady, removeLeadingSlash, resolveComponentInstance, resolveOwnerEl, resolveOwnerVm, sanitise, scrollTo, stringifyQuery, updateElementStyle }; +export { ACTION_TYPE_ADD_EVENT, ACTION_TYPE_ADD_WXS_EVENT, ACTION_TYPE_CREATE, ACTION_TYPE_EVENT, ACTION_TYPE_INSERT, ACTION_TYPE_PAGE_CREATE, ACTION_TYPE_PAGE_CREATED, ACTION_TYPE_PAGE_SCROLL, ACTION_TYPE_REMOVE, ACTION_TYPE_REMOVE_ATTRIBUTE, ACTION_TYPE_REMOVE_EVENT, ACTION_TYPE_SET_ATTRIBUTE, ACTION_TYPE_SET_TEXT, ATTR_CHANGE_PREFIX, ATTR_CLASS, ATTR_INNER_HTML, ATTR_STYLE, ATTR_TEXT_CONTENT, ATTR_V_OWNER_ID, ATTR_V_RENDERJS, ATTR_V_SHOW, BACKGROUND_COLOR, BUILT_IN_TAGS, BUILT_IN_TAG_NAMES, COMPONENT_NAME_PREFIX, COMPONENT_PREFIX, COMPONENT_SELECTOR_PREFIX, DATA_RE, EventChannel, EventModifierFlags, I18N_JSON_DELIMITERS, JSON_PROTOCOL, LINEFEED, MINI_PROGRAM_PAGE_RUNTIME_HOOKS, NAVBAR_HEIGHT, NODE_TYPE_COMMENT, NODE_TYPE_ELEMENT, NODE_TYPE_PAGE, NODE_TYPE_TEXT, NVUE_BUILT_IN_TAGS, NVUE_U_BUILT_IN_TAGS, NVueTextNode, ON_ADD_TO_FAVORITES, ON_APP_ENTER_BACKGROUND, ON_APP_ENTER_FOREGROUND, ON_BACK_PRESS, ON_ERROR, ON_HIDE, ON_KEYBOARD_HEIGHT_CHANGE, ON_LAUNCH, ON_LOAD, ON_NAVIGATION_BAR_BUTTON_TAP, ON_NAVIGATION_BAR_SEARCH_INPUT_CHANGED, ON_NAVIGATION_BAR_SEARCH_INPUT_CLICKED, ON_NAVIGATION_BAR_SEARCH_INPUT_CONFIRMED, ON_NAVIGATION_BAR_SEARCH_INPUT_FOCUS_CHANGED, ON_PAGE_NOT_FOUND, ON_PAGE_SCROLL, ON_PULL_DOWN_REFRESH, ON_REACH_BOTTOM, ON_REACH_BOTTOM_DISTANCE, ON_READY, ON_RESIZE, ON_SHARE_APP_MESSAGE, ON_SHARE_TIMELINE, ON_SHOW, ON_TAB_ITEM_TAP, ON_THEME_CHANGE, ON_UNHANDLE_REJECTION, ON_UNLOAD, ON_WEB_INVOKE_APP_SERVICE, ON_WXS_INVOKE_CALL_METHOD, PLUS_RE, PRIMARY_COLOR, RENDERJS_MODULES, RESPONSIVE_MIN_WIDTH, SCHEME_RE, SELECTED_COLOR, SLOT_DEFAULT_NAME, TABBAR_HEIGHT, TAGS, UNI_SSR, UNI_SSR_DATA, UNI_SSR_GLOBAL_DATA, UNI_SSR_STORE, UNI_SSR_TITLE, UNI_STORAGE_LOCALE, UniBaseNode, UniCommentNode, UniElement, UniEvent, UniInputElement, UniLifecycleHooks, UniNode, UniTextAreaElement, UniTextNode, WEB_INVOKE_APPSERVICE, WXS_MODULES, WXS_PROTOCOL, addFont, addLeadingSlash, cache, cacheStringFunction, callOptions, createIsCustomElement, createRpx2Unit, createUniEvent, customizeEvent, debounce, decode, decodedQuery, defaultMiniProgramRpx2Unit, defaultRpx2Unit, dynamicSlotName, forcePatchProp, formatAppLog, formatDateTime, formatH5Log, formatLog, getCustomDataset, getEnvLocale, getLen, getValueByDataPath, initCustomDataset, invokeArrayFns, isAppNVueNativeTag, isAppNativeTag, isBuiltInComponent, isComponentInternalInstance, isComponentTag, isH5CustomElement, isH5NativeTag, isMiniProgramNativeTag, isRootHook, normalizeDataset, normalizeEventType, normalizeTarget, once, parseEventName, parseQuery, parseUrl, passive, plusReady, removeLeadingSlash, resolveComponentInstance, resolveOwnerEl, resolveOwnerVm, sanitise, scrollTo, stringifyQuery, updateElementStyle }; diff --git a/packages/uni-shared/src/vue.ts b/packages/uni-shared/src/vue.ts index a5491551e..4bc1b58c9 100644 --- a/packages/uni-shared/src/vue.ts +++ b/packages/uni-shared/src/vue.ts @@ -3,7 +3,7 @@ import type { ComponentPublicInstance, VNode, } from '@vue/runtime-core' -import { hyphenate } from '@vue/shared' +import { camelize, hyphenate } from '@vue/shared' import { isBuiltInComponent } from './tags' import { SLOT_DEFAULT_NAME } from './constants' @@ -62,3 +62,9 @@ export function resolveOwnerEl(instance: ComponentInternalInstance) { export function dynamicSlotName(name: string) { return name === 'default' ? SLOT_DEFAULT_NAME : name } + +const customizeRE = /:/g + +export function customizeEvent(str: string) { + return camelize(str.replace(customizeRE, '-')) +} -- GitLab