Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import './module_not_extended/editor_factory';
import type { DeferredObj } from '@js/core/utils/deferred';
import type { DataController } from '@ts/grids/grid_core/data_controller/data_controller';
import { editingModule } from '@ts/grids/grid_core/editing/editing';
import type { EditingDataControllerExtension } from '@ts/grids/grid_core/editing/extenders/editing_data_controller';
import { editingDataControllerExtender } from '@ts/grids/grid_core/editing/extenders/editing_data_controller';
import type { EditingDataControllerExtension } from '@ts/grids/grid_core/editing/types';
import type { ModuleType, RowKey } from '@ts/grids/grid_core/types';

import gridCore from './core';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import eventsEngine from '@js/common/core/events/core/events_engine';
import { removeEvent } from '@js/common/core/events/remove';
import { addNamespace } from '@js/common/core/events/utils/index';
import messageLocalization from '@js/common/core/localization/message';
import type { GridsEditMode } from '@js/common/grids';
import type { DxElement } from '@js/core/element';
import Guid from '@js/core/guid';
import type { dxElementWrapper } from '@js/core/renderer';
Expand All @@ -18,6 +17,7 @@ import type { Properties as FormProperties, SimpleItemTemplateData } from '@js/u
import Form from '@js/ui/form';
import { isMaterial } from '@js/ui/themes';
import type { Column } from '@ts/grids/grid_core/columns_controller/types';
import { isCellBasedEditMode, isFormBasedEditMode } from '@ts/grids/grid_core/editing/editing_utils';
import { CLASSES as VIEW_CLASSES } from '@ts/grids/grid_core/views/const';
import { FIELD_ITEM_CONTENT_CLASS } from '@ts/ui/form/constants';

Expand Down Expand Up @@ -149,11 +149,6 @@ export class AdaptiveColumnsViewController extends modules.ViewController {
return cellOptions.row.values[columnIndex];
}

private _isRowEditMode(): boolean {
const editMode = this._getEditMode();
return editMode === EDIT_MODE.row;
}

