@oneplatformdev/ui 0.0.1-beta.13 → 0.0.1-beta.17
Sign up to get free protection for your applications and to get access to all the features.
- package/Dropzone/Dropzone.d.ts +1 -1
- package/Dropzone/Dropzone.mjs +110 -96
- package/Dropzone/Dropzone.types.d.ts +8 -9
- package/Dropzone/{FilePreview.mjs → DropzoneFilePreview.mjs} +1 -1
- package/Dropzone/index.mjs +1 -1
- package/FormDropzone/FormDropzone.d.ts +4 -0
- package/FormDropzone/FormDropzone.mjs +26 -0
- package/FormDropzone/FormDropzone.types.d.ts +7 -0
- package/FormDropzone/index.d.ts +2 -0
- package/FormDropzone/index.mjs +4 -0
- package/FormDropzone/package.json +7 -0
- package/FormSelect/FormSelect.types.d.ts +1 -1
- package/index.d.ts +1 -0
- package/index.mjs +3 -1
- package/package.json +1 -1
- /package/Dropzone/{FilePreview.d.ts → DropzoneFilePreview.d.ts} +0 -0
- /package/{FilePreview-Dhtv8F4u.js → DropzoneFilePreview-Dhtv8F4u.js} +0 -0
package/Dropzone/Dropzone.d.ts
CHANGED
@@ -12,7 +12,7 @@ import { DropzoneProps } from './Dropzone.types';
|
|
12
12
|
* @param {(errors: FileRejection[]) => void} [props.onErrors] - Callback triggered when file errors occur.
|
13
13
|
* @param {boolean} [props.hideErrors=false] - Whether to hide error messages.
|
14
14
|
* @param {boolean} [props.disabled=false] - Whether the dropzone is disabled.
|
15
|
-
* @param {DropzoneStyles} [props.
|
15
|
+
* @param {DropzoneStyles} [props.classNames] - Custom classNames for different dropzone states.
|
16
16
|
* @param {DropzoneValueItem[]} [props.value=[]] - Current selected files or URLs.
|
17
17
|
* @param {(items: DropzoneValueItem[]) => void} [props.onChangeValue] - Callback triggered when file selection changes.
|
18
18
|
* @param {string} [props.className] - Additional class names for styling.
|
package/Dropzone/Dropzone.mjs
CHANGED
@@ -1,122 +1,136 @@
|
|
1
|
-
import { jsxs as
|
2
|
-
import { forwardRef as
|
3
|
-
import { useDropzone as
|
4
|
-
import { Card as
|
5
|
-
import { File as j, X as
|
6
|
-
import { cn as
|
7
|
-
import { F as
|
8
|
-
import { isFile as
|
9
|
-
const
|
1
|
+
import { jsxs as t, jsx as o } from "react/jsx-runtime";
|
2
|
+
import { forwardRef as L, useState as g } from "react";
|
3
|
+
import { useDropzone as M } from "react-dropzone";
|
4
|
+
import { Card as U } from "../Card/Card.mjs";
|
5
|
+
import { File as j, X as O } from "lucide-react";
|
6
|
+
import { cn as m } from "@oneplatformdev/utils";
|
7
|
+
import { F as X, D as Y } from "../DropzoneFilePreview-Dhtv8F4u.js";
|
8
|
+
import { isFile as v, extractName as q } from "./DropzoneUtils.mjs";
|
9
|
+
const G = L(
|
10
10
|
({
|
11
|
-
acceptTypes:
|
12
|
-
maxSizeMB:
|
11
|
+
acceptTypes: y = Y,
|
12
|
+
maxSizeMB: w,
|
13
13
|
maxFiles: a = 1,
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
14
|
+
onErrors: x,
|
15
|
+
hideErrors: b = !1,
|
16
|
+
disabled: p = !1,
|
17
|
+
classNames: l,
|
18
|
+
value: u = [],
|
19
|
+
onChangeValue: s,
|
20
|
+
className: F,
|
21
|
+
labelDropzonePrompt: z = "Drop files here or click to select",
|
22
|
+
labelOrClickToSelect: H = "Click to select files",
|
23
|
+
labelSelectedFiles: D = "Selected Files",
|
24
|
+
labelUploadErrors: I = "Upload Errors",
|
25
|
+
labelFileTooLarge: k = "File is too large",
|
26
|
+
labelInvalidFileType: S = "Invalid file type",
|
22
27
|
...E
|
23
|
-
},
|
24
|
-
const [
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
}, { getRootProps: k, getInputProps: n, isDragActive: W } = B({
|
38
|
-
onDrop: S,
|
39
|
-
accept: u.reduce((r, m) => (r[m] = [], r), {}),
|
40
|
-
maxSize: b * 1024 * 1024,
|
28
|
+
}, P) => {
|
29
|
+
const [c, h] = g(u), [d, N] = g([]), W = (e, i) => {
|
30
|
+
N(i), x && x(i);
|
31
|
+
const r = [...c, ...e].slice(0, a);
|
32
|
+
h(r), s == null || s(r);
|
33
|
+
}, T = (e, i) => {
|
34
|
+
if (p) return;
|
35
|
+
e.stopPropagation();
|
36
|
+
const r = c.filter((n, f) => f !== i);
|
37
|
+
h(r), s == null || s(r);
|
38
|
+
}, { getRootProps: _, getInputProps: A, isDragActive: B } = M({
|
39
|
+
onDrop: W,
|
40
|
+
accept: y.reduce((e, i) => (e[i] = [], e), {}),
|
41
|
+
maxSize: w * 1024 * 1024,
|
41
42
|
maxFiles: a,
|
42
|
-
disabled:
|
43
|
+
disabled: p
|
43
44
|
});
|
44
|
-
return /* @__PURE__ */
|
45
|
-
|
45
|
+
return /* @__PURE__ */ t(
|
46
|
+
U,
|
46
47
|
{
|
47
|
-
...
|
48
|
+
..._(),
|
48
49
|
...E,
|
49
|
-
className:
|
50
|
+
className: m(
|
50
51
|
"border-dashed border-2 p-6 text-center flex flex-col items-center justify-center",
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
p && "bg-gray-300 pointer-events-none",
|
53
|
+
d.length > 0 ? "border-red-500" : "border-gray-300",
|
54
|
+
B && "bg-gray-100",
|
55
|
+
F
|
55
56
|
),
|
56
|
-
ref:
|
57
|
+
ref: P,
|
57
58
|
children: [
|
58
|
-
/* @__PURE__ */
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
59
|
+
/* @__PURE__ */ o("input", { ...A() }),
|
60
|
+
c.length === 0 && d.length === 0 && /* @__PURE__ */ t(
|
61
|
+
"div",
|
62
|
+
{
|
63
|
+
className: m(
|
64
|
+
"flex flex-col items-center gap-1",
|
65
|
+
l == null ? void 0 : l.idleWrapper
|
66
|
+
),
|
67
|
+
children: [
|
68
|
+
/* @__PURE__ */ o(j, { className: "w-8 h-8 text-gray-500" }),
|
69
|
+
!p && /* @__PURE__ */ o("pre", { className: "font-semibold text-gray-600", children: z })
|
70
|
+
]
|
71
|
+
}
|
72
|
+
),
|
73
|
+
c.length > 0 && /* @__PURE__ */ t("div", { className: m("w-full mt-2", l == null ? void 0 : l.previewWrapper), children: [
|
74
|
+
/* @__PURE__ */ t("pre", { className: "font-semibold text-gray-600", children: [
|
75
|
+
D,
|
69
76
|
":"
|
70
77
|
] }),
|
71
|
-
/* @__PURE__ */
|
72
|
-
const
|
73
|
-
return /* @__PURE__ */
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
{
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
78
|
+
/* @__PURE__ */ o("ul", { className: "mt-2 text-sm text-gray-500 flex flex-wrap gap-4 items-start justify-center", children: c.map((e, i) => {
|
79
|
+
const r = v(e) ? e.name : q(e), n = v(e) ? (e.size / (1024 * 1024)).toFixed(2) + " MB" : "";
|
80
|
+
return /* @__PURE__ */ t(
|
81
|
+
"li",
|
82
|
+
{
|
83
|
+
className: "flex flex-col items-center gap-2 relative",
|
84
|
+
children: [
|
85
|
+
/* @__PURE__ */ t("div", { className: "relative", children: [
|
86
|
+
/* @__PURE__ */ o(X, { item: e, styles: l }),
|
87
|
+
/* @__PURE__ */ o("div", { className: "absolute top-0 right-0 cursor-pointer bg-gray-300 rounded-sm", children: /* @__PURE__ */ o(
|
88
|
+
O,
|
89
|
+
{
|
90
|
+
size: 16,
|
91
|
+
strokeWidth: 1,
|
92
|
+
color: "black",
|
93
|
+
onClick: (f) => T(f, i)
|
94
|
+
}
|
95
|
+
) })
|
96
|
+
] }),
|
97
|
+
/* @__PURE__ */ t("span", { className: "inline-flex flex-col items-center", children: [
|
98
|
+
/* @__PURE__ */ o("span", { className: "max-w-[80px] text-ellipsis overflow-hidden whitespace-nowrap", children: r }),
|
99
|
+
n && /* @__PURE__ */ t("span", { children: [
|
100
|
+
"(",
|
101
|
+
n,
|
102
|
+
")"
|
103
|
+
] })
|
104
|
+
] })
|
105
|
+
]
|
106
|
+
},
|
107
|
+
i
|
108
|
+
);
|
95
109
|
}) })
|
96
110
|
] }),
|
97
|
-
|
98
|
-
/* @__PURE__ */
|
99
|
-
|
111
|
+
d.length > 0 && /* @__PURE__ */ t("div", { className: m("w-full mt-4", l == null ? void 0 : l.errorWrapper), children: [
|
112
|
+
/* @__PURE__ */ t("span", { className: "font-semibold text-red-500", children: [
|
113
|
+
I,
|
100
114
|
":"
|
101
115
|
] }),
|
102
|
-
/* @__PURE__ */
|
103
|
-
|
116
|
+
/* @__PURE__ */ o("ul", { className: "mt-2 text-sm text-red-500 list-disc list-inside", children: d.map((e, i) => /* @__PURE__ */ t("li", { children: [
|
117
|
+
e.file.name,
|
104
118
|
" (",
|
105
|
-
(
|
119
|
+
(e.file.size / (1024 * 1024)).toFixed(2),
|
106
120
|
" MB)",
|
107
|
-
!
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
] },
|
112
|
-
] },
|
121
|
+
!b && /* @__PURE__ */ o("ul", { className: "ml-4 list-disc list-inside", children: e.errors.map((r, n) => /* @__PURE__ */ t("li", { children: [
|
122
|
+
r.code === "file-too-large" && k,
|
123
|
+
r.code === "file-invalid-type" && S,
|
124
|
+
r.code !== "file-too-large" && r.code !== "file-invalid-type" && r.message
|
125
|
+
] }, n)) })
|
126
|
+
] }, i)) })
|
113
127
|
] })
|
114
128
|
]
|
115
129
|
}
|
116
130
|
);
|
117
131
|
}
|
118
132
|
);
|
119
|
-
|
133
|
+
G.displayName = "Dropzone";
|
120
134
|
export {
|
121
|
-
|
135
|
+
G as Dropzone
|
122
136
|
};
|
@@ -6,22 +6,21 @@ export interface FilePreviewProps {
|
|
6
6
|
styles?: Pick<DropzoneStyles, 'previewWraper' | 'previewImage' | 'previewFile'>;
|
7
7
|
}
|
8
8
|
export interface DropzoneTranslations {
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
9
|
+
labelDropzonePrompt?: string;
|
10
|
+
labelOrClickToSelect?: string;
|
11
|
+
labelSelectedFiles?: string;
|
12
|
+
labelUploadErrors?: string;
|
13
|
+
labelFileTooLarge?: string;
|
14
|
+
labelInvalidFileType?: string;
|
15
15
|
}
|
16
|
-
export interface DropzoneProps extends React.HTMLAttributes<HTMLDivElement> {
|
16
|
+
export interface DropzoneProps extends DropzoneTranslations, React.HTMLAttributes<HTMLDivElement> {
|
17
17
|
acceptTypes?: string[];
|
18
18
|
maxSizeMB: number;
|
19
|
-
translations: DropzoneTranslations;
|
20
19
|
maxFiles?: number;
|
21
20
|
onErrors?: (errors: FileRejection[]) => void;
|
22
21
|
hideErrors?: boolean;
|
23
22
|
disabled?: boolean;
|
24
|
-
|
23
|
+
classNames?: DropzoneStyles;
|
25
24
|
value?: DropzoneValueItem[];
|
26
25
|
onChangeValue?: (items: DropzoneValueItem[]) => void;
|
27
26
|
}
|
package/Dropzone/index.mjs
CHANGED
@@ -0,0 +1,4 @@
|
|
1
|
+
import { FormDropzoneProps } from './FormDropzone.types';
|
2
|
+
import { FieldValues, UseFormReturn } from 'react-hook-form';
|
3
|
+
|
4
|
+
export declare const FormDropzone: <Data extends FieldValues, Form extends UseFormReturn<Data>>(props: FormDropzoneProps<Data, Form>) => import("react/jsx-runtime").JSX.Element;
|
@@ -0,0 +1,26 @@
|
|
1
|
+
import { jsx as o } from "react/jsx-runtime";
|
2
|
+
import { FormControl as a } from "../Form/Form.mjs";
|
3
|
+
import { FormRenderControl as l } from "../Form/FormRenderControl.mjs";
|
4
|
+
import { Dropzone as f } from "../Dropzone/Dropzone.mjs";
|
5
|
+
const h = (n) => {
|
6
|
+
const { form: e, label: m, name: t, ...p } = n;
|
7
|
+
return /* @__PURE__ */ o(
|
8
|
+
l,
|
9
|
+
{
|
10
|
+
form: e,
|
11
|
+
label: m,
|
12
|
+
name: t,
|
13
|
+
render: ({ field: r }) => /* @__PURE__ */ o(a, { children: /* @__PURE__ */ o(
|
14
|
+
f,
|
15
|
+
{
|
16
|
+
...p,
|
17
|
+
...r,
|
18
|
+
onChangeValue: r.onChange
|
19
|
+
}
|
20
|
+
) })
|
21
|
+
}
|
22
|
+
);
|
23
|
+
};
|
24
|
+
export {
|
25
|
+
h as FormDropzone
|
26
|
+
};
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import { FormRenderControlExtendProps } from '../Form';
|
2
|
+
import { DropzoneProps } from '../Dropzone';
|
3
|
+
import { UseFormReturn } from 'react-hook-form';
|
4
|
+
import { FieldValues } from 'react-hook-form/dist/types/fields';
|
5
|
+
|
6
|
+
export interface FormDropzoneProps<Data extends FieldValues, Form extends UseFormReturn<Data>> extends FormRenderControlExtendProps<Data, Form>, DropzoneProps {
|
7
|
+
}
|
@@ -3,5 +3,5 @@ import { FormRenderControlExtendProps } from '../Form';
|
|
3
3
|
import { UseFormReturn } from 'react-hook-form';
|
4
4
|
import { FieldValues } from 'react-hook-form/dist/types/fields';
|
5
5
|
|
6
|
-
export interface FormSelectProps<Data extends FieldValues, Form extends UseFormReturn<Data>, ExtendOptionData> extends FormRenderControlExtendProps<Data, Form>, SelectProps<ExtendOptionData> {
|
6
|
+
export interface FormSelectProps<Data extends FieldValues, Form extends UseFormReturn<Data>, ExtendOptionData> extends FormRenderControlExtendProps<Data, Form>, Omit<SelectProps<ExtendOptionData>, 'onChange'> {
|
7
7
|
}
|
package/index.d.ts
CHANGED
package/index.mjs
CHANGED
@@ -78,7 +78,8 @@ import { ToggleGroup as cn, ToggleGroupItem as Mn } from "./ToggleGroup/ToggleGr
|
|
78
78
|
import { TooltipContent as An, TooltipProvider as In, TooltipRoot as wn, TooltipTrigger as hn } from "./Tooltip/TooltipRoot.mjs";
|
79
79
|
import { Tooltip as Fn } from "./Tooltip/Tooltip.mjs";
|
80
80
|
import { Dropzone as Bn } from "./Dropzone/Dropzone.mjs";
|
81
|
-
import { D as Rn, a as kn } from "./
|
81
|
+
import { D as Rn, a as kn } from "./DropzoneFilePreview-Dhtv8F4u.js";
|
82
|
+
import { FormDropzone as Nn } from "./FormDropzone/FormDropzone.mjs";
|
82
83
|
export {
|
83
84
|
e as Accordion,
|
84
85
|
t as AccordionContent,
|
@@ -195,6 +196,7 @@ export {
|
|
195
196
|
Rr as FormControl,
|
196
197
|
Jr as FormDatePicker,
|
197
198
|
kr as FormDescription,
|
199
|
+
Nn as FormDropzone,
|
198
200
|
Hr as FormField,
|
199
201
|
Qr as FormInput,
|
200
202
|
Nr as FormItem,
|
package/package.json
CHANGED
File without changes
|
File without changes
|