Skip to content

Commit b892532

Browse files
committed
refactor: Build 2.2.0
1 parent 42fe01f commit b892532

File tree

3 files changed

+162
-28
lines changed

3 files changed

+162
-28
lines changed

lib/date-picker-range.js

Lines changed: 43 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -458,33 +458,45 @@ var getPanelPosition = exports.getPanelPosition = function getPanelPosition(pane
458458

459459
var top = 0;
460460
var left = 0;
461+
var isMinusOffsetLeft = false;
462+
var isMinusOffsetTop = false;
461463

462464
var topDiff = docHeight - panelDefTop;
463465
if (topDiff < panelHeight) {
464466
if (wrapTop > panelHeight) {
465467
top = -(panelHeight + 10);
468+
isMinusOffsetTop = true;
466469
} else {
467-
top = topDiff - panelHeight;
470+
// topDiff - panelHeight
471+
// 偏移到上边界
472+
top = -panelHeight;
473+
isMinusOffsetTop = false;
468474
}
469475
} else {
470476
top = wrapHeight;
477+
isMinusOffsetTop = false;
471478
}
472479
// fix #7
473480
var leftDiff = docWidth - panelDefRight;
474481
if (leftDiff < 0) {
475482
if (docWidth > wrapLeft) {
476483
left = leftDiff;
484+
isMinusOffsetLeft = true;
477485
} else {
478486
// 偏移到左边界
479487
left = -panelWidth;
488+
isMinusOffsetLeft = false;
480489
}
481490
} else {
482491
left = 0;
492+
isMinusOffsetLeft = false;
483493
}
484494

485495
return {
486496
top: top,
487-
left: left
497+
left: left,
498+
isMinusOffsetTop: isMinusOffsetTop,
499+
isMinusOffsetLeft: isMinusOffsetLeft
488500
};
489501
};
490502

@@ -800,8 +812,6 @@ exports.default = {
800812
default: ' - '
801813
},
802814

803-
date: {},
804-
805815
lang: {
806816
type: String,
807817
default: 'cn',
@@ -831,6 +841,23 @@ exports.default = {
831841
default: function _default() {
832842
return {};
833843
}
844+
},
845+
846+
// since 2.2.0
847+
defaultValue: {
848+
// default date when open the datepicker
849+
},
850+
851+
// since 2.2.0
852+
/* 用于计算 top/left 值时的额外偏移量 */
853+
offsetLeft: {
854+
type: Number,
855+
default: 0
856+
},
857+
858+
offsetTop: {
859+
type: Number,
860+
default: 0
834861
}
835862
},
836863

@@ -909,6 +936,11 @@ exports.default = {
909936

910937
return [leftDate, rightDate];
911938
}
939+
// since 2.2.0
940+
if (!this.unlinkPanels && (0, _utils.isDate)(this.defaultValue)) {
941+
var _leftDate = new Date(this.defaultValue);
942+
return [_leftDate, (0, _utils.nextMonth)(_leftDate, 1)];
943+
}
912944

913945
return [new Date(), (0, _utils.nextMonth)(new Date(), 1)];
914946
},
@@ -1068,10 +1100,12 @@ exports.default = {
10681100

10691101
var _getPanelPosition = (0, _utils.getPanelPosition)(this.panelHeight, this.panelWidth, this.wrapRect),
10701102
top = _getPanelPosition.top,
1071-
left = _getPanelPosition.left;
1103+
left = _getPanelPosition.left,
1104+
isMinusOffsetTop = _getPanelPosition.isMinusOffsetTop,
1105+
isMinusOffsetLeft = _getPanelPosition.isMinusOffsetLeft;
10721106

1073-
this.top = top;
1074-
this.left = left;
1107+
this.top = isMinusOffsetTop ? top - this.offsetTop : top;
1108+
this.left = isMinusOffsetLeft ? left - this.offsetLeft : left;
10751109
},
10761110
handleDocResize: function handleDocResize() {
10771111
var _this2 = this;
@@ -1680,7 +1714,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
16801714
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__ = __webpack_require__(21);
16811715
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__);
16821716
/* harmony namespace reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__[key]; }) }(__WEBPACK_IMPORT_KEY__));
1683-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_d08203ca_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_index_vue__ = __webpack_require__(73);
1717+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6c6663de_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_index_vue__ = __webpack_require__(73);
16841718
var normalizeComponent = __webpack_require__(1)
16851719
/* script */
16861720

@@ -1697,7 +1731,7 @@ var __vue_scopeId__ = null
16971731
var __vue_module_identifier__ = null
16981732
var Component = normalizeComponent(
16991733
__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue___default.a,
1700-
__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_d08203ca_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_index_vue__["a" /* default */],
1734+
__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_6c6663de_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_index_vue__["a" /* default */],
17011735
__vue_template_functional__,
17021736
__vue_styles__,
17031737
__vue_scopeId__,

lib/date-picker.js

Lines changed: 47 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -287,15 +287,34 @@ exports.default = {
287287
validator: function validator(val) {
288288
return [6, 7].includes(val);
289289
}
290+
},
291+
292+
// since 2.2.0
293+
defaultValue: {
294+
// default date when open the datepicker
295+
},
296+
297+
// since 2.2.0
298+
/* 用于计算 top/left 值时的额外偏移量 */
299+
offsetLeft: {
300+
type: Number,
301+
default: 0
302+
},
303+
304+
offsetTop: {
305+
type: Number,
306+
default: 0
290307
}
291308
},
292309

