{"version":3,"file":"app/form.elements.input-number.js","sources":["form.elements.input-number.js"],"sourcesContent":["/*----------------------------------------------------------------------------*\\\r\n FORM.ELEMENTS.INPUT-NUMBER\r\n Number input enhancement, generates toggles for number inputs\r\n\\*----------------------------------------------------------------------------*/\r\n\r\n/**\r\n * Use strict as per:\r\n * http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/\r\n */\r\n'use strict';\r\n\r\n\r\n/**\r\n * Check if oy object exists, otherwise create it\r\n */\r\nvar oy = oy || {};\r\n\r\n\r\n/**\r\n * Jshint global references\r\n * Please define all third party plugins that you use to not break jshinting\r\n */\r\n\r\n\r\n/* Component\r\n\\*----------------------------------------------------------------------------*/\r\n\r\noy.form.elements.inputNumber = {\r\n init: function(){\r\n if (oy.cutsMustard) {\r\n this.initElement(document);\r\n }\r\n },\r\n\r\n initElement: function($context){\r\n var self = this;\r\n var $elements = $context.querySelectorAll('.js--input-number');\r\n\r\n for (var i = 0; i < $elements.length; ++i) {\r\n var $element = $elements[i];\r\n self.setupElement($element);\r\n }\r\n },\r\n\r\n setupElement: function ($element) {\r\n $element.classList.add('is-initiated');\r\n var $input = $element.querySelector('.js--input-number__input');\r\n var $controlIncrease = $element.querySelector('.js--input-number__control[data-action=increase]');\r\n var $controlDecrease = $element.querySelector('.js--input-number__control[data-action=decrease]');\r\n var min = $input.min;\r\n var max = $input.max;\r\n\r\n /**\r\n * Increase button\r\n */\r\n if ($controlIncrease && !$controlIncrease.getAttribute('onClick')) {\r\n $controlIncrease.addEventListener('click', function () {\r\n var currentVal = parseFloat($input.value);\r\n var newVal = currentVal+1;\r\n if (typeof max !== 'undefined' && max !== '' && newVal >= max) {\r\n newVal = max;\r\n }\r\n $input.value = newVal;\r\n });\r\n }\r\n\r\n\r\n\r\n /**\r\n * Decrease button\r\n */\r\n if ($controlDecrease && !$controlDecrease.getAttribute('onClick')) {\r\n $controlDecrease.addEventListener('click', function () {\r\n var currentVal = parseFloat($input.value);\r\n var newVal = currentVal-1;\r\n if (typeof min !== 'undefined' && min !== '' && newVal <= min) {\r\n newVal = min;\r\n }\r\n $input.value = newVal;\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Visual feedback for keyboard users\r\n */\r\n var inputKeyup = function (event) {\r\n var keyNum = null;\r\n // Get $source element\r\n if(window.event) { // IE\r\n keyNum = event.keyCode;\r\n } else if(event.which){\r\n keyNum = event.which;\r\n }\r\n if (keyNum === 38) {\r\n /**\r\n * Up key\r\n */\r\n window.requestAnimationFrame(function () {\r\n $controlIncrease.classList.add('is-active');\r\n setTimeout(function(){\r\n window.requestAnimationFrame(function () {\r\n $controlIncrease.classList.remove('is-active');\r\n });\r\n }, 100);\r\n });\r\n } else if (keyNum === 40) {\r\n /**\r\n * Down key\r\n */\r\n window.requestAnimationFrame(function () {\r\n $controlDecrease.classList.add('is-active');\r\n setTimeout(function(){\r\n window.requestAnimationFrame(function () {\r\n $controlDecrease.classList.remove('is-active');\r\n });\r\n }, 100);\r\n });\r\n }\r\n };\r\n\r\n $input.onkeydown = inputKeyup;\r\n\r\n\r\n /**\r\n * Manually entered values get converted to min and max\r\n */\r\n $input.addEventListener('change', function () {\r\n var currentVal = parseFloat(this.value);\r\n if (typeof min !== 'undefined' && min !== '' && currentVal < min) {\r\n $input.value = min;\r\n }\r\n if (typeof max !== 'undefined' && max !== '' && currentVal > max) {\r\n $input.value = max;\r\n }\r\n });\r\n }\r\n};\r\n\r\n\r\n/**\r\n * Fire ALL the things\r\n */\r\nwindow.addEventListener('load', function () {\r\n oy.form.elements.inputNumber.init();\r\n}, false);\r\n"],"names":[],"mappings":"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","sourceRoot":"/source/"}