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
JavaScript
/**
* @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__) {
;
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__) {
;
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__) {
;
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__) {
;
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__) {
;
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__) {
;
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__) {
;
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__) {
;
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__) {
;
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__) {
;
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__) {
;
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__) {
;
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__) {
;
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__) {
;
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__) {
;
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__) {
;
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__) {
;
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"]
};
/***/ })
/******/ ]);
});