@atlassian/aui 7.10.2 → 7.10.4

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 (115) hide show
  1. package/changelog.md +35 -0
  2. package/dist/aui/css/aui-experimental.css.map +1 -1
  3. package/dist/aui/css/aui-experimental.min.css +1 -1
  4. package/dist/aui/css/aui-experimental.min.css.map +1 -1
  5. package/dist/aui/css/aui-iconfonts.min.css.map +1 -1
  6. package/dist/aui/css/aui.css.map +1 -1
  7. package/dist/aui/css/aui.min.css +8 -8
  8. package/dist/aui/css/aui.min.css.map +1 -1
  9. package/dist/aui/js/aui-css-deprecations.js +6 -6
  10. package/dist/aui/js/aui-css-deprecations.min.js +1 -1
  11. package/dist/aui/js/aui-datepicker.js +13 -13
  12. package/dist/aui/js/aui-datepicker.min.js +1 -1
  13. package/dist/aui/js/aui-experimental.js +275 -275
  14. package/dist/aui/js/aui-experimental.min.js +1 -1
  15. package/dist/aui/js/aui-header-async.js +6 -6
  16. package/dist/aui/js/aui-header-async.min.js +1 -1
  17. package/dist/aui/js/aui-soy.js +56 -56
  18. package/dist/aui/js/aui-soy.min.js +1 -1
  19. package/dist/aui/js/aui.js +2278 -1544
  20. package/dist/aui/js/aui.min.js +1 -1
  21. package/lib/css/aui-date-picker.css.map +1 -1
  22. package/lib/css/aui-experimental-tooltip.css.map +1 -1
  23. package/lib/css/aui-page-typography-legacy1.css.map +1 -1
  24. package/lib/css/aui-page-typography.css.map +1 -1
  25. package/lib/css/batch/aui-experimental.css.map +1 -1
  26. package/lib/css/batch/aui.css.map +1 -1
  27. package/lib/css/forms.css.map +1 -1
  28. package/lib/css/imports/aui-theme/core/atlaskit-theme/borders.css +2 -0
  29. package/lib/css/imports/aui-theme/core/atlaskit-theme/borders.css.map +1 -0
  30. package/lib/css/imports/aui-theme/core/atlaskit-theme/colors.css +2 -0
  31. package/lib/css/imports/aui-theme/core/atlaskit-theme/colors.css.map +1 -0
  32. package/lib/css/imports/aui-theme/core/atlaskit-theme/fonts.css +2 -0
  33. package/lib/css/imports/aui-theme/core/atlaskit-theme/fonts.css.map +1 -0
  34. package/lib/css/imports/aui-theme/core/colors.css.map +1 -1
  35. package/lib/css/imports/aui-theme/core/text.css.map +1 -1
  36. package/lib/js/aui/backbone.js.map +1 -1
  37. package/lib/js/aui/binder.js.map +1 -1
  38. package/lib/js/aui/binders/placeholder.js.map +1 -1
  39. package/lib/js/aui/button.js.map +1 -1
  40. package/lib/js/aui/checkbox-multiselect.js.map +1 -1
  41. package/lib/js/aui/date-picker.js.map +1 -1
  42. package/lib/js/aui/dialog.js.map +1 -1
  43. package/lib/js/aui/dialog2.js.map +1 -1
  44. package/lib/js/aui/drop-down.js.map +1 -1
  45. package/lib/js/aui/dropdown2.js.map +1 -1
  46. package/lib/js/aui/fancy-file-input.js.map +1 -1
  47. package/lib/js/aui/flag.js.map +1 -1
  48. package/lib/js/aui/focus-manager-global.js.map +1 -1
  49. package/lib/js/aui/focus-manager.js.map +1 -1
  50. package/lib/js/aui/form-notification.js.map +1 -1
  51. package/lib/js/aui/form-validation/basic-validators.js.map +1 -1
  52. package/lib/js/aui/form-validation/validator-register.js.map +1 -1
  53. package/lib/js/aui/form-validation.js.map +1 -1
  54. package/lib/js/aui/header-async.js.map +1 -1
  55. package/lib/js/aui/i18n.js.map +1 -1
  56. package/lib/js/aui/inline-dialog.js.map +1 -1
  57. package/lib/js/aui/inline-dialog2.js.map +1 -1
  58. package/lib/js/aui/internal/alignment.js.map +1 -1
  59. package/lib/js/aui/internal/deprecation.js.map +1 -1
  60. package/lib/js/aui/internal/globalize.js.map +1 -1
  61. package/lib/js/aui/internal/header/create-header.js.map +1 -1
  62. package/lib/js/aui/internal/select/suggestion-model.js.map +1 -1
  63. package/lib/js/aui/internal/select/suggestions-view.js.map +1 -1
  64. package/lib/js/aui/internal/skate.js.map +1 -1
  65. package/lib/js/aui/internal/widget.js.map +1 -1
  66. package/lib/js/aui/label.js.map +1 -1
  67. package/lib/js/aui/layer-manager-global.js.map +1 -1
  68. package/lib/js/aui/layer-manager.js.map +1 -1
  69. package/lib/js/aui/layer.js.map +1 -1
  70. package/lib/js/aui/messages.js.map +1 -1
  71. package/lib/js/aui/navigation.js.map +1 -1
  72. package/lib/js/aui/polyfills/placeholder.js.map +1 -1
  73. package/lib/js/aui/populate-parameters.js.map +1 -1
  74. package/lib/js/aui/progress-indicator.js.map +1 -1
  75. package/lib/js/aui/progressive-data-set.js.map +1 -1
  76. package/lib/js/aui/query-input.js.map +1 -1
  77. package/lib/js/aui/restful-table/custom-create-view.js.map +1 -1
  78. package/lib/js/aui/restful-table/custom-edit-view.js.map +1 -1
  79. package/lib/js/aui/restful-table/custom-read-view.js.map +1 -1
  80. package/lib/js/aui/restful-table/edit-row.js.map +1 -1
  81. package/lib/js/aui/restful-table/entry-model.js.map +1 -1
  82. package/lib/js/aui/restful-table/row.js.map +1 -1
  83. package/lib/js/aui/restful-table.js.map +1 -1
  84. package/lib/js/aui/result-set.js.map +1 -1
  85. package/lib/js/aui/results-list.js.map +1 -1
  86. package/lib/js/aui/select.js.map +1 -1
  87. package/lib/js/aui/select2.js.map +1 -1
  88. package/lib/js/aui/setup.js.map +1 -1
  89. package/lib/js/aui/sidebar.js.map +1 -1
  90. package/lib/js/aui/spin.js.map +1 -1
  91. package/lib/js/aui/spinner.js.map +1 -1
  92. package/lib/js/aui/tables-sortable.js.map +1 -1
  93. package/lib/js/aui/tabs.js.map +1 -1
  94. package/lib/js/aui/template.js.map +1 -1
  95. package/lib/js/aui/toggle.js.map +1 -1
  96. package/lib/js/aui/tooltip.js.map +1 -1
  97. package/lib/js/aui/trigger.js.map +1 -1
  98. package/lib/js/aui/truncating-progressive-data-set.js.map +1 -1
  99. package/lib/js/aui/unbind-text-resize.js.map +1 -1
  100. package/lib/js/aui/underscore.js.map +1 -1
  101. package/lib/js/aui/version.js +1 -1
  102. package/lib/js/aui/version.js.map +1 -1
  103. package/lib/js/aui/when-i-type.js.map +1 -1
  104. package/lib/js/aui-css-deprecations.js.map +1 -1
  105. package/lib/js-vendor/jquery/plugins/jquery.form.js +7 -1
  106. package/package.json +64 -44
  107. package/src/js-vendor/jquery/plugins/jquery.form.js +7 -1
  108. package/src/less/imports/aui-theme/core/atlaskit-theme/borders.less +1 -0
  109. package/src/less/imports/aui-theme/core/atlaskit-theme/colors.less +112 -0
  110. package/src/less/imports/aui-theme/core/atlaskit-theme/fonts.less +3 -0
  111. package/src/less/imports/aui-theme/core/colors.less +1 -1
  112. package/src/less/imports/aui-theme/core/text.less +1 -1
  113. package/yarn.lock +8354 -3893
  114. package/lib/js-vendor/underscorejs/underscore.js +0 -1287
  115. package/src/js-vendor/underscorejs/underscore.js +0 -1287
