@tecsinapse/cortex-react 1.15.0-beta.9 → 1.15.1

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.
Files changed (84) hide show
  1. package/dist/cjs/components/Calendar/Calendar.js +1 -0
  2. package/dist/cjs/components/Calendar/CalendarCell.js +4 -0
  3. package/dist/cjs/components/Calendar/CalendarGrid.js +1 -0
  4. package/dist/cjs/components/Calendar/RangeCalendar.js +1 -0
  5. package/dist/cjs/components/DatePicker/DatePickerInput.js +1 -0
  6. package/dist/cjs/components/DatePicker/DateRangePickerInput.js +1 -0
  7. package/dist/cjs/components/Input/Mask.js +1 -0
  8. package/dist/cjs/components/Input/Search.js +1 -0
  9. package/dist/cjs/components/Menubar/Categories.js +1 -0
  10. package/dist/cjs/components/Menubar/Dropdown.js +1 -0
  11. package/dist/cjs/components/Menubar/Header.js +1 -0
  12. package/dist/cjs/components/Menubar/Item.js +1 -0
  13. package/dist/cjs/components/Menubar/MostUsed.js +1 -0
  14. package/dist/cjs/components/Menubar/Root.js +1 -0
  15. package/dist/cjs/components/Menubar/Search.js +1 -0
  16. package/dist/cjs/components/Menubar/SubItem.js +1 -0
  17. package/dist/cjs/components/Popover/Provider.js +1 -0
  18. package/dist/cjs/components/Select/GroupedOptions.js +1 -0
  19. package/dist/cjs/components/Select/MultiGroupedOptions.js +1 -0
  20. package/dist/cjs/components/Select/MultiOption.js +1 -1
  21. package/dist/cjs/components/Select/MultiOptions.js +1 -0
  22. package/dist/cjs/components/Select/Options.js +1 -0
  23. package/dist/cjs/components/Select/Trigger.js +1 -1
  24. package/dist/cjs/components/TimePicker/TimePickerInput.js +1 -0
  25. package/dist/cjs/components/Tooltip.js +1 -0
  26. package/dist/cjs/components/Uploader/Dropzone.js +23 -7
  27. package/dist/cjs/components/Uploader/Manager.js +17 -5
  28. package/dist/cjs/components/Uploader/Root.js +10 -14
  29. package/dist/cjs/components/Uploader/Upload.js +19 -9
  30. package/dist/cjs/hooks/useCalendarCell.js +1 -0
  31. package/dist/cjs/hooks/useFileUpload.js +42 -19
  32. package/dist/cjs/hooks/useManagerHelpers.js +34 -0
  33. package/dist/cjs/index.js +3 -0
  34. package/dist/cjs/provider/ManagerContext.js +125 -0
  35. package/dist/cjs/provider/MenubarProvider.js +1 -0
  36. package/dist/esm/components/Calendar/Calendar.js +1 -0
  37. package/dist/esm/components/Calendar/CalendarCell.js +4 -0
  38. package/dist/esm/components/Calendar/CalendarGrid.js +1 -0
  39. package/dist/esm/components/Calendar/RangeCalendar.js +1 -0
  40. package/dist/esm/components/DatePicker/DatePickerInput.js +1 -0
  41. package/dist/esm/components/DatePicker/DateRangePickerInput.js +1 -0
  42. package/dist/esm/components/Input/Mask.js +1 -0
  43. package/dist/esm/components/Input/Search.js +1 -0
  44. package/dist/esm/components/Menubar/Categories.js +1 -0
  45. package/dist/esm/components/Menubar/Dropdown.js +1 -0
  46. package/dist/esm/components/Menubar/Header.js +1 -0
  47. package/dist/esm/components/Menubar/Item.js +1 -0
  48. package/dist/esm/components/Menubar/MostUsed.js +1 -0
  49. package/dist/esm/components/Menubar/Root.js +1 -0
  50. package/dist/esm/components/Menubar/Search.js +1 -0
  51. package/dist/esm/components/Menubar/SubItem.js +1 -0
  52. package/dist/esm/components/Popover/Provider.js +1 -0
  53. package/dist/esm/components/Select/GroupedOptions.js +1 -0
  54. package/dist/esm/components/Select/MultiGroupedOptions.js +1 -0
  55. package/dist/esm/components/Select/MultiOption.js +1 -1
  56. package/dist/esm/components/Select/MultiOptions.js +1 -0
  57. package/dist/esm/components/Select/Options.js +1 -0
  58. package/dist/esm/components/Select/Trigger.js +1 -1
  59. package/dist/esm/components/TimePicker/TimePickerInput.js +1 -0
  60. package/dist/esm/components/Tooltip.js +1 -0
  61. package/dist/esm/components/Uploader/Dropzone.js +23 -7
  62. package/dist/esm/components/Uploader/Manager.js +17 -5
  63. package/dist/esm/components/Uploader/Root.js +11 -15
  64. package/dist/esm/components/Uploader/Upload.js +20 -10
  65. package/dist/esm/hooks/useCalendarCell.js +1 -0
  66. package/dist/esm/hooks/useFileUpload.js +43 -20
  67. package/dist/esm/hooks/useManagerHelpers.js +32 -0
  68. package/dist/esm/index.js +1 -0
  69. package/dist/esm/provider/ManagerContext.js +122 -0
  70. package/dist/esm/provider/MenubarProvider.js +1 -0
  71. package/dist/types/components/Uploader/Dropzone.d.ts +1 -1
  72. package/dist/types/components/Uploader/Manager.d.ts +1 -1
  73. package/dist/types/components/Uploader/Root.d.ts +1 -1
  74. package/dist/types/components/Uploader/Upload.d.ts +1 -1
  75. package/dist/types/components/Uploader/index.d.ts +3 -3
  76. package/dist/types/components/Uploader/types.d.ts +15 -8
  77. package/dist/types/hooks/useFileUpload.d.ts +8 -4
  78. package/dist/types/hooks/useManagerHelpers.d.ts +15 -0
  79. package/dist/types/provider/ManagerContext.d.ts +20 -0
  80. package/dist/types/provider/index.d.ts +1 -0
  81. package/package.json +3 -3
  82. package/dist/cjs/hooks/useManager.js +0 -23
  83. package/dist/esm/hooks/useManager.js +0 -21
  84. package/dist/types/hooks/useManager.d.ts +0 -9
