diff --git a/packages/renderless/src/picker/index.ts b/packages/renderless/src/picker/index.ts index e8d6abc59c..02678767be 100644 --- a/packages/renderless/src/picker/index.ts +++ b/packages/renderless/src/picker/index.ts @@ -16,6 +16,7 @@ import userPopper from '../common/deps/vue-popper' import { DATEPICKER } from '../common' import { formatDate, parseDate, isDateObject, getWeekNumber } from '../common/deps/date-util' import { extend } from '../common/object' +import { isFunction } from '../common/type' import globalTimezone from './timezone' const iso8601Reg = /^\d{4}-\d{2}-\d{2}(.)\d{2}:\d{2}:\d{2}(.+)$/ @@ -704,11 +705,15 @@ export const handleKeydown = } export const hidePicker = - ({ state }) => + ({ state, doDestroy }) => () => { if (state.picker) { state.picker.resetView && state.picker.resetView() state.pickerVisible = state.picker.visible = state.picker.state.visible = false + + if (isFunction(doDestroy)) { + doDestroy() + } } } diff --git a/packages/renderless/src/picker/vue.ts b/packages/renderless/src/picker/vue.ts index ed8d120c2e..1efd2fcb95 100644 --- a/packages/renderless/src/picker/vue.ts +++ b/packages/renderless/src/picker/vue.ts @@ -143,7 +143,7 @@ const initState = ({ api, reactive, vm, computed, props, utils, parent }) => { const initApi = ({ api, props, hooks, state, vnode, others, utils }) => { const { t, emit, dispatch, nextTick, vm } = vnode const { TimePanel, TimeRangePanel } = others - const { destroyPopper, popperElm, updatePopper } = initPopper({ props, hooks, vnode }) + const { destroyPopper, popperElm, updatePopper, doDestroy } = initPopper({ props, hooks, vnode }) state.popperElm = popperElm state.picker = null @@ -151,7 +151,7 @@ const initApi = ({ api, props, hooks, state, vnode, others, utils }) => { Object.assign(api, { destroyPopper, emitDbTime: emitDbTime({ emit, state, t }), - hidePicker: hidePicker({ state }), + hidePicker: hidePicker({ state, doDestroy }), handleSelectChange: ({ tz, date }) => emit('select-change', { tz, date }), getPanel: getPanel(others), handleFocus: handleFocus({ emit, vm, state }),