@atlassian/aui 9.3.22 → 9.3.23

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/LICENSE.md +1 -1
  2. package/README.md +7 -9
  3. package/dist/aui/aui-css-deprecations.js.map +1 -1
  4. package/dist/aui/aui-prototyping-browserfocus.css +1 -1
  5. package/dist/aui/aui-prototyping.css +9 -9
  6. package/dist/aui/aui-prototyping.js +2 -2
  7. package/dist/aui/aui-prototyping.js.map +1 -1
  8. package/dist/aui/aui-prototyping.nodeps.css +9 -9
  9. package/dist/aui/aui-prototyping.nodeps.js +2 -2
  10. package/dist/aui/aui-prototyping.nodeps.js.map +1 -1
  11. package/entry/aui.batch.components.js +21 -21
  12. package/entry/aui.batch.page.js +3 -3
  13. package/entry/aui.batch.patterns.js +20 -20
  14. package/entry/aui.batch.prototyping.js +3 -11
  15. package/entry/aui.component.nav.js +1 -1
  16. package/entry/aui.component.progressbar.js +4 -1
  17. package/entry/aui.side-effects.js +2 -2
  18. package/entry/behaviours/aui.behaviour.format.js +1 -1
  19. package/entry/behaviours/aui.behaviour.i18n.js +1 -1
  20. package/entry/behaviours/aui.behaviour.keyboard-shortcuts.js +1 -1
  21. package/entry/behaviours/aui.behaviour.progressive-data-set.js +1 -1
  22. package/entry/behaviours/aui.behaviour.version.js +1 -1
  23. package/entry/deprecated/aui.component.inline-dialog1.js +1 -1
  24. package/package.json +1 -1
  25. package/src/js/aui/alphanum.js +1 -1
  26. package/src/js/aui/banner.js +2 -2
  27. package/src/js/aui/blanket.js +7 -11
  28. package/src/js/aui/button.js +5 -5
  29. package/src/js/aui/checkbox-multiselect.js +79 -76
  30. package/src/js/aui/clone.js +1 -1
  31. package/src/js/aui/close-button.js +2 -6
  32. package/src/js/aui/contain-dropdown.js +5 -5
  33. package/src/js/aui/contains.js +1 -1
  34. package/src/js/aui/cookie.js +12 -16
  35. package/src/js/aui/date-picker.js +84 -69
  36. package/src/js/aui/debounce.js +5 -8
  37. package/src/js/aui/dialog.js +206 -172
  38. package/src/js/aui/dialog2.js +9 -8
  39. package/src/js/aui/dropdown2.js +211 -181
  40. package/src/js/aui/escape-html.js +2 -2
  41. package/src/js/aui/escape.js +1 -1
  42. package/src/js/aui/event.js +4 -8
  43. package/src/js/aui/expander.js +9 -7
  44. package/src/js/aui/flag.js +15 -17
  45. package/src/js/aui/focus-manager.js +19 -18
  46. package/src/js/aui/form-notification.js +14 -13
  47. package/src/js/aui/form-validation/basic-validators.js +39 -30
  48. package/src/js/aui/form-validation/validator-register.js +9 -5
  49. package/src/js/aui/form-validation.js +17 -14
  50. package/src/js/aui/format.js +9 -6
  51. package/src/js/aui/forms/create-forms-component-body.js +6 -9
  52. package/src/js/aui/forms/custom-checkbox.js +2 -6
  53. package/src/js/aui/forms/custom-radio.js +2 -6
  54. package/src/js/aui/forms.js +4 -8
  55. package/src/js/aui/header-async.js +1 -1
  56. package/src/js/aui/header.js +2 -2
  57. package/src/js/aui/i18n.js +2 -5
  58. package/src/js/aui/index-of.js +1 -1
  59. package/src/js/aui/inline-dialog.js +171 -117
  60. package/src/js/aui/inline-dialog2.js +60 -50
  61. package/src/js/aui/internal/add-id.js +1 -1
  62. package/src/js/aui/internal/alignment.js +57 -49
  63. package/src/js/aui/internal/amdify.js +0 -1
  64. package/src/js/aui/internal/animation.js +2 -5
  65. package/src/js/aui/internal/attributes.js +2 -3
  66. package/src/js/aui/internal/browser.js +5 -6
  67. package/src/js/aui/internal/constants.js +1 -3
  68. package/src/js/aui/internal/deduplicateIDs.js +8 -7
  69. package/src/js/aui/internal/deprecation/deprecated-adg2-icons.js +132 -132
  70. package/src/js/aui/internal/deprecation.js +53 -31
  71. package/src/js/aui/internal/detect-children-change.js +3 -2
  72. package/src/js/aui/internal/elements.js +2 -5
  73. package/src/js/aui/internal/enforcer.js +11 -13
  74. package/src/js/aui/internal/globalize.js +3 -3
  75. package/src/js/aui/internal/has-touch.js +1 -2
  76. package/src/js/aui/internal/header/create-header.js +54 -28
  77. package/src/js/aui/internal/i18n/aui.js +8 -5
  78. package/src/js/aui/internal/i18n/aui_af.js +31 -31
  79. package/src/js/aui/internal/i18n/aui_ar.js +31 -31
  80. package/src/js/aui/internal/i18n/aui_ar_DZ.js +31 -31
  81. package/src/js/aui/internal/i18n/aui_az.js +31 -31
  82. package/src/js/aui/internal/i18n/aui_bg.js +31 -31
  83. package/src/js/aui/internal/i18n/aui_bs.js +31 -31
  84. package/src/js/aui/internal/i18n/aui_ca.js +31 -31
  85. package/src/js/aui/internal/i18n/aui_cs.js +31 -31
  86. package/src/js/aui/internal/i18n/aui_da.js +31 -31
  87. package/src/js/aui/internal/i18n/aui_de.js +31 -31
  88. package/src/js/aui/internal/i18n/aui_el.js +31 -31
  89. package/src/js/aui/internal/i18n/aui_en_AU.js +31 -31
  90. package/src/js/aui/internal/i18n/aui_en_GB.js +31 -31
  91. package/src/js/aui/internal/i18n/aui_en_NZ.js +31 -31
  92. package/src/js/aui/internal/i18n/aui_eo.js +31 -31
  93. package/src/js/aui/internal/i18n/aui_es.js +31 -31
  94. package/src/js/aui/internal/i18n/aui_et.js +31 -31
  95. package/src/js/aui/internal/i18n/aui_eu.js +31 -31
  96. package/src/js/aui/internal/i18n/aui_fa.js +31 -31
  97. package/src/js/aui/internal/i18n/aui_fi.js +31 -31
  98. package/src/js/aui/internal/i18n/aui_fo.js +31 -31
  99. package/src/js/aui/internal/i18n/aui_fr.js +31 -31
  100. package/src/js/aui/internal/i18n/aui_fr_CH.js +31 -31
  101. package/src/js/aui/internal/i18n/aui_gl.js +31 -31
  102. package/src/js/aui/internal/i18n/aui_he.js +31 -31
  103. package/src/js/aui/internal/i18n/aui_hr.js +31 -31
  104. package/src/js/aui/internal/i18n/aui_hu.js +31 -31
  105. package/src/js/aui/internal/i18n/aui_hy.js +31 -31
  106. package/src/js/aui/internal/i18n/aui_id.js +31 -31
  107. package/src/js/aui/internal/i18n/aui_is.js +31 -31
  108. package/src/js/aui/internal/i18n/aui_it.js +31 -31
  109. package/src/js/aui/internal/i18n/aui_ja.js +31 -31
  110. package/src/js/aui/internal/i18n/aui_ko.js +31 -31
  111. package/src/js/aui/internal/i18n/aui_kz.js +31 -31
  112. package/src/js/aui/internal/i18n/aui_lt.js +31 -31
  113. package/src/js/aui/internal/i18n/aui_lv.js +31 -31
  114. package/src/js/aui/internal/i18n/aui_ml.js +31 -31
  115. package/src/js/aui/internal/i18n/aui_ms.js +31 -31
  116. package/src/js/aui/internal/i18n/aui_nl.js +31 -31
  117. package/src/js/aui/internal/i18n/aui_no.js +31 -31
  118. package/src/js/aui/internal/i18n/aui_pl.js +31 -31
  119. package/src/js/aui/internal/i18n/aui_pt.js +31 -31
  120. package/src/js/aui/internal/i18n/aui_pt_BR.js +31 -31
  121. package/src/js/aui/internal/i18n/aui_rm.js +31 -31
  122. package/src/js/aui/internal/i18n/aui_ro.js +31 -31
  123. package/src/js/aui/internal/i18n/aui_ru.js +31 -31
  124. package/src/js/aui/internal/i18n/aui_sk.js +31 -31
  125. package/src/js/aui/internal/i18n/aui_sl.js +31 -31
  126. package/src/js/aui/internal/i18n/aui_sq.js +31 -31
  127. package/src/js/aui/internal/i18n/aui_sr.js +31 -31
  128. package/src/js/aui/internal/i18n/aui_sr_SR.js +31 -31
  129. package/src/js/aui/internal/i18n/aui_sv.js +31 -31
  130. package/src/js/aui/internal/i18n/aui_ta.js +31 -31
  131. package/src/js/aui/internal/i18n/aui_th.js +31 -31
  132. package/src/js/aui/internal/i18n/aui_tj.js +31 -31
  133. package/src/js/aui/internal/i18n/aui_tr.js +31 -31
  134. package/src/js/aui/internal/i18n/aui_uk.js +31 -31
  135. package/src/js/aui/internal/i18n/aui_vi.js +31 -31
  136. package/src/js/aui/internal/i18n/aui_zh_CN.js +31 -31
  137. package/src/js/aui/internal/i18n/aui_zh_HK.js +31 -31
  138. package/src/js/aui/internal/i18n/aui_zh_TW.js +31 -31
  139. package/src/js/aui/internal/log.js +2 -6
  140. package/src/js/aui/internal/mediaQuery.js +2 -3
  141. package/src/js/aui/internal/select/option.js +3 -3
  142. package/src/js/aui/internal/select/suggestion-model.js +1 -1
  143. package/src/js/aui/internal/select/suggestions-model.js +4 -5
  144. package/src/js/aui/internal/select/suggestions-view.js +17 -12
  145. package/src/js/aui/internal/state.js +2 -3
  146. package/src/js/aui/is-clipped.js +2 -2
  147. package/src/js/aui/key-code.js +1 -1
  148. package/src/js/aui/label.js +6 -6
  149. package/src/js/aui/layer.js +100 -98
  150. package/src/js/aui/messages.js +51 -38
  151. package/src/js/aui/navigation.js +7 -9
  152. package/src/js/aui/on-text-resize.js +7 -5
  153. package/src/js/aui/params.js +11 -8
  154. package/src/js/aui/polyfills/custom-event.js +7 -7
  155. package/src/js/aui/polyfills/placeholder.js +4 -4
  156. package/src/js/aui/populate-parameters.js +4 -4
  157. package/src/js/aui/progress-indicator.js +35 -27
  158. package/src/js/aui/progressive-data-set.js +13 -8
  159. package/src/js/aui/query-input.js +1 -1
  160. package/src/js/aui/restful-table/class-names.js +1 -1
  161. package/src/js/aui/restful-table/data-keys.js +1 -1
  162. package/src/js/aui/restful-table/edit-row.js +63 -63
  163. package/src/js/aui/restful-table/entry-model.js +6 -13
  164. package/src/js/aui/restful-table/event-handlers.js +4 -8
  165. package/src/js/aui/restful-table/event-names.js +1 -1
  166. package/src/js/aui/restful-table/row.js +41 -23
  167. package/src/js/aui/restful-table.js +101 -72
  168. package/src/js/aui/result-set.js +5 -5
  169. package/src/js/aui/results-list.js +3 -3
  170. package/src/js/aui/select.js +65 -49
  171. package/src/js/aui/select2.js +14 -6
  172. package/src/js/aui/sidebar.js +81 -51
  173. package/src/js/aui/spin.js +61 -49
  174. package/src/js/aui/spinner.js +11 -12
  175. package/src/js/aui/tables-sortable.js +21 -10
  176. package/src/js/aui/tabs.js +108 -77
  177. package/src/js/aui/to-init.js +1 -1
  178. package/src/js/aui/toggle.js +55 -43
  179. package/src/js/aui/tooltip.js +32 -31
  180. package/src/js/aui/trigger.js +20 -18
  181. package/src/js/aui/truncating-progressive-data-set.js +1 -1
  182. package/src/js/aui/unbind-text-resize.js +1 -1
  183. package/src/js/aui/unique-id.js +1 -1
  184. package/src/js/aui/when-i-type.js +66 -39
  185. package/src/js/aui-css-deprecations.js +50 -50
  186. package/src/js/jquery/jquery.hotkeys.js +124 -49
  187. package/src/js/jquery/jquery.moveto.js +18 -12
  188. package/src/less/adg-fancy-file-input.less +2 -3
  189. package/src/less/adg-header-quicksearch.less +4 -1
  190. package/src/less/adg-iconfont.less +242 -242
  191. package/src/less/adgs-icons.less +262 -262
  192. package/src/less/aui-appheader.less +10 -6
  193. package/src/less/aui-buttons.less +6 -5
  194. package/src/less/aui-date-picker.less +9 -6
  195. package/src/less/aui-experimental-expander.less +8 -8
  196. package/src/less/aui-experimental-labels.less +4 -3
  197. package/src/less/aui-experimental-progress-indicator.less +10 -4
  198. package/src/less/aui-experimental-progress-tracker.less +9 -6
  199. package/src/less/aui-experimental-restfultable.less +11 -3
  200. package/src/less/aui-experimental-tables-sortable.less +5 -3
  201. package/src/less/aui-experimental-tooltip.less +1 -1
  202. package/src/less/aui-link.less +0 -1
  203. package/src/less/aui-lozenge.less +6 -3
  204. package/src/less/aui-navigation.less +13 -13
  205. package/src/less/aui-page-layout.less +3 -4
  206. package/src/less/aui-page-typography.less +8 -3
  207. package/src/less/aui-reset.less +22 -6
  208. package/src/less/aui-select2.less +11 -8
  209. package/src/less/aui-sidebar-badges.less +1 -2
  210. package/src/less/aui-sidebar-config.less +7 -2
  211. package/src/less/aui-sidebar-grouping.less +16 -6
  212. package/src/less/aui-sidebar-navigation.less +7 -5
  213. package/src/less/aui-sidebar-skeleton.less +4 -3
  214. package/src/less/aui-skip-link.less +2 -1
  215. package/src/less/aui-spinner.less +2 -2
  216. package/src/less/aui-toggle.less +2 -2
  217. package/src/less/aui-toolbar2.less +1 -1
  218. package/src/less/checkbox-multiselect.less +13 -13
  219. package/src/less/dialog.less +3 -3
  220. package/src/less/dialog2.less +12 -11
  221. package/src/less/dropdown2-temp.css +4 -4
  222. package/src/less/dropdown2.less +3 -3
  223. package/src/less/form-notification.less +10 -6
  224. package/src/less/forms-current.less +6 -5
  225. package/src/less/forms-legacy.less +4 -2
  226. package/src/less/forms-radios-and-checkboxes.less +9 -11
  227. package/src/less/forms.less +2 -4
  228. package/src/less/iconfont-mixin.less +7 -4
  229. package/src/less/imports/aui-theme/adg/adg-colors.less +40 -40
  230. package/src/less/imports/aui-theme/adg/adg-neutral-dark.less +20 -20
  231. package/src/less/imports/aui-theme/adg/adg-neutral-light.less +20 -20
  232. package/src/less/imports/aui-theme/components/buttons.less +5 -1
  233. package/src/less/imports/aui-theme/components/dropdown.less +3 -1
  234. package/src/less/imports/aui-theme/components/form-notification.less +2 -1
  235. package/src/less/imports/aui-theme/components/forms.less +16 -1
  236. package/src/less/imports/aui-theme/components/inline-dialog2.less +1 -1
  237. package/src/less/imports/aui-theme/components/navigation.less +3 -3
  238. package/src/less/imports/aui-theme/components/progress-tracker.less +6 -2
  239. package/src/less/imports/aui-theme/components/tables.less +3 -2
  240. package/src/less/imports/aui-theme/components/toggle.less +8 -3
  241. package/src/less/imports/aui-theme/core/colors.less +12 -4
  242. package/src/less/imports/aui-theme/core/icons.less +22 -22
  243. package/src/less/imports/aui-theme/core/text.less +6 -3
  244. package/src/less/imports/mixins/dropdown2-trigger-chevron-icon.less +0 -1
  245. package/src/less/imports/mixins/focus.less +12 -4
  246. package/src/less/imports/mixins/media-queries.less +2 -2
  247. package/src/less/imports/mixins/shadows.less +3 -1
  248. package/src/less/imports/mixins/tab-indicator.less +2 -2
  249. package/src/less/imports/mixins.less +11 -4
  250. package/src/less/inline-dialog.less +21 -19
  251. package/src/less/layer.less +0 -2
  252. package/src/less/messages.less +2 -1
  253. package/src/less/single-select.less +14 -9
  254. package/src/less/tables.less +3 -2
  255. package/src/less/tabs.less +4 -3
