UNPKG

wot-design

Version:

Mobile UI components built on vue.js

1,287 lines (1,126 loc) 39 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 = 72); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return normalizeComponent; }); /* 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 } } /***/ }), /***/ 1: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "d", function() { return isServer; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return isSupportSticky; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return getScrollTargetEvent; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "f", function() { return padZero; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "g", function() { return range; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return isEqual; }); /* unused harmony export bus */ /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getType; }); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2); /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_0__); var isServer = vue__WEBPACK_IMPORTED_MODULE_0___default.a.prototype.$isServer; /** * judge if the browser is support sticky */ var isSupportSticky = function isSupportSticky() { var div = document.createElement('div'); var style = 'display: none; position: -webkit-sticky; position: sticky'; div.style.cssText = style; var body = document.body; body.appendChild(div); var isSupport = /sticky/i.test(window.getComputedStyle(div).position); body.removeChild(div); div = null; return isSupport; }; /** * get the overscroll parentNode * @param {*} element current node * @param {*} rootElement root node */ var getScrollTargetEvent = function getScrollTargetEvent(element) { var rootElement = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window; var currentNode = element; while (currentNode && currentNode.tagName !== 'HTML' && currentNode.tagName !== 'BODY' && currentNode !== rootElement && currentNode.nodeType === 1) { var overflowY = document.defaultView.getComputedStyle(currentNode).overflowY; if (overflowY === 'auto' || overflowY === 'scroll') { return currentNode; } currentNode = currentNode.parentNode; } return rootElement; }; var padZero = function padZero(number) { var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 2; number = number + ''; while (number.length < length) { number = '0' + number; } return number; }; var range = function range(value, min, max) { return Math.min(Math.max(value, min), max); }; /** @description 比较数值是否相等 */ var isEqual = function isEqual(value1, value2) { if (value1 === value2) return true; if (!(value1 instanceof Array)) return false; if (!(value2 instanceof Array)) return false; if (value1.length !== value2.length) return false; for (var i = 0; i !== value1.length; ++i) { if (value1[i] !== value2[i]) return false; } return true; }; var bus = new vue__WEBPACK_IMPORTED_MODULE_0___default.a(); /** * @description 获取目标原始类型 * @param target 任意类型 * @returns {string} type 数据类型 */ function getType(target) { // 得到原生类型 var typeStr = Object.prototype.toString.call(target); // 拿到类型值 var type = typeStr.match(/\[object (\w+)\]/)[1]; // 类型值转小写并返回 return type.toLowerCase(); } /***/ }), /***/ 11: /***/ (function(module, exports) { module.exports = require("wot-design/lib/popup"); /***/ }), /***/ 16: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony default export */ __webpack_exports__["a"] = ({ loading: Boolean, arrowHtml: { type: Boolean, default: true }, columnsHeight: { type: Number, default: 217 }, loadingColor: String }); /***/ }), /***/ 2: /***/ (function(module, exports) { module.exports = require("vue"); /***/ }), /***/ 21: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony default export */ __webpack_exports__["a"] = ({ title: String, cancelButtonText: String, confirmButtonText: String, label: String, placeholder: String, disabled: Boolean, readonly: Boolean, required: Boolean, displayFormat: Function, beforeConfirm: Function, size: String, labelWidth: String, error: Boolean, alignRight: Boolean, columnChange: Function, columnChangeEnd: Function, valueKey: { type: String, default: 'value' }, labelKey: { type: String, default: 'label' }, closeOnClickModal: { type: Boolean, default: true }, closeOnPopstate: { type: Boolean, default: true }, safeAreaInsetBottom: { type: Boolean, default: true }, ellipsis: Boolean }); /***/ }), /***/ 27: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var _babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(6); /* harmony import */ var _babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var wot_design_packages_picker_view_src_pickerViewProps__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(16); /* harmony import */ var wot_design_packages_picker_src_pickerProps__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(21); /* harmony import */ var wot_design_src_mixins_locale__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(4); /* harmony import */ var wot_design_src_mixins_locale__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(wot_design_src_mixins_locale__WEBPACK_IMPORTED_MODULE_3__); /* harmony default export */ __webpack_exports__["a"] = ({ mixins: [wot_design_src_mixins_locale__WEBPACK_IMPORTED_MODULE_3___default.a], data: function data() { return { currentTarget: this, showValue: '', lastColumns: [], popupShow: false }; }, props: _babel_runtime_helpers_objectSpread__WEBPACK_IMPORTED_MODULE_0___default()({}, wot_design_packages_picker_view_src_pickerViewProps__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"], wot_design_packages_picker_src_pickerProps__WEBPACK_IMPORTED_MODULE_2__[/* default */ "a"]), components: { CustomCell: { render: function render(h) { var parent = this.$parent; var disabled = parent.disabled, readonly = parent.readonly, labelWidth = parent.labelWidth, label = parent.label, value = parent.value, placeholder = parent.placeholder, showValue = parent.showValue, showPopup = parent.showPopup, required = parent.required, t = parent.t, arrowHtml = parent.arrowHtml, ellipsis = parent.ellipsis; var fieldClass = ['wd-picker__field']; // 右箭头 var arrow = !disabled && !readonly ? h("i", { "class": 'wd-picker__arrow wd-icon-arrow-right' }) : ''; var noValue = !value || value instanceof Array && !value.length; // 右侧展示值 var valueLabel = (noValue ? placeholder : arrowHtml ? '' : showValue) || t('wd.picker.placeholder'); var valueDiv; if (arrowHtml && !noValue) { valueDiv = h("div", { "class": ['wd-picker__value ', noValue ? 'wd-picker__placeholder' : ''], "domProps": { "innerHTML": showValue } }, [valueLabel]); } else { valueDiv = h("div", { "class": ['wd-picker__value ', noValue ? 'wd-picker__placeholder' : '', ellipsis ? 'is-ellipsis' : ''] }, [valueLabel]); } // 左侧label var labelWrapper = label || parent.$slots.label ? h("div", { "class": ['wd-picker__label', required ? 'is-required' : ''], "style": labelWidth ? "min-width: ".concat(labelWidth, "; max-width: ").concat(labelWidth) : '' }, [parent.$slots.label || h("div", [label])]) : ''; // 自定义cell var cell = parent.$slots.default || h("div", { "class": fieldClass }, [labelWrapper, valueDiv, arrow]); return h("div", { "on": { "click": showPopup } }, [cell]); } }, toolbar: { props: { target: Object }, render: function render(h) { var _this$target = this.target, onCancel = _this$target.onCancel, onConfirm = _this$target.onConfirm, cancelButtonText = _this$target.cancelButtonText, confirmButtonText = _this$target.confirmButtonText, title = _this$target.title, loading = _this$target.loading, t = _this$target.t; var cancelButton = h("span", { "class": "wd-picker__action wd-picker__action--cancel", "on": { "click": onCancel } }, [cancelButtonText || t('wd.picker.cancel')]); var confirmButton = h("span", { "on": { "click": loading ? function () {} : onConfirm }, "class": ['wd-picker__action', loading ? 'is-loading' : ''] }, [confirmButtonText || t('wd.picker.done')]); var titleBlock = title ? h("span", { "class": "wd-picker__title" }, [title]) : ''; return h("div", { "class": "wd-picker__toolbar" }, [cancelButton, titleBlock, confirmButton]); } } }, computed: { customClass: function customClass() { var rootClass = ['wd-picker']; this.error && rootClass.push('is-error'); this.alignRight && rootClass.push('is-align-right'); this.disabled && rootClass.push('is-disabled'); this.size && rootClass.push("is-".concat(this.size)); this.label | this.$slots.default && rootClass.push('is-cell'); return rootClass.join(' '); } }, methods: { showPopup: function showPopup() { if (this.disabled || this.readonly) return; this.showPopInit && this.showPopInit(); this.popupShow = true; }, closePopup: function closePopup() { this.popupShow = false; }, getPickerView: function getPickerView() { return this.$refs.pickerView; } } }); /***/ }), /***/ 28: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; var currentYear = new Date().getFullYear(); /* harmony default export */ __webpack_exports__["a"] = ({ filter: Function, formatter: Function, columnFormatter: Function, minHour: { type: Number, default: 0 }, maxHour: { type: Number, default: 23 }, minMinute: { type: Number, default: 0 }, maxMinute: { type: Number, default: 59 }, minDate: { type: Date, default: function _default() { return new Date(currentYear - 10, 0, 1); } }, maxDate: { type: Date, default: function _default() { return new Date(currentYear + 10, 11, 31); } } }); /***/ }), /***/ 35: /***/ (function(module, exports) { module.exports = require("wot-design/lib/datetime-picker-view"); /***/ }), /***/ 4: /***/ (function(module, exports) { module.exports = require("wot-design/lib/mixins/locale"); /***/ }), /***/ 5: /***/ (function(module, exports) { 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; } module.exports = _defineProperty; /***/ }), /***/ 6: /***/ (function(module, exports, __webpack_require__) { var defineProperty = __webpack_require__(5); function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { defineProperty(target, key, source[key]); }); } return target; } module.exports = _objectSpread; /***/ }), /***/ 72: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __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!./packages/datetime-picker/src/main.vue?vue&type=template&id=5f60edd7& var render = function() { var _vm = this var _h = _vm.$createElement var _c = _vm._self._c || _h return _c( "div", { ref: "datetimePicker", class: _vm.customClass }, [ _c("custom-cell"), _vm._v(" "), _c( "wd-popup", { ref: "popup", staticClass: "wd-picker__popup", attrs: { teleport: _vm.teleport, position: "bottom", duration: 250, "close-on-click-modal": _vm.closeOnClickModal, "close-on-popstate": _vm.closeOnPopstate, "safe-area-inset-bottom": _vm.safeAreaInsetBottom }, on: { "click-modal": _vm.onCancel, popstate: _vm.onCancel }, model: { value: _vm.popupShow, callback: function($$v) { _vm.popupShow = $$v }, expression: "popupShow" } }, [ _c("toolbar", { attrs: { target: _vm.currentTarget } }), _vm._v(" "), _vm.region ? _c("div", { staticClass: "wd-picker__region-tabs" }, [ _c( "ul", { staticClass: "wd-picker__region", class: _vm.showStart ? "is-active" : "", on: { click: function($event) { return _vm.chooseItem() } } }, [ _c("li", [ _vm._v(_vm._s(_vm.t("wd.datetimePicker.start"))) ]), _vm._v(" "), _c("li", [_vm._v(_vm._s(_vm.showTabLabel[0]))]) ] ), _vm._v(" "), _c( "ul", { staticClass: "wd-picker__region", class: _vm.showStart ? "" : "is-active", on: { click: function($event) { return _vm.chooseItem(false) } } }, [ _c("li", [_vm._v(_vm._s(_vm.t("wd.datetimePicker.end")))]), _vm._v(" "), _c("li", [_vm._v(_vm._s(_vm.showTabLabel[1]))]) ] ) ]) : _vm._e(), _vm._v(" "), _c( "div", { staticClass: "wd-picker__container" }, [ _c("wd-picker-view", { directives: [ { name: "show", rawName: "v-show", value: _vm.showStart, expression: "showStart" } ], ref: "pickerView", attrs: { type: _vm.type, loading: _vm.loading, "loading-color": _vm.loadingColor, filter: _vm.filter, formatter: _vm.formatter, "arrow-html": _vm.arrowHtml, "value-key": _vm.valueKey, "label-key": _vm.labelKey, "min-date": _vm.minDate, "max-date": _vm.maxDate, "min-hour": _vm.minHour, "max-hour": _vm.maxHour, "max-minute": _vm.maxMinute, "min-minute": _vm.minMinute, "columns-height": _vm.columnsHeight, "start-symbol": true, "column-formatter": _vm.region ? _vm.customColumnFormatter : null }, model: { value: _vm.innerValue, callback: function($$v) { _vm.innerValue = $$v }, expression: "innerValue" } }), _vm._v(" "), _vm.region ? _c("wd-picker-view", { directives: [ { name: "show", rawName: "v-show", value: !_vm.showStart, expression: "!showStart" } ], ref: "endPickerView", attrs: { type: _vm.type, loading: _vm.loading, "loading-color": _vm.loadingColor, filter: _vm.filter, formatter: _vm.formatter, "arrow-html": _vm.arrowHtml, "value-key": _vm.valueKey, "min-date": _vm.minDate, "max-date": _vm.maxDate, "min-hour": _vm.minHour, "max-hour": _vm.maxHour, "max-minute": _vm.maxMinute, "min-minute": _vm.minMinute, "columns-height": _vm.columnsHeight, "column-formatter": _vm.customColumnFormatter }, model: { value: _vm.end.innerValue, callback: function($$v) { _vm.$set(_vm.end, "innerValue", $$v) }, expression: "end.innerValue" } }) : _vm._e() ], 1 ) ], 1 ) ], 1 ) } var staticRenderFns = [] render._withStripped = true // CONCATENATED MODULE: ./packages/datetime-picker/src/main.vue?vue&type=template&id=5f60edd7& // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/objectSpread.js var objectSpread = __webpack_require__(6); var objectSpread_default = /*#__PURE__*/__webpack_require__.n(objectSpread); // EXTERNAL MODULE: external "wot-design/lib/mixins/locale" var locale_ = __webpack_require__(4); var locale_default = /*#__PURE__*/__webpack_require__.n(locale_); // EXTERNAL MODULE: ./src/mixins/picker.js var picker = __webpack_require__(27); // EXTERNAL MODULE: external "wot-design/lib/datetime-picker-view" var datetime_picker_view_ = __webpack_require__(35); var datetime_picker_view_default = /*#__PURE__*/__webpack_require__.n(datetime_picker_view_); // EXTERNAL MODULE: external "wot-design/lib/popup" var popup_ = __webpack_require__(11); var popup_default = /*#__PURE__*/__webpack_require__.n(popup_); // EXTERNAL MODULE: ./packages/picker-view/src/pickerViewProps.js var pickerViewProps = __webpack_require__(16); // EXTERNAL MODULE: ./packages/datetime-picker-view/src/datetimePickerProps.js var datetimePickerProps = __webpack_require__(28); // EXTERNAL MODULE: ./packages/picker/src/pickerProps.js var pickerProps = __webpack_require__(21); // EXTERNAL MODULE: ./src/utils/index.js var utils = __webpack_require__(1); // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./packages/datetime-picker/src/main.vue?vue&type=script&lang=js& // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /* harmony default export */ var mainvue_type_script_lang_js_ = ({ name: 'WdDatetimePicker', mixins: [locale_default.a, picker["a" /* default */]], components: { WdPickerView: datetime_picker_view_default.a, WdPopup: popup_default.a }, data: function data() { return { showStart: true, timePicker: true, showTabLabel: [], innerValue: this.region ? this.value[0] : this.value, displayColumns: [], end: { innerValue: this.region ? this.value[1] || '' : '', displayColumns: [] } }; }, props: objectSpread_default()({ value: null, defaultValue: null, // datetime / 'date' / 'year-month' / 'time' type: { type: String, default: 'datetime' }, displayFormatTabLabel: Function, teleport: [String, Object] }, pickerViewProps["a" /* default */], pickerProps["a" /* default */], datetimePickerProps["a" /* default */]), computed: { region: function region() { return this.value instanceof Array; } }, watch: { value: { handler: function handler() { var _this = this; // 存在旧值,新值与 innerValue 相同,则不作处理 this.innerValue = this.getDefaultInnerValue(); if (this.region) { this.end.innerValue = this.getDefaultInnerValue(true); } this.$nextTick(function () { _this.setShowValue(); }); }, immediate: true }, defaultValue: function defaultValue(val) { this.innerValue = this.getDefaultInnerValue(); if (val instanceof Array) { this.end.innerValue = this.getDefaultInnerValue(true); } }, innerValue: function innerValue() { this.setLabel(); }, 'end.innerValue': function endInnerValue() { this.setLabel(1); } }, methods: { getDefaultInnerValue: function getDefaultInnerValue(isEnd) { if (this.region) { if (isEnd) { return this.value[1] || (this.defaultValue && this.defaultValue.length ? this.defaultValue[1] : '') || ''; } else { return this.value[0] || (this.defaultValue && this.defaultValue.length ? this.defaultValue[0] : '') || ''; } } else { return this.value || this.defaultValue; } }, /** * @description 对外暴露接口,打开弹框 */ open: function open() { this.showPopup(); }, /** * @description 对外暴露接口,关闭弹框 */ close: function close() { this.onCancel(); }, chooseItem: function chooseItem() { var isStart = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true; this.showStart = isStart; this.$emit('toggle', isStart ? this.innerValue : this.end.innerValue); }, onConfirm: function onConfirm() { var _this2 = this; if (this.loading) { this.closePopup(); this.$emit('confirm', this.region ? [this.innerValue, this.end.innerValue] : this.innerValue); return; } if (this.beforeConfirm) { this.beforeConfirm(this.region ? [this.innerValue, this.end.innerValue] : this.innerValue, function (isPass) { isPass && _this2.handleConfirm(); }); } else { this.handleConfirm(); } }, handleConfirm: function handleConfirm() { var _this3 = this; this.closePopup(); this.$nextTick(function () { _this3.$emit('input', _this3.region ? [_this3.innerValue, _this3.end.innerValue] : _this3.innerValue); _this3.$emit('confirm', _this3.region ? [_this3.innerValue, _this3.end.innerValue] : _this3.innerValue); _this3.setShowValue(); }); }, /** * @description 取消是状态重置 */ onCancel: function onCancel() { // reset innerValue // 格式化单个this.value.start this.innerValue = this.getDefaultInnerValue(); if (this.region) { this.end.innerValue = this.getDefaultInnerValue(true); } this.closePopup(); this.$emit('cancel'); }, defaultDisplayFormat: function defaultDisplayFormat(items) { var tabLabel = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; if (items.length === 0) return ''; if (tabLabel && this.displayFormatTabLabel) { return this.displayFormatTabLabel(items); } if (this.displayFormat) { return this.displayFormat(items); } // 如果使用了自定义的的formatter,defaultDisplayFormat无效 if (this.formatter) { var pickerView = this.$refs.pickerView.$refs.pickerView; return pickerView.getLabels().join(''); } switch (this.type) { case 'date': return "".concat(items[0].label, "-").concat(items[1].label, "-").concat(items[2].label); case 'year-month': return "".concat(items[0].label, "-").concat(items[1].label); case 'time': return "".concat(items[0].label, ":").concat(items[1].label); case 'datetime': return "".concat(items[0].label, "-").concat(items[1].label, "-").concat(items[2].label, " ").concat(items[3].label, ":").concat(items[4].label); } }, setLabel: function setLabel() { var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; if (this.region) { var pickerView = index === 0 ? this.$refs.pickerView.$refs.pickerView : this.$refs.endPickerView.$refs.pickerView; if (pickerView) { var items = pickerView.getItems(); this.showTabLabel[index] = this.defaultDisplayFormat(items, true); } } }, setShowValue: function setShowValue() { var pickerView = this.$refs.pickerView.$refs.pickerView; var items = pickerView.getItems(); var label = this.defaultDisplayFormat(items); if (this.region) { var endPickerView = this.$refs.endPickerView.$refs.pickerView; var endItems = endPickerView.getItems(); label += ' 至 ' + this.defaultDisplayFormat(endItems); this.showTabLabel = [this.defaultDisplayFormat(items, true), this.defaultDisplayFormat(endItems, true)]; } this.showValue = label; }, /** * @description 区域选择time禁用规则 * @param {String} isStart 时间段类型 true:start | false:end * @param {Array} column 当前遍历到的列数组 * @param {Number} cindex 外层column的索引(对应每一个类型) * @param {Number / String} value 遍历到的当前值 * @param {Array} currentValue 当前选中的值 this.pickerValue * @param {Array} boundary 当前变量的限制值,决定禁用的边界值 * @return {Boolean} 是否禁用当前选项 */ columnDisabledRules: function columnDisabledRules(isStart, columns, cIndex, value, currentValue, boundary) { // 0年 1月 2日 3時 4分 // startPicker 除最小值外 还需要有一个时间限制, endPicker 时间选择后, startPicker 的 添加一个时间限制boundary min->boundary // endPicker 除最小值外 还需要有一个时间限制, startPicker 时间选择后, endPicker 的 添加一个时间限制boundary boundary->max var column = columns[cIndex]; // 根据当前选择年确认 ranges[0][0] minYear ranges[0][1] maxYear 以此类推 if (this.type === 'datetime') { var year = boundary[0]; var month = boundary[1]; var date = boundary[2]; var hour = boundary[3]; var minute = boundary[4]; if (column.type === 'year') { return isStart ? value > year : value < year; } if (column.type === 'month' && currentValue[0] === year) { return isStart ? value > month : value < month; } if (column.type === 'date' && currentValue[0] === year && currentValue[1] === month) { return isStart ? value > date : value < date; } if (column.type === 'hour' && currentValue[0] === year && currentValue[1] === month && currentValue[2] === date) { return isStart ? value > hour : value < hour; } if (column.type === 'minute' && currentValue[0] === year && currentValue[1] === month && currentValue[2] === date && currentValue[3] === hour) { return isStart ? value > minute : value < minute; } } else if (this.type === 'year-month') { var _year = boundary[0]; var _month = boundary[1]; if (column.type === 'year') { return isStart ? value > _year : value < _year; } if (column.type === 'month' && currentValue[0] === _year) { return isStart ? value > _month : value < _month; } } else if (this.type === 'date') { var _year2 = boundary[0]; var _month2 = boundary[1]; var _date = boundary[2]; if (column.type === 'year') { return isStart ? value > _year2 : value < _year2; } if (column.type === 'month' && currentValue[0] === _year2) { return isStart ? value > _month2 : value < _month2; } if (column.type === 'date' && currentValue[0] === _year2 && currentValue[1] === _month2) { return isStart ? value > _date : value < _date; } } else if (this.type === 'time') { var _hour = boundary[0]; var _minute = boundary[1]; if (column.type === 'hour') { return isStart ? value > _hour : value < _hour; } if (column.type === 'minute' && currentValue[0] === _hour) { return isStart ? value > _minute : value < _minute; } } return false; }, /** * 自定义列项筛选规则 * @param {Vue} pickerView pickerView 实例 * @param {Array} originColumns 选项数组 * @param {Array} ranges pickerView 范围数组 * @param {Date} value 当前 pickerView 实例传入值 */ customColumnFormatter: function customColumnFormatter(pickerView, originColumns, currentValue) { var _this4 = this; var start = this.innerValue; var end = this.end.innerValue; var boundary = pickerView.startSymbol ? pickerView.getPickerValue(end) : pickerView.getPickerValue(start); currentValue = pickerView.getPickerValue(currentValue); var mapColumns = function mapColumns(columns) { // 此时index是最外层知道当前的索引即可得到当前是哪个时间段 return columns.map(function (column, cIndex) { return column.values.map(function (value, index) { var disabled = _this4.columnDisabledRules(pickerView.startSymbol, columns, cIndex, value, currentValue, boundary); return { label: pickerView.formatter ? pickerView.formatter(column.type, Object(utils["f" /* padZero */])(value)) : Object(utils["f" /* padZero */])(value), value: value, disabled: disabled }; }); }); }; return mapColumns(originColumns); } } }); // CONCATENATED MODULE: ./packages/datetime-picker/src/main.vue?vue&type=script&lang=js& /* harmony default export */ var src_mainvue_type_script_lang_js_ = (mainvue_type_script_lang_js_); // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(0); // CONCATENATED MODULE: ./packages/datetime-picker/src/main.vue /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( src_mainvue_type_script_lang_js_, render, staticRenderFns, false, null, null, null ) /* hot reload */ if (false) { var api; } component.options.__file = "packages/datetime-picker/src/main.vue" /* harmony default export */ var main = (component.exports); // CONCATENATED MODULE: ./packages/datetime-picker/index.js main.install = function (Vue) { Vue.component(main.name, main); }; /* harmony default export */ var datetime_picker = __webpack_exports__["default"] = (main); /***/ }) /******/ });