(tab: Tab, e: KeyboardEvent)
| 558 | } |
| 559 | |
| 560 | _moveHeaderItem(tab: Tab, e: KeyboardEvent) { |
| 561 | if (!tab.movable || this._dragging) { |
| 562 | return; |
| 563 | } |
| 564 | |
| 565 | this._dragging = true; |
| 566 | |
| 567 | const headerItems = this.items.map(item => item.getDomRefInStrip()) |
| 568 | .filter((item): item is TabInStrip => !item?.hasAttribute("hidden")); |
| 569 | let positions = findClosestPositionsByKey(headerItems, tab.getDomRefInStrip()!, e); |
| 570 | |
| 571 | positions = positions.map(({ element, placement }) => { |
| 572 | while (element && (element as TabInStrip).realTabReference.hasAttribute("ui5-tab-separator") && placement === MovePlacement.Before) { |
| 573 | element = headerItems.at(headerItems.indexOf(element as TabInStrip) - 1) as HTMLElement; |
| 574 | placement = MovePlacement.After; |
| 575 | } |
| 576 | |
| 577 | while (element && (element as TabInStrip).realTabReference.hasAttribute("ui5-tab-separator") && placement === MovePlacement.After) { |
| 578 | element = headerItems.at(headerItems.indexOf(element as TabInStrip) + 1) as HTMLElement; |
| 579 | placement = MovePlacement.Before; |
| 580 | } |
| 581 | |
| 582 | return { |
| 583 | element, |
| 584 | placement, |
| 585 | }; |
| 586 | }); |
| 587 | |
| 588 | const acceptedPosition = positions.find(({ element, placement }) => { |
| 589 | return !this.fireDecoratorEvent("move-over", { |
| 590 | source: { |
| 591 | element: tab, |
| 592 | }, |
| 593 | destination: { |
| 594 | element: (element as TabInStrip).realTabReference, |
| 595 | placement, |
| 596 | }, |
| 597 | }); |
| 598 | }); |
| 599 | |
| 600 | if (acceptedPosition) { |
| 601 | this.fireDecoratorEvent("move", { |
| 602 | source: { |
| 603 | element: tab, |
| 604 | }, |
| 605 | destination: { |
| 606 | element: (acceptedPosition.element as TabInStrip).realTabReference, |
| 607 | placement: acceptedPosition.placement, |
| 608 | }, |
| 609 | }); |
| 610 | |
| 611 | tab.focus().then(() => { |
| 612 | this._dragging = false; |
| 613 | }); |
| 614 | } else { |
| 615 | this._dragging = false; |
| 616 | } |
| 617 | } |
no test coverage detected