@insaic/neon
Version:
A Mobile UI Components built on Vue
762 lines (657 loc) • 23.4 kB
JavaScript
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);
/***/ })
/******/ });