293310
data: function data() {
294311
var initRenderRows = this.initRenderRows();
312+
var initDate = this.initCurDate();
313+
295314
return {
296315
view: 'day',
297316
selectedDate: '',
298-
curDate: new Date(),
317+
curDate: initDate,
299318
shown: false,
300319
shownClear: false,
301320
rows: initRenderRows,
@@ -332,6 +351,12 @@ exports.default = {
332351
},
333352

334353
methods: {
354+
initCurDate: function initCurDate() {
355+
if ((0, _utils.isDate)(this.defaultValue)) {
356+
return new Date(this.defaultValue);
357+
}
358+
return new Date();
359+
},
335360
handleBeforeEnter: function handleBeforeEnter() {
336361
var _this = this;
337362

@@ -475,10 +500,12 @@ exports.default = {
475500

476501
var _getPanelPosition = (0, _utils.getPanelPosition)(this.panelHeight, this.panelWidth, this.wrapRect),
477502
top = _getPanelPosition.top,
478-
left = _getPanelPosition.left;
503+
left = _getPanelPosition.left,
504+
isMinusOffsetTop = _getPanelPosition.isMinusOffsetTop,
505+
isMinusOffsetLeft = _getPanelPosition.isMinusOffsetLeft;
479506

480-
this.top = top;
481-
this.left = left;
507+
this.top = isMinusOffsetTop ? top - this.offsetTop : top;
508+
this.left = isMinusOffsetLeft ? left - this.offsetLeft : left;
482509
},
483510
handleDocResize: function handleDocResize(e) {
484511
var _this2 = this;
@@ -669,7 +696,7 @@ Object.defineProperty(__webpack_exports__, "__esModule", { value: true });
669696
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__ = __webpack_require__(20);
670697
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__);
671698
/* harmony namespace reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__) if(__WEBPACK_IMPORT_KEY__ !== 'default') (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return __WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue__[key]; }) }(__WEBPACK_IMPORT_KEY__));
672-
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0e95daca_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_index_vue__ = __webpack_require__(37);
699+
/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_588c2595_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_index_vue__ = __webpack_require__(37);
673700
var normalizeComponent = __webpack_require__(1)
674701
/* script */
675702

@@ -686,7 +713,7 @@ var __vue_scopeId__ = null
686713
var __vue_module_identifier__ = null
687714
var Component = normalizeComponent(
688715
__WEBPACK_IMPORTED_MODULE_0__babel_loader_node_modules_vue_loader_lib_selector_type_script_index_0_index_vue___default.a,
689-
__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_0e95daca_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_index_vue__["a" /* default */],
716+
__WEBPACK_IMPORTED_MODULE_1__node_modules_vue_loader_lib_template_compiler_index_id_data_v_588c2595_hasScoped_false_buble_transforms_node_modules_vue_loader_lib_selector_type_template_index_0_index_vue__["a" /* default */],
690717
__vue_template_functional__,
691718
__vue_styles__,
692719
__vue_scopeId__,
@@ -912,33 +939,45 @@ var getPanelPosition = exports.getPanelPosition = function getPanelPosition(pane
912939

913940
var top = 0;
914941
var left = 0;
942+
var isMinusOffsetLeft = false;
943+
var isMinusOffsetTop = false;
915944

916945
var topDiff = docHeight - panelDefTop;
917946
if (topDiff < panelHeight) {
918947
if (wrapTop > panelHeight) {
919948
top = -(panelHeight + 10);
949+
isMinusOffsetTop = true;
920950
} else {
921-
top = topDiff - panelHeight;
951+
// topDiff - panelHeight
952+
// 偏移到上边界
953+
top = -panelHeight;
954+
isMinusOffsetTop = false;
922955
}
923956
} else {
924957
top = wrapHeight;
958+
isMinusOffsetTop = false;
925959
}
926960
// fix #7
927961
var leftDiff = docWidth - panelDefRight;
928962
if (leftDiff < 0) {
929963
if (docWidth > wrapLeft) {
930964
left = leftDiff;
965+
isMinusOffsetLeft = true;
931966
} else {
932967
// 偏移到左边界
933968
left = -panelWidth;
969+
isMinusOffsetLeft = false;
934970
}
935971
} else {
936972
left = 0;
973+
isMinusOffsetLeft = false;
937974
}
938975

939976
return {
940977
top: top,
941-
left: left
978+
left: left,
979+
isMinusOffsetTop: isMinusOffsetTop,
980+
isMinusOffsetLeft: isMinusOffsetLeft
942981
};
943982
};
944983

0 commit comments

Comments
 (0)