@zohodesk/components
Version:
In this Package, we Provide Some Basic Components to Build Web App
715 lines (618 loc) • 31 kB
JavaScript
"use strict";
function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _hoistNonReactStatics = _interopRequireDefault(require("hoist-non-react-statics"));
var _Common = require("../../utils/Common.js");
var _viewPort = _interopRequireDefault(require("../../Popup/viewPort"));
var _PositionMapping = require("../../Popup/PositionMapping.js");
var _ResizeObserver = _interopRequireDefault(require("@zohodesk/virtualizer/lib/commons/ResizeObserver.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
var lastOpenedGroup = [];
var popups = {};
global.closeGroupPopups = function (groupName) {
var groupPopups = popups[groupName] || [];
groupPopups.forEach(function (popup) {
popup.state.isPopupOpen && popup.setState({
isPopupOpen: false,
isPopupReady: false
});
});
};
var defaultState = {
position: 'bottomCenter',
height: '0px',
positions: {},
//{bottomCenter: true, bottomLeft: false, ...}
positionsOffset: {},
//{bottomCenter: {left: ‘’,top: ‘’ }, .....}
targetOffset: {},
//{height: ‘’, width: ‘’,}
popupOffset: {},
//{height: ‘’, width: ‘’,}
isAbsolutePositioningNeeded: true
};
/* eslint-disable react/no-deprecated */
/* eslint-disable react/prop-types */
var Popup = function Popup(Component) {
var group = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'global';
var needResizeHandling = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
var _ref = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {},
_ref$isAbsolutePositi = _ref.isAbsolutePositioningNeeded,
isAbsolutePopup = _ref$isAbsolutePositi === void 0 ? true : _ref$isAbsolutePositi,
_ref$isArrow = _ref.isArrow,
needPopupArrow = _ref$isArrow === void 0 ? false : _ref$isArrow,
_ref$customOrder = _ref.customOrder,
customPositionOrder = _ref$customOrder === void 0 ? [] : _ref$customOrder,
_ref$scrollDebounceTi = _ref.scrollDebounceTime,
popupScrollDebounceTime = _ref$scrollDebounceTi === void 0 ? 0 : _ref$scrollDebounceTi,
_ref$closeOnScroll = _ref.closeOnScroll,
closeOnScrollPopup = _ref$closeOnScroll === void 0 ? false : _ref$closeOnScroll;
var Popup = /*#__PURE__*/function (_React$Component) {
_inherits(Popup, _React$Component);
var _super = _createSuper(Popup);
function Popup(props) {
var _this;
_classCallCheck(this, Popup);
_this = _super.call(this, props);
_this.state = {
isPopupOpen: props.isPopupOpen || false,
position: 'bottomCenter',
height: '0px',
isPopupReady: props.isPopupOpen || false,
positions: {},
//{bottomCenter: true, bottomLeft: false, ...}
positionsOffset: {},
//{bottomCenter: {left: ‘’,top: ‘’ }, .....}
targetOffset: {},
//{height: ‘’, width: ‘’,}
popupOffset: {},
//{height: ‘’, width: ‘’,}
isAbsolutePositioningNeeded: true
};
_this.togglePopup = _this.togglePopup.bind(_assertThisInitialized(_this));
_this.documentClickHandler = _this.documentClickHandler.bind(_assertThisInitialized(_this));
_this.documentClickHandler1 = _this.documentClickHandler1.bind(_assertThisInitialized(_this));
_this.removeClose = _this.removeClose.bind(_assertThisInitialized(_this));
_this.documentKeyupHandler = _this.documentKeyupHandler.bind(_assertThisInitialized(_this));
_this.openPopupOnly = _this.openPopupOnly.bind(_assertThisInitialized(_this));
_this.closePopupOnly = _this.closePopupOnly.bind(_assertThisInitialized(_this));
_this.getTargetRef = _this.getTargetRef.bind(_assertThisInitialized(_this));
_this.getContainerRef = _this.getContainerRef.bind(_assertThisInitialized(_this));
_this.handlePopupPosition = _this.handlePopupPosition.bind(_assertThisInitialized(_this));
_this.handleResize = (0, _Common.debounce)(_this.handleResize.bind(_assertThisInitialized(_this)), 300);
_this.handlePopupResize = _this.handlePopupResize.bind(_assertThisInitialized(_this));
_this.getIsAbsolutePopup = _this.getIsAbsolutePopup.bind(_assertThisInitialized(_this));
_this.getNeedArrow = _this.getNeedArrow.bind(_assertThisInitialized(_this));
_this.getCustomPositionOrder = _this.getCustomPositionOrder.bind(_assertThisInitialized(_this));
_this.handleOpenPopupPositionChange = _this.handleOpenPopupPositionChange.bind(_assertThisInitialized(_this));
_this.getScrollDebounceTime = _this.getScrollDebounceTime.bind(_assertThisInitialized(_this));
_this.getCloseOnScrollPopup = _this.getCloseOnScrollPopup.bind(_assertThisInitialized(_this));
_this.handleCloseLastOpenedGroup = _this.handleCloseLastOpenedGroup.bind(_assertThisInitialized(_this));
_this.handleDocumentMouseDown = _this.handleDocumentMouseDown.bind(_assertThisInitialized(_this));
_this.handleDocumentFocus = _this.handleDocumentFocus.bind(_assertThisInitialized(_this));
_this.handleGetNeedPrevent = _this.handleGetNeedPrevent.bind(_assertThisInitialized(_this));
_this.popupObserver = new _ResizeObserver["default"](_this.handlePopupResize); //dropBoxSize
_this.size = null;
_this.isAbsolutePopup = isAbsolutePopup;
_this.needPopupArrow = needPopupArrow;
_this.customPositionOrder = customPositionOrder;
_this.scrollDebounceTime = popupScrollDebounceTime;
_this.closeOnScroll = closeOnScrollPopup;
var _this$getScrollDeboun = _this.getScrollDebounceTime(_assertThisInitialized(_this)),
scrollDebounceTime = _this$getScrollDeboun.scrollDebounceTime;
_this.handleScroll = (0, _Common.debounce)(_this.handleScroll.bind(_assertThisInitialized(_this)), scrollDebounceTime);
return _this;
}
_createClass(Popup, [{
key: "componentDidMount",
value: function componentDidMount() {
var group = this.getGroup();
var groupPopups = popups[group] || [];
groupPopups.push(this);
popups[group] = groupPopups;
if (Object.keys(popups).length === 1 && groupPopups.length === 1) {
document.addEventListener('click', this.documentClickHandler, false);
document.addEventListener('keyup', this.documentKeyupHandler, false); // document.addEventListener('scroll', this.handleScroll, true);
window.addEventListener('resize', this.handleResize);
document.addEventListener('click', this.documentClickHandler1, true);
document.addEventListener('mousedown', this.handleDocumentMouseDown, true);
document.addEventListener('focus', this.handleDocumentFocus, true);
}
}
}, {
key: "componentWillReceiveProps",
value: function componentWillReceiveProps(nextProps) {
var isPopupOpen = this.state.isPopupOpen;
if (typeof nextProps.isPopupOpen !== 'undefined' && nextProps.isPopupOpen !== isPopupOpen) {
this.setState({
isPopupOpen: nextProps.isPopupOpen,
isPopupReady: nextProps.isPopupOpen
});
}
}
}, {
key: "componentDidUpdate",
value: function componentDidUpdate(prevProps, prevState) {
var isPopupReady = this.state.isPopupReady;
var _ref2 = prevState || {},
_ref2$isPopupReady = _ref2.isPopupReady,
oldStateOpen = _ref2$isPopupReady === void 0 ? false : _ref2$isPopupReady;
var dropElement = this.dropElement;
var propResizeHandling = this.props.needResizeHandling;
if (oldStateOpen !== isPopupReady) {
if (isPopupReady && dropElement && (propResizeHandling !== undefined ? propResizeHandling : needResizeHandling)) {
this.popupObserver.replaceObservationElement(dropElement);
} else if (!isPopupReady) {
this.size = null;
this.popupObserver.disconnect();
}
}
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
var _this2 = this;
var group = this.getGroup();
popups = Object.keys(popups).reduce(function (res, groupName) {
if (groupName === group) {
var groupPopups = popups[group];
var newGroupPopups = groupPopups.filter(function (popup) {
return popup !== _this2;
});
newGroupPopups.length === 0 && lastOpenedGroup.indexOf(group) >= 0 && lastOpenedGroup.splice(lastOpenedGroup.indexOf(group), 1);
res[group] = newGroupPopups;
}
return res;
}, popups);
var noPopups = true;
for (var i in popups) {
if (popups[i].length >= 1) {
noPopups = false;
break;
}
}
if (this.popupObserver) {
this.popupObserver.disconnect();
}
if (noPopups) {
document.removeEventListener('click', this.documentClickHandler);
document.removeEventListener('keyup', this.documentKeyupHandler); // document.removeEventListener('scroll', this.handleScroll);
window.removeEventListener('resize', this.handleResize);
document.removeEventListener('click', this.documentClickHandler1, true);
document.removeEventListener('mousedown', this.handleDocumentMouseDown, true);
document.removeEventListener('focus', this.handleDocumentFocus, true);
}
}
}, {
key: "getGroup",
value: function getGroup() {
var popupGroup = this.props.popupGroup;
return popupGroup || group;
}
}, {
key: "getNeedArrow",
value: function getNeedArrow(popup) {
var isArrow = popup.props.isArrow;
var needPopupArrow = popup.needPopupArrow;
return isArrow !== undefined ? isArrow : needPopupArrow;
}
}, {
key: "getScrollDebounceTime",
value: function getScrollDebounceTime(popup) {
var scrollDebounceTime = popup.props.scrollDebounceTime;
var popupScrollDebounceTime = popup.scrollDebounceTime;
return scrollDebounceTime !== undefined ? scrollDebounceTime : popupScrollDebounceTime;
}
}, {
key: "getCloseOnScrollPopup",
value: function getCloseOnScrollPopup(popup) {
var closeOnScroll = popup.props.closeOnScroll;
var closeOnScrollPopup = popup.closeOnScroll;
return closeOnScroll !== undefined ? closeOnScroll : closeOnScrollPopup;
}
}, {
key: "getIsAbsolutePopup",
value: function getIsAbsolutePopup(popup) {
var isAbsolutePositioningNeeded = popup.props.isAbsolutePositioningNeeded;
var isAbsolutePopup = popup.isAbsolutePopup;
return isAbsolutePositioningNeeded !== undefined ? isAbsolutePositioningNeeded : isAbsolutePopup;
}
}, {
key: "getCustomPositionOrder",
value: function getCustomPositionOrder(popup) {
var _popup$props$customOr = popup.props.customOrder,
customOrder = _popup$props$customOr === void 0 ? [] : _popup$props$customOr;
var customPositionOrder = popup.customPositionOrder;
return customOrder.length !== 0 ? customOrder : customPositionOrder;
}
}, {
key: "togglePopup",
value: function togglePopup(e, defaultPosition) {
var _this3 = this;
var group = this.getGroup();
this.removeClose(e);
var isPopupOpen = this.state.isPopupOpen;
var groupPopups = popups[group] || [];
lastOpenedGroup = !isPopupOpen && lastOpenedGroup.indexOf(group) === -1 ? [group].concat(_toConsumableArray(lastOpenedGroup)) : lastOpenedGroup;
isPopupOpen && lastOpenedGroup.splice(0, 1);
groupPopups.forEach(function (popup) {
if (popup !== _this3 && popup.state.isPopupOpen) {
popup.setState({
isPopupOpen: false,
isPopupReady: false
});
}
});
if (isPopupOpen) {
this.setState({
isPopupOpen: false,
isPopupReady: false
});
} else {
this.handlePopupPosition(defaultPosition);
}
}
}, {
key: "openPopupOnly",
value: function openPopupOnly(e, defaultPosition) {
var group = this.getGroup();
this.removeClose(e);
lastOpenedGroup = lastOpenedGroup.indexOf(group) === -1 ? [group].concat(_toConsumableArray(lastOpenedGroup)) : lastOpenedGroup;
this.handlePopupPosition(defaultPosition);
}
}, {
key: "closePopupOnly",
value: function closePopupOnly(e) {
this.removeClose(e);
lastOpenedGroup.splice(0, 1);
var isPopupOpen = this.state.isPopupOpen;
if (isPopupOpen) {
this.setState({
isPopupOpen: false,
isPopupReady: false
});
}
}
}, {
key: "handleCloseLastOpenedGroup",
value: function handleCloseLastOpenedGroup() {
var groupPopups = lastOpenedGroup.length ? popups[lastOpenedGroup[0]] || [] : [];
lastOpenedGroup.splice(0, 1);
groupPopups.forEach(function (popup) {
popup.state.isPopupOpen && popup.setState({
isPopupOpen: false,
isPopupReady: false
});
});
}
}, {
key: "handleDocumentMouseDown",
value: function handleDocumentMouseDown(e) {
var needPrevent = this.handleGetNeedPrevent(e);
if (needPrevent) {
this.removeClose(e);
}
}
}, {
key: "handleDocumentFocus",
value: function handleDocumentFocus(e) {
var needPrevent = this.handleGetNeedPrevent(e);
if (needPrevent) {
this.removeClose(e);
}
}
}, {
key: "handleGetNeedPrevent",
value: function handleGetNeedPrevent(e) {
var needPrevent = false;
if (lastOpenedGroup.length > 1) {
var target = e.target;
var groupPopups = lastOpenedGroup.length ? popups[lastOpenedGroup[0]] : [];
var openedPopup = null; // eslint-disable-next-line guard-for-in
for (var i in groupPopups) {
var isPopupOpen = groupPopups[i].state.isPopupOpen;
if (isPopupOpen) {
openedPopup = groupPopups[i];
break;
}
}
if (openedPopup) {
var _openedPopup = openedPopup,
dropElement = _openedPopup.dropElement,
placeHolderElement = _openedPopup.placeHolderElement;
var isDropBoxChild = (0, _Common.isDescendant)(dropElement, target);
var isTargetChild = (0, _Common.isDescendant)(placeHolderElement, target); // const isPopupMassUpdateChild = isDescendant(
// massUpdateParent,
// dropElement
// );
if (!isDropBoxChild && !isTargetChild // && isPopupMassUpdateChild
) {
needPrevent = true;
}
}
}
return needPrevent;
}
}, {
key: "documentClickHandler1",
value: function documentClickHandler1(e) {
var needPrevent = this.handleGetNeedPrevent(e);
if (needPrevent) {
this.removeClose(e);
this.handleCloseLastOpenedGroup();
}
}
}, {
key: "documentClickHandler",
value: function documentClickHandler() {
try {
Object.keys(popups).forEach(function (groupName) {
var groupPopups = popups[groupName] || [];
groupPopups.forEach(function (popup) {
popup.state.isPopupOpen && (!popup.props.checkBeforeClose || popup.props.checkBeforeClose && popup.props.checkBeforeClose()) && !(0, _Common.isTextSelected)() && popup.setState({
isPopupOpen: false,
isPopupReady: false
});
});
});
lastOpenedGroup = [];
} catch (e) {// eslint-disable-next-line no-console
//console.error('popup component not unmounted properly', e);
}
}
}, {
key: "documentKeyupHandler",
value: function documentKeyupHandler(e) {
try {
if (e.keyCode === 27) {
this.handleCloseLastOpenedGroup();
}
} catch (e) {// eslint-disable-next-line no-console
//console.log('error', e);
}
}
}, {
key: "removeClose",
value: function removeClose(e) {
// e && e.preventDefault && e.preventDefault();
(0, _Common.cancelBubblingEffect)(e);
}
}, {
key: "handlePopupPosition",
value: function handlePopupPosition() {
var _this4 = this;
var defaultPosition = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'bottomCenter';
var isResizeHandling = arguments.length > 1 ? arguments[1] : undefined;
// isResizeHandling --->>> Window resize and dropBox resize
var _ref3 = this.context || {},
direction = _ref3.direction;
var placeHolderElement = this.placeHolderElement,
dropElement = this.dropElement;
var needArrow = this.getNeedArrow(this);
var isAbsolute = this.getIsAbsolutePopup(this);
var customOrder = this.getCustomPositionOrder(this);
if (direction === 'rtl') {
defaultPosition = isAbsolute ? _PositionMapping.rtlAbsolutePositionMapping[defaultPosition] : _PositionMapping.rtlFixedPositionMapping[defaultPosition];
} else {
defaultPosition = isAbsolute ? _PositionMapping.absolutePositionMapping[defaultPosition] : defaultPosition;
}
if (!placeHolderElement && !dropElement) {
this.setState({
isPopupOpen: true,
isPopupReady: true
});
return;
}
var setPosition = function setPosition() {
requestAnimationFrame(function () {
var placeHolderElement = _this4.placeHolderElement,
dropElement = _this4.dropElement;
var _this4$state = _this4.state,
position = _this4$state.position,
isPopupReady = _this4$state.isPopupReady;
var scrollContainer = placeHolderElement.closest('[data-scroll=true]') || document.body;
var betterPosition = _viewPort["default"].betterView(dropElement, placeHolderElement, defaultPosition, scrollContainer, {
needArrow: needArrow,
isAbsolute: isAbsolute,
customOrder: customOrder
});
var _ref4 = betterPosition || {},
view = _ref4.view,
views = _ref4.views,
viewsOffset = _ref4.viewsOffset,
targetOffset = _ref4.targetOffset,
popupOffset = _ref4.popupOffset;
if (position !== view || !isPopupReady) {
_this4.setState({
isPopupReady: true,
position: view,
positions: views,
positionsOffset: viewsOffset,
targetOffset: targetOffset,
popupOffset: popupOffset,
isAbsolutePositioningNeeded: isAbsolute
});
}
});
};
if (isResizeHandling) {
setPosition();
} else {
this.defaultPosition = defaultPosition;
this.setState({
isPopupOpen: true,
isPopupReady: false
}, setPosition);
}
}
}, {
key: "handleOpenPopupPositionChange",
value: function handleOpenPopupPositionChange() {
var _this5 = this;
Object.keys(popups).forEach(function (groupName) {
var groupPopups = popups[groupName] || [];
groupPopups.forEach(function (popup) {
if (popup.state.isPopupOpen) {
var placeHolderElement = popup.placeHolderElement,
dropElement = popup.dropElement,
defaultPosition = popup.defaultPosition;
var _popup$state = popup.state,
position = _popup$state.position,
_popup$state$position = _popup$state.positionsOffset,
positionsOffset = _popup$state$position === void 0 ? {} : _popup$state$position;
if (placeHolderElement && dropElement) {
var scrollContainer = placeHolderElement.closest('[data-scroll=true]') || document.body;
requestAnimationFrame(function () {
var needArrow = _this5.getNeedArrow(popup);
var isAbsolute = _this5.getIsAbsolutePopup(popup);
var customOrder = _this5.getCustomPositionOrder(popup);
var betterPosition = _viewPort["default"].betterView(dropElement, placeHolderElement, defaultPosition, scrollContainer, {
needArrow: needArrow,
isAbsolute: isAbsolute,
customOrder: customOrder
});
var _ref5 = betterPosition || {},
view = _ref5.view,
views = _ref5.views,
_ref5$viewsOffset = _ref5.viewsOffset,
viewsOffset = _ref5$viewsOffset === void 0 ? {} : _ref5$viewsOffset,
targetOffset = _ref5.targetOffset,
popupOffset = _ref5.popupOffset;
var _ref6 = positionsOffset[position] || {},
_ref6$left = _ref6.left,
oldLeft = _ref6$left === void 0 ? '' : _ref6$left,
_ref6$top = _ref6.top,
oldTop = _ref6$top === void 0 ? '' : _ref6$top;
var _ref7 = viewsOffset[view] || {},
_ref7$left = _ref7.left,
left = _ref7$left === void 0 ? '' : _ref7$left,
_ref7$top = _ref7.top,
top = _ref7$top === void 0 ? '' : _ref7$top;
var changeState = isAbsolute ? position !== view : oldLeft !== left || oldTop !== top; // let isInViewPort = viewPort.isInViewPort(
// placeHolderElement,
// scrollContainer
// );
if (changeState) {
popup.setState({
position: view,
positions: views,
positionsOffset: viewsOffset,
targetOffset: targetOffset,
popupOffset: popupOffset,
isAbsolutePositioningNeeded: isAbsolute
});
} // if (!isInViewPort && !isAbsolute) {
// popup.setState({ isPopupOpen: false, isPopupReady: false });
// } else if (view && changeState) {
// popup.setState({
// position: view,
// positions: views,
// positionsOffset: viewsOffset,
// targetOffset,
// popupOffset,
// isAbsolutePositioningNeeded: isAbsolute
// });
// }
});
}
}
});
});
}
}, {
key: "handleResize",
value: function handleResize() {
this.handleOpenPopupPositionChange();
}
}, {
key: "handleScroll",
value: function handleScroll(e) {
// this.handleOpenPopupPositionChange();
var _this$getCloseOnScrol = this.getCloseOnScrollPopup(this),
closeOnScroll = _this$getCloseOnScrol.closeOnScroll;
var isPopupReady = this.state.isPopupReady;
if (isPopupReady) {
console.log('onscrollPopupREady');
}
if (isPopupReady && closeOnScroll) {
console.log(this, 'handle Scroll');
this.togglePopup(e);
}
}
}, {
key: "handlePopupResize",
value: function handlePopupResize(popupSize) {
var height = popupSize.height,
width = popupSize.width;
var _ref8 = this.size || {},
_ref8$height = _ref8.height,
oldHeight = _ref8$height === void 0 ? 0 : _ref8$height,
_ref8$width = _ref8.width,
oldWidth = _ref8$width === void 0 ? 0 : _ref8$width;
var _this$state = this.state,
isPopupReady = _this$state.isPopupReady,
position = _this$state.position;
if (isPopupReady && this.size && (oldHeight !== height || width !== oldWidth)) {
this.handlePopupPosition(position, true);
}
this.size = popupSize;
}
}, {
key: "getTargetRef",
value: function getTargetRef(el) {
this.placeHolderElement = el;
}
}, {
key: "getContainerRef",
value: function getContainerRef(el) {
this.dropElement = el;
}
}, {
key: "render",
value: function render() {
var _this$state2 = this.state,
isPopupReady = _this$state2.isPopupReady,
isPopupOpen = _this$state2.isPopupOpen;
var localState = isPopupReady ? this.state : {};
return /*#__PURE__*/_react["default"].createElement(Component, _extends({}, this.props, this.state, {
openPopupOnly: this.openPopupOnly,
closePopupOnly: this.closePopupOnly,
togglePopup: this.togglePopup,
removeClose: this.removeClose,
getTargetRef: this.getTargetRef,
getContainerRef: this.getContainerRef
}));
}
}]);
return Popup;
}(_react["default"].Component);
Popup.displayName = Component.displayName || Component.name || Popup.name;
Popup.contextTypes = {
direction: _propTypes["default"].string
};
return (0, _hoistNonReactStatics["default"])(Popup, Component);
};
var _default = Popup;
exports["default"] = _default;