@multiplatform.one/frappe-ui 7.28.1 → 7.29.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 (325) hide show
  1. package/dist/cjs/FrappeCalendar.cjs +3 -2
  2. package/dist/cjs/FrappeCalendar.native.js +3 -2
  3. package/dist/cjs/FrappeCalendar.native.js.map +1 -1
  4. package/dist/cjs/FrappeForm.cjs +148 -464
  5. package/dist/cjs/FrappeForm.native.js +152 -633
  6. package/dist/cjs/FrappeForm.native.js.map +1 -1
  7. package/dist/cjs/FrappeListView.cjs +5 -27
  8. package/dist/cjs/FrappeListView.native.js +11 -32
  9. package/dist/cjs/FrappeListView.native.js.map +1 -1
  10. package/dist/cjs/FrappeReportBuilder.cjs +523 -309
  11. package/dist/cjs/FrappeReportBuilder.native.js +658 -353
  12. package/dist/cjs/FrappeReportBuilder.native.js.map +1 -1
  13. package/dist/cjs/FrappeReportView.cjs +35 -234
  14. package/dist/cjs/FrappeReportView.native.js +39 -283
  15. package/dist/cjs/FrappeReportView.native.js.map +1 -1
  16. package/dist/cjs/dependsOn.cjs +2 -2
  17. package/dist/cjs/dependsOn.native.js +1 -2
  18. package/dist/cjs/dependsOn.native.js.map +1 -1
  19. package/dist/cjs/fields/shared/EditorPreviewPanes.cjs +2 -2
  20. package/dist/cjs/fields/shared/EditorPreviewPanes.native.js +2 -2
  21. package/dist/cjs/fields/shared/EditorPreviewPanes.native.js.map +1 -1
  22. package/dist/cjs/formEngine/docPermissions.cjs +20 -0
  23. package/dist/cjs/formEngine/docPermissions.native.js +69 -0
  24. package/dist/cjs/formEngine/docPermissions.native.js.map +1 -1
  25. package/dist/cjs/formEngine/index.cjs +2 -0
  26. package/dist/cjs/formEngine/index.native.js +2 -0
  27. package/dist/cjs/formEngine/index.native.js.map +1 -1
  28. package/dist/cjs/index.cjs +67 -7
  29. package/dist/cjs/index.native.js +67 -7
  30. package/dist/cjs/index.native.js.map +1 -1
  31. package/dist/cjs/liveErrors.cjs +8 -2
  32. package/dist/cjs/liveErrors.native.js +8 -2
  33. package/dist/cjs/liveErrors.native.js.map +1 -1
  34. package/dist/cjs/measures.cjs +31 -0
  35. package/dist/cjs/measures.native.js +34 -0
  36. package/dist/cjs/measures.native.js.map +1 -0
  37. package/dist/cjs/recordShape.cjs +103 -0
  38. package/dist/cjs/recordShape.native.js +115 -0
  39. package/dist/cjs/recordShape.native.js.map +1 -0
  40. package/dist/cjs/report/ReportGrid.cjs +453 -0
  41. package/dist/cjs/report/ReportGrid.native.js +510 -0
  42. package/dist/cjs/report/ReportGrid.native.js.map +1 -0
  43. package/dist/cjs/report/ReportViewToolbar.cjs +253 -0
  44. package/dist/cjs/report/ReportViewToolbar.native.js +303 -0
  45. package/dist/cjs/report/ReportViewToolbar.native.js.map +1 -0
  46. package/dist/cjs/report/queryReport.cjs +444 -0
  47. package/dist/cjs/report/queryReport.native.js +588 -0
  48. package/dist/cjs/report/queryReport.native.js.map +1 -0
  49. package/dist/cjs/report/queryReportColumns.cjs +131 -0
  50. package/dist/cjs/report/queryReportColumns.native.js +159 -0
  51. package/dist/cjs/report/queryReportColumns.native.js.map +1 -0
  52. package/dist/cjs/report/reportViewModel.cjs +386 -0
  53. package/dist/cjs/report/reportViewModel.native.js +657 -0
  54. package/dist/cjs/report/reportViewModel.native.js.map +1 -0
  55. package/dist/cjs/report/savedReports.cjs +137 -0
  56. package/dist/cjs/report/savedReports.native.js +169 -0
  57. package/dist/cjs/report/savedReports.native.js.map +1 -0
  58. package/dist/cjs/report/useFrappeReport.cjs +184 -0
  59. package/dist/cjs/report/useFrappeReport.native.js +214 -0
  60. package/dist/cjs/report/useFrappeReport.native.js.map +1 -0
  61. package/dist/cjs/report/useQueryReport.cjs +201 -0
  62. package/dist/cjs/report/useQueryReport.native.js +233 -0
  63. package/dist/cjs/report/useQueryReport.native.js.map +1 -0
  64. package/dist/cjs/useFrappeForm.cjs +558 -0
  65. package/dist/cjs/useFrappeForm.native.js +714 -0
  66. package/dist/cjs/useFrappeForm.native.js.map +1 -0
  67. package/dist/esm/FrappeCalendar.mjs +4 -3
  68. package/dist/esm/FrappeCalendar.mjs.map +1 -1
  69. package/dist/esm/FrappeCalendar.native.js +4 -3
  70. package/dist/esm/FrappeCalendar.native.js.map +1 -1
  71. package/dist/esm/FrappeForm.mjs +151 -467
  72. package/dist/esm/FrappeForm.mjs.map +1 -1
  73. package/dist/esm/FrappeForm.native.js +155 -636
  74. package/dist/esm/FrappeForm.native.js.map +1 -1
  75. package/dist/esm/FrappeListView.mjs +6 -28
  76. package/dist/esm/FrappeListView.mjs.map +1 -1
  77. package/dist/esm/FrappeListView.native.js +12 -33
  78. package/dist/esm/FrappeListView.native.js.map +1 -1
  79. package/dist/esm/FrappeReportBuilder.mjs +526 -312
  80. package/dist/esm/FrappeReportBuilder.mjs.map +1 -1
  81. package/dist/esm/FrappeReportBuilder.native.js +661 -356
  82. package/dist/esm/FrappeReportBuilder.native.js.map +1 -1
  83. package/dist/esm/FrappeReportView.mjs +30 -229
  84. package/dist/esm/FrappeReportView.mjs.map +1 -1
  85. package/dist/esm/FrappeReportView.native.js +34 -278
  86. package/dist/esm/FrappeReportView.native.js.map +1 -1
  87. package/dist/esm/dependsOn.mjs +2 -2
  88. package/dist/esm/dependsOn.mjs.map +1 -1
  89. package/dist/esm/dependsOn.native.js +1 -2
  90. package/dist/esm/dependsOn.native.js.map +1 -1
  91. package/dist/esm/fields/shared/EditorPreviewPanes.mjs +2 -2
  92. package/dist/esm/fields/shared/EditorPreviewPanes.mjs.map +1 -1
  93. package/dist/esm/fields/shared/EditorPreviewPanes.native.js +2 -2
  94. package/dist/esm/fields/shared/EditorPreviewPanes.native.js.map +1 -1
  95. package/dist/esm/formEngine/docPermissions.mjs +19 -1
  96. package/dist/esm/formEngine/docPermissions.mjs.map +1 -1
  97. package/dist/esm/formEngine/docPermissions.native.js +68 -1
  98. package/dist/esm/formEngine/docPermissions.native.js.map +1 -1
  99. package/dist/esm/formEngine/index.mjs +2 -2
  100. package/dist/esm/formEngine/index.mjs.map +1 -1
  101. package/dist/esm/formEngine/index.native.js +2 -2
  102. package/dist/esm/formEngine/index.native.js.map +1 -1
  103. package/dist/esm/index.mjs +16 -4
  104. package/dist/esm/index.mjs.map +1 -1
  105. package/dist/esm/index.native.js +16 -4
  106. package/dist/esm/index.native.js.map +1 -1
  107. package/dist/esm/liveErrors.mjs +8 -3
  108. package/dist/esm/liveErrors.mjs.map +1 -1
  109. package/dist/esm/liveErrors.native.js +8 -3
  110. package/dist/esm/liveErrors.native.js.map +1 -1
  111. package/dist/esm/measures.mjs +5 -0
  112. package/dist/esm/measures.mjs.map +1 -0
  113. package/dist/esm/measures.native.js +5 -0
  114. package/dist/esm/measures.native.js.map +1 -0
  115. package/dist/esm/recordShape.mjs +74 -0
  116. package/dist/esm/recordShape.mjs.map +1 -0
  117. package/dist/esm/recordShape.native.js +83 -0
  118. package/dist/esm/recordShape.native.js.map +1 -0
  119. package/dist/esm/report/ReportGrid.mjs +428 -0
  120. package/dist/esm/report/ReportGrid.mjs.map +1 -0
  121. package/dist/esm/report/ReportGrid.native.js +471 -0
  122. package/dist/esm/report/ReportGrid.native.js.map +1 -0
  123. package/dist/esm/report/ReportViewToolbar.mjs +228 -0
  124. package/dist/esm/report/ReportViewToolbar.mjs.map +1 -0
  125. package/dist/esm/report/ReportViewToolbar.native.js +264 -0
  126. package/dist/esm/report/ReportViewToolbar.native.js.map +1 -0
  127. package/dist/esm/report/queryReport.mjs +404 -0
  128. package/dist/esm/report/queryReport.mjs.map +1 -0
  129. package/dist/esm/report/queryReport.native.js +545 -0
  130. package/dist/esm/report/queryReport.native.js.map +1 -0
  131. package/dist/esm/report/queryReportColumns.mjs +105 -0
  132. package/dist/esm/report/queryReportColumns.mjs.map +1 -0
  133. package/dist/esm/report/queryReportColumns.native.js +119 -0
  134. package/dist/esm/report/queryReportColumns.native.js.map +1 -0
  135. package/dist/esm/report/reportViewModel.mjs +343 -0
  136. package/dist/esm/report/reportViewModel.mjs.map +1 -0
  137. package/dist/esm/report/reportViewModel.native.js +611 -0
  138. package/dist/esm/report/reportViewModel.native.js.map +1 -0
  139. package/dist/esm/report/savedReports.mjs +112 -0
  140. package/dist/esm/report/savedReports.mjs.map +1 -0
  141. package/dist/esm/report/savedReports.native.js +141 -0
  142. package/dist/esm/report/savedReports.native.js.map +1 -0
  143. package/dist/esm/report/useFrappeReport.mjs +158 -0
  144. package/dist/esm/report/useFrappeReport.mjs.map +1 -0
  145. package/dist/esm/report/useFrappeReport.native.js +185 -0
  146. package/dist/esm/report/useFrappeReport.native.js.map +1 -0
  147. package/dist/esm/report/useQueryReport.mjs +176 -0
  148. package/dist/esm/report/useQueryReport.mjs.map +1 -0
  149. package/dist/esm/report/useQueryReport.native.js +205 -0
  150. package/dist/esm/report/useQueryReport.native.js.map +1 -0
  151. package/dist/esm/useFrappeForm.mjs +533 -0
  152. package/dist/esm/useFrappeForm.mjs.map +1 -0
  153. package/dist/esm/useFrappeForm.native.js +686 -0
  154. package/dist/esm/useFrappeForm.native.js.map +1 -0
  155. package/dist/jsx/FrappeCalendar.mjs +4 -3
  156. package/dist/jsx/FrappeCalendar.mjs.map +1 -1
  157. package/dist/jsx/FrappeCalendar.native.js +3 -2
  158. package/dist/jsx/FrappeCalendar.native.js.map +1 -1
  159. package/dist/jsx/FrappeForm.mjs +151 -467
  160. package/dist/jsx/FrappeForm.mjs.map +1 -1
  161. package/dist/jsx/FrappeForm.native.js +152 -633
  162. package/dist/jsx/FrappeForm.native.js.map +1 -1
  163. package/dist/jsx/FrappeListView.mjs +6 -28
  164. package/dist/jsx/FrappeListView.mjs.map +1 -1
  165. package/dist/jsx/FrappeListView.native.js +11 -32
  166. package/dist/jsx/FrappeListView.native.js.map +1 -1
  167. package/dist/jsx/FrappeReportBuilder.mjs +526 -312
  168. package/dist/jsx/FrappeReportBuilder.mjs.map +1 -1
  169. package/dist/jsx/FrappeReportBuilder.native.js +658 -353
  170. package/dist/jsx/FrappeReportBuilder.native.js.map +1 -1
  171. package/dist/jsx/FrappeReportView.mjs +30 -229
  172. package/dist/jsx/FrappeReportView.mjs.map +1 -1
  173. package/dist/jsx/FrappeReportView.native.js +39 -283
  174. package/dist/jsx/FrappeReportView.native.js.map +1 -1
  175. package/dist/jsx/dependsOn.mjs +2 -2
  176. package/dist/jsx/dependsOn.mjs.map +1 -1
  177. package/dist/jsx/dependsOn.native.js +1 -2
  178. package/dist/jsx/dependsOn.native.js.map +1 -1
  179. package/dist/jsx/fields/shared/EditorPreviewPanes.mjs +2 -2
  180. package/dist/jsx/fields/shared/EditorPreviewPanes.mjs.map +1 -1
  181. package/dist/jsx/fields/shared/EditorPreviewPanes.native.js +2 -2
  182. package/dist/jsx/fields/shared/EditorPreviewPanes.native.js.map +1 -1
  183. package/dist/jsx/formEngine/docPermissions.mjs +19 -1
  184. package/dist/jsx/formEngine/docPermissions.mjs.map +1 -1
  185. package/dist/jsx/formEngine/docPermissions.native.js +69 -0
  186. package/dist/jsx/formEngine/docPermissions.native.js.map +1 -1
  187. package/dist/jsx/formEngine/index.mjs +2 -2
  188. package/dist/jsx/formEngine/index.mjs.map +1 -1
  189. package/dist/jsx/formEngine/index.native.js +2 -0
  190. package/dist/jsx/formEngine/index.native.js.map +1 -1
  191. package/dist/jsx/index.js +16 -4
  192. package/dist/jsx/index.js.map +1 -1
  193. package/dist/jsx/index.mjs +16 -4
  194. package/dist/jsx/index.mjs.map +1 -1
  195. package/dist/jsx/index.native.js +67 -7
  196. package/dist/jsx/index.native.js.map +1 -1
  197. package/dist/jsx/liveErrors.mjs +8 -3
  198. package/dist/jsx/liveErrors.mjs.map +1 -1
  199. package/dist/jsx/liveErrors.native.js +8 -2
  200. package/dist/jsx/liveErrors.native.js.map +1 -1
  201. package/dist/jsx/measures.mjs +5 -0
  202. package/dist/jsx/measures.mjs.map +1 -0
  203. package/dist/jsx/measures.native.js +34 -0
  204. package/dist/jsx/measures.native.js.map +1 -0
  205. package/dist/jsx/recordShape.mjs +74 -0
  206. package/dist/jsx/recordShape.mjs.map +1 -0
  207. package/dist/jsx/recordShape.native.js +115 -0
  208. package/dist/jsx/recordShape.native.js.map +1 -0
  209. package/dist/jsx/report/ReportGrid.mjs +428 -0
  210. package/dist/jsx/report/ReportGrid.mjs.map +1 -0
  211. package/dist/jsx/report/ReportGrid.native.js +510 -0
  212. package/dist/jsx/report/ReportGrid.native.js.map +1 -0
  213. package/dist/jsx/report/ReportViewToolbar.mjs +228 -0
  214. package/dist/jsx/report/ReportViewToolbar.mjs.map +1 -0
  215. package/dist/jsx/report/ReportViewToolbar.native.js +303 -0
  216. package/dist/jsx/report/ReportViewToolbar.native.js.map +1 -0
  217. package/dist/jsx/report/queryReport.mjs +404 -0
  218. package/dist/jsx/report/queryReport.mjs.map +1 -0
  219. package/dist/jsx/report/queryReport.native.js +588 -0
  220. package/dist/jsx/report/queryReport.native.js.map +1 -0
  221. package/dist/jsx/report/queryReportColumns.mjs +105 -0
  222. package/dist/jsx/report/queryReportColumns.mjs.map +1 -0
  223. package/dist/jsx/report/queryReportColumns.native.js +159 -0
  224. package/dist/jsx/report/queryReportColumns.native.js.map +1 -0
  225. package/dist/jsx/report/reportViewModel.mjs +343 -0
  226. package/dist/jsx/report/reportViewModel.mjs.map +1 -0
  227. package/dist/jsx/report/reportViewModel.native.js +657 -0
  228. package/dist/jsx/report/reportViewModel.native.js.map +1 -0
  229. package/dist/jsx/report/savedReports.mjs +112 -0
  230. package/dist/jsx/report/savedReports.mjs.map +1 -0
  231. package/dist/jsx/report/savedReports.native.js +169 -0
  232. package/dist/jsx/report/savedReports.native.js.map +1 -0
  233. package/dist/jsx/report/useFrappeReport.mjs +158 -0
  234. package/dist/jsx/report/useFrappeReport.mjs.map +1 -0
  235. package/dist/jsx/report/useFrappeReport.native.js +214 -0
  236. package/dist/jsx/report/useFrappeReport.native.js.map +1 -0
  237. package/dist/jsx/report/useQueryReport.mjs +176 -0
  238. package/dist/jsx/report/useQueryReport.mjs.map +1 -0
  239. package/dist/jsx/report/useQueryReport.native.js +233 -0
  240. package/dist/jsx/report/useQueryReport.native.js.map +1 -0
  241. package/dist/jsx/useFrappeForm.mjs +533 -0
  242. package/dist/jsx/useFrappeForm.mjs.map +1 -0
  243. package/dist/jsx/useFrappeForm.native.js +714 -0
  244. package/dist/jsx/useFrappeForm.native.js.map +1 -0
  245. package/package.json +16 -16
  246. package/src/FrappeCalendar.tsx +8 -2
  247. package/src/FrappeForm.stories.tsx +52 -0
  248. package/src/FrappeForm.tsx +176 -565
  249. package/src/FrappeListView.cards.stories.tsx +3 -6
  250. package/src/FrappeListView.tsx +15 -55
  251. package/src/FrappeReportBuilder.stories.tsx +34 -7
  252. package/src/FrappeReportBuilder.tsx +790 -380
  253. package/src/FrappeReportView.spec.tsx +10 -6
  254. package/src/FrappeReportView.stories.tsx +20 -1
  255. package/src/FrappeReportView.tsx +89 -415
  256. package/src/dependsOn.ts +4 -1
  257. package/src/fields/shared/EditorPreviewPanes.tsx +2 -2
  258. package/src/formEngine/docPermissions.spec.ts +36 -1
  259. package/src/formEngine/docPermissions.ts +34 -0
  260. package/src/formEngine/index.ts +8 -1
  261. package/src/frappeRemainder.designLaw.spec.ts +9 -1
  262. package/src/frappeRoutes.spec.tsx +9 -0
  263. package/src/frappeViews.designLaw.spec.ts +15 -2
  264. package/src/guestFallback.spec.tsx +236 -0
  265. package/src/index.ts +117 -16
  266. package/src/liveErrors.spec.ts +10 -0
  267. package/src/liveErrors.ts +16 -3
  268. package/src/measures.ts +11 -0
  269. package/src/recordShape.spec.ts +100 -0
  270. package/src/recordShape.ts +133 -0
  271. package/src/report/ReportGrid.spec.tsx +175 -0
  272. package/src/report/ReportGrid.tsx +530 -0
  273. package/src/report/ReportViewToolbar.spec.tsx +90 -0
  274. package/src/report/ReportViewToolbar.tsx +314 -0
  275. package/src/report/queryReport.spec.ts +483 -0
  276. package/src/report/queryReport.ts +722 -0
  277. package/src/report/queryReportColumns.tsx +123 -0
  278. package/src/report/reportViewModel.spec.ts +393 -0
  279. package/src/report/reportViewModel.ts +617 -0
  280. package/src/report/savedReports.ts +172 -0
  281. package/src/report/seam.spec.ts +216 -0
  282. package/src/report/useFrappeReport.ts +241 -0
  283. package/src/report/useQueryReport.spec.tsx +131 -0
  284. package/src/report/useQueryReport.ts +309 -0
  285. package/src/useFrappeForm.spec.tsx +209 -0
  286. package/src/useFrappeForm.ts +778 -0
  287. package/types/FrappeCalendar.d.ts.map +1 -1
  288. package/types/FrappeForm.d.ts +21 -1
  289. package/types/FrappeForm.d.ts.map +1 -1
  290. package/types/FrappeListView.d.ts.map +1 -1
  291. package/types/FrappeReportBuilder.d.ts +66 -16
  292. package/types/FrappeReportBuilder.d.ts.map +1 -1
  293. package/types/FrappeReportView.d.ts +9 -127
  294. package/types/FrappeReportView.d.ts.map +1 -1
  295. package/types/dependsOn.d.ts.map +1 -1
  296. package/types/formEngine/docPermissions.d.ts +14 -0
  297. package/types/formEngine/docPermissions.d.ts.map +1 -1
  298. package/types/formEngine/index.d.ts +1 -1
  299. package/types/formEngine/index.d.ts.map +1 -1
  300. package/types/index.d.ts +15 -3
  301. package/types/index.d.ts.map +1 -1
  302. package/types/liveErrors.d.ts +9 -1
  303. package/types/liveErrors.d.ts.map +1 -1
  304. package/types/measures.d.ts +3 -0
  305. package/types/measures.d.ts.map +1 -0
  306. package/types/recordShape.d.ts +45 -0
  307. package/types/recordShape.d.ts.map +1 -0
  308. package/types/report/ReportGrid.d.ts +20 -0
  309. package/types/report/ReportGrid.d.ts.map +1 -0
  310. package/types/report/ReportViewToolbar.d.ts +31 -0
  311. package/types/report/ReportViewToolbar.d.ts.map +1 -0
  312. package/types/report/queryReport.d.ts +181 -0
  313. package/types/report/queryReport.d.ts.map +1 -0
  314. package/types/report/queryReportColumns.d.ts +12 -0
  315. package/types/report/queryReportColumns.d.ts.map +1 -0
  316. package/types/report/reportViewModel.d.ts +146 -0
  317. package/types/report/reportViewModel.d.ts.map +1 -0
  318. package/types/report/savedReports.d.ts +27 -0
  319. package/types/report/savedReports.d.ts.map +1 -0
  320. package/types/report/useFrappeReport.d.ts +60 -0
  321. package/types/report/useFrappeReport.d.ts.map +1 -0
  322. package/types/report/useQueryReport.d.ts +37 -0
  323. package/types/report/useQueryReport.d.ts.map +1 -0
  324. package/types/useFrappeForm.d.ts +142 -0
  325. package/types/useFrappeForm.d.ts.map +1 -0
