Compare commits

...

8 Commits

Author SHA1 Message Date
Enzo Martellucci
a3c5d0356d Merge branch 'master' into enxdev/fix/custom-tabs 2026-04-27 10:32:48 +02:00
Enzo Martellucci
60ef1ed246 Merge branch 'master' into enxdev/fix/custom-tabs 2026-02-10 16:03:44 +01:00
Enzo Martellucci
624b5ec260 Merge branch 'master' into enxdev/fix/custom-tabs 2026-02-04 09:41:39 +01:00
Enzo Martellucci
c288f3ffd6 Merge branch 'master' into enxdev/fix/custom-tabs 2026-01-28 11:28:36 +01:00
Enzo Martellucci
e21fb5659a Merge branch 'master' into enxdev/fix/custom-tabs 2026-01-20 09:43:43 +01:00
Enzo Martellucci
f80c46005e Merge branch 'master' into enxdev/fix/custom-tabs 2026-01-13 16:29:02 +01:00
Enzo Martellucci
b5e76ccf35 lint 2026-01-02 13:00:18 +01:00
Enzo Martellucci
ad53a4c744 fix(dashboard): disable drag on input fields during tab reorder
Prevents drag activation when clicking on input/textarea elements,
allowing users to edit tab titles without accidentally triggering
drag-and-drop reordering
2026-01-02 12:02:41 +01:00

View File

@@ -46,6 +46,35 @@ import HoverMenu from '../../menu/HoverMenu';
import DragHandle from '../../dnd/DragHandle';
import DeleteComponentButton from '../../DeleteComponentButton';
const isInteractiveElement = (element: HTMLElement | null): boolean => {
if (!element) return false;
const tagName = element.tagName.toUpperCase();
if (
tagName === 'INPUT' ||
tagName === 'TEXTAREA' ||
element.isContentEditable
) {
return true;
}
return isInteractiveElement(element.parentElement);
};
PointerSensor.activators = [
{
eventName: 'onPointerDown' as const,
handler: ({ nativeEvent: event }, { onActivation }) => {
if (
event.button !== 0 ||
isInteractiveElement(event.target as HTMLElement)
) {
return false;
}
onActivation?.({ event });
return true;
},
},
];
const StyledTabsContainer = styled.div<{ isDragging?: boolean }>`
width: 100%;
background-color: ${({ theme }) => theme.colorBgContainer};
@@ -235,7 +264,6 @@ const TabsRenderer = memo<TabsRendererProps>(
type={editMode ? 'editable-card' : 'card'}
items={tabItems}
tabBarStyle={{ paddingLeft: tabBarPaddingLeft }}
fullHeight
{...(editMode && {
renderTabBar: (tabBarProps, DefaultTabBar) => (
<DndContext