UNPKG

@adaptabletools/adaptable

Version:

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

137 lines (136 loc) 6.12 kB
import { ApiBase } from '../Implementation/ApiBase'; import { createUuid } from '../../AdaptableState/Uuid'; import { ActionColumnRenderer, ReactActionColumnRenderer, } from '../../agGrid/cellRenderers/ActionColumnRenderer'; import { ACTION_COLUMN_TYPE } from '../../AdaptableState/Common/AdaptableColumn'; export class ActionColumnInternalApi extends ApiBase { getColDefsForActionColumns() { const defaultSpecialColumnSettings = this.getGridApi().internalApi.deriveSpecialColumnSettingsFromAgGridDefaultColDef(); const defaultActionColumnSettings = { ...defaultSpecialColumnSettings, resizable: true, suppressMenu: false, suppressMovable: false, }; return this.getActionColumnApi() .getActionColumns() .map((actionColumn) => { const actionColumnSettings = { ...defaultActionColumnSettings, ...actionColumn.actionColumnSettings, }; const newColDef = { headerName: actionColumn.friendlyName ? actionColumn.friendlyName : actionColumn.columnId, colId: actionColumn.columnId, hide: false, editable: false, width: actionColumnSettings.width, resizable: actionColumnSettings.resizable, suppressHeaderMenuButton: actionColumnSettings.suppressMenu, suppressMovable: actionColumnSettings.suppressMovable, filter: false, sortable: false, enableRowGroup: false, cellRenderer: this.getGridApi().getVariant() === 'react' ? ReactActionColumnRenderer : ActionColumnRenderer, type: [ACTION_COLUMN_TYPE], }; this.logInfo('Setting up Action Column: ' + actionColumn.columnId); return newColDef; }); } getActionColumnsAndButtons(colDef) { let actionColumn; // this should probably be in FDC3 api... if (!actionColumn && this.getFdc3Api().internalApi.isFdc3MainActionColumn(colDef.colId)) { const actionButtons = this.getFdc3Api().internalApi.getButtonsForFdc3MainActionColumn(); const actionColumnDefaultConfiguration = this.getFdc3Options().actionColumnDefaultConfiguration; actionColumn = { columnId: actionColumnDefaultConfiguration.columnId, actionColumnButton: actionButtons, rowScope: actionColumnDefaultConfiguration.rowScope, }; } if (!actionColumn && this.getFdc3Api().internalApi.isFdc3StandaloneActionColumn(colDef.colId)) { const actionButtons = this.getFdc3Api().internalApi.getButtonsForFdc3StandaloneActionColumn(colDef.colId); const actionColumnDefaultConfiguration = this.getFdc3Options().actionColumnDefaultConfiguration; actionColumn = { columnId: colDef.colId, actionColumnButton: actionButtons, rowScope: actionColumnDefaultConfiguration.rowScope, }; } if (!actionColumn) { actionColumn = this.getActionColumnApi() .getActionColumns() ?.find((ac) => ac.columnId == colDef.colId); } if (!actionColumn?.actionColumnButton) { return { actionButtons: [], actionColumn, }; } let actionButtons = Array.isArray(actionColumn.actionColumnButton) ? actionColumn.actionColumnButton : [actionColumn.actionColumnButton]; actionButtons = this.updateAllActionColumnButtons(actionButtons); return { actionButtons, actionColumn }; } updateAllActionColumnButtons(actionButtons) { return actionButtons.map((actionButton) => { actionButton = { ...actionButton }; actionButton.Uuid = createUuid(); if (actionButton.command) { this.updateActionButtonCommand(actionButton); } return actionButton; }); } updateActionButtonCommand(button) { switch (button.command) { case 'create': button.onClick = () => { this.getRowFormApi().displayCreateRowForm(); }; button.tooltip = button.tooltip ? button.tooltip : 'Create Row'; button.icon = button.icon ?? { name: 'add', }; break; case 'clone': button.onClick = (button, context) => { this.getRowFormApi().displayCloneRowForm(context.primaryKeyValue); }; button.tooltip = button.tooltip ? button.tooltip : 'Clone Row'; button.icon = button.icon ?? { name: 'clone', }; break; case 'delete': button.onClick = (button, context) => { const eventInfo = { type: 'rowDeleted', rowNode: context.rowNode, ...this.getAdaptableInternalApi().buildBaseContext(), }; this.getEventApi().internalApi.fireRowFormSubmittedEvent(eventInfo); this.getRowFormOptions().onRowFormSubmit?.(eventInfo); }; button.tooltip = button.tooltip ? button.tooltip : 'Delete Row'; button.icon = button.icon ?? { name: 'delete', }; break; case 'edit': button.onClick = (button, context) => { this.getRowFormApi().displayEditRowForm(context.primaryKeyValue); }; button.tooltip = button.tooltip ? button.tooltip : 'Edit Row'; button.icon = button.icon ?? { name: 'edit', }; break; } } }