@zohodesk/popups
Advanced tools
Comparing version 1.0.9 to 1.0.10
@@ -1,9 +0,3 @@ | ||
import _extends from 'babel-runtime/helpers/extends'; | ||
import _Object$getPrototypeOf from 'babel-runtime/core-js/object/get-prototype-of'; | ||
import _classCallCheck from 'babel-runtime/helpers/classCallCheck'; | ||
import _createClass from 'babel-runtime/helpers/createClass'; | ||
import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn'; | ||
import _inherits from 'babel-runtime/helpers/inherits'; | ||
import _Object$assign from 'babel-runtime/core-js/object/assign'; | ||
import _Object$keys from 'babel-runtime/core-js/object/keys'; | ||
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); } | ||
import React from 'react'; | ||
@@ -13,270 +7,249 @@ import ReactDOM from 'react-dom'; | ||
import viewPort from '../ViewPort'; | ||
let popups = {}; | ||
var popups = {}; | ||
var closeGroupPopups = function closeGroupPopups() { | ||
var groupName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'global'; | ||
var groupPopups = popups[groupName] || []; | ||
groupPopups.forEach(function (popup) { | ||
popup.state.isPopupOpen && resetPopupState(popup); | ||
}); | ||
const closeGroupPopups = function () { | ||
let groupName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'global'; | ||
let groupPopups = popups[groupName] || []; | ||
groupPopups.forEach(popup => { | ||
popup.state.isPopupOpen && resetPopupState(popup); | ||
}); | ||
}; | ||
var resetPopupState = function resetPopupState(popup) { | ||
popup.setState({ | ||
isPopupOpen: false, | ||
isPopupReady: false, | ||
position: 'bottom' | ||
}); | ||
const resetPopupState = popup => { | ||
popup.setState({ | ||
isPopupOpen: false, | ||
isPopupReady: false, | ||
position: 'bottom' | ||
}); | ||
}; | ||
var resetAllPopupState = function resetAllPopupState(popup, filterGroupName) { | ||
_Object$keys(popups).forEach(closeGroupPopups); | ||
const resetAllPopupState = (popup, filterGroupName) => { | ||
Object.keys(popups).forEach(closeGroupPopups); | ||
}; | ||
var Popup = function Popup(Component) { | ||
var group = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'global'; | ||
var customStyles = arguments[2]; | ||
const Popup = function (Component) { | ||
let group = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'global'; | ||
let customStyles = arguments.length > 2 ? arguments[2] : undefined; | ||
const popupStyles = Object.assign({}, customStyles); | ||
group = group || 'global'; | ||
class Popup extends React.Component { | ||
constructor(props) { | ||
super(props); | ||
this.state = { | ||
isPopupOpen: props.isPopupOpen || false, | ||
isPopupReady: props.isPopupReady || false, | ||
position: props.position || 'bottom', | ||
fixedPosition: {} | ||
}; | ||
this.popupGroup = props.group || group; | ||
this.childGroup = props.childGroup; | ||
this.stopCloseEvent = this.stopCloseEvent.bind(this); | ||
this.documentKeyupHandler = this.documentKeyupHandler.bind(this); | ||
this.documentClickHandler = this.documentClickHandler.bind(this); | ||
this.togglePopup = this.togglePopup.bind(this); | ||
this.openPopupOnly = this.openPopupOnly.bind(this); | ||
this.closePopupOnly = this.closePopupOnly.bind(this); | ||
this.setRef = this.setRef.bind(this); //this.popupName = popupName; | ||
} | ||
var popupStyles = _Object$assign({}, customStyles); | ||
group = group || 'global'; | ||
setRef(el) { | ||
this.elementRef = el; | ||
} | ||
var Popup = function (_React$Component) { | ||
_inherits(Popup, _React$Component); | ||
UNSAFE_componentWillMount(nextProps) { | ||
let state = null; | ||
function Popup(props) { | ||
_classCallCheck(this, Popup); | ||
if (typeof nextProps.isPopupOpen !== "undefined" && nextProps.isPopupOpen !== this.state.isPopupOpen) { | ||
state = state || {}; | ||
state.isPopupOpen = nextProps.isPopupOpen; | ||
} | ||
var _this = _possibleConstructorReturn(this, (Popup.__proto__ || _Object$getPrototypeOf(Popup)).call(this, props)); | ||
if (typeof nextProps.isPopupReady !== "undefined" && nextProps.isPopupReady !== this.state.isPopupReady) { | ||
state = state || {}; | ||
state.isPopupReady = nextProps.isPopupReady; | ||
} | ||
_this.state = { | ||
isPopupOpen: props.isPopupOpen || false, | ||
isPopupReady: props.isPopupReady || false, | ||
position: props.position || 'bottom', | ||
fixedPosition: {} | ||
}; | ||
if (typeof nextProps.position !== "undefined" && nextProps.position !== this.state.position) { | ||
state = state || {}; | ||
state.position = nextProps.position; | ||
} | ||
_this.popupGroup = props.group || group; | ||
_this.childGroup = props.childGroup; | ||
if (state) { | ||
this.setState(state); | ||
} | ||
} | ||
_this.stopCloseEvent = _this.stopCloseEvent.bind(_this); | ||
_this.documentKeyupHandler = _this.documentKeyupHandler.bind(_this); | ||
_this.documentClickHandler = _this.documentClickHandler.bind(_this); | ||
componentDidMount() { | ||
let groupPopups = popups[this.popupGroup] || []; | ||
groupPopups.push(this); | ||
popups[this.popupGroup] = groupPopups; | ||
_this.togglePopup = _this.togglePopup.bind(_this); | ||
_this.openPopupOnly = _this.openPopupOnly.bind(_this); | ||
_this.closePopupOnly = _this.closePopupOnly.bind(_this); | ||
if (groupPopups.length == 1) { | ||
global.document.addEventListener('click', this.documentClickHandler, false); | ||
global.document.addEventListener('keyup', this.documentKeyupHandler, false); | ||
} | ||
} | ||
_this.setRef = _this.setRef.bind(_this); | ||
//this.popupName = popupName; | ||
return _this; | ||
} | ||
componentWillUnmount() { | ||
popups = Object.keys(popups).reduce((res, groupName) => { | ||
if (groupName == this.popupGroup) { | ||
let groupPopups = popups[this.popupGroup]; | ||
let newGroupPopups = groupPopups.filter(popup => { | ||
return popup !== this; | ||
}); | ||
res[this.popupGroup] = newGroupPopups; | ||
} | ||
_createClass(Popup, [{ | ||
key: 'setRef', | ||
value: function setRef(el) { | ||
this.elementRef = el; | ||
} | ||
}, { | ||
key: 'UNSAFE_componentWillMount', | ||
value: function UNSAFE_componentWillMount(nextProps) { | ||
var state = null; | ||
if (typeof nextProps.isPopupOpen !== "undefined" && nextProps.isPopupOpen !== this.state.isPopupOpen) { | ||
state = state || {}; | ||
state.isPopupOpen = nextProps.isPopupOpen; | ||
} | ||
if (typeof nextProps.isPopupReady !== "undefined" && nextProps.isPopupReady !== this.state.isPopupReady) { | ||
state = state || {}; | ||
state.isPopupReady = nextProps.isPopupReady; | ||
} | ||
if (typeof nextProps.position !== "undefined" && nextProps.position !== this.state.position) { | ||
state = state || {}; | ||
state.position = nextProps.position; | ||
} | ||
if (state) { | ||
this.setState(state); | ||
} | ||
} | ||
}, { | ||
key: 'componentDidMount', | ||
value: function componentDidMount() { | ||
var groupPopups = popups[this.popupGroup] || []; | ||
groupPopups.push(this); | ||
popups[this.popupGroup] = groupPopups; | ||
if (groupPopups.length == 1) { | ||
global.document.addEventListener('click', this.documentClickHandler, false); | ||
global.document.addEventListener('keyup', this.documentKeyupHandler, false); | ||
} | ||
} | ||
}, { | ||
key: 'componentWillUnmount', | ||
value: function componentWillUnmount() { | ||
var _this2 = this; | ||
return res; | ||
}, popups); | ||
popups = _Object$keys(popups).reduce(function (res, groupName) { | ||
if (groupName == _this2.popupGroup) { | ||
var groupPopups = popups[_this2.popupGroup]; | ||
var newGroupPopups = groupPopups.filter(function (popup) { | ||
return popup !== _this2; | ||
}); | ||
res[_this2.popupGroup] = newGroupPopups; | ||
} | ||
return res; | ||
}, popups); | ||
if (popups.length == 0) { | ||
global.document.removeEventListener('click', this.documentClickHandler); | ||
global.document.removeEventListener('keyup', this.documentKeyupHandler); | ||
} | ||
} | ||
if (popups.length == 0) { | ||
global.document.removeEventListener('click', this.documentClickHandler); | ||
global.document.removeEventListener('keyup', this.documentKeyupHandler); | ||
} | ||
} | ||
}, { | ||
key: 'togglePopup', | ||
value: function togglePopup(e, dropElement, placeHoldeEl, isPopupOpen) { | ||
var _this3 = this; | ||
togglePopup(e, dropElement, placeHoldeEl, isPopupOpen) { | ||
this.stopCloseEvent(e); //Close the all other opes | ||
this.stopCloseEvent(e); | ||
let groupPopups = popups[this.popupGroup]; | ||
groupPopups.forEach(popup => { | ||
if (popup != this) { | ||
popup.state.isPopupOpen && popup.setState({ | ||
isPopupOpen: false, | ||
position: 'bottom' | ||
}); | ||
} | ||
}); | ||
this.setState({ | ||
isPopupOpen: isPopupOpen ? isPopupOpen : !this.state.isPopupOpen, | ||
isPopupReady: false, | ||
position: 'bottom' | ||
}, () => { | ||
if (!dropElement || !placeHoldeEl) { | ||
return; | ||
} | ||
//Close the all other opes | ||
var groupPopups = popups[this.popupGroup]; | ||
groupPopups.forEach(function (popup) { | ||
if (popup != _this3) { | ||
popup.state.isPopupOpen && popup.setState({ | ||
isPopupOpen: false, | ||
position: 'bottom' | ||
}); | ||
} | ||
}); | ||
; | ||
requestAnimationFrame(() => { | ||
var frame = this.props.frameId ? document.getElementById(this.props.frameId) : document.getElementById("container"); | ||
let defaultPosition = this.props.defaultPosition || "bottom"; | ||
let betterPosition = viewPort.betterView(dropElement, placeHoldeEl, defaultPosition, frame); //Auto predict views | ||
this.setState({ isPopupOpen: isPopupOpen ? isPopupOpen : !this.state.isPopupOpen, isPopupReady: false, position: 'bottom' }, function () { | ||
if (betterPosition.view) { | ||
this.setState({ | ||
isPopupReady: true, | ||
position: betterPosition.view, | ||
fixedPosition: betterPosition.fixedPosition | ||
}); | ||
} else { | ||
this.setState({ | ||
isPopupReady: true, | ||
position: 'bottom' | ||
}); | ||
} | ||
}); | ||
}); | ||
} | ||
if (!dropElement || !placeHoldeEl) { | ||
return; | ||
}; | ||
openPopupOnly(e, dropElement, placeHoldeEl) { | ||
this.togglePopup(e, dropElement, placeHoldeEl, true); | ||
/*this.stopCloseEvent(e); | ||
let groupPopups = popups[this.popupGroup]; | ||
groupPopups.forEach(popup => { | ||
if (popup != this) { | ||
popup.state.isPopupOpen && | ||
popup.setState({ | ||
isPopupOpen: false, | ||
position: 'bottom' | ||
}); | ||
} | ||
}); | ||
this.setState({ isPopupOpen: true , isPopupReady : false , position: 'bottom' },()=>{ | ||
if( !dropElement || !placeHoldeEl ){ return; }; | ||
requestAnimationFrame(()=>{ | ||
var frame = this.props.frameId ? document.getElementById(this.props.frameId) : document.getElementById("container"); | ||
let defaultPosition = this.props.defaultPosition || "bottomCenter"; | ||
let betterPosition = viewPort.betterView( dropElement , placeHoldeEl , defaultPosition , frame); | ||
//Auto predict views | ||
if( betterPosition.view ) { | ||
this.setState({ isPopupReady : true , position: betterPosition.view }); | ||
}else{ | ||
this.setState({ isPopupReady : true , position: defaultPosition }); | ||
} | ||
}) | ||
});*/ | ||
} | ||
requestAnimationFrame(function () { | ||
var frame = _this3.props.frameId ? document.getElementById(_this3.props.frameId) : document.getElementById("container"); | ||
var defaultPosition = _this3.props.defaultPosition || "bottom"; | ||
var betterPosition = viewPort.betterView(dropElement, placeHoldeEl, defaultPosition, frame); | ||
closePopupOnly(e) { | ||
this.stopCloseEvent(e); | ||
resetPopupState(this); | ||
} | ||
//Auto predict views | ||
if (betterPosition.view) { | ||
_this3.setState({ isPopupReady: true, position: betterPosition.view, fixedPosition: betterPosition.fixedPosition }); | ||
} else { | ||
_this3.setState({ isPopupReady: true, position: 'bottom' }); | ||
} | ||
}); | ||
}); | ||
} | ||
}, { | ||
key: 'openPopupOnly', | ||
value: function openPopupOnly(e, dropElement, placeHoldeEl) { | ||
documentClickHandler(e) { | ||
try { | ||
resetAllPopupState(); | ||
} catch (e) { | ||
console.error('error', e); | ||
} | ||
} | ||
this.togglePopup(e, dropElement, placeHoldeEl, true); | ||
documentKeyupHandler(e) { | ||
try { | ||
if (e.keyCode == 27) { | ||
resetAllPopupState(); | ||
} | ||
} catch (e) { | ||
console.log('error', e); | ||
} | ||
} | ||
/*this.stopCloseEvent(e); | ||
let groupPopups = popups[this.popupGroup]; | ||
groupPopups.forEach(popup => { | ||
if (popup != this) { | ||
popup.state.isPopupOpen && | ||
popup.setState({ | ||
isPopupOpen: false, | ||
position: 'bottom' | ||
}); | ||
} | ||
}); | ||
this.setState({ isPopupOpen: true , isPopupReady : false , position: 'bottom' },()=>{ | ||
if( !dropElement || !placeHoldeEl ){ return; }; | ||
requestAnimationFrame(()=>{ | ||
var frame = this.props.frameId ? document.getElementById(this.props.frameId) : document.getElementById("container"); | ||
let defaultPosition = this.props.defaultPosition || "bottomCenter"; | ||
let betterPosition = viewPort.betterView( dropElement , placeHoldeEl , defaultPosition , frame); | ||
//Auto predict views | ||
if( betterPosition.view ) { | ||
this.setState({ isPopupReady : true , position: betterPosition.view }); | ||
}else{ | ||
this.setState({ isPopupReady : true , position: defaultPosition }); | ||
} | ||
}) | ||
});*/ | ||
} | ||
}, { | ||
key: 'closePopupOnly', | ||
value: function closePopupOnly(e) { | ||
this.stopCloseEvent(e); | ||
resetPopupState(this); | ||
} | ||
}, { | ||
key: 'documentClickHandler', | ||
value: function documentClickHandler(e) { | ||
try { | ||
resetAllPopupState(); | ||
} catch (e) { | ||
console.error('error', e); | ||
} | ||
} | ||
}, { | ||
key: 'documentKeyupHandler', | ||
value: function documentKeyupHandler(e) { | ||
try { | ||
if (e.keyCode == 27) { | ||
resetAllPopupState(); | ||
} | ||
} catch (e) { | ||
console.log('error', e); | ||
} | ||
} | ||
}, { | ||
key: 'stopCloseEvent', | ||
value: function stopCloseEvent(e) { | ||
e.stopPropagation && e.stopPropagation(); | ||
e.nativeEvent && e.nativeEvent.stopImmediatePropagation && e.nativeEvent.stopImmediatePropagation(); | ||
if (this.childGroup) { | ||
closeGroupPopups(this.childGroup); | ||
} | ||
} | ||
}, { | ||
key: 'render', | ||
value: function render() { | ||
var _state = this.state, | ||
position = _state.position, | ||
isPopupOpen = _state.isPopupOpen, | ||
isPopupReady = _state.isPopupReady; | ||
stopCloseEvent(e) { | ||
e.stopPropagation && e.stopPropagation(); | ||
e.nativeEvent && e.nativeEvent.stopImmediatePropagation && e.nativeEvent.stopImmediatePropagation(); | ||
var positionStyle = position ? popupStyles[position] || '' : ''; | ||
if (this.childGroup) { | ||
closeGroupPopups(this.childGroup); | ||
} | ||
} | ||
var arrowStyle = popupStyles.arrow + ' ' + positionStyle; | ||
var popupOpenStyle = isPopupOpen ? popupStyles.isOpen + ' ' + positionStyle : '' + popupStyles.isHide; | ||
var popupReadyStyle = isPopupReady ? '' + popupStyles.isReady : ''; | ||
var contentStyle = popupStyles.content + ' ' + popupOpenStyle + ' ' + popupReadyStyle; | ||
render() { | ||
let { | ||
position, | ||
isPopupOpen, | ||
isPopupReady | ||
} = this.state; | ||
let positionStyle = position ? popupStyles[position] || '' : ''; | ||
let arrowStyle = `${popupStyles.arrow} ${positionStyle}`; | ||
let popupOpenStyle = isPopupOpen ? `${popupStyles.isOpen} ${positionStyle}` : `${popupStyles.isHide}`; | ||
let popupReadyStyle = isPopupReady ? `${popupStyles.isReady}` : ''; | ||
let contentStyle = `${popupStyles.content} ${popupOpenStyle} ${popupReadyStyle}`; | ||
return /*#__PURE__*/React.createElement(Component, _extends({ | ||
ref: this.setRef | ||
}, this.props, this.state, { | ||
openPopupOnly: this.openPopupOnly, | ||
closePopupOnly: this.closePopupOnly, | ||
togglePopup: this.togglePopup, | ||
isPopupOpen: this.state.isPopupOpen, | ||
removeClose: this.stopCloseEvent, | ||
popupStyle: { | ||
arrow: arrowStyle, | ||
content: contentStyle | ||
}, | ||
popupStyles: popupStyles | ||
})); | ||
} | ||
return React.createElement(Component, _extends({ | ||
ref: this.setRef | ||
}, this.props, this.state, { | ||
openPopupOnly: this.openPopupOnly, | ||
closePopupOnly: this.closePopupOnly, | ||
togglePopup: this.togglePopup, | ||
isPopupOpen: this.state.isPopupOpen, | ||
removeClose: this.stopCloseEvent, | ||
popupStyle: { | ||
arrow: arrowStyle, | ||
content: contentStyle | ||
}, | ||
popupStyles: popupStyles | ||
})); | ||
} | ||
}]); | ||
} | ||
return Popup; | ||
}(React.Component); | ||
return hoistStatics(Popup, Component); | ||
return hoistStatics(Popup, Component); | ||
}; | ||
@@ -283,0 +256,0 @@ |
@@ -1,325 +0,337 @@ | ||
import _Object$keys from 'babel-runtime/core-js/object/keys'; | ||
var viewPort = { | ||
frameRelativeRects: function frameRelativeRects(el, customFrame) { | ||
if (!el) { | ||
return; | ||
} | ||
let viewPort = { | ||
frameRelativeRects: (el, customFrame) => { | ||
if (!el) { | ||
return; | ||
} | ||
var rect = el.getBoundingClientRect(); //Target Element | ||
var documentEle = document.documentElement; //Body&HTML | ||
var rect = el.getBoundingClientRect(); //Target Element | ||
var customFrameRect = { | ||
top: 0, | ||
left: 0, | ||
right: documentEle.clientWidth, | ||
bottom: documentEle.clientHeight, | ||
height: documentEle.clientHeight, | ||
width: documentEle.clientWidth, | ||
x: 0, | ||
y: 0 | ||
}; | ||
if (customFrame) { | ||
customFrameRect = customFrame.getBoundingClientRect(); | ||
} | ||
let documentEle = document.documentElement; //Body&HTML | ||
var newReact = { | ||
top: rect.top - customFrameRect.top, | ||
left: rect.left - customFrameRect.left, | ||
height: rect.height, | ||
width: rect.width | ||
}; | ||
var customFrameRect = { | ||
top: 0, | ||
left: 0, | ||
right: documentEle.clientWidth, | ||
bottom: documentEle.clientHeight, | ||
height: documentEle.clientHeight, | ||
width: documentEle.clientWidth, | ||
x: 0, | ||
y: 0 | ||
}; | ||
newReact.bottom = newReact.top + newReact.height; | ||
newReact.right = newReact.left + newReact.width; | ||
if (customFrame) { | ||
customFrameRect = customFrame.getBoundingClientRect(); | ||
} | ||
newReact.x = newReact.left; | ||
newReact.y = newReact.top; | ||
let newReact = { | ||
top: rect.top - customFrameRect.top, | ||
left: rect.left - customFrameRect.left, | ||
height: rect.height, | ||
width: rect.width | ||
}; | ||
newReact.bottom = newReact.top + newReact.height; | ||
newReact.right = newReact.left + newReact.width; | ||
newReact.x = newReact.left; | ||
newReact.y = newReact.top; | ||
let rectGap = { | ||
top: newReact.top, | ||
left: newReact.left, | ||
bottom: customFrameRect.height - newReact.bottom, | ||
right: customFrameRect.width - newReact.right | ||
}; | ||
rectGap.center = { | ||
top: rectGap.top + newReact.height / 2, | ||
left: rectGap.left + newReact.width / 2, | ||
bottom: rectGap.bottom + newReact.height / 2, | ||
right: rectGap.right + newReact.width / 2 | ||
}; | ||
let adjustments = {}; | ||
var rectGap = { | ||
top: newReact.top, | ||
left: newReact.left, | ||
bottom: customFrameRect.height - newReact.bottom, | ||
right: customFrameRect.width - newReact.right | ||
}; | ||
if (newReact.top < 0) { | ||
adjustments.top = Math.abs(newReact.top); | ||
} | ||
rectGap.center = { | ||
top: rectGap.top + newReact.height / 2, | ||
left: rectGap.left + newReact.width / 2, | ||
bottom: rectGap.bottom + newReact.height / 2, | ||
right: rectGap.right + newReact.width / 2 | ||
}; | ||
if (newReact.left < 0) { | ||
adjustments.left = Math.abs(newReact.left); | ||
} | ||
var adjustments = {}; | ||
if (newReact.top < 0) { | ||
adjustments.top = Math.abs(newReact.top); | ||
} | ||
if (newReact.left < 0) { | ||
adjustments.left = Math.abs(newReact.left); | ||
} | ||
if (newReact.bottom > customFrameRect.height) { | ||
adjustments.bottom = newReact.bottom - customFrameRect.height; | ||
} | ||
if (newReact.right > customFrameRect.width) { | ||
adjustments.right = newReact.right - customFrameRect.width; | ||
} | ||
if (newReact.bottom > customFrameRect.height) { | ||
adjustments.bottom = newReact.bottom - customFrameRect.height; | ||
} | ||
return { frameRect: customFrameRect, rect: newReact, rectGap: rectGap, adjustments: adjustments }; | ||
}, | ||
isInViewPort: function isInViewPort(el, customFrame) { | ||
if (!el) { | ||
return; | ||
} | ||
if (newReact.right > customFrameRect.width) { | ||
adjustments.right = newReact.right - customFrameRect.width; | ||
} | ||
var elRects = viewPort.frameRelativeRects(el, customFrame); | ||
var react = elRects.rect; | ||
var frameReact = elRects.frameRect; | ||
return { | ||
frameRect: customFrameRect, | ||
rect: newReact, | ||
rectGap, | ||
adjustments | ||
}; | ||
}, | ||
isInViewPort: (el, customFrame) => { | ||
if (!el) { | ||
return; | ||
} | ||
return rect.top >= 0 && rect.left >= 0 && rect.bottom <= frameReact.height && rect.right <= frameReact.width; | ||
}, | ||
possibilities: function possibilities(el, relativeBox, customFrame) { | ||
if (!el) { | ||
return; | ||
} | ||
let elRects = viewPort.frameRelativeRects(el, customFrame); | ||
let react = elRects.rect; | ||
let frameReact = elRects.frameRect; | ||
return rect.top >= 0 && rect.left >= 0 && rect.bottom <= frameReact.height && rect.right <= frameReact.width; | ||
}, | ||
possibilities: (el, relativeBox, customFrame) => { | ||
if (!el) { | ||
return; | ||
} | ||
var elRects = viewPort.frameRelativeRects(el, customFrame); | ||
var rect = elRects.rect; | ||
var adjustments = elRects.adjustments; | ||
let elRects = viewPort.frameRelativeRects(el, customFrame); | ||
let rect = elRects.rect; | ||
let adjustments = elRects.adjustments; | ||
let relativeBoxReacts = viewPort.frameRelativeRects(relativeBox, customFrame); | ||
let relativeBoxRect = relativeBoxReacts.rect; | ||
let relativeBoxGap = relativeBoxReacts.rectGap; | ||
let relativeBoxDocumentRects = viewPort.frameRelativeRects(relativeBox, customFrame); | ||
let { | ||
rectGap: documentGap | ||
} = relativeBoxDocumentRects; | ||
adjustments.left ? adjustments.left = adjustments.left + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
adjustments.right ? adjustments.right = adjustments.right + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
adjustments.top ? adjustments.top = adjustments.top + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
adjustments.bottom ? adjustments.bottom = adjustments.bottom + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
let views = {}; //bottomCenter | ||
var relativeBoxReacts = viewPort.frameRelativeRects(relativeBox, customFrame); | ||
var relativeBoxRect = relativeBoxReacts.rect; | ||
var relativeBoxGap = relativeBoxReacts.rectGap; | ||
var relativeBoxDocumentRects = viewPort.frameRelativeRects(relativeBox, customFrame); | ||
var documentGap = relativeBoxDocumentRects.rectGap; | ||
let bottomOverFlow = rect.height >= relativeBoxGap.bottom; | ||
let bottomRightOverFlow = rect.width / 2 >= relativeBoxGap.center.right; | ||
let bottomLeftOverFlow = rect.width / 2 >= relativeBoxGap.center.left; //bottomRight | ||
adjustments.left ? adjustments.left = adjustments.left + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
adjustments.right ? adjustments.right = adjustments.right + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
adjustments.top ? adjustments.top = adjustments.top + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
adjustments.bottom ? adjustments.bottom = adjustments.bottom + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
let bottomLeftOnlyOverFlow = rect.width >= relativeBoxGap.center.left; | ||
views.bottomRight = !(bottomOverFlow || bottomLeftOnlyOverFlow); //bottomLeft | ||
var views = {}; | ||
let bottomRightOnlyOverFlow = rect.width >= relativeBoxGap.center.right; | ||
views.bottomLeft = !(bottomOverFlow || bottomRightOnlyOverFlow); | ||
views.bottomCenter = !(bottomOverFlow || bottomRightOverFlow || bottomLeftOverFlow); //topCenter | ||
//bottomCenter | ||
var bottomOverFlow = rect.height >= relativeBoxGap.bottom; | ||
var bottomRightOverFlow = rect.width / 2 >= relativeBoxGap.center.right; | ||
var bottomLeftOverFlow = rect.width / 2 >= relativeBoxGap.center.left; | ||
let topOverFlow = rect.height >= relativeBoxGap.top; | ||
let topRightOverFlow = rect.width / 2 >= relativeBoxGap.center.right; | ||
let topLeftOverFlow = rect.width / 2 >= relativeBoxGap.center.left; //topRight | ||
//bottomRight | ||
var bottomLeftOnlyOverFlow = rect.width >= relativeBoxGap.center.left; | ||
views.bottomRight = !(bottomOverFlow || bottomLeftOnlyOverFlow); | ||
let topLeftOnlyOverFlow = rect.width >= relativeBoxGap.center.left; | ||
views.topRight = !(topOverFlow || topLeftOnlyOverFlow); //topLeft | ||
//bottomLeft | ||
var bottomRightOnlyOverFlow = rect.width >= relativeBoxGap.center.right; | ||
views.bottomLeft = !(bottomOverFlow || bottomRightOnlyOverFlow); | ||
let topRightOnlyOverFlow = rect.width >= relativeBoxGap.center.right; | ||
views.topLeft = !(topOverFlow || topRightOnlyOverFlow); | ||
views.topCenter = !(topOverFlow || topRightOverFlow || topLeftOverFlow); //|| topLeftOnlyOverFlow || topRightOnlyOverFlow); | ||
//leftCenter | ||
views.bottomCenter = !(bottomOverFlow || bottomRightOverFlow || bottomLeftOverFlow); | ||
//topCenter | ||
var topOverFlow = rect.height >= relativeBoxGap.top; | ||
var topRightOverFlow = rect.width / 2 >= relativeBoxGap.center.right; | ||
var topLeftOverFlow = rect.width / 2 >= relativeBoxGap.center.left; | ||
let leftOverFlow = rect.width >= relativeBoxGap.left; | ||
let leftTopOverFlow = rect.height / 2 >= relativeBoxGap.center.top; | ||
let leftBottomOverFlow = rect.height / 2 >= relativeBoxGap.center.bottom; //leftTop | ||
//topRight | ||
var topLeftOnlyOverFlow = rect.width >= relativeBoxGap.center.left; | ||
views.topRight = !(topOverFlow || topLeftOnlyOverFlow); | ||
let leftTopOnlyOverFlow = rect.height >= relativeBoxGap.center.bottom; | ||
views.leftTop = !(leftOverFlow || leftTopOnlyOverFlow); //leftBottom | ||
//topLeft | ||
var topRightOnlyOverFlow = rect.width >= relativeBoxGap.center.right; | ||
views.topLeft = !(topOverFlow || topRightOnlyOverFlow); | ||
let leftBottomOnlyOverFlow = rect.height >= relativeBoxGap.center.top; | ||
views.leftBottom = !(leftOverFlow || leftBottomOnlyOverFlow); | ||
views.leftCenter = !(leftOverFlow || leftTopOverFlow || leftBottomOverFlow); // || leftTopOnlyOverFlow || leftBottomOnlyOverFlow); | ||
//rightCenter | ||
views.topCenter = !(topOverFlow || topRightOverFlow || topLeftOverFlow); //|| topLeftOnlyOverFlow || topRightOnlyOverFlow); | ||
let rightOverFlow = rect.width >= relativeBoxGap.right; | ||
let rightTopOverFlow = rect.height / 2 >= relativeBoxGap.center.top; | ||
let rightBottomOverFlow = rect.height / 2 >= relativeBoxGap.center.bottom; //rightTop | ||
//leftCenter | ||
var leftOverFlow = rect.width >= relativeBoxGap.left; | ||
let rightTopOnlyOverFlow = rect.height >= relativeBoxGap.center.bottom; | ||
views.rightTop = !(rightOverFlow || rightTopOnlyOverFlow); //rightBottom | ||
var leftTopOverFlow = rect.height / 2 >= relativeBoxGap.center.top; | ||
var leftBottomOverFlow = rect.height / 2 >= relativeBoxGap.center.bottom; | ||
let rightBottomOnlyOverFlow = rect.height >= relativeBoxGap.center.top; | ||
views.rightBottom = !(rightOverFlow || rightBottomOnlyOverFlow); | ||
views.rightCenter = !(rightOverFlow || rightTopOverFlow || rightBottomOverFlow); // || rightTopOnlyOverFlow || rightBottomOnlyOverFlow); | ||
//leftTop | ||
var leftTopOnlyOverFlow = rect.height >= relativeBoxGap.center.bottom; | ||
views.leftTop = !(leftOverFlow || leftTopOnlyOverFlow); | ||
let horizontalCenter = relativeBoxGap.left + relativeBoxRect.width / 2; | ||
let horizontalLeft = relativeBoxGap.left; | ||
let horizontalRight = relativeBoxGap.left + relativeBoxRect.width; | ||
let verticalBottom = relativeBoxGap.top + relativeBoxRect.height; | ||
let verticalTop = relativeBoxGap.top; | ||
let verticalCenter = relativeBoxGap.top + relativeBoxRect.height / 2; | ||
let horizontalTop = documentGap.bottom + relativeBoxRect.height; | ||
let verticalCenterToTop = documentGap.bottom + relativeBoxRect.height / 2; | ||
let needArrow = false; // let isAbsolute = false; | ||
//leftBottom | ||
var leftBottomOnlyOverFlow = rect.height >= relativeBoxGap.center.top; | ||
views.leftBottom = !(leftOverFlow || leftBottomOnlyOverFlow); | ||
let paddingSpace = 5; // space between target and relative element | ||
views.leftCenter = !(leftOverFlow || leftTopOverFlow || leftBottomOverFlow); // || leftTopOnlyOverFlow || leftBottomOnlyOverFlow); | ||
let arrowSize = needArrow ? 10 : 5; | ||
rect.height = rect.height + (needArrow ? arrowSize : paddingSpace); | ||
rect.width = rect.width + (needArrow ? arrowSize : paddingSpace); | ||
debugger; | ||
let viewsOffset = { | ||
// Code Copy frm DOT ViewPort.js qa | ||
bottomCenter: { | ||
left: horizontalCenter - rect.width / 2, | ||
top: verticalBottom + arrowSize | ||
}, | ||
bottomRight: { | ||
left: horizontalRight - rect.width, | ||
top: verticalBottom + arrowSize | ||
}, | ||
bottomLeft: { | ||
left: horizontalLeft, | ||
top: verticalBottom + arrowSize | ||
}, | ||
topCenter: { | ||
left: horizontalCenter - rect.width / 2, | ||
bottom: horizontalTop + arrowSize | ||
}, | ||
topRight: { | ||
left: horizontalRight - rect.width, | ||
bottom: horizontalTop + arrowSize | ||
}, | ||
topLeft: { | ||
left: horizontalLeft, | ||
bottom: horizontalTop + arrowSize | ||
}, | ||
rightCenter: { | ||
left: horizontalRight + arrowSize, | ||
top: verticalCenter - rect.height / 2 | ||
}, | ||
rightBottom: { | ||
left: horizontalRight + arrowSize, | ||
bottom: documentGap.bottom | ||
}, | ||
rightTop: { | ||
left: horizontalRight + arrowSize, | ||
top: verticalTop | ||
}, | ||
leftCenter: { | ||
left: horizontalLeft - (rect.width + arrowSize), | ||
top: verticalCenter - rect.height / 2 | ||
}, | ||
leftTop: { | ||
left: horizontalLeft - (rect.width + arrowSize), | ||
top: verticalTop | ||
}, | ||
leftBottom: { | ||
left: horizontalLeft - (rect.width + arrowSize), | ||
bottom: documentGap.bottom | ||
} | ||
}; | ||
return { | ||
views, | ||
adjustments, | ||
positionOffset: viewsOffset | ||
}; | ||
}, | ||
getArrowAdjustments: (el, relativeBox, customFrame) => { | ||
if (!el) { | ||
return; | ||
} | ||
//rightCenter | ||
var rightOverFlow = rect.width >= relativeBoxGap.right; | ||
let elRects = viewPort.frameRelativeRects(el, customFrame); | ||
let rect = elRects.rect; | ||
let rectGap = elRects.rectGap; | ||
let adjustments = elRects.adjustments; | ||
let relativeBoxReacts = viewPort.frameRelativeRects(relativeBox, customFrame); | ||
let relativeBoxReact = relativeBoxReacts.rect; | ||
let relativeBoxGap = relativeBoxReacts.rectGap; | ||
return { | ||
left: relativeBoxGap.center.left - rectGap.left, | ||
right: relativeBoxGap.center.right - rectGap.right, | ||
top: relativeBoxGap.center.top - rectGap.top, | ||
bottom: relativeBoxGap.center.bottom - rectGap.bottom | ||
}; | ||
}, | ||
betterView: (popup, relativeBox, defaultView, customFrame) => { | ||
let viewPortPossibilities = viewPort.possibilities(popup, relativeBox, customFrame); | ||
var rightTopOverFlow = rect.height / 2 >= relativeBoxGap.center.top; | ||
var rightBottomOverFlow = rect.height / 2 >= relativeBoxGap.center.bottom; | ||
if (!viewPortPossibilities) { | ||
return; | ||
} | ||
//rightTop | ||
var rightTopOnlyOverFlow = rect.height >= relativeBoxGap.center.bottom; | ||
views.rightTop = !(rightOverFlow || rightTopOnlyOverFlow); | ||
let views = viewPortPossibilities.views; | ||
let adjustments = viewPortPossibilities.adjustments; | ||
let viewKeys = Object.keys(views); | ||
let isViewFound = false; | ||
let positionOffset = viewPortPossibilities.positionOffset; | ||
//rightBottom | ||
var rightBottomOnlyOverFlow = rect.height >= relativeBoxGap.center.top; | ||
views.rightBottom = !(rightOverFlow || rightBottomOnlyOverFlow); | ||
for (let i = 0; i < viewKeys.length; i++) { | ||
let viewKey = viewKeys[i]; | ||
views.rightCenter = !(rightOverFlow || rightTopOverFlow || rightBottomOverFlow); // || rightTopOnlyOverFlow || rightBottomOnlyOverFlow); | ||
if (views[viewKey]) { | ||
isViewFound = true; | ||
break; | ||
} | ||
} | ||
if (!isViewFound) { | ||
return { | ||
view: null, | ||
adjustments, | ||
fixedPosition: {} | ||
}; | ||
} | ||
var horizontalCenter = relativeBoxGap.left + relativeBoxRect.width / 2; | ||
var horizontalLeft = relativeBoxGap.left; | ||
var horizontalRight = relativeBoxGap.left + relativeBoxRect.width; | ||
var verticalBottom = relativeBoxGap.top + relativeBoxRect.height; | ||
var verticalTop = relativeBoxGap.top; | ||
var verticalCenter = relativeBoxGap.top + relativeBoxRect.height / 2; | ||
var horizontalTop = documentGap.bottom + relativeBoxRect.height; | ||
var verticalCenterToTop = documentGap.bottom + relativeBoxRect.height / 2; | ||
if (views[defaultView]) { | ||
return { | ||
view: defaultView, | ||
adjustments, | ||
fixedPosition: positionOffset[defaultView] | ||
}; | ||
} | ||
var needArrow = false; | ||
// let isAbsolute = false; | ||
var paddingSpace = 5; // space between target and relative element | ||
var arrowSize = needArrow ? 10 : 5; | ||
rect.height = rect.height + (needArrow ? arrowSize : paddingSpace); | ||
rect.width = rect.width + (needArrow ? arrowSize : paddingSpace); | ||
let defaultPosition = defaultView.replace(/Center|Bottom|Top|Left|Right$/, ''); | ||
let viewTypes = { | ||
top: ['Center', 'Right', 'Left'], | ||
left: ['Center', 'Top', 'Bottom'] | ||
}; | ||
viewTypes.bottom = viewTypes.top; | ||
viewTypes.right = viewTypes.left; | ||
let defaultPositions = viewTypes[defaultPosition]; | ||
debugger; | ||
for (let i = 0, len = defaultPositions.length; i < len; i++) { | ||
let viewKey = defaultPosition + defaultPositions[i]; | ||
var viewsOffset = { // Code Copy frm DOT ViewPort.js qa | ||
bottomCenter: { | ||
left: horizontalCenter - rect.width / 2, | ||
top: verticalBottom + arrowSize | ||
}, | ||
bottomRight: { | ||
left: horizontalRight - rect.width, | ||
top: verticalBottom + arrowSize | ||
}, | ||
bottomLeft: { | ||
left: horizontalLeft, | ||
top: verticalBottom + arrowSize | ||
}, | ||
topCenter: { | ||
left: horizontalCenter - rect.width / 2, | ||
bottom: horizontalTop + arrowSize | ||
}, | ||
topRight: { | ||
left: horizontalRight - rect.width, | ||
bottom: horizontalTop + arrowSize | ||
}, | ||
topLeft: { | ||
left: horizontalLeft, | ||
bottom: horizontalTop + arrowSize | ||
}, | ||
rightCenter: { | ||
left: horizontalRight + arrowSize, | ||
top: verticalCenter - rect.height / 2 | ||
}, | ||
rightBottom: { | ||
left: horizontalRight + arrowSize, | ||
bottom: documentGap.bottom | ||
}, | ||
rightTop: { | ||
left: horizontalRight + arrowSize, | ||
top: verticalTop | ||
}, | ||
leftCenter: { | ||
left: horizontalLeft - (rect.width + arrowSize), | ||
top: verticalCenter - rect.height / 2 | ||
}, | ||
leftTop: { | ||
left: horizontalLeft - (rect.width + arrowSize), | ||
top: verticalTop | ||
}, | ||
leftBottom: { | ||
left: horizontalLeft - (rect.width + arrowSize), | ||
bottom: documentGap.bottom | ||
} | ||
}; | ||
if (views[viewKey]) { | ||
return { | ||
view: viewKey, | ||
adjustments, | ||
fixedPosition: positionOffset[viewKey] | ||
}; | ||
} | ||
} | ||
return { views: views, adjustments: adjustments, positionOffset: viewsOffset }; | ||
}, | ||
let oppositePositionsOrder = { | ||
bottom: ['top', 'right', 'left'], | ||
top: ['bottom', 'right', 'left'], | ||
left: ['bottom', 'right', 'top'], | ||
right: ['bottom', 'top', 'left'] | ||
}; | ||
let oppositeViews = oppositePositionsOrder[defaultPosition]; | ||
getArrowAdjustments: function getArrowAdjustments(el, relativeBox, customFrame) { | ||
if (!el) { | ||
return; | ||
} | ||
for (let i = 0, len = oppositeViews.length; i < len; i++) { | ||
let oppositeView = oppositeViews[i]; | ||
let positions = viewTypes[oppositeView]; | ||
var elRects = viewPort.frameRelativeRects(el, customFrame); | ||
var rect = elRects.rect; | ||
var rectGap = elRects.rectGap; | ||
var adjustments = elRects.adjustments; | ||
for (let j = 0, lenx = positions.length; j < lenx; j++) { | ||
let viewKey = oppositeView + positions[j]; | ||
var relativeBoxReacts = viewPort.frameRelativeRects(relativeBox, customFrame); | ||
var relativeBoxReact = relativeBoxReacts.rect; | ||
var relativeBoxGap = relativeBoxReacts.rectGap; | ||
if (views[viewKey]) { | ||
return { | ||
view: viewKey, | ||
adjustments, | ||
fixedPosition: positionOffset[viewKey] | ||
}; | ||
} | ||
} | ||
} | ||
return { | ||
left: relativeBoxGap.center.left - rectGap.left, | ||
right: relativeBoxGap.center.right - rectGap.right, | ||
top: relativeBoxGap.center.top - rectGap.top, | ||
bottom: relativeBoxGap.center.bottom - rectGap.bottom | ||
}; | ||
}, | ||
betterView: function betterView(popup, relativeBox, defaultView, customFrame) { | ||
var viewPortPossibilities = viewPort.possibilities(popup, relativeBox, customFrame); | ||
if (!viewPortPossibilities) { | ||
return; | ||
} | ||
var views = viewPortPossibilities.views; | ||
var adjustments = viewPortPossibilities.adjustments; | ||
var viewKeys = _Object$keys(views); | ||
var isViewFound = false; | ||
var positionOffset = viewPortPossibilities.positionOffset; | ||
for (var i = 0; i < viewKeys.length; i++) { | ||
var viewKey = viewKeys[i]; | ||
if (views[viewKey]) { | ||
isViewFound = true; | ||
break; | ||
} | ||
} | ||
if (!isViewFound) { | ||
return { view: null, adjustments: adjustments, fixedPosition: {} }; | ||
} | ||
if (views[defaultView]) { | ||
return { view: defaultView, adjustments: adjustments, fixedPosition: positionOffset[defaultView] }; | ||
} | ||
var defaultPosition = defaultView.replace(/Center|Bottom|Top|Left|Right$/, ''); | ||
var viewTypes = { top: ['Center', 'Right', 'Left'], left: ['Center', 'Top', 'Bottom'] }; | ||
viewTypes.bottom = viewTypes.top; | ||
viewTypes.right = viewTypes.left; | ||
var defaultPositions = viewTypes[defaultPosition]; | ||
for (var _i = 0, len = defaultPositions.length; _i < len; _i++) { | ||
var _viewKey = defaultPosition + defaultPositions[_i]; | ||
if (views[_viewKey]) { | ||
return { view: _viewKey, adjustments: adjustments, fixedPosition: positionOffset[_viewKey] }; | ||
} | ||
} | ||
var oppositePositionsOrder = { | ||
bottom: ['top', 'right', 'left'], | ||
top: ['bottom', 'right', 'left'], | ||
left: ['bottom', 'right', 'top'], | ||
right: ['bottom', 'top', 'left'] | ||
}; | ||
var oppositeViews = oppositePositionsOrder[defaultPosition]; | ||
for (var _i2 = 0, _len = oppositeViews.length; _i2 < _len; _i2++) { | ||
var oppositeView = oppositeViews[_i2]; | ||
var positions = viewTypes[oppositeView]; | ||
for (var j = 0, lenx = positions.length; j < lenx; j++) { | ||
var _viewKey2 = oppositeView + positions[j]; | ||
if (views[_viewKey2]) { | ||
return { view: _viewKey2, adjustments: adjustments, fixedPosition: positionOffset[_viewKey2] }; | ||
} | ||
} | ||
} | ||
return { view: null, adjustments: adjustments, fixedPosition: {} }; | ||
} | ||
return { | ||
view: null, | ||
adjustments, | ||
fixedPosition: {} | ||
}; | ||
} | ||
}; | ||
export default { | ||
betterView: viewPort.betterView, | ||
frameRelativeRects: viewPort.frameRelativeRects, | ||
getArrowAdjustments: viewPort.getArrowAdjustments | ||
betterView: viewPort.betterView, | ||
frameRelativeRects: viewPort.frameRelativeRects, | ||
getArrowAdjustments: viewPort.getArrowAdjustments | ||
}; |
@@ -1,2 +0,2 @@ | ||
'use strict'; | ||
"use strict"; | ||
@@ -6,6 +6,3 @@ Object.defineProperty(exports, "__esModule", { | ||
}); | ||
var _Popup = require('./Popup'); | ||
Object.defineProperty(exports, 'Popup', { | ||
Object.defineProperty(exports, "Popup", { | ||
enumerable: true, | ||
@@ -16,3 +13,3 @@ get: function get() { | ||
}); | ||
Object.defineProperty(exports, 'closeGroupPopups', { | ||
Object.defineProperty(exports, "closeGroupPopups", { | ||
enumerable: true, | ||
@@ -22,2 +19,4 @@ get: function get() { | ||
} | ||
}); | ||
}); | ||
var _Popup = require("./Popup"); |
@@ -1,16 +0,15 @@ | ||
'use strict'; | ||
"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 | ||
}); | ||
var _Popup = require('./Popup'); | ||
Object.defineProperty(exports, 'Popup', { | ||
Object.defineProperty(exports, "Popup", { | ||
enumerable: true, | ||
get: function get() { | ||
return _interopRequireDefault(_Popup).default; | ||
return _Popup["default"]; | ||
} | ||
}); | ||
Object.defineProperty(exports, 'closeGroupPopups', { | ||
Object.defineProperty(exports, "closeGroupPopups", { | ||
enumerable: true, | ||
@@ -22,2 +21,6 @@ get: function get() { | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
var _Popup = _interopRequireWildcard(require("./Popup")); | ||
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } | ||
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } |
@@ -1,306 +0,323 @@ | ||
'use strict'; | ||
"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 | ||
value: true | ||
}); | ||
exports.closeGroupPopups = undefined; | ||
exports["default"] = exports.closeGroupPopups = void 0; | ||
var _extends = Object.assign || 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; }; | ||
var _react = _interopRequireDefault(require("react")); | ||
var _createClass = 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
var _reactDom = _interopRequireDefault(require("react-dom")); | ||
var _react = require('react'); | ||
var _hoistNonReactStatics = _interopRequireDefault(require("hoist-non-react-statics")); | ||
var _react2 = _interopRequireDefault(_react); | ||
var _ViewPort = _interopRequireDefault(require("../ViewPort")); | ||
var _reactDom = require('react-dom'); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } | ||
var _reactDom2 = _interopRequireDefault(_reactDom); | ||
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); } | ||
var _hoistNonReactStatics = require('hoist-non-react-statics'); | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
var _hoistNonReactStatics2 = _interopRequireDefault(_hoistNonReactStatics); | ||
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); } } | ||
var _ViewPort = require('../ViewPort'); | ||
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; } | ||
var _ViewPort2 = _interopRequireDefault(_ViewPort); | ||
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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } | ||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } | ||
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 (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } | ||
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 _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } | ||
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 popups = {}; | ||
var closeGroupPopups = function closeGroupPopups() { | ||
var groupName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'global'; | ||
var groupPopups = popups[groupName] || []; | ||
groupPopups.forEach(function (popup) { | ||
popup.state.isPopupOpen && resetPopupState(popup); | ||
}); | ||
var groupName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'global'; | ||
var groupPopups = popups[groupName] || []; | ||
groupPopups.forEach(function (popup) { | ||
popup.state.isPopupOpen && resetPopupState(popup); | ||
}); | ||
}; | ||
exports.closeGroupPopups = closeGroupPopups; | ||
var resetPopupState = function resetPopupState(popup) { | ||
popup.setState({ | ||
isPopupOpen: false, | ||
isPopupReady: false, | ||
position: 'bottom' | ||
}); | ||
popup.setState({ | ||
isPopupOpen: false, | ||
isPopupReady: false, | ||
position: 'bottom' | ||
}); | ||
}; | ||
var resetAllPopupState = function resetAllPopupState(popup, filterGroupName) { | ||
Object.keys(popups).forEach(closeGroupPopups); | ||
Object.keys(popups).forEach(closeGroupPopups); | ||
}; | ||
var Popup = function Popup(Component) { | ||
var group = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'global'; | ||
var customStyles = arguments[2]; | ||
var group = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'global'; | ||
var customStyles = arguments.length > 2 ? arguments[2] : undefined; | ||
var popupStyles = Object.assign({}, customStyles); | ||
group = group || 'global'; | ||
var Popup = /*#__PURE__*/function (_React$Component) { | ||
_inherits(Popup, _React$Component); | ||
var popupStyles = Object.assign({}, customStyles); | ||
group = group || 'global'; | ||
var _super = _createSuper(Popup); | ||
var Popup = function (_React$Component) { | ||
_inherits(Popup, _React$Component); | ||
function Popup(props) { | ||
var _this; | ||
function Popup(props) { | ||
_classCallCheck(this, Popup); | ||
_classCallCheck(this, Popup); | ||
var _this = _possibleConstructorReturn(this, (Popup.__proto__ || Object.getPrototypeOf(Popup)).call(this, props)); | ||
_this = _super.call(this, props); | ||
_this.state = { | ||
isPopupOpen: props.isPopupOpen || false, | ||
isPopupReady: props.isPopupReady || false, | ||
position: props.position || 'bottom', | ||
fixedPosition: {} | ||
}; | ||
_this.popupGroup = props.group || group; | ||
_this.childGroup = props.childGroup; | ||
_this.stopCloseEvent = _this.stopCloseEvent.bind(_assertThisInitialized(_this)); | ||
_this.documentKeyupHandler = _this.documentKeyupHandler.bind(_assertThisInitialized(_this)); | ||
_this.documentClickHandler = _this.documentClickHandler.bind(_assertThisInitialized(_this)); | ||
_this.togglePopup = _this.togglePopup.bind(_assertThisInitialized(_this)); | ||
_this.openPopupOnly = _this.openPopupOnly.bind(_assertThisInitialized(_this)); | ||
_this.closePopupOnly = _this.closePopupOnly.bind(_assertThisInitialized(_this)); | ||
_this.setRef = _this.setRef.bind(_assertThisInitialized(_this)); //this.popupName = popupName; | ||
_this.state = { | ||
isPopupOpen: props.isPopupOpen || false, | ||
isPopupReady: props.isPopupReady || false, | ||
position: props.position || 'bottom', | ||
fixedPosition: {} | ||
}; | ||
return _this; | ||
} | ||
_this.popupGroup = props.group || group; | ||
_this.childGroup = props.childGroup; | ||
_createClass(Popup, [{ | ||
key: "setRef", | ||
value: function setRef(el) { | ||
this.elementRef = el; | ||
} | ||
}, { | ||
key: "UNSAFE_componentWillMount", | ||
value: function UNSAFE_componentWillMount(nextProps) { | ||
var state = null; | ||
_this.stopCloseEvent = _this.stopCloseEvent.bind(_this); | ||
_this.documentKeyupHandler = _this.documentKeyupHandler.bind(_this); | ||
_this.documentClickHandler = _this.documentClickHandler.bind(_this); | ||
if (typeof nextProps.isPopupOpen !== "undefined" && nextProps.isPopupOpen !== this.state.isPopupOpen) { | ||
state = state || {}; | ||
state.isPopupOpen = nextProps.isPopupOpen; | ||
} | ||
_this.togglePopup = _this.togglePopup.bind(_this); | ||
_this.openPopupOnly = _this.openPopupOnly.bind(_this); | ||
_this.closePopupOnly = _this.closePopupOnly.bind(_this); | ||
if (typeof nextProps.isPopupReady !== "undefined" && nextProps.isPopupReady !== this.state.isPopupReady) { | ||
state = state || {}; | ||
state.isPopupReady = nextProps.isPopupReady; | ||
} | ||
_this.setRef = _this.setRef.bind(_this); | ||
//this.popupName = popupName; | ||
return _this; | ||
} | ||
if (typeof nextProps.position !== "undefined" && nextProps.position !== this.state.position) { | ||
state = state || {}; | ||
state.position = nextProps.position; | ||
} | ||
_createClass(Popup, [{ | ||
key: 'setRef', | ||
value: function setRef(el) { | ||
this.elementRef = el; | ||
} | ||
}, { | ||
key: 'UNSAFE_componentWillMount', | ||
value: function UNSAFE_componentWillMount(nextProps) { | ||
var state = null; | ||
if (typeof nextProps.isPopupOpen !== "undefined" && nextProps.isPopupOpen !== this.state.isPopupOpen) { | ||
state = state || {}; | ||
state.isPopupOpen = nextProps.isPopupOpen; | ||
} | ||
if (typeof nextProps.isPopupReady !== "undefined" && nextProps.isPopupReady !== this.state.isPopupReady) { | ||
state = state || {}; | ||
state.isPopupReady = nextProps.isPopupReady; | ||
} | ||
if (typeof nextProps.position !== "undefined" && nextProps.position !== this.state.position) { | ||
state = state || {}; | ||
state.position = nextProps.position; | ||
} | ||
if (state) { | ||
this.setState(state); | ||
} | ||
} | ||
}, { | ||
key: 'componentDidMount', | ||
value: function componentDidMount() { | ||
var groupPopups = popups[this.popupGroup] || []; | ||
groupPopups.push(this); | ||
popups[this.popupGroup] = groupPopups; | ||
if (groupPopups.length == 1) { | ||
global.document.addEventListener('click', this.documentClickHandler, false); | ||
global.document.addEventListener('keyup', this.documentKeyupHandler, false); | ||
} | ||
} | ||
}, { | ||
key: 'componentWillUnmount', | ||
value: function componentWillUnmount() { | ||
var _this2 = this; | ||
if (state) { | ||
this.setState(state); | ||
} | ||
} | ||
}, { | ||
key: "componentDidMount", | ||
value: function componentDidMount() { | ||
var groupPopups = popups[this.popupGroup] || []; | ||
groupPopups.push(this); | ||
popups[this.popupGroup] = groupPopups; | ||
popups = Object.keys(popups).reduce(function (res, groupName) { | ||
if (groupName == _this2.popupGroup) { | ||
var groupPopups = popups[_this2.popupGroup]; | ||
var newGroupPopups = groupPopups.filter(function (popup) { | ||
return popup !== _this2; | ||
}); | ||
res[_this2.popupGroup] = newGroupPopups; | ||
} | ||
return res; | ||
}, popups); | ||
if (groupPopups.length == 1) { | ||
global.document.addEventListener('click', this.documentClickHandler, false); | ||
global.document.addEventListener('keyup', this.documentKeyupHandler, false); | ||
} | ||
} | ||
}, { | ||
key: "componentWillUnmount", | ||
value: function componentWillUnmount() { | ||
var _this2 = this; | ||
if (popups.length == 0) { | ||
global.document.removeEventListener('click', this.documentClickHandler); | ||
global.document.removeEventListener('keyup', this.documentKeyupHandler); | ||
} | ||
} | ||
}, { | ||
key: 'togglePopup', | ||
value: function togglePopup(e, dropElement, placeHoldeEl, isPopupOpen) { | ||
var _this3 = this; | ||
popups = Object.keys(popups).reduce(function (res, groupName) { | ||
if (groupName == _this2.popupGroup) { | ||
var groupPopups = popups[_this2.popupGroup]; | ||
var newGroupPopups = groupPopups.filter(function (popup) { | ||
return popup !== _this2; | ||
}); | ||
res[_this2.popupGroup] = newGroupPopups; | ||
} | ||
this.stopCloseEvent(e); | ||
return res; | ||
}, popups); | ||
//Close the all other opes | ||
var groupPopups = popups[this.popupGroup]; | ||
groupPopups.forEach(function (popup) { | ||
if (popup != _this3) { | ||
popup.state.isPopupOpen && popup.setState({ | ||
isPopupOpen: false, | ||
position: 'bottom' | ||
}); | ||
} | ||
}); | ||
if (popups.length == 0) { | ||
global.document.removeEventListener('click', this.documentClickHandler); | ||
global.document.removeEventListener('keyup', this.documentKeyupHandler); | ||
} | ||
} | ||
}, { | ||
key: "togglePopup", | ||
value: function togglePopup(e, dropElement, placeHoldeEl, isPopupOpen) { | ||
var _this3 = this; | ||
this.setState({ isPopupOpen: isPopupOpen ? isPopupOpen : !this.state.isPopupOpen, isPopupReady: false, position: 'bottom' }, function () { | ||
this.stopCloseEvent(e); //Close the all other opes | ||
if (!dropElement || !placeHoldeEl) { | ||
return; | ||
}; | ||
var groupPopups = popups[this.popupGroup]; | ||
groupPopups.forEach(function (popup) { | ||
if (popup != _this3) { | ||
popup.state.isPopupOpen && popup.setState({ | ||
isPopupOpen: false, | ||
position: 'bottom' | ||
}); | ||
} | ||
}); | ||
this.setState({ | ||
isPopupOpen: isPopupOpen ? isPopupOpen : !this.state.isPopupOpen, | ||
isPopupReady: false, | ||
position: 'bottom' | ||
}, function () { | ||
if (!dropElement || !placeHoldeEl) { | ||
return; | ||
} | ||
requestAnimationFrame(function () { | ||
var frame = _this3.props.frameId ? document.getElementById(_this3.props.frameId) : document.getElementById("container"); | ||
var defaultPosition = _this3.props.defaultPosition || "bottom"; | ||
var betterPosition = _ViewPort2.default.betterView(dropElement, placeHoldeEl, defaultPosition, frame); | ||
; | ||
requestAnimationFrame(function () { | ||
var frame = _this3.props.frameId ? document.getElementById(_this3.props.frameId) : document.getElementById("container"); | ||
var defaultPosition = _this3.props.defaultPosition || "bottom"; | ||
//Auto predict views | ||
if (betterPosition.view) { | ||
_this3.setState({ isPopupReady: true, position: betterPosition.view, fixedPosition: betterPosition.fixedPosition }); | ||
} else { | ||
_this3.setState({ isPopupReady: true, position: 'bottom' }); | ||
} | ||
}); | ||
}); | ||
} | ||
}, { | ||
key: 'openPopupOnly', | ||
value: function openPopupOnly(e, dropElement, placeHoldeEl) { | ||
var betterPosition = _ViewPort["default"].betterView(dropElement, placeHoldeEl, defaultPosition, frame); //Auto predict views | ||
this.togglePopup(e, dropElement, placeHoldeEl, true); | ||
/*this.stopCloseEvent(e); | ||
let groupPopups = popups[this.popupGroup]; | ||
groupPopups.forEach(popup => { | ||
if (popup != this) { | ||
popup.state.isPopupOpen && | ||
popup.setState({ | ||
isPopupOpen: false, | ||
position: 'bottom' | ||
}); | ||
} | ||
}); | ||
this.setState({ isPopupOpen: true , isPopupReady : false , position: 'bottom' },()=>{ | ||
if( !dropElement || !placeHoldeEl ){ return; }; | ||
requestAnimationFrame(()=>{ | ||
var frame = this.props.frameId ? document.getElementById(this.props.frameId) : document.getElementById("container"); | ||
let defaultPosition = this.props.defaultPosition || "bottomCenter"; | ||
let betterPosition = viewPort.betterView( dropElement , placeHoldeEl , defaultPosition , frame); | ||
//Auto predict views | ||
if( betterPosition.view ) { | ||
this.setState({ isPopupReady : true , position: betterPosition.view }); | ||
}else{ | ||
this.setState({ isPopupReady : true , position: defaultPosition }); | ||
} | ||
}) | ||
});*/ | ||
} | ||
}, { | ||
key: 'closePopupOnly', | ||
value: function closePopupOnly(e) { | ||
this.stopCloseEvent(e); | ||
resetPopupState(this); | ||
} | ||
}, { | ||
key: 'documentClickHandler', | ||
value: function documentClickHandler(e) { | ||
try { | ||
resetAllPopupState(); | ||
} catch (e) { | ||
console.error('error', e); | ||
} | ||
} | ||
}, { | ||
key: 'documentKeyupHandler', | ||
value: function documentKeyupHandler(e) { | ||
try { | ||
if (e.keyCode == 27) { | ||
resetAllPopupState(); | ||
} | ||
} catch (e) { | ||
console.log('error', e); | ||
} | ||
} | ||
}, { | ||
key: 'stopCloseEvent', | ||
value: function stopCloseEvent(e) { | ||
e.stopPropagation && e.stopPropagation(); | ||
e.nativeEvent && e.nativeEvent.stopImmediatePropagation && e.nativeEvent.stopImmediatePropagation(); | ||
if (this.childGroup) { | ||
closeGroupPopups(this.childGroup); | ||
} | ||
} | ||
}, { | ||
key: 'render', | ||
value: function render() { | ||
var _state = this.state, | ||
position = _state.position, | ||
isPopupOpen = _state.isPopupOpen, | ||
isPopupReady = _state.isPopupReady; | ||
if (betterPosition.view) { | ||
_this3.setState({ | ||
isPopupReady: true, | ||
position: betterPosition.view, | ||
fixedPosition: betterPosition.fixedPosition | ||
}); | ||
} else { | ||
_this3.setState({ | ||
isPopupReady: true, | ||
position: 'bottom' | ||
}); | ||
} | ||
}); | ||
}); | ||
} | ||
}, { | ||
key: "openPopupOnly", | ||
value: function openPopupOnly(e, dropElement, placeHoldeEl) { | ||
this.togglePopup(e, dropElement, placeHoldeEl, true); | ||
/*this.stopCloseEvent(e); | ||
let groupPopups = popups[this.popupGroup]; | ||
groupPopups.forEach(popup => { | ||
if (popup != this) { | ||
popup.state.isPopupOpen && | ||
popup.setState({ | ||
isPopupOpen: false, | ||
position: 'bottom' | ||
}); | ||
} | ||
}); | ||
this.setState({ isPopupOpen: true , isPopupReady : false , position: 'bottom' },()=>{ | ||
if( !dropElement || !placeHoldeEl ){ return; }; | ||
requestAnimationFrame(()=>{ | ||
var frame = this.props.frameId ? document.getElementById(this.props.frameId) : document.getElementById("container"); | ||
let defaultPosition = this.props.defaultPosition || "bottomCenter"; | ||
let betterPosition = viewPort.betterView( dropElement , placeHoldeEl , defaultPosition , frame); | ||
//Auto predict views | ||
if( betterPosition.view ) { | ||
this.setState({ isPopupReady : true , position: betterPosition.view }); | ||
}else{ | ||
this.setState({ isPopupReady : true , position: defaultPosition }); | ||
} | ||
}) | ||
});*/ | ||
} | ||
}, { | ||
key: "closePopupOnly", | ||
value: function closePopupOnly(e) { | ||
this.stopCloseEvent(e); | ||
resetPopupState(this); | ||
} | ||
}, { | ||
key: "documentClickHandler", | ||
value: function documentClickHandler(e) { | ||
try { | ||
resetAllPopupState(); | ||
} catch (e) { | ||
console.error('error', e); | ||
} | ||
} | ||
}, { | ||
key: "documentKeyupHandler", | ||
value: function documentKeyupHandler(e) { | ||
try { | ||
if (e.keyCode == 27) { | ||
resetAllPopupState(); | ||
} | ||
} catch (e) { | ||
console.log('error', e); | ||
} | ||
} | ||
}, { | ||
key: "stopCloseEvent", | ||
value: function stopCloseEvent(e) { | ||
e.stopPropagation && e.stopPropagation(); | ||
e.nativeEvent && e.nativeEvent.stopImmediatePropagation && e.nativeEvent.stopImmediatePropagation(); | ||
var positionStyle = position ? popupStyles[position] || '' : ''; | ||
if (this.childGroup) { | ||
closeGroupPopups(this.childGroup); | ||
} | ||
} | ||
}, { | ||
key: "render", | ||
value: function render() { | ||
var _this$state = this.state, | ||
position = _this$state.position, | ||
isPopupOpen = _this$state.isPopupOpen, | ||
isPopupReady = _this$state.isPopupReady; | ||
var positionStyle = position ? popupStyles[position] || '' : ''; | ||
var arrowStyle = "".concat(popupStyles.arrow, " ").concat(positionStyle); | ||
var popupOpenStyle = isPopupOpen ? "".concat(popupStyles.isOpen, " ").concat(positionStyle) : "".concat(popupStyles.isHide); | ||
var popupReadyStyle = isPopupReady ? "".concat(popupStyles.isReady) : ''; | ||
var contentStyle = "".concat(popupStyles.content, " ").concat(popupOpenStyle, " ").concat(popupReadyStyle); | ||
return /*#__PURE__*/_react["default"].createElement(Component, _extends({ | ||
ref: this.setRef | ||
}, this.props, this.state, { | ||
openPopupOnly: this.openPopupOnly, | ||
closePopupOnly: this.closePopupOnly, | ||
togglePopup: this.togglePopup, | ||
isPopupOpen: this.state.isPopupOpen, | ||
removeClose: this.stopCloseEvent, | ||
popupStyle: { | ||
arrow: arrowStyle, | ||
content: contentStyle | ||
}, | ||
popupStyles: popupStyles | ||
})); | ||
} | ||
}]); | ||
var arrowStyle = popupStyles.arrow + ' ' + positionStyle; | ||
var popupOpenStyle = isPopupOpen ? popupStyles.isOpen + ' ' + positionStyle : '' + popupStyles.isHide; | ||
var popupReadyStyle = isPopupReady ? '' + popupStyles.isReady : ''; | ||
var contentStyle = popupStyles.content + ' ' + popupOpenStyle + ' ' + popupReadyStyle; | ||
return Popup; | ||
}(_react["default"].Component); | ||
return _react2.default.createElement(Component, _extends({ | ||
ref: this.setRef | ||
}, this.props, this.state, { | ||
openPopupOnly: this.openPopupOnly, | ||
closePopupOnly: this.closePopupOnly, | ||
togglePopup: this.togglePopup, | ||
isPopupOpen: this.state.isPopupOpen, | ||
removeClose: this.stopCloseEvent, | ||
popupStyle: { | ||
arrow: arrowStyle, | ||
content: contentStyle | ||
}, | ||
popupStyles: popupStyles | ||
})); | ||
} | ||
}]); | ||
return Popup; | ||
}(_react2.default.Component); | ||
return (0, _hoistNonReactStatics2.default)(Popup, Component); | ||
return (0, _hoistNonReactStatics["default"])(Popup, Component); | ||
}; | ||
exports.default = Popup; | ||
exports.closeGroupPopups = closeGroupPopups; | ||
var _default = Popup; | ||
exports["default"] = _default; |
@@ -1,329 +0,342 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
exports["default"] = void 0; | ||
var viewPort = { | ||
frameRelativeRects: function frameRelativeRects(el, customFrame) { | ||
if (!el) { | ||
return; | ||
} | ||
frameRelativeRects: function frameRelativeRects(el, customFrame) { | ||
if (!el) { | ||
return; | ||
} | ||
var rect = el.getBoundingClientRect(); //Target Element | ||
var documentEle = document.documentElement; //Body&HTML | ||
var rect = el.getBoundingClientRect(); //Target Element | ||
var customFrameRect = { | ||
top: 0, | ||
left: 0, | ||
right: documentEle.clientWidth, | ||
bottom: documentEle.clientHeight, | ||
height: documentEle.clientHeight, | ||
width: documentEle.clientWidth, | ||
x: 0, | ||
y: 0 | ||
}; | ||
if (customFrame) { | ||
customFrameRect = customFrame.getBoundingClientRect(); | ||
} | ||
var documentEle = document.documentElement; //Body&HTML | ||
var newReact = { | ||
top: rect.top - customFrameRect.top, | ||
left: rect.left - customFrameRect.left, | ||
height: rect.height, | ||
width: rect.width | ||
}; | ||
var customFrameRect = { | ||
top: 0, | ||
left: 0, | ||
right: documentEle.clientWidth, | ||
bottom: documentEle.clientHeight, | ||
height: documentEle.clientHeight, | ||
width: documentEle.clientWidth, | ||
x: 0, | ||
y: 0 | ||
}; | ||
newReact.bottom = newReact.top + newReact.height; | ||
newReact.right = newReact.left + newReact.width; | ||
if (customFrame) { | ||
customFrameRect = customFrame.getBoundingClientRect(); | ||
} | ||
newReact.x = newReact.left; | ||
newReact.y = newReact.top; | ||
var newReact = { | ||
top: rect.top - customFrameRect.top, | ||
left: rect.left - customFrameRect.left, | ||
height: rect.height, | ||
width: rect.width | ||
}; | ||
newReact.bottom = newReact.top + newReact.height; | ||
newReact.right = newReact.left + newReact.width; | ||
newReact.x = newReact.left; | ||
newReact.y = newReact.top; | ||
var rectGap = { | ||
top: newReact.top, | ||
left: newReact.left, | ||
bottom: customFrameRect.height - newReact.bottom, | ||
right: customFrameRect.width - newReact.right | ||
}; | ||
rectGap.center = { | ||
top: rectGap.top + newReact.height / 2, | ||
left: rectGap.left + newReact.width / 2, | ||
bottom: rectGap.bottom + newReact.height / 2, | ||
right: rectGap.right + newReact.width / 2 | ||
}; | ||
var adjustments = {}; | ||
var rectGap = { | ||
top: newReact.top, | ||
left: newReact.left, | ||
bottom: customFrameRect.height - newReact.bottom, | ||
right: customFrameRect.width - newReact.right | ||
}; | ||
if (newReact.top < 0) { | ||
adjustments.top = Math.abs(newReact.top); | ||
} | ||
rectGap.center = { | ||
top: rectGap.top + newReact.height / 2, | ||
left: rectGap.left + newReact.width / 2, | ||
bottom: rectGap.bottom + newReact.height / 2, | ||
right: rectGap.right + newReact.width / 2 | ||
}; | ||
if (newReact.left < 0) { | ||
adjustments.left = Math.abs(newReact.left); | ||
} | ||
var adjustments = {}; | ||
if (newReact.top < 0) { | ||
adjustments.top = Math.abs(newReact.top); | ||
} | ||
if (newReact.left < 0) { | ||
adjustments.left = Math.abs(newReact.left); | ||
} | ||
if (newReact.bottom > customFrameRect.height) { | ||
adjustments.bottom = newReact.bottom - customFrameRect.height; | ||
} | ||
if (newReact.right > customFrameRect.width) { | ||
adjustments.right = newReact.right - customFrameRect.width; | ||
} | ||
if (newReact.bottom > customFrameRect.height) { | ||
adjustments.bottom = newReact.bottom - customFrameRect.height; | ||
} | ||
return { frameRect: customFrameRect, rect: newReact, rectGap: rectGap, adjustments: adjustments }; | ||
}, | ||
isInViewPort: function isInViewPort(el, customFrame) { | ||
if (!el) { | ||
return; | ||
} | ||
if (newReact.right > customFrameRect.width) { | ||
adjustments.right = newReact.right - customFrameRect.width; | ||
} | ||
var elRects = viewPort.frameRelativeRects(el, customFrame); | ||
var react = elRects.rect; | ||
var frameReact = elRects.frameRect; | ||
return { | ||
frameRect: customFrameRect, | ||
rect: newReact, | ||
rectGap: rectGap, | ||
adjustments: adjustments | ||
}; | ||
}, | ||
isInViewPort: function isInViewPort(el, customFrame) { | ||
if (!el) { | ||
return; | ||
} | ||
return rect.top >= 0 && rect.left >= 0 && rect.bottom <= frameReact.height && rect.right <= frameReact.width; | ||
}, | ||
possibilities: function possibilities(el, relativeBox, customFrame) { | ||
if (!el) { | ||
return; | ||
} | ||
var elRects = viewPort.frameRelativeRects(el, customFrame); | ||
var react = elRects.rect; | ||
var frameReact = elRects.frameRect; | ||
return rect.top >= 0 && rect.left >= 0 && rect.bottom <= frameReact.height && rect.right <= frameReact.width; | ||
}, | ||
possibilities: function possibilities(el, relativeBox, customFrame) { | ||
if (!el) { | ||
return; | ||
} | ||
var elRects = viewPort.frameRelativeRects(el, customFrame); | ||
var rect = elRects.rect; | ||
var adjustments = elRects.adjustments; | ||
var elRects = viewPort.frameRelativeRects(el, customFrame); | ||
var rect = elRects.rect; | ||
var adjustments = elRects.adjustments; | ||
var relativeBoxReacts = viewPort.frameRelativeRects(relativeBox, customFrame); | ||
var relativeBoxRect = relativeBoxReacts.rect; | ||
var relativeBoxGap = relativeBoxReacts.rectGap; | ||
var relativeBoxDocumentRects = viewPort.frameRelativeRects(relativeBox, customFrame); | ||
var documentGap = relativeBoxDocumentRects.rectGap; | ||
adjustments.left ? adjustments.left = adjustments.left + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
adjustments.right ? adjustments.right = adjustments.right + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
adjustments.top ? adjustments.top = adjustments.top + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
adjustments.bottom ? adjustments.bottom = adjustments.bottom + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
var views = {}; //bottomCenter | ||
var relativeBoxReacts = viewPort.frameRelativeRects(relativeBox, customFrame); | ||
var relativeBoxRect = relativeBoxReacts.rect; | ||
var relativeBoxGap = relativeBoxReacts.rectGap; | ||
var relativeBoxDocumentRects = viewPort.frameRelativeRects(relativeBox, customFrame); | ||
var documentGap = relativeBoxDocumentRects.rectGap; | ||
var bottomOverFlow = rect.height >= relativeBoxGap.bottom; | ||
var bottomRightOverFlow = rect.width / 2 >= relativeBoxGap.center.right; | ||
var bottomLeftOverFlow = rect.width / 2 >= relativeBoxGap.center.left; //bottomRight | ||
adjustments.left ? adjustments.left = adjustments.left + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
adjustments.right ? adjustments.right = adjustments.right + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
adjustments.top ? adjustments.top = adjustments.top + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
adjustments.bottom ? adjustments.bottom = adjustments.bottom + relativeBoxReacts.rect.width * 2 / 3 : null; | ||
var bottomLeftOnlyOverFlow = rect.width >= relativeBoxGap.center.left; | ||
views.bottomRight = !(bottomOverFlow || bottomLeftOnlyOverFlow); //bottomLeft | ||
var views = {}; | ||
var bottomRightOnlyOverFlow = rect.width >= relativeBoxGap.center.right; | ||
views.bottomLeft = !(bottomOverFlow || bottomRightOnlyOverFlow); | ||
views.bottomCenter = !(bottomOverFlow || bottomRightOverFlow || bottomLeftOverFlow); //topCenter | ||
//bottomCenter | ||
var bottomOverFlow = rect.height >= relativeBoxGap.bottom; | ||
var bottomRightOverFlow = rect.width / 2 >= relativeBoxGap.center.right; | ||
var bottomLeftOverFlow = rect.width / 2 >= relativeBoxGap.center.left; | ||
var topOverFlow = rect.height >= relativeBoxGap.top; | ||
var topRightOverFlow = rect.width / 2 >= relativeBoxGap.center.right; | ||
var topLeftOverFlow = rect.width / 2 >= relativeBoxGap.center.left; //topRight | ||
//bottomRight | ||
var bottomLeftOnlyOverFlow = rect.width >= relativeBoxGap.center.left; | ||
views.bottomRight = !(bottomOverFlow || bottomLeftOnlyOverFlow); | ||
var topLeftOnlyOverFlow = rect.width >= relativeBoxGap.center.left; | ||
views.topRight = !(topOverFlow || topLeftOnlyOverFlow); //topLeft | ||
//bottomLeft | ||
var bottomRightOnlyOverFlow = rect.width >= relativeBoxGap.center.right; | ||
views.bottomLeft = !(bottomOverFlow || bottomRightOnlyOverFlow); | ||
var topRightOnlyOverFlow = rect.width >= relativeBoxGap.center.right; | ||
views.topLeft = !(topOverFlow || topRightOnlyOverFlow); | ||
views.topCenter = !(topOverFlow || topRightOverFlow || topLeftOverFlow); //|| topLeftOnlyOverFlow || topRightOnlyOverFlow); | ||
//leftCenter | ||
views.bottomCenter = !(bottomOverFlow || bottomRightOverFlow || bottomLeftOverFlow); | ||
//topCenter | ||
var topOverFlow = rect.height >= relativeBoxGap.top; | ||
var topRightOverFlow = rect.width / 2 >= relativeBoxGap.center.right; | ||
var topLeftOverFlow = rect.width / 2 >= relativeBoxGap.center.left; | ||
var leftOverFlow = rect.width >= relativeBoxGap.left; | ||
var leftTopOverFlow = rect.height / 2 >= relativeBoxGap.center.top; | ||
var leftBottomOverFlow = rect.height / 2 >= relativeBoxGap.center.bottom; //leftTop | ||
//topRight | ||
var topLeftOnlyOverFlow = rect.width >= relativeBoxGap.center.left; | ||
views.topRight = !(topOverFlow || topLeftOnlyOverFlow); | ||
var leftTopOnlyOverFlow = rect.height >= relativeBoxGap.center.bottom; | ||
views.leftTop = !(leftOverFlow || leftTopOnlyOverFlow); //leftBottom | ||
//topLeft | ||
var topRightOnlyOverFlow = rect.width >= relativeBoxGap.center.right; | ||
views.topLeft = !(topOverFlow || topRightOnlyOverFlow); | ||
var leftBottomOnlyOverFlow = rect.height >= relativeBoxGap.center.top; | ||
views.leftBottom = !(leftOverFlow || leftBottomOnlyOverFlow); | ||
views.leftCenter = !(leftOverFlow || leftTopOverFlow || leftBottomOverFlow); // || leftTopOnlyOverFlow || leftBottomOnlyOverFlow); | ||
//rightCenter | ||
views.topCenter = !(topOverFlow || topRightOverFlow || topLeftOverFlow); //|| topLeftOnlyOverFlow || topRightOnlyOverFlow); | ||
var rightOverFlow = rect.width >= relativeBoxGap.right; | ||
var rightTopOverFlow = rect.height / 2 >= relativeBoxGap.center.top; | ||
var rightBottomOverFlow = rect.height / 2 >= relativeBoxGap.center.bottom; //rightTop | ||
//leftCenter | ||
var leftOverFlow = rect.width >= relativeBoxGap.left; | ||
var rightTopOnlyOverFlow = rect.height >= relativeBoxGap.center.bottom; | ||
views.rightTop = !(rightOverFlow || rightTopOnlyOverFlow); //rightBottom | ||
var leftTopOverFlow = rect.height / 2 >= relativeBoxGap.center.top; | ||
var leftBottomOverFlow = rect.height / 2 >= relativeBoxGap.center.bottom; | ||
var rightBottomOnlyOverFlow = rect.height >= relativeBoxGap.center.top; | ||
views.rightBottom = !(rightOverFlow || rightBottomOnlyOverFlow); | ||
views.rightCenter = !(rightOverFlow || rightTopOverFlow || rightBottomOverFlow); // || rightTopOnlyOverFlow || rightBottomOnlyOverFlow); | ||
//leftTop | ||
var leftTopOnlyOverFlow = rect.height >= relativeBoxGap.center.bottom; | ||
views.leftTop = !(leftOverFlow || leftTopOnlyOverFlow); | ||
var horizontalCenter = relativeBoxGap.left + relativeBoxRect.width / 2; | ||
var horizontalLeft = relativeBoxGap.left; | ||
var horizontalRight = relativeBoxGap.left + relativeBoxRect.width; | ||
var verticalBottom = relativeBoxGap.top + relativeBoxRect.height; | ||
var verticalTop = relativeBoxGap.top; | ||
var verticalCenter = relativeBoxGap.top + relativeBoxRect.height / 2; | ||
var horizontalTop = documentGap.bottom + relativeBoxRect.height; | ||
var verticalCenterToTop = documentGap.bottom + relativeBoxRect.height / 2; | ||
var needArrow = false; // let isAbsolute = false; | ||
//leftBottom | ||
var leftBottomOnlyOverFlow = rect.height >= relativeBoxGap.center.top; | ||
views.leftBottom = !(leftOverFlow || leftBottomOnlyOverFlow); | ||
var paddingSpace = 5; // space between target and relative element | ||
views.leftCenter = !(leftOverFlow || leftTopOverFlow || leftBottomOverFlow); // || leftTopOnlyOverFlow || leftBottomOnlyOverFlow); | ||
var arrowSize = needArrow ? 10 : 5; | ||
rect.height = rect.height + (needArrow ? arrowSize : paddingSpace); | ||
rect.width = rect.width + (needArrow ? arrowSize : paddingSpace); | ||
debugger; | ||
var viewsOffset = { | ||
// Code Copy frm DOT ViewPort.js qa | ||
bottomCenter: { | ||
left: horizontalCenter - rect.width / 2, | ||
top: verticalBottom + arrowSize | ||
}, | ||
bottomRight: { | ||
left: horizontalRight - rect.width, | ||
top: verticalBottom + arrowSize | ||
}, | ||
bottomLeft: { | ||
left: horizontalLeft, | ||
top: verticalBottom + arrowSize | ||
}, | ||
topCenter: { | ||
left: horizontalCenter - rect.width / 2, | ||
bottom: horizontalTop + arrowSize | ||
}, | ||
topRight: { | ||
left: horizontalRight - rect.width, | ||
bottom: horizontalTop + arrowSize | ||
}, | ||
topLeft: { | ||
left: horizontalLeft, | ||
bottom: horizontalTop + arrowSize | ||
}, | ||
rightCenter: { | ||
left: horizontalRight + arrowSize, | ||
top: verticalCenter - rect.height / 2 | ||
}, | ||
rightBottom: { | ||
left: horizontalRight + arrowSize, | ||
bottom: documentGap.bottom | ||
}, | ||
rightTop: { | ||
left: horizontalRight + arrowSize, | ||
top: verticalTop | ||
}, | ||
leftCenter: { | ||
left: horizontalLeft - (rect.width + arrowSize), | ||
top: verticalCenter - rect.height / 2 | ||
}, | ||
leftTop: { | ||
left: horizontalLeft - (rect.width + arrowSize), | ||
top: verticalTop | ||
}, | ||
leftBottom: { | ||
left: horizontalLeft - (rect.width + arrowSize), | ||
bottom: documentGap.bottom | ||
} | ||
}; | ||
return { | ||
views: views, | ||
adjustments: adjustments, | ||
positionOffset: viewsOffset | ||
}; | ||
}, | ||
getArrowAdjustments: function getArrowAdjustments(el, relativeBox, customFrame) { | ||
if (!el) { | ||
return; | ||
} | ||
//rightCenter | ||
var rightOverFlow = rect.width >= relativeBoxGap.right; | ||
var elRects = viewPort.frameRelativeRects(el, customFrame); | ||
var rect = elRects.rect; | ||
var rectGap = elRects.rectGap; | ||
var adjustments = elRects.adjustments; | ||
var relativeBoxReacts = viewPort.frameRelativeRects(relativeBox, customFrame); | ||
var relativeBoxReact = relativeBoxReacts.rect; | ||
var relativeBoxGap = relativeBoxReacts.rectGap; | ||
return { | ||
left: relativeBoxGap.center.left - rectGap.left, | ||
right: relativeBoxGap.center.right - rectGap.right, | ||
top: relativeBoxGap.center.top - rectGap.top, | ||
bottom: relativeBoxGap.center.bottom - rectGap.bottom | ||
}; | ||
}, | ||
betterView: function betterView(popup, relativeBox, defaultView, customFrame) { | ||
var viewPortPossibilities = viewPort.possibilities(popup, relativeBox, customFrame); | ||
var rightTopOverFlow = rect.height / 2 >= relativeBoxGap.center.top; | ||
var rightBottomOverFlow = rect.height / 2 >= relativeBoxGap.center.bottom; | ||
if (!viewPortPossibilities) { | ||
return; | ||
} | ||
//rightTop | ||
var rightTopOnlyOverFlow = rect.height >= relativeBoxGap.center.bottom; | ||
views.rightTop = !(rightOverFlow || rightTopOnlyOverFlow); | ||
var views = viewPortPossibilities.views; | ||
var adjustments = viewPortPossibilities.adjustments; | ||
var viewKeys = Object.keys(views); | ||
var isViewFound = false; | ||
var positionOffset = viewPortPossibilities.positionOffset; | ||
//rightBottom | ||
var rightBottomOnlyOverFlow = rect.height >= relativeBoxGap.center.top; | ||
views.rightBottom = !(rightOverFlow || rightBottomOnlyOverFlow); | ||
for (var i = 0; i < viewKeys.length; i++) { | ||
var viewKey = viewKeys[i]; | ||
views.rightCenter = !(rightOverFlow || rightTopOverFlow || rightBottomOverFlow); // || rightTopOnlyOverFlow || rightBottomOnlyOverFlow); | ||
if (views[viewKey]) { | ||
isViewFound = true; | ||
break; | ||
} | ||
} | ||
if (!isViewFound) { | ||
return { | ||
view: null, | ||
adjustments: adjustments, | ||
fixedPosition: {} | ||
}; | ||
} | ||
var horizontalCenter = relativeBoxGap.left + relativeBoxRect.width / 2; | ||
var horizontalLeft = relativeBoxGap.left; | ||
var horizontalRight = relativeBoxGap.left + relativeBoxRect.width; | ||
var verticalBottom = relativeBoxGap.top + relativeBoxRect.height; | ||
var verticalTop = relativeBoxGap.top; | ||
var verticalCenter = relativeBoxGap.top + relativeBoxRect.height / 2; | ||
var horizontalTop = documentGap.bottom + relativeBoxRect.height; | ||
var verticalCenterToTop = documentGap.bottom + relativeBoxRect.height / 2; | ||
if (views[defaultView]) { | ||
return { | ||
view: defaultView, | ||
adjustments: adjustments, | ||
fixedPosition: positionOffset[defaultView] | ||
}; | ||
} | ||
var needArrow = false; | ||
// let isAbsolute = false; | ||
var paddingSpace = 5; // space between target and relative element | ||
var arrowSize = needArrow ? 10 : 5; | ||
rect.height = rect.height + (needArrow ? arrowSize : paddingSpace); | ||
rect.width = rect.width + (needArrow ? arrowSize : paddingSpace); | ||
var defaultPosition = defaultView.replace(/Center|Bottom|Top|Left|Right$/, ''); | ||
var viewTypes = { | ||
top: ['Center', 'Right', 'Left'], | ||
left: ['Center', 'Top', 'Bottom'] | ||
}; | ||
viewTypes.bottom = viewTypes.top; | ||
viewTypes.right = viewTypes.left; | ||
var defaultPositions = viewTypes[defaultPosition]; | ||
debugger; | ||
for (var _i = 0, len = defaultPositions.length; _i < len; _i++) { | ||
var _viewKey = defaultPosition + defaultPositions[_i]; | ||
var viewsOffset = { // Code Copy frm DOT ViewPort.js qa | ||
bottomCenter: { | ||
left: horizontalCenter - rect.width / 2, | ||
top: verticalBottom + arrowSize | ||
}, | ||
bottomRight: { | ||
left: horizontalRight - rect.width, | ||
top: verticalBottom + arrowSize | ||
}, | ||
bottomLeft: { | ||
left: horizontalLeft, | ||
top: verticalBottom + arrowSize | ||
}, | ||
topCenter: { | ||
left: horizontalCenter - rect.width / 2, | ||
bottom: horizontalTop + arrowSize | ||
}, | ||
topRight: { | ||
left: horizontalRight - rect.width, | ||
bottom: horizontalTop + arrowSize | ||
}, | ||
topLeft: { | ||
left: horizontalLeft, | ||
bottom: horizontalTop + arrowSize | ||
}, | ||
rightCenter: { | ||
left: horizontalRight + arrowSize, | ||
top: verticalCenter - rect.height / 2 | ||
}, | ||
rightBottom: { | ||
left: horizontalRight + arrowSize, | ||
bottom: documentGap.bottom | ||
}, | ||
rightTop: { | ||
left: horizontalRight + arrowSize, | ||
top: verticalTop | ||
}, | ||
leftCenter: { | ||
left: horizontalLeft - (rect.width + arrowSize), | ||
top: verticalCenter - rect.height / 2 | ||
}, | ||
leftTop: { | ||
left: horizontalLeft - (rect.width + arrowSize), | ||
top: verticalTop | ||
}, | ||
leftBottom: { | ||
left: horizontalLeft - (rect.width + arrowSize), | ||
bottom: documentGap.bottom | ||
} | ||
}; | ||
if (views[_viewKey]) { | ||
return { | ||
view: _viewKey, | ||
adjustments: adjustments, | ||
fixedPosition: positionOffset[_viewKey] | ||
}; | ||
} | ||
} | ||
return { views: views, adjustments: adjustments, positionOffset: viewsOffset }; | ||
}, | ||
var oppositePositionsOrder = { | ||
bottom: ['top', 'right', 'left'], | ||
top: ['bottom', 'right', 'left'], | ||
left: ['bottom', 'right', 'top'], | ||
right: ['bottom', 'top', 'left'] | ||
}; | ||
var oppositeViews = oppositePositionsOrder[defaultPosition]; | ||
getArrowAdjustments: function getArrowAdjustments(el, relativeBox, customFrame) { | ||
if (!el) { | ||
return; | ||
} | ||
for (var _i2 = 0, _len = oppositeViews.length; _i2 < _len; _i2++) { | ||
var oppositeView = oppositeViews[_i2]; | ||
var positions = viewTypes[oppositeView]; | ||
var elRects = viewPort.frameRelativeRects(el, customFrame); | ||
var rect = elRects.rect; | ||
var rectGap = elRects.rectGap; | ||
var adjustments = elRects.adjustments; | ||
for (var j = 0, lenx = positions.length; j < lenx; j++) { | ||
var _viewKey2 = oppositeView + positions[j]; | ||
var relativeBoxReacts = viewPort.frameRelativeRects(relativeBox, customFrame); | ||
var relativeBoxReact = relativeBoxReacts.rect; | ||
var relativeBoxGap = relativeBoxReacts.rectGap; | ||
if (views[_viewKey2]) { | ||
return { | ||
view: _viewKey2, | ||
adjustments: adjustments, | ||
fixedPosition: positionOffset[_viewKey2] | ||
}; | ||
} | ||
} | ||
} | ||
return { | ||
left: relativeBoxGap.center.left - rectGap.left, | ||
right: relativeBoxGap.center.right - rectGap.right, | ||
top: relativeBoxGap.center.top - rectGap.top, | ||
bottom: relativeBoxGap.center.bottom - rectGap.bottom | ||
}; | ||
}, | ||
betterView: function betterView(popup, relativeBox, defaultView, customFrame) { | ||
var viewPortPossibilities = viewPort.possibilities(popup, relativeBox, customFrame); | ||
if (!viewPortPossibilities) { | ||
return; | ||
} | ||
var views = viewPortPossibilities.views; | ||
var adjustments = viewPortPossibilities.adjustments; | ||
var viewKeys = Object.keys(views); | ||
var isViewFound = false; | ||
var positionOffset = viewPortPossibilities.positionOffset; | ||
for (var i = 0; i < viewKeys.length; i++) { | ||
var viewKey = viewKeys[i]; | ||
if (views[viewKey]) { | ||
isViewFound = true; | ||
break; | ||
} | ||
} | ||
if (!isViewFound) { | ||
return { view: null, adjustments: adjustments, fixedPosition: {} }; | ||
} | ||
if (views[defaultView]) { | ||
return { view: defaultView, adjustments: adjustments, fixedPosition: positionOffset[defaultView] }; | ||
} | ||
var defaultPosition = defaultView.replace(/Center|Bottom|Top|Left|Right$/, ''); | ||
var viewTypes = { top: ['Center', 'Right', 'Left'], left: ['Center', 'Top', 'Bottom'] }; | ||
viewTypes.bottom = viewTypes.top; | ||
viewTypes.right = viewTypes.left; | ||
var defaultPositions = viewTypes[defaultPosition]; | ||
for (var _i = 0, len = defaultPositions.length; _i < len; _i++) { | ||
var _viewKey = defaultPosition + defaultPositions[_i]; | ||
if (views[_viewKey]) { | ||
return { view: _viewKey, adjustments: adjustments, fixedPosition: positionOffset[_viewKey] }; | ||
} | ||
} | ||
var oppositePositionsOrder = { | ||
bottom: ['top', 'right', 'left'], | ||
top: ['bottom', 'right', 'left'], | ||
left: ['bottom', 'right', 'top'], | ||
right: ['bottom', 'top', 'left'] | ||
}; | ||
var oppositeViews = oppositePositionsOrder[defaultPosition]; | ||
for (var _i2 = 0, _len = oppositeViews.length; _i2 < _len; _i2++) { | ||
var oppositeView = oppositeViews[_i2]; | ||
var positions = viewTypes[oppositeView]; | ||
for (var j = 0, lenx = positions.length; j < lenx; j++) { | ||
var _viewKey2 = oppositeView + positions[j]; | ||
if (views[_viewKey2]) { | ||
return { view: _viewKey2, adjustments: adjustments, fixedPosition: positionOffset[_viewKey2] }; | ||
} | ||
} | ||
} | ||
return { view: null, adjustments: adjustments, fixedPosition: {} }; | ||
} | ||
return { | ||
view: null, | ||
adjustments: adjustments, | ||
fixedPosition: {} | ||
}; | ||
} | ||
}; | ||
exports.default = { | ||
betterView: viewPort.betterView, | ||
frameRelativeRects: viewPort.frameRelativeRects, | ||
getArrowAdjustments: viewPort.getArrowAdjustments | ||
}; | ||
var _default = { | ||
betterView: viewPort.betterView, | ||
frameRelativeRects: viewPort.frameRelativeRects, | ||
getArrowAdjustments: viewPort.getArrowAdjustments | ||
}; | ||
exports["default"] = _default; |
{ | ||
"name": "@zohodesk/popups", | ||
"version": "1.0.9", | ||
"version": "1.0.10", | ||
"description": "popups popupover modal dialog alert notifications popup handling for whole app", | ||
@@ -23,2 +23,5 @@ "main": "lib/index.js", | ||
}, | ||
"devDependencies": { | ||
"@zohodesk/react-cli": "1.1.9" | ||
}, | ||
"keywords": [ | ||
@@ -38,6 +41,3 @@ "popups", | ||
}, | ||
"homepage": "https://github.com/machi-projects/popups#readme", | ||
"devDependencies": { | ||
"@zohodesk/react-cli": "0.0.1-beta.41" | ||
} | ||
"homepage": "https://github.com/machi-projects/popups#readme" | ||
} |
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
2173
215845
1