@atlassian/aui 7.10.0 → 7.10.3

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 (128) hide show
  1. package/changelog.md +51 -5
  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 +81 -39
  12. package/dist/aui/js/aui-datepicker.min.js +1 -1
  13. package/dist/aui/js/aui-experimental.js +279 -277
  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 +2283 -1540
  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 +72 -26
  42. package/lib/js/aui/date-picker.js.map +1 -1
  43. package/lib/js/aui/dialog.js.map +1 -1
  44. package/lib/js/aui/dialog2.js.map +1 -1
  45. package/lib/js/aui/drop-down.js.map +1 -1
  46. package/lib/js/aui/dropdown2.js +7 -5
  47. package/lib/js/aui/dropdown2.js.map +1 -1
  48. package/lib/js/aui/fancy-file-input.js.map +1 -1
  49. package/lib/js/aui/flag.js.map +1 -1
  50. package/lib/js/aui/focus-manager-global.js.map +1 -1
  51. package/lib/js/aui/focus-manager.js.map +1 -1
  52. package/lib/js/aui/form-notification.js.map +1 -1
  53. package/lib/js/aui/form-validation/basic-validators.js.map +1 -1
  54. package/lib/js/aui/form-validation/validator-register.js.map +1 -1
  55. package/lib/js/aui/form-validation.js.map +1 -1
  56. package/lib/js/aui/header-async.js.map +1 -1
  57. package/lib/js/aui/i18n.js.map +1 -1
  58. package/lib/js/aui/inline-dialog.js.map +1 -1
  59. package/lib/js/aui/inline-dialog2.js.map +1 -1
  60. package/lib/js/aui/internal/alignment.js.map +1 -1
  61. package/lib/js/aui/internal/deprecation.js.map +1 -1
  62. package/lib/js/aui/internal/globalize.js.map +1 -1
  63. package/lib/js/aui/internal/header/create-header.js.map +1 -1
  64. package/lib/js/aui/internal/select/option.js +1 -1
  65. package/lib/js/aui/internal/select/option.js.map +1 -1
  66. package/lib/js/aui/internal/select/suggestion-model.js.map +1 -1
  67. package/lib/js/aui/internal/select/suggestions-view.js.map +1 -1
  68. package/lib/js/aui/internal/skate.js.map +1 -1
  69. package/lib/js/aui/internal/widget.js.map +1 -1
  70. package/lib/js/aui/label.js.map +1 -1
  71. package/lib/js/aui/layer-manager-global.js.map +1 -1
  72. package/lib/js/aui/layer-manager.js.map +1 -1
  73. package/lib/js/aui/layer.js.map +1 -1
  74. package/lib/js/aui/messages.js.map +1 -1
  75. package/lib/js/aui/navigation.js.map +1 -1
  76. package/lib/js/aui/polyfills/placeholder.js.map +1 -1
  77. package/lib/js/aui/populate-parameters.js.map +1 -1
  78. package/lib/js/aui/progress-indicator.js.map +1 -1
  79. package/lib/js/aui/progressive-data-set.js.map +1 -1
  80. package/lib/js/aui/query-input.js.map +1 -1
  81. package/lib/js/aui/restful-table/custom-create-view.js.map +1 -1
  82. package/lib/js/aui/restful-table/custom-edit-view.js.map +1 -1
  83. package/lib/js/aui/restful-table/custom-read-view.js.map +1 -1
  84. package/lib/js/aui/restful-table/edit-row.js.map +1 -1
  85. package/lib/js/aui/restful-table/entry-model.js.map +1 -1
  86. package/lib/js/aui/restful-table/row.js.map +1 -1
  87. package/lib/js/aui/restful-table.js +3 -1
  88. package/lib/js/aui/restful-table.js.map +1 -1
  89. package/lib/js/aui/result-set.js.map +1 -1
  90. package/lib/js/aui/results-list.js.map +1 -1
  91. package/lib/js/aui/select.js.map +1 -1
  92. package/lib/js/aui/select2.js.map +1 -1
  93. package/lib/js/aui/setup.js.map +1 -1
  94. package/lib/js/aui/sidebar.js.map +1 -1
  95. package/lib/js/aui/spin.js.map +1 -1
  96. package/lib/js/aui/spinner.js.map +1 -1
  97. package/lib/js/aui/tables-sortable.js.map +1 -1
  98. package/lib/js/aui/tabs.js +6 -1
  99. package/lib/js/aui/tabs.js.map +1 -1
  100. package/lib/js/aui/template.js.map +1 -1
  101. package/lib/js/aui/toggle.js.map +1 -1
  102. package/lib/js/aui/tooltip.js.map +1 -1
  103. package/lib/js/aui/trigger.js.map +1 -1
  104. package/lib/js/aui/truncating-progressive-data-set.js.map +1 -1
  105. package/lib/js/aui/unbind-text-resize.js.map +1 -1
  106. package/lib/js/aui/underscore.js.map +1 -1
  107. package/lib/js/aui/version.js +1 -1
  108. package/lib/js/aui/version.js.map +1 -1
  109. package/lib/js/aui/when-i-type.js.map +1 -1
  110. package/lib/js/aui-css-deprecations.js.map +1 -1
  111. package/lib/js-vendor/jquery/jquery-ui/jquery.ui.dialog.js +30 -3
  112. package/package.json +57 -44
  113. package/src/js/aui/date-picker.js +64 -25
  114. package/src/js/aui/dropdown2.js +2 -1
  115. package/src/js/aui/internal/select/option.js +1 -1
  116. package/src/js/aui/restful-table.js +3 -1
  117. package/src/js/aui/tabs.js +6 -1
  118. package/src/js-vendor/jquery/jquery-ui/jquery.ui.dialog.js +30 -3
  119. package/src/less/imports/aui-theme/core/atlaskit-theme/borders.less +1 -0
  120. package/src/less/imports/aui-theme/core/atlaskit-theme/colors.less +112 -0
  121. package/src/less/imports/aui-theme/core/atlaskit-theme/fonts.less +3 -0
  122. package/src/less/imports/aui-theme/core/colors.less +1 -1
  123. package/src/less/imports/aui-theme/core/text.less +1 -1
  124. package/yarn.lock +8161 -3856
  125. package/lib/js-vendor/jquery/jquery-ui/jquery-ui.js +0 -11396
  126. package/lib/js-vendor/underscorejs/underscore.js +0 -1287
  127. package/src/js-vendor/jquery/jquery-ui/jquery-ui.js +0 -11396
  128. package/src/js-vendor/underscorejs/underscore.js +0 -1287