@@ -1 +1 @@
1
- {"version":3,"sources":["js/aui/dropdown2.js"],"names":["deprecate","logger","isChecked","el","is","getTrigger","control","_triggeringElement","document","querySelector","id","doIfTrigger","triggerable","callback","trigger","setDropdownTriggerActiveState","isActive","$trigger","attr","addClass","removeClass","UNLOADED","LOADING","ERROR","SUCCESS","makeAsyncDropdownContents","json","dropdownContents","map","makeSection","sectionData","sectionItemsHtml","items","makeSectionItem","itemData","makeBooleanAttribute","makeAttribute","tagName","type","itemHtml","content","join","sectionAttributes","label","sectionHtml","setDropdownContents","dropdown","set","wrap","innerHTML","init","setDropdownErrorState","isVisible","AJS","I18n","getText","setDropdownLoadingState","setAttribute","setDropdownLoaded","loadContentsIfAsync","src","get","ajax","done","status","xhr","isValidStatus","fail","always","loadContentWhenMouseEnterTrigger","isDropdownUnloaded","hasCurrentErrorBeenShown","loadContentWhenMenuShown","triggerCreated","dropdownID","getAttribute","error","removeAttribute","shouldSetHref","nodeName","href","handleIt","e","preventDefault","isEnabled","getElementById","parent","hasClass","classList","add","parents","toggle","isSubmenu","hasSubmenu","handleMouseEnter","show","handleKeydown","normalInvoke","keyCode","ENTER","SPACE","submenuInvoke","RIGHT","rootMenuInvoke","UP","DOWN","focusItem","on","triggerPrototype","disable","enable","triggerClasses","className","split","indexOf","CLASSNAME","created","prototype","bindLazyTriggerInitialisation","isElementSkated","hasAttribute","lazyDeprecate","getMessageLogger","removeInVersion","alternativeName","sinceVersion","extraInfo","deprecationType","$item","currentTarget","closest","length","$triggerGroup","$groupActiveTrigger","find","blur","$groupFocusedTrigger","getDropdownItems","filter","children","getAllDropdownItems","getVisibleDropdownItems","amendDropdownItem","item","amendDropdownContent","each","migrateAndSyncLegacyClassNames","$dropdown","$hiddens","$disableds","$interactives","revertToOriginalMarkup","setLayerAlignment","hasSubmenuAlignment","restorePreviousAlignment","hasAnyAlignment","saveCurrentAlignment","_auiAlignment","destroy","data","previousAlignment","removeData","getDropdownHideLocation","possibleHome","parentNode","keyboardClose","keyboardCloseDetected","wasProbablyClosedViaKeyboard","result","bindDropdownBehaviourToLayer","addEventListener","_syncClasses","_returnTo","appendChild","focus","bindItemInteractionBehaviourToDropdown","focusNext","focusPrevious","LEFT","hide","ESCAPE","TAB","hideIfNotSubmenuAndNotInteractive","isSubmenuTrigger","theMenu","dd","below","$el","eventKeyCode","isEnter","isSpace","itemIgnoresEnter","isDefaultPrevented","maybeALayer","above","window","index","dropdownCreated","removeAttr","delegate","checkbox","isInteractive","uncheck","check","radio","$radio","not","dropdownPrototype","contains","$items","selected","activeElement","idx","last","toArray","first","disabledAttributeHandler","element","a","removed","interactiveAttributeHandler","checkedAttributeHandler","dispatchEvent","bubbles","hiddenAttributeHandler","stringAttributeHandlerGenerator","attrName","fallback","change","newValue","template","attributes","disabled","interactive","hidden","for","anchor","updated","checked","headingElement","groupElement","textContent","events","ATTRIBUTE","toLowerCase"],"mappings":"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","file":"dropdown2.js","sourcesContent":["'use strict';\n\nimport './i18n';\nimport './spinner';\nimport $ from './jquery';\nimport template from 'skatejs-template-html';\nimport * as deprecate from './internal/deprecation';\nimport * as logger from './internal/log';\nimport { debounceImmediate } from './debounce';\nimport { supportsVoiceOver } from './internal/browser';\nimport Alignment from './internal/alignment';\nimport CustomEvent from './polyfills/custom-event';\nimport keyCode from './key-code';\nimport layer from './layer';\nimport state from './internal/state';\nimport skate from './internal/skate';\nimport escapeHtml from './escape-html';\n\nfunction isChecked(el) {\n return $(el).is('.checked, .aui-dropdown2-checked, [aria-checked=\"true\"]');\n}\n\nfunction getTrigger(control) {\n return control._triggeringElement || document.querySelector('[aria-controls=\"' + control.id + '\"]');\n}\n\nfunction doIfTrigger(triggerable, callback) {\n var trigger = getTrigger(triggerable);\n\n if (trigger) {\n callback(trigger);\n }\n}\n\nfunction setDropdownTriggerActiveState(trigger, isActive) {\n var $trigger = $(trigger);\n\n if (isActive) {\n $trigger.attr('aria-expanded', 'true');\n $trigger.addClass('active aui-dropdown2-active');\n } else {\n $trigger.attr('aria-expanded', 'false');\n $trigger.removeClass('active aui-dropdown2-active');\n }\n}\n\n// LOADING STATES\nvar UNLOADED = 'unloaded';\nvar LOADING = 'loading';\nvar ERROR = 'error';\nvar SUCCESS = 'success';\n\n\n// ASYNC DROPDOWN FUNCTIONS\n\nfunction makeAsyncDropdownContents (json) {\n var dropdownContents = json.map(function makeSection (sectionData) {\n var sectionItemsHtml = sectionData.items.map(function makeSectionItem (itemData) {\n function makeBooleanAttribute (attr) {\n return itemData[attr] ? `${attr} =\"true\"` : '';\n }\n\n function makeAttribute (attr) {\n return itemData[attr] ? `${attr}=\"${itemData[attr]}\"` : '';\n }\n\n var tagName = 'aui-item-' + itemData.type;\n var itemHtml = `\n <${tagName} ${makeAttribute('for')} ${makeAttribute('href')} ${makeBooleanAttribute('interactive')}\n ${makeBooleanAttribute('checked')} ${makeBooleanAttribute('disabled')} ${makeBooleanAttribute('hidden')}>\n ${escapeHtml(itemData.content)}\n </${tagName}>`;\n\n return itemHtml;\n }).join('');\n\n var sectionAttributes = sectionData.label ? `label=\"${sectionData.label}\"` : '';\n var sectionHtml = `\n <aui-section ${sectionAttributes}>\n ${sectionItemsHtml}\n </aui-section>`;\n\n return sectionHtml;\n }).join('\\n');\n\n return dropdownContents;\n}\n\nfunction setDropdownContents (dropdown, json) {\n state(dropdown).set('loading-state', SUCCESS);\n template.wrap(dropdown).innerHTML = makeAsyncDropdownContents(json);\n skate.init(dropdown);\n}\n\nfunction setDropdownErrorState (dropdown) {\n state(dropdown).set('loading-state', ERROR);\n state(dropdown).set('hasErrorBeenShown', dropdown.isVisible());\n template.wrap(dropdown).innerHTML = `\n <div class=\"aui-message aui-message-error aui-dropdown-error\">\n <p>${AJS.I18n.getText('aui.dropdown.async.error')}</p>\n </div>\n `;\n}\n\nfunction setDropdownLoadingState (dropdown) {\n state(dropdown).set('loading-state', LOADING);\n state(dropdown).set('hasErrorBeenShown', false);\n\n doIfTrigger(dropdown, function (trigger) {\n trigger.setAttribute('aria-busy', 'true');\n });\n\n template.wrap(dropdown).innerHTML = `\n <div class=\"aui-dropdown-loading\">\n <aui-spinner size=\"small\"></aui-spinner> ${AJS.I18n.getText('aui.dropdown.async.loading')}\n </div>\n `;\n}\n\nfunction setDropdownLoaded (dropdown) {\n doIfTrigger(dropdown, function (trigger) {\n trigger.setAttribute('aria-busy', 'false');\n });\n}\n\nfunction loadContentsIfAsync (dropdown) {\n if (!dropdown.src || state(dropdown).get('loading-state') === LOADING) {\n return;\n }\n\n setDropdownLoadingState(dropdown);\n\n $.ajax(dropdown.src)\n .done(function (json, status, xhr) {\n var isValidStatus = xhr.status === 200;\n if (isValidStatus) {\n setDropdownContents(dropdown, json);\n } else {\n setDropdownErrorState(dropdown);\n }\n })\n .fail(function () {\n setDropdownErrorState(dropdown);\n })\n .always(function () {\n setDropdownLoaded(dropdown);\n });\n}\n\nfunction loadContentWhenMouseEnterTrigger(dropdown) {\n var isDropdownUnloaded = state(dropdown).get('loading-state') === UNLOADED;\n var hasCurrentErrorBeenShown = state(dropdown).get('hasErrorBeenShown');\n if (isDropdownUnloaded || hasCurrentErrorBeenShown && !dropdown.isVisible()) {\n loadContentsIfAsync(dropdown);\n }\n}\n\nfunction loadContentWhenMenuShown(dropdown) {\n var isDropdownUnloaded = state(dropdown).get('loading-state') === UNLOADED;\n var hasCurrentErrorBeenShown = state(dropdown).get('hasErrorBeenShown');\n if (isDropdownUnloaded || hasCurrentErrorBeenShown) {\n loadContentsIfAsync(dropdown);\n }\n if (state(dropdown).get('loading-state') === ERROR) {\n state(dropdown).set('hasErrorBeenShown', true);\n }\n}\n\n\n// The dropdown's trigger\n// ----------------------\n\nfunction triggerCreated (trigger) {\n var dropdownID = trigger.getAttribute('aria-controls');\n\n if (!dropdownID) {\n dropdownID = trigger.getAttribute('aria-owns');\n\n if (!dropdownID) {\n logger.error('Dropdown triggers need either a \"aria-owns\" or \"aria-controls\" attribute');\n } else {\n trigger.removeAttribute('aria-owns');\n trigger.setAttribute('aria-controls', dropdownID);\n }\n }\n\n trigger.setAttribute('aria-haspopup', true);\n trigger.setAttribute('aria-expanded', false);\n\n const shouldSetHref = trigger.nodeName === 'A' && !trigger.href;\n if (shouldSetHref) {\n trigger.setAttribute('href', '#' + dropdownID);\n }\n\n function handleIt(e) {\n e.preventDefault();\n\n if (!trigger.isEnabled()) {\n return;\n }\n\n var dropdown = document.getElementById(dropdownID);\n\n // AUI-4271 - Maintains legacy integration with parent elements.\n const $trigger = $(trigger);\n if ($trigger.parent().hasClass('aui-buttons')) {\n dropdown.classList.add('aui-dropdown2-in-buttons');\n }\n if ($trigger.parents().hasClass('aui-header')) {\n dropdown.classList.add('aui-dropdown2-in-header');\n }\n\n dropdown.toggle(e);\n dropdown.isSubmenu = trigger.hasSubmenu();\n\n return dropdown;\n }\n\n function handleMouseEnter(e) {\n e.preventDefault();\n\n if (!trigger.isEnabled()) {\n return;\n }\n\n var dropdown = document.getElementById(dropdownID);\n loadContentWhenMouseEnterTrigger(dropdown);\n\n if (trigger.hasSubmenu()) {\n dropdown.show(e);\n dropdown.isSubmenu = trigger.hasSubmenu();\n }\n\n return dropdown;\n }\n\n function handleKeydown(e) {\n var normalInvoke = (e.keyCode === keyCode.ENTER || e.keyCode === keyCode.SPACE);\n var submenuInvoke = (e.keyCode === keyCode.RIGHT && trigger.hasSubmenu());\n var rootMenuInvoke = ((e.keyCode === keyCode.UP || e.keyCode === keyCode.DOWN) && !trigger.hasSubmenu());\n\n if (normalInvoke || submenuInvoke || rootMenuInvoke) {\n var dropdown = handleIt(e);\n\n if (dropdown) {\n dropdown.focusItem(0);\n }\n }\n }\n\n $(trigger)\n .on('aui-button-invoke', handleIt)\n .on('click', handleIt)\n .on('keydown', handleKeydown)\n .on('mouseenter', handleMouseEnter)\n ;\n}\n\nvar triggerPrototype = {\n disable: function () {\n this.setAttribute('aria-disabled', 'true');\n },\n\n enable: function () {\n this.setAttribute('aria-disabled', 'false');\n },\n\n isEnabled: function () {\n return this.getAttribute('aria-disabled') !== 'true';\n },\n\n hasSubmenu: function () {\n var triggerClasses = (this.className || '').split(/\\s+/);\n return triggerClasses.indexOf('aui-dropdown2-sub-trigger') !== -1;\n }\n};\n\nskate('aui-dropdown2-trigger', {\n type: skate.type.CLASSNAME,\n created: triggerCreated,\n prototype: triggerPrototype\n});\n\n//To remove at a later date. Some dropdown triggers initialise lazily, so we need to listen for mousedown\n//and synchronously init before the click event is fired.\n//TODO: delete in AUI 8.0.0, see AUI-2868\nfunction bindLazyTriggerInitialisation() {\n $(document).on('mousedown', '.aui-dropdown2-trigger', function () {\n var isElementSkated = this.hasAttribute('resolved');\n if (!isElementSkated) {\n skate.init(this);\n var lazyDeprecate = deprecate.getMessageLogger('Dropdown2 lazy initialisation', {\n removeInVersion: '8.0.0',\n alternativeName: 'initialisation on DOM insertion',\n sinceVersion: '5.8.0',\n extraInfo: 'Dropdown2 triggers should have all necessary attributes on DOM insertion',\n deprecationType: 'JS'\n });\n lazyDeprecate();\n }\n });\n}\n\nbindLazyTriggerInitialisation();\n\nskate('aui-dropdown2-sub-trigger', {\n type: skate.type.CLASSNAME,\n created: function (trigger) {\n trigger.className += ' aui-dropdown2-trigger';\n skate.init(trigger);\n }\n});\n\n\n// Dropdown trigger groups\n// -----------------------\n\n$(document).on('mouseenter', '.aui-dropdown2-trigger-group a, .aui-dropdown2-trigger-group button', function (e) {\n const $item = $(e.currentTarget);\n\n if ($item.is('.aui-dropdown2-active')) {\n return; // No point doing anything if we're hovering over the already-active item trigger.\n }\n\n if ($item.closest('.aui-dropdown2').length) {\n return; // We don't want to deal with dropdown items, just the potential triggers in the group.\n }\n\n const $triggerGroup = $item.closest('.aui-dropdown2-trigger-group');\n\n const $groupActiveTrigger = $triggerGroup.find('.aui-dropdown2-active');\n if ($groupActiveTrigger.length && $item.is('.aui-dropdown2-trigger')) {\n $groupActiveTrigger.blur(); // Remove focus from the previously opened menu.\n $item.trigger('aui-button-invoke'); // Open this trigger's menu.\n e.preventDefault();\n }\n\n const $groupFocusedTrigger = $triggerGroup.find(':focus');\n if ($groupFocusedTrigger.length && $item.is('.aui-dropdown2-trigger')) {\n $groupFocusedTrigger.blur();\n }\n});\n\n\n// Dropdown items\n// --------------\n\nfunction getDropdownItems (dropdown, filter) {\n return $(dropdown)\n .find([\n // Legacy markup.\n '> ul > li',\n '> .aui-dropdown2-section > ul > li',\n // Accessible markup.\n '> div[role] > .aui-dropdown2-section > div[role=\"group\"] > ul[role] > li[role]',\n // Web component.\n 'aui-item-link',\n 'aui-item-checkbox',\n 'aui-item-radio'\n ].join(', '))\n .filter(filter)\n .children('a, button, [role=\"checkbox\"], [role=\"menuitemcheckbox\"], [role=\"radio\"], [role=\"menuitemradio\"]');\n}\n\nfunction getAllDropdownItems (dropdown) {\n return getDropdownItems(dropdown, function () {\n return true;\n });\n}\n\nfunction getVisibleDropdownItems (dropdown) {\n return getDropdownItems(dropdown, function () {\n return this.className.indexOf('hidden') === -1 && !this.hasAttribute('hidden');\n });\n}\n\nfunction amendDropdownItem (item) {\n var $item = $(item);\n\n $item.attr('tabindex', '-1');\n\n /**\n * Honouring the documentation.\n * @link https://docs.atlassian.com/aui/latest/docs/dropdown2.html\n */\n if ($item.hasClass('aui-dropdown2-disabled') || $item.parent().hasClass('aui-dropdown2-hidden')) {\n $item.attr('aria-disabled', true);\n }\n}\n\nfunction amendDropdownContent (dropdown) {\n // Add assistive semantics to each dropdown item\n getAllDropdownItems(dropdown).each(function () {\n amendDropdownItem(this);\n });\n}\n\n/**\n * Honours behaviour for code written using only the legacy class names.\n * To maintain old behaviour (i.e., remove the 'hidden' class and the item will become un-hidden)\n * whilst allowing our code to only depend on the new classes, we need to\n * keep the state of the DOM in sync with legacy classes.\n *\n * Calling this function will add the new namespaced classes to elements with legacy names.\n * @returns {Function} a function to remove the new namespaced classes, only from the elements they were added to.\n */\nfunction migrateAndSyncLegacyClassNames (dropdown) {\n var $dropdown = $(dropdown);\n\n // Migrate away from legacy class names\n var $hiddens = $dropdown.find('.hidden').addClass('aui-dropdown2-hidden');\n var $disableds = $dropdown.find('.disabled').addClass('aui-dropdown2-disabled');\n var $interactives = $dropdown.find('.interactive').addClass('aui-dropdown2-interactive');\n\n return function revertToOriginalMarkup () {\n $hiddens.removeClass('aui-dropdown2-hidden');\n $disableds.removeClass('aui-dropdown2-disabled');\n $interactives.removeClass('aui-dropdown2-interactive');\n };\n}\n\n\n// The Dropdown itself\n// -------------------\n\nfunction setLayerAlignment(dropdown, trigger) {\n var hasSubmenu = trigger && trigger.hasSubmenu && trigger.hasSubmenu();\n var hasSubmenuAlignment = dropdown.getAttribute('data-aui-alignment') === 'submenu auto';\n\n if (!hasSubmenu && hasSubmenuAlignment) {\n restorePreviousAlignment(dropdown);\n }\n var hasAnyAlignment = dropdown.hasAttribute('data-aui-alignment');\n\n if (hasSubmenu && !hasSubmenuAlignment) {\n saveCurrentAlignment(dropdown);\n dropdown.setAttribute('data-aui-alignment', 'submenu auto');\n dropdown.setAttribute('data-aui-alignment-static', true);\n } else if (!hasAnyAlignment) {\n dropdown.setAttribute('data-aui-alignment', 'bottom auto');\n dropdown.setAttribute('data-aui-alignment-static', true);\n }\n\n if (dropdown._auiAlignment) {\n dropdown._auiAlignment.destroy();\n }\n\n dropdown._auiAlignment = new Alignment(dropdown, trigger);\n\n dropdown._auiAlignment.enable();\n}\n\nfunction saveCurrentAlignment(dropdown) {\n var $dropdown = $(dropdown);\n if (dropdown.hasAttribute('data-aui-alignment')) {\n $dropdown.data('previous-data-aui-alignment', dropdown.getAttribute('data-aui-alignment'));\n }\n $dropdown.data('had-data-aui-alignment-static', dropdown.hasAttribute('data-aui-alignment-static'));\n}\n\nfunction restorePreviousAlignment(dropdown) {\n var $dropdown = $(dropdown);\n\n var previousAlignment = $dropdown.data('previous-data-aui-alignment');\n if (previousAlignment) {\n dropdown.setAttribute('data-aui-alignment', previousAlignment);\n } else {\n dropdown.removeAttribute('data-aui-alignment');\n }\n $dropdown.removeData('previous-data-aui-alignment');\n\n if (!$dropdown.data('had-data-aui-alignment-static')) {\n dropdown.removeAttribute('data-aui-alignment-static');\n }\n $dropdown.removeData('had-data-aui-alignment-static');\n}\n\nfunction getDropdownHideLocation(dropdown, trigger) {\n var possibleHome = trigger.getAttribute('data-dropdown2-hide-location');\n return document.getElementById(possibleHome) || dropdown.parentNode;\n}\n\nvar keyboardClose = false;\nfunction keyboardCloseDetected () {\n keyboardClose = true;\n}\n\nfunction wasProbablyClosedViaKeyboard () {\n var result = (keyboardClose === true);\n keyboardClose = false;\n return result;\n}\n\nfunction bindDropdownBehaviourToLayer(dropdown) {\n layer(dropdown);\n\n\n dropdown.addEventListener('aui-layer-show', function () {\n $(dropdown).trigger('aui-dropdown2-show');\n\n dropdown._syncClasses = migrateAndSyncLegacyClassNames(dropdown);\n\n amendDropdownContent(this);\n\n doIfTrigger(dropdown, function (trigger) {\n setDropdownTriggerActiveState(trigger, true);\n dropdown._returnTo = getDropdownHideLocation(dropdown, trigger);\n });\n });\n\n dropdown.addEventListener('aui-layer-hide', function () {\n $(dropdown).trigger('aui-dropdown2-hide');\n\n if (dropdown._syncClasses) {\n dropdown._syncClasses();\n delete dropdown._syncClasses;\n }\n\n if (dropdown._auiAlignment) {\n dropdown._auiAlignment.disable();\n dropdown._auiAlignment.destroy();\n }\n\n if (dropdown._returnTo) {\n if (dropdown.parentNode && dropdown.parentNode !== dropdown._returnTo) {\n dropdown._returnTo.appendChild(dropdown);\n }\n }\n\n $(dropdown).removeClass('aui-dropdown2-in-buttons');\n\n getVisibleDropdownItems(dropdown).removeClass('active aui-dropdown2-active');\n\n doIfTrigger(dropdown, function (trigger) {\n if (wasProbablyClosedViaKeyboard()) {\n trigger.focus();\n setDropdownTriggerActiveState(trigger, trigger.hasSubmenu && trigger.hasSubmenu());\n } else {\n setDropdownTriggerActiveState(trigger, false);\n }\n });\n\n // Gets set by submenu trigger invocation. Bad coupling point?\n delete dropdown.isSubmenu;\n dropdown._triggeringElement = null;\n });\n}\n\nfunction bindItemInteractionBehaviourToDropdown (dropdown) {\n var $dropdown = $(dropdown);\n\n $dropdown.on('keydown', function (e) {\n if (e.keyCode === keyCode.DOWN) {\n dropdown.focusNext();\n e.preventDefault();\n } else if (e.keyCode === keyCode.UP) {\n dropdown.focusPrevious();\n e.preventDefault();\n } else if (e.keyCode === keyCode.LEFT) {\n if (dropdown.isSubmenu) {\n keyboardCloseDetected();\n dropdown.hide(e);\n e.preventDefault();\n }\n } else if (e.keyCode === keyCode.ESCAPE) {\n // The closing will be handled by the LayerManager!\n keyboardCloseDetected();\n } else if (e.keyCode === keyCode.TAB) {\n keyboardCloseDetected();\n dropdown.hide(e);\n }\n });\n\n const hideIfNotSubmenuAndNotInteractive = function(e) {\n var $item = $(e.currentTarget);\n\n if ($item.attr('aria-disabled') === 'true') {\n e.preventDefault();\n return;\n }\n\n const isSubmenuTrigger = e.currentTarget.hasSubmenu && e.currentTarget.hasSubmenu();\n if (!isSubmenuTrigger && !$item.is('.aui-dropdown2-interactive')) {\n\n var theMenu = dropdown;\n do {\n var dd = layer(theMenu);\n theMenu = layer(theMenu).below();\n if (dd.$el.is('.aui-dropdown2')) {\n dd.hide(e);\n }\n } while (theMenu);\n }\n }\n\n $dropdown.on('click keydown', 'a, button, [role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"checkbox\"], [role=\"menuitemradio\"], [role=\"radio\"]', function (e) {\n const item = e.currentTarget;\n const $item = $(item);\n const eventKeyCode = e.keyCode;\n const isEnter = eventKeyCode === keyCode.ENTER;\n const isSpace = eventKeyCode === keyCode.SPACE;\n\n // AUI-4283: Accessibility - need to ignore enter on links/buttons so\n // that the dropdown remains visible to allow the click event to eventually fire.\n const itemIgnoresEnter = isEnter && $item.is('a[href], button');\n\n if (!itemIgnoresEnter && (e.type === 'click' || isEnter || isSpace)) {\n hideIfNotSubmenuAndNotInteractive(e);\n }\n });\n\n // close a submenus when the mouse moves over items other than its trigger\n $dropdown.on('mouseenter', 'a, button, [role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"checkbox\"], [role=\"menuitemradio\"], [role=\"radio\"]', function (e) {\n var item = e.currentTarget;\n var hasSubmenu = item.hasSubmenu && item.hasSubmenu();\n\n if (!e.isDefaultPrevented() && !hasSubmenu) {\n var maybeALayer = layer(dropdown).above();\n\n if (maybeALayer) {\n layer(maybeALayer).hide();\n }\n }\n });\n}\n\n$(window).on('resize', debounceImmediate(function () {\n $('.aui-dropdown2').each(function (index, dropdown) {\n skate.init(dropdown);\n if (dropdown.isVisible()){\n dropdown.hide();\n }\n });\n}, 1000));\n\n// Dropdowns\n// ---------\n\nfunction dropdownCreated (dropdown) {\n var $dropdown = $(dropdown);\n\n $dropdown.addClass('aui-dropdown2');\n\n // swap the inner div to presentation as application is only needed for Windows\n if (supportsVoiceOver()) {\n $dropdown.find('> div[role=\"application\"]').attr('role', 'presentation');\n }\n\n if (dropdown.hasAttribute('data-container')) {\n $dropdown.attr('data-aui-alignment-container', $dropdown.attr('data-container'));\n $dropdown.removeAttr('data-container');\n }\n\n bindDropdownBehaviourToLayer(dropdown);\n bindItemInteractionBehaviourToDropdown(dropdown);\n dropdown.hide();\n\n $(dropdown).delegate('.aui-dropdown2-checkbox:not(.disabled):not(.aui-dropdown2-disabled)', 'click keydown', function (e) {\n if (e.type === 'click' || e.keyCode === keyCode.ENTER || e.keyCode === keyCode.SPACE) {\n let checkbox = this;\n if (e.isDefaultPrevented()) {\n return;\n }\n if (checkbox.isInteractive()) {\n e.preventDefault();\n }\n if (checkbox.isEnabled()) {\n // toggle the checked state\n if (checkbox.isChecked()) {\n checkbox.uncheck();\n } else {\n checkbox.check();\n }\n }\n }\n });\n\n $(dropdown).delegate('.aui-dropdown2-radio:not(.checked):not(.aui-dropdown2-checked):not(.disabled):not(.aui-dropdown2-disabled)', 'click keydown', function (e) {\n if (e.type === 'click' || e.keyCode === keyCode.ENTER || e.keyCode === keyCode.SPACE) {\n let radio = this;\n if (e.isDefaultPrevented()) {\n return;\n }\n if (radio.isInteractive()) {\n e.preventDefault();\n }\n\n let $radio = $(this);\n if (this.isEnabled() && this.isChecked() === false) {\n // toggle the checked state\n $radio.closest('ul,[role=group]').find('.aui-dropdown2-checked').not(this).each(function () {\n this.uncheck();\n });\n radio.check();\n }\n }\n });\n}\n\nvar dropdownPrototype = {\n /**\n * Toggles the visibility of the dropdown menu\n */\n toggle: function (e) {\n if (this.isVisible()) {\n this.hide(e);\n } else {\n this.show(e);\n }\n },\n\n /**\n * Explicitly shows the menu\n *\n * @returns {HTMLElement}\n */\n show: function (e) {\n if (e && e.currentTarget && e.currentTarget.classList.contains('aui-dropdown2-trigger')) {\n this._triggeringElement = e.currentTarget;\n }\n layer(this).show();\n\n var dropdown = this;\n doIfTrigger(dropdown, function (trigger) {\n setLayerAlignment(dropdown, trigger);\n });\n\n return this;\n },\n\n /**\n * Explicitly hides the menu\n *\n * @returns {HTMLElement}\n */\n hide: function () {\n layer(this).hide();\n return this;\n },\n\n /**\n * Shifts explicit focus to the next available item in the menu\n *\n * @returns {undefined}\n */\n focusNext: function () {\n var $items = getVisibleDropdownItems(this);\n var selected = document.activeElement;\n var idx;\n\n if ($items.last()[0] !== selected) {\n idx = $items.toArray().indexOf(selected);\n this.focusItem($items.get(idx + 1));\n }\n },\n\n /**\n * Shifts explicit focus to the previous available item in the menu\n *\n * @returns {undefined}\n */\n focusPrevious: function () {\n var $items = getVisibleDropdownItems(this);\n var selected = document.activeElement;\n var idx;\n\n if ($items.first()[0] !== selected) {\n idx = $items.toArray().indexOf(selected);\n this.focusItem($items.get(idx - 1));\n }\n },\n\n /**\n * Shifts explicit focus to the menu item matching the index param\n */\n focusItem: function (item) {\n var $items = getVisibleDropdownItems(this);\n var $item;\n if (typeof item === 'number') {\n item = $items.get(item);\n }\n $item = $(item);\n $item.focus();\n $items.removeClass('active aui-dropdown2-active');\n $item.addClass('active aui-dropdown2-active');\n },\n\n /**\n * Checks whether or not the menu is currently displayed\n *\n * @returns {Boolean}\n */\n isVisible: function () {\n return layer(this).isVisible();\n }\n};\n\n// Web component API for dropdowns\n// -------------------------------\n\nvar disabledAttributeHandler = {\n created: function (element) {\n var a = element.children[0];\n a.setAttribute('aria-disabled', 'true');\n a.className += ' aui-dropdown2-disabled';\n },\n removed: function (element) {\n var a = element.children[0];\n a.setAttribute('aria-disabled', 'false');\n $(a).removeClass('aui-dropdown2-disabled');\n }\n};\n\nvar interactiveAttributeHandler = {\n created: function (element) {\n var a = element.children[0];\n a.className += ' aui-dropdown2-interactive';\n },\n removed: function (element) {\n var a = element.children[0];\n $(a).removeClass('aui-dropdown2-interactive');\n }\n};\n\nvar checkedAttributeHandler = {\n created: function (element) {\n var a = element.children[0];\n $(a).addClass('checked aui-dropdown2-checked');\n a.setAttribute('aria-checked', true);\n element.dispatchEvent(new CustomEvent('change', {bubbles: true}));\n },\n removed: function (element) {\n var a = element.children[0];\n $(a).removeClass('checked aui-dropdown2-checked');\n a.setAttribute('aria-checked', false);\n element.dispatchEvent(new CustomEvent('change', {bubbles: true}));\n }\n};\n\nvar hiddenAttributeHandler = {\n created: function (element) {\n disabledAttributeHandler.created(element);\n },\n removed: function (element) {\n disabledAttributeHandler.removed(element);\n }\n};\n\nvar stringAttributeHandlerGenerator = function(attrName) {\n return {\n fallback: function (element, change) {\n var a = element.children[0];\n a.setAttribute(attrName, change.newValue);\n },\n removed: function (element) {\n var a = element.children[0];\n a.removeAttribute(attrName);\n }\n }\n};\n\nskate('aui-item-link', {\n template: template(\n '<a role=\"menuitem\" tabindex=\"-1\"><content></content></a>'\n ),\n attributes: {\n disabled: disabledAttributeHandler,\n interactive: interactiveAttributeHandler,\n hidden: hiddenAttributeHandler,\n href: stringAttributeHandlerGenerator('href'),\n 'item-id': stringAttributeHandlerGenerator('id'),\n for: {\n created: function (element) {\n var anchor = element.children[0];\n anchor.setAttribute('aria-controls', element.getAttribute('for'));\n $(anchor).addClass('aui-dropdown2-sub-trigger');\n },\n updated: function (element) {\n var anchor = element.children[0];\n anchor.setAttribute('aria-controls', element.getAttribute('for'));\n },\n removed: function (element) {\n var anchor = element.children[0];\n anchor.removeAttribute('aria-controls');\n $(anchor).removeClass('aui-dropdown2-sub-trigger');\n }\n }\n }\n});\n\nskate('aui-item-checkbox', {\n template: template(\n '<span role=\"checkbox\" class=\"aui-dropdown2-checkbox\" tabindex=\"-1\"><content></content></span>'\n ),\n attributes: {\n 'item-id': stringAttributeHandlerGenerator('id'),\n disabled: disabledAttributeHandler,\n interactive: interactiveAttributeHandler,\n checked: checkedAttributeHandler,\n hidden: hiddenAttributeHandler\n }\n});\n\nskate('aui-item-radio', {\n template: template(\n '<span role=\"radio\" class=\"aui-dropdown2-radio\" tabindex=\"-1\"><content></content></span>'\n ),\n attributes: {\n 'item-id': stringAttributeHandlerGenerator('id'),\n disabled: disabledAttributeHandler,\n interactive: interactiveAttributeHandler,\n checked: checkedAttributeHandler,\n hidden: hiddenAttributeHandler\n }\n});\n\nskate('aui-section', {\n template: template(`\n <strong aria-role=\"presentation\" class=\"aui-dropdown2-heading\"></strong>\n <div role=\"group\">\n <content></content>\n </div>\n `),\n attributes: {\n label: function (element, data) {\n var headingElement = element.children[0];\n var groupElement = element.children[1];\n headingElement.textContent = data.newValue;\n groupElement.setAttribute('aria-label', data.newValue);\n }\n },\n created: function (element) {\n element.className += ' aui-dropdown2-section';\n element.setAttribute('role', 'presentation');\n }\n});\n\nskate('aui-dropdown-menu', {\n template: template(`\n <div role=\"application\">\n <content></content>\n </div>\n `),\n created: function (dropdown) {\n dropdown.setAttribute('role', 'menu');\n dropdown.className = 'aui-dropdown2 aui-style-default aui-layer';\n state(dropdown).set('loading-state', UNLOADED);\n // Now skate the .aui-dropdown2 behaviour.\n skate.init(dropdown);\n },\n attributes: {\n src: {}\n },\n prototype: dropdownPrototype,\n events: {\n 'aui-layer-show': loadContentWhenMenuShown\n }\n});\n\n// Legacy dropdown inits\n// ---------------------\n\nskate('aui-dropdown2', {\n type: skate.type.CLASSNAME,\n created: dropdownCreated,\n prototype: dropdownPrototype\n});\n\nskate('data-aui-dropdown2', {\n type: skate.type.ATTRIBUTE,\n created: dropdownCreated,\n prototype: dropdownPrototype\n});\n\n\n// Checkboxes and radios\n// ---------------------\n\nskate('aui-dropdown2-checkbox', {\n type: skate.type.CLASSNAME,\n\n created: function (checkbox) {\n var checked = isChecked(checkbox);\n if (checked) {\n $(checkbox).addClass('checked aui-dropdown2-checked');\n }\n checkbox.setAttribute('aria-checked', checked);\n checkbox.setAttribute('tabindex', '0');\n\n // swap from menuitemcheckbox to just plain checkbox for VoiceOver\n if (supportsVoiceOver()) {\n checkbox.setAttribute('role','checkbox');\n }\n },\n\n prototype: {\n isEnabled: function () {\n return !(this.getAttribute('aria-disabled') !== null && this.getAttribute('aria-disabled') === 'true');\n },\n\n isChecked: function () {\n return this.getAttribute('aria-checked') !== null && this.getAttribute('aria-checked') === 'true';\n },\n\n isInteractive: function () {\n return $(this).hasClass('aui-dropdown2-interactive');\n },\n\n uncheck: function () {\n if (this.parentNode.tagName.toLowerCase() === 'aui-item-checkbox') {\n this.parentNode.removeAttribute('checked');\n }\n this.setAttribute('aria-checked', 'false');\n $(this).removeClass('checked aui-dropdown2-checked');\n $(this).trigger('aui-dropdown2-item-uncheck');\n },\n\n check: function () {\n if (this.parentNode.tagName.toLowerCase() === 'aui-item-checkbox') {\n this.parentNode.setAttribute('checked', '');\n }\n this.setAttribute('aria-checked', 'true');\n $(this).addClass('checked aui-dropdown2-checked');\n $(this).trigger('aui-dropdown2-item-check');\n }\n }\n});\n\nskate('aui-dropdown2-radio', {\n type: skate.type.CLASSNAME,\n\n created: function (radio) {\n // add a dash of ARIA\n var checked = isChecked(radio);\n if (checked) {\n $(radio).addClass('checked aui-dropdown2-checked');\n }\n radio.setAttribute('aria-checked', checked);\n radio.setAttribute('tabindex', '0');\n\n // swap from menuitemradio to just plain radio for VoiceOver\n if (supportsVoiceOver()) {\n radio.setAttribute('role','radio');\n }\n },\n\n prototype: {\n isEnabled: function () {\n return !(this.getAttribute('aria-disabled') !== null && this.getAttribute('aria-disabled') === 'true');\n },\n\n isChecked: function () {\n return this.getAttribute('aria-checked') !== null && this.getAttribute('aria-checked') === 'true';\n },\n\n isInteractive: function () {\n return $(this).hasClass('aui-dropdown2-interactive');\n },\n\n uncheck: function () {\n if (this.parentNode.tagName.toLowerCase() === 'aui-item-radio') {\n this.parentNode.removeAttribute('checked');\n }\n this.setAttribute('aria-checked', 'false');\n $(this).removeClass('checked aui-dropdown2-checked');\n $(this).trigger('aui-dropdown2-item-uncheck');\n },\n\n check: function () {\n if (this.parentNode.tagName.toLowerCase() === 'aui-item-radio') {\n this.parentNode.setAttribute('checked', '');\n }\n this.setAttribute('aria-checked', 'true');\n $(this).addClass('checked aui-dropdown2-checked');\n $(this).trigger('aui-dropdown2-item-check');\n }\n }\n});\n"]}
1
+ {"version":3,"sources":["js/aui/dropdown2.js"],"names":["deprecate","logger","isChecked","el","is","getTrigger","control","_triggeringElement","document","querySelector","id","doIfTrigger","triggerable","callback","trigger","setDropdownTriggerActiveState","isActive","$trigger","attr","addClass","removeClass","UNLOADED","LOADING","ERROR","SUCCESS","makeAsyncDropdownContents","json","dropdownContents","map","makeSection","sectionData","sectionItemsHtml","items","makeSectionItem","itemData","makeBooleanAttribute","makeAttribute","tagName","type","itemHtml","content","join","sectionAttributes","label","sectionHtml","setDropdownContents","dropdown","set","template","wrap","innerHTML","skate","init","setDropdownErrorState","isVisible","AJS","I18n","getText","setDropdownLoadingState","setAttribute","setDropdownLoaded","loadContentsIfAsync","src","get","$","ajax","done","status","xhr","isValidStatus","fail","always","loadContentWhenMouseEnterTrigger","isDropdownUnloaded","hasCurrentErrorBeenShown","loadContentWhenMenuShown","triggerCreated","dropdownID","getAttribute","error","removeAttribute","shouldSetHref","nodeName","href","handleIt","e","preventDefault","isEnabled","getElementById","parent","hasClass","classList","add","parents","toggle","isSubmenu","hasSubmenu","handleMouseEnter","show","handleKeydown","normalInvoke","keyCode","ENTER","SPACE","submenuInvoke","RIGHT","rootMenuInvoke","UP","DOWN","focusItem","on","triggerPrototype","disable","enable","triggerClasses","className","split","indexOf","CLASSNAME","created","prototype","bindLazyTriggerInitialisation","isElementSkated","hasAttribute","lazyDeprecate","getMessageLogger","removeInVersion","alternativeName","sinceVersion","extraInfo","deprecationType","$item","currentTarget","closest","length","$triggerGroup","$groupActiveTrigger","find","blur","$groupFocusedTrigger","getDropdownItems","filter","children","getAllDropdownItems","getVisibleDropdownItems","amendDropdownItem","item","amendDropdownContent","each","migrateAndSyncLegacyClassNames","$dropdown","$hiddens","$disableds","$interactives","revertToOriginalMarkup","setLayerAlignment","hasSubmenuAlignment","restorePreviousAlignment","hasAnyAlignment","saveCurrentAlignment","_auiAlignment","destroy","Alignment","data","previousAlignment","removeData","getDropdownHideLocation","possibleHome","parentNode","keyboardClose","keyboardCloseDetected","wasProbablyClosedViaKeyboard","result","bindDropdownBehaviourToLayer","addEventListener","_syncClasses","_returnTo","appendChild","focus","bindItemInteractionBehaviourToDropdown","focusNext","focusPrevious","LEFT","hide","ESCAPE","TAB","hideIfNotSubmenuAndNotInteractive","isSubmenuTrigger","theMenu","dd","below","$el","eventKeyCode","isEnter","isSpace","itemIgnoresEnter","isDefaultPrevented","maybeALayer","above","window","index","dropdownCreated","removeAttr","delegate","checkbox","isInteractive","uncheck","check","radio","$radio","not","dropdownPrototype","contains","$items","selected","activeElement","idx","last","toArray","first","disabledAttributeHandler","element","a","removed","interactiveAttributeHandler","checkedAttributeHandler","dispatchEvent","CustomEvent","bubbles","hiddenAttributeHandler","stringAttributeHandlerGenerator","attrName","fallback","change","newValue","attributes","disabled","interactive","hidden","for","anchor","updated","checked","headingElement","groupElement","textContent","events","ATTRIBUTE","toLowerCase"],"mappings":"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","file":"dropdown2.js","sourcesContent":["'use strict';\n\nimport './i18n';\nimport './spinner';\nimport $ from './jquery';\nimport template from 'skatejs-template-html';\nimport * as deprecate from './internal/deprecation';\nimport * as logger from './internal/log';\nimport { debounceImmediate } from './debounce';\nimport { supportsVoiceOver } from './internal/browser';\nimport Alignment from './internal/alignment';\nimport CustomEvent from './polyfills/custom-event';\nimport keyCode from './key-code';\nimport layer from './layer';\nimport state from './internal/state';\nimport skate from './internal/skate';\nimport escapeHtml from './escape-html';\n\nfunction isChecked(el) {\n return $(el).is('.checked, .aui-dropdown2-checked, [aria-checked=\"true\"]');\n}\n\nfunction getTrigger(control) {\n return control._triggeringElement || document.querySelector('[aria-controls=\"' + control.id + '\"]');\n}\n\nfunction doIfTrigger(triggerable, callback) {\n var trigger = getTrigger(triggerable);\n\n if (trigger) {\n callback(trigger);\n }\n}\n\nfunction setDropdownTriggerActiveState(trigger, isActive) {\n var $trigger = $(trigger);\n\n if (isActive) {\n $trigger.attr('aria-expanded', 'true');\n $trigger.addClass('active aui-dropdown2-active');\n } else {\n $trigger.attr('aria-expanded', 'false');\n $trigger.removeClass('active aui-dropdown2-active');\n }\n}\n\n// LOADING STATES\nvar UNLOADED = 'unloaded';\nvar LOADING = 'loading';\nvar ERROR = 'error';\nvar SUCCESS = 'success';\n\n\n// ASYNC DROPDOWN FUNCTIONS\n\nfunction makeAsyncDropdownContents (json) {\n var dropdownContents = json.map(function makeSection (sectionData) {\n var sectionItemsHtml = sectionData.items.map(function makeSectionItem (itemData) {\n function makeBooleanAttribute (attr) {\n return itemData[attr] ? `${attr} =\"true\"` : '';\n }\n\n function makeAttribute (attr) {\n return itemData[attr] ? `${attr}=\"${itemData[attr]}\"` : '';\n }\n\n var tagName = 'aui-item-' + itemData.type;\n var itemHtml = `\n <${tagName} ${makeAttribute('for')} ${makeAttribute('href')} ${makeBooleanAttribute('interactive')}\n ${makeBooleanAttribute('checked')} ${makeBooleanAttribute('disabled')} ${makeBooleanAttribute('hidden')}>\n ${escapeHtml(itemData.content)}\n </${tagName}>`;\n\n return itemHtml;\n }).join('');\n\n var sectionAttributes = sectionData.label ? `label=\"${sectionData.label}\"` : '';\n var sectionHtml = `\n <aui-section ${sectionAttributes}>\n ${sectionItemsHtml}\n </aui-section>`;\n\n return sectionHtml;\n }).join('\\n');\n\n return dropdownContents;\n}\n\nfunction setDropdownContents (dropdown, json) {\n state(dropdown).set('loading-state', SUCCESS);\n template.wrap(dropdown).innerHTML = makeAsyncDropdownContents(json);\n skate.init(dropdown);\n}\n\nfunction setDropdownErrorState (dropdown) {\n state(dropdown).set('loading-state', ERROR);\n state(dropdown).set('hasErrorBeenShown', dropdown.isVisible());\n template.wrap(dropdown).innerHTML = `\n <div class=\"aui-message aui-message-error aui-dropdown-error\">\n <p>${AJS.I18n.getText('aui.dropdown.async.error')}</p>\n </div>\n `;\n}\n\nfunction setDropdownLoadingState (dropdown) {\n state(dropdown).set('loading-state', LOADING);\n state(dropdown).set('hasErrorBeenShown', false);\n\n doIfTrigger(dropdown, function (trigger) {\n trigger.setAttribute('aria-busy', 'true');\n });\n\n template.wrap(dropdown).innerHTML = `\n <div class=\"aui-dropdown-loading\">\n <aui-spinner size=\"small\"></aui-spinner> ${AJS.I18n.getText('aui.dropdown.async.loading')}\n </div>\n `;\n}\n\nfunction setDropdownLoaded (dropdown) {\n doIfTrigger(dropdown, function (trigger) {\n trigger.setAttribute('aria-busy', 'false');\n });\n}\n\nfunction loadContentsIfAsync (dropdown) {\n if (!dropdown.src || state(dropdown).get('loading-state') === LOADING) {\n return;\n }\n\n setDropdownLoadingState(dropdown);\n\n $.ajax(dropdown.src)\n .done(function (json, status, xhr) {\n var isValidStatus = xhr.status === 200;\n if (isValidStatus) {\n setDropdownContents(dropdown, json);\n } else {\n setDropdownErrorState(dropdown);\n }\n })\n .fail(function () {\n setDropdownErrorState(dropdown);\n })\n .always(function () {\n setDropdownLoaded(dropdown);\n });\n}\n\nfunction loadContentWhenMouseEnterTrigger(dropdown) {\n var isDropdownUnloaded = state(dropdown).get('loading-state') === UNLOADED;\n var hasCurrentErrorBeenShown = state(dropdown).get('hasErrorBeenShown');\n if (isDropdownUnloaded || hasCurrentErrorBeenShown && !dropdown.isVisible()) {\n loadContentsIfAsync(dropdown);\n }\n}\n\nfunction loadContentWhenMenuShown(dropdown) {\n var isDropdownUnloaded = state(dropdown).get('loading-state') === UNLOADED;\n var hasCurrentErrorBeenShown = state(dropdown).get('hasErrorBeenShown');\n if (isDropdownUnloaded || hasCurrentErrorBeenShown) {\n loadContentsIfAsync(dropdown);\n }\n if (state(dropdown).get('loading-state') === ERROR) {\n state(dropdown).set('hasErrorBeenShown', true);\n }\n}\n\n\n// The dropdown's trigger\n// ----------------------\n\nfunction triggerCreated (trigger) {\n var dropdownID = trigger.getAttribute('aria-controls');\n\n if (!dropdownID) {\n dropdownID = trigger.getAttribute('aria-owns');\n\n if (!dropdownID) {\n logger.error('Dropdown triggers need either a \"aria-owns\" or \"aria-controls\" attribute');\n } else {\n trigger.removeAttribute('aria-owns');\n trigger.setAttribute('aria-controls', dropdownID);\n }\n }\n\n trigger.setAttribute('aria-haspopup', true);\n trigger.setAttribute('aria-expanded', false);\n\n const shouldSetHref = trigger.nodeName === 'A' && !trigger.href;\n if (shouldSetHref) {\n trigger.setAttribute('href', '#' + dropdownID);\n }\n\n function handleIt(e) {\n e.preventDefault();\n\n if (!trigger.isEnabled()) {\n return;\n }\n\n var dropdown = document.getElementById(dropdownID);\n\n // AUI-4271 - Maintains legacy integration with parent elements.\n const $trigger = $(trigger);\n if ($trigger.parent().hasClass('aui-buttons')) {\n dropdown.classList.add('aui-dropdown2-in-buttons');\n }\n if ($trigger.parents().hasClass('aui-header')) {\n dropdown.classList.add('aui-dropdown2-in-header');\n }\n\n dropdown.toggle(e);\n dropdown.isSubmenu = trigger.hasSubmenu();\n\n return dropdown;\n }\n\n function handleMouseEnter(e) {\n e.preventDefault();\n\n if (!trigger.isEnabled()) {\n return;\n }\n\n var dropdown = document.getElementById(dropdownID);\n loadContentWhenMouseEnterTrigger(dropdown);\n\n if (trigger.hasSubmenu()) {\n dropdown.show(e);\n dropdown.isSubmenu = trigger.hasSubmenu();\n }\n\n return dropdown;\n }\n\n function handleKeydown(e) {\n var normalInvoke = (e.keyCode === keyCode.ENTER || e.keyCode === keyCode.SPACE);\n var submenuInvoke = (e.keyCode === keyCode.RIGHT && trigger.hasSubmenu());\n var rootMenuInvoke = ((e.keyCode === keyCode.UP || e.keyCode === keyCode.DOWN) && !trigger.hasSubmenu());\n\n if (normalInvoke || submenuInvoke || rootMenuInvoke) {\n var dropdown = handleIt(e);\n\n if (dropdown) {\n dropdown.focusItem(0);\n }\n }\n }\n\n $(trigger)\n .on('aui-button-invoke', handleIt)\n .on('click', handleIt)\n .on('keydown', handleKeydown)\n .on('mouseenter', handleMouseEnter)\n ;\n}\n\nvar triggerPrototype = {\n disable: function () {\n this.setAttribute('aria-disabled', 'true');\n },\n\n enable: function () {\n this.setAttribute('aria-disabled', 'false');\n },\n\n isEnabled: function () {\n return this.getAttribute('aria-disabled') !== 'true';\n },\n\n hasSubmenu: function () {\n var triggerClasses = (this.className || '').split(/\\s+/);\n return triggerClasses.indexOf('aui-dropdown2-sub-trigger') !== -1;\n }\n};\n\nskate('aui-dropdown2-trigger', {\n type: skate.type.CLASSNAME,\n created: triggerCreated,\n prototype: triggerPrototype\n});\n\n//To remove at a later date. Some dropdown triggers initialise lazily, so we need to listen for mousedown\n//and synchronously init before the click event is fired.\n//TODO: delete in AUI 8.0.0, see AUI-2868\nfunction bindLazyTriggerInitialisation() {\n $(document).on('mousedown', '.aui-dropdown2-trigger', function () {\n var isElementSkated = this.hasAttribute('resolved');\n if (!isElementSkated) {\n skate.init(this);\n var lazyDeprecate = deprecate.getMessageLogger('Dropdown2 lazy initialisation', {\n removeInVersion: '8.0.0',\n alternativeName: 'initialisation on DOM insertion',\n sinceVersion: '5.8.0',\n extraInfo: 'Dropdown2 triggers should have all necessary attributes on DOM insertion',\n deprecationType: 'JS'\n });\n lazyDeprecate();\n }\n });\n}\n\nbindLazyTriggerInitialisation();\n\nskate('aui-dropdown2-sub-trigger', {\n type: skate.type.CLASSNAME,\n created: function (trigger) {\n trigger.className += ' aui-dropdown2-trigger';\n skate.init(trigger);\n }\n});\n\n\n// Dropdown trigger groups\n// -----------------------\n\n$(document).on('mouseenter', '.aui-dropdown2-trigger-group a, .aui-dropdown2-trigger-group button', function (e) {\n const $item = $(e.currentTarget);\n\n if ($item.is('.aui-dropdown2-active')) {\n return; // No point doing anything if we're hovering over the already-active item trigger.\n }\n\n if ($item.closest('.aui-dropdown2').length) {\n return; // We don't want to deal with dropdown items, just the potential triggers in the group.\n }\n\n const $triggerGroup = $item.closest('.aui-dropdown2-trigger-group');\n\n const $groupActiveTrigger = $triggerGroup.find('.aui-dropdown2-active');\n if ($groupActiveTrigger.length && $item.is('.aui-dropdown2-trigger')) {\n $groupActiveTrigger.blur(); // Remove focus from the previously opened menu.\n $item.trigger('aui-button-invoke'); // Open this trigger's menu.\n e.preventDefault();\n }\n\n const $groupFocusedTrigger = $triggerGroup.find(':focus');\n if ($groupFocusedTrigger.length && $item.is('.aui-dropdown2-trigger')) {\n $groupFocusedTrigger.blur();\n }\n});\n\n\n// Dropdown items\n// --------------\n\nfunction getDropdownItems (dropdown, filter) {\n return $(dropdown)\n .find([\n // Legacy markup.\n '> ul > li',\n '> .aui-dropdown2-section > ul > li',\n // Accessible markup.\n '> div[role] > .aui-dropdown2-section > div[role=\"group\"] > ul[role] > li[role]',\n // Web component.\n 'aui-item-link',\n 'aui-item-checkbox',\n 'aui-item-radio'\n ].join(', '))\n .filter(filter)\n .children('a, button, [role=\"checkbox\"], [role=\"menuitemcheckbox\"], [role=\"radio\"], [role=\"menuitemradio\"]');\n}\n\nfunction getAllDropdownItems (dropdown) {\n return getDropdownItems(dropdown, function () {\n return true;\n });\n}\n\nfunction getVisibleDropdownItems (dropdown) {\n return getDropdownItems(dropdown, function () {\n return this.className.indexOf('hidden') === -1 && !this.hasAttribute('hidden');\n });\n}\n\nfunction amendDropdownItem (item) {\n var $item = $(item);\n\n $item.attr('tabindex', '-1');\n\n /**\n * Honouring the documentation.\n * @link https://docs.atlassian.com/aui/latest/docs/dropdown2.html\n */\n if ($item.hasClass('aui-dropdown2-disabled') || $item.parent().hasClass('aui-dropdown2-hidden')) {\n $item.attr('aria-disabled', true);\n }\n}\n\nfunction amendDropdownContent (dropdown) {\n // Add assistive semantics to each dropdown item\n getAllDropdownItems(dropdown).each(function () {\n amendDropdownItem(this);\n });\n}\n\n/**\n * Honours behaviour for code written using only the legacy class names.\n * To maintain old behaviour (i.e., remove the 'hidden' class and the item will become un-hidden)\n * whilst allowing our code to only depend on the new classes, we need to\n * keep the state of the DOM in sync with legacy classes.\n *\n * Calling this function will add the new namespaced classes to elements with legacy names.\n * @returns {Function} a function to remove the new namespaced classes, only from the elements they were added to.\n */\nfunction migrateAndSyncLegacyClassNames (dropdown) {\n var $dropdown = $(dropdown);\n\n // Migrate away from legacy class names\n var $hiddens = $dropdown.find('.hidden').addClass('aui-dropdown2-hidden');\n var $disableds = $dropdown.find('.disabled').addClass('aui-dropdown2-disabled');\n var $interactives = $dropdown.find('.interactive').addClass('aui-dropdown2-interactive');\n\n return function revertToOriginalMarkup () {\n $hiddens.removeClass('aui-dropdown2-hidden');\n $disableds.removeClass('aui-dropdown2-disabled');\n $interactives.removeClass('aui-dropdown2-interactive');\n };\n}\n\n\n// The Dropdown itself\n// -------------------\n\nfunction setLayerAlignment(dropdown, trigger) {\n var hasSubmenu = trigger && trigger.hasSubmenu && trigger.hasSubmenu();\n var hasSubmenuAlignment = dropdown.getAttribute('data-aui-alignment') === 'submenu auto';\n\n if (!hasSubmenu && hasSubmenuAlignment) {\n restorePreviousAlignment(dropdown);\n }\n var hasAnyAlignment = dropdown.hasAttribute('data-aui-alignment');\n\n if (hasSubmenu && !hasSubmenuAlignment) {\n saveCurrentAlignment(dropdown);\n dropdown.setAttribute('data-aui-alignment', 'submenu auto');\n dropdown.setAttribute('data-aui-alignment-static', true);\n } else if (!hasAnyAlignment) {\n dropdown.setAttribute('data-aui-alignment', 'bottom auto');\n dropdown.setAttribute('data-aui-alignment-static', true);\n }\n\n if (dropdown._auiAlignment) {\n dropdown._auiAlignment.destroy();\n }\n\n dropdown._auiAlignment = new Alignment(dropdown, trigger);\n\n dropdown._auiAlignment.enable();\n}\n\nfunction saveCurrentAlignment(dropdown) {\n var $dropdown = $(dropdown);\n if (dropdown.hasAttribute('data-aui-alignment')) {\n $dropdown.data('previous-data-aui-alignment', dropdown.getAttribute('data-aui-alignment'));\n }\n $dropdown.data('had-data-aui-alignment-static', dropdown.hasAttribute('data-aui-alignment-static'));\n}\n\nfunction restorePreviousAlignment(dropdown) {\n var $dropdown = $(dropdown);\n\n var previousAlignment = $dropdown.data('previous-data-aui-alignment');\n if (previousAlignment) {\n dropdown.setAttribute('data-aui-alignment', previousAlignment);\n } else {\n dropdown.removeAttribute('data-aui-alignment');\n }\n $dropdown.removeData('previous-data-aui-alignment');\n\n if (!$dropdown.data('had-data-aui-alignment-static')) {\n dropdown.removeAttribute('data-aui-alignment-static');\n }\n $dropdown.removeData('had-data-aui-alignment-static');\n}\n\nfunction getDropdownHideLocation(dropdown, trigger) {\n var possibleHome = trigger.getAttribute('data-dropdown2-hide-location');\n return document.getElementById(possibleHome) || dropdown.parentNode;\n}\n\nvar keyboardClose = false;\nfunction keyboardCloseDetected () {\n keyboardClose = true;\n}\n\nfunction wasProbablyClosedViaKeyboard () {\n var result = (keyboardClose === true);\n keyboardClose = false;\n return result;\n}\n\nfunction bindDropdownBehaviourToLayer(dropdown) {\n layer(dropdown);\n\n\n dropdown.addEventListener('aui-layer-show', function () {\n $(dropdown).trigger('aui-dropdown2-show');\n\n dropdown._syncClasses = migrateAndSyncLegacyClassNames(dropdown);\n\n amendDropdownContent(this);\n\n doIfTrigger(dropdown, function (trigger) {\n setDropdownTriggerActiveState(trigger, true);\n dropdown._returnTo = getDropdownHideLocation(dropdown, trigger);\n });\n });\n\n dropdown.addEventListener('aui-layer-hide', function () {\n $(dropdown).trigger('aui-dropdown2-hide');\n\n if (dropdown._syncClasses) {\n dropdown._syncClasses();\n delete dropdown._syncClasses;\n }\n\n if (dropdown._auiAlignment) {\n dropdown._auiAlignment.disable();\n dropdown._auiAlignment.destroy();\n }\n\n if (dropdown._returnTo) {\n if (dropdown.parentNode && dropdown.parentNode !== dropdown._returnTo) {\n dropdown._returnTo.appendChild(dropdown);\n }\n }\n\n $(dropdown).removeClass('aui-dropdown2-in-buttons');\n\n getVisibleDropdownItems(dropdown).removeClass('active aui-dropdown2-active');\n\n doIfTrigger(dropdown, function (trigger) {\n if (wasProbablyClosedViaKeyboard()) {\n trigger.focus();\n setDropdownTriggerActiveState(trigger, trigger.hasSubmenu && trigger.hasSubmenu());\n } else {\n setDropdownTriggerActiveState(trigger, false);\n }\n });\n\n // Gets set by submenu trigger invocation. Bad coupling point?\n delete dropdown.isSubmenu;\n dropdown._triggeringElement = null;\n });\n}\n\nfunction bindItemInteractionBehaviourToDropdown (dropdown) {\n var $dropdown = $(dropdown);\n\n $dropdown.on('keydown', function (e) {\n if (e.keyCode === keyCode.DOWN) {\n dropdown.focusNext();\n e.preventDefault();\n } else if (e.keyCode === keyCode.UP) {\n dropdown.focusPrevious();\n e.preventDefault();\n } else if (e.keyCode === keyCode.LEFT) {\n if (dropdown.isSubmenu) {\n keyboardCloseDetected();\n dropdown.hide(e);\n e.preventDefault();\n }\n } else if (e.keyCode === keyCode.ESCAPE) {\n // The closing will be handled by the LayerManager!\n keyboardCloseDetected();\n } else if (e.keyCode === keyCode.TAB) {\n keyboardCloseDetected();\n dropdown.hide(e);\n }\n });\n\n const hideIfNotSubmenuAndNotInteractive = function(e) {\n var $item = $(e.currentTarget);\n\n if ($item.attr('aria-disabled') === 'true') {\n e.preventDefault();\n return;\n }\n\n const isSubmenuTrigger = e.currentTarget.hasSubmenu && e.currentTarget.hasSubmenu();\n if (!isSubmenuTrigger && !$item.is('.aui-dropdown2-interactive')) {\n\n var theMenu = dropdown;\n do {\n var dd = layer(theMenu);\n theMenu = layer(theMenu).below();\n if (dd.$el.is('.aui-dropdown2')) {\n dd.hide(e);\n }\n } while (theMenu);\n }\n }\n\n $dropdown.on('click keydown', 'a, button, [role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"checkbox\"], [role=\"menuitemradio\"], [role=\"radio\"]', function (e) {\n const item = e.currentTarget;\n const $item = $(item);\n const eventKeyCode = e.keyCode;\n const isEnter = eventKeyCode === keyCode.ENTER;\n const isSpace = eventKeyCode === keyCode.SPACE;\n\n // AUI-4283: Accessibility - need to ignore enter on links/buttons so\n // that the dropdown remains visible to allow the click event to eventually fire.\n const itemIgnoresEnter = isEnter && $item.is('a[href], button');\n\n if (!itemIgnoresEnter && (e.type === 'click' || isEnter || isSpace)) {\n hideIfNotSubmenuAndNotInteractive(e);\n }\n });\n\n // close a submenus when the mouse moves over items other than its trigger\n $dropdown.on('mouseenter', 'a, button, [role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"checkbox\"], [role=\"menuitemradio\"], [role=\"radio\"]', function (e) {\n var item = e.currentTarget;\n var hasSubmenu = item.hasSubmenu && item.hasSubmenu();\n\n if (!e.isDefaultPrevented() && !hasSubmenu) {\n var maybeALayer = layer(dropdown).above();\n\n if (maybeALayer) {\n layer(maybeALayer).hide();\n }\n }\n });\n}\n\n$(window).on('resize', debounceImmediate(function () {\n $('.aui-dropdown2').each(function (index, dropdown) {\n skate.init(dropdown);\n if (dropdown.isVisible()){\n dropdown.hide();\n }\n });\n}, 1000));\n\n// Dropdowns\n// ---------\n\nfunction dropdownCreated (dropdown) {\n var $dropdown = $(dropdown);\n\n $dropdown.addClass('aui-dropdown2');\n\n // swap the inner div to presentation as application is only needed for Windows\n if (supportsVoiceOver()) {\n $dropdown.find('> div[role=\"application\"]').attr('role', 'presentation');\n }\n\n if (dropdown.hasAttribute('data-container')) {\n $dropdown.attr('data-aui-alignment-container', $dropdown.attr('data-container'));\n $dropdown.removeAttr('data-container');\n }\n\n bindDropdownBehaviourToLayer(dropdown);\n bindItemInteractionBehaviourToDropdown(dropdown);\n dropdown.hide();\n\n $(dropdown).delegate('.aui-dropdown2-checkbox:not(.disabled):not(.aui-dropdown2-disabled)', 'click keydown', function (e) {\n if (e.type === 'click' || e.keyCode === keyCode.ENTER || e.keyCode === keyCode.SPACE) {\n let checkbox = this;\n if (e.isDefaultPrevented()) {\n return;\n }\n if (checkbox.isInteractive()) {\n e.preventDefault();\n }\n if (checkbox.isEnabled()) {\n // toggle the checked state\n if (checkbox.isChecked()) {\n checkbox.uncheck();\n } else {\n checkbox.check();\n }\n }\n }\n });\n\n $(dropdown).delegate('.aui-dropdown2-radio:not(.checked):not(.aui-dropdown2-checked):not(.disabled):not(.aui-dropdown2-disabled)', 'click keydown', function (e) {\n if (e.type === 'click' || e.keyCode === keyCode.ENTER || e.keyCode === keyCode.SPACE) {\n let radio = this;\n if (e.isDefaultPrevented()) {\n return;\n }\n if (radio.isInteractive()) {\n e.preventDefault();\n }\n\n let $radio = $(this);\n if (this.isEnabled() && this.isChecked() === false) {\n // toggle the checked state\n $radio.closest('ul,[role=group]').find('.aui-dropdown2-checked').not(this).each(function () {\n this.uncheck();\n });\n radio.check();\n }\n }\n });\n}\n\nvar dropdownPrototype = {\n /**\n * Toggles the visibility of the dropdown menu\n */\n toggle: function (e) {\n if (this.isVisible()) {\n this.hide(e);\n } else {\n this.show(e);\n }\n },\n\n /**\n * Explicitly shows the menu\n *\n * @returns {HTMLElement}\n */\n show: function (e) {\n if (e && e.currentTarget && e.currentTarget.classList.contains('aui-dropdown2-trigger')) {\n this._triggeringElement = e.currentTarget;\n }\n layer(this).show();\n\n var dropdown = this;\n doIfTrigger(dropdown, function (trigger) {\n setLayerAlignment(dropdown, trigger);\n });\n\n return this;\n },\n\n /**\n * Explicitly hides the menu\n *\n * @returns {HTMLElement}\n */\n hide: function () {\n layer(this).hide();\n return this;\n },\n\n /**\n * Shifts explicit focus to the next available item in the menu\n *\n * @returns {undefined}\n */\n focusNext: function () {\n var $items = getVisibleDropdownItems(this);\n var selected = document.activeElement;\n var idx;\n\n if ($items.last()[0] !== selected) {\n idx = $items.toArray().indexOf(selected);\n this.focusItem($items.get(idx + 1));\n }\n },\n\n /**\n * Shifts explicit focus to the previous available item in the menu\n *\n * @returns {undefined}\n */\n focusPrevious: function () {\n var $items = getVisibleDropdownItems(this);\n var selected = document.activeElement;\n var idx;\n\n if ($items.first()[0] !== selected) {\n idx = $items.toArray().indexOf(selected);\n this.focusItem($items.get(idx - 1));\n }\n },\n\n /**\n * Shifts explicit focus to the menu item matching the index param\n */\n focusItem: function (item) {\n var $items = getVisibleDropdownItems(this);\n var $item;\n if (typeof item === 'number') {\n item = $items.get(item);\n }\n $item = $(item);\n $item.focus();\n $items.removeClass('active aui-dropdown2-active');\n $item.addClass('active aui-dropdown2-active');\n },\n\n /**\n * Checks whether or not the menu is currently displayed\n *\n * @returns {Boolean}\n */\n isVisible: function () {\n return layer(this).isVisible();\n }\n};\n\n// Web component API for dropdowns\n// -------------------------------\n\nvar disabledAttributeHandler = {\n created: function (element) {\n var a = element.children[0];\n a.setAttribute('aria-disabled', 'true');\n a.className += ' aui-dropdown2-disabled';\n },\n removed: function (element) {\n var a = element.children[0];\n a.setAttribute('aria-disabled', 'false');\n $(a).removeClass('aui-dropdown2-disabled');\n }\n};\n\nvar interactiveAttributeHandler = {\n created: function (element) {\n var a = element.children[0];\n a.className += ' aui-dropdown2-interactive';\n },\n removed: function (element) {\n var a = element.children[0];\n $(a).removeClass('aui-dropdown2-interactive');\n }\n};\n\nvar checkedAttributeHandler = {\n created: function (element) {\n var a = element.children[0];\n $(a).addClass('checked aui-dropdown2-checked');\n a.setAttribute('aria-checked', true);\n element.dispatchEvent(new CustomEvent('change', {bubbles: true}));\n },\n removed: function (element) {\n var a = element.children[0];\n $(a).removeClass('checked aui-dropdown2-checked');\n a.setAttribute('aria-checked', false);\n element.dispatchEvent(new CustomEvent('change', {bubbles: true}));\n }\n};\n\nvar hiddenAttributeHandler = {\n created: function (element) {\n disabledAttributeHandler.created(element);\n },\n removed: function (element) {\n disabledAttributeHandler.removed(element);\n }\n};\n\nvar stringAttributeHandlerGenerator = function(attrName) {\n return {\n fallback: function (element, change) {\n var a = element.children[0];\n a.setAttribute(attrName, change.newValue);\n },\n removed: function (element) {\n var a = element.children[0];\n a.removeAttribute(attrName);\n }\n }\n};\n\nskate('aui-item-link', {\n template: template(\n '<a role=\"menuitem\" tabindex=\"-1\"><content></content></a>'\n ),\n attributes: {\n disabled: disabledAttributeHandler,\n interactive: interactiveAttributeHandler,\n hidden: hiddenAttributeHandler,\n href: stringAttributeHandlerGenerator('href'),\n 'item-id': stringAttributeHandlerGenerator('id'),\n for: {\n created: function (element) {\n var anchor = element.children[0];\n anchor.setAttribute('aria-controls', element.getAttribute('for'));\n $(anchor).addClass('aui-dropdown2-sub-trigger');\n },\n updated: function (element) {\n var anchor = element.children[0];\n anchor.setAttribute('aria-controls', element.getAttribute('for'));\n },\n removed: function (element) {\n var anchor = element.children[0];\n anchor.removeAttribute('aria-controls');\n $(anchor).removeClass('aui-dropdown2-sub-trigger');\n }\n }\n }\n});\n\nskate('aui-item-checkbox', {\n template: template(\n '<span role=\"checkbox\" class=\"aui-dropdown2-checkbox\" tabindex=\"-1\"><content></content></span>'\n ),\n attributes: {\n 'item-id': stringAttributeHandlerGenerator('id'),\n disabled: disabledAttributeHandler,\n interactive: interactiveAttributeHandler,\n checked: checkedAttributeHandler,\n hidden: hiddenAttributeHandler\n }\n});\n\nskate('aui-item-radio', {\n template: template(\n '<span role=\"radio\" class=\"aui-dropdown2-radio\" tabindex=\"-1\"><content></content></span>'\n ),\n attributes: {\n 'item-id': stringAttributeHandlerGenerator('id'),\n disabled: disabledAttributeHandler,\n interactive: interactiveAttributeHandler,\n checked: checkedAttributeHandler,\n hidden: hiddenAttributeHandler\n }\n});\n\nskate('aui-section', {\n template: template(`\n <strong aria-role=\"presentation\" class=\"aui-dropdown2-heading\"></strong>\n <div role=\"group\">\n <content></content>\n </div>\n `),\n attributes: {\n label: function (element, data) {\n var headingElement = element.children[0];\n var groupElement = element.children[1];\n headingElement.textContent = data.newValue;\n groupElement.setAttribute('aria-label', data.newValue);\n }\n },\n created: function (element) {\n element.className += ' aui-dropdown2-section';\n element.setAttribute('role', 'presentation');\n }\n});\n\nskate('aui-dropdown-menu', {\n template: template(`\n <div role=\"application\">\n <content></content>\n </div>\n `),\n created: function (dropdown) {\n dropdown.setAttribute('role', 'menu');\n dropdown.className = 'aui-dropdown2 aui-style-default aui-layer';\n state(dropdown).set('loading-state', UNLOADED);\n // Now skate the .aui-dropdown2 behaviour.\n skate.init(dropdown);\n },\n attributes: {\n src: {}\n },\n prototype: dropdownPrototype,\n events: {\n 'aui-layer-show': loadContentWhenMenuShown\n }\n});\n\n// Legacy dropdown inits\n// ---------------------\n\nskate('aui-dropdown2', {\n type: skate.type.CLASSNAME,\n created: dropdownCreated,\n prototype: dropdownPrototype\n});\n\nskate('data-aui-dropdown2', {\n type: skate.type.ATTRIBUTE,\n created: dropdownCreated,\n prototype: dropdownPrototype\n});\n\n\n// Checkboxes and radios\n// ---------------------\n\nskate('aui-dropdown2-checkbox', {\n type: skate.type.CLASSNAME,\n\n created: function (checkbox) {\n var checked = isChecked(checkbox);\n if (checked) {\n $(checkbox).addClass('checked aui-dropdown2-checked');\n }\n checkbox.setAttribute('aria-checked', checked);\n checkbox.setAttribute('tabindex', '0');\n\n // swap from menuitemcheckbox to just plain checkbox for VoiceOver\n if (supportsVoiceOver()) {\n checkbox.setAttribute('role','checkbox');\n }\n },\n\n prototype: {\n isEnabled: function () {\n return !(this.getAttribute('aria-disabled') !== null && this.getAttribute('aria-disabled') === 'true');\n },\n\n isChecked: function () {\n return this.getAttribute('aria-checked') !== null && this.getAttribute('aria-checked') === 'true';\n },\n\n isInteractive: function () {\n return $(this).hasClass('aui-dropdown2-interactive');\n },\n\n uncheck: function () {\n if (this.parentNode.tagName.toLowerCase() === 'aui-item-checkbox') {\n this.parentNode.removeAttribute('checked');\n }\n this.setAttribute('aria-checked', 'false');\n $(this).removeClass('checked aui-dropdown2-checked');\n $(this).trigger('aui-dropdown2-item-uncheck');\n },\n\n check: function () {\n if (this.parentNode.tagName.toLowerCase() === 'aui-item-checkbox') {\n this.parentNode.setAttribute('checked', '');\n }\n this.setAttribute('aria-checked', 'true');\n $(this).addClass('checked aui-dropdown2-checked');\n $(this).trigger('aui-dropdown2-item-check');\n }\n }\n});\n\nskate('aui-dropdown2-radio', {\n type: skate.type.CLASSNAME,\n\n created: function (radio) {\n // add a dash of ARIA\n var checked = isChecked(radio);\n if (checked) {\n $(radio).addClass('checked aui-dropdown2-checked');\n }\n radio.setAttribute('aria-checked', checked);\n radio.setAttribute('tabindex', '0');\n\n // swap from menuitemradio to just plain radio for VoiceOver\n if (supportsVoiceOver()) {\n radio.setAttribute('role','radio');\n }\n },\n\n prototype: {\n isEnabled: function () {\n return !(this.getAttribute('aria-disabled') !== null && this.getAttribute('aria-disabled') === 'true');\n },\n\n isChecked: function () {\n return this.getAttribute('aria-checked') !== null && this.getAttribute('aria-checked') === 'true';\n },\n\n isInteractive: function () {\n return $(this).hasClass('aui-dropdown2-interactive');\n },\n\n uncheck: function () {\n if (this.parentNode.tagName.toLowerCase() === 'aui-item-radio') {\n this.parentNode.removeAttribute('checked');\n }\n this.setAttribute('aria-checked', 'false');\n $(this).removeClass('checked aui-dropdown2-checked');\n $(this).trigger('aui-dropdown2-item-uncheck');\n },\n\n check: function () {\n if (this.parentNode.tagName.toLowerCase() === 'aui-item-radio') {\n this.parentNode.setAttribute('checked', '');\n }\n this.setAttribute('aria-checked', 'true');\n $(this).addClass('checked aui-dropdown2-checked');\n $(this).trigger('aui-dropdown2-item-check');\n }\n }\n});\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["js/aui/fancy-file-input.js"],"names":[],"mappings":";;;;;;;;;;;;;AAAA;AACA","file":"fancy-file-input.js","sourcesContent":["/* AUI-4199: This puts the FFI object on the jQuery global for backwards compatibility. */\n'use strict';\n\nimport FancyFileInput from 'fancy-file-input/dist/fancy-file-input';\n\nexport default FancyFileInput;\n"]}
1
+ {"version":3,"sources":["js/aui/fancy-file-input.js"],"names":["FancyFileInput"],"mappings":";;;;;;;;;;;;;AAAA;AACA;;;;;;;;;;;;;;oBAIeA,wB","file":"fancy-file-input.js","sourcesContent":["/* AUI-4199: This puts the FFI object on the jQuery global for backwards compatibility. */\n'use strict';\n\nimport FancyFileInput from 'fancy-file-input/dist/fancy-file-input';\n\nexport default FancyFileInput;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["js/aui/flag.js"],"names":["AUTO_CLOSE_TIME","ID_FLAG_CONTAINER","defaultOptions","body","close","title","type","flag","options","extend","$flag","renderFlagElement","extendFlagElement","makeCloseable","makeAutoClosable","pruneFlagContainer","insertFlag","closeFlag","html","rendered","fill","closeable","toString","$icon","click","keypress","e","which","ENTER","SPACE","preventDefault","find","append","addClass","setTimeout","$flagToClose","get","setAttribute","dispatchEvent","bubbles","$container","findContainer","$allFlags","forEach","isFlagAriaHidden","getAttribute","remove","$flagContainer","length","prepend","appendTo","attr"],"mappings":"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","file":"flag.js","sourcesContent":["'use strict';\n\nimport $ from './jquery';\nimport { recomputeStyle } from './internal/animation';\nimport amdify from './internal/amdify';\nimport globalize from './internal/globalize';\nimport keyCode from './key-code';\nimport template from './template';\nimport CustomEvent from './polyfills/custom-event';\n\nvar AUTO_CLOSE_TIME = 5000;\nvar ID_FLAG_CONTAINER = 'aui-flag-container';\nvar defaultOptions = {\n body: '',\n close: 'manual',\n title: '',\n type: 'info'\n};\n\nfunction flag (options) {\n options = $.extend({}, defaultOptions, options);\n\n var $flag = renderFlagElement(options);\n extendFlagElement($flag);\n\n if (options.close === 'auto') {\n makeCloseable($flag);\n makeAutoClosable($flag);\n } else if (options.close === 'manual') {\n makeCloseable($flag);\n }\n\n pruneFlagContainer();\n\n return insertFlag($flag);\n}\n\nfunction extendFlagElement ($flag) {\n var flag = $flag[0];\n\n flag.close = function () {\n closeFlag($flag);\n };\n}\n\nfunction renderFlagElement (options) {\n var html =\n '<div class=\"aui-flag\">' +\n '<div class=\"aui-message aui-message-{type} {type} {closeable} shadowed\">' +\n '<p class=\"title\">' +\n '<strong>{title}</strong>' +\n '</p>' +\n '{body}<!-- .aui-message -->' +\n '</div>' +\n '</div>';\n var rendered = template(html).fill({\n 'body:html': options.body || '',\n closeable: (options.close === 'never') ? '' : 'closeable',\n title: options.title || '',\n type: options.type\n }).toString();\n\n return $(rendered);\n}\n\nfunction makeCloseable ($flag) {\n var $icon = $('<span class=\"aui-icon icon-close\" role=\"button\" tabindex=\"0\"></span>');\n\n $icon.click(function () {\n closeFlag($flag);\n });\n\n $icon.keypress(function (e) {\n if ((e.which === keyCode.ENTER) || (e.which === keyCode.SPACE)) {\n closeFlag($flag);\n e.preventDefault();\n }\n });\n\n return $flag.find('.aui-message').append($icon)[0];\n}\n\nfunction makeAutoClosable ($flag) {\n $flag.find('.aui-message').addClass('aui-will-close');\n setTimeout(function () {\n $flag[0].close();\n }, AUTO_CLOSE_TIME);\n}\n\nfunction closeFlag ($flagToClose) {\n var flag = $flagToClose.get(0);\n\n flag.setAttribute('aria-hidden', 'true');\n flag.dispatchEvent(new CustomEvent('aui-flag-close', {bubbles: true}));\n\n return flag;\n}\n\nfunction pruneFlagContainer () {\n var $container = findContainer();\n var $allFlags = $container.find('.aui-flag');\n\n $allFlags.get().forEach(function (flag) {\n var isFlagAriaHidden = flag.getAttribute('aria-hidden') === 'true';\n\n if (isFlagAriaHidden) {\n $(flag).remove();\n }\n });\n}\n\nfunction findContainer () {\n return $('#' + ID_FLAG_CONTAINER);\n}\n\nfunction insertFlag ($flag) {\n var $flagContainer = findContainer();\n\n if (!$flagContainer.length) {\n $flagContainer = $('<div id=\"' + ID_FLAG_CONTAINER + '\"></div>');\n $('body').prepend($flagContainer);\n }\n\n $flag.appendTo($flagContainer);\n recomputeStyle($flag);\n\n return $flag.attr('aria-hidden', 'false')[0];\n}\n\namdify('aui/flag', flag);\nglobalize('flag', flag);\nexport default flag;\n"]}
1
+ {"version":3,"sources":["js/aui/flag.js"],"names":["AUTO_CLOSE_TIME","ID_FLAG_CONTAINER","defaultOptions","body","close","title","type","flag","options","$","extend","$flag","renderFlagElement","extendFlagElement","makeCloseable","makeAutoClosable","pruneFlagContainer","insertFlag","closeFlag","html","rendered","fill","closeable","toString","$icon","click","keypress","e","which","keyCode","ENTER","SPACE","preventDefault","find","append","addClass","setTimeout","$flagToClose","get","setAttribute","dispatchEvent","CustomEvent","bubbles","$container","findContainer","$allFlags","forEach","isFlagAriaHidden","getAttribute","remove","$flagContainer","length","prepend","appendTo","attr"],"mappings":"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","file":"flag.js","sourcesContent":["'use strict';\n\nimport $ from './jquery';\nimport { recomputeStyle } from './internal/animation';\nimport amdify from './internal/amdify';\nimport globalize from './internal/globalize';\nimport keyCode from './key-code';\nimport template from './template';\nimport CustomEvent from './polyfills/custom-event';\n\nvar AUTO_CLOSE_TIME = 5000;\nvar ID_FLAG_CONTAINER = 'aui-flag-container';\nvar defaultOptions = {\n body: '',\n close: 'manual',\n title: '',\n type: 'info'\n};\n\nfunction flag (options) {\n options = $.extend({}, defaultOptions, options);\n\n var $flag = renderFlagElement(options);\n extendFlagElement($flag);\n\n if (options.close === 'auto') {\n makeCloseable($flag);\n makeAutoClosable($flag);\n } else if (options.close === 'manual') {\n makeCloseable($flag);\n }\n\n pruneFlagContainer();\n\n return insertFlag($flag);\n}\n\nfunction extendFlagElement ($flag) {\n var flag = $flag[0];\n\n flag.close = function () {\n closeFlag($flag);\n };\n}\n\nfunction renderFlagElement (options) {\n var html =\n '<div class=\"aui-flag\">' +\n '<div class=\"aui-message aui-message-{type} {type} {closeable} shadowed\">' +\n '<p class=\"title\">' +\n '<strong>{title}</strong>' +\n '</p>' +\n '{body}<!-- .aui-message -->' +\n '</div>' +\n '</div>';\n var rendered = template(html).fill({\n 'body:html': options.body || '',\n closeable: (options.close === 'never') ? '' : 'closeable',\n title: options.title || '',\n type: options.type\n }).toString();\n\n return $(rendered);\n}\n\nfunction makeCloseable ($flag) {\n var $icon = $('<span class=\"aui-icon icon-close\" role=\"button\" tabindex=\"0\"></span>');\n\n $icon.click(function () {\n closeFlag($flag);\n });\n\n $icon.keypress(function (e) {\n if ((e.which === keyCode.ENTER) || (e.which === keyCode.SPACE)) {\n closeFlag($flag);\n e.preventDefault();\n }\n });\n\n return $flag.find('.aui-message').append($icon)[0];\n}\n\nfunction makeAutoClosable ($flag) {\n $flag.find('.aui-message').addClass('aui-will-close');\n setTimeout(function () {\n $flag[0].close();\n }, AUTO_CLOSE_TIME);\n}\n\nfunction closeFlag ($flagToClose) {\n var flag = $flagToClose.get(0);\n\n flag.setAttribute('aria-hidden', 'true');\n flag.dispatchEvent(new CustomEvent('aui-flag-close', {bubbles: true}));\n\n return flag;\n}\n\nfunction pruneFlagContainer () {\n var $container = findContainer();\n var $allFlags = $container.find('.aui-flag');\n\n $allFlags.get().forEach(function (flag) {\n var isFlagAriaHidden = flag.getAttribute('aria-hidden') === 'true';\n\n if (isFlagAriaHidden) {\n $(flag).remove();\n }\n });\n}\n\nfunction findContainer () {\n return $('#' + ID_FLAG_CONTAINER);\n}\n\nfunction insertFlag ($flag) {\n var $flagContainer = findContainer();\n\n if (!$flagContainer.length) {\n $flagContainer = $('<div id=\"' + ID_FLAG_CONTAINER + '\"></div>');\n $('body').prepend($flagContainer);\n }\n\n $flag.appendTo($flagContainer);\n recomputeStyle($flag);\n\n return $flag.attr('aria-hidden', 'false')[0];\n}\n\namdify('aui/flag', flag);\nglobalize('flag', flag);\nexport default flag;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["js/aui/focus-manager-global.js"],"names":["global"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;oBACe,uBAAaA,M","file":"focus-manager-global.js","sourcesContent":["import FocusManager from './focus-manager';\nexport default FocusManager.global;\n"]}
1
+ {"version":3,"sources":["js/aui/focus-manager-global.js"],"names":["FocusManager","global"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;oBACeA,uBAAaC,M","file":"focus-manager-global.js","sourcesContent":["import FocusManager from './focus-manager';\nexport default FocusManager.global;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["js/aui/focus-manager.js"],"names":["initSelectors","visible","element","css","focusable","isTabIndexNotNaN","nodeName","toLowerCase","map","parentNode","mapName","name","imageMap","get","href","isFormElement","test","isAnchor","isAnchorTabbable","disabled","tabbable","tabIndex","attr","isTabIndexNaN","isNaN","hasTabIndex","extend","expr","RESTORE_FOCUS_DATA_KEY","FocusManager","_focusTrapStack","document","on","focusTrapStack","focusTrapHandler","defaultFocusSelector","prototype","enter","$el","data","activeElement","focusSelector","$focusEl","is","find","first","focus","elementTrapsFocus","trapFocus","push","untrapFocus","pop","exit","has","length","blur","$restoreFocus","removeData","event","relatedTarget","$focusTrapElement","focusOrigin","target","focusTo","$tabbableElements","$firstTabbableElement","$lastTabbableElement","last","elementContainsOrigin","focusLeavingElement","global"],"mappings":";;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;AAKC,cAASA,aAAT,GAA0B;AACvB;;;;;;;AAQA,iBAASC,OAAT,CAAkBC,OAAlB,EAA2B;AACvB,mBAAQ,iBAAEC,GAAF,CAAMD,OAAN,EAAe,YAAf,MAAiC,SAAzC;AACH;;AAED,iBAASE,SAAT,CAAoBF,OAApB,EAA6BG,gBAA7B,EAA+C;AAC3C,gBAAIC,WAAWJ,QAAQI,QAAR,CAAiBC,WAAjB,EAAf;;AAEA,gBAAID,aAAa,YAAjB,EAA+B;AAC3B,uBAAO,IAAP;AACH;;AAED,gBAAIA,aAAa,MAAjB,EAAyB;AACrB,oBAAIE,MAAMN,QAAQO,UAAlB;AACA,oBAAIC,UAAUF,IAAIG,IAAlB;AACA,oBAAIC,WAAW,sBAAE,iBAAiBF,OAAjB,GAA2B,GAA7B,EAAkCG,GAAlC,EAAf;;AAEA,oBAAI,CAACX,QAAQY,IAAT,IAAiB,CAACJ,OAAlB,IAA6BF,IAAIF,QAAJ,CAAaC,WAAb,OAA+B,KAAhE,EAAuE;AACnE,2BAAO,KAAP;AACH;AACD,uBAAOK,YAAYX,QAAQW,QAAR,CAAnB;AACH;AACD,gBAAIG,gBAAgB,sCAAsCC,IAAtC,CAA2CV,QAA3C,CAApB;AACA,gBAAIW,WAAWX,aAAa,GAA5B;AACA,gBAAIY,mBAAoBhB,QAAQY,IAAR,IAAgBT,gBAAxC;;AAEA,mBAAO,CACHU,gBAAgB,CAACb,QAAQiB,QAAzB,GACKF,WAAWC,gBAAX,GAA8Bb,gBAFhC,KAGFJ,QAAQC,OAAR,CAHL;AAIH;;AAED,iBAASkB,QAAT,CAAmBlB,OAAnB,EAA4B;AACxB,gBAAImB,WAAW,iBAAEC,IAAF,CAAOpB,OAAP,EAAgB,UAAhB,CAAf;AACA,gBAAIqB,gBAAgBC,MAAMH,QAAN,CAApB;AACA,gBAAII,cAAeF,iBAAiBF,YAAY,CAAhD;;AAEA,mBAAOI,eAAerB,UAAUF,OAAV,EAAmB,CAACqB,aAApB,CAAtB;AACH;;AAED,yBAAEG,MAAF,CAAS,iBAAEC,IAAF,CAAQ,GAAR,CAAT,EAAwB;AACpB,6BAAiB,sBAAUzB,OAAV,EAAmB;AAChC,uBAAOE,UAAUF,OAAV,EAAmB,CAACsB,MAAM,iBAAEF,IAAF,CAAOpB,OAAP,EAAgB,UAAhB,CAAN,CAApB,CAAP;AACH,aAHmB;;AAKpB,4BAAgBkB;AALI,SAAxB;AAOH,KAvDA,GAAD;;AAyDA,QAAIQ,yBAAyB,oBAA7B;AACA,aAASC,YAAT,GAAwB;AACpB,aAAKC,eAAL,GAAuB,EAAvB;AACA,8BAAEC,QAAF,EAAYC,EAAZ,CAAe,UAAf,EAA2B,EAACC,gBAAgB,KAAKH,eAAtB,EAA3B,EAAoEI,gBAApE;AACH;AACDL,iBAAaM,oBAAb,GAAoC,eAApC;AACAN,iBAAaO,SAAb,CAAuBC,KAAvB,GAA+B,UAAUC,GAAV,EAAe;AAC1C;AACAA,YAAIC,IAAJ,CAASX,sBAAT,EAAiC,sBAAEG,SAASS,aAAX,CAAjC;;AAEA;AACA,YAAIF,IAAIhB,IAAJ,CAAS,gBAAT,MAA+B,OAAnC,EAA4C;AACxC,gBAAImB,gBAAgBH,IAAIhB,IAAJ,CAAS,yBAAT,KAAuCO,aAAaM,oBAAxE;AACA,gBAAIO,WAAWJ,IAAIK,EAAJ,CAAOF,aAAP,IAAwBH,GAAxB,GAA8BA,IAAIM,IAAJ,CAASH,aAAT,CAA7C;AACAC,qBAASG,KAAT,GAAiBC,KAAjB;AACH;;AAED,YAAIC,kBAAkBT,GAAlB,CAAJ,EAA4B;AACxBU,sBAAUV,GAAV,EAAe,KAAKR,eAApB;AACH;AACJ,KAdD;;AAgBA,aAASkB,SAAT,CAAmBV,GAAnB,EAAwBL,cAAxB,EAAwC;AACpCA,uBAAegB,IAAf,CAAoBX,GAApB;AACH;;AAED,aAASY,WAAT,CAAqBjB,cAArB,EAAqC;AACjCA,uBAAekB,GAAf;AACH;;AAED,aAASJ,iBAAT,CAA2BT,GAA3B,EAAgC;AAC5B,eAAOA,IAAIK,EAAJ,CAAO,cAAP,CAAP;AACH;;AAEDd,iBAAaO,SAAb,CAAuBgB,IAAvB,GAA8B,UAAUd,GAAV,EAAe;AACzC,YAAIS,kBAAkBT,GAAlB,CAAJ,EAA4B;AACxBY,wBAAY,KAAKpB,eAAjB;AACH;;AAED;AACA,YAAIU,gBAAgBT,SAASS,aAA7B;AACA,YAAIF,IAAI,CAAJ,MAAWE,aAAX,IAA4BF,IAAIe,GAAJ,CAAQb,aAAR,EAAuBc,MAAvD,EAA+D;AAC3D,kCAAEd,aAAF,EAAiBe,IAAjB;AACH;;AAED,YAAIC,gBAAgBlB,IAAIC,IAAJ,CAASX,sBAAT,CAApB;AACA,YAAI4B,iBAAiBA,cAAcF,MAAnC,EAA2C;AACvChB,gBAAImB,UAAJ,CAAe7B,sBAAf;AACA4B,0BAAcV,KAAd;AACH;AACJ,KAhBD;;AAkBA,aAASZ,gBAAT,CAA0BwB,KAA1B,EAAiC;AAC7B,YAAIzB,iBAAiByB,MAAMnB,IAAN,CAAWN,cAAhC;;AAEA,YAAI,CAACyB,MAAMC,aAAX,EAA0B;AAAE;AACxB;AACH;;AAED,YAAI1B,eAAeqB,MAAf,KAA0B,CAA9B,EAAiC;AAC7B;AACH;;AAED,YAAIM,oBAAoB3B,eAAeA,eAAeqB,MAAf,GAAwB,CAAvC,CAAxB;;AAEA,YAAIO,cAAcH,MAAMI,MAAxB;AACA,YAAIC,UAAUL,MAAMC,aAApB;;AAEA,YAAIK,oBAAoBJ,kBAAkBhB,IAAlB,CAAuB,eAAvB,CAAxB;AACA,YAAIqB,wBAAwB,sBAAED,kBAAkBnB,KAAlB,EAAF,CAA5B;AACA,YAAIqB,uBAAuB,sBAAEF,kBAAkBG,IAAlB,EAAF,CAA3B;;AAEA,YAAIC,wBAAwBR,kBAAkBP,GAAlB,CAAsBU,OAAtB,EAA+BT,MAA/B,KAA0C,CAAtE;AACA,YAAIe,sBAAsBD,yBAAyBL,OAAnD;AACA,YAAIM,mBAAJ,EAAyB;AACrB,gBAAIJ,sBAAsBtB,EAAtB,CAAyBkB,WAAzB,CAAJ,EAA2C;AACvCK,qCAAqBpB,KAArB;AACH,aAFD,MAEO,IAAIoB,qBAAqBvB,EAArB,CAAwBkB,WAAxB,CAAJ,EAA0C;AAC7CI,sCAAsBnB,KAAtB;AACH;AACJ;AAEJ;;AAEDjB,iBAAayC,MAAb,GAAsB,IAAIzC,YAAJ,EAAtB;;AAEA,6BAAU,cAAV,EAA0BA,YAA1B;;sBAEeA,Y","file":"focus-manager.js","sourcesContent":["'use strict';\n\nimport $ from './jquery';\nimport globalize from './internal/globalize';\n\n(function initSelectors () {\n /*\n :tabbable and :focusable functions from jQuery UI v 1.10.4\n renamed to :aui-tabbable and :aui-focusable to not clash with jquery-ui if it's included.\n Code modified slightly to be compatible with jQuery < 1.8\n .addBack() replaced with .andSelf()\n $.curCSS() replaced with $.css()\n\n */\n function visible (element) {\n return ($.css(element, 'visibility') === 'visible');\n }\n\n function focusable (element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n\n if (nodeName === 'aui-select') {\n return true;\n }\n\n if (nodeName === 'area') {\n var map = element.parentNode;\n var mapName = map.name;\n var imageMap = $('img[usemap=#' + mapName + ']').get();\n\n if (!element.href || !mapName || map.nodeName.toLowerCase() !== 'map') {\n return false;\n }\n return imageMap && visible(imageMap);\n }\n var isFormElement = /input|select|textarea|button|object/.test(nodeName);\n var isAnchor = nodeName === 'a';\n var isAnchorTabbable = (element.href || isTabIndexNotNaN);\n\n return (\n isFormElement ? !element.disabled :\n (isAnchor ? isAnchorTabbable : isTabIndexNotNaN)\n ) && visible(element);\n }\n\n function tabbable (element) {\n var tabIndex = $.attr(element, 'tabindex');\n var isTabIndexNaN = isNaN(tabIndex);\n var hasTabIndex = (isTabIndexNaN || tabIndex >= 0);\n\n return hasTabIndex && focusable(element, !isTabIndexNaN);\n }\n\n $.extend($.expr[ ':' ], {\n 'aui-focusable': function (element) {\n return focusable(element, !isNaN($.attr(element, 'tabindex')));\n },\n\n 'aui-tabbable': tabbable\n });\n}());\n\nvar RESTORE_FOCUS_DATA_KEY = '_aui-focus-restore';\nfunction FocusManager() {\n this._focusTrapStack = [];\n $(document).on('focusout', {focusTrapStack: this._focusTrapStack}, focusTrapHandler);\n}\nFocusManager.defaultFocusSelector = ':aui-tabbable';\nFocusManager.prototype.enter = function ($el) {\n // remember focus on old element\n $el.data(RESTORE_FOCUS_DATA_KEY, $(document.activeElement));\n\n // focus on new selector\n if ($el.attr('data-aui-focus') !== 'false') {\n var focusSelector = $el.attr('data-aui-focus-selector') || FocusManager.defaultFocusSelector;\n var $focusEl = $el.is(focusSelector) ? $el : $el.find(focusSelector);\n $focusEl.first().focus();\n }\n\n if (elementTrapsFocus($el)) {\n trapFocus($el, this._focusTrapStack);\n }\n};\n\nfunction trapFocus($el, focusTrapStack) {\n focusTrapStack.push($el);\n}\n\nfunction untrapFocus(focusTrapStack) {\n focusTrapStack.pop();\n}\n\nfunction elementTrapsFocus($el) {\n return $el.is('.aui-dialog2');\n}\n\nFocusManager.prototype.exit = function ($el) {\n if (elementTrapsFocus($el)) {\n untrapFocus(this._focusTrapStack);\n }\n\n // AUI-1059: remove focus from the active element when dialog is hidden\n var activeElement = document.activeElement;\n if ($el[0] === activeElement || $el.has(activeElement).length) {\n $(activeElement).blur();\n }\n\n var $restoreFocus = $el.data(RESTORE_FOCUS_DATA_KEY);\n if ($restoreFocus && $restoreFocus.length) {\n $el.removeData(RESTORE_FOCUS_DATA_KEY);\n $restoreFocus.focus();\n }\n};\n\nfunction focusTrapHandler(event) {\n var focusTrapStack = event.data.focusTrapStack;\n\n if (!event.relatedTarget) { //Does not work in firefox, see https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n return;\n }\n\n if (focusTrapStack.length === 0) {\n return;\n }\n\n var $focusTrapElement = focusTrapStack[focusTrapStack.length - 1];\n\n var focusOrigin = event.target;\n var focusTo = event.relatedTarget;\n\n var $tabbableElements = $focusTrapElement.find(':aui-tabbable');\n var $firstTabbableElement = $($tabbableElements.first());\n var $lastTabbableElement = $($tabbableElements.last());\n\n var elementContainsOrigin = $focusTrapElement.has(focusTo).length === 0;\n var focusLeavingElement = elementContainsOrigin && focusTo;\n if (focusLeavingElement) {\n if ($firstTabbableElement.is(focusOrigin)) {\n $lastTabbableElement.focus();\n } else if ($lastTabbableElement.is(focusOrigin)) {\n $firstTabbableElement.focus();\n }\n }\n\n}\n\nFocusManager.global = new FocusManager();\n\nglobalize('FocusManager', FocusManager);\n\nexport default FocusManager;\n"]}
1
+ {"version":3,"sources":["js/aui/focus-manager.js"],"names":["initSelectors","visible","element","$","css","focusable","isTabIndexNotNaN","nodeName","toLowerCase","map","parentNode","mapName","name","imageMap","get","href","isFormElement","test","isAnchor","isAnchorTabbable","disabled","tabbable","tabIndex","attr","isTabIndexNaN","isNaN","hasTabIndex","extend","expr","RESTORE_FOCUS_DATA_KEY","FocusManager","_focusTrapStack","document","on","focusTrapStack","focusTrapHandler","defaultFocusSelector","prototype","enter","$el","data","activeElement","focusSelector","$focusEl","is","find","first","focus","elementTrapsFocus","trapFocus","push","untrapFocus","pop","exit","has","length","blur","$restoreFocus","removeData","event","relatedTarget","$focusTrapElement","focusOrigin","target","focusTo","$tabbableElements","$firstTabbableElement","$lastTabbableElement","last","elementContainsOrigin","focusLeavingElement","global"],"mappings":"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","file":"focus-manager.js","sourcesContent":["'use strict';\n\nimport $ from './jquery';\nimport globalize from './internal/globalize';\n\n(function initSelectors () {\n /*\n :tabbable and :focusable functions from jQuery UI v 1.10.4\n renamed to :aui-tabbable and :aui-focusable to not clash with jquery-ui if it's included.\n Code modified slightly to be compatible with jQuery < 1.8\n .addBack() replaced with .andSelf()\n $.curCSS() replaced with $.css()\n\n */\n function visible (element) {\n return ($.css(element, 'visibility') === 'visible');\n }\n\n function focusable (element, isTabIndexNotNaN) {\n var nodeName = element.nodeName.toLowerCase();\n\n if (nodeName === 'aui-select') {\n return true;\n }\n\n if (nodeName === 'area') {\n var map = element.parentNode;\n var mapName = map.name;\n var imageMap = $('img[usemap=#' + mapName + ']').get();\n\n if (!element.href || !mapName || map.nodeName.toLowerCase() !== 'map') {\n return false;\n }\n return imageMap && visible(imageMap);\n }\n var isFormElement = /input|select|textarea|button|object/.test(nodeName);\n var isAnchor = nodeName === 'a';\n var isAnchorTabbable = (element.href || isTabIndexNotNaN);\n\n return (\n isFormElement ? !element.disabled :\n (isAnchor ? isAnchorTabbable : isTabIndexNotNaN)\n ) && visible(element);\n }\n\n function tabbable (element) {\n var tabIndex = $.attr(element, 'tabindex');\n var isTabIndexNaN = isNaN(tabIndex);\n var hasTabIndex = (isTabIndexNaN || tabIndex >= 0);\n\n return hasTabIndex && focusable(element, !isTabIndexNaN);\n }\n\n $.extend($.expr[ ':' ], {\n 'aui-focusable': function (element) {\n return focusable(element, !isNaN($.attr(element, 'tabindex')));\n },\n\n 'aui-tabbable': tabbable\n });\n}());\n\nvar RESTORE_FOCUS_DATA_KEY = '_aui-focus-restore';\nfunction FocusManager() {\n this._focusTrapStack = [];\n $(document).on('focusout', {focusTrapStack: this._focusTrapStack}, focusTrapHandler);\n}\nFocusManager.defaultFocusSelector = ':aui-tabbable';\nFocusManager.prototype.enter = function ($el) {\n // remember focus on old element\n $el.data(RESTORE_FOCUS_DATA_KEY, $(document.activeElement));\n\n // focus on new selector\n if ($el.attr('data-aui-focus') !== 'false') {\n var focusSelector = $el.attr('data-aui-focus-selector') || FocusManager.defaultFocusSelector;\n var $focusEl = $el.is(focusSelector) ? $el : $el.find(focusSelector);\n $focusEl.first().focus();\n }\n\n if (elementTrapsFocus($el)) {\n trapFocus($el, this._focusTrapStack);\n }\n};\n\nfunction trapFocus($el, focusTrapStack) {\n focusTrapStack.push($el);\n}\n\nfunction untrapFocus(focusTrapStack) {\n focusTrapStack.pop();\n}\n\nfunction elementTrapsFocus($el) {\n return $el.is('.aui-dialog2');\n}\n\nFocusManager.prototype.exit = function ($el) {\n if (elementTrapsFocus($el)) {\n untrapFocus(this._focusTrapStack);\n }\n\n // AUI-1059: remove focus from the active element when dialog is hidden\n var activeElement = document.activeElement;\n if ($el[0] === activeElement || $el.has(activeElement).length) {\n $(activeElement).blur();\n }\n\n var $restoreFocus = $el.data(RESTORE_FOCUS_DATA_KEY);\n if ($restoreFocus && $restoreFocus.length) {\n $el.removeData(RESTORE_FOCUS_DATA_KEY);\n $restoreFocus.focus();\n }\n};\n\nfunction focusTrapHandler(event) {\n var focusTrapStack = event.data.focusTrapStack;\n\n if (!event.relatedTarget) { //Does not work in firefox, see https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n return;\n }\n\n if (focusTrapStack.length === 0) {\n return;\n }\n\n var $focusTrapElement = focusTrapStack[focusTrapStack.length - 1];\n\n var focusOrigin = event.target;\n var focusTo = event.relatedTarget;\n\n var $tabbableElements = $focusTrapElement.find(':aui-tabbable');\n var $firstTabbableElement = $($tabbableElements.first());\n var $lastTabbableElement = $($tabbableElements.last());\n\n var elementContainsOrigin = $focusTrapElement.has(focusTo).length === 0;\n var focusLeavingElement = elementContainsOrigin && focusTo;\n if (focusLeavingElement) {\n if ($firstTabbableElement.is(focusOrigin)) {\n $lastTabbableElement.focus();\n } else if ($lastTabbableElement.is(focusOrigin)) {\n $firstTabbableElement.focus();\n }\n }\n\n}\n\nFocusManager.global = new FocusManager();\n\nglobalize('FocusManager', FocusManager);\n\nexport default FocusManager;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["js/aui/form-notification.js"],"names":["logger","NOTIFICATION_NAMESPACE","CLASS_NOTIFICATION_INITIALISED","CLASS_NOTIFICATION_ICON","CLASS_TOOLTIP","CLASS_TOOLTIP_ERROR","CLASS_TOOLTIP_INFO","ATTRIBUTE_NOTIFICATION_PREFIX","ATTRIBUTE_NOTIFICATION_WAIT","ATTRIBUTE_NOTIFICATION_INFO","ATTRIBUTE_NOTIFICATION_ERROR","ATTRIBUTE_NOTIFICATION_SUCCESS","ATTRIBUTE_TOOLTIP_POSITION","NOTIFICATION_PRIORITY","notificationFields","TIPSY_OPACITY","TIPSY_OFFSET_INSIDE_FIELD","TIPSY_OFFSET_OUTSIDE_FIELD","initialiseNotification","$field","isFieldInitialised","prepareFieldMarkup","initialiseTooltip","bindFieldEvents","synchroniseNotificationDisplay","push","hasClass","constructFieldIcon","addClass","appendIconToField","$icon","after","getTooltipAnchor","tipsy","gravity","getTipsyGravity","title","getNotificationMessage","trigger","offset","canContainIcon","opacity","className","getNotificationClass","html","unadornedInputFields","indexOf","attr","notificationType","getFieldNotificationType","message","formatMessage","messageArray","jsonToArray","length","join","jsonOrString","jsonArray","JSON","parse","exception","fieldNotificationType","some","prioritisedNotification","is","focusTogglesTooltip","bindFieldTabEvents","fieldHasTooltip","showTooltip","bindTooltipTabEvents","hideTooltip","bindFocusTooltipInteractions","document","addEventListener","e","forEach","field","$tooltip","getTooltip","isFocusInTooltip","contains","target","isFocusTargetField","isFocusTargetChildOfField","isFocusEventTargetInElement","event","$element","closest","on","isNormalTab","$firstTooltipLink","getFirstTooltipLink","focus","preventDefault","keyCode","TAB","shiftKey","altKey","isShiftTab","find","first","getLastTooltipLink","last","$anchor","data","$tip","leavingTooltipForwards","elementIsActive","leavingTooltipBackwards","position","gravityMap","side","top","bottom","warn","getFieldIcon","next","$el","el","activeElement","showSpinner","setFieldSpinner","noNotificationOnField","fieldContainsActiveElement","tooltipShouldBeVisible","isSpinnerVisible","removeClass","isTargetLink","isTargetTooltip","$allNotificationFields","each","$notificationField","targetIsThisField","attached","element","attributes","attrs","type","ATTRIBUTE"],"mappings":"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","file":"form-notification.js","sourcesContent":["'use strict';\n\nimport $ from './jquery';\nimport '../../js-vendor/jquery/jquery.tipsy';\nimport * as logger from './internal/log';\nimport amdify from './internal/amdify';\nimport keyCode from './key-code';\nimport skate from './internal/skate';\n\nvar NOTIFICATION_NAMESPACE = 'aui-form-notification';\n\nvar CLASS_NOTIFICATION_INITIALISED = '_aui-form-notification-initialised';\nvar CLASS_NOTIFICATION_ICON = 'aui-icon-notification';\nvar CLASS_TOOLTIP = NOTIFICATION_NAMESPACE + '-tooltip';\nvar CLASS_TOOLTIP_ERROR = CLASS_TOOLTIP + '-error';\nvar CLASS_TOOLTIP_INFO = CLASS_TOOLTIP + '-info';\n\nvar ATTRIBUTE_NOTIFICATION_PREFIX = 'data-aui-notification-';\nvar ATTRIBUTE_NOTIFICATION_WAIT = ATTRIBUTE_NOTIFICATION_PREFIX + 'wait';\nvar ATTRIBUTE_NOTIFICATION_INFO = ATTRIBUTE_NOTIFICATION_PREFIX + 'info';\nvar ATTRIBUTE_NOTIFICATION_ERROR = ATTRIBUTE_NOTIFICATION_PREFIX + 'error';\nvar ATTRIBUTE_NOTIFICATION_SUCCESS = ATTRIBUTE_NOTIFICATION_PREFIX + 'success';\nvar ATTRIBUTE_TOOLTIP_POSITION = NOTIFICATION_NAMESPACE + '-position';\n\nvar NOTIFICATION_PRIORITY = [\n ATTRIBUTE_NOTIFICATION_ERROR,\n ATTRIBUTE_NOTIFICATION_SUCCESS,\n ATTRIBUTE_NOTIFICATION_WAIT,\n ATTRIBUTE_NOTIFICATION_INFO\n];\n\nvar notificationFields = [];\n\n/* --- Tipsy configuration --- */\nvar TIPSY_OPACITY = 1;\nvar TIPSY_OFFSET_INSIDE_FIELD = 9; //offset in px from the icon to the start of the tipsy\nvar TIPSY_OFFSET_OUTSIDE_FIELD = 3;\n\nfunction initialiseNotification($field) {\n if (!isFieldInitialised($field)) {\n prepareFieldMarkup($field);\n initialiseTooltip($field);\n bindFieldEvents($field);\n synchroniseNotificationDisplay($field);\n }\n\n notificationFields.push($field);\n}\n\nfunction isFieldInitialised($field) {\n return $field.hasClass(CLASS_NOTIFICATION_INITIALISED);\n}\n\nfunction constructFieldIcon(){\n return $('<span class=\"aui-icon aui-icon-small ' + CLASS_NOTIFICATION_ICON + '\"/>');\n}\n\nfunction prepareFieldMarkup($field) {\n $field.addClass(CLASS_NOTIFICATION_INITIALISED);\n appendIconToField($field);\n}\n\nfunction appendIconToField($field) {\n var $icon = constructFieldIcon();\n $field.after($icon);\n}\n\nfunction initialiseTooltip($field) {\n getTooltipAnchor($field).tipsy({\n gravity: getTipsyGravity($field),\n title: function () {\n return getNotificationMessage($field);\n },\n trigger: 'manual',\n offset: canContainIcon($field) ? TIPSY_OFFSET_INSIDE_FIELD : TIPSY_OFFSET_OUTSIDE_FIELD,\n opacity: TIPSY_OPACITY,\n className: function () {\n return 'aui-form-notification-tooltip ' + getNotificationClass($field);\n },\n html: true\n });\n}\n\n// A list of HTML5 input types that don't typically get augmented by the browser, so are safe to put icons inside of.\nvar unadornedInputFields = ['text', 'url', 'email', 'tel', 'password'];\n\nfunction canContainIcon($field) {\n return unadornedInputFields.indexOf($field.attr('type')) !== -1;\n}\n\nfunction getNotificationMessage($field) {\n var notificationType = getFieldNotificationType($field);\n var message = notificationType ? $field.attr(notificationType) : '';\n return formatMessage(message);\n}\n\nfunction formatMessage(message) {\n if (message === '') {\n return message;\n }\n\n var messageArray = jsonToArray(message);\n\n if (messageArray.length === 1) {\n return messageArray[0];\n } else {\n return '<ul><li>' + messageArray.join('</li><li>') + '</li></ul>';\n }\n}\n\nfunction jsonToArray(jsonOrString) {\n var jsonArray;\n try {\n jsonArray = JSON.parse(jsonOrString);\n } catch (exception) {\n jsonArray = [jsonOrString];\n }\n return jsonArray;\n}\n\nfunction getNotificationClass($field) {\n var notificationType = getFieldNotificationType($field);\n\n if (notificationType === ATTRIBUTE_NOTIFICATION_ERROR) {\n return CLASS_TOOLTIP_ERROR;\n } else if (notificationType === ATTRIBUTE_NOTIFICATION_INFO) {\n return CLASS_TOOLTIP_INFO;\n }\n}\n\nfunction getFieldNotificationType($field) {\n var fieldNotificationType;\n NOTIFICATION_PRIORITY.some(function (prioritisedNotification) {\n if ($field.is('[' + prioritisedNotification + ']')) {\n fieldNotificationType = prioritisedNotification;\n return true;\n }\n });\n\n return fieldNotificationType;\n}\n\nfunction bindFieldEvents($field) {\n if (focusTogglesTooltip($field)) {\n bindFieldTabEvents($field);\n }\n}\n\nfunction focusTogglesTooltip($field) {\n return $field.is(':aui-focusable');\n}\n\nfunction fieldHasTooltip($field) {\n return getNotificationMessage($field) !== '';\n}\n\nfunction showTooltip($field) {\n getTooltipAnchor($field).tipsy('show');\n if (focusTogglesTooltip($field)) {\n bindTooltipTabEvents($field);\n }\n}\n\nfunction hideTooltip($field) {\n getTooltipAnchor($field).tipsy('hide');\n}\n\nfunction bindFocusTooltipInteractions() {\n document.addEventListener('focus', function (e) {\n notificationFields.forEach(function (field) {\n var $field = $(field);\n var $tooltip = getTooltip($field);\n\n if (!focusTogglesTooltip($field)) {\n return;\n }\n\n var isFocusInTooltip = $tooltip && $.contains($tooltip[0], e.target);\n var isFocusTargetField = $field.is(e.target);\n var isFocusTargetChildOfField = isFocusEventTargetInElement(e, $field);\n\n if (isFocusTargetField || isFocusTargetChildOfField) {\n showTooltip($field);\n } else if ($tooltip && !isFocusInTooltip) {\n hideTooltip($field);\n }\n });\n }, true);\n}\n\nbindFocusTooltipInteractions();\n\nfunction isFocusEventTargetInElement(event, $element) {\n return $(event.target).closest($element).length > 0;\n}\n\nfunction bindFieldTabEvents($field) {\n $field.on('keydown', function (e) {\n if (isNormalTab(e) && fieldHasTooltip($field)) {\n var $firstTooltipLink = getFirstTooltipLink($field);\n if ($firstTooltipLink.length) {\n $firstTooltipLink.focus();\n e.preventDefault();\n }\n }\n });\n}\n\nfunction isNormalTab(e) {\n return e.keyCode === keyCode.TAB && !e.shiftKey && !e.altKey;\n}\n\nfunction isShiftTab(e) {\n return e.keyCode === keyCode.TAB && e.shiftKey;\n}\n\nfunction getFirstTooltipLink($field) {\n return getTooltip($field).find(':aui-tabbable').first();\n}\n\nfunction getLastTooltipLink($field) {\n return getTooltip($field).find(':aui-tabbable').last();\n}\n\nfunction getTooltip($field) {\n var $anchor = getTooltipAnchor($field);\n if ($anchor.data('tipsy')) {\n return $anchor.data('tipsy').$tip;\n }\n}\n\nfunction bindTooltipTabEvents($field) {\n var $tooltip = getTooltip($field);\n $tooltip.on('keydown', function (e) {\n var leavingTooltipForwards = elementIsActive(getLastTooltipLink($field));\n var leavingTooltipBackwards = elementIsActive(getFirstTooltipLink($field));\n\n if (isNormalTab(e) && leavingTooltipForwards) {\n if (leavingTooltipForwards) {\n $field.focus();\n }\n }\n if (isShiftTab(e) && leavingTooltipBackwards) {\n if (leavingTooltipBackwards) {\n $field.focus();\n e.preventDefault();\n }\n }\n });\n}\n\nfunction getTipsyGravity($field) {\n var position = $field.data(ATTRIBUTE_TOOLTIP_POSITION) || 'side';\n var gravityMap = {\n side: 'w',\n top: 'se',\n bottom: 'ne'\n };\n var gravity = gravityMap[position];\n if (!gravity) {\n gravity = 'w';\n logger.warn('Invalid notification position: \"' + position + '\". Valid options are \"side\", \"bottom, \"top\"');\n }\n return gravity;\n}\n\nfunction getTooltipAnchor($field) {\n return getFieldIcon($field);\n}\n\nfunction getFieldIcon($field) {\n return $field.next('.' + CLASS_NOTIFICATION_ICON);\n}\n\nfunction elementIsActive($el) {\n var el = ($el instanceof $) ? $el[0] : $el;\n return el && el === document.activeElement;\n}\n\nfunction synchroniseNotificationDisplay(field) {\n var $field = $(field);\n\n if (!isFieldInitialised($field)) {\n return;\n }\n\n var notificationType = getFieldNotificationType($field);\n\n var showSpinner = notificationType === ATTRIBUTE_NOTIFICATION_WAIT;\n setFieldSpinner($field, showSpinner);\n var noNotificationOnField = !notificationType;\n if (noNotificationOnField) {\n hideTooltip($field);\n return;\n }\n\n var message = getNotificationMessage($field);\n\n var fieldContainsActiveElement = $.contains($field[0], document.activeElement);\n var tooltipShouldBeVisible = (fieldContainsActiveElement || elementIsActive($field) || !focusTogglesTooltip($field));\n if (tooltipShouldBeVisible && message) {\n showTooltip($field);\n } else {\n hideTooltip($field);\n }\n}\n\nfunction setFieldSpinner($field, isSpinnerVisible) {\n if (isSpinnerVisible) {\n getFieldIcon($field).addClass('aui-icon-wait');\n } else {\n getFieldIcon($field).removeClass('aui-icon-wait');\n }\n}\n\ndocument.addEventListener('mousedown', function (e) {\n var isTargetLink = $(e.target).is('a');\n if (isTargetLink) {\n return;\n }\n\n var isTargetTooltip = $(e.target).closest('.aui-form-notification-tooltip').length > 0;\n if (isTargetTooltip) {\n return;\n }\n\n var $allNotificationFields = $('[data-aui-notification-field]');\n $allNotificationFields.each(function () {\n var $notificationField = $(this);\n\n var targetIsThisField = $notificationField.is(e.target);\n var isFocusTargetChildOfField = isFocusEventTargetInElement(e, $notificationField);\n\n if (!targetIsThisField && !isFocusTargetChildOfField) {\n hideTooltip($notificationField);\n }\n if (focusTogglesTooltip($notificationField)) {\n hideTooltip($notificationField);\n }\n });\n});\n\nskate('data-aui-notification-field', {\n attached: function (element) {\n initialiseNotification($(element));\n },\n attributes: (function () {\n var attrs = {};\n NOTIFICATION_PRIORITY.forEach(function (type) {\n attrs[type] = synchroniseNotificationDisplay;\n });\n return attrs;\n }()),\n type: skate.type.ATTRIBUTE\n});\n\namdify('aui/form-notification');\n"]}
1
+ {"version":3,"sources":["js/aui/form-notification.js"],"names":["logger","NOTIFICATION_NAMESPACE","CLASS_NOTIFICATION_INITIALISED","CLASS_NOTIFICATION_ICON","CLASS_TOOLTIP","CLASS_TOOLTIP_ERROR","CLASS_TOOLTIP_INFO","ATTRIBUTE_NOTIFICATION_PREFIX","ATTRIBUTE_NOTIFICATION_WAIT","ATTRIBUTE_NOTIFICATION_INFO","ATTRIBUTE_NOTIFICATION_ERROR","ATTRIBUTE_NOTIFICATION_SUCCESS","ATTRIBUTE_TOOLTIP_POSITION","NOTIFICATION_PRIORITY","notificationFields","TIPSY_OPACITY","TIPSY_OFFSET_INSIDE_FIELD","TIPSY_OFFSET_OUTSIDE_FIELD","initialiseNotification","$field","isFieldInitialised","prepareFieldMarkup","initialiseTooltip","bindFieldEvents","synchroniseNotificationDisplay","push","hasClass","constructFieldIcon","addClass","appendIconToField","$icon","after","getTooltipAnchor","tipsy","gravity","getTipsyGravity","title","getNotificationMessage","trigger","offset","canContainIcon","opacity","className","getNotificationClass","html","unadornedInputFields","indexOf","attr","notificationType","getFieldNotificationType","message","formatMessage","messageArray","jsonToArray","length","join","jsonOrString","jsonArray","JSON","parse","exception","fieldNotificationType","some","prioritisedNotification","is","focusTogglesTooltip","bindFieldTabEvents","fieldHasTooltip","showTooltip","bindTooltipTabEvents","hideTooltip","bindFocusTooltipInteractions","document","addEventListener","e","forEach","field","$tooltip","getTooltip","isFocusInTooltip","$","contains","target","isFocusTargetField","isFocusTargetChildOfField","isFocusEventTargetInElement","event","$element","closest","on","isNormalTab","$firstTooltipLink","getFirstTooltipLink","focus","preventDefault","keyCode","TAB","shiftKey","altKey","isShiftTab","find","first","getLastTooltipLink","last","$anchor","data","$tip","leavingTooltipForwards","elementIsActive","leavingTooltipBackwards","position","gravityMap","side","top","bottom","warn","getFieldIcon","next","$el","el","activeElement","showSpinner","setFieldSpinner","noNotificationOnField","fieldContainsActiveElement","tooltipShouldBeVisible","isSpinnerVisible","removeClass","isTargetLink","isTargetTooltip","$allNotificationFields","each","$notificationField","targetIsThisField","attached","element","attributes","attrs","type","skate","ATTRIBUTE"],"mappings":"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","file":"form-notification.js","sourcesContent":["'use strict';\n\nimport $ from './jquery';\nimport '../../js-vendor/jquery/jquery.tipsy';\nimport * as logger from './internal/log';\nimport amdify from './internal/amdify';\nimport keyCode from './key-code';\nimport skate from './internal/skate';\n\nvar NOTIFICATION_NAMESPACE = 'aui-form-notification';\n\nvar CLASS_NOTIFICATION_INITIALISED = '_aui-form-notification-initialised';\nvar CLASS_NOTIFICATION_ICON = 'aui-icon-notification';\nvar CLASS_TOOLTIP = NOTIFICATION_NAMESPACE + '-tooltip';\nvar CLASS_TOOLTIP_ERROR = CLASS_TOOLTIP + '-error';\nvar CLASS_TOOLTIP_INFO = CLASS_TOOLTIP + '-info';\n\nvar ATTRIBUTE_NOTIFICATION_PREFIX = 'data-aui-notification-';\nvar ATTRIBUTE_NOTIFICATION_WAIT = ATTRIBUTE_NOTIFICATION_PREFIX + 'wait';\nvar ATTRIBUTE_NOTIFICATION_INFO = ATTRIBUTE_NOTIFICATION_PREFIX + 'info';\nvar ATTRIBUTE_NOTIFICATION_ERROR = ATTRIBUTE_NOTIFICATION_PREFIX + 'error';\nvar ATTRIBUTE_NOTIFICATION_SUCCESS = ATTRIBUTE_NOTIFICATION_PREFIX + 'success';\nvar ATTRIBUTE_TOOLTIP_POSITION = NOTIFICATION_NAMESPACE + '-position';\n\nvar NOTIFICATION_PRIORITY = [\n ATTRIBUTE_NOTIFICATION_ERROR,\n ATTRIBUTE_NOTIFICATION_SUCCESS,\n ATTRIBUTE_NOTIFICATION_WAIT,\n ATTRIBUTE_NOTIFICATION_INFO\n];\n\nvar notificationFields = [];\n\n/* --- Tipsy configuration --- */\nvar TIPSY_OPACITY = 1;\nvar TIPSY_OFFSET_INSIDE_FIELD = 9; //offset in px from the icon to the start of the tipsy\nvar TIPSY_OFFSET_OUTSIDE_FIELD = 3;\n\nfunction initialiseNotification($field) {\n if (!isFieldInitialised($field)) {\n prepareFieldMarkup($field);\n initialiseTooltip($field);\n bindFieldEvents($field);\n synchroniseNotificationDisplay($field);\n }\n\n notificationFields.push($field);\n}\n\nfunction isFieldInitialised($field) {\n return $field.hasClass(CLASS_NOTIFICATION_INITIALISED);\n}\n\nfunction constructFieldIcon(){\n return $('<span class=\"aui-icon aui-icon-small ' + CLASS_NOTIFICATION_ICON + '\"/>');\n}\n\nfunction prepareFieldMarkup($field) {\n $field.addClass(CLASS_NOTIFICATION_INITIALISED);\n appendIconToField($field);\n}\n\nfunction appendIconToField($field) {\n var $icon = constructFieldIcon();\n $field.after($icon);\n}\n\nfunction initialiseTooltip($field) {\n getTooltipAnchor($field).tipsy({\n gravity: getTipsyGravity($field),\n title: function () {\n return getNotificationMessage($field);\n },\n trigger: 'manual',\n offset: canContainIcon($field) ? TIPSY_OFFSET_INSIDE_FIELD : TIPSY_OFFSET_OUTSIDE_FIELD,\n opacity: TIPSY_OPACITY,\n className: function () {\n return 'aui-form-notification-tooltip ' + getNotificationClass($field);\n },\n html: true\n });\n}\n\n// A list of HTML5 input types that don't typically get augmented by the browser, so are safe to put icons inside of.\nvar unadornedInputFields = ['text', 'url', 'email', 'tel', 'password'];\n\nfunction canContainIcon($field) {\n return unadornedInputFields.indexOf($field.attr('type')) !== -1;\n}\n\nfunction getNotificationMessage($field) {\n var notificationType = getFieldNotificationType($field);\n var message = notificationType ? $field.attr(notificationType) : '';\n return formatMessage(message);\n}\n\nfunction formatMessage(message) {\n if (message === '') {\n return message;\n }\n\n var messageArray = jsonToArray(message);\n\n if (messageArray.length === 1) {\n return messageArray[0];\n } else {\n return '<ul><li>' + messageArray.join('</li><li>') + '</li></ul>';\n }\n}\n\nfunction jsonToArray(jsonOrString) {\n var jsonArray;\n try {\n jsonArray = JSON.parse(jsonOrString);\n } catch (exception) {\n jsonArray = [jsonOrString];\n }\n return jsonArray;\n}\n\nfunction getNotificationClass($field) {\n var notificationType = getFieldNotificationType($field);\n\n if (notificationType === ATTRIBUTE_NOTIFICATION_ERROR) {\n return CLASS_TOOLTIP_ERROR;\n } else if (notificationType === ATTRIBUTE_NOTIFICATION_INFO) {\n return CLASS_TOOLTIP_INFO;\n }\n}\n\nfunction getFieldNotificationType($field) {\n var fieldNotificationType;\n NOTIFICATION_PRIORITY.some(function (prioritisedNotification) {\n if ($field.is('[' + prioritisedNotification + ']')) {\n fieldNotificationType = prioritisedNotification;\n return true;\n }\n });\n\n return fieldNotificationType;\n}\n\nfunction bindFieldEvents($field) {\n if (focusTogglesTooltip($field)) {\n bindFieldTabEvents($field);\n }\n}\n\nfunction focusTogglesTooltip($field) {\n return $field.is(':aui-focusable');\n}\n\nfunction fieldHasTooltip($field) {\n return getNotificationMessage($field) !== '';\n}\n\nfunction showTooltip($field) {\n getTooltipAnchor($field).tipsy('show');\n if (focusTogglesTooltip($field)) {\n bindTooltipTabEvents($field);\n }\n}\n\nfunction hideTooltip($field) {\n getTooltipAnchor($field).tipsy('hide');\n}\n\nfunction bindFocusTooltipInteractions() {\n document.addEventListener('focus', function (e) {\n notificationFields.forEach(function (field) {\n var $field = $(field);\n var $tooltip = getTooltip($field);\n\n if (!focusTogglesTooltip($field)) {\n return;\n }\n\n var isFocusInTooltip = $tooltip && $.contains($tooltip[0], e.target);\n var isFocusTargetField = $field.is(e.target);\n var isFocusTargetChildOfField = isFocusEventTargetInElement(e, $field);\n\n if (isFocusTargetField || isFocusTargetChildOfField) {\n showTooltip($field);\n } else if ($tooltip && !isFocusInTooltip) {\n hideTooltip($field);\n }\n });\n }, true);\n}\n\nbindFocusTooltipInteractions();\n\nfunction isFocusEventTargetInElement(event, $element) {\n return $(event.target).closest($element).length > 0;\n}\n\nfunction bindFieldTabEvents($field) {\n $field.on('keydown', function (e) {\n if (isNormalTab(e) && fieldHasTooltip($field)) {\n var $firstTooltipLink = getFirstTooltipLink($field);\n if ($firstTooltipLink.length) {\n $firstTooltipLink.focus();\n e.preventDefault();\n }\n }\n });\n}\n\nfunction isNormalTab(e) {\n return e.keyCode === keyCode.TAB && !e.shiftKey && !e.altKey;\n}\n\nfunction isShiftTab(e) {\n return e.keyCode === keyCode.TAB && e.shiftKey;\n}\n\nfunction getFirstTooltipLink($field) {\n return getTooltip($field).find(':aui-tabbable').first();\n}\n\nfunction getLastTooltipLink($field) {\n return getTooltip($field).find(':aui-tabbable').last();\n}\n\nfunction getTooltip($field) {\n var $anchor = getTooltipAnchor($field);\n if ($anchor.data('tipsy')) {\n return $anchor.data('tipsy').$tip;\n }\n}\n\nfunction bindTooltipTabEvents($field) {\n var $tooltip = getTooltip($field);\n $tooltip.on('keydown', function (e) {\n var leavingTooltipForwards = elementIsActive(getLastTooltipLink($field));\n var leavingTooltipBackwards = elementIsActive(getFirstTooltipLink($field));\n\n if (isNormalTab(e) && leavingTooltipForwards) {\n if (leavingTooltipForwards) {\n $field.focus();\n }\n }\n if (isShiftTab(e) && leavingTooltipBackwards) {\n if (leavingTooltipBackwards) {\n $field.focus();\n e.preventDefault();\n }\n }\n });\n}\n\nfunction getTipsyGravity($field) {\n var position = $field.data(ATTRIBUTE_TOOLTIP_POSITION) || 'side';\n var gravityMap = {\n side: 'w',\n top: 'se',\n bottom: 'ne'\n };\n var gravity = gravityMap[position];\n if (!gravity) {\n gravity = 'w';\n logger.warn('Invalid notification position: \"' + position + '\". Valid options are \"side\", \"bottom, \"top\"');\n }\n return gravity;\n}\n\nfunction getTooltipAnchor($field) {\n return getFieldIcon($field);\n}\n\nfunction getFieldIcon($field) {\n return $field.next('.' + CLASS_NOTIFICATION_ICON);\n}\n\nfunction elementIsActive($el) {\n var el = ($el instanceof $) ? $el[0] : $el;\n return el && el === document.activeElement;\n}\n\nfunction synchroniseNotificationDisplay(field) {\n var $field = $(field);\n\n if (!isFieldInitialised($field)) {\n return;\n }\n\n var notificationType = getFieldNotificationType($field);\n\n var showSpinner = notificationType === ATTRIBUTE_NOTIFICATION_WAIT;\n setFieldSpinner($field, showSpinner);\n var noNotificationOnField = !notificationType;\n if (noNotificationOnField) {\n hideTooltip($field);\n return;\n }\n\n var message = getNotificationMessage($field);\n\n var fieldContainsActiveElement = $.contains($field[0], document.activeElement);\n var tooltipShouldBeVisible = (fieldContainsActiveElement || elementIsActive($field) || !focusTogglesTooltip($field));\n if (tooltipShouldBeVisible && message) {\n showTooltip($field);\n } else {\n hideTooltip($field);\n }\n}\n\nfunction setFieldSpinner($field, isSpinnerVisible) {\n if (isSpinnerVisible) {\n getFieldIcon($field).addClass('aui-icon-wait');\n } else {\n getFieldIcon($field).removeClass('aui-icon-wait');\n }\n}\n\ndocument.addEventListener('mousedown', function (e) {\n var isTargetLink = $(e.target).is('a');\n if (isTargetLink) {\n return;\n }\n\n var isTargetTooltip = $(e.target).closest('.aui-form-notification-tooltip').length > 0;\n if (isTargetTooltip) {\n return;\n }\n\n var $allNotificationFields = $('[data-aui-notification-field]');\n $allNotificationFields.each(function () {\n var $notificationField = $(this);\n\n var targetIsThisField = $notificationField.is(e.target);\n var isFocusTargetChildOfField = isFocusEventTargetInElement(e, $notificationField);\n\n if (!targetIsThisField && !isFocusTargetChildOfField) {\n hideTooltip($notificationField);\n }\n if (focusTogglesTooltip($notificationField)) {\n hideTooltip($notificationField);\n }\n });\n});\n\nskate('data-aui-notification-field', {\n attached: function (element) {\n initialiseNotification($(element));\n },\n attributes: (function () {\n var attrs = {};\n NOTIFICATION_PRIORITY.forEach(function (type) {\n attrs[type] = synchroniseNotificationDisplay;\n });\n return attrs;\n }()),\n type: skate.type.ATTRIBUTE\n});\n\namdify('aui/form-notification');\n"]}