/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2026 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ import { UploadAsyncProps } from './UploadAsyncProps.js'; import { UploadFileRestrictions } from './UploadFileRestrictions.js'; import { UploadFileInfo } from './UploadFileInfo.js'; import { UploadListItemProps } from './UploadListItemProps.js'; import { UploadOnAddEvent } from './UploadOnAddEvent.js'; import { UploadOnRemoveEvent } from './UploadOnRemoveEvent.js'; import { UploadOnStatusChangeEvent } from './UploadOnStatusChangeEvent.js'; import { UploadOnProgressEvent } from './UploadOnProgressEvent.js'; import { UploadOnBeforeUploadEvent } from './UploadOnBeforeUploadEvent.js'; import { UploadOnBeforeRemoveEvent } from './UploadOnBeforeRemoveEvent.js'; import { UploadOnCancelEvent } from './UploadOnCancelEvent.js'; import { UploadActionsLayout } from './UploadActionsLayout.js'; import { UploadSelectMessageProps } from './UploadSelectMessageProps.js'; /** * Represents the props of the [KendoReact Upload component](https://www.telerik.com/kendo-react-ui/components/upload). */ export interface UploadProps extends UploadAsyncProps { /** * Adds a custom CSS class to the Upload container element. * * Example: * ```jsx * * ``` */ className?: string; /** * Enables or disables the selection of multiple files. Defaults to `true`. * * @default true * * @example * ```jsx * * ``` */ multiple?: boolean; /** * Disables the Upload component. Defaults to `false`. * * @default false * * @example * ```jsx * * ``` */ disabled?: boolean; /** * Toggles the visibility of the file list in the Upload component. * * @default true * * @example * ```jsx * * ``` */ showFileList?: boolean; /** * Toggles the visibility of action buttons when `autoUpload` is set to `false`. * * @default true * * @example * ```jsx * * ``` */ showActionButtons?: boolean; /** * Specifies the layout of the action buttons. Defaults to `end`. * * @default "end" * * @example * ```jsx * * ``` */ actionsLayout?: UploadActionsLayout; /** * Sets the `tabIndex` attribute of the Upload component. * * Example: * ```jsx * * ``` * * @remarks * This property is related to accessibility. */ tabIndex?: number | string; /** * Specifies the `id` attribute of the Upload component. * * Example: * ```jsx * * ``` */ id?: string; /** * Identifies elements that describe the Upload component, similar to the `aria-describedby` attribute. * * Example: * ```jsx * * ``` * * @remarks * This property is related to accessibility. */ ariaDescribedBy?: string; /** * Identifies elements that label the Upload component, similar to the `aria-labelledby` attribute. * * Example: * ```jsx * * ``` * * @remarks * This property is related to accessibility. */ ariaLabelledBy?: string; /** * Sets the `accept` attribute of the file input element to specify allowed file types. * * Example: * ```jsx * * ``` */ accept?: string; /** * Configures file restrictions such as allowed extensions and maximum file size. * * Example: * ```jsx * * ``` */ restrictions?: UploadFileRestrictions; /** * Provides the list of files to be displayed in controlled mode. * * Example: * ```jsx * * ``` */ files?: Array; /** * Provides the initial list of files to be displayed in uncontrolled mode. * * Example: * ```jsx * * ``` */ defaultFiles?: Array; /** * Customizes the rendering of list items in the file list. * * Example: * ```jsx * } /> * ``` */ listItemUI?: React.ComponentType; /** * Customizes the content of the add button in the Upload component. * * Example: * ```jsx * } /> * ``` */ selectMessageUI?: React.ComponentType; /** * Triggered when new files are selected for upload. * * Example: * ```jsx * console.log(event.files)} /> * ``` */ onAdd?: (event: UploadOnAddEvent) => void; /** * Triggered when files are removed. May include a server response if applicable. * * Example: * ```jsx * console.log(event.files)} /> * ``` */ onRemove?: (event: UploadOnRemoveEvent) => void; /** * Triggered when the status of files changes. May include a server response if applicable. * * Example: * ```jsx * console.log(event.files)} /> * ``` */ onStatusChange?: (event: UploadOnStatusChangeEvent) => void; /** * Triggered when the upload progress of a file changes. * * Example: * ```jsx * console.log(event.percentComplete)} /> * ``` */ onProgress?: (event: UploadOnProgressEvent) => void; /** * Triggered before a file upload request is made. Can be used to add extra data to the request. * * Example: * ```jsx * console.log(event.additionalData)} /> * ``` */ onBeforeUpload?: (event: UploadOnBeforeUploadEvent) => void; /** * Triggered before a file removal request is made. Can be used to add extra data to the request. * * Example: * ```jsx * console.log(event.additionalData)} /> * ``` */ onBeforeRemove?: (event: UploadOnBeforeRemoveEvent) => void; /** * Triggered when the user cancels an upload in progress. Useful for custom cancellation logic. * * Example: * ```jsx * console.log('Upload canceled')} /> * ``` */ onCancel?: (event: UploadOnCancelEvent) => void; }