@epam/ai-dial-ui-kit 0.5.0-rc.15 → 0.5.0-rc.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -6,9 +6,11 @@ import { DialFileManagerNavigationPanelProps } from './components/FileManagerNav
6
6
  import { DialGridProps } from '../Grid/Grid';
7
7
  import { DialFileManagerToolbarProps } from './components/FileManagerToolbar/DialFileManagerToolbar';
8
8
  import { DialFileManagerBulkActionsToolbarProps } from './components/FileManagerBulkActionsToolbar/FileManagerBulkActionsToolbar';
9
- import { DialFileManagerActions, DialCopiedItem, DialDeletedItem } from '../../types/file-manager';
9
+ import { DialCopiedItem, DialDeletedItem, DialUploadFileItem } from '../../models/file-manager';
10
10
  import { FileManagerGridRow } from './FileManagerContext';
11
11
  import { DestinationFolderPopupProps } from './components/DestinationFolderPopup/DestinationFolderPopup';
12
+ import { FileUploadValidationResult, FileUploadValidationMessages } from './hooks/use-file-upload';
13
+ import { DialFileManagerActions } from '../../types/file-manager';
12
14
  type GridRow = FileManagerGridRow;
13
15
  export type DialFileManagerDestinationFolderPopupOptions = Pick<DestinationFolderPopupProps, 'setDestinationFolderPath' | 'destinationFolderPath' | 'addFolderLabel' | 'copyLabel' | 'moveLabel' | 'hiddenFilesSwitcherLabel'>;
