45 lines
1.5 KiB
Plaintext
45 lines
1.5 KiB
Plaintext
![]() |
function handleScroll(event, ownerComponent) {
|
||
|
var currentScroll = event.detail.scrollTop;
|
||
|
var dataset = event.instance.getDataset();
|
||
|
var elementSize = dataset.elementsize,
|
||
|
monthList = dataset.monthlist;
|
||
|
if (!elementSize) {
|
||
|
return;
|
||
|
}
|
||
|
// 组件如果内嵌在 slot 里, 一定会被渲染出来, 但是此时 cellHight 为 0
|
||
|
if (elementSize.cellHight === 0) {
|
||
|
ownerComponent.callMethod('measurement');
|
||
|
return;
|
||
|
}
|
||
|
var instance = ownerComponent.selectComponent('.ant-calendar-sticky-title');
|
||
|
var sticky = ownerComponent.selectComponent('.ant-calendar-sticky');
|
||
|
if (sticky) {
|
||
|
sticky.setStyle({
|
||
|
display: currentScroll < 0 ? 'none' : 'block'
|
||
|
});
|
||
|
}
|
||
|
var monthHeight = elementSize.monthTitleHeight;
|
||
|
var paddingHeight = elementSize.paddingHeight;
|
||
|
var cellHeight = elementSize.cellHight;
|
||
|
var heightList = monthList.map(function (p) {
|
||
|
return monthHeight + cellHeight * p.cells.length / 7;
|
||
|
});
|
||
|
for (var i = 0; i < heightList.length; i++) {
|
||
|
if (currentScroll < heightList[i]) {
|
||
|
var topHeight = currentScroll - heightList[i] + monthHeight - paddingHeight;
|
||
|
topHeight = Math.max(topHeight, 0);
|
||
|
instance.setStyle({
|
||
|
transform: "translateY(-".concat(topHeight, "px)")
|
||
|
});
|
||
|
ownerComponent.callMethod('setCurrentMonth', {
|
||
|
month: topHeight > monthHeight * 0.8 ? i + 1 : i
|
||
|
});
|
||
|
break;
|
||
|
} else {
|
||
|
currentScroll = currentScroll - heightList[i];
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
export default {
|
||
|
handleScroll: handleScroll
|
||
|
};
|