diff --git a/app/src/layout/dock/index.ts b/app/src/layout/dock/index.ts index 9df2b6af1..81060e93c 100644 --- a/app/src/layout/dock/index.ts +++ b/app/src/layout/dock/index.ts @@ -63,7 +63,7 @@ export class Dock { this.app = options.app; this.element = document.getElementById("dock" + options.position); const dockClass = options.position === "Bottom" ? ' class="fn__flex dock__items"' : ' class="dock__items"'; - this.element.innerHTML = `
`; + this.element.innerHTML = `
`; this.position = options.position; this.pin = options.data.pin; this.data = {}; @@ -183,9 +183,33 @@ export class Dock { } const targetItem = hasClosestByClassName(moveEvent.target as HTMLElement, "dock__item") || - hasClosestByClassName(moveEvent.target as HTMLElement, "dock__items") as HTMLElement; + hasClosestByClassName(moveEvent.target as HTMLElement, "dock__items") as HTMLElement || + hasClosestByClassName(moveEvent.target as HTMLElement, "dock__item--space") as HTMLElement; if (targetItem && selectItem && targetItem.isSameNode(selectItem)) { - if (selectItem.classList.contains("dock__item--pin")) { + if (selectItem.classList.contains("dock__item--space")) { + const selectRect = selectItem.getBoundingClientRect(); + if (selectItem.parentElement.id === "dockBottom") { + if (moveEvent.clientX < selectRect.right && moveEvent.clientX > selectRect.right - 40) { + const lastFirstElement = selectItem.nextElementSibling.firstElementChild + if (lastFirstElement && lastFirstElement.isSameNode(item)) { + moveItem.classList.add("fn__none") + } else { + moveItem.classList.remove("fn__none") + lastFirstElement.before(moveItem) + } + } + } else { + if (moveEvent.clientY < selectRect.bottom && moveEvent.clientY > selectRect.bottom - 40) { + const lastFirstElement = selectItem.nextElementSibling.firstElementChild + if (lastFirstElement && lastFirstElement.isSameNode(item)) { + moveItem.classList.add("fn__none") + } else { + moveItem.classList.remove("fn__none") + lastFirstElement.before(moveItem) + } + } + } + } else if (selectItem.classList.contains("dock__item--pin")) { if (item.nextElementSibling?.isSameNode(selectItem)) { moveItem.classList.add("fn__none") } else {