UNPKG

octaform-additional

Version:

Octaform Additional is a package that provides you a pre-set of validation. To know more about the Octaform Validation Core please check out the official documentation in https://github.com/octaform/octaform

595 lines (498 loc) 16.3 kB
/** * @license octaform-additional v1.2.0 * https://github.com/octaform/octaform-additional.git * Copyright (c) 2018-2020, Octaform * Released under the MIT License. */ (function webpackUniversalModuleDefinition(root, factory) { if(typeof exports === 'object' && typeof module === 'object') module.exports = factory(); else if(typeof define === 'function' && define.amd) define("octaform-additional", [], factory); else if(typeof exports === 'object') exports["octaform-additional"] = factory(); else root["octaform-additional"] = factory(); })(window, function() { return /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 16); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'date', message: 'Please enter a valid date using the format {0}', paramType: String, fn: function fn(value, element, param) { var separatorSymbols = [/(\/)/, /(\.)/, /(-)/, /(\s)/]; var separator = separatorSymbols.find(function (item) { return item.test(param); }); var format = param.split(separator); var input = value.split(separator); var yearFormat = ['YYYY', 'YY']; var monthFormat = ['MM', 'M']; var dayFormat = ['DD', 'D']; var validateYear = function validateYear(inputYear, inputYearFormat) { if (inputYearFormat === yearFormat[0]) return /^[1-9]\d{3}$/.test(inputYear); return /^[1-9]\d{1}$/.test(inputYear); }; var validateMonth = function validateMonth(inputMonth, inputMonthFormat) { if (inputMonthFormat === monthFormat[0]) return /^(0[1-9]|1[012])$/.test(inputMonth); return /^([1-9]|1[012])$/.test(inputMonth); }; var validateDay = function validateDay(inputDay, inputDayFormat, inputMonth, inputYear) { var totalAmountOfDays = new Date(inputYear, inputMonth, 0).getDate(); var day = inputDayFormat === dayFormat[0] ? /^(0[1-9]|[12]\d|3[01])$/.test(inputDay) : /^([1-9]|[12]\d|3[01])$/.test(inputDay); return day ? inputDay <= totalAmountOfDays : false; }; var formatData = function formatData(inputValue, inputFormat) { return { value: inputValue, format: inputFormat }; }; if (input.length === format.length) { var data = format.reduce(function (acc, item, index) { var year = yearFormat.find(function (yr) { return yr === item; }); var month = monthFormat.find(function (mt) { return mt === item; }); var day = dayFormat.find(function (dy) { return dy === item; }); if (year) acc.year = formatData(input[index], year); if (month) acc.month = formatData(input[index], month); if (day) acc.day = formatData(input[index], day); return acc; }, {}); var isValidFields = format.map(function (item, index) { if (yearFormat.includes(item)) { return validateYear(input[index], item); } else if (monthFormat.includes(item)) { return validateMonth(input[index], item); } else if (dayFormat.includes(item)) { return data.month && data.year && validateDay(input[index], item, data.month.value, data.year.value); } return input[index] === item; }); return !isValidFields.some(function (bool) { return !bool; }); } return false; } }; exports["default"] = _default; /***/ }), /* 1 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'email', message: 'Please enter a valid email', paramType: Boolean, fn: function fn(value) { return /^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/i.test(value); } }; exports["default"] = _default; /***/ }), /* 2 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'equalTo', message: 'Please enter the same value again.', paramType: String, fn: function fn(value, element, param) { // Valid selectors #id / .class / [name=field] var hasValidSelector = /^(?:#([\w-]+)|\.([\w-]+)|\[(.*?)\])$/.test(param); if (hasValidSelector) { var selector = document.querySelectorAll(param); return Array.from(selector).some(function (field) { return value === field.value; }); } return false; } }; exports["default"] = _default; /***/ }), /* 3 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'extension', message: 'Please choose a file with a valid extension: (...{})', paramType: Array, fn: function fn(value, element, params) { var file = Array.from(element[0].files); return file.some(function (item) { var fileType = item.type.split('/')[1]; if (fileType === 'jpeg' && params.includes('jpg') && !params.includes('jpeg')) params.push('jpeg'); return params.includes(fileType); }); } }; exports["default"] = _default; /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'letter', message: 'Please enter only letters', paramType: Boolean, fn: function fn(value) { return /^[a-zA-Z]+$/.test(value); } }; exports["default"] = _default; /***/ }), /* 5 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'maxlength', message: 'Please enter no more than {0} characters', paramType: Number, fn: function fn(value, element, param) { return value.length <= param; } }; exports["default"] = _default; /***/ }), /* 6 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'maxsize', message: 'File size must not exceed {0} bytes', paramType: Number, fn: function fn(value, element, param) { var file = Array.from(element[0].files); return file.some(function (item) { return item.size <= param; }); } }; exports["default"] = _default; /***/ }), /* 7 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'minchecked', message: 'Please select at least {0} options', paramType: Number, fn: function fn(value, element, param) { var qtdChecked = element.reduce(function (acc, option) { if (option.checked) acc++; return acc; }, 0); return qtdChecked >= param; } }; exports["default"] = _default; /***/ }), /* 8 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'minlength', message: 'Please enter at least {0} characters', paramType: Number, fn: function fn(value, element, param) { return value.length >= param; } }; exports["default"] = _default; /***/ }), /* 9 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'number', message: 'Please enter a valid number', paramType: Boolean, fn: function fn(value) { return /^\d+$/g.test(value); } }; exports["default"] = _default; /***/ }), /* 10 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'required', message: 'This field is required', paramType: Boolean, fn: function fn(value, element) { if (element && element.length > 1) { return element.some(function (elem) { return elem.checked; }); } return !!value.length || false; } }; exports["default"] = _default; /***/ }), /* 11 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'valueNotEquals', message: 'Value must be not equal to {0}', fn: function fn(value, element, param) { return param !== value; } }; exports["default"] = _default; /***/ }), /* 12 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'valueEquals', message: 'Value must be equal to {0}', paramType: String, fn: function fn(value, element, param) { return value === param; } }; exports["default"] = _default; /***/ }), /* 13 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'url', message: 'Please enter a valid URL', paramType: Boolean, fn: function fn(value) { return /^(?:(?:(?:https?):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*(?:\.(?:[a-z\u00a1-\uffff]{2,})).?)(?::\d{2,5})?(?:[/?#]\S*)?$/.test(value); } }; exports["default"] = _default; /***/ }), /* 14 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'range', message: 'Please enter a value between {0} and {1}', paramType: Array, fn: function fn(value, element, param) { return value >= param[0] && value <= param[1]; } }; exports["default"] = _default; /***/ }), /* 15 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _default = { name: 'pattern', message: 'Please enter a value following the pattern /{0}/', paramType: String, fn: function fn(value, element, param) { return new RegExp(param).test(value); } }; exports["default"] = _default; /***/ }), /* 16 */ /***/ (function(module, exports, __webpack_require__) { "use strict"; var _email = _interopRequireDefault(__webpack_require__(1)); var _extension = _interopRequireDefault(__webpack_require__(3)); var _letter = _interopRequireDefault(__webpack_require__(4)); var _maxlength = _interopRequireDefault(__webpack_require__(5)); var _minlength = _interopRequireDefault(__webpack_require__(8)); var _maxsize = _interopRequireDefault(__webpack_require__(6)); var _number = _interopRequireDefault(__webpack_require__(9)); var _required = _interopRequireDefault(__webpack_require__(10)); var _valueNotEquals = _interopRequireDefault(__webpack_require__(11)); var _valueEquals = _interopRequireDefault(__webpack_require__(12)); var _minchecked = _interopRequireDefault(__webpack_require__(7)); var _url = _interopRequireDefault(__webpack_require__(13)); var _range = _interopRequireDefault(__webpack_require__(14)); var _equalTo = _interopRequireDefault(__webpack_require__(2)); var _pattern = _interopRequireDefault(__webpack_require__(15)); var _date = _interopRequireDefault(__webpack_require__(0)); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } module.exports = { email: _email["default"], extension: _extension["default"], letter: _letter["default"], maxlength: _maxlength["default"], minlength: _minlength["default"], maxsize: _maxsize["default"], number: _number["default"], required: _required["default"], valueNotEquals: _valueNotEquals["default"], valueEquals: _valueEquals["default"], minchecked: _minchecked["default"], url: _url["default"], range: _range["default"], equalTo: _equalTo["default"], pattern: _pattern["default"], date: _date["default"] }; /***/ }) /******/ ]); });