PluginProbe
Elementor Website Builder – more than just a page builder / 3.26.1
Elementor Website Builder – more than just a page builder v3.26.1
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.3520395de60310d5fb8d.bundle.js

toggle.3520395de60310d5fb8d.bundle.js in Elementor Website Builder – more than just a page builder 3.26.1, at assets/js/toggle.3520395de60310d5fb8d.bundle.js

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