UNPKG

@adaptabletools/adaptable

Version:

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

98 lines (97 loc) 3.31 kB
export const DEFAULT_SETTINGS_PANEL_NAVIGATION_GROUPS = [ { label: 'Grid & UI', items: ['GridInfo', 'ColumnInfo', 'Dashboard', 'ToolPanel', 'StatusBar', 'Theme'], }, { label: 'Layout', items: ['Layout', 'CalculatedColumn', 'CustomSort', 'Charting'], }, { label: 'Formatting', items: ['FormatColumn', 'StyledColumn', 'FlashingCell'], }, { label: 'Filtering & Search', items: ['QuickSearch', 'GridFilter', 'ColumnFilter', 'DataSet', 'NamedQuery'], }, { label: 'Notes & Annotations', items: ['Alert', 'Note', 'Comment', 'FreeTextColumn', 'SystemStatus'], }, { label: 'Export & Import', items: ['Export', 'DataImport'], }, { label: 'Editing', items: ['PlusMinus', 'Shortcut', 'DataChangeHistory'], }, { label: 'Administration', items: ['TeamSharing', 'StateManagement'], }, ]; export const buildDefaultSettingsPanelNavigation = (customPanelNames = []) => { const groups = DEFAULT_SETTINGS_PANEL_NAVIGATION_GROUPS.map((group) => ({ label: group.label, items: [...group.items], })); if (customPanelNames.length) { groups.push({ label: 'Custom Panels', items: [...customPanelNames], }); } return { groups }; }; const cloneSettingsPanelNavigation = (navigation) => ({ groups: navigation.groups.map((group) => ({ label: group.label, items: [...group.items], })), }); const convertLegacyFlatNavigationToGrouped = (legacy) => { const items = legacy.items ?? []; const groups = []; let current = []; for (const item of items) { if (item === '-') { if (current.length) { groups.push({ label: '', items: current }); current = []; } } else { current.push(item); } } if (current.length) { groups.push({ label: '', items: current }); } return { groups }; }; let didWarnLegacyNavigation = false; const warnLegacyNavigationOnce = (api) => { if (didWarnLegacyNavigation) { return; } didWarnLegacyNavigation = true; api.internalApi .getAdaptableInstance() .logger.consoleWarn("SettingsPanelOptions.navigation is using the legacy v22 `{ items: [...] }` shape — this is deprecated and will be removed in the next major release. Use a SettingsPanelNavigationConfigurer function: `(context, defaultNavigation) => SettingsPanelNavigation`."); }; const isNavigationConfigurer = (navigation) => typeof navigation === 'function'; export const resolveSettingsPanelNavigation = (api, settingsPanelOptions) => { const defaultNavigation = buildDefaultSettingsPanelNavigation(settingsPanelOptions.customSettingsPanels?.map((panel) => panel.name) ?? []); const navigation = settingsPanelOptions.navigation; if (!navigation) { return defaultNavigation; } if (isNavigationConfigurer(navigation)) { const context = api.internalApi.buildBaseContext(); return navigation(context, cloneSettingsPanelNavigation(defaultNavigation)); } warnLegacyNavigationOnce(api); return convertLegacyFlatNavigationToGrouped(navigation); };