@mdsfe/mds-ui 0.3.0-2 → 0.3.0-22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/CHANGELOG.md +1013 -0
  2. package/dist/_util/iconfont/index.js +7 -7
  3. package/dist/anchor.js +2 -2
  4. package/dist/bordershadow.js +2 -2
  5. package/dist/breadcrumb.js +2 -2
  6. package/dist/card.js +2 -2
  7. package/dist/carousel.js +18 -18
  8. package/dist/cascader.js +26 -26
  9. package/dist/cascaderpanel.js +30 -30
  10. package/dist/checkbox.js +6 -6
  11. package/dist/col.js +10 -10
  12. package/dist/collapse.js +2 -2
  13. package/dist/datepicker.js +991 -351
  14. package/dist/divider.js +2 -2
  15. package/dist/drawer.js +17 -17
  16. package/dist/dropdown.js +6 -6
  17. package/dist/empty.js +11 -11
  18. package/dist/font/iconfont.ba42e6f.woff +0 -0
  19. package/dist/font/{iconfont.36c3afe.ttf → iconfont.bf5c999.ttf} +0 -0
  20. package/dist/font/iconfont.d8e6666.woff2 +0 -0
  21. package/dist/form.js +8 -8
  22. package/dist/index.js +1 -1
  23. package/dist/input.js +207 -54
  24. package/dist/inputnumber.js +4 -4
  25. package/dist/list.js +2 -2
  26. package/dist/loading.js +2 -2
  27. package/dist/mds-ui.min.css +1 -1
  28. package/dist/mds-ui.min.js +2396 -1055
  29. package/dist/menu.js +23 -4
  30. package/dist/message.js +12 -12
  31. package/dist/modal.js +8 -8
  32. package/dist/notification.js +6 -6
  33. package/dist/pagination.js +17 -13
  34. package/dist/popconfirm.js +13 -13
  35. package/dist/popover.js +20 -20
  36. package/dist/radio.js +14 -14
  37. package/dist/rate.js +8 -8
  38. package/dist/row.js +10 -10
  39. package/dist/select.js +31 -31
  40. package/dist/slider.js +2 -2
  41. package/dist/slottable.js +19 -19
  42. package/dist/style/affix.css +382 -1
  43. package/dist/style/alert.css +382 -1
  44. package/dist/style/anchor.css +382 -1
  45. package/dist/style/avatar.css +382 -1
  46. package/dist/style/badge.css +382 -1
  47. package/dist/style/bordershadow.css +382 -1
  48. package/dist/style/breadcrumb.css +382 -1
  49. package/dist/style/button.css +382 -1
  50. package/dist/style/card.css +382 -1
  51. package/dist/style/carousel.css +382 -1
  52. package/dist/style/checkbox.css +382 -1
  53. package/dist/style/col.css +382 -1
  54. package/dist/style/collapse.css +382 -1
  55. package/dist/style/color.css +382 -1
  56. package/dist/style/datepicker.css +449 -1
  57. package/dist/style/divider.css +382 -1
  58. package/dist/style/drawer.css +382 -1
  59. package/dist/style/dropdown.css +382 -1
  60. package/dist/style/empty.css +382 -1
  61. package/dist/style/font.css +382 -1
  62. package/dist/style/form.css +382 -1
  63. package/dist/style/icon.css +382 -1
  64. package/dist/style/input.css +402 -7
  65. package/dist/style/inputnumber.css +382 -1
  66. package/dist/style/layout.css +382 -1
  67. package/dist/style/list.css +382 -1
  68. package/dist/style/loading.css +382 -1
  69. package/dist/style/menu.css +382 -1
  70. package/dist/style/modal.css +382 -1
  71. package/dist/style/notification.css +382 -1
  72. package/dist/style/pagination.css +402 -7
  73. package/dist/style/popconfirm.css +382 -1
  74. package/dist/style/popover.css +382 -1
  75. package/dist/style/progress.css +382 -1
  76. package/dist/style/radio.css +382 -1
  77. package/dist/style/rate.css +382 -1
  78. package/dist/style/row.css +382 -1
  79. package/dist/style/select.css +382 -1
  80. package/dist/style/slider.css +382 -1
  81. package/dist/style/slottable.css +382 -1
  82. package/dist/style/steps.css +382 -1
  83. package/dist/style/switch.css +382 -1
  84. package/dist/style/table.css +382 -1
  85. package/dist/style/tabs.css +382 -1
  86. package/dist/style/tag.css +382 -1
  87. package/dist/style/text.css +382 -1
  88. package/dist/style/timeline.css +382 -1
  89. package/dist/style/timepicker.css +382 -1
  90. package/dist/style/tooltip.css +382 -1
  91. package/dist/style/transfer.css +105 -0
  92. package/dist/style/tree.css +382 -1
  93. package/dist/style/typography.css +382 -1
  94. package/dist/style/upload.css +382 -1
  95. package/dist/switch.js +4 -4
  96. package/dist/table.js +27 -27
  97. package/dist/text.js +207 -54
  98. package/dist/timeline.js +2 -2
  99. package/dist/timepicker.js +32 -32
  100. package/dist/tooltip.js +19 -19
  101. package/dist/transfer.js +976 -22
  102. package/dist/tree.js +26 -26
  103. package/dist/typography.js +2 -2
  104. package/dist/upload.js +11 -11
  105. package/package.json +2 -1
  106. package/dist/font/iconfont.50be7d0.woff2 +0 -0
  107. package/dist/font/iconfont.f586f3d.woff +0 -0
@@ -1,13 +1,13 @@
1
1
  (function webpackUniversalModuleDefinition(root, factory) {
2
2
  if(typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory(require("vue"), require("./_util/dateUtil"), require("./icon"), require("./_util/proptype"), require("./_mixin/locale"), require("./_mixin/emitter"), require("./button"), require("./input"), require("./_util/util"), require("./_util/clickoutside"), require("./_util/merge"), require("./_util/repeatClick"), require("./_util/dom"));
3
+ module.exports = factory(require("vue"), require("./_util/dateUtil"), require("./icon"), require("./_util/proptype"), require("./_mixin/locale"), require("./button"), require("./_mixin/emitter"), require("./input"), require("./_util/util"), require("./_util/clickoutside"), require("./_util/merge"), require("./_util/repeatClick"), require("./_util/dom"));
4
4
  else if(typeof define === 'function' && define.amd)
5
- define(["vue", "./_util/dateUtil", "./icon", "./_util/proptype", "./_mixin/locale", "./_mixin/emitter", "./button", "./input", "./_util/util", "./_util/clickoutside", "./_util/merge", "./_util/repeatClick", "./_util/dom"], factory);
5
+ define(["vue", "./_util/dateUtil", "./icon", "./_util/proptype", "./_mixin/locale", "./button", "./_mixin/emitter", "./input", "./_util/util", "./_util/clickoutside", "./_util/merge", "./_util/repeatClick", "./_util/dom"], factory);
6
6
  else {
7
- var a = typeof exports === 'object' ? factory(require("vue"), require("./_util/dateUtil"), require("./icon"), require("./_util/proptype"), require("./_mixin/locale"), require("./_mixin/emitter"), require("./button"), require("./input"), require("./_util/util"), require("./_util/clickoutside"), require("./_util/merge"), require("./_util/repeatClick"), require("./_util/dom")) : factory(root["Vue"], root["./_util/dateUtil"], root["./icon"], root["./_util/proptype"], root["./_mixin/locale"], root["./_mixin/emitter"], root["./button"], root["./input"], root["./_util/util"], root["./_util/clickoutside"], root["./_util/merge"], root["./_util/repeatClick"], root["./_util/dom"]);
7
+ var a = typeof exports === 'object' ? factory(require("vue"), require("./_util/dateUtil"), require("./icon"), require("./_util/proptype"), require("./_mixin/locale"), require("./button"), require("./_mixin/emitter"), require("./input"), require("./_util/util"), require("./_util/clickoutside"), require("./_util/merge"), require("./_util/repeatClick"), require("./_util/dom")) : factory(root["Vue"], root["./_util/dateUtil"], root["./icon"], root["./_util/proptype"], root["./_mixin/locale"], root["./button"], root["./_mixin/emitter"], root["./input"], root["./_util/util"], root["./_util/clickoutside"], root["./_util/merge"], root["./_util/repeatClick"], root["./_util/dom"]);
8
8
  for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
9
9
  }
10
- })(window, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__4__, __WEBPACK_EXTERNAL_MODULE__7__, __WEBPACK_EXTERNAL_MODULE__8__, __WEBPACK_EXTERNAL_MODULE__10__, __WEBPACK_EXTERNAL_MODULE__13__, __WEBPACK_EXTERNAL_MODULE__14__, __WEBPACK_EXTERNAL_MODULE__17__, __WEBPACK_EXTERNAL_MODULE__21__, __WEBPACK_EXTERNAL_MODULE__32__, __WEBPACK_EXTERNAL_MODULE__48__, __WEBPACK_EXTERNAL_MODULE__67__, __WEBPACK_EXTERNAL_MODULE__68__) {
10
+ })(window, function(__WEBPACK_EXTERNAL_MODULE__2__, __WEBPACK_EXTERNAL_MODULE__4__, __WEBPACK_EXTERNAL_MODULE__7__, __WEBPACK_EXTERNAL_MODULE__8__, __WEBPACK_EXTERNAL_MODULE__9__, __WEBPACK_EXTERNAL_MODULE__13__, __WEBPACK_EXTERNAL_MODULE__14__, __WEBPACK_EXTERNAL_MODULE__17__, __WEBPACK_EXTERNAL_MODULE__22__, __WEBPACK_EXTERNAL_MODULE__33__, __WEBPACK_EXTERNAL_MODULE__48__, __WEBPACK_EXTERNAL_MODULE__67__, __WEBPACK_EXTERNAL_MODULE__68__) {
11
11
  return /******/ (function(modules) { // webpackBootstrap
12
12
  /******/ // The module cache
13
13
  /******/ var installedModules = {};
@@ -220,7 +220,7 @@ function normalizeComponent (
220
220
  /* unused harmony export isInContainer */
221
221
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "e", function() { return merge; });
222
222
  /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return getScrollBarWidth; });
223
- /* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
223
+ /* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
224
224
  /* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);
225
225
  /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
226
226
  /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_1__);
@@ -495,7 +495,7 @@ function getScrollBarWidth() {
495
495
  /***/ 10:
496
496
  /***/ (function(module, exports) {
497
497
 
498
- module.exports = __WEBPACK_EXTERNAL_MODULE__10__;
498
+ module.exports = require("babel-runtime/helpers/typeof");
499
499
 
500
500
  /***/ }),
501
501
 
@@ -996,7 +996,7 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__17__;
996
996
  var popup_main = __webpack_require__(15);
997
997
 
998
998
  // EXTERNAL MODULE: external "babel-runtime/core-js/object/get-own-property-descriptor"
999
- var get_own_property_descriptor_ = __webpack_require__(19);
999
+ var get_own_property_descriptor_ = __webpack_require__(20);
1000
1000
  var get_own_property_descriptor_default = /*#__PURE__*/__webpack_require__.n(get_own_property_descriptor_);
1001
1001
 
1002
1002
  // EXTERNAL MODULE: external "babel-runtime/core-js/object/keys"
@@ -2462,7 +2462,7 @@ var stop = function stop(e) {
2462
2462
  /***/ 19:
2463
2463
  /***/ (function(module, exports) {
2464
2464
 
2465
- module.exports = require("babel-runtime/core-js/object/get-own-property-descriptor");
2465
+ module.exports = require("babel-runtime/helpers/toConsumableArray");
2466
2466
 
2467
2467
  /***/ }),
2468
2468
 
@@ -2473,14 +2473,21 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__2__;
2473
2473
 
2474
2474
  /***/ }),
2475
2475
 
2476
- /***/ 21:
2476
+ /***/ 20:
2477
2477
  /***/ (function(module, exports) {
2478
2478
 
2479
- module.exports = __WEBPACK_EXTERNAL_MODULE__21__;
2479
+ module.exports = require("babel-runtime/core-js/object/get-own-property-descriptor");
2480
2480
 
2481
2481
  /***/ }),
2482
2482
 
2483
2483
  /***/ 22:
2484
+ /***/ (function(module, exports) {
2485
+
2486
+ module.exports = __WEBPACK_EXTERNAL_MODULE__22__;
2487
+
2488
+ /***/ }),
2489
+
2490
+ /***/ 23:
2484
2491
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2485
2492
 
2486
2493
  "use strict";
@@ -2495,7 +2502,7 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__21__;
2495
2502
  /* unused harmony export isScroll */
2496
2503
  /* unused harmony export getScrollContainer */
2497
2504
  /* unused harmony export isInContainer */
2498
- /* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9);
2505
+ /* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
2499
2506
  /* harmony import */ var babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_typeof__WEBPACK_IMPORTED_MODULE_0__);