14
16
  export interface FileTreeOptions extends Omit<DialFoldersTreeProps, 'items' | 'selectedPath' | 'onItemClick'> {
@@ -91,6 +93,10 @@ export interface DialFileManagerProps {
91
93
  onCreateFolder?: (folderPath: string, file: File, name: string, bucket?: string) => void;
92
94
  onCreateFolderValidate?: (name: string, parentFolder: DialFile) => string | null;
93
95
  createFolderValidationMessages?: CreateFolderValidationMessages;
96
+ onUploadFiles?: (files: DialUploadFileItem[], destinationFolder: string) => void;
97
+ onValidateUpload?: (files: DialUploadFileItem[], existingFiles: DialFile[], destinationFolder: string) => FileUploadValidationResult | Promise<FileUploadValidationResult>;
98
+ maxFileSize?: number;
99
+ uploadValidationMessages?: FileUploadValidationMessages;
94
100
  }
95
101
  /**
96
102
  * File Manager layout with a collapsible folders tree, breadcrumb/search header, and a data grid.
@@ -1,6 +1,8 @@
1
+ import { DragEvent } from 'react';
1
2
  import { DialFile, DialRootFolder, DialFileNodeType } from '../../models/file';
2
3
  import { FileTreeOptions, NavigationPanelOptions, GridOptions, ToolbarOptions, BulkActionsToolbarOptions, DialFileManagerProps, DeleteConfirmationOptions, DialFileManagerDestinationFolderPopupOptions } from './FileManager';
3
4
  import { DestinationFolderMode } from './hooks/use-file-clipboard';
5
+ import { FileUploadValidationMessages } from './hooks/use-file-upload';
4
6
  export interface FileManagerGridRow {
5
7
  id: string;
6
8
  name: string;
@@ -65,5 +67,17 @@ export interface FileManagerContextValue {
65
67
  handleTableRowClick: (row: FileManagerGridRow) => void;
66
68
  onTableFileClick?: DialFileManagerProps['onTableFileClick'];
67
69
  handleDownloadFiles: (items: DialFile[]) => void;
70
+ isDragging: boolean;
71
+ isDraggingOverWindow: boolean;
72
+ uploadError?: string;
73
+ handleDragEnter: (e: DragEvent) => void;
74
+ handleDragLeave: (e: DragEvent) => void;
75
+ handleDragOver: (e: DragEvent) => void;
76
+ handleDrop: (e: DragEvent) => void;
77
+ clearUploadError: () => void;
78
+ onUploadFiles?: DialFileManagerProps['onUploadFiles'];
79
+ onValidateUpload?: DialFileManagerProps['onValidateUpload'];
80
+ maxFileSize?: number;
81
+ uploadValidationMessages?: FileUploadValidationMessages;
68
82
  }
69
83
  export declare const FileManagerContext: import('react').Context<FileManagerContextValue | undefined>;
@@ -8,3 +8,4 @@ export declare const gridBaseClasses = "flex-1 w-full rounded text-secondary ove
8
8
  export declare const sidebarWidth = 280;
9
9
  export declare const sidebarTitleDefault = "Files";
10
10
  export declare const BASE_FILE_MANAGER_ICON_SIZE = 20;
11
+ export declare const FILES_DATA_TRANSFER_TYPE = "Files";
@@ -1,5 +1,5 @@
1
1
  import { DialFile } from '../../../models/file';
2
- import { DialCopiedItem } from '../../../types/file-manager';
2
+ import { DialCopiedItem } from '../../../models/file-manager';
3
3
  export interface UseFileClipboardOptions {
4
4
  getDestinationFiles: (path: string) => DialFile[];
5
5
  getSourceFiles: () => DialFile[];
@@ -1,5 +1,5 @@
1
1
  import { DialFile } from '../../../models/file';
2
- import { DialDeletedItem } from '../../../types/file-manager';
2
+ import { DialDeletedItem } from '../../../models/file-manager';
3
3
  export interface UseFileDeleteOptions {
4
4
  onDeleteFiles?: (items: DialDeletedItem[], sourceFolder: string) => void;
5
5
  }
@@ -0,0 +1,29 @@
1
+ import { DragEvent } from 'react';
2
+ import { DialFile } from '../../../models/file';
3
+ import { DialUploadFileItem } from '../../../models/file-manager';
4
+ export interface FileUploadValidationResult {
5
+ valid: boolean;
6
+ message?: string;
7
+ }
8
+ export interface FileUploadValidationMessages {
9
+ duplicateFiles?: string;
10
+ oversizedFiles?: string;
11
+ validationFailed?: string;
12
+ validationError?: string;
13
+ }
14
+ export interface UseFileUploadOptions {
15
+ onUploadFiles?: (files: DialUploadFileItem[], destinationFolder: string) => void;
16
+ onValidateUpload?: (files: DialUploadFileItem[], existingFiles: DialFile[], destinationFolder: string) => FileUploadValidationResult | Promise<FileUploadValidationResult>;
17
+ maxFileSize?: number;
18
+ validationMessages?: FileUploadValidationMessages;
19
+ }
20
+ export declare const useFileUpload: ({ onUploadFiles, onValidateUpload, maxFileSize, validationMessages, }?: UseFileUploadOptions) => {
21
+ isDragging: boolean;
22
+ isDraggingOverWindow: boolean;
23
+ uploadError: string | undefined;
24
+ handleDragEnter: (e: DragEvent) => void;
25
+ handleDragLeave: (e: DragEvent) => void;
26
+ handleDragOver: (e: DragEvent) => void;
27
+ handleDrop: (e: DragEvent, destinationFolder: string, existingFiles: DialFile[]) => Promise<void>;
28
+ clearError: () => void;
29
+ };
@@ -1,5 +1,5 @@
1
1
  import { DialFile } from '../../../models/file';
2
- import { DialCopiedItem } from '../../../types/file-manager';
2
+ import { DialCopiedItem } from '../../../models/file-manager';
3
3
  export declare const useItemRenaming: ({ items, onRename, onRenameSave, onRenameCancel, onRenameValidate, onMoveToFiles, }: {
4
4
  items?: DialFile[];
5
5
  onRename?: (path: string) => void;
@@ -21,6 +21,7 @@ export interface DialGridProps<T extends object = Record<string, unknown>> {
21
21
  emptyStateTitle?: string;
22
22
  emptyStateDescription?: string;
23
23
  loading?: boolean;
24
+ wrapperBorder?: boolean;
24
25
  }
25
26
  /**
26
27
  * DialGrid — A feature-rich data grid wrapper built on ag-Grid with dark theme support.
@@ -105,5 +106,6 @@ export interface DialGridProps<T extends object = Record<string, unknown>> {
105
106
  * @param [emptyStateDescription] - Optional description text displayed below the empty state title,
106
107
  * providing additional context or instructions (e.g., "No data found" or "Try adjusting your filters").
107
108
  * @param [loading=false] - When true, shows AG-Grid's native loading overlay
109
+ * @param [wrapperBorder=true] - Whether to apply a border around the grid container
108
110
  */
109
- export declare const DialGrid: <T extends object>({ columnDefs, rowData, additionalGridOptions, getContextMenuItems, cssClass, ariaLabel, withSelectionColumn, wrapCustomCellRenderers, selectedRowIds, selectedRows, onSelectionChange, onSelectionChangeWithMap, getRowId, alternateOddRowColors, filterPlaceholder, emptyStateIcon, emptyStateTitle, emptyStateDescription, loading, }: DialGridProps<T>) => import("react/jsx-runtime").JSX.Element;
111
+ export declare const DialGrid: <T extends object>({ columnDefs, rowData, additionalGridOptions, getContextMenuItems, cssClass, ariaLabel, withSelectionColumn, wrapCustomCellRenderers, selectedRowIds, selectedRows, onSelectionChange, onSelectionChangeWithMap, getRowId, alternateOddRowColors, filterPlaceholder, emptyStateIcon, emptyStateTitle, emptyStateDescription, loading, wrapperBorder, }: DialGridProps<T>) => import("react/jsx-runtime").JSX.Element;
@@ -62,7 +62,7 @@ export { TabOrientation } from './types/tab';
62
62
  export type { DialBreadcrumbPathItem } from './models/breadcrumb';
63
63
  export { FormItemOrientation } from './types/form-item';
64
64
  export { SelectSize, SelectVariant } from './types/select';
65
- export { DialFileManagerTabs, DialFileManagerActions, type DialCopiedItem, type DialDeletedItem, } from './types/file-manager';
65
+ export { DialFileManagerTabs, DialFileManagerActions, } from './types/file-manager';
66
66
  export { FlexibleActionsDirection } from './types/flexible-actions';
67
67
  export { DialItemType } from './types/item';
68
68
  export { useDialFileManagerTabs } from './components/FileManager/hooks/use-file-manager-tabs';
@@ -78,4 +78,5 @@ export type { DropdownItem } from './models/dropdown';
78
78
  export type { DialModifiedEntity } from './models/base-entity';
79
79
  export type { DialFile } from './models/file';
80
80
  export { DialFileNodeType, DialFilePermission, DialFileResourceType, } from './models/file';
81
+ export { type DialCopiedItem, type DialDeletedItem, type DialUploadFileItem, } from './models/file-manager';
81
82
  export { mergeClasses } from './utils/merge-classes';
@@ -0,0 +1,15 @@
1
+ import { DialFileNodeType } from './file';
2
+ export interface DialCopiedItem {
3
+ sourceUrl: string;
4
+ destinationUrl: string;
5
+ overwrite?: boolean;
6
+ nodeType: DialFileNodeType;
7
+ }
8
+ export interface DialDeletedItem {
9
+ sourceUrl: string;
10
+ nodeType: DialFileNodeType;
11
+ }
12
+ export interface DialUploadFileItem {
13
+ fileContent: File;
14
+ name: string;
15
+ }
@@ -1,4 +1,3 @@
1
- import { DialFileNodeType } from '../models/file';
2
1
  export declare enum DialFileManagerTabs {
3
2
  MyFiles = "my_files",
4
3
  Shared = "shared",
@@ -12,13 +11,3 @@ export declare enum DialFileManagerActions {
12
11
  Download = "download",
13
12
  Delete = "delete"
14
13
  }
15
- export interface DialCopiedItem {
16
- sourceUrl: string;
17
- destinationUrl: string;
18
- overwrite?: boolean;
19
- nodeType: DialFileNodeType;
20
- }
21
- export interface DialDeletedItem {
22
- sourceUrl: string;
23
- nodeType: DialFileNodeType;
24
- }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epam/ai-dial-ui-kit",
3
- "version": "0.5.0-rc.15",
3
+ "version": "0.5.0-rc.16",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "description": "A modern UI kit for building AI DIAL interfaces with React",