vuejs-datepicker-mobile
Version:
A Vue.js datepick mobile project
1,384 lines (1,160 loc) • 43.1 kB
JavaScript
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define([], factory);
else if(typeof exports === 'object')
exports["vuejs-datepicker-mobile"] = factory();
else
root["vuejs-datepicker-mobile"] = factory();
})((typeof self !== 'undefined' ? self : this), 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 = "fb15");
/******/ })
/************************************************************************/
/******/ ({
/***/ "24fb":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
// css base code, injected by the css-loader
// eslint-disable-next-line func-names
module.exports = function (useSourceMap) {
var list = []; // return the list of modules as css string
list.toString = function toString() {
return this.map(function (item) {
var content = cssWithMappingToString(item, useSourceMap);
if (item[2]) {
return "@media ".concat(item[2], "{").concat(content, "}");
}
return content;
}).join('');
}; // import a list of modules into the list
// eslint-disable-next-line func-names
list.i = function (modules, mediaQuery) {
if (typeof modules === 'string') {
// eslint-disable-next-line no-param-reassign
modules = [[null, modules, '']];
}
var alreadyImportedModules = {};
for (var i = 0; i < this.length; i++) {
// eslint-disable-next-line prefer-destructuring
var id = this[i][0];
if (id != null) {
alreadyImportedModules[id] = true;
}
}
for (var _i = 0; _i < modules.length; _i++) {
var item = modules[_i]; // skip already imported module
// this implementation is not 100% perfect for weird media query combinations
// when a module is imported multiple times with different media queries.
// I hope this will never occur (Hey this way we have smaller bundles)
if (item[0] == null || !alreadyImportedModules[item[0]]) {
if (mediaQuery && !item[2]) {
item[2] = mediaQuery;
} else if (mediaQuery) {
item[2] = "(".concat(item[2], ") and (").concat(mediaQuery, ")");
}
list.push(item);
}
}
};
return list;
};
function cssWithMappingToString(item, useSourceMap) {
var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring
var cssMapping = item[3];
if (!cssMapping) {
return content;
}
if (useSourceMap && typeof btoa === 'function') {
var sourceMapping = toComment(cssMapping);
var sourceURLs = cssMapping.sources.map(function (source) {
return "/*# sourceURL=".concat(cssMapping.sourceRoot).concat(source, " */");
});
return [content].concat(sourceURLs).concat([sourceMapping]).join('\n');
}
return [content].join('\n');
} // Adapted from convert-source-map (MIT)
function toComment(sourceMap) {
// eslint-disable-next-line no-undef
var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))));
var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64);
return "/*# ".concat(data, " */");
}
/***/ }),
/***/ "320c":
/***/ (function(module, exports, __webpack_require__) {
"use strict";
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
/* eslint-disable no-unused-vars */
var getOwnPropertySymbols = Object.getOwnPropertySymbols;
var hasOwnProperty = Object.prototype.hasOwnProperty;
var propIsEnumerable = Object.prototype.propertyIsEnumerable;
function toObject(val) {
if (val === null || val === undefined) {
throw new TypeError('Object.assign cannot be called with null or undefined');
}
return Object(val);
}
function shouldUseNative() {
try {
if (!Object.assign) {
return false;
}
// Detect buggy property enumeration order in older V8 versions.
// https://bugs.chromium.org/p/v8/issues/detail?id=4118
var test1 = new String('abc'); // eslint-disable-line no-new-wrappers
test1[5] = 'de';
if (Object.getOwnPropertyNames(test1)[0] === '5') {
return false;
}
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
var test2 = {};
for (var i = 0; i < 10; i++) {
test2['_' + String.fromCharCode(i)] = i;
}
var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
return test2[n];
});
if (order2.join('') !== '0123456789') {
return false;
}
// https://bugs.chromium.org/p/v8/issues/detail?id=3056
var test3 = {};
'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
test3[letter] = letter;
});
if (Object.keys(Object.assign({}, test3)).join('') !==
'abcdefghijklmnopqrst') {
return false;
}
return true;
} catch (err) {
// We don't expect any of the above to throw, but better to be safe.
return false;
}
}
module.exports = shouldUseNative() ? Object.assign : function (target, source) {
var from;
var to = toObject(target);
var symbols;
for (var s = 1; s < arguments.length; s++) {
from = Object(arguments[s]);
for (var key in from) {
if (hasOwnProperty.call(from, key)) {
to[key] = from[key];
}
}
if (getOwnPropertySymbols) {
symbols = getOwnPropertySymbols(from);
for (var i = 0; i < symbols.length; i++) {
if (propIsEnumerable.call(from, symbols[i])) {
to[symbols[i]] = from[symbols[i]];
}
}
}
}
return to;
};
/***/ }),
/***/ "3a54":
/***/ (function(module, exports, __webpack_require__) {
exports = module.exports = __webpack_require__("24fb")(false);
// Module
exports.push([module.i, ".m-picker{font-size:4.26667vw;color:#666;position:fixed;width:100vw;height:100vh;top:0;left:0;z-index:1000}.m-picker .m-picker-item-box{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-ms-flex-line-pack:center;align-content:center;overflow:hidden}.m-picker .m-picker-mark{position:absolute;z-index:99;background:#000;opacity:.6;width:100%;height:100%}.m-picker .m-picker-header{position:relative;display:-webkit-box;display:-ms-flexbox;display:flex;height:10.66667vw;line-height:10.66667vw;border-bottom:1px solid #eee;-webkit-box-sizing:border-box;box-sizing:border-box;padding:0 5.33333vw;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.m-picker .m-picker-header span:last-of-type{color:#41b883}.m-picker .m-picker-box{position:absolute;z-index:100;bottom:0;background:#fff;width:100%;height:94.66667vw}.m-picker-item{height:84vw;overflow:hidden}.m-picker-item,.m-picker-item .m-scroller-item-box{position:relative;width:100%}.m-picker-item .m-scroller-item{text-align:center;font-size:4.8vw;height:9.33333vw;line-height:9.33333vw}.m-picker-item .m-scroller-mask{top:0;height:100%;margin:0 auto;z-index:3;background-image:-webkit-gradient(linear,left top,left bottom,from(hsla(0,0%,100%,.95)),to(hsla(0,0%,100%,.6))),-webkit-gradient(linear,left bottom,left top,from(hsla(0,0%,100%,.95)),to(hsla(0,0%,100%,.6)));background-image:linear-gradient(180deg,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6)),linear-gradient(0deg,hsla(0,0%,100%,.95),hsla(0,0%,100%,.6));background-size:100% 37.33333vw}.m-picker-item .m-scroller-indicator,.m-picker-item .m-scroller-mask{position:absolute;left:0;width:100%;background-position:top,bottom;background-repeat:no-repeat}.m-picker-item .m-scroller-indicator{height:9.33333vw;top:37.33333vw;z-index:2;-webkit-box-sizing:border-box;box-sizing:border-box;background-image:-webkit-gradient(linear,left top,left bottom,from(#d0d0d0),color-stop(#d0d0d0),color-stop(transparent),to(transparent)),-webkit-gradient(linear,left bottom,left top,from(#d0d0d0),color-stop(#d0d0d0),color-stop(transparent),to(transparent));background-image:linear-gradient(180deg,#d0d0d0,#d0d0d0,transparent,transparent),linear-gradient(0deg,#d0d0d0,#d0d0d0,transparent,transparent);background-size:100% 2px}.fade-enter-active,.fade-leave-active{transition:opacity .3s;-webkit-transition:opacity .3s;opacity:1}.fade-enter,.fade-leave-to{opacity:0}", ""]);
/***/ }),
/***/ "499e":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
// CONCATENATED MODULE: ./node_modules/vue-style-loader/lib/listToStyles.js
/**
* Translates the list format produced by css-loader into something
* easier to manipulate.
*/
function listToStyles (parentId, list) {
var styles = []
var newStyles = {}
for (var i = 0; i < list.length; i++) {
var item = list[i]
var id = item[0]
var css = item[1]
var media = item[2]
var sourceMap = item[3]
var part = {
id: parentId + ':' + i,
css: css,
media: media,
sourceMap: sourceMap
}
if (!newStyles[id]) {
styles.push(newStyles[id] = { id: id, parts: [part] })
} else {
newStyles[id].parts.push(part)
}
}
return styles
}
// CONCATENATED MODULE: ./node_modules/vue-style-loader/lib/addStylesClient.js
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return addStylesClient; });
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
Modified by Evan You @yyx990803
*/
var hasDocument = typeof document !== 'undefined'
if (typeof DEBUG !== 'undefined' && DEBUG) {
if (!hasDocument) {
throw new Error(
'vue-style-loader cannot be used in a non-browser environment. ' +
"Use { target: 'node' } in your Webpack config to indicate a server-rendering environment."
) }
}
/*
type StyleObject = {
id: number;
parts: Array<StyleObjectPart>
}
type StyleObjectPart = {
css: string;
media: string;
sourceMap: ?string
}
*/
var stylesInDom = {/*
[id: number]: {
id: number,
refs: number,
parts: Array<(obj?: StyleObjectPart) => void>
}
*/}
var head = hasDocument && (document.head || document.getElementsByTagName('head')[0])
var singletonElement = null
var singletonCounter = 0
var isProduction = false
var noop = function () {}
var options = null
var ssrIdKey = 'data-vue-ssr-id'
// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
// tags it will allow on a page
var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\b/.test(navigator.userAgent.toLowerCase())
function addStylesClient (parentId, list, _isProduction, _options) {
isProduction = _isProduction
options = _options || {}
var styles = listToStyles(parentId, list)
addStylesToDom(styles)
return function update (newList) {
var mayRemove = []
for (var i = 0; i < styles.length; i++) {
var item = styles[i]
var domStyle = stylesInDom[item.id]
domStyle.refs--
mayRemove.push(domStyle)
}
if (newList) {
styles = listToStyles(parentId, newList)
addStylesToDom(styles)
} else {
styles = []
}
for (var i = 0; i < mayRemove.length; i++) {
var domStyle = mayRemove[i]
if (domStyle.refs === 0) {
for (var j = 0; j < domStyle.parts.length; j++) {
domStyle.parts[j]()
}
delete stylesInDom[domStyle.id]
}
}
}
}
function addStylesToDom (styles /* Array<StyleObject> */) {
for (var i = 0; i < styles.length; i++) {
var item = styles[i]
var domStyle = stylesInDom[item.id]
if (domStyle) {
domStyle.refs++
for (var j = 0; j < domStyle.parts.length; j++) {
domStyle.parts[j](item.parts[j])
}
for (; j < item.parts.length; j++) {
domStyle.parts.push(addStyle(item.parts[j]))
}
if (domStyle.parts.length > item.parts.length) {
domStyle.parts.length = item.parts.length
}
} else {
var parts = []
for (var j = 0; j < item.parts.length; j++) {
parts.push(addStyle(item.parts[j]))
}
stylesInDom[item.id] = { id: item.id, refs: 1, parts: parts }
}
}
}
function createStyleElement () {
var styleElement = document.createElement('style')
styleElement.type = 'text/css'
head.appendChild(styleElement)
return styleElement
}
function addStyle (obj /* StyleObjectPart */) {
var update, remove
var styleElement = document.querySelector('style[' + ssrIdKey + '~="' + obj.id + '"]')
if (styleElement) {
if (isProduction) {
// has SSR styles and in production mode.
// simply do nothing.
return noop
} else {
// has SSR styles but in dev mode.
// for some reason Chrome can't handle source map in server-rendered
// style tags - source maps in <style> only works if the style tag is
// created and inserted dynamically. So we remove the server rendered
// styles and inject new ones.
styleElement.parentNode.removeChild(styleElement)
}
}
if (isOldIE) {
// use singleton mode for IE9.
var styleIndex = singletonCounter++
styleElement = singletonElement || (singletonElement = createStyleElement())
update = applyToSingletonTag.bind(null, styleElement, styleIndex, false)
remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true)
} else {
// use multi-style-tag mode in all other cases
styleElement = createStyleElement()
update = applyToTag.bind(null, styleElement)
remove = function () {
styleElement.parentNode.removeChild(styleElement)
}
}
update(obj)
return function updateStyle (newObj /* StyleObjectPart */) {
if (newObj) {
if (newObj.css === obj.css &&
newObj.media === obj.media &&
newObj.sourceMap === obj.sourceMap) {
return
}
update(obj = newObj)
} else {
remove()
}
}
}
var replaceText = (function () {
var textStore = []
return function (index, replacement) {
textStore[index] = replacement
return textStore.filter(Boolean).join('\n')
}
})()
function applyToSingletonTag (styleElement, index, remove, obj) {
var css = remove ? '' : obj.css
if (styleElement.styleSheet) {
styleElement.styleSheet.cssText = replaceText(index, css)
} else {
var cssNode = document.createTextNode(css)
var childNodes = styleElement.childNodes
if (childNodes[index]) styleElement.removeChild(childNodes[index])
if (childNodes.length) {
styleElement.insertBefore(cssNode, childNodes[index])
} else {
styleElement.appendChild(cssNode)
}
}
}
function applyToTag (styleElement, obj) {
var css = obj.css
var media = obj.media
var sourceMap = obj.sourceMap
if (media) {
styleElement.setAttribute('media', media)
}
if (options.ssrId) {
styleElement.setAttribute(ssrIdKey, obj.id)
}
if (sourceMap) {
// https://developer.chrome.com/devtools/docs/javascript-debugging
// this makes source maps inside style tags work properly in Chrome
css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */'
// http://stackoverflow.com/a/26603875
css += '\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + ' */'
}
if (styleElement.styleSheet) {
styleElement.styleSheet.cssText = css
} else {
while (styleElement.firstChild) {
styleElement.removeChild(styleElement.firstChild)
}
styleElement.appendChild(document.createTextNode(css))
}
}
/***/ }),
/***/ "cb43":
/***/ (function(module, exports, __webpack_require__) {
// style-loader: Adds some css to the DOM by adding a <style> tag
// load the styles
var content = __webpack_require__("3a54");
if(typeof content === 'string') content = [[module.i, content, '']];
if(content.locals) module.exports = content.locals;
// add the styles to the DOM
var add = __webpack_require__("499e").default
var update = add("6e92bf31", content, true, {"sourceMap":false,"shadowMode":false});
/***/ }),
/***/ "f6fd":
/***/ (function(module, exports) {
// document.currentScript polyfill by Adam Miller
// MIT license
(function(document){
var currentScript = "currentScript",
scripts = document.getElementsByTagName('script'); // Live NodeList collection
// If browser needs currentScript polyfill, add get currentScript() to the document object
if (!(currentScript in document)) {
Object.defineProperty(document, currentScript, {
get: function(){
// IE 6-10 supports script readyState
// IE 10+ support stack trace
try { throw new Error(); }
catch (err) {
// Find the second match for the "at" string to get file src url from stack.
// Specifically works with the format of stack traces in IE.
var i, res = ((/.*at [^\(]*\((.*):.+:.+\)$/ig).exec(err.stack) || [false])[1];
// For all scripts on the page, if src matches or if ready state is interactive, return the script tag
for(i in scripts){
if(scripts[i].src == res || scripts[i].readyState == "interactive"){
return scripts[i];
}
}
// If no match, return null
return null;
}
}
});
}
})(document);
/***/ }),
/***/ "fb15":
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
// This file is imported into lib/wc client bundles.
if (typeof window !== 'undefined') {
if (true) {
__webpack_require__("f6fd")
}
var setPublicPath_i
if ((setPublicPath_i = window.document.currentScript) && (setPublicPath_i = setPublicPath_i.src.match(/(.+\/)[^/]+\.js(\?.*)?$/))) {
__webpack_require__.p = setPublicPath_i[1] // eslint-disable-line
}
}
// Indicate to webpack that this file can be concatenated
/* harmony default export */ var setPublicPath = (null);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"941cbcf2-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Picker.vue?vue&type=template&id=fa1a4190&
var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.show)?_c('div',{staticClass:"m-picker"},[_c('div',{staticClass:"m-picker-mark",on:{"click":_vm.cal}}),_c('div',{staticClass:"m-picker-box"},[_c('div',{staticClass:"m-picker-header"},[_c('span',{on:{"click":_vm.cal}},[_vm._v("取消")]),_c('span',{on:{"click":_vm.sel}},[_vm._v("确定")])]),_c('div',{staticClass:"m-picker-content"},[(_vm.type==='picker')?_c('div',{staticClass:"m-picker-item-box"},[_c('PickerItem',{attrs:{"change":_vm.change,"d":_vm.dateList[0],"selType":'year',"val":_vm.year},on:{"update:val":function($event){_vm.year=$event}}}),_c('PickerItem',{attrs:{"change":_vm.change,"d":_vm.dateList[1],"selType":'month',"val":_vm.month},on:{"update:val":function($event){_vm.month=$event}}}),_c('PickerItem',{attrs:{"change":_vm.change,"d":_vm.dateList[2],"selType":'day',"val":_vm.day},on:{"update:val":function($event){_vm.day=$event}}})],1):_c('div',{staticClass:"m-picker-item-box"},[_c('PickerItem',{attrs:{"change":_vm.change,"d":_vm.dateList[0],"selType":'year',"val":_vm.year},on:{"update:val":function($event){_vm.year=$event}}}),_c('PickerItem',{attrs:{"change":_vm.change,"d":_vm.dateList[1],"selType":'month',"val":_vm.month},on:{"update:val":function($event){_vm.month=$event}}}),_c('PickerItem',{attrs:{"change":_vm.change,"d":_vm.dateList[2],"selType":'day',"val":_vm.day},on:{"update:val":function($event){_vm.day=$event}}}),_c('PickerItem',{attrs:{"change":_vm.change,"d":_vm.dateList[3],"selType":'hour',"val":_vm.hour},on:{"update:val":function($event){_vm.hour=$event}}}),_c('PickerItem',{attrs:{"change":_vm.change,"d":_vm.dateList[4],"selType":'minute',"val":_vm.minute},on:{"update:val":function($event){_vm.minute=$event}}})],1)])])]):_vm._e()}
var staticRenderFns = []
// CONCATENATED MODULE: ./src/components/Picker.vue?vue&type=template&id=fa1a4190&
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js?{"cacheDirectory":"node_modules/.cache/vue-loader","cacheIdentifier":"941cbcf2-vue-loader-template"}!./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/PickerItem.vue?vue&type=template&id=2152cfe4&
var PickerItemvue_type_template_id_2152cfe4_render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"m-picker-item"},[_c('div',{staticClass:"m-scroller-indicator"}),_c('div',{staticClass:"m-scroller-mask",on:{"touchend":_vm.end,"touchmove":_vm.move,"touchstart":_vm.start}}),_c('div',{staticClass:"m-scroller-item-box",style:(_vm.domStyle)},_vm._l((_vm.d),function(i,k){return _c('div',{key:k,staticClass:"m-scroller-item"},[_vm._v(_vm._s(i))])}),0)])}
var PickerItemvue_type_template_id_2152cfe4_staticRenderFns = []
// CONCATENATED MODULE: ./src/components/PickerItem.vue?vue&type=template&id=2152cfe4&
// EXTERNAL MODULE: ./node_modules/object-assign/index.js
var object_assign = __webpack_require__("320c");
var object_assign_default = /*#__PURE__*/__webpack_require__.n(object_assign);
// CONCATENATED MODULE: ./src/modules/util.js
var util_mergeOptions = function mergeOptions($vm, options) {
var defaults = {};
for (var i in $vm.$options.props) {
if (i !== 'value') {
defaults[i] = $vm.$options.props[i].default;
}
}
var _options = object_assign_default()({}, defaults, options);
for (var _i in _options) {
$vm[_i] = _options[_i];
}
};
function add(a, b) {
var c, d, e;
try {
c = a.toString().split('.')[1].length;
} catch (f) {
c = 0;
}
try {
d = b.toString().split('.')[1].length;
} catch (f) {
d = 0;
}
return e = Math.pow(10, Math.max(c, d)), (mul(a, e) + mul(b, e)) / e;
}
function sub(a, b) {
var c, d, e;
try {
c = a.toString().split('.')[1].length;
} catch (f) {
c = 0;
}
try {
d = b.toString().split('.')[1].length;
} catch (f) {
d = 0;
}
return e = Math.pow(10, Math.max(c, d)), (mul(a, e) - mul(b, e)) / e;
}
function mul(a, b) {
var c = 0;
var d = a.toString();
var e = b.toString();
try {
c += d.split('.')[1].length;
} catch (f) {}
try {
c += e.split('.')[1].length;
} catch (f) {}
return Number(d.replace('.', '')) * Number(e.replace('.', '')) / Math.pow(10, c);
}
function div(a, b) {
var c, d;
var e = 0;
var f = 0;
try {
e = a.toString().split('.')[1].length;
} catch (g) {}
try {
f = b.toString().split('.')[1].length;
} catch (g) {}
return c = Number(a.toString().replace('.', '')), d = Number(b.toString().replace('.', '')), mul(c / d, Math.pow(10, f - e));
} // 取余
function rem(a, b) {
return sub(a, mul(parseInt(div(a, b)), b));
}
function getDate(date) {
if (date === undefined) return false;
var arr = date.toString().split('-');
arr[1] = arr[1].length === 1 && arr[1] < 10 ? '0' + arr[1] : arr[1];
arr[2] = arr[2].length === 1 && arr[2] < 10 ? '0' + arr[2] : arr[2]; // arr[3] = arr[3].length === 1 && arr[3] < 10 ? '0' + arr[3] : arr[3]
// arr[4] = arr[4].length === 1 && arr[4] < 10 ? '0' + arr[4] : arr[4]
return "".concat(arr[0], "-").concat(arr[1], "-").concat(arr[2]);
}
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/PickerItem.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
/* harmony default export */ var PickerItemvue_type_script_lang_js_ = ({
props: {
change: {},
val: {},
selType: {},
d: {
default: function _default() {
return [];
}
}
},
data: function data() {
return {
startY: '',
// touch start Y
endY: '',
// touch end Y
lastPoint: [],
value: '',
dY: 0,
itemKey: 0,
// 第几个值
changeY: '',
// sY - eY
domStyle: {
transform: 'translate3d(0, 0, 0)'
}
};
},
computed: {
itemHeight: function itemHeight() {
return (+window.getComputedStyle(document.querySelector('.m-scroller-item')).height.replace('px', '')).toFixed(2);
},
// 选项长度
itemLen: function itemLen() {
return this.d.length;
}
},
watch: {
d: function d(fut) {
var _this = this;
// if (this.itemKey + 1 > fut.length) this.itemKey = fut.length
fut.map(function (v, k) {
if (v.match(/\d*/g)[0] === _this.val) {
_this.itemKey = k;
}
}); // 动画效果
this.dY = mul(4 - this.itemKey, this.itemHeight);
this.scroll(this.dY, 0.4);
}
},
mounted: function mounted() {
// 初始化,定位第一个
if (this.val) {
this.moveTo(this.val);
} else {
this.dY = mul(this.itemHeight, 4);
this.domStyle = this.style = {
transform: "translate3d(0px, ".concat(this.dY, "px, 0px)")
};
}
},
methods: {
scroll: function scroll(y, t) {
// 根据选项高度判断定在哪个位置
// y = y - y % this.itemHeight + (y % this.itemHeight > this.itemHeight / 2 ? this.itemHeight : 0)
var cTop = rem(y, this.itemHeight) > div(this.itemHeight, 2) ? this.itemHeight : 0;
y = add(sub(y, rem(y, this.itemHeight)), cTop); // 最大最小情况的判断
if (y > mul(this.itemHeight, 4)) {
y = mul(this.itemHeight, 4);
}
var sT = mul(5 - this.itemLen, this.itemHeight);
if (y < sT) {
y = sT;
}
this.dY = y; // 记录现在的位置
this.itemKey = div(sub(mul(this.itemHeight, 4), y), this.itemHeight); // 第几个值
this.domStyle = this.style = {
transform: "translate3d(0px, ".concat(y, "px, 0px)"),
transition: "all ".concat(t, "s cubic-bezier(0.1, 0.85, 0.25, 1) 0s")
}; // 停止后的回调
this.change(this.d[this.itemKey], this.itemKey, this.selType);
},
start: function start(e) {
this.startY = e.touches[0].pageY;
this.domStyle = this.style = {
transform: "translate3d(0px, ".concat(this.dY, "px, 0px)"),
transition: 'none'
};
},
end: function end(e) {
this.endY = e.changedTouches[0].pageY; // 非线性衰减
var t = parseInt(Math.sqrt(Math.abs(this.endY - this.startY))) / 10;
this.scroll(this.dY + this.endY - this.startY, t);
},
move: function move(e) {
e.preventDefault();
var dY = e.touches[0].pageY - this.startY; // 差值
// 反映差值
this.domStyle = {
transform: "translate3d(0px, ".concat(dY, "px, 0px)")
};
},
moveTo: function moveTo(val) {
var _this2 = this;
if (this.selType === 'year') {
this.itemKey = 0;
this.d.map(function (v, k) {
if (Number(v.match(/\d*/g)[0]) === val) {
_this2.itemKey = k;
}
});
} else if (this.selType === 'month' || this.selType === 'day') {
// this.itemKey = +this.val - 1
this.itemKey = 0;
this.d.map(function (v, k) {
if (Number(v.match(/\d*/g)[0]) === val) {
_this2.itemKey = k;
}
});
} else {
// 日期外的 如果后面需要做成其他类型
this.itemKey = 0;
this.d.map(function (v, k) {
if (Number(v.match(/\d*/g)[0]) === val) {
_this2.itemKey = k;
}
});
}
this.dY = mul(4 - this.itemKey, this.itemHeight);
this.scroll(this.dY, 0);
}
}
});
// CONCATENATED MODULE: ./src/components/PickerItem.vue?vue&type=script&lang=js&
/* harmony default export */ var components_PickerItemvue_type_script_lang_js_ = (PickerItemvue_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, 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 functioal 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/PickerItem.vue
/* normalize component */
var component = normalizeComponent(
components_PickerItemvue_type_script_lang_js_,
PickerItemvue_type_template_id_2152cfe4_render,
PickerItemvue_type_template_id_2152cfe4_staticRenderFns,
false,
null,
null,
null
)
/* harmony default export */ var PickerItem = (component.exports);
// CONCATENATED MODULE: ./node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/Picker.vue?vue&type=script&lang=js&
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
// import '../css/style.scss'
/* harmony default export */ var Pickervue_type_script_lang_js_ = ({
name: 'datePicker',
components: {
PickerItem: PickerItem
},
data: function data() {
return {
show: false,
type: 'picker',
dateList: [],
year: 1,
month: 1,
day: 1,
hour: 1,
minute: 1,
endTime: '',
startTime: '',
succeed: function succeed(e) {},
cancel: function cancel() {}
};
},
computed: {
isR: function isR() {
return this.year % 4 === 0 ? true : false;
},
startTimeArr: function startTimeArr() {
if (this.startTime) {
return this.startTime.split('-');
} else {
return [];
}
},
endTimeArr: function endTimeArr() {
if (this.endTime) {
return this.endTime.split('-');
} else {
return [];
}
}
},
mounted: function mounted() {
this.setMonth();
},
methods: {
sel: function sel() {
this.show = false;
if (this.month < 10) this.month = "0".concat(this.month);
if (this.day < 10) this.day = "0".concat(this.day);
if (this.hour < 10) this.hour = "0".concat(this.hour);
if (this.minute < 10) this.minute = "0".concat(this.minute);
if (this.type === 'moment') return this.succeed("".concat(this.year, "-").concat(this.month, "-").concat(this.day, " ").concat(this.hour, ":").concat(this.minute));
this.succeed("".concat(this.year, "-").concat(this.month, "-").concat(this.day));
},
/**
* 设置月日 的确切时间
*/
setMonth: function setMonth() {
var c2 = this.month === 2;
var c1 = [1, 3, 5, 7, 8, 10, 12].join().indexOf(parseInt(this.month));
var newM = []; // month
var m1 = [1, 12];
var newD = []; // day
var m2 = '';
var newH = []; // hour
var m3 = [0, 23];
var newMI = []; // minute
var m4 = [0, 59];
if (this.endTimeArr) {
if (this.year === +this.endTimeArr[0]) {
m1[1] = +this.endTimeArr[1];
if (this.month === +this.endTimeArr[1]) {
m2[1] = +this.endTimeArr[2];
}
}
}
if (c2) {
if (this.isR) {
m2 = [1, 29];
} else {
m2 = [1, 28];
}
} else if (c1 < 0) {
m2 = [1, 30];
} else {
m2 = [1, 31];
}
if (this.startTimeArr) {
if (this.year === +this.startTimeArr[0]) {
m1[0] = +this.startTimeArr[1];
if (this.month === +this.startTimeArr[1]) {
m2[0] = +this.startTimeArr[2];
}
}
}
for (var i = m1[0]; i <= m1[1]; i++) {
newM.push(i + '月');
}
for (var _i = m2[0]; _i <= m2[1]; _i++) {
newD.push(_i + '日');
}
for (var _i2 = m3[0]; _i2 <= m3[1]; _i2++) {
newH.push(_i2 + '时');
}
for (var _i3 = m4[0]; _i3 <= m4[1]; _i3++) {
newMI.push(_i3 + '分');
}
this.dateList[1] = newM;
this.dateList[2] = newD;
this.dateList[3] = newH;
this.dateList[4] = newMI;
},
/** 设置月日 的确切时间
* @param { val } - String
*/
change: function change(val, key) {
var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
if (type === 'year') {
this.year = val.match(/\d*/g)[0];
this.setMonth();
} else if (type === 'month') {
this.month = val.match(/\d*/g)[0];
this.setMonth();
} else if (type === 'day') {
this.day = val.match(/\d*/g)[0];
} else if (type === 'hour') {
this.hour = val.match(/\d*/g)[0];
} else if (type === 'minute') {
this.minute = val.match(/\d*/g)[0];
}
},
cal: function cal() {
this.show = false;
this.cancel();
}
}
});
// CONCATENATED MODULE: ./src/components/Picker.vue?vue&type=script&lang=js&
/* harmony default export */ var components_Pickervue_type_script_lang_js_ = (Pickervue_type_script_lang_js_);
// CONCATENATED MODULE: ./src/components/Picker.vue
/* normalize component */
var Picker_component = normalizeComponent(
components_Pickervue_type_script_lang_js_,
render,
staticRenderFns,
false,
null,
null,
null
)
/* harmony default export */ var Picker = (Picker_component.exports);
// EXTERNAL MODULE: ./src/css/style.scss
var style = __webpack_require__("cb43");
// CONCATENATED MODULE: ./src/modules/index.js
var modules_Picker = {};
modules_Picker.install = function (Vue) {
// let t = new Date()
Vue.prototype.$picker = {};
var CalendarMainCom = Vue.extend(Picker);
var instance = new CalendarMainCom({
el: document.createElement('div')
});
document.body.appendChild(instance.$el);
Vue.prototype.$picker.show = function () {
var settings = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var date = new Date();
instance = Object.assign(instance, {
show: true,
type: 'picker',
// 默认选择器
data: [],
year: date.getFullYear(),
month: date.getMonth() + 1,
day: date.getDate(),
hour: date.getHours(),
minute: date.getMinutes(),
startTime: '',
endTime: '',
date: '',
succeed: function succeed(e) {},
cancel: function cancel() {}
}); // 如果是日期模式
var years = [1949, 2099]; // 有设置开始时间
if (settings.startTime) {
var startY = new Date(getDate(settings.startTime)).getFullYear();
years[0] = startY;
} // 有设置结束时间
if (settings.endTime) {
var endY = new Date(getDate(settings.endTime)).getFullYear();
years[1] = endY;
} // 两个都设置了
if (settings.startTime && settings.endTime) {
if (new Date(getDate(settings.startTime)).getTime() >= new Date(getDate(settings.endTime)).getTime()) {
years[0] = 1949;
settings.startTime = '1949-01-01';
}
}
if (settings.date) {
var setDate = new Date(getDate(settings.date));
var end = new Date(getDate(settings.endTime) || '2099-12-31').getTime();
var start = new Date(getDate(settings.startTime) || '1949-01-01').getTime(); // 验证输入的年的范围是否正确
if (setDate.getTime() >= start && setDate.getTime() <= end) {
settings.year = setDate.getFullYear();
settings.month = setDate.getMonth() + 1;
settings.day = setDate.getDate();
settings.hour = setDate.getHours();
settings.minute = setDate.getMinutes();
} else {
settings.date = '';
}
}
var months = [1, 12];
var days = [1, 30];
var hour = [0, 23];
var minute = [0, 59];
var yearsList = [];
var monthsList = [];
var daysList = [];
var hourList = [];
var minuteList = [];
for (; years[0] <= years[1]; years[0]++) {
yearsList.push(years[0] + '年');
}
for (; months[0] <= months[1]; months[0]++) {
monthsList.push(months[0] + '月');
}
for (; days[0] <= days[1]; days[0]++) {
daysList.push(days[0] + '日');
}
for (; hour[0] <= hour[1]; hour[0]++) {
hourList.push(hour[0] + '时');
}
for (; minute[0] <= minute[1]; minute[0]++) {
minuteList.push(minute[0] + '分');
}
settings.dateList = [yearsList, monthsList, daysList, hourList, minuteList];
util_mergeOptions(instance, settings);
};
Vue.prototype.$picker.hide = function () {
instance.show = false;
};
};
/* harmony default export */ var modules = (modules_Picker);
// CONCATENATED MODULE: ./src/index.js
/* harmony default export */ var src = (modules);
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib.js
/* harmony default export */ var entry_lib = __webpack_exports__["default"] = (src);
/***/ })
/******/ });
});