Latest updates from IceHrmPro
This commit is contained in:
83
web/node_modules/antd/es/affix/utils.js
generated
vendored
Normal file
83
web/node_modules/antd/es/affix/utils.js
generated
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
import addEventListener from "rc-util/es/Dom/addEventListener";
|
||||
export function getTargetRect(target) {
|
||||
return target !== window ? target.getBoundingClientRect() : {
|
||||
top: 0,
|
||||
bottom: window.innerHeight
|
||||
};
|
||||
}
|
||||
export function getFixedTop(placeholderReact, targetRect, offsetTop) {
|
||||
if (offsetTop !== undefined && targetRect.top > placeholderReact.top - offsetTop) {
|
||||
return offsetTop + targetRect.top;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
}
|
||||
export function getFixedBottom(placeholderReact, targetRect, offsetBottom) {
|
||||
if (offsetBottom !== undefined && targetRect.bottom < placeholderReact.bottom + offsetBottom) {
|
||||
var targetBottomOffset = window.innerHeight - targetRect.bottom;
|
||||
return offsetBottom + targetBottomOffset;
|
||||
}
|
||||
|
||||
return undefined;
|
||||
} // ======================== Observer ========================
|
||||
|
||||
var TRIGGER_EVENTS = ['resize', 'scroll', 'touchstart', 'touchmove', 'touchend', 'pageshow', 'load'];
|
||||
var observerEntities = [];
|
||||
export function getObserverEntities() {
|
||||
// Only used in test env. Can be removed if refactor.
|
||||
return observerEntities;
|
||||
}
|
||||
export function addObserveTarget(target, affix) {
|
||||
if (!target) return;
|
||||
var entity = observerEntities.find(function (item) {
|
||||
return item.target === target;
|
||||
});
|
||||
|
||||
if (entity) {
|
||||
entity.affixList.push(affix);
|
||||
} else {
|
||||
entity = {
|
||||
target: target,
|
||||
affixList: [affix],
|
||||
eventHandlers: {}
|
||||
};
|
||||
observerEntities.push(entity); // Add listener
|
||||
|
||||
TRIGGER_EVENTS.forEach(function (eventName) {
|
||||
entity.eventHandlers[eventName] = addEventListener(target, eventName, function () {
|
||||
entity.affixList.forEach(function (targetAffix) {
|
||||
targetAffix.lazyUpdatePosition();
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
export function removeObserveTarget(affix) {
|
||||
var observerEntity = observerEntities.find(function (oriObserverEntity) {
|
||||
var hasAffix = oriObserverEntity.affixList.some(function (item) {
|
||||
return item === affix;
|
||||
});
|
||||
|
||||
if (hasAffix) {
|
||||
oriObserverEntity.affixList = oriObserverEntity.affixList.filter(function (item) {
|
||||
return item !== affix;
|
||||
});
|
||||
}
|
||||
|
||||
return hasAffix;
|
||||
});
|
||||
|
||||
if (observerEntity && observerEntity.affixList.length === 0) {
|
||||
observerEntities = observerEntities.filter(function (item) {
|
||||
return item !== observerEntity;
|
||||
}); // Remove listener
|
||||
|
||||
TRIGGER_EVENTS.forEach(function (eventName) {
|
||||
var handler = observerEntity.eventHandlers[eventName];
|
||||
|
||||
if (handler && handler.remove) {
|
||||
handler.remove();
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user