提交 65d74e8b 编写于 作者: fxy060608's avatar fxy060608

feat: add onNavigationBarButtonTap

上级 84d20e77
...@@ -13502,7 +13502,7 @@ var PageHead = /* @__PURE__ */ defineComponent({ ...@@ -13502,7 +13502,7 @@ var PageHead = /* @__PURE__ */ defineComponent({
clazz, clazz,
style: style2 style: style2
} = usePageHead(navigationBar); } = usePageHead(navigationBar);
const buttons = __UNI_FEATURE_NAVIGATIONBAR_BUTTONS__ && usePageHeadButtons(navigationBar); const buttons = __UNI_FEATURE_NAVIGATIONBAR_BUTTONS__ && usePageHeadButtons(pageMeta);
const searchInput = __UNI_FEATURE_NAVIGATIONBAR_SEARCHINPUT__ && navigationBar.searchInput && usePageHeadSearchInput(pageMeta); const searchInput = __UNI_FEATURE_NAVIGATIONBAR_SEARCHINPUT__ && navigationBar.searchInput && usePageHeadSearchInput(pageMeta);
__UNI_FEATURE_NAVIGATIONBAR_TRANSPARENT__ && navigationBar.type === "transparent" && usePageHeadTransparent(headRef, pageMeta); __UNI_FEATURE_NAVIGATIONBAR_TRANSPARENT__ && navigationBar.type === "transparent" && usePageHeadTransparent(headRef, pageMeta);
return () => { return () => {
...@@ -13544,6 +13544,7 @@ function createBackButtonTsx(pageMeta) { ...@@ -13544,6 +13544,7 @@ function createBackButtonTsx(pageMeta) {
} }
function createButtonsTsx(btns) { function createButtonsTsx(btns) {
return btns.map(({ return btns.map(({
onClick,
btnClass, btnClass,
btnStyle, btnStyle,
btnText, btnText,
...@@ -13555,12 +13556,13 @@ function createButtonsTsx(btns) { ...@@ -13555,12 +13556,13 @@ function createButtonsTsx(btns) {
key: index2, key: index2,
class: btnClass, class: btnClass,
style: btnStyle, style: btnStyle,
onClick,
"badge-text": badgeText "badge-text": badgeText
}, [btnIconPath ? createSvgIconVNode(btnIconPath, iconStyle.color, iconStyle.fontSize) : createVNode("i", { }, [btnIconPath ? createSvgIconVNode(btnIconPath, iconStyle.color, iconStyle.fontSize) : createVNode("i", {
class: "uni-btn-icon", class: "uni-btn-icon",
style: iconStyle, style: iconStyle,
innerHTML: btnText innerHTML: btnText
}, null, 12, ["innerHTML"])], 14, ["badge-text"]); }, null, 12, ["innerHTML"])], 14, ["onClick", "badge-text"]);
}); });
} }
function createPageHeadBdTsx(navigationBar, searchInput) { function createPageHeadBdTsx(navigationBar, searchInput) {
...@@ -13696,7 +13698,10 @@ function usePageHead(navigationBar) { ...@@ -13696,7 +13698,10 @@ function usePageHead(navigationBar) {
style: style2 style: style2
}; };
} }
function usePageHeadButtons(navigationBar) { function usePageHeadButtons({
id: id2,
navigationBar
}) {
const left = []; const left = [];
const right = []; const right = [];
const { const {
...@@ -13708,7 +13713,7 @@ function usePageHeadButtons(navigationBar) { ...@@ -13708,7 +13713,7 @@ function usePageHeadButtons(navigationBar) {
} = navigationBar; } = navigationBar;
const isTransparent = type === "transparent"; const isTransparent = type === "transparent";
const fonts = Object.create(null); const fonts = Object.create(null);
buttons.forEach((btn) => { buttons.forEach((btn, index2) => {
if (btn.fontSrc && !btn.fontFamily) { if (btn.fontSrc && !btn.fontFamily) {
const fontSrc = getRealPath(btn.fontSrc); const fontSrc = getRealPath(btn.fontSrc);
let fontFamily = fonts[fontSrc]; let fontFamily = fonts[fontSrc];
...@@ -13719,7 +13724,7 @@ function usePageHeadButtons(navigationBar) { ...@@ -13719,7 +13724,7 @@ function usePageHeadButtons(navigationBar) {
} }
btn.fontFamily = fontFamily; btn.fontFamily = fontFamily;
} }
const pageHeadBtn = usePageHeadButton(btn, isTransparent); const pageHeadBtn = usePageHeadButton(id2, index2, btn, isTransparent);
if (btn.float === "left") { if (btn.float === "left") {
left.push(pageHeadBtn); left.push(pageHeadBtn);
} else { } else {
...@@ -13732,7 +13737,7 @@ function usePageHeadButtons(navigationBar) { ...@@ -13732,7 +13737,7 @@ function usePageHeadButtons(navigationBar) {
right right
}; };
} }
function usePageHeadButton(btn, isTransparent) { function usePageHeadButton(pageId, index2, btn, isTransparent) {
const iconStyle = { const iconStyle = {
color: btn.color, color: btn.color,
fontSize: btn.fontSize, fontSize: btn.fontSize,
...@@ -13754,7 +13759,12 @@ function usePageHeadButton(btn, isTransparent) { ...@@ -13754,7 +13759,12 @@ function usePageHeadButton(btn, isTransparent) {
btnText: btn.fontSrc && btn.fontFamily ? btn.text.replace("\\u", "&#x") : btn.text, btnText: btn.fontSrc && btn.fontFamily ? btn.text.replace("\\u", "&#x") : btn.text,
btnIconPath: ICON_PATHS[btn.type], btnIconPath: ICON_PATHS[btn.type],
badgeText: btn.badgeText, badgeText: btn.badgeText,
iconStyle iconStyle,
onClick() {
invokeHook(pageId, "onNavigationBarButtonTap", extend({
index: index2
}, btn));
}
}; };
} }
function usePageHeadSearchInput({ function usePageHeadSearchInput({
......
import { computed, defineComponent, ref } from 'vue' import { computed, defineComponent, ref } from 'vue'
import { isArray } from '@vue/shared' import { extend, isArray } from '@vue/shared'
import { Input } from '@dcloudio/uni-components' import { Input } from '@dcloudio/uni-components'
import { getRealPath } from '@dcloudio/uni-platform' import { getRealPath } from '@dcloudio/uni-platform'
import { import {
...@@ -45,7 +45,7 @@ export default /*#__PURE__*/ defineComponent({ ...@@ -45,7 +45,7 @@ export default /*#__PURE__*/ defineComponent({
const { clazz, style } = usePageHead(navigationBar) const { clazz, style } = usePageHead(navigationBar)
const buttons = (__UNI_FEATURE_NAVIGATIONBAR_BUTTONS__ && const buttons = (__UNI_FEATURE_NAVIGATIONBAR_BUTTONS__ &&
usePageHeadButtons(navigationBar)) as PageHeadButtons usePageHeadButtons(pageMeta)) as PageHeadButtons
const searchInput = (__UNI_FEATURE_NAVIGATIONBAR_SEARCHINPUT__ && const searchInput = (__UNI_FEATURE_NAVIGATIONBAR_SEARCHINPUT__ &&
navigationBar.searchInput && navigationBar.searchInput &&
...@@ -112,7 +112,15 @@ function createBackButtonTsx(pageMeta: UniApp.PageRouteMeta) { ...@@ -112,7 +112,15 @@ function createBackButtonTsx(pageMeta: UniApp.PageRouteMeta) {
function createButtonsTsx(btns: PageHeadButton[]) { function createButtonsTsx(btns: PageHeadButton[]) {
return btns.map( return btns.map(
( (
{ btnClass, btnStyle, btnText, btnIconPath, badgeText, iconStyle }, {
onClick,
btnClass,
btnStyle,
btnText,
btnIconPath,
badgeText,
iconStyle,
},
index index
) => { ) => {
return ( return (
...@@ -120,6 +128,7 @@ function createButtonsTsx(btns: PageHeadButton[]) { ...@@ -120,6 +128,7 @@ function createButtonsTsx(btns: PageHeadButton[]) {
key={index} key={index}
class={btnClass} class={btnClass}
style={btnStyle} style={btnStyle}
onClick={onClick}
badge-text={badgeText} badge-text={badgeText}
> >
{btnIconPath ? ( {btnIconPath ? (
...@@ -283,21 +292,10 @@ function usePageHead(navigationBar: UniApp.PageNavigationBar) { ...@@ -283,21 +292,10 @@ function usePageHead(navigationBar: UniApp.PageNavigationBar) {
} }
} }
interface PageHeadButton { type PageHeadButton = ReturnType<typeof usePageHeadButton>
btnClass: UniApp.ClassObj type PageHeadButtons = ReturnType<typeof usePageHeadButtons>
btnStyle: UniApp.StyleObj
btnText: string
btnIconPath?: string
badgeText?: string
iconStyle: UniApp.StyleObj
}
interface PageHeadButtons { function usePageHeadButtons({ id, navigationBar }: UniApp.PageRouteMeta) {
left: PageHeadButton[]
right: PageHeadButton[]
}
function usePageHeadButtons(navigationBar: UniApp.PageNavigationBar) {
const left: PageHeadButton[] = [] const left: PageHeadButton[] = []
const right: PageHeadButton[] = [] const right: PageHeadButton[] = []
const { buttons } = navigationBar const { buttons } = navigationBar
...@@ -305,7 +303,7 @@ function usePageHeadButtons(navigationBar: UniApp.PageNavigationBar) { ...@@ -305,7 +303,7 @@ function usePageHeadButtons(navigationBar: UniApp.PageNavigationBar) {
const { type } = navigationBar const { type } = navigationBar
const isTransparent = type === 'transparent' const isTransparent = type === 'transparent'
const fonts = Object.create(null) const fonts = Object.create(null)
buttons.forEach((btn) => { buttons.forEach((btn, index) => {
if (btn.fontSrc && !btn.fontFamily) { if (btn.fontSrc && !btn.fontFamily) {
const fontSrc = getRealPath(btn.fontSrc) const fontSrc = getRealPath(btn.fontSrc)
let fontFamily = fonts[fontSrc] let fontFamily = fonts[fontSrc]
...@@ -319,7 +317,7 @@ function usePageHeadButtons(navigationBar: UniApp.PageNavigationBar) { ...@@ -319,7 +317,7 @@ function usePageHeadButtons(navigationBar: UniApp.PageNavigationBar) {
} }
btn.fontFamily = fontFamily btn.fontFamily = fontFamily
} }
const pageHeadBtn = usePageHeadButton(btn, isTransparent) const pageHeadBtn = usePageHeadButton(id, index, btn, isTransparent)
if (btn.float === 'left') { if (btn.float === 'left') {
left.push(pageHeadBtn) left.push(pageHeadBtn)
} else { } else {
...@@ -331,6 +329,8 @@ function usePageHeadButtons(navigationBar: UniApp.PageNavigationBar) { ...@@ -331,6 +329,8 @@ function usePageHeadButtons(navigationBar: UniApp.PageNavigationBar) {
} }
function usePageHeadButton( function usePageHeadButton(
pageId: number,
index: number,
btn: UniApp.PageNavigationBarButton, btn: UniApp.PageNavigationBarButton,
isTransparent: boolean isTransparent: boolean
) { ) {
...@@ -358,6 +358,9 @@ function usePageHeadButton( ...@@ -358,6 +358,9 @@ function usePageHeadButton(
btnIconPath: ICON_PATHS[btn.type], btnIconPath: ICON_PATHS[btn.type],
badgeText: btn.badgeText, badgeText: btn.badgeText,
iconStyle, iconStyle,
onClick() {
invokeHook(pageId, 'onNavigationBarButtonTap', extend({ index }, btn))
},
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册