保存一下
This commit is contained in:
@@ -3,11 +3,13 @@
|
|||||||
:config-provider-props="configProviderProps"
|
:config-provider-props="configProviderProps"
|
||||||
class="w-full h-full pos-relative"
|
class="w-full h-full pos-relative"
|
||||||
>
|
>
|
||||||
<div ref="desktopRootDom" class="desktop-root">
|
<div class="desktop-root" @contextmenu="onContextMenu">
|
||||||
<div class="desktop-container"
|
<div class="w-full h-full flex-1 p-2 pos-relative">
|
||||||
:style="gridStyle">
|
<div class="desktop-container"
|
||||||
<AppIcon v-for="(appIcon, i) in appIconsRef" :key="i"
|
:style="gridStyle">
|
||||||
:icon="appIcon" :gridTemplate="gridTemplate" />
|
<AppIcon v-for="(appIcon, i) in appIconsRef" :key="i"
|
||||||
|
:icon="appIcon" :gridTemplate="gridTemplate" />
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="task-bar"></div>
|
<div class="task-bar"></div>
|
||||||
</div>
|
</div>
|
||||||
@@ -20,13 +22,10 @@ import XSystem from '@/core/XSystem.ts'
|
|||||||
import { notificationApi } from '@/core/common/naive-ui/discrete-api.ts'
|
import { notificationApi } from '@/core/common/naive-ui/discrete-api.ts'
|
||||||
import { configProviderProps } from '@/core/common/naive-ui/theme.ts'
|
import { configProviderProps } from '@/core/common/naive-ui/theme.ts'
|
||||||
import { DesktopEventEnum } from '@/core/events/EventTypes.ts'
|
import { DesktopEventEnum } from '@/core/events/EventTypes.ts'
|
||||||
import { useIconDrag } from '@/core/desktop/utils/useIconDrag.ts'
|
|
||||||
import type { IDesktopAppIcon } from '@/core/desktop/types/IDesktopAppIcon.ts'
|
|
||||||
import { useDesktopInit } from '@/core/desktop/ui/useDesktopInit.ts'
|
import { useDesktopInit } from '@/core/desktop/ui/useDesktopInit.ts'
|
||||||
import AppIcon from '@/core/desktop/ui/components/AppIcon.vue'
|
import AppIcon from '@/core/desktop/ui/components/AppIcon.vue'
|
||||||
|
|
||||||
const props = defineProps<{ process: DesktopProcess }>()
|
const props = defineProps<{ process: DesktopProcess }>()
|
||||||
// console.log(props.process)
|
|
||||||
|
|
||||||
const { appIconsRef, gridStyle, gridTemplate } = useDesktopInit('.desktop-container')
|
const { appIconsRef, gridStyle, gridTemplate } = useDesktopInit('.desktop-container')
|
||||||
|
|
||||||
@@ -42,12 +41,8 @@ XSystem.instance.eventManages.addEventListener(
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
const iconsInit = () => {
|
const onContextMenu = (e: MouseEvent) => {
|
||||||
const icons = document.querySelectorAll<HTMLDivElement>('div.icon-container')
|
e.preventDefault()
|
||||||
const container = document.querySelector<HTMLDivElement>('.desktop-container')!
|
|
||||||
icons.forEach((icon: HTMLDivElement) => {
|
|
||||||
useIconDrag(icon, container)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -56,13 +51,7 @@ const iconsInit = () => {
|
|||||||
@apply w-full h-full flex flex-col;
|
@apply w-full h-full flex flex-col;
|
||||||
|
|
||||||
.desktop-container {
|
.desktop-container {
|
||||||
@apply w-full flex-1 grid grid-auto-flow-col pos-relative;
|
@apply w-full h-full flex-1 grid grid-auto-flow-col pos-relative;
|
||||||
|
|
||||||
.icon-container {
|
|
||||||
width: 100%;
|
|
||||||
height: 100%;
|
|
||||||
@apply flex flex-col items-center justify-center rounded bg-gray-200;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.task-bar {
|
.task-bar {
|
||||||
|
|||||||
@@ -21,6 +21,12 @@ const onDragStart = (e: DragEvent) => {}
|
|||||||
const onDragEnd = (e: DragEvent) => {
|
const onDragEnd = (e: DragEvent) => {
|
||||||
const el = e.target as HTMLElement | null
|
const el = e.target as HTMLElement | null
|
||||||
if (!el) return
|
if (!el) return
|
||||||
|
// 鼠标所在位置已存在图标元素
|
||||||
|
const pointTarget = document.elementFromPoint(e.clientX, e.clientY)
|
||||||
|
if (!pointTarget) return
|
||||||
|
if (pointTarget.classList.contains('icon-container')) return
|
||||||
|
if (!pointTarget.classList.contains('desktop-container')) return
|
||||||
|
|
||||||
// 获取容器边界
|
// 获取容器边界
|
||||||
const rect = el.parentElement!.getBoundingClientRect()
|
const rect = el.parentElement!.getBoundingClientRect()
|
||||||
|
|
||||||
@@ -31,7 +37,7 @@ const onDragEnd = (e: DragEvent) => {
|
|||||||
// 计算鼠标所在单元格坐标(向上取整,从1开始)
|
// 计算鼠标所在单元格坐标(向上取整,从1开始)
|
||||||
const gridX = Math.ceil(mouseX / gridTemplate.cellRealWidth)
|
const gridX = Math.ceil(mouseX / gridTemplate.cellRealWidth)
|
||||||
const gridY = Math.ceil(mouseY / gridTemplate.cellRealHeight)
|
const gridY = Math.ceil(mouseY / gridTemplate.cellRealHeight)
|
||||||
console.log(gridX, gridY)
|
|
||||||
icon.col = gridX
|
icon.col = gridX
|
||||||
icon.row = gridY
|
icon.row = gridY
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user