@aster-ui/prefixed 0.12.56 → 0.12.57

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 (34) hide show
  1. package/dist/components/DatePicker.d.ts +3 -1
  2. package/dist/components/DatePicker.js +84 -82
  3. package/dist/components/DatePicker.js.map +1 -1
  4. package/dist/components/Dropdown.d.ts +5 -4
  5. package/dist/components/Dropdown.js +239 -233
  6. package/dist/components/Dropdown.js.map +1 -1
  7. package/dist/components/InputNumber.d.ts +2 -0
  8. package/dist/components/InputNumber.js +92 -88
  9. package/dist/components/InputNumber.js.map +1 -1
  10. package/dist/components/Menu.d.ts +3 -1
  11. package/dist/components/Menu.js +49 -48
  12. package/dist/components/Menu.js.map +1 -1
  13. package/dist/components/Modal.d.ts +40 -18
  14. package/dist/components/Modal.js +180 -156
  15. package/dist/components/Modal.js.map +1 -1
  16. package/dist/components/OTPInput.d.ts +2 -0
  17. package/dist/components/OTPInput.js +46 -44
  18. package/dist/components/OTPInput.js.map +1 -1
  19. package/dist/components/Pagination.d.ts +3 -1
  20. package/dist/components/Pagination.js +104 -90
  21. package/dist/components/Pagination.js.map +1 -1
  22. package/dist/components/Popconfirm.d.ts +3 -1
  23. package/dist/components/Popconfirm.js +63 -59
  24. package/dist/components/Popconfirm.js.map +1 -1
  25. package/dist/components/Tabs.d.ts +3 -2
  26. package/dist/components/Tabs.js +74 -72
  27. package/dist/components/Tabs.js.map +1 -1
  28. package/dist/components/Transfer.d.ts +3 -1
  29. package/dist/components/Transfer.js +127 -120
  30. package/dist/components/Transfer.js.map +1 -1
  31. package/dist/components/Upload.d.ts +3 -1
  32. package/dist/components/Upload.js +144 -142
  33. package/dist/components/Upload.js.map +1 -1
  34. package/package.json +1 -1
@@ -1,40 +1,41 @@
1
1
  import { jsxs as p, jsx as t } from "react/jsx-runtime";