2500
2507
  /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);
2501
2508
  /* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(vue__WEBPACK_IMPORTED_MODULE_1__);
@@ -2725,13 +2732,6 @@ var isInContainer = function isInContainer(el, container) {
2725
2732
 
2726
2733
  /***/ }),
2727
2734
 
2728
- /***/ 25:
2729
- /***/ (function(module, exports) {
2730
-
2731
- module.exports = require("babel-runtime/helpers/toConsumableArray");
2732
-
2733
- /***/ }),
2734
-
2735
2735
  /***/ 27:
2736
2736
  /***/ (function(module, __webpack_exports__, __webpack_require__) {
2737
2737
 
@@ -2825,10 +2825,10 @@ component.options.__file = "components/scroll-bar/scroll-bar.vue"
2825
2825
 
2826
2826
  /***/ }),
2827
2827
 
2828
- /***/ 32:
2828
+ /***/ 33:
2829
2829
  /***/ (function(module, exports) {
2830
2830
 
2831
- module.exports = __WEBPACK_EXTERNAL_MODULE__32__;
2831
+ module.exports = __WEBPACK_EXTERNAL_MODULE__33__;
2832
2832
 
2833
2833
  /***/ }),
2834
2834
 
@@ -3682,7 +3682,7 @@ render._withStripped = true
3682
3682
  // CONCATENATED MODULE: ./components/datepicker/picker/picker.vue?vue&type=template&id=311c2352&
3683
3683
 
3684
3684
  // EXTERNAL MODULE: external "babel-runtime/helpers/toConsumableArray"
3685
- var toConsumableArray_ = __webpack_require__(25);
3685
+ var toConsumableArray_ = __webpack_require__(19);
3686
3686
  var toConsumableArray_default = /*#__PURE__*/__webpack_require__.n(toConsumableArray_);
3687
3687
 
3688
3688
  // EXTERNAL MODULE: external "babel-runtime/core-js/object/keys"
@@ -3694,7 +3694,7 @@ var external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_ = __webpack_require__(
3694
3694
  var external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default = /*#__PURE__*/__webpack_require__.n(external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_);
3695
3695
 
3696
3696
  // EXTERNAL MODULE: external "./_util/clickoutside"
3697
- var clickoutside_ = __webpack_require__(32);
3697
+ var clickoutside_ = __webpack_require__(33);
3698
3698
  var clickoutside_default = /*#__PURE__*/__webpack_require__.n(clickoutside_);
3699
3699
 
3700
3700
  // EXTERNAL MODULE: external "./_util/dateUtil"
@@ -3704,7 +3704,7 @@ var dateUtil_ = __webpack_require__(4);
3704
3704
  var vue_popper = __webpack_require__(18);
3705
3705
 
3706
3706
  // EXTERNAL MODULE: external "./_mixin/emitter"
3707
- var emitter_ = __webpack_require__(13);
3707
+ var emitter_ = __webpack_require__(14);
3708
3708
  var emitter_default = /*#__PURE__*/__webpack_require__.n(emitter_);
3709
3709
 
3710
3710
  // EXTERNAL MODULE: external "./input"
@@ -3720,7 +3720,7 @@ var merge_ = __webpack_require__(48);
3720
3720
  var merge_default = /*#__PURE__*/__webpack_require__.n(merge_);
3721
3721
 
3722
3722
  // EXTERNAL MODULE: external "./_mixin/locale"
3723
- var locale_ = __webpack_require__(10);
3723
+ var locale_ = __webpack_require__(9);
3724
3724
  var locale_default = /*#__PURE__*/__webpack_require__.n(locale_);
3725
3725
 
3726
3726
  // EXTERNAL MODULE: external "./_util/proptype"
@@ -3856,7 +3856,7 @@ var DEFAULT_FORMATS = {
3856
3856
  datetimerangeflat: 'yyyy-MM-dd HH:mm:ss',
3857
3857
  year: 'yyyy'
3858
3858
  };
3859
- var HAVE_TRIGGER_TYPES = ['date', 'datetime', 'time', 'time-select', 'week', 'month', 'year', 'daterange', 'monthrange', 'timerange', 'datetimerange', 'dates', 'datetimerangeflat'];
3859
+ var HAVE_TRIGGER_TYPES = ['date', 'datetime', 'time', 'time-select', 'week', 'month', 'year', 'daterange', 'monthrange', 'timerange', 'datetimerange', 'dates', 'datetimerangeflat', 'quarter'];
3860
3860
  var pickervue_type_script_lang_js_DATE_FORMATTER = function DATE_FORMATTER(value, format) {
3861
3861
  if (format === 'timestamp') return value.getTime();
3862
3862
  return Object(dateUtil_["formatDate"])(value, format);
@@ -3984,6 +3984,31 @@ var TYPE_VALUE_RESOLVER_MAP = {
3984
3984
  return date instanceof Date ? date : pickervue_type_script_lang_js_DATE_PARSER(date, format);
3985
3985
  });
3986
3986
  }
3987
+ },
3988
+ quarter: {
3989
+ formatter: function formatter(value, format) {
3990
+ // value 是 Date
3991
+ if (!value) return '';
3992
+ var year = value.getFullYear();
3993
+ var month = value.getMonth();
3994
+ var quarter = Math.floor(month / 3) + 1;
3995
+ // 支持自定义格式,否则默认 'yyyy-Qn'
3996
+ if (format) {
3997
+ return format.replace('yyyy', year).replace('Q', quarter);
3998
+ }
3999
+ return year + '-Q' + quarter;
4000
+ },
4001
+ parser: function parser(text, format) {
4002
+ // 支持 'yyyy-Qn' 格式
4003
+ if (!text) return null;
4004
+ var match = text.match(/(\\d{4})-?Q(\\d)/);
4005
+ if (match) {
4006
+ var year = parseInt(match[1]);
4007
+ var quarter = parseInt(match[2]);
4008
+ return new Date(year, (quarter - 1) * 3, 1);
4009
+ }
4010
+ return new Date(text);
4011
+ }
3987
4012
  }
3988
4013
  };