@@ -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":"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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
+ {"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"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["js/aui/form-validation/basic-validators.js"],"names":["minMaxLength","field","fieldValueLength","el","value","length","fieldIsEmpty","minlength","parseInt","args","maxlength","exactlengthMessage","makeMessage","invalidate","minlengthMessage","maxlengthMessage","validate","register","thisFieldValue","matchingField","document","getElementById","matchingFieldValue","matchingFieldMessage","shouldHidePasswords","isPasswordField","getAttribute","doesNotContainMessage","indexOf","matchesRegex","val","regex","matches","match","isExactMatch","pattern","patternMessage","RegExp","required","requiredMessage","minOrMax","validNumberMessage","fieldValue","isNaN","minValue","maxValue","dateFormatSymbolic","dateFormatMessage","symbolRegexMap","dateFormatSymbolArray","split","dateFormatRegexString","forEach","dateSymbol","isRecognisedSymbol","hasOwnProperty","dateFormatRegex","isValidDate","amountChecked","find","aboveMin","belowMax","belowMinMessage","aboveMaxMessage","key","accessorFunction","customTokens","inFlatpackMode","AJS","I18n","keys","undefined","defaultMessage","pluginI18nMessages","messageTokens","customMessageUnformatted","formattingArguments","concat","format","apply","getText","exactlength","matchingfield","doesnotcontain","validnumber","min","max","dateformat","minchecked","maxchecked"],"mappings":"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","file":"basic-validators.js","sourcesContent":["'use strict';\n\nimport $ from '../jquery';\nimport amdify from '../internal/amdify';\nimport format from '../format'; // eslint-disable-line no-unused-vars\nimport i18n from '../i18n'; // eslint-disable-line no-unused-vars\nimport validatorRegister from './validator-register';\n\n//Input length\nfunction minMaxLength(field) {\n var fieldValueLength = field.el.value.length;\n let fieldIsEmpty = fieldValueLength === 0;\n var minlength = parseInt(field.args('minlength'), 10);\n var maxlength = parseInt(field.args('maxlength'), 10);\n\n if (minlength && maxlength && minlength === maxlength && (!fieldIsEmpty && fieldValueLength !== minlength)) {\n const exactlengthMessage = makeMessage('exactlength', field.args, [minlength]);\n field.invalidate(exactlengthMessage);\n } else if (minlength && (fieldValueLength < minlength && !fieldIsEmpty)) {\n const minlengthMessage = makeMessage('minlength', field.args);\n field.invalidate(minlengthMessage);\n } else if (maxlength && (fieldValueLength > maxlength)) {\n const maxlengthMessage = makeMessage('maxlength', field.args);\n field.invalidate(maxlengthMessage);\n } else {\n field.validate();\n }\n}\nvalidatorRegister.register(['maxlength', 'minlength'], minMaxLength); //AUI-prefixed attribute is deprecated as of 5.9.0\nvalidatorRegister.register('[maxlength],[minlength]', minMaxLength);\n\n//Field matching\nvalidatorRegister.register(['matchingfield'], function (field) {\n var thisFieldValue = field.el.value;\n var matchingField = document.getElementById(field.args('matchingfield'));\n var matchingFieldValue = matchingField.value;\n\n var matchingFieldMessage = makeMessage('matchingfield', field.args, [thisFieldValue, matchingFieldValue]);\n\n var shouldHidePasswords = isPasswordField(field.el) || isPasswordField(matchingField);\n if (shouldHidePasswords) {\n matchingFieldMessage = makeMessage('matchingfield-novalue', field.args);\n }\n\n if (!thisFieldValue || !matchingFieldValue){\n field.validate();\n } else if (matchingFieldValue !== thisFieldValue) {\n field.invalidate(matchingFieldMessage);\n } else {\n field.validate();\n }\n});\n\nfunction isPasswordField(field) {\n return field.getAttribute('type') === 'password';\n}\n\n//Banned words\nvalidatorRegister.register(['doesnotcontain'], function (field) {\n var doesNotContainMessage = makeMessage('doesnotcontain', field.args);\n\n if (field.el.value.indexOf(field.args('doesnotcontain')) === -1) {\n field.validate();\n } else {\n field.invalidate(doesNotContainMessage);\n }\n});\n\n//Matches regex\n\nfunction matchesRegex(val, regex){\n var matches = val.match(regex);\n if (!matches) {\n return false;\n }\n var isExactMatch = (val === matches[0]);\n return isExactMatch;\n}\n\nfunction pattern(field) {\n var patternMessage = makeMessage('pattern', field.args);\n\n if (matchesRegex(field.el.value, new RegExp(field.args('pattern')))) {\n field.validate();\n } else {\n field.invalidate(patternMessage);\n }\n}\n\nvalidatorRegister.register(['pattern'], pattern); //AUI-prefixed attribute is deprecated as of 5.9.0\nvalidatorRegister.register('[pattern]', pattern);\n\n//Native Required\nfunction required(field) {\n var requiredMessage = makeMessage('required', field.args);\n if (field.el.value) {\n field.validate();\n } else {\n field.invalidate(requiredMessage);\n }\n}\nvalidatorRegister.register(['required'], required); //AUI-prefixed attribute is deprecated as of 5.9.0\nvalidatorRegister.register('[required]', required);\n\n//Field value range (between min and max)\n\nfunction minOrMax(field) {\n var validNumberMessage = makeMessage('validnumber', field.args);\n\n var fieldValue = parseInt(field.el.value, 10);\n if (isNaN(fieldValue)) {\n field.invalidate(validNumberMessage);\n return;\n }\n\n var minValue = field.args('min');\n var maxValue = field.args('max');\n\n if (minValue && (fieldValue < parseInt(minValue, 10))) {\n field.invalidate(makeMessage('min', field.args));\n } else if (maxValue && (fieldValue > parseInt(maxValue, 10))){\n field.invalidate(makeMessage('max', field.args));\n } else {\n field.validate();\n }\n}\nvalidatorRegister.register(['min', 'max'], minOrMax); //AUI-prefixed attribute is deprecated as of 5.9.0\nvalidatorRegister.register('[min],[max]', minOrMax);\n\n//Date format\nvalidatorRegister.register(['dateformat'], function (field) {\n var dateFormatSymbolic = field.args('dateformat');\n var dateFormatMessage = makeMessage('dateformat', field.args);\n\n var symbolRegexMap = {\n 'Y': '[0-9]{4}',\n 'y': '[0-9]{2}',\n 'm': '(0?[1-9]|10|11|12)',\n 'M': '[Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec]',\n 'D': '[Mon|Tue|Wed|Thu|Fri|Sat|Sun]',\n 'd': '([0-2]?[1-9]|10|20|30|31)'\n };\n\n var dateFormatSymbolArray = dateFormatSymbolic.split('');\n var dateFormatRegexString = '';\n\n dateFormatSymbolArray.forEach(function (dateSymbol) {\n var isRecognisedSymbol = symbolRegexMap.hasOwnProperty(dateSymbol);\n if (isRecognisedSymbol) {\n dateFormatRegexString += symbolRegexMap[dateSymbol];\n } else {\n dateFormatRegexString += dateSymbol;\n }\n });\n\n var dateFormatRegex = new RegExp(dateFormatRegexString + '$', 'i');\n var isValidDate = matchesRegex(field.el.value, dateFormatRegex);\n\n if (isValidDate) {\n field.validate();\n } else {\n field.invalidate(dateFormatMessage);\n }\n});\n\n//Checkbox count\nvalidatorRegister.register(['minchecked', 'maxchecked'], function (field) {\n var amountChecked = $(field.el).find(':checked').length;\n var aboveMin = !field.args('minchecked') || (amountChecked >= field.args('minchecked'));\n var belowMax = !field.args('maxchecked') || (amountChecked <= field.args('maxchecked'));\n\n var belowMinMessage = makeMessage('minchecked', field.args);\n var aboveMaxMessage = makeMessage('maxchecked', field.args);\n\n if (aboveMin && belowMax) {\n field.validate();\n } else if (!aboveMin) {\n field.invalidate(belowMinMessage);\n } else if (!belowMax) {\n field.invalidate(aboveMaxMessage);\n }\n});\n\n/*\n Retrieves a message for a plugin validator through the data attributes or the default (which is in the i18n file)\n */\nfunction makeMessage(key, accessorFunction, customTokens) {\n var inFlatpackMode = AJS.I18n.keys !== undefined;\n var defaultMessage;\n if (inFlatpackMode) {\n defaultMessage = AJS.I18n.keys['aui.validation.message.' + key];\n } else {\n defaultMessage = pluginI18nMessages[key];\n }\n\n var messageTokens = customTokens;\n if (!customTokens) {\n messageTokens = [accessorFunction(key)];\n }\n\n var customMessageUnformatted = accessorFunction(key + '-msg');\n var formattingArguments;\n\n if (customMessageUnformatted) {\n formattingArguments = [customMessageUnformatted].concat(messageTokens);\n } else {\n formattingArguments = [defaultMessage].concat(messageTokens);\n }\n\n return AJS.format.apply(null, formattingArguments);\n}\n\n/*\n The value AJS.I18n.getText('aui.validation.message...') (defaultMessage) cannot be refactored as it\n must appear verbatim for the plugin I18n transformation to pick it up\n */\nvar pluginI18nMessages = {\n minlength: AJS.I18n.getText('aui.validation.message.minlength'),\n maxlength: AJS.I18n.getText('aui.validation.message.maxlength'),\n exactlength: AJS.I18n.getText('aui.validation.message.exactlength'),\n matchingfield: AJS.I18n.getText('aui.validation.message.matchingfield'),\n 'matchingfield-novalue': AJS.I18n.getText('aui.validation.message.matchingfield-novalue'),\n doesnotcontain: AJS.I18n.getText('aui.validation.message.doesnotcontain'),\n pattern: AJS.I18n.getText('aui.validation.message.pattern'),\n required: AJS.I18n.getText('aui.validation.message.required'),\n validnumber: AJS.I18n.getText('aui.validation.message.validnumber'),\n min: AJS.I18n.getText('aui.validation.message.min'),\n max: AJS.I18n.getText('aui.validation.message.max'),\n dateformat: AJS.I18n.getText('aui.validation.message.dateformat'),\n minchecked: AJS.I18n.getText('aui.validation.message.minchecked'),\n maxchecked: AJS.I18n.getText('aui.validation.message.maxchecked')\n};\n\namdify('aui/form-validation/basic-validators');\n"]}
1
+ {"version":3,"sources":["js/aui/form-validation/basic-validators.js"],"names":["minMaxLength","field","fieldValueLength","el","value","length","fieldIsEmpty","minlength","parseInt","args","maxlength","exactlengthMessage","makeMessage","invalidate","minlengthMessage","maxlengthMessage","validate","validatorRegister","register","thisFieldValue","matchingField","document","getElementById","matchingFieldValue","matchingFieldMessage","shouldHidePasswords","isPasswordField","getAttribute","doesNotContainMessage","indexOf","matchesRegex","val","regex","matches","match","isExactMatch","pattern","patternMessage","RegExp","required","requiredMessage","minOrMax","validNumberMessage","fieldValue","isNaN","minValue","maxValue","dateFormatSymbolic","dateFormatMessage","symbolRegexMap","dateFormatSymbolArray","split","dateFormatRegexString","forEach","dateSymbol","isRecognisedSymbol","hasOwnProperty","dateFormatRegex","isValidDate","amountChecked","find","aboveMin","belowMax","belowMinMessage","aboveMaxMessage","key","accessorFunction","customTokens","inFlatpackMode","AJS","I18n","keys","undefined","defaultMessage","pluginI18nMessages","messageTokens","customMessageUnformatted","formattingArguments","concat","format","apply","getText","exactlength","matchingfield","doesnotcontain","validnumber","min","max","dateformat","minchecked","maxchecked"],"mappings":"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","file":"basic-validators.js","sourcesContent":["'use strict';\n\nimport $ from '../jquery';\nimport amdify from '../internal/amdify';\nimport format from '../format'; // eslint-disable-line no-unused-vars\nimport i18n from '../i18n'; // eslint-disable-line no-unused-vars\nimport validatorRegister from './validator-register';\n\n//Input length\nfunction minMaxLength(field) {\n var fieldValueLength = field.el.value.length;\n let fieldIsEmpty = fieldValueLength === 0;\n var minlength = parseInt(field.args('minlength'), 10);\n var maxlength = parseInt(field.args('maxlength'), 10);\n\n if (minlength && maxlength && minlength === maxlength && (!fieldIsEmpty && fieldValueLength !== minlength)) {\n const exactlengthMessage = makeMessage('exactlength', field.args, [minlength]);\n field.invalidate(exactlengthMessage);\n } else if (minlength && (fieldValueLength < minlength && !fieldIsEmpty)) {\n const minlengthMessage = makeMessage('minlength', field.args);\n field.invalidate(minlengthMessage);\n } else if (maxlength && (fieldValueLength > maxlength)) {\n const maxlengthMessage = makeMessage('maxlength', field.args);\n field.invalidate(maxlengthMessage);\n } else {\n field.validate();\n }\n}\nvalidatorRegister.register(['maxlength', 'minlength'], minMaxLength); //AUI-prefixed attribute is deprecated as of 5.9.0\nvalidatorRegister.register('[maxlength],[minlength]', minMaxLength);\n\n//Field matching\nvalidatorRegister.register(['matchingfield'], function (field) {\n var thisFieldValue = field.el.value;\n var matchingField = document.getElementById(field.args('matchingfield'));\n var matchingFieldValue = matchingField.value;\n\n var matchingFieldMessage = makeMessage('matchingfield', field.args, [thisFieldValue, matchingFieldValue]);\n\n var shouldHidePasswords = isPasswordField(field.el) || isPasswordField(matchingField);\n if (shouldHidePasswords) {\n matchingFieldMessage = makeMessage('matchingfield-novalue', field.args);\n }\n\n if (!thisFieldValue || !matchingFieldValue){\n field.validate();\n } else if (matchingFieldValue !== thisFieldValue) {\n field.invalidate(matchingFieldMessage);\n } else {\n field.validate();\n }\n});\n\nfunction isPasswordField(field) {\n return field.getAttribute('type') === 'password';\n}\n\n//Banned words\nvalidatorRegister.register(['doesnotcontain'], function (field) {\n var doesNotContainMessage = makeMessage('doesnotcontain', field.args);\n\n if (field.el.value.indexOf(field.args('doesnotcontain')) === -1) {\n field.validate();\n } else {\n field.invalidate(doesNotContainMessage);\n }\n});\n\n//Matches regex\n\nfunction matchesRegex(val, regex){\n var matches = val.match(regex);\n if (!matches) {\n return false;\n }\n var isExactMatch = (val === matches[0]);\n return isExactMatch;\n}\n\nfunction pattern(field) {\n var patternMessage = makeMessage('pattern', field.args);\n\n if (matchesRegex(field.el.value, new RegExp(field.args('pattern')))) {\n field.validate();\n } else {\n field.invalidate(patternMessage);\n }\n}\n\nvalidatorRegister.register(['pattern'], pattern); //AUI-prefixed attribute is deprecated as of 5.9.0\nvalidatorRegister.register('[pattern]', pattern);\n\n//Native Required\nfunction required(field) {\n var requiredMessage = makeMessage('required', field.args);\n if (field.el.value) {\n field.validate();\n } else {\n field.invalidate(requiredMessage);\n }\n}\nvalidatorRegister.register(['required'], required); //AUI-prefixed attribute is deprecated as of 5.9.0\nvalidatorRegister.register('[required]', required);\n\n//Field value range (between min and max)\n\nfunction minOrMax(field) {\n var validNumberMessage = makeMessage('validnumber', field.args);\n\n var fieldValue = parseInt(field.el.value, 10);\n if (isNaN(fieldValue)) {\n field.invalidate(validNumberMessage);\n return;\n }\n\n var minValue = field.args('min');\n var maxValue = field.args('max');\n\n if (minValue && (fieldValue < parseInt(minValue, 10))) {\n field.invalidate(makeMessage('min', field.args));\n } else if (maxValue && (fieldValue > parseInt(maxValue, 10))){\n field.invalidate(makeMessage('max', field.args));\n } else {\n field.validate();\n }\n}\nvalidatorRegister.register(['min', 'max'], minOrMax); //AUI-prefixed attribute is deprecated as of 5.9.0\nvalidatorRegister.register('[min],[max]', minOrMax);\n\n//Date format\nvalidatorRegister.register(['dateformat'], function (field) {\n var dateFormatSymbolic = field.args('dateformat');\n var dateFormatMessage = makeMessage('dateformat', field.args);\n\n var symbolRegexMap = {\n 'Y': '[0-9]{4}',\n 'y': '[0-9]{2}',\n 'm': '(0?[1-9]|10|11|12)',\n 'M': '[Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec]',\n 'D': '[Mon|Tue|Wed|Thu|Fri|Sat|Sun]',\n 'd': '([0-2]?[1-9]|10|20|30|31)'\n };\n\n var dateFormatSymbolArray = dateFormatSymbolic.split('');\n var dateFormatRegexString = '';\n\n dateFormatSymbolArray.forEach(function (dateSymbol) {\n var isRecognisedSymbol = symbolRegexMap.hasOwnProperty(dateSymbol);\n if (isRecognisedSymbol) {\n dateFormatRegexString += symbolRegexMap[dateSymbol];\n } else {\n dateFormatRegexString += dateSymbol;\n }\n });\n\n var dateFormatRegex = new RegExp(dateFormatRegexString + '$', 'i');\n var isValidDate = matchesRegex(field.el.value, dateFormatRegex);\n\n if (isValidDate) {\n field.validate();\n } else {\n field.invalidate(dateFormatMessage);\n }\n});\n\n//Checkbox count\nvalidatorRegister.register(['minchecked', 'maxchecked'], function (field) {\n var amountChecked = $(field.el).find(':checked').length;\n var aboveMin = !field.args('minchecked') || (amountChecked >= field.args('minchecked'));\n var belowMax = !field.args('maxchecked') || (amountChecked <= field.args('maxchecked'));\n\n var belowMinMessage = makeMessage('minchecked', field.args);\n var aboveMaxMessage = makeMessage('maxchecked', field.args);\n\n if (aboveMin && belowMax) {\n field.validate();\n } else if (!aboveMin) {\n field.invalidate(belowMinMessage);\n } else if (!belowMax) {\n field.invalidate(aboveMaxMessage);\n }\n});\n\n/*\n Retrieves a message for a plugin validator through the data attributes or the default (which is in the i18n file)\n */\nfunction makeMessage(key, accessorFunction, customTokens) {\n var inFlatpackMode = AJS.I18n.keys !== undefined;\n var defaultMessage;\n if (inFlatpackMode) {\n defaultMessage = AJS.I18n.keys['aui.validation.message.' + key];\n } else {\n defaultMessage = pluginI18nMessages[key];\n }\n\n var messageTokens = customTokens;\n if (!customTokens) {\n messageTokens = [accessorFunction(key)];\n }\n\n var customMessageUnformatted = accessorFunction(key + '-msg');\n var formattingArguments;\n\n if (customMessageUnformatted) {\n formattingArguments = [customMessageUnformatted].concat(messageTokens);\n } else {\n formattingArguments = [defaultMessage].concat(messageTokens);\n }\n\n return AJS.format.apply(null, formattingArguments);\n}\n\n/*\n The value AJS.I18n.getText('aui.validation.message...') (defaultMessage) cannot be refactored as it\n must appear verbatim for the plugin I18n transformation to pick it up\n */\nvar pluginI18nMessages = {\n minlength: AJS.I18n.getText('aui.validation.message.minlength'),\n maxlength: AJS.I18n.getText('aui.validation.message.maxlength'),\n exactlength: AJS.I18n.getText('aui.validation.message.exactlength'),\n matchingfield: AJS.I18n.getText('aui.validation.message.matchingfield'),\n 'matchingfield-novalue': AJS.I18n.getText('aui.validation.message.matchingfield-novalue'),\n doesnotcontain: AJS.I18n.getText('aui.validation.message.doesnotcontain'),\n pattern: AJS.I18n.getText('aui.validation.message.pattern'),\n required: AJS.I18n.getText('aui.validation.message.required'),\n validnumber: AJS.I18n.getText('aui.validation.message.validnumber'),\n min: AJS.I18n.getText('aui.validation.message.min'),\n max: AJS.I18n.getText('aui.validation.message.max'),\n dateformat: AJS.I18n.getText('aui.validation.message.dateformat'),\n minchecked: AJS.I18n.getText('aui.validation.message.minchecked'),\n maxchecked: AJS.I18n.getText('aui.validation.message.maxchecked')\n};\n\namdify('aui/form-validation/basic-validators');\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["js/aui/form-validation/validator-register.js"],"names":["logger","ATTRIBUTE_RESERVED_ARGUMENTS","validators","getReservedArgument","validatorArguments","reservedArgument","some","arg","isReserved","inArray","registerValidator","trigger","validatorFunction","triggerSelector","warn","join","validator","validatorTrigger","push","validatorRegister","register"],"mappings":";;;;;;;;;;;;;AAAA;;;;;;;;QAGYA,M;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGZ,QAAIC,+BAA+B,CAAC,cAAD,EAAiB,YAAjB,EAA+B,MAA/B,EAAuC,YAAvC,EAAqD,OAArD,CAAnC;AACA,QAAIC,cAAa,EAAjB;;AAEA,aAASC,mBAAT,CAA8BC,kBAA9B,EAAkD;AAC9C,YAAIC,mBAAmB,KAAvB;;AAEAD,2BAAmBE,IAAnB,CAAwB,UAAUC,GAAV,EAAe;AACnC,gBAAIC,aAAa,iBAAEC,OAAF,CAAUF,GAAV,EAAeN,4BAAf,MAAiD,CAAC,CAAnE;;AAEA,gBAAIO,UAAJ,EAAgB;AACZH,mCAAmBE,GAAnB;AACH;;AAED,mBAAOC,UAAP;AACH,SARD;;AAUA,eAAOH,gBAAP;AACH;;AAED;;;;;;;AAOA,aAASK,iBAAT,CAA4BC,OAA5B,EAAqCC,iBAArC,EAAwD;AACpD,YAAIC,eAAJ;;AAEA,YAAI,OAAOF,OAAP,KAAmB,QAAvB,EAAiC;AAC7BE,8BAAkBF,OAAlB;AACH,SAFD,MAEO;AACH,gBAAIN,mBAAmBF,oBAAoBQ,OAApB,CAAvB;;AAEA,gBAAIN,gBAAJ,EAAsB;AAClBL,uBAAOc,IAAP,CAAY,wDAAwDT,gBAAxD,GAA2E,kCAAvF;AACA,uBAAO,KAAP;AACH;;AAEDQ,8BAAkB,0BAA0BF,QAAQI,IAAR,CAAa,yBAAb,CAA1B,GAAoE,GAAtF;AACH;;AAED,YAAIC,YAAY;AACZJ,+BAAmBA,iBADP;AAEZK,8BAAkBJ;AAFN,SAAhB;;AAKAX,oBAAWgB,IAAX,CAAgBF,SAAhB;;AAEA,eAAOA,SAAP;AACH;;AAED,QAAIG,oBAAoB;AACpBC,kBAAUV,iBADU;AAEpBR,oBAAY,sBAAY;AACpB,mBAAOA,WAAP;AACH;AAJmB,KAAxB;;AAOA,0BAAO,wCAAP,EAAiDiB,iBAAjD;;sBAEeA,iB","file":"validator-register.js","sourcesContent":["'use strict';\n\nimport $ from '../jquery';\nimport * as logger from '../internal/log';\nimport amdify from '../internal/amdify';\n\nvar ATTRIBUTE_RESERVED_ARGUMENTS = ['displayfield', 'watchfield', 'when', 'novalidate', 'state'];\nvar validators = [];\n\nfunction getReservedArgument (validatorArguments) {\n var reservedArgument = false;\n\n validatorArguments.some(function (arg) {\n var isReserved = $.inArray(arg, ATTRIBUTE_RESERVED_ARGUMENTS) !== -1;\n\n if (isReserved) {\n reservedArgument = arg;\n }\n\n return isReserved;\n });\n\n return reservedArgument;\n}\n\n/**\n * Register a validator that can be used to validate fields. The main entry point for validator plugins.\n * @param trigger - when to run the validator. Can be an array of arguments, or a selector\n * @param validatorFunction - the function that will be called on the field to determine validation. Receives\n * field - the field that is being validated\n * args - the arguments that have been specified in HTML markup.\n */\nfunction registerValidator (trigger, validatorFunction) {\n var triggerSelector;\n\n if (typeof trigger === 'string') {\n triggerSelector = trigger;\n } else {\n var reservedArgument = getReservedArgument(trigger);\n\n if (reservedArgument) {\n logger.warn('Validators cannot be registered with the argument \"' + reservedArgument + '\", as it is a reserved argument.');\n return false;\n }\n\n triggerSelector = '[data-aui-validation-' + trigger.join('],[data-aui-validation-') + ']';\n }\n\n var validator = {\n validatorFunction: validatorFunction,\n validatorTrigger: triggerSelector\n };\n\n validators.push(validator);\n\n return validator;\n}\n\nvar validatorRegister = {\n register: registerValidator,\n validators: function () {\n return validators;\n }\n};\n\namdify('aui/form-validation/validator-register', validatorRegister);\n\nexport default validatorRegister;\n"]}
1
+ {"version":3,"sources":["js/aui/form-validation/validator-register.js"],"names":["logger","ATTRIBUTE_RESERVED_ARGUMENTS","validators","getReservedArgument","validatorArguments","reservedArgument","some","arg","isReserved","$","inArray","registerValidator","trigger","validatorFunction","triggerSelector","warn","join","validator","validatorTrigger","push","validatorRegister","register"],"mappings":";;;;;;;;;;;;;AAAA;;;;;;;;QAGYA,M;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGZ,QAAIC,+BAA+B,CAAC,cAAD,EAAiB,YAAjB,EAA+B,MAA/B,EAAuC,YAAvC,EAAqD,OAArD,CAAnC;AACA,QAAIC,cAAa,EAAjB;;AAEA,aAASC,mBAAT,CAA8BC,kBAA9B,EAAkD;AAC9C,YAAIC,mBAAmB,KAAvB;;AAEAD,2BAAmBE,IAAnB,CAAwB,UAAUC,GAAV,EAAe;AACnC,gBAAIC,aAAaC,iBAAEC,OAAF,CAAUH,GAAV,EAAeN,4BAAf,MAAiD,CAAC,CAAnE;;AAEA,gBAAIO,UAAJ,EAAgB;AACZH,mCAAmBE,GAAnB;AACH;;AAED,mBAAOC,UAAP;AACH,SARD;;AAUA,eAAOH,gBAAP;AACH;;AAED;;;;;;;AAOA,aAASM,iBAAT,CAA4BC,OAA5B,EAAqCC,iBAArC,EAAwD;AACpD,YAAIC,eAAJ;;AAEA,YAAI,OAAOF,OAAP,KAAmB,QAAvB,EAAiC;AAC7BE,8BAAkBF,OAAlB;AACH,SAFD,MAEO;AACH,gBAAIP,mBAAmBF,oBAAoBS,OAApB,CAAvB;;AAEA,gBAAIP,gBAAJ,EAAsB;AAClBL,uBAAOe,IAAP,CAAY,wDAAwDV,gBAAxD,GAA2E,kCAAvF;AACA,uBAAO,KAAP;AACH;;AAEDS,8BAAkB,0BAA0BF,QAAQI,IAAR,CAAa,yBAAb,CAA1B,GAAoE,GAAtF;AACH;;AAED,YAAIC,YAAY;AACZJ,+BAAmBA,iBADP;AAEZK,8BAAkBJ;AAFN,SAAhB;;AAKAZ,oBAAWiB,IAAX,CAAgBF,SAAhB;;AAEA,eAAOA,SAAP;AACH;;AAED,QAAIG,oBAAoB;AACpBC,kBAAUV,iBADU;AAEpBT,oBAAY,sBAAY;AACpB,mBAAOA,WAAP;AACH;AAJmB,KAAxB;;AAOA,0BAAO,wCAAP,EAAiDkB,iBAAjD;;sBAEeA,iB","file":"validator-register.js","sourcesContent":["'use strict';\n\nimport $ from '../jquery';\nimport * as logger from '../internal/log';\nimport amdify from '../internal/amdify';\n\nvar ATTRIBUTE_RESERVED_ARGUMENTS = ['displayfield', 'watchfield', 'when', 'novalidate', 'state'];\nvar validators = [];\n\nfunction getReservedArgument (validatorArguments) {\n var reservedArgument = false;\n\n validatorArguments.some(function (arg) {\n var isReserved = $.inArray(arg, ATTRIBUTE_RESERVED_ARGUMENTS) !== -1;\n\n if (isReserved) {\n reservedArgument = arg;\n }\n\n return isReserved;\n });\n\n return reservedArgument;\n}\n\n/**\n * Register a validator that can be used to validate fields. The main entry point for validator plugins.\n * @param trigger - when to run the validator. Can be an array of arguments, or a selector\n * @param validatorFunction - the function that will be called on the field to determine validation. Receives\n * field - the field that is being validated\n * args - the arguments that have been specified in HTML markup.\n */\nfunction registerValidator (trigger, validatorFunction) {\n var triggerSelector;\n\n if (typeof trigger === 'string') {\n triggerSelector = trigger;\n } else {\n var reservedArgument = getReservedArgument(trigger);\n\n if (reservedArgument) {\n logger.warn('Validators cannot be registered with the argument \"' + reservedArgument + '\", as it is a reserved argument.');\n return false;\n }\n\n triggerSelector = '[data-aui-validation-' + trigger.join('],[data-aui-validation-') + ']';\n }\n\n var validator = {\n validatorFunction: validatorFunction,\n validatorTrigger: triggerSelector\n };\n\n validators.push(validator);\n\n return validator;\n}\n\nvar validatorRegister = {\n register: registerValidator,\n validators: function () {\n return validators;\n }\n};\n\namdify('aui/form-validation/validator-register', validatorRegister);\n\nexport default validatorRegister;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["js/aui/form-validation.js"],"names":["deprecate","ATTRIBUTE_VALIDATION_OPTION_PREFIX","ATTRIBUTE_NOTIFICATION_PREFIX","ATTRIBUTE_FIELD_STATE","INVALID","VALID","VALIDATING","UNVALIDATED","ATTRIBUTE_VALIDATION_FIELD_COMPONENT","CLASS_VALIDATION_INITIALISED","EVENT_FIELD_STATE_CHANGED","isFieldInitialised","$field","hasClass","initValidation","initialiseDisplayField","prepareFieldMarkup","bindFieldEvents","changeFieldState","getDisplayField","attr","addClass","bindStopTypingEvent","bindValidationEvent","keyUpTimer","triggerStopTypingEvent","trigger","on","clearTimeout","setTimeout","validateWhen","getValidationOption","watchedFieldID","elementsToWatch","add","startValidation","validationTriggeredHandler","noValidate","startValidating","option","defaults","optionValue","clearFieldMessages","validatorsToRun","getActivatedValidators","deferreds","runValidatorsAndGetDeferred","fieldValidators","when","apply","done","setFieldNotification","getValidators","validators","callList","forEach","validator","index","validatorTrigger","runThisValidator","is","push","allDeferreds","validatorIndex","validatorFunction","deferred","Deferred","validatorContext","createValidatorContext","validatorDeferred","context","validate","resolve","invalidate","message","reject","args","createArgumentAccessorFunction","el","$el","prop","sinceVersion","removeInVersion","alternativeName","extraInfo","arg","state","Event","$displayField","stateToNotificationTypeMap","notificationType","showSpinnerIfSlow","stillValidating","getFieldState","type","spinnerWasVisible","isSpinnerVisible","removeIconOnlyNotifications","skipShowingSuccessNotification","removeFieldNotification","previousMessage","newMessage","combineJSONMessages","removeAttr","newString","previousString","previousStackedMessageList","JSON","parse","newStackedMessageList","concat","newStackedMessage","stringify","displayFieldID","notifyOnSelf","undefined","validateField","document","e","form","target","$form","formState","getFormStateName","delaySubmitUntilStateChange","validateUnvalidatedFields","preventDefault","selectFirstInvalid","validSubmitEvent","preventNormalSubmit","isDefaultPrevented","event","one","$fieldCollection","find","fieldStates","getFieldCollectionStateNames","wholeFormState","mergeStates","$fields","states","map","field","stateNames","containsInvalidState","indexOf","containsUnvalidatedState","containsValidatingState","$unvalidatedElements","getFieldsInFormWithState","each","$firstInvalidField","first","focus","selector","register","attached","setAttribute","init","ATTRIBUTE"],"mappings":";;;;;;;;;;;;;AAAA;;;;;;;;;;QAMYA,S;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKZ;AACA,QAAIC,qCAAqC,iBAAzC;AACA,QAAIC,gCAAgC,wBAApC;;AAEA,QAAIC,wBAAwB,sBAA5B;AACA,QAAIC,UAAU,SAAd;AACA,QAAIC,QAAQ,OAAZ;AACA,QAAIC,aAAa,YAAjB;AACA,QAAIC,cAAc,aAAlB;;AAEA,QAAIC,uCAAuC,2BAA3C;;AAEA;AACA,QAAIC,+BAA+B,kCAAnC;;AAEA;AACA,QAAIC,4BAA4B,mCAAhC;;AAEA,aAASC,kBAAT,CAA4BC,MAA5B,EAAoC;AAChC,eAAOA,OAAOC,QAAP,CAAgBJ,4BAAhB,CAAP;AACH;;AAED,aAASK,cAAT,CAAwBF,MAAxB,EAAgC;AAC5B,YAAI,CAACD,mBAAmBC,MAAnB,CAAL,EAAiC;AAC7BG,mCAAuBH,MAAvB;AACAI,+BAAmBJ,MAAnB;AACAK,4BAAgBL,MAAhB;AACAM,6BAAiBN,MAAjB,EAAyBL,WAAzB;AACH;AACJ;;AAED,aAASQ,sBAAT,CAAgCH,MAAhC,EAAwC;AACpCO,wBAAgBP,MAAhB,EAAwBQ,IAAxB,CAA6B,6BAA7B,EAA4D,EAA5D;AACH;;AAED,aAASJ,kBAAT,CAA4BJ,MAA5B,EAAmC;AAC/BA,eAAOS,QAAP,CAAgBZ,4BAAhB;AACH;;AAED,aAASQ,eAAT,CAAyBL,MAAzB,EAAiC;AAC7BU,4BAAoBV,MAApB;AACAW,4BAAoBX,MAApB;AACH;;AAED,aAASU,mBAAT,CAA6BV,MAA7B,EAAoC;AAChC,YAAIY,UAAJ;;AAEA,YAAIC,yBAAyB,SAAzBA,sBAAyB,GAAY;AACrCb,mBAAOc,OAAP,CAAe,iBAAf;AACH,SAFD;;AAIAd,eAAOe,EAAP,CAAU,OAAV,EAAmB,YAAY;AAC3BC,yBAAaJ,UAAb;AACAA,yBAAaK,WAAWJ,sBAAX,EAAmC,IAAnC,CAAb;AACH,SAHD;AAIH;;AAED,aAASF,mBAAT,CAA6BX,MAA7B,EAAqC;AACjC,YAAIkB,eAAeC,oBAAoBnB,MAApB,EAA4B,MAA5B,CAAnB;AACA,YAAIoB,iBAAiBD,oBAAoBnB,MAApB,EAA4B,YAA5B,CAArB;;AAEA,YAAIqB,kBAAkBD,iBAAiBpB,OAAOsB,GAAP,CAAW,MAAMF,cAAjB,CAAjB,GAAoDpB,MAA1E;;AAEAqB,wBAAgBN,EAAhB,CAAmBG,YAAnB,EAAiC,SAASK,eAAT,GAA4B;AACzDC,uCAA2BxB,MAA3B;AACH,SAFD;AAGH;;AAED,aAASwB,0BAAT,CAAoCxB,MAApC,EAA4C;AACxC,YAAIyB,aAAaN,oBAAoBnB,MAApB,EAA4B,YAA5B,CAAjB;;AAEA,YAAIyB,UAAJ,EAAgB;AACZnB,6BAAiBN,MAAjB,EAAyBP,KAAzB;AACA;AACH;;AAED,eAAOiC,gBAAgB1B,MAAhB,CAAP;AACH;;AAED,aAASmB,mBAAT,CAA6BnB,MAA7B,EAAqC2B,MAArC,EAA6C;AACzC,YAAIC,WAAW;AACX,oBAAQ;AADG,SAAf;AAGA,YAAIC,cAAc7B,OAAOQ,IAAP,CAAY,UAAUnB,kCAAV,GAA+CsC,MAA3D,CAAlB;AACA,YAAI,CAACE,WAAL,EAAkB;AACdA,0BAAcD,SAASD,MAAT,CAAd;AACH;;AAED,eAAOE,WAAP;AACH;;AAED,aAASH,eAAT,CAAyB1B,MAAzB,EAAiC;AAC7B8B,2BAAmB9B,MAAnB;;AAEA,YAAI+B,kBAAkBC,uBAAuBhC,MAAvB,CAAtB;;AAEAM,yBAAiBN,MAAjB,EAAyBN,UAAzB;;AAEA,YAAIuC,YAAYC,4BAA4BlC,MAA5B,EAAoC+B,eAApC,CAAhB;AACA,YAAII,kBAAkB,iBAAEC,IAAF,CAAOC,KAAP,mBAAgBJ,SAAhB,CAAtB;AACAE,wBAAgBG,IAAhB,CAAqB,YAAY;AAC7BhC,6BAAiBN,MAAjB,EAAyBP,KAAzB;AACH,SAFD;;AAIA,eAAO0C,eAAP;AACH;;AAED,aAASL,kBAAT,CAA4B9B,MAA5B,EAAoC;AAChCuC,6BAAqBhC,gBAAgBP,MAAhB,CAArB,EAA8C,MAA9C;AACH;;AAED,aAASwC,aAAT,GAAyB;AACrB,eAAO,4BAAkBC,UAAlB,EAAP;AACH;;AAED,aAAST,sBAAT,CAAgChC,MAAhC,EAAwC;AACpC,YAAI0C,WAAW,EAAf;AACAF,wBAAgBG,OAAhB,CAAwB,UAAUC,SAAV,EAAqBC,KAArB,EAA4B;AAChD,gBAAIC,mBAAmBF,UAAUE,gBAAjC;AACA,gBAAIC,mBAAmB/C,OAAOgD,EAAP,CAAUF,gBAAV,CAAvB;AACA,gBAAIC,gBAAJ,EAAsB;AAClBL,yBAASO,IAAT,CAAcJ,KAAd;AACH;AACJ,SAND;;AAQA,eAAOH,QAAP;AACH;;AAED,aAASR,2BAAT,CAAqClC,MAArC,EAA6C+B,eAA7C,EAA8D;AAC1D,YAAImB,eAAe,EAAnB;;AAEAnB,wBAAgBY,OAAhB,CAAwB,UAAUQ,cAAV,EAA0B;AAC9C,gBAAIC,oBAAoBZ,gBAAgBW,cAAhB,EAAgCC,iBAAxD;AACA,gBAAIC,WAAW,IAAI,iBAAEC,QAAN,EAAf;AACA,gBAAIC,mBAAmBC,uBAAuBxD,MAAvB,EAA+BqD,QAA/B,CAAvB;AACAD,8BAAkBG,gBAAlB;;AAEAL,yBAAaD,IAAb,CAAkBI,QAAlB;AACH,SAPD;;AASA,eAAOH,YAAP;AACH;;AAED,aAASM,sBAAT,CAAgCxD,MAAhC,EAAwCyD,iBAAxC,EAA2D;AACvD,YAAIC,UAAU;AACVC,sBAAU,oBAAY;AAClBF,kCAAkBG,OAAlB;AACH,aAHS;AAIVC,wBAAY,oBAAUC,OAAV,EAAmB;AAC3BxD,iCAAiBN,MAAjB,EAAyBR,OAAzB,EAAkCsE,OAAlC;AACAL,kCAAkBM,MAAlB;AACH,aAPS;AAQVC,kBAAMC,+BAA+BjE,MAA/B,CARI;AASVkE,gBAAIlE,OAAO,CAAP,CATM;AAUVmE,iBAAKnE;AAVK,SAAd;;AAaAZ,kBAAUgF,IAAV,CAAeV,OAAf,EAAwB,KAAxB,EAA+B;AAC3BW,0BAAc,OADa;AAE3BC,6BAAiB,OAFU;AAG3BC,6BAAiB,IAHU;AAI3BC,uBAAW;AAJgB,SAA/B;;AAOA,eAAOd,OAAP;AACH;;AAED,aAASO,8BAAT,CAAwCjE,MAAxC,EAAgD;AAC5C,eAAO,UAAUyE,GAAV,EAAe;AAClB,mBAAOzE,OAAOQ,IAAP,CAAY,UAAUnB,kCAAV,GAA+CoF,GAA3D,KAAmEzE,OAAOQ,IAAP,CAAYiE,GAAZ,CAA1E;AACH,SAFD;AAGH;;AAED,aAASnE,gBAAT,CAA0BN,MAA1B,EAAkC0E,KAAlC,EAAyCZ,OAAzC,EAAkD;AAC9C9D,eAAOQ,IAAP,CAAY,UAAUjB,qBAAtB,EAA6CmF,KAA7C;;AAEA,YAAIA,UAAU/E,WAAd,EAA2B;AACvB;AACH;;AAEDK,eAAOc,OAAP,CAAe,iBAAE6D,KAAF,CAAQ7E,yBAAR,CAAf;;AAEA,YAAI8E,gBAAgBrE,gBAAgBP,MAAhB,CAApB;;AAEA,YAAI6E,6BAA6B,EAAjC;AACAA,mCAA2BnF,UAA3B,IAAyC,MAAzC;AACAmF,mCAA2BrF,OAA3B,IAAsC,OAAtC;AACAqF,mCAA2BpF,KAA3B,IAAoC,SAApC;;AAEA,YAAIqF,mBAAmBD,2BAA2BH,KAA3B,CAAvB;;AAEA,YAAIA,UAAUhF,UAAd,EAA0B;AACtBqF,8BAAkB/E,MAAlB;AACH,SAFD,MAEO;AACHuC,iCAAqBqC,aAArB,EAAoCE,gBAApC,EAAsDhB,OAAtD;AACH;AAEJ;;AAED,aAASiB,iBAAT,CAA2B/E,MAA3B,EAAmC;AAC/BiB,mBAAW,YAAY;AACnB,gBAAI+D,kBAAkBC,cAAcjF,MAAd,MAA0BN,UAAhD;AACA,gBAAIsF,eAAJ,EAAqB;AACjBzC,qCAAqBvC,MAArB,EAA6B,MAA7B;AACH;AACJ,SALD,EAKG,GALH;AAMH;;AAED,aAASuC,oBAAT,CAA8BvC,MAA9B,EAAsCkF,IAAtC,EAA4CpB,OAA5C,EAAqD;AACjD,YAAIqB,oBAAoBC,iBAAiBpF,MAAjB,CAAxB;AACAqF,oCAA4BrF,MAA5B;AACA,YAAIsF,iCAAkCJ,SAAS,SAAV,IAAwB,CAACC,iBAA9D;AACA,YAAIG,8BAAJ,EAAoC;AAChC;AACH;;AAED,YAAIJ,SAAS,MAAb,EAAqB;AACjBK,oCAAwBvF,MAAxB,EAAgC,OAAhC;AACH,SAFD,MAEO;AACH,gBAAIwF,kBAAkBxF,OAAOQ,IAAP,CAAYlB,gCAAgC4F,IAA5C,KAAqD,IAA3E;AACA,gBAAIO,aAAa3B,UAAU4B,oBAAoB5B,OAApB,EAA6B0B,eAA7B,CAAV,GAA0D,EAA3E;AACAxF,mBAAOQ,IAAP,CAAYlB,gCAAgC4F,IAA5C,EAAkDO,UAAlD;AACH;AACJ;;AAED,aAASJ,2BAAT,CAAqCrF,MAArC,EAA6C;AACzCuF,gCAAwBvF,MAAxB,EAAgC,MAAhC;AACAuF,gCAAwBvF,MAAxB,EAAgC,SAAhC;AACH;;AAED,aAASuF,uBAAT,CAAiCvF,MAAjC,EAAyCkF,IAAzC,EAA+C;AAC3ClF,eAAO2F,UAAP,CAAkBrG,gCAAgC4F,IAAlD;AACH;;AAED,aAASE,gBAAT,CAA0BpF,MAA1B,EAAkC;AAC9B,eAAOA,OAAOgD,EAAP,CAAU,MAAM1D,6BAAN,GAAsC,OAAhD,CAAP;AACH;;AAED,aAASoG,mBAAT,CAA6BE,SAA7B,EAAwCC,cAAxC,EAAwD;AACpD,YAAIC,6BAA6BC,KAAKC,KAAL,CAAWH,cAAX,CAAjC;AACA,YAAII,wBAAwBH,2BAA2BI,MAA3B,CAAkC,CAACN,SAAD,CAAlC,CAA5B;AACA,YAAIO,oBAAoBJ,KAAKK,SAAL,CAAeH,qBAAf,CAAxB;AACA,eAAOE,iBAAP;AACH;;AAED,aAAS5F,eAAT,CAAyBP,MAAzB,EAAiC;AAC7B,YAAIqG,iBAAiBlF,oBAAoBnB,MAApB,EAA4B,cAA5B,CAArB;AACA,YAAIsG,eAAgBD,mBAAmBE,SAAvC;AACA,eAAOD,eAAetG,MAAf,GAAwB,sBAAE,MAAMqG,cAAR,CAA/B;AACH;;AAED,aAASpB,aAAT,CAAuBjF,MAAvB,EAA+B;AAC3B,eAAOA,OAAOQ,IAAP,CAAY,UAAUjB,qBAAtB,CAAP;AACH;;AAED;;;;AAIA,aAASiH,aAAT,CAAuBxG,MAAvB,EAA+B;AAC3BA,iBAAS,sBAAEA,MAAF,CAAT;AACAwB,mCAA2BxB,MAA3B;AACH;;AAED;;;;;;;AAOA,0BAAEyG,QAAF,EAAY1F,EAAZ,CAAe,QAAf,EAAyB,UAAU2F,CAAV,EAAa;AAClC,YAAIC,OAAOD,EAAEE,MAAb;AACA,YAAIC,QAAQ,sBAAEF,IAAF,CAAZ;;AAEA,YAAIG,YAAYC,iBAAiBF,KAAjB,CAAhB;AACA,YAAIC,cAAcnH,WAAlB,EAA+B;AAC3BqH,wCAA4BH,KAA5B,EAAmCH,CAAnC;AACAO,sCAA0BJ,KAA1B;AACH,SAHD,MAGO,IAAIC,cAAcpH,UAAlB,EAA8B;AACjCsH,wCAA4BH,KAA5B,EAAmCH,CAAnC;AACH,SAFM,MAEA,IAAII,cAActH,OAAlB,EAA2B;AAC9BkH,cAAEQ,cAAF;AACAC,+BAAmBN,KAAnB;AACH,SAHM,MAGA,IAAIC,cAAcrH,KAAlB,EAAyB;AAC5B,gBAAI2H,mBAAmB,iBAAEzC,KAAF,CAAQ,kBAAR,CAAvB;AACAkC,kBAAM/F,OAAN,CAAcsG,gBAAd;AACA,gBAAIC,sBAAsBD,iBAAiBE,kBAAjB,EAA1B;AACA,gBAAID,mBAAJ,EAAyB;AACrBX,kBAAEQ,cAAF,GADqB,CACD;AACvB;AACJ;AACJ,KArBD;;AAuBA,aAASF,2BAAT,CAAqCH,KAArC,EAA4CU,KAA5C,EAAmD;AAC/CA,cAAML,cAAN;AACAL,cAAMW,GAAN,CAAU1H,yBAAV,EAAqC,YAAY;AAC7C+G,kBAAM/F,OAAN,CAAc,QAAd;AACH,SAFD;AAGH;;AAED,aAASiG,gBAAT,CAA0BF,KAA1B,EAAiC;AAC7B,YAAIY,mBAAmBZ,MAAMa,IAAN,CAAW,MAAM7H,4BAAjB,CAAvB;AACA,YAAI8H,cAAcC,6BAA6BH,gBAA7B,CAAlB;AACA,YAAII,iBAAiBC,YAAYH,WAAZ,CAArB;AACA,eAAOE,cAAP;AACH;;AAED,aAASD,4BAAT,CAAsCG,OAAtC,EAA+C;AAC3C,YAAIC,SAAS,iBAAEC,GAAF,CAAMF,OAAN,EAAe,UAAUG,KAAV,EAAiB;AACzC,mBAAOjD,cAAc,sBAAEiD,KAAF,CAAd,CAAP;AACH,SAFY,CAAb;AAGA,eAAOF,MAAP;AACH;;AAED,aAASF,WAAT,CAAqBK,UAArB,EAAiC;AAC7B,YAAIC,uBAAuBD,WAAWE,OAAX,CAAmB7I,OAAnB,MAAgC,CAAC,CAA5D;AACA,YAAI8I,2BAA2BH,WAAWE,OAAX,CAAmB1I,WAAnB,MAAoC,CAAC,CAApE;AACA,YAAI4I,0BAA0BJ,WAAWE,OAAX,CAAmB3I,UAAnB,MAAmC,CAAC,CAAlE;;AAEA,YAAI0I,oBAAJ,EAA0B;AACtB,mBAAO5I,OAAP;AACH,SAFD,MAEO,IAAI8I,wBAAJ,EAA8B;AACjC,mBAAO3I,WAAP;AACH,SAFM,MAEA,IAAI4I,uBAAJ,EAA6B;AAChC,mBAAO7I,UAAP;AACH,SAFM,MAEA;AACH,mBAAOD,KAAP;AACH;AACJ;;AAED,aAASwH,yBAAT,CAAmCJ,KAAnC,EAA0C;AACtC,YAAI2B,uBAAuBC,yBAAyB5B,KAAzB,EAAgClH,WAAhC,CAA3B;AACA6I,6BAAqBE,IAArB,CAA0B,UAAU7F,KAAV,EAAiBqB,EAAjB,EAAqB;AAC3CtB,sBAAUe,QAAV,CAAmB,sBAAEO,EAAF,CAAnB;AACH,SAFD;AAGH;;AAED,aAASiD,kBAAT,CAA4BN,KAA5B,EAAmC;AAC/B,YAAI8B,qBAAqBF,yBAAyB5B,KAAzB,EAAgCrH,OAAhC,EAAyCoJ,KAAzC,EAAzB;AACAD,2BAAmBE,KAAnB;AACH;;AAED,aAASJ,wBAAT,CAAkC5B,KAAlC,EAAyCnC,KAAzC,EAAgD;AAC5C,YAAIoE,WAAW,WAAWvJ,qBAAX,GAAmC,GAAnC,GAAyCmF,KAAzC,GAAiD,GAAhE;AACA,eAAOmC,MAAMa,IAAN,CAAWoB,QAAX,CAAP;AACH;;AAGD,QAAIlG,YAAY;AACZmG,kBAAU,4BAAkBA,QADhB;AAEZpF,kBAAU6C;AAFE,KAAhB;;AAKA,yBAAM5G,oCAAN,EAA4C;AACxCoJ,kBAAU,kBAAUd,KAAV,EAAiB;AACvB,gBAAIA,MAAMvB,IAAV,EAAgB;AACZuB,sBAAMvB,IAAN,CAAWsC,YAAX,CAAwB,YAAxB,EAAsC,YAAtC;AACH;AACD,gBAAIjJ,SAAS,sBAAEkI,KAAF,CAAb;AACAhI,2BAAeF,MAAf;AACA,4BAAMkJ,IAAN,CAAWhB,KAAX,EANuB,CAMJ;AACtB,SARuC;AASxChD,cAAM,gBAAMA,IAAN,CAAWiE;AATuB,KAA5C;;AAYA,0BAAO,qBAAP,EAA8BvG,SAA9B;AACA,6BAAU,gBAAV,EAA4BA,SAA5B;sBACeA,S","file":"form-validation.js","sourcesContent":["'use strict';\n\nimport $ from './jquery';\nimport './form-notification';\nimport './form-validation/basic-validators';\nimport amdify from './internal/amdify';\nimport * as deprecate from './internal/deprecation';\nimport globalize from './internal/globalize';\nimport skate from './internal/skate';\nimport validatorRegister from './form-validation/validator-register';\n\n//Attributes\nvar ATTRIBUTE_VALIDATION_OPTION_PREFIX = 'aui-validation-';\nvar ATTRIBUTE_NOTIFICATION_PREFIX = 'data-aui-notification-';\n\nvar ATTRIBUTE_FIELD_STATE = 'aui-validation-state';\nvar INVALID = 'invalid';\nvar VALID = 'valid';\nvar VALIDATING = 'validating';\nvar UNVALIDATED = 'unvalidated';\n\nvar ATTRIBUTE_VALIDATION_FIELD_COMPONENT = 'data-aui-validation-field';\n\n//Classes\nvar CLASS_VALIDATION_INITIALISED = '_aui-form-validation-initialised';\n\n//Events\nvar EVENT_FIELD_STATE_CHANGED = '_aui-internal-field-state-changed';\n\nfunction isFieldInitialised($field) {\n return $field.hasClass(CLASS_VALIDATION_INITIALISED);\n}\n\nfunction initValidation($field) {\n if (!isFieldInitialised($field)) {\n initialiseDisplayField($field);\n prepareFieldMarkup($field);\n bindFieldEvents($field);\n changeFieldState($field, UNVALIDATED);\n }\n}\n\nfunction initialiseDisplayField($field) {\n getDisplayField($field).attr('data-aui-notification-field', '');\n}\n\nfunction prepareFieldMarkup($field){\n $field.addClass(CLASS_VALIDATION_INITIALISED);\n}\n\nfunction bindFieldEvents($field) {\n bindStopTypingEvent($field);\n bindValidationEvent($field);\n}\n\nfunction bindStopTypingEvent($field){\n var keyUpTimer;\n\n var triggerStopTypingEvent = function () {\n $field.trigger('aui-stop-typing');\n };\n\n $field.on('keyup', function () {\n clearTimeout(keyUpTimer);\n keyUpTimer = setTimeout(triggerStopTypingEvent, 1500);\n });\n}\n\nfunction bindValidationEvent($field) {\n var validateWhen = getValidationOption($field, 'when');\n var watchedFieldID = getValidationOption($field, 'watchfield');\n\n var elementsToWatch = watchedFieldID ? $field.add('#' + watchedFieldID) : $field;\n\n elementsToWatch.on(validateWhen, function startValidation () {\n validationTriggeredHandler($field);\n });\n}\n\nfunction validationTriggeredHandler($field) {\n var noValidate = getValidationOption($field, 'novalidate');\n\n if (noValidate) {\n changeFieldState($field, VALID);\n return;\n }\n\n return startValidating($field);\n}\n\nfunction getValidationOption($field, option) {\n var defaults = {\n 'when': 'change'\n };\n var optionValue = $field.attr('data-' + ATTRIBUTE_VALIDATION_OPTION_PREFIX + option);\n if (!optionValue) {\n optionValue = defaults[option];\n }\n\n return optionValue;\n}\n\nfunction startValidating($field) {\n clearFieldMessages($field);\n\n var validatorsToRun = getActivatedValidators($field);\n\n changeFieldState($field, VALIDATING);\n\n var deferreds = runValidatorsAndGetDeferred($field, validatorsToRun);\n var fieldValidators = $.when.apply($, deferreds);\n fieldValidators.done(function () {\n changeFieldState($field, VALID);\n });\n\n return fieldValidators;\n}\n\nfunction clearFieldMessages($field) {\n setFieldNotification(getDisplayField($field), 'none');\n}\n\nfunction getValidators() {\n return validatorRegister.validators();\n}\n\nfunction getActivatedValidators($field) {\n var callList = [];\n getValidators().forEach(function (validator, index) {\n var validatorTrigger = validator.validatorTrigger;\n var runThisValidator = $field.is(validatorTrigger);\n if (runThisValidator) {\n callList.push(index);\n }\n });\n\n return callList;\n}\n\nfunction runValidatorsAndGetDeferred($field, validatorsToRun) {\n var allDeferreds = [];\n\n validatorsToRun.forEach(function (validatorIndex) {\n var validatorFunction = getValidators()[validatorIndex].validatorFunction;\n var deferred = new $.Deferred();\n var validatorContext = createValidatorContext($field, deferred);\n validatorFunction(validatorContext);\n\n allDeferreds.push(deferred);\n });\n\n return allDeferreds;\n}\n\nfunction createValidatorContext($field, validatorDeferred) {\n var context = {\n validate: function () {\n validatorDeferred.resolve();\n },\n invalidate: function (message) {\n changeFieldState($field, INVALID, message);\n validatorDeferred.reject();\n },\n args: createArgumentAccessorFunction($field),\n el: $field[0],\n $el: $field\n };\n\n deprecate.prop(context, '$el', {\n sinceVersion: '5.9.0',\n removeInVersion: '8.0.0',\n alternativeName: 'el',\n extraInfo: 'See https://ecosystem.atlassian.net/browse/AUI-3263.'\n });\n\n return context;\n}\n\nfunction createArgumentAccessorFunction($field) {\n return function (arg) {\n return $field.attr('data-' + ATTRIBUTE_VALIDATION_OPTION_PREFIX + arg) || $field.attr(arg);\n };\n}\n\nfunction changeFieldState($field, state, message) {\n $field.attr('data-' + ATTRIBUTE_FIELD_STATE, state);\n\n if (state === UNVALIDATED) {\n return;\n }\n\n $field.trigger($.Event(EVENT_FIELD_STATE_CHANGED));\n\n var $displayField = getDisplayField($field);\n\n var stateToNotificationTypeMap = {};\n stateToNotificationTypeMap[VALIDATING] = 'wait';\n stateToNotificationTypeMap[INVALID] = 'error';\n stateToNotificationTypeMap[VALID] = 'success';\n\n var notificationType = stateToNotificationTypeMap[state];\n\n if (state === VALIDATING) {\n showSpinnerIfSlow($field);\n } else {\n setFieldNotification($displayField, notificationType, message);\n }\n\n}\n\nfunction showSpinnerIfSlow($field) {\n setTimeout(function () {\n var stillValidating = getFieldState($field) === VALIDATING;\n if (stillValidating) {\n setFieldNotification($field, 'wait');\n }\n }, 500);\n}\n\nfunction setFieldNotification($field, type, message) {\n var spinnerWasVisible = isSpinnerVisible($field);\n removeIconOnlyNotifications($field);\n var skipShowingSuccessNotification = (type === 'success') && !spinnerWasVisible;\n if (skipShowingSuccessNotification) {\n return;\n }\n\n if (type === 'none') {\n removeFieldNotification($field, 'error');\n } else {\n var previousMessage = $field.attr(ATTRIBUTE_NOTIFICATION_PREFIX + type) || '[]';\n var newMessage = message ? combineJSONMessages(message, previousMessage) : '';\n $field.attr(ATTRIBUTE_NOTIFICATION_PREFIX + type, newMessage);\n }\n}\n\nfunction removeIconOnlyNotifications($field) {\n removeFieldNotification($field, 'wait');\n removeFieldNotification($field, 'success');\n}\n\nfunction removeFieldNotification($field, type) {\n $field.removeAttr(ATTRIBUTE_NOTIFICATION_PREFIX + type);\n}\n\nfunction isSpinnerVisible($field) {\n return $field.is('[' + ATTRIBUTE_NOTIFICATION_PREFIX + 'wait]');\n}\n\nfunction combineJSONMessages(newString, previousString) {\n var previousStackedMessageList = JSON.parse(previousString);\n var newStackedMessageList = previousStackedMessageList.concat([newString]);\n var newStackedMessage = JSON.stringify(newStackedMessageList);\n return newStackedMessage;\n}\n\nfunction getDisplayField($field) {\n var displayFieldID = getValidationOption($field, 'displayfield');\n var notifyOnSelf = (displayFieldID === undefined);\n return notifyOnSelf ? $field : $('#' + displayFieldID);\n}\n\nfunction getFieldState($field) {\n return $field.attr('data-' + ATTRIBUTE_FIELD_STATE);\n}\n\n/**\n * Trigger validation on a field manually\n * @param $field the field that validation should be triggered for\n */\nfunction validateField($field) {\n $field = $($field);\n validationTriggeredHandler($field);\n}\n\n/**\n * Form scrolling and submission prevent based on validation state\n * -If the form is unvalidated, validate all fields\n * -If the form is invalid, go to the first invalid element\n * -If the form is validating, wait for them to validate and then try submitting again\n * -If the form is valid, allow form submission\n */\n$(document).on('submit', function (e) {\n var form = e.target;\n var $form = $(form);\n\n var formState = getFormStateName($form);\n if (formState === UNVALIDATED) {\n delaySubmitUntilStateChange($form, e);\n validateUnvalidatedFields($form);\n } else if (formState === VALIDATING) {\n delaySubmitUntilStateChange($form, e);\n } else if (formState === INVALID) {\n e.preventDefault();\n selectFirstInvalid($form);\n } else if (formState === VALID) {\n var validSubmitEvent = $.Event('aui-valid-submit');\n $form.trigger(validSubmitEvent);\n var preventNormalSubmit = validSubmitEvent.isDefaultPrevented();\n if (preventNormalSubmit) {\n e.preventDefault(); //users can bind to aui-valid-submit for ajax forms\n }\n }\n});\n\nfunction delaySubmitUntilStateChange($form, event) {\n event.preventDefault();\n $form.one(EVENT_FIELD_STATE_CHANGED, function () {\n $form.trigger('submit');\n });\n}\n\nfunction getFormStateName($form) {\n var $fieldCollection = $form.find('.' + CLASS_VALIDATION_INITIALISED);\n var fieldStates = getFieldCollectionStateNames($fieldCollection);\n var wholeFormState = mergeStates(fieldStates);\n return wholeFormState;\n}\n\nfunction getFieldCollectionStateNames($fields) {\n var states = $.map($fields, function (field) {\n return getFieldState($(field));\n });\n return states;\n}\n\nfunction mergeStates(stateNames) {\n var containsInvalidState = stateNames.indexOf(INVALID) !== -1;\n var containsUnvalidatedState = stateNames.indexOf(UNVALIDATED) !== -1;\n var containsValidatingState = stateNames.indexOf(VALIDATING) !== -1;\n\n if (containsInvalidState) {\n return INVALID;\n } else if (containsUnvalidatedState) {\n return UNVALIDATED;\n } else if (containsValidatingState) {\n return VALIDATING;\n } else {\n return VALID;\n }\n}\n\nfunction validateUnvalidatedFields($form) {\n var $unvalidatedElements = getFieldsInFormWithState($form, UNVALIDATED);\n $unvalidatedElements.each(function (index, el) {\n validator.validate($(el));\n });\n}\n\nfunction selectFirstInvalid($form) {\n var $firstInvalidField = getFieldsInFormWithState($form, INVALID).first();\n $firstInvalidField.focus();\n}\n\nfunction getFieldsInFormWithState($form, state) {\n var selector = '[data-' + ATTRIBUTE_FIELD_STATE + '=' + state + ']';\n return $form.find(selector);\n}\n\n\nvar validator = {\n register: validatorRegister.register,\n validate: validateField\n};\n\nskate(ATTRIBUTE_VALIDATION_FIELD_COMPONENT, {\n attached: function (field) {\n if (field.form) {\n field.form.setAttribute('novalidate', 'novalidate');\n }\n var $field = $(field);\n initValidation($field);\n skate.init(field); //needed to kick off form notification skate initialisation\n },\n type: skate.type.ATTRIBUTE\n});\n\namdify('aui/form-validation', validator);\nglobalize('formValidation', validator);\nexport default validator;\n"]}
1
+ {"version":3,"sources":["js/aui/form-validation.js"],"names":["deprecate","ATTRIBUTE_VALIDATION_OPTION_PREFIX","ATTRIBUTE_NOTIFICATION_PREFIX","ATTRIBUTE_FIELD_STATE","INVALID","VALID","VALIDATING","UNVALIDATED","ATTRIBUTE_VALIDATION_FIELD_COMPONENT","CLASS_VALIDATION_INITIALISED","EVENT_FIELD_STATE_CHANGED","isFieldInitialised","$field","hasClass","initValidation","initialiseDisplayField","prepareFieldMarkup","bindFieldEvents","changeFieldState","getDisplayField","attr","addClass","bindStopTypingEvent","bindValidationEvent","keyUpTimer","triggerStopTypingEvent","trigger","on","clearTimeout","setTimeout","validateWhen","getValidationOption","watchedFieldID","elementsToWatch","add","startValidation","validationTriggeredHandler","noValidate","startValidating","option","defaults","optionValue","clearFieldMessages","validatorsToRun","getActivatedValidators","deferreds","runValidatorsAndGetDeferred","fieldValidators","$","when","apply","done","setFieldNotification","getValidators","validatorRegister","validators","callList","forEach","validator","index","validatorTrigger","runThisValidator","is","push","allDeferreds","validatorIndex","validatorFunction","deferred","Deferred","validatorContext","createValidatorContext","validatorDeferred","context","validate","resolve","invalidate","message","reject","args","createArgumentAccessorFunction","el","$el","prop","sinceVersion","removeInVersion","alternativeName","extraInfo","arg","state","Event","$displayField","stateToNotificationTypeMap","notificationType","showSpinnerIfSlow","stillValidating","getFieldState","type","spinnerWasVisible","isSpinnerVisible","removeIconOnlyNotifications","skipShowingSuccessNotification","removeFieldNotification","previousMessage","newMessage","combineJSONMessages","removeAttr","newString","previousString","previousStackedMessageList","JSON","parse","newStackedMessageList","concat","newStackedMessage","stringify","displayFieldID","notifyOnSelf","undefined","validateField","document","e","form","target","$form","formState","getFormStateName","delaySubmitUntilStateChange","validateUnvalidatedFields","preventDefault","selectFirstInvalid","validSubmitEvent","preventNormalSubmit","isDefaultPrevented","event","one","$fieldCollection","find","fieldStates","getFieldCollectionStateNames","wholeFormState","mergeStates","$fields","states","map","field","stateNames","containsInvalidState","indexOf","containsUnvalidatedState","containsValidatingState","$unvalidatedElements","getFieldsInFormWithState","each","$firstInvalidField","first","focus","selector","register","attached","setAttribute","skate","init","ATTRIBUTE"],"mappings":";;;;;;;;;;;;;AAAA;;;;;;;;;;QAMYA,S;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAKZ;AACA,QAAIC,qCAAqC,iBAAzC;AACA,QAAIC,gCAAgC,wBAApC;;AAEA,QAAIC,wBAAwB,sBAA5B;AACA,QAAIC,UAAU,SAAd;AACA,QAAIC,QAAQ,OAAZ;AACA,QAAIC,aAAa,YAAjB;AACA,QAAIC,cAAc,aAAlB;;AAEA,QAAIC,uCAAuC,2BAA3C;;AAEA;AACA,QAAIC,+BAA+B,kCAAnC;;AAEA;AACA,QAAIC,4BAA4B,mCAAhC;;AAEA,aAASC,kBAAT,CAA4BC,MAA5B,EAAoC;AAChC,eAAOA,OAAOC,QAAP,CAAgBJ,4BAAhB,CAAP;AACH;;AAED,aAASK,cAAT,CAAwBF,MAAxB,EAAgC;AAC5B,YAAI,CAACD,mBAAmBC,MAAnB,CAAL,EAAiC;AAC7BG,mCAAuBH,MAAvB;AACAI,+BAAmBJ,MAAnB;AACAK,4BAAgBL,MAAhB;AACAM,6BAAiBN,MAAjB,EAAyBL,WAAzB;AACH;AACJ;;AAED,aAASQ,sBAAT,CAAgCH,MAAhC,EAAwC;AACpCO,wBAAgBP,MAAhB,EAAwBQ,IAAxB,CAA6B,6BAA7B,EAA4D,EAA5D;AACH;;AAED,aAASJ,kBAAT,CAA4BJ,MAA5B,EAAmC;AAC/BA,eAAOS,QAAP,CAAgBZ,4BAAhB;AACH;;AAED,aAASQ,eAAT,CAAyBL,MAAzB,EAAiC;AAC7BU,4BAAoBV,MAApB;AACAW,4BAAoBX,MAApB;AACH;;AAED,aAASU,mBAAT,CAA6BV,MAA7B,EAAoC;AAChC,YAAIY,UAAJ;;AAEA,YAAIC,yBAAyB,SAAzBA,sBAAyB,GAAY;AACrCb,mBAAOc,OAAP,CAAe,iBAAf;AACH,SAFD;;AAIAd,eAAOe,EAAP,CAAU,OAAV,EAAmB,YAAY;AAC3BC,yBAAaJ,UAAb;AACAA,yBAAaK,WAAWJ,sBAAX,EAAmC,IAAnC,CAAb;AACH,SAHD;AAIH;;AAED,aAASF,mBAAT,CAA6BX,MAA7B,EAAqC;AACjC,YAAIkB,eAAeC,oBAAoBnB,MAApB,EAA4B,MAA5B,CAAnB;AACA,YAAIoB,iBAAiBD,oBAAoBnB,MAApB,EAA4B,YAA5B,CAArB;;AAEA,YAAIqB,kBAAkBD,iBAAiBpB,OAAOsB,GAAP,CAAW,MAAMF,cAAjB,CAAjB,GAAoDpB,MAA1E;;AAEAqB,wBAAgBN,EAAhB,CAAmBG,YAAnB,EAAiC,SAASK,eAAT,GAA4B;AACzDC,uCAA2BxB,MAA3B;AACH,SAFD;AAGH;;AAED,aAASwB,0BAAT,CAAoCxB,MAApC,EAA4C;AACxC,YAAIyB,aAAaN,oBAAoBnB,MAApB,EAA4B,YAA5B,CAAjB;;AAEA,YAAIyB,UAAJ,EAAgB;AACZnB,6BAAiBN,MAAjB,EAAyBP,KAAzB;AACA;AACH;;AAED,eAAOiC,gBAAgB1B,MAAhB,CAAP;AACH;;AAED,aAASmB,mBAAT,CAA6BnB,MAA7B,EAAqC2B,MAArC,EAA6C;AACzC,YAAIC,WAAW;AACX,oBAAQ;AADG,SAAf;AAGA,YAAIC,cAAc7B,OAAOQ,IAAP,CAAY,UAAUnB,kCAAV,GAA+CsC,MAA3D,CAAlB;AACA,YAAI,CAACE,WAAL,EAAkB;AACdA,0BAAcD,SAASD,MAAT,CAAd;AACH;;AAED,eAAOE,WAAP;AACH;;AAED,aAASH,eAAT,CAAyB1B,MAAzB,EAAiC;AAC7B8B,2BAAmB9B,MAAnB;;AAEA,YAAI+B,kBAAkBC,uBAAuBhC,MAAvB,CAAtB;;AAEAM,yBAAiBN,MAAjB,EAAyBN,UAAzB;;AAEA,YAAIuC,YAAYC,4BAA4BlC,MAA5B,EAAoC+B,eAApC,CAAhB;AACA,YAAII,kBAAkBC,iBAAEC,IAAF,CAAOC,KAAP,CAAaF,gBAAb,EAAgBH,SAAhB,CAAtB;AACAE,wBAAgBI,IAAhB,CAAqB,YAAY;AAC7BjC,6BAAiBN,MAAjB,EAAyBP,KAAzB;AACH,SAFD;;AAIA,eAAO0C,eAAP;AACH;;AAED,aAASL,kBAAT,CAA4B9B,MAA5B,EAAoC;AAChCwC,6BAAqBjC,gBAAgBP,MAAhB,CAArB,EAA8C,MAA9C;AACH;;AAED,aAASyC,aAAT,GAAyB;AACrB,eAAOC,4BAAkBC,UAAlB,EAAP;AACH;;AAED,aAASX,sBAAT,CAAgChC,MAAhC,EAAwC;AACpC,YAAI4C,WAAW,EAAf;AACAH,wBAAgBI,OAAhB,CAAwB,UAAUC,SAAV,EAAqBC,KAArB,EAA4B;AAChD,gBAAIC,mBAAmBF,UAAUE,gBAAjC;AACA,gBAAIC,mBAAmBjD,OAAOkD,EAAP,CAAUF,gBAAV,CAAvB;AACA,gBAAIC,gBAAJ,EAAsB;AAClBL,yBAASO,IAAT,CAAcJ,KAAd;AACH;AACJ,SAND;;AAQA,eAAOH,QAAP;AACH;;AAED,aAASV,2BAAT,CAAqClC,MAArC,EAA6C+B,eAA7C,EAA8D;AAC1D,YAAIqB,eAAe,EAAnB;;AAEArB,wBAAgBc,OAAhB,CAAwB,UAAUQ,cAAV,EAA0B;AAC9C,gBAAIC,oBAAoBb,gBAAgBY,cAAhB,EAAgCC,iBAAxD;AACA,gBAAIC,WAAW,IAAInB,iBAAEoB,QAAN,EAAf;AACA,gBAAIC,mBAAmBC,uBAAuB1D,MAAvB,EAA+BuD,QAA/B,CAAvB;AACAD,8BAAkBG,gBAAlB;;AAEAL,yBAAaD,IAAb,CAAkBI,QAAlB;AACH,SAPD;;AASA,eAAOH,YAAP;AACH;;AAED,aAASM,sBAAT,CAAgC1D,MAAhC,EAAwC2D,iBAAxC,EAA2D;AACvD,YAAIC,UAAU;AACVC,sBAAU,oBAAY;AAClBF,kCAAkBG,OAAlB;AACH,aAHS;AAIVC,wBAAY,oBAAUC,OAAV,EAAmB;AAC3B1D,iCAAiBN,MAAjB,EAAyBR,OAAzB,EAAkCwE,OAAlC;AACAL,kCAAkBM,MAAlB;AACH,aAPS;AAQVC,kBAAMC,+BAA+BnE,MAA/B,CARI;AASVoE,gBAAIpE,OAAO,CAAP,CATM;AAUVqE,iBAAKrE;AAVK,SAAd;;AAaAZ,kBAAUkF,IAAV,CAAeV,OAAf,EAAwB,KAAxB,EAA+B;AAC3BW,0BAAc,OADa;AAE3BC,6BAAiB,OAFU;AAG3BC,6BAAiB,IAHU;AAI3BC,uBAAW;AAJgB,SAA/B;;AAOA,eAAOd,OAAP;AACH;;AAED,aAASO,8BAAT,CAAwCnE,MAAxC,EAAgD;AAC5C,eAAO,UAAU2E,GAAV,EAAe;AAClB,mBAAO3E,OAAOQ,IAAP,CAAY,UAAUnB,kCAAV,GAA+CsF,GAA3D,KAAmE3E,OAAOQ,IAAP,CAAYmE,GAAZ,CAA1E;AACH,SAFD;AAGH;;AAED,aAASrE,gBAAT,CAA0BN,MAA1B,EAAkC4E,KAAlC,EAAyCZ,OAAzC,EAAkD;AAC9ChE,eAAOQ,IAAP,CAAY,UAAUjB,qBAAtB,EAA6CqF,KAA7C;;AAEA,YAAIA,UAAUjF,WAAd,EAA2B;AACvB;AACH;;AAEDK,eAAOc,OAAP,CAAesB,iBAAEyC,KAAF,CAAQ/E,yBAAR,CAAf;;AAEA,YAAIgF,gBAAgBvE,gBAAgBP,MAAhB,CAApB;;AAEA,YAAI+E,6BAA6B,EAAjC;AACAA,mCAA2BrF,UAA3B,IAAyC,MAAzC;AACAqF,mCAA2BvF,OAA3B,IAAsC,OAAtC;AACAuF,mCAA2BtF,KAA3B,IAAoC,SAApC;;AAEA,YAAIuF,mBAAmBD,2BAA2BH,KAA3B,CAAvB;;AAEA,YAAIA,UAAUlF,UAAd,EAA0B;AACtBuF,8BAAkBjF,MAAlB;AACH,SAFD,MAEO;AACHwC,iCAAqBsC,aAArB,EAAoCE,gBAApC,EAAsDhB,OAAtD;AACH;AAEJ;;AAED,aAASiB,iBAAT,CAA2BjF,MAA3B,EAAmC;AAC/BiB,mBAAW,YAAY;AACnB,gBAAIiE,kBAAkBC,cAAcnF,MAAd,MAA0BN,UAAhD;AACA,gBAAIwF,eAAJ,EAAqB;AACjB1C,qCAAqBxC,MAArB,EAA6B,MAA7B;AACH;AACJ,SALD,EAKG,GALH;AAMH;;AAED,aAASwC,oBAAT,CAA8BxC,MAA9B,EAAsCoF,IAAtC,EAA4CpB,OAA5C,EAAqD;AACjD,YAAIqB,oBAAoBC,iBAAiBtF,MAAjB,CAAxB;AACAuF,oCAA4BvF,MAA5B;AACA,YAAIwF,iCAAkCJ,SAAS,SAAV,IAAwB,CAACC,iBAA9D;AACA,YAAIG,8BAAJ,EAAoC;AAChC;AACH;;AAED,YAAIJ,SAAS,MAAb,EAAqB;AACjBK,oCAAwBzF,MAAxB,EAAgC,OAAhC;AACH,SAFD,MAEO;AACH,gBAAI0F,kBAAkB1F,OAAOQ,IAAP,CAAYlB,gCAAgC8F,IAA5C,KAAqD,IAA3E;AACA,gBAAIO,aAAa3B,UAAU4B,oBAAoB5B,OAApB,EAA6B0B,eAA7B,CAAV,GAA0D,EAA3E;AACA1F,mBAAOQ,IAAP,CAAYlB,gCAAgC8F,IAA5C,EAAkDO,UAAlD;AACH;AACJ;;AAED,aAASJ,2BAAT,CAAqCvF,MAArC,EAA6C;AACzCyF,gCAAwBzF,MAAxB,EAAgC,MAAhC;AACAyF,gCAAwBzF,MAAxB,EAAgC,SAAhC;AACH;;AAED,aAASyF,uBAAT,CAAiCzF,MAAjC,EAAyCoF,IAAzC,EAA+C;AAC3CpF,eAAO6F,UAAP,CAAkBvG,gCAAgC8F,IAAlD;AACH;;AAED,aAASE,gBAAT,CAA0BtF,MAA1B,EAAkC;AAC9B,eAAOA,OAAOkD,EAAP,CAAU,MAAM5D,6BAAN,GAAsC,OAAhD,CAAP;AACH;;AAED,aAASsG,mBAAT,CAA6BE,SAA7B,EAAwCC,cAAxC,EAAwD;AACpD,YAAIC,6BAA6BC,KAAKC,KAAL,CAAWH,cAAX,CAAjC;AACA,YAAII,wBAAwBH,2BAA2BI,MAA3B,CAAkC,CAACN,SAAD,CAAlC,CAA5B;AACA,YAAIO,oBAAoBJ,KAAKK,SAAL,CAAeH,qBAAf,CAAxB;AACA,eAAOE,iBAAP;AACH;;AAED,aAAS9F,eAAT,CAAyBP,MAAzB,EAAiC;AAC7B,YAAIuG,iBAAiBpF,oBAAoBnB,MAApB,EAA4B,cAA5B,CAArB;AACA,YAAIwG,eAAgBD,mBAAmBE,SAAvC;AACA,eAAOD,eAAexG,MAAf,GAAwB,sBAAE,MAAMuG,cAAR,CAA/B;AACH;;AAED,aAASpB,aAAT,CAAuBnF,MAAvB,EAA+B;AAC3B,eAAOA,OAAOQ,IAAP,CAAY,UAAUjB,qBAAtB,CAAP;AACH;;AAED;;;;AAIA,aAASmH,aAAT,CAAuB1G,MAAvB,EAA+B;AAC3BA,iBAAS,sBAAEA,MAAF,CAAT;AACAwB,mCAA2BxB,MAA3B;AACH;;AAED;;;;;;;AAOA,0BAAE2G,QAAF,EAAY5F,EAAZ,CAAe,QAAf,EAAyB,UAAU6F,CAAV,EAAa;AAClC,YAAIC,OAAOD,EAAEE,MAAb;AACA,YAAIC,QAAQ,sBAAEF,IAAF,CAAZ;;AAEA,YAAIG,YAAYC,iBAAiBF,KAAjB,CAAhB;AACA,YAAIC,cAAcrH,WAAlB,EAA+B;AAC3BuH,wCAA4BH,KAA5B,EAAmCH,CAAnC;AACAO,sCAA0BJ,KAA1B;AACH,SAHD,MAGO,IAAIC,cAActH,UAAlB,EAA8B;AACjCwH,wCAA4BH,KAA5B,EAAmCH,CAAnC;AACH,SAFM,MAEA,IAAII,cAAcxH,OAAlB,EAA2B;AAC9BoH,cAAEQ,cAAF;AACAC,+BAAmBN,KAAnB;AACH,SAHM,MAGA,IAAIC,cAAcvH,KAAlB,EAAyB;AAC5B,gBAAI6H,mBAAmBlF,iBAAEyC,KAAF,CAAQ,kBAAR,CAAvB;AACAkC,kBAAMjG,OAAN,CAAcwG,gBAAd;AACA,gBAAIC,sBAAsBD,iBAAiBE,kBAAjB,EAA1B;AACA,gBAAID,mBAAJ,EAAyB;AACrBX,kBAAEQ,cAAF,GADqB,CACD;AACvB;AACJ;AACJ,KArBD;;AAuBA,aAASF,2BAAT,CAAqCH,KAArC,EAA4CU,KAA5C,EAAmD;AAC/CA,cAAML,cAAN;AACAL,cAAMW,GAAN,CAAU5H,yBAAV,EAAqC,YAAY;AAC7CiH,kBAAMjG,OAAN,CAAc,QAAd;AACH,SAFD;AAGH;;AAED,aAASmG,gBAAT,CAA0BF,KAA1B,EAAiC;AAC7B,YAAIY,mBAAmBZ,MAAMa,IAAN,CAAW,MAAM/H,4BAAjB,CAAvB;AACA,YAAIgI,cAAcC,6BAA6BH,gBAA7B,CAAlB;AACA,YAAII,iBAAiBC,YAAYH,WAAZ,CAArB;AACA,eAAOE,cAAP;AACH;;AAED,aAASD,4BAAT,CAAsCG,OAAtC,EAA+C;AAC3C,YAAIC,SAAS9F,iBAAE+F,GAAF,CAAMF,OAAN,EAAe,UAAUG,KAAV,EAAiB;AACzC,mBAAOjD,cAAc,sBAAEiD,KAAF,CAAd,CAAP;AACH,SAFY,CAAb;AAGA,eAAOF,MAAP;AACH;;AAED,aAASF,WAAT,CAAqBK,UAArB,EAAiC;AAC7B,YAAIC,uBAAuBD,WAAWE,OAAX,CAAmB/I,OAAnB,MAAgC,CAAC,CAA5D;AACA,YAAIgJ,2BAA2BH,WAAWE,OAAX,CAAmB5I,WAAnB,MAAoC,CAAC,CAApE;AACA,YAAI8I,0BAA0BJ,WAAWE,OAAX,CAAmB7I,UAAnB,MAAmC,CAAC,CAAlE;;AAEA,YAAI4I,oBAAJ,EAA0B;AACtB,mBAAO9I,OAAP;AACH,SAFD,MAEO,IAAIgJ,wBAAJ,EAA8B;AACjC,mBAAO7I,WAAP;AACH,SAFM,MAEA,IAAI8I,uBAAJ,EAA6B;AAChC,mBAAO/I,UAAP;AACH,SAFM,MAEA;AACH,mBAAOD,KAAP;AACH;AACJ;;AAED,aAAS0H,yBAAT,CAAmCJ,KAAnC,EAA0C;AACtC,YAAI2B,uBAAuBC,yBAAyB5B,KAAzB,EAAgCpH,WAAhC,CAA3B;AACA+I,6BAAqBE,IAArB,CAA0B,UAAU7F,KAAV,EAAiBqB,EAAjB,EAAqB;AAC3CtB,sBAAUe,QAAV,CAAmB,sBAAEO,EAAF,CAAnB;AACH,SAFD;AAGH;;AAED,aAASiD,kBAAT,CAA4BN,KAA5B,EAAmC;AAC/B,YAAI8B,qBAAqBF,yBAAyB5B,KAAzB,EAAgCvH,OAAhC,EAAyCsJ,KAAzC,EAAzB;AACAD,2BAAmBE,KAAnB;AACH;;AAED,aAASJ,wBAAT,CAAkC5B,KAAlC,EAAyCnC,KAAzC,EAAgD;AAC5C,YAAIoE,WAAW,WAAWzJ,qBAAX,GAAmC,GAAnC,GAAyCqF,KAAzC,GAAiD,GAAhE;AACA,eAAOmC,MAAMa,IAAN,CAAWoB,QAAX,CAAP;AACH;;AAGD,QAAIlG,YAAY;AACZmG,kBAAUvG,4BAAkBuG,QADhB;AAEZpF,kBAAU6C;AAFE,KAAhB;;AAKA,yBAAM9G,oCAAN,EAA4C;AACxCsJ,kBAAU,kBAAUd,KAAV,EAAiB;AACvB,gBAAIA,MAAMvB,IAAV,EAAgB;AACZuB,sBAAMvB,IAAN,CAAWsC,YAAX,CAAwB,YAAxB,EAAsC,YAAtC;AACH;AACD,gBAAInJ,SAAS,sBAAEoI,KAAF,CAAb;AACAlI,2BAAeF,MAAf;AACAoJ,4BAAMC,IAAN,CAAWjB,KAAX,EANuB,CAMJ;AACtB,SARuC;AASxChD,cAAMgE,gBAAMhE,IAAN,CAAWkE;AATuB,KAA5C;;AAYA,0BAAO,qBAAP,EAA8BxG,SAA9B;AACA,6BAAU,gBAAV,EAA4BA,SAA5B;sBACeA,S","file":"form-validation.js","sourcesContent":["'use strict';\n\nimport $ from './jquery';\nimport './form-notification';\nimport './form-validation/basic-validators';\nimport amdify from './internal/amdify';\nimport * as deprecate from './internal/deprecation';\nimport globalize from './internal/globalize';\nimport skate from './internal/skate';\nimport validatorRegister from './form-validation/validator-register';\n\n//Attributes\nvar ATTRIBUTE_VALIDATION_OPTION_PREFIX = 'aui-validation-';\nvar ATTRIBUTE_NOTIFICATION_PREFIX = 'data-aui-notification-';\n\nvar ATTRIBUTE_FIELD_STATE = 'aui-validation-state';\nvar INVALID = 'invalid';\nvar VALID = 'valid';\nvar VALIDATING = 'validating';\nvar UNVALIDATED = 'unvalidated';\n\nvar ATTRIBUTE_VALIDATION_FIELD_COMPONENT = 'data-aui-validation-field';\n\n//Classes\nvar CLASS_VALIDATION_INITIALISED = '_aui-form-validation-initialised';\n\n//Events\nvar EVENT_FIELD_STATE_CHANGED = '_aui-internal-field-state-changed';\n\nfunction isFieldInitialised($field) {\n return $field.hasClass(CLASS_VALIDATION_INITIALISED);\n}\n\nfunction initValidation($field) {\n if (!isFieldInitialised($field)) {\n initialiseDisplayField($field);\n prepareFieldMarkup($field);\n bindFieldEvents($field);\n changeFieldState($field, UNVALIDATED);\n }\n}\n\nfunction initialiseDisplayField($field) {\n getDisplayField($field).attr('data-aui-notification-field', '');\n}\n\nfunction prepareFieldMarkup($field){\n $field.addClass(CLASS_VALIDATION_INITIALISED);\n}\n\nfunction bindFieldEvents($field) {\n bindStopTypingEvent($field);\n bindValidationEvent($field);\n}\n\nfunction bindStopTypingEvent($field){\n var keyUpTimer;\n\n var triggerStopTypingEvent = function () {\n $field.trigger('aui-stop-typing');\n };\n\n $field.on('keyup', function () {\n clearTimeout(keyUpTimer);\n keyUpTimer = setTimeout(triggerStopTypingEvent, 1500);\n });\n}\n\nfunction bindValidationEvent($field) {\n var validateWhen = getValidationOption($field, 'when');\n var watchedFieldID = getValidationOption($field, 'watchfield');\n\n var elementsToWatch = watchedFieldID ? $field.add('#' + watchedFieldID) : $field;\n\n elementsToWatch.on(validateWhen, function startValidation () {\n validationTriggeredHandler($field);\n });\n}\n\nfunction validationTriggeredHandler($field) {\n var noValidate = getValidationOption($field, 'novalidate');\n\n if (noValidate) {\n changeFieldState($field, VALID);\n return;\n }\n\n return startValidating($field);\n}\n\nfunction getValidationOption($field, option) {\n var defaults = {\n 'when': 'change'\n };\n var optionValue = $field.attr('data-' + ATTRIBUTE_VALIDATION_OPTION_PREFIX + option);\n if (!optionValue) {\n optionValue = defaults[option];\n }\n\n return optionValue;\n}\n\nfunction startValidating($field) {\n clearFieldMessages($field);\n\n var validatorsToRun = getActivatedValidators($field);\n\n changeFieldState($field, VALIDATING);\n\n var deferreds = runValidatorsAndGetDeferred($field, validatorsToRun);\n var fieldValidators = $.when.apply($, deferreds);\n fieldValidators.done(function () {\n changeFieldState($field, VALID);\n });\n\n return fieldValidators;\n}\n\nfunction clearFieldMessages($field) {\n setFieldNotification(getDisplayField($field), 'none');\n}\n\nfunction getValidators() {\n return validatorRegister.validators();\n}\n\nfunction getActivatedValidators($field) {\n var callList = [];\n getValidators().forEach(function (validator, index) {\n var validatorTrigger = validator.validatorTrigger;\n var runThisValidator = $field.is(validatorTrigger);\n if (runThisValidator) {\n callList.push(index);\n }\n });\n\n return callList;\n}\n\nfunction runValidatorsAndGetDeferred($field, validatorsToRun) {\n var allDeferreds = [];\n\n validatorsToRun.forEach(function (validatorIndex) {\n var validatorFunction = getValidators()[validatorIndex].validatorFunction;\n var deferred = new $.Deferred();\n var validatorContext = createValidatorContext($field, deferred);\n validatorFunction(validatorContext);\n\n allDeferreds.push(deferred);\n });\n\n return allDeferreds;\n}\n\nfunction createValidatorContext($field, validatorDeferred) {\n var context = {\n validate: function () {\n validatorDeferred.resolve();\n },\n invalidate: function (message) {\n changeFieldState($field, INVALID, message);\n validatorDeferred.reject();\n },\n args: createArgumentAccessorFunction($field),\n el: $field[0],\n $el: $field\n };\n\n deprecate.prop(context, '$el', {\n sinceVersion: '5.9.0',\n removeInVersion: '8.0.0',\n alternativeName: 'el',\n extraInfo: 'See https://ecosystem.atlassian.net/browse/AUI-3263.'\n });\n\n return context;\n}\n\nfunction createArgumentAccessorFunction($field) {\n return function (arg) {\n return $field.attr('data-' + ATTRIBUTE_VALIDATION_OPTION_PREFIX + arg) || $field.attr(arg);\n };\n}\n\nfunction changeFieldState($field, state, message) {\n $field.attr('data-' + ATTRIBUTE_FIELD_STATE, state);\n\n if (state === UNVALIDATED) {\n return;\n }\n\n $field.trigger($.Event(EVENT_FIELD_STATE_CHANGED));\n\n var $displayField = getDisplayField($field);\n\n var stateToNotificationTypeMap = {};\n stateToNotificationTypeMap[VALIDATING] = 'wait';\n stateToNotificationTypeMap[INVALID] = 'error';\n stateToNotificationTypeMap[VALID] = 'success';\n\n var notificationType = stateToNotificationTypeMap[state];\n\n if (state === VALIDATING) {\n showSpinnerIfSlow($field);\n } else {\n setFieldNotification($displayField, notificationType, message);\n }\n\n}\n\nfunction showSpinnerIfSlow($field) {\n setTimeout(function () {\n var stillValidating = getFieldState($field) === VALIDATING;\n if (stillValidating) {\n setFieldNotification($field, 'wait');\n }\n }, 500);\n}\n\nfunction setFieldNotification($field, type, message) {\n var spinnerWasVisible = isSpinnerVisible($field);\n removeIconOnlyNotifications($field);\n var skipShowingSuccessNotification = (type === 'success') && !spinnerWasVisible;\n if (skipShowingSuccessNotification) {\n return;\n }\n\n if (type === 'none') {\n removeFieldNotification($field, 'error');\n } else {\n var previousMessage = $field.attr(ATTRIBUTE_NOTIFICATION_PREFIX + type) || '[]';\n var newMessage = message ? combineJSONMessages(message, previousMessage) : '';\n $field.attr(ATTRIBUTE_NOTIFICATION_PREFIX + type, newMessage);\n }\n}\n\nfunction removeIconOnlyNotifications($field) {\n removeFieldNotification($field, 'wait');\n removeFieldNotification($field, 'success');\n}\n\nfunction removeFieldNotification($field, type) {\n $field.removeAttr(ATTRIBUTE_NOTIFICATION_PREFIX + type);\n}\n\nfunction isSpinnerVisible($field) {\n return $field.is('[' + ATTRIBUTE_NOTIFICATION_PREFIX + 'wait]');\n}\n\nfunction combineJSONMessages(newString, previousString) {\n var previousStackedMessageList = JSON.parse(previousString);\n var newStackedMessageList = previousStackedMessageList.concat([newString]);\n var newStackedMessage = JSON.stringify(newStackedMessageList);\n return newStackedMessage;\n}\n\nfunction getDisplayField($field) {\n var displayFieldID = getValidationOption($field, 'displayfield');\n var notifyOnSelf = (displayFieldID === undefined);\n return notifyOnSelf ? $field : $('#' + displayFieldID);\n}\n\nfunction getFieldState($field) {\n return $field.attr('data-' + ATTRIBUTE_FIELD_STATE);\n}\n\n/**\n * Trigger validation on a field manually\n * @param $field the field that validation should be triggered for\n */\nfunction validateField($field) {\n $field = $($field);\n validationTriggeredHandler($field);\n}\n\n/**\n * Form scrolling and submission prevent based on validation state\n * -If the form is unvalidated, validate all fields\n * -If the form is invalid, go to the first invalid element\n * -If the form is validating, wait for them to validate and then try submitting again\n * -If the form is valid, allow form submission\n */\n$(document).on('submit', function (e) {\n var form = e.target;\n var $form = $(form);\n\n var formState = getFormStateName($form);\n if (formState === UNVALIDATED) {\n delaySubmitUntilStateChange($form, e);\n validateUnvalidatedFields($form);\n } else if (formState === VALIDATING) {\n delaySubmitUntilStateChange($form, e);\n } else if (formState === INVALID) {\n e.preventDefault();\n selectFirstInvalid($form);\n } else if (formState === VALID) {\n var validSubmitEvent = $.Event('aui-valid-submit');\n $form.trigger(validSubmitEvent);\n var preventNormalSubmit = validSubmitEvent.isDefaultPrevented();\n if (preventNormalSubmit) {\n e.preventDefault(); //users can bind to aui-valid-submit for ajax forms\n }\n }\n});\n\nfunction delaySubmitUntilStateChange($form, event) {\n event.preventDefault();\n $form.one(EVENT_FIELD_STATE_CHANGED, function () {\n $form.trigger('submit');\n });\n}\n\nfunction getFormStateName($form) {\n var $fieldCollection = $form.find('.' + CLASS_VALIDATION_INITIALISED);\n var fieldStates = getFieldCollectionStateNames($fieldCollection);\n var wholeFormState = mergeStates(fieldStates);\n return wholeFormState;\n}\n\nfunction getFieldCollectionStateNames($fields) {\n var states = $.map($fields, function (field) {\n return getFieldState($(field));\n });\n return states;\n}\n\nfunction mergeStates(stateNames) {\n var containsInvalidState = stateNames.indexOf(INVALID) !== -1;\n var containsUnvalidatedState = stateNames.indexOf(UNVALIDATED) !== -1;\n var containsValidatingState = stateNames.indexOf(VALIDATING) !== -1;\n\n if (containsInvalidState) {\n return INVALID;\n } else if (containsUnvalidatedState) {\n return UNVALIDATED;\n } else if (containsValidatingState) {\n return VALIDATING;\n } else {\n return VALID;\n }\n}\n\nfunction validateUnvalidatedFields($form) {\n var $unvalidatedElements = getFieldsInFormWithState($form, UNVALIDATED);\n $unvalidatedElements.each(function (index, el) {\n validator.validate($(el));\n });\n}\n\nfunction selectFirstInvalid($form) {\n var $firstInvalidField = getFieldsInFormWithState($form, INVALID).first();\n $firstInvalidField.focus();\n}\n\nfunction getFieldsInFormWithState($form, state) {\n var selector = '[data-' + ATTRIBUTE_FIELD_STATE + '=' + state + ']';\n return $form.find(selector);\n}\n\n\nvar validator = {\n register: validatorRegister.register,\n validate: validateField\n};\n\nskate(ATTRIBUTE_VALIDATION_FIELD_COMPONENT, {\n attached: function (field) {\n if (field.form) {\n field.form.setAttribute('novalidate', 'novalidate');\n }\n var $field = $(field);\n initValidation($field);\n skate.init(field); //needed to kick off form notification skate initialisation\n },\n type: skate.type.ATTRIBUTE\n});\n\namdify('aui/form-validation', validator);\nglobalize('formValidation', validator);\nexport default validator;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["js/aui/header-async.js"],"names":["Header","type","CLASSNAME","created","element"],"mappings":";;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;AAKA,QAAMA,SAAS,qBAAM,YAAN,EAAoB;AAC/BC,cAAM,gBAAMA,IAAN,CAAWC,SADc;AAE/BC,iBAAS,iBAAUC,OAAV,EAAmB;AACxB,wCAAaA,OAAb;AACH;AAJ8B,KAApB,CAAf;;sBAOeJ,M","file":"header-async.js","sourcesContent":["'use strict';\n\nimport createHeader from './internal/header/create-header';\nimport skate from './internal/skate';\n\nconst Header = skate('aui-header', {\n type: skate.type.CLASSNAME,\n created: function (element) {\n createHeader(element);\n }\n});\n\nexport default Header;\n"]}
1
+ {"version":3,"sources":["js/aui/header-async.js"],"names":["Header","type","skate","CLASSNAME","created","element"],"mappings":";;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;AAKA,QAAMA,SAAS,qBAAM,YAAN,EAAoB;AAC/BC,cAAMC,gBAAMD,IAAN,CAAWE,SADc;AAE/BC,iBAAS,iBAAUC,OAAV,EAAmB;AACxB,wCAAaA,OAAb;AACH;AAJ8B,KAApB,CAAf;;sBAOeL,M","file":"header-async.js","sourcesContent":["'use strict';\n\nimport createHeader from './internal/header/create-header';\nimport skate from './internal/skate';\n\nconst Header = skate('aui-header', {\n type: skate.type.CLASSNAME,\n created: function (element) {\n createHeader(element);\n }\n});\n\nexport default Header;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["js/aui/i18n.js"],"names":["i18n","keys","getText","key","params","Array","prototype","slice","call","arguments","Object","hasOwnProperty","apply","concat"],"mappings":";;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;AAMA;;;;;AAKA,QAAIA,OAAO;AACPC,2BADO;AAEPC,iBAAS,iBAAUC,GAAV,EAAe;AACpB,gBAAIC,SAASC,MAAMC,SAAN,CAAgBC,KAAhB,CAAsBC,IAAtB,CAA2BC,SAA3B,EAAsC,CAAtC,CAAb;;AAEA,gBAAIC,OAAOJ,SAAP,CAAiBK,cAAjB,CAAgCH,IAAhC,CAAqC,KAAKP,IAA1C,EAAgDE,GAAhD,CAAJ,EAA0D;AACtD,uBAAO,iBAAOS,KAAP,CAAa,IAAb,EAAmB,CAAC,KAAKX,IAAL,CAAUE,GAAV,CAAD,EAAiBU,MAAjB,CAAwBT,MAAxB,CAAnB,CAAP;AACH;;AAED,mBAAOD,GAAP;AACH;AAVM,KAAX;;AAaA,6BAAU,MAAV,EAAkBH,IAAlB;;sBAEeA,I","file":"i18n.js","sourcesContent":["'use strict';\n\nimport format from './format';\nimport globalize from './internal/globalize';\nimport keys from './internal/i18n/aui';\n\n/**\n * Returns the value defined in AJS.I18n.keys for the given key. If AJS.I18n.keys does not exist, or if the given key does not exist,\n * the key is returned - this could occur in plugin mode if the I18n transform is not performed;\n * or in flatpack mode if the i18n JS file is not loaded.\n */\nvar i18n = {\n keys: keys,\n getText: function (key) {\n var params = Array.prototype.slice.call(arguments, 1);\n\n if (Object.prototype.hasOwnProperty.call(this.keys, key)) {\n return format.apply(null, [this.keys[key]].concat(params));\n }\n\n return key;\n }\n};\n\nglobalize('I18n', i18n);\n\nexport default i18n;\n"]}
1
+ {"version":3,"sources":["js/aui/i18n.js"],"names":["i18n","keys","getText","key","params","Array","prototype","slice","call","arguments","Object","hasOwnProperty","format","apply","concat"],"mappings":";;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;AAMA;;;;;AAKA,QAAIA,OAAO;AACPC,cAAMA,aADC;AAEPC,iBAAS,iBAAUC,GAAV,EAAe;AACpB,gBAAIC,SAASC,MAAMC,SAAN,CAAgBC,KAAhB,CAAsBC,IAAtB,CAA2BC,SAA3B,EAAsC,CAAtC,CAAb;;AAEA,gBAAIC,OAAOJ,SAAP,CAAiBK,cAAjB,CAAgCH,IAAhC,CAAqC,KAAKP,IAA1C,EAAgDE,GAAhD,CAAJ,EAA0D;AACtD,uBAAOS,iBAAOC,KAAP,CAAa,IAAb,EAAmB,CAAC,KAAKZ,IAAL,CAAUE,GAAV,CAAD,EAAiBW,MAAjB,CAAwBV,MAAxB,CAAnB,CAAP;AACH;;AAED,mBAAOD,GAAP;AACH;AAVM,KAAX;;AAaA,6BAAU,MAAV,EAAkBH,IAAlB;;sBAEeA,I","file":"i18n.js","sourcesContent":["'use strict';\n\nimport format from './format';\nimport globalize from './internal/globalize';\nimport keys from './internal/i18n/aui';\n\n/**\n * Returns the value defined in AJS.I18n.keys for the given key. If AJS.I18n.keys does not exist, or if the given key does not exist,\n * the key is returned - this could occur in plugin mode if the I18n transform is not performed;\n * or in flatpack mode if the i18n JS file is not loaded.\n */\nvar i18n = {\n keys: keys,\n getText: function (key) {\n var params = Array.prototype.slice.call(arguments, 1);\n\n if (Object.prototype.hasOwnProperty.call(this.keys, key)) {\n return format.apply(null, [this.keys[key]].concat(params));\n }\n\n return key;\n }\n};\n\nglobalize('I18n', i18n);\n\nexport default i18n;\n"]}