Skip to content
This repository has been archived by the owner on Jan 8, 2025. It is now read-only.

Commit

Permalink
refactor(ui/dialog): refactor event trigger
Browse files Browse the repository at this point in the history
  • Loading branch information
ayangweb committed Mar 1, 2022
1 parent d70575d commit bec03cc
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 32 deletions.
36 changes: 20 additions & 16 deletions packages/varlet-vue2-ui/src/dialog/Dialog.vue
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@
:lock-scroll="lockScroll"
:close-on-click-overlay="popupCloseOnClickOverlay"
:teleport="teleport"
@open="onOpen"
@close="onClose"
@closed="onClosed"
@opened="onOpened"
@route-change="onRouteChange"
@open="$emit('open')"
@close="$emit('close')"
@closed="$emit('closed')"
@opened="$emit('opened')"
@route-change="$emit('route-change')"
@click-overlay="handleClickOverlay"
>
<div class="var--box var-dialog" :class="dialogClass" :style="dialogStyle" v-bind="$attrs">
Expand Down Expand Up @@ -109,14 +109,18 @@ export default defineComponent({
dt,
done() {
this.getListeners()['onUpdate:show']?.(false)
this.$emit('update:show', false)
},
normalizeBeforeClose() {
return this.getListeners().onBeforeClose || this.beforeClose
},
handleClickOverlay() {
const { closeOnClickOverlay, getListeners } = this
const [onClickOverlay, onBeforeClose] = getListeners()
const { closeOnClickOverlay, normalizeBeforeClose } = this
const onBeforeClose = normalizeBeforeClose()
onClickOverlay?.()
this.$emit('click-overlay')
if (!closeOnClickOverlay) {
return
Expand All @@ -127,33 +131,33 @@ export default defineComponent({
return
}
getListeners()['onUpdate:show']?.(false)
this.$emit('update:show', false)
},
confirm() {
const { onBeforeClose, onConfirm } = this.getListeners()
const onBeforeClose = this.normalizeBeforeClose()
onConfirm?.()
this.$emit('confirm')
if (onBeforeClose != null) {
onBeforeClose('confirm', this.done)
return
}
this.getListeners()['onUpdate:show']?.(false)
this.$emit('update:show', false)
},
cancel() {
const { onBeforeClose, onCancel } = this.getListeners()
const onBeforeClose = this.normalizeBeforeClose()
onCancel?.()
this.$emit('cancel')
if (onBeforeClose != null) {
onBeforeClose('cancel', this.done)
return
}
this.getListeners()['onUpdate:show']?.(false)
this.$emit('update:show', false)
},
},
})
Expand Down
8 changes: 4 additions & 4 deletions packages/varlet-vue2-ui/src/dialog/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ type ButtonType = 'default' | 'primary' | 'info' | 'success' | 'warning' | ' err
type DialogMessageAlign = 'left' | 'center' | 'right'

interface DialogOptions {
value?: boolean
show?: boolean
title?: string
message?: string
messageAlign?: DialogMessageAlign
Expand Down Expand Up @@ -54,12 +54,12 @@ function Dialog(options: DialogOptions | string | number): Promise<DialogActions
},
})

instance.value = true
instance.show = true

singletonInstance = instance

instance.$on('input', (value: boolean) => {
instance.value = value
instance.$on('update:show', (value: boolean) => {
instance.show = value
})

instance.$on('open', () => dialogOptions.onOpen?.())
Expand Down
11 changes: 4 additions & 7 deletions packages/varlet-vue2-ui/src/dialog/props.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,19 +54,16 @@ export const props = {
dialogStyle: {
type: Object,
},
// internal
beforeClose: {
type: Function,
},
...pickProps(popupProps, [
'overlay',
'overlayClass',
'overlayStyle',
'lockScroll',
'closeOnClickOverlay',
'teleport',
'onOpen',
'onClose',
'onOpened',
'onClosed',
'onClickOverlay',
// internal for function call closes the dialog
'onRouteChange',
]),
}
5 changes: 0 additions & 5 deletions packages/varlet-vue2-ui/src/popup/props.ts
Original file line number Diff line number Diff line change
Expand Up @@ -38,9 +38,4 @@ export const props = {
teleport: {
type: String,
},

// internal for Dialog
onRouteChange: {
type: Function as PropType<() => void>,
},
}

0 comments on commit bec03cc

Please sign in to comment.