@quillsql/react 2.14.13 → 2.14.14

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 (241) hide show
  1. package/dist/cjs/Chart.d.ts.map +1 -1
  2. package/dist/cjs/Chart.js +12 -0
  3. package/dist/cjs/ChartBuilder.d.ts +3 -2
  4. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  5. package/dist/cjs/ChartBuilder.js +105 -16
  6. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  7. package/dist/cjs/ChartEditor.js +2 -0
  8. package/dist/cjs/Context.d.ts +6 -2
  9. package/dist/cjs/Context.d.ts.map +1 -1
  10. package/dist/cjs/Context.js +163 -35
  11. package/dist/cjs/Dashboard.d.ts.map +1 -1
  12. package/dist/cjs/Dashboard.js +93 -16
  13. package/dist/cjs/QuillProvider.d.ts +40 -1
  14. package/dist/cjs/QuillProvider.d.ts.map +1 -1
  15. package/dist/cjs/QuillProvider.js +2 -2
  16. package/dist/cjs/ReportBuilder.d.ts +4 -1
  17. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  18. package/dist/cjs/ReportBuilder.js +103 -1262
  19. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  20. package/dist/cjs/SQLEditor.js +50 -6
  21. package/dist/cjs/Table.d.ts.map +1 -1
  22. package/dist/cjs/Table.js +12 -0
  23. package/dist/cjs/components/Chart/BarChart.d.ts.map +1 -1
  24. package/dist/cjs/components/Chart/BarChart.js +14 -9
  25. package/dist/cjs/components/Chart/CustomBar.d.ts +18 -0
  26. package/dist/cjs/components/Chart/CustomBar.d.ts.map +1 -0
  27. package/dist/cjs/components/Chart/CustomBar.js +70 -0
  28. package/dist/cjs/components/Chart/InternalChart.d.ts.map +1 -1
  29. package/dist/cjs/components/Chart/InternalChart.js +24 -1
  30. package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
  31. package/dist/cjs/components/Dashboard/DashboardTemplate.js +2 -1
  32. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  33. package/dist/cjs/components/Dashboard/DataLoader.js +73 -2
  34. package/dist/cjs/components/Dashboard/util.d.ts +2 -1
  35. package/dist/cjs/components/Dashboard/util.d.ts.map +1 -1
  36. package/dist/cjs/components/Dashboard/util.js +12 -1
  37. package/dist/cjs/components/QuillTable.d.ts +2 -1
  38. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  39. package/dist/cjs/components/QuillTable.js +2 -2
  40. package/dist/cjs/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  41. package/dist/cjs/components/ReportBuilder/AddColumnModal.js +7 -1
  42. package/dist/cjs/components/ReportBuilder/ColumnComponent.d.ts +48 -0
  43. package/dist/cjs/components/ReportBuilder/ColumnComponent.d.ts.map +1 -0
  44. package/dist/cjs/components/ReportBuilder/ColumnComponent.js +46 -0
  45. package/dist/cjs/components/ReportBuilder/FilterComponent.d.ts +65 -0
  46. package/dist/cjs/components/ReportBuilder/FilterComponent.d.ts.map +1 -0
  47. package/dist/cjs/components/ReportBuilder/FilterComponent.js +51 -0
  48. package/dist/cjs/components/ReportBuilder/LimitComponent.d.ts +42 -0
  49. package/dist/cjs/components/ReportBuilder/LimitComponent.d.ts.map +1 -0
  50. package/dist/cjs/components/ReportBuilder/LimitComponent.js +50 -0
  51. package/dist/cjs/components/ReportBuilder/PivotComponent.d.ts +66 -0
  52. package/dist/cjs/components/ReportBuilder/PivotComponent.d.ts.map +1 -0
  53. package/dist/cjs/components/ReportBuilder/PivotComponent.js +47 -0
  54. package/dist/cjs/components/ReportBuilder/SaveReport.d.ts +162 -0
  55. package/dist/cjs/components/ReportBuilder/SaveReport.d.ts.map +1 -0
  56. package/dist/cjs/components/ReportBuilder/SaveReport.js +31 -0
  57. package/dist/cjs/components/ReportBuilder/SortComponent.d.ts +42 -0
  58. package/dist/cjs/components/ReportBuilder/SortComponent.d.ts.map +1 -0
  59. package/dist/cjs/components/ReportBuilder/SortComponent.js +50 -0
  60. package/dist/cjs/components/ReportBuilder/TableComponent.d.ts +28 -0
  61. package/dist/cjs/components/ReportBuilder/TableComponent.d.ts.map +1 -0
  62. package/dist/cjs/components/ReportBuilder/TableComponent.js +24 -0
  63. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  64. package/dist/cjs/components/ReportBuilder/ui.js +3 -1
  65. package/dist/cjs/components/UiComponents.d.ts +5 -2
  66. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  67. package/dist/cjs/components/UiComponents.js +6 -5
  68. package/dist/cjs/hooks/useAskQuill.d.ts.map +1 -1
  69. package/dist/cjs/hooks/useAskQuill.js +38 -0
  70. package/dist/cjs/hooks/useDashboard.d.ts +3 -1
  71. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  72. package/dist/cjs/hooks/useDashboard.js +91 -6
  73. package/dist/cjs/hooks/useExport.d.ts.map +1 -1
  74. package/dist/cjs/hooks/useExport.js +17 -9
  75. package/dist/cjs/hooks/useLongLoading.d.ts +13 -0
  76. package/dist/cjs/hooks/useLongLoading.d.ts.map +1 -0
  77. package/dist/cjs/hooks/useLongLoading.js +67 -0
  78. package/dist/cjs/hooks/useQuill.d.ts.map +1 -1
  79. package/dist/cjs/hooks/useQuill.js +25 -1
  80. package/dist/cjs/hooks/useReportBuilder.d.ts +178 -0
  81. package/dist/cjs/hooks/useReportBuilder.d.ts.map +1 -0
  82. package/dist/cjs/hooks/useReportBuilder.js +1476 -0
  83. package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
  84. package/dist/cjs/hooks/useVirtualTables.js +27 -2
  85. package/dist/cjs/index.d.ts +11 -0
  86. package/dist/cjs/index.d.ts.map +1 -1
  87. package/dist/cjs/index.js +17 -1
  88. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +14 -1
  89. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  90. package/dist/cjs/internals/ReportBuilder/PivotForm.js +86 -3
  91. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +19 -2
  92. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  93. package/dist/cjs/internals/ReportBuilder/PivotModal.js +421 -141
  94. package/dist/cjs/models/Client.d.ts +6 -2
  95. package/dist/cjs/models/Client.d.ts.map +1 -1
  96. package/dist/cjs/utils/astProcessing.d.ts +4 -2
  97. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  98. package/dist/cjs/utils/astProcessing.js +25 -2
  99. package/dist/cjs/utils/client.d.ts +2 -1
  100. package/dist/cjs/utils/client.d.ts.map +1 -1
  101. package/dist/cjs/utils/client.js +13 -2
  102. package/dist/cjs/utils/dashboard.d.ts +3 -1
  103. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  104. package/dist/cjs/utils/dashboard.js +44 -3
  105. package/dist/cjs/utils/filterProcessing.d.ts +2 -1
  106. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  107. package/dist/cjs/utils/filterProcessing.js +12 -1
  108. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  109. package/dist/cjs/utils/pivotConstructor.js +11 -9
  110. package/dist/cjs/utils/report.d.ts +11 -5
  111. package/dist/cjs/utils/report.d.ts.map +1 -1
  112. package/dist/cjs/utils/report.js +55 -8
  113. package/dist/cjs/utils/reportBuilder.d.ts.map +1 -1
  114. package/dist/cjs/utils/reportBuilder.js +5 -2
  115. package/dist/cjs/utils/schema.d.ts +5 -2
  116. package/dist/cjs/utils/schema.d.ts.map +1 -1
  117. package/dist/cjs/utils/schema.js +14 -2
  118. package/dist/cjs/utils/tableProcessing.d.ts +17 -10
  119. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  120. package/dist/cjs/utils/tableProcessing.js +99 -17
  121. package/dist/esm/Chart.d.ts.map +1 -1
  122. package/dist/esm/Chart.js +13 -1
  123. package/dist/esm/ChartBuilder.d.ts +3 -2
  124. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  125. package/dist/esm/ChartBuilder.js +107 -18
  126. package/dist/esm/ChartEditor.d.ts.map +1 -1
  127. package/dist/esm/ChartEditor.js +3 -1
  128. package/dist/esm/Context.d.ts +6 -2
  129. package/dist/esm/Context.d.ts.map +1 -1
  130. package/dist/esm/Context.js +162 -34
  131. package/dist/esm/Dashboard.d.ts.map +1 -1
  132. package/dist/esm/Dashboard.js +94 -17
  133. package/dist/esm/QuillProvider.d.ts +40 -1
  134. package/dist/esm/QuillProvider.d.ts.map +1 -1
  135. package/dist/esm/QuillProvider.js +2 -2
  136. package/dist/esm/ReportBuilder.d.ts +4 -1
  137. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  138. package/dist/esm/ReportBuilder.js +106 -1262
  139. package/dist/esm/SQLEditor.d.ts.map +1 -1
  140. package/dist/esm/SQLEditor.js +51 -7
  141. package/dist/esm/Table.d.ts.map +1 -1
  142. package/dist/esm/Table.js +13 -1
  143. package/dist/esm/components/Chart/BarChart.d.ts.map +1 -1
  144. package/dist/esm/components/Chart/BarChart.js +15 -10
  145. package/dist/esm/components/Chart/CustomBar.d.ts +18 -0
  146. package/dist/esm/components/Chart/CustomBar.d.ts.map +1 -0
  147. package/dist/esm/components/Chart/CustomBar.js +68 -0
  148. package/dist/esm/components/Chart/InternalChart.d.ts.map +1 -1
  149. package/dist/esm/components/Chart/InternalChart.js +25 -2
  150. package/dist/esm/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
  151. package/dist/esm/components/Dashboard/DashboardTemplate.js +3 -2
  152. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  153. package/dist/esm/components/Dashboard/DataLoader.js +74 -3
  154. package/dist/esm/components/Dashboard/util.d.ts +2 -1
  155. package/dist/esm/components/Dashboard/util.d.ts.map +1 -1
  156. package/dist/esm/components/Dashboard/util.js +12 -1
  157. package/dist/esm/components/QuillTable.d.ts +2 -1
  158. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  159. package/dist/esm/components/QuillTable.js +2 -2
  160. package/dist/esm/components/ReportBuilder/AddColumnModal.d.ts.map +1 -1
  161. package/dist/esm/components/ReportBuilder/AddColumnModal.js +7 -1
  162. package/dist/esm/components/ReportBuilder/ColumnComponent.d.ts +48 -0
  163. package/dist/esm/components/ReportBuilder/ColumnComponent.d.ts.map +1 -0
  164. package/dist/esm/components/ReportBuilder/ColumnComponent.js +39 -0
  165. package/dist/esm/components/ReportBuilder/FilterComponent.d.ts +65 -0
  166. package/dist/esm/components/ReportBuilder/FilterComponent.d.ts.map +1 -0
  167. package/dist/esm/components/ReportBuilder/FilterComponent.js +44 -0
  168. package/dist/esm/components/ReportBuilder/LimitComponent.d.ts +42 -0
  169. package/dist/esm/components/ReportBuilder/LimitComponent.d.ts.map +1 -0
  170. package/dist/esm/components/ReportBuilder/LimitComponent.js +46 -0
  171. package/dist/esm/components/ReportBuilder/PivotComponent.d.ts +66 -0
  172. package/dist/esm/components/ReportBuilder/PivotComponent.d.ts.map +1 -0
  173. package/dist/esm/components/ReportBuilder/PivotComponent.js +40 -0
  174. package/dist/esm/components/ReportBuilder/SaveReport.d.ts +162 -0
  175. package/dist/esm/components/ReportBuilder/SaveReport.d.ts.map +1 -0
  176. package/dist/esm/components/ReportBuilder/SaveReport.js +31 -0
  177. package/dist/esm/components/ReportBuilder/SortComponent.d.ts +42 -0
  178. package/dist/esm/components/ReportBuilder/SortComponent.d.ts.map +1 -0
  179. package/dist/esm/components/ReportBuilder/SortComponent.js +46 -0
  180. package/dist/esm/components/ReportBuilder/TableComponent.d.ts +28 -0
  181. package/dist/esm/components/ReportBuilder/TableComponent.d.ts.map +1 -0
  182. package/dist/esm/components/ReportBuilder/TableComponent.js +20 -0
  183. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  184. package/dist/esm/components/ReportBuilder/ui.js +4 -2
  185. package/dist/esm/components/UiComponents.d.ts +5 -2
  186. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  187. package/dist/esm/components/UiComponents.js +6 -5
  188. package/dist/esm/hooks/useAskQuill.d.ts.map +1 -1
  189. package/dist/esm/hooks/useAskQuill.js +39 -1
  190. package/dist/esm/hooks/useDashboard.d.ts +3 -1
  191. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  192. package/dist/esm/hooks/useDashboard.js +92 -7
  193. package/dist/esm/hooks/useExport.d.ts.map +1 -1
  194. package/dist/esm/hooks/useExport.js +18 -10
  195. package/dist/esm/hooks/useLongLoading.d.ts +13 -0
  196. package/dist/esm/hooks/useLongLoading.d.ts.map +1 -0
  197. package/dist/esm/hooks/useLongLoading.js +64 -0
  198. package/dist/esm/hooks/useQuill.d.ts.map +1 -1
  199. package/dist/esm/hooks/useQuill.js +26 -2
  200. package/dist/esm/hooks/useReportBuilder.d.ts +178 -0
  201. package/dist/esm/hooks/useReportBuilder.d.ts.map +1 -0
  202. package/dist/esm/hooks/useReportBuilder.js +1471 -0
  203. package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
  204. package/dist/esm/hooks/useVirtualTables.js +28 -3
  205. package/dist/esm/index.d.ts +11 -0
  206. package/dist/esm/index.d.ts.map +1 -1
  207. package/dist/esm/index.js +8 -0
  208. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +14 -1
  209. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  210. package/dist/esm/internals/ReportBuilder/PivotForm.js +87 -4
  211. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +19 -2
  212. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  213. package/dist/esm/internals/ReportBuilder/PivotModal.js +423 -143
  214. package/dist/esm/models/Client.d.ts +6 -2
  215. package/dist/esm/models/Client.d.ts.map +1 -1
  216. package/dist/esm/utils/astProcessing.d.ts +4 -2
  217. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  218. package/dist/esm/utils/astProcessing.js +25 -2
  219. package/dist/esm/utils/client.d.ts +2 -1
  220. package/dist/esm/utils/client.d.ts.map +1 -1
  221. package/dist/esm/utils/client.js +13 -2
  222. package/dist/esm/utils/dashboard.d.ts +3 -1
  223. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  224. package/dist/esm/utils/dashboard.js +44 -3
  225. package/dist/esm/utils/filterProcessing.d.ts +2 -1
  226. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  227. package/dist/esm/utils/filterProcessing.js +12 -1
  228. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  229. package/dist/esm/utils/pivotConstructor.js +11 -9
  230. package/dist/esm/utils/report.d.ts +11 -5
  231. package/dist/esm/utils/report.d.ts.map +1 -1
  232. package/dist/esm/utils/report.js +55 -8
  233. package/dist/esm/utils/reportBuilder.d.ts.map +1 -1
  234. package/dist/esm/utils/reportBuilder.js +5 -2
  235. package/dist/esm/utils/schema.d.ts +5 -2
  236. package/dist/esm/utils/schema.d.ts.map +1 -1
  237. package/dist/esm/utils/schema.js +14 -2
  238. package/dist/esm/utils/tableProcessing.d.ts +17 -10
  239. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  240. package/dist/esm/utils/tableProcessing.js +99 -17
  241. package/package.json +1 -1