@@ -0,0 +1,228 @@
1
+ import { Chip, DropdownMenu, Popover, PopoverContent, XStack, YStack } from "@multiplatform.one/components";
2
+ import { Button, Input } from "@multiplatform.one/forms";
3
+ import { useResolvedKnobs } from "@multiplatform.one/theme";
4
+ import { ColumnsIcon, DownloadSimpleIcon, FloppyDiskIcon, RowsIcon, StackIcon } from "@phosphor-icons/react";
5
+ import { useState } from "react";
6
+ import { useTranslation } from "react-i18next";
7
+ import { filterTupleLabel } from "../filterFields.mjs";
8
+ import { dialogBodyMinWidth, overlayListMaxHeight } from "../measures.mjs";
9
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
10
+ function ReportViewToolbar({
11
+ columns,
12
+ selected,
13
+ onToggleColumn,
14
+ onResetColumns,
15
+ groupBy,
16
+ onGroupByChange,
17
+ baseFilters,
18
+ onClearBaseFilters,
19
+ columnFilterCount,
20
+ onClearColumnFilters,
21
+ savedReports,
22
+ currentReport,
23
+ onSelectReport,
24
+ onSaveReport,
25
+ onDeleteReport,
26
+ onExport,
27
+ exportDisabled
28
+ }) {
29
+ const {
30
+ t
31
+ } = useTranslation();
32
+ const {
33
+ knobProps
34
+ } = useResolvedKnobs();
35
+ const [saveOpen, setSaveOpen] = useState(false);
36
+ const [saveName, setSaveName] = useState("");
37
+ const selectedSet = new Set(selected);
38
+ const groupByColumn = groupBy ? columns.find(column => column.fieldname === groupBy) : void 0;
39
+ const currentSummary = currentReport ? savedReports.find(report => report.name === currentReport) : void 0;
40
+ const handleSaveAs = () => {
41
+ const name = saveName.trim();
42
+ if (!name || !onSaveReport) return;
43
+ onSaveReport(name);
44
+ setSaveOpen(false);
45
+ setSaveName("");
46
+ };
47
+ return /* @__PURE__ */jsxs(XStack, {
48
+ alignItems: "center",
49
+ flexWrap: "wrap",
50
+ gap: "$2",
51
+ ...knobProps.panelPadding,
52
+ paddingVertical: "$2",
53
+ children: [/* @__PURE__ */jsxs(DropdownMenu, {
54
+ children: [/* @__PURE__ */jsx(DropdownMenu.Trigger, {
55
+ asChild: true,
56
+ children: /* @__PURE__ */jsx(Button, {
57
+ size: "$3",
58
+ chromeless: true,
59
+ icon: ColumnsIcon,
60
+ children: t("report.columns", {
61
+ defaultValue: "Columns ({{enabled}}/{{total}})",
62
+ enabled: selected.length,
63
+ total: columns.length
64
+ })
65
+ })
66
+ }), /* @__PURE__ */jsxs(DropdownMenu.Content, {
67
+ maxHeight: overlayListMaxHeight,
68
+ children: [/* @__PURE__ */jsx(DropdownMenu.Label, {
69
+ children: t("report.pickColumns", "Report columns")
70
+ }), columns.map(column => {
71
+ const isSelected = selectedSet.has(column.fieldname);
72
+ const lastSelected = isSelected && selected.length === 1;
73
+ return /* @__PURE__ */jsx(DropdownMenu.CheckboxItem, {
74
+ checked: isSelected,
75
+ disabled: lastSelected,
76
+ disabledReason: lastSelected ? t("report.lastColumn", "At least one column stays visible") : void 0,
77
+ onCheckedChange: () => onToggleColumn(column.fieldname),
78
+ children: column.label
79
+ }, column.fieldname);
80
+ }), /* @__PURE__ */jsx(DropdownMenu.Separator, {}), /* @__PURE__ */jsx(DropdownMenu.Item, {
81
+ onSelect: onResetColumns,
82
+ children: t("report.resetColumns", "Reset to default columns")
83
+ })]
84
+ })]
85
+ }), /* @__PURE__ */jsxs(DropdownMenu, {
86
+ children: [/* @__PURE__ */jsx(DropdownMenu.Trigger, {
87
+ asChild: true,
88
+ children: /* @__PURE__ */jsx(Button, {
89
+ size: "$3",
90
+ chromeless: true,
91
+ icon: RowsIcon,
92
+ children: groupByColumn ? t("report.groupByActive", {
93
+ defaultValue: "Group by: {{field}}",
94
+ field: groupByColumn.label
95
+ }) : t("report.groupBy", "Group by")
96
+ })
97
+ }), /* @__PURE__ */jsxs(DropdownMenu.Content, {
98
+ maxHeight: overlayListMaxHeight,
99
+ children: [/* @__PURE__ */jsx(DropdownMenu.CheckboxItem, {
100
+ checked: !groupBy,
101
+ closeOnSelect: true,
102
+ onCheckedChange: () => onGroupByChange(null),
103
+ children: t("report.groupByNone", "No grouping")
104
+ }), /* @__PURE__ */jsx(DropdownMenu.Separator, {}), columns.map(column => /* @__PURE__ */jsx(DropdownMenu.CheckboxItem, {
105
+ checked: groupBy === column.fieldname,
106
+ closeOnSelect: true,
107
+ onCheckedChange: () => onGroupByChange(column.fieldname),
108
+ children: column.label
109
+ }, column.fieldname))]
110
+ })]
111
+ }), (onSaveReport || savedReports.length > 0) && /* @__PURE__ */jsxs(DropdownMenu, {
112
+ children: [/* @__PURE__ */jsx(DropdownMenu.Trigger, {
113
+ asChild: true,
114
+ children: /* @__PURE__ */jsx(Button, {
115
+ size: "$3",
116
+ chromeless: true,
117
+ icon: StackIcon,
118
+ children: currentSummary ? t("report.savedReportActive", {
119
+ defaultValue: "Report: {{name}}",
120
+ name: currentSummary.reportName
121
+ }) : t("report.savedReport", "Select Report")
122
+ })
123
+ }), /* @__PURE__ */jsxs(DropdownMenu.Content, {
124
+ maxHeight: overlayListMaxHeight,
125
+ children: [/* @__PURE__ */jsx(DropdownMenu.CheckboxItem, {
126
+ checked: !currentReport,
127
+ closeOnSelect: true,
128
+ onCheckedChange: () => onSelectReport(null),
129
+ children: t("report.savedReportNone", "New report (unsaved)")
130
+ }), savedReports.length > 0 && /* @__PURE__ */jsx(DropdownMenu.Separator, {}), savedReports.map(report => /* @__PURE__ */jsx(DropdownMenu.CheckboxItem, {
131
+ checked: currentReport === report.name,
132
+ closeOnSelect: true,
133
+ onCheckedChange: () => onSelectReport(report.name),
134
+ children: report.reportName
135
+ }, report.name)), currentSummary && onDeleteReport && /* @__PURE__ */jsxs(Fragment, {
136
+ children: [/* @__PURE__ */jsx(DropdownMenu.Separator, {}), /* @__PURE__ */jsx(DropdownMenu.Item, {
137
+ destructive: true,
138
+ onSelect: () => onDeleteReport(currentSummary.name),
139
+ children: t("report.deleteReport", {
140
+ defaultValue: "Delete \u201C{{name}}\u201D",
141
+ name: currentSummary.reportName
142
+ })
143
+ })]
144
+ })]
145
+ })]
146
+ }), currentSummary && onSaveReport && /* @__PURE__ */jsx(Button, {
147
+ size: "$3",
148
+ icon: FloppyDiskIcon,
149
+ onPress: () => onSaveReport(currentSummary.name),
150
+ children: t("report.save", "Save")
151
+ }), onSaveReport && /* @__PURE__ */jsxs(Popover, {
152
+ placement: "bottom-start",
153
+ open: saveOpen,
154
+ onOpenChange: setSaveOpen,
155
+ children: [/* @__PURE__ */jsx(Popover.Trigger, {
156
+ asChild: true,
157
+ children: /* @__PURE__ */jsx(Button, {
158
+ size: "$3",
159
+ chromeless: !!currentSummary,
160
+ icon: currentSummary ? void 0 : FloppyDiskIcon,
161
+ children: t("report.saveAs", "Save As\u2026")
162
+ })
163
+ }), /* @__PURE__ */jsxs(PopoverContent, {
164
+ ...knobProps.panelPadding,
165
+ children: [/* @__PURE__ */jsx(Popover.Arrow, {
166
+ borderWidth: 1,
167
+ borderColor: "$borderColor"
168
+ }), /* @__PURE__ */jsxs(XStack, {
169
+ gap: "$2",
170
+ alignItems: "center",
171
+ minWidth: dialogBodyMinWidth,
172
+ children: [/* @__PURE__ */jsx(YStack, {
173
+ flex: 1,
174
+ minWidth: 0,
175
+ children: /* @__PURE__ */jsx(Input, {
176
+ size: "$3",
177
+ compact: true,
178
+ value: saveName,
179
+ onChangeText: setSaveName,
180
+ placeholder: t("report.reportNamePlaceholder", "New report name"),
181
+ inputProps: {
182
+ "aria-label": t("report.reportNamePlaceholder", "New report name")
183
+ }
184
+ })
185
+ }), /* @__PURE__ */jsx(Button, {
186
+ size: "$3",
187
+ accent: true,
188
+ disabled: !saveName.trim(),
189
+ disabledReason: t("report.saveNeedsName", "Name the report to save it"),
190
+ disabledReasonPlacement: "inline",
191
+ onPress: handleSaveAs,
192
+ children: t("report.save", "Save")
193
+ })]
194
+ })]
195
+ })]
196
+ }), /* @__PURE__ */jsx(XStack, {
197
+ flex: 1
198
+ }), baseFilters.map((tuple, index) => /* @__PURE__ */jsx(Chip, {
199
+ size: "$2",
200
+ variant: "subtle",
201
+ color: "gray",
202
+ children: filterTupleLabel([...columns], tuple)
203
+ }, `${tuple[0]}-${index}`)), onClearBaseFilters && baseFilters.length > 0 && /* @__PURE__ */jsx(Button, {
204
+ size: "$3",
205
+ chromeless: true,
206
+ onPress: onClearBaseFilters,
207
+ children: t("report.clearFilters", "Clear filters")
208
+ }), columnFilterCount > 0 && /* @__PURE__ */jsx(Button, {
209
+ size: "$3",
210
+ chromeless: true,
211
+ onPress: onClearColumnFilters,
212
+ children: t("report.clearColumnFilters", {
213
+ defaultValue: "Clear column filters ({{count}})",
214
+ count: columnFilterCount
215
+ })
216
+ }), onExport && /* @__PURE__ */jsx(Button, {
217
+ size: "$3",
218
+ icon: DownloadSimpleIcon,
219
+ disabled: exportDisabled,
220
+ disabledReason: exportDisabled ? t("report.exportEmpty", "No rows to export") : void 0,
221
+ disabledReasonPlacement: "inline",
222
+ onPress: onExport,
223
+ children: t("report.export", "Export CSV")
224
+ })]
225
+ });
226
+ }
227
+ export { ReportViewToolbar };
228
+ //# sourceMappingURL=ReportViewToolbar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Chip","DropdownMenu","Popover","PopoverContent","XStack","YStack","Button","Input","useResolvedKnobs","ColumnsIcon","DownloadSimpleIcon","FloppyDiskIcon","RowsIcon","StackIcon","useState","useTranslation","filterTupleLabel","dialogBodyMinWidth","overlayListMaxHeight","Fragment","jsx","jsxs","ReportViewToolbar","columns","selected","onToggleColumn","onResetColumns","groupBy","onGroupByChange","baseFilters","onClearBaseFilters","columnFilterCount","onClearColumnFilters","savedReports","currentReport","onSelectReport","onSaveReport","onDeleteReport","onExport","exportDisabled","t","knobProps","saveOpen","setSaveOpen","saveName","setSaveName","selectedSet","Set","groupByColumn","find","column","fieldname","currentSummary","report","name","handleSaveAs","trim","alignItems","flexWrap","gap","panelPadding","paddingVertical","children","Trigger","asChild","size","chromeless","icon","defaultValue","enabled","length","total","Content","maxHeight","Label","map","isSelected","has","lastSelected","CheckboxItem","checked","disabled","disabledReason","onCheckedChange","label","Separator","Item","onSelect","field","closeOnSelect","reportName","destructive","onPress","placement","open","onOpenChange","Arrow","borderWidth","borderColor","minWidth","flex","compact","value","onChangeText","placeholder","inputProps","accent","disabledReasonPlacement","tuple","index","variant","color","count"],"sources":["../../../src/report/ReportViewToolbar.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,303 @@
1
+ "use strict";
2
+
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
18
+ get: () => from[key],
19
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
+ });
21
+ }
22
+ return to;
23
+ };
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
+ // If the importer is in node compatibility mode or this is not an ESM
26
+ // file that has been converted to a CommonJS file using a Babel-
27
+ // compatible transform (i.e. "__esModule" has not been set), then set
28
+ // "default" to the CommonJS "module.exports" for node compatibility.
29
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
30
+ value: mod,
31
+ enumerable: true
32
+ }) : target, mod));
33
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
+ value: true
35
+ }), mod);
36
+ var ReportViewToolbar_exports = {};
37
+ __export(ReportViewToolbar_exports, {
38
+ ReportViewToolbar: () => ReportViewToolbar
39
+ });
40
+ module.exports = __toCommonJS(ReportViewToolbar_exports);
41
+ var import_jsx_runtime = require("react/jsx-runtime");
42
+ var import_components = require("@multiplatform.one/components");
43
+ var import_forms = require("@multiplatform.one/forms");
44
+ var import_theme = require("@multiplatform.one/theme");
45
+ var import_react = require("@phosphor-icons/react");
46
+ var import_react2 = __toESM(require("react"));
47
+ var import_react_i18next = require("react-i18next");
48
+ var import_filterFields = require("../filterFields.native.js");
49
+ var import_measures = require("../measures.native.js");
50
+ function ReportViewToolbar(param) {
51
+ var {
52
+ columns,
53
+ selected,
54
+ onToggleColumn,
55
+ onResetColumns,
56
+ groupBy,
57
+ onGroupByChange,
58
+ baseFilters,
59
+ onClearBaseFilters,
60
+ columnFilterCount,
61
+ onClearColumnFilters,
62
+ savedReports,
63
+ currentReport,
64
+ onSelectReport,
65
+ onSaveReport,
66
+ onDeleteReport,
67
+ onExport,
68
+ exportDisabled
69
+ } = param;
70
+ var {
71
+ t
72
+ } = (0, import_react_i18next.useTranslation)();
73
+ var {
74
+ knobProps
75
+ } = (0, import_theme.useResolvedKnobs)();
76
+ var [saveOpen, setSaveOpen] = (0, import_react2.useState)(false);
77
+ var [saveName, setSaveName] = (0, import_react2.useState)("");
78
+ var selectedSet = new Set(selected);
79
+ var groupByColumn = groupBy ? columns.find(function (column) {
80
+ return column.fieldname === groupBy;
81
+ }) : void 0;
82
+ var currentSummary = currentReport ? savedReports.find(function (report) {
83
+ return report.name === currentReport;
84
+ }) : void 0;
85
+ var handleSaveAs = function handleSaveAs2() {
86
+ var name = saveName.trim();
87
+ if (!name || !onSaveReport) return;
88
+ onSaveReport(name);
89
+ setSaveOpen(false);
90
+ setSaveName("");
91
+ };
92
+ return /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_components.XStack, {
93
+ alignItems: "center",
94
+ flexWrap: "wrap",
95
+ gap: "$2",
96
+ ...knobProps.panelPadding,
97
+ paddingVertical: "$2",
98
+ children: [/* Column add/remove picker (persisted per doctype) */
99
+ /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_components.DropdownMenu, {
100
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.DropdownMenu.Trigger, {
101
+ asChild: true,
102
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
103
+ size: "$3",
104
+ chromeless: true,
105
+ icon: import_react.ColumnsIcon,
106
+ children: t("report.columns", {
107
+ defaultValue: "Columns ({{enabled}}/{{total}})",
108
+ enabled: selected.length,
109
+ total: columns.length
110
+ })
111
+ })
112
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_components.DropdownMenu.Content, {
113
+ maxHeight: import_measures.overlayListMaxHeight,
114
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.DropdownMenu.Label, {
115
+ children: t("report.pickColumns", "Report columns")
116
+ }), columns.map(function (column) {
117
+ var isSelected = selectedSet.has(column.fieldname);
118
+ var lastSelected = isSelected && selected.length === 1;
119
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.DropdownMenu.CheckboxItem, {
120
+ checked: isSelected,
121
+ disabled: lastSelected,
122
+ disabledReason: lastSelected ? t("report.lastColumn", "At least one column stays visible") : void 0,
123
+ onCheckedChange: function onCheckedChange() {
124
+ return onToggleColumn(column.fieldname);
125
+ },
126
+ children: column.label
127
+ }, column.fieldname);
128
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.DropdownMenu.Separator, {}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.DropdownMenu.Item, {
129
+ onSelect: onResetColumns,
130
+ children: t("report.resetColumns", "Reset to default columns")
131
+ })]
132
+ })]
133
+ }), /* Group-by (rendered as in-grid group header rows) */
134
+ /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_components.DropdownMenu, {
135
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.DropdownMenu.Trigger, {
136
+ asChild: true,
137
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
138
+ size: "$3",
139
+ chromeless: true,
140
+ icon: import_react.RowsIcon,
141
+ children: groupByColumn ? t("report.groupByActive", {
142
+ defaultValue: "Group by: {{field}}",
143
+ field: groupByColumn.label
144
+ }) : t("report.groupBy", "Group by")
145
+ })
146
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_components.DropdownMenu.Content, {
147
+ maxHeight: import_measures.overlayListMaxHeight,
148
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.DropdownMenu.CheckboxItem, {
149
+ checked: !groupBy,
150
+ closeOnSelect: true,
151
+ onCheckedChange: function onCheckedChange() {
152
+ return onGroupByChange(null);
153
+ },
154
+ children: t("report.groupByNone", "No grouping")
155
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.DropdownMenu.Separator, {}), columns.map(function (column) {
156
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.DropdownMenu.CheckboxItem, {
157
+ checked: groupBy === column.fieldname,
158
+ closeOnSelect: true,
159
+ onCheckedChange: function onCheckedChange() {
160
+ return onGroupByChange(column.fieldname);
161
+ },
162
+ children: column.label
163
+ }, column.fieldname);
164
+ })]
165
+ })]
166
+ }), /* Saved-report selector (desk "Select Report": Report Builder docs) */
167
+ (onSaveReport || savedReports.length > 0) && /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_components.DropdownMenu, {
168
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.DropdownMenu.Trigger, {
169
+ asChild: true,
170
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
171
+ size: "$3",
172
+ chromeless: true,
173
+ icon: import_react.StackIcon,
174
+ children: currentSummary ? t("report.savedReportActive", {
175
+ defaultValue: "Report: {{name}}",
176
+ name: currentSummary.reportName
177
+ }) : t("report.savedReport", "Select Report")
178
+ })
179
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_components.DropdownMenu.Content, {
180
+ maxHeight: import_measures.overlayListMaxHeight,
181
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.DropdownMenu.CheckboxItem, {
182
+ checked: !currentReport,
183
+ closeOnSelect: true,
184
+ onCheckedChange: function onCheckedChange() {
185
+ return onSelectReport(null);
186
+ },
187
+ children: t("report.savedReportNone", "New report (unsaved)")
188
+ }), savedReports.length > 0 && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.DropdownMenu.Separator, {}), savedReports.map(function (report) {
189
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.DropdownMenu.CheckboxItem, {
190
+ checked: currentReport === report.name,
191
+ closeOnSelect: true,
192
+ onCheckedChange: function onCheckedChange() {
193
+ return onSelectReport(report.name);
194
+ },
195
+ children: report.reportName
196
+ }, report.name);
197
+ }), currentSummary && onDeleteReport && /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
198
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.DropdownMenu.Separator, {}), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.DropdownMenu.Item, {
199
+ destructive: true,
200
+ onSelect: function onSelect() {
201
+ return onDeleteReport(currentSummary.name);
202
+ },
203
+ children: t("report.deleteReport", {
204
+ defaultValue: "Delete \u201C{{name}}\u201D",
205
+ name: currentSummary.reportName
206
+ })
207
+ })]
208
+ })]
209
+ })]
210
+ }), /* Save (overwrite the selected report) + Save As (new Report doc) */
211
+ currentSummary && onSaveReport && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
212
+ size: "$3",
213
+ icon: import_react.FloppyDiskIcon,
214
+ onPress: function onPress() {
215
+ return onSaveReport(currentSummary.name);
216
+ },
217
+ children: t("report.save", "Save")
218
+ }), onSaveReport && /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_components.Popover, {
219
+ placement: "bottom-start",
220
+ open: saveOpen,
221
+ onOpenChange: setSaveOpen,
222
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.Popover.Trigger, {
223
+ asChild: true,
224
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
225
+ size: "$3",
226
+ chromeless: !!currentSummary,
227
+ icon: currentSummary ? void 0 : import_react.FloppyDiskIcon,
228
+ children: t("report.saveAs", "Save As\u2026")
229
+ })
230
+ }),
231
+ /* House overlay surface (elevatedSurface knob recipe) — raw
232
+ Popover.Content has no `elevate` variant in tamagui 2.0, so the
233
+ bare boolean leaked to the DOM (LC-46 class). */
234
+ /* @__PURE__ */
235
+ (0, import_jsx_runtime.jsxs)(import_components.PopoverContent, {
236
+ ...knobProps.panelPadding,
237
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.Popover.Arrow, {
238
+ borderWidth: 1,
239
+ borderColor: "$borderColor"
240
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_components.XStack, {
241
+ gap: "$2",
242
+ alignItems: "center",
243
+ minWidth: import_measures.dialogBodyMinWidth,
244
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.YStack, {
245
+ flex: 1,
246
+ minWidth: 0,
247
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Input, {
248
+ size: "$3",
249
+ compact: true,
250
+ value: saveName,
251
+ onChangeText: setSaveName,
252
+ placeholder: t("report.reportNamePlaceholder", "New report name"),
253
+ inputProps: {
254
+ "aria-label": t("report.reportNamePlaceholder", "New report name")
255
+ }
256
+ })
257
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
258
+ size: "$3",
259
+ accent: true,
260
+ disabled: !saveName.trim(),
261
+ disabledReason: t("report.saveNeedsName", "Name the report to save it"),
262
+ disabledReasonPlacement: "inline",
263
+ onPress: handleSaveAs,
264
+ children: t("report.save", "Save")
265
+ })]
266
+ })]
267
+ })]
268
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.XStack, {
269
+ flex: 1
270
+ }), /* Base filter chips (?f= deep link) */
271
+ baseFilters.map(function (tuple, index) {
272
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_components.Chip, {
273
+ size: "$2",
274
+ variant: "subtle",
275
+ color: "gray",
276
+ children: (0, import_filterFields.filterTupleLabel)([...columns], tuple)
277
+ }, `${tuple[0]}-${index}`);
278
+ }), onClearBaseFilters && baseFilters.length > 0 && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
279
+ size: "$3",
280
+ chromeless: true,
281
+ onPress: onClearBaseFilters,
282
+ children: t("report.clearFilters", "Clear filters")
283
+ }), /* Column filter-row summary + clear-all */
284
+ columnFilterCount > 0 && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
285
+ size: "$3",
286
+ chromeless: true,
287
+ onPress: onClearColumnFilters,
288
+ children: t("report.clearColumnFilters", {
289
+ defaultValue: "Clear column filters ({{count}})",
290
+ count: columnFilterCount
291
+ })
292
+ }), onExport && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_forms.Button, {
293
+ size: "$3",
294
+ icon: import_react.DownloadSimpleIcon,
295
+ disabled: exportDisabled,
296
+ disabledReason: exportDisabled ? t("report.exportEmpty", "No rows to export") : void 0,
297
+ disabledReasonPlacement: "inline",
298
+ onPress: onExport,
299
+ children: t("report.export", "Export CSV")
300
+ })]
301
+ });
302
+ }
303
+ //# sourceMappingURL=ReportViewToolbar.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","ReportViewToolbar_exports","ReportViewToolbar","module","exports","import_jsx_runtime","require","import_components","import_forms","import_theme","import_react","import_react2","import_react_i18next","import_filterFields","import_measures","param","columns","selected","onToggleColumn","onResetColumns","groupBy","onGroupByChange","baseFilters","onClearBaseFilters","columnFilterCount","onClearColumnFilters","savedReports","currentReport","onSelectReport","onSaveReport","onDeleteReport","onExport","exportDisabled","t","useTranslation","knobProps","useResolvedKnobs","saveOpen","setSaveOpen","useState","saveName","setSaveName","selectedSet","Set","groupByColumn","find","column","fieldname","currentSummary","report","handleSaveAs","handleSaveAs2","trim","jsxs","XStack","alignItems","flexWrap","gap","panelPadding","paddingVertical","children","DropdownMenu","jsx","Trigger","asChild","Button","size","chromeless","icon","ColumnsIcon","defaultValue","enabled","length","total","Content","maxHeight","overlayListMaxHeight","Label","map","isSelected","has","lastSelected","CheckboxItem","checked","disabled","disabledReason","onCheckedChange","label","Separator","Item","onSelect","RowsIcon","field","closeOnSelect","StackIcon","reportName","Fragment","destructive","FloppyDiskIcon","onPress"],"sources":["../../../src/report/ReportViewToolbar.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}