@tecsinapse/cortex-react 1.15.0-beta.9 → 1.15.1-beta.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.
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 +44 -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 +45 -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 +9 -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,45 @@
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,
31
+ uploadSuccessText
16
32
  }) => {
17
- const [files, setFiles] = useState([]);
33
+ const {
34
+ showManager,
35
+ files,
36
+ setFiles,
37
+ isOpen: isManagerOpen,
38
+ setIsOpen: setIsManagerOpen,
39
+ uploadFiles
40
+ } = useManager();
18
41
  const [duplicates, setDuplicates] = useState([]);
19
42
  const [isOpen, setIsOpen] = useState(false);
20
- const [isManagerOpen, setIsManagerOpen] = useState(false);
21
43
  const onOpen = useCallback(() => setIsOpen(true), []);
22
44
  const onClose = useCallback(() => setIsOpen(false), []);
23
45
  const handleRemoveFile = useCallback((index) => {
@@ -26,7 +48,10 @@ const useFileUpload = ({
26
48
  const handleClearFiles = useCallback(() => {
27
49
  setFiles([]);
28
50
  }, []);
29
- const openManager = useCallback(() => setIsManagerOpen(true), []);
51
+ const openManager = useCallback(() => {
52
+ setIsManagerOpen(true);
53
+ onOpenManager?.();
54
+ }, []);
30
55
  const closeManager = useCallback(() => {
31
56
  handleClearFiles();
32
57
  setIsManagerOpen(false);
@@ -39,7 +64,8 @@ const useFileUpload = ({
39
64
  },
40
65
  []
41
66
  );
42
- const onDrop = async (acceptedFiles) => {
67
+ const onDrop = async (acceptedFiles, fileRejections) => {
68
+ if (fileRejections.length > 0 && !ignoreRejections) return;
43
69
  if (hasManager) {
44
70
  openManager();
45
71
  onClose();
@@ -64,20 +90,18 @@ const useFileUpload = ({
64
90
  uid: v4(),
65
91
  isFolder
66
92
  }));
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
- }
93
+ uploadFiles({ onAccept, newFiles, updateFiles });
80
94
  };
95
+ useEffect(() => {
96
+ if (hasManager) {
97
+ showManager?.({
98
+ onClose: closeManager,
99
+ onDelete: handleRemoveFile,
100
+ uploadProgressText,
101
+ uploadSuccessText
102
+ });
103
+ }
104
+ }, [handleRemoveFile, closeManager]);
81
105
  const addMimeTypes = (key, acc) => {
82
106
  AcceptSpecificMap[key].forEach((mimeType) => {
83
107
  acc[mimeType] = [];
@@ -99,7 +123,8 @@ const useFileUpload = ({
99
123
  accept: mappedAccept,
100
124
  multiple: allowMultiple,
101
125
  maxSize,
102
- onDropRejected: onFileRejected
126
+ onDropRejected: onFileRejected,
127
+ noClick
103
128
  });
104
129
  const isFileLimitReached = !allowMultiple && files.length > 0;
105
130
  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,12 @@ interface UseFileUploadOptions<T> {
16
17
  onDuplicate?: (duplicates: File[]) => void;
17
18
  hasManager?: boolean;
18
19
  isFolder?: boolean;
20
+ uploadProgressText?: string;
21
+ uploadSuccessText?: string;
22
+ noClick?: boolean;
23
+ ignoreRejections?: boolean;
19
24
  }
20
- export declare const useFileUpload: <T>({ accept, onAccept, onFileRejected, maxSize, allowMultiple, preventDuplicates, onDuplicate, hasManager, isFolder, }: UseFileUploadOptions<T>) => {
25
+ export declare const useFileUpload: <T>({ accept, onAccept, onOpenManager, onFileRejected, maxSize, allowMultiple, preventDuplicates, onDuplicate, hasManager, isFolder, noClick, ignoreRejections, uploadProgressText, uploadSuccessText, }: UseFileUploadOptions) => {
21
26
  onOpen: () => void;
22
27
  onClose: () => void;
23
28
  onDelete: (index: number) => void;
@@ -26,7 +31,7 @@ export declare const useFileUpload: <T>({ accept, onAccept, onFileRejected, maxS
26
31
  openManager: () => void;
27
32
  closeManager: () => void;
28
33
  isManagerOpen: boolean;
29
- files: FileUpload<T>[];
34
+ files: FileUpload<unknown>[];
30
35
  duplicates: File[];
31
36
  onClearFiles: () => void;
32
37
  };
@@ -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-beta.0",
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": "a07be64b3f563448f7afb7de46f248a4867c0a39"
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
- };