@aws-amplify/ui-react-storage 3.10.3 → 3.12.0
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/dist/browser.js +1 -1
- package/dist/{createStorageBrowser-B75dAYRb.js → createStorageBrowser-D5xaObbd.js} +439 -251
- package/dist/esm/components/StorageBrowser/actions/configs/defaults.mjs +12 -3
- package/dist/esm/components/StorageBrowser/actions/handlers/listLocationItems.mjs +1 -1
- package/dist/esm/components/StorageBrowser/actions/handlers/listLocations.mjs +1 -1
- package/dist/esm/components/StorageBrowser/createStorageBrowser/StorageBrowserDefault.mjs +2 -1
- package/dist/esm/components/StorageBrowser/createStorageBrowser/createProvider.mjs +6 -3
- package/dist/esm/components/StorageBrowser/createStorageBrowser/createStorageBrowser.mjs +3 -1
- package/dist/esm/components/StorageBrowser/displayText/context.mjs +5 -1
- package/dist/esm/components/StorageBrowser/displayText/libraries/en/default.mjs +2 -0
- package/dist/esm/components/StorageBrowser/displayText/libraries/en/downloadView.mjs +23 -0
- package/dist/esm/components/StorageBrowser/displayText/libraries/en/locationDetailView.mjs +2 -0
- package/dist/esm/components/StorageBrowser/displayText/libraries/en/uploadView.mjs +3 -6
- package/dist/esm/components/StorageBrowser/displayText/utils.mjs +3 -1
- package/dist/esm/components/StorageBrowser/fileItems/constants.mjs +11 -0
- package/dist/esm/components/StorageBrowser/fileItems/context.mjs +42 -0
- package/dist/esm/components/StorageBrowser/fileItems/fileItemsReducer.mjs +33 -0
- package/dist/esm/components/StorageBrowser/fileItems/utils.mjs +55 -0
- package/dist/esm/components/StorageBrowser/useAction/utils.mjs +2 -2
- package/dist/esm/components/StorageBrowser/views/LocationActionView/CopyView/CopyViewProvider.mjs +3 -2
- package/dist/esm/components/StorageBrowser/views/LocationActionView/CreateFolderView/CreateFolderViewProvider.mjs +0 -1
- package/dist/esm/components/StorageBrowser/views/LocationActionView/DeleteView/DeleteViewProvider.mjs +4 -3
- package/dist/esm/components/StorageBrowser/views/LocationActionView/DownloadView/DownloadView.mjs +47 -0
- package/dist/esm/components/StorageBrowser/views/LocationActionView/DownloadView/DownloadViewProvider.mjs +38 -0
- package/dist/esm/components/StorageBrowser/views/LocationActionView/DownloadView/useDownloadView.mjs +66 -0
- package/dist/esm/components/StorageBrowser/views/LocationActionView/UploadView/UploadView.mjs +3 -0
- package/dist/esm/components/StorageBrowser/views/LocationActionView/UploadView/UploadViewProvider.mjs +7 -2
- package/dist/esm/components/StorageBrowser/views/LocationActionView/UploadView/useUploadView.mjs +23 -35
- package/dist/esm/components/StorageBrowser/views/LocationDetailView/LocationDetailViewProvider.mjs +0 -1
- package/dist/esm/components/StorageBrowser/views/LocationDetailView/useLocationDetailView.mjs +3 -3
- package/dist/esm/components/StorageBrowser/views/context/actionViews.mjs +3 -1
- package/dist/esm/components/StorageBrowser/views/context/primaryViews.mjs +2 -1
- package/dist/esm/components/StorageBrowser/views/hooks/usePaginate.mjs +1 -1
- package/dist/esm/components/StorageBrowser/views/useView.mjs +3 -0
- package/dist/esm/components/StorageBrowser/views/utils/tableResolvers/constants.mjs +9 -1
- package/dist/esm/components/StorageBrowser/views/utils/tableResolvers/copyResolvers.mjs +4 -42
- package/dist/esm/components/StorageBrowser/views/utils/tableResolvers/deleteResolvers.mjs +4 -42
- package/dist/esm/components/StorageBrowser/views/utils/tableResolvers/downloadResolvers.mjs +36 -0
- package/dist/esm/components/StorageBrowser/views/utils/tableResolvers/utils.mjs +45 -5
- package/dist/esm/version.mjs +1 -1
- package/dist/index.js +1 -1
- package/dist/styles.css +17 -2
- package/dist/types/components/StorageBrowser/actions/configs/defaults.d.ts +4 -3
- package/dist/types/components/StorageBrowser/actions/configs/types.d.ts +3 -1
- package/dist/types/components/StorageBrowser/actions/handlers/download.d.ts +2 -2
- package/dist/types/components/StorageBrowser/actions/index.d.ts +1 -1
- package/dist/types/components/StorageBrowser/createStorageBrowser/createProvider.d.ts +1 -1
- package/dist/types/components/StorageBrowser/createStorageBrowser/types.d.ts +23 -4
- package/dist/types/components/StorageBrowser/displayText/index.d.ts +2 -2
- package/dist/types/components/StorageBrowser/displayText/libraries/en/downloadView.d.ts +2 -0
- package/dist/types/components/StorageBrowser/displayText/types.d.ts +8 -2
- package/dist/types/components/StorageBrowser/displayText/utils.d.ts +2 -1
- package/dist/types/components/StorageBrowser/fileItems/constants.d.ts +4 -0
- package/dist/types/components/StorageBrowser/fileItems/context.d.ts +6 -0
- package/dist/types/components/StorageBrowser/fileItems/fileItemsReducer.d.ts +6 -0
- package/dist/types/components/StorageBrowser/fileItems/index.d.ts +3 -0
- package/dist/types/components/StorageBrowser/fileItems/types.d.ts +44 -0
- package/dist/types/components/StorageBrowser/fileItems/utils.d.ts +5 -0
- package/dist/types/components/StorageBrowser/validators/index.d.ts +1 -2
- package/dist/types/components/StorageBrowser/views/LocationActionView/DownloadView/DownloadView.d.ts +2 -0
- package/dist/types/components/StorageBrowser/views/LocationActionView/DownloadView/DownloadViewProvider.d.ts +3 -0
- package/dist/types/components/StorageBrowser/views/LocationActionView/DownloadView/index.d.ts +3 -0
- package/dist/types/components/StorageBrowser/views/LocationActionView/DownloadView/types.d.ts +22 -0
- package/dist/types/components/StorageBrowser/views/LocationActionView/DownloadView/useDownloadView.d.ts +2 -0
- package/dist/types/components/StorageBrowser/views/LocationActionView/UploadView/types.d.ts +6 -1
- package/dist/types/components/StorageBrowser/views/LocationActionView/index.d.ts +2 -0
- package/dist/types/components/StorageBrowser/views/index.d.ts +2 -2
- package/dist/types/components/StorageBrowser/views/types.d.ts +5 -3
- package/dist/types/components/StorageBrowser/views/useView.d.ts +2 -1
- package/dist/types/components/StorageBrowser/views/utils/index.d.ts +1 -1
- package/dist/types/components/StorageBrowser/views/utils/tableResolvers/__testUtils__/tasks.d.ts +6 -11
- package/dist/types/components/StorageBrowser/views/utils/tableResolvers/constants.d.ts +1 -0
- package/dist/types/components/StorageBrowser/views/utils/tableResolvers/copyResolvers.d.ts +2 -3
- package/dist/types/components/StorageBrowser/views/utils/tableResolvers/deleteResolvers.d.ts +2 -3
- package/dist/types/components/StorageBrowser/views/utils/tableResolvers/downloadResolvers.d.ts +2 -0
- package/dist/types/components/StorageBrowser/views/utils/tableResolvers/index.d.ts +4 -2
- package/dist/types/components/StorageBrowser/views/utils/tableResolvers/types.d.ts +15 -11
- package/dist/types/components/StorageBrowser/views/utils/tableResolvers/utils.d.ts +15 -7
- package/dist/types/version.d.ts +1 -1
- package/package.json +3 -3
- package/dist/esm/components/StorageBrowser/files/context.mjs +0 -31
- package/dist/esm/components/StorageBrowser/files/utils.mjs +0 -52
- package/dist/esm/components/StorageBrowser/validators/isFileTooBig.mjs +0 -4
- package/dist/types/components/StorageBrowser/files/context.d.ts +0 -6
- package/dist/types/components/StorageBrowser/files/index.d.ts +0 -2
- package/dist/types/components/StorageBrowser/files/types.d.ts +0 -28
- package/dist/types/components/StorageBrowser/files/utils.d.ts +0 -7
- package/dist/types/components/StorageBrowser/validators/isFileTooBig.d.ts +0 -2
|
@@ -6,7 +6,7 @@ import type { StorageBrowserDisplayText } from '../displayText';
|
|
|
6
6
|
import type { ErrorBoundaryType } from '../ErrorBoundary';
|
|
7
7
|
import type { StorageBrowserEventValue, StorageBrowserValue, StoreProviderProps } from '../store';
|
|
8
8
|
import type { DerivedActionHandlers, UseAction } from '../useAction';
|
|
9
|
-
import type { CopyViewType, CreateFolderViewType, DeleteViewType, UploadViewType, LocationActionViewType, LocationDetailViewType, LocationsViewType, UseView, StorageBrowserViews } from '../views';
|
|
9
|
+
import type { CopyViewType, CreateFolderViewType, DeleteViewType, DownloadViewType, UploadViewType, LocationActionViewType, LocationDetailViewType, LocationsViewType, UseView, StorageBrowserViews } from '../views';
|
|
10
10
|
/**
|
|
11
11
|
* @description configuration properties
|
|
12
12
|
*/
|
|
@@ -86,6 +86,20 @@ export interface StorageBrowserActions {
|
|
|
86
86
|
default?: DefaultActionConfigs;
|
|
87
87
|
custom?: CustomActionConfigs;
|
|
88
88
|
}
|
|
89
|
+
export interface StorageBrowserOptions {
|
|
90
|
+
/**
|
|
91
|
+
* @description Overrides default file validation called when selecting files to be uploaded
|
|
92
|
+
* @param {File} file — The file to validate
|
|
93
|
+
* @returns {boolean} — Returns true if `file` is valid, false otherwise
|
|
94
|
+
* @example
|
|
95
|
+
* ```tsx
|
|
96
|
+
* const MAX_FILE_SIZE = 10 * 1000 * 1000 * 1000; // 10 GB in bytes
|
|
97
|
+
*
|
|
98
|
+
* const myValidateFile = (file: File) => file.size < MAX_FILE_SIZE;
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
validateFile?: (file: File) => boolean;
|
|
102
|
+
}
|
|
89
103
|
/**
|
|
90
104
|
* @description configuration and options for `createStorageBrowser`
|
|
91
105
|
*/
|
|
@@ -107,6 +121,10 @@ export interface CreateStorageBrowserInput {
|
|
|
107
121
|
* @description Overrides default `components` used within `StorageBrowser`
|
|
108
122
|
*/
|
|
109
123
|
components?: StorageBrowserComponents;
|
|
124
|
+
/**
|
|
125
|
+
* @description Additional options and overrides for `StorageBrowser`
|
|
126
|
+
*/
|
|
127
|
+
options?: StorageBrowserOptions;
|
|
110
128
|
}
|
|
111
129
|
/**
|
|
112
130
|
* `StorageBrowser` component properties
|
|
@@ -162,17 +180,17 @@ export interface StorageBrowserProviderProps<TViews = {}> extends StoreProviderP
|
|
|
162
180
|
*/
|
|
163
181
|
views?: TViews;
|
|
164
182
|
/**
|
|
165
|
-
* @deprecated will be removed in a future major
|
|
183
|
+
* @deprecated will be removed in a future major version. Prefer `value` for controlled behavior or `defaultValue` for initializing `actionType`
|
|
166
184
|
* @description initial `actionType`, does not update
|
|
167
185
|
*/
|
|
168
186
|
actionType?: string;
|
|
169
187
|
/**
|
|
170
|
-
* @deprecated will be removed in a future major
|
|
188
|
+
* @deprecated will be removed in a future major version. Prefer `value` for controlled behavior or `defaultValue` for initializing `actionType`
|
|
171
189
|
* @description initial `location` data, does not update
|
|
172
190
|
*/
|
|
173
191
|
location?: LocationData;
|
|
174
192
|
/**
|
|
175
|
-
* @deprecated will be removed in a future major
|
|
193
|
+
* @deprecated will be removed in a future major version. Prefer `value` for controlled behavior or `defaultValue` for initializing `actionType`
|
|
176
194
|
* @description initial `location` subpath to establish navigation state, does not update
|
|
177
195
|
*/
|
|
178
196
|
path?: string;
|
|
@@ -217,6 +235,7 @@ export interface StorageBrowserType<TActionType = string, TViews = {}> {
|
|
|
217
235
|
CopyView: CopyViewType;
|
|
218
236
|
CreateFolderView: CreateFolderViewType;
|
|
219
237
|
DeleteView: DeleteViewType;
|
|
238
|
+
DownloadView: DownloadViewType;
|
|
220
239
|
UploadView: UploadViewType;
|
|
221
240
|
}
|
|
222
241
|
type NonDefaultActionType<T = string> = Exclude<T, keyof DefaultActionConfigs>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { DisplayTextProvider, useDisplayText } from './context';
|
|
2
2
|
export { DEFAULT_STORAGE_BROWSER_DISPLAY_TEXT as DefaultStorageBrowserDisplayText } from './libraries';
|
|
3
|
-
export type { LocationDetailViewDisplayText, LocationsViewDisplayText, CreateFolderViewDisplayText, CopyViewDisplayText, UploadViewDisplayText, DeleteViewDisplayText, StorageBrowserDisplayText, } from './types';
|
|
4
|
-
export { isCopyViewDisplayTextKey, isDeleteViewDisplayTextKey } from './utils';
|
|
3
|
+
export type { LocationDetailViewDisplayText, LocationsViewDisplayText, CreateFolderViewDisplayText, CopyViewDisplayText, UploadViewDisplayText, DeleteViewDisplayText, DownloadViewDisplayText, StorageBrowserDisplayText, } from './types';
|
|
4
|
+
export { isCopyViewDisplayTextKey, isDeleteViewDisplayTextKey, isDownloadViewDisplayTextKey, } from './utils';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { StatusCounts, Task } from '../tasks';
|
|
2
|
-
import type { CopyHandlerData, CreateFolderHandlerData, DeleteHandlerData, FolderData, LocationData, LocationItemData, TaskData, UploadHandlerData, LocationPermissions } from '../actions';
|
|
2
|
+
import type { CopyHandlerData, CreateFolderHandlerData, DeleteHandlerData, FolderData, LocationData, LocationItemData, TaskData, UploadHandlerData, LocationPermissions, DownloadHandlerData } from '../actions';
|
|
3
3
|
import type { MessageType } from '../components';
|
|
4
|
-
import type { FileItems } from '../
|
|
4
|
+
import type { FileItems } from '../fileItems';
|
|
5
5
|
import type { LocationState } from '../store';
|
|
6
6
|
/**
|
|
7
7
|
* Common list view display text values
|
|
@@ -115,6 +115,8 @@ export interface DefaultDeleteViewDisplayText extends DefaultActionViewDisplayTe
|
|
|
115
115
|
*/
|
|
116
116
|
tableColumnProgressHeader?: string;
|
|
117
117
|
}
|
|
118
|
+
export interface DefaultDownloadViewDisplayText extends DefaultActionViewDisplayText<DownloadHandlerData> {
|
|
119
|
+
}
|
|
118
120
|
export interface DefaultUploadViewDisplayText extends DefaultActionViewDisplayText<UploadHandlerData> {
|
|
119
121
|
addFilesLabel: string;
|
|
120
122
|
addFolderLabel: string;
|
|
@@ -132,6 +134,7 @@ export interface DefaultStorageBrowserDisplayText {
|
|
|
132
134
|
CopyView: DefaultCopyViewDisplayText;
|
|
133
135
|
CreateFolderView: DefaultCreateFolderViewDisplayText;
|
|
134
136
|
DeleteView: DefaultDeleteViewDisplayText;
|
|
137
|
+
DownloadView: DefaultDownloadViewDisplayText;
|
|
135
138
|
LocationsView: DefaultLocationsViewDisplayText;
|
|
136
139
|
LocationDetailView: DefaultLocationDetailViewDisplayText;
|
|
137
140
|
UploadView: DefaultUploadViewDisplayText;
|
|
@@ -142,6 +145,8 @@ export interface CopyViewDisplayText extends Partial<DefaultCopyViewDisplayText>
|
|
|
142
145
|
}
|
|
143
146
|
export interface DeleteViewDisplayText extends Partial<DefaultDeleteViewDisplayText> {
|
|
144
147
|
}
|
|
148
|
+
export interface DownloadViewDisplayText extends Partial<DefaultDownloadViewDisplayText> {
|
|
149
|
+
}
|
|
145
150
|
export interface LocationsViewDisplayText extends Partial<DefaultLocationsViewDisplayText> {
|
|
146
151
|
}
|
|
147
152
|
export interface LocationDetailViewDisplayText extends Partial<DefaultLocationDetailViewDisplayText> {
|
|
@@ -156,6 +161,7 @@ export interface StorageBrowserDisplayText {
|
|
|
156
161
|
LocationDetailView?: LocationDetailViewDisplayText;
|
|
157
162
|
UploadView?: UploadViewDisplayText;
|
|
158
163
|
DeleteView?: DeleteViewDisplayText;
|
|
164
|
+
DownloadView?: DownloadViewDisplayText;
|
|
159
165
|
CopyView?: CopyViewDisplayText;
|
|
160
166
|
CreateFolderView?: CreateFolderViewDisplayText;
|
|
161
167
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
import type { CopyViewDisplayText, DeleteViewDisplayText } from './types';
|
|
1
|
+
import type { CopyViewDisplayText, DeleteViewDisplayText, DownloadViewDisplayText } from './types';
|
|
2
2
|
export declare const isCopyViewDisplayTextKey: (value: string) => value is keyof CopyViewDisplayText;
|
|
3
3
|
export declare const isDeleteViewDisplayTextKey: (value: string) => value is keyof DeleteViewDisplayText;
|
|
4
|
+
export declare const isDownloadViewDisplayTextKey: (value: string) => value is keyof DownloadViewDisplayText;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { FileItemsContextType, FileItemsProviderProps } from './types';
|
|
3
|
+
export declare const FileItemsContext: React.Context<FileItemsContextType>, useFileItems: (params?: {
|
|
4
|
+
errorMessage?: string | undefined;
|
|
5
|
+
} | undefined) => FileItemsContextType;
|
|
6
|
+
export declare function FileItemsProvider({ children, validateFile, }: FileItemsProviderProps): React.JSX.Element;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { FileItem, LocationItemType } from '../actions';
|
|
2
|
+
/**
|
|
3
|
+
* native OS file picker type. to restrict selectable file types, define the picker types
|
|
4
|
+
* followed by accepted file types as strings
|
|
5
|
+
* @example
|
|
6
|
+
* ```ts
|
|
7
|
+
* type JPEGOnly = ['FOLDER', '.jpeg'];
|
|
8
|
+
* ```
|
|
9
|
+
*/
|
|
10
|
+
export type SelectionType = LocationItemType | [LocationItemType, ...string[]];
|
|
11
|
+
export type FileItemsActionType = {
|
|
12
|
+
type: 'ADD_FILES';
|
|
13
|
+
files?: File[];
|
|
14
|
+
} | {
|
|
15
|
+
type: 'ADD_FILE_ITEMS';
|
|
16
|
+
validFiles?: File[];
|
|
17
|
+
invalidFiles?: File[];
|
|
18
|
+
} | {
|
|
19
|
+
type: 'REMOVE_FILE_ITEM';
|
|
20
|
+
id: string;
|
|
21
|
+
} | {
|
|
22
|
+
type: 'SELECT_FILES';
|
|
23
|
+
selectionType?: SelectionType;
|
|
24
|
+
} | {
|
|
25
|
+
type: 'RESET_FILE_ITEMS';
|
|
26
|
+
};
|
|
27
|
+
export type FileItemsActionDispatchType = Exclude<FileItemsActionType, {
|
|
28
|
+
type: 'ADD_FILE_ITEMS';
|
|
29
|
+
}>;
|
|
30
|
+
export type HandleFileItemsAction = (input: FileItemsActionDispatchType) => void;
|
|
31
|
+
export interface ResolvedFiles {
|
|
32
|
+
validFiles: File[] | undefined;
|
|
33
|
+
invalidFiles: File[] | undefined;
|
|
34
|
+
}
|
|
35
|
+
export type FileItems = FileItem[];
|
|
36
|
+
export interface FileItemsState {
|
|
37
|
+
validItems: FileItems | undefined;
|
|
38
|
+
invalidItems: FileItems | undefined;
|
|
39
|
+
}
|
|
40
|
+
export type FileItemsContextType = [FileItemsState, HandleFileItemsAction];
|
|
41
|
+
export interface FileItemsProviderProps {
|
|
42
|
+
children?: React.ReactNode;
|
|
43
|
+
validateFile?: (file: File) => boolean;
|
|
44
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { FileItems, ResolvedFiles, SelectionType } from './types';
|
|
2
|
+
export declare const defaultValidateFile: (file: File) => boolean;
|
|
3
|
+
export declare const resolveFiles: (files: File[] | undefined, validateFile?: ((file: File) => boolean) | undefined) => ResolvedFiles;
|
|
4
|
+
export declare const processFileItems: (prevItems: FileItems | undefined, files: File[] | undefined) => FileItems | undefined;
|
|
5
|
+
export declare const parseFileSelectParams: (value?: SelectionType) => [selectType: import("@aws-amplify/ui-react/dist/types/components/FileSelect/FileSelect").SelectType, options?: import("@aws-amplify/ui-react/internal").FileSelectOptions | undefined];
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
+
export { assertAccountId } from './assertAccountId';
|
|
1
2
|
export { assertLocationData, assertPrefix } from './assertLocationData';
|
|
2
3
|
export { assertRegisterAuthListener } from './assertRegisterAuthListener';
|
|
3
|
-
export { assertAccountId } from './assertAccountId';
|
|
4
|
-
export { isFileTooBig } from './isFileTooBig';
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { DownloadHandlerData, LocationData } from '../../../actions';
|
|
2
|
+
import type { ActionViewProps, ActionViewState, ActionViewType } from '../types';
|
|
3
|
+
export interface DownloadViewState extends ActionViewState<DownloadHandlerData> {
|
|
4
|
+
}
|
|
5
|
+
export interface DownloadViewProps extends ActionViewProps {
|
|
6
|
+
}
|
|
7
|
+
export interface UseDownloadViewOptions {
|
|
8
|
+
onExit?: (location?: LocationData) => void;
|
|
9
|
+
}
|
|
10
|
+
export interface DownloadViewProviderProps extends DownloadViewState {
|
|
11
|
+
children?: React.ReactNode;
|
|
12
|
+
}
|
|
13
|
+
export interface DownloadViewType extends ActionViewType<DownloadHandlerData, DownloadViewProps> {
|
|
14
|
+
Provider: (props: DownloadViewProviderProps) => React.JSX.Element;
|
|
15
|
+
Cancel: () => React.JSX.Element | null;
|
|
16
|
+
Exit: () => React.JSX.Element | null;
|
|
17
|
+
Message: () => React.JSX.Element | null;
|
|
18
|
+
Start: () => React.JSX.Element | null;
|
|
19
|
+
Statuses: () => React.JSX.Element | null;
|
|
20
|
+
TasksTable: () => React.JSX.Element | null;
|
|
21
|
+
Title: () => React.JSX.Element | null;
|
|
22
|
+
}
|
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import type { LocationData, UploadHandlerData } from '../../../actions';
|
|
2
|
-
import type { FileItems } from '../../../
|
|
2
|
+
import type { FileItems } from '../../../fileItems';
|
|
3
3
|
import type { ActionViewType, ActionViewProps, ActionViewState } from '../types';
|
|
4
4
|
export interface UploadViewState extends ActionViewState<UploadHandlerData> {
|
|
5
|
+
hasNextPage: boolean;
|
|
6
|
+
highestPageVisited: number;
|
|
5
7
|
isOverwritingEnabled: boolean;
|
|
6
8
|
onDropFiles: (files: File[]) => void;
|
|
7
9
|
onSelectFiles: (type: 'FILE' | 'FOLDER') => void;
|
|
8
10
|
onToggleOverwrite: () => void;
|
|
11
|
+
onPaginate: (page: number) => void;
|
|
12
|
+
page: number;
|
|
9
13
|
invalidFiles: FileItems | undefined;
|
|
10
14
|
}
|
|
11
15
|
export interface UploadViewProps extends ActionViewProps, Partial<UploadViewState> {
|
|
@@ -29,6 +33,7 @@ export interface UploadViewType extends ActionViewType<UploadHandlerData, Upload
|
|
|
29
33
|
Statuses: () => React.JSX.Element | null;
|
|
30
34
|
TasksTable: () => React.JSX.Element | null;
|
|
31
35
|
Title: () => React.JSX.Element | null;
|
|
36
|
+
Pagination: () => React.JSX.Element | null;
|
|
32
37
|
}
|
|
33
38
|
export interface UseUploadViewOptions {
|
|
34
39
|
onExit?: (location?: LocationData) => void;
|
|
@@ -4,6 +4,8 @@ export type { CreateFolderViewProps, CreateFolderViewType, CreateFolderViewState
|
|
|
4
4
|
export { CreateFolderView, useCreateFolderView } from './CreateFolderView';
|
|
5
5
|
export type { DeleteViewProps, DeleteViewType, DeleteViewState, } from './DeleteView';
|
|
6
6
|
export { DeleteView, useDeleteView } from './DeleteView';
|
|
7
|
+
export type { DownloadViewProps, DownloadViewType, DownloadViewState, } from './DownloadView';
|
|
8
|
+
export { DownloadView, useDownloadView } from './DownloadView';
|
|
7
9
|
export { LocationActionView } from './LocationActionView';
|
|
8
10
|
export type { UploadViewProps, UploadViewType, UploadViewState, } from './UploadView';
|
|
9
11
|
export { UploadView, useUploadView } from './UploadView';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { ViewsProvider, useViews } from './context';
|
|
2
|
-
export type { CopyViewType, CreateFolderViewType, DeleteViewType, LocationActionViewProps, LocationActionViewType, UploadViewType, } from './LocationActionView';
|
|
3
|
-
export { CopyView, CreateFolderView, DeleteView, LocationActionView, UploadView, } from './LocationActionView';
|
|
2
|
+
export type { CopyViewType, CreateFolderViewType, DeleteViewType, DownloadViewType, LocationActionViewProps, LocationActionViewType, UploadViewType, } from './LocationActionView';
|
|
3
|
+
export { CopyView, CreateFolderView, DownloadView, DeleteView, LocationActionView, UploadView, } from './LocationActionView';
|
|
4
4
|
export type { LocationDetailViewProps, LocationDetailViewType, } from './LocationDetailView';
|
|
5
5
|
export { LocationDetailView } from './LocationDetailView';
|
|
6
6
|
export type { LocationsViewProps, LocationsViewType } from './LocationsView';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type React from 'react';
|
|
2
2
|
import type { LocationData } from '../actions';
|
|
3
|
-
import type {
|
|
3
|
+
import type { CopyViewProps, CreateFolderViewProps, DeleteViewProps, DownloadViewProps, LocationActionViewProps, UploadViewProps } from './LocationActionView';
|
|
4
4
|
import type { LocationDetailViewProps } from './LocationDetailView';
|
|
5
5
|
import type { LocationsViewProps } from './LocationsView';
|
|
6
6
|
export interface ActionViewProps {
|
|
@@ -21,14 +21,16 @@ export interface PrimaryViews<T = string> {
|
|
|
21
21
|
LocationsView: (props: LocationsViewProps) => React.JSX.Element | null;
|
|
22
22
|
}
|
|
23
23
|
export interface DefaultActionViews {
|
|
24
|
-
CreateFolderView: (props: CreateFolderViewProps) => React.JSX.Element | null;
|
|
25
24
|
CopyView: (props: CopyViewProps) => React.JSX.Element | null;
|
|
25
|
+
CreateFolderView: (props: CreateFolderViewProps) => React.JSX.Element | null;
|
|
26
26
|
DeleteView: (props: DeleteViewProps) => React.JSX.Element | null;
|
|
27
|
+
DownloadView: (props: DownloadViewProps) => React.JSX.Element | null;
|
|
27
28
|
UploadView: (props: UploadViewProps) => React.JSX.Element | null;
|
|
28
29
|
}
|
|
29
30
|
export interface DefaultActionViewsByActionName {
|
|
30
|
-
createFolder: (props: CreateFolderViewProps) => React.JSX.Element | null;
|
|
31
31
|
copy: (props: CopyViewProps) => React.JSX.Element | null;
|
|
32
|
+
createFolder: (props: CreateFolderViewProps) => React.JSX.Element | null;
|
|
32
33
|
delete: (props: DeleteViewProps) => React.JSX.Element | null;
|
|
34
|
+
download: (props: DownloadViewProps) => React.JSX.Element | null;
|
|
33
35
|
upload: (props: UploadViewProps) => React.JSX.Element | null;
|
|
34
36
|
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CopyViewState, CreateFolderViewState, DeleteViewState, DownloadViewState, UploadViewState } from './LocationActionView';
|
|
2
2
|
import type { LocationDetailViewState } from './LocationDetailView';
|
|
3
3
|
import type { LocationsViewState } from './LocationsView';
|
|
4
4
|
interface DefaultUseViewStates {
|
|
5
5
|
Copy: CopyViewState;
|
|
6
6
|
CreateFolder: CreateFolderViewState;
|
|
7
|
+
Download: DownloadViewState;
|
|
7
8
|
Delete: DeleteViewState;
|
|
8
9
|
LocationDetail: LocationDetailViewState;
|
|
9
10
|
Locations: LocationsViewState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { COPY_TABLE_RESOLVERS, FILE_DATA_ITEM_TABLE_KEYS, DELETE_TABLE_RESOLVERS, UPLOAD_TABLE_KEYS, UPLOAD_TABLE_RESOLVERS, DOWNLOAD_TABLE_RESOLVERS, } from './tableResolvers';
|
package/dist/types/components/StorageBrowser/views/utils/tableResolvers/__testUtils__/tasks.d.ts
CHANGED
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
import type { TaskStatus } from '../../../../tasks';
|
|
2
|
-
import type {
|
|
3
|
-
type
|
|
4
|
-
type
|
|
5
|
-
[K in
|
|
6
|
-
status: K;
|
|
7
|
-
};
|
|
8
|
-
};
|
|
9
|
-
type MockDeleteTasks = {
|
|
10
|
-
[K in MockCopyOrDeleteTaskStatus]: Omit<DeleteActionTask, 'status'> & {
|
|
2
|
+
import type { FileDataTask, UploadActionTask } from '../types';
|
|
3
|
+
type MockFileDataTaskStatus = Exclude<TaskStatus, 'OVERWRITE_PREVENTED'>;
|
|
4
|
+
type MockFileDataTasks = {
|
|
5
|
+
[K in MockFileDataTaskStatus]: Omit<FileDataTask, 'status'> & {
|
|
11
6
|
status: K;
|
|
12
7
|
};
|
|
13
8
|
};
|
|
@@ -16,8 +11,8 @@ type MockUploadTasks = {
|
|
|
16
11
|
status: K;
|
|
17
12
|
};
|
|
18
13
|
};
|
|
19
|
-
export declare const MOCK_COPY_TASKS:
|
|
20
|
-
export declare const
|
|
14
|
+
export declare const MOCK_COPY_TASKS: MockFileDataTasks;
|
|
15
|
+
export declare const MOCK_FILE_DATA_TASKS: MockFileDataTasks;
|
|
21
16
|
export declare const MOCK_UPLOAD_TASKS_SINGLE_PART: MockUploadTasks;
|
|
22
17
|
export declare const MOCK_UPLOAD_TASKS_MULTIPART: MockUploadTasks;
|
|
23
18
|
export {};
|
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const COPY_TABLE_RESOLVERS: CopyTaskTableResolvers;
|
|
1
|
+
import type { FileDataTaskTableResolvers } from './types';
|
|
2
|
+
export declare const COPY_TABLE_RESOLVERS: FileDataTaskTableResolvers;
|
package/dist/types/components/StorageBrowser/views/utils/tableResolvers/deleteResolvers.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const DELETE_TABLE_RESOLVERS: DeleteTableResolvers;
|
|
1
|
+
import type { FileDataTaskTableResolvers } from './types';
|
|
2
|
+
export declare const DELETE_TABLE_RESOLVERS: FileDataTaskTableResolvers;
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { COPY_TABLE_RESOLVERS } from './copyResolvers';
|
|
2
|
+
export { DELETE_TABLE_RESOLVERS } from './deleteResolvers';
|
|
3
|
+
export { DOWNLOAD_TABLE_RESOLVERS } from './downloadResolvers';
|
|
2
4
|
export { UPLOAD_TABLE_KEYS, UPLOAD_TABLE_RESOLVERS } from './uploadResolvers';
|
|
3
|
-
export {
|
|
5
|
+
export { FILE_DATA_ITEM_TABLE_KEYS } from './constants';
|
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import type { CopyHandlerData, DeleteHandlerData, UploadHandlerData } from '../../../actions';
|
|
2
|
-
import type { CopyViewDisplayText, DeleteViewDisplayText, UploadViewDisplayText } from '../../../displayText';
|
|
1
|
+
import type { CopyHandlerData, DeleteHandlerData, DownloadHandlerData, OptionalFileData, TaskData, UploadHandlerData } from '../../../actions';
|
|
2
|
+
import type { CopyViewDisplayText, DeleteViewDisplayText, DownloadViewDisplayText, UploadViewDisplayText } from '../../../displayText';
|
|
3
3
|
import type { Task } from '../../../tasks';
|
|
4
4
|
import type { DataTableResolvers } from '../../hooks/useResolveTableData';
|
|
5
5
|
export interface CopyActionTask extends Task<CopyHandlerData> {
|
|
6
6
|
}
|
|
7
7
|
export interface DeleteActionTask extends Task<DeleteHandlerData> {
|
|
8
8
|
}
|
|
9
|
+
export interface DownloadActionTask extends Task<DownloadHandlerData> {
|
|
10
|
+
}
|
|
9
11
|
export interface UploadActionTask extends Task<UploadHandlerData> {
|
|
10
12
|
}
|
|
13
|
+
export interface FileDataTask extends Task<TaskData & OptionalFileData & {
|
|
14
|
+
fileKey: string;
|
|
15
|
+
}> {
|
|
16
|
+
}
|
|
11
17
|
interface ActionTableResolverProps<TDisplayText, TTask> {
|
|
12
18
|
displayText: TDisplayText;
|
|
13
19
|
isProcessing: boolean;
|
|
@@ -17,20 +23,18 @@ export interface CopyTableResolverProps extends ActionTableResolverProps<CopyVie
|
|
|
17
23
|
}
|
|
18
24
|
export interface DeleteTableResolverProps extends ActionTableResolverProps<DeleteViewDisplayText, DeleteActionTask> {
|
|
19
25
|
}
|
|
26
|
+
export interface DownloadTableResolverProps extends ActionTableResolverProps<DownloadViewDisplayText, DownloadActionTask> {
|
|
27
|
+
}
|
|
20
28
|
export interface UploadTableResolverProps extends ActionTableResolverProps<UploadViewDisplayText, UploadActionTask> {
|
|
21
29
|
isMultipartUpload: (file: File) => boolean;
|
|
22
30
|
}
|
|
23
|
-
type
|
|
24
|
-
export type
|
|
25
|
-
export type
|
|
26
|
-
export
|
|
27
|
-
export interface CopyTaskTableResolvers extends DataTableResolvers<CopyTableKey, CopyTableResolverProps, CopyActionTask> {
|
|
28
|
-
}
|
|
29
|
-
export interface DeleteTableResolvers extends DataTableResolvers<DeleteTableKey, DeleteTableResolverProps, DeleteActionTask> {
|
|
31
|
+
export type FileDataTaskTableResolverProps = CopyTableResolverProps | DeleteTableResolverProps;
|
|
32
|
+
export type ActionTableKey = 'name' | 'folder' | 'type' | 'size' | 'status' | 'cancel';
|
|
33
|
+
export type UploadTableKey = ActionTableKey | 'progress';
|
|
34
|
+
export interface FileDataTaskTableResolvers extends DataTableResolvers<ActionTableKey, FileDataTaskTableResolverProps, FileDataTask> {
|
|
30
35
|
}
|
|
31
36
|
export interface UploadTableResolvers extends DataTableResolvers<UploadTableKey, UploadTableResolverProps, UploadActionTask> {
|
|
32
37
|
}
|
|
33
|
-
export type
|
|
34
|
-
export type GetDeleteCell = DeleteTableResolvers['getCell'];
|
|
38
|
+
export type GetFileDataCell = FileDataTaskTableResolvers['getCell'];
|
|
35
39
|
export type GetUploadCell = UploadTableResolvers['getCell'];
|
|
36
40
|
export {};
|
|
@@ -1,12 +1,20 @@
|
|
|
1
|
-
import type { DataTableButtonDataCell, DataTableNumberDataCell } from '../../../components';
|
|
2
|
-
import type {
|
|
1
|
+
import type { DataTableButtonDataCell, DataTableNumberDataCell, WithKey } from '../../../components';
|
|
2
|
+
import type { FileDataTask, GetFileDataCell, UploadActionTask, ActionTableKey } from './types';
|
|
3
3
|
export declare const getFileType: (value: string, fallback?: string) => string;
|
|
4
4
|
export declare const getCellName: (value: string) => string;
|
|
5
5
|
export declare const getUploadCellFolder: ({ data: { file: { webkitRelativePath }, }, }: UploadActionTask, fallback?: string) => string;
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const getDeleteCellFolder: ({ data: { fileKey, key }, }: DeleteActionTask) => string;
|
|
6
|
+
export declare const getFileDataCellFolder: (task: FileDataTask) => string;
|
|
8
7
|
export declare const getUploadCellProgress: ({ progress, status, }: UploadActionTask) => DataTableNumberDataCell['content'];
|
|
9
8
|
export declare const getFileSize: (value: number | undefined, fallback?: string) => string;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
export declare const getFileDataCancelCellContent: <TInput extends WithKey<import("../../hooks/useResolveTableData/types").CellData<import("./types").FileDataTaskTableResolverProps, FileDataTask>, ActionTableKey>, TCallback extends TInput["props"]["onTaskRemove"] extends (item: infer TItem) => void ? (item: TItem) => void : never>(data: TInput) => DataTableButtonDataCell['content'];
|
|
10
|
+
/**
|
|
11
|
+
* Generates a unique key for a table cell based on the key and item id
|
|
12
|
+
*/
|
|
13
|
+
export declare const getFileDataCellKey: ({ key, item, }: WithKey<{
|
|
14
|
+
item: FileDataTask;
|
|
15
|
+
}, ActionTableKey>) => string;
|
|
16
|
+
export declare const name: GetFileDataCell;
|
|
17
|
+
export declare const folder: GetFileDataCell;
|
|
18
|
+
export declare const type: GetFileDataCell;
|
|
19
|
+
export declare const size: GetFileDataCell;
|
|
20
|
+
export declare const cancel: GetFileDataCell;
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const VERSION = "3.
|
|
1
|
+
export declare const VERSION = "3.12.0";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-amplify/ui-react-storage",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.12.0",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "dist/esm/index.mjs",
|
|
6
6
|
"exports": {
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"name": "createStorageBrowser",
|
|
67
67
|
"path": "dist/esm/browser.mjs",
|
|
68
68
|
"import": "{ createStorageBrowser }",
|
|
69
|
-
"limit": "64.
|
|
69
|
+
"limit": "64.6 kB",
|
|
70
70
|
"ignore": [
|
|
71
71
|
"@aws-amplify/storage"
|
|
72
72
|
]
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"name": "StorageBrowser",
|
|
76
76
|
"path": "dist/esm/index.mjs",
|
|
77
77
|
"import": "{ StorageBrowser }",
|
|
78
|
-
"limit": "
|
|
78
|
+
"limit": "88 kB"
|
|
79
79
|
},
|
|
80
80
|
{
|
|
81
81
|
"name": "FileUploader",
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import React__default from 'react';
|
|
2
|
-
import { noop } from '@aws-amplify/ui';
|
|
3
|
-
import { createContextUtilities } from '@aws-amplify/ui-react-core';
|
|
4
|
-
import { useFileSelect } from '@aws-amplify/ui-react/internal';
|
|
5
|
-
import { filesReducer, parseFileSelectParams } from './utils.mjs';
|
|
6
|
-
|
|
7
|
-
const defaultValue = [undefined, noop];
|
|
8
|
-
const { FilesContext, useFiles } = createContextUtilities({
|
|
9
|
-
contextName: 'Files',
|
|
10
|
-
defaultValue,
|
|
11
|
-
});
|
|
12
|
-
function FilesProvider({ children, }) {
|
|
13
|
-
const [items, dispatch] = React__default.useReducer(filesReducer, []);
|
|
14
|
-
const [fileInput, handleFileSelect] = useFileSelect((nextFiles) => {
|
|
15
|
-
dispatch({ type: 'ADD_FILE_ITEMS', files: nextFiles });
|
|
16
|
-
});
|
|
17
|
-
const handleFilesAction = React__default.useCallback((action) => {
|
|
18
|
-
if (action.type === 'SELECT_FILES') {
|
|
19
|
-
handleFileSelect(...parseFileSelectParams(action.selectionType));
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
dispatch(action);
|
|
23
|
-
}
|
|
24
|
-
}, [handleFileSelect]);
|
|
25
|
-
const value = React__default.useMemo(() => [items, handleFilesAction], [items, handleFilesAction]);
|
|
26
|
-
return (React__default.createElement(FilesContext.Provider, { value: value },
|
|
27
|
-
fileInput,
|
|
28
|
-
children));
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export { FilesContext, FilesProvider, useFiles };
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { isUndefined, isString, isEmpty } from '@aws-amplify/ui';
|
|
2
|
-
|
|
3
|
-
const compareFileItems = (prev, next) => prev.key.localeCompare(next.key);
|
|
4
|
-
const resolveFiles = (prevItems, files) => {
|
|
5
|
-
if (!files?.length)
|
|
6
|
-
return prevItems;
|
|
7
|
-
// construct `nextItems` and filter out existing `file` entries
|
|
8
|
-
const nextItems = files.reduce((items, file) => {
|
|
9
|
-
const { name, webkitRelativePath } = file;
|
|
10
|
-
return prevItems.some(({ file: existing }) => existing.name === name &&
|
|
11
|
-
existing.webkitRelativePath === webkitRelativePath)
|
|
12
|
-
? items
|
|
13
|
-
: items.concat({
|
|
14
|
-
key: isEmpty(webkitRelativePath) ? name : webkitRelativePath,
|
|
15
|
-
id: crypto.randomUUID(),
|
|
16
|
-
file,
|
|
17
|
-
});
|
|
18
|
-
}, []);
|
|
19
|
-
if (!nextItems.length)
|
|
20
|
-
return prevItems;
|
|
21
|
-
if (!prevItems.length) {
|
|
22
|
-
return nextItems.sort(compareFileItems);
|
|
23
|
-
}
|
|
24
|
-
return prevItems.concat(nextItems).sort(compareFileItems);
|
|
25
|
-
};
|
|
26
|
-
const filesReducer = (prevItems, input) => {
|
|
27
|
-
switch (input.type) {
|
|
28
|
-
case 'ADD_FILE_ITEMS': {
|
|
29
|
-
return resolveFiles(prevItems, input.files);
|
|
30
|
-
}
|
|
31
|
-
case 'REMOVE_FILE_ITEM': {
|
|
32
|
-
const filteredItems = prevItems.filter(({ id }) => id !== input.id);
|
|
33
|
-
return filteredItems.length === prevItems.length
|
|
34
|
-
? prevItems
|
|
35
|
-
: filteredItems;
|
|
36
|
-
}
|
|
37
|
-
case 'RESET_FILE_ITEMS': {
|
|
38
|
-
return [];
|
|
39
|
-
}
|
|
40
|
-
// TODO: clear message
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
const parseFileSelectParams = (value) => {
|
|
44
|
-
if (isUndefined(value))
|
|
45
|
-
return ['FILE', undefined];
|
|
46
|
-
if (isString(value))
|
|
47
|
-
return [value, undefined];
|
|
48
|
-
const [selectType, ...rest] = value;
|
|
49
|
-
return [selectType, !rest?.length ? undefined : { accept: rest.join() }];
|
|
50
|
-
};
|
|
51
|
-
|
|
52
|
-
export { filesReducer, parseFileSelectParams, resolveFiles };
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import type { FilesContextType, FilesProviderProps } from './types';
|
|
3
|
-
export declare const FilesContext: React.Context<FilesContextType>, useFiles: (params?: {
|
|
4
|
-
errorMessage?: string | undefined;
|
|
5
|
-
} | undefined) => FilesContextType;
|
|
6
|
-
export declare function FilesProvider({ children, }: FilesProviderProps): React.JSX.Element;
|