@atlassian/aui 9.12.6 → 9.12.7

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 (287) hide show
  1. package/LICENSE +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-browserfocus.css.map +1 -1
  6. package/dist/aui/aui-prototyping-darkmode.css +1 -1
  7. package/dist/aui/aui-prototyping-darkmode.css.map +1 -1
  8. package/dist/aui/aui-prototyping-design-tokens-api-full.js +1 -1
  9. package/dist/aui/aui-prototyping-design-tokens-api-full.js.map +1 -1
  10. package/dist/aui/aui-prototyping-design-tokens-api.js +1 -1
  11. package/dist/aui/aui-prototyping-design-tokens-api.js.map +1 -1
  12. package/dist/aui/aui-prototyping-design-tokens-base-themes-css.css +2 -2
  13. package/dist/aui/aui-prototyping-design-tokens-base-themes-css.css.map +1 -1
  14. package/dist/aui/aui-prototyping-design-tokens-base-themes-css.js +1 -1
  15. package/dist/aui/aui-prototyping-design-tokens-base-themes.js +1 -1
  16. package/dist/aui/aui-prototyping-design-tokens-compatibility.css +1 -1
  17. package/dist/aui/aui-prototyping-design-tokens-compatibility.css.map +1 -1
  18. package/dist/aui/aui-prototyping.css +10 -10
  19. package/dist/aui/aui-prototyping.css.map +1 -1
  20. package/dist/aui/aui-prototyping.js +2 -2
  21. package/dist/aui/aui-prototyping.js.map +1 -1
  22. package/dist/aui/aui-prototyping.nodeps.css +10 -10
  23. package/dist/aui/aui-prototyping.nodeps.css.map +1 -1
  24. package/dist/aui/aui-prototyping.nodeps.js +2 -2
  25. package/dist/aui/aui-prototyping.nodeps.js.map +1 -1
  26. package/dist/aui/fonts/adgs-icons.eot +0 -0
  27. package/dist/aui/fonts/adgs-icons.ttf +0 -0
  28. package/dist/aui/fonts/adgs-icons.woff +0 -0
  29. package/entry/aui.batch.components.js +23 -23
  30. package/entry/aui.batch.page.js +3 -3
  31. package/entry/aui.batch.patterns.js +20 -20
  32. package/entry/aui.batch.prototyping.js +3 -11
  33. package/entry/aui.component.nav.js +1 -1
  34. package/entry/aui.component.progressbar.js +4 -1
  35. package/entry/aui.side-effects.js +2 -2
  36. package/entry/behaviours/aui.behaviour.format.js +1 -1
  37. package/entry/behaviours/aui.behaviour.i18n.js +1 -1
  38. package/entry/behaviours/aui.behaviour.keyboard-shortcuts.js +1 -1
  39. package/entry/behaviours/aui.behaviour.progressive-data-set.js +1 -1
  40. package/entry/behaviours/aui.behaviour.version.js +1 -1
  41. package/entry/deprecated/aui.component.inline-dialog1.js +1 -1
  42. package/entry/styles/aui-design-tokens-compatibility.less +114 -115
  43. package/package.json +2 -2
  44. package/src/js/aui/alphanum.js +1 -1
  45. package/src/js/aui/avatar-badged.js +4 -5
  46. package/src/js/aui/avatar-group.js +58 -28
  47. package/src/js/aui/avatar.js +16 -14
  48. package/src/js/aui/banner.js +3 -2
  49. package/src/js/aui/blanket.js +11 -14
  50. package/src/js/aui/button.js +5 -5
  51. package/src/js/aui/checkbox-multiselect.js +79 -76
  52. package/src/js/aui/clone.js +1 -1
  53. package/src/js/aui/close-button.js +2 -6
  54. package/src/js/aui/contain-dropdown.js +5 -5
  55. package/src/js/aui/contains.js +1 -1
  56. package/src/js/aui/cookie.js +12 -16
  57. package/src/js/aui/date-picker.js +89 -68
  58. package/src/js/aui/debounce.js +5 -8
  59. package/src/js/aui/design-tokens/design-tokens-full.js +4 -13
  60. package/src/js/aui/design-tokens/design-tokens-init.js +1 -3
  61. package/src/js/aui/design-tokens/design-tokens-testing-theme.js +9 -15
  62. package/src/js/aui/design-tokens/design-tokens.js +2 -4
  63. package/src/js/aui/dialog.js +206 -172
  64. package/src/js/aui/dialog2.js +36 -25
  65. package/src/js/aui/dropdown2.js +221 -189
  66. package/src/js/aui/escape-html.js +2 -2
  67. package/src/js/aui/escape.js +1 -1
  68. package/src/js/aui/event.js +4 -8
  69. package/src/js/aui/expander.js +15 -13
  70. package/src/js/aui/flag.js +24 -22
  71. package/src/js/aui/focus-manager.js +20 -21
  72. package/src/js/aui/form-notification.js +16 -15
  73. package/src/js/aui/form-validation/basic-validators.js +39 -30
  74. package/src/js/aui/form-validation/validator-register.js +9 -5
  75. package/src/js/aui/form-validation.js +12 -13
  76. package/src/js/aui/format.js +9 -6
  77. package/src/js/aui/forms/create-forms-component-body.js +6 -9
  78. package/src/js/aui/forms/custom-checkbox.js +2 -6
  79. package/src/js/aui/forms/custom-radio.js +2 -6
  80. package/src/js/aui/forms.js +4 -8
  81. package/src/js/aui/header-async.js +1 -1
  82. package/src/js/aui/header.js +2 -2
  83. package/src/js/aui/i18n.js +6 -13
  84. package/src/js/aui/index-of.js +1 -1
  85. package/src/js/aui/inline-dialog.js +171 -117
  86. package/src/js/aui/inline-dialog2.js +40 -33
  87. package/src/js/aui/internal/a11y/focusable-query.js +2 -4
  88. package/src/js/aui/internal/add-id.js +1 -1
  89. package/src/js/aui/internal/alignment.js +57 -49
  90. package/src/js/aui/internal/amdify.js +0 -1
  91. package/src/js/aui/internal/animation.js +2 -5
  92. package/src/js/aui/internal/attributes.js +2 -3
  93. package/src/js/aui/internal/browser.js +6 -7
  94. package/src/js/aui/internal/constants.js +1 -3
  95. package/src/js/aui/internal/deduplicateIDs.js +8 -7
  96. package/src/js/aui/internal/deprecation/deprecated-adg2-icons.js +132 -132
  97. package/src/js/aui/internal/deprecation.js +54 -32
  98. package/src/js/aui/internal/detect-children-change.js +3 -2
  99. package/src/js/aui/internal/elements.js +2 -5
  100. package/src/js/aui/internal/enforcer.js +11 -13
  101. package/src/js/aui/internal/globalize.js +12 -5
  102. package/src/js/aui/internal/has-touch.js +1 -2
  103. package/src/js/aui/internal/header/create-header.js +54 -30
  104. package/src/js/aui/internal/i18n/aui.js +9 -5
  105. package/src/js/aui/internal/i18n/aui_af.js +31 -31
  106. package/src/js/aui/internal/i18n/aui_ar.js +31 -31
  107. package/src/js/aui/internal/i18n/aui_ar_DZ.js +31 -31
  108. package/src/js/aui/internal/i18n/aui_az.js +31 -31
  109. package/src/js/aui/internal/i18n/aui_bg.js +31 -31
  110. package/src/js/aui/internal/i18n/aui_bs.js +31 -31
  111. package/src/js/aui/internal/i18n/aui_ca.js +31 -31
  112. package/src/js/aui/internal/i18n/aui_cs.js +31 -31
  113. package/src/js/aui/internal/i18n/aui_da.js +31 -31
  114. package/src/js/aui/internal/i18n/aui_de.js +31 -31
  115. package/src/js/aui/internal/i18n/aui_el.js +31 -31
  116. package/src/js/aui/internal/i18n/aui_en_AU.js +31 -31
  117. package/src/js/aui/internal/i18n/aui_en_GB.js +31 -31
  118. package/src/js/aui/internal/i18n/aui_en_NZ.js +31 -31
  119. package/src/js/aui/internal/i18n/aui_eo.js +31 -31
  120. package/src/js/aui/internal/i18n/aui_es.js +31 -31
  121. package/src/js/aui/internal/i18n/aui_et.js +31 -31
  122. package/src/js/aui/internal/i18n/aui_eu.js +31 -31
  123. package/src/js/aui/internal/i18n/aui_fa.js +31 -31
  124. package/src/js/aui/internal/i18n/aui_fi.js +31 -31
  125. package/src/js/aui/internal/i18n/aui_fo.js +31 -31
  126. package/src/js/aui/internal/i18n/aui_fr.js +31 -31
  127. package/src/js/aui/internal/i18n/aui_fr_CH.js +31 -31
  128. package/src/js/aui/internal/i18n/aui_gl.js +31 -31
  129. package/src/js/aui/internal/i18n/aui_he.js +31 -31
  130. package/src/js/aui/internal/i18n/aui_hr.js +31 -31
  131. package/src/js/aui/internal/i18n/aui_hu.js +31 -31
  132. package/src/js/aui/internal/i18n/aui_hy.js +31 -31
  133. package/src/js/aui/internal/i18n/aui_id.js +31 -31
  134. package/src/js/aui/internal/i18n/aui_is.js +31 -31
  135. package/src/js/aui/internal/i18n/aui_it.js +31 -31
  136. package/src/js/aui/internal/i18n/aui_ja.js +31 -31
  137. package/src/js/aui/internal/i18n/aui_ko.js +31 -31
  138. package/src/js/aui/internal/i18n/aui_kz.js +31 -31
  139. package/src/js/aui/internal/i18n/aui_lt.js +31 -31
  140. package/src/js/aui/internal/i18n/aui_lv.js +31 -31
  141. package/src/js/aui/internal/i18n/aui_ml.js +31 -31
  142. package/src/js/aui/internal/i18n/aui_ms.js +31 -31
  143. package/src/js/aui/internal/i18n/aui_nl.js +31 -31
  144. package/src/js/aui/internal/i18n/aui_no.js +31 -31
  145. package/src/js/aui/internal/i18n/aui_pl.js +31 -31
  146. package/src/js/aui/internal/i18n/aui_pt.js +31 -31
  147. package/src/js/aui/internal/i18n/aui_pt_BR.js +31 -31
  148. package/src/js/aui/internal/i18n/aui_rm.js +31 -31
  149. package/src/js/aui/internal/i18n/aui_ro.js +31 -31
  150. package/src/js/aui/internal/i18n/aui_ru.js +31 -31
  151. package/src/js/aui/internal/i18n/aui_sk.js +31 -31
  152. package/src/js/aui/internal/i18n/aui_sl.js +31 -31
  153. package/src/js/aui/internal/i18n/aui_sq.js +31 -31
  154. package/src/js/aui/internal/i18n/aui_sr.js +31 -31
  155. package/src/js/aui/internal/i18n/aui_sr_SR.js +31 -31
  156. package/src/js/aui/internal/i18n/aui_sv.js +31 -31
  157. package/src/js/aui/internal/i18n/aui_ta.js +31 -31
  158. package/src/js/aui/internal/i18n/aui_th.js +31 -31
  159. package/src/js/aui/internal/i18n/aui_tj.js +31 -31
  160. package/src/js/aui/internal/i18n/aui_tr.js +31 -31
  161. package/src/js/aui/internal/i18n/aui_uk.js +31 -31
  162. package/src/js/aui/internal/i18n/aui_vi.js +31 -31
  163. package/src/js/aui/internal/i18n/aui_zh_CN.js +31 -31
  164. package/src/js/aui/internal/i18n/aui_zh_HK.js +31 -31
  165. package/src/js/aui/internal/i18n/aui_zh_TW.js +31 -31
  166. package/src/js/aui/internal/log.js +2 -6
  167. package/src/js/aui/internal/mediaQuery.js +2 -3
  168. package/src/js/aui/internal/select/option.js +3 -3
  169. package/src/js/aui/internal/select/suggestion-model.js +1 -1
  170. package/src/js/aui/internal/select/suggestions-model.js +4 -5
  171. package/src/js/aui/internal/select/suggestions-view.js +17 -12
  172. package/src/js/aui/internal/state.js +2 -3
  173. package/src/js/aui/is-clipped.js +2 -2
  174. package/src/js/aui/key-code.js +1 -1
  175. package/src/js/aui/label.js +6 -6
  176. package/src/js/aui/layer.js +101 -89
  177. package/src/js/aui/messages.js +67 -43
  178. package/src/js/aui/navigation.js +7 -9
  179. package/src/js/aui/on-text-resize.js +7 -5
  180. package/src/js/aui/params.js +11 -8
  181. package/src/js/aui/polyfills/custom-event.js +9 -9
  182. package/src/js/aui/polyfills/placeholder.js +4 -4
  183. package/src/js/aui/populate-parameters.js +4 -4
  184. package/src/js/aui/progress-indicator.js +35 -27
  185. package/src/js/aui/progressive-data-set.js +13 -8
  186. package/src/js/aui/query-input.js +1 -1
  187. package/src/js/aui/restful-table/class-names.js +1 -1
  188. package/src/js/aui/restful-table/data-keys.js +1 -1
  189. package/src/js/aui/restful-table/edit-row.js +63 -63
  190. package/src/js/aui/restful-table/entry-model.js +6 -13
  191. package/src/js/aui/restful-table/event-handlers.js +4 -8
  192. package/src/js/aui/restful-table/event-names.js +1 -1
  193. package/src/js/aui/restful-table/row.js +41 -23
  194. package/src/js/aui/restful-table.js +101 -72
  195. package/src/js/aui/result-set.js +5 -5
  196. package/src/js/aui/results-list.js +3 -3
  197. package/src/js/aui/select.js +72 -51
  198. package/src/js/aui/select2.js +16 -8
  199. package/src/js/aui/sidebar.js +81 -51
  200. package/src/js/aui/spin.js +61 -49
  201. package/src/js/aui/spinner.js +11 -12
  202. package/src/js/aui/tables-sortable.js +21 -10
  203. package/src/js/aui/tabs.js +108 -77
  204. package/src/js/aui/to-init.js +1 -1
  205. package/src/js/aui/toggle.js +55 -43
  206. package/src/js/aui/tooltip.js +34 -33
  207. package/src/js/aui/trigger.js +21 -19
  208. package/src/js/aui/truncating-progressive-data-set.js +1 -1
  209. package/src/js/aui/unbind-text-resize.js +1 -1
  210. package/src/js/aui/unique-id.js +1 -1
  211. package/src/js/aui/when-i-type.js +67 -40
  212. package/src/js/aui-css-deprecations.js +52 -51
  213. package/src/js/jquery/jquery.moveto.js +18 -12
  214. package/src/less/adg-fancy-file-input.less +2 -3
  215. package/src/less/adg-header-quicksearch.less +5 -2
  216. package/src/less/adg-iconfont.less +242 -242
  217. package/src/less/adgs-icons.less +262 -262
  218. package/src/less/aui-appheader.less +10 -6
  219. package/src/less/aui-avatars.less +1 -1
  220. package/src/less/aui-banner.less +2 -1
  221. package/src/less/aui-buttons.less +6 -5
  222. package/src/less/aui-dark-mode.less +1 -1
  223. package/src/less/aui-date-picker.less +9 -6
  224. package/src/less/aui-experimental-expander.less +3 -3
  225. package/src/less/aui-experimental-labels.less +1 -1
  226. package/src/less/aui-experimental-progress-indicator.less +10 -4
  227. package/src/less/aui-experimental-progress-tracker.less +9 -6
  228. package/src/less/aui-experimental-restfultable.less +11 -3
  229. package/src/less/aui-experimental-tables-sortable.less +5 -3
  230. package/src/less/aui-experimental-tooltip.less +1 -1
  231. package/src/less/aui-link.less +0 -1
  232. package/src/less/aui-lozenge.less +6 -3
  233. package/src/less/aui-navigation.less +16 -14
  234. package/src/less/aui-page-layout.less +3 -4
  235. package/src/less/aui-page-typography.less +8 -3
  236. package/src/less/aui-reset.less +22 -6
  237. package/src/less/aui-select2.less +12 -9
  238. package/src/less/aui-sidebar-badges.less +1 -2
  239. package/src/less/aui-sidebar-config.less +7 -2
  240. package/src/less/aui-sidebar-grouping.less +22 -6
  241. package/src/less/aui-sidebar-navigation.less +7 -5
  242. package/src/less/aui-sidebar-skeleton.less +12 -7
  243. package/src/less/aui-skip-link.less +2 -1
  244. package/src/less/aui-spinner.less +2 -2
  245. package/src/less/aui-toggle.less +8 -4
  246. package/src/less/aui-toolbar2.less +1 -1
  247. package/src/less/checkbox-multiselect.less +13 -13
  248. package/src/less/dialog.less +3 -3
  249. package/src/less/dialog2.less +11 -10
  250. package/src/less/dropdown2-temp.css +4 -4
  251. package/src/less/dropdown2.less +4 -4
  252. package/src/less/flag.less +2 -2
  253. package/src/less/form-notification.less +10 -6
  254. package/src/less/forms-current.less +16 -18
  255. package/src/less/forms-legacy.less +4 -2
  256. package/src/less/forms-radios-and-checkboxes.less +18 -16
  257. package/src/less/forms.less +2 -4
  258. package/src/less/iconfont-mixin.less +7 -4
  259. package/src/less/imports/aui-theme/adg/adg-colors.less +40 -40
  260. package/src/less/imports/aui-theme/adg/adg-neutral-dark.less +20 -20
  261. package/src/less/imports/aui-theme/adg/adg-neutral-light.less +20 -20
  262. package/src/less/imports/aui-theme/components/buttons.less +7 -1
  263. package/src/less/imports/aui-theme/components/dropdown.less +3 -1
  264. package/src/less/imports/aui-theme/components/flag.less +1 -1
  265. package/src/less/imports/aui-theme/components/form-notification.less +2 -1
  266. package/src/less/imports/aui-theme/components/forms.less +8 -3
  267. package/src/less/imports/aui-theme/components/inline-dialog2.less +1 -1
  268. package/src/less/imports/aui-theme/components/navigation.less +6 -3
  269. package/src/less/imports/aui-theme/components/progress-tracker.less +6 -2
  270. package/src/less/imports/aui-theme/components/tables.less +3 -2
  271. package/src/less/imports/aui-theme/components/toggle.less +8 -3
  272. package/src/less/imports/aui-theme/core/colors.less +2 -2
  273. package/src/less/imports/aui-theme/core/icons.less +22 -22
  274. package/src/less/imports/aui-theme/core/text.less +6 -3
  275. package/src/less/imports/aui-theme/theme.less +1 -3
  276. package/src/less/imports/mixins/dropdown2-trigger-chevron-icon.less +0 -1
  277. package/src/less/imports/mixins/focus.less +12 -4
  278. package/src/less/imports/mixins/media-queries.less +2 -2
  279. package/src/less/imports/mixins/shadows.less +3 -1
  280. package/src/less/imports/mixins/tab-indicator.less +2 -2
  281. package/src/less/imports/mixins.less +11 -4
  282. package/src/less/inline-dialog.less +21 -19
  283. package/src/less/layer.less +0 -2
  284. package/src/less/messages.less +2 -1
  285. package/src/less/single-select.less +15 -10
  286. package/src/less/tables.less +3 -2
  287. package/src/less/tabs.less +4 -3
