@k3-universe/react-kit 0.0.19 → 0.0.21
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/index.js +2 -1
- package/dist/kit/builder/form/types.d.ts +3 -3
- package/dist/kit/builder/form/types.d.ts.map +1 -1
- package/dist/kit/components/autocomplete/Autocomplete.d.ts +1 -1
- package/dist/kit/components/autocomplete/Autocomplete.d.ts.map +1 -1
- package/dist/kit/components/autocomplete/types.d.ts +1 -1
- package/dist/kit/components/autocomplete/types.d.ts.map +1 -1
- package/dist/kit/components/fileuploader/FileUploader.d.ts +1 -1
- package/dist/kit/components/fileuploader/FileUploader.d.ts.map +1 -1
- package/dist/kit/components/fileuploader/types.d.ts +2 -0
- package/dist/kit/components/fileuploader/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/kit/builder/form/types.ts +3 -2
- package/src/kit/components/autocomplete/Autocomplete.tsx +1 -1
- package/src/kit/components/autocomplete/types.ts +1 -1
- package/src/kit/components/fileuploader/FileUploader.tsx +46 -43
- package/src/kit/components/fileuploader/types.ts +3 -0
package/dist/index.js
CHANGED
|
@@ -31968,6 +31968,7 @@ function FileUploader({
|
|
|
31968
31968
|
onUploadSuccess,
|
|
31969
31969
|
onUploadError,
|
|
31970
31970
|
onRemove,
|
|
31971
|
+
withRetry = true,
|
|
31971
31972
|
onRetry,
|
|
31972
31973
|
onRetryAll,
|
|
31973
31974
|
multiple = true,
|
|
@@ -32279,7 +32280,7 @@ function FileUploader({
|
|
|
32279
32280
|
] })
|
|
32280
32281
|
] })
|
|
32281
32282
|
] }),
|
|
32282
|
-
/* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxs(
|
|
32283
|
+
withRetry && /* @__PURE__ */ jsx("div", { className: "flex items-center gap-2", children: /* @__PURE__ */ jsxs(
|
|
32283
32284
|
Button$1,
|
|
32284
32285
|
{
|
|
32285
32286
|
size: "sm",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { default as React } from 'react';
|
|
1
|
+
import { default as React, ReactNode } from 'react';
|
|
2
2
|
import { Control, DeepPartial, FieldValues, Path, UseFormGetValues, UseFormReturn, UseFormSetValue, DefaultValues } from 'react-hook-form';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { Accept } from 'react-dropzone';
|
|
@@ -27,7 +27,7 @@ export interface FormBuilderFieldConfig<TFieldValues extends FieldValues = Field
|
|
|
27
27
|
}[];
|
|
28
28
|
autocompleteMode?: 'client' | 'server';
|
|
29
29
|
fetcher?: AutocompleteFetcher;
|
|
30
|
-
fetcherFilter?: () => Record<string, string | number | boolean>;
|
|
30
|
+
fetcherFilter?: () => Record<string, string | number | boolean | null>;
|
|
31
31
|
pageSize?: number;
|
|
32
32
|
searchPlaceholder?: string;
|
|
33
33
|
renderOption?: (option: AutocompleteOption, selected: boolean) => React.ReactNode;
|
|
@@ -151,7 +151,7 @@ export interface FormBuilderSectionConfig<TFieldValues extends FieldValues = Fie
|
|
|
151
151
|
hidden?: boolean;
|
|
152
152
|
tabs?: Array<{
|
|
153
153
|
id: string;
|
|
154
|
-
label:
|
|
154
|
+
label: ReactNode;
|
|
155
155
|
sections: Array<FormBuilderSectionConfig<TFieldValues>>;
|
|
156
156
|
className?: string;
|
|
157
157
|
contentClassName?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/kit/builder/form/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,WAAW,EACX,IAAI,EACJ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,aAAa,EACd,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAC7F,OAAO,KAAK,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;AAClG,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/kit/builder/form/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ export type AutocompleteProps<T = unknown> = {
|
|
|
4
4
|
mode: AutocompleteMode;
|
|
5
5
|
options?: AutocompleteOption<T>[];
|
|
6
6
|
fetcher?: AutocompleteFetcher<T>;
|
|
7
|
-
fetcherFilter?: () => Record<string, string | number | boolean>;
|
|
7
|
+
fetcherFilter?: () => Record<string, string | number | boolean | null>;
|
|
8
8
|
pageSize?: number;
|
|
9
9
|
/**
|
|
10
10
|
* Value can be a single primitive or an array when `multiple` is true
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/kit/components/autocomplete/Autocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AA0B/B,OAAO,KAAK,EACX,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAElB,MAAM,SAAS,CAAC;AAGjB,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,OAAO,IAAI;IAC5C,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IAClC,OAAO,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACjC,aAAa,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"Autocomplete.d.ts","sourceRoot":"","sources":["../../../../src/kit/components/autocomplete/Autocomplete.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ export type AutocompleteOption<T = unknown> = {
|
|
|
6
6
|
};
|
|
7
7
|
export type AutocompleteFetchParams = {
|
|
8
8
|
search: string;
|
|
9
|
-
moreFilter?: () => Record<string, string | number | boolean>;
|
|
9
|
+
moreFilter?: () => Record<string, string | number | boolean | null>;
|
|
10
10
|
cursor?: string | number | null;
|
|
11
11
|
page: number;
|
|
12
12
|
pageSize: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/kit/components/autocomplete/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,OAAO,IAAI;IAC5C,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,GAAG,CAAC,EAAE,CAAC,CAAA;CACR,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/kit/components/autocomplete/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,CAAC,CAAC,GAAG,OAAO,IAAI;IAC5C,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,GAAG,CAAC,EAAE,CAAC,CAAA;CACR,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;IACpE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,MAAM,MAAM,uBAAuB,CAAC,CAAC,GAAG,OAAO,IAAI;IACjD,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9B,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IACnC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,GAAG,OAAO,IAAI,CAC7C,MAAM,EAAE,uBAAuB,KAC5B,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAA;AAExC,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,QAAQ,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { FileUploaderProps } from './types';
|
|
2
|
-
export declare function FileUploader({ value, defaultValue, onChange, uploader, onUploadSuccess, onUploadError, onRemove, onRetry, onRetryAll, multiple, maxFiles, accept, layout, disabled, withDownload, placeholder, className, }: FileUploaderProps): import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare function FileUploader({ value, defaultValue, onChange, uploader, onUploadSuccess, onUploadError, onRemove, withRetry, onRetry, onRetryAll, multiple, maxFiles, accept, layout, disabled, withDownload, placeholder, className, }: FileUploaderProps): import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export default FileUploader;
|
|
4
4
|
//# sourceMappingURL=FileUploader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileUploader.d.ts","sourceRoot":"","sources":["../../../../src/kit/components/fileuploader/FileUploader.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,SAAS,CAAC;AA+C7D,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,aAAa,EACb,QAAQ,EACR,OAAO,EACP,UAAU,EACV,QAAe,EACf,QAAQ,EACR,MAAM,EACN,MAAe,EACf,QAAQ,EACR,YAAmB,EACnB,WAA4D,EAC5D,SAAS,GACV,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"FileUploader.d.ts","sourceRoot":"","sources":["../../../../src/kit/components/fileuploader/FileUploader.tsx"],"names":[],"mappings":"AAsBA,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,SAAS,CAAC;AA+C7D,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,YAAY,EACZ,QAAQ,EACR,QAAQ,EACR,eAAe,EACf,aAAa,EACb,QAAQ,EACR,SAAgB,EAChB,OAAO,EACP,UAAU,EACV,QAAe,EACf,QAAQ,EACR,MAAM,EACN,MAAe,EACf,QAAQ,EACR,YAAmB,EACnB,WAA4D,EAC5D,SAAS,GACV,EAAE,iBAAiB,2CAgZnB;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -39,6 +39,8 @@ export type FileUploaderProps = {
|
|
|
39
39
|
onUploadError?: (file: FileRecord, error: unknown) => void;
|
|
40
40
|
/** Called when a file is removed (useful to delete from server) */
|
|
41
41
|
onRemove?: (file: FileRecord) => void | Promise<void>;
|
|
42
|
+
/** Allow retrying errored uploads */
|
|
43
|
+
withRetry?: boolean;
|
|
42
44
|
/** Called when user retries an errored file upload */
|
|
43
45
|
onRetry?: (file: FileRecord) => void;
|
|
44
46
|
/** Called when user retries all failed uploads at once */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/kit/components/fileuploader/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;AAE1E,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,6CAA6C;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,YAAY;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gCAAgC;IAChC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,sDAAsD;IACtD,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5B,kDAAkD;IAClD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAEzC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CACT,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,KAC9B,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAElC,uDAAuD;IACvD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IAC7C,kDAAkD;IAClD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3D,mEAAmE;IACnE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/kit/components/fileuploader/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,SAAS,GAAG,OAAO,CAAC;AAE1E,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACrB,6CAA6C;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iDAAiD;IACjD,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,YAAY;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,MAAM,CAAC;AAEjD,MAAM,MAAM,iBAAiB,GAAG;IAC9B,gCAAgC;IAChC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IACrB,sDAAsD;IACtD,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAC5B,kDAAkD;IAClD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAEzC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CACT,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,KAC9B,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAElC,uDAAuD;IACvD,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IAC7C,kDAAkD;IAClD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3D,mEAAmE;IACnE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEtD,qCAAqC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sDAAsD;IACtD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACrC,0DAA0D;IAC1D,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;IAE3C,qCAAqC;IACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,qBAAqB;IACrB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
|
package/package.json
CHANGED
|
@@ -14,6 +14,7 @@ import type { Accept } from 'react-dropzone'
|
|
|
14
14
|
import type { SectionFlexOptions, SectionGridOptions, SectionLayout } from '../section/types'
|
|
15
15
|
import type { AutocompleteFetcher, AutocompleteOption } from '../../components/autocomplete/types'
|
|
16
16
|
import type { FileRecord, FileUploaderLayout } from '../../components/fileuploader/types'
|
|
17
|
+
import { ReactNode } from 'react'
|
|
17
18
|
|
|
18
19
|
export type FieldType =
|
|
19
20
|
| 'text'
|
|
@@ -63,7 +64,7 @@ export interface FormBuilderFieldConfig<
|
|
|
63
64
|
options?: { label: string; value: string | number | null }[]
|
|
64
65
|
autocompleteMode?: 'client' | 'server'
|
|
65
66
|
fetcher?: AutocompleteFetcher
|
|
66
|
-
fetcherFilter?: () => Record<string, string | number | boolean>
|
|
67
|
+
fetcherFilter?: () => Record<string, string | number | boolean | null>
|
|
67
68
|
pageSize?: number
|
|
68
69
|
searchPlaceholder?: string
|
|
69
70
|
renderOption?: (option: AutocompleteOption, selected: boolean) => React.ReactNode
|
|
@@ -171,7 +172,7 @@ export interface FormBuilderSectionConfig<TFieldValues extends FieldValues = Fie
|
|
|
171
172
|
hidden?: boolean
|
|
172
173
|
tabs?: Array<{
|
|
173
174
|
id: string
|
|
174
|
-
label:
|
|
175
|
+
label: ReactNode,
|
|
175
176
|
sections: Array<FormBuilderSectionConfig<TFieldValues>>
|
|
176
177
|
className?: string
|
|
177
178
|
contentClassName?: string
|
|
@@ -36,7 +36,7 @@ export type AutocompleteProps<T = unknown> = {
|
|
|
36
36
|
mode: AutocompleteMode;
|
|
37
37
|
options?: AutocompleteOption<T>[];
|
|
38
38
|
fetcher?: AutocompleteFetcher<T>;
|
|
39
|
-
fetcherFilter?: () => Record<string, string | number | boolean>,
|
|
39
|
+
fetcherFilter?: () => Record<string, string | number | boolean | null>,
|
|
40
40
|
pageSize?: number;
|
|
41
41
|
/**
|
|
42
42
|
* Value can be a single primitive or an array when `multiple` is true
|
|
@@ -7,7 +7,7 @@ export type AutocompleteOption<T = unknown> = {
|
|
|
7
7
|
|
|
8
8
|
export type AutocompleteFetchParams = {
|
|
9
9
|
search: string
|
|
10
|
-
moreFilter?: () => Record<string, string | number | boolean>,
|
|
10
|
+
moreFilter?: () => Record<string, string | number | boolean | null>,
|
|
11
11
|
cursor?: string | number | null
|
|
12
12
|
page: number
|
|
13
13
|
pageSize: number
|
|
@@ -45,12 +45,12 @@ function isImageType(type?: string, name?: string) {
|
|
|
45
45
|
function pickIconByType(type?: string, name?: string) {
|
|
46
46
|
const t = (type || "").toLowerCase();
|
|
47
47
|
const ext = (name?.split(".").pop() || "").toLowerCase();
|
|
48
|
-
if (t.startsWith("image/") || ["png","jpg","jpeg","webp","gif","bmp","svg","heic","heif"].includes(ext)) return <ImageIcon className="h-8 w-8" />;
|
|
49
|
-
if (t.startsWith("video/") || ["mp4","mov","webm","mkv"].includes(ext)) return <Video className="h-8 w-8" />;
|
|
50
|
-
if (t.startsWith("audio/") || ["mp3","wav","aac","flac"].includes(ext)) return <Music className="h-8 w-8" />;
|
|
51
|
-
if (["zip","rar","7z","tar","gz"].includes(ext)) return <Archive className="h-8 w-8" />;
|
|
52
|
-
if (["txt","md","rtf"].includes(ext)) return <FileText className="h-8 w-8" />;
|
|
53
|
-
if (["js","ts","tsx","json","yml","yaml","xml","html","css"].includes(ext)) return <FileCode className="h-8 w-8" />;
|
|
48
|
+
if (t.startsWith("image/") || ["png", "jpg", "jpeg", "webp", "gif", "bmp", "svg", "heic", "heif"].includes(ext)) return <ImageIcon className="h-8 w-8" />;
|
|
49
|
+
if (t.startsWith("video/") || ["mp4", "mov", "webm", "mkv"].includes(ext)) return <Video className="h-8 w-8" />;
|
|
50
|
+
if (t.startsWith("audio/") || ["mp3", "wav", "aac", "flac"].includes(ext)) return <Music className="h-8 w-8" />;
|
|
51
|
+
if (["zip", "rar", "7z", "tar", "gz"].includes(ext)) return <Archive className="h-8 w-8" />;
|
|
52
|
+
if (["txt", "md", "rtf"].includes(ext)) return <FileText className="h-8 w-8" />;
|
|
53
|
+
if (["js", "ts", "tsx", "json", "yml", "yaml", "xml", "html", "css"].includes(ext)) return <FileCode className="h-8 w-8" />;
|
|
54
54
|
return <FileIcon className="h-8 w-8" />;
|
|
55
55
|
}
|
|
56
56
|
|
|
@@ -75,6 +75,7 @@ export function FileUploader({
|
|
|
75
75
|
onUploadSuccess,
|
|
76
76
|
onUploadError,
|
|
77
77
|
onRemove,
|
|
78
|
+
withRetry = true,
|
|
78
79
|
onRetry,
|
|
79
80
|
onRetryAll,
|
|
80
81
|
multiple = true,
|
|
@@ -114,7 +115,7 @@ export function FileUploader({
|
|
|
114
115
|
[onChange],
|
|
115
116
|
);
|
|
116
117
|
|
|
117
|
-
|
|
118
|
+
|
|
118
119
|
|
|
119
120
|
useEffect(() => {
|
|
120
121
|
if (isControlled && value) setFiles(value);
|
|
@@ -440,46 +441,48 @@ export function FileUploader({
|
|
|
440
441
|
</div>
|
|
441
442
|
</div>
|
|
442
443
|
</div>
|
|
443
|
-
|
|
444
|
-
<
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
444
|
+
{withRetry && (
|
|
445
|
+
<div className="flex items-center gap-2">
|
|
446
|
+
<Button
|
|
447
|
+
size="sm"
|
|
448
|
+
variant="ghost"
|
|
449
|
+
onClick={handleRetryAll}
|
|
450
|
+
disabled={
|
|
451
|
+
!!disabled || !uploader || files.every((f) => f.status !== "error" || !f.file)
|
|
452
|
+
}
|
|
453
|
+
>
|
|
454
|
+
<RotateCcw className="mr-1 h-4 w-4" /> Retry failed
|
|
455
|
+
</Button>
|
|
456
|
+
</div>
|
|
457
|
+
)}
|
|
455
458
|
</div>
|
|
456
459
|
</div>
|
|
457
460
|
|
|
458
461
|
<TooltipProvider>
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
462
|
+
<div
|
|
463
|
+
className={cn(
|
|
464
|
+
layout === "grid"
|
|
465
|
+
? "flex flex-wrap gap-3"
|
|
466
|
+
: "flex flex-col gap-2",
|
|
467
|
+
)}
|
|
468
|
+
>
|
|
469
|
+
{files.length === 0 ? (
|
|
470
|
+
<div className="text-sm text-muted-foreground">No files</div>
|
|
471
|
+
) : (
|
|
472
|
+
files.map((fr, i) => (
|
|
473
|
+
<FileItem
|
|
474
|
+
key={`${fr.name}-${i}`}
|
|
475
|
+
fr={fr}
|
|
476
|
+
idx={i}
|
|
477
|
+
layout={layout}
|
|
478
|
+
withDownload={withDownload}
|
|
479
|
+
uploaderPresent={!!uploader}
|
|
480
|
+
onRemove={onRemoveAt}
|
|
481
|
+
onRetry={onRetryAt}
|
|
482
|
+
/>
|
|
483
|
+
))
|
|
484
|
+
)}
|
|
485
|
+
</div>
|
|
483
486
|
</TooltipProvider>
|
|
484
487
|
</div>
|
|
485
488
|
);
|
|
@@ -48,6 +48,9 @@ export type FileUploaderProps = {
|
|
|
48
48
|
onUploadError?: (file: FileRecord, error: unknown) => void;
|
|
49
49
|
/** Called when a file is removed (useful to delete from server) */
|
|
50
50
|
onRemove?: (file: FileRecord) => void | Promise<void>;
|
|
51
|
+
|
|
52
|
+
/** Allow retrying errored uploads */
|
|
53
|
+
withRetry?: boolean;
|
|
51
54
|
/** Called when user retries an errored file upload */
|
|
52
55
|
onRetry?: (file: FileRecord) => void;
|
|
53
56
|
/** Called when user retries all failed uploads at once */
|