UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

121 lines (119 loc) 4.52 kB
/** * DevExtreme (cjs/__internal/grids/grid_core/focus/m_focus.integration.test.js) * Version: 25.2.3 * Build date: Fri Dec 12 2025 * * Copyright (c) 2012 - 2025 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ "use strict"; var _globals = require("@jest/globals"); var _renderer = _interopRequireDefault(require("../../../../core/renderer")); var _data_grid = _interopRequireDefault(require("../../../../ui/data_grid")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e } } const SELECTORS = { gridContainer: "#gridContainer" }; const GRID_CONTAINER_ID = "gridContainer"; const createDataGrid = async function() { let options = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; return new Promise((resolve => { const $container = (0, _renderer.default)("<div>").attr("id", "gridContainer").appendTo(document.body); const instance = new _data_grid.default($container.get(0), Object.assign({ loadingTimeout: null }, options)); resolve({ $container: $container, instance: instance }) })) }; (0, _globals.describe)("GridCore focus", (() => { (0, _globals.afterEach)((() => { const $container = (0, _renderer.default)(SELECTORS.gridContainer); const dataGrid = $container.dxDataGrid("instance"); dataGrid.dispose(); $container.remove() })); _globals.describe.each([ [true, "insert", 2], [true, "remove", 0], [true, "update", 2], [false, "insert", 2], [false, "remove", 0], [false, "update", 2] ])("when repaintChangesOnly=%s and performing %s operation", ((repaintChangesOnly, operation, expectedFocusedRowIndex) => { (0, _globals.it)("should updates the focused row index correctly", (async () => { const onFocusedRowChanged = _globals.jest.fn(); const { instance: instance } = await createDataGrid({ dataSource: { store: { type: "array", data: [{ id: 1, name: "Item 1" }, { id: 2, name: "Item 2" }, { id: 3, name: "Item 3" }], key: "id" }, reshapeOnPush: true, pushAggregationTimeout: 0 }, showBorders: true, focusedRowEnabled: true, focusedRowKey: 2, onFocusedRowChanged: onFocusedRowChanged, repaintChangesOnly: repaintChangesOnly, columns: [{ dataField: "id", width: 80 }, { dataField: "name", caption: "Name", sortOrder: "asc" }] }); const store = instance.getDataSource().store(); onFocusedRowChanged.mockClear(); switch (operation) { case "insert": store.push([{ type: "insert", index: 0, data: { name: "Item 0" } }]); break; case "remove": store.push([{ type: "remove", key: 1 }]); break; case "update": store.push([{ type: "update", key: 3, data: { id: 3, name: "A Item 3" } }]) }(0, _globals.expect)(onFocusedRowChanged.mock.calls.length).toBe(1); (0, _globals.expect)(instance.option("focusedRowKey")).toEqual(2); (0, _globals.expect)(instance.option("focusedRowIndex")).toEqual(expectedFocusedRowIndex) })) })) }));