PluginProbe
Elementor Website Builder – more than just a page builder / 3.30.0-beta1
Elementor Website Builder – more than just a page builder v3.30.0-beta1
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
elementor / assets / js / toggle.375da8e2f6fed12731c2.bundle.js

toggle.375da8e2f6fed12731c2.bundle.js in Elementor Website Builder – more than just a page builder 3.30.0-beta1, at assets/js/toggle.375da8e2f6fed12731c2.bundle.js

238 lines 7.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /*! elementor - v3.30.0 - 10-06-2025 */
2 "use strict";
3 (self["webpackChunkelementorFrontend"] = self["webpackChunkelementorFrontend"] || []).push([["toggle"],{
4
5 /***/ "../assets/dev/js/frontend/handlers/base-tabs.js":
6 /*!*******************************************************!*\
7 !*** ../assets/dev/js/frontend/handlers/base-tabs.js ***!
8 \*******************************************************/
9 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
10
11
12
13 Object.defineProperty(exports, "__esModule", ({
14 value: true
15 }));
16 exports["default"] = void 0;
17 __webpack_require__(/*! core-js/modules/es.array.includes.js */ "../node_modules/core-js/modules/es.array.includes.js");
18 __webpack_require__(/*! core-js/modules/esnext.iterator.constructor.js */ "../node_modules/core-js/modules/esnext.iterator.constructor.js");
19 __webpack_require__(/*! core-js/modules/esnext.iterator.filter.js */ "../node_modules/core-js/modules/esnext.iterator.filter.js");
20 __webpack_require__(/*! core-js/modules/esnext.iterator.find.js */ "../node_modules/core-js/modules/esnext.iterator.find.js");
21 class baseTabs extends elementorModules.frontend.handlers.Base {
22 getDefaultSettings() {
23 return {
24 selectors: {
25 tablist: '[role="tablist"]',
26 tabTitle: '.elementor-tab-title',
27 tabContent: '.elementor-tab-content'
28 },
29 classes: {
30 active: 'elementor-active'
31 },
32 showTabFn: 'show',
33 hideTabFn: 'hide',
34 toggleSelf: true,
35 hidePrevious: true,
36 autoExpand: true,
37 keyDirection: {
38 ArrowLeft: elementorFrontendConfig.is_rtl ? 1 : -1,
39 ArrowUp: -1,
40 ArrowRight: elementorFrontendConfig.is_rtl ? -1 : 1,
41 ArrowDown: 1
42 }
43 };
44 }
45 getDefaultElements() {
46 const selectors = this.getSettings('selectors');
47 return {
48 $tabTitles: this.findElement(selectors.tabTitle),
49 $tabContents: this.findElement(selectors.tabContent)
50 };
51 }
52 activateDefaultTab() {
53 const settings = this.getSettings();
54 if (!settings.autoExpand || 'editor' === settings.autoExpand && !this.isEdit) {
55 return;
56 }
57 const defaultActiveTab = this.getEditSettings('activeItemIndex') || 1,
58 originalToggleMethods = {
59 showTabFn: settings.showTabFn,
60 hideTabFn: settings.hideTabFn
61 };
62
63 // Toggle tabs without animation to avoid jumping
64 this.setSettings({
65 showTabFn: 'show',
66 hideTabFn: 'hide'
67 });
68 this.changeActiveTab(defaultActiveTab);
69
70 // Return back original toggle effects
71 this.setSettings(originalToggleMethods);
72 }
73 handleKeyboardNavigation(event) {
74 const tab = event.currentTarget,
75 $tabList = jQuery(tab.closest(this.getSettings('selectors').tablist)),
76 // eslint-disable-next-line @wordpress/no-unused-vars-before-return
77 $tabs = $tabList.find(this.getSettings('selectors').tabTitle),
78 isVertical = 'vertical' === $tabList.attr('aria-orientation');
79 switch (event.key) {
80 case 'ArrowLeft':
81 case 'ArrowRight':
82 if (isVertical) {
83 return;
84 }
85 break;
86 case 'ArrowUp':
87 case 'ArrowDown':
88 if (!isVertical) {
89 return;
90 }
91 event.preventDefault();
92 break;
93 case 'Home':
94 event.preventDefault();
95 $tabs.first().trigger('focus');
96 return;
97 case 'End':
98 event.preventDefault();
99 $tabs.last().trigger('focus');
100 return;
101 default:
102 return;
103 }
104 const tabIndex = tab.getAttribute('data-tab') - 1,
105 direction = this.getSettings('keyDirection')[event.key],
106 nextTab = $tabs[tabIndex + direction];
107 if (nextTab) {
108 nextTab.focus();
109 } else if (-1 === tabIndex + direction) {
110 $tabs.last().trigger('focus');
111 } else {
112 $tabs.first().trigger('focus');
113 }
114 }
115 deactivateActiveTab(tabIndex) {
116 const settings = this.getSettings(),
117 activeClass = settings.classes.active,
118 activeFilter = tabIndex ? '[data-tab="' + tabIndex + '"]' : '.' + activeClass,
119 $activeTitle = this.elements.$tabTitles.filter(activeFilter),
120 $activeContent = this.elements.$tabContents.filter(activeFilter);
121 $activeTitle.add($activeContent).removeClass(activeClass);
122 $activeTitle.attr({
123 tabindex: '-1',
124 'aria-selected': 'false',
125 'aria-expanded': 'false'
126 });
127 $activeContent[settings.hideTabFn]();
128 $activeContent.attr('hidden', 'hidden');
129 }
130 activateTab(tabIndex) {
131 const settings = this.getSettings(),
132 activeClass = settings.classes.active,
133 $requestedTitle = this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]'),
134 $requestedContent = this.elements.$tabContents.filter('[data-tab="' + tabIndex + '"]'),
135 animationDuration = 'show' === settings.showTabFn ? 0 : 400;
136 $requestedTitle.add($requestedContent).addClass(activeClass);
137 $requestedTitle.attr({
138 tabindex: '0',
139 'aria-selected': 'true',
140 'aria-expanded': 'true'
141 });
142 $requestedContent[settings.showTabFn](animationDuration, () => elementorFrontend.elements.$window.trigger('elementor-pro/motion-fx/recalc'));
143 $requestedContent.removeAttr('hidden');
144 }
145 isActiveTab(tabIndex) {
146 return this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]').hasClass(this.getSettings('classes.active'));
147 }
148 bindEvents() {
149 this.elements.$tabTitles.on({
150 keydown: event => {
151 // Support for old markup that includes an `<a>` tag in the tab
152 if (jQuery(event.target).is('a') && `Enter` === event.key) {
153 event.preventDefault();
154 }
155
156 // We listen to keydowon event for these keys in order to prevent undesired page scrolling
157 if (['End', 'Home', 'ArrowUp', 'ArrowDown'].includes(event.key)) {
158 this.handleKeyboardNavigation(event);
159 }
160 },
161 keyup: event => {
162 switch (event.code) {
163 case 'ArrowLeft':
164 case 'ArrowRight':
165 this.handleKeyboardNavigation(event);
166 break;
167 case 'Enter':
168 case 'Space':
169 event.preventDefault();
170 this.changeActiveTab(event.currentTarget.getAttribute('data-tab'));
171 break;
172 }
173 },
174 click: event => {
175 event.preventDefault();
176 this.changeActiveTab(event.currentTarget.getAttribute('data-tab'));
177 }
178 });
179 }
180 onInit() {
181 super.onInit(...arguments);
182 this.activateDefaultTab();
183 }
184 onEditSettingsChange(propertyName) {
185 if ('activeItemIndex' === propertyName) {
186 this.activateDefaultTab();
187 }
188 }
189 changeActiveTab(tabIndex) {
190 const isActiveTab = this.isActiveTab(tabIndex),
191 settings = this.getSettings();
192 if ((settings.toggleSelf || !isActiveTab) && settings.hidePrevious) {
193 this.deactivateActiveTab();
194 }
195 if (!settings.hidePrevious && isActiveTab) {
196 this.deactivateActiveTab(tabIndex);
197 }
198 if (!isActiveTab) {
199 this.activateTab(tabIndex);
200 }
201 }
202 }
203 exports["default"] = baseTabs;
204
205 /***/ }),
206
207 /***/ "../assets/dev/js/frontend/handlers/toggle.js":
208 /*!****************************************************!*\
209 !*** ../assets/dev/js/frontend/handlers/toggle.js ***!
210 \****************************************************/
211 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
212
213
214
215 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
216 Object.defineProperty(exports, "__esModule", ({
217 value: true
218 }));
219 exports["default"] = void 0;
220 var _baseTabs = _interopRequireDefault(__webpack_require__(/*! ./base-tabs */ "../assets/dev/js/frontend/handlers/base-tabs.js"));
221 class Toggle extends _baseTabs.default {
222 getDefaultSettings() {
223 const defaultSettings = super.getDefaultSettings();
224 return {
225 ...defaultSettings,
226 showTabFn: 'slideDown',
227 hideTabFn: 'slideUp',
228 hidePrevious: false,
229 autoExpand: 'editor'
230 };
231 }
232 }
233 exports["default"] = Toggle;
234
235 /***/ })
236
237 }]);
238 //# sourceMappingURL=toggle.375da8e2f6fed12731c2.bundle.js.map