diff --git a/claro.info.yml b/claro.info.yml index 40341b1..c653077 100644 --- a/claro.info.yml +++ b/claro.info.yml @@ -49,7 +49,6 @@ libraries-override: css: component: /core/themes/stable/css/core/vertical-tabs.css: false - js: misc/vertical-tabs.js: js/claro.vertical-tabs.js diff --git a/claro.libraries.yml b/claro.libraries.yml index 5a026e0..46c427e 100644 --- a/claro.libraries.yml +++ b/claro.libraries.yml @@ -226,18 +226,5 @@ vertical-tabs: css: component: css/dist/components/vertical-tabs.css: {} - drupalSettings: - verticalTabs: - paneClasses: [] - paneClassesFirst: - - vertical-tabs__item--first - paneClassesLast: - - vertical-tabs__item--last - paneClassesHidden: - - vertical-tab--hidden - paneWrapperClasses: - - vertical-tabs__items--processed - menuItemClassesHidden: - - vertical-tabs__menu-item--hidden dependencies: - claro/global-styling diff --git a/js/claro.vertical-tabs.es6.js b/js/claro.vertical-tabs.es6.js index 523e3ff..01029d8 100644 --- a/js/claro.vertical-tabs.es6.js +++ b/js/claro.vertical-tabs.es6.js @@ -47,17 +47,7 @@ * Attaches behaviors for vertical tabs. */ Drupal.behaviors.claroVerticalTabs = { - attach(context, settings) { - const verticalTabsDefaults = { - paneClasses: ['vertical-tabs__pane'], - paneClassesFirst: ['first'], - paneClassesLast: ['last'], - paneClassesHidden: ['vertical-tab--hidden'], - paneWrapperClasses: ['vertical-tabs__panes'], - menuItemClassesHidden: [], - }; - const verticalTabsSettings = $.extend({}, verticalTabsDefaults, settings.verticalTabs || {}); - + attach(context) { /** * Binds a listener to handle fragment link clicks and URL hash changes. */ @@ -72,7 +62,7 @@ .find('[data-vertical-tabs-panes]') .once('vertical-tabs') .each(function initializeVerticalTabs() { - const $this = $(this).addClass(verticalTabsSettings.paneWrapperClasses.join(' ')); + const $this = $(this).addClass('vertical-tabs__items--processed'); const focusID = $this.find(':hidden.vertical-tabs__active-tab').val(); let tabFocus; @@ -96,7 +86,6 @@ const verticalTab = new Drupal.verticalTab({ title: $that.find('> summary').text(), details: $that, - settings: verticalTabsSettings, }); /* eslint-enable new-cap */ tabList.append(verticalTab.item); @@ -104,7 +93,6 @@ // prop() can't be used on browsers not supporting details // element, the style won't apply to them if prop() is used. .removeAttr('open') - .addClass(verticalTabsSettings.paneClasses.join(' ')) .addClass('js-vertical-tabs-pane') .data('verticalTab', verticalTab); if (this.id === focusID) { @@ -144,8 +132,6 @@ * The name of the tab. * @param {jQuery} settings.details * The jQuery object of the details element that is the tab pane. - * @param {jQuery} settings.settings - * The jQuery object of vertical tab settings. * * @fires event:summaryUpdated * @@ -153,7 +139,6 @@ */ Drupal.verticalTab = function verticalTab(settings) { const self = this; - this.settings = settings.settings; $.extend(this, settings, Drupal.theme('verticalTab', settings)); this.item.addClass('js-vertical-tabs-menu-item'); @@ -274,30 +259,28 @@ tabShow() { // Display the tab. this.item - .removeClass(this.settings.menuItemClassesHidden.join(' ')) + .removeClass('vertical-tabs__menu-item--hidden') .show(); // Show the vertical tabs. this.item.closest('.js-form-type-vertical-tabs').show(); // Display the details element. this.details - .removeClass(this.settings.paneClassesHidden.join(' ')) - .removeClass('js-vertical-tab-hidden') + .removeClass('vertical-tab--hidden js-vertical-tab-hidden') .show(); // Update first and last CSS classes for details. this.details .parent() .children('.js-vertical-tabs-pane') - .removeClass(this.settings.paneClassesFirst.join(' ')) - .removeClass(this.settings.paneClassesLast.join(' ')) + .removeClass('vertical-tabs__item--first vertical-tabs__item--last') .filter(':visible') .eq(0) - .addClass(this.settings.paneClassesFirst.join(' ')); + .addClass('vertical-tabs__item--first'); this.details .parent() .children('.js-vertical-tabs-pane') .filter(':visible') .eq(-1) - .addClass(this.settings.paneClassesLast.join(' ')); + .addClass('vertical-tabs__item--last'); // Make tab active, but without triggering focus. this.focus(false); return this; @@ -312,28 +295,26 @@ tabHide() { // Hide this tab. this.item - .addClass(this.settings.menuItemClassesHidden.join(' ')) + .addClass('vertical-tabs__menu-item--hidden') .hide(); // Hide the details element. this.details - .addClass(this.settings.paneClassesHidden.join(' ')) - .addClass('js-vertical-tab-hidden') + .addClass('vertical-tab--hidden js-vertical-tab-hidden') .hide(); // Update first and last CSS classes for details. this.details .parent() .children('.js-vertical-tabs-pane') - .removeClass(this.settings.paneClassesFirst.join(' ')) - .removeClass(this.settings.paneClassesLast.join(' ')) + .removeClass('vertical-tabs__item--first vertical-tabs__item--last') .filter(':visible') .eq(0) - .addClass(this.settings.paneClassesFirst.join(' ')); + .addClass('vertical-tabs__item--first'); this.details .parent() .children('.js-vertical-tabs-pane') .filter(':visible') .eq(-1) - .addClass(this.settings.paneClassesLast.join(' ')); + .addClass('vertical-tabs__item--last'); // Focus the first visible tab (if there is one). const $firstTab = this.details .siblings('.js-vertical-tabs-pane:not(.js-vertical-tab-hidden)') diff --git a/js/claro.vertical-tabs.js b/js/claro.vertical-tabs.js index 0582a5c..9a21bd3 100644 --- a/js/claro.vertical-tabs.js +++ b/js/claro.vertical-tabs.js @@ -13,21 +13,11 @@ }; Drupal.behaviors.claroVerticalTabs = { - attach: function attach(context, settings) { - var verticalTabsDefaults = { - paneClasses: ['vertical-tabs__pane'], - paneClassesFirst: ['first'], - paneClassesLast: ['last'], - paneClassesHidden: ['vertical-tab--hidden'], - paneWrapperClasses: ['vertical-tabs__panes'], - menuItemClassesHidden: [] - }; - var verticalTabsSettings = $.extend({}, verticalTabsDefaults, settings.verticalTabs || {}); - + attach: function attach(context) { $('body').once('vertical-tabs-fragments').on('formFragmentLinkClickOrHashChange.verticalTabs', handleFragmentLinkClickOrHashChange); $(context).find('[data-vertical-tabs-panes]').once('vertical-tabs').each(function initializeVerticalTabs() { - var $this = $(this).addClass(verticalTabsSettings.paneWrapperClasses.join(' ')); + var $this = $(this).addClass('vertical-tabs__items--processed'); var focusID = $this.find(':hidden.vertical-tabs__active-tab').val(); var tabFocus = void 0; @@ -44,12 +34,11 @@ var verticalTab = new Drupal.verticalTab({ title: $that.find('> summary').text(), - details: $that, - settings: verticalTabsSettings + details: $that }); tabList.append(verticalTab.item); - $that.removeAttr('open').addClass(verticalTabsSettings.paneClasses.join(' ')).addClass('js-vertical-tabs-pane').data('verticalTab', verticalTab); + $that.removeAttr('open').addClass('js-vertical-tabs-pane').data('verticalTab', verticalTab); if (this.id === focusID) { tabFocus = $that; } @@ -72,7 +61,6 @@ Drupal.verticalTab = function verticalTab(settings) { var self = this; - this.settings = settings.settings; $.extend(this, settings, Drupal.theme('verticalTab', settings)); this.item.addClass('js-vertical-tabs-menu-item'); @@ -154,25 +142,25 @@ this.summary.html(summary); }, tabShow: function tabShow() { - this.item.removeClass(this.settings.menuItemClassesHidden.join(' ')).show(); + this.item.removeClass('vertical-tabs__menu-item--hidden').show(); this.item.closest('.js-form-type-vertical-tabs').show(); - this.details.removeClass(this.settings.paneClassesHidden.join(' ')).removeClass('js-vertical-tab-hidden').show(); + this.details.removeClass('vertical-tab--hidden js-vertical-tab-hidden').show(); - this.details.parent().children('.js-vertical-tabs-pane').removeClass(this.settings.paneClassesFirst.join(' ')).removeClass(this.settings.paneClassesLast.join(' ')).filter(':visible').eq(0).addClass(this.settings.paneClassesFirst.join(' ')); - this.details.parent().children('.js-vertical-tabs-pane').filter(':visible').eq(-1).addClass(this.settings.paneClassesLast.join(' ')); + this.details.parent().children('.js-vertical-tabs-pane').removeClass('vertical-tabs__item--first vertical-tabs__item--last').filter(':visible').eq(0).addClass('vertical-tabs__item--first'); + this.details.parent().children('.js-vertical-tabs-pane').filter(':visible').eq(-1).addClass('vertical-tabs__item--last'); this.focus(false); return this; }, tabHide: function tabHide() { - this.item.addClass(this.settings.menuItemClassesHidden.join(' ')).hide(); + this.item.addClass('vertical-tabs__menu-item--hidden').hide(); - this.details.addClass(this.settings.paneClassesHidden.join(' ')).addClass('js-vertical-tab-hidden').hide(); + this.details.addClass('vertical-tab--hidden js-vertical-tab-hidden').hide(); - this.details.parent().children('.js-vertical-tabs-pane').removeClass(this.settings.paneClassesFirst.join(' ')).removeClass(this.settings.paneClassesLast.join(' ')).filter(':visible').eq(0).addClass(this.settings.paneClassesFirst.join(' ')); - this.details.parent().children('.js-vertical-tabs-pane').filter(':visible').eq(-1).addClass(this.settings.paneClassesLast.join(' ')); + this.details.parent().children('.js-vertical-tabs-pane').removeClass('vertical-tabs__item--first vertical-tabs__item--last').filter(':visible').eq(0).addClass('vertical-tabs__item--first'); + this.details.parent().children('.js-vertical-tabs-pane').filter(':visible').eq(-1).addClass('vertical-tabs__item--last'); var $firstTab = this.details.siblings('.js-vertical-tabs-pane:not(.js-vertical-tab-hidden)').eq(0); if ($firstTab.length) {