UNPKG

hongluan-business-ui

Version:
1 lines 10.1 kB
{"version":3,"file":"use-dock-container.mjs","sources":["../../../../../../packages/components/dock-container/src/use-dock-container.ts"],"sourcesContent":["import { ref, watch, onMounted, getCurrentInstance, computed, onBeforeUnmount, nextTick } from 'vue'\nimport { useTimeoutFn } from '@vueuse/core'\nimport { useZIndex } from 'hongluan-ui'\nimport { ModelessDialogManager } from '@hongluan-business-ui/components/modeless-dialog'\nimport isServer from '@hongluan-business-ui/utils/isServer'\nimport { useRestoreActive } from '@hongluan-business-ui/utils/use-restore-active'\n\nimport type { Ref } from 'vue'\nimport type { DockContainerProps, DockItem } from './dock-container'\n\nexport const CLOSE_EVENT = 'close'\nexport const OPEN_EVENT = 'open'\nexport const CLOSED_EVENT = 'closed'\nexport const OPENED_EVENT = 'opened'\nexport const ITEM_ADDED_EVENT = 'item-added'\nexport const ITEM_CLOSED_EVENT = 'item-closed'\nexport const ITEM_RESTORED_EVENT = 'item-restored'\nexport const UPDATE_MODEL_EVENT = 'update:modelValue'\n\nexport const useDockContainer = (\n props: DockContainerProps,\n scrollbarRef: Ref<{ update: () => void; }>,\n) => {\n const { nextZIndex } = useZIndex()\n const visible = ref(false)\n const closed = ref(false)\n const zIndex = ref(props.zIndex || nextZIndex())\n const dockItems = ref<Array<DockItem>>([])\n\n const animName = computed(() => {\n let name = props.animationName\n if (!name) {\n switch (props.placement) {\n case 'left':\n name = 'slideRightSide'\n break\n case 'right':\n name = 'slideLeftSide'\n break\n case 'bottom':\n name = 'slideTopSide'\n break\n case 'top':\n name = 'slideBottomSide'\n break\n }\n }\n return name\n })\n\n let stopOpenTimer: (() => void) | undefined = undefined\n let stopCloseTimer: (() => void) | undefined = undefined\n\n const { emit } = getCurrentInstance()\n\n function afterEnter() {\n emit(OPENED_EVENT)\n }\n\n function afterLeave() {\n emit(CLOSED_EVENT)\n emit(UPDATE_MODEL_EVENT, false)\n }\n\n function beforeLeave() {\n emit(CLOSE_EVENT)\n }\n\n function open() {\n stopCloseTimer?.()\n stopOpenTimer?.()\n if (props.openDelay && props.openDelay > 0) {\n ({ stop: stopOpenTimer } = useTimeoutFn(() => doOpen(), props.openDelay))\n } else {\n doOpen()\n }\n }\n\n function close() {\n // if (this.willClose && !this.willClose()) return;\n stopOpenTimer?.()\n stopCloseTimer?.()\n\n if (props.closeDelay && props.closeDelay > 0) {\n ({ stop: stopCloseTimer } = useTimeoutFn(() => doClose(), props.closeDelay))\n } else {\n doClose()\n }\n }\n\n function hide(shouldCancel: boolean) {\n if (shouldCancel) return\n closed.value = true\n visible.value = false\n }\n\n function handleClose() {\n if (props.beforeClose) {\n props.beforeClose(hide)\n } else {\n close()\n }\n }\n\n function doOpen() {\n if (isServer) {\n return\n }\n visible.value = true\n }\n\n function doClose() {\n visible.value = false\n }\n\n useRestoreActive(visible)\n\n watch(() => props.modelValue, val => {\n if (val) {\n closed.value = false\n open()\n emit(OPEN_EVENT)\n zIndex.value = props.zIndex ? zIndex.value++ : nextZIndex()\n } else {\n if (visible.value) {\n close()\n }\n }\n })\n\n watch(() => dockItems.value.length, () => {\n nextTick(() => {\n scrollbarRef.value?.update()\n })\n })\n\n function addDockItems(id: string) {\n const dialog = ModelessDialogManager.get(id)\n const item = {\n id,\n title: dialog.title || (document.querySelector(`#${id} .panel-header`) as HTMLElement).innerText,\n snapshot: dialog.snapshot,\n }\n dockItems.value.push(item)\n\n emit(ITEM_ADDED_EVENT, item, dockItems.value)\n }\n function closeDockItem(id: string) {\n const itemIdx = dockItems.value.findIndex(i => i.id === id)\n const itemsDel = dockItems.value.splice(itemIdx, 1)\n ModelessDialogManager.get(id).close()\n\n emit(ITEM_CLOSED_EVENT, itemsDel[0], dockItems.value)\n }\n function restoreDockItem(id: string) {\n const itemIdx = dockItems.value.findIndex(i => i.id === id)\n const itemsDel = dockItems.value.splice(itemIdx, 1)\n ModelessDialogManager.get(id).toggleShow()\n\n emit(ITEM_RESTORED_EVENT, itemsDel[0], dockItems.value)\n }\n const eventRemover = ModelessDialogManager.addEventListener({\n collapse: addDockItems,\n })\n\n onMounted(() => {\n if (props.modelValue) {\n visible.value = true\n open()\n }\n })\n\n onBeforeUnmount(() => {\n eventRemover()\n })\n\n return {\n afterEnter,\n afterLeave,\n beforeLeave,\n handleClose,\n closed,\n visible,\n zIndex,\n animName,\n dockItems,\n closeDockItem,\n restoreDockItem,\n }\n}\n"],"names":[],"mappings":"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"}