3989
4014
  var PLACEMENT_MAP = {
@@ -4118,6 +4143,14 @@ var pickervue_type_script_lang_js_validator = function validator(val) {
4118
4143
  validateEvent: {
4119
4144
  type: Boolean,
4120
4145
  default: true
4146
+ },
4147
+ pickerType: {
4148
+ type: String,
4149
+ default: 'date'
4150
+ },
4151
+ appendToBody: {
4152
+ type: Boolean,
4153
+ default: true // 默认插入到 body
4121
4154
  }
4122
4155
  },
4123
4156
 
@@ -4232,6 +4265,8 @@ var pickervue_type_script_lang_js_validator = function validator(val) {
4232
4265
  return 'year';
4233
4266
  } else if (this.type === 'dates') {
4234
4267
  return 'dates';
4268
+ } else if (this.type === 'quarter') {
4269
+ return 'quarter';
4235
4270
  }
4236
4271
 
4237
4272
  return 'day';
@@ -4446,8 +4481,7 @@ var pickervue_type_script_lang_js_validator = function validator(val) {
4446
4481
  this.userInput = initialValue === '' ? null : initialValue;
4447
4482
  },
4448
4483
  handleFocus: function handleFocus() {
4449
- var type = this.type;
4450
- if (HAVE_TRIGGER_TYPES.indexOf(type) !== -1 && !this.pickerVisible) {
4484
+ if (HAVE_TRIGGER_TYPES.indexOf(this.type) !== -1 && !this.pickerVisible) {
4451
4485
  this.pickerVisible = true;
4452
4486
  }
4453
4487
  this.$emit('focus', this);
@@ -4514,35 +4548,72 @@ var pickervue_type_script_lang_js_validator = function validator(val) {
4514
4548
  }
4515
4549
  this.$emit('focus', this);
4516
4550
  },
4517
- hidePicker: function hidePicker() {
4518
- if (this.picker) {
4519
- this.picker.resetView && this.picker.resetView();
4520
- this.pickerVisible = this.picker.visible = false;
4521
- this.destroyPopper();
4522
- }
4523
- },
4551
+
4552
+
4553
+ // 修复 showPicker 方法
4524
4554
  showPicker: function showPicker() {
4525
4555
  var _this2 = this;
4526
4556
 
4527
4557
  if (this.$isServer) return;
4528
- if (!this.picker) {
4558
+
4559
+ // 如果面板已存在,先重置状态
4560
+ if (this.picker) {
4561
+ this.picker.resetView && this.picker.resetView();
4562
+ this.picker.visible = false;
4563
+ } else {
4564
+ // 面板不存在时才创建
4529
4565
  this.mountPicker();
4530
4566
  }
4567
+
4568
+ // 设置面板可见
4531
4569
  this.pickerVisible = this.picker.visible = true;
4532
4570
 
4571
+ // 确保面板在正确的位置
4572
+ this.ensurePanelPosition();
4573
+
4574
+ // 更新 Popper 定位
4533
4575
  this.updatePopper();
4534
4576
 
4577
+ // 重置面板状态
4535
4578
  this.picker.value = this.parsedValue;
4536
4579
  this.picker.resetView && this.picker.resetView();
4537
4580
 
4538
4581
  this.$nextTick(function () {
4539
4582
  _this2.picker.adjustSpinners && _this2.picker.adjustSpinners();
4583
+ // 再次确保位置正确并更新定位
4584
+ _this2.ensurePanelPosition();
4585
+ _this2.updatePopper();
4540
4586
  });
4541
4587
  },
4588
+
4589
+
4590
+ // 修复 mountPicker 方法
4542
4591
  mountPicker: function mountPicker() {
4543
4592
  var _this3 = this;
4544
4593
 
4545
- this.picker = new external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a(this.panel).$mount();
4594
+ var Panel = external_root_Vue_commonjs_vue_commonjs2_vue_amd_vue_default.a.extend(this.panel);
4595
+ this.picker = new Panel({
4596
+ propsData: {
4597
+ pickerType: this.type,
4598
+ referenceElm: this.reference,
4599
+ popperClass: this.popperClass,
4600
+ appendToBody: this.appendToBody, // 使用组件的 appendToBody 配置
4601
+ placement: this.placement
4602
+ }
4603
+ }).$mount();
4604
+
4605
+ // 根据配置决定插入位置
4606
+ if (this.type !== 'quarter') {
4607
+ if (this.appendToBody !== false) {
4608
+ // 插入到 body 下
4609
+ document.body.appendChild(this.picker.$el);
4610
+ } else {
4611
+ // 插入到当前元素下
4612
+ this.$el.appendChild(this.picker.$el);
4613
+ }
4614
+ }
4615
+
4616
+ // 设置面板属性
4546
4617
  this.picker.defaultValue = this.defaultValue;
4547
4618
  this.picker.defaultTime = this.defaultTime;
4548
4619
  this.picker.popperClass = this.popperClass;
@@ -4554,56 +4625,41 @@ var pickervue_type_script_lang_js_validator = function validator(val) {
4554
4625
  this.picker.arrowControl = this.arrowControl || this.timeArrowControl || false;
4555
4626
  this.picker.listenScroll = this.listenScroll;
4556
4627
  this.picker.step = this.step;
4557
- this.picker.pickerType = this.type;
4628
+
4629
+ // 监听格式变化
4558
4630
  this.$watch('format', function (format) {
4559
4631
  _this3.picker.format = format;
4560
4632
  });
4561
4633
 
4562
- var updateOptions = function updateOptions() {
4563
- var options = _this3.pickerOptions;
4564
-
4565
- if (options && options.selectableRange) {
4566
- var ranges = options.selectableRange;
4567
- var parser = TYPE_VALUE_RESOLVER_MAP.datetimerange.parser;
4568
- var format = DEFAULT_FORMATS.timerange;
4569
-
4570
- ranges = Array.isArray(ranges) ? ranges : [ranges];
4571
- _this3.picker.selectableRange = ranges.map(function (range) {
4572
- return parser(range, format, _this3.rangeSeparator);
4573
- });
4574
- }
4575
-
4576
- for (var option in options) {
4577
- if (options.hasOwnProperty(option) &&
4578
- // 忽略 time-picker 的该配置项
4579
- option !== 'selectableRange') {
4580
- _this3.picker[option] = options[option];
4581
- }
4582
- }
4583
-
4584
- // main format must prevail over undocumented pickerOptions.format
4585
- if (_this3.format) {
4586
- _this3.picker.format = _this3.format;
4587
- }
4588
- };
4589
- updateOptions();
4590
- this.unwatchPickerOptions = this.$watch('pickerOptions', function () {
4591
- return updateOptions();
4592
- }, { deep: true });
4593
- this.$el.appendChild(this.picker.$el);
4594
- this.picker.resetView && this.picker.resetView();
4634
+ // 更新选项
4635
+ this.updatePickerOptions();
4595
4636
 
4637
+ // 设置事件监听
4596
4638
  this.picker.$on('dodestroy', this.doDestroy);
4639
+
4640
+ // 修复 pick 事件处理
4597
4641
  this.picker.$on('pick', function () {
4598
4642
  var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
4599
4643
  var visible = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
4600
4644
 
4601
4645
  _this3.userInput = null;
4602
- _this3.pickerVisible = _this3.picker.visible = visible;
4646
+
4647
+ if (visible === false) {
4648
+ // 隐藏面板但不销毁
4649
+ _this3.pickerVisible = false;
4650
+ _this3.picker.visible = false;
4651
+ _this3.hidePicker();
4652
+ } else {
4653
+ // 保持面板可见
4654
+ _this3.pickerVisible = true;
4655
+ _this3.picker.visible = true;
4656
+ }
4657
+
4603
4658
  _this3.emitInput(date);
4604
4659
  _this3.picker.resetView && _this3.picker.resetView();
4605
4660
  });
4606
4661
 
4662
+ // 其他事件监听保持不变
4607
4663
  this.picker.$on('select-range', function (start, end, pos) {
4608
4664
  if (_this3.refInput.length === 0) return;
4609
4665
  if (!pos || pos === 'min') {
@@ -4615,14 +4671,100 @@ var pickervue_type_script_lang_js_validator = function validator(val) {
4615
4671
  }
4616
4672
  });
4617
4673
  },
4674
+
4675
+
4676
+ // 新增方法:更新面板选项
4677
+ updatePickerOptions: function updatePickerOptions() {
4678
+ var _this4 = this;
4679
+
4680
+ var options = this.pickerOptions;
4681
+
4682
+ if (options && options.selectableRange) {
4683
+ var ranges = options.selectableRange;
4684
+ var parser = TYPE_VALUE_RESOLVER_MAP.datetimerange.parser;
4685
+ var format = DEFAULT_FORMATS.timerange;
4686
+
4687
+ ranges = Array.isArray(ranges) ? ranges : [ranges];
4688
+ this.picker.selectableRange = ranges.map(function (range) {
4689
+ return parser(range, format, _this4.rangeSeparator);
4690
+ });
4691
+ }
4692
+
4693
+ for (var option in options) {
4694
+ if (options.hasOwnProperty(option) && option !== 'selectableRange') {
4695
+ this.picker[option] = options[option];
4696
+ }
4697
+ }
4698
+
4699
+ // 主格式优先
4700
+ if (this.format) {
4701
+ this.picker.format = this.format;
4702
+ }
4703
+ },
4704
+
4705
+
4706
+ // 修复 hidePicker 方法
4707
+ hidePicker: function hidePicker() {
4708
+ if (this.picker) {
4709
+ this.picker.resetView && this.picker.resetView();
4710
+ this.pickerVisible = this.picker.visible = false;
4711
+
4712
+ // 不要立即销毁面板,只是隐藏
4713
+ // this.destroyPopper()
4714
+
4715
+ // 确保面板位置正确
4716
+ this.ensurePanelPosition();
4717
+ }
4718
+ },
4719
+
4720
+
4721
+ // 确保面板位置正确的方法
4722
+ ensurePanelPosition: function ensurePanelPosition() {
4723
+ var _this5 = this;
4724
+
4725
+ if (!this.picker || !this.picker.$el) return;
4726
+
4727
+ var panelEl = this.picker.$el;
4728
+ var currentParent = panelEl.parentNode;
4729
+
4730
+ // 检查面板是否在正确的位置
4731
+ if (this.appendToBody !== false && currentParent !== document.body) {
4732
+ // 面板不在 body 下,需要移动到 body
4733
+ if (currentParent) {
4734
+ currentParent.removeChild(panelEl);
4735
+ }
4736
+ document.body.appendChild(panelEl);
4737
+
4738
+ // 重新计算定位
4739
+ this.$nextTick(function () {
4740
+ _this5.updatePopper();
4741
+ });
4742
+ } else if (this.appendToBody === false && currentParent !== this.$el) {
4743
+ // 面板不在当前元素下,需要移动
4744
+ if (currentParent) {
4745
+ currentParent.removeChild(panelEl);
4746
+ }
4747
+ this.$el.appendChild(panelEl);
4748
+ }
4749
+ },
4750
+
4751
+
4752
+ // 修复 unmountPicker 方法
4618
4753
  unmountPicker: function unmountPicker() {
4619
4754
  if (this.picker) {
4755
+ // 确保面板从正确的父元素中移除
4756
+ if (this.picker.$el && this.picker.$el.parentNode) {
4757
+ this.picker.$el.parentNode.removeChild(this.picker.$el);
4758
+ }
4759
+
4620
4760
  this.picker.$destroy();
4621
4761
  this.picker.$off();
4762
+
4622
4763
  if (typeof this.unwatchPickerOptions === 'function') {
4623
4764
  this.unwatchPickerOptions();
4624
4765
  }
4625
- if (this.picker.$el.parentNode) this.picker.$el.parentNode.removeChild(this.picker.$el);
4766
+
4767
+ this.picker = null;
4626
4768
  }
4627
4769
  },
4628
4770
  emitChange: function emitChange(val) {
@@ -4649,7 +4791,32 @@ var pickervue_type_script_lang_js_validator = function validator(val) {
4649
4791
  } else {
4650
4792
  return true;
4651
4793
  }
4794
+ },
4795
+ selectQuarter: function selectQuarter(quarter) {
4796
+ var selectedDate = new Date(this.currentYear, quarter.startMonth, 1);
4797
+ this.$emit('pick', selectedDate, false);
4798
+ },
4799
+ prevYear: function prevYear() {
4800
+ this.currentYear--;
4801
+ this.$emit('pick', new Date(this.currentYear, 0, 1));
4802
+ },
4803
+ nextYear: function nextYear() {
4804
+ this.currentYear++;
4805
+ this.$emit('pick', new Date(this.currentYear, 0, 1));
4806
+ },
4807
+ isSelected: function isSelected(quarter) {
4808
+ if (!this.value || !(this.value instanceof Date) || isNaN(this.value)) {
4809
+ return false;
4810
+ }
4811
+ var selectedYear = this.value.getFullYear();
4812
+ var selectedMonth = this.value.getMonth();
4813
+ return selectedYear === this.currentYear && selectedMonth >= quarter.startMonth && selectedMonth <= quarter.endMonth;
4652
4814
  }
4815
+ },
4816
+
4817
+ // 生命周期钩子
4818
+ beforeDestroy: function beforeDestroy() {
4819
+ this.unmountPicker();
4653
4820
  }
4654
4821
  });
4655
4822
  // CONCATENATED MODULE: ./components/datepicker/picker/picker.vue?vue&type=script&lang=js&
@@ -4725,100 +4892,130 @@ var datevue_type_template_id_1a0bc492_render = function () {
4725
4892
  class: this.prefixCls + "-picker-panel-header",
4726
4893
  },
4727
4894
  [
4728
- _c("i", {
4729
- staticClass: "mdsicon mdsicon-line-caret-left-double",
4730
- class: [
4731
- _vm.prefixCls + "-picker-panel-header-base-icon",
4732
- _vm.prefixCls + "-prev-year",
4733
- _vm.prefixCls + "-other-icon",
4734
- _vm.prefixCls + "-picker-panel-header-base-left",
4735
- ],
4736
- attrs: { "aria-label": _vm.t("mds.datepicker.prevYear") },
4737
- on: { click: _vm.prevYear },
4738
- }),
4739
- _c("i", {
4740
- directives: [
4741
- {
4742
- name: "show",
4743
- rawName: "v-show",
4744
- value: _vm.currentView === "date",
4745
- expression: "currentView === 'date'",
4746
- },
4747
- ],
4748
- staticClass: "mdsicon mdsicon-line-caret-left",
4749
- class: [
4750
- _vm.prefixCls + "-picker-panel-header-base-icon",
4751
- _vm.prefixCls + "-prev-month",
4752
- _vm.prefixCls + "-other-icon",
4753
- _vm.prefixCls + "-picker-panel-header-base-left",
4754
- ],
4755
- attrs: { "aria-label": _vm.t("mds.datepicker.prevMonth") },
4756
- on: { click: _vm.prevMonth },
4757
- }),
4758
- _c(
4759
- "span",
4760
- {
4761
- class: _vm.prefixCls + "-picker-panel-header-label",
4762
- attrs: { role: "button" },
4763
- on: { click: _vm.showYearPicker },
4764
- },
4765
- [_vm._v(_vm._s(_vm.yearLabel))]
4766
- ),
4767
- _c(
4768
- "span",
4769
- {
4770
- directives: [
4771
- {
4772
- name: "show",
4773
- rawName: "v-show",
4774
- value: _vm.currentView === "date",
4775
- expression: "currentView === 'date'",
4776
- },
4777
- ],
4778
- class: [
4779
- _vm.prefixCls + "-picker-panel-header-label",
4780
- { active: _vm.currentView === "month" },
4895
+ _vm.pickerType === "quarter"
4896
+ ? [
4897
+ _c(
4898
+ "span",
4899
+ { staticClass: "mds-date-picker-quarter-header" },
4900
+ [
4901
+ _vm._v(
4902
+ "\n " +
4903
+ _vm._s(_vm.year) +
4904
+ " " +
4905
+ _vm._s(_vm.t("mds.datepicker.year")) +
4906
+ "\n "
4907
+ ),
4908
+ ]
4909
+ ),
4910
+ ]
4911
+ : [
4912
+ _c("i", {
4913
+ staticClass: "mdsicon mdsicon-line-caret-left-double",
4914
+ class: [
4915
+ _vm.prefixCls + "-picker-panel-header-base-icon",
4916
+ _vm.prefixCls + "-prev-year",
4917
+ _vm.prefixCls + "-other-icon",
4918
+ _vm.prefixCls + "-picker-panel-header-base-left",
4919
+ ],
4920
+ attrs: {
4921
+ "aria-label": _vm.t("mds.datepicker.prevYear"),
4922
+ },
4923
+ on: { click: _vm.prevYear },
4924
+ }),
4925
+ _c("i", {
4926
+ directives: [
4927
+ {
4928
+ name: "show",
4929
+ rawName: "v-show",
4930
+ value: _vm.currentView === "date",
4931
+ expression: "currentView === 'date'",
4932
+ },
4933
+ ],
4934
+ staticClass: "mdsicon mdsicon-line-caret-left",
4935
+ class: [
4936
+ _vm.prefixCls + "-picker-panel-header-base-icon",
4937
+ _vm.prefixCls + "-prev-month",
4938
+ _vm.prefixCls + "-other-icon",
4939
+ _vm.prefixCls + "-picker-panel-header-base-left",
4940
+ ],
4941
+ attrs: {
4942
+ "aria-label": _vm.t("mds.datepicker.prevMonth"),
4943
+ },
4944
+ on: { click: _vm.prevMonth },
4945
+ }),
4946
+ _c(
4947
+ "span",
4948
+ {
4949
+ class: _vm.prefixCls + "-picker-panel-header-label",
4950
+ attrs: { role: "button" },
4951
+ on: { click: _vm.showYearPicker },
4952
+ },
4953
+ [_vm._v(_vm._s(_vm.yearLabel))]
4954
+ ),
4955
+ _c(
4956
+ "span",
4957
+ {
4958
+ directives: [
4959
+ {
4960
+ name: "show",
4961
+ rawName: "v-show",
4962
+ value: _vm.currentView === "date",
4963
+ expression: "currentView === 'date'",
4964
+ },
4965
+ ],
4966
+ class: [
4967
+ _vm.prefixCls + "-picker-panel-header-label",
4968
+ { active: _vm.currentView === "month" },
4969
+ ],
4970
+ attrs: { role: "button" },
4971
+ on: { click: _vm.showMonthPicker },
4972
+ },
4973
+ [
4974
+ _vm._v(
4975
+ _vm._s(
4976
+ _vm.t("mds.datepicker.month" + (_vm.month + 1))
4977
+ )
4978
+ ),
4979
+ ]
4980
+ ),
4981
+ _c("i", {
4982
+ staticClass:
4983
+ "mdsicon mdsicon-line-caret-right-double",
4984
+ class: [
4985
+ _vm.prefixCls + "-picker-panel-header-base-icon",
4986
+ _vm.prefixCls + "-next-year",
4987
+ _vm.prefixCls + "-other-icon",
4988
+ _vm.prefixCls + "-picker-panel-header-base-right",
4989
+ ],
4990
+ attrs: {
4991
+ "aria-label": _vm.t("mds.datepicker.nextYear"),
4992
+ },
4993
+ on: { click: _vm.nextYear },
4994
+ }),
4995
+ _c("i", {
4996
+ directives: [
4997
+ {
4998
+ name: "show",
4999
+ rawName: "v-show",
5000
+ value: _vm.currentView === "date",
5001
+ expression: "currentView === 'date'",
5002
+ },
5003
+ ],
5004
+ staticClass: "mdsicon mdsicon-line-caret-right",
5005
+ class: [
5006
+ _vm.prefixCls + "-picker-panel-header-base-icon",
5007
+ _vm.prefixCls + "-next-month",
5008
+ _vm.prefixCls + "-other-icon",
5009
+ _vm.prefixCls + "-picker-panel-header-base-right",
5010
+ ],
5011
+ attrs: {
5012
+ "aria-label": _vm.t("mds.datepicker.nextMonth"),
5013
+ },
5014
+ on: { click: _vm.nextMonth },
5015
+ }),
4781
5016
  ],
4782
- attrs: { role: "button" },
4783
- on: { click: _vm.showMonthPicker },
4784
- },
4785
- [
4786
- _vm._v(
4787
- _vm._s(_vm.t("mds.datepicker.month" + (_vm.month + 1)))
4788
- ),
4789
- ]
4790
- ),
4791
- _c("i", {
4792
- staticClass: "mdsicon mdsicon-line-caret-right-double",
4793
- class: [
4794
- _vm.prefixCls + "-picker-panel-header-base-icon",
4795
- _vm.prefixCls + "-next-year",
4796
- _vm.prefixCls + "-other-icon",
4797
- _vm.prefixCls + "-picker-panel-header-base-right",
4798
- ],
4799
- attrs: { "aria-label": _vm.t("mds.datepicker.nextYear") },
4800
- on: { click: _vm.nextYear },
4801
- }),
4802
- _c("i", {
4803
- directives: [
4804
- {
4805
- name: "show",
4806
- rawName: "v-show",
4807
- value: _vm.currentView === "date",
4808
- expression: "currentView === 'date'",
4809
- },
4810
- ],
4811
- staticClass: "mdsicon mdsicon-line-caret-right",
4812
- class: [
4813
- _vm.prefixCls + "-picker-panel-header-base-icon",
4814
- _vm.prefixCls + "-next-month",
4815
- _vm.prefixCls + "-other-icon",
4816
- _vm.prefixCls + "-picker-panel-header-base-right",
4817
- ],
4818
- attrs: { "aria-label": _vm.t("mds.datepicker.nextMonth") },
4819
- on: { click: _vm.nextMonth },
4820
- }),
4821
- ]
5017
+ ],
5018
+ 2
4822
5019
  ),
4823
5020
  _vm.timePickerVisible
4824
5021
  ? _c(
@@ -4843,98 +5040,105 @@ var datevue_type_template_id_1a0bc492_render = function () {
4843
5040
  "div",
4844
5041
  { class: this.prefixCls + "-picker-panel-content" },
4845
5042
  [
4846
- _c("date-table", {
4847
- directives: [
4848
- {
4849
- name: "show",
4850
- rawName: "v-show",
4851
- value:
4852
- _vm.currentView === "date" &&
4853
- _vm.timePickerVisible === false,
4854
- expression:
4855
- "currentView === 'date' && timePickerVisible === false",
4856
- },
4857
- ],
4858
- attrs: {
4859
- "selection-mode": _vm.selectionMode,
4860
- "first-day-of-week": _vm.firstDayOfWeek,
4861
- value: _vm.value,
4862
- "default-value": _vm.defaultValue
4863
- ? new Date(_vm.defaultValue)
4864
- : null,
4865
- date: _vm.date,
4866
- "cell-class-name": _vm.cellClassName,
4867
- "disabled-date": _vm.disabledDate,
4868
- },
4869
- on: { pick: _vm.handleDatePick },
4870
- }),
4871
- _c("year-table", {
4872
- directives: [
4873
- {
4874
- name: "show",
4875
- rawName: "v-show",
4876
- value:
4877
- _vm.currentView === "year" &&
4878
- _vm.timePickerVisible === false,
4879
- expression:
4880
- "currentView === 'year' && timePickerVisible === false",
4881
- },
4882
- ],
4883
- attrs: {
4884
- value: _vm.value,
4885
- "default-value": _vm.defaultValue
4886
- ? new Date(_vm.defaultValue)
4887
- : null,
4888
- date: _vm.date,
4889
- "disabled-date": _vm.disabledDate,
4890
- },
4891
- on: { pick: _vm.handleYearPick },
4892
- }),
4893
- _c("month-table", {
4894
- directives: [
4895
- {
4896
- name: "show",
4897
- rawName: "v-show",
4898
- value:
4899
- _vm.currentView === "month" &&
4900
- _vm.timePickerVisible === false,
4901
- expression:
4902
- "currentView === 'month' && timePickerVisible === false",
4903
- },
4904
- ],
4905
- attrs: {
4906
- value: _vm.value,
4907
- "default-value": _vm.defaultValue
4908
- ? new Date(_vm.defaultValue)
4909
- : null,
4910
- date: _vm.date,
4911
- "disabled-date": _vm.disabledDate,
4912
- },
4913
- on: { pick: _vm.handleMonthPick },
4914
- }),
4915
- _c("time-picker", {
4916
- directives: [
4917
- {
4918
- name: "show",
4919
- rawName: "v-show",
4920
- value: _vm.timePickerVisible && _vm.showTime,
4921
- expression: "timePickerVisible && showTime",
4922
- },
4923
- ],
4924
- ref: "timepicker",
4925
- attrs: {
4926
- "time-arrow-control": _vm.arrowControl,
4927
- visible: true,
4928
- "listen-scroll": _vm.listenScroll,
4929
- step: _vm.step,
4930
- },
4931
- on: {
4932
- pick: _vm.handleTimePick,
4933
- mounted: _vm.proxyTimePickerDataProperties,
4934
- },
4935
- }),
5043
+ _vm.pickerType === "quarter"
5044
+ ? _c("quarter-panel", {
5045
+ attrs: { value: _vm.value, date: _vm.date },
5046
+ on: { pick: _vm.handleQuarterPick },
5047
+ })
5048
+ : [
5049
+ _c("date-table", {
5050
+ directives: [
5051
+ {
5052
+ name: "show",
5053
+ rawName: "v-show",
5054
+ value:
5055
+ _vm.currentView === "date" &&
5056
+ _vm.timePickerVisible === false,
5057
+ expression:
5058
+ "currentView === 'date' && timePickerVisible === false",
5059
+ },
5060
+ ],
5061
+ attrs: {
5062
+ "selection-mode": _vm.selectionMode,
5063
+ "first-day-of-week": _vm.firstDayOfWeek,
5064
+ value: _vm.value,
5065
+ "default-value": _vm.defaultValue
5066
+ ? new Date(_vm.defaultValue)
5067
+ : null,
5068
+ date: _vm.date,
5069
+ "cell-class-name": _vm.cellClassName,
5070
+ "disabled-date": _vm.disabledDate,
5071
+ },
5072
+ on: { pick: _vm.handleDatePick },
5073
+ }),
5074
+ _c("year-table", {
5075
+ directives: [
5076
+ {
5077
+ name: "show",
5078
+ rawName: "v-show",
5079
+ value:
5080
+ _vm.currentView === "year" &&
5081
+ _vm.timePickerVisible === false,
5082
+ expression:
5083
+ "currentView === 'year' && timePickerVisible === false",
5084
+ },
5085
+ ],
5086
+ attrs: {
5087
+ value: _vm.value,
5088
+ "default-value": _vm.defaultValue
5089
+ ? new Date(_vm.defaultValue)
5090
+ : null,
5091
+ date: _vm.date,
5092
+ "disabled-date": _vm.disabledDate,
5093
+ },
5094
+ on: { pick: _vm.handleYearPick },
5095
+ }),
5096
+ _c("month-table", {
5097
+ directives: [
5098
+ {
5099
+ name: "show",
5100
+ rawName: "v-show",
5101
+ value:
5102
+ _vm.currentView === "month" &&
5103
+ _vm.timePickerVisible === false,
5104
+ expression:
5105
+ "currentView === 'month' && timePickerVisible === false",
5106
+ },
5107
+ ],
5108
+ attrs: {
5109
+ value: _vm.value,
5110
+ "default-value": _vm.defaultValue
5111
+ ? new Date(_vm.defaultValue)
5112
+ : null,
5113
+ date: _vm.date,
5114
+ "disabled-date": _vm.disabledDate,
5115
+ },
5116
+ on: { pick: _vm.handleMonthPick },
5117
+ }),
5118
+ _c("time-picker", {
5119
+ directives: [
5120
+ {
5121
+ name: "show",
5122
+ rawName: "v-show",
5123
+ value: _vm.timePickerVisible && _vm.showTime,
5124
+ expression: "timePickerVisible && showTime",
5125
+ },
5126
+ ],
5127
+ ref: "timepicker",
5128
+ attrs: {
5129
+ "time-arrow-control": _vm.arrowControl,
5130
+ visible: true,
5131
+ "listen-scroll": _vm.listenScroll,
5132
+ step: _vm.step,
5133
+ },
5134
+ on: {
5135
+ pick: _vm.handleTimePick,
5136
+ mounted: _vm.proxyTimePickerDataProperties,
5137
+ },
5138
+ }),
5139
+ ],
4936
5140
  ],
4937
- 1
5141
+ 2
4938
5142
  ),
4939
5143
  ]),
