balmet.com

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

accordion.5824c4bc9e26d54f2918.bundle.js (7463B)


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