PluginProbe
Elementor Website Builder – more than just a page builder / trunk
Elementor Website Builder – more than just a page builder vtrunk
4.3.4 4.3.3 4.3.2 4.3.1 4.3.0 4.3.0-beta3 4.3.0-beta2 4.3.0-beta1 4.2.4 4.2.3 4.2.2 4.2.1 4.2.0 4.1.5 4.2.0-beta2 4.2.0-dev2 4.2.0-beta1 4.1.4 4.1.3 4.1.2 4.1.1 4.1.0 4.1.0-beta3 4.1.0-dev3 4.0.9 All 457 releases
← All changes | modules/atomic-widgets/elements/atomic-tabs/handlers/atomic-tabs-preview-handler.js +13 -3 4.0.9 → trunk View file →
@@ -1,7 +1,8 @@
1 1 import { register } from '@elementor/frontend-handlers';
2 2 import { Alpine, refreshTree } from '@elementor/alpinejs';
3 -import { TAB_ELEMENT_TYPE, TAB_CONTENT_ELEMENT_TYPE, getTabId, getIndex } from './utils';
3 +import { TAB_ELEMENT_TYPE, TAB_CONTENT_ELEMENT_TYPE, getIndex } from './utils';
4 +import { setActiveTabIndex } from './editor-tabs-state';
4 5
5 6 register( {
6 7 elementType: 'e-tabs',
7 8 id: 'e-tabs-preview-handler',
@@ -19,12 +20,21 @@
19 20 return;
20 21 }
21 22
22 23 const targetIndex = getIndex( targetElement, type );
23 - Alpine.$data( element ).activeTab = getTabId( element.dataset.id, targetIndex );
24 + setActiveTabIndex( element.dataset.id, targetIndex );
24 25 }, { signal } );
25 26
26 27 // Re-initialize Alpine to sync with editor DOM manipulations that bypass Alpine's reactivity.
27 28 listenToChildren( [ TAB_ELEMENT_TYPE, TAB_CONTENT_ELEMENT_TYPE ] )
28 - .render( () => refreshTree( element ) );
29 + .render( ( event ) => {
30 + const childElement = event.detail.element;
31 + const nearestTabs = childElement.closest( '[data-e-type="e-tabs"]' );
32 +
33 + if ( nearestTabs !== element ) {
34 + return;
35 + }
36 +
37 + refreshTree( element );
38 + } );
29 39 },
30 40 } );