提交 7619430d 编写于 作者: DCloud-WZF's avatar DCloud-WZF 💬

fix(button,navigator,view): hover-class 不支持 pc 端鼠标事件问题

上级 e4a2f485
...@@ -40,7 +40,20 @@ export function useHover(props: UseHoverOptions) { ...@@ -40,7 +40,20 @@ export function useHover(props: UseHoverOptions) {
}, parseInt(props.hoverStayTime as string)) }, parseInt(props.hoverStayTime as string))
}) })
} }
function onTouchstartPassive(evt: TouchEvent) { function onTouchstartPassive(evt: TouchEvent) {
if (evt.touches.length > 1) {
return
}
handleHover(evt)
}
function onMousedown(evt: MouseEvent) {
handleHover(evt)
window.addEventListener('mouseup', handlePCHoverEnd)
}
function handleHover(evt: TouchEvent | MouseEvent) {
// TODO detect scrolling // TODO detect scrolling
if ((evt as any)._hoverPropagationStopped) { if ((evt as any)._hoverPropagationStopped) {
return return
...@@ -48,9 +61,6 @@ export function useHover(props: UseHoverOptions) { ...@@ -48,9 +61,6 @@ export function useHover(props: UseHoverOptions) {
if (!props.hoverClass || props.hoverClass === 'none' || props.disabled) { if (!props.hoverClass || props.hoverClass === 'none' || props.disabled) {
return return
} }
if (evt.touches.length > 1) {
return
}
if (props.hoverStopPropagation) { if (props.hoverStopPropagation) {
;(evt as any)._hoverPropagationStopped = true ;(evt as any)._hoverPropagationStopped = true
} }
...@@ -63,12 +73,27 @@ export function useHover(props: UseHoverOptions) { ...@@ -63,12 +73,27 @@ export function useHover(props: UseHoverOptions) {
} }
}, parseInt(props.hoverStartTime as string)) }, parseInt(props.hoverStartTime as string))
} }
function onTouchend() { function onTouchend() {
handleHoverEnd()
}
function onMouseup() {
handlePCHoverEnd()
}
function handleHoverEnd() {
hoverTouch = false hoverTouch = false
if (hovering.value) { if (hovering.value) {
hoverReset() hoverReset()
} }
} }
function handlePCHoverEnd() {
handleHoverEnd()
window.removeEventListener('mouseup', handlePCHoverEnd)
}
function onTouchcancel() { function onTouchcancel() {
hoverTouch = false hoverTouch = false
hovering.value = false hovering.value = false
...@@ -78,7 +103,9 @@ export function useHover(props: UseHoverOptions) { ...@@ -78,7 +103,9 @@ export function useHover(props: UseHoverOptions) {
hovering, hovering,
binding: { binding: {
onTouchstartPassive, onTouchstartPassive,
onMousedown,
onTouchend, onTouchend,
onMouseup,
onTouchcancel, onTouchcancel,
}, },
} }
......
...@@ -25,8 +25,8 @@ export default /*#__PURE__*/ defineBuiltInComponent({ ...@@ -25,8 +25,8 @@ export default /*#__PURE__*/ defineBuiltInComponent({
return () => { return () => {
const { hoverClass, url } = props const { hoverClass, url } = props
const hasHoverClass = props.hoverClass && props.hoverClass !== 'none' const hasHoverClass = props.hoverClass && props.hoverClass !== 'none'
return ( return (
<a class="navigator-wrap" href={url} onClick={onEventPrevent}>
<uni-navigator <uni-navigator
class={hasHoverClass && hovering.value ? hoverClass : ''} class={hasHoverClass && hovering.value ? hoverClass : ''}
{...(hasHoverClass && binding)} {...(hasHoverClass && binding)}
...@@ -36,9 +36,9 @@ export default /*#__PURE__*/ defineBuiltInComponent({ ...@@ -36,9 +36,9 @@ export default /*#__PURE__*/ defineBuiltInComponent({
}} }}
onClick={onClick} onClick={onClick}
> >
<a class="navigator-wrap" href={url} onClick={onEventPrevent}></a>
{slots.default && slots.default()} {slots.default && slots.default()}
</uni-navigator> </uni-navigator>
</a>
) )
} }
}, },
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册