@@ -1,23 +1,44 @@
1
- import { useState, useCallback } from 'react';
1
+ import { useState, useCallback, useEffect } from 'react';
2
2
  import { useDropzone } from 'react-dropzone';
3
3
  import { v4 } from 'uuid';
4
4
  import { FileStatus, AcceptSpecificMap } from '../components/Uploader/types.js';
5
+ import 'react/jsx-runtime';
6
+ import '@internationalized/date';
7
+ import 'react-aria';
8
+ import 'react-stately';
9
+ import '../components/Popover/Context.js';
10
+ import '@floating-ui/react';
11
+ import 'currency.js';
12
+ import '../provider/MenubarContext.js';
13
+ import '../provider/SnackbarProvider.js';
14
+ import '../provider/CalendarProvider.js';
15
+ import { useManager } from '../provider/ManagerContext.js';
5
16
 
6
17
  const useFileUpload = ({
7
18
  accept = {},
8
19
  onAccept,
20
+ onOpenManager,
9
21
  onFileRejected,
10
22
  maxSize,
11
23
  allowMultiple = true,
12
24
  preventDuplicates = false,
13
25
  onDuplicate,
14
26
  hasManager = true,
15
- isFolder = false
27
+ isFolder = false,
28
+ noClick = false,
29
+ ignoreRejections = false,
30
+ uploadProgressText
16
31
  }) => {
17
- const [files, setFiles] = useState([]);
32
+ const {
33
+ showManager,
34
+ files,
35
+ setFiles,
36
+ isOpen: isManagerOpen,
37
+ setIsOpen: setIsManagerOpen,
38
+ uploadFiles
39
+ } = useManager();
18
40
  const [duplicates, setDuplicates] = useState([]);
19
41
  const [isOpen, setIsOpen] = useState(false);
20
- const [isManagerOpen, setIsManagerOpen] = useState(false);
21
42
  const onOpen = useCallback(() => setIsOpen(true), []);
22
43
  const onClose = useCallback(() => setIsOpen(false), []);
23
44
  const handleRemoveFile = useCallback((index) => {
@@ -26,7 +47,10 @@ const useFileUpload = ({
26
47
  const handleClearFiles = useCallback(() => {
27
48
  setFiles([]);
28
49
  }, []);
29
- const openManager = useCallback(() => setIsManagerOpen(true), []);
50
+ const openManager = useCallback(() => {
51
+ setIsManagerOpen(true);
52
+ onOpenManager?.();
53
+ }, []);
30
54
  const closeManager = useCallback(() => {
31
55
  handleClearFiles();
32
56
  setIsManagerOpen(false);
@@ -39,7 +63,8 @@ const useFileUpload = ({
39
63
  },
40
64
  []
41
65
  );
42
- const onDrop = async (acceptedFiles) => {
66
+ const onDrop = async (acceptedFiles, fileRejections) => {
67
+ if (fileRejections.length > 0 && !ignoreRejections) return;
43
68
  if (hasManager) {
44
69
  openManager();
45
70
  onClose();
@@ -64,20 +89,17 @@ const useFileUpload = ({
64
89
  uid: v4(),
65
90
  isFolder
66
91
  }));
67
- try {
68
- setFiles((prevFiles) => [...prevFiles, ...newFiles]);
69
- if (onAccept) {
70
- const updatedFiles = await onAccept(newFiles);
71
- setFiles((prevFiles) => updateFiles(prevFiles, updatedFiles));
72
- }
73
- } catch (e) {
74
- const updatedFiles = newFiles.map((f) => ({
75
- ...f,
76
- status: FileStatus.ERROR
77
- }));
78
- setFiles((prevFiles) => updateFiles(prevFiles, updatedFiles));
79
- }
92
+ uploadFiles({ onAccept, newFiles, updateFiles });
80
93
  };
94
+ useEffect(() => {
95
+ if (hasManager) {
96
+ showManager?.({
97
+ onClose: closeManager,
98
+ onDelete: handleRemoveFile,
99
+ uploadProgressText
100
+ });
101
+ }
102
+ }, [handleRemoveFile, closeManager]);
81
103
  const addMimeTypes = (key, acc) => {
82
104
  AcceptSpecificMap[key].forEach((mimeType) => {
83
105
  acc[mimeType] = [];
@@ -99,7 +121,8 @@ const useFileUpload = ({
99
121
  accept: mappedAccept,
100
122
  multiple: allowMultiple,
101
123
  maxSize,
102
- onDropRejected: onFileRejected
124
+ onDropRejected: onFileRejected,
125
+ noClick
103
126
  });
104
127
  const isFileLimitReached = !allowMultiple && files.length > 0;
105
128
  return {
@@ -0,0 +1,32 @@
1
+ import { useState, useMemo } from 'react';
2
+
3
+ const useManagerHelpers = ({
4
+ files
5
+ }) => {
6
+ const [min, setMin] = useState(false);
7
+ const [folders, setFolders] = useState();
8
+ const folderFiles = useMemo(
9
+ () => files?.filter((file) => file.isFolder) ?? [],
10
+ [files]
11
+ );
12
+ const regularFiles = useMemo(
13
+ () => files?.filter((file) => !file.isFolder) ?? [],
14
+ [files]
15
+ );
16
+ const totalLength = (regularFiles ?? []).length + (folders ?? []).length;
17
+ const isLoading = useMemo(
18
+ () => files?.some((file) => file.status === "uploading"),
19
+ [files]
20
+ );
21
+ return {
22
+ min,
23
+ setMin,
24
+ folderFiles,
25
+ regularFiles,
26
+ totalLength,
27
+ setFolders,
28
+ isLoading
29
+ };
30
+ };
31
+
32
+ export { useManagerHelpers };
package/dist/esm/index.js CHANGED
@@ -65,6 +65,7 @@ export { SnackbarProvider, useSnackbar } from './provider/SnackbarProvider.js';
65
65
  export { MenubarContext } from './provider/MenubarContext.js';
66
66
  export { useMenubar } from './provider/useMenubar.js';
67
67
  export { CalendarProvider, useCalendarContext } from './provider/CalendarProvider.js';
68
+ export { ManagerProvider, useManager } from './provider/ManagerContext.js';
68
69
  export { Context, useAccordionContext } from './components/Accordion/context.js';
69
70
  export { BRLMask, CurrencyIMask, ExpressionMasks, Masks, NumberIMask, PercentageIMask, PercentageMask } from './components/Input/masks.js';
70
71
  export { Root } from './components/Uploader/Root.js';
@@ -0,0 +1,122 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { createContext, useState, useContext } from 'react';
3
+ import { Manager } from '../components/Uploader/Manager.js';
4
+ import 'clsx';
5
+ import '../components/Accordion/context.js';
6
+ import 'react-icons/lia';
7
+ import '@internationalized/date';
8
+ import '../components/Badge.js';
9
+ import 'react-icons/md';
10
+ import '../components/Card.js';
11
+ import '../components/Button.js';
12
+ import 'react-aria';
13
+ import 'react-stately';
14
+ import './MenubarContext.js';
15
+ import './SnackbarProvider.js';
16
+ import './CalendarProvider.js';
17
+ import '../components/Popover/Context.js';
18
+ import 'react-dropzone';
19
+ import 'uuid';
20
+ import { FileStatus } from '../components/Uploader/types.js';
21
+ import '@floating-ui/react';
22
+ import 'currency.js';
23
+ import '../components/Calendar/CalendarCell.js';
24
+ import '@tecsinapse/cortex-core';
25
+ import 'react-icons/fa';
26
+ import 'react-icons/io';
27
+ import 'embla-carousel-react';
28
+ import 'embla-carousel-autoplay';
29
+ import '../components/Checkbox.js';
30
+ import '../components/ColorPicker.js';
31
+ import '../components/DatePicker/DateSegment.js';
32
+ import '../components/DatePicker/DatePickerInputBase.js';
33
+ import '../components/GroupButton.js';
34
+ import '../components/Hint.js';
35
+ import '../components/Input/Box.js';
36
+ import '../components/Input/Face.js';
37
+ import '../components/Input/Left.js';
38
+ import '../components/Input/Mask.js';
39
+ import '../components/Input/Right.js';
40
+ import '../components/Input/Root.js';
41
+ import '../components/Input/Search.js';
42
+ import '../components/Menubar/Left.js';
43
+ import '../styles/menubar.js';
44
+ import '../components/Menubar/Right.js';
45
+ import '../components/Menubar/Dropdown.js';
46
+ import '../components/Menubar/MostUsed.js';
47
+ import '../components/Menubar/MostUsedItem.js';
48
+ import '../components/Menubar/Header.js';
49
+ import '../components/Menubar/Item.js';
50
+ import './CategoriesContext.js';
51
+ import '../components/Menubar/SubItem.js';
52
+ import '../components/Modal.js';
53
+ import '../components/ProgressBar/Progress.js';
54
+ import '../components/RadioButton.js';
55
+ import '../components/Select/GroupedOptions.js';
56
+ import '../components/Select/context.js';
57
+ import '../components/Select/MultiGroupedOptions.js';
58
+ import '../components/Select/MultiOptions.js';
59
+ import '../components/Select/Options.js';
60
+ import '../components/Select/Trigger.js';
61
+ import '../components/Snackbar/BaseSnackbar.js';
62
+ import '../styles/stepNodeVariants.js';
63
+ import '../components/Tag.js';
64
+ import '../components/TextArea/Box.js';
65
+ import '../components/TextArea/Face.js';
66
+ import '../components/TextArea/Left.js';
67
+ import '../components/TextArea/Right.js';
68
+ import '../components/TextArea/Root.js';
69
+ import '../components/TimePicker/TimeFieldInput.js';
70
+ import '../components/Toggle.js';
71
+ import '../components/Tooltip.js';
72
+ import 'react-icons/hi2';
73
+ import 'react-icons/fa6';
74
+ import 'react-dom';
75
+
76
+ const ManagerContext = createContext(null);
77
+ const ManagerProvider = ({ children }) => {
78
+ const [props, setProps] = useState({});
79
+ const [files, setFiles] = useState([]);
80
+ const [isOpen, setIsOpen] = useState(false);
81
+ const uploadFiles = async ({
82
+ onAccept,
83
+ newFiles,
84
+ updateFiles
85
+ }) => {
86
+ try {
87
+ setFiles((prevFiles) => [...prevFiles, ...newFiles]);
88
+ if (onAccept) {
89
+ const updatedFiles = await onAccept(newFiles);
90
+ setFiles((prevFiles) => updateFiles(prevFiles, updatedFiles));
91
+ }
92
+ } catch (e) {
93
+ const updatedFiles = newFiles.map((f) => ({
94
+ ...f,
95
+ status: FileStatus.ERROR
96
+ }));
97
+ setFiles((prevFiles) => updateFiles(prevFiles, updatedFiles));
98
+ }
99
+ };
100
+ const showManager = (_props) => {
101
+ setProps(_props);
102
+ };
103
+ return /* @__PURE__ */ jsxs(
104
+ ManagerContext.Provider,
105
+ {
106
+ value: { showManager, files, setFiles, isOpen, setIsOpen, uploadFiles },
107
+ children: [
108
+ children,
109
+ /* @__PURE__ */ jsx(Manager, { files, open: isOpen, ...props })
110
+ ]
111
+ }
112
+ );
113
+ };
114
+ const useManager = () => {
115
+ const context = useContext(ManagerContext);
116
+ if (!context) {
117
+ throw new Error("useManager must be used within a ManagerProvider");
118
+ }
119
+ return context;
120
+ };
121
+
122
+ export { ManagerProvider, useManager };
@@ -6,6 +6,7 @@ import 'react-stately';
6
6
  import { MenubarContext } from './MenubarContext.js';
7
7
  import './SnackbarProvider.js';
8
8
  import './CalendarProvider.js';
9
+ import './ManagerContext.js';
9
10
  import '../components/Popover/Context.js';
10
11
  import 'react-dropzone';
11
12
  import 'uuid';
@@ -1,2 +1,2 @@
1
1
  import { DropzoneProps } from './types';
2
- export declare const Dropzone: ({ dropzoneProps, selectFileText, dropText, buttonText, }: DropzoneProps) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const Dropzone: ({ dropzoneProps, selectFileText, dropText, buttonText, hasButton, }: DropzoneProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,2 +1,2 @@
1
1
  import { ManagerProps } from './types';
2
- export declare const Manager: <T>({ open, files, onDelete, uploadProgressText, onClose, }: ManagerProps<T>) => any;
2
+ export declare const Manager: <T>({ open, files, onDelete, uploadProgressText, uploadSuccessText, onClose, }: ManagerProps<T>) => any;
@@ -1,2 +1,2 @@
1
1
  import { RootUploaderProps } from './types';
2
- export declare const Root: <T>({ open, onClose, files, onDelete, dropzoneProps, selectFileText, dropText, buttonText, uploadProgressText, titleModal, isManagerOpen, closeManager, }: RootUploaderProps<T>) => import("react/jsx-runtime").JSX.Element;
2
+ export declare const Root: <T>({ open, onClose, dropzoneProps, selectFileText, dropText, buttonText, titleModal, onDelete, uploadProgressText, files, }: RootUploaderProps<T>) => import("react/jsx-runtime").JSX.Element;
@@ -1,4 +1,4 @@
1
1
  import { FileProps, FolderListProps, FolderProps } from './types';
2
2
  export declare const File: <T>({ file, index, onDelete, showDelete, }: FileProps<T>) => import("react/jsx-runtime").JSX.Element;
3
3
  export declare const Folder: ({ name, subItems }: FolderProps) => import("react/jsx-runtime").JSX.Element;
4
- export declare const FolderList: <T>({ files }: FolderListProps<T>) => import("react/jsx-runtime").JSX.Element;
4
+ export declare const FolderList: <T>({ files, setFolders }: FolderListProps<T>) => import("react/jsx-runtime").JSX.Element;
@@ -1,9 +1,9 @@
1
1
  export * from './Root';
2
2
  export * from './types';
3
3
  export declare const Uploader: {
4
- Dropzone: ({ dropzoneProps, selectFileText, dropText, buttonText, }: import("./types").DropzoneProps) => import("react/jsx-runtime").JSX.Element;
4
+ Dropzone: ({ dropzoneProps, selectFileText, dropText, buttonText, hasButton, }: import("./types").DropzoneProps) => import("react/jsx-runtime").JSX.Element;
5
5
  Files: <T>({ files, onDelete, uploadProgressText, }: import("./types").FilesProps<T>) => import("react/jsx-runtime").JSX.Element;
6
6
  Modal: ({ open, onClose, children, title, }: import("./types").ModalProps) => any;
7
- Root: <T>({ open, onClose, files, onDelete, dropzoneProps, selectFileText, dropText, buttonText, uploadProgressText, titleModal, isManagerOpen, closeManager, }: import("./types").RootUploaderProps<T>) => import("react/jsx-runtime").JSX.Element;
8
- Manager: <T>({ open, files, onDelete, uploadProgressText, onClose, }: import("./types").ManagerProps<T>) => any;
7
+ Root: <T>({ open, onClose, dropzoneProps, selectFileText, dropText, buttonText, titleModal, onDelete, uploadProgressText, files, }: import("./types").RootUploaderProps<T>) => import("react/jsx-runtime").JSX.Element;
8
+ Manager: <T>({ open, files, onDelete, uploadProgressText, uploadSuccessText, onClose, }: import("./types").ManagerProps<T>) => any;
9
9
  };
@@ -12,7 +12,7 @@ export interface FileItem {
12
12
  export interface FileProps<T> {
13
13
  file: FileUpload<T>;
14
14
  index: number;
15
- onDelete: (index: number) => void;
15
+ onDelete?: (index: number) => void;
16
16
  showDelete?: boolean;
17
17
  }
18
18
  export interface FolderProps {
@@ -24,6 +24,13 @@ export interface FolderProps {
24
24
  }
25
25
  export interface FolderListProps<T> {
26
26
  files: FileUpload<T>[];
27
+ setFolders: React.Dispatch<React.SetStateAction<[
28
+ string,
29
+ {
30
+ status: string;
31
+ path: string;
32
+ }[]
33
+ ][] | undefined>>;
27
34
  }
28
35
  export interface FilesProps<T> {
29
36
  files: FileUpload<T>[];
@@ -35,6 +42,7 @@ export interface UseDropzoneProps {
35
42
  getInputProps: <T extends DropzoneInputProps>(props?: T) => T;
36
43
  isDragActive: boolean;
37
44
  isFileLimitReached: boolean;
45
+ fileRejections: FileRejection[];
38
46
  }
39
47
  export interface DropzoneProps {
40
48
  dropzoneProps: UseDropzoneProps;
@@ -42,6 +50,7 @@ export interface DropzoneProps {
42
50
  dropText?: string;
43
51
  buttonText?: string;
44
52
  isFileLimitReached?: boolean;
53
+ hasButton?: boolean;
45
54
  }
46
55
  export interface ModalProps {
47
56
  open: boolean;
@@ -64,8 +73,6 @@ export type FileUpload<T> = {
64
73
  export interface RootUploaderProps<T> {
65
74
  open: boolean;
66
75
  onClose: () => void;
67
- isManagerOpen: boolean;
68
- closeManager: () => void;
69
76
  files: FileUpload<T>[];
70
77
  onDelete: (index: number) => void;
71
78
  dropzoneProps: UseDropzoneProps;
@@ -76,12 +83,12 @@ export interface RootUploaderProps<T> {
76
83
  titleModal?: string;
77
84
  }
78
85
  export interface ManagerProps<T> {
79
- open: boolean;
80
- files: FileUpload<T>[];
81
- onDelete: (index: number) => void;
86
+ open?: boolean;
87
+ files?: FileUpload<T>[];
88
+ onDelete?: (index: number) => void;
82
89
  uploadProgressText?: string;
83
- onClose: () => void;
84
- type?: 'file' | 'folder';
90
+ uploadSuccessText?: string;
91
+ onClose?: () => void;
85
92
  }
86
93
  export declare const AcceptSpecificMap: {
87
94
  readonly APPLICATION: readonly ["application/pdf", "application/zip", "application/msword", "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "application/vnd.ms-excel", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "application/vnd.ms-powerpoint", "application/vnd.openxmlformats-officedocument.presentationml.presentation", "application/x-rar-compressed", "application/x-7z-compressed", "application/json", "application/xml", "application/rtf", "application/x-tar", "application/x-httpd-php", "application/octet-stream"];
@@ -1,6 +1,6 @@
1
1
  import { type DropEvent, type FileRejection } from 'react-dropzone';
2
2
  import { AcceptSpecificMap, UseDropzoneProps, type FileUpload } from '../components/Uploader/types';
3
- interface UseFileUploadOptions<T> {
3
+ interface UseFileUploadOptions {
4
4
  accept?: {
5
5
  IMAGE?: (typeof AcceptSpecificMap.IMAGE)[number][];
6
6
  APPLICATION?: (typeof AcceptSpecificMap.APPLICATION)[number][];
@@ -8,7 +8,8 @@ interface UseFileUploadOptions<T> {
8
8
  VIDEO?: (typeof AcceptSpecificMap.VIDEO)[number][];
9
9
  TEXT?: (typeof AcceptSpecificMap.TEXT)[number][];
10
10
  };
11
- onAccept?: (files: FileUpload<T>[]) => Promise<FileUpload<T>[]>;
11
+ onAccept?: (files: FileUpload<unknown>[]) => Promise<FileUpload<unknown>[]>;
12
+ onOpenManager?: () => void;
12
13
  onFileRejected?: (fileRejections: FileRejection[], event: DropEvent) => void;
13
14
  maxSize?: number;
14
15
  allowMultiple?: boolean;
@@ -16,8 +17,11 @@ interface UseFileUploadOptions<T> {
16
17
  onDuplicate?: (duplicates: File[]) => void;
17
18
  hasManager?: boolean;
18
19
  isFolder?: boolean;
20
+ uploadProgressText?: string;
21
+ noClick?: boolean;
22
+ ignoreRejections?: boolean;
19
23
  }
20
- export declare const useFileUpload: <T>({ accept, onAccept, onFileRejected, maxSize, allowMultiple, preventDuplicates, onDuplicate, hasManager, isFolder, }: UseFileUploadOptions<T>) => {
24
+ export declare const useFileUpload: <T>({ accept, onAccept, onOpenManager, onFileRejected, maxSize, allowMultiple, preventDuplicates, onDuplicate, hasManager, isFolder, noClick, ignoreRejections, uploadProgressText, }: UseFileUploadOptions) => {
21
25
  onOpen: () => void;
22
26
  onClose: () => void;
23
27
  onDelete: (index: number) => void;
@@ -26,7 +30,7 @@ export declare const useFileUpload: <T>({ accept, onAccept, onFileRejected, maxS
26
30
  openManager: () => void;
27
31
  closeManager: () => void;
28
32
  isManagerOpen: boolean;
29
- files: FileUpload<T>[];
33
+ files: FileUpload<unknown>[];
30
34
  duplicates: File[];
31
35
  onClearFiles: () => void;
32
36
  };
@@ -0,0 +1,15 @@
1
+ import { FileUpload } from '../components';
2
+ export declare const useManagerHelpers: <T>({ files, }: {
3
+ files?: FileUpload<T>[];
4
+ }) => {
5
+ min: boolean;
6
+ setMin: import("react").Dispatch<import("react").SetStateAction<boolean>>;
7
+ folderFiles: FileUpload<T>[];
8
+ regularFiles: FileUpload<T>[];
9
+ totalLength: number;
10
+ setFolders: import("react").Dispatch<import("react").SetStateAction<[string, {
11
+ status: string;
12
+ path: string;
13
+ }[]][] | undefined>>;
14
+ isLoading: boolean | undefined;
15
+ };
@@ -0,0 +1,20 @@
1
+ import { ReactNode } from 'react';
2
+ import { FileUpload, ManagerProps } from '../components';
3
+ interface UploadFilesProps<T> {
4
+ onAccept?: (files: FileUpload<T>[]) => Promise<FileUpload<T>[]>;
5
+ newFiles: FileUpload<T>[];
6
+ updateFiles: (prevFiles: FileUpload<unknown>[], newFiles: FileUpload<T>[]) => FileUpload<T>[];
7
+ }
8
+ interface ManagerContextProps<T> {
9
+ showManager: (props: ManagerProps<T>) => void;
10
+ files: FileUpload<T>[];
11
+ setFiles: React.Dispatch<React.SetStateAction<FileUpload<T>[]>>;
12
+ isOpen: boolean;
13
+ setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;
14
+ uploadFiles: (props: UploadFilesProps<T>) => void;
15
+ }
16
+ export declare const ManagerProvider: ({ children }: {
17
+ children: ReactNode;
18
+ }) => import("react/jsx-runtime").JSX.Element;
19
+ export declare const useManager: () => ManagerContextProps<unknown>;
20
+ export {};
@@ -3,3 +3,4 @@ export * from './SnackbarProvider';
3
3
  export * from './MenubarContext';
4
4
  export * from './useMenubar';
5
5
  export * from './CalendarProvider';
6
+ export * from './ManagerContext';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tecsinapse/cortex-react",
3
- "version": "1.15.0-beta.9",
3
+ "version": "1.15.1",
4
4
  "description": "React components based in @tecsinapse/cortex-core",
5
5
  "license": "MIT",
6
6
  "main": "dist/esm/index.js",
@@ -20,7 +20,7 @@
20
20
  "dependencies": {
21
21
  "@floating-ui/react": "^0.26.18",
22
22
  "@internationalized/date": "3.7.0",
23
- "@tecsinapse/cortex-core": "1.2.0-beta.6",
23
+ "@tecsinapse/cortex-core": "1.2.0",
24
24
  "clsx": "2.1.1",
25
25
  "currency.js": "2.0.4",
26
26
  "embla-carousel-autoplay": "^8.0.0",
@@ -48,5 +48,5 @@
48
48
  "react-icons": ">=5.2.0",
49
49
  "tailwind": ">=3.3.0"
50
50
  },
51
- "gitHead": "7ddfc6577ee756d2a3c4906fc41cbc2e5c0418bb"
51
+ "gitHead": "d3f90898df0e766db23787a5bc5403294cffd5a4"
52
52
  }
@@ -1,23 +0,0 @@
1
- 'use strict';
2
-
3
- var React = require('react');
4
-
5
- const useManager = ({ files }) => {
6
- const [min, setMin] = React.useState(false);
7
- const folderFiles = React.useMemo(
8
- () => files.filter((file) => file.isFolder),
9
- [files]
10
- );
11
- const regularFiles = React.useMemo(
12
- () => files.filter((file) => !file.isFolder),
13
- [files]
14
- );
15
- return {
16
- min,
17
- setMin,
18
- folderFiles,
19
- regularFiles
20
- };
21
- };
22
-
23
- exports.useManager = useManager;
@@ -1,21 +0,0 @@
1
- import { useState, useMemo } from 'react';
2
-
3
- const useManager = ({ files }) => {
4
- const [min, setMin] = useState(false);
5
- const folderFiles = useMemo(
6
- () => files.filter((file) => file.isFolder),
7
- [files]
8
- );
9
- const regularFiles = useMemo(
10
- () => files.filter((file) => !file.isFolder),
11
- [files]
12
- );
13
- return {
14
- min,
15
- setMin,
16
- folderFiles,
17
- regularFiles
18
- };
19
- };
20
-
21
- export { useManager };
@@ -1,9 +0,0 @@
1
- import { FileUpload } from '../components';
2
- export declare const useManager: <T>({ files }: {
3
- files: FileUpload<T>[];
4
- }) => {
5
- min: boolean;
6
- setMin: import("react").Dispatch<import("react").SetStateAction<boolean>>;
7
- folderFiles: FileUpload<T>[];
8
- regularFiles: FileUpload<T>[];
9
- };