{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./js/jquery.checkify.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","$","window","document","undefined","pluginName","_rules","split","_number","_email","el","config","_methods","$el","hasClass","is","val","attr","normalize","length","message","inactiveForRequired","appendMessage","required","len","normalized","minlen","replace","maxlen","test","number","toLowerCase","email","regexp","RegExp","console","log","regex","funcName","eval","func","between","min","max","input","notEqual","this","extend","fn","defaults","$container","container","init","addClass","wireEvents","on","e","parseAllElements","find","preventDefault","onError","currentTarget","onValid","not","$this","removeClass","realTime","check","trigger","code","charCode","which","each","charCodeZero","charCodeAt","temp","w","rect","inactive","getBoundingClientRect","class","position","text","css","top","height","hGap","vGap","insertAfter","$next","next","data","remove","regexRule","match","funcRule","betweenRule","rules","filter","Boolean","push","methods","x","indexOf","requiredPos","splice","unshift","method","options","maxChecked","minChecked","different","jQuery"],"mappings":"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","file":"jquery.checkify.min.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 0);\n","import '../scss/jquery.checkify.scss';\r\n\r\n/*!\r\n * Checkify - A light-weight, mobile-ready and customizable validation plugin for jQuery\r\n *\r\n * Copyright 2018, Mehdi Dehghani\r\n *\r\n * @author Mehdi Dehghani (http://www.github.com/dehghani-mehdi)\r\n * @license Licensed under MIT (https://github.com/dehghani-mehdi/checkify/blob/master/LICENSE)\r\n *\r\n * Version: 0.0.10\r\n */\r\n;\r\n(function ($, window, document, undefined) {\r\n const pluginName = 'checkify',\r\n _rules = 'minlen|maxlen|required|number|email|regex|func|between|compare'.split('|'),\r\n _number = /^(\\d+|\\d{1,3}(,\\d{3})*)(\\.\\d+)?$/,\r\n // https://stackoverflow.com/q/46155/3367974\r\n _email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/,\r\n p = {};\r\n\r\n p[pluginName] = class {\r\n constructor(el, config) {\r\n this.el = el;\r\n this.$el = $(el);\r\n\r\n this.config = $.extend(true, {}, $.fn.defaults, config);\r\n\r\n this.$container = this.config.container ?\r\n typeof this.config.container === 'string' ?\r\n $(this.config.container) :\r\n this.config.container :\r\n $(el);\r\n\r\n this.init();\r\n }\r\n\r\n init() {\r\n this.$container.addClass('checkify');\r\n\r\n this.wireEvents();\r\n }\r\n\r\n /**\r\n * wire up events\r\n */\r\n wireEvents() {\r\n if (this.$container.is('form')) {\r\n this.$container.on('submit', (e) => {\r\n this.parseAllElements();\r\n\r\n if (this.$container.find('.checkify__has-error').length > 0) {\r\n e.preventDefault();\r\n\r\n if (typeof this.config.onError === 'function') this.config.onError.call(e.currentTarget, e);\r\n\r\n } else {\r\n if (typeof this.config.onValid === 'function') this.config.onValid.call(e.currentTarget, e);\r\n }\r\n });\r\n }\r\n\r\n this.$container.find('[data-checkify]').not('[type=checkbox]').on('change', (e) => {\r\n let $this = $(e.currentTarget);\r\n\r\n $this.removeClass('checkify__has-error');\r\n\r\n if (this.config.realTime) this.check($this);\r\n });\r\n\r\n if (this.config.trigger) {\r\n this.$container.find(this.config.trigger).on('click', (e) => {\r\n this.parseAllElements();\r\n\r\n if (this.$container.find('.checkify__has-error').length > 0) {\r\n e.preventDefault();\r\n if (typeof this.config.onError === 'function') this.config.onError.call(e.currentTarget, e);\r\n\r\n } else {\r\n if (typeof this.config.onValid === 'function') this.config.onValid.call(e.currentTarget, e);\r\n }\r\n });\r\n }\r\n\r\n this.$container.find('[data-checkify*=number]').on('keypress', (e) => {\r\n let $this = $(e.currentTarget);\r\n\r\n let code = e.charCode || e.which;\r\n\r\n if ((47 < code && code < 58) || (1632 < code && code < 1642) || (1775 < code && code < 1786) || code === 0 || code === 8) { }\r\n else e.preventDefault();\r\n });\r\n };\r\n\r\n /**\r\n * parse all elements and then parse its data checkify\r\n */\r\n parseAllElements() {\r\n this.$container.find('.checkify__has-error').removeClass('checkify__has-error');\r\n\r\n this.$container.find('[data-checkify]').each((i, el) => this.check($(el)));\r\n }\r\n\r\n /**\r\n * replaced multiple spaces with one and non-english numbers to english numbers\r\n * @param s\r\n */\r\n normalize(s) {\r\n let charCodeZero = '۰'.charCodeAt(0),\r\n temp = s.replace(/[۰-۹]/g, (w) => w.charCodeAt(0) - charCodeZero);\r\n\r\n charCodeZero = '٠'.charCodeAt(0);\r\n temp = temp.replace(/[٠-٩]/g, (w) => w.charCodeAt(0) - charCodeZero);\r\n\r\n return temp.replace(/ +/g, ' ');\r\n };\r\n\r\n /**\r\n * insert error message next to given element\r\n * @param $el\r\n * @param message\r\n */\r\n appendMessage($el, message) {\r\n if (this.config.message.inactive) return;\r\n\r\n let rect = $el[0].getBoundingClientRect();\r\n\r\n $('', {\r\n class: 'checkify__message checkify__message-' + this.config.message.position,\r\n text: message,\r\n css: {\r\n top: rect.height,\r\n ['margin-' + this.config.message.position]: this.config.message.hGap || 0,\r\n 'margin-top': this.config.message.vGap || 5\r\n }\r\n }).insertAfter($el);\r\n };\r\n\r\n /**\r\n * find and parse data-checkify of given element\r\n * @param $el\r\n */\r\n check($el) {\r\n let $next = $el.next(),\r\n data = $el.data('checkify');\r\n\r\n if ($next.hasClass('checkify__message')) $next.remove();\r\n\r\n if (typeof data !== 'undefined') {\r\n // find regex rule\r\n let regexRule = data.match(/regex=(.+`)/);\r\n // because match returns array and we need string\r\n regexRule = regexRule ? regexRule[0] : null;\r\n // remove regex from data-checkify\r\n if (regexRule) {\r\n data = data.replace(regexRule, '');\r\n regexRule = regexRule.replace(/`/g, '');\r\n }\r\n\r\n // find func rule\r\n let funcRule = data.match(/func=[^,]*/);\r\n // because match returns array and we need string\r\n funcRule = funcRule ? funcRule[0] : null;\r\n // remove func from data-checkify\r\n if (funcRule) data = data.replace(funcRule, '');\r\n\r\n // find between rule\r\n let betweenRule = data.match(/between=[^,]*/);\r\n // because match returns array and we need string\r\n betweenRule = betweenRule ? betweenRule[0] : null;\r\n // remove between from data-checkify\r\n if (betweenRule) data = data.replace(betweenRule, '');\r\n\r\n // remove empty entries\r\n let rules = data.split(',').filter(Boolean);\r\n\r\n // add regex to rules\r\n if (regexRule) rules.push(regexRule);\r\n\r\n // add func to rules\r\n if (funcRule) rules.push(funcRule);\r\n\r\n // add range to rules\r\n if (betweenRule) rules.push(betweenRule);\r\n\r\n let methods = rules.filter(x => _rules.indexOf(x.split('=')[0]) > -1),\r\n requiredPos = methods.indexOf('required');\r\n\r\n if (methods.length > 0) {\r\n // put required at first (if any)\r\n if (requiredPos > -1) {\r\n methods.splice(requiredPos, 1);\r\n methods.unshift('required');\r\n }\r\n\r\n for (let i = 0; i < methods.length; i++) {\r\n let split = methods[i].split('='),\r\n method = split[0];\r\n\r\n if (!eval(this._methods[method])($el, split[1])) {\r\n $el.addClass('checkify__has-error');\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n _methods = {\r\n 'required': ($el) => {\r\n if (!$el.hasClass('hidden')) {\r\n if ($el.is('select')) {\r\n return 0 < +$el.val()\r\n } else if ($el.attr('type') === 'checkbox') {\r\n return $el.is(':checked');\r\n } else {\r\n let normalized = this.normalize($el.val());\r\n\r\n if (normalized.length < 1) {\r\n if (!this.config.message.inactiveForRequired) this.appendMessage($el, this.config.message.required);\r\n\r\n return false;\r\n }\r\n }\r\n }\r\n return true;\r\n },\r\n 'minlen': ($el, len) => {\r\n let normalized = this.normalize($el.val());\r\n\r\n if (normalized.length > 0 && normalized.length < len) {\r\n if (!$el.hasClass('checkify__has-error')) this.appendMessage($el, this.config.message.minlen.replace('{count}', len));\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n 'maxlen': ($el, len) => {\r\n let normalized = this.normalize($el.val());\r\n\r\n if (normalized.length > 0 && normalized.length > len) {\r\n if (!$el.hasClass('checkify__has-error')) this.appendMessage($el, this.config.message.maxlen.replace('{count}', len));\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n 'number': ($el) => {\r\n let normalized = this.normalize($el.val());\r\n\r\n if (normalized.length > 0 && !_number.test(normalized)) {\r\n if (!$el.hasClass('checkify__has-error')) this.appendMessage($el, this.config.message.number);\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n 'email': ($el) => {\r\n let normalized = this.normalize($el.val());\r\n\r\n if (normalized.length > 0 && !_email.test(normalized.toLowerCase())) {\r\n if (!$el.hasClass('checkify__has-error')) this.appendMessage($el, this.config.message.email);\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n 'regex': ($el, r) => {\r\n let normalized = this.normalize($el.val()),\r\n regexp = new RegExp(r);\r\n console.log(regexp);\r\n if (normalized.length > 0 && !regexp.test(normalized.toLowerCase())) {\r\n if (!$el.hasClass('checkify__has-error')) this.appendMessage($el, this.config.message.regex);\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n 'func': ($el, funcName) => {\r\n let r = eval(window[funcName]($el));\r\n\r\n if (r) return true;\r\n\r\n if (!$el.hasClass('checkify__has-error')) this.appendMessage($el, this.config.message.func);\r\n\r\n return false;\r\n },\r\n 'between': ($el, between) => {\r\n let normalized = this.normalize($el.val()),\r\n number = +normalized,\r\n split = between.split('-'),\r\n min = +split[0],\r\n max = +split[1];\r\n\r\n if (normalized.length > 0 && (number < min || number > max)) {\r\n if (!$el.hasClass('checkify__has-error')) this.appendMessage($el, this.config.message.between);\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n ,\r\n 'compare': ($el, input) => {\r\n\r\n if ($(input).val() == $el.val()) return true;\r\n\r\n if (!$el.hasClass('checkify__has-error')) this.appendMessage($el, this.config.message.notEqual);\r\n\r\n return false;\r\n }\r\n };\r\n }\r\n\r\n $.fn[pluginName] = function (options) {\r\n return this.each(function () {\r\n if (!$.data(this, 'plugin_' + pluginName)) {\r\n $.data(this, 'plugin_' + pluginName, new p[pluginName](this, options));\r\n }\r\n });\r\n };\r\n\r\n $.fn.defaults = {\r\n message: {\r\n inactive: false,\r\n // if true. error message won't be shown for required cases\r\n inactiveForRequired: true,\r\n // horizontal gap for error message box\r\n hGap: null,\r\n // vertical gap for error message box\r\n vGap: null,\r\n // can be right or left\r\n position: 'left',\r\n required: 'This field is required.',\r\n email: 'Please enter a valid email address.',\r\n regex: 'Invalid data.',\r\n func: 'Invalid data',\r\n between: 'Invalid data',\r\n number: 'Please enter a valid number.',\r\n maxlen: 'Please enter no more than {count} characters.',\r\n minlen: 'Please enter at least {count} characters.',\r\n maxChecked: 'Maximum {count} options allowed.',\r\n minChecked: 'Please select at least {count} options.',\r\n notEqual: 'Please enter the same value again.',\r\n different: 'Fields cannot be the same as each other'\r\n },\r\n realTime: false,\r\n container: null,\r\n trigger: null,\r\n onValid: null,\r\n onError: null\r\n };\r\n})(jQuery, window, document);"],"sourceRoot":""}