@multiplatform.one/frappe-ui 7.90.6 → 8.1.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 (266) hide show
  1. package/dist/cjs/FrappeListView.cjs +0 -2
  2. package/dist/cjs/FrappeListView.native.js +0 -2
  3. package/dist/cjs/FrappeListView.native.js.map +1 -1
  4. package/dist/cjs/desk/index.cjs +41 -0
  5. package/dist/cjs/desk/index.native.js +44 -0
  6. package/dist/cjs/desk/index.native.js.map +1 -0
  7. package/dist/cjs/fields/Link.cjs +0 -4
  8. package/dist/cjs/fields/Link.native.js +0 -4
  9. package/dist/cjs/fields/Link.native.js.map +1 -1
  10. package/dist/cjs/index.cjs +0 -2
  11. package/dist/cjs/index.gnome.cjs +203 -0
  12. package/dist/cjs/index.gnome.native.js +206 -0
  13. package/dist/cjs/index.gnome.native.js.map +1 -0
  14. package/dist/cjs/index.native.js +0 -2
  15. package/dist/cjs/index.native.js.map +1 -1
  16. package/dist/esm/FrappeListView.mjs +0 -2
  17. package/dist/esm/FrappeListView.mjs.map +1 -1
  18. package/dist/esm/FrappeListView.native.js +0 -2
  19. package/dist/esm/FrappeListView.native.js.map +1 -1
  20. package/dist/esm/desk/index.mjs +8 -0
  21. package/dist/esm/desk/index.mjs.map +1 -0
  22. package/dist/esm/desk/index.native.js +8 -0
  23. package/dist/esm/desk/index.native.js.map +1 -0
  24. package/dist/esm/fields/Link.mjs +0 -4
  25. package/dist/esm/fields/Link.mjs.map +1 -1
  26. package/dist/esm/fields/Link.native.js +0 -4
  27. package/dist/esm/fields/Link.native.js.map +1 -1
  28. package/dist/esm/index.gnome.mjs +59 -0
  29. package/dist/esm/index.gnome.mjs.map +1 -0
  30. package/dist/esm/index.gnome.native.js +59 -0
  31. package/dist/esm/index.gnome.native.js.map +1 -0
  32. package/dist/esm/index.mjs +1 -2
  33. package/dist/esm/index.mjs.map +1 -1
  34. package/dist/esm/index.native.js +1 -2
  35. package/dist/esm/index.native.js.map +1 -1
  36. package/dist/jsx/ChartCard.native.js.map +1 -1
  37. package/dist/jsx/FileBrowser/AttachLibrary.native.js.map +1 -1
  38. package/dist/jsx/FileBrowser/folderTree.native.js.map +1 -1
  39. package/dist/jsx/FileBrowser/index.native.js.map +1 -1
  40. package/dist/jsx/FileBrowser/types.native.js.map +1 -1
  41. package/dist/jsx/FileBrowser/viewPersistence.native.js.map +1 -1
  42. package/dist/jsx/FormSidebar.native.js.map +1 -1
  43. package/dist/jsx/FrappeAssignment.native.js.map +1 -1
  44. package/dist/jsx/FrappeCalendar.native.js.map +1 -1
  45. package/dist/jsx/FrappeChartCard.native.js.map +1 -1
  46. package/dist/jsx/FrappeConnectionIndicator.native.js.map +1 -1
  47. package/dist/jsx/FrappeDashboard.native.js.map +1 -1
  48. package/dist/jsx/FrappeForm.native.js +1 -1
  49. package/dist/jsx/FrappeForm.native.js.map +1 -1
  50. package/dist/jsx/FrappeFormActions.native.js.map +1 -1
  51. package/dist/jsx/FrappeFormConnections.native.js.map +1 -1
  52. package/dist/jsx/FrappeGantt.native.js.map +1 -1
  53. package/dist/jsx/FrappeImageView.native.js.map +1 -1
  54. package/dist/jsx/FrappeInsights.native.js.map +1 -1
  55. package/dist/jsx/FrappeKPICard.native.js.map +1 -1
  56. package/dist/jsx/FrappeKanban.native.js.map +1 -1
  57. package/dist/jsx/FrappeLikedBy.native.js.map +1 -1
  58. package/dist/jsx/FrappeList.native.js.map +1 -1
  59. package/dist/jsx/FrappeListView.mjs +0 -2
  60. package/dist/jsx/FrappeListView.mjs.map +1 -1
  61. package/dist/jsx/FrappeListView.native.js +0 -2
  62. package/dist/jsx/FrappeListView.native.js.map +1 -1
  63. package/dist/jsx/FrappeNotConfigured.native.js.map +1 -1
  64. package/dist/jsx/FrappeProvider.native.js.map +1 -1
  65. package/dist/jsx/FrappeReconnectIndicator.native.js.map +1 -1
  66. package/dist/jsx/FrappeRecordView.native.js.map +1 -1
  67. package/dist/jsx/FrappeReportBuilder.native.js.map +1 -1
  68. package/dist/jsx/FrappeReportView.native.js +3 -3
  69. package/dist/jsx/FrappeReportView.native.js.map +1 -1
  70. package/dist/jsx/FrappeRowsReader.native.js.map +1 -1
  71. package/dist/jsx/FrappeTable.native.js.map +1 -1
  72. package/dist/jsx/FrappeTreeView.native.js.map +1 -1
  73. package/dist/jsx/SyncErrorNotice.native.js.map +1 -1
  74. package/dist/jsx/commentActions.native.js.map +1 -1
  75. package/dist/jsx/components/attachments.native.js.map +1 -1
  76. package/dist/jsx/components/tags.native.js.map +1 -1
  77. package/dist/jsx/components/timeline.native.js.map +1 -1
  78. package/dist/jsx/dependsOn.native.js.map +1 -1
  79. package/dist/jsx/desk/DeskFormPage.native.js.map +1 -1
  80. package/dist/jsx/desk/DeskFormSidebar.native.js.map +1 -1
  81. package/dist/jsx/desk/DeskListPage.native.js.map +1 -1
  82. package/dist/jsx/desk/DeskShell.native.js.map +1 -1
  83. package/dist/jsx/desk/DeskSidebar.native.js.map +1 -1
  84. package/dist/jsx/desk/awesomebar.native.js.map +1 -1
  85. package/dist/jsx/desk/index.mjs +8 -0
  86. package/dist/jsx/desk/index.mjs.map +1 -0
  87. package/dist/jsx/desk/index.native.js +44 -0
  88. package/dist/jsx/desk/index.native.js.map +1 -0
  89. package/dist/jsx/fieldOverrides.native.js.map +1 -1
  90. package/dist/jsx/fieldRegistry.native.js +31 -31
  91. package/dist/jsx/fieldRegistry.native.js.map +1 -1
  92. package/dist/jsx/fields/Barcode/index.native.js.map +1 -1
  93. package/dist/jsx/fields/Check/index.native.js.map +1 -1
  94. package/dist/jsx/fields/CodeEditor/index.native.js.map +1 -1
  95. package/dist/jsx/fields/Color/index.native.js.map +1 -1
  96. package/dist/jsx/fields/Data/index.native.js.map +1 -1
  97. package/dist/jsx/fields/Date/catalog.native.js +1 -1
  98. package/dist/jsx/fields/Date/catalog.native.js.map +1 -1
  99. package/dist/jsx/fields/Date/index.native.js.map +1 -1
  100. package/dist/jsx/fields/Date/types.native.js.map +1 -1
  101. package/dist/jsx/fields/Date/wire.native.js.map +1 -1
  102. package/dist/jsx/fields/DateRange/index.native.js.map +1 -1
  103. package/dist/jsx/fields/Duration/index.native.js.map +1 -1
  104. package/dist/jsx/fields/DynamicLink.native.js.map +1 -1
  105. package/dist/jsx/fields/FileUploadField/index.native.js.map +1 -1
  106. package/dist/jsx/fields/Geolocation/index.native.js.map +1 -1
  107. package/dist/jsx/fields/HTML/index.native.js.map +1 -1
  108. package/dist/jsx/fields/Heading/index.native.js.map +1 -1
  109. package/dist/jsx/fields/Icon/index.native.js.map +1 -1
  110. package/dist/jsx/fields/Link.mjs +0 -4
  111. package/dist/jsx/fields/Link.mjs.map +1 -1
  112. package/dist/jsx/fields/Link.native.js +0 -4
  113. package/dist/jsx/fields/Link.native.js.map +1 -1
  114. package/dist/jsx/fields/LinkTree.native.js.map +1 -1
  115. package/dist/jsx/fields/LongText/index.native.js.map +1 -1
  116. package/dist/jsx/fields/MentionInput/index.native.js.map +1 -1
  117. package/dist/jsx/fields/Numeric/index.native.js.map +1 -1
  118. package/dist/jsx/fields/OTPInput/index.native.js.map +1 -1
  119. package/dist/jsx/fields/Password/index.native.js.map +1 -1
  120. package/dist/jsx/fields/Phone/index.native.js.map +1 -1
  121. package/dist/jsx/fields/Progress/index.native.js.map +1 -1
  122. package/dist/jsx/fields/RadioGroup/index.native.js.map +1 -1
  123. package/dist/jsx/fields/Rating/index.native.js.map +1 -1
  124. package/dist/jsx/fields/ReadOnly/index.native.js.map +1 -1
  125. package/dist/jsx/fields/Select/index.native.js.map +1 -1
  126. package/dist/jsx/fields/Signature/index.native.js.map +1 -1
  127. package/dist/jsx/fields/Slider/index.native.js.map +1 -1
  128. package/dist/jsx/fields/SmallText/index.native.js.map +1 -1
  129. package/dist/jsx/fields/Switch/index.native.js.map +1 -1
  130. package/dist/jsx/fields/TableMultiSelect.native.js.map +1 -1
  131. package/dist/jsx/fields/TextEditor/types.native.js.map +1 -1
  132. package/dist/jsx/fields/TimePicker/index.native.js.map +1 -1
  133. package/dist/jsx/fields/ToggleGroup/index.native.js.map +1 -1
  134. package/dist/jsx/fields/shared/EditorPreviewPanes.native.js.map +1 -1
  135. package/dist/jsx/filterFields.native.js.map +1 -1
  136. package/dist/jsx/formEngine/createPrefill.native.js.map +1 -1
  137. package/dist/jsx/formEngine/dirtyTracking.native.js.map +1 -1
  138. package/dist/jsx/formEngine/docLifecycle.native.js.map +1 -1
  139. package/dist/jsx/formEngine/docPermissions.native.js.map +1 -1
  140. package/dist/jsx/formEngine/doctypeMeta.native.js.map +1 -1
  141. package/dist/jsx/formEngine/fetchFrom.native.js.map +1 -1
  142. package/dist/jsx/formEngine/fieldPermissions.native.js.map +1 -1
  143. package/dist/jsx/formEngine/formActions.native.js.map +1 -1
  144. package/dist/jsx/formEngine/formLayout.native.js.map +1 -1
  145. package/dist/jsx/formEngine/index.native.js.map +1 -1
  146. package/dist/jsx/formEngine/useAmendedAs.native.js.map +1 -1
  147. package/dist/jsx/formEngine/useDocRights.native.js.map +1 -1
  148. package/dist/jsx/formEngine/useFormEngine.native.js.map +1 -1
  149. package/dist/jsx/formEngine/useSessionRoles.native.js.map +1 -1
  150. package/dist/jsx/frappeConnections.native.js.map +1 -1
  151. package/dist/jsx/frappeEventColor.native.js.map +1 -1
  152. package/dist/jsx/frappeNavigation.native.js.map +1 -1
  153. package/dist/jsx/frappeStoryTarget.native.js.map +1 -1
  154. package/dist/jsx/frappeUsers.native.js.map +1 -1
  155. package/dist/jsx/index.gnome.mjs +59 -0
  156. package/dist/jsx/index.gnome.mjs.map +1 -0
  157. package/dist/jsx/index.gnome.native.js +206 -0
  158. package/dist/jsx/index.gnome.native.js.map +1 -0
  159. package/dist/jsx/index.js +1 -2
  160. package/dist/jsx/index.js.map +1 -1
  161. package/dist/jsx/index.mjs +1 -2
  162. package/dist/jsx/index.mjs.map +1 -1
  163. package/dist/jsx/index.native.js +34 -36
  164. package/dist/jsx/index.native.js.map +1 -1
  165. package/dist/jsx/insights/InsightsFacetTags.native.js.map +1 -1
  166. package/dist/jsx/insights/InsightsKpiBand.native.js.map +1 -1
  167. package/dist/jsx/insights/InsightsLeaders.native.js.map +1 -1
  168. package/dist/jsx/insights/InsightsRecords.native.js.map +1 -1
  169. package/dist/jsx/insights/InsightsTable.native.js.map +1 -1
  170. package/dist/jsx/insights/insightsData.native.js.map +1 -1
  171. package/dist/jsx/insights/insightsRecord.native.js.map +1 -1
  172. package/dist/jsx/list/BandFilters.native.js.map +1 -1
  173. package/dist/jsx/list/FacetBadge.native.js.map +1 -1
  174. package/dist/jsx/list/FacetList.native.js.map +1 -1
  175. package/dist/jsx/list/FacetRail.native.js.map +1 -1
  176. package/dist/jsx/list/ImageWell.native.js.map +1 -1
  177. package/dist/jsx/list/ListControls.native.js.map +1 -1
  178. package/dist/jsx/list/ListControlsSheet.native.js.map +1 -1
  179. package/dist/jsx/list/ListFilterPanel.native.js.map +1 -1
  180. package/dist/jsx/list/ListFiltersButton.native.js.map +1 -1
  181. package/dist/jsx/list/ListSidebarToolbar.native.js.map +1 -1
  182. package/dist/jsx/list/ListToastHost.native.js.map +1 -1
  183. package/dist/jsx/list/ListToolsSheet.native.js.map +1 -1
  184. package/dist/jsx/list/RangeFilter.native.js.map +1 -1
  185. package/dist/jsx/list/ShufflePanel.native.js.map +1 -1
  186. package/dist/jsx/list/defaultProjection.native.js.map +1 -1
  187. package/dist/jsx/list/facetBadgeSteps.native.js.map +1 -1
  188. package/dist/jsx/list/facetReading.native.js.map +1 -1
  189. package/dist/jsx/list/favorites.native.js.map +1 -1
  190. package/dist/jsx/list/listColumns.native.js.map +1 -1
  191. package/dist/jsx/list/listControls.fixture.native.js.map +1 -1
  192. package/dist/jsx/list/listFields.native.js.map +1 -1
  193. package/dist/jsx/list/listFormat.native.js.map +1 -1
  194. package/dist/jsx/list/listState.native.js.map +1 -1
  195. package/dist/jsx/list/recordLook.native.js.map +1 -1
  196. package/dist/jsx/list/statusColors.native.js.map +1 -1
  197. package/dist/jsx/list/useListControls.native.js.map +1 -1
  198. package/dist/jsx/liveErrors.native.js.map +1 -1
  199. package/dist/jsx/measures.native.js.map +1 -1
  200. package/dist/jsx/record/RecordBars.native.js.map +1 -1
  201. package/dist/jsx/record/RecordGallery.native.js.map +1 -1
  202. package/dist/jsx/record/RecordHero.native.js.map +1 -1
  203. package/dist/jsx/record/RecordPage.native.js.map +1 -1
  204. package/dist/jsx/record/RecordPager.native.js.map +1 -1
  205. package/dist/jsx/record/RecordRows.native.js.map +1 -1
  206. package/dist/jsx/record/recordData.native.js.map +1 -1
  207. package/dist/jsx/record/recordSections.native.js.map +1 -1
  208. package/dist/jsx/recordShape.native.js.map +1 -1
  209. package/dist/jsx/report/ReportGrid.native.js.map +1 -1
  210. package/dist/jsx/report/ReportViewToolbar.native.js.map +1 -1
  211. package/dist/jsx/report/exportCsv.native.js.map +1 -1
  212. package/dist/jsx/report/queryReport.native.js.map +1 -1
  213. package/dist/jsx/report/queryReportColumns.native.js.map +1 -1
  214. package/dist/jsx/report/reportViewModel.native.js.map +1 -1
  215. package/dist/jsx/report/savedReports.native.js.map +1 -1
  216. package/dist/jsx/report/useFrappeReport.native.js.map +1 -1
  217. package/dist/jsx/report/useQueryReport.native.js.map +1 -1
  218. package/dist/jsx/resolveControl.native.js.map +1 -1
  219. package/dist/jsx/schemaForm/SchemaWizard.native.js.map +1 -1
  220. package/dist/jsx/schemaForm/applyFieldOrder.native.js.map +1 -1
  221. package/dist/jsx/schemaForm/index.native.js +1 -1
  222. package/dist/jsx/schemaForm/index.native.js.map +1 -1
  223. package/dist/jsx/sessionUser.native.js.map +1 -1
  224. package/dist/jsx/shared/devWarn.native.js.map +1 -1
  225. package/dist/jsx/shared/useKeyboardInset.native.js.map +1 -1
  226. package/dist/jsx/syncError.native.js.map +1 -1
  227. package/dist/jsx/useConnectionFilters.native.js.map +1 -1
  228. package/dist/jsx/useFrappeAggregate.native.js.map +1 -1
  229. package/dist/jsx/useFrappeFacets.native.js.map +1 -1
  230. package/dist/jsx/useFrappeForm.native.js.map +1 -1
  231. package/dist/jsx/useFrappePagination.native.js.map +1 -1
  232. package/dist/jsx/useFrappeRows.native.js.map +1 -1
  233. package/package.json +35 -15
  234. package/src/FrappeListView.tsx +0 -4
  235. package/src/desk/index.ts +18 -0
  236. package/src/fields/Link.tsx +0 -12
  237. package/src/formEngine/index.ts +2 -2
  238. package/src/index.gnome.ts +191 -0
  239. package/src/index.ts +2 -7
  240. package/types/FrappeListView.d.ts +0 -2
  241. package/types/FrappeListView.d.ts.map +1 -1
  242. package/types/desk/index.d.ts +12 -0
  243. package/types/desk/index.d.ts.map +1 -0
  244. package/types/fields/Link.d.ts +0 -8
  245. package/types/fields/Link.d.ts.map +1 -1
  246. package/types/formEngine/index.d.ts +2 -2
  247. package/types/index.d.ts +0 -1
  248. package/types/index.d.ts.map +1 -1
  249. package/types/index.gnome.d.ts +105 -0
  250. package/types/index.gnome.d.ts.map +1 -0
  251. package/dist/cjs/fields/FileUpload.cjs +0 -404
  252. package/dist/cjs/fields/FileUpload.native.js +0 -431
  253. package/dist/cjs/fields/FileUpload.native.js.map +0 -1
  254. package/dist/esm/fields/FileUpload.mjs +0 -379
  255. package/dist/esm/fields/FileUpload.mjs.map +0 -1
  256. package/dist/esm/fields/FileUpload.native.js +0 -403
  257. package/dist/esm/fields/FileUpload.native.js.map +0 -1
  258. package/dist/jsx/fields/FileUpload.mjs +0 -379
  259. package/dist/jsx/fields/FileUpload.mjs.map +0 -1
  260. package/dist/jsx/fields/FileUpload.native.js +0 -431
  261. package/dist/jsx/fields/FileUpload.native.js.map +0 -1
  262. package/src/fields/FileUpload.spec.tsx +0 -351
  263. package/src/fields/FileUpload.tsx +0 -472
  264. package/src/fields/FrappeFileUpload.stories.tsx +0 -139
  265. package/types/fields/FileUpload.d.ts +0 -27
  266. package/types/fields/FileUpload.d.ts.map +0 -1