@@ -176,6 +176,7 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
176
176
  const { reports, reportsDispatch, fetchIndividualReport } = (0, react_1.useContext)(Context_1.ReportsContext);
177
177
  const { reportFilters } = (0, react_1.useContext)(Context_1.ReportFiltersContext);
178
178
  const { getToken } = (0, react_1.useContext)(Context_1.FetchContext);
179
+ const { eventTracking } = (0, react_1.useContext)(Context_1.EventTrackingContext);
179
180
  const contextFilters = (0, react_1.useMemo)(() => {
180
181
  return dashboardName
181
182
  ? Object.values(dashboardFilters[dashboardName] ?? {}).map((f) => f.filter)
@@ -189,7 +190,7 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
189
190
  const chartReport = (0, react_1.useMemo)(() => {
190
191
  const report = (dashboardName ? dashboard : reports)[item.id];
191
192
  if (report) {
192
- return (0, report_1.convertInternalReportToReport)((0, merge_1.mergeComparisonRange)(report), contextFilters);
193
+ return (0, report_1.convertInternalReportToReport)((0, merge_1.mergeComparisonRange)(report), contextFilters, eventTracking);
193
194
  }
194
195
  else {
195
196
  return constructReportFromItem(item);
@@ -241,6 +242,17 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
241
242
  if (e instanceof Error && e.name === 'AbortError') {
242
243
  return;
243
244
  }
245
+ eventTracking?.logError?.({
246
+ type: 'bug', // TODO: determine type
247
+ severity: 'high',
248
+ message: 'Error fetching row count',
249
+ errorMessage: e.message,
250
+ errorStack: e.stack,
251
+ errorData: {
252
+ caller: 'DataLoader',
253
+ function: 'fetchRowCount',
254
+ },
255
+ });
244
256
  }
245
257
  finally {
246
258
  if (fetchReportRowCountRequestId === rowCountRequestId.current) {
@@ -308,6 +320,7 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
308
320
  comparisonPivotQuery,
309
321
  getPivotRowCount: false,
310
322
  getToken,
323
+ eventTracking,
311
324
  });
312
325
  updateTableRowsAbortController.current = null;
313
326
  if (paginatedRows.error) {
@@ -344,6 +357,17 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
344
357
  }
345
358
  catch (e) {
346
359
  console.log(e);
360
+ eventTracking?.logError?.({
361
+ type: 'bug', // TODO: determine type
362
+ severity: 'high',
363
+ message: 'Error fetching table rows',
364
+ errorMessage: e.message,
365
+ errorStack: e.stack,
366
+ errorData: {
367
+ caller: 'DataLoader',
368
+ function: 'updateTableRows',
369
+ },
370
+ });
347
371
  }
348
372
  finally {
349
373
  if (fetchUpdateTableRowsRequestId === updateTableRowsRequestId.current) {
@@ -380,6 +404,7 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
380
404
  rowCountOnly: false,
381
405
  abortSignal: rowsAbortController.current.signal,
382
406
  getToken,
407
+ eventTracking,
383
408
  });
384
409
  addReport({
385
410
  ...fetchedReport,
@@ -410,6 +435,17 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
410
435
  }
411
436
  catch (e) {
412
437
  setError(e.message ?? 'Error fetching report');
438
+ eventTracking?.logError?.({
439
+ type: 'bug', // TODO: determine type
440
+ severity: 'high',
441
+ message: 'Error fetching report',
442
+ errorMessage: e.message,
443
+ errorStack: e.stack,
444
+ errorData: {
445
+ caller: 'DataLoader',
446
+ function: 'fetchReportHelper',
447
+ },
448
+ });
413
449
  }
414
450
  }
415
451
  if (!item.pivot) {
@@ -421,6 +457,17 @@ function DataLoader({ item, children, filters, userFilters, additionalProcessing
421
457
  if (e instanceof Error && e.name === 'AbortError') {
422
458
  return;
423
459
  }
460
+ eventTracking?.logError?.({
461
+ type: 'bug', // TODO: determine type
462
+ severity: 'high',
463
+ message: 'Error fetching report',
464
+ errorMessage: e.message,
465
+ errorStack: e.stack,
466
+ errorData: {
467
+ caller: 'DataLoader',
468
+ function: 'fetchReportHelper',
469
+ },
470
+ });
424
471
  throw e;
425
472
  }
426
473
  finally {
@@ -487,6 +534,7 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
487
534
  const { dashboardFilters } = (0, react_1.useContext)(Context_1.DashboardFiltersContext);
488
535
  const { reports, fetchIndividualReport } = (0, react_1.useContext)(Context_1.ReportsContext);
489
536
  const { getToken } = (0, react_1.useContext)(Context_1.FetchContext);
537
+ const { eventTracking } = (0, react_1.useContext)(Context_1.EventTrackingContext);
490
538
  const { reportFilters } = (0, react_1.useContext)(Context_1.ReportFiltersContext);
491
539
  const { tenants, flags } = (0, react_1.useContext)(Context_1.TenantContext);
492
540
  const contextFilters = (0, react_1.useMemo)(() => {
@@ -510,7 +558,7 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
510
558
  if (!report) {
511
559
  return constructReportFromItem(item);
512
560
  }
513
- return (0, report_1.convertInternalReportToReport)((0, merge_1.mergeComparisonRange)(report), contextFilters);
561
+ return (0, report_1.convertInternalReportToReport)((0, merge_1.mergeComparisonRange)(report), contextFilters, eventTracking);
514
562
  }, [
515
563
  (dashboardName ? dashboard : reports)[item.id],
516
564
  reportFilters,
@@ -546,6 +594,7 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
546
594
  customFields: schemaData.customFields,
547
595
  abortSignal: fetchReportAbortController.current.signal,
548
596
  getToken,
597
+ eventTracking,
549
598
  });
550
599
  addReport({
551
600
  ...report,
@@ -576,6 +625,17 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
576
625
  setError(undefined);
577
626
  }
578
627
  catch (e) {
628
+ eventTracking?.logError?.({
629
+ type: 'bug', // TODO: determine type
630
+ severity: 'high',
631
+ message: 'Error fetching report',
632
+ errorMessage: e.message,
633
+ errorStack: e.stack,
634
+ errorData: {
635
+ caller: 'ChartDataLoader',
636
+ function: 'fetchReportHelper',
637
+ },
638
+ });
579
639
  setError(e.message ?? 'Error fetching report');
580
640
  }
581
641
  }
@@ -584,6 +644,17 @@ const ChartDataLoader = ({ item, children, dateBucket, additionalProcessing, fil
584
644
  if (e instanceof Error && e.name === 'AbortError') {
585
645
  return;
586
646
  }
647
+ eventTracking?.logError?.({
648
+ type: 'bug', // TODO: determine type
649
+ severity: 'high',
650
+ message: 'Error fetching report',
651
+ errorMessage: e.message,
652
+ errorStack: e.stack,
653
+ errorData: {
654
+ caller: 'ChartDataLoader',
655
+ function: 'fetchReportHelper',
656
+ },
657
+ });
587
658
  setError(e.message ?? 'Error fetching report');
588
659
  }
589
660
  finally {
@@ -1,7 +1,8 @@
1
1
  import { QuillProviderClient } from '../../models/Client';
2
+ import { EventTracking } from '../../QuillProvider';
2
3
  export declare function validateTemplatesAgainstFilters(filters: any[], templates: any[]): {
3
4
  valid: boolean;
4
5
  error: string;
5
6
  };
6
- export declare function addTemplatesToDashboard(name: any, newTemplates: any[], client: QuillProviderClient, dashboardData: any, getToken: () => Promise<string>): Promise<any>;
7
+ export declare function addTemplatesToDashboard(name: any, newTemplates: any[], client: QuillProviderClient, dashboardData: any, getToken: () => Promise<string>, eventTracking: EventTracking | null): Promise<any>;
7
8
  //# sourceMappingURL=util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAK1D,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,GAAG,EAAE,EACd,SAAS,EAAE,GAAG,EAAE,GACf;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiCnC;AAGD,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,GAAG,EAAE,EACnB,MAAM,EAAE,mBAAmB,EAC3B,aAAa,EAAE,GAAG,EAClB,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,GAC9B,OAAO,CAAC,GAAG,CAAC,CA8Cd"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAKpD,wBAAgB,+BAA+B,CAC7C,OAAO,EAAE,GAAG,EAAE,EACd,SAAS,EAAE,GAAG,EAAE,GACf;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAiCnC;AAGD,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,GAAG,EAAE,EACnB,MAAM,EAAE,mBAAmB,EAC3B,aAAa,EAAE,GAAG,EAClB,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC/B,aAAa,EAAE,aAAa,GAAG,IAAI,GAClC,OAAO,CAAC,GAAG,CAAC,CAyDd"}
@@ -40,7 +40,7 @@ function validateTemplatesAgainstFilters(filters, templates) {
40
40
  }
41
41
  }
42
42
  // TODO: Outdated, revisit and retest
43
- async function addTemplatesToDashboard(name, newTemplates, client, dashboardData, getToken) {
43
+ async function addTemplatesToDashboard(name, newTemplates, client, dashboardData, getToken, eventTracking) {
44
44
  try {
45
45
  const { publicKey, tenants } = client;
46
46
  if (tenants) {
@@ -85,5 +85,16 @@ async function addTemplatesToDashboard(name, newTemplates, client, dashboardData
85
85
  }
86
86
  catch (error) {
87
87
  console.error('Error while updating dashboard:', error);
88
+ eventTracking?.logError?.({
89
+ type: 'bug', // TODO: determine type
90
+ severity: 'high',
91
+ message: 'Error while updating dashboard',
92
+ errorMessage: error.message,
93
+ errorStack: error.stack,
94
+ errorData: {
95
+ caller: 'addTemplatesToDashboard',
96
+ function: 'addTemplatesToDashboard',
97
+ },
98
+ });
88
99
  }
89
100
  }
@@ -31,7 +31,8 @@ export interface TableComponentProps {
31
31
  interface QuillTableComponentProps extends TableComponentProps {
32
32
  hideLabels?: boolean;
33
33
  disableSort?: boolean;
34
+ overrideInMemortSort?: boolean;
34
35
  }
35
- export default function QuillTable({ rows, rowCount, rowCountIsLoading, columns, isLoading, currentPage, sort, hideCSVDownloadButton, containerStyle, className, LoadingComponent, rowsPerPage, emptyStateLabel, downloadCSV, onPageChange, onSortChange, hideLabels, disableSort, }: QuillTableComponentProps): import("react/jsx-runtime").JSX.Element;
36
+ export default function QuillTable({ rows, rowCount, rowCountIsLoading, columns, isLoading, currentPage, sort, overrideInMemortSort, hideCSVDownloadButton, containerStyle, className, LoadingComponent, rowsPerPage, emptyStateLabel, downloadCSV, onPageChange, onSortChange, hideLabels, disableSort, }: QuillTableComponentProps): import("react/jsx-runtime").JSX.Element;
36
37
  export {};
37
38
  //# sourceMappingURL=QuillTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QuillTable.d.ts","sourceRoot":"","sources":["../../../src/components/QuillTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAG/D,OAAO,EAAE,oBAAoB,EAAyB,MAAM,gBAAgB,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACrE;AAED,UAAU,wBAAyB,SAAQ,mBAAmB;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,WAAW,EACX,IAAI,EACJ,qBAA4B,EAC5B,cAAc,EACd,SAAS,EACT,gBAAwC,EACxC,WAAgB,EAChB,eAA8B,EAC9B,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,EAAE,wBAAwB,2CA+e1B"}
1
+ {"version":3,"file":"QuillTable.d.ts","sourceRoot":"","sources":["../../../src/components/QuillTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0C,MAAM,OAAO,CAAC;AAG/D,OAAO,EAAE,oBAAoB,EAAyB,MAAM,gBAAgB,CAAC;AAE7E,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IACrC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IACrC,0BAA0B,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACrE;AAED,UAAU,wBAAyB,SAAQ,mBAAmB;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,iBAAiB,EACjB,OAAO,EACP,SAAS,EACT,WAAW,EACX,IAAI,EACJ,oBAAoB,EACpB,qBAA4B,EAC5B,cAAc,EACd,SAAS,EACT,gBAAwC,EACxC,WAAgB,EAChB,eAA8B,EAC9B,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,UAAU,EACV,WAAW,GACZ,EAAE,wBAAwB,2CA+e1B"}
@@ -6,7 +6,7 @@ const react_1 = require("react");
6
6
  const valueFormatter_1 = require("../utils/valueFormatter");
7
7
  const Context_1 = require("../Context");
8
8
  const UiComponents_1 = require("./UiComponents");
9
- function QuillTable({ rows, rowCount, rowCountIsLoading, columns, isLoading, currentPage, sort, hideCSVDownloadButton = true, containerStyle, className, LoadingComponent = UiComponents_1.QuillLoadingComponent, rowsPerPage = 10, emptyStateLabel = 'No results', downloadCSV, onPageChange, onSortChange, hideLabels, disableSort, }) {
9
+ function QuillTable({ rows, rowCount, rowCountIsLoading, columns, isLoading, currentPage, sort, overrideInMemortSort, hideCSVDownloadButton = true, containerStyle, className, LoadingComponent = UiComponents_1.QuillLoadingComponent, rowsPerPage = 10, emptyStateLabel = 'No results', downloadCSV, onPageChange, onSortChange, hideLabels, disableSort, }) {
10
10
  const [activeRows, setActiveRows] = (0, react_1.useState)([]);
11
11
  const [maxPage, setMaxPage] = (0, react_1.useState)(1);
12
12
  const [sortColumn, setSortColumn] = (0, react_1.useState)(sort?.field || '');
@@ -31,7 +31,7 @@ function QuillTable({ rows, rowCount, rowCountIsLoading, columns, isLoading, cur
31
31
  }
32
32
  else {
33
33
  const sortedRows = [...rows];
34
- if (sortColumn) {
34
+ if (sortColumn && !overrideInMemortSort) {
35
35
  sortedRows.sort((a, b) => {
36
36
  const result = (0, valueFormatter_1.compareValues)(a, b, sortColumn);
37
37
  return sortDirection === 'asc' ? result : -result;
@@ -1 +1 @@
1
- {"version":3,"file":"AddColumnModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddColumnModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAiBpE,OAAO,EAGL,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAEL,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,MAAM,EACN,cAAc,EACd,eAAe,EACf,MAAM,EACN,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,MAAM,EACN,sBAAoD,EACpD,gBAAwC,GACzC,EAAE;IACD,MAAM,EAAE,CACN,SAAS,EAAE,kBAAkB,EAAE,EAC/B,UAAU,EAAE,mBAAmB,EAAE,KAC9B,IAAI,CAAC;IACV,cAAc,EAAE,kBAAkB,EAAE,CAAC;IACrC,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;IAC7B,kBAAkB,EACd,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC,GACjD,KAAK,CAAC,yBAAyB,CAC7B,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAChE,CAAC;IACN,YAAY,EAAE,CAAC,KAAK,EAAE;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,MAAM,IAAI,CAAC;QACxB,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;YAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,OAAO,CAAA;SAAE,KAAK,GAAG,CAAC,OAAO,CAAC;KAC5E,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC;IACZ,sBAAsB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAC1C,gBAAgB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;CACrC,2CAgUA"}
1
+ {"version":3,"file":"AddColumnModal.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/AddColumnModal.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAiBpE,OAAO,EAGL,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAEL,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,EACrC,MAAM,EACN,cAAc,EACd,eAAe,EACf,MAAM,EACN,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,MAAM,EACN,sBAAoD,EACpD,gBAAwC,GACzC,EAAE;IACD,MAAM,EAAE,CACN,SAAS,EAAE,kBAAkB,EAAE,EAC/B,UAAU,EAAE,mBAAmB,EAAE,KAC9B,IAAI,CAAC;IACV,cAAc,EAAE,kBAAkB,EAAE,CAAC;IACrC,eAAe,EAAE,mBAAmB,EAAE,CAAC;IACvC,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,aAAa,CAAC;IAC7B,kBAAkB,EACd,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC,GACjD,KAAK,CAAC,yBAAyB,CAC7B,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAChE,CAAC;IACN,YAAY,EAAE,CAAC,KAAK,EAAE;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,MAAM,IAAI,CAAC;QACxB,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;YAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,OAAO,CAAA;SAAE,KAAK,GAAG,CAAC,OAAO,CAAC;KAC5E,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,eAAe,EAAE,GAAG,CAAC;IACrB,MAAM,EAAE,GAAG,CAAC;IACZ,sBAAsB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAC1C,gBAAgB,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;CACrC,2CAuUA"}
@@ -12,6 +12,7 @@ const ReportBuilder_1 = require("../../models/ReportBuilder");
12
12
  function AddColumnModal({ onSave, selectedTables, selectedColumns, schema, schemaLoading, foreignKeyMap, TextInputComponent, SelectColumn, SecondaryButton, Button, ColumnSearchEmptyState = UiComponents_1.QuillColumnSearchEmptyState, LoadingComponent = UiComponents_1.QuillLoadingComponent, }) {
13
13
  const [primaryTable, setPrimaryTable] = (0, react_1.useState)(selectedTables[0]?.name);
14
14
  const [search, setSearch] = (0, react_1.useState)('');
15
+ const [initialLoad, setInitialLoad] = (0, react_1.useState)(true);
15
16
  const textInputContainerRef = (0, react_1.useRef)(null);
16
17
  const [modalSelectedColumns, setModalSelectedColumns] = (0, react_1.useState)(selectedColumns.map((col) => `${col.table}.${col.field}`));
17
18
  const columnOptions = (0, react_1.useMemo)(() => {
@@ -69,6 +70,11 @@ function AddColumnModal({ onSave, selectedTables, selectedColumns, schema, schem
69
70
  const remainingColumns = columnOptions.filter((col) => !modalSelectedColumns.includes(col));
70
71
  setOrderedColumnNames([...modalSelectedColumns, ...remainingColumns]);
71
72
  }, [columnOptions]);
73
+ (0, react_1.useEffect)(() => {
74
+ if (!schemaLoading && initialLoad) {
75
+ setTimeout(() => setInitialLoad(false), 200); // This artificial load prevents a flash as searchResults gets populated from empty array
76
+ }
77
+ }, [schemaLoading]);
72
78
  const sensors = (0, core_1.useSensors)((0, core_1.useSensor)(core_1.PointerSensor), (0, core_1.useSensor)(core_1.KeyboardSensor, {
73
79
  coordinateGetter: sortable_1.sortableKeyboardCoordinates,
74
80
  }));
@@ -101,7 +107,7 @@ function AddColumnModal({ onSave, selectedTables, selectedColumns, schema, schem
101
107
  alignItems: 'center',
102
108
  marginTop: 2,
103
109
  marginBottom: 6,
104
- }, children: (0, jsx_runtime_1.jsx)(TextInputComponent, { id: 'add_column_search_bar', value: search, placeholder: 'Search...', width: 400, onChange: (e) => setSearch(e.target.value) }) }), schemaLoading ? ((0, jsx_runtime_1.jsx)(LoadingComponent, {})) : ((0, jsx_runtime_1.jsx)(core_1.DndContext, { sensors: sensors, collisionDetection: core_1.closestCenter, onDragEnd: handleDragEnd, children: (0, jsx_runtime_1.jsx)(sortable_1.SortableContext, { items: orderedColumnNames, strategy: sortable_1.verticalListSortingStrategy, children: (0, jsx_runtime_1.jsxs)("div", { style: {
110
+ }, children: (0, jsx_runtime_1.jsx)(TextInputComponent, { id: 'add_column_search_bar', value: search, placeholder: 'Search...', width: 400, onChange: (e) => setSearch(e.target.value) }) }), schemaLoading || initialLoad ? ((0, jsx_runtime_1.jsx)(LoadingComponent, {})) : ((0, jsx_runtime_1.jsx)(core_1.DndContext, { sensors: sensors, collisionDetection: core_1.closestCenter, onDragEnd: handleDragEnd, children: (0, jsx_runtime_1.jsx)(sortable_1.SortableContext, { items: orderedColumnNames, strategy: sortable_1.verticalListSortingStrategy, children: (0, jsx_runtime_1.jsxs)("div", { style: {
105
111
  display: 'flex',
106
112
  flexDirection: 'column',
107
113
  gap: 8,
@@ -0,0 +1,48 @@
1
+ import { ReportBuilder } from '../../hooks/useReportBuilder';
2
+ import { TextInputComponentProps } from '../UiComponents';
3
+ interface AddColumnsProps {
4
+ reportBuilder: ReportBuilder;
5
+ ModalComponent?: (props: {
6
+ isOpen: boolean;
7
+ setIsOpen: (isOpen: boolean) => void;
8
+ title?: string;
9
+ children: React.ReactNode;
10
+ }) => JSX.Element;
11
+ ButtonComponent?: (props: {
12
+ onClick: () => void;
13
+ label: string;
14
+ disabled?: boolean;
15
+ isLoading?: boolean;
16
+ }) => JSX.Element;
17
+ DraggableColumnComponent?: (props: {
18
+ label: string;
19
+ onDelete: () => void;
20
+ DragHandle: ({ dragIcon }: {
21
+ dragIcon: () => JSX.Element;
22
+ }) => JSX.Element;
23
+ deleteDisabled?: boolean;
24
+ }) => JSX.Element;
25
+ TextInputComponent?: ((props: TextInputComponentProps) => JSX.Element) | React.ForwardRefExoticComponent<TextInputComponentProps & React.RefAttributes<HTMLInputElement>>;
26
+ SelectColumnComponent?: (props: {
27
+ label: string;
28
+ isSelected: boolean;
29
+ setSelected: () => void;
30
+ DragHandle: ({ dragIcon }: {
31
+ dragIcon: () => JSX.Element;
32
+ }) => JSX.Element;
33
+ }) => JSX.Element;
34
+ SecondaryButtonComponent?: (props: {
35
+ onClick: () => void;
36
+ label: string;
37
+ disabled?: boolean;
38
+ isLoading?: boolean;
39
+ }) => JSX.Element;
40
+ ColumnSearchEmptyState?: () => JSX.Element;
41
+ LoadingComponent?: () => JSX.Element;
42
+ ColumnDisplay?: React.ReactNode;
43
+ ModalTrigger?: React.ReactNode;
44
+ Modal?: React.ReactNode;
45
+ }
46
+ export declare const AddColumns: ({ reportBuilder, ModalComponent, ButtonComponent, DraggableColumnComponent, TextInputComponent, SelectColumnComponent, SecondaryButtonComponent, ColumnSearchEmptyState, LoadingComponent, ColumnDisplay, ModalTrigger, Modal, }: AddColumnsProps) => import("react/jsx-runtime").JSX.Element;
47
+ export {};
48
+ //# sourceMappingURL=ColumnComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/ColumnComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAE7D,OAAO,EAML,uBAAuB,EACxB,MAAM,iBAAiB,CAAC;AAKzB,UAAU,eAAe;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QACvB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;KAC3B,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACxB,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE;QACjC,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,MAAM,IAAI,CAAC;QACrB,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;YAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,OAAO,CAAA;SAAE,KAAK,GAAG,CAAC,OAAO,CAAC;QAC3E,cAAc,CAAC,EAAE,OAAO,CAAC;KAC1B,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,kBAAkB,CAAC,EACf,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC,GACjD,KAAK,CAAC,yBAAyB,CAC7B,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAChE,CAAC;IAEN,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC9B,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,OAAO,CAAC;QACpB,WAAW,EAAE,MAAM,IAAI,CAAC;QACxB,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;YAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,OAAO,CAAA;SAAE,KAAK,GAAG,CAAC,OAAO,CAAC;KAC5E,KAAK,GAAG,CAAC,OAAO,CAAC;IAElB,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE;QACjC,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,SAAS,CAAC,EAAE,OAAO,CAAC;KACrB,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAC3C,gBAAgB,CAAC,EAAE,MAAM,GAAG,CAAC,OAAO,CAAC;IAErC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAsID,eAAO,MAAM,UAAU,qOAkCpB,eAAe,4CAQjB,CAAC"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AddColumns = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const ReportBuilder_1 = require("../../models/ReportBuilder");
9
+ const UiComponents_1 = require("../UiComponents");
10
+ const AddColumnModal_1 = __importDefault(require("./AddColumnModal"));
11
+ const DraggableColumns_1 = __importDefault(require("./DraggableColumns"));
12
+ const ui_1 = require("./ui");
13
+ const ColumnsDisplayWrapper = ({ reportBuilder, DraggableColumnComponent, }) => {
14
+ return ((0, jsx_runtime_1.jsx)(DraggableColumns_1.default, { columns: reportBuilder.columns, DraggableColumnComponent: DraggableColumnComponent, onColumnOrderChange: reportBuilder.handleColumnsChange, loading: reportBuilder.loading }));
15
+ };
16
+ const ModalTriggerWrapper = ({ reportBuilder, ButtonComponent, }) => {
17
+ return ((0, jsx_runtime_1.jsx)(ButtonComponent, { onClick: () => {
18
+ if (!reportBuilder.openPopover) {
19
+ reportBuilder.setOpenPopover('AddColumnModal');
20
+ }
21
+ }, label: "Select columns", disabled: reportBuilder.loading }));
22
+ };
23
+ const ModalWrapper = ({ reportBuilder, ModalComponent, TextInputComponent, SelectColumnComponent, SecondaryButtonComponent, ButtonComponent, ColumnSearchEmptyState, LoadingComponent, }) => {
24
+ return ((0, jsx_runtime_1.jsx)(ModalComponent, { isOpen: reportBuilder.openPopover === 'AddColumnModal', setIsOpen: (isOpen) => {
25
+ if (!isOpen) {
26
+ // delay onClose callback so onClick no-ops
27
+ setTimeout(() => {
28
+ reportBuilder.setOpenPopover(null);
29
+ }, 100);
30
+ }
31
+ }, title: "Select columns", children: (0, jsx_runtime_1.jsx)(AddColumnModal_1.default, { onSave: (tables, columns) => {
32
+ reportBuilder.handleMultiStateChange({
33
+ state: {
34
+ ...ReportBuilder_1.EMPTY_REPORT_BUILDER_STATE,
35
+ tables,
36
+ columns,
37
+ },
38
+ fetchData: true,
39
+ });
40
+ reportBuilder.setOpenPopover(null);
41
+ }, selectedTables: reportBuilder.tables, selectedColumns: reportBuilder.columns, schema: reportBuilder.filteredSchema, foreignKeyMap: reportBuilder.foreignKeyMap, schemaLoading: reportBuilder.schemaData.isSchemaLoading, TextInputComponent: TextInputComponent, SelectColumn: SelectColumnComponent, SecondaryButton: SecondaryButtonComponent, Button: ButtonComponent, ColumnSearchEmptyState: ColumnSearchEmptyState, LoadingComponent: LoadingComponent }) }));
42
+ };
43
+ const AddColumns = ({ reportBuilder, ModalComponent = UiComponents_1.MemoizedModal, ButtonComponent = UiComponents_1.MemoizedSecondaryButton, DraggableColumnComponent = ui_1.QuillDraggableColumn, TextInputComponent = UiComponents_1.QuillTextInput, SelectColumnComponent = ui_1.QuillSelectColumn, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, ColumnSearchEmptyState = UiComponents_1.QuillColumnSearchEmptyState, LoadingComponent = UiComponents_1.QuillLoadingComponent, ColumnDisplay = ((0, jsx_runtime_1.jsx)(ColumnsDisplayWrapper, { reportBuilder: reportBuilder, DraggableColumnComponent: DraggableColumnComponent })), ModalTrigger = ((0, jsx_runtime_1.jsx)(ModalTriggerWrapper, { reportBuilder: reportBuilder, ButtonComponent: SecondaryButtonComponent })), Modal = ((0, jsx_runtime_1.jsx)(ModalWrapper, { reportBuilder: reportBuilder, ModalComponent: ModalComponent, TextInputComponent: TextInputComponent, SelectColumnComponent: SelectColumnComponent, SecondaryButtonComponent: SecondaryButtonComponent, ColumnSearchEmptyState: ColumnSearchEmptyState, LoadingComponent: LoadingComponent, ButtonComponent: ButtonComponent })), }) => {
44
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [ColumnDisplay, ModalTrigger, Modal] }));
45
+ };
46
+ exports.AddColumns = AddColumns;
@@ -0,0 +1,65 @@
1
+ import { ReportBuilder } from '../../hooks/useReportBuilder';
2
+ import { TextInputComponentProps, SelectComponentProps } from '../UiComponents';
3
+ interface AddFiltersProps {
4
+ reportBuilder: ReportBuilder;
5
+ FilterDisplay?: React.ReactNode;
6
+ PopoverTrigger?: React.ReactNode;
7
+ Popover?: React.ReactNode;
8
+ TabsComponent?: (props: {
9
+ options: {
10
+ label: string;
11
+ value: string;
12
+ }[];
13
+ value: string;
14
+ onChange: (event: React.ChangeEvent<HTMLSelectElement>) => void;
15
+ }) => JSX.Element;
16
+ FilterPopoverComponent?: (props: {
17
+ isOpen: boolean;
18
+ setIsOpen: (isOpen: boolean) => void;
19
+ popoverTitle?: string;
20
+ popoverChildren: React.ReactNode;
21
+ filterLabel: string;
22
+ onClickDelete: (e: React.MouseEvent<HTMLElement>) => void;
23
+ }) => JSX.Element;
24
+ ButtonComponent?: (props: {
25
+ onClick: () => void;
26
+ label: string;
27
+ disabled?: boolean;
28
+ icon?: React.ReactNode;
29
+ isLoading?: boolean;
30
+ tooltipText?: string;
31
+ }) => JSX.Element;
32
+ SecondaryButtonComponent?: (props: {
33
+ onClick: () => void;
34
+ label: string;
35
+ disabled?: boolean;
36
+ icon?: React.ReactNode;
37
+ tooltipText?: string;
38
+ }) => JSX.Element;
39
+ SelectComponent?: (props: SelectComponentProps) => JSX.Element;
40
+ TextInputComponent?: ((props: TextInputComponentProps) => JSX.Element) | React.ForwardRefExoticComponent<TextInputComponentProps & React.RefAttributes<HTMLInputElement>>;
41
+ MultiSelectComponent?: (props: {
42
+ label?: string;
43
+ width: number;
44
+ value: string[];
45
+ options: {
46
+ value: string;
47
+ label: string;
48
+ }[];
49
+ onChange: (event: React.ChangeEvent<HTMLSelectElement> | {
50
+ target: {
51
+ value: (string | null)[];
52
+ };
53
+ }) => void;
54
+ }) => JSX.Element;
55
+ PopoverComponent?: (props: {
56
+ isOpen: boolean;
57
+ setIsOpen: (isOpen: boolean) => void;
58
+ triggerLabel?: string;
59
+ popoverTitle?: string;
60
+ popoverChildren: React.ReactNode;
61
+ }) => JSX.Element;
62
+ }
63
+ export declare const AddFilters: ({ reportBuilder, TabsComponent, FilterPopoverComponent, ButtonComponent, SecondaryButtonComponent, SelectComponent, TextInputComponent, MultiSelectComponent, PopoverComponent, FilterDisplay, PopoverTrigger, Popover, }: AddFiltersProps) => import("react/jsx-runtime").JSX.Element;
64
+ export {};
65
+ //# sourceMappingURL=FilterComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/FilterComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAI7D,OAAO,EACL,uBAAuB,EACvB,oBAAoB,EAMrB,MAAM,iBAAiB,CAAC;AAKzB,UAAU,eAAe;IACvB,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAChC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAG1B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE;QACtB,OAAO,EAAE;YAAE,KAAK,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAC5C,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;KACjE,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,sBAAsB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC/B,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC;QACjC,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;KAC3D,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACxB,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QACvB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE;QACjC,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;IAC/D,kBAAkB,CAAC,EACf,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC,GACjD,KAAK,CAAC,yBAAyB,CAC7B,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAChE,CAAC;IACN,oBAAoB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE;YACP,KAAK,EAAE,MAAM,CAAC;YACd,KAAK,EAAE,MAAM,CAAC;SACf,EAAE,CAAC;QACJ,QAAQ,EAAE,CACR,KAAK,EACD,KAAK,CAAC,WAAW,CAAC,iBAAiB,CAAC,GACpC;YAAE,MAAM,EAAE;gBAAE,KAAK,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;aAAE,CAAA;SAAE,KACzC,IAAI,CAAC;KACX,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC;KAClC,KAAK,GAAG,CAAC,OAAO,CAAC;CACnB;AA6ID,eAAO,MAAM,UAAU,8NAyCpB,eAAe,4CAgBjB,CAAC"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.AddFilters = void 0;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const FilterStack_1 = __importDefault(require("./FilterStack"));
9
+ const FilterModal_1 = __importDefault(require("./FilterModal"));
10
+ const UiComponents_1 = require("../UiComponents");
11
+ const ui_1 = require("./ui");
12
+ const QuillSelect_1 = require("../QuillSelect");
13
+ const QuillMultiSelectWithCombo_1 = require("../QuillMultiSelectWithCombo");
14
+ const FilterDisplayWrapper = ({ reportBuilder, FilterStack, TabsComponent, FilterPopoverComponent, FilterModal, ButtonComponent, SecondaryButtonComponent, SelectComponent, TextInputComponent, MultiSelectComponent, }) => {
15
+ return reportBuilder.filterStack.length > 0 ? ((0, jsx_runtime_1.jsx)("div", { style: {
16
+ display: 'flex',
17
+ flexDirection: 'column',
18
+ gap: 8,
19
+ marginBottom: 12,
20
+ }, children: (0, jsx_runtime_1.jsx)(FilterStack, { client: reportBuilder.client, filterStack: reportBuilder.filterStack, handleFilterStackChange: reportBuilder.handleFilterStackChange, schemaData: reportBuilder.schemaData, uniqueValues: reportBuilder.unfilteredUniqueValues, uniqueValuesIsLoading: reportBuilder.unfilteredUniqueValuesIsLoading, tables: reportBuilder.tables, TabsComponent: TabsComponent, FilterPopoverComponent: FilterPopoverComponent, FilterModal: FilterModal, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, MultiSelectComponent: MultiSelectComponent, actionsEnabled: !reportBuilder.loading, dashboardName: reportBuilder.destinationDashboard, getToken: reportBuilder.getToken, reportBuilderColumns: reportBuilder.columns }) })) : null;
21
+ };
22
+ const PopoverTriggerWrapper = ({ reportBuilder, SecondaryButtonComponent, }) => {
23
+ return ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { disabled: reportBuilder.columns.length === 0 || reportBuilder.loading, onClick: () => {
24
+ if (!reportBuilder.openPopover) {
25
+ reportBuilder.setOpenPopover('AddFilterPopover');
26
+ }
27
+ }, label: 'Add filter' }));
28
+ };
29
+ const PopoverWrapper = ({ reportBuilder, PopoverComponent, FilterModal, ButtonComponent, SelectComponent, TextInputComponent, MultiSelectComponent, }) => {
30
+ return ((0, jsx_runtime_1.jsx)("div", { style: {
31
+ position: 'relative',
32
+ ...(reportBuilder.openPopover === 'AddFilterPopover' && { top: 12 }),
33
+ }, children: (0, jsx_runtime_1.jsx)(PopoverComponent, { isOpen: reportBuilder.openPopover === 'AddFilterPopover', setIsOpen: (isOpen) => {
34
+ if (!isOpen) {
35
+ reportBuilder.setOpenPopover(null);
36
+ }
37
+ }, popoverTitle: "Add filter", popoverChildren: (0, jsx_runtime_1.jsx)(FilterModal, { schema: reportBuilder.filteredSchema, tables: reportBuilder.tables.map((table) => table.name), fieldValuesMap: reportBuilder.filteredUniqueValues ??
38
+ reportBuilder.unfilteredUniqueValues, fieldValuesMapIsLoading: reportBuilder.filteredUniqueValuesIsLoading ||
39
+ reportBuilder.unfilteredUniqueValuesIsLoading, onSubmitFilter: (filter) => {
40
+ reportBuilder.setOpenPopover(null);
41
+ reportBuilder.handleFilterInsertion(filter);
42
+ }, hideTableName: reportBuilder.tables.length === 1, onDeleteFilter: () => { }, ButtonComponent: ButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, MultiSelectComponent: MultiSelectComponent, reportBuilderColumns: reportBuilder.columns }) }) }));
43
+ };
44
+ const AddFilters = ({ reportBuilder, TabsComponent = UiComponents_1.QuillTabs, FilterPopoverComponent = ui_1.QuillFilterPopover, ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, SelectComponent = QuillSelect_1.QuillSelectComponent, TextInputComponent = UiComponents_1.QuillTextInput, MultiSelectComponent = QuillMultiSelectWithCombo_1.QuillMultiSelectComponentWithCombo, PopoverComponent = UiComponents_1.MemoizedPopover, FilterDisplay = ((0, jsx_runtime_1.jsx)(FilterDisplayWrapper, { reportBuilder: reportBuilder, FilterStack: FilterStack_1.default, TabsComponent: TabsComponent, FilterPopoverComponent: FilterPopoverComponent, FilterModal: FilterModal_1.default, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, MultiSelectComponent: MultiSelectComponent })), PopoverTrigger = ((0, jsx_runtime_1.jsx)(PopoverTriggerWrapper, { reportBuilder: reportBuilder, SecondaryButtonComponent: SecondaryButtonComponent })), Popover = ((0, jsx_runtime_1.jsx)(PopoverWrapper, { reportBuilder: reportBuilder, PopoverComponent: PopoverComponent, FilterModal: FilterModal_1.default, ButtonComponent: ButtonComponent, SelectComponent: SelectComponent, TextInputComponent: TextInputComponent, MultiSelectComponent: MultiSelectComponent })), }) => {
45
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [FilterDisplay, (0, jsx_runtime_1.jsxs)("div", { style: {
46
+ display: 'flex',
47
+ flexDirection: 'column',
48
+ alignItems: 'flex-start',
49
+ }, children: [PopoverTrigger, Popover] })] }));
50
+ };
51
+ exports.AddFilters = AddFilters;
@@ -0,0 +1,42 @@
1
+ import { ReportBuilder } from '../../hooks/useReportBuilder';
2
+ import { TextInputComponentProps } from '../UiComponents';
3
+ interface AddLimitProps {
4
+ reportBuilder: ReportBuilder;
5
+ LimitDisplay?: React.ReactNode;
6
+ PopoverTrigger?: React.ReactNode;
7
+ Popover?: React.ReactNode;
8
+ ButtonComponent?: (props: {
9
+ onClick: () => void;
10
+ label: string;
11
+ disabled?: boolean;
12
+ icon?: React.ReactNode;
13
+ isLoading?: boolean;
14
+ tooltipText?: string;
15
+ }) => JSX.Element;
16
+ SecondaryButtonComponent?: (props: {
17
+ onClick: () => void;
18
+ label: string;
19
+ disabled?: boolean;
20
+ icon?: React.ReactNode;
21
+ tooltipText?: string;
22
+ }) => JSX.Element;
23
+ TextInputComponent?: ((props: TextInputComponentProps) => JSX.Element) | React.ForwardRefExoticComponent<TextInputComponentProps & React.RefAttributes<HTMLInputElement>>;
24
+ PopoverComponent?: (props: {
25
+ isOpen: boolean;
26
+ setIsOpen: (isOpen: boolean) => void;
27
+ triggerLabel?: string;
28
+ popoverTitle?: string;
29
+ popoverChildren: React.ReactNode;
30
+ }) => JSX.Element;
31
+ LimitPopoverComponent?: (props: {
32
+ isOpen: boolean;
33
+ setIsOpen: (isOpen: boolean) => void;
34
+ popoverTitle?: string;
35
+ popoverChildren: React.ReactNode;
36
+ limitLabel: string;
37
+ onClickDelete: (e: React.MouseEvent<HTMLElement>) => void;
38
+ }) => JSX.Element;
39
+ }
40
+ export declare const AddLimit: ({ reportBuilder, ButtonComponent, SecondaryButtonComponent, TextInputComponent, PopoverComponent, LimitPopoverComponent, LimitDisplay, PopoverTrigger, Popover, }: AddLimitProps) => import("react/jsx-runtime").JSX.Element;
41
+ export {};
42
+ //# sourceMappingURL=LimitComponent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LimitComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/ReportBuilder/LimitComponent.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EACL,uBAAuB,EAIxB,MAAM,iBAAiB,CAAC;AAKzB,UAAU,aAAa;IACrB,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAG1B,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACxB,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QACvB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE;QACjC,OAAO,EAAE,MAAM,IAAI,CAAC;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;QACvB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,kBAAkB,CAAC,EACf,CAAC,CAAC,KAAK,EAAE,uBAAuB,KAAK,GAAG,CAAC,OAAO,CAAC,GACjD,KAAK,CAAC,yBAAyB,CAC7B,uBAAuB,GAAG,KAAK,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAChE,CAAC;IACN,gBAAgB,CAAC,EAAE,CAAC,KAAK,EAAE;QACzB,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC;KAClC,KAAK,GAAG,CAAC,OAAO,CAAC;IAClB,qBAAqB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC9B,MAAM,EAAE,OAAO,CAAC;QAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;QACrC,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC;QACjC,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;KAC3D,KAAK,GAAG,CAAC,OAAO,CAAC;CACnB;AAsHD,eAAO,MAAM,QAAQ,sKAmClB,aAAa,4CAkBf,CAAC"}
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AddLimit = void 0;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const UiComponents_1 = require("../UiComponents");
6
+ const AddLimitPopover_1 = require("./AddLimitPopover");
7
+ const UiComponents_2 = require("../UiComponents");
8
+ const ui_1 = require("./ui");
9
+ const LimitDisplayWrapper = ({ reportBuilder, LimitSentence, setOpenPopover, LimitPopover, EditPopover, TextInput, Button, SecondaryButton, }) => {
10
+ return reportBuilder.limit ? ((0, jsx_runtime_1.jsx)("div", { style: {
11
+ display: 'flex',
12
+ flexDirection: 'column',
13
+ gap: 8,
14
+ marginBottom: 12,
15
+ }, children: (0, jsx_runtime_1.jsx)(LimitSentence, { limit: reportBuilder.limit?.value || 0, setOpenPopover: setOpenPopover, LimitPopover: LimitPopover, EditPopover: EditPopover, handleDelete: () => {
16
+ reportBuilder.onLimitChange(null, false);
17
+ setOpenPopover(null);
18
+ }, onSave: (limit) => {
19
+ reportBuilder.onLimitChange(limit, false);
20
+ setOpenPopover(null);
21
+ }, TextInput: TextInput, Button: Button, SecondaryButton: SecondaryButton, disabled: reportBuilder.loading }) })) : null;
22
+ };
23
+ const PopoverTriggerWrapper = ({ reportBuilder, SecondaryButtonComponent, }) => {
24
+ return ((0, jsx_runtime_1.jsx)(SecondaryButtonComponent, { disabled: reportBuilder.columns.length === 0 || reportBuilder.loading, onClick: () => {
25
+ if (!reportBuilder.openPopover) {
26
+ reportBuilder.setOpenPopover('AddLimitPopover');
27
+ }
28
+ }, label: 'Add limit' }));
29
+ };
30
+ const PopoverWrapper = ({ reportBuilder, PopoverComponent, AddLimitPopover, TextInputComponent, ButtonComponent, SecondaryButtonComponent, }) => {
31
+ return ((0, jsx_runtime_1.jsx)("div", { style: {
32
+ position: 'relative',
33
+ ...(reportBuilder.openPopover === 'AddLimitPopover' && { top: 12 }),
34
+ }, children: (0, jsx_runtime_1.jsx)(PopoverComponent, { isOpen: reportBuilder.openPopover === 'AddLimitPopover', setIsOpen: (isOpen) => {
35
+ if (!isOpen) {
36
+ reportBuilder.setOpenPopover(null);
37
+ }
38
+ }, popoverTitle: "Add limit", popoverChildren: (0, jsx_runtime_1.jsx)(AddLimitPopover, { TextInputComponent: TextInputComponent, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent, onSave: (limit) => {
39
+ reportBuilder.onLimitChange(limit, false);
40
+ reportBuilder.setOpenPopover(null);
41
+ } }) }) }));
42
+ };
43
+ const AddLimit = ({ reportBuilder, ButtonComponent = UiComponents_1.MemoizedButton, SecondaryButtonComponent = UiComponents_1.MemoizedSecondaryButton, TextInputComponent = UiComponents_2.QuillTextInput, PopoverComponent = UiComponents_1.MemoizedPopover, LimitPopoverComponent = ui_1.QuillLimitPopover, LimitDisplay = reportBuilder.limit ? ((0, jsx_runtime_1.jsx)(LimitDisplayWrapper, { reportBuilder: reportBuilder, LimitSentence: AddLimitPopover_1.LimitSentence, setOpenPopover: reportBuilder.setOpenPopover, LimitPopover: LimitPopoverComponent, EditPopover: AddLimitPopover_1.AddLimitPopover, TextInput: TextInputComponent, Button: ButtonComponent, SecondaryButton: SecondaryButtonComponent })) : null, PopoverTrigger = ((0, jsx_runtime_1.jsx)(PopoverTriggerWrapper, { reportBuilder: reportBuilder, SecondaryButtonComponent: SecondaryButtonComponent })), Popover = ((0, jsx_runtime_1.jsx)(PopoverWrapper, { reportBuilder: reportBuilder, PopoverComponent: PopoverComponent, AddLimitPopover: AddLimitPopover_1.AddLimitPopover, TextInputComponent: TextInputComponent, ButtonComponent: ButtonComponent, SecondaryButtonComponent: SecondaryButtonComponent })), }) => {
44
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [LimitDisplay, !reportBuilder.limit && ((0, jsx_runtime_1.jsxs)("div", { style: {
45
+ display: 'flex',
46
+ flexDirection: 'column',
47
+ alignItems: 'flex-start',
48
+ }, children: [PopoverTrigger, Popover] }))] }));
49
+ };
50
+ exports.AddLimit = AddLimit;