4940
5144
  ]),
@@ -4945,8 +5149,12 @@ var datevue_type_template_id_1a0bc492_render = function () {
4945
5149
  {
4946
5150
  name: "show",
4947
5151
  rawName: "v-show",
4948
- value: _vm.footerVisible && _vm.currentView === "date",
4949
- expression: "footerVisible && currentView === 'date'",
5152
+ value:
5153
+ _vm.footerVisible &&
5154
+ _vm.currentView === "date" &&
5155
+ _vm.pickerType !== "quarter",
5156
+ expression:
5157
+ "footerVisible && currentView === 'date' && pickerType !== 'quarter'",
4950
5158
  },
4951
5159
  ],
4952
5160
  class: this.prefixCls + "-picker-panel-footer",
@@ -5036,7 +5244,7 @@ datevue_type_template_id_1a0bc492_render._withStripped = true
5036
5244
  // CONCATENATED MODULE: ./components/datepicker/picker/date.vue?vue&type=template&id=1a0bc492&
5037
5245
 
5038
5246
  // EXTERNAL MODULE: external "./button"
5039
- var external_button_ = __webpack_require__(14);
5247
+ var external_button_ = __webpack_require__(13);
5040
5248
  var external_button_default = /*#__PURE__*/__webpack_require__.n(external_button_);