@@ -1,379 +0,0 @@
1
- import { useFrappeCollection } from "@multiplatform.one/frappe";
2
- import { IconButtonGroup, Skeleton } from "@multiplatform.one/forms";
3
- import { FileIcon, UploadIcon } from "@phosphor-icons/react";
4
- import { sizeRecipeForToken, useResolvedKnobs, sizeTokenStep } from "@multiplatform.one/theme";
5
- import { useCallback, useEffect, useRef, useState } from "react";
6
- import { useTranslation } from "react-i18next";
7
- import { Button, Image, Label, Text as TamaguiText, XStack, YStack } from "tamagui";
8
- import { useFrappeConfig } from "../FrappeProvider.mjs";
9
- import { Text, ActionButton, componentColors } from "@multiplatform.one/components";
10
- import { Fragment, jsx, jsxs } from "react/jsx-runtime";
11
- function formatFileSize(bytes) {
12
- if (bytes === 0) return "0 Bytes";
13
- const k = 1024;
14
- const sizes = ["Bytes", "KB", "MB", "GB"];
15
- const i = Math.floor(Math.log(bytes) / Math.log(k));
16
- return `${Number.parseFloat((bytes / k ** i).toFixed(2))} ${sizes[i]}`;
17
- }
18
- function readFileAsDataUrl(file, {
19
- onProgress,
20
- signal
21
- }) {
22
- return new Promise((resolve, reject) => {
23
- const reader = new FileReader();
24
- const onAbort = () => {
25
- reader.abort();
26
- reject(new DOMException("Aborted", "AbortError"));
27
- };
28
- if (signal.aborted) {
29
- onAbort();
30
- return;
31
- }
32
- signal.addEventListener("abort", onAbort);
33
- reader.onprogress = event => {
34
- if (event.lengthComputable && event.total > 0) {
35
- onProgress(Math.round(event.loaded / event.total * 100));
36
- }
37
- };
38
- reader.onload = () => {
39
- signal.removeEventListener("abort", onAbort);
40
- onProgress(100);
41
- resolve(reader.result);
42
- };
43
- reader.onerror = () => {
44
- signal.removeEventListener("abort", onAbort);
45
- reject(new Error("Failed to read file"));
46
- };
47
- reader.onabort = () => {
48
- signal.removeEventListener("abort", onAbort);
49
- reject(new DOMException("Aborted", "AbortError"));
50
- };
51
- reader.readAsDataURL(file);
52
- });
53
- }
54
- function FileUpload({
55
- label,
56
- value,
57
- onChange,
58
- accept,
59
- isImage = false,
60
- disabled = false,
61
- required = false,
62
- maxSize = 5 * 1024 * 1024,
63
- baseURL,
64
- auth,
65
- helperText,
66
- readOnly = false,
67
- skeleton = false,
68
- onUpload
69
- }) {
70
- const {
71
- t
72
- } = useTranslation();
73
- const {
74
- knobProps
75
- } = useResolvedKnobs();
76
- const small = sizeTokenStep(knobProps.sizeToken) < 0;
77
- const config = useFrappeConfig();
78
- const fileInputRef = useRef(null);
79
- const [transfer, setTransfer] = useState(null);
80
- const [error, setError] = useState(null);
81
- const transferRef = useRef(null);
82
- const onUploadRef = useRef(onUpload);
83
- onUploadRef.current = onUpload;
84
- const isLocked = disabled || readOnly;
85
- const minHeight = small ? 40 : 56;
86
- const previewSize = small ? 120 : 200;
87
- const uploading = transfer?.status === "uploading";
88
- const finalBaseURL = baseURL ?? config?.baseURL ?? "";
89
- const finalConfig = finalBaseURL ? {
90
- baseURL: finalBaseURL,
91
- socketPort: config?.socketPort,
92
- siteName: config?.siteName,
93
- socketBaseURL: config?.socketBaseURL,
94
- auth: auth ?? config?.auth,
95
- syncOptions: config?.syncOptions,
96
- realtime: config?.realtime,
97
- fixtures: config?.fixtures
98
- } : void 0;
99
- const fileCollection = useFrappeCollection(finalConfig, "File", {
100
- fields: ["name", "file_name", "file_url", "is_private"]
101
- });
102
- useEffect(() => {
103
- return () => {
104
- transferRef.current?.controller.abort();
105
- };
106
- }, []);
107
- const defaultUpload = useCallback(async (file, ctx) => {
108
- const base64 = await readFileAsDataUrl(file, ctx);
109
- if (fileCollection) {
110
- const tx = fileCollection.insert({
111
- doctype: "File",
112
- name: `new-${Date.now()}`,
113
- file_name: file.name,
114
- file_url: base64,
115
- is_private: 0
116
- });
117
- await tx.isPersisted.promise;
118
- }
119
- return base64;
120
- }, [fileCollection]);
121
- const runTransfer = useCallback(async (file, controller) => {
122
- const upload = onUploadRef.current ?? defaultUpload;
123
- try {
124
- const url = await upload(file, {
125
- onProgress: percent => {
126
- const n = Math.min(100, Math.max(0, Math.round(Number(percent) || 0)));
127
- setTransfer(prev => prev ? {
128
- ...prev,
129
- progress: n
130
- } : prev);
131
- },
132
- signal: controller.signal
133
- });
134
- if (controller.signal.aborted) return;
135
- setTransfer(null);
136
- transferRef.current = null;
137
- setError(null);
138
- onChange(url);
139
- } catch (err) {
140
- if (controller.signal.aborted || err instanceof Error && err.name === "AbortError" || typeof DOMException !== "undefined" && err instanceof DOMException && err.name === "AbortError") {
141
- return;
142
- }
143
- const problem = err instanceof Error && err.message ? err.message : t("Upload failed");
144
- setTransfer(prev => prev ? {
145
- ...prev,
146
- status: "failed",
147
- problem,
148
- action: t("Try again or remove the file")
149
- } : prev);
150
- setError(null);
151
- }
152
- }, [defaultUpload, onChange, t]);
153
- const startTransfer = useCallback(file => {
154
- transferRef.current?.controller.abort();
155
- const controller = new AbortController();
156
- const next = {
157
- file,
158
- status: "uploading",
159
- progress: 0,
160
- controller
161
- };
162
- transferRef.current = next;
163
- setTransfer(next);
164
- setError(null);
165
- void runTransfer(file, controller);
166
- }, [runTransfer]);
167
- const handleFileSelect = event => {
168
- if (isLocked) return;
169
- const file = event.target.files?.[0];
170
- if (!file) return;
171
- if (maxSize && file.size > maxSize) {
172
- setError(`File size exceeds ${Math.round(maxSize / 1024 / 1024)}MB limit`);
173
- return;
174
- }
175
- startTransfer(file);
176
- };
177
- const handleCancel = () => {
178
- transferRef.current?.controller.abort();
179
- transferRef.current = null;
180
- setTransfer(null);
181
- if (fileInputRef.current) fileInputRef.current.value = "";
182
- };
183
- const handleRetry = () => {
184
- if (!transfer) return;
185
- startTransfer(transfer.file);
186
- };
187
- const handleRemove = () => {
188
- if (isLocked) return;
189
- handleCancel();
190
- onChange("");
191
- if (fileInputRef.current) {
192
- fileInputRef.current.value = "";
193
- }
194
- };
195
- const handleRemoveFailed = () => {
196
- handleCancel();
197
- };
198
- const handleClick = () => {
199
- if (isLocked || uploading) return;
200
- fileInputRef.current?.click();
201
- };
202
- if (skeleton) {
203
- return /* @__PURE__ */jsxs(YStack, {
204
- ...knobProps.gap,
205
- children: [label && /* @__PURE__ */jsx(Skeleton, {
206
- variant: "text",
207
- width: "30%",
208
- height: sizeRecipeForToken(knobProps.sizeToken).fontSize
209
- }), /* @__PURE__ */jsx(Skeleton, {
210
- variant: "rounded",
211
- width: "100%",
212
- height: minHeight
213
- })]
214
- });
215
- }
216
- const fileActions = !readOnly && !transfer ? overMedia => /* @__PURE__ */jsxs(Fragment, {
217
- children: [/* @__PURE__ */jsx(ActionButton, {
218
- kind: "replace",
219
- overMedia,
220
- disabled: isLocked,
221
- onPress: handleClick
222
- }), /* @__PURE__ */jsx(ActionButton, {
223
- kind: "remove",
224
- overMedia,
225
- disabled: isLocked,
226
- onPress: handleRemove
227
- })]
228
- }) : void 0;
229
- return /* @__PURE__ */jsxs(YStack, {
230
- ...knobProps.gap,
231
- children: [label && /* @__PURE__ */jsxs(Label, {
232
- ...knobProps.label,
233
- children: [label, required && /* @__PURE__ */jsx(TamaguiText, {
234
- color: "$red10",
235
- children: " *"
236
- })]
237
- }), /* @__PURE__ */jsx("input", {
238
- ref: fileInputRef,
239
- type: "file",
240
- accept: accept || (isImage ? "image/*" : void 0),
241
- style: {
242
- display: "none"
243
- },
244
- onChange: handleFileSelect,
245
- disabled: isLocked || uploading
246
- }), transfer ? /* @__PURE__ */jsxs(YStack, {
247
- "data-file-upload": "transfer",
248
- "data-transfer-status": transfer.status,
249
- ...knobProps.gap,
250
- ...knobProps.panelPadding,
251
- children: [/* @__PURE__ */jsxs(XStack, {
252
- gap: "$2",
253
- alignItems: "center",
254
- children: [/* @__PURE__ */jsx(FileIcon, {
255
- size: 20
256
- }), /* @__PURE__ */jsxs(YStack, {
257
- flex: 1,
258
- gap: "$1",
259
- children: [/* @__PURE__ */jsx(Text, {
260
- numberOfLines: 1,
261
- children: transfer.file.name
262
- }), /* @__PURE__ */jsx(Text, {
263
- numberOfLines: 1,
264
- fontWeight: "700",
265
- fontSize: "$2",
266
- children: formatFileSize(transfer.file.size)
267
- })]
268
- }), transfer.status === "uploading" ? /* @__PURE__ */jsx(ActionButton, {
269
- kind: "cancel",
270
- label: t("Cancel {{name}}", {
271
- name: transfer.file.name
272
- }),
273
- disabled: isLocked,
274
- onPress: handleCancel
275
- }) : null]
276
- }), transfer.status === "uploading" ? /* @__PURE__ */jsx(YStack, {
277
- "data-file-upload": "progress",
278
- role: "progressbar",
279
- "aria-valuemin": 0,
280
- "aria-valuemax": 100,
281
- "aria-valuenow": transfer.progress,
282
- "aria-label": t("Uploading {{name}}", {
283
- name: transfer.file.name
284
- }),
285
- height: 11,
286
- width: "100%",
287
- borderRadius: 1e3,
288
- backgroundColor: "$color4",
289
- overflow: "hidden",
290
- children: /* @__PURE__ */jsx(YStack, {
291
- height: "100%",
292
- width: `${transfer.progress}%`,
293
- backgroundColor: componentColors.indicator.mark
294
- })
295
- }) : null, transfer.status === "failed" ? /* @__PURE__ */jsxs(YStack, {
296
- ...knobProps.gap,
297
- children: [/* @__PURE__ */jsx(Text, {
298
- color: "$red11",
299
- fontSize: "$2",
300
- children: transfer.problem
301
- }), /* @__PURE__ */jsx(Text, {
302
- color: "$color11",
303
- fontSize: "$2",
304
- children: transfer.action
305
- }), /* @__PURE__ */jsxs(XStack, {
306
- ...knobProps.gap,
307
- children: [/* @__PURE__ */jsx(ActionButton, {
308
- kind: "retry",
309
- label: t("Retry {{name}}", {
310
- name: transfer.file.name
311
- }),
312
- disabled: isLocked,
313
- onPress: handleRetry
314
- }), /* @__PURE__ */jsx(ActionButton, {
315
- kind: "remove",
316
- label: t("Remove {{name}}", {
317
- name: transfer.file.name
318
- }),
319
- disabled: isLocked,
320
- onPress: handleRemoveFailed
321
- })]
322
- })]
323
- }) : null]
324
- }) : null, !value && !transfer ? /* @__PURE__ */jsx(Button, {
325
- size: "$3",
326
- icon: UploadIcon,
327
- disabled: isLocked,
328
- onPress: handleClick,
329
- ...knobProps.borderRadius,
330
- children: t("Choose File")
331
- }) : null, value ? isImage ? /* @__PURE__ */jsxs(YStack, {
332
- position: "relative",
333
- alignSelf: "flex-start",
334
- children: [/* @__PURE__ */jsx(Image, {
335
- src: value,
336
- alt: t("Uploaded file preview"),
337
- width: previewSize,
338
- height: previewSize,
339
- ...knobProps.borderRadius,
340
- objectFit: "cover"
341
- }), fileActions ? /* @__PURE__ */jsx(XStack, {
342
- "data-file-upload": "preview-actions",
343
- position: "absolute",
344
- top: "$2",
345
- right: "$2",
346
- zIndex: 1,
347
- ...knobProps.gap,
348
- children: /* @__PURE__ */jsx(IconButtonGroup, {
349
- plate: "media",
350
- children: fileActions(true)
351
- })
352
- }) : null]
353
- }) : /* @__PURE__ */jsxs(XStack, {
354
- gap: "$2",
355
- alignItems: "center",
356
- ...knobProps.panelPadding,
357
- ...{
358
- backgroundColor: "$color2"
359
- },
360
- children: [/* @__PURE__ */jsx(FileIcon, {
361
- size: 20
362
- }), /* @__PURE__ */jsx(Text, {
363
- flex: 1,
364
- numberOfLines: 1,
365
- children: value.split("/").pop() || value
366
- }), fileActions?.(false)]
367
- }) : null, helperText && !error && !transfer ? /* @__PURE__ */jsx(Text, {
368
- color: "$color11",
369
- fontSize: "$2",
370
- children: helperText
371
- }) : null, error ? /* @__PURE__ */jsx(Text, {
372
- color: "$red11",
373
- fontSize: "$2",
374
- children: error
375
- }) : null]
376
- });
377
- }
378
- export { FileUpload };
379
- //# sourceMappingURL=FileUpload.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useFrappeCollection","IconButtonGroup","Skeleton","FileIcon","UploadIcon","sizeRecipeForToken","useResolvedKnobs","sizeTokenStep","useCallback","useEffect","useRef","useState","useTranslation","Button","Image","Label","Text","TamaguiText","XStack","YStack","useFrappeConfig","ActionButton","componentColors","Fragment","jsx","jsxs","formatFileSize","bytes","k","sizes","i","Math","floor","log","Number","parseFloat","toFixed","readFileAsDataUrl","file","onProgress","signal","Promise","resolve","reject","reader","FileReader","onAbort","abort","DOMException","aborted","addEventListener","onprogress","event","lengthComputable","total","round","loaded","onload","removeEventListener","result","onerror","Error","onabort","readAsDataURL","FileUpload","label","value","onChange","accept","isImage","disabled","required","maxSize","baseURL","auth","helperText","readOnly","skeleton","onUpload","t","knobProps","small","sizeToken","config","fileInputRef","transfer","setTransfer","error","setError","transferRef","onUploadRef","current","isLocked","minHeight","previewSize","uploading","status","finalBaseURL","finalConfig","socketPort","siteName","socketBaseURL","syncOptions","realtime","fixtures","fileCollection","fields","controller","defaultUpload","ctx","base64","tx","insert","doctype","name","Date","now","file_name","file_url","is_private","isPersisted","promise","runTransfer","upload","url","percent","n","min","max","prev","progress","err","problem","message","action","startTransfer","AbortController","next","handleFileSelect","target","files","size","handleCancel","handleRetry","handleRemove","handleRemoveFailed","handleClick","click","gap","children","variant","width","height","fontSize","fileActions","overMedia","kind","onPress","color","ref","type","style","display","panelPadding","alignItems","flex","numberOfLines","fontWeight","role","borderRadius","backgroundColor","overflow","indicator","mark","icon","position","alignSelf","src","alt","objectFit","top","right","zIndex","plate","split","pop"],"sources":["../../../src/fields/FileUpload.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}