UNPKG

@adaptabletools/adaptable

Version:

Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements

73 lines (72 loc) 5.07 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import * as GeneralConstants from '../../../../Utilities/Constants/GeneralConstants'; import TopBar from './TopBar'; import join from '../../../../components/utils/join'; import { cn } from '../../../../lib/utils'; import { Navigation } from './Navigation'; import PopupContext from './PopupContext'; import { AdaptablePopupBody } from './AdaptablePopupBody'; import { useAdaptable } from '../../../AdaptableContext'; import { CustomSettingsPanelView } from './CustomSettingsPanelView'; import { useMenuItems } from './useMenuItems'; import { isSettingsPanelNavigationItem } from './settingsPanelNavigationTypes'; import { resolveContainerElement } from '../../../../Utilities/resolveContainerElement'; import { AdaptablePopupDialog } from './AdaptablePopupDialog'; import { Box } from '../../../../components/Flex'; export const AdaptablePopup = (props) => { const adaptable = useAdaptable(); const settingsPanelOptions = adaptable.adaptableOptions.settingsPanelOptions; const wizardOptions = adaptable.adaptableOptions.wizardOptions; const settingsPanelTitle = adaptable.ModuleService.getModuleFriendlyName('SettingsPanel'); const menuItems = useMenuItems(); const modalContainer = resolveContainerElement(adaptable.adaptableOptions?.containerOptions?.modalContainer, props.api.internalApi.buildBaseContext()); let friendlyName = null; let isStandalone = false; let moduleViewContent = null; let activeItem = null; let accessLevel = GeneralConstants.ACCESS_LEVEL_FULL; const firstMenuItem = menuItems.find(isSettingsPanelNavigationItem)?.menuItem; const firstMenuModule = firstMenuItem?.category; let componentModule = props.componentModule; let componentName = props.componentName; const useFirstItem = !props.componentName; if (useFirstItem && firstMenuModule !== 'General' && firstMenuModule !== 'CustomSettingsPanel' && firstMenuModule !== 'Group') { componentModule = firstMenuModule; } const customSettingsPanel = settingsPanelOptions?.customSettingsPanels?.find((customPanel) => useFirstItem ? customPanel.name === firstMenuItem.label : customPanel.name === componentName); if (customSettingsPanel) { friendlyName = customSettingsPanel.name; activeItem = customSettingsPanel.name; moduleViewContent = _jsx(CustomSettingsPanelView, { settingsPanel: customSettingsPanel }); } else { const module = props.api.internalApi.getModuleService().getModuleById(componentModule); const moduleInfo = module?.moduleInfo; accessLevel = props.api.entitlementApi.getEntitlementAccessLevelForModule(componentModule); friendlyName = moduleInfo.FriendlyName; isStandalone = moduleInfo && (GeneralConstants.STANDALONE_MODULE_POPUPS.includes(moduleInfo?.ModuleName) || (props.componentName && props.componentName !== moduleInfo?.Popup)); activeItem = moduleInfo.ModuleName; moduleViewContent = (_jsx(AdaptablePopupBody, { api: props.api, module: module, componentName: props.componentName, moduleParams: props.moduleParams, onClearParams: props.onClearParams, onHide: props.onHide })); } const effectivePopupType = isStandalone ? wizardOptions?.popupType ?? settingsPanelOptions.popupType : settingsPanelOptions.popupType; const isWindowModal = effectivePopupType === 'window'; const baseClassName = 'ab-Adaptable-Popup'; const className = join(baseClassName, `${baseClassName}--${isWindowModal ? 'window' : 'modal'}`, isStandalone ? `${baseClassName}--action-popup` : `${baseClassName}--settings-popup`); return (_jsx(PopupContext.Provider, { value: { hidePopup: () => { if (props.onHide) { props.onHide(); } }, }, children: _jsxs(AdaptablePopupDialog, { dataName: componentModule, baseClassName: baseClassName, className: className, friendlyName: friendlyName, isActionModule: isStandalone, isWindowModal: isWindowModal, onHide: props.onHide, modalContainer: modalContainer, children: [!isStandalone && _jsx(TopBar, { icon: settingsPanelOptions.icon, children: settingsPanelTitle }), _jsxs(Box, { className: cn('twa:flex twa:flex-row twa:flex-1 twa:min-h-0', 'twa:bg-background twa:text-foreground', 'twa:rounded-bl-standard twa:rounded-br-standard', accessLevel == GeneralConstants.ACCESS_LEVEL_READ_ONLY ? GeneralConstants.READ_ONLY_STYLE : ''), children: [!isStandalone && (_jsx(Navigation, { menuItems: menuItems, api: props.api, activeItem: activeItem, customSettingsPanels: settingsPanelOptions.customSettingsPanels })), _jsx(Box, { className: cn('ab-Adaptable-Popup__Body', 'twa:bg-primarylight twa:text-primarylight-foreground', 'twa:flex twa:flex-1 twa:min-w-0 twa:overflow-auto', 'twa:rounded-br-standard', !isStandalone && 'twa:*:p-3'), children: moduleViewContent })] })] }) })); };