2 * @file Entity_browser.admin.js.
4 * Defines the behavior of the entity browser's tab display.
7 (function ($, Drupal, drupalSettings) {
12 * Registers behaviours related to tab display.
14 Drupal.behaviors.entityBrowserTabs = {
15 attach: function (context) {
16 var $form = $(context).find('.entity-browser-form').once('entity-browser-admin');
21 var $nav = $('<nav class="eb-tabs"></nav>');
22 var $tabs = $(Drupal.theme('entityTabs'));
24 $form.find('.tab').each(function (index, element) {
25 var $element = $(element);
26 var classesArray = [];
27 classesArray.push($element.attr('disabled') ? 'is-active active' : '');
28 var text = $element.text();
29 var textClass = text.toLowerCase().replace(/ /g, '-');
30 classesArray.push(textClass);
31 var classes = classesArray.join(' ');
34 id: $element.attr('id'),
35 title: $(this)[0].value
37 var $tab = $(Drupal.theme('entityTab', tabSettings));
39 // Add a click event handler that submits the hidden input buttons.
40 $tab.find('a').on('click', function (event) {
41 var buttonID = $(event.currentTarget).data().buttonId;
42 $form.find('#' + buttonID).trigger('click');
43 event.preventDefault();
48 $nav.prependTo($form);
49 $form.find('.tab').css('display', 'none');
54 * Theme function for entity browser tabs.
57 * This function returns a jQuery object.
59 Drupal.theme.entityTabs = function () {
60 return $('<ul role="navigation" aria-label="Tabs"></ul>');
64 * Theme function for an entity browser tab.
66 * @param {object} settings
67 * An object with the following keys:
68 * @param {string} settings.title
69 * The name of the tab.
70 * @param {string} settings.class
71 * Classes for the tab.
72 * @param {string} settings.id
73 * ID for the data- button ID.
76 * This function returns a jQuery object.
78 Drupal.theme.entityTab = function (settings) {
79 return $('<li tabindex="-1"></li>')
80 .addClass(settings.class)
81 .append($('<a href="#"></a>').addClass(settings.class).attr('data-button-id', settings.id)
82 .append(settings.title)
86 }(jQuery, Drupal, drupalSettings));