@@ -1698,3 +1698,96 @@ describe("Event Registration", () => {
16981698 } ) ;
16991699 } ) ;
17001700} ) ;
1701+
1702+ describe ( "Native drag-and-drop in draggable dialogs" , ( ) => {
1703+ it ( "_handleDragStart should NOT prevent default for content elements" , ( ) => {
1704+ cy . mount (
1705+ < Dialog id = "test-dialog" draggable = { true } headerText = "Test" >
1706+ < div id = "content-item" > Content</ div >
1707+ </ Dialog >
1708+ ) ;
1709+
1710+ cy . get ( "#test-dialog" ) . invoke ( "prop" , "open" , true ) ;
1711+ cy . get < Dialog > ( "#test-dialog" ) . ui5DialogOpened ( ) ;
1712+
1713+ cy . get ( "#test-dialog" ) . then ( $dialog => {
1714+ const dialog = $dialog . get ( 0 ) as Dialog ;
1715+ const content = document . getElementById ( "content-item" ) ;
1716+
1717+ // Create a mock event
1718+ let preventDefaultCalled = false ;
1719+ const mockEvent = {
1720+ target : content ,
1721+ preventDefault : ( ) => { preventDefaultCalled = true ; } ,
1722+ defaultPrevented : false
1723+ } as unknown as DragEvent ;
1724+
1725+ // Call the handler directly
1726+ dialog . _handleDragStart ( mockEvent ) ;
1727+
1728+ expect ( preventDefaultCalled ) . to . be . false ;
1729+ } ) ;
1730+ } ) ;
1731+
1732+ it ( "_handleDragStart should prevent default for header element" , ( ) => {
1733+ cy . mount (
1734+ < Dialog id = "test-dialog" draggable = { true } headerText = "Test" >
1735+ < div > Content</ div >
1736+ </ Dialog >
1737+ ) ;
1738+
1739+ cy . get ( "#test-dialog" ) . invoke ( "prop" , "open" , true ) ;
1740+ cy . get < Dialog > ( "#test-dialog" ) . ui5DialogOpened ( ) ;
1741+
1742+ cy . get ( "#test-dialog" )
1743+ . shadow ( )
1744+ . find ( ".ui5-popup-header-root" )
1745+ . then ( $header => {
1746+ const dialog = document . getElementById ( "test-dialog" ) as Dialog ;
1747+ const header = $header . get ( 0 ) as HTMLElement ;
1748+
1749+ // Create a mock event
1750+ let preventDefaultCalled = false ;
1751+ const mockEvent = {
1752+ target : header ,
1753+ preventDefault : ( ) => { preventDefaultCalled = true ; } ,
1754+ defaultPrevented : false
1755+ } as unknown as DragEvent ;
1756+
1757+ // Call the handler directly
1758+ dialog . _handleDragStart ( mockEvent ) ;
1759+
1760+ expect ( preventDefaultCalled ) . to . be . true ;
1761+ } ) ;
1762+ } ) ;
1763+
1764+ it ( "_handleDragStart should prevent default for custom header slot" , ( ) => {
1765+ cy . mount (
1766+ < Dialog id = "test-dialog" draggable = { true } >
1767+ < div slot = "header" id = "custom-header" > Header</ div >
1768+ < div > Content</ div >
1769+ </ Dialog >
1770+ ) ;
1771+
1772+ cy . get ( "#test-dialog" ) . invoke ( "prop" , "open" , true ) ;
1773+ cy . get < Dialog > ( "#test-dialog" ) . ui5DialogOpened ( ) ;
1774+
1775+ cy . get ( "#custom-header" ) . then ( $header => {
1776+ const dialog = document . getElementById ( "test-dialog" ) as Dialog ;
1777+ const header = $header . get ( 0 ) as HTMLElement ;
1778+
1779+ // Create a mock event
1780+ let preventDefaultCalled = false ;
1781+ const mockEvent = {
1782+ target : header ,
1783+ preventDefault : ( ) => { preventDefaultCalled = true ; } ,
1784+ defaultPrevented : false
1785+ } as unknown as DragEvent ;
1786+
1787+ // Call the handler directly
1788+ dialog . _handleDragStart ( mockEvent ) ;
1789+
1790+ expect ( preventDefaultCalled ) . to . be . true ;
1791+ } ) ;
1792+ } ) ;
1793+ } ) ;
0 commit comments