@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
JavaScript
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);
}
}