@delightui/components 0.1.156 → 0.1.158

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.
@@ -8,6 +8,7 @@
8
8
  declare const Search: import("react").ForwardRefExoticComponent<Omit<import("react").InputHTMLAttributes<HTMLInputElement>, "value" | "type"> & import("../FormField/FormField.types").ControlledFormComponentProps<string> & {
9
9
  style?: import("./Search.types").SearchStyleEnum;
10
10
  onSearch?: import("./Search.types").SearchCallback;
11
+ onClear?: () => void;
11
12
  debounceMs?: number;
12
13
  minCharacters?: number;
13
14
  showSubmitButton?: boolean;
@@ -21,6 +21,12 @@ export type SearchProps = Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | '
21
21
  * Callback function to handle search with the query string
22
22
  */
23
23
  onSearch?: SearchCallback;
24
+ /**
25
+ * Callback function to handle clear button click
26
+ * Called when the user clicks the clear button (X icon)
27
+ * This is separate from onValueChange to provide explicit clear intent
28
+ */
29
+ onClear?: () => void;
24
30
  /**
25
31
  * Debounce delay in milliseconds for auto style
26
32
  * @default 300
@@ -16,7 +16,7 @@ declare const usePresenter: <T extends File | string = File>(props: DropzoneProp
16
16
  accept: {
17
17
  [key: string]: readonly string[];
18
18
  } | undefined;
19
- resetFiles: () => void;
19
+ resetFiles: () => Promise<void>;
20
20
  id: string | undefined;
21
21
  isDragActive: boolean;
22
22
  contextValue: DropzoneContextType<T>;
@@ -3,6 +3,15 @@ import { ButtonProps, IconButtonProps, TextProps } from '../../atoms';
3
3
  import { ControlledFormComponentProps } from '../../molecules/FormField/FormField.types';
4
4
  export type DropzoneStatus = 'Empty' | 'Loading' | 'Uploaded';
5
5
  export type DropzoneAcceptTypeEnum = 'File' | 'URL';
6
+ /**
7
+ * Metadata for uploaded files in URL mode
8
+ */
9
+ export type UploadedFileMetadata = {
10
+ url: string;
11
+ filename: string;
12
+ size?: number;
13
+ mimetype?: string;
14
+ };
6
15
  /**
7
16
  * Dropzone component props
8
17
  * @param empty React.ReactNode - The empty state of the dropzone.
@@ -67,6 +76,25 @@ export type DropzoneProps<T extends File | string = File> = ControlledFormCompon
67
76
  * @default 'File'
68
77
  */
69
78
  type?: 'File' | 'URL';
79
+ /**
80
+ * Async callback for uploading files and returning URLs (URL mode only)
81
+ * @param files The files to upload
82
+ * @returns Promise resolving to array of uploaded file URLs
83
+ */
84
+ onUpload?: (files: File[]) => Promise<string[]>;
85
+ /**
86
+ * Callback when files are deleted/cleared
87
+ * @param value The current value being deleted
88
+ * @returns Promise or void
89
+ */
90
+ onDelete?: (value: T[]) => Promise<void> | void;
91
+ /**
92
+ * Function to resolve metadata from URLs (URL mode only)
93
+ * Used when loading existing URLs to get display metadata
94
+ * @param urls Array of URLs to resolve metadata for
95
+ * @returns Promise or array of metadata objects
96
+ */
97
+ resolveMetadata?: (urls: string[]) => Promise<UploadedFileMetadata[]> | UploadedFileMetadata[];
70
98
  };
71
99
  /**
72
100
  * Dropzone context type
@@ -81,7 +109,11 @@ export type DropzoneContextType<T extends File | string = File> = {
81
109
  */
82
110
  status: DropzoneStatus;
83
111
  /**
84
- * The files of the dropzone.
112
+ * The type of the dropzone (File or URL mode).
113
+ */
114
+ type: 'File' | 'URL';
115
+ /**
116
+ * The files of the dropzone (raw File objects from user selection).
85
117
  */
86
118
  files: File[];
87
119
  /**
@@ -94,7 +126,14 @@ export type DropzoneContextType<T extends File | string = File> = {
94
126
  accept: {
95
127
  [key: string]: readonly string[];
96
128
  };
129
+ /**
130
+ * The form value (File[] in File mode, string[] in URL mode).
131
+ */
97
132
  value?: T[];
133
+ /**
134
+ * Metadata for uploaded files (primarily used in URL mode for display).
135
+ */
136
+ metadata?: UploadedFileMetadata[];
98
137
  /**
99
138
  * The function to call to open the file dialog.
100
139
  */
@@ -4,7 +4,7 @@ import DropzoneFilename from "./components/DropzoneFilename";
4
4
  import DropzoneSupportedFormats from "./components/DropzoneSupportedFormats";
5
5
  import DropzoneTrigger from "./components/DropzoneTrigger";
6
6
  import { useDropzoneContext } from "./Dropzone";
7
- import type { DropzoneProps } from './Dropzone.types';
7
+ import type { DropzoneProps, UploadedFileMetadata } from './Dropzone.types';
8
8
  export default Dropzone;
9
9
  export { DropzoneClear, DropzoneFilename, DropzoneSupportedFormats, DropzoneTrigger, useDropzoneContext };
10
- export type { DropzoneProps };
10
+ export type { DropzoneProps, UploadedFileMetadata };
@@ -1,2 +1,6 @@
1
+ declare const DropzoneFileModeExample: () => import("react/jsx-runtime").JSX.Element;
2
+ declare const DropzoneURLModeExample: () => import("react/jsx-runtime").JSX.Element;
3
+ declare const DropzoneURLModeWithMetadataExample: () => import("react/jsx-runtime").JSX.Element;
1
4
  declare const DropzoneFormExample: () => import("react/jsx-runtime").JSX.Element;
2
5
  export default DropzoneFormExample;
6
+ export { DropzoneFileModeExample, DropzoneURLModeExample, DropzoneURLModeWithMetadataExample };