123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564 |
- module.exports =
- /** *** */ (function (modules) { // webpackBootstrap
- /** *** */ // The module cache
- /** *** */ const 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)
- /** *** */ const 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
- /** *** */ const ns = Object.create(null)
- /** *** */ __webpack_require__.r(ns)
- /** *** */ Object.defineProperty(ns, 'default', {enumerable: true, value})
- /** *** */ if (mode & 2 && typeof value !== 'string') for (const 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) {
- /** *** */ const 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 = 4)
- /** *** */ }([
- /* 0 */
- /***/ (function (module, exports, __webpack_require__) {
- Object.defineProperty(exports, '__esModule', {value: true})
- exports.diff = function (old, newVal) {
- if (!old && newVal || old && !newVal) return true
- for (const k in newVal) {
- if (old[k] !== newVal[k]) return true
- }
- for (const _k in old) {
- if (old[_k] !== newVal[_k]) return true
- }
- return false
- }
- exports.diffObject = function (old, newVal) {
- if (!old && newVal) return newVal
- if (!newVal && old) return old
- const diffObj = {}
- let isDiff = false
- for (const k in newVal) {
- if (old[k] !== newVal[k]) {
- isDiff = true
- diffObj[k] = newVal[k]
- }
- }
- for (const _k2 in old) {
- if (old[_k2] !== newVal[_k2]) {
- isDiff = true
- diffObj[_k2] = newVal[_k2]
- }
- }
- return isDiff ? diffObj : null
- }
- /***/ }),
- /* 1 */,
- /* 2 */,
- /* 3 */,
- /* 4 */
- /***/ (function (module, exports, __webpack_require__) {
- Object.defineProperty(exports, '__esModule', {value: true})
- const form_validator_1 = __webpack_require__(5)
- const object_1 = __webpack_require__(0)
- function linked(target) {
- if (target.data.prop) {
- this.data.formItems[target.data.prop] = target
- }
- if (target.setInForm) {
- target.setInForm()
- }
- if (!this.data.firstItem) {
- this.data.firstItem = target
- }
- if (target !== this.data.firstItem) {}
- }
- function unlinked(target) {
- if (target.data.prop) {
- delete this.data.formItems[target.data.prop]
- }
- }
- Component({
- properties: {
- models: {
- type: Object,
- value: {},
- observer: '_modelChange'
- },
- rules: {
- type: Array,
- value: [],
- observer: '_rulesChange'
- },
- extClass: {
- type: String,
- value: ''
- }
- },
- data: {
- errors: {},
- formItems: {},
- firstItem: null
- },
- relations: {
- '../cell/cell': {
- type: 'descendant',
- linked,
- unlinked
- },
- '../checkbox-group/checkbox-group': {
- type: 'descendant',
- linked,
- unlinked
- }
- },
- attached: function attached() {
- this.initRules()
- this.formValidator = new form_validator_1.default(this.data.models, this.data.newRules)
- },
- methods: {
- initRules: function initRules(rules) {
- const newRules = {};
- (rules || this.data.rules).forEach(function (rule) {
- if (rule.name && rule.rules) {
- newRules[rule.name] = rule.rules || []
- }
- })
- this.setData({newRules})
- return newRules
- },
- _modelChange: function _modelChange(newVal, oldVal, path) {
- const _this = this
- if (!this.isInit) {
- this.isInit = true
- return newVal
- }
- this.formValidator.setModel(newVal)
- this.isInit = true
- const diffObj = object_1.diffObject(oldVal, newVal)
- if (diffObj) {
- (function () {
- let isValid = true
- const errors = []
- const errorMap = {}
- const _loop = function _loop(k) {
- _this.formValidator.validateField(k, diffObj[k], function (isValided, error) {
- if (error && error[k]) {
- errors.push(error[k])
- errorMap[k] = error[k]
- }
- isValid = isValided
- })
- }
- for (const k in diffObj) {
- _loop(k)
- }
- _this._showErrors(diffObj, errorMap)
- _this.triggerEvent(isValid ? 'success' : 'fail', isValid ? {trigger: 'change'} : {errors, trigger: 'change'})
- }())
- }
- return newVal
- },
- _rulesChange: function _rulesChange(newVal) {
- const newRules = this.initRules(newVal)
- if (this.formValidator) {
- this.formValidator.setRules(newRules)
- }
- return newVal
- },
- _showAllErrors: function _showAllErrors(errors) {
- for (const k in this.data.newRules) {
- this._showError(k, errors && errors[k])
- }
- },
- _showErrors: function _showErrors(objs, errors) {
- for (const k in objs) {
- this._showError(k, errors && errors[k])
- }
- },
- _showError: function _showError(prop, error) {
- const formItem = this.data.formItems[prop]
- if (formItem && formItem.data.showError) {
- formItem.setError(error)
- }
- },
- validate: function validate(cb) {
- const _this2 = this
- return this.formValidator.validate(function (isValid, errors) {
- _this2._showAllErrors(errors)
- const handleError = _this2.handleErrors(errors)
- _this2.triggerEvent(isValid ? 'success' : 'fail', isValid ? {trigger: 'validate'} : {errors: handleError, trigger: 'validate'})
- cb && cb(isValid, handleError)
- })
- },
- validateField: function validateField(name, value) {
- const _this3 = this
- const cb = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (v) {
- const error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null
- }
- return this.formValidator.validateField(name, value, function (isValid, errors) {
- _this3._showError(name, errors)
- const handleError = _this3.handleErrors(errors)
- _this3.triggerEvent(isValid ? 'success' : 'fail', isValid ? {trigger: 'validate'} : {errors: handleError, trigger: 'validate'})
- cb && cb(isValid, handleError)
- })
- },
- handleErrors: function handleErrors(errors) {
- if (errors) {
- const newErrors = []
- this.data.rules.forEach(function (rule) {
- if (errors[rule.name]) {
- errors[rule.name].name = rule.name
- newErrors.push(errors[rule.name])
- }
- })
- return newErrors
- }
- return errors
- },
- addMethod: function addMethod(ruleName, method) {
- return this.formValidator.addMethod(ruleName, method)
- }
- }
- })
- exports.default = form_validator_1.default
- /***/ }),
- /* 5 */
- /***/ (function (module, exports, __webpack_require__) {
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function') } }
- Object.defineProperty(exports, '__esModule', {value: true})
- const validator_1 = __webpack_require__(6)
- const object_1 = __webpack_require__(0)
- const toString = Object.prototype.toString
- const validateSingleRule = function validateSingleRule(rule, value) {
- const param = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null
- const models = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null
- let message = ''
- for (const ruleKey in rule) {
- if (ruleKey === 'name' || ruleKey === 'message') continue
- const validateMethod = typeof rule.validator !== 'undefined' ? rule.validator : validator_1.default[ruleKey]
- if (typeof validateMethod === 'function') {
- message = validateMethod(rule, value, param, models)
- if (message) {
- return message
- }
- }
- }
- return message
- }
- const FormValidator = (function () {
- function FormValidator(models, rules) {
- _classCallCheck(this, FormValidator)
- this.models = models
- this.rules = rules
- this.errors = {}
- }
- FormValidator.prototype.validate = function validate(cb) {
- const _this = this
- return new Promise(function (resolve) {
- let fieldCount = 0
- let failCount = 0
- const errors = _this.errors
- const models = _this.models
- let errorChanged = false
- const _loop = function _loop(k) {
- (function (fieldName) {
- const oldError = errors[fieldName]
- _this._innerValidateField(k, models[fieldName], function (valid, newError) {
- fieldCount++
- if (!valid) failCount++
- if (object_1.diff(oldError, newError)) {
- errors[fieldName] = newError
- errorChanged = true
- }
- })
- }(k))
- }
- for (const k in _this.rules) {
- _loop(k)
- }
- if (errorChanged) {}
- const keys = Object.keys(errors)
- keys.forEach(function (key) {
- if (!errors[key]) delete errors[key]
- })
- resolve({isValid: !failCount, errors: failCount ? errors : undefined})
- cb && cb(!failCount, failCount ? errors : undefined)
- })
- }
- FormValidator.prototype.validateField = function validateField(name, value) {
- const _this2 = this
- const cb = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (v) {
- const error = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null
- }
- return new Promise(function (resolve) {
- _this2._innerValidateField(name, value, function (valid, error) {
- const errObj = {}
- errObj[name] = error
- resolve({valid, error: valid ? undefined : error})
- cb(valid, valid ? undefined : errObj)
- const oldError = _this2.errors[name]
- const errorChanged = object_1.diff(oldError, error)
- if (errorChanged) {
- if (!error) delete _this2.errors[name]
- _this2.errors[name] = error
- }
- })
- })
- }
- FormValidator.prototype._innerValidateField = function _innerValidateField(name, value) {
- let cb = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function (v) {
- const errors = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null
- }
- const rules = this.rules[name]
- if (!rules) {
- console.warn('[form-validtor] rule name ' + name + ' not exists.')
- cb(true)
- return
- }
- if (typeof value === 'function') {
- cb = value
- value = undefined
- }
- let isFail = false
- const models = this.models
- if (toString.call(rules) === '[object Array]') {
- rules.forEach(function (rule) {
- rule.name = name
- const resMessage = validateSingleRule(rule, value || models[name], rule.param, models)
- if (resMessage && !isFail) {
- isFail = true
- const error = resMessage ? {message: resMessage, rule} : undefined
- cb(false, error)
- }
- })
- if (!isFail) {
- cb(!isFail)
- }
- } else {
- const rule = rules
- rule.name = name
- const resMessage = validateSingleRule(rule, value || models[name], rule.param, models)
- const error = resMessage ? {message: resMessage, rule} : undefined
- if (resMessage) {
- isFail = true
- }
- cb(!isFail, error)
- }
- }
- FormValidator.prototype.addMethod = function addMethod(ruleName, method) {
- validator_1.default[ruleName] = method
- }
- FormValidator.prototype.setModel = function setModel(newModel) {
- this.models = newModel
- }
- FormValidator.prototype.setRules = function setRules(newRules) {
- this.rules = newRules
- }
- return FormValidator
- }())
- exports.default = FormValidator
- /***/ }),
- /* 6 */
- /***/ (function (module, exports, __webpack_require__) {
- Object.defineProperty(exports, '__esModule', {value: true})
- const string_1 = __webpack_require__(7)
- const defaultMessage = {
- required: '%s必填',
- minlength: '长度最少为%s',
- maxlength: '长度最大为%s',
- rangelength: '长度在%s和%s之间',
- bytelength: '最多只能输入%s个字',
- min: '值最小为%s',
- max: '值最大为%s',
- range: '值的范围为%s和%s之间',
- mobile: '请输入正确的手机号',
- email: '请输入正确的电子邮件',
- url: '请输入正确的URL地址',
- equalTo: '值和字段%s不相等'
- }
- exports.default = {
- required: function required(r, val, param, models) {
- if (r.required === false) return
- if (!val) return string_1.sprintf(r.message || defaultMessage.required, r.name)
- },
- minlength: function minlength(r, val) {
- const minlen = r.minlength
- val = val || ''
- if (val.length < minlen) return string_1.sprintf(r.message || defaultMessage.minlength, minlen)
- },
- maxlength: function maxlength(r, val) {
- const maxlen = r.maxlength
- val = val || ''
- if (val.length > maxlen) return string_1.sprintf(r.message || defaultMessage.maxlength, maxlen)
- },
- rangelength: function rangelength(r, val) {
- const range = r.range
- val = val || ''
- if (val.length > range[1] || val.length < range[0]) return string_1.sprintf(r.message || defaultMessage.rangelength, range[0], range[1])
- },
- min: function min(r, val) {
- const min = r.min
- if (val < min) return string_1.sprintf(r.message || defaultMessage.min, min)
- },
- max: function max(r, val) {
- const max = r.max
- if (val > max) return string_1.sprintf(r.message || defaultMessage.max, max)
- },
- range: function range(r, val) {
- const range = r.range
- if (val < range[0] || val > range[1]) return string_1.sprintf(r.message || defaultMessage.range, range[0], range[1])
- },
- mobile: function mobile(r, val) {
- if (r.mobile === false) return
- val = val || ''
- if (val.length !== 11) return string_1.sprintf(r.message || defaultMessage.mobile)
- },
- email: function email(r, value) {
- if (r.email === false) return
- if (!/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(value)) {
- return string_1.sprintf(r.message || defaultMessage.email)
- }
- },
- url: function url(r, value) {
- if (r.url === false) return
- if (!/^(https?|s?ftp|weixin):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value)) {
- return r.message || defaultMessage.url
- }
- },
- equalTo: function equalTo(r, value, param, models) {
- const equalTo = r.equalTo
- if (value !== models[equalTo]) return string_1.sprintf(r.message || defaultMessage.equalTo, r.name)
- },
- bytelength: function bytelength(r, value, param, models) {
- param = r.param
- const len = value.replace(/[^\x00-\xff]/g, '**').length
- if (len > param) return string_1.sprintf(r.message || defaultMessage.bytelength, param)
- }
- }
- /***/ }),
- /* 7 */
- /***/ (function (module, exports, __webpack_require__) {
- Object.defineProperty(exports, '__esModule', {value: true})
- exports.sprintf = function () {
- for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key]
- }
- let i = void 0
- let result = args[0] || ''
- let para = void 0
- let reg = void 0
- const length = args.length - 1
- if (length < 1) {
- return result
- }
- i = 1
- while (i < length + 1) {
- result = result.replace(/%s/, '{#' + i + '#}')
- i++
- }
- result.replace('%s', '')
- i = 1
- while (true) {
- para = args[i]
- if (para === undefined) {
- break
- }
- reg = new RegExp('{#' + i + '#}', 'g')
- result = result.replace(reg, para)
- i++
- }
- return result
- }
- /***/ })
- /** *** */ ]))
|