UNPKG

@adaptabletools/adaptable

Version:

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

64 lines (63 loc) 2.98 kB
import * as React from 'react'; import { AgGridModulesDocsLink } from '../Utilities/Constants/DocumentationLinkConstants'; import { AdaptableLogger } from './AdaptableLogger'; import { AdaptableAgGrid } from './AdaptableAgGrid'; import { getDefaultAdaptableOptions } from '../AdaptableOptions/DefaultAdaptableOptions'; import { renderReactRoot as defaultRenderReactRoot } from '../renderReactRoot'; import AdaptableWizardView from '../View/AdaptableWizardView'; import { resolveContainerElement } from '../Utilities/resolveContainerElement'; export class Adaptable { static init(adaptableOptions, agGridConfig) { if (!agGridConfig?.modules?.length) { AdaptableLogger.consoleErrorBase(`No AG Grid modules were provided, thus limiting AdapTables features significantly!\n\nRead further info here:${AgGridModulesDocsLink}`); } return AdaptableAgGrid._initInternal({ ...agGridConfig, adaptableOptions, variant: 'vanilla' }); } } export class AdaptableNoCodeWizard { init; adaptableOptions; extraOptions; agGridModules; constructor(adaptableOptions, extraOptions = {}, agGridOptions) { const defaultInit = async ({ gridOptions, adaptableOptions, agGridModules, }) => { return await Adaptable.init(adaptableOptions, { gridOptions, modules: agGridModules }); }; this.adaptableOptions = adaptableOptions; this.init = extraOptions.onInit || defaultInit; this.extraOptions = extraOptions; this.agGridModules = []; this.render(); } render(container) { if (!container) { const initContext = { adaptableId: this.adaptableOptions?.adaptableId ?? '', adaptableStateKey: this.adaptableOptions?.adaptableStateKey ?? '', adaptableContext: this.adaptableOptions?.adaptableContext, }; container = resolveContainerElement(this.adaptableOptions.containerOptions?.adaptableContainer, initContext); } if (!container) { const defaultId = getDefaultAdaptableOptions().containerOptions.adaptableContainer || 'adaptable'; container = document.getElementById(defaultId); } if (!container) { throw new Error('Cannot find container in which to render Adaptable No Code Wizard'); } container.classList.add('adaptable--in-wizard'); const unmount = defaultRenderReactRoot(React.createElement(AdaptableWizardView, { adaptableOptions: this.adaptableOptions, ...this.extraOptions, onInit: (adaptableOptions, gridOptions) => { container.classList.remove('adaptable--in-wizard'); unmount(); this.init({ adaptableOptions, gridOptions: gridOptions, agGridModules: [...this.agGridModules], }); }, }), container); } }