5041
5249
 
5042
5250
  // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/picker/time.vue?vue&type=template&id=0c4cd956&
@@ -6296,7 +6504,7 @@ year_tablevue_type_template_id_aa64ca38_render._withStripped = true
6296
6504
  var dom_ = __webpack_require__(68);
6297
6505
 
6298
6506
  // EXTERNAL MODULE: external "./_util/util"
6299
- var util_ = __webpack_require__(21);
6507
+ var util_ = __webpack_require__(22);
6300
6508
 
6301
6509
  // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/base/year-table.vue?vue&type=script&lang=js&
6302
6510
  //
@@ -6508,7 +6716,7 @@ month_tablevue_type_template_id_c295c5ea_render._withStripped = true
6508
6716
  // CONCATENATED MODULE: ./components/datepicker/base/month-table.vue?vue&type=template&id=c295c5ea&
6509
6717
 
6510
6718
  // EXTERNAL MODULE: ./components/_util/dom.js
6511
- var dom = __webpack_require__(22);
6719
+ var dom = __webpack_require__(23);
6512
6720
 
6513
6721
  // EXTERNAL MODULE: ./components/_util/util.js
6514
6722
  var util = __webpack_require__(16);
@@ -6971,7 +7179,8 @@ var date_tablevue_type_script_lang_js_getDateTimestamp = function getDateTimesta
6971
7179
  // return a new array if modification occurs
6972
7180
  // return the original array otherwise
6973
7181
  var date_tablevue_type_script_lang_js_removeFromArray = function removeFromArray(arr, pred) {
6974
- var idx = typeof pred === 'function' ? Object(util["b" /* arrayFindIndex */])(arr, pred) : arr.indexOf(pred);
7182
+ var idx = typeof pred === 'function' ? arr.findIndex(pred) // 使用原生 findIndex 方法
7183
+ : arr.indexOf(pred);
6975
7184
  return idx >= 0 ? [].concat(toConsumableArray_default()(arr.slice(0, idx)), toConsumableArray_default()(arr.slice(idx + 1))) : arr;
6976
7185
  };
6977
7186
 