2
- import { useState as M, useRef as N } from "react";
3
- const Y = "d-loading", Z = "d-loading-spinner", ee = "d-loading-sm", U = "d-btn", O = "d-btn-xs", te = "d-btn-ghost", A = "d-btn-circle", re = "d-btn-error", ne = ({
4
- action: x,
5
- accept: I,
6
- multiple: S = !1,
2
+ import { forwardRef as re, useState as O, useRef as N } from "react";
3
+ const ne = "d-loading", se = "d-loading-spinner", ae = "d-loading-sm", A = "d-btn", R = "d-btn-xs", oe = "d-btn-ghost", S = "d-btn-circle", ie = "d-btn-error", ue = re(function({
4
+ action: $,
5
+ accept: T,
6
+ multiple: z = !1,
7
7
  maxCount: v,
8
8
  maxSize: b,
9
9
  listType: y = "text",
10
10
  fileList: L,
11
- defaultFileList: R = [],
12
- beforeUpload: $,
13
- onChange: m,
14
- onRemove: D,
15
- customRequest: F,
16
- showUploadList: T = !0,
11
+ defaultFileList: I = [],
12
+ beforeUpload: D,
13
+ onChange: f,
14
+ onRemove: F,
15
+ customRequest: k,
16
+ showUploadList: W = !0,
17
17
  disabled: i = !1,
18
- children: W,
19
- className: X = "",
20
- ...z
21
- }) => {
22
- const [G, H] = M(R), [k, w] = M(!1), E = N(null), j = N(0), h = N(0), c = L !== void 0 ? L : G, _ = () => (j.current += 1, `upload-${Date.now()}-${j.current}`), f = (e) => {
23
- L === void 0 && H(e);
24
- }, P = (e) => {
18
+ children: X,
19
+ "data-testid": w,
20
+ className: G = "",
21
+ ...H
22
+ }, _) {
23
+ const [q, J] = O(I), E = (e) => w ? `${w}-${e}` : void 0, [j, x] = O(!1), P = N(null), B = N(0), h = N(0), c = L !== void 0 ? L : q, K = () => (B.current += 1, `upload-${Date.now()}-${B.current}`), m = (e) => {
24
+ L === void 0 && J(e);
25
+ }, C = (e) => {
25
26
  const r = {
26
- uid: _(),
27
+ uid: K(),
27
28
  name: e.name,
28
29
  status: "uploading",
29
30
  percent: 0,
30
31
  originFileObj: e
31
32
  }, s = [...c, r];
32
- f(s), m?.({ file: r, fileList: s });
33
+ m(s), f?.({ file: r, fileList: s });
33
34
  const l = (o) => {
34
35
  const n = s.map(
35
36
  (a) => a.uid === r.uid ? { ...a, percent: o } : a
36
37
  );
37
- f(n), m?.({ file: { ...r, percent: o }, fileList: n });
38
+ m(n), f?.({ file: { ...r, percent: o }, fileList: n });
38
39
  }, u = (o) => {
39
40
  const n = {
40
41
  ...r,
@@ -44,7 +45,7 @@ const Y = "d-loading", Z = "d-loading-spinner", ee = "d-loading-sm", U = "d-btn"
44
45
  }, a = s.map(
45
46
  (d) => d.uid === r.uid ? n : d
46
47
  );
47
- f(a), m?.({ file: n, fileList: a });
48
+ m(a), f?.({ file: n, fileList: a });
48
49
  }, g = (o) => {
49
50
  const n = {
50
51
  ...r,
@@ -53,16 +54,16 @@ const Y = "d-loading", Z = "d-loading-spinner", ee = "d-loading-sm", U = "d-btn"
53
54
  }, a = s.map(
54
55
  (d) => d.uid === r.uid ? n : d
55
56
  );
56
- f(a), m?.({ file: n, fileList: a });
57
+ m(a), f?.({ file: n, fileList: a });
57
58
  };
58
- if (F)
59
- F({
59
+ if (k)
60
+ k({
60
61
  file: e,
61
62
  onProgress: l,
62
63
  onSuccess: u,
63
64
  onError: g
64
65
  });
65
- else if (x) {
66
+ else if ($) {
66
67
  const o = new FormData();
67
68
  o.append("file", e);
68
69
  const n = new XMLHttpRequest();
@@ -75,10 +76,10 @@ const Y = "d-loading", Z = "d-loading-spinner", ee = "d-loading-sm", U = "d-btn"
75
76
  n.status >= 200 && n.status < 300 ? u(n.response) : g(new Error(`Upload failed with status ${n.status}`));
76
77
  }), n.addEventListener("error", () => {
77
78
  g(new Error("Upload failed"));
78
- }), n.open("POST", x), n.send(o);
79
+ }), n.open("POST", $), n.send(o);
79
80
  } else
80
81
  u(null);
81
- }, B = async (e) => {
82
+ }, M = async (e) => {
82
83
  if (i) return;
83
84
  const r = Array.from(e);
84
85
  if (v && c.length + r.length > v) {
@@ -95,44 +96,125 @@ const Y = "d-loading", Z = "d-loading-spinner", ee = "d-loading-sm", U = "d-btn"
95
96
  return;
96
97
  }
97
98
  }
98
- if ($) {
99
+ if (D) {
99
100
  const s = await Promise.all(
100
- r.map((u) => $(u, r))
101
+ r.map((u) => D(u, r))
101
102
  );
102
- r.filter((u, g) => s[g] !== !1).forEach(P);
103
+ r.filter((u, g) => s[g] !== !1).forEach(C);
103
104
  } else
104
- r.forEach(P);
105
- }, q = (e) => {
106
- e.target.files && B(e.target.files), e.target.value = "";
107
- }, J = (e) => {
108
- e.preventDefault(), e.stopPropagation(), i || (h.current++, w(!0));
109
- }, K = (e) => {
110
- e.preventDefault(), e.stopPropagation(), i || (h.current--, h.current === 0 && w(!1));
105
+ r.forEach(C);
111
106
  }, Q = (e) => {
112
- e.preventDefault(), e.stopPropagation();
107
+ e.target.files && M(e.target.files), e.target.value = "";
113
108
  }, V = (e) => {
114
- e.preventDefault(), e.stopPropagation(), h.current = 0, w(!1), !i && e.dataTransfer.files && B(e.dataTransfer.files);
115
- }, C = async (e) => {
116
- if (D && await D(e) === !1)
109
+ e.preventDefault(), e.stopPropagation(), i || (h.current++, x(!0));
110
+ }, Y = (e) => {
111
+ e.preventDefault(), e.stopPropagation(), i || (h.current--, h.current === 0 && x(!1));
112
+ }, Z = (e) => {
113
+ e.preventDefault(), e.stopPropagation();
114
+ }, ee = (e) => {
115
+ e.preventDefault(), e.stopPropagation(), h.current = 0, x(!1), !i && e.dataTransfer.files && M(e.dataTransfer.files);
116
+ }, U = async (e) => {
117
+ if (F && await F(e) === !1)
117
118
  return;
118
119
  const r = c.filter((s) => s.uid !== e.uid);
119
- f(r), m?.({ file: e, fileList: r });
120
- };
121
- return /* @__PURE__ */ p("div", { className: X, "data-state": k ? "dragging" : "idle", ...z, children: [
120
+ m(r), f?.({ file: e, fileList: r });
121
+ }, te = () => !W || c.length === 0 ? null : y === "picture-card" ? /* @__PURE__ */ t("div", { className: "flex flex-wrap gap-2 mt-2", children: c.map((e) => /* @__PURE__ */ p(
122
+ "div",
123
+ {
124
+ className: "relative w-24 h-24 border border-base-content/20 rounded-lg overflow-hidden",
125
+ children: [
126
+ e.status === "uploading" && /* @__PURE__ */ t("div", { className: "absolute inset-0 bg-base-300/80 flex items-center justify-center", children: /* @__PURE__ */ t("span", { className: `${ne} ${se} ${ae}` }) }),
127
+ e.status === "done" && e.url && /* @__PURE__ */ t(
128
+ "img",
129
+ {
130
+ src: e.url,
131
+ alt: e.name,
132
+ className: "w-full h-full object-cover"
133
+ }
134
+ ),
135
+ e.status === "error" && /* @__PURE__ */ t("div", { className: "absolute inset-0 bg-error/10 flex items-center justify-center", children: /* @__PURE__ */ t(
136
+ "svg",
137
+ {
138
+ className: "w-8 h-8 text-error",
139
+ fill: "none",
140
+ viewBox: "0 0 24 24",
141
+ stroke: "currentColor",
142
+ children: /* @__PURE__ */ t(
143
+ "path",
144
+ {
145
+ strokeLinecap: "round",
146
+ strokeLinejoin: "round",
147
+ strokeWidth: 2,
148
+ d: "M6 18L18 6M6 6l12 12"
149
+ }
150
+ )
151
+ }
152
+ ) }),
153
+ /* @__PURE__ */ t(
154
+ "button",
155
+ {
156
+ onClick: () => U(e),
157
+ className: `absolute top-1 right-1 ${A} ${R} ${S} ${ie}`,
158
+ type: "button",
159
+ children: "✕"
160
+ }
161
+ )
162
+ ]
163
+ },
164
+ e.uid
165
+ )) }) : /* @__PURE__ */ t("div", { className: "mt-2 space-y-2", children: c.map((e) => /* @__PURE__ */ p(
166
+ "div",
167
+ {
168
+ className: "flex items-center gap-2 p-2 border border-base-content/10 rounded-lg",
169
+ children: [
170
+ y === "picture" && e.url && /* @__PURE__ */ t(
171
+ "img",
172
+ {
173
+ src: e.url,
174
+ alt: e.name,
175
+ className: "w-12 h-12 object-cover rounded"
176
+ }
177
+ ),
178
+ /* @__PURE__ */ p("div", { className: "flex-1 min-w-0", children: [
179
+ /* @__PURE__ */ t("div", { className: "truncate text-sm", children: e.name }),
180
+ e.status === "uploading" && e.percent !== void 0 && /* @__PURE__ */ t("div", { className: "w-full bg-base-200 rounded-full h-1.5 mt-1", children: /* @__PURE__ */ t(
181
+ "div",
182
+ {
183
+ className: "bg-primary h-1.5 rounded-full transition-all",
184
+ style: { width: `${e.percent}%` }
185
+ }
186
+ ) }),
187
+ e.status === "error" && /* @__PURE__ */ t("div", { className: "text-xs text-error mt-1", children: "Upload failed" })
188
+ ] }),
189
+ /* @__PURE__ */ t(
190
+ "button",
191
+ {
192
+ onClick: () => U(e),
193
+ className: `${A} ${R} ${oe} ${S}`,
194
+ type: "button",
195
+ children: "✕"
196
+ }
197
+ )
198
+ ]
199
+ },
200
+ e.uid
201
+ )) });
202
+ return /* @__PURE__ */ p("div", { ref: _, className: G, "data-state": j ? "dragging" : "idle", "data-testid": w, ...H, children: [
122
203
  /* @__PURE__ */ t(
123
204
  "div",
124
205
  {
125
- onDragEnter: J,
126
- onDragOver: Q,
127
- onDragLeave: K,
128
- onDrop: V,
129
- onClick: () => !i && E.current?.click(),
206
+ onDragEnter: V,
207
+ onDragOver: Z,
208
+ onDragLeave: Y,
209
+ onDrop: ee,
210
+ onClick: () => !i && P.current?.click(),
130
211
  className: `
131
212
  border-2 border-dashed rounded-lg p-4 cursor-pointer transition-colors
132
- ${k ? "border-primary bg-primary/5" : "border-base-content/20"}
213
+ ${j ? "border-primary bg-primary/5" : "border-base-content/20"}
133
214
  ${i ? "opacity-50 cursor-not-allowed" : "hover:border-primary"}
134
215
  `,
135
- children: W || /* @__PURE__ */ p("div", { className: "flex flex-col items-center gap-2 py-4", children: [
216
+ "data-testid": E("dropzone"),
217
+ children: X || /* @__PURE__ */ p("div", { className: "flex flex-col items-center gap-2 py-4", children: [
136
218
  /* @__PURE__ */ t(
137
219
  "svg",
138
220
  {
@@ -161,101 +243,21 @@ const Y = "d-loading", Z = "d-loading-spinner", ee = "d-loading-sm", U = "d-btn"
161
243
  /* @__PURE__ */ t(
162
244
  "input",
163
245
  {
164
- ref: E,
246
+ ref: P,
165
247
  type: "file",
166
- accept: I,
167
- multiple: S,
168
- onChange: q,
248
+ accept: T,
249
+ multiple: z,
250
+ onChange: Q,
169
251
  disabled: i,
170
- className: "hidden"
252
+ className: "hidden",
253
+ "data-testid": E("input")
171
254
  }
172
255
  ),
173
- !T || c.length === 0 ? null : y === "picture-card" ? /* @__PURE__ */ t("div", { className: "flex flex-wrap gap-2 mt-2", children: c.map((e) => /* @__PURE__ */ p(
174
- "div",
175
- {
176
- className: "relative w-24 h-24 border border-base-content/20 rounded-lg overflow-hidden",
177
- children: [
178
- e.status === "uploading" && /* @__PURE__ */ t("div", { className: "absolute inset-0 bg-base-300/80 flex items-center justify-center", children: /* @__PURE__ */ t("span", { className: `${Y} ${Z} ${ee}` }) }),
179
- e.status === "done" && e.url && /* @__PURE__ */ t(
180
- "img",
181
- {
182
- src: e.url,
183
- alt: e.name,
184
- className: "w-full h-full object-cover"
185
- }
186
- ),
187
- e.status === "error" && /* @__PURE__ */ t("div", { className: "absolute inset-0 bg-error/10 flex items-center justify-center", children: /* @__PURE__ */ t(
188
- "svg",
189
- {
190
- className: "w-8 h-8 text-error",
191
- fill: "none",
192
- viewBox: "0 0 24 24",
193
- stroke: "currentColor",
194
- children: /* @__PURE__ */ t(
195
- "path",
196
- {
197
- strokeLinecap: "round",
198
- strokeLinejoin: "round",
199
- strokeWidth: 2,
200
- d: "M6 18L18 6M6 6l12 12"
201
- }
202
- )
203
- }
204
- ) }),
205
- /* @__PURE__ */ t(
206
- "button",
207
- {
208
- onClick: () => C(e),
209
- className: `absolute top-1 right-1 ${U} ${O} ${A} ${re}`,
210
- type: "button",
211
- children: "✕"
212
- }
213
- )
214
- ]
215
- },
216
- e.uid
217
- )) }) : /* @__PURE__ */ t("div", { className: "mt-2 space-y-2", children: c.map((e) => /* @__PURE__ */ p(
218
- "div",
219
- {
220
- className: "flex items-center gap-2 p-2 border border-base-content/10 rounded-lg",
221
- children: [
222
- y === "picture" && e.url && /* @__PURE__ */ t(
223
- "img",
224
- {
225
- src: e.url,
226
- alt: e.name,
227
- className: "w-12 h-12 object-cover rounded"
228
- }
229
- ),
230
- /* @__PURE__ */ p("div", { className: "flex-1 min-w-0", children: [
231
- /* @__PURE__ */ t("div", { className: "truncate text-sm", children: e.name }),
232
- e.status === "uploading" && e.percent !== void 0 && /* @__PURE__ */ t("div", { className: "w-full bg-base-200 rounded-full h-1.5 mt-1", children: /* @__PURE__ */ t(
233
- "div",
234
- {
235
- className: "bg-primary h-1.5 rounded-full transition-all",
236
- style: { width: `${e.percent}%` }
237
- }
238
- ) }),
239
- e.status === "error" && /* @__PURE__ */ t("div", { className: "text-xs text-error mt-1", children: "Upload failed" })
240
- ] }),
241
- /* @__PURE__ */ t(
242
- "button",
243
- {
244
- onClick: () => C(e),
245
- className: `${U} ${O} ${te} ${A}`,
246
- type: "button",
247
- children: "✕"
248
- }
249
- )
250
- ]
251
- },
252
- e.uid
253
- )) })
256
+ te()
254
257
  ] });
255
- };
256
- ne.displayName = "Upload";
258
+ });
257
259
  export {
258
- ne as Upload,
259
- ne as default
260
+ ue as Upload,
261
+ ue as default
260
262
  };
261
263
  //# sourceMappingURL=Upload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Upload.js","sources":["../../src/components/Upload.tsx"],"sourcesContent":["import React, { useState, useRef, DragEvent, ChangeEvent } from 'react'\n\n// DaisyUI classes\nconst dLoading = 'd-loading'\nconst dLoadingSpinner = 'd-loading-spinner'\nconst dLoadingSm = 'd-loading-sm'\nconst dBtn = 'd-btn'\nconst dBtnXs = 'd-btn-xs'\nconst dBtnGhost = 'd-btn-ghost'\nconst dBtnCircle = 'd-btn-circle'\nconst dBtnError = 'd-btn-error'\n\nexport interface UploadFile {\n uid: string\n name: string\n status: 'uploading' | 'done' | 'error'\n percent?: number\n url?: string\n response?: any\n error?: any\n originFileObj?: File\n}\n\nexport interface UploadProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n action?: string\n accept?: string\n multiple?: boolean\n maxCount?: number\n maxSize?: number // in bytes\n listType?: 'text' | 'picture' | 'picture-card'\n fileList?: UploadFile[]\n defaultFileList?: UploadFile[]\n beforeUpload?: (file: File, fileList: File[]) => boolean | Promise<boolean>\n onChange?: (info: { file: UploadFile; fileList: UploadFile[] }) => void\n onRemove?: (file: UploadFile) => void | boolean | Promise<void | boolean>\n customRequest?: (options: {\n file: File\n onProgress: (percent: number) => void\n onSuccess: (response: any) => void\n onError: (error: any) => void\n }) => void\n showUploadList?: boolean\n disabled?: boolean\n children?: React.ReactNode\n}\n\nexport const Upload: React.FC<UploadProps> = ({\n action,\n accept,\n multiple = false,\n maxCount,\n maxSize,\n listType = 'text',\n fileList: controlledFileList,\n defaultFileList = [],\n beforeUpload,\n onChange,\n onRemove,\n customRequest,\n showUploadList = true,\n disabled = false,\n children,\n className = '',\n ...rest\n}) => {\n const [internalFileList, setInternalFileList] = useState<UploadFile[]>(defaultFileList)\n const [isDragging, setIsDragging] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n const uidCounter = useRef(0)\n const dragCounter = useRef(0)\n\n const fileList = controlledFileList !== undefined ? controlledFileList : internalFileList\n\n const generateUid = () => {\n uidCounter.current += 1\n return `upload-${Date.now()}-${uidCounter.current}`\n }\n\n const updateFileList = (newFileList: UploadFile[]) => {\n if (controlledFileList === undefined) {\n setInternalFileList(newFileList)\n }\n }\n\n const uploadFile = (file: File) => {\n const uploadFile: UploadFile = {\n uid: generateUid(),\n name: file.name,\n status: 'uploading',\n percent: 0,\n originFileObj: file,\n }\n\n const newFileList = [...fileList, uploadFile]\n updateFileList(newFileList)\n onChange?.({ file: uploadFile, fileList: newFileList })\n\n const updateProgress = (percent: number) => {\n const updatedList = newFileList.map((f) =>\n f.uid === uploadFile.uid ? { ...f, percent } : f\n )\n updateFileList(updatedList)\n onChange?.({ file: { ...uploadFile, percent }, fileList: updatedList })\n }\n\n const onSuccess = (response: any) => {\n const successFile = {\n ...uploadFile,\n status: 'done' as const,\n percent: 100,\n response,\n }\n const updatedList = newFileList.map((f) =>\n f.uid === uploadFile.uid ? successFile : f\n )\n updateFileList(updatedList)\n onChange?.({ file: successFile, fileList: updatedList })\n }\n\n const onError = (error: any) => {\n const errorFile = {\n ...uploadFile,\n status: 'error' as const,\n error,\n }\n const updatedList = newFileList.map((f) =>\n f.uid === uploadFile.uid ? errorFile : f\n )\n updateFileList(updatedList)\n onChange?.({ file: errorFile, fileList: updatedList })\n }\n\n if (customRequest) {\n customRequest({\n file,\n onProgress: updateProgress,\n onSuccess,\n onError,\n })\n } else if (action) {\n const formData = new FormData()\n formData.append('file', file)\n\n const xhr = new XMLHttpRequest()\n\n xhr.upload.addEventListener('progress', (e) => {\n if (e.lengthComputable) {\n const percent = Math.round((e.loaded / e.total) * 100)\n updateProgress(percent)\n }\n })\n\n xhr.addEventListener('load', () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n onSuccess(xhr.response)\n } else {\n onError(new Error(`Upload failed with status ${xhr.status}`))\n }\n })\n\n xhr.addEventListener('error', () => {\n onError(new Error('Upload failed'))\n })\n\n xhr.open('POST', action)\n xhr.send(formData)\n } else {\n // No upload action, just mark as done\n onSuccess(null)\n }\n }\n\n const handleFiles = async (files: FileList | File[]) => {\n if (disabled) return\n\n const fileArray = Array.from(files)\n\n // Check maxCount\n if (maxCount && fileList.length + fileArray.length > maxCount) {\n console.warn(`Cannot upload more than ${maxCount} files`)\n return\n }\n\n // Check maxSize\n if (maxSize) {\n const oversizedFiles = fileArray.filter((file) => file.size > maxSize)\n if (oversizedFiles.length > 0) {\n console.warn(\n `Files exceed maximum size of ${maxSize} bytes:`,\n oversizedFiles.map((f) => f.name)\n )\n return\n }\n }\n\n // beforeUpload hook\n if (beforeUpload) {\n const results = await Promise.all(\n fileArray.map((file) => beforeUpload(file, fileArray))\n )\n const filteredFiles = fileArray.filter((_, index) => results[index] !== false)\n filteredFiles.forEach(uploadFile)\n } else {\n fileArray.forEach(uploadFile)\n }\n }\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.files) {\n handleFiles(e.target.files)\n }\n // Reset input value to allow uploading the same file again\n e.target.value = ''\n }\n\n const handleDragEnter = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!disabled) {\n dragCounter.current++\n setIsDragging(true)\n }\n }\n\n const handleDragLeave = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!disabled) {\n dragCounter.current--\n if (dragCounter.current === 0) {\n setIsDragging(false)\n }\n }\n }\n\n const handleDragOver = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }\n\n const handleDrop = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n dragCounter.current = 0\n setIsDragging(false)\n\n if (disabled) return\n\n if (e.dataTransfer.files) {\n handleFiles(e.dataTransfer.files)\n }\n }\n\n const handleRemove = async (file: UploadFile) => {\n if (onRemove) {\n const result = await onRemove(file)\n if (result === false) return\n }\n\n const newFileList = fileList.filter((f) => f.uid !== file.uid)\n updateFileList(newFileList)\n onChange?.({ file, fileList: newFileList })\n }\n\n const renderFileList = () => {\n if (!showUploadList || fileList.length === 0) return null\n\n if (listType === 'picture-card') {\n return (\n <div className=\"flex flex-wrap gap-2 mt-2\">\n {fileList.map((file) => (\n <div\n key={file.uid}\n className=\"relative w-24 h-24 border border-base-content/20 rounded-lg overflow-hidden\"\n >\n {file.status === 'uploading' && (\n <div className=\"absolute inset-0 bg-base-300/80 flex items-center justify-center\">\n <span className={`${dLoading} ${dLoadingSpinner} ${dLoadingSm}`}></span>\n </div>\n )}\n {file.status === 'done' && file.url && (\n <img\n src={file.url}\n alt={file.name}\n className=\"w-full h-full object-cover\"\n />\n )}\n {file.status === 'error' && (\n <div className=\"absolute inset-0 bg-error/10 flex items-center justify-center\">\n <svg\n className=\"w-8 h-8 text-error\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </div>\n )}\n <button\n onClick={() => handleRemove(file)}\n className={`absolute top-1 right-1 ${dBtn} ${dBtnXs} ${dBtnCircle} ${dBtnError}`}\n type=\"button\"\n >\n ✕\n </button>\n </div>\n ))}\n </div>\n )\n }\n\n return (\n <div className=\"mt-2 space-y-2\">\n {fileList.map((file) => (\n <div\n key={file.uid}\n className=\"flex items-center gap-2 p-2 border border-base-content/10 rounded-lg\"\n >\n {listType === 'picture' && file.url && (\n <img\n src={file.url}\n alt={file.name}\n className=\"w-12 h-12 object-cover rounded\"\n />\n )}\n <div className=\"flex-1 min-w-0\">\n <div className=\"truncate text-sm\">{file.name}</div>\n {file.status === 'uploading' && file.percent !== undefined && (\n <div className=\"w-full bg-base-200 rounded-full h-1.5 mt-1\">\n <div\n className=\"bg-primary h-1.5 rounded-full transition-all\"\n style={{ width: `${file.percent}%` }}\n />\n </div>\n )}\n {file.status === 'error' && (\n <div className=\"text-xs text-error mt-1\">Upload failed</div>\n )}\n </div>\n <button\n onClick={() => handleRemove(file)}\n className={`${dBtn} ${dBtnXs} ${dBtnGhost} ${dBtnCircle}`}\n type=\"button\"\n >\n ✕\n </button>\n </div>\n ))}\n </div>\n )\n }\n\n return (\n <div className={className} data-state={isDragging ? 'dragging' : 'idle'} {...rest}>\n <div\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n onClick={() => !disabled && fileInputRef.current?.click()}\n className={`\n border-2 border-dashed rounded-lg p-4 cursor-pointer transition-colors\n ${isDragging ? 'border-primary bg-primary/5' : 'border-base-content/20'}\n ${disabled ? 'opacity-50 cursor-not-allowed' : 'hover:border-primary'}\n `}\n >\n {children || (\n <div className=\"flex flex-col items-center gap-2 py-4\">\n <svg\n className=\"w-12 h-12 text-base-content/40\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12\"\n />\n </svg>\n <div className=\"text-sm text-center\">\n <span className=\"font-semibold text-primary\">Click to upload</span>\n <span className=\"text-base-content/60\"> or drag and drop</span>\n </div>\n </div>\n )}\n </div>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleChange}\n disabled={disabled}\n className=\"hidden\"\n />\n\n {renderFileList()}\n </div>\n )\n}\n\nUpload.displayName = 'Upload'\n\nexport default Upload\n"],"names":["dLoading","dLoadingSpinner","dLoadingSm","dBtn","dBtnXs","dBtnGhost","dBtnCircle","dBtnError","Upload","action","accept","multiple","maxCount","maxSize","listType","controlledFileList","defaultFileList","beforeUpload","onChange","onRemove","customRequest","showUploadList","disabled","children","className","rest","internalFileList","setInternalFileList","useState","isDragging","setIsDragging","fileInputRef","useRef","uidCounter","dragCounter","fileList","generateUid","updateFileList","newFileList","uploadFile","file","updateProgress","percent","updatedList","f","onSuccess","response","successFile","onError","error","errorFile","formData","xhr","e","handleFiles","files","fileArray","oversizedFiles","results","_","index","handleChange","handleDragEnter","handleDragLeave","handleDragOver","handleDrop","handleRemove","jsxs","jsx"],"mappings":"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"}
1
+ {"version":3,"file":"Upload.js","sources":["../../src/components/Upload.tsx"],"sourcesContent":["import React, { useState, useRef, DragEvent, ChangeEvent, forwardRef } from 'react'\n\n// DaisyUI classes\nconst dLoading = 'd-loading'\nconst dLoadingSpinner = 'd-loading-spinner'\nconst dLoadingSm = 'd-loading-sm'\nconst dBtn = 'd-btn'\nconst dBtnXs = 'd-btn-xs'\nconst dBtnGhost = 'd-btn-ghost'\nconst dBtnCircle = 'd-btn-circle'\nconst dBtnError = 'd-btn-error'\n\nexport interface UploadFile {\n uid: string\n name: string\n status: 'uploading' | 'done' | 'error'\n percent?: number\n url?: string\n response?: any\n error?: any\n originFileObj?: File\n}\n\nexport interface UploadProps extends Omit<React.HTMLAttributes<HTMLDivElement>, 'onChange'> {\n action?: string\n accept?: string\n multiple?: boolean\n maxCount?: number\n maxSize?: number // in bytes\n listType?: 'text' | 'picture' | 'picture-card'\n fileList?: UploadFile[]\n defaultFileList?: UploadFile[]\n beforeUpload?: (file: File, fileList: File[]) => boolean | Promise<boolean>\n onChange?: (info: { file: UploadFile; fileList: UploadFile[] }) => void\n onRemove?: (file: UploadFile) => void | boolean | Promise<void | boolean>\n customRequest?: (options: {\n file: File\n onProgress: (percent: number) => void\n onSuccess: (response: any) => void\n onError: (error: any) => void\n }) => void\n showUploadList?: boolean\n disabled?: boolean\n children?: React.ReactNode\n /** Test ID prefix for child elements */\n 'data-testid'?: string\n}\n\nexport const Upload = forwardRef<HTMLDivElement, UploadProps>(function Upload(\n {\n action,\n accept,\n multiple = false,\n maxCount,\n maxSize,\n listType = 'text',\n fileList: controlledFileList,\n defaultFileList = [],\n beforeUpload,\n onChange,\n onRemove,\n customRequest,\n showUploadList = true,\n disabled = false,\n children,\n 'data-testid': testId,\n className = '',\n ...rest\n },\n ref\n) {\n const [internalFileList, setInternalFileList] = useState<UploadFile[]>(defaultFileList)\n\n // Helper for test IDs\n const getTestId = (suffix: string) => (testId ? `${testId}-${suffix}` : undefined)\n const [isDragging, setIsDragging] = useState(false)\n const fileInputRef = useRef<HTMLInputElement>(null)\n const uidCounter = useRef(0)\n const dragCounter = useRef(0)\n\n const fileList = controlledFileList !== undefined ? controlledFileList : internalFileList\n\n const generateUid = () => {\n uidCounter.current += 1\n return `upload-${Date.now()}-${uidCounter.current}`\n }\n\n const updateFileList = (newFileList: UploadFile[]) => {\n if (controlledFileList === undefined) {\n setInternalFileList(newFileList)\n }\n }\n\n const uploadFile = (file: File) => {\n const uploadFile: UploadFile = {\n uid: generateUid(),\n name: file.name,\n status: 'uploading',\n percent: 0,\n originFileObj: file,\n }\n\n const newFileList = [...fileList, uploadFile]\n updateFileList(newFileList)\n onChange?.({ file: uploadFile, fileList: newFileList })\n\n const updateProgress = (percent: number) => {\n const updatedList = newFileList.map((f) =>\n f.uid === uploadFile.uid ? { ...f, percent } : f\n )\n updateFileList(updatedList)\n onChange?.({ file: { ...uploadFile, percent }, fileList: updatedList })\n }\n\n const onSuccess = (response: any) => {\n const successFile = {\n ...uploadFile,\n status: 'done' as const,\n percent: 100,\n response,\n }\n const updatedList = newFileList.map((f) =>\n f.uid === uploadFile.uid ? successFile : f\n )\n updateFileList(updatedList)\n onChange?.({ file: successFile, fileList: updatedList })\n }\n\n const onError = (error: any) => {\n const errorFile = {\n ...uploadFile,\n status: 'error' as const,\n error,\n }\n const updatedList = newFileList.map((f) =>\n f.uid === uploadFile.uid ? errorFile : f\n )\n updateFileList(updatedList)\n onChange?.({ file: errorFile, fileList: updatedList })\n }\n\n if (customRequest) {\n customRequest({\n file,\n onProgress: updateProgress,\n onSuccess,\n onError,\n })\n } else if (action) {\n const formData = new FormData()\n formData.append('file', file)\n\n const xhr = new XMLHttpRequest()\n\n xhr.upload.addEventListener('progress', (e) => {\n if (e.lengthComputable) {\n const percent = Math.round((e.loaded / e.total) * 100)\n updateProgress(percent)\n }\n })\n\n xhr.addEventListener('load', () => {\n if (xhr.status >= 200 && xhr.status < 300) {\n onSuccess(xhr.response)\n } else {\n onError(new Error(`Upload failed with status ${xhr.status}`))\n }\n })\n\n xhr.addEventListener('error', () => {\n onError(new Error('Upload failed'))\n })\n\n xhr.open('POST', action)\n xhr.send(formData)\n } else {\n // No upload action, just mark as done\n onSuccess(null)\n }\n }\n\n const handleFiles = async (files: FileList | File[]) => {\n if (disabled) return\n\n const fileArray = Array.from(files)\n\n // Check maxCount\n if (maxCount && fileList.length + fileArray.length > maxCount) {\n console.warn(`Cannot upload more than ${maxCount} files`)\n return\n }\n\n // Check maxSize\n if (maxSize) {\n const oversizedFiles = fileArray.filter((file) => file.size > maxSize)\n if (oversizedFiles.length > 0) {\n console.warn(\n `Files exceed maximum size of ${maxSize} bytes:`,\n oversizedFiles.map((f) => f.name)\n )\n return\n }\n }\n\n // beforeUpload hook\n if (beforeUpload) {\n const results = await Promise.all(\n fileArray.map((file) => beforeUpload(file, fileArray))\n )\n const filteredFiles = fileArray.filter((_, index) => results[index] !== false)\n filteredFiles.forEach(uploadFile)\n } else {\n fileArray.forEach(uploadFile)\n }\n }\n\n const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.files) {\n handleFiles(e.target.files)\n }\n // Reset input value to allow uploading the same file again\n e.target.value = ''\n }\n\n const handleDragEnter = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!disabled) {\n dragCounter.current++\n setIsDragging(true)\n }\n }\n\n const handleDragLeave = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n if (!disabled) {\n dragCounter.current--\n if (dragCounter.current === 0) {\n setIsDragging(false)\n }\n }\n }\n\n const handleDragOver = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n }\n\n const handleDrop = (e: DragEvent) => {\n e.preventDefault()\n e.stopPropagation()\n dragCounter.current = 0\n setIsDragging(false)\n\n if (disabled) return\n\n if (e.dataTransfer.files) {\n handleFiles(e.dataTransfer.files)\n }\n }\n\n const handleRemove = async (file: UploadFile) => {\n if (onRemove) {\n const result = await onRemove(file)\n if (result === false) return\n }\n\n const newFileList = fileList.filter((f) => f.uid !== file.uid)\n updateFileList(newFileList)\n onChange?.({ file, fileList: newFileList })\n }\n\n const renderFileList = () => {\n if (!showUploadList || fileList.length === 0) return null\n\n if (listType === 'picture-card') {\n return (\n <div className=\"flex flex-wrap gap-2 mt-2\">\n {fileList.map((file) => (\n <div\n key={file.uid}\n className=\"relative w-24 h-24 border border-base-content/20 rounded-lg overflow-hidden\"\n >\n {file.status === 'uploading' && (\n <div className=\"absolute inset-0 bg-base-300/80 flex items-center justify-center\">\n <span className={`${dLoading} ${dLoadingSpinner} ${dLoadingSm}`}></span>\n </div>\n )}\n {file.status === 'done' && file.url && (\n <img\n src={file.url}\n alt={file.name}\n className=\"w-full h-full object-cover\"\n />\n )}\n {file.status === 'error' && (\n <div className=\"absolute inset-0 bg-error/10 flex items-center justify-center\">\n <svg\n className=\"w-8 h-8 text-error\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </div>\n )}\n <button\n onClick={() => handleRemove(file)}\n className={`absolute top-1 right-1 ${dBtn} ${dBtnXs} ${dBtnCircle} ${dBtnError}`}\n type=\"button\"\n >\n ✕\n </button>\n </div>\n ))}\n </div>\n )\n }\n\n return (\n <div className=\"mt-2 space-y-2\">\n {fileList.map((file) => (\n <div\n key={file.uid}\n className=\"flex items-center gap-2 p-2 border border-base-content/10 rounded-lg\"\n >\n {listType === 'picture' && file.url && (\n <img\n src={file.url}\n alt={file.name}\n className=\"w-12 h-12 object-cover rounded\"\n />\n )}\n <div className=\"flex-1 min-w-0\">\n <div className=\"truncate text-sm\">{file.name}</div>\n {file.status === 'uploading' && file.percent !== undefined && (\n <div className=\"w-full bg-base-200 rounded-full h-1.5 mt-1\">\n <div\n className=\"bg-primary h-1.5 rounded-full transition-all\"\n style={{ width: `${file.percent}%` }}\n />\n </div>\n )}\n {file.status === 'error' && (\n <div className=\"text-xs text-error mt-1\">Upload failed</div>\n )}\n </div>\n <button\n onClick={() => handleRemove(file)}\n className={`${dBtn} ${dBtnXs} ${dBtnGhost} ${dBtnCircle}`}\n type=\"button\"\n >\n ✕\n </button>\n </div>\n ))}\n </div>\n )\n }\n\n return (\n <div ref={ref} className={className} data-state={isDragging ? 'dragging' : 'idle'} data-testid={testId} {...rest}>\n <div\n onDragEnter={handleDragEnter}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n onClick={() => !disabled && fileInputRef.current?.click()}\n className={`\n border-2 border-dashed rounded-lg p-4 cursor-pointer transition-colors\n ${isDragging ? 'border-primary bg-primary/5' : 'border-base-content/20'}\n ${disabled ? 'opacity-50 cursor-not-allowed' : 'hover:border-primary'}\n `}\n data-testid={getTestId('dropzone')}\n >\n {children || (\n <div className=\"flex flex-col items-center gap-2 py-4\">\n <svg\n className=\"w-12 h-12 text-base-content/40\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M7 16a4 4 0 01-.88-7.903A5 5 0 1115.9 6L16 6a5 5 0 011 9.9M15 13l-3-3m0 0l-3 3m3-3v12\"\n />\n </svg>\n <div className=\"text-sm text-center\">\n <span className=\"font-semibold text-primary\">Click to upload</span>\n <span className=\"text-base-content/60\"> or drag and drop</span>\n </div>\n </div>\n )}\n </div>\n\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleChange}\n disabled={disabled}\n className=\"hidden\"\n data-testid={getTestId('input')}\n />\n\n {renderFileList()}\n </div>\n )\n})\n\nexport default Upload\n"],"names":["dLoading","dLoadingSpinner","dLoadingSm","dBtn","dBtnXs","dBtnGhost","dBtnCircle","dBtnError","Upload","forwardRef","action","accept","multiple","maxCount","maxSize","listType","controlledFileList","defaultFileList","beforeUpload","onChange","onRemove","customRequest","showUploadList","disabled","children","testId","className","rest","ref","internalFileList","setInternalFileList","useState","getTestId","suffix","isDragging","setIsDragging","fileInputRef","useRef","uidCounter","dragCounter","fileList","generateUid","updateFileList","newFileList","uploadFile","file","updateProgress","percent","updatedList","f","onSuccess","response","successFile","onError","error","errorFile","formData","xhr","e","handleFiles","files","fileArray","oversizedFiles","results","_","index","handleChange","handleDragEnter","handleDragLeave","handleDragOver","handleDrop","handleRemove","renderFileList","jsxs","jsx"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aster-ui/prefixed",
3
- "version": "0.12.56",
3
+ "version": "0.12.57",
4
4
  "description": "React UI component library with DaisyUI (prefixed classes)",
5
5
  "homepage": "https://asterui.com",
6
6
  "repository": {