This commit is contained in:
Mirco Wittrien 2020-02-09 21:19:27 +01:00
parent b23e3cd3be
commit 3bd95a845b
2 changed files with 24 additions and 21 deletions

View File

@ -3727,32 +3727,35 @@
BDFDB.ModalUtils = {}; BDFDB.ModalUtils = {};
BDFDB.ModalUtils.open = function (plugin, config) { BDFDB.ModalUtils.open = function (plugin, config) {
if (!BDFDB.ObjectUtils.is(plugin) || !BDFDB.ObjectUtils.is(config)) return; if (!BDFDB.ObjectUtils.is(plugin) || !BDFDB.ObjectUtils.is(config)) return;
var modal, modalInstance, headerchildren = [], contentchildren = [], footerchildren = [], modalprops, cancels = [], closeModal = _ => { let modal, modalInstance, modalProps, cancels = [], closeModal = _ => {
if (BDFDB.ObjectUtils.is(modalprops) && typeof modalprops.onClose == "function") modalprops.onClose(); if (BDFDB.ObjectUtils.is(modalProps) && typeof modalProps.onClose == "function") modalProps.onClose();
}; };
let headerChildren = BDFDB.ArrayUtils.is(config.headerChildren) ? config.headerChildren : [];
let contentChildren = BDFDB.ArrayUtils.is(config.contentChildren) ? config.contentChildren : [];
let footerChildren = BDFDB.ArrayUtils.is(config.footerChildren) ? config.footerChildren : [];
if (typeof config.text == "string") { if (typeof config.text == "string") {
contentchildren.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextElement, { contentChildren.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TextElement, {
color: InternalComponents.LibraryComponents.TextElement.Colors.PRIMARY, color: InternalComponents.LibraryComponents.TextElement.Colors.PRIMARY,
children: config.text children: config.text
})); }));
} }
if (config.children) { if (config.children) {
let selectedtab, tabbaritems = []; let tabBarItems = [];
for (let child of [config.children].flat(10).filter(n => n)) if (LibraryModules.React.isValidElement(child)) { for (let child of [config.children].flat(10).filter(n => n)) if (LibraryModules.React.isValidElement(child)) {
if (child.type == InternalComponents.LibraryComponents.ModalComponents.ModalTabContent) { if (child.type == InternalComponents.LibraryComponents.ModalComponents.ModalTabContent) {
if (!tabbaritems.length) child.props.open = true; if (!tabBarItems.length) child.props.open = true;
else delete child.props.open; else delete child.props.open;
tabbaritems.push({value:child.props.tab}); tabBarItems.push({value:child.props.tab});
} }
contentchildren.push(child); contentChildren.push(child);
} }
if (tabbaritems.length) headerchildren.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { if (tabBarItems.length) headerchildren.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
className: BDFDB.disCN.tabbarcontainer, className: BDFDB.disCN.tabbarcontainer,
children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TabBar, { children: BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.TabBar, {
className: BDFDB.disCN.tabbar, className: BDFDB.disCN.tabbar,
itemClassName: BDFDB.disCN.tabbaritem, itemClassName: BDFDB.disCN.tabbaritem,
type: InternalComponents.LibraryComponents.TabBar.Types.TOP, type: InternalComponents.LibraryComponents.TabBar.Types.TOP,
items: tabbaritems, items: tabBarItems,
onItemSelect: (value, instance) => { onItemSelect: (value, instance) => {
let tabContentInstances = BDFDB.ReactUtils.findOwner(modal, {name:"BDFDB_ModalTabContent", all:true, unlimited:true}); let tabContentInstances = BDFDB.ReactUtils.findOwner(modal, {name:"BDFDB_ModalTabContent", all:true, unlimited:true});
for (let ins of tabContentInstances) { for (let ins of tabContentInstances) {
@ -3773,7 +3776,7 @@
if (button.cancel) cancels.push(click); if (button.cancel) cancels.push(click);
footerchildren.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Button, BDFDB.ObjectUtils.exclude(Object.assign({}, button, { footerChildren.push(BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Button, BDFDB.ObjectUtils.exclude(Object.assign({}, button, {
look: look || (color ? InternalComponents.LibraryComponents.Button.Looks.FILLED : InternalComponents.LibraryComponents.Button.Looks.LINK), look: look || (color ? InternalComponents.LibraryComponents.Button.Looks.FILLED : InternalComponents.LibraryComponents.Button.Looks.LINK),
color: color || InternalComponents.LibraryComponents.Button.Colors.PRIMARY, color: color || InternalComponents.LibraryComponents.Button.Colors.PRIMARY,
onClick: _ => { onClick: _ => {
@ -3784,10 +3787,10 @@
}), "click", "close", "cancel", "contents"))); }), "click", "close", "cancel", "contents")));
} }
} }
contentchildren = contentchildren.filter(n => n && (typeof n == "string" || BDFDB.ReactUtils.isValidElement(n))); contentChildren = contentChildren.filter(n => n && (typeof n == "string" || BDFDB.ReactUtils.isValidElement(n)));
headerchildren = headerchildren.filter(n => n && (typeof n == "string" || BDFDB.ReactUtils.isValidElement(n))); headerchildren = headerchildren.filter(n => n && (typeof n == "string" || BDFDB.ReactUtils.isValidElement(n)));
footerchildren = footerchildren.filter(n => n && (typeof n == "string" || BDFDB.ReactUtils.isValidElement(n))); footerChildren = footerChildren.filter(n => n && (typeof n == "string" || BDFDB.ReactUtils.isValidElement(n)));
if (contentchildren.length) { if (contentChildren.length) {
if (typeof config.onClose != "function") config.onClose = _ => {}; if (typeof config.onClose != "function") config.onClose = _ => {};
if (typeof config.onOpen != "function") config.onOpen = _ => {}; if (typeof config.onOpen != "function") config.onOpen = _ => {};
@ -3796,7 +3799,7 @@
let size = typeof config.size == "string" && InternalComponents.LibraryComponents.ModalComponents.ModalSize[config.size.toUpperCase()]; let size = typeof config.size == "string" && InternalComponents.LibraryComponents.ModalComponents.ModalSize[config.size.toUpperCase()];
let oldTransitionState = 0; let oldTransitionState = 0;
LibraryModules.ModalUtils.openModal(props => { LibraryModules.ModalUtils.openModal(props => {
modalprops = props; modalProps = props;
return BDFDB.ReactUtils.createElement(class BDFDB_Modal extends LibraryModules.React.Component { return BDFDB.ReactUtils.createElement(class BDFDB_Modal extends LibraryModules.React.Component {
render () { render () {
return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalRoot, { return BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalRoot, {
@ -3805,7 +3808,7 @@
transitionState: props.transitionState, transitionState: props.transitionState,
children: [ children: [
BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalHeader, { BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalHeader, {
className: BDFDB.DOMUtils.formatClassName(config.headerClassName, headerchildren.length && BDFDB.disCN.modalheaderhassibling), className: BDFDB.DOMUtils.formatClassName(config.headerClassName, headerChildren.length && BDFDB.disCN.modalheaderhassibling),
separator: config.headerSeparator || false, separator: config.headerSeparator || false,
children: [ children: [
BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, { BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex.Child, {
@ -3826,19 +3829,19 @@
}) })
] ]
}), }),
headerchildren.length ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, { headerChildren.length ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.Flex, {
grow: 0, grow: 0,
shrink: 0, shrink: 0,
children: headerchildren children: headerChildren
}) : null, }) : null,
BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalContent, { BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalContent, {
className: config.contentClassName, className: config.contentClassName,
scroller: config.scroller, scroller: config.scroller,
children: contentchildren children: contentChildren
}), }),
footerchildren.length ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalFooter, { footerChildren.length ? BDFDB.ReactUtils.createElement(InternalComponents.LibraryComponents.ModalComponents.ModalFooter, {
className: config.footerClassName, className: config.footerClassName,
children: footerchildren children: footerChildren
}) : null }) : null
] ]
}); });

File diff suppressed because one or more lines are too long