UNPKG

@insaic/neon

Version:

A Mobile UI Components built on Vue

762 lines (657 loc) 23.4 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, { /******/ configurable: false, /******/ enumerable: true, /******/ get: getter /******/ }); /******/ } /******/ }; /******/ /******/ // 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 = 59); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports) { /* globals __VUE_SSR_CONTEXT__ */ // IMPORTANT: Do NOT use ES2015 features in this file. // This module is a runtime utility for cleaner component module output and will // be included in the final webpack user bundle. module.exports = function normalizeComponent ( rawScriptExports, compiledTemplate, functionalTemplate, injectStyles, scopeId, moduleIdentifier /* server only */ ) { var esModule var scriptExports = rawScriptExports = rawScriptExports || {} // ES6 modules interop var type = typeof rawScriptExports.default if (type === 'object' || type === 'function') { esModule = rawScriptExports scriptExports = rawScriptExports.default } // Vue.extend constructor export interop var options = typeof scriptExports === 'function' ? scriptExports.options : scriptExports // render functions if (compiledTemplate) { options.render = compiledTemplate.render options.staticRenderFns = compiledTemplate.staticRenderFns options._compiled = true } // functional template if (functionalTemplate) { options.functional = true } // scopedId if (scopeId) { options._scopeId = 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 = injectStyles } if (hook) { var functional = options.functional var existing = functional ? options.render : options.beforeCreate if (!functional) { // inject component registration as beforeCreate hook options.beforeCreate = existing ? [].concat(existing, hook) : [hook] } else { // for template-only hot-reload because in that case the render fn doesn't // go through the normalizer options._injectStyles = hook // register for functioal component in vue file options.render = function renderWithStyleInjection (h, context) { hook.call(context) return existing(h, context) } } } return { esModule: esModule, exports: scriptExports, options: options } } /***/ }), /***/ 1: /***/ (function(module, exports) { var core = module.exports = { version: '2.5.7' }; if (typeof __e == 'number') __e = core; // eslint-disable-line no-undef /***/ }), /***/ 38: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify__ = __webpack_require__(46); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__pickerItem__ = __webpack_require__(62); // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /* harmony default export */ __webpack_exports__["a"] = ({ name: 'sq-picker', components: { PickerItem: __WEBPACK_IMPORTED_MODULE_1__pickerItem__["a" /* default */] }, props: { formatValueFun: Function, format: Array, cancelButtonText: { type: String, default: '取消' }, confirmButtonText: { type: String, default: '确认' }, loading: { type: Boolean, default: false }, title: { type: String, default: '' }, showToolbar: { type: Boolean, default: false }, columns: { type: Array, default: function _default() { return []; } }, valueKey: String, hideEmptyColumn: { type: Boolean, default: false }, rowHeight: { type: Number, default: 48 }, rowCount: { type: Number, default: 5 } }, computed: { bodyStyles: function bodyStyles() { return { height: this.rowHeight * this.rowCount + 'px' }; }, bodyMaskStyles: function bodyMaskStyles() { return { height: this.rowHeight * parseInt(this.rowCount / 2) + 'px' }; } }, data: function data() { return { children: [] }; }, watch: { columns: function columns(val) { this.setColumns(val); } }, methods: { formatColumns: function formatColumns(columns) { if (columns.length && Array.isArray(columns[0])) { return columns; } else if (Object.prototype.toString.call(columns[0]) === '[object Object]' && columns[0].values) { return columns.map(function (column) { return column.values; }); } else { return [columns]; } }, $_cancel: function $_cancel() { this.$emit('cancel'); }, $_confirm: function $_confirm() { this.$emit('confirm', this.getValues()); }, $_onChange: function $_onChange(valueInColumnIndex, columnInColumnsIndex) { this.$emit('on-change', this.getValues(), this, { valueInColumnIndex: valueInColumnIndex, columnInColumnsIndex: columnInColumnsIndex }); }, getValues: function getValues() { return this.children.map(function (child) { return child.getValue(); }); }, setValues: function setValues(values) { var _this = this; values.forEach(function (value, index) { _this.children[index] && _this.children[index].setValue(value); }); }, setColumnValues: function setColumnValues(index, dataList) { var column = this.children[index]; if (column && __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify___default()(column.list) !== __WEBPACK_IMPORTED_MODULE_0_babel_runtime_core_js_json_stringify___default()(dataList)) { column.list = dataList; column.setIndex(0); } }, setColumns: function setColumns(val) { var _this2 = this; var columns = this.formatColumns(val || this.columns); columns.forEach(function (dataList, index) { _this2.setColumnValues(index, dataList); }); } } }); /***/ }), /***/ 39: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // // // // // // // // // // // // // // // // // // /* harmony default export */ __webpack_exports__["a"] = ({ name: 'sq-picker-item', props: { dataList: { type: Array, default: function _default() { return []; } }, valueKey: { type: String }, format: { type: String }, formatValueFun: { type: Function }, defaultIndex: { type: Number, default: 0 }, hideEmptyColumn: { type: Boolean, default: false }, // 每行列的高度 rowHeight: Number, // 每列显示数量 rowCount: Number }, computed: { itemStyles: function itemStyles() { return { transform: 'translate3d(0px, ' + this.translateY + 'px, 0px)', transition: 'transform ' + this.transitionTime + 's' }; }, rowStyles: function rowStyles() { return { height: this.rowHeight + 'px', lineHeight: this.rowHeight + 'px' }; }, isShowPickerItem: function isShowPickerItem() { return { display: this.hideEmptyColumn && !this.list.length ? 'none' : '' }; }, // 列表初始偏移量 offset: function offset() { return parseInt(this.rowCount / 2); } }, data: function data() { return { list: this.dataList, temp: null, // 容器 translateY: parseInt(this.rowCount / 2) * this.rowHeight, transitionTime: 0, startY: 0, // 起始值 moveY: 0, // 移动的距离 saveY: parseInt(this.rowCount / 2) * this.rowHeight, // 缓存偏移量 currentIndex: this.defaultIndex, // 选中的下标 startTime: undefined, points: [] }; }, methods: { init: function init() { this.temp.addEventListener('touchstart', this.onTouchStart, false); this.temp.addEventListener('touchmove', this.onTouchMove, false); this.temp.addEventListener('touchend', this.onTouchEnd, false); this.temp.addEventListener('touchcancel', this.onTouchEnd, false); }, onTouchStart: function onTouchStart(event) { if (this.loading) return; this.startY = event.changedTouches[0].pageY; this.moveY = 0; this.startTime = +new Date(); event.preventDefault(); }, onTouchMove: function onTouchMove(event) { if (this.loading) return; if (this.transitionTime) { this.transitionTime = 0; } this.moveY = event.changedTouches[0].pageY - this.startY; this.translateY = this.saveY + this.moveY; this.startTime = +new Date(); this.points.push({ time: this.startTime, y: event.changedTouches[0].pageY }); if (this.points.length > 40) { this.points.shift(); } event.preventDefault(); }, onTouchEnd: function onTouchEnd(event) { if (!this.startY || this.loading) return; var endY = event.changedTouches[0].pageY; var endTime = +new Date(); // 如果最后次move时间与end时间超过100ms,不添加惯性滑动 if (endTime - this.startTime > 100) { this.onStop(); } else { if (Math.abs(endY - this.startY) > 10) { var endPos = this.points.length - 1; var startPos = endPos; for (var i = endPos; i > 0 && this.startTime - this.points[i].time < 100; i--) { startPos = i; } if (startPos !== endPos) { var ep = this.points[endPos]; var sp = this.points[startPos]; var t = ep.time - sp.time; var s = ep.y - sp.y; var v = s / t; // 出手时的速度 var diff = v * 150; // 滑行 150ms,这里直接影响“灵敏度” this.onStop(diff); } else { this.onStop(); } } else { this.onStop(); } } event.preventDefault(); }, onStop: function onStop() { var diff = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; // 缓存上次translateY的值 this.saveY = this.translateY; var offset = this.offset, rowHeight = this.rowHeight, list = this.list, currentIndex = this.currentIndex; var _saveY = this.saveY; var count = list.length; // 获得list 下标 var _index = parseInt((offset * rowHeight - _saveY - diff) / rowHeight); if (_index < 0) { _index = 0; } else if (_index >= count) { _index = count - 1; } // 当前位置与 标准情况下 下标距离值 进行对比, 不相同情况下,进行手动设置位置 if (_saveY !== (offset - currentIndex) * rowHeight) { this.transitionTime = 0.3; // 向下拉 超过显示情况下 if (_saveY > 0 && _saveY > offset * rowHeight) { this.setIndex(0, true); // 向上拉 超过显示情况下 } else if (_saveY < 0 && _saveY < (offset - count + 1) * rowHeight) { this.setIndex(count - 1, true); } else { this.setIndex(_index, true); } } }, setIndex: function setIndex(index, userAction) { this.saveY = this.translateY = (this.offset - index) * this.rowHeight; if (index !== this.currentIndex) { this.currentIndex = index; userAction && this.$emit('on-change', index, this.$parent.children.indexOf(this)); } }, getValue: function getValue() { return this.list[this.currentIndex]; }, setValue: function setValue(value) { var _this = this; var list = this.list; var selectIndex = 0; if (Object.prototype.toString.call(value) === '[object Object]' && this.valueKey) { list.forEach(function (item, i) { if (item[_this.valueKey] === value[_this.valueKey]) { selectIndex = i; } }); } else { selectIndex = list.indexOf(value) > -1 ? list.indexOf(value) : 0; } this.setIndex(selectIndex); } }, created: function created() { this.$parent.children && this.$parent.children.push(this); }, mounted: function mounted() { var _this2 = this; this.$nextTick(function () { _this2.temp = _this2.$el; _this2.init(); }); }, beforeDestroy: function beforeDestroy() { this.temp.removeEventListener('touchstart', this.onTouchStart); this.temp.removeEventListener('touchmove', this.onTouchMove); this.temp.removeEventListener('touchend', this.onTouchEnd); this.temp.removeEventListener('touchcancel', this.onTouchEnd); }, destroyed: function destroyed() { this.$parent.children && this.$parent.children.splice(this.$parent.children.indexOf(this), 1); } }); /***/ }), /***/ 46: /***/ (function(module, exports, __webpack_require__) { module.exports = { "default": __webpack_require__(47), __esModule: true }; /***/ }), /***/ 47: /***/ (function(module, exports, __webpack_require__) { var core = __webpack_require__(1); var $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify }); module.exports = function stringify(it) { // eslint-disable-line no-unused-vars return $JSON.stringify.apply($JSON, arguments); }; /***/ }), /***/ 59: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__src_index_vue__ = __webpack_require__(60); __WEBPACK_IMPORTED_MODULE_0__src_index_vue__["a" /* default */].install = function (Vue) { Vue.component(__WEBPACK_IMPORTED_MODULE_0__src_index_vue__["a" /* default */].name, __WEBPACK_IMPORTED_MODULE_0__src_index_vue__["a" /* default */]); }; /* harmony default export */ __webpack_exports__["default"] = (__WEBPACK_IMPORTED_MODULE_0__src_index_vue__["a" /* default */]); /***/ }), /***/ 60: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__ = __webpack_require__(38); /* unused harmony namespace reexport */ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_3d6e5dc8_hasScoped_false_transformToRequire_video_src_poster_source_src_img_src_image_xlink_href_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_index_vue__ = __webpack_require__(65); function injectStyle (ssrContext) { __webpack_require__(61) } var normalizeComponent = __webpack_require__(0) /* script */ /* template */ /* template functional */ var __vue_template_functional__ = false /* styles */ var __vue_styles__ = injectStyle /* scopeId */ var __vue_scopeId__ = null /* moduleIdentifier (server only) */ var __vue_module_identifier__ = null var Component = normalizeComponent( __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__["a" /* default */], __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_3d6e5dc8_hasScoped_false_transformToRequire_video_src_poster_source_src_img_src_image_xlink_href_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_index_vue__["a" /* default */], __vue_template_functional__, __vue_styles__, __vue_scopeId__, __vue_module_identifier__ ) /* harmony default export */ __webpack_exports__["a"] = (Component.exports); /***/ }), /***/ 61: /***/ (function(module, exports) { // removed by extract-text-webpack-plugin /***/ }), /***/ 62: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_pickerItem_vue__ = __webpack_require__(39); /* unused harmony namespace reexport */ /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_5a050041_hasScoped_false_transformToRequire_video_src_poster_source_src_img_src_image_xlink_href_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_pickerItem_vue__ = __webpack_require__(64); function injectStyle (ssrContext) { __webpack_require__(63) } var normalizeComponent = __webpack_require__(0) /* script */ /* template */ /* template functional */ var __vue_template_functional__ = false /* styles */ var __vue_styles__ = injectStyle /* scopeId */ var __vue_scopeId__ = null /* moduleIdentifier (server only) */ var __vue_module_identifier__ = null var Component = normalizeComponent( __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_pickerItem_vue__["a" /* default */], __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_5a050041_hasScoped_false_transformToRequire_video_src_poster_source_src_img_src_image_xlink_href_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_pickerItem_vue__["a" /* default */], __vue_template_functional__, __vue_styles__, __vue_scopeId__, __vue_module_identifier__ ) /* harmony default export */ __webpack_exports__["a"] = (Component.exports); /***/ }), /***/ 63: /***/ (function(module, exports) { // removed by extract-text-webpack-plugin /***/ }), /***/ 64: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sq-picker-item",style:(_vm.isShowPickerItem)},[_c('ul',{staticClass:"sq-picker-item-wrapper",style:(_vm.itemStyles)},_vm._l((_vm.list),function(item,index){return _c('li',{key:index,staticClass:"sq-picker-item-row",style:(_vm.rowStyles),on:{"click":function($event){_vm.setIndex(index, true)}}},[_vm._v("\n "+_vm._s(_vm.valueKey ? (_vm.formatValueFun ? _vm.formatValueFun(item[_vm.valueKey]) : item[_vm.valueKey]) : (_vm.formatValueFun ? _vm.formatValueFun(item) : item))+_vm._s(_vm.format)+"\n ")])}))])} var staticRenderFns = [] var esExports = { render: render, staticRenderFns: staticRenderFns } /* harmony default export */ __webpack_exports__["a"] = (esExports); /***/ }), /***/ 65: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"sq-picker"},[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.showToolbar),expression:"showToolbar"}],staticClass:"sq-picker-header sq-picker-bottom-line"},[_c('div',{on:{"click":_vm.$_cancel}},[_vm._v(_vm._s(_vm.cancelButtonText))]),_vm._v(" "),_c('div',[_vm._v(_vm._s(_vm.title))]),_vm._v(" "),_c('div',{on:{"click":_vm.$_confirm}},[_vm._v(_vm._s(_vm.confirmButtonText))])]),_vm._v(" "),_c('div',{staticClass:"sq-picker-body",on:{"touchmove":function($event){$event.preventDefault();}}},[_c('div',{staticClass:"sq-picker-body-mask top",style:(_vm.bodyMaskStyles)}),_vm._v(" "),_c('div',{staticClass:"sq-picker-body-mask bottom",style:(_vm.bodyMaskStyles)}),_vm._v(" "),_c('div',{staticClass:"sq-picker-body-wrapper",style:(_vm.bodyStyles)},_vm._l((_vm.formatColumns(_vm.columns)),function(item,index){return _c('picker-item',{key:index,attrs:{"data-list":item,"format":_vm.format && _vm.format.length ? _vm.format[index] : '',"format-value-fun":_vm.formatValueFun,"value-key":_vm.valueKey,"row-height":_vm.rowHeight,"row-count":_vm.rowCount,"hide-empty-column":_vm.hideEmptyColumn},on:{"on-change":_vm.$_onChange}})}))]),_vm._v(" "),_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.loading),expression:"loading"}],staticClass:"sq-picker-loading-mask"},[_c('div',{staticClass:"sq-picker-loading-icon"})])])} var staticRenderFns = [] var esExports = { render: render, staticRenderFns: staticRenderFns } /* harmony default export */ __webpack_exports__["a"] = (esExports); /***/ }) /******/ });