@@ -13,8 +13,8 @@ import layer from './layer';
13
13
  import state from './internal/state';
14
14
  import skate from './internal/skate';
15
15
  import escapeHtml from './escape-html';
16
- import {ifGone} from './internal/elements';
17
- import {doIfTrigger, setTrigger} from './trigger';
16
+ import { ifGone } from './internal/elements';
17
+ import { doIfTrigger, setTrigger } from './trigger';
18
18
  import generateUniqueId from './unique-id';
19
19
 
20
20
  function isHidden(el) {
@@ -39,7 +39,7 @@ function handleFocus(dropdown, e = {}) {
39
39
  const isKeyDownEvent = e.type.indexOf('key') > -1;
40
40
  if (dropdown.isSubmenu) {
41
41
  dropdown.focusItem(0);
42
- } else if (isKeyDownEvent){
42
+ } else if (isKeyDownEvent) {
43
43
  const isUpArrow = e.keyCode === keyCode.UP;
44
44
  // set focus to last item in the menu to navigate bottom -> up
45
45
  if (isUpArrow) {
@@ -63,49 +63,52 @@ var LOADING = 'loading';
63
63
  var ERROR = 'error';
64
64
  var SUCCESS = 'success';
65
65
 
66
-
67
66
  // ASYNC DROPDOWN FUNCTIONS
68
67
 
69
- function makeAsyncDropdownContents (json) {
70
- var dropdownContents = json.map(function makeSection (sectionData) {
71
- var sectionItemsHtml = sectionData.items.map(function makeSectionItem (itemData) {
72
- function makeBooleanAttribute (attr) {
73
- return itemData[attr] ? `${attr} ="true"` : '';
74
- }
75
-
76
- function makeAttribute (attr) {
77
- return itemData[attr] ? `${attr}="${itemData[attr]}"` : '';
78
- }
79
-
80
- var tagName = 'aui-item-' + itemData.type;
81
- var itemHtml = `
68
+ function makeAsyncDropdownContents(json) {
69
+ var dropdownContents = json
70
+ .map(function makeSection(sectionData) {
71
+ var sectionItemsHtml = sectionData.items
72
+ .map(function makeSectionItem(itemData) {
73
+ function makeBooleanAttribute(attr) {
74
+ return itemData[attr] ? `${attr} ="true"` : '';
75
+ }
76
+
77
+ function makeAttribute(attr) {
78
+ return itemData[attr] ? `${attr}="${itemData[attr]}"` : '';
79
+ }
80
+
81
+ var tagName = 'aui-item-' + itemData.type;
82
+ var itemHtml = `
82
83
  <${tagName} ${makeAttribute('for')} ${makeAttribute('href')} ${makeBooleanAttribute('interactive')}
83
84
  ${makeBooleanAttribute('checked')} ${makeBooleanAttribute('disabled')} ${makeBooleanAttribute('hidden')}>
84
85
  ${escapeHtml(itemData.content)}
85
86
  </${tagName}>`;
86
87
 
87
- return itemHtml;
88
- }).join('');
88
+ return itemHtml;
89
+ })
90
+ .join('');
89
91
 
90
- var sectionAttributes = sectionData.label ? `label="${sectionData.label}"` : '';
91
- var sectionHtml = `
92
+ var sectionAttributes = sectionData.label ? `label="${sectionData.label}"` : '';
93
+ var sectionHtml = `
92
94
  <aui-section ${sectionAttributes}>
93
95
  ${sectionItemsHtml}
94
96
  </aui-section>`;
95
97
 
96
- return sectionHtml;
97
- }).join('\n');
98
+ return sectionHtml;
99
+ })
100
+ .join('\n');
98
101
 
99
102
  return dropdownContents;
100
103
  }
101
104
 
102
- function setDropdownContents (dropdown, json) {
105
+ function setDropdownContents(dropdown, json) {
103
106
  state(dropdown).set('loading-state', SUCCESS);
104
107
  dropdown.innerHTML = makeAsyncDropdownContents(json);
105
108
  skate.init(dropdown);
106
109
  }
107
110
 
108
- function setDropdownErrorState (dropdown) {
111
+ function setDropdownErrorState(dropdown) {
109
112
  state(dropdown).set('loading-state', ERROR);
110
113
  state(dropdown).set('hasErrorBeenShown', dropdown.isVisible());
111
114
  dropdown.innerHTML = `
@@ -115,7 +118,7 @@ function setDropdownErrorState (dropdown) {
115
118
  `;
116
119
  }
117
120
 
118
- function setDropdownLoadingState (dropdown) {
121
+ function setDropdownLoadingState(dropdown) {
119
122
  state(dropdown).set('loading-state', LOADING);
120
123
  state(dropdown).set('hasErrorBeenShown', false);
121
124
 
@@ -130,13 +133,13 @@ function setDropdownLoadingState (dropdown) {
130
133
  `;
131
134
  }
132
135
 
133
- function setDropdownLoaded (dropdown) {
136
+ function setDropdownLoaded(dropdown) {
134
137
  doIfTrigger(dropdown, function (trigger) {
135
138
  trigger.setAttribute('aria-busy', 'false');
136
139
  });
137
140
  }
138
141
 
139
- function loadContentsIfAsync (dropdown) {
142
+ function loadContentsIfAsync(dropdown) {
140
143
  if (!dropdown.src || state(dropdown).get('loading-state') === LOADING) {
141
144
  return;
142
145
  }
@@ -163,7 +166,7 @@ function loadContentsIfAsync (dropdown) {
163
166
  function loadContentWhenMouseEnterTrigger(dropdown) {
164
167
  var isDropdownUnloaded = state(dropdown).get('loading-state') === UNLOADED;
165
168
  var hasCurrentErrorBeenShown = state(dropdown).get('hasErrorBeenShown');
166
- if (isDropdownUnloaded || hasCurrentErrorBeenShown && !dropdown.isVisible()) {
169
+ if (isDropdownUnloaded || (hasCurrentErrorBeenShown && !dropdown.isVisible())) {
167
170
  loadContentsIfAsync(dropdown);
168
171
  }
169
172
  }
@@ -179,18 +182,19 @@ function loadContentWhenMenuShown(dropdown) {
179
182
  }
180
183
  }
181
184
 
182
-
183
185
  // The dropdown's trigger
184
186
  // ----------------------
185
187
 
186
- function triggerCreated (trigger) {
188
+ function triggerCreated(trigger) {
187
189
  let dropdownID = trigger.getAttribute('aria-controls');
188
190
 
189
191
  if (!dropdownID) {
190
192
  dropdownID = trigger.getAttribute('aria-owns');
191
193
 
192
194
  if (!dropdownID) {
193
- logger.error('Dropdown triggers need either a "aria-owns" or "aria-controls" attribute');
195
+ logger.error(
196
+ 'Dropdown triggers need either a "aria-owns" or "aria-controls" attribute'
197
+ );
194
198
  } else {
195
199
  trigger.removeAttribute('aria-owns');
196
200
  trigger.setAttribute('aria-controls', dropdownID);
@@ -270,9 +274,10 @@ function triggerCreated (trigger) {
270
274
  if (e.currentTarget !== trigger) {
271
275
  return;
272
276
  }
273
- const normalInvoke = (e.keyCode === keyCode.ENTER || e.keyCode === keyCode.SPACE);
274
- const submenuInvoke = (e.keyCode === keyCode.RIGHT && trigger.hasSubmenu());
275
- const rootMenuInvoke = ((e.keyCode === keyCode.UP || e.keyCode === keyCode.DOWN) && !trigger.hasSubmenu());
277
+ const normalInvoke = e.keyCode === keyCode.ENTER || e.keyCode === keyCode.SPACE;
278
+ const submenuInvoke = e.keyCode === keyCode.RIGHT && trigger.hasSubmenu();
279
+ const rootMenuInvoke =
280
+ (e.keyCode === keyCode.UP || e.keyCode === keyCode.DOWN) && !trigger.hasSubmenu();
276
281
 
277
282
  if (normalInvoke) {
278
283
  handleIt(e);
@@ -301,13 +306,15 @@ var triggerPrototype = {
301
306
  },
302
307
 
303
308
  isEnabled: function () {
304
- return this.getAttribute('aria-disabled') !== 'true' &&
305
- this.classList.contains('aui-dropdown2-disabled') === false;
309
+ return (
310
+ this.getAttribute('aria-disabled') !== 'true' &&
311
+ this.classList.contains('aui-dropdown2-disabled') === false
312
+ );
306
313
  },
307
314
 
308
315
  hasSubmenu: function () {
309
316
  return this.classList.contains('aui-dropdown2-sub-trigger');
310
- }
317
+ },
311
318
  };
312
319
 
313
320
  //To remove at a later date. Some dropdown triggers initialise lazily, so we need to listen for mousedown
@@ -322,8 +329,9 @@ function bindLazyTriggerInitialisation() {
322
329
  removeInVersion: '10.0.0',
323
330
  alternativeName: 'initialisation on DOM insertion',
324
331
  sinceVersion: '5.8.0',
325
- extraInfo: 'Dropdown2 triggers should have all necessary attributes on DOM insertion',
326
- deprecationType: 'JS'
332
+ extraInfo:
333
+ 'Dropdown2 triggers should have all necessary attributes on DOM insertion',
334
+ deprecationType: 'JS',
327
335
  });
328
336
  lazyDeprecate();
329
337
  }
@@ -335,62 +343,69 @@ bindLazyTriggerInitialisation();
335
343
  // Dropdown trigger groups
336
344
  // -----------------------
337
345
 
338
- $(document).on('mouseenter', '.aui-dropdown2-trigger-group a, .aui-dropdown2-trigger-group button', function (e) {
339
- const $item = $(e.currentTarget);
346
+ $(document).on(
347
+ 'mouseenter',
348
+ '.aui-dropdown2-trigger-group a, .aui-dropdown2-trigger-group button',
349
+ function (e) {
350
+ const $item = $(e.currentTarget);
340
351
 
341
- if ($item.is('.aui-dropdown2-active')) {
342
- return; // No point doing anything if we're hovering over the already-active item trigger.
343
- }
352
+ if ($item.is('.aui-dropdown2-active')) {
353
+ return; // No point doing anything if we're hovering over the already-active item trigger.
354
+ }
344
355
 
345
- if ($item.closest('.aui-dropdown2').length) {
346
- return; // We don't want to deal with dropdown items, just the potential triggers in the group.
347
- }
356
+ if ($item.closest('.aui-dropdown2').length) {
357
+ return; // We don't want to deal with dropdown items, just the potential triggers in the group.
358
+ }
348
359
 
349
- const $triggerGroup = $item.closest('.aui-dropdown2-trigger-group');
360
+ const $triggerGroup = $item.closest('.aui-dropdown2-trigger-group');
350
361
 
351
- const $groupActiveTrigger = $triggerGroup.find('.aui-dropdown2-active');
352
- if ($groupActiveTrigger.length && $item.is('.aui-dropdown2-trigger')) {
353
- $groupActiveTrigger.blur(); // Remove focus from the previously opened menu.
354
- $item.trigger('aui-button-invoke'); // Open this trigger's menu.
355
- e.preventDefault();
356
- }
362
+ const $groupActiveTrigger = $triggerGroup.find('.aui-dropdown2-active');
363
+ if ($groupActiveTrigger.length && $item.is('.aui-dropdown2-trigger')) {
364
+ $groupActiveTrigger.blur(); // Remove focus from the previously opened menu.
365
+ $item.trigger('aui-button-invoke'); // Open this trigger's menu.
366
+ e.preventDefault();
367
+ }
357
368
 
358
- const $groupFocusedTrigger = $triggerGroup.find(':focus');
359
- if ($groupFocusedTrigger.length && $item.is('.aui-dropdown2-trigger')) {
360
- $groupFocusedTrigger.blur();
369
+ const $groupFocusedTrigger = $triggerGroup.find(':focus');
370
+ if ($groupFocusedTrigger.length && $item.is('.aui-dropdown2-trigger')) {
371
+ $groupFocusedTrigger.blur();
372
+ }
361
373
  }
362
- });
363
-
374
+ );
364
375
 
365
376
  // Dropdown items
366
377
  // --------------
367
378
 
368
- function getDropdownItems (dropdown, filter) {
379
+ function getDropdownItems(dropdown, filter) {
369
380
  return $(dropdown)
370
- .find([
371
- // Legacy markup.
372
- '> ul > li',
373
- '> .aui-dropdown2-section > ul > li',
374
- '> .aui-dropdown2-section > div[role="group"] > ul > li',
375
- '> div > .aui-dropdown2-section > div[role="group"] > ul > li',
376
- // Web component.
377
- 'aui-item-link',
378
- 'aui-item-checkbox',
379
- 'aui-item-radio'
380
- ].join(', '))
381
+ .find(
382
+ [
383
+ // Legacy markup.
384
+ '> ul > li',
385
+ '> .aui-dropdown2-section > ul > li',
386
+ '> .aui-dropdown2-section > div[role="group"] > ul > li',
387
+ '> div > .aui-dropdown2-section > div[role="group"] > ul > li',
388
+ // Web component.
389
+ 'aui-item-link',
390
+ 'aui-item-checkbox',
391
+ 'aui-item-radio',
392
+ ].join(', ')
393
+ )
381
394
  .filter(filter)
382
- .children('a, button, [role="checkbox"], [role="menuitemcheckbox"], [role="radio"], [role="menuitemradio"]');
395
+ .children(
396
+ 'a, button, [role="checkbox"], [role="menuitemcheckbox"], [role="radio"], [role="menuitemradio"]'
397
+ );
383
398
  }
384
399
 
385
- function getAllDropdownItems (dropdown) {
400
+ function getAllDropdownItems(dropdown) {
386
401
  return getDropdownItems(dropdown, () => true);
387
402
  }
388
403
 
389
- function getVisibleDropdownItems (dropdown) {
404
+ function getVisibleDropdownItems(dropdown) {
390
405
  return getDropdownItems(dropdown, (i, el) => !isHidden(el));
391
406
  }
392
407
 
393
- function amendDropdownItem (item) {
408
+ function amendDropdownItem(item) {
394
409
  item.setAttribute('tabindex', '-1');
395
410
 
396
411
  /**
@@ -402,7 +417,7 @@ function amendDropdownItem (item) {
402
417
  }
403
418
  }
404
419
 
405
- function amendDropdownContent (dropdown) {
420
+ function amendDropdownContent(dropdown) {
406
421
  // Add assistive semantics to each dropdown item
407
422
  getAllDropdownItems(dropdown).each((i, el) => amendDropdownItem(el));
408
423
  }
@@ -415,16 +430,15 @@ function amendDropdownContent (dropdown) {
415
430
  *
416
431
  * Calling this function will add the new namespaced classes to elements with legacy names.
417
432
  */
418
- function migrateAndSyncLegacyClassNames (dropdown) {
433
+ function migrateAndSyncLegacyClassNames(dropdown) {
419
434
  var $dropdown = $(dropdown);
420
435
 
421
436
  // Migrate away from legacy, unprefixed class names
422
- ['disabled', 'interactive', 'active', 'checked'].forEach(type => {
437
+ ['disabled', 'interactive', 'active', 'checked'].forEach((type) => {
423
438
  $dropdown.find(`.${type}`).addClass(`aui-dropdown2-${type}`);
424
439
  });
425
440
  }
426
441
 
427
-
428
442
  // The Dropdown itself
429
443
  // -------------------
430
444
 
@@ -460,7 +474,7 @@ function setLayerAlignment(dropdown, trigger) {
460
474
  preventOverflow: false,
461
475
  // space between a dropdown trigger and the dropdown itself, based on @aui-dropdown-trigger-offset
462
476
  // only added for dropdowns which are not submenus
463
- offset: (trigger.hasSubmenu && trigger.hasSubmenu()) ? [-3, 0] : [0, 3]
477
+ offset: trigger.hasSubmenu && trigger.hasSubmenu() ? [-3, 0] : [0, 3],
464
478
  });
465
479
 
466
480
  dropdown._auiAlignment.enable();
@@ -471,7 +485,10 @@ function saveCurrentAlignment(dropdown) {
471
485
  if (dropdown.hasAttribute('data-aui-alignment')) {
472
486
  $dropdown.data('previous-data-aui-alignment', dropdown.getAttribute('data-aui-alignment'));
473
487
  }
474
- $dropdown.data('had-data-aui-alignment-static', dropdown.hasAttribute('data-aui-alignment-static'));
488
+ $dropdown.data(
489
+ 'had-data-aui-alignment-static',
490
+ dropdown.hasAttribute('data-aui-alignment-static')
491
+ );
475
492
  }
476
493
 
477
494
  function restorePreviousAlignment(dropdown) {
@@ -497,12 +514,12 @@ function getDropdownHideLocation(dropdown, trigger) {
497
514
  }
498
515
 
499
516
  var keyboardClose = false;
500
- function keyboardCloseDetected () {
517
+ function keyboardCloseDetected() {
501
518
  keyboardClose = true;
502
519
  }
503
520
 
504
- function wasProbablyClosedViaKeyboard () {
505
- var result = (keyboardClose === true);
521
+ function wasProbablyClosedViaKeyboard() {
522
+ var result = keyboardClose === true;
506
523
  keyboardClose = false;
507
524
  return result;
508
525
  }
@@ -510,7 +527,6 @@ function wasProbablyClosedViaKeyboard () {
510
527
  function bindDropdownBehaviourToLayer(dropdown) {
511
528
  layer(dropdown);
512
529
 
513
-
514
530
  dropdown.addEventListener('aui-layer-show', function (e) {
515
531
  if (dropdown !== e.target) {
516
532
  return;
@@ -563,7 +579,7 @@ function bindDropdownBehaviourToLayer(dropdown) {
563
579
  });
564
580
  }
565
581
 
566
- function bindItemInteractionBehaviourToDropdown (dropdown) {
582
+ function bindItemInteractionBehaviourToDropdown(dropdown) {
567
583
  var $dropdown = $(dropdown);
568
584
 
569
585
  function belongsToDropdown(item) {
@@ -597,7 +613,7 @@ function bindItemInteractionBehaviourToDropdown (dropdown) {
597
613
  }
598
614
  });
599
615
 
600
- const hideIfNotSubmenuAndNotInteractive = function(e) {
616
+ const hideIfNotSubmenuAndNotInteractive = function (e) {
601
617
  const item = e.currentTarget;
602
618
 
603
619
  if (item.getAttribute('aria-disabled') === 'true') {
@@ -609,73 +625,91 @@ function bindItemInteractionBehaviourToDropdown (dropdown) {
609
625
  if (!isSubmenuTrigger && !item.classList.contains('aui-dropdown2-interactive')) {
610
626
  dropdown.hideAll(true);
611
627
  }
612
- }
628
+ };
613
629
 
614
- $dropdown.on('click keydown', 'a, button, [role="menuitem"], [role="menuitemcheckbox"], [role="checkbox"], [role="menuitemradio"], [role="radio"]', function (e) {
615
- if (!belongsToDropdown(e.target)) {
616
- return;
617
- }
618
- const item = e.currentTarget;
619
- const eventKeyCode = e.keyCode;
620
- const isEnter = eventKeyCode === keyCode.ENTER;
621
- const isSpace = eventKeyCode === keyCode.SPACE;
630
+ $dropdown.on(
631
+ 'click keydown',
632
+ 'a, button, [role="menuitem"], [role="menuitemcheckbox"], [role="checkbox"], [role="menuitemradio"], [role="radio"]',
633
+ function (e) {
634
+ if (!belongsToDropdown(e.target)) {
635
+ return;
636
+ }
637
+ const item = e.currentTarget;
638
+ const eventKeyCode = e.keyCode;
639
+ const isEnter = eventKeyCode === keyCode.ENTER;
640
+ const isSpace = eventKeyCode === keyCode.SPACE;
622
641
 
623
- // AUI-4283: Accessibility - need to ignore enter on links/buttons so
624
- // that the dropdown remains visible to allow the click event to eventually fire.
625
- const itemIgnoresEnter = isEnter && $(item).is('a[href], button');
642
+ // AUI-4283: Accessibility - need to ignore enter on links/buttons so
643
+ // that the dropdown remains visible to allow the click event to eventually fire.
644
+ const itemIgnoresEnter = isEnter && $(item).is('a[href], button');
626
645
 
627
- if (!itemIgnoresEnter && (e.type === 'click' || isEnter || isSpace)) {
628
- hideIfNotSubmenuAndNotInteractive(e);
646
+ if (!itemIgnoresEnter && (e.type === 'click' || isEnter || isSpace)) {
647
+ hideIfNotSubmenuAndNotInteractive(e);
648
+ }
629
649
  }
630
- });
650
+ );
631
651
 
632
652
  // close all submenus when the mouse moves over items other than its trigger
633
- $dropdown.on('mouseenter', 'a, button, [role="menuitem"], [role="menuitemcheckbox"], [role="checkbox"], [role="menuitemradio"], [role="radio"]', function (e) {
634
- if (!belongsToDropdown(e.target)) {
635
- return;
636
- }
637
-
638
- // Focus the current element to allow Screen Reader to announce a focused menuitem.
639
- e.currentTarget.focus();
640
-
641
- // We should close all submenus above which are not related to the focused trigger.
642
- // For example if we hover over the trigger for submenu for this trigger be shown, when we move
643
- // focus/mouse on the another trigger the previous will be closed.
644
- let layerAbove = $(layer(dropdown).above()).get(0);
645
- while (layerAbove && layerAbove.isDropdown && layerAbove !== dropdown) {
646
- const layerId = layerAbove.getAttribute('id');
647
- const targetDropdownId = e.target.getAttribute('aria-controls');
648
- const nextLayer = layer(layerAbove).above();
649
-
650
- if (targetDropdownId !== layerId) {
651
- // We should .hide() only after we get nextLayer,
652
- // otherwise we will get the first visible layer.
653
- layer(layerAbove).hide();
653
+ $dropdown.on(
654
+ 'mouseenter',
655
+ 'a, button, [role="menuitem"], [role="menuitemcheckbox"], [role="checkbox"], [role="menuitemradio"], [role="radio"]',
656
+ function (e) {
657
+ if (!belongsToDropdown(e.target)) {
658
+ return;
654
659
  }
655
660
 
656
- layerAbove = $(nextLayer).get(0);
661
+ // Focus the current element to allow Screen Reader to announce a focused menuitem.
662
+ e.currentTarget.focus();
663
+
664
+ // We should close all submenus above which are not related to the focused trigger.
665
+ // For example if we hover over the trigger for submenu for this trigger be shown, when we move
666
+ // focus/mouse on the another trigger the previous will be closed.
667
+ let layerAbove = $(layer(dropdown).above()).get(0);
668
+ while (layerAbove && layerAbove.isDropdown && layerAbove !== dropdown) {
669
+ const layerId = layerAbove.getAttribute('id');
670
+ const targetDropdownId = e.target.getAttribute('aria-controls');
671
+ const nextLayer = layer(layerAbove).above();
672
+
673
+ if (targetDropdownId !== layerId) {
674
+ // We should .hide() only after we get nextLayer,
675
+ // otherwise we will get the first visible layer.
676
+ layer(layerAbove).hide();
677
+ }
678
+
679
+ layerAbove = $(nextLayer).get(0);
680
+ }
657
681
  }
658
- });
682
+ );
659
683
  }
660
684
 
661
- $(window).on('resize', debounce(function () {
662
- $('.aui-dropdown2').each(function (index, dropdown) {
663
- skate.init(dropdown);
664
- if (dropdown.isVisible()){
665
- dropdown.hide();
666
- }
667
- });
668
- }, 1000, true));
685
+ $(window).on(
686
+ 'resize',
687
+ debounce(
688
+ function () {
689
+ $('.aui-dropdown2').each(function (index, dropdown) {
690
+ skate.init(dropdown);
691
+ if (dropdown.isVisible()) {
692
+ dropdown.hide();
693
+ }
694
+ });
695
+ },
696
+ 1000,
697
+ true
698
+ )
699
+ );
669
700
 
670
701
  // Dropdowns
671
702
  // ---------
672
703
 
673
- function dropdownCreated (dropdown) {
704
+ function dropdownCreated(dropdown) {
674
705
  dropdown.classList.add('aui-dropdown2');
675
- dropdown.setAttribute('tabindex','-1');
706
+ dropdown.setAttribute('tabindex', '-1');
676
707
 
677
708
  if (dropdown.hasAttribute('data-container')) {
678
- dropdown.setAttribute('data-aui-alignment-container', dropdown.getAttribute('data-container'));
709
+ dropdown.setAttribute(
710
+ 'data-aui-alignment-container',
711
+ dropdown.getAttribute('data-container')
712
+ );
679
713
  dropdown.removeAttribute('data-container');
680
714
  }
681
715
 
@@ -714,9 +748,13 @@ function dropdownCreated (dropdown) {
714
748
 
715
749
  if (this.isEnabled() && this.isChecked() === false) {
716
750
  // toggle the checked state
717
- $(radio).closest('ul,[role=group]').find('.aui-dropdown2-checked').not(this).each(function () {
718
- this.uncheck();
719
- });
751
+ $(radio)
752
+ .closest('ul,[role=group]')
753
+ .find('.aui-dropdown2-checked')
754
+ .not(this)
755
+ .each(function () {
756
+ this.uncheck();
757
+ });
720
758
  radio.check();
721
759
  }
722
760
  }
@@ -906,7 +944,7 @@ var dropdownPrototype = {
906
944
  /**
907
945
  * Shows that current element is a dropdown
908
946
  */
909
- isDropdown: true
947
+ isDropdown: true,
910
948
  };
911
949
 
912
950
  // Web component API for dropdowns
@@ -922,7 +960,7 @@ var disabledAttributeHandler = {
922
960
  var a = element.children[0];
923
961
  a.setAttribute('aria-disabled', 'false');
924
962
  a.classList.remove('disabled', 'aui-dropdown2-disabled');
925
- }
963
+ },
926
964
  };
927
965
 
928
966
  var interactiveAttributeHandler = {
@@ -933,7 +971,7 @@ var interactiveAttributeHandler = {
933
971
  removed: function (element) {
934
972
  var a = element.children[0];
935
973
  a.classList.remove('interactive', 'aui-dropdown2-interactive');
936
- }
974
+ },
937
975
  };
938
976
 
939
977
  var checkedAttributeHandler = {
@@ -941,14 +979,14 @@ var checkedAttributeHandler = {
941
979
  var a = element.children[0];
942
980
  a.classList.add('checked', 'aui-dropdown2-checked');
943
981
  a.setAttribute('aria-checked', true);
944
- element.dispatchEvent(new CustomEvent('change', {bubbles: true}));
982
+ element.dispatchEvent(new CustomEvent('change', { bubbles: true }));
945
983
  },
946
984
  removed: function (element) {
947
985
  var a = element.children[0];
948
986
  a.classList.remove('checked', 'aui-dropdown2-checked');
949
987
  a.setAttribute('aria-checked', false);
950
- element.dispatchEvent(new CustomEvent('change', {bubbles: true}));
951
- }
988
+ element.dispatchEvent(new CustomEvent('change', { bubbles: true }));
989
+ },
952
990
  };
953
991
 
954
992
  var hiddenAttributeHandler = {
@@ -957,10 +995,10 @@ var hiddenAttributeHandler = {
957
995
  },
958
996
  removed: function (element) {
959
997
  disabledAttributeHandler.removed(element);
960
- }
998
+ },
961
999
  };
962
1000
 
963
- var stringAttributeHandlerGenerator = function(attrName) {
1001
+ var stringAttributeHandlerGenerator = function (attrName) {
964
1002
  return {
965
1003
  fallback: function (element, change) {
966
1004
  var a = element.children[0];
@@ -969,25 +1007,26 @@ var stringAttributeHandlerGenerator = function(attrName) {
969
1007
  removed: function (element) {
970
1008
  var a = element.children[0];
971
1009
  a.removeAttribute(attrName);
972
- }
1010
+ },
973
1011
  };
974
1012
  };
975
1013
 
976
1014
  const convertCssClassesToArray = function (spaceDelimitedClasses = '') {
977
- return spaceDelimitedClasses.split(' ').map(str => str.trim()).filter(x => x);
978
- }
1015
+ return spaceDelimitedClasses
1016
+ .split(' ')
1017
+ .map((str) => str.trim())
1018
+ .filter((x) => x);
1019
+ };
979
1020
 
980
1021
  const ItemLinkEl = skate('aui-item-link', {
981
- template: template(
982
- '<a role="menuitem" tabindex="-1"><content></content></a>'
983
- ),
1022
+ template: template('<a role="menuitem" tabindex="-1"><content></content></a>'),
984
1023
  attributes: {
985
- disabled: disabledAttributeHandler,
986
- interactive: interactiveAttributeHandler,
987
- hidden: hiddenAttributeHandler,
988
- href: stringAttributeHandlerGenerator('href'),
1024
+ 'disabled': disabledAttributeHandler,
1025
+ 'interactive': interactiveAttributeHandler,
1026
+ 'hidden': hiddenAttributeHandler,
1027
+ 'href': stringAttributeHandlerGenerator('href'),
989
1028
  'item-id': stringAttributeHandlerGenerator('id'),
990
- for: {
1029
+ 'for': {
991
1030
  created: function (element) {
992
1031
  var anchor = element.children[0];
993
1032
  anchor.setAttribute('aria-controls', element.getAttribute('for'));
@@ -1001,7 +1040,7 @@ const ItemLinkEl = skate('aui-item-link', {
1001
1040
  var anchor = element.children[0];
1002
1041
  anchor.removeAttribute('aria-controls');
1003
1042
  $(anchor).removeClass('aui-dropdown2-sub-trigger');
1004
- }
1043
+ },
1005
1044
  },
1006
1045
  'extra-classes': function (element, change) {
1007
1046
  const anchor = element.children[0];
@@ -1015,17 +1054,17 @@ const ItemLinkEl = skate('aui-item-link', {
1015
1054
  },
1016
1055
  });
1017
1056
 
1018
- const [ItemCheckboxEl, ItemRadioEl] = ['checkbox', 'radio'].map(type => {
1057
+ const [ItemCheckboxEl, ItemRadioEl] = ['checkbox', 'radio'].map((type) => {
1019
1058
  return skate(`aui-item-${type}`, {
1020
1059
  template: template(
1021
1060
  `<span role="menuitem${type}" class="aui-dropdown2-${type}" tabindex="-1"><content></content></span>`
1022
1061
  ),
1023
1062
  attributes: {
1024
1063
  'item-id': stringAttributeHandlerGenerator('id'),
1025
- disabled: disabledAttributeHandler,
1026
- interactive: interactiveAttributeHandler,
1027
- checked: checkedAttributeHandler,
1028
- hidden: hiddenAttributeHandler
1064
+ 'disabled': disabledAttributeHandler,
1065
+ 'interactive': interactiveAttributeHandler,
1066
+ 'checked': checkedAttributeHandler,
1067
+ 'hidden': hiddenAttributeHandler,
1029
1068
  },
1030
1069
  });
1031
1070
  });
@@ -1045,11 +1084,11 @@ const SectionEl = skate('aui-section', {
1045
1084
  headingElement.textContent = data.newValue;
1046
1085
  headingElement.id = id;
1047
1086
  groupElement.setAttribute('aria-labelledby', id);
1048
- }
1087
+ },
1049
1088
  },
1050
1089
  created: function (element) {
1051
1090
  element.classList.add('aui-dropdown2-section');
1052
- }
1091
+ },
1053
1092
  });
1054
1093
 
1055
1094
  const DropdownEl = skate('aui-dropdown-menu', {
@@ -1065,12 +1104,12 @@ const DropdownEl = skate('aui-dropdown-menu', {
1065
1104
  ifGone(dropdown).then(() => destroyAlignment(dropdown));
1066
1105
  },
1067
1106
  attributes: {
1068
- src: {}
1107
+ src: {},
1069
1108
  },
1070
1109
  prototype: dropdownPrototype,
1071
1110
  events: {
1072
- 'aui-layer-show': loadContentWhenMenuShown
1073
- }
1111
+ 'aui-layer-show': loadContentWhenMenuShown,
1112
+ },
1074
1113
  });
1075
1114
 
1076
1115
  // Legacy dropdown inits
@@ -1079,19 +1118,19 @@ const DropdownEl = skate('aui-dropdown-menu', {
1079
1118
  skate('aui-dropdown2', {
1080
1119
  type: skate.type.CLASSNAME,
1081
1120
  created: dropdownCreated,
1082
- prototype: dropdownPrototype
1121
+ prototype: dropdownPrototype,
1083
1122
  });
1084
1123
 
1085
1124
  skate('data-aui-dropdown2', {
1086
1125
  type: skate.type.ATTRIBUTE,
1087
1126
  created: dropdownCreated,
1088
- prototype: dropdownPrototype
1127
+ prototype: dropdownPrototype,
1089
1128
  });
1090
1129
 
1091
1130
  skate('aui-dropdown2-trigger', {
1092
1131
  type: skate.type.CLASSNAME,
1093
1132
  created: triggerCreated,
1094
- prototype: triggerPrototype
1133
+ prototype: triggerPrototype,
1095
1134
  });
1096
1135
 
1097
1136
  skate('aui-dropdown2-sub-trigger', {
@@ -1099,22 +1138,21 @@ skate('aui-dropdown2-sub-trigger', {
1099
1138
  created: function (trigger) {
1100
1139
  trigger.classList.add('aui-dropdown2-trigger');
1101
1140
  skate.init(trigger);
1102
- }
1141
+ },
1103
1142
  });
1104
1143
 
1105
1144
  // Checkboxes and radios
1106
1145
  // ---------------------
1107
- ['checkbox', 'radio'].map(type => {
1146
+ ['checkbox', 'radio'].map((type) => {
1108
1147
  return skate(`aui-dropdown2-${type}`, {
1109
1148
  type: skate.type.CLASSNAME,
1110
1149
 
1111
1150
  created: function (checkbox) {
1112
1151
  // determine checked state based on any one of three attributes, then sync all of them.
1113
- const checked = (
1152
+ const checked =
1114
1153
  checkbox.getAttribute('aria-checked') === 'true' ||
1115
1154
  checkbox.classList.contains('checked') ||
1116
- checkbox.classList.contains('aui-dropdown2-checked')
1117
- );
1155
+ checkbox.classList.contains('aui-dropdown2-checked');
1118
1156
  checkbox.classList[checked ? 'add' : 'remove']('checked', 'aui-dropdown2-checked');
1119
1157
  checkbox.setAttribute('aria-checked', checked);
1120
1158
 
@@ -1158,15 +1196,9 @@ skate('aui-dropdown2-sub-trigger', {
1158
1196
  .attr('aria-checked', 'true')
1159
1197
  .addClass('checked aui-dropdown2-checked')
1160
1198
  .trigger('aui-dropdown2-item-check');
1161
- }
1162
- }
1199
+ },
1200
+ },
1163
1201
  });
1164
- })
1165
-
1166
- export {
1167
- DropdownEl,
1168
- ItemLinkEl,
1169
- ItemRadioEl,
1170
- ItemCheckboxEl,
1171
- SectionEl,
1172
- };
1202
+ });
1203
+
1204
+ export { DropdownEl, ItemLinkEl, ItemRadioEl, ItemCheckboxEl, SectionEl };