@griddo/ax 11.5.1 → 11.5.2

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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@griddo/ax",
3
3
  "description": "Griddo Author Experience",
4
- "version": "11.5.1",
4
+ "version": "11.5.2",
5
5
  "authors": [
6
6
  "Álvaro Sánchez' <alvaro.sanches@secuoyas.com>",
7
7
  "Diego M. Béjar <diego.bejar@secuoyas.com>",
@@ -224,5 +224,5 @@
224
224
  "publishConfig": {
225
225
  "access": "public"
226
226
  },
227
- "gitHead": "a2bb818ce6e0cfc4ac1c83d7a2925da433a908f8"
227
+ "gitHead": "9e842b52cd5f320535bb5b6a0cedbbe8e7eb1319"
228
228
  }
@@ -253,12 +253,12 @@ function getFolderContent(params: IGetFolderParams): (dispatch: Dispatch, getSta
253
253
  const { folderID, loading, infinite = false } = params;
254
254
  const responseActions = {
255
255
  handleSuccess: (data: IImageFolder) => {
256
- if (infinite) {
257
- data.images.items = currentFolderContent
256
+ const imagesData =
257
+ infinite && currentFolderContent
258
258
  ? [...currentFolderContent.images.items, ...data.images.items]
259
- : [];
260
- }
261
- dispatch(setCurrentFolderContent(data));
259
+ : [...data.images.items];
260
+
261
+ dispatch(setCurrentFolderContent({ ...data, images: { ...data.images, items: imagesData } }));
262
262
  updateBreadcrumb(folderID)(dispatch, getState);
263
263
  dispatch(setUploadSuccess(false));
264
264
  },
@@ -12,11 +12,11 @@ const Breadcrumb = (props: IBreadcrumbProps): JSX.Element => {
12
12
  <S.BreadcrumbGroup data-testid="file-breadcrumb">
13
13
  <React.Fragment key="root">
14
14
  <S.BreadcrumbItem onClick={handleRootClick} isLastItem={false}>
15
- All Documents
15
+ All Media
16
16
  </S.BreadcrumbItem>
17
17
  {"/"}
18
18
  </React.Fragment>
19
- {breadcrumb.slice(0).map((item: IFolderTree, index: number, arr: any) => {
19
+ {breadcrumb.slice(0).map((item: IFolderTree, index: number, arr: IFolderTree[]) => {
20
20
  const { id, name } = item;
21
21
  const isLastItem = breadcrumb.length === index + 1;
22
22
  const handleClick = () => onClick(id);
@@ -25,7 +25,7 @@ const FolderTree = (props: IProps) => {
25
25
  <>
26
26
  {!hideRoot && (
27
27
  <S.Item selected={!folderID} onClick={handleRootClick}>
28
- <S.RootName>All Documents</S.RootName>
28
+ <S.RootName>All Media</S.RootName>
29
29
  <NewFolderButton />
30
30
  </S.Item>
31
31
  )}
@@ -33,7 +33,7 @@ const ImageWrapper = styled.div<{ selected: boolean }>`
33
33
  border: 1px solid;
34
34
  border-color: ${(p) => (p.selected === true ? p.theme.color.interactive02 : p.theme.color.uiLine)};
35
35
  flex-grow: 1;
36
- max-width: 400px;
36
+ max-width: 500px;
37
37
  min-width: 150px;
38
38
  :before {
39
39
  content: "";
@@ -81,8 +81,9 @@ const MediaGallery = (props: IProps) => {
81
81
  const { images, folders } = currentFolderContent || initState;
82
82
  const { items, totalItems } = images;
83
83
 
84
- const itemsPerPage = 10;
84
+ const itemsPerPage = 50;
85
85
  const firstPage = 1;
86
+ const lastPage = Math.ceil(totalItems / itemsPerPage);
86
87
  const [page, setPage] = useState(firstPage);
87
88
  const [isPanelOpen, setPanelOpen] = useState(false);
88
89
  const [fileSelected, setFileSelected] = useState<IImage | null>(null);
@@ -90,8 +91,13 @@ const MediaGallery = (props: IProps) => {
90
91
  const imagesIds: number[] = (items && items.map((image) => image.id)) || [];
91
92
  const [galleryItems, setGalleryItems] = useState<number[]>(imagesIds);
92
93
  const [galleryDelete, setGalleryDelete] = useState(true);
93
- const [progressItems, setProgressItems] = useState<number[]>([]);
94
+ const [progressItems, setProgressItems] = useState<IProgressState>({
95
+ tab: selectedTab,
96
+ folder: currentFolderID,
97
+ items: [],
98
+ });
94
99
  const [wrapperWidth, setWrapperWidth] = useState<number>();
100
+ const [isLoadingMore, setIsLoadingMore] = useState(false);
95
101
  const tableRef = useRef<HTMLDivElement>(null);
96
102
  const contentRef = useRef<HTMLDivElement>(null);
97
103
  const wrapperRef = useRef<HTMLDivElement>(null);
@@ -174,6 +180,7 @@ const MediaGallery = (props: IProps) => {
174
180
  return () => {
175
181
  updateCurrentFolder(null);
176
182
  updateTab("site");
183
+ setPage(firstPage);
177
184
  };
178
185
  // eslint-disable-next-line react-hooks/exhaustive-deps
179
186
  }, []);
@@ -182,6 +189,7 @@ const MediaGallery = (props: IProps) => {
182
189
  const handleGetContent = async () => {
183
190
  const params = getParams();
184
191
  await getFolderContent(params);
192
+ setIsLoadingMore(false);
185
193
  };
186
194
  const handleGetTree = async () => await getFoldersTree(siteID);
187
195
 
@@ -220,7 +228,13 @@ const MediaGallery = (props: IProps) => {
220
228
  const onScroll = () => {
221
229
  if (contentRef.current && isGrid) {
222
230
  const { scrollTop, scrollHeight, clientHeight } = contentRef.current;
223
- if (scrollTop + clientHeight === scrollHeight && items.length < totalItems) {
231
+ if (
232
+ scrollTop + clientHeight + 100 >= scrollHeight &&
233
+ items.length < totalItems &&
234
+ page < lastPage &&
235
+ !isLoadingMore
236
+ ) {
237
+ setIsLoadingMore(true);
224
238
  setPage((currentPage) => currentPage + 1);
225
239
  }
226
240
  }
@@ -257,6 +271,7 @@ const MediaGallery = (props: IProps) => {
257
271
 
258
272
  const handleBackClick = () => {
259
273
  const parentID = breadcrumb.length >= 2 ? breadcrumb[breadcrumb.length - 2].id : null;
274
+ setPage(firstPage);
260
275
  updateCurrentFolder(parentID);
261
276
  };
262
277
 
@@ -305,7 +320,10 @@ const MediaGallery = (props: IProps) => {
305
320
  let index = 0;
306
321
  while (files.length) {
307
322
  const handleProgress = (progress: number) => {
308
- setProgressItems((prevState) => [...prevState.slice(0, index), progress, ...prevState.slice(index + 1)]);
323
+ setProgressItems((prevState) => ({
324
+ ...prevState,
325
+ items: [...prevState.items.slice(0, index), progress, ...prevState.items.slice(index + 1)],
326
+ }));
309
327
  };
310
328
 
311
329
  const file = files.shift();
@@ -321,11 +339,15 @@ const MediaGallery = (props: IProps) => {
321
339
  isUploadOpen && toggleUploadModal();
322
340
 
323
341
  const initialProgress = files.map(() => 0);
324
- setProgressItems(initialProgress);
342
+ setProgressItems({ tab: selectedTab, folder: currentFolderID, items: initialProgress });
325
343
 
326
344
  await uploadMultipleFiles(files);
327
345
 
328
- setProgressItems([]);
346
+ setProgressItems((prevState) => ({ ...prevState, items: [] }));
347
+
348
+ updateTab(selectedTab);
349
+ updateCurrentFolder(currentFolderID);
350
+
329
351
  const params = getParams();
330
352
  await getFolderContent(params);
331
353
  };
@@ -348,7 +370,8 @@ const MediaGallery = (props: IProps) => {
348
370
 
349
371
  const handleDeleteFile = async (imageID: number) => {
350
372
  const params = getParams();
351
- const isDeleted = await deleteImage(imageID, params);
373
+ const resetedParams = { ...params, page: firstPage, infinite: false, loading: true };
374
+ const isDeleted = await deleteImage(imageID, resetedParams);
352
375
  if (isDeleted) {
353
376
  toggleToast("1 Image deleted");
354
377
  isOpen && handleCloseModal();
@@ -357,7 +380,8 @@ const MediaGallery = (props: IProps) => {
357
380
 
358
381
  const handleBulkDeleteFile = async () => {
359
382
  const params = getParams();
360
- const isDeleted = await deleteImage(selectedItems.all, params);
383
+ const resetedParams = { ...params, page: firstPage, infinite: false, loading: true };
384
+ const isDeleted = await deleteImage(selectedItems.all, resetedParams);
361
385
  if (isDeleted) {
362
386
  toggleToast(`${selectedItems.all.length} Image${selectedItems.all.length > 1 ? "s" : ""} deleted`);
363
387
  resetBulkSelection();
@@ -367,7 +391,8 @@ const MediaGallery = (props: IProps) => {
367
391
 
368
392
  const handleMoveImage = async (imageID: number, folderID: number | "root") => {
369
393
  const params = getParams();
370
- const isMoved = await moveImage(imageID, folderID, params);
394
+ const resetedParams = { ...params, page: firstPage, infinite: false, loading: true };
395
+ const isMoved = await moveImage(imageID, folderID, resetedParams);
371
396
  if (isMoved) {
372
397
  toggleToast("1 Image moved to a folder");
373
398
  }
@@ -375,7 +400,8 @@ const MediaGallery = (props: IProps) => {
375
400
 
376
401
  const handleBulkMoveFile = async () => {
377
402
  const params = getParams();
378
- const isMoved = await moveImage(selectedItems.all, selectedFolder || "root", params);
403
+ const resetedParams = { ...params, page: firstPage, infinite: false, loading: true };
404
+ const isMoved = await moveImage(selectedItems.all, selectedFolder || "root", resetedParams);
379
405
  if (isMoved) {
380
406
  toggleMoveModal();
381
407
  toggleToast(`${selectedItems.all.length} Image${selectedItems.all.length > 1 ? "s" : ""} moved to a folder`);
@@ -414,6 +440,7 @@ const MediaGallery = (props: IProps) => {
414
440
 
415
441
  const handleUpdateCurrentFolder = (folderID: number | null) => {
416
442
  setSearchQuery("");
443
+ setPage(firstPage);
417
444
  updateCurrentFolder(folderID);
418
445
  };
419
446
 
@@ -480,11 +507,14 @@ const MediaGallery = (props: IProps) => {
480
507
  />
481
508
  );
482
509
 
510
+ const isCurrentUploadingFolder = progressItems.tab === selectedTab && progressItems.folder === currentFolderID;
511
+
483
512
  const gridList = (
484
513
  <S.GridWrapper>
485
- {progressItems.map((progress: number, index: number) => (
486
- <UploadItem uploadPercentage={progress} grid={true} key={index} />
487
- ))}
514
+ {isCurrentUploadingFolder &&
515
+ progressItems.items.map((progress: number, index: number) => (
516
+ <UploadItem uploadPercentage={progress} grid={true} key={index} />
517
+ ))}
488
518
  {items &&
489
519
  items.map((image: IImage) => {
490
520
  const isItemSelected = isSelected(image.id);
@@ -523,9 +553,10 @@ const MediaGallery = (props: IProps) => {
523
553
  className="no-padding"
524
554
  >
525
555
  <>
526
- {progressItems.map((progress: number, index: number) => (
527
- <UploadItem uploadPercentage={progress} grid={false} key={index} />
528
- ))}
556
+ {isCurrentUploadingFolder &&
557
+ progressItems.items.map((progress: number, index: number) => (
558
+ <UploadItem uploadPercentage={progress} grid={false} key={index} />
559
+ ))}
529
560
  {items &&
530
561
  items.map((image: IImage) => {
531
562
  const isItemSelected = isSelected(image.id);
@@ -734,8 +765,10 @@ const MediaGallery = (props: IProps) => {
734
765
  )}
735
766
  {!hasFolders && isRoot && !isSearching && <NewFolderButton />}
736
767
  </S.SectionHeader>
737
- {totalItems > 0 && <S.DocumentsWrapper>{isGrid ? gridList : listTable}</S.DocumentsWrapper>}
738
- {totalItems === 0 && !hasFolders && (
768
+ {(totalItems > 0 || progressItems.items.length > 0) && (
769
+ <S.DocumentsWrapper>{isGrid ? gridList : listTable}</S.DocumentsWrapper>
770
+ )}
771
+ {totalItems === 0 && progressItems.items.length == 0 && !hasFolders && (
739
772
  <S.EmptyStateWrapper data-testid="empty-state" margin={!isRoot}>
740
773
  {isSearching && <EmptyState {...emptySearchStateProps} />}
741
774
  {!isSearching && isRoot && <EmptyState {...emptyProps} />}
@@ -862,6 +895,12 @@ export interface IImageFormState {
862
895
  tags: string[];
863
896
  }
864
897
 
898
+ interface IProgressState {
899
+ tab: "global" | "site";
900
+ folder: number | null;
901
+ items: number[];
902
+ }
903
+
865
904
  const mapDispatchToProps = {
866
905
  getSiteImages: galleryActions.getSiteImages,
867
906
  getFolderContent: galleryActions.getFolderContent,