UNPKG

@pega/dx-component-builder-sdk

Version:

Utility for building custom UI components

69 lines (62 loc) 2.58 kB
export const getDeferFriendlyTabs = allTabs => { return allTabs.map(tab => { const theTabCompConfig = tab.getPConnect().getConfigProps(); return { type: 'DeferLoad', config: theTabCompConfig }; }); }; export const getVisibleTabs = (allTabs, uuid) => { let index = 0; return allTabs.props .getPConnect() .getChildren() ?.filter(child => { // US-402838: Filter out tab entries if the config object does not contain the visibility attribute or it evaluates to the boolean true, const config = child.getPConnect().getConfigProps(); // BUG-642335 - adding isChildDeferLoad prop if (child.getPConnect().getComponentName() === 'DeferLoad') { const { name: viewName, deferLoadId = `${viewName}_${uuid}_${index}` } = config; child.getPConnect().registerAdditionalProps({ deferLoadId, isChildDeferLoad: true }); } index += 1; return !('visibility' in config) || config.visibility === true; }); }; export const getTransientTabs = (availableTabs, currentTabId, tabItems) => { return ( availableTabs?.map((child, i) => { const config = child.getPConnect().getConfigProps(); const tabLabel = config.label || config.inheritedProps?.find(obj => obj.prop === 'label')?.value || PCore.getLocaleUtils().getLocaleValue('No label specified in config', 'Generic'); const tabContent = () => { if (i.toString() === currentTabId) { return tabItems?.[i.toString()]?.content ? tabItems?.[i.toString()]?.content : child.getPConnect().getComponent(); } return tabItems?.[i.toString()]?.content; }; return { name: tabLabel, id: i.toString(), content: tabContent() }; }) || [] ); }; export const tabClick = (id, availableTabs, currentTabId, setCurrentTabId, tabItems) => { const currentPConn = availableTabs[currentTabId].getPConnect(); const { deferLoadId } = currentPConn.getConfigProps(); PCore.getDeferLoadManager().deactivate(deferLoadId, currentPConn.getContextName()); setCurrentTabId(id); const index = parseInt(id, 10); if (tabItems[index]?.content === null) { tabItems[index].content = availableTabs[index].getPConnect().getComponent(); } const nextPConn = availableTabs[id].getPConnect(); const { deferLoadId: activeId } = nextPConn?.getConfigProps() || {}; PCore.getDeferLoadManager().activate(activeId, nextPConn?.getContextName()); PCore.getDeferLoadManager().refreshComponent(activeId, nextPConn?.getContextName()); };