@epam/ai-dial-ui-kit 0.5.0-rc.7 → 0.5.0-rc.70
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.
- package/README.md +3 -3
- package/dist/dial-ui-kit.cjs.js +29 -29
- package/dist/dial-ui-kit.es.js +15181 -13065
- package/dist/index.css +2 -2
- package/dist/src/components/Alert/Alert.d.ts +2 -2
- package/dist/src/components/Alert/constants.d.ts +2 -2
- package/dist/src/components/AutocompleteInput/AutocompleteInput.d.ts +10 -10
- package/dist/src/components/AutocompleteInput/AutocompleteInputValue.d.ts +6 -6
- package/dist/src/components/Breadcrumb/Breadcrumb.d.ts +8 -8
- package/dist/src/components/Breadcrumb/BreadcrumbItem.d.ts +2 -2
- package/dist/src/components/Breadcrumb/constants.d.ts +10 -10
- package/dist/src/components/Button/Button.d.ts +10 -18
- package/dist/src/components/Checkbox/Checkbox.d.ts +2 -2
- package/dist/src/components/CloseButton/CloseButton.d.ts +5 -3
- package/dist/src/components/CollapsibleSidebar/CollapsibleSidebar.d.ts +6 -6
- package/dist/src/components/ConfirmationPopup/ConfirmationPopup.d.ts +3 -3
- package/dist/src/components/ConfirmationPopup/constants.d.ts +3 -3
- package/dist/src/components/DraggableItem/DraggableItem.d.ts +8 -8
- package/dist/src/components/DraggableItem/constants.d.ts +2 -2
- package/dist/src/components/Dropdown/Dropdown.d.ts +4 -2
- package/dist/src/components/Dropdown/constants.d.ts +7 -7
- package/dist/src/components/EllipsisTooltip/EllipsisTooltip.d.ts +4 -4
- package/dist/src/components/EllipsisTooltip/constants.d.ts +1 -1
- package/dist/src/components/Field/Field.d.ts +4 -6
- package/dist/src/components/FileIcon/FileIcon.d.ts +2 -2
- package/dist/src/components/FileManager/FileManager.d.ts +63 -10
- package/dist/src/components/FileManager/FileManagerContext.d.ts +41 -4
- package/dist/src/components/FileManager/FileManagerProvider.d.ts +1 -0
- package/dist/src/components/FileManager/components/ConflictResolutionPopup/ConflictResolutionPopup.d.ts +92 -0
- package/dist/src/components/FileManager/components/DestinationFolderPopup/DestinationFolderPopup.d.ts +4 -1
- package/dist/src/components/FileManager/components/DialFileManagerItemSummaryCell/DialFileManagerItemSummaryCell.d.ts +55 -0
- package/dist/src/components/FileManager/components/DialFileManagerItemSummaryCell/DialFileManagerItemSummaryCell.test.d.ts +1 -0
- package/dist/src/components/FileManager/components/FileManagerBulkActionsToolbar/FileManagerBulkActionsToolbar.d.ts +5 -3
- package/dist/src/components/FileManager/components/FileManagerItemIcon/FileManagerItemIcon.d.ts +1 -1
- package/dist/src/components/FileManager/components/FileManagerItemName/FileManagerItemName.d.ts +2 -1
- package/dist/src/components/FileManager/components/FileManagerItemNameInput/FileManagerItemNameInput.d.ts +4 -2
- package/dist/src/components/FileManager/components/FileManagerNavigationPanel/FileManagerNavigationPanel.d.ts +13 -11
- package/dist/src/components/FileManager/components/FileManagerNavigationPanel/constants.d.ts +3 -3
- package/dist/src/components/FileManager/components/FileManagerToolbar/DialFileManagerToolbar.d.ts +13 -13
- package/dist/src/components/FileManager/components/FoldersTree/FoldersTree.d.ts +3 -0
- package/dist/src/components/FileManager/components/FoldersTree/hooks/use-expanded-paths.d.ts +13 -0
- package/dist/src/components/FileManager/constants.d.ts +15 -7
- package/dist/src/components/FileManager/hooks/__tests__/use-conflict-resolution.spec.d.ts +1 -0
- package/dist/src/components/FileManager/hooks/__tests__/use-file-upload.spec.d.ts +1 -0
- package/dist/src/components/FileManager/hooks/use-bulk-actions.d.ts +22 -0
- package/dist/src/components/FileManager/hooks/use-conflict-resolution.d.ts +26 -0
- package/dist/src/components/FileManager/hooks/use-file-clipboard.d.ts +17 -3
- package/dist/src/components/FileManager/hooks/use-file-delete.d.ts +3 -2
- package/dist/src/components/FileManager/hooks/use-file-download.d.ts +2 -1
- package/dist/src/components/FileManager/hooks/use-file-upload.d.ts +34 -0
- package/dist/src/components/FileManager/hooks/use-folder-creation.d.ts +21 -0
- package/dist/src/components/FileManager/hooks/use-grid-actions-column.d.ts +10 -0
- package/dist/src/components/FileManager/hooks/use-grid-context-menu.d.ts +20 -0
- package/dist/src/components/FileManager/hooks/use-item-renaming.d.ts +8 -5
- package/dist/src/components/FileManager/hooks/use-new-actions.d.ts +16 -0
- package/dist/src/components/FileManager/hooks/use-tree-additional-buttons.d.ts +22 -0
- package/dist/src/components/FileManager/utils.d.ts +1 -1
- package/dist/src/components/FileName/FileName.d.ts +19 -5
- package/dist/src/components/FolderName/FolderName.d.ts +6 -3
- package/dist/src/components/FormItem/FormItem.d.ts +9 -9
- package/dist/src/components/FormItem/constants.d.ts +1 -1
- package/dist/src/components/FormPopup/FormPopup.d.ts +1 -1
- package/dist/src/components/FormPopup/constants.d.ts +1 -1
- package/dist/src/components/Grid/Grid.d.ts +12 -3
- package/dist/src/components/Grid/constants.d.ts +1 -1
- package/dist/src/components/Grid/hooks/use-grid-selection.d.ts +7 -4
- package/dist/src/components/Grid/renderers/DateCellRenderer.d.ts +2 -2
- package/dist/src/components/Grid/renderers/constants.d.ts +1 -1
- package/dist/src/components/Icon/Icon.d.ts +0 -1
- package/dist/src/components/Input/Input.d.ts +4 -4
- package/dist/src/components/InputField/InputField.d.ts +3 -3
- package/dist/src/components/InputPopup/InputPopup.d.ts +6 -6
- package/dist/src/components/Loader/Loader.d.ts +5 -5
- package/dist/src/components/Loader/constants.d.ts +2 -2
- package/dist/src/components/NoDataContent/NoDataContent.d.ts +6 -3
- package/dist/src/components/PasswordInput/PasswordInputField.d.ts +1 -1
- package/dist/src/components/Popup/Popup.d.ts +6 -6
- package/dist/src/components/Popup/constants.d.ts +3 -3
- package/dist/src/components/RadioButton/RadioButton.d.ts +6 -6
- package/dist/src/components/RadioGroup/RadioGroup.d.ts +20 -20
- package/dist/src/components/RadioGroup/constants.d.ts +3 -3
- package/dist/src/components/RadioGroupPopupField/RadioGroupPopupField.d.ts +2 -2
- package/dist/src/components/RemoveButton/RemoveButton.d.ts +6 -8
- package/dist/src/components/ResizableContainer/ConditionalResizableContainer.d.ts +33 -0
- package/dist/src/components/ResizableContainer/ResizableContainer.d.ts +69 -0
- package/dist/src/components/ResizableContainer/components/ResizeHandle.d.ts +10 -0
- package/dist/src/components/ResizableContainer/components/ResizeIcon.d.ts +8 -0
- package/dist/src/components/Search/Search.d.ts +4 -4
- package/dist/src/components/Search/constants.d.ts +4 -4
- package/dist/src/components/Select/Select.d.ts +9 -3
- package/dist/src/components/Select/constants.d.ts +7 -6
- package/dist/src/components/SelectField/SelectField.d.ts +6 -6
- package/dist/src/components/SharedEntityIndicator/SharedEntityIndicator.d.ts +2 -2
- package/dist/src/components/Tab/Tab.d.ts +4 -4
- package/dist/src/components/Tabs/Tabs.d.ts +9 -9
- package/dist/src/components/Tag/Tag.d.ts +2 -2
- package/dist/src/components/TextAreaField/TextAreaField.d.ts +3 -3
- package/dist/src/components/Textarea/Textarea.d.ts +4 -4
- package/dist/src/hooks/use-width-breakpoint.d.ts +23 -0
- package/dist/src/index.d.ts +5 -1
- package/dist/src/models/breadcrumb.d.ts +1 -1
- package/dist/src/models/dropdown.d.ts +1 -0
- package/dist/src/models/file-manager.d.ts +15 -0
- package/dist/src/models/tab.d.ts +2 -1
- package/dist/src/types/dropdown.d.ts +2 -1
- package/dist/src/types/file-manager.d.ts +12 -9
- package/dist/src/types/resizable-container.d.ts +4 -0
- package/dist/src/types/tab.d.ts +1 -1
- package/package.json +5 -4
package/dist/src/components/FileManager/components/FileManagerToolbar/DialFileManagerToolbar.d.ts
CHANGED
|
@@ -10,10 +10,10 @@ export interface DialFileManagerToolbarProps {
|
|
|
10
10
|
hiddenFilesSwitcherLabel?: string;
|
|
11
11
|
showHiddenFilesLabel?: string;
|
|
12
12
|
hideHiddenFilesLabel?: string;
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
isNewButtonVisible?: boolean;
|
|
14
|
+
newButtonVariant?: ButtonVariant;
|
|
15
|
+
newButtonDropdownItems?: DropdownItem[];
|
|
16
|
+
newButtonLabel?: string;
|
|
17
17
|
onTabChange?: (id: DialFileManagerTabs) => void;
|
|
18
18
|
onToggleHiddenFiles?: (value: boolean) => void;
|
|
19
19
|
}
|
|
@@ -24,7 +24,7 @@ export interface DialFileManagerToolbarProps {
|
|
|
24
24
|
* - Tab navigation for switching between file sections or views
|
|
25
25
|
* - A toggle for showing or hiding hidden files
|
|
26
26
|
* - A refresh button for reloading content
|
|
27
|
-
* - An optional "
|
|
27
|
+
* - An optional "New" button or dropdown for creating new files or folders
|
|
28
28
|
*
|
|
29
29
|
* @example
|
|
30
30
|
* ```tsx
|
|
@@ -40,8 +40,8 @@ export interface DialFileManagerToolbarProps {
|
|
|
40
40
|
* onTabChange={(id) => console.log('Switched to tab:', id)}
|
|
41
41
|
* onToggleHiddenFiles={(visible) => console.log('Hidden files visible:', visible)}
|
|
42
42
|
* onRefresh={() => console.log('Refreshed')}
|
|
43
|
-
*
|
|
44
|
-
*
|
|
43
|
+
* isNewButtonVisible
|
|
44
|
+
* newButtonDropdownItems={[
|
|
45
45
|
* { key: 'folder', label: 'New Folder' },
|
|
46
46
|
* { key: 'file', label: 'Upload File' },
|
|
47
47
|
* ]}
|
|
@@ -56,16 +56,16 @@ export interface DialFileManagerToolbarProps {
|
|
|
56
56
|
* @param [hideHiddenFilesLabel='Hide hidden'] - Label shown when hidden files are visible.
|
|
57
57
|
* @param [onTabChange] - Callback fired when the user switches between tabs. Receives the selected tab ID.
|
|
58
58
|
* @param [onToggleHiddenFiles] - Callback fired when the hidden files visibility is toggled. Receives the new visibility state.
|
|
59
|
-
* @param [
|
|
60
|
-
* @param [
|
|
61
|
-
* @param [
|
|
62
|
-
* @param [
|
|
59
|
+
* @param [isNewButtonVisible] - Whether the "New" button or dropdown should be displayed.
|
|
60
|
+
* @param [newButtonVariant=ButtonVariant.Secondary] - Visual style variant for the new button.
|
|
61
|
+
* @param [newButtonDropdownItems=[]] - Dropdown items available under the new button. If empty, a single new button is shown instead.
|
|
62
|
+
* @param [newButtonLabel='New'] - Label text for the new button.
|
|
63
63
|
*
|
|
64
64
|
* @remarks
|
|
65
65
|
* - Tabs are rendered via `DialTabs`.
|
|
66
66
|
* - The hidden files toggle uses `DialSwitch`.
|
|
67
|
-
* - The refresh and
|
|
67
|
+
* - The refresh and new actions use `DialButton` or dropdown variants for consistency.
|
|
68
68
|
* - The toolbar automatically adapts its layout for different screen sizes.
|
|
69
|
-
* - When `
|
|
69
|
+
* - When `newButtonDropdownItems` is provided, the new button becomes a dropdown menu.
|
|
70
70
|
*/
|
|
71
71
|
export declare const DialFileManagerToolbar: FC<DialFileManagerToolbarProps>;
|
|
@@ -5,6 +5,7 @@ export interface DialFoldersTreeProps {
|
|
|
5
5
|
items: DialFile[];
|
|
6
6
|
expandedPaths?: Set<string>;
|
|
7
7
|
loadingPaths?: Set<string>;
|
|
8
|
+
loadedPaths?: Set<string>;
|
|
8
9
|
selectedPath?: string;
|
|
9
10
|
renamedPath?: string;
|
|
10
11
|
showFiles?: boolean;
|
|
@@ -17,6 +18,7 @@ export interface DialFoldersTreeProps {
|
|
|
17
18
|
onRenameValidate?: (value: string, item: DialFile) => string | null;
|
|
18
19
|
getContextMenuItems?: (item: DialFile) => DropdownItem[];
|
|
19
20
|
areHiddenFilesVisible?: boolean;
|
|
21
|
+
onExpandedPathsChange?: (expandedPaths: Set<string>) => void;
|
|
20
22
|
}
|
|
21
23
|
/**
|
|
22
24
|
* DialFoldersTree — A hierarchical folder tree component with nested expand/collapse support, selection highlighting,
|
|
@@ -89,6 +91,7 @@ export interface DialFoldersTreeProps {
|
|
|
89
91
|
* @param [items] - Array of folder and file nodes to display in the tree.
|
|
90
92
|
* @param [expandedPaths] - Set of folder paths that should be expanded.
|
|
91
93
|
* @param [loadingPaths] - Set of folder paths currently loading (shows spinner or placeholder).
|
|
94
|
+
* @param [loadedPaths] - Set of folder paths that have loaded.
|
|
92
95
|
* @param [selectedPath] - Path representing the currently selected folder or file.
|
|
93
96
|
* @param [renamedPath] - Path of the folder or file currently being edited.
|
|
94
97
|
* @param [showFiles=false] - Whether to show files in addition to folders.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface UseExpandedPathsOptions {
|
|
2
|
+
expandedPaths?: Set<string>;
|
|
3
|
+
onExpandedPathsChange?: (expandedPaths: Set<string>) => void;
|
|
4
|
+
}
|
|
5
|
+
export declare const useExpandedPaths: (options?: UseExpandedPathsOptions) => {
|
|
6
|
+
expandedPaths: Set<string>;
|
|
7
|
+
setExpandedPaths: (newSet: Set<string>) => void;
|
|
8
|
+
togglePath: (path: string) => void;
|
|
9
|
+
collapseAll: () => void;
|
|
10
|
+
expandPath: (path: string) => void;
|
|
11
|
+
collapsePath: (path: string) => void;
|
|
12
|
+
isControlled: boolean;
|
|
13
|
+
};
|
|
@@ -1,9 +1,17 @@
|
|
|
1
|
-
export declare const
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const
|
|
1
|
+
export declare const containerBaseClassName = "w-full h-full grid grid-rows-[auto_1fr] gap-5 p-6 overflow-hidden min-w-0 bg-layer-2";
|
|
2
|
+
export declare const toolbarBaseClassName = "w-full text-secondary flex items-center gap-2";
|
|
3
|
+
export declare const mainGridClassName = "flex min-h-0 min-w-0 h-full gap-4 overflow-hidden";
|
|
4
|
+
export declare const contentGridClassName = "flex flex-col flex-1 min-h-0 min-w-0 h-full gap-4";
|
|
5
|
+
export declare const contentHeaderClassName = "items-center";
|
|
6
|
+
export declare const treeBaseClassName = "w-full h-full rounded bg-layer-3 text-secondary overflow-auto min-w-0";
|
|
7
|
+
export declare const gridBaseClassName = "flex-1 w-full rounded text-secondary overflow-auto min-h-0 min-w-0";
|
|
8
8
|
export declare const sidebarWidth = 280;
|
|
9
9
|
export declare const sidebarTitleDefault = "Files";
|
|
10
|
+
export declare const BASE_FILE_MANAGER_ICON_SIZE = 20;
|
|
11
|
+
export declare const FILES_DATA_TRANSFER_TYPE = "Files";
|
|
12
|
+
export declare const FOLDER_PLACEHOLDER_FILE_NAME = ".dial_folder";
|
|
13
|
+
export declare const FOLDERS_TREE_PANEL_MIN_WIDTH = 280;
|
|
14
|
+
export declare const FOLDERS_TREE_PANEL_MAX_WIDTH = 460;
|
|
15
|
+
export declare const COMPACT_VIEW_HEADER_HEIGHT = 44;
|
|
16
|
+
export declare const COMPACT_VIEW_FILE_ROW_HEIGHT = 56;
|
|
17
|
+
export declare const DEFAULT_COMPACT_VIEW_WIDTH_BREAKPOINT = 800;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DialFile } from '../../../models/file';
|
|
2
|
+
import { DialFileManagerActions } from '../../../types/file-manager';
|
|
3
|
+
import { DialActionDropdownItem } from '../components/FileManagerBulkActionsToolbar/FileManagerBulkActionsToolbar';
|
|
4
|
+
export interface UseBulkActionsProps {
|
|
5
|
+
selectedFiles: Map<string, DialFile>;
|
|
6
|
+
actionLabels?: {
|
|
7
|
+
[DialFileManagerActions.Duplicate]?: string;
|
|
8
|
+
[DialFileManagerActions.Copy]?: string;
|
|
9
|
+
[DialFileManagerActions.Rename]?: string;
|
|
10
|
+
[DialFileManagerActions.Download]?: string;
|
|
11
|
+
[DialFileManagerActions.Delete]?: string;
|
|
12
|
+
[DialFileManagerActions.Move]?: string;
|
|
13
|
+
};
|
|
14
|
+
onDuplicate: (files: DialFile[]) => void;
|
|
15
|
+
onCopy: (files: DialFile[]) => void;
|
|
16
|
+
onMove: (files: DialFile[]) => void;
|
|
17
|
+
onDownload: (files: DialFile[]) => void;
|
|
18
|
+
onRename: (filePath: string) => void;
|
|
19
|
+
onDelete: (files: DialFile[], parentFolderPath: string) => void;
|
|
20
|
+
getCurrentFolderPath: () => string;
|
|
21
|
+
}
|
|
22
|
+
export declare const useBulkActions: ({ selectedFiles, actionLabels, onDuplicate, onCopy, onMove, onDownload, onDelete, getCurrentFolderPath, }: UseBulkActionsProps) => DialActionDropdownItem[];
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { DialFile } from '../../../models/file';
|
|
2
|
+
import { DialCopiedItem } from '../../../models/file-manager';
|
|
3
|
+
import { FileConflictDecision } from '../components/ConflictResolutionPopup/ConflictResolutionPopup';
|
|
4
|
+
import { DialFileManagerConflictActions } from '../../../types/file-manager';
|
|
5
|
+
export interface UseConflictResolutionOptions {
|
|
6
|
+
getDestinationFiles: (path: string) => DialFile[];
|
|
7
|
+
onResolve?: (items: DialCopiedItem[], destinationFolder: string) => void;
|
|
8
|
+
}
|
|
9
|
+
export interface ConflictResolutionResult {
|
|
10
|
+
hasConflicts: boolean;
|
|
11
|
+
conflicts: DialFile[];
|
|
12
|
+
}
|
|
13
|
+
export declare const useConflictResolution: ({ getDestinationFiles, onResolve, }: UseConflictResolutionOptions) => {
|
|
14
|
+
conflictingFiles: DialFile[];
|
|
15
|
+
conflictResolutionOpen: boolean;
|
|
16
|
+
hasActiveConflictRef: import('react').RefObject<boolean>;
|
|
17
|
+
checkForConflicts: (destinationFolder: string, files: DialFile[]) => ConflictResolutionResult;
|
|
18
|
+
startConflictResolution: (destinationFolder: string, files: DialFile[], metadata?: Record<string, unknown>) => ConflictResolutionResult;
|
|
19
|
+
resolveConflictsWithStrategy: (destinationFolder: string, files: DialFile[], overwrite: boolean, metadata?: Record<string, unknown>) => DialCopiedItem[];
|
|
20
|
+
resolveConflictsWithDecisions: (destinationFolder: string, files: DialFile[], decisions: Map<string, DialFileManagerConflictActions>, metadata?: Record<string, unknown>) => DialCopiedItem[];
|
|
21
|
+
openConflictResolution: (files: DialFile[]) => void;
|
|
22
|
+
closeConflictResolution: () => void;
|
|
23
|
+
handleReplaceAll: () => void;
|
|
24
|
+
handleDuplicateAll: () => void;
|
|
25
|
+
handleDecideForEach: (decisions: FileConflictDecision[]) => void;
|
|
26
|
+
};
|
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
import { DialFile } from '../../../models/file';
|
|
2
|
-
import { DialCopiedItem } from '../../../
|
|
2
|
+
import { DialCopiedItem } from '../../../models/file-manager';
|
|
3
|
+
import { FileConflictDecision } from '../components/ConflictResolutionPopup/ConflictResolutionPopup';
|
|
4
|
+
import { DestinationFolderMode } from '../../../types/file-manager';
|
|
3
5
|
export interface UseFileClipboardOptions {
|
|
4
6
|
getDestinationFiles: (path: string) => DialFile[];
|
|
5
7
|
getSourceFiles: () => DialFile[];
|
|
6
8
|
onCopyFiles?: (items: DialCopiedItem[], destinationFolder: string) => void;
|
|
7
9
|
onMoveToFiles?: (items: DialCopiedItem[], sourceFolder: string, destinationFolder: string) => void;
|
|
10
|
+
onCopySuccess?: () => void;
|
|
11
|
+
onMoveSuccess?: () => void;
|
|
12
|
+
onDuplicateSuccess?: () => void;
|
|
13
|
+
getCopyHeader?: (itemsCount: number, itemName?: string) => string;
|
|
14
|
+
getMoveHeader?: (itemsCount: number, itemName?: string) => string;
|
|
8
15
|
}
|
|
9
|
-
export
|
|
10
|
-
export declare const useFileClipboard: ({ getDestinationFiles, onCopyFiles, onMoveToFiles, }: UseFileClipboardOptions) => {
|
|
16
|
+
export declare const useFileClipboard: ({ getDestinationFiles, onCopyFiles, onMoveToFiles, onCopySuccess, onMoveSuccess, onDuplicateSuccess, getCopyHeader, getMoveHeader, }: UseFileClipboardOptions) => {
|
|
11
17
|
handleDuplicate: (files: DialFile[]) => void;
|
|
12
18
|
handleCloseDestinationFolderPopup: () => void;
|
|
13
19
|
handleOpenDestinationFolderPopup: (mode: DestinationFolderMode) => void;
|
|
@@ -15,7 +21,15 @@ export declare const useFileClipboard: ({ getDestinationFiles, onCopyFiles, onMo
|
|
|
15
21
|
handleMoveTo: (destinationFolder: string, sourceFolder: string) => void;
|
|
16
22
|
openDestinationFolderPopup: boolean;
|
|
17
23
|
destinationFolderMode: DestinationFolderMode;
|
|
24
|
+
destinationFolderTitle: string | undefined;
|
|
18
25
|
handleSetCopiedFiles: (files: DialFile[]) => void;
|
|
19
26
|
handleSetMovedFiles: (files: DialFile[]) => void;
|
|
20
27
|
clearState: () => void;
|
|
28
|
+
conflictingFiles: DialFile[];
|
|
29
|
+
conflictResolutionOpen: boolean;
|
|
30
|
+
openConflictResolution: (files: DialFile[]) => void;
|
|
31
|
+
closeConflictResolution: () => void;
|
|
32
|
+
handleConflictReplace: () => void;
|
|
33
|
+
handleConflictDuplicate: () => void;
|
|
34
|
+
handleConflictDecideForEach: (decisions: FileConflictDecision[]) => void;
|
|
21
35
|
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { DialFile } from '../../../models/file';
|
|
2
|
-
import { DialDeletedItem } from '../../../
|
|
2
|
+
import { DialDeletedItem } from '../../../models/file-manager';
|
|
3
3
|
export interface UseFileDeleteOptions {
|
|
4
4
|
onDeleteFiles?: (items: DialDeletedItem[], sourceFolder: string) => void;
|
|
5
|
+
onDeleteSuccess?: () => void;
|
|
5
6
|
}
|
|
6
|
-
export declare const useFileDelete: ({ onDeleteFiles }: UseFileDeleteOptions) => {
|
|
7
|
+
export declare const useFileDelete: ({ onDeleteFiles, onDeleteSuccess, }: UseFileDeleteOptions) => {
|
|
7
8
|
deleteConfirmationOpen: boolean;
|
|
8
9
|
itemsToDelete: DialFile[];
|
|
9
10
|
openDeleteConfirmation: (items: DialFile[], parentFolderPath: string) => void;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { DialFile } from '../../../models/file';
|
|
2
2
|
export interface UseFileDownloadOptions {
|
|
3
3
|
onDownloadFiles?: (items: DialFile[]) => void;
|
|
4
|
+
onDownloadSuccess?: () => void;
|
|
4
5
|
}
|
|
5
|
-
export declare const useFileDownload: ({ onDownloadFiles, }: UseFileDownloadOptions) => {
|
|
6
|
+
export declare const useFileDownload: ({ onDownloadFiles, onDownloadSuccess, }: UseFileDownloadOptions) => {
|
|
6
7
|
handleDownloadFiles: (items: DialFile[]) => void;
|
|
7
8
|
};
|
|
@@ -0,0 +1,34 @@
|
|
|
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
|
+
onUploadArchive?: (file: File, name: string, destinationFolder: string) => void;
|
|
20
|
+
}
|
|
21
|
+
export declare const useFileUpload: ({ onUploadFiles, onValidateUpload, maxFileSize, validationMessages, onUploadArchive, }?: UseFileUploadOptions) => {
|
|
22
|
+
isDragging: boolean;
|
|
23
|
+
isDraggingOverWindow: boolean;
|
|
24
|
+
uploadError: string | undefined;
|
|
25
|
+
handleDragEnter: (e: DragEvent) => void;
|
|
26
|
+
handleDragLeave: (e: DragEvent) => void;
|
|
27
|
+
handleDragOver: (e: DragEvent) => void;
|
|
28
|
+
handleDrop: (e: DragEvent, destinationFolder: string, existingFiles: DialFile[]) => Promise<void>;
|
|
29
|
+
clearError: () => void;
|
|
30
|
+
handleUpload: (files: DialUploadFileItem[], destinationFolder: string, existingFiles: DialFile[]) => Promise<boolean>;
|
|
31
|
+
openFileDialog: (destinationFolder: string, existingFiles: DialFile[]) => void;
|
|
32
|
+
openArchiveDialog: (destinationFolder: string, existingFiles: DialFile[]) => void;
|
|
33
|
+
fileInputRef: import('react').RefObject<HTMLInputElement | null>;
|
|
34
|
+
};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { DialFile } from '../../../models/file';
|
|
2
|
+
import { DialUploadFileItem } from '../../../models/file-manager';
|
|
3
|
+
export interface FolderCreationValidationMessages {
|
|
4
|
+
emptyName?: string;
|
|
5
|
+
duplicateName?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface UseFolderCreationProps {
|
|
8
|
+
currentFolder?: DialFile;
|
|
9
|
+
onCreateFolder?: (file: DialUploadFileItem, folderPath: string, fileId: string) => void | Promise<void>;
|
|
10
|
+
onValidateFolderName?: (name: string, parentFolder: DialFile) => string | null;
|
|
11
|
+
validationMessages?: FolderCreationValidationMessages;
|
|
12
|
+
}
|
|
13
|
+
export interface UseFolderCreationResult {
|
|
14
|
+
isCreatingFolder: boolean;
|
|
15
|
+
newFolderTempId: string | null;
|
|
16
|
+
startFolderCreation: () => void;
|
|
17
|
+
cancelFolderCreation: () => void;
|
|
18
|
+
saveFolderCreation: (name: string) => Promise<void>;
|
|
19
|
+
validateFolderName: (name: string) => string | null;
|
|
20
|
+
}
|
|
21
|
+
export declare const useFolderCreation: ({ currentFolder, onCreateFolder, onValidateFolderName, validationMessages, }: UseFolderCreationProps) => UseFolderCreationResult;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ColDef } from 'ag-grid-community';
|
|
2
|
+
import { FileManagerGridRow } from '../FileManagerContext';
|
|
3
|
+
import { DropdownItem } from '../../../models/dropdown';
|
|
4
|
+
interface UseGridActionsColumnProps {
|
|
5
|
+
getContextMenuItems: (row: FileManagerGridRow) => DropdownItem[];
|
|
6
|
+
}
|
|
7
|
+
export declare const useGridActionsColumn: ({ getContextMenuItems, }: UseGridActionsColumnProps) => {
|
|
8
|
+
actionsColumnDef: ColDef<FileManagerGridRow, any>;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { DialFile } from '../../../models/file';
|
|
2
|
+
import { DialFileManagerActions } from '../../../types/file-manager';
|
|
3
|
+
import { DropdownItem } from '../../../models/dropdown';
|
|
4
|
+
export interface UseGridContextMenuProps {
|
|
5
|
+
actionLabels?: {
|
|
6
|
+
[DialFileManagerActions.Duplicate]?: string;
|
|
7
|
+
[DialFileManagerActions.Copy]?: string;
|
|
8
|
+
[DialFileManagerActions.Rename]?: string;
|
|
9
|
+
[DialFileManagerActions.Download]?: string;
|
|
10
|
+
[DialFileManagerActions.Delete]?: string;
|
|
11
|
+
[DialFileManagerActions.Move]?: string;
|
|
12
|
+
};
|
|
13
|
+
onDuplicate: (file: DialFile) => void;
|
|
14
|
+
onCopy: (file: DialFile) => void;
|
|
15
|
+
onMove: (file: DialFile) => void;
|
|
16
|
+
onDownload: (file: DialFile) => void;
|
|
17
|
+
onRename: (filePath: string) => void;
|
|
18
|
+
onDelete: (file: DialFile, parentFolderPath: string) => void;
|
|
19
|
+
}
|
|
20
|
+
export declare const useGridContextMenu: ({ actionLabels, onDuplicate, onCopy, onMove, onDownload, onRename, onDelete, }: UseGridContextMenuProps) => (file: DialFile) => DropdownItem[];
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { DialFile } from '../../../models/file';
|
|
2
|
-
import { DialCopiedItem } from '../../../
|
|
3
|
-
export
|
|
2
|
+
import { DialCopiedItem } from '../../../models/file-manager';
|
|
3
|
+
export interface RenameValidationMessages {
|
|
4
|
+
emptyName?: string;
|
|
5
|
+
duplicateName?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const useItemRenaming: ({ items, onRenameValidate, validationMessages, onMoveToFiles, }: {
|
|
4
8
|
items?: DialFile[];
|
|
5
|
-
onRename?: (path: string) => void;
|
|
6
|
-
onRenameSave?: (value: string) => void;
|
|
7
|
-
onRenameCancel?: () => void;
|
|
8
9
|
onRenameValidate?: (value: string, item: DialFile) => string | null;
|
|
10
|
+
validationMessages?: RenameValidationMessages;
|
|
9
11
|
onMoveToFiles?: (items: DialCopiedItem[], sourceFolder: string, destinationFolder: string) => void;
|
|
10
12
|
}) => {
|
|
11
13
|
renamedPath: string | undefined;
|
|
14
|
+
renamedItem: DialFile | undefined;
|
|
12
15
|
renameHandler: (path: string) => void;
|
|
13
16
|
renameSaveHandler: (value: string) => void;
|
|
14
17
|
renameCancelHandler: () => void;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { DropdownItem } from '../../../models/dropdown';
|
|
2
|
+
export interface UseNewActionsProps {
|
|
3
|
+
newActionLabels?: {
|
|
4
|
+
uploadFiles?: string;
|
|
5
|
+
newFolder?: string;
|
|
6
|
+
uploadArchive?: string;
|
|
7
|
+
};
|
|
8
|
+
onUploadFiles?: () => void;
|
|
9
|
+
onCreateFolder?: () => void;
|
|
10
|
+
onUploadArchive?: () => void;
|
|
11
|
+
}
|
|
12
|
+
export interface UseNewActionsResult {
|
|
13
|
+
newActions: DropdownItem[];
|
|
14
|
+
isNewButtonVisible: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare const useNewActions: ({ newActionLabels, onUploadFiles, onCreateFolder, onUploadArchive, }: UseNewActionsProps) => UseNewActionsResult;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
interface useTreeAdditionalButtonsOptions {
|
|
3
|
+
additionalButtons?: ReactNode;
|
|
4
|
+
expandedPathsLength: number;
|
|
5
|
+
collapseAll: () => void;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Provides additional action buttons for the tree component, including a
|
|
9
|
+
* built-in "Collapse All" button. The hook memoizes the returned JSX to avoid
|
|
10
|
+
* unnecessary re-renders and applies disabled state automatically based on
|
|
11
|
+
* the number of expanded paths.
|
|
12
|
+
*
|
|
13
|
+
* @param {ReactNode} [additionalButtons] - Optional custom buttons rendered before the Collapse All button.
|
|
14
|
+
* @param {number} expandedPathsLength - Number of currently expanded paths in the tree.
|
|
15
|
+
* @param {() => void} collapseAll - Callback fired when the Collapse All button is clicked.
|
|
16
|
+
*
|
|
17
|
+
* @returns {{ additionalButtons: ReactNode }} - The rendered buttons fragment.
|
|
18
|
+
*/
|
|
19
|
+
export declare const useTreeAdditionalButtons: ({ additionalButtons, expandedPathsLength, collapseAll, }: useTreeAdditionalButtonsOptions) => {
|
|
20
|
+
additionalButtons: import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
};
|
|
22
|
+
export {};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DialFile } from '../../models/file';
|
|
2
|
-
export declare const findNodeByPath: (nodes: DialFile[] | undefined, path
|
|
2
|
+
export declare const findNodeByPath: (nodes: DialFile[] | undefined, path: string) => DialFile | undefined;
|
|
3
3
|
export declare const findFolderForPath: (root: DialFile[] | undefined, path?: string) => DialFile | undefined;
|
|
4
4
|
export declare const normalizeToLowerCase: (input?: string) => string;
|
|
5
5
|
export declare const normalizeExtensionWithoutDot: (input?: string) => string;
|
|
@@ -1,20 +1,34 @@
|
|
|
1
|
-
import { FC } from 'react';
|
|
1
|
+
import { FC, ReactNode } from 'react';
|
|
2
2
|
export interface DialFileNameProps {
|
|
3
3
|
name: string;
|
|
4
|
-
|
|
4
|
+
className?: string;
|
|
5
5
|
shared?: boolean;
|
|
6
|
+
iconSize?: number;
|
|
7
|
+
details?: ReactNode;
|
|
6
8
|
}
|
|
7
9
|
/**
|
|
8
10
|
* Component to display a file name with a file icon and shared indicator.
|
|
9
11
|
* Handles long names with ellipsis and tooltip.
|
|
10
12
|
*
|
|
13
|
+
* If `details` is provided (e.g., file size, date), the component switches to
|
|
14
|
+
* a vertical layout and renders the extra information below the file name.
|
|
15
|
+
*
|
|
11
16
|
* @example
|
|
12
17
|
* ```tsx
|
|
18
|
+
* // Without details
|
|
13
19
|
* <DialFileName name="Document.pdf" />
|
|
20
|
+
*
|
|
21
|
+
* // With details (file size and updated date)
|
|
22
|
+
* <DialFileName
|
|
23
|
+
* name="Document.pdf"
|
|
24
|
+
* details={<span className="text-secondary">24 KB · Jul 20, 2025</span>}
|
|
25
|
+
* />
|
|
14
26
|
* ```
|
|
15
27
|
*
|
|
16
|
-
* @param name - Full file name with or without extension
|
|
17
|
-
* @param
|
|
18
|
-
* @param shared - Whether the file is shared
|
|
28
|
+
* @param name - Full file name with or without extension.
|
|
29
|
+
* @param className - Additional CSS classes for the root container.
|
|
30
|
+
* @param shared - Whether the file is shared.
|
|
31
|
+
* @param iconSize - Icon size in px. Default: BASE_ICON_SIZE.
|
|
32
|
+
* @param details - Optional metadata block displayed under the file name (e.g., size, modified date).
|
|
19
33
|
*/
|
|
20
34
|
export declare const DialFileName: FC<DialFileNameProps>;
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { FC } from 'react';
|
|
2
2
|
export interface DialFolderNameProps {
|
|
3
3
|
name: string;
|
|
4
|
-
|
|
4
|
+
className?: string;
|
|
5
5
|
shared?: boolean;
|
|
6
6
|
loading?: boolean;
|
|
7
|
+
iconSize?: number;
|
|
7
8
|
}
|
|
8
9
|
/**
|
|
9
10
|
* Component to display a folder name with a folder icon and shared indicator.
|
|
@@ -15,7 +16,9 @@ export interface DialFolderNameProps {
|
|
|
15
16
|
* ```
|
|
16
17
|
*
|
|
17
18
|
* @param name - Folder name
|
|
18
|
-
* @param
|
|
19
|
-
* @param shared -
|
|
19
|
+
* @param className - Additional CSS classes for the root container
|
|
20
|
+
* @param shared - If true, shows shared indicator. Default: false.
|
|
21
|
+
* @param loading - If true, shows loading state. Default: false.
|
|
22
|
+
* @param iconSize - Icon size in px. Default: BASE_ICON_SIZE.
|
|
20
23
|
*/
|
|
21
24
|
export declare const DialFolderName: FC<DialFolderNameProps>;
|
|
@@ -3,10 +3,10 @@ import { DialFormItemBaseProps } from '../../types/form-item';
|
|
|
3
3
|
export interface DialFormItemProps extends DialFormItemBaseProps {
|
|
4
4
|
elementId: string;
|
|
5
5
|
labelVisuallyHidden?: boolean;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
className?: string;
|
|
7
|
+
childrenClassName?: string;
|
|
8
|
+
labelClassName?: string;
|
|
9
|
+
errorClassName?: string;
|
|
10
10
|
children: ReactNode;
|
|
11
11
|
value?: ReactNode | string;
|
|
12
12
|
defaultEmptyText?: string;
|
|
@@ -22,7 +22,7 @@ export interface DialFormItemProps extends DialFormItemBaseProps {
|
|
|
22
22
|
*
|
|
23
23
|
* @example
|
|
24
24
|
* ```tsx
|
|
25
|
-
* <DialFormItem elementId="transport" label="Transport"
|
|
25
|
+
* <DialFormItem elementId="transport" label="Transport" className="w-[320px]">
|
|
26
26
|
* <DialSelect
|
|
27
27
|
* elementId="transport"
|
|
28
28
|
* value={transport}
|
|
@@ -53,10 +53,10 @@ export interface DialFormItemProps extends DialFormItemBaseProps {
|
|
|
53
53
|
*
|
|
54
54
|
* @param elementId - Unique identifier for the form control element (used for accessibility)
|
|
55
55
|
* @param labelVisuallyHidden - Whether to visually hide the label (still accessible to screen readers, default: false)
|
|
56
|
-
* @param
|
|
57
|
-
* @param
|
|
58
|
-
* @param
|
|
59
|
-
* @param
|
|
56
|
+
* @param className - Additional CSS classes to apply to the container div
|
|
57
|
+
* @param childrenClassName - Additional CSS classes to apply to the children container div
|
|
58
|
+
* @param labelClassName - Additional CSS classes to apply to the label element
|
|
59
|
+
* @param errorClassName - Additional CSS classes to apply to the error message element
|
|
60
60
|
* @param children - The form control element(s) to render inside the DialFormItem
|
|
61
61
|
* @param value - The current value of the form control (for readonly mode)
|
|
62
62
|
* @param defaultEmptyText - Text to display when readonly and value is empty (default: "None")
|
|
@@ -32,7 +32,7 @@ export interface DialFormPopupProps extends DialPopupProps {
|
|
|
32
32
|
* @param [cancelLabel="Cancel"] - Label for the cancel button
|
|
33
33
|
* @param [isLoading=false] - Shows loader placeholder and hides actions
|
|
34
34
|
* @param [disableSubmitButton=false] - Disables the submit button
|
|
35
|
-
* @param [
|
|
35
|
+
* @param [className] - Extra classes for the popup container
|
|
36
36
|
* @param [submitClassName] - Extra classes merged into the submit button
|
|
37
37
|
* @param onClose - Fired on close
|
|
38
38
|
* @param onSubmit - Fired on submit
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export declare const defaultSubmitLabel = "Create";
|
|
2
2
|
export declare const defaultCancelLabel = "Cancel";
|
|
3
|
-
export declare const
|
|
3
|
+
export declare const actionsBaseClassName = "flex items-center justify-end gap-2 px-6 py-3";
|
|
@@ -6,12 +6,15 @@ export interface DialGridProps<T extends object = Record<string, unknown>> {
|
|
|
6
6
|
rowData?: T[];
|
|
7
7
|
additionalGridOptions?: GridOptions<T>;
|
|
8
8
|
getContextMenuItems?: (row: T) => DropdownItem[];
|
|
9
|
-
|
|
9
|
+
className?: string;
|
|
10
10
|
ariaLabel?: string;
|
|
11
11
|
withSelectionColumn?: boolean;
|
|
12
12
|
wrapCustomCellRenderers?: boolean | ((col: ColDef<T>) => boolean);
|
|
13
13
|
selectedRowIds?: Set<string>;
|
|
14
|
+
selectedRows?: Map<string, T>;
|
|
15
|
+
selectionOnHover?: boolean;
|
|
14
16
|
onSelectionChange?: (selectedRowIds: Set<string>, selectedRows: T[]) => void;
|
|
17
|
+
onSelectionChangeWithMap?: (selectedRows: Map<string, T>) => void;
|
|
15
18
|
getRowId?: (row: T) => string;
|
|
16
19
|
alternateOddRowColors?: boolean;
|
|
17
20
|
filterPlaceholder?: string;
|
|
@@ -19,6 +22,8 @@ export interface DialGridProps<T extends object = Record<string, unknown>> {
|
|
|
19
22
|
emptyStateTitle?: string;
|
|
20
23
|
emptyStateDescription?: string;
|
|
21
24
|
loading?: boolean;
|
|
25
|
+
wrapperBorder?: boolean;
|
|
26
|
+
withoutHeaderBorders?: boolean;
|
|
22
27
|
}
|
|
23
28
|
/**
|
|
24
29
|
* DialGrid — A feature-rich data grid wrapper built on ag-Grid with dark theme support.
|
|
@@ -89,11 +94,13 @@ export interface DialGridProps<T extends object = Record<string, unknown>> {
|
|
|
89
94
|
* @param [rowData] - Array of data objects to display in the grid
|
|
90
95
|
* @param [additionalGridOptions] - Additional ag-Grid GridOptions to merge with defaults
|
|
91
96
|
* @param [getContextMenuItems] - Function returning context menu items for a given row
|
|
92
|
-
* @param [
|
|
97
|
+
* @param [className] - Additional CSS classes to apply to the grid container
|
|
93
98
|
* @param [ariaLabel='Data grid'] - Accessible label for the grid region
|
|
94
99
|
* @param [withSelectionColumn=true] - Whether to show the checkbox selection column
|
|
95
100
|
* @param [wrapCustomCellRenderers=true] - Whether to wrap custom cell renderers with context menu support
|
|
96
101
|
* @param [selectedRowIds] - Controlled selection: set of row IDs that should be selected
|
|
102
|
+
* @param [selectedRows] - Controlled selection: map of row IDs to row data for selected rows
|
|
103
|
+
* @param [selectionOnHover=true] - Whether row selection highlights are shown on hover
|
|
97
104
|
* @param [onSelectionChange] - Callback invoked when selection changes (selectedIds, selectedRows)
|
|
98
105
|
* @param [getRowId] - Function to extract unique ID from a row object (defaults to 'id' field)
|
|
99
106
|
* @param [alternateOddRowColors=false] - Whether to alternate background colors for odd/even rows
|
|
@@ -103,5 +110,7 @@ export interface DialGridProps<T extends object = Record<string, unknown>> {
|
|
|
103
110
|
* @param [emptyStateDescription] - Optional description text displayed below the empty state title,
|
|
104
111
|
* providing additional context or instructions (e.g., "No data found" or "Try adjusting your filters").
|
|
105
112
|
* @param [loading=false] - When true, shows AG-Grid's native loading overlay
|
|
113
|
+
* @param [wrapperBorder=true] - Whether to apply a border around the grid container
|
|
114
|
+
* @param [withoutHeaderBorders=false] - Whether to hide the header row borders
|
|
106
115
|
*/
|
|
107
|
-
export declare const DialGrid: <T extends object>({ columnDefs, rowData, additionalGridOptions, getContextMenuItems,
|
|
116
|
+
export declare const DialGrid: <T extends object>({ columnDefs, rowData, additionalGridOptions, getContextMenuItems, className, ariaLabel, withSelectionColumn, wrapCustomCellRenderers, selectedRowIds, selectedRows, selectionOnHover, onSelectionChange, onSelectionChangeWithMap, getRowId, alternateOddRowColors, filterPlaceholder, emptyStateIcon, emptyStateTitle, emptyStateDescription, loading, wrapperBorder, withoutHeaderBorders, }: DialGridProps<T>) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
export interface UseGridSelectionProps<T> {
|
|
1
|
+
export interface UseGridSelectionProps<T extends object> {
|
|
2
2
|
selectedRowIds?: Set<string>;
|
|
3
|
+
selectedRows?: Map<string, T>;
|
|
3
4
|
onSelectionChange?: (selectedRowIds: Set<string>, selectedRows: T[]) => void;
|
|
5
|
+
onSelectionChangeWithMap?: (selectedRows: Map<string, T>) => void;
|
|
4
6
|
rowData?: T[];
|
|
5
7
|
getRowId: (row: T) => string;
|
|
6
8
|
}
|
|
7
|
-
export declare const useGridSelection: <T extends object>({ selectedRowIds, onSelectionChange, rowData, getRowId, }: UseGridSelectionProps<T>) => {
|
|
9
|
+
export declare const useGridSelection: <T extends object>({ selectedRowIds, selectedRows, onSelectionChange, onSelectionChangeWithMap, rowData, getRowId, }: UseGridSelectionProps<T>) => {
|
|
8
10
|
currentSelectedIds: Set<string>;
|
|
9
|
-
|
|
11
|
+
currentSelectedRows: Map<string, T>;
|
|
12
|
+
handleSelectionToggle: (row: T, checked: boolean) => void;
|
|
10
13
|
headerCheckboxState: string;
|
|
11
|
-
handleHeaderCheckboxChange: () => void;
|
|
14
|
+
handleHeaderCheckboxChange: (checked?: boolean) => void;
|
|
12
15
|
};
|