MCPcopy Create free account
hub / github.com/UI5/webcomponents / _moveHeaderItem

Method _moveHeaderItem

packages/main/src/TabContainer.ts:560–617  ·  view source on GitHub ↗
(tab: Tab, e: KeyboardEvent)

Source from the content-addressed store, hash-verified

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 }

Callers 1

_onTabStripKeyDownMethod · 0.95

Calls 4

hasAttributeMethod · 0.80
getDomRefInStripMethod · 0.45
focusMethod · 0.45

Tested by

no test coverage detected