@@ -10,9 +10,10 @@ import skate from './internal/skate';
10
10
  var template = window.skateTemplateHtml;
11
11
 
12
12
  var STORAGE_PREFIX = '_internal-aui-tabs-';
13
- var RESPONSIVE_OPT_IN_SELECTOR = '.aui-tabs.horizontal-tabs[data-aui-responsive]:not([data-aui-responsive="false"]), aui-tabs[responsive]:not([responsive="false"])';
13
+ var RESPONSIVE_OPT_IN_SELECTOR =
14
+ '.aui-tabs.horizontal-tabs[data-aui-responsive]:not([data-aui-responsive="false"]), aui-tabs[responsive]:not([responsive="false"])';
14
15
 
15
- function getPaneIdFromTabLink (el) {
16
+ function getPaneIdFromTabLink(el) {
16
17
  let $el = $(el);
17
18
  let maybeId = String($el.attr('href') || '').trim();
18
19
  return maybeId.indexOf('#') === 0 ? maybeId.substr(1) : null;
@@ -23,17 +24,20 @@ function getPaneIdFromTabLink (el) {
23
24
  * @param {HTMLElement} el a tab link element with an href attribute pointing to a tab panel
24
25
  * @returns {HTMLElement|null} the element with matching ID if it exists, otherwise null
25
26
  */
26
- function getPaneFromTabLink (el) {
27
+ function getPaneFromTabLink(el) {
27
28
  let maybeId = getPaneIdFromTabLink(el);
28
29
  return maybeId ? document.getElementById(maybeId) : null;
29
30
  }
30
31
 
31
- function enhanceTabLink (link) {
32
+ function enhanceTabLink(link) {
32
33
  var $thisLink = $(link);
33
34
  var targetPane = getPaneFromTabLink($thisLink);
34
35
 
35
36
  if (!getPaneIdFromTabLink(link)) {
36
- logger.error('A tab link must use an anchor link (e.g., <a href="#a-valid-id"></a>) to work correctly.', link);
37
+ logger.error(
38
+ 'A tab link must use an anchor link (e.g., <a href="#a-valid-id"></a>) to work correctly.',
39
+ link
40
+ );
37
41
  }
38
42
 
39
43
  if (targetPane) {
@@ -47,8 +51,11 @@ function enhanceTabLink (link) {
47
51
  $thisLink.attr('aria-selected', 'false');
48
52
  }
49
53
  } else {
50
- logger.warn('A tab panel could not be found with the tab link\'s configured href.' +
51
- ' Check whether the tab link href is correct.', link);
54
+ logger.warn(
55
+ "A tab panel could not be found with the tab link's configured href." +
56
+ ' Check whether the tab link href is correct.',
57
+ link
58
+ );
52
59
  }
53
60
  }
54
61
 
@@ -93,7 +100,10 @@ var ResponsiveAdapter = {
93
100
  },
94
101
 
95
102
  createResponsiveDropdown: function ($tabsContainer, id) {
96
- var dropdownMarkup = '<div class="aui-dropdown2 aui-tabs-responsive-dropdown" id="aui-tabs-responsive-dropdown-' + id + '">' +
103
+ var dropdownMarkup =
104
+ '<div class="aui-dropdown2 aui-tabs-responsive-dropdown" id="aui-tabs-responsive-dropdown-' +
105
+ id +
106
+ '">' +
97
107
  '<ul>' +
98
108
  '</ul>' +
99
109
  '</div>';
@@ -109,7 +119,12 @@ var ResponsiveAdapter = {
109
119
 
110
120
  var currentTotalTabWidth = 0;
111
121
 
112
- for (var i = 0; hasMoreSpace(currentTotalTabWidth, dropdownTriggerTabWidth, parentWidth) && i < tabs.length; i++) {
122
+ for (
123
+ var i = 0;
124
+ hasMoreSpace(currentTotalTabWidth, dropdownTriggerTabWidth, parentWidth) &&
125
+ i < tabs.length;
126
+ i++
127
+ ) {
113
128
  var $tab = $(tabs[i]);
114
129
  var tabWidth = $tab.outerWidth(true);
115
130
  currentTotalTabWidth += tabWidth;
@@ -122,7 +137,11 @@ var ResponsiveAdapter = {
122
137
  moveVisibleTabs: function (oldVisibleTabs, $tabsParent, $dropdownTriggerTab) {
123
138
  var dropdownId = $dropdownTriggerTab.find('a').attr('aria-controls');
124
139
  var $dropdown = $('#' + dropdownId);
125
- var newVisibleTabs = this.findNewVisibleTabs(oldVisibleTabs, $tabsParent.outerWidth(), $dropdownTriggerTab.parent().outerWidth(true));
140
+ var newVisibleTabs = this.findNewVisibleTabs(
141
+ oldVisibleTabs,
142
+ $tabsParent.outerWidth(),
143
+ $dropdownTriggerTab.parent().outerWidth(true)
144
+ );
126
145
  var lastTabIndex = newVisibleTabs.length - 1;
127
146
 
128
147
  for (var j = oldVisibleTabs.length - 1; j >= lastTabIndex; j--) {
@@ -168,14 +187,16 @@ var ResponsiveAdapter = {
168
187
  moveTabOutOfDropdown: function ($tab, $dropdownTriggerTab) {
169
188
  var isTabInDropdownActive = $tab.find('a').hasClass('aui-dropdown2-checked');
170
189
 
171
- if (isTabInDropdownActive){
190
+ if (isTabInDropdownActive) {
172
191
  $tab.addClass('active-tab');
173
192
  $dropdownTriggerTab.removeClass('active-tab');
174
193
  }
175
194
 
176
- $tab.children('a').removeClass('aui-dropdown2-radio aui-tabs-responsive-item aui-dropdown2-checked');
195
+ $tab.children('a').removeClass(
196
+ 'aui-dropdown2-radio aui-tabs-responsive-item aui-dropdown2-checked'
197
+ );
177
198
  $dropdownTriggerTab.before($tab);
178
- }
199
+ },
179
200
  };
180
201
 
181
202
  // this function is run by jquery .each() where 'this' is the current tabs container
@@ -185,7 +206,7 @@ function calculateResponsiveTabs(tabsContainer, index) {
185
206
  var $visibleTabs = $tabsMenu.find('li:not(.aui-tabs-responsive-trigger-item)');
186
207
  var $dropdownTriggerTab = $tabsMenu.find('.aui-tabs-responsive-trigger').parent();
187
208
  var $dropdownTrigger = $dropdownTriggerTab.find('a');
188
- var dropdownId = $dropdownTrigger.attr('aria-controls');
209
+ var dropdownId = $dropdownTrigger.attr('aria-controls');
189
210
  var $dropdown = $(document.getElementById(dropdownId)).attr('aria-checked', false);
190
211
  var isResponsive = $dropdown.length > 0;
191
212
  var totalTabsWidth = ResponsiveAdapter.totalTabsWidth($visibleTabs, $dropdown);
@@ -203,14 +224,23 @@ function calculateResponsiveTabs(tabsContainer, index) {
203
224
  $dropdown.attr('id', 'aui-tabs-responsive-dropdown-' + index);
204
225
 
205
226
  if (needsResponsive) {
206
- var $newVisibleTabs = ResponsiveAdapter.moveVisibleTabs($visibleTabs.toArray(), $tabsContainer, $dropdownTriggerTab);
227
+ var $newVisibleTabs = ResponsiveAdapter.moveVisibleTabs(
228
+ $visibleTabs.toArray(),
229
+ $tabsContainer,
230
+ $dropdownTriggerTab
231
+ );
207
232
  var visibleTabWidth = ResponsiveAdapter.totalVisibleTabWidth($newVisibleTabs);
208
- var remainingSpace = $tabsContainer.outerWidth() - visibleTabWidth - $dropdownTriggerTab.outerWidth(true);
233
+ var remainingSpace =
234
+ $tabsContainer.outerWidth() - visibleTabWidth - $dropdownTriggerTab.outerWidth(true);
209
235
  var hasSpace = remainingSpace > 0;
210
236
 
211
237
  if (hasSpace) {
212
238
  var $tabsInDropdown = $dropdown.find('li');
213
- ResponsiveAdapter.moveInvisibleTabs($tabsInDropdown.toArray(), remainingSpace, $dropdownTriggerTab);
239
+ ResponsiveAdapter.moveInvisibleTabs(
240
+ $tabsInDropdown.toArray(),
241
+ remainingSpace,
242
+ $dropdownTriggerTab
243
+ );
214
244
  }
215
245
 
216
246
  if (!$tabsContainer.hasClass('aui-tabs-disabled')) {
@@ -234,7 +264,7 @@ function calculateResponsiveTabs(tabsContainer, index) {
234
264
  }
235
265
  }
236
266
 
237
- function switchToTab (tab) {
267
+ function switchToTab(tab) {
238
268
  var $tab = $(tab);
239
269
 
240
270
  // This probably isn't needed anymore. Remove once confirmed.
@@ -244,17 +274,17 @@ function switchToTab (tab) {
244
274
 
245
275
  var pane = getPaneFromTabLink($tab);
246
276
  if (!pane) {
247
- logger.error('Cannot switch to tab panel because it does not exist.' +
248
- ' Check whether the tab link href is correct.', tab);
277
+ logger.error(
278
+ 'Cannot switch to tab panel because it does not exist.' +
279
+ ' Check whether the tab link href is correct.',
280
+ tab
281
+ );
249
282
  return;
250
283
  }
251
284
 
252
285
  var $pane = $(pane);
253
286
 
254
- $pane
255
- .addClass('active-pane')
256
- .siblings('.tabs-pane')
257
- .removeClass('active-pane')
287
+ $pane.addClass('active-pane').siblings('.tabs-pane').removeClass('active-pane');
258
288
 
259
289
  var $dropdownTriggerTab = $tab.parents('.aui-tabs').find('.aui-tabs-responsive-trigger-item a');
260
290
  var dropdownId = $dropdownTriggerTab.attr('aria-controls');
@@ -263,41 +293,52 @@ function switchToTab (tab) {
263
293
  $dropdown.find('li a').attr('aria-checked', false).removeClass('checked aui-dropdown2-checked');
264
294
  $dropdown.find('li').removeClass('active-tab');
265
295
 
266
- $tab
267
- .parent('li.menu-item')
296
+ $tab.parent('li.menu-item')
268
297
  .addClass('active-tab')
269
298
  .siblings('.menu-item')
270
299
  .removeClass('active-tab');
271
300
 
272
301
  if ($tab.hasClass('aui-tabs-responsive-item')) {
273
- var $visibleTabs = $pane.parent('.aui-tabs').find('li.menu-item:not(.aui-tabs-responsive-trigger-item)');
302
+ var $visibleTabs = $pane
303
+ .parent('.aui-tabs')
304
+ .find('li.menu-item:not(.aui-tabs-responsive-trigger-item)');
274
305
 
275
306
  $visibleTabs.removeClass('active-tab');
276
307
  $visibleTabs.find('a').removeClass('checked').removeAttr('aria-checked');
277
308
  }
278
309
 
279
310
  if ($tab.hasClass('aui-tabs-responsive-item')) {
280
- $pane.parent('.aui-tabs').find('li.menu-item.aui-tabs-responsive-trigger-item').addClass('active-tab');
311
+ $pane
312
+ .parent('.aui-tabs')
313
+ .find('li.menu-item.aui-tabs-responsive-trigger-item')
314
+ .addClass('active-tab');
281
315
  }
282
316
 
283
317
  $tab.closest('.tabs-menu').find('a').attr('aria-selected', 'false');
284
318
  $tab.attr('aria-selected', 'true');
285
319
  $tab.trigger('tabSelect', {
286
320
  tab: $tab,
287
- pane: $pane
321
+ pane: $pane,
288
322
  });
289
323
  }
290
324
 
291
325
  function isPersistentTabGroup($tabGroup) {
292
326
  // Tab group persistent attribute exists and is not false
293
- return $tabGroup.attr('data-aui-persist') !== undefined && $tabGroup.attr('data-aui-persist') !== 'false';
327
+ return (
328
+ $tabGroup.attr('data-aui-persist') !== undefined &&
329
+ $tabGroup.attr('data-aui-persist') !== 'false'
330
+ );
294
331
  }
295
332
 
296
333
  function createPersistentKey($tabGroup) {
297
334
  var tabGroupId = $tabGroup.attr('id');
298
335
  var value = $tabGroup.attr('data-aui-persist');
299
336
 
300
- return STORAGE_PREFIX + (tabGroupId ? tabGroupId : '') + (value && value !== 'true' ? '-' + value : '');
337
+ return (
338
+ STORAGE_PREFIX +
339
+ (tabGroupId ? tabGroupId : '') +
340
+ (value && value !== 'true' ? '-' + value : '')
341
+ );
301
342
  }
302
343
 
303
344
  /* eslint max-depth: 1 */
@@ -321,13 +362,15 @@ function updateTabsFromLocalStorage($tabGroups) {
321
362
  }
322
363
  }
323
364
  } else {
324
- logger.warn('A tab group must specify an id attribute if it specifies data-aui-persist.');
365
+ logger.warn(
366
+ 'A tab group must specify an id attribute if it specifies data-aui-persist.'
367
+ );
325
368
  }
326
369
  }
327
370
  }
328
371
  }
329
372
 
330
- function updateLocalStorageEntry ($tab) {
373
+ function updateLocalStorageEntry($tab) {
331
374
  var $tabGroup = $tab.closest('.aui-tabs');
332
375
  var tabGroupId = $tabGroup.attr('id');
333
376
 
@@ -335,14 +378,14 @@ function updateLocalStorageEntry ($tab) {
335
378
  var tabId = getPaneIdFromTabLink($tab);
336
379
 
337
380
  if (tabId) {
338
- window.localStorage.setItem(createPersistentKey($tabGroup),'#' + tabId);
381
+ window.localStorage.setItem(createPersistentKey($tabGroup), '#' + tabId);
339
382
  }
340
383
  } else {
341
384
  logger.warn('A tab group must specify an id attribute if it specifies data-aui-persist.');
342
385
  }
343
386
  }
344
387
 
345
- function handleTabClick (e) {
388
+ function handleTabClick(e) {
346
389
  tabs.change($(e.target).closest('a'));
347
390
 
348
391
  if (e) {
@@ -350,31 +393,30 @@ function handleTabClick (e) {
350
393
  }
351
394
  }
352
395
 
353
- function responsiveResizeHandler (tabs) {
396
+ function responsiveResizeHandler(tabs) {
354
397
  tabs.forEach(function (tab, index) {
355
398
  calculateResponsiveTabs(tab, index);
356
399
  });
357
400
  }
358
401
 
359
-
360
402
  // Initialisation
361
403
  // --------------
362
404
 
363
- function getTabs () {
405
+ function getTabs() {
364
406
  return $('.aui-tabs:not(.aui-tabs-disabled)');
365
407
  }
366
408
 
367
- function getResponsiveTabs () {
409
+ function getResponsiveTabs() {
368
410
  return $(RESPONSIVE_OPT_IN_SELECTOR).toArray();
369
411
  }
370
412
 
371
- function initWindow () {
413
+ function initWindow() {
372
414
  const handler = debounce(responsiveResizeHandler, 200);
373
415
  handler(getResponsiveTabs());
374
416
  $(window).on('resize.aui-tabs', () => handler(getResponsiveTabs()));
375
417
  }
376
418
 
377
- function initTab (tab) {
419
+ function initTab(tab) {
378
420
  var $tab = $(tab);
379
421
 
380
422
  tab.setAttribute('role', 'application');
@@ -399,7 +441,7 @@ function initTab (tab) {
399
441
  }
400
442
  }
401
443
 
402
- function initTabs () {
444
+ function initTabs() {
403
445
  var tabs = getTabs();
404
446
 
405
447
  tabs.each(function () {
@@ -409,27 +451,29 @@ function initTabs () {
409
451
  updateTabsFromLocalStorage(tabs);
410
452
  }
411
453
 
412
- function initPane (pane) {
454
+ function initPane(pane) {
413
455
  pane.setAttribute('role', 'tabpanel');
414
456
  }
415
457
 
416
- function initPanes (tab) {
458
+ function initPanes(tab) {
417
459
  [].slice.call(tab.querySelectorAll('.tabs-pane')).forEach(initPane);
418
460
  }
419
461
 
420
- function initVerticalTabs () {
462
+ function initVerticalTabs() {
421
463
  // Vertical tab truncation setup (adds title if clipped)
422
- $('.aui-tabs.vertical-tabs').find('a').each(function () {
423
- var thisTab = $(this);
424
-
425
- // don't override existing titles
426
- if (!thisTab.attr('title')) {
427
- // if text has been truncated, add title
428
- if (isClipped(thisTab)) {
429
- thisTab.attr('title', thisTab.text());
464
+ $('.aui-tabs.vertical-tabs')
465
+ .find('a')
466
+ .each(function () {
467
+ var thisTab = $(this);
468
+
469
+ // don't override existing titles
470
+ if (!thisTab.attr('title')) {
471
+ // if text has been truncated, add title
472
+ if (isClipped(thisTab)) {
473
+ thisTab.attr('title', thisTab.text());
474
+ }
430
475
  }
431
- }
432
- });
476
+ });
433
477
  }
434
478
 
435
479
  var tabs = {
@@ -449,24 +493,23 @@ var tabs = {
449
493
  if (isPersistentTabGroup($tabGroup) && window.localStorage) {
450
494
  updateLocalStorageEntry($a);
451
495
  }
452
- }
496
+ },
453
497
  };
454
498
 
455
499
  $(tabs.setup);
456
500
 
457
-
458
501
  // Web Components
459
502
  // --------------
460
503
 
461
- function findComponent (element) {
504
+ function findComponent(element) {
462
505
  return $(element).closest('aui-tabs').get(0);
463
506
  }
464
507
 
465
- function findPanes (tabs) {
508
+ function findPanes(tabs) {
466
509
  return tabs.querySelectorAll('aui-tabs-pane');
467
510
  }
468
511
 
469
- function findTabs (tabs) {
512
+ function findTabs(tabs) {
470
513
  return tabs.querySelectorAll('li[is=aui-tabs-tab]');
471
514
  }
472
515
 
@@ -497,8 +540,8 @@ const TabContainerEl = skate('aui-tabs', {
497
540
  }
498
541
 
499
542
  return this;
500
- }
501
- }
543
+ },
544
+ },
502
545
  });
503
546
 
504
547
  const TabItemEl = skate('aui-tabs-tab', {
@@ -506,13 +549,7 @@ const TabItemEl = skate('aui-tabs-tab', {
506
549
  created: function (element) {
507
550
  $(element).addClass('menu-item');
508
551
  },
509
- template: template(
510
- '<a href="#">',
511
- '<strong>',
512
- '<content></content>',
513
- '</strong>',
514
- '</a>'
515
- )
552
+ template: template('<a href="#">', '<strong>', '<content></content>', '</strong>', '</a>'),
516
553
  });
517
554
 
518
555
  const TabPaneEl = skate('aui-tabs-pane', {
@@ -537,16 +574,10 @@ const TabPaneEl = skate('aui-tabs-pane', {
537
574
 
538
575
  $element.siblings('ul').append(tab);
539
576
  },
540
- template: template(
541
- '<content></content>'
542
- )
577
+ template: template('<content></content>'),
543
578
  });
544
579
 
545
580
  globalize('tabs', tabs);
546
581
 
547
582
  export default tabs;
548
- export {
549
- TabContainerEl,
550
- TabPaneEl,
551
- TabItemEl
552
- };
583
+ export { TabContainerEl, TabPaneEl, TabItemEl };
@@ -12,7 +12,7 @@ import globalize from './internal/globalize';
12
12
  *
13
13
  * @return {Object}
14
14
  */
15
- function toInit (func) {
15
+ function toInit(func) {
16
16
  $.when($.ready).then(function () {
17
17
  // Ensure that every function passed through toInit happens asynchronously after DomContentLoaded events,
18
18
  // and will be executed in its own stack, meaning that the UI can be updated in-between expensive handlers.
@@ -9,8 +9,8 @@ import skateTemplateHtml from 'skatejs-template-html';
9
9
  import skate from './internal/skate';
10
10
  import { INPUT_SUFFIX } from './internal/constants';
11
11
  import CustomEvent from './polyfills/custom-event';
12
- import SpinnerEl, {SIZE} from './spinner';
13
- import { I18n } from './i18n'
12
+ import SpinnerEl, { SIZE } from './spinner';
13
+ import { I18n } from './i18n';
14
14
 
15
15
  function fireChangeEvent(element) {
16
16
  if (element._canFireEventsNow) {
@@ -18,11 +18,11 @@ function fireChangeEvent(element) {
18
18
  }
19
19
  }
20
20
 
21
- function getInput (element) {
21
+ function getInput(element) {
22
22
  return element._input || (element._input = element.querySelector('input'));
23
23
  }
24
24
 
25
- function getSpinner (element) {
25
+ function getSpinner(element) {
26
26
  return element._spinner || (element._spinner = new SpinnerEl());
27
27
  }
28
28
 
@@ -34,10 +34,10 @@ function fallbackAttributeHandler(attributeName, element, change) {
34
34
  getInput(element).setAttribute(attributeName, change.newValue);
35
35
  }
36
36
 
37
- function getAttributeHandler (attributeName) {
37
+ function getAttributeHandler(attributeName) {
38
38
  return {
39
39
  removed: removedAttributeHandler.bind(this, attributeName),
40
- fallback: fallbackAttributeHandler.bind(this, attributeName)
40
+ fallback: fallbackAttributeHandler.bind(this, attributeName),
41
41
  };
42
42
  }
43
43
 
@@ -49,7 +49,7 @@ const formAttributeHandler = {
49
49
  fallback: function (element, change) {
50
50
  fallbackAttributeHandler.call(this, 'form', element, change);
51
51
  element._formId = change.newValue;
52
- }
52
+ },
53
53
  };
54
54
 
55
55
  var idAttributeHandler = {
@@ -57,11 +57,11 @@ var idAttributeHandler = {
57
57
  fallback: function (element, change) {
58
58
  const val = `${change.newValue}${INPUT_SUFFIX}`;
59
59
  getInput(element).setAttribute('id', val);
60
- }
60
+ },
61
61
  };
62
62
 
63
63
  var valueAttributeHandler = {
64
- removed: function(element) {
64
+ removed: function (element) {
65
65
  removedAttributeHandler.call(this, 'value', element);
66
66
  // Internet Explorer 11 has a bug where it doesn't clear out the previous value
67
67
  // when the attribute is removed.
@@ -69,7 +69,7 @@ var valueAttributeHandler = {
69
69
  },
70
70
  fallback: function (element, change) {
71
71
  fallbackAttributeHandler.call(this, 'value', element, change);
72
- }
72
+ },
73
73
  };
74
74
 
75
75
  var checkedAttributeHandler = {
@@ -78,7 +78,7 @@ var checkedAttributeHandler = {
78
78
  },
79
79
  fallback: function (element) {
80
80
  getInput(element).checked = true;
81
- }
81
+ },
82
82
  };
83
83
 
84
84
  var labelHandler = {
@@ -87,7 +87,7 @@ var labelHandler = {
87
87
  },
88
88
  fallback: function (element, change) {
89
89
  getInput(element).setAttribute('aria-label', change.newValue);
90
- }
90
+ },
91
91
  };
92
92
 
93
93
  function clickHandler(element, e) {
@@ -104,9 +104,12 @@ function setDisabledForLabels(element, disabled) {
104
104
  if (!element.id) {
105
105
  return;
106
106
  }
107
- Array.prototype.forEach.call(document.querySelectorAll(`aui-label[for="${element.id}"]`), function (el) {
108
- el.disabled = disabled;
109
- });
107
+ Array.prototype.forEach.call(
108
+ document.querySelectorAll(`aui-label[for="${element.id}"]`),
109
+ function (el) {
110
+ el.disabled = disabled;
111
+ }
112
+ );
110
113
  }
111
114
 
112
115
  /**
@@ -152,10 +155,12 @@ const ToggleEl = skate('aui-toggle', {
152
155
 
153
156
  $(getInput(element)).tooltip({
154
157
  title: function () {
155
- return this.checked ? this.getAttribute('tooltip-on') : this.getAttribute('tooltip-off');
158
+ return this.checked
159
+ ? this.getAttribute('tooltip-on')
160
+ : this.getAttribute('tooltip-off');
156
161
  },
157
162
  gravity: 's',
158
- hoverable: false
163
+ hoverable: false,
159
164
  });
160
165
  bindEventsToInput(element);
161
166
  if (element.hasAttribute('checked')) {
@@ -167,38 +172,44 @@ const ToggleEl = skate('aui-toggle', {
167
172
  enforce(element).attributeExists('label');
168
173
  },
169
174
  events: {
170
- click: clickHandler
175
+ click: clickHandler,
171
176
  },
172
177
  attributes: {
173
- id: idAttributeHandler,
174
- checked: checkedAttributeHandler,
175
- disabled: getAttributeHandler('disabled'),
176
- form: formAttributeHandler,
177
- name: getAttributeHandler('name'),
178
- value: valueAttributeHandler,
178
+ 'id': idAttributeHandler,
179
+ 'checked': checkedAttributeHandler,
180
+ 'disabled': getAttributeHandler('disabled'),
181
+ 'form': formAttributeHandler,
182
+ 'name': getAttributeHandler('name'),
183
+ 'value': valueAttributeHandler,
179
184
  'tooltip-on': {
180
185
  value: I18n.getText('aui.toggle.on'),
181
186
  fallback: function (element, change) {
182
- getInput(element).setAttribute('tooltip-on', change.newValue || I18n.getText('aui.toggle.on'));
183
- }
187
+ getInput(element).setAttribute(
188
+ 'tooltip-on',
189
+ change.newValue || I18n.getText('aui.toggle.on')
190
+ );
191
+ },
184
192
  },
185
193
  'tooltip-off': {
186
194
  value: I18n.getText('aui.toggle.off'),
187
195
  fallback: function (element, change) {
188
- getInput(element).setAttribute('tooltip-off', change.newValue || I18n.getText('aui.toggle.off'));
189
- }
196
+ getInput(element).setAttribute(
197
+ 'tooltip-off',
198
+ change.newValue || I18n.getText('aui.toggle.off')
199
+ );
200
+ },
190
201
  },
191
- label: labelHandler
202
+ 'label': labelHandler,
192
203
  },
193
204
  prototype: {
194
205
  focus: function () {
195
206
  getInput(this).focus();
196
207
  return this;
197
208
  },
198
- get checked () {
209
+ get checked() {
199
210
  return getInput(this).checked;
200
211
  },
201
- set checked (value) {
212
+ set checked(value) {
202
213
  // Need to explicitly set the property on the checkbox because the
203
214
  // checkbox's property doesn't change with it's attribute after it
204
215
  // is clicked.
@@ -207,41 +218,42 @@ const ToggleEl = skate('aui-toggle', {
207
218
  setBooleanAttribute(this, 'checked', value);
208
219
  }
209
220
  },
210
- get disabled () {
221
+ get disabled() {
211
222
  // AUI-4958 - this may be accessed by a jQuery event handler in response to
212
223
  // a DOMNodeInserted event being fired. In this scenario, the `template`
213
224
  // function has been called by skate, but the `created` callback has not.
214
225
  return getInput(this).disabled;
215
226
  },
216
- set disabled (value) {
227
+ set disabled(value) {
217
228
  return setBooleanAttribute(this, 'disabled', value);
218
229
  },
219
- get form () {
230
+ get form() {
220
231
  return document.getElementById(this._formId);
221
232
  },
222
- set form (value) {
233
+ set form(value) {
223
234
  formAttributeHandler.fallback.call(this, this, { newValue: value || null });
224
235
  return this.form;
225
236
  },
226
- get name () {
237
+ get name() {
227
238
  return getInput(this).name;
228
239
  },
229
- set name (value) {
240
+ set name(value) {
230
241
  this.setAttribute('name', value);
231
242
  return value;
232
243
  },
233
- get value () {
244
+ get value() {
234
245
  return getInput(this).value;
235
246
  },
236
- set value (value) { // Setting the value of an input to null sets it to empty string.
247
+ set value(value) {
248
+ // Setting the value of an input to null sets it to empty string.
237
249
  let newVal = value === null ? '' : value;
238
250
  this.setAttribute('value', newVal);
239
251
  return newVal;
240
252
  },
241
- get busy () {
253
+ get busy() {
242
254
  return getInput(this).getAttribute('aria-busy') === 'true';
243
255
  },
244
- set busy (value) {
256
+ set busy(value) {
245
257
  const input = getInput(this);
246
258
  const spinner = getSpinner(this);
247
259
 
@@ -266,8 +278,8 @@ const ToggleEl = skate('aui-toggle', {
266
278
  }
267
279
  setDisabledForLabels(this, !!value);
268
280
  return value;
269
- }
270
- }
281
+ },
282
+ },
271
283
  });
272
284
 
273
285
  export default ToggleEl;