Update 0BDFDB.plugin.js

This commit is contained in:
Mirco Wittrien 2021-03-12 11:37:12 +01:00
parent cab11687d2
commit c3e3f896fc
1 changed files with 26 additions and 17 deletions

View File

@ -6264,11 +6264,15 @@ module.exports = (_ => {
InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.PaginatedList, {amount: 50, offset: 0, mini: true, jump: true, maxVisiblePages: 7, copyToBottom: false, fade: true});
InternalComponents.LibraryComponents.Popout = reactInitialized && class BDFDB_Popout extends LibraryModules.React.Component {
componentDidMount() {
this.props.containerInstance.popout = this;
}
componentWillUnmount() {
delete this.props.containerInstance.popout;
if (typeof this.props.onClose == "function") this.props.onClose(this.props.containerInstance, this);
}
render() {
if (!this.props.wrap) return this.props.children;
let pos = typeof this.props.position == "string" ? this.props.position.toLowerCase() : null;
let positionClass = pos && DiscordClasses["popout" + pos] ? BDFDB.disCN["popout" + pos] : BDFDB.disCN.popouttop;
let arrowClass = !this.props.arrow ? BDFDB.disCN.popoutnoarrow : (pos && pos.indexOf("top") > -1 && pos != "top" ? BDFDB.disCN.popoutarrowalignmenttop : BDFDB.disCN.popoutarrowalignmentmiddle);
@ -6287,26 +6291,13 @@ module.exports = (_ => {
});
}
};
InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.Popout, {themed: true});
InternalBDFDB.setDefaultProps(InternalComponents.LibraryComponents.Popout, {themed: true, wrap: true});
InternalComponents.LibraryComponents.PopoutContainer = reactInitialized && class BDFDB_PopoutContainer extends LibraryModules.React.Component {
handleRender(e) {
let children = typeof this.props.renderPopout == "function" ? this.props.renderPopout(this) : null;
return this.context.popout = !children ? null : (!this.props.wrap ? children : BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Popout, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, {
className: this.props.popoutClassName,
containerInstance: this,
isChild: true,
position: e.position,
style: this.props.popoutStyle,
onClose: typeof this.props.onClose == "function" ? this.props.onClose.bind(this) : _ => {},
children: children
}), "popoutStyle", "popoutClassName")));
}
componentDidMount() {
let basePopout = BDFDB.ReactUtils.findOwner(this, {name: "BasePopout"});
if (!basePopout || !basePopout.handleClick) return;
basePopout.isBDFDBpopout = true;
this.handleClick = e => {return basePopout.handleClick(BDFDB.ObjectUtils.is(e) ? e : (new MouseEvent({})));};
this.handleClick = e => basePopout.handleClick(BDFDB.ObjectUtils.is(e) ? e : (new MouseEvent({})));
this.close = basePopout.close;
this.domElementRef = basePopout.domElementRef;
}
@ -6332,8 +6323,26 @@ module.exports = (_ => {
};
return BDFDB.ReactUtils.createElement(LibraryModules.React.Fragment, {
children: BDFDB.ReactUtils.createElement(InternalComponents.NativeSubComponents.PopoutContainer, Object.assign({}, this.props, {
children: _ => {return child;},
renderPopout: this.handleRender.bind(this)
children: _ => child,
renderPopout: e => {
const documentClick = event => {
let node = BDFDB.ReactUtils.findDOMNode(this.popout);
if (!node || !document.contains(node) || node != event.target && document.contains(event.target) && !node.contains(event.target)) {
document.removeEventListener("click", documentClick);
if (node && typeof this.close == "function") this.close();
}
};
document.addEventListener("click", documentClick);
return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Popout, BDFDB.ObjectUtils.exclude(Object.assign({}, this.props, {
className: this.props.popoutClassName,
containerInstance: this,
isChild: true,
position: e.position,
style: this.props.popoutStyle,
onClose: typeof this.props.onClose == "function" ? this.props.onClose.bind(this) : _ => {},
children: typeof this.props.renderPopout == "function" ? this.props.renderPopout(this) : null
}), "popoutStyle", "popoutClassName"));
}
}))
});
}