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

fix: showModal

上级 516ff43a
import { withModifiers } from 'vue'
import safeAreaInsets from 'safe-area-insets'
export const onTouchmovePrevent = /*#__PURE__*/ withModifiers(() => {}, [
'prevent',
])
export const onTouchmoveStop = /*#__PURE__*/ withModifiers(() => {}, ['stop'])
export const onEventPrevent = /*#__PURE__*/ withModifiers(() => {}, ['prevent'])
export const onEventStop = /*#__PURE__*/ withModifiers(() => {}, ['stop'])
export function getWindowOffset() {
const style = document.documentElement.style
......
......@@ -623,11 +623,9 @@ var safeAreaInsets = {
offChange
};
var out = safeAreaInsets;
const onTouchmovePrevent = /* @__PURE__ */ withModifiers(() => {
}, [
"prevent"
]);
const onTouchmoveStop = /* @__PURE__ */ withModifiers(() => {
const onEventPrevent = /* @__PURE__ */ withModifiers(() => {
}, ["prevent"]);
const onEventStop = /* @__PURE__ */ withModifiers(() => {
}, ["stop"]);
function getWindowOffset() {
const style2 = document.documentElement.style;
......@@ -12848,7 +12846,7 @@ var modal = /* @__PURE__ */ defineComponent({
name: "uni-fade"
}, {
default: () => [withDirectives(createVNode("uni-modal", {
onTouchmove: onTouchmovePrevent
onTouchmove: onEventPrevent
}, [VNODE_MASK, createVNode("div", {
class: "uni-modal"
}, [title && createVNode("div", {
......@@ -12858,9 +12856,9 @@ var modal = /* @__PURE__ */ defineComponent({
textContent: title
}, null, 8, ["textContent"])]), createVNode("div", {
class: "uni-modal__bd",
onTouchmove: onTouchmoveStop,
onTouchmovePassive: onEventStop,
textContent: content
}, null, 40, ["onTouchmove", "textContent"]), createVNode("div", {
}, null, 40, ["onTouchmovePassive", "textContent"]), createVNode("div", {
class: "uni-modal__ft"
}, [showCancel && createVNode("div", {
style: {
......@@ -12891,11 +12889,11 @@ const showModal = defineAsyncApi(API_SHOW_MODAL, (args, {resolve}) => {
currentShowModalResolve = resolve;
if (!showModalState) {
showModalState = reactive(args);
nextTick(() => createRootApp(modal, showModalState, onModalClose).mount(ensureRoot("u-a-m")));
nextTick(() => (createRootApp(modal, showModalState, onModalClose).mount(ensureRoot("u-a-m")), nextTick(() => showModalState.visible = true)));
} else {
extend(showModalState, args);
showModalState.visible = true;
}
showModalState.visible = true;
}, ShowModalProtocol, ShowModalOptions);
const loadFontFace = defineAsyncApi(API_LOAD_FONT_FACE, ({family, source, desc}, {resolve, reject}) => {
addFont(family, source, desc).then(() => {
......
import { onTouchmovePrevent, onTouchmoveStop } from '@dcloudio/uni-core'
import { onEventPrevent, onEventStop } from '@dcloudio/uni-core'
import { Transition, defineComponent, ExtractPropTypes } from 'vue'
import { usePopup, VNODE_MASK } from './utils'
......@@ -51,7 +51,7 @@ export default /*#__PURE__*/ defineComponent({
const { title, content, showCancel, confirmText, confirmColor } = props
return (
<Transition name="uni-fade">
<uni-modal v-show={visible.value} onTouchmove={onTouchmovePrevent}>
<uni-modal v-show={visible.value} onTouchmove={onEventPrevent}>
{VNODE_MASK}
<div class="uni-modal">
{title && (
......@@ -61,7 +61,7 @@ export default /*#__PURE__*/ defineComponent({
)}
<div
class="uni-modal__bd"
onTouchmove={onTouchmoveStop}
onTouchmovePassive={onEventStop}
v-text={content}
></div>
<div class="uni-modal__ft">
......
......@@ -31,15 +31,18 @@ export const showModal = defineAsyncApi<API_TYPE_SHOW_MODAL>(
if (!showModalState) {
showModalState = reactive(args as ModalProps)
// 异步执行,避免干扰 getCurrentInstance
nextTick(() =>
createRootApp(modal, showModalState, onModalClose).mount(
ensureRoot('u-a-m')
nextTick(
() => (
createRootApp(modal, showModalState, onModalClose).mount(
ensureRoot('u-a-m')
), //下一帧执行,确保首次显示时有动画效果
nextTick(() => (showModalState.visible = true))
)
)
} else {
extend(showModalState, args)
showModalState.visible = true
}
showModalState.visible = true
},
ShowModalProtocol,
ShowModalOptions
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册