private _isItemModified(
item: AdaptiveFormItem,
cellOptions: AdaptiveDetailCellOptions,
Expand Down Expand Up @@ -187,7 +182,7 @@ export class AdaptiveColumnsViewController extends modules.ViewController {

const displayValue = gridCoreUtils.getDisplayValue(column, value, rowData, cellOptions.rowType);
const text = gridCoreUtils.formatValue(displayValue, column);
const isCellOrBatchEditMode = this._editingController.isCellOrBatchEditMode();
const isCellOrBatchEditMode = isCellBasedEditMode(this._editingController.getEditMode());
const rowsView = this._rowsView;

if (column.allowEditing && this._keyboardNavigationController.isKeyboardEnabled()) {
Expand Down Expand Up @@ -226,7 +221,7 @@ export class AdaptiveColumnsViewController extends modules.ViewController {
$container.html(' ');
}

if (!this._isRowEditMode()) {
if (this._editingController.getEditMode() !== EDIT_MODE.row) {
if (this._isItemModified(item, cellOptions)) {
$container.addClass(CLASSES.itemModified);
}
Expand Down Expand Up @@ -436,11 +431,13 @@ export class AdaptiveColumnsViewController extends modules.ViewController {
}

private _isItemEdited(item: AdaptiveFormItem): boolean | undefined {
if (this.isFormOrPopupEditMode()) {
const editMode = this._editingController.getEditMode();

if (isFormBasedEditMode(editMode)) {
return false;
}

if (this._isRowEditMode()) {
if (editMode === EDIT_MODE.row) {
const editRowKey = this.option('editing.editRowKey');
if (equalByValue(editRowKey, this._dataController.getAdaptiveExpandedKey())) {
return true;
Expand Down Expand Up @@ -582,7 +579,7 @@ export class AdaptiveColumnsViewController extends modules.ViewController {
for (let rowIndex = 0; rowIndex < rowsCount; rowIndex += 1) {
const cancelClassAdding = rowIndex === editFormRowIndex
&& viewName === ROWS_VIEW
&& this.option('editing.mode') !== 'popup';
&& this._editingController.getEditMode() !== EDIT_MODE.popup;
const currentVisibleIndex = viewName === COLUMN_HEADERS_VIEW && !cancelClassAdding
? this._columnsController.getVisibleIndex(column.index, rowIndex)
: visibleIndex;
Expand Down Expand Up @@ -637,16 +634,6 @@ export class AdaptiveColumnsViewController extends modules.ViewController {
}).addClass(cssClassNameToAdd);
}

private _getEditMode(): GridsEditMode {
return this._editingController.getEditMode();
}

public isFormOrPopupEditMode(): boolean {
const editMode = this._getEditMode();

return editMode === EDIT_MODE.form || editMode === EDIT_MODE.popup;
}

public hideRedundantColumns(
resultWidths: (number | string | undefined)[],
visibleColumns: Column[],
Expand Down Expand Up @@ -763,7 +750,10 @@ export class AdaptiveColumnsViewController extends modules.ViewController {
}

public toggleExpandAdaptiveDetailRow(key?: RowKey, alwaysExpanded = false): void {
if (!(this.isFormOrPopupEditMode() && this._editingController.isEditing())) {
const isEditingInFormOrPopup = isFormBasedEditMode(this._editingController.getEditMode())
&& this._editingController.isEditing();

if (!isEditingInFormOrPopup) {
this._dataController.toggleExpandAdaptiveDetailRow(key, alwaysExpanded);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
/* eslint-disable prefer-rest-params */
import { Deferred, when } from '@js/core/utils/deferred';
import type { EditingController } from '@ts/grids/grid_core/editing/editing';
import type { CellBasedEditingController } from '@ts/grids/grid_core/editing/m_editing_cell_based';
import { isFormBasedEditMode } from '@ts/grids/grid_core/editing/editing_utils';
import type { CellBasedEditingController } from '@ts/grids/grid_core/editing/types';
import type { ModuleType } from '@ts/grids/grid_core/types';
import gridCoreUtils from '@ts/grids/grid_core/utils';
import { FIELD_ITEM_CONTENT_CLASS } from '@ts/ui/form/constants';
Expand All @@ -21,10 +22,6 @@ export const adaptivityEditingViewControllerExtender = (

private _isForceRowAdaptiveExpand?: boolean;

private _isRowEditMode() {
return this.getEditMode() === EDIT_MODE.row;
}

protected _getFormEditItemTemplate(cellOptions, column) {
if (this.getEditMode() !== EDIT_MODE.row && cellOptions.rowType === 'detailAdaptive') {
cellOptions.columnIndex = this._columnsController.getVisibleIndex(column.index);
Expand All @@ -46,7 +43,7 @@ export const adaptivityEditingViewControllerExtender = (
}

protected _beforeUpdateItems(rowIndices, rowIndex) {
if (!this.adaptiveColumnsController.isFormOrPopupEditMode() && this.adaptiveColumnsController.hasHiddenColumns()) {
if (!isFormBasedEditMode(this.getEditMode()) && this.adaptiveColumnsController.hasHiddenColumns()) {
const items = this._dataController.items();
const item = items[rowIndex];
const oldExpandRowIndex = gridCoreUtils.getIndexByKey(this._dataController.getAdaptiveExpandedKey(), items);
Expand All @@ -66,14 +63,13 @@ export const adaptivityEditingViewControllerExtender = (
super._afterInsertRow.apply(this, arguments as any);

if (this.adaptiveColumnsController.hasHiddenColumns()) {
// @ts-expect-error
this.adaptiveColumnsController.toggleExpandAdaptiveDetailRow(key, this.isRowEditMode());
this.adaptiveColumnsController.toggleExpandAdaptiveDetailRow(key, this.getEditMode() === EDIT_MODE.row);
this._isForceRowAdaptiveExpand = true;
}
}

private _collapseAdaptiveDetailRow() {
if (this._isRowEditMode() && this._isForceRowAdaptiveExpand) {
if (this.getEditMode() === EDIT_MODE.row && this._isForceRowAdaptiveExpand) {
this.adaptiveColumnsController.collapseAdaptiveDetailRow();
this._isForceRowAdaptiveExpand = false;
}
Expand All @@ -89,7 +85,7 @@ export const adaptivityEditingViewControllerExtender = (
super._afterSaveEditData.apply(this, arguments as any);
// @ts-expect-error
const deferred = new Deferred();
if (this._isRowEditMode() && this.adaptiveColumnsController.hasHiddenColumns()) {
if (this.getEditMode() === EDIT_MODE.row && this.adaptiveColumnsController.hasHiddenColumns()) {
when(this._validatingController.validate(true)).done((isValid) => {
if (isValid) {
this._cancelEditAdaptiveDetailRow();
Expand Down Expand Up @@ -129,7 +125,7 @@ export const adaptivityEditingViewControllerExtender = (
}

public editRow(rowIndex) {
if (this.adaptiveColumnsController.isFormOrPopupEditMode()) {
if (isFormBasedEditMode(this.getEditMode())) {
this.adaptiveColumnsController.collapseAdaptiveDetailRow();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
/* eslint-disable @typescript-eslint/no-unsafe-return */
import eventsEngine from '@js/common/core/events/core/events_engine';
import type { Column } from '@ts/grids/grid_core/columns_controller/types';
import { isCellBasedEditMode } from '@ts/grids/grid_core/editing/editing_utils';
import type { KeyboardNavigationController } from '@ts/grids/grid_core/keyboard_navigation/m_keyboard_navigation';
import type { ModuleType } from '@ts/grids/grid_core/types';

Expand Down Expand Up @@ -31,7 +32,7 @@ export const adaptivityKeyboardNavigationViewControllerExtender = (
protected _processNextCellInMasterDetail($nextCell, $cell) {
super._processNextCellInMasterDetail($nextCell, $cell);

const isCellOrBatchMode = this._editingController.isCellOrBatchEditMode();
const isCellOrBatchMode = isCellBasedEditMode(this._editingController.getEditMode());
const isEditing = this._editingController.isEditing();

if (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@ import type { dxElementWrapper } from '@js/core/renderer';

import type { Column } from '../columns_controller/types';
import type { DataController } from '../data_controller/data_controller';
import type { CellBasedEditingController } from '../editing/m_editing_cell_based';
import type { FormBasedEditingControllerExtension } from '../editing/m_editing_form_based';
import type { CellBasedEditingController, FormBasedEditingControllerExtension } from '../editing/types';
import type { RowKey } from '../types';
import type { ColumnsView } from '../views/columns_view';
import type { ViewCellOptions, ViewRow } from '../views/types';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import {
CLASSES,
} from '@ts/grids/grid_core/ai_assistant/const';
import type { HeaderPanel } from '@ts/grids/grid_core/header_panel/header_panel';
import type { ToolbarItem } from '@ts/grids/grid_core/header_panel/types';
import type { OptionChanged } from '@ts/grids/grid_core/types';
import type { ToolbarItem } from '@ts/grids/new/grid_core/toolbar/types';

import { ViewController } from '../modules/modules';
import type { AIAssistantView } from './ai_assistant_view';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import {
createDataGrid,
flushAsync,
} from '../../__tests__/__mock__/helpers/utils';
import type { CellBasedEditingController } from '../m_editing_cell_based';
import type { CellBasedEditingController } from '../types';

const getEditingController = (
instance: DataGridInstance,
Expand Down Expand Up @@ -44,14 +44,15 @@ describe('DataGrid cell-based editing', () => {
},
});
const editingController = getEditingController(instance);
const isCellOrBatchEditMode = jest.spyOn(editingController, 'isCellOrBatchEditMode');

instance.dispose();
$container.remove();

const getEditMode = jest.spyOn(editingController, 'getEditMode');
eventsEngine.trigger(document, 'dxpointerdown');
eventsEngine.trigger(document, 'dxclick');

expect(isCellOrBatchEditMode).not.toHaveBeenCalled();
expect(getEditMode).not.toHaveBeenCalled();
});
});

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { describe, expect, it } from '@jest/globals';
import type { GridsEditMode } from '@js/common/grids';

import {
isCellBasedEditMode,
isFormBasedEditMode,
isRowBasedEditMode,
} from '../editing_utils';

describe('Edit mode checks', () => {
it.each<[GridsEditMode, boolean, boolean, boolean]>([
['row', false, true, false],
['form', false, true, true],
['popup', false, true, true],
['cell', true, false, false],
['batch', true, false, false],
])('%s mode: cell-based %s, row-based %s, form-based %s', (
editMode,
isCellBased,
isRowBased,
isFormBased,
) => {
expect(isCellBasedEditMode(editMode)).toBe(isCellBased);
expect(isRowBasedEditMode(editMode)).toBe(isRowBased);
expect(isFormBasedEditMode(editMode)).toBe(isFormBased);
});
});
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ export const EDIT_MODES: GridsEditMode[] = [
];
export const ROW_BASED_MODES: GridsEditMode[] = [EDIT_MODE.row, EDIT_MODE.form, EDIT_MODE.popup];
export const CELL_BASED_MODES: GridsEditMode[] = [EDIT_MODE.batch, EDIT_MODE.cell];
export const FORM_BASED_MODES: GridsEditMode[] = [EDIT_MODE.popup, EDIT_MODE.form];
export const REQUIRED_EDITOR_LABELLEDBY_MODES: GridsEditMode[] = [
EDIT_MODE.batch, EDIT_MODE.row, EDIT_MODE.cell,
];
Expand Down
Loading
Loading