@@ -7050,27 +7259,29 @@ var date_tablevue_type_script_lang_js_removeFromArray = function removeFromArray
7050
7259
  rows: function rows() {
7051
7260
  var _this = this;
7052
7261
 
7053
- // TODO: refactory rows / getCellClasses
7262
+ // 确保每次计算都从干净的状态开始
7054
7263
  var date = new Date(this.year, this.month, 1);
7055
- var day = getFirstDayOfMonth(date); // day of first day
7264
+ var day = getFirstDayOfMonth(date);
7056
7265
  var dateCountOfMonth = getDayCountOfMonth(date.getFullYear(), date.getMonth());
7057
7266
  var dateCountOfLastMonth = getDayCountOfMonth(date.getFullYear(), date.getMonth() === 0 ? 11 : date.getMonth() - 1);
7058
7267
 
7059
7268
  day = day === 0 ? 7 : day;
7060
-
7061
7269
  var offset = this.offsetDay;
7062
7270
  var rows = this.tableRows;
7063
7271
  var count = 1;
7064
-
7065
7272
  var startDate = this.startDate;
7066
7273
  var disabledDate = this.disabledDate;
7067
7274
  var cellClassName = this.cellClassName;
7275
+
7276
+ // 关键修复:确保 selectedDate 是当前有效的选择状态
7068
7277
  var selectedDate = this.selectionMode === 'dates' ? Object(util["c" /* coerceTruthyValueToArray */])(this.value) : [];
7278
+
7069
7279
  var now = date_tablevue_type_script_lang_js_getDateTimestamp(new Date());
7070
7280
 
7071
7281
  for (var i = 0; i < 6; i++) {
7072
7282
  var row = rows[i];
7073
7283
 
7284
+ // 重置行状态
7074
7285
  if (this.showWeekNumber) {
7075
7286
  if (!row[0]) {
7076
7287
  row[0] = {
@@ -7082,33 +7293,51 @@ var date_tablevue_type_script_lang_js_removeFromArray = function removeFromArray
7082
7293
 
7083
7294
  var _loop = function _loop(j) {
7084
7295
  var cell = row[_this.showWeekNumber ? j + 1 : j];
7085
- if (!cell) {
7086
- cell = {
7087
- row: i,
7088
- column: j,
7089
- type: 'normal',
7090
- inRange: false,
7091
- start: false,
7092
- end: false
7093
- };
7094
- }
7095
7296
 
7096
- cell.type = 'normal';
7297
+ // 关键修复:每次都创建新的 cell 对象,避免状态污染
7298
+ cell = {
7299
+ row: i,
7300
+ column: j,
7301
+ type: 'normal',
7302
+ inRange: false,
7303
+ start: false,
7304
+ end: false,
7305
+ disabled: false,
7306
+ selected: false,
7307
+ customClass: null
7308
+ };
7097
7309
 
7098
7310
  var index = i * 7 + j;
7099
7311
  var time = nextDate(startDate, index - offset).getTime();
7100
- cell.inRange = time >= date_tablevue_type_script_lang_js_getDateTimestamp(_this.minDate) && time <= date_tablevue_type_script_lang_js_getDateTimestamp(_this.maxDate);
7101
- cell.start = _this.minDate && time === date_tablevue_type_script_lang_js_getDateTimestamp(_this.minDate);
7102
- cell.end = _this.maxDate && time === date_tablevue_type_script_lang_js_getDateTimestamp(_this.maxDate);
7103
- var isToday = time === now;
7312
+ var cellDate = new Date(time);
7104
7313
 
7314
+ // 正确计算范围状态
7315
+ if (_this.minDate && _this.maxDate) {
7316
+ var minTime = date_tablevue_type_script_lang_js_getDateTimestamp(_this.minDate);
7317
+ var maxTime = date_tablevue_type_script_lang_js_getDateTimestamp(_this.maxDate);
7318
+ cell.inRange = time >= minTime && time <= maxTime;
7319
+ cell.start = time === minTime;
7320
+ cell.end = time === maxTime;
7321
+ }
7322
+
7323
+ // 正确计算选中状态
7324
+ if (_this.selectionMode === 'dates') {
7325
+ cell.selected = selectedDate.some(function (date) {
7326
+ return date && date.getTime() === cellDate.getTime();
7327
+ });
7328
+ } else if (_this.selectionMode === 'day' && _this.value) {
7329
+ cell.selected = _this.value.getTime() === cellDate.getTime();
7330
+ }
7331
+
7332
+ // 其他状态计算...
7333
+ var isToday = time === now;
7105
7334
  if (isToday) {
7106
7335
  cell.type = 'today';
7107
7336
  }
7108
7337
 
7338
+ // 日期文本计算...
7109
7339
  if (i >= 0 && i <= 1) {
7110
7340
  var numberOfDaysFromPreviousMonth = day + offset < 0 ? 7 + day + offset : day + offset;
7111
-
7112
7341
  if (j + i * 7 >= numberOfDaysFromPreviousMonth) {
7113
7342
  cell.text = count++;
7114
7343
  } else {
@@ -7124,29 +7353,19 @@ var date_tablevue_type_script_lang_js_removeFromArray = function removeFromArray
7124
7353
  }
7125
7354
  }
7126
7355
 
7127
- var cellDate = new Date(time);
7356
+ // 禁用状态
7128
7357
  cell.disabled = typeof disabledDate === 'function' && disabledDate(cellDate);
7129
- cell.selected = Object(util["a" /* arrayFind */])(selectedDate, function (date) {
7130
- return (date && date.getTime()) === (cellDate && cellDate.getTime());
7131
- });
7358
+
7359
+ // 自定义类名
7132
7360
  cell.customClass = typeof cellClassName === 'function' && cellClassName(cellDate);
7361
+
7362
+ // 更新行数据
7133
7363
  _this.$set(row, _this.showWeekNumber ? j + 1 : j, cell);
7134
7364
  };
7135
7365
 
7136
7366
  for (var j = 0; j < 7; j++) {
7137
7367
  _loop(j);
7138
7368
  }
7139
-
7140
- if (this.selectionMode === 'week') {
7141
- var start = this.showWeekNumber ? 1 : 0;
7142
- var end = this.showWeekNumber ? 7 : 6;
7143
- var isWeekActive = this.isWeekActive(row[start + 1]);
7144
-
7145
- row[start].inRange = isWeekActive;
7146
- row[start].start = isWeekActive;
7147
- row[end].inRange = isWeekActive;
7148
- row[end].end = isWeekActive;
7149
- }
7150
7369
  }
7151
7370
 
7152
7371
  return rows;
@@ -7278,11 +7497,11 @@ var date_tablevue_type_script_lang_js_removeFromArray = function removeFromArray
7278
7497
 
7279
7498
  var _cell = row[j];
7280
7499
  var index = i * 7 + j + (this.showWeekNumber ? -1 : 0);
7281
- var time = nextDate(startDate, index - this.offsetDay).getTime();
7500
+ var _time = nextDate(startDate, index - this.offsetDay).getTime();
7282
7501
 
7283
- _cell.inRange = minDate && time >= minDate && time <= maxDate;
7284
- _cell.start = minDate && time === minDate;
7285
- _cell.end = maxDate && time === maxDate;
7502
+ _cell.inRange = minDate && _time >= minDate && _time <= maxDate;
7503
+ _cell.start = minDate && _time === minDate;
7504
+ _cell.end = maxDate && _time === maxDate;
7286
7505
  }
7287
7506
  }
7288
7507
  },
@@ -7395,6 +7614,288 @@ var date_table_component = Object(componentNormalizer["a" /* default */])(
7395
7614
  if (false) { var date_table_api; }
7396
7615
  date_table_component.options.__file = "components/datepicker/base/date-table.vue"
7397
7616
  /* harmony default export */ var date_table = (date_table_component.exports);
7617
+ // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/picker/quarter.vue?vue&type=template&id=76a5899a&
7618
+ var quartervue_type_template_id_76a5899a_render = function () {
7619
+ var _vm = this
7620
+ var _h = _vm.$createElement
7621
+ var _c = _vm._self._c || _h
7622
+ return _c(
7623
+ "div",
7624
+ {
7625
+ directives: [
7626
+ {
7627
+ name: "show",
7628
+ rawName: "v-show",
7629
+ value: _vm.visible,
7630
+ expression: "visible",
7631
+ },
7632
+ ],
7633
+ ref: "popper",
7634
+ class: ["mds-quarter-panel", _vm.popperClass],
7635
+ style: _vm.popperStyle,
7636
+ },
7637
+ [
7638
+ _c("div", { staticClass: "mds-quarter-panel__header" }, [
7639
+ _c("i", {
7640
+ staticClass: "mdsicon mdsicon-line-caret-left-double",
7641
+ class: [
7642
+ _vm.prefixCls + "-picker-panel-header-base-icon",
7643
+ _vm.prefixCls + "-left-prev-year",
7644
+ _vm.prefixCls + "-other-icon",
7645
+ _vm.prefixCls + "-picker-panel-header-base-left",
7646
+ ],
7647
+ attrs: { "aria-label": _vm.t("mds.datepicker.prevYear") },
7648
+ on: { click: _vm.prevYear },
7649
+ }),
7650
+ _c("span", [_vm._v(_vm._s(_vm.currentYear))]),
7651
+ _c("i", {
7652
+ staticClass: "mdsicon mdsicon-line-caret-right-double",
7653
+ class: [
7654
+ _vm.prefixCls + "-picker-panel-header-base-icon",
7655
+ _vm.prefixCls + "-next-year",
7656
+ _vm.prefixCls + "-other-icon",
7657
+ _vm.prefixCls + "-picker-panel-header-base-right",
7658
+ ],
7659
+ attrs: { "aria-label": _vm.t("mds.datepicker.nextYear") },
7660
+ on: { click: _vm.nextYear },
7661
+ }),
7662
+ ]),
7663
+ _c(
7664
+ "div",
7665
+ { staticClass: "mds-quarter-panel__body" },
7666
+ _vm._l(_vm.quarters, function (quarter) {
7667
+ return _c(
7668
+ "div",
7669
+ {
7670
+ key: quarter.value,
7671
+ class: [
7672
+ "mds-quarter-panel__quarter",
7673
+ {
7674
+ "is-selected": _vm.isSelected(quarter),
7675
+ today: _vm.isTodayQuarter(quarter), // 只判断是否今天
7676
+ },
7677
+ ],
7678
+ on: {
7679
+ click: function ($event) {
7680
+ return _vm.selectQuarter(quarter)
7681
+ },
7682
+ },
7683
+ },
7684
+ [_vm._v("\n " + _vm._s(quarter.label) + "\n ")]
7685
+ )
7686
+ }),
7687
+ 0
7688
+ ),
7689
+ ]
7690
+ )
7691
+ }
7692
+ var quartervue_type_template_id_76a5899a_staticRenderFns = []
7693
+ quartervue_type_template_id_76a5899a_render._withStripped = true
7694
+
7695
+
7696
+ // CONCATENATED MODULE: ./components/datepicker/picker/quarter.vue?vue&type=template&id=76a5899a&
7697
+
7698
+ // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/picker/quarter.vue?vue&type=script&lang=js&
7699
+ //
7700
+ //
7701
+ //
7702
+ //
7703
+ //
7704
+ //
7705
+ //
7706
+ //
7707
+ //
7708
+ //
7709
+ //
7710
+ //
7711
+ //
7712
+ //
7713
+ //
7714
+ //
7715
+ //
7716
+ //
7717
+ //
7718
+ //
7719
+ //
7720
+ //
7721
+ //
7722
+ //
7723
+ //
7724
+ //
7725
+ //
7726
+ //
7727
+ //
7728
+ //
7729
+ //
7730
+ //
7731
+ //
7732
+ //
7733
+ //
7734
+ //
7735
+ //
7736
+ //
7737
+ //
7738
+ //
7739
+ //
7740
+ //
7741
+ //
7742
+ //
7743
+ //
7744
+ //
7745
+ //
7746
+ //
7747
+ //
7748
+ //
7749
+ //
7750
+
7751
+
7752
+
7753
+
7754
+ /* harmony default export */ var quartervue_type_script_lang_js_ = ({
7755
+ mixins: [locale_default.a, vue_popper["a" /* default */]],
7756
+ name: 'QuarterPanel',
7757
+ props: {
7758
+ prefixCls: {
7759
+ type: String,
7760
+ default: 'mds-date'
7761
+ },
7762
+ value: {
7763
+ type: [Date, String],
7764
+ default: null
7765
+ },
7766
+ date: {
7767
+ type: Date,
7768
+ default: function _default() {
7769
+ return new Date();
7770
+ }
7771
+ },
7772
+ pickerType: {
7773
+ type: String,
7774
+ default: 'quarter'
7775
+ },
7776
+ popperClass: {
7777
+ type: String,
7778
+ default: ''
7779
+ },
7780
+ referenceElm: {
7781
+ type: null,
7782
+ default: null
7783
+ },
7784
+ appendToBody: {
7785
+ type: Boolean,
7786
+ default: true
7787
+ },
7788
+ placement: {
7789
+ type: String,
7790
+ default: 'bottom-start'
7791
+ }
7792
+ },
7793
+ data: function data() {
7794
+ return {
7795
+ currentYear: new Date().getFullYear(),
7796
+ visible: true // 控制面板显示
7797
+ };
7798
+ },
7799
+
7800
+ computed: {
7801
+ quarters: function quarters() {
7802
+ return [{ label: 'Q1', value: 1, startMonth: 0, endMonth: 2 }, { label: 'Q2', value: 2, startMonth: 3, endMonth: 5 }, { label: 'Q3', value: 3, startMonth: 6, endMonth: 8 }, { label: 'Q4', value: 4, startMonth: 9, endMonth: 11 }];
7803
+ },
7804
+ hasSelected: function hasSelected() {
7805
+ return this.value && this.value instanceof Date && !isNaN(this.value);
7806
+ }
7807
+ },
7808
+ watch: {
7809
+ date: {
7810
+ immediate: true,
7811
+ handler: function handler(newDate) {
7812
+ if (newDate instanceof Date && !isNaN(newDate)) {
7813
+ this.currentYear = newDate.getFullYear();
7814
+ }
7815
+ }
7816
+ },
7817
+ value: {
7818
+ immediate: true,
7819
+ handler: function handler(newValue) {
7820
+ if (newValue instanceof Date && !isNaN(newValue)) {
7821
+ this.currentYear = newValue.getFullYear();
7822
+ }
7823
+ }
7824
+ }
7825
+ },
7826
+ mounted: function mounted() {
7827
+ var _this = this;
7828
+
7829
+ if (this.appendToBody && this.$el.parentNode !== document.body) {
7830
+ document.body.appendChild(this.$el);
7831
+ }
7832
+ // 关键:必须在 append 到 body 后再 updatePopper
7833
+ this.$nextTick(function () {
7834
+ if (_this.referenceElm) {
7835
+ _this.updatePopper();
7836
+ }
7837
+ });
7838
+ },
7839
+ beforeDestroy: function beforeDestroy() {
7840
+ if (this.appendToBody && this.$el && this.$el.parentNode === document.body) {
7841
+ document.body.removeChild(this.$el);
7842
+ }
7843
+ },
7844
+
7845
+ methods: {
7846
+ prevYear: function prevYear() {
7847
+ this.currentYear--;
7848
+ // this.$emit('pick', new Date(this.currentYear, 0, 1))
7849
+ },
7850
+ nextYear: function nextYear() {
7851
+ this.currentYear++;
7852
+ // this.$emit('pick', new Date(this.currentYear, 0, 1))
7853
+ },
7854
+ selectQuarter: function selectQuarter(quarter) {
7855
+ var selectedDate = new Date(this.currentYear, quarter.startMonth, 1);
7856
+ this.$emit('pick', selectedDate, false); // 关键:false自动收起
7857
+ },
7858
+ isSelected: function isSelected(quarter) {
7859
+ if (this.hasSelected) {
7860
+ var selectedYear = this.value.getFullYear();
7861
+ var selectedMonth = this.value.getMonth();
7862
+ return selectedYear === this.currentYear && selectedMonth >= quarter.startMonth && selectedMonth <= quarter.endMonth;
7863
+ }
7864
+ return false;
7865
+ },
7866
+ isTodayQuarter: function isTodayQuarter(quarter) {
7867
+ var today = new Date();
7868
+ var year = today.getFullYear();
7869
+ var month = today.getMonth();
7870
+ return year === this.currentYear && month >= quarter.startMonth && month <= quarter.endMonth;
7871
+ }
7872
+ }
7873
+ });
7874
+ // CONCATENATED MODULE: ./components/datepicker/picker/quarter.vue?vue&type=script&lang=js&
7875
+ /* harmony default export */ var picker_quartervue_type_script_lang_js_ = (quartervue_type_script_lang_js_);
7876
+ // CONCATENATED MODULE: ./components/datepicker/picker/quarter.vue
7877
+
7878
+
7879
+
7880
+
7881
+
7882
+ /* normalize component */
7883
+
7884
+ var quarter_component = Object(componentNormalizer["a" /* default */])(
7885
+ picker_quartervue_type_script_lang_js_,
7886
+ quartervue_type_template_id_76a5899a_render,
7887
+ quartervue_type_template_id_76a5899a_staticRenderFns,
7888
+ false,
7889
+ null,
7890
+ null,
7891
+ null
7892
+
7893
+ )
7894
+
7895
+ /* hot reload */
7896
+ if (false) { var quarter_api; }
7897
+ quarter_component.options.__file = "components/datepicker/picker/quarter.vue"
7898
+ /* harmony default export */ var quarter = (quarter_component.exports);
7398
7899
  // CONCATENATED MODULE: ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib??vue-loader-options!./components/datepicker/picker/date.vue?vue&type=script&lang=js&
7399
7900
 
7400
7901
  //
@@ -7548,6 +8049,22 @@ date_table_component.options.__file = "components/datepicker/base/date-table.vue
7548
8049
  //
7549
8050
  //
7550
8051
  //
8052
+ //
8053
+ //
8054
+ //
8055
+ //
8056
+ //
8057
+ //
8058
+ //
8059
+ //
8060
+ //
8061
+ //
8062
+ //
8063
+ //
8064
+ //
8065
+ //
8066
+ //
8067
+
7551
8068
 
7552
8069
 
7553
8070
 
@@ -7565,6 +8082,10 @@ date_table_component.options.__file = "components/datepicker/base/date-table.vue
7565
8082
  prefixCls: {
7566
8083
  type: String,
7567
8084
  default: 'mds-date'
8085
+ },
8086
+ pickerType: {
8087
+ type: String,
8088
+ default: 'date'
7568
8089
  }
7569
8090
  },
7570
8091
  watch: {
@@ -7876,11 +8397,18 @@ date_table_component.options.__file = "components/datepicker/base/date-table.vue
7876
8397
  },
7877
8398
  checkDateWithinRange: function checkDateWithinRange(date) {
7878
8399
  return this.selectableRange.length > 0 ? Object(dateUtil_["timeWithinRange"])(date, this.selectableRange, this.format || 'HH:mm:ss') : true;
8400
+ },
8401
+ handleQuarterPick: function handleQuarterPick(date) {
8402
+ this.date = date;
8403
+ this.emit(date, false);
8404
+ },
8405
+ showQuarterPicker: function showQuarterPicker() {
8406
+ this.currentView = 'quarter';
7879
8407
  }
7880
8408
  },
