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

fix: showModal

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