UNPKG

devextreme

Version:

JavaScript/TypeScript Component Suite for Responsive Web Development

70 lines (69 loc) 2.72 kB
/** * DevExtreme (esm/__internal/grids/data_grid/ai_assistant/commands/grouping.js) * Version: 26.1.3 * Build date: Wed Jun 10 2026 * * Copyright (c) 2012 - 2026 Developer Express Inc. ALL RIGHTS RESERVED * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/ */ import { defineGridCommand } from "../../../../grids/grid_core/ai_assistant/commands/defineGridCommand"; import { z } from "zod"; const groupingCommandSchema = z.object({ dataField: z.string(), groupIndex: z.number().int().nonnegative().nullable() }).strict(); const getGroupingDefaultMessage = (args, column) => { const columnName = (null === column || void 0 === column ? void 0 : column.caption) ?? args.dataField; if (null === args.groupIndex) { return `Ungroup data against "${columnName}".` } return `Group data against "${columnName}".` }; export const groupingCommand = defineGridCommand({ name: "grouping", description: "Group rows by a column at the given level (0 = outermost). Setting groupIndex to an in-use value shifts the existing column down; gaps auto-collapse. Pass null to ungroup. To replace existing grouping, ungroup each currently grouped column, then group new ones at consecutive indices 0, 1, 2, ...", schema: groupingCommandSchema, execute: (component, _ref) => { let { success: success, failure: failure } = _ref; return args => { const columnsController = component.getController("columns"); const column = columnsController.columnOption(args.dataField); const defaultMessage = getGroupingDefaultMessage(args, column); if (!column || false === column.allowGrouping) { return Promise.resolve(failure(defaultMessage)) } try { columnsController.columnOption(column.index, "groupIndex", args.groupIndex ?? void 0); return Promise.resolve(success(defaultMessage)) } catch { return Promise.resolve(failure(defaultMessage)) } } } }); export const clearGroupingCommand = defineGridCommand({ name: "clearGrouping", description: "Remove grouping from all columns", schema: z.object({}).strict(), execute: (component, _ref2) => { let { success: success, failure: failure } = _ref2; return () => { try { component.getController("columns").clearGrouping(); return Promise.resolve(success("Clear grouping.")) } catch { return Promise.resolve(failure("Clear grouping.")) } } } });