/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2026 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ import { WindowActionsEvent, WindowMoveEvent } from './events'; import { WebMcpProps } from '@progress/kendo-react-common'; import { windowStage } from './StageEnum.js'; /** * Represents the props of the [KendoReact Window component](https://www.telerik.com/kendo-react-ui/components/dialogs/window). */ export interface WindowProps { /** * Defines the container to which the Window will be appended. If set to `null`, the Window will be rendered without React Portal. * * @default parent element * * @example * ```jsx * * ``` */ appendTo?: HTMLElement | null; /** * Focus the Window container automatically when mounted. * * @default true * * @example * ```jsx * * ``` * * @remarks * This property is related to accessibility. */ autoFocus?: boolean; /** * @hidden */ children?: React.ReactNode; /** * Specifies if the Window will render the close button. * * @example * ```jsx * * ``` */ closeButton?: React.ComponentType; /** * Specifies if the Window stage will change on title double click. * * @default true * * @example * ```jsx * * ``` */ doubleClickStageChange?: boolean; /** * Specifies if the Window will be draggable ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/positioning-dragging#toc-dragging)). * * @default true * * @example * ```jsx * * ``` */ draggable?: boolean; /** * Specifies the height of the Window ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/dimensions-resizing#toc-dimensions)). When set to `null`, the window is automatically sized to fit its content. * * @example * ```jsx * * ``` */ height?: number | null; /** * Specifies the initial `left` value ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/positioning-dragging#toc-positioning)). The Window will be in an uncontrolled mode. * * @example * ```jsx * * ``` */ initialLeft?: number; /** * Specifies the initial `top` value ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/positioning-dragging#toc-positioning)). The component will be in an uncontrolled mode. * * @example * ```jsx * * ``` */ initialTop?: number; /** * Specifies the initial width of the Window ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/dimensions-resizing#toc-dimensions)). The component will be in an uncontrolled mode. * * @example * ```jsx * * ``` */ initialWidth?: number; /** * Specifies the initial height of the Window ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/dimensions-resizing#toc-dimensions)). The component will be in an uncontrolled mode. * * @example * ```jsx * * ``` */ initialHeight?: number | null; /** * Specifies the left coordinates of the Window. * * @example * ```jsx * * ``` */ left?: number; /** * Specifies if the Window will render the maximize button. * * @example * ```jsx * * ``` */ maximizeButton?: React.ComponentType; /** * Specifies the minimum height of the Window ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/dimensions-resizing#toc-resizing)). * * @default 100 * * @example * ```jsx * * ``` */ minHeight?: number; /** * Specifies the minimum width of the Window ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/dimensions-resizing#toc-resizing)). * * @default 120 * * @example * ```jsx * * ``` */ minWidth?: number; /** * Specifies if the Window will render the minimize button. * * @example * ```jsx * * ``` */ minimizeButton?: React.ComponentType; /** * Specifies if the Window will be modal by rendering an overlay under the component. * * @default false * * @example * ```jsx * * ``` */ modal?: boolean; /** * Specifies if the Window will be resizable ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/dimensions-resizing#toc-resizing)). * * @default true * * @example * ```jsx * * ``` */ resizable?: boolean; /** * Specifies if the Window will render the restore button. * * @example * ```jsx * * ``` */ restoreButton?: React.ComponentType; /** * Specifies if the Window content will update during resizing. * * @example * ```jsx * * ``` */ shouldUpdateOnDrag?: boolean; /** * Specifies the title of the Window ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/title)). * * @example * ```jsx * * ``` */ title?: React.ReactNode | string; /** * Specifies the top coordinates of the Window. * * @example * ```jsx * * ``` */ top?: number; /** * Specifies the width of the Window. * * @example * ```jsx * * ``` */ width?: number; /** * Controls the state of the Window ([see example](https://www.telerik.com/kendo-react-ui/components/dialogs/window/minimizing-fullscreen)). * * The supported values are: * * `DEFAULT` * * `MINIMIZED` * * `FULLSCREEN` * * @example * ```jsx * * ``` */ stage?: windowStage | string; /** * Set styles to the Window element. * * @example * ```jsx * * ``` */ style?: React.CSSProperties; /** * Set styles to the Window overlay element rendered when the `modal` prop is enabled. * * @example * ```jsx * * ``` */ overlayStyle?: React.CSSProperties; /** * Sets a class of the Window DOM element. * * @example * ```jsx * * ``` */ className?: string; /** * Fires when the **Close** button in the title is clicked or when the `Esc` button is pressed. * * @example * ```jsx * console.log('Window closed', event)} /> * ``` */ onClose?: (event: WindowActionsEvent) => void; /** * Fires when the Window is dragged. * * @example * ```jsx * console.log('Window moved', event)} /> * ``` */ onMove?: (event: WindowMoveEvent) => void; /** * Fires when the `DEFAULT`, `FULLSCREEN`, or `MINIMIZED` state of the Window is changed. * * @example * ```jsx * console.log('Stage changed', event)} /> * ``` */ onStageChange?: (event: WindowActionsEvent) => void; /** * Fires when the Window resizes. * * @example * ```jsx * console.log('Window resized', event)} /> * ``` */ onResize?: (event: WindowMoveEvent) => void; /** * Sets the `id` attribute value of the wrapper element of the Window. * * @example * ```jsx * * ``` */ id?: string; /** * Enables Web MCP tool registration so AI agents can interact with this Window. * Set to `true` to use the provider-level `dataName`, or pass a config object to override. * * Requires a `WebMcpProvider` ancestor from `@progress/kendo-react-webmcp`. */ webMcp?: boolean | WebMcpProps; }