/**-----------------------------------------------------------------------------------------
* Copyright © 2026 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { Observable } from 'rxjs';
import { ColumnBase } from '../columns/column-base';
/**
* Defines the type for the `resizable` property. [See example](https://www.telerik.com/kendo-angular-ui/components/grid/columns/resizing#constrained-mode)
*
* The possible values are:
*
* * `constrained`—Adjacent columns resize only up to their outer borders.
* * `unconstrained`—Columns resize relative to the entire component.
*
* @example
* ```html
*
*
* ...
*
* ```
*/
export type ResizeMode = 'unconstrained' | 'constrained';
/**
* Represents the returned type of the `columnResize` event.
*/
export interface ColumnResizeArgs {
/**
* Specifies the resized column.
*/
column: ColumnBase;
/**
* Specifies the new width (in pixels) of the column.
*/
newWidth?: number;
/**
* Specifies the actual width (in pixels) of the column before resizing.
*/
oldWidth: number;
}
/**
* @hidden
*/
export type ActionType = 'start' | 'resizeColumn' | 'resizeTable' | 'end' | 'autoFitComplete' | 'triggerAutoFit';
/**
* @hidden
*/
export interface ColumnResizeAction {
columns: Array;
delta?: number;
deltaPercent?: number;
locked?: boolean;
resizedColumns?: Array;
type: ActionType;
widths?: Array>;
}
/**
* @hidden
*/
export interface AutoFitInfo {
column: ColumnBase;
headerIndex: number;
index: number;
isLastInSpan: boolean;
isParentSpan: boolean;
level: number;
}
/**
* @hidden
*/
export type AutoFitObservable = Observable>;
/**
* @hidden
*/
export type AutoFitFn = (columns: Array) => AutoFitObservable;