UNPKG

ten-design-vue

Version:

ten-vue

478 lines (426 loc) 14.6 kB
module.exports = /******/ (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 = 1); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports) { module.exports = require("lodash/cloneDeep"); /***/ }), /* 1 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/components/form/form.vue?vue&type=template&id=5f47d92c& var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('form',{class:_vm.classes},[_vm._t("default")],2)} var staticRenderFns = [] // CONCATENATED MODULE: ./src/components/form/form.vue?vue&type=template&id=5f47d92c& // EXTERNAL MODULE: external "lodash/cloneDeep" var cloneDeep_ = __webpack_require__(0); var cloneDeep_default = /*#__PURE__*/__webpack_require__.n(cloneDeep_); // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--1!./node_modules/vue-loader/lib??vue-loader-options!./src/components/form/form.vue?vue&type=script&lang=js& function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } // // // // // // var formvue_type_script_lang_js_name = 'ten-form'; var emptyFn = function emptyFn() {}; /* harmony default export */ var formvue_type_script_lang_js_ = ({ name: formvue_type_script_lang_js_name, props: { /** * 表单项目列表 */ model: Object, /** * 表单默认值,重置表单时会被使用,如未提供,创建时 model 的值将被当做表单默认值 */ defaultModel: Object, /** * 定义规则 */ rules: Object, /** * 是否滚动到错误位置 */ errorLocation: Boolean, /** * 滚动到错误位置偏移 */ errorLocationOffset: { type: Number, default: 100 }, /** * 布局方式 * @member default | inline */ layout: String, /** * 标签对齐方式 * @member right | left */ labelAlign: { type: String, default: 'left' }, /** * 标签宽度 */ labelWidth: { type: String } }, provide: function provide() { return { form: this }; }, data: function data(props) { return { fields: [], formDefaultModel: props.defaultModel || cloneDeep_default()(props.model) }; }, computed: { classes: function classes() { var _ref; return ["".concat(formvue_type_script_lang_js_name), "".concat(formvue_type_script_lang_js_name, "--labelalign-").concat(this.labelAlign), (_ref = {}, _defineProperty(_ref, "".concat(formvue_type_script_lang_js_name, "--").concat(this.layout), this.layout), _defineProperty(_ref, "".concat(formvue_type_script_lang_js_name, "-").concat(this.size), this.size), _ref)]; } }, watch: { rules: { handler: function handler() { this.fields.forEach(function (field) { return field.updateRules(); }); }, deep: true }, defaultModel: function defaultModel(v) { this.formDefaultModel = v; } }, created: function created() { var _this = this; this.$on('form-item.add', function (field) { if (field) _this.fields.push(field); return false; }); this.$on('form-item.remove', function (field) { if (field.prop) _this.fields.splice(_this.fields.indexOf(field), 1); return false; }); }, methods: { /** * 重置表单,默认使用初始化时 model 的值进行重置 * 如提供 defaultModel 属性则使用该值进行重置 * @public */ resetFields: function resetFields() { if (this.formDefaultModel) { this.fields.forEach(function (field) { return field.resetField(); }); } }, /** * 清除表单验证错误 * @public * @param {Array} props 需要清除的字段 */ clearValidate: function clearValidate() { var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; // eslint-disable-next-line var fields = props.length ? typeof props === 'string' ? this.fields.filter(function (field) { return props === field.prop; }) : this.fields.filter(function (field) { return props.indexOf(field.prop) > -1; }) : this.fields; fields.forEach(function (field) { field.clearValidate(); }); }, /** * 执行 form 验证 * 支持两种使用方式 promise 和 回调函数 * @public * @param {Function} callback 验证回调回调参数为(isValid, errors) */ validate: function validate(callback, _errorLocation) { var props = this.fields.map(function (field) { return field.prop; }); var errorLocation; if (typeof _errorLocation === 'undefined') { errorLocation = this.errorLocation; // eslint-disable-line } return this.validateFields(props, callback, errorLocation); }, /** * 验证某个或某几个 formItem * @public * @param {String|Array} props 待验证的 props 可以是单个 prop 或者多个 * @param {Function} callback 回调 * @param {Boolean} errorLocation 同 errorLocation 属性 * @returns {Promise} 返回验证 promise */ validateFields: function validateFields() { var _this2 = this; var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; var callback = arguments.length > 1 ? arguments[1] : undefined; var errorLocation = arguments.length > 2 ? arguments[2] : undefined; var propsToValidate = props; if (!Array.isArray(props)) { propsToValidate = [propsToValidate]; } var promise = new Promise(function (resolve, reject) { var valid = true; var firstErrorField; var errors = []; var count = 0; var fieldsToValidate = propsToValidate.map(function (prop) { return _this2.fields.find(function (field) { return field.prop === prop; }); }).filter(function (v) { return v; }); var total = fieldsToValidate.length; if (!_this2.model || total === 0) { resolve(); callback(valid, null); } var checkValidateAll = function checkValidateAll() { count += 1; if (count === total) { if (!valid) { if (errorLocation) { var errorElem = firstErrorField.$el; var top = _this2.errorLocationOffset || 0; var scrollY = errorElem.getBoundingClientRect().top + window.pageYOffset - top; window.scrollTo(0, scrollY); } callback && callback(valid, errors); reject(errors); } else { resolve(); callback && callback(valid, null); } } }; fieldsToValidate.forEach(function (field) { field.validate().then(function () { checkValidateAll(); }).catch(function (errs) { var error = { prop: field.prop, message: errs[0].message }; valid = false; firstErrorField = firstErrorField || field; errors.push(error); checkValidateAll(); }); }); }); promise.catch(emptyFn); return promise; } } }); // CONCATENATED MODULE: ./src/components/form/form.vue?vue&type=script&lang=js& /* harmony default export */ var form_formvue_type_script_lang_js_ = (formvue_type_script_lang_js_); // CONCATENATED MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js /* globals __VUE_SSR_CONTEXT__ */ // IMPORTANT: Do NOT use ES2015 features in this file (except for modules). // This module is a runtime utility for cleaner component module output and will // be included in the final webpack user bundle. function normalizeComponent ( scriptExports, render, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, /* server only */ shadowMode /* vue-cli only */ ) { // Vue.extend constructor export interop var options = typeof scriptExports === 'function' ? scriptExports.options : scriptExports // render functions if (render) { options.render = render options.staticRenderFns = staticRenderFns options._compiled = true } // functional template if (functionalTemplate) { options.functional = true } // scopedId if (scopeId) { options._scopeId = 'data-v-' + scopeId } var hook if (moduleIdentifier) { // server build hook = function (context) { // 2.3 injection context = context || // cached call (this.$vnode && this.$vnode.ssrContext) || // stateful (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional // 2.2 with runInNewContext: true if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { context = __VUE_SSR_CONTEXT__ } // inject component styles if (injectStyles) { injectStyles.call(this, context) } // register component module identifier for async chunk inferrence if (context && context._registeredComponents) { context._registeredComponents.add(moduleIdentifier) } } // used by ssr in case component is cached and beforeCreate // never gets called options._ssrRegister = hook } else if (injectStyles) { hook = shadowMode ? function () { injectStyles.call( this, (options.functional ? this.parent : this).$root.$options.shadowRoot ) } : injectStyles } if (hook) { if (options.functional) { // for template-only hot-reload because in that case the render fn doesn't // go through the normalizer options._injectStyles = hook // register for functional component in vue file var originalRender = options.render options.render = function renderWithStyleInjection (h, context) { hook.call(context) return originalRender(h, context) } } else { // inject component registration as beforeCreate hook var existing = options.beforeCreate options.beforeCreate = existing ? [].concat(existing, hook) : [hook] } } return { exports: scriptExports, options: options } } // CONCATENATED MODULE: ./src/components/form/form.vue /* normalize component */ var component = normalizeComponent( form_formvue_type_script_lang_js_, render, staticRenderFns, false, null, null, null ) /* harmony default export */ var form_form = __webpack_exports__["default"] = (component.exports); /***/ }) /******/ ]);