7881
8409
 
7882
8410
  components: {
7883
- TimePicker: picker_time, YearTable: year_table, MonthTable: month_table, DateTable: date_table, MdsButton: external_button_default.a
8411
+ TimePicker: picker_time, YearTable: year_table, MonthTable: month_table, DateTable: date_table, MdsButton: external_button_default.a, QuarterPanel: quarter
7884
8412
  },
7885
8413
 
7886
8414
  data: function data() {
@@ -8159,6 +8687,7 @@ var date_rangevue_type_template_id_6eca7cf8_render = function () {
8159
8687
  { class: this.prefixCls + "-picker-panel-content" },
8160
8688
  [
8161
8689
  _c("date-table", {
8690
+ ref: "leftDateTable",
8162
8691
  attrs: {
8163
8692
  "selection-mode": "range",
8164
8693
  date: _vm.leftDate,
@@ -8318,6 +8847,7 @@ var date_rangevue_type_template_id_6eca7cf8_render = function () {
8318
8847
  { class: this.prefixCls + "-picker-panel-content" },
8319
8848
  [
8320
8849
  _c("date-table", {
8850
+ ref: "rightDateTable",
8321
8851
  attrs: {
8322
8852
  "selection-mode": "range",
8323
8853
  date: _vm.rightDate,
@@ -9260,6 +9790,8 @@ datetime_select_component.options.__file = "components/datepicker/picker/datetim
9260
9790
  //
9261
9791
  //
9262
9792
  //
9793
+ //
9794
+ //
9263
9795
 
9264
9796
 
9265
9797
 
@@ -9270,6 +9802,7 @@ datetime_select_component.options.__file = "components/datepicker/picker/datetim
9270
9802
 
9271
9803
 
9272
9804
 
9805
+ // 确保 calcDefaultValue 函数可用
9273
9806
  var date_rangevue_type_script_lang_js_calcDefaultValue = function calcDefaultValue(defaultValue) {
9274
9807
  if (Array.isArray(defaultValue)) {
9275
9808
  return [new Date(defaultValue[0]), new Date(defaultValue[1])];
@@ -9418,39 +9951,76 @@ var date_rangevue_type_script_lang_js_calcDefaultValue = function calcDefaultVal
9418
9951
 
9419
9952
  watch: {
9420
9953
  visible: function visible(val) {
9421
- val && (this.timePickerVisible = false);
9422
- },
9423
- minDate: function minDate(val) {
9424
9954
  var _this = this;
9425
9955
 
9426
- this.dateUserInput.min = null;
9427
- this.timeUserInput.min = null;
9428
- this.$nextTick(function () {
9429
- if (_this.$refs.maxTimePicker && _this.maxDate && _this.maxDate < _this.minDate) {
9430
- var format = 'HH:mm:ss';
9431
- _this.$refs.maxTimePicker.selectableRange = [[Object(dateUtil_["parseDate"])(Object(dateUtil_["formatDate"])(_this.minDate, format), format), Object(dateUtil_["parseDate"])('23:59:59', format)]];
9432
- }
9433
- });
9434
- if (val && this.$refs.minTimePicker) {
9435
- this.$refs.minTimePicker.date = val;
9436
- this.$refs.minTimePicker.value = val;
9956
+ if (val) {
9957
+ this.timePickerVisible = false;
9958
+ // 当面板显示时重置状态
9959
+ this.resetView();
9960
+ // 强制重新计算布局
9437
9961
  this.$nextTick(function () {
9438
- _this.$refs.maxTimePicker.adjustSpinners();
9962
+ _this.$forceUpdate();
9439
9963
  });
9440
9964
  }
9441
9965
  },
9442
- maxDate: function maxDate(val) {
9966
+
9967
+
9968
+ // 分别监听 minDate 和 maxDate
9969
+ minDate: function minDate(newVal, oldVal) {
9443
9970
  var _this2 = this;
9444
9971
 
9445
- this.dateUserInput.max = null;
9446
- this.timeUserInput.max = null;
9447
- if (val && this.$refs.maxTimePicker) {
9448
- this.$refs.maxTimePicker.date = val;
9449
- this.$refs.maxTimePicker.value = val;
9972
+ if (newVal !== oldVal && this.minDate) {
9973
+ this.dateUserInput.min = null;
9974
+ this.timeUserInput.min = null;
9450
9975
  this.$nextTick(function () {
9451
- _this2.$refs.minTimePicker.adjustSpinners();
9976
+ if (_this2.$refs.maxTimePicker && _this2.maxDate && _this2.maxDate < _this2.minDate) {
9977
+ var format = 'HH:mm:ss';
9978
+ _this2.$refs.maxTimePicker.selectableRange = [[Object(dateUtil_["parseDate"])(Object(dateUtil_["formatDate"])(_this2.minDate, format), format), Object(dateUtil_["parseDate"])('23:59:59', format)]];
9979
+ }
9452
9980
  });
9981
+ if (this.$refs.minTimePicker) {
9982
+ this.$refs.minTimePicker.date = this.minDate;
9983
+ this.$refs.minTimePicker.value = this.minDate;
9984
+ this.$nextTick(function () {
9985
+ _this2.$refs.maxTimePicker && _this2.$refs.maxTimePicker.adjustSpinners();
9986
+ });
9987
+ }
9988
+ }
9989
+
9990
+ // 强制子组件重新计算状态
9991
+ this.$nextTick(function () {
9992
+ if (_this2.$refs.leftDateTable) {
9993
+ _this2.$refs.leftDateTable.$forceUpdate();
9994
+ }
9995
+ if (_this2.$refs.rightDateTable) {
9996
+ _this2.$refs.rightDateTable.$forceUpdate();
9997
+ }
9998
+ });
9999
+ },
10000
+ maxDate: function maxDate(newVal, oldVal) {
10001
+ var _this3 = this;
10002
+
10003
+ if (newVal !== oldVal && this.maxDate) {
10004
+ this.dateUserInput.max = null;
10005
+ this.timeUserInput.max = null;
10006
+ if (this.$refs.maxTimePicker) {
10007
+ this.$refs.maxTimePicker.date = this.maxDate;
10008
+ this.$refs.maxTimePicker.value = this.maxDate;
10009
+ this.$nextTick(function () {
10010
+ _this3.$refs.minTimePicker && _this3.$refs.minTimePicker.adjustSpinners();
10011
+ });
10012
+ }
9453
10013
  }
10014
+
10015
+ // 强制子组件重新计算状态
10016
+ this.$nextTick(function () {
10017
+ if (_this3.$refs.leftDateTable) {
10018
+ _this3.$refs.leftDateTable.$forceUpdate();
10019
+ }
10020
+ if (_this3.$refs.rightDateTable) {
10021
+ _this3.$refs.rightDateTable.$forceUpdate();
10022
+ }
10023
+ });
9454
10024
  },
9455
10025
  value: function value(newVal) {
9456
10026
  if (!newVal) {
@@ -9488,24 +10058,28 @@ var date_rangevue_type_script_lang_js_calcDefaultValue = function calcDefaultVal
9488
10058
  }
9489
10059
  },
9490
10060
  format: function format() {
9491
- this.$refs.minTimePicker.format = this.timeFormat;
9492
- this.$refs.maxTimePicker.format = this.timeFormat;
10061
+ if (this.$refs.minTimePicker) {
10062
+ this.$refs.minTimePicker.format = this.timeFormat;
10063
+ }
10064
+ if (this.$refs.maxTimePicker) {
10065
+ this.$refs.maxTimePicker.format = this.timeFormat;
10066
+ }
9493
10067
  }
9494
10068
  },
9495
10069
 
9496
10070
  methods: {
9497
10071
  selectTime: function selectTime() {
9498
- var _this3 = this;
10072
+ var _this4 = this;
9499
10073
 
9500
10074
  this.timePickerVisible = !this.timePickerVisible;
9501
10075
  if (this.timePickerVisible) {
9502
10076
  this.$nextTick(function () {
9503
- _this3.$refs.maxTimePicker.date = _this3.maxDate;
9504
- _this3.$refs.maxTimePicker.value = _this3.maxDate;
9505
- _this3.$refs.maxTimePicker.adjustSpinners();
9506
- _this3.$refs.minTimePicker.date = _this3.minDate;
9507
- _this3.$refs.minTimePicker.value = _this3.minDate;
9508
- _this3.$refs.minTimePicker.adjustSpinners();
10077
+ _this4.$refs.maxTimePicker.date = _this4.maxDate;
10078
+ _this4.$refs.maxTimePicker.value = _this4.maxDate;
10079
+ _this4.$refs.maxTimePicker.adjustSpinners();
10080
+ _this4.$refs.minTimePicker.date = _this4.minDate;
10081
+ _this4.$refs.minTimePicker.value = _this4.minDate;
10082
+ _this4.$refs.minTimePicker.adjustSpinners();
9509
10083
  });
9510
10084
  }
9511
10085
  },
@@ -9514,12 +10088,36 @@ var date_rangevue_type_script_lang_js_calcDefaultValue = function calcDefaultVal
9514
10088
  this.maxDate = null;
9515
10089
  this.leftDate = date_rangevue_type_script_lang_js_calcDefaultValue(this.defaultValue)[0];
9516
10090
  this.rightDate = Object(dateUtil_["nextMonth"])(this.leftDate);
10091
+
10092
+ // 重置 rangeState
10093
+ this.rangeState = {
10094
+ endDate: null,
10095
+ selecting: false,
10096
+ row: null,
10097
+ column: null
10098
+ };
9517
10099
  this.$emit('pick', null);
9518
10100
  },
9519
10101
  handleChangeRange: function handleChangeRange(val) {
9520
- this.minDate = val.minDate;
9521
- this.maxDate = val.maxDate;
9522
- this.rangeState = val.rangeState;
10102
+ var _this5 = this;
10103
+
10104
+ // 确保状态一致性
10105
+ if (val.minDate && val.maxDate) {
10106
+ this.minDate = new Date(val.minDate);
10107
+ this.maxDate = new Date(val.maxDate);
10108
+ }
10109
+
10110
+ // 更新 rangeState,确保所有字段都被正确设置
10111
+ this.rangeState = {
10112
+ endDate: val.rangeState ? val.rangeState.endDate : null,
10113
+ selecting: val.rangeState ? val.rangeState.selecting : false,
10114
+ row: val.rangeState ? val.rangeState.row : null,
10115
+ column: val.rangeState ? val.rangeState.column : null
10116
+
10117
+ // 强制重新计算 date-table 的状态
10118
+ };this.$nextTick(function () {
10119
+ _this5.$forceUpdate();
10120
+ });
9523
10121
  },
9524
10122
  handleDateInput: function handleDateInput(value, type) {
9525
10123
  this.dateUserInput[type] = value;
@@ -9562,7 +10160,7 @@ var date_rangevue_type_script_lang_js_calcDefaultValue = function calcDefaultVal
9562
10160
  }
9563
10161
  },
9564
10162
  handleTimeInput: function handleTimeInput(value, type) {
9565
- var _this4 = this;
10163
+ var _this6 = this;
9566
10164
 
9567
10165
  this.timeUserInput[type] = value;
9568
10166
  if (value.length !== this.timeFormat.length) return;
@@ -9572,12 +10170,12 @@ var date_rangevue_type_script_lang_js_calcDefaultValue = function calcDefaultVal
9572
10170
  if (type === 'min') {
9573
10171
  this.minDate = Object(dateUtil_["modifyTime"])(this.minDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());
9574
10172
  this.$nextTick(function (_) {
9575
- return _this4.$refs.minTimePicker.adjustSpinners();
10173
+ return _this6.$refs.minTimePicker.adjustSpinners();
9576
10174
  });
9577
10175
  } else {
9578
10176
  this.maxDate = Object(dateUtil_["modifyTime"])(this.maxDate, parsedValue.getHours(), parsedValue.getMinutes(), parsedValue.getSeconds());
9579
10177
  this.$nextTick(function (_) {
9580
- return _this4.$refs.maxTimePicker.adjustSpinners();
10178
+ return _this6.$refs.maxTimePicker.adjustSpinners();
9581
10179
  });
9582
10180
  }
9583
10181
  }
@@ -9601,7 +10199,7 @@ var date_rangevue_type_script_lang_js_calcDefaultValue = function calcDefaultVal
9601
10199
  }
9602
10200
  },
9603
10201
  handleRangePick: function handleRangePick(val) {
9604
- var _this5 = this;
10202
+ var _this7 = this;
9605
10203
 
9606
10204
  var close = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
9607
10205
 
@@ -9618,8 +10216,8 @@ var date_rangevue_type_script_lang_js_calcDefaultValue = function calcDefaultVal
9618
10216
 
9619
10217
  // workaround for https://github.com/ElemeFE/element/issues/7539, should remove this block when we don't have to care about Chromium 55 - 57
9620
10218
  setTimeout(function () {
9621
- _this5.maxDate = maxDate;
9622
- _this5.minDate = minDate;
10219
+ _this7.maxDate = maxDate;
10220
+ _this7.minDate = minDate;
9623
10221
  }, 10);
9624
10222
  if (!close || this.showTime) return;
9625
10223
  this.handleConfirm();
@@ -9719,14 +10317,50 @@ var date_rangevue_type_script_lang_js_calcDefaultValue = function calcDefaultVal
9719
10317
  return Array.isArray(value) && value && value[0] && value[1] && Object(dateUtil_["isDate"])(value[0]) && Object(dateUtil_["isDate"])(value[1]) && value[0].getTime() <= value[1].getTime() && (typeof this.disabledDate === 'function' ? !this.disabledDate(value[0]) && !this.disabledDate(value[1]) : true);
9720
10318
  },
9721
10319
  resetView: function resetView() {
9722
- // NOTE: this is a hack to reset {min, max}Date on picker open.
9723
- // TODO: correct way of doing so is to refactor {min, max}Date to be dependent on value and internal selection state
9724
- // an alternative would be resetView whenever picker becomes visible, should also investigate date-panel's resetView
9725
- if (this.minDate && this.maxDate == null) {
9726
- this.rangeState.selecting = false;
10320
+ var _this8 = this;
10321
+
10322
+ // 完全重置所有状态
10323
+ this.rangeState = {
10324
+ endDate: null,
10325
+ selecting: false,
10326
+ row: null,
10327
+ column: null
10328
+
10329
+ // 重置日期状态
10330
+ };if (this.value && Array.isArray(this.value) && this.value.length === 2) {
10331
+ this.minDate = new Date(this.value[0]);
10332
+ this.maxDate = new Date(this.value[1]);
10333
+
10334
+ // 确保左右面板日期正确
10335
+ this.leftDate = new Date(this.value[0]);
10336
+ if (this.unlinkPanels) {
10337
+ this.rightDate = new Date(this.value[1]);
10338
+ } else {
10339
+ this.rightDate = Object(dateUtil_["nextMonth"])(this.leftDate);
10340
+ }
10341
+ } else {
10342
+ // 如果没有值,重置为默认状态
10343
+ this.minDate = null;
10344
+ this.maxDate = null;
10345
+ this.leftDate = date_rangevue_type_script_lang_js_calcDefaultValue(this.defaultValue)[0];
10346
+ this.rightDate = Object(dateUtil_["nextMonth"])(this.leftDate);
9727
10347
  }
9728
- this.minDate = this.value && Object(dateUtil_["isDate"])(this.value[0]) ? new Date(this.value[0]) : null;
9729
- this.maxDate = this.value && Object(dateUtil_["isDate"])(this.value[0]) ? new Date(this.value[1]) : null;
10348
+
10349
+ // 重置用户输入状态
10350
+ this.dateUserInput = { min: null, max: null };
10351
+ this.timeUserInput = { min: null, max: null
10352
+
10353
+ // 强制重新渲染所有子组件
10354
+ };this.$nextTick(function () {
10355
+ // 通知子组件重置状态
10356
+ if (_this8.$refs.leftDateTable) {
10357
+ _this8.$refs.leftDateTable.$forceUpdate();
10358
+ }
10359
+ if (_this8.$refs.rightDateTable) {
10360
+ _this8.$refs.rightDateTable.$forceUpdate();
10361
+ }
10362
+ _this8.$forceUpdate();
10363
+ });
9730
10364
  }
9731
10365
  },
9732
10366
 
@@ -10257,11 +10891,14 @@ month_range_component.options.__file = "components/datepicker/range/month-range.
10257
10891
 
10258
10892
 
10259
10893
 
10894
+
10260
10895
  var picker_getPanel = function getPanel(type) {
10261
10896
  if (type === 'daterange' || type === 'datetimerange' || type === 'datetimerangeflat') {
10262
10897
  return date_range;
10263
10898
  } else if (type === 'monthrange') {
10264
10899
  return month_range;
10900
+ } else if (type === 'quarter') {
10901
+ return quarter;
10265
10902
  }
10266
10903
  return picker_date;
10267
10904
  };
@@ -10276,7 +10913,10 @@ var picker_getPanel = function getPanel(type) {
10276
10913
  props: {
10277
10914
  type: {
10278
10915
  type: String,
10279
- default: 'date'
10916
+ default: 'date',
10917
+ validator: function validator(value) {
10918
+ return ['date', 'datetime', 'week', 'month', 'year', 'daterange', 'datetimerange', 'datetimerangeflat', 'monthrange', 'quarter', 'dates'].includes(value);
10919
+ }
10280
10920
  },
10281
10921
  timeArrowControl: Boolean
10282
10922
  },
@@ -10311,7 +10951,7 @@ datepicker_picker.install = function (Vue) {
10311
10951
  /***/ 9:
10312
10952
  /***/ (function(module, exports) {
10313
10953
 
10314
- module.exports = require("babel-runtime/helpers/typeof");
10954
+ module.exports = __WEBPACK_EXTERNAL_MODULE__9__;
10315
10955
 
10316
10956
  /***/ })
10317
10957