PageSourceSearch

https://lums.edu.pk/themes/contrib/bootstrap/js/theme.js?tluwap

js lums.edu.pk collected 2026-09-24 09:00:38 UTC 5,248 bytes, 180 lines download raw bytes

1/**
2 * @file
3 * Theme hooks for the Drupal Bootstrap base theme.
4 */
5(function ($, Drupal, Bootstrap, Attributes) {
6
7  /**
8   * Fallback for theming an icon if the Icon API module is not installed.
9   */
10  if (!Drupal.icon) Drupal.icon = { bundles: {} };
11  if (!Drupal.theme.icon || Drupal.theme.prototype.icon) {
12    $.extend(Drupal.theme, /** @lends Drupal.theme */ {
13      /**
14       * Renders an icon.
15       *
16       * @param {string} bundle
17       *   The bundle which the icon belongs to.
18       * @param {string} icon
19       *   The name of the icon to render.
20       * @param {object|Attributes} [attributes]
21       *   An object of attributes to also apply to the icon.
22       *
23       * @returns {string}
24       */
25      icon: function (bundle, icon, attributes) {
26        if (!Drupal.icon.bundles[bundle]) return '';
27        attributes = Attributes.create(attributes).addClass('icon').set('aria-hidden', 'true');
28        icon = Drupal.icon.bundles[bundle](icon, attributes);
29        return '<span' + attributes + '></span>';
30      }
31    });
32  }
33
34  /**
35   * Callback for modifying an icon in the "bootstrap" icon bundle.
36   *
37   * @param {string} icon
38   *   The icon being rendered.
39   * @param {Attributes} attributes
40   *   Attributes object for the icon.
41   */
42  Drupal.icon.bundles.bootstrap = function (icon, attributes) {
43    attributes.addClass(['glyphicon', 'glyphicon-' + icon]);
44  };
45
46  /**
47   * Add necessary theming hooks.
48   */
49  $.extend(Drupal.theme, /** @lends Drupal.theme */ {
50
51    /**
52     * Renders a Bootstrap AJAX glyphicon throbber.
53     *
54     * @returns {string}
55     */
56    ajaxThrobber: function () {
57      return Drupal.theme('bootstrapIcon', 'refresh', {'class': ['ajax-throbber', 'glyphicon-spin'] });
58    },
59
60    /**
61     * Renders a button element.
62     *
63     * @param {object|Attributes} attributes
64     *   An object of attributes to apply to the button. If it contains one of:
65     *   - value: The label of the button.
66     *   - context: The context type of Bootstrap button, can be one of:
67     *     - default
68     *     - primary
69     *     - success
70     *     - info
71     *     - warning
72     *     - danger
73     *     - link
74     *
75     * @returns {string}
76     */
77    button: function (attributes) {
78      attributes = Attributes.create(attributes).addClass('btn');
79      var context = attributes.get('context', 'default');
80      var label = attributes.get('value', '');
81      attributes.remove('context').remove('value');
82      if (!attributes.hasClass(['btn-default', 'btn-primary', 'btn-success', 'btn-info', 'btn-warning', 'btn-danger', 'btn-link'])) {
83        attributes.addClass('btn-' + Bootstrap.checkPlain(context));
84      }
85
86      // Attempt to, intelligently, provide a default button "type".
87      if (!attributes.exists('type')) {
88        attributes.set('type', attributes.hasClass('form-submit') ? 'submit' : 'button');
89      }
90
91      return '<button' + attributes + '>' + label + '</button>';
92    },
93
94    /**
95     * Alias for "button" theme hook.
96     *
97     * @param {object|Attributes} attributes
98     *   An object of attributes to apply to the button.
99     *
100     * @see Drupal.theme.button()
101     *
102     * @returns {string}
103     */
104    btn: function (attributes) {
105      return Drupal.theme('button', attributes);
106    },
107
108    /**
109     * Renders a button block element.
110     *
111     * @param {object|Attributes} attributes
112     *   An object of attributes to apply to the button.
113     *
114     * @see Drupal.theme.button()
115     *
116     * @returns {string}
117     */
118    'btn-block': function (attributes) {
119      return Drupal.theme('button', Attributes.create(attributes).addClass('btn-block'));
120    },
121
122    /**
123     * Renders a large button element.
124     *
125     * @param {object|Attributes} attributes
126     *   An object of attributes to apply to the button.
127     *
128     * @see Drupal.theme.button()
129     *
130     * @returns {string}
131     */
132    'btn-lg': function (attributes) {
133      return Drupal.theme('button', Attributes.create(attributes).addClass('btn-lg'));
134    },
135
136    /**
137     * Renders a small button element.
138     *
139     * @param {object|Attributes} attributes
140     *   An object of attributes to apply to the button.
141     *
142     * @see Drupal.theme.button()
143     *
144     * @returns {string}
145     */
146    'btn-sm': function (attributes) {
147      return Drupal.theme('button', Attributes.create(attributes).addClass('btn-sm'));
148    },
149
150    /**
151     * Renders an extra small button element.
152     *
153     * @param {object|Attributes} attributes
154     *   An object of attributes to apply to the button.
155     *
156     * @see Drupal.theme.button()
157     *
158     * @returns {string}
159     */
160    'btn-xs': function (attributes) {
161      return Drupal.theme('button', Attributes.create(attributes).addClass('btn-xs'));
162    },
163
164    /**
165     * Renders a glyphicon.
166     *
167     * @param {string} name
168     *   The name of the glyphicon.
169     * @param {object|Attributes} [attributes]
170     *   An object of attributes to apply to the icon.
171     *
172     * @returns {string}
173     */
174    bootstrapIcon: function (name, attributes) {
175      return Drupal.theme('icon', 'bootstrap', name, attributes);
176    }
177
178  });
179
180})(window.jQuery, window.Drupal, window.Drupal.bootstrap, window.Attributes);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.