balmet.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

toggle.5e8aae8d1c1e897e9b4e.bundle.js (7494B)


      1 /*! elementor - v3.4.4 - 13-09-2021 */
      2 (self["webpackChunkelementor"] = self["webpackChunkelementor"] || []).push([["toggle"],{
      3 
      4 /***/ "../assets/dev/js/frontend/handlers/base-tabs.js":
      5 /*!*******************************************************!*\
      6   !*** ../assets/dev/js/frontend/handlers/base-tabs.js ***!
      7   \*******************************************************/
      8 /***/ ((__unused_webpack_module, exports) => {
      9 
     10 "use strict";
     11 
     12 
     13 Object.defineProperty(exports, "__esModule", ({
     14   value: true
     15 }));
     16 exports.default = void 0;
     17 
     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 
     43   getDefaultElements() {
     44     const selectors = this.getSettings('selectors');
     45     return {
     46       $tabTitles: this.findElement(selectors.tabTitle),
     47       $tabContents: this.findElement(selectors.tabContent)
     48     };
     49   }
     50 
     51   activateDefaultTab() {
     52     const settings = this.getSettings();
     53 
     54     if (!settings.autoExpand || 'editor' === settings.autoExpand && !this.isEdit) {
     55       return;
     56     }
     57 
     58     const defaultActiveTab = this.getEditSettings('activeItemIndex') || 1,
     59           originalToggleMethods = {
     60       showTabFn: settings.showTabFn,
     61       hideTabFn: settings.hideTabFn
     62     }; // Toggle tabs without animation to avoid jumping
     63 
     64     this.setSettings({
     65       showTabFn: 'show',
     66       hideTabFn: 'hide'
     67     });
     68     this.changeActiveTab(defaultActiveTab); // Return back original toggle effects
     69 
     70     this.setSettings(originalToggleMethods);
     71   }
     72 
     73   handleKeyboardNavigation(event) {
     74     const tab = event.currentTarget,
     75           $tabList = jQuery(tab.closest(this.getSettings('selectors').tablist)),
     76           $tabs = $tabList.find(this.getSettings('selectors').tabTitle),
     77           isVertical = 'vertical' === $tabList.attr('aria-orientation');
     78 
     79     switch (event.key) {
     80       case 'ArrowLeft':
     81       case 'ArrowRight':
     82         if (isVertical) {
     83           return;
     84         }
     85 
     86         break;
     87 
     88       case 'ArrowUp':
     89       case 'ArrowDown':
     90         if (!isVertical) {
     91           return;
     92         }
     93 
     94         event.preventDefault();
     95         break;
     96 
     97       case 'Home':
     98         event.preventDefault();
     99         $tabs.first().focus();
    100         return;
    101 
    102       case 'End':
    103         event.preventDefault();
    104         $tabs.last().focus();
    105         return;
    106 
    107       default:
    108         return;
    109     }
    110 
    111     const tabIndex = tab.getAttribute('data-tab') - 1,
    112           direction = this.getSettings('keyDirection')[event.key],
    113           nextTab = $tabs[tabIndex + direction];
    114 
    115     if (nextTab) {
    116       nextTab.focus();
    117     } else if (-1 === tabIndex + direction) {
    118       $tabs.last().focus();
    119     } else {
    120       $tabs.first().focus();
    121     }
    122   }
    123 
    124   deactivateActiveTab(tabIndex) {
    125     const settings = this.getSettings(),
    126           activeClass = settings.classes.active,
    127           activeFilter = tabIndex ? '[data-tab="' + tabIndex + '"]' : '.' + activeClass,
    128           $activeTitle = this.elements.$tabTitles.filter(activeFilter),
    129           $activeContent = this.elements.$tabContents.filter(activeFilter);
    130     $activeTitle.add($activeContent).removeClass(activeClass);
    131     $activeTitle.attr({
    132       tabindex: '-1',
    133       'aria-selected': 'false',
    134       'aria-expanded': 'false'
    135     });
    136     $activeContent[settings.hideTabFn]();
    137     $activeContent.attr('hidden', 'hidden');
    138   }
    139 
    140   activateTab(tabIndex) {
    141     const settings = this.getSettings(),
    142           activeClass = settings.classes.active,
    143           $requestedTitle = this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]'),
    144           $requestedContent = this.elements.$tabContents.filter('[data-tab="' + tabIndex + '"]'),
    145           animationDuration = 'show' === settings.showTabFn ? 0 : 400;
    146     $requestedTitle.add($requestedContent).addClass(activeClass);
    147     $requestedTitle.attr({
    148       tabindex: '0',
    149       'aria-selected': 'true',
    150       'aria-expanded': 'true'
    151     });
    152     $requestedContent[settings.showTabFn](animationDuration, () => elementorFrontend.elements.$window.trigger('resize'));
    153     $requestedContent.removeAttr('hidden');
    154   }
    155 
    156   isActiveTab(tabIndex) {
    157     return this.elements.$tabTitles.filter('[data-tab="' + tabIndex + '"]').hasClass(this.getSettings('classes.active'));
    158   }
    159 
    160   bindEvents() {
    161     this.elements.$tabTitles.on({
    162       keydown: event => {
    163         // Support for old markup that includes an `<a>` tag in the tab
    164         if (jQuery(event.target).is('a') && `Enter` === event.key) {
    165           event.preventDefault();
    166         } // We listen to keydowon event for these keys in order to prevent undesired page scrolling
    167 
    168 
    169         if (['End', 'Home', 'ArrowUp', 'ArrowDown'].includes(event.key)) {
    170           this.handleKeyboardNavigation(event);
    171         }
    172       },
    173       keyup: event => {
    174         switch (event.key) {
    175           case 'ArrowLeft':
    176           case 'ArrowRight':
    177             this.handleKeyboardNavigation(event);
    178             break;
    179 
    180           case 'Enter':
    181           case 'Space':
    182             event.preventDefault();
    183             this.changeActiveTab(event.currentTarget.getAttribute('data-tab'));
    184             break;
    185         }
    186       },
    187       click: event => {
    188         event.preventDefault();
    189         this.changeActiveTab(event.currentTarget.getAttribute('data-tab'));
    190       }
    191     });
    192   }
    193 
    194   onInit(...args) {
    195     super.onInit(...args);
    196     this.activateDefaultTab();
    197   }
    198 
    199   onEditSettingsChange(propertyName) {
    200     if ('activeItemIndex' === propertyName) {
    201       this.activateDefaultTab();
    202     }
    203   }
    204 
    205   changeActiveTab(tabIndex) {
    206     const isActiveTab = this.isActiveTab(tabIndex),
    207           settings = this.getSettings();
    208 
    209     if ((settings.toggleSelf || !isActiveTab) && settings.hidePrevious) {
    210       this.deactivateActiveTab();
    211     }
    212 
    213     if (!settings.hidePrevious && isActiveTab) {
    214       this.deactivateActiveTab(tabIndex);
    215     }
    216 
    217     if (!isActiveTab) {
    218       this.activateTab(tabIndex);
    219     }
    220   }
    221 
    222 }
    223 
    224 exports.default = baseTabs;
    225 
    226 /***/ }),
    227 
    228 /***/ "../assets/dev/js/frontend/handlers/toggle.js":
    229 /*!****************************************************!*\
    230   !*** ../assets/dev/js/frontend/handlers/toggle.js ***!
    231   \****************************************************/
    232 /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
    233 
    234 "use strict";
    235 
    236 
    237 var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js");
    238 
    239 Object.defineProperty(exports, "__esModule", ({
    240   value: true
    241 }));
    242 exports.default = void 0;
    243 
    244 var _baseTabs = _interopRequireDefault(__webpack_require__(/*! ./base-tabs */ "../assets/dev/js/frontend/handlers/base-tabs.js"));
    245 
    246 class Toggle extends _baseTabs.default {
    247   getDefaultSettings() {
    248     const defaultSettings = super.getDefaultSettings();
    249     return { ...defaultSettings,
    250       showTabFn: 'slideDown',
    251       hideTabFn: 'slideUp',
    252       hidePrevious: false,
    253       autoExpand: 'editor'
    254     };
    255   }
    256 
    257 }
    258 
    259 exports.default = Toggle;
    260 
    261 /***/ })
    262 
    263 }]);
    264 //# sourceMappingURL=toggle.5e8aae8d1c1e897e9b4e.bundle.js.map