@quillsql/react 2.12.51 → 2.12.53

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 (265) hide show
  1. package/dist/cjs/Chart.js +1 -1
  2. package/dist/cjs/ChartBuilder.d.ts +7 -3
  3. package/dist/cjs/ChartBuilder.d.ts.map +1 -1
  4. package/dist/cjs/ChartBuilder.js +55 -19
  5. package/dist/cjs/ChartEditor.d.ts +3 -1
  6. package/dist/cjs/ChartEditor.d.ts.map +1 -1
  7. package/dist/cjs/ChartEditor.js +42 -7
  8. package/dist/cjs/Context.d.ts +4 -5
  9. package/dist/cjs/Context.d.ts.map +1 -1
  10. package/dist/cjs/Context.js +22 -34
  11. package/dist/cjs/Dashboard.d.ts +4 -3
  12. package/dist/cjs/Dashboard.d.ts.map +1 -1
  13. package/dist/cjs/Dashboard.js +66 -39
  14. package/dist/cjs/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  15. package/dist/cjs/DateRangePicker/QuillDateRangePicker.js +8 -10
  16. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts +1 -0
  17. package/dist/cjs/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  18. package/dist/cjs/DateRangePicker/dateRangePickerUtils.js +1 -1
  19. package/dist/cjs/QuillProvider.js +1 -1
  20. package/dist/cjs/ReportBuilder.d.ts +8 -12
  21. package/dist/cjs/ReportBuilder.d.ts.map +1 -1
  22. package/dist/cjs/ReportBuilder.js +157 -83
  23. package/dist/cjs/SQLEditor.d.ts +8 -1
  24. package/dist/cjs/SQLEditor.d.ts.map +1 -1
  25. package/dist/cjs/SQLEditor.js +80 -28
  26. package/dist/cjs/Table.js +1 -1
  27. package/dist/cjs/assets/AdjustmentsIcon.d.ts +5 -0
  28. package/dist/cjs/assets/AdjustmentsIcon.d.ts.map +1 -0
  29. package/dist/cjs/assets/AdjustmentsIcon.js +5 -0
  30. package/dist/cjs/assets/ArrowDownHeadIcon.d.ts.map +1 -1
  31. package/dist/cjs/assets/index.d.ts +0 -1
  32. package/dist/cjs/assets/index.d.ts.map +1 -1
  33. package/dist/cjs/assets/index.js +1 -3
  34. package/dist/cjs/components/Chart/ChartError.js +2 -2
  35. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +8 -5
  36. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  37. package/dist/cjs/components/Dashboard/DashboardFilter.js +24 -20
  38. package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts +2 -2
  39. package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
  40. package/dist/cjs/components/Dashboard/DataLoader.d.ts +5 -1
  41. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  42. package/dist/cjs/components/Dashboard/DataLoader.js +23 -4
  43. package/dist/cjs/components/Dashboard/TableComponent.d.ts +2 -1
  44. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  45. package/dist/cjs/components/Dashboard/TableComponent.js +2 -2
  46. package/dist/cjs/components/Dashboard/util.d.ts +2 -2
  47. package/dist/cjs/components/Dashboard/util.d.ts.map +1 -1
  48. package/dist/cjs/components/Dashboard/util.js +2 -2
  49. package/dist/cjs/components/QuillMultiSelect.d.ts +1 -1
  50. package/dist/cjs/components/QuillMultiSelect.d.ts.map +1 -1
  51. package/dist/cjs/components/QuillMultiSelect.js +20 -14
  52. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts +1 -1
  53. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  54. package/dist/cjs/components/QuillMultiSelectWithCombo.js +69 -46
  55. package/dist/cjs/components/QuillSelect.d.ts +1 -1
  56. package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
  57. package/dist/cjs/components/QuillSelect.js +31 -8
  58. package/dist/cjs/components/QuillSelectWithCombo.d.ts +1 -1
  59. package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
  60. package/dist/cjs/components/QuillSelectWithCombo.js +50 -28
  61. package/dist/cjs/components/QuillTable.d.ts +2 -1
  62. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  63. package/dist/cjs/components/QuillTable.js +7 -4
  64. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +2 -1
  65. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  66. package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +2 -2
  67. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +2 -1
  68. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  69. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +2 -2
  70. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +2 -1
  71. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
  72. package/dist/cjs/components/ReportBuilder/FilterModal.js +17 -4
  73. package/dist/cjs/components/ReportBuilder/convert.d.ts +1 -1
  74. package/dist/cjs/components/ReportBuilder/ui.d.ts +13 -7
  75. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  76. package/dist/cjs/components/ReportBuilder/ui.js +14 -11
  77. package/dist/cjs/components/UiComponents.d.ts +15 -6
  78. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  79. package/dist/cjs/components/UiComponents.js +29 -23
  80. package/dist/cjs/hooks/useAstToFilterTree.d.ts +2 -2
  81. package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +1 -1
  82. package/dist/cjs/hooks/useDashboard.d.ts +10 -2
  83. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  84. package/dist/cjs/hooks/useDashboard.js +85 -53
  85. package/dist/cjs/hooks/useExport.js +1 -1
  86. package/dist/cjs/hooks/useOnClickOutside.js +1 -1
  87. package/dist/cjs/hooks/useQuill.js +2 -2
  88. package/dist/cjs/hooks/useVirtualTables.d.ts +12 -3
  89. package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
  90. package/dist/cjs/hooks/useVirtualTables.js +105 -1
  91. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +3 -1
  92. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  93. package/dist/cjs/internals/ReportBuilder/PivotForm.js +9 -9
  94. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  95. package/dist/cjs/internals/ReportBuilder/PivotList.js +21 -15
  96. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +3 -2
  97. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  98. package/dist/cjs/internals/ReportBuilder/PivotModal.js +9 -9
  99. package/dist/cjs/models/Client.d.ts +10 -2
  100. package/dist/cjs/models/Client.d.ts.map +1 -1
  101. package/dist/cjs/utils/astProcessing.d.ts +3 -3
  102. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  103. package/dist/cjs/utils/client.d.ts.map +1 -1
  104. package/dist/cjs/utils/client.js +2 -7
  105. package/dist/cjs/utils/dashboard.d.ts +5 -3
  106. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  107. package/dist/cjs/utils/dashboard.js +106 -6
  108. package/dist/cjs/utils/dataFetcher.d.ts +4 -4
  109. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  110. package/dist/cjs/utils/dataFetcher.js +1 -1
  111. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  112. package/dist/cjs/utils/filterProcessing.js +2 -8
  113. package/dist/cjs/utils/paginationProcessing.js +1 -1
  114. package/dist/cjs/utils/pivotConstructor.d.ts +2 -2
  115. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  116. package/dist/cjs/utils/pivotConstructor.js +1 -1
  117. package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
  118. package/dist/cjs/utils/pivotProcessing.js +6 -2
  119. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  120. package/dist/cjs/utils/queryConstructor.js +12 -9
  121. package/dist/cjs/utils/report.d.ts +6 -5
  122. package/dist/cjs/utils/report.d.ts.map +1 -1
  123. package/dist/cjs/utils/report.js +69 -24
  124. package/dist/cjs/utils/schema.d.ts +3 -3
  125. package/dist/cjs/utils/schema.d.ts.map +1 -1
  126. package/dist/cjs/utils/schema.js +39 -35
  127. package/dist/cjs/utils/tableProcessing.d.ts +17 -10
  128. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  129. package/dist/cjs/utils/tableProcessing.js +42 -23
  130. package/dist/esm/Chart.js +2 -2
  131. package/dist/esm/ChartBuilder.d.ts +7 -3
  132. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  133. package/dist/esm/ChartBuilder.js +52 -19
  134. package/dist/esm/ChartEditor.d.ts +3 -1
  135. package/dist/esm/ChartEditor.d.ts.map +1 -1
  136. package/dist/esm/ChartEditor.js +43 -8
  137. package/dist/esm/Context.d.ts +4 -5
  138. package/dist/esm/Context.d.ts.map +1 -1
  139. package/dist/esm/Context.js +23 -35
  140. package/dist/esm/Dashboard.d.ts +4 -3
  141. package/dist/esm/Dashboard.d.ts.map +1 -1
  142. package/dist/esm/Dashboard.js +67 -40
  143. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  144. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +8 -10
  145. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +1 -0
  146. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  147. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +1 -1
  148. package/dist/esm/QuillProvider.js +1 -1
  149. package/dist/esm/ReportBuilder.d.ts +8 -12
  150. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  151. package/dist/esm/ReportBuilder.js +160 -86
  152. package/dist/esm/SQLEditor.d.ts +8 -1
  153. package/dist/esm/SQLEditor.d.ts.map +1 -1
  154. package/dist/esm/SQLEditor.js +83 -31
  155. package/dist/esm/Table.js +2 -2
  156. package/dist/esm/assets/AdjustmentsIcon.d.ts +5 -0
  157. package/dist/esm/assets/AdjustmentsIcon.d.ts.map +1 -0
  158. package/dist/esm/assets/AdjustmentsIcon.js +3 -0
  159. package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +1 -1
  160. package/dist/esm/assets/index.d.ts +0 -1
  161. package/dist/esm/assets/index.d.ts.map +1 -1
  162. package/dist/esm/assets/index.js +0 -1
  163. package/dist/esm/components/Chart/ChartError.js +2 -2
  164. package/dist/esm/components/Dashboard/DashboardFilter.d.ts +8 -5
  165. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  166. package/dist/esm/components/Dashboard/DashboardFilter.js +24 -20
  167. package/dist/esm/components/Dashboard/DashboardTemplate.d.ts +2 -2
  168. package/dist/esm/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
  169. package/dist/esm/components/Dashboard/DataLoader.d.ts +5 -1
  170. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  171. package/dist/esm/components/Dashboard/DataLoader.js +25 -6
  172. package/dist/esm/components/Dashboard/TableComponent.d.ts +2 -1
  173. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  174. package/dist/esm/components/Dashboard/TableComponent.js +2 -2
  175. package/dist/esm/components/Dashboard/util.d.ts +2 -2
  176. package/dist/esm/components/Dashboard/util.d.ts.map +1 -1
  177. package/dist/esm/components/Dashboard/util.js +2 -2
  178. package/dist/esm/components/QuillMultiSelect.d.ts +1 -1
  179. package/dist/esm/components/QuillMultiSelect.d.ts.map +1 -1
  180. package/dist/esm/components/QuillMultiSelect.js +21 -15
  181. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +1 -1
  182. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  183. package/dist/esm/components/QuillMultiSelectWithCombo.js +70 -47
  184. package/dist/esm/components/QuillSelect.d.ts +1 -1
  185. package/dist/esm/components/QuillSelect.d.ts.map +1 -1
  186. package/dist/esm/components/QuillSelect.js +32 -9
  187. package/dist/esm/components/QuillSelectWithCombo.d.ts +1 -1
  188. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
  189. package/dist/esm/components/QuillSelectWithCombo.js +51 -29
  190. package/dist/esm/components/QuillTable.d.ts +2 -1
  191. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  192. package/dist/esm/components/QuillTable.js +7 -4
  193. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +2 -1
  194. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  195. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +2 -2
  196. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +2 -1
  197. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  198. package/dist/esm/components/ReportBuilder/AddSortPopover.js +2 -2
  199. package/dist/esm/components/ReportBuilder/FilterModal.d.ts +2 -1
  200. package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
  201. package/dist/esm/components/ReportBuilder/FilterModal.js +17 -4
  202. package/dist/esm/components/ReportBuilder/convert.d.ts +1 -1
  203. package/dist/esm/components/ReportBuilder/ui.d.ts +13 -7
  204. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  205. package/dist/esm/components/ReportBuilder/ui.js +14 -11
  206. package/dist/esm/components/UiComponents.d.ts +15 -6
  207. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  208. package/dist/esm/components/UiComponents.js +29 -23
  209. package/dist/esm/hooks/useAstToFilterTree.d.ts +2 -2
  210. package/dist/esm/hooks/useAstToFilterTree.d.ts.map +1 -1
  211. package/dist/esm/hooks/useDashboard.d.ts +10 -2
  212. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  213. package/dist/esm/hooks/useDashboard.js +86 -54
  214. package/dist/esm/hooks/useExport.js +1 -1
  215. package/dist/esm/hooks/useOnClickOutside.js +1 -1
  216. package/dist/esm/hooks/useQuill.js +3 -3
  217. package/dist/esm/hooks/useVirtualTables.d.ts +12 -3
  218. package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
  219. package/dist/esm/hooks/useVirtualTables.js +106 -2
  220. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +3 -1
  221. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  222. package/dist/esm/internals/ReportBuilder/PivotForm.js +9 -9
  223. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  224. package/dist/esm/internals/ReportBuilder/PivotList.js +21 -15
  225. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +3 -2
  226. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  227. package/dist/esm/internals/ReportBuilder/PivotModal.js +9 -9
  228. package/dist/esm/models/Client.d.ts +10 -2
  229. package/dist/esm/models/Client.d.ts.map +1 -1
  230. package/dist/esm/utils/astProcessing.d.ts +3 -3
  231. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  232. package/dist/esm/utils/client.d.ts.map +1 -1
  233. package/dist/esm/utils/client.js +2 -7
  234. package/dist/esm/utils/dashboard.d.ts +5 -3
  235. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  236. package/dist/esm/utils/dashboard.js +104 -5
  237. package/dist/esm/utils/dataFetcher.d.ts +4 -4
  238. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  239. package/dist/esm/utils/dataFetcher.js +1 -1
  240. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  241. package/dist/esm/utils/filterProcessing.js +2 -8
  242. package/dist/esm/utils/paginationProcessing.js +1 -1
  243. package/dist/esm/utils/pivotConstructor.d.ts +2 -2
  244. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  245. package/dist/esm/utils/pivotConstructor.js +1 -1
  246. package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
  247. package/dist/esm/utils/pivotProcessing.js +6 -2
  248. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  249. package/dist/esm/utils/queryConstructor.js +12 -9
  250. package/dist/esm/utils/report.d.ts +6 -5
  251. package/dist/esm/utils/report.d.ts.map +1 -1
  252. package/dist/esm/utils/report.js +68 -24
  253. package/dist/esm/utils/schema.d.ts +3 -3
  254. package/dist/esm/utils/schema.d.ts.map +1 -1
  255. package/dist/esm/utils/schema.js +39 -35
  256. package/dist/esm/utils/tableProcessing.d.ts +17 -10
  257. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  258. package/dist/esm/utils/tableProcessing.js +39 -20
  259. package/package.json +1 -1
  260. package/dist/cjs/assets/LoadingSpinner.d.ts +0 -5
  261. package/dist/cjs/assets/LoadingSpinner.d.ts.map +0 -1
  262. package/dist/cjs/assets/LoadingSpinner.js +0 -5
  263. package/dist/esm/assets/LoadingSpinner.d.ts +0 -5
  264. package/dist/esm/assets/LoadingSpinner.d.ts.map +0 -1
  265. package/dist/esm/assets/LoadingSpinner.js +0 -3
@@ -10,6 +10,8 @@ export type DataLoaderChildProps = {
10
10
  direction: string;
11
11
  }) => void;
12
12
  data: QuillReport;
13
+ rowCount?: number;
14
+ rowCountIsLoading?: boolean;
13
15
  };
14
16
  export default function DataLoader({ item, children, filters, }: {
15
17
  item: any;
@@ -31,6 +33,8 @@ export type ChartDataLoaderChildProps = {
31
33
  error?: string;
32
34
  data: QuillReport;
33
35
  dateBucket?: string;
36
+ rowCount?: number;
37
+ rowCountIsLoading?: boolean;
34
38
  };
35
39
  export declare const ChartDataLoader: ({ item, children, dateBucket, additionalProcessing, filters, }: {
36
40
  item: any;
@@ -38,7 +42,7 @@ export declare const ChartDataLoader: ({ item, children, dateBucket, additionalP
38
42
  mapColorsToFields?: ((_report: QuillReport, _theme: QuillTheme) => ColorMapType) | undefined;
39
43
  additionalProcessing?: any;
40
44
  filters: any[] | null;
41
- children: ({ isLoading, error, data, dateBucket, }: ChartDataLoaderChildProps) => JSX.Element;
45
+ children: ({ isLoading, error, data, dateBucket, rowCount, rowCountIsLoading, }: ChartDataLoaderChildProps) => JSX.Element;
42
46
  }) => JSX.Element;
43
47
  export {};
44
48
  //# sourceMappingURL=DataLoader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DataLoader.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DataLoader.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,WAAW,EAAuB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAmCjD,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,IAAI,EAAE,WAAW,CAAC;CACnB,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,OAAO,GACR,EAAE;IACD,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,CAAC,EACT,SAAS,EACT,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,IAAI,GACL,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;CACzC,GAAG,GAAG,CAAC,OAAO,CAiJd;AAED,KAAK,YAAY,GAAG;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAIF,eAAO,MAAM,eAAe;UAOpB,GAAG;;mCAGE,WAAW,UACZ,UAAU,KACf,YAAY;2BACM,GAAG;aACjB,GAAG,EAAE,GAAG,IAAI;wDAMlB,yBAAyB,KAAK,WAAW;MAC1C,WA4EH,CAAC"}
1
+ {"version":3,"file":"DataLoader.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/DataLoader.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,WAAW,EAAuB,MAAM,qBAAqB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAoCjD,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnE,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,OAAO,GACR,EAAE;IACD,IAAI,EAAE,GAAG,CAAC;IACV,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,CAAC,EACT,SAAS,EACT,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,IAAI,GACL,EAAE,oBAAoB,KAAK,GAAG,CAAC,OAAO,CAAC;CACzC,GAAG,GAAG,CAAC,OAAO,CA+Kd;AAED,KAAK,YAAY,GAAG;IAClB,CAAC,GAAG,EAAE,MAAM,GAAG;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,oBAAoB,CAAC,EAAE,MAAM,CAAC;QAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,uBAAuB,CAAC,EAAE,MAAM,CAAC;QACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;KACjC,CAAC;CACH,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAIF,eAAO,MAAM,eAAe;UAOpB,GAAG;;mCAGE,WAAW,UACZ,UAAU,KACf,YAAY;2BACM,GAAG;aACjB,GAAG,EAAE,GAAG,IAAI;qFAQlB,yBAAyB,KAAK,WAAW;MAC1C,WA4EH,CAAC"}
@@ -2,9 +2,9 @@ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useContext, useEffect, useState } from 'react';
3
3
  import { didFiltersChange } from '../../Chart';
4
4
  import { ClientContext, DashboardContext, SchemaDataContext, } from '../../Context';
5
- import { convertInternalReportToReport, EMPTY_INTERNAL_REPORT, fetchReport, } from '../../utils/report';
5
+ import { convertInternalReportToReport, EMPTY_INTERNAL_REPORT, fetchReport, fetchReportRowCount, } from '../../utils/report';
6
6
  import { shouldFetchMore, DEFAULT_PAGINATION, shouldSortInMemory, } from '../../utils/paginationProcessing';
7
- import { fetchTableByReport } from '../../utils/tableProcessing';
7
+ import { fetchResultsByReport } from '../../utils/tableProcessing';
8
8
  const constructReportFromItem = (item) => {
9
9
  return {
10
10
  ...EMPTY_INTERNAL_REPORT,
@@ -36,6 +36,22 @@ export default function DataLoader({ item, children, filters, }) {
36
36
  const [additionalProcessing, setAdditionProcessing] = useState({
37
37
  page: DEFAULT_PAGINATION,
38
38
  });
39
+ const [rowCount, setRowCount] = useState(dashboard[item._id]?.rowCount ?? 0);
40
+ const [rowCountIsLoading, setRowCountIsLoading] = useState(false);
41
+ const fetchRowCount = async (processing) => {
42
+ if (!client || !filters) {
43
+ return;
44
+ }
45
+ setRowCountIsLoading(true);
46
+ const rowCount = await fetchReportRowCount(item._id, client, true, filters, processing, schemaData.customFields);
47
+ dispatch({
48
+ type: 'UPDATE_DASHBOARD_ITEM',
49
+ id: item._id,
50
+ data: { rowCount },
51
+ });
52
+ setRowCount(rowCount);
53
+ setRowCountIsLoading(false);
54
+ };
39
55
  const onPageChange = (page) => {
40
56
  if (additionalProcessing &&
41
57
  additionalProcessing.page &&
@@ -69,7 +85,7 @@ export default function DataLoader({ item, children, filters, }) {
69
85
  setLoading(true);
70
86
  try {
71
87
  const updatedProcessing = { ...additionalProcessing, ...processing };
72
- const paginatedRows = await fetchTableByReport(report.id, client, updatedProcessing, filters, schemaData.customFields);
88
+ const paginatedRows = await fetchResultsByReport(report.id, client, updatedProcessing, filters, schemaData.customFields);
73
89
  if (paginatedRows.error) {
74
90
  throw new Error('Error fetching chart');
75
91
  }
@@ -106,13 +122,14 @@ export default function DataLoader({ item, children, filters, }) {
106
122
  return;
107
123
  }
108
124
  setLoading(true);
109
- const { report, error } = await fetchReport(item._id, client, true, filters, processing, undefined, schemaData.customFields);
125
+ const { report: fetchedReport, error } = await fetchReport(item._id, client, true, filters, processing, undefined, schemaData.customFields);
126
+ fetchRowCount(processing);
110
127
  dispatch({
111
128
  type: 'ADD_DASHBOARD_ITEM',
112
129
  id: item._id,
113
- data: { ...report, triggerReload: false },
130
+ data: { ...fetchedReport, triggerReload: false },
114
131
  });
115
- const convertedReport = convertInternalReportToReport(report);
132
+ const convertedReport = convertInternalReportToReport(fetchedReport);
116
133
  setReport(convertedReport);
117
134
  setAdditionProcessing(processing);
118
135
  setError(error);
@@ -136,6 +153,8 @@ export default function DataLoader({ item, children, filters, }) {
136
153
  onPageChange,
137
154
  onSortChange,
138
155
  data: report,
156
+ rowCount,
157
+ rowCountIsLoading,
139
158
  }) }));
140
159
  }
141
160
  // The same data-loader pattern as above, but with special logic for charts
@@ -1,11 +1,12 @@
1
1
  /// <reference types="react" />
2
2
  import { QuillReport } from '../../models/Report';
3
- export default function QuillTableComponent({ report, onClick, isLoading, error, rowCount, onPageChange, onSortChange, }: {
3
+ export default function QuillTableComponent({ report, onClick, isLoading, error, rowCount, rowCountIsLoading, onPageChange, onSortChange, }: {
4
4
  report: QuillReport;
5
5
  onClick?: (report: QuillReport) => void;
6
6
  isLoading?: boolean;
7
7
  error?: string;
8
8
  rowCount?: number;
9
+ rowCountIsLoading?: boolean;
9
10
  onPageChange?: (page: number) => void;
10
11
  onSortChange?: (sort: {
11
12
  field: string;
@@ -1 +1 @@
1
- {"version":3,"file":"TableComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/TableComponent.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKlD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,MAAM,EACN,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,YAAY,GACb,EAAE;IACD,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,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,GAAG,GAAG,CAAC,OAAO,CAyFd"}
1
+ {"version":3,"file":"TableComponent.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/TableComponent.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKlD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CAAC,EAC1C,MAAM,EACN,OAAO,EACP,SAAS,EACT,KAAK,EACL,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,YAAY,GACb,EAAE;IACD,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,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,GAAG,GAAG,CAAC,OAAO,CA0Fd"}
@@ -6,7 +6,7 @@ import ChartError from '../Chart/ChartError';
6
6
  import { useExport } from '../../hooks/useExport';
7
7
  import { DEFAULT_PAGINATION } from '../../utils/paginationProcessing';
8
8
  import { ThemeContext } from '../../Context';
9
- export default function QuillTableComponent({ report, onClick, isLoading, error, rowCount, onPageChange, onSortChange, }) {
9
+ export default function QuillTableComponent({ report, onClick, isLoading, error, rowCount, rowCountIsLoading, onPageChange, onSortChange, }) {
10
10
  const [theme] = useContext(ThemeContext);
11
11
  const [initialLoad, setInitialLoad] = useState(true);
12
12
  const { downloadCSV } = useExport(report?.id);
@@ -40,7 +40,7 @@ export default function QuillTableComponent({ report, onClick, isLoading, error,
40
40
  } })) : error ? (_jsx("div", { style: {
41
41
  width: '100%',
42
42
  height: '400px',
43
- }, children: _jsx(ChartError, { errorMessage: error }) })) : (_jsx(QuillTable, { isLoading: isLoading, rows: report.rows ?? [], rowCount: rowCount, columns: report.columns, rowsPerPage: report.pagination?.rowsPerPage ?? DEFAULT_PAGINATION.rowsPerPage, containerStyle: {
43
+ }, children: _jsx(ChartError, { errorMessage: error }) })) : (_jsx(QuillTable, { isLoading: isLoading, rows: report.rows ?? [], rowCount: rowCount, rowCountIsLoading: rowCountIsLoading, columns: report.columns, rowsPerPage: report.pagination?.rowsPerPage ?? DEFAULT_PAGINATION.rowsPerPage, containerStyle: {
44
44
  width: '100%',
45
45
  height: '400px',
46
46
  }, downloadCSV: () => {
@@ -1,7 +1,7 @@
1
- import { Client } from '../../models/Client';
1
+ import { QuillProviderClient } from '../../models/Client';
2
2
  export declare function validateTemplatesAgainstFilters(filters: any[], templates: any[]): {
3
3
  valid: boolean;
4
4
  error: string;
5
5
  };
6
- export declare function addTemplatesToDashboard(name: any, newTemplates: any[], client: Client, dashboardData: any): Promise<any>;
6
+ export declare function addTemplatesToDashboard(name: any, newTemplates: any[], client: QuillProviderClient, dashboardData: any): Promise<any>;
7
7
  //# 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,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,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;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,GAAG,EAAE,EACnB,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,GAAG,GACjB,OAAO,CAAC,GAAG,CAAC,CAiDd"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../../src/components/Dashboard/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAG1D,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;AAED,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,GAAG,EACT,YAAY,EAAE,GAAG,EAAE,EACnB,MAAM,EAAE,mBAAmB,EAC3B,aAAa,EAAE,GAAG,GACjB,OAAO,CAAC,GAAG,CAAC,CAiDd"}
@@ -36,13 +36,13 @@ export function validateTemplatesAgainstFilters(filters, templates) {
36
36
  }
37
37
  export async function addTemplatesToDashboard(name, newTemplates, client, dashboardData) {
38
38
  try {
39
- const { publicKey, customerId } = client;
39
+ const { publicKey, organizationId } = client;
40
40
  const hostedBody = {
41
41
  metadata: {
42
42
  dashboardName: name,
43
43
  task: 'add-from-template',
44
44
  clientId: publicKey,
45
- orgId: customerId || '*',
45
+ orgId: organizationId || '*',
46
46
  templateReportIds: newTemplates.map((template) => template._id),
47
47
  },
48
48
  };
@@ -2,7 +2,7 @@ import { MultiSelectComponentProps } from './UiComponents';
2
2
  /**
3
3
  * A robust select component that implements the new minimal Select interface.
4
4
  */
5
- export declare function QuillMultiSelectComponent({ options, width, onChange, label, value, }: MultiSelectComponentProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function QuillMultiSelectComponent({ options, width, onChange, label, value, isLoading, }: MultiSelectComponentProps): import("react/jsx-runtime").JSX.Element;
6
6
  export declare const ListboxTextInput: ({ value, onChange, placeholder, }: {
7
7
  value: string;
8
8
  onChange: (e: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"QuillMultiSelect.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAgC3D;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,GACN,EAAE,yBAAyB,2CAsQ3B;AAED,eAAO,MAAM,gBAAgB;WAKpB,MAAM;kBACC,MAAM,KAAK,IAAI;iBAChB,MAAM;6CAyDpB,CAAC"}
1
+ {"version":3,"file":"QuillMultiSelect.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAiC3E;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE,yBAAyB,2CAsO3B;AAED,eAAO,MAAM,gBAAgB;WAKpB,MAAM;kBACC,MAAM,KAAK,IAAI;iBAChB,MAAM;6CAyDpB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useOnClickOutside } from '../hooks';
3
- import { useContext, useEffect, useRef, useState, } from 'react';
3
+ import { LoadingSpinner } from './UiComponents';
4
+ import { useContext, useEffect, useMemo, useRef, useState, } from 'react';
4
5
  import { ThemeContext } from '../Context';
5
6
  /**
6
7
  * Helper function for displaying option labels
@@ -14,20 +15,18 @@ function displaySelectedOptionLabels({ options, value, }) {
14
15
  return 'Select';
15
16
  }
16
17
  return matchingOptions
17
- .map((elem) => elem.label)
18
+ .map((elem) => elem.label ?? '-')
18
19
  .join(', ');
19
20
  }
20
21
  /**
21
22
  * A robust select component that implements the new minimal Select interface.
22
23
  */
23
- export function QuillMultiSelectComponent({ options, width, onChange, label, value, }) {
24
+ export function QuillMultiSelectComponent({ options, width, onChange, label, value, isLoading, }) {
24
25
  const [theme] = useContext(ThemeContext);
25
26
  const [selectedOptions, setSelectedOptions] = useState([]);
26
27
  const [showModal, setShowModal] = useState(false);
27
28
  const modalRef = useRef(null);
28
29
  const debounceTimeoutId = useRef(null);
29
- // const [searchQuery, setSearchQuery] = useState('');
30
- // const [filteredOptions, setFilteredOptions] = useState(options);
31
30
  useOnClickOutside(modalRef, () => setShowModal(false));
32
31
  useEffect(() => {
33
32
  if (!value) {
@@ -37,6 +36,21 @@ export function QuillMultiSelectComponent({ options, width, onChange, label, val
37
36
  setSelectedOptions(value);
38
37
  }
39
38
  }, [value]);
39
+ const sortedItems = useMemo(() => {
40
+ // Sort null to top
41
+ return options.sort((a, b) => {
42
+ if (a.value === null) {
43
+ return -1;
44
+ }
45
+ if (b.value === null) {
46
+ return 1;
47
+ }
48
+ return a.label.localeCompare(b.label);
49
+ });
50
+ }, [options]);
51
+ const nullLabel = useMemo(() => {
52
+ return sortedItems.some((item) => item.value === '-') ? 'None' : '-';
53
+ }, [sortedItems]);
40
54
  const debounce = (updatedChangeEvent) => {
41
55
  if (debounceTimeoutId.current) {
42
56
  clearTimeout(debounceTimeoutId.current);
@@ -45,14 +59,6 @@ export function QuillMultiSelectComponent({ options, width, onChange, label, val
45
59
  onChange(updatedChangeEvent);
46
60
  }, 500);
47
61
  };
48
- // const filterOptions = (query: string) => {
49
- // setSearchQuery(query);
50
- // setFilteredOptions(
51
- // options.filter((option) =>
52
- // option.label.toLowerCase().includes(query.toLowerCase()),
53
- // ),
54
- // );
55
- // };
56
62
  return (_jsxs("div", { style: {
57
63
  position: 'relative',
58
64
  borderRadius: '6px',
@@ -112,7 +118,7 @@ export function QuillMultiSelectComponent({ options, width, onChange, label, val
112
118
  fontFamily: theme?.fontFamily,
113
119
  maxHeight: '50vh',
114
120
  overflow: 'scroll',
115
- }, children: options.map((option) => (_jsxs("button", { style: {
121
+ }, children: !isLoading ? (sortedItems.map((option) => (_jsxs("button", { style: {
116
122
  display: 'flex',
117
123
  alignItems: 'center',
118
124
  padding: 8,
@@ -163,7 +169,7 @@ export function QuillMultiSelectComponent({ options, width, onChange, label, val
163
169
  textOverflow: 'ellipsis',
164
170
  whiteSpace: 'nowrap',
165
171
  overflow: 'hidden',
166
- }, children: option.label })] }, option.value))) }))] }));
172
+ }, children: option.label ?? nullLabel })] }, option.value)))) : (_jsx(LoadingSpinner, {})) }))] }));
167
173
  }
168
174
  export const ListboxTextInput = ({ value, onChange, placeholder, }) => {
169
175
  return (_jsxs("div", { style: {
@@ -2,7 +2,7 @@ import { MultiSelectComponentProps } from './UiComponents';
2
2
  /**
3
3
  * A robust select component that implements the new minimal Select interface.
4
4
  */
5
- export declare function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, value, }: MultiSelectComponentProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, value, isLoading, }: MultiSelectComponentProps): import("react/jsx-runtime").JSX.Element;
6
6
  export declare const ListboxTextInput: ({ value, onChange, placeholder, }: {
7
7
  value: string;
8
8
  onChange: (e: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"QuillMultiSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAgC3D;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,EACjD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,GACN,EAAE,yBAAyB,2CAiV3B;AAED,eAAO,MAAM,gBAAgB;WAKpB,MAAM;kBACC,MAAM,KAAK,IAAI;iBAChB,MAAM;6CAwDpB,CAAC"}
1
+ {"version":3,"file":"QuillMultiSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAiC3E;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,EACjD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE,yBAAyB,2CA4U3B;AAED,eAAO,MAAM,gBAAgB;WAKpB,MAAM;kBACC,MAAM,KAAK,IAAI;iBAChB,MAAM;6CAwDpB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useOnClickOutside } from '../hooks';
3
- import React, { useContext, useEffect, useRef, useState, } from 'react';
3
+ import { LoadingSpinner } from './UiComponents';
4
+ import React, { useContext, useEffect, useMemo, useRef, useState, } from 'react';
4
5
  import { ThemeContext } from '../Context';
5
6
  /**
6
7
  * Helper function for displaying option labels
@@ -20,34 +21,22 @@ function displaySelectedOptionLabels({ options, value, }) {
20
21
  /**
21
22
  * A robust select component that implements the new minimal Select interface.
22
23
  */
23
- export function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, value, }) {
24
+ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, value, isLoading, }) {
24
25
  const [theme] = useContext(ThemeContext);
25
26
  const [selectedOptions, setSelectedOptions] = useState([]);
26
27
  const [showModal, setShowModal] = useState(false);
27
28
  const modalRef = useRef(null);
28
29
  const debounceTimeoutId = useRef(null);
29
30
  const [searchQuery, setSearchQuery] = React.useState('');
30
- const [filteredItems, setFilteredItems] = React.useState(options.slice(0, 20));
31
+ const [exceedsLimit, setExceedsLimit] = useState(false);
31
32
  useEffect(() => {
32
- setFilteredItems(options.slice(0, 20));
33
+ if (options.length > 0 && options?.[0]?.value === 'EXCEEDS_LIMIT') {
34
+ setExceedsLimit(true);
35
+ }
36
+ else {
37
+ setExceedsLimit(false);
38
+ }
33
39
  }, [options]);
34
- const handleSearchChange = (value) => {
35
- setSearchQuery(value);
36
- const curFilteredItems = value === ''
37
- ? options.slice(0, 20)
38
- : options
39
- .filter((option) => {
40
- if (!option) {
41
- return false;
42
- }
43
- return option.value
44
- .toLowerCase()
45
- .replace(/\s+/g, '')
46
- .includes(value.toLowerCase().replace(/\s+/g, ''));
47
- })
48
- .slice(0, 20);
49
- setFilteredItems(curFilteredItems);
50
- };
51
40
  useOnClickOutside(modalRef, () => setShowModal(false));
52
41
  useEffect(() => {
53
42
  if (!value) {
@@ -65,14 +54,43 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
65
54
  onChange(updatedChangeEvent);
66
55
  }, 500);
67
56
  };
68
- // const filterOptions = (query: string) => {
69
- // setSearchQuery(query);
70
- // setFilteredOptions(
71
- // options.filter((option) =>
72
- // option.label.toLowerCase().includes(query.toLowerCase()),
73
- // ),
74
- // );
75
- // };
57
+ const filteredItems = React.useMemo(function () {
58
+ // Sort null to top
59
+ if (searchQuery === '') {
60
+ return options.sort((a, b) => {
61
+ if (a.value === null) {
62
+ return -1;
63
+ }
64
+ if (b.value === null) {
65
+ return 1;
66
+ }
67
+ return a.label.localeCompare(b.label);
68
+ });
69
+ }
70
+ return options
71
+ .filter((option) => {
72
+ if (!option) {
73
+ return false;
74
+ }
75
+ return option.value
76
+ .toLowerCase()
77
+ .replace(/\s+/g, '')
78
+ .includes(searchQuery.toLowerCase().replace(/\s+/g, ''));
79
+ })
80
+ .sort((a, b) => {
81
+ if (a.value === null) {
82
+ return -1;
83
+ }
84
+ if (b.value === null) {
85
+ return 1;
86
+ }
87
+ return a.label.localeCompare(b.label);
88
+ })
89
+ .slice(0, 20);
90
+ }, [options, searchQuery]);
91
+ const nullLabel = useMemo(() => {
92
+ return filteredItems.some((item) => item.value === '-') ? 'None' : '-';
93
+ }, [filteredItems]);
76
94
  return (_jsxs("div", { style: {
77
95
  position: 'relative',
78
96
  borderRadius: '6px',
@@ -84,7 +102,7 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
84
102
  fontFamily: theme?.fontFamily,
85
103
  paddingBottom: 5,
86
104
  fontWeight: 600,
87
- }, children: label })), _jsxs("button", { style: {
105
+ }, children: label ?? nullLabel })), _jsxs("button", { style: {
88
106
  fontFamily: theme?.fontFamily,
89
107
  color: theme?.primaryTextColor,
90
108
  width: '100%',
@@ -133,9 +151,14 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
133
151
  maxHeight: '50vh',
134
152
  overflow: 'scroll',
135
153
  fontSize: 14,
136
- }, children: [options && options.length > 20 && (_jsx(ListboxTextInput, { value: searchQuery, placeholder: "Search", onChange: (value) => {
137
- handleSearchChange(value);
138
- } })), options && options.length > 20 && (_jsx("div", { style: { height: 9, width: 230, borderTop: '1px solid #e7e7e7' } })), (!filteredItems || filteredItems.length === 0) && (_jsxs("div", { style: {
154
+ }, children: [!exceedsLimit && options && options.length > 20 && (_jsx(ListboxTextInput, { value: searchQuery, placeholder: "Search", onChange: (value) => {
155
+ setSearchQuery(value);
156
+ } })), !exceedsLimit && options && options.length > 20 && (_jsx("div", { style: {
157
+ height: 9,
158
+ width: 230,
159
+ borderTop: '1px solid #e7e7e7',
160
+ } })), !isLoading &&
161
+ (!filteredItems || filteredItems.length === 0 || exceedsLimit) && (_jsxs("div", { style: {
139
162
  display: 'flex',
140
163
  alignItems: 'center',
141
164
  padding: 8,
@@ -154,18 +177,18 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
154
177
  gap: 6,
155
178
  overflow: 'hidden',
156
179
  }, children: [_jsx("style", { children: `
157
- .quill-option {
158
- background: white;
159
- }
160
- .quill-option:hover {
161
- background: #F4F4F5;
180
+ .quill-option {
181
+ background: white;
162
182
  }
163
- ` }), _jsx("span", { style: {
183
+ .quill-option:hover {
184
+ background: #F4F4F5;
185
+ }
186
+ ` }), _jsx("span", { style: {
164
187
  textOverflow: 'ellipsis',
165
188
  whiteSpace: 'nowrap',
166
189
  overflow: 'hidden',
167
190
  cursor: 'default',
168
- }, children: "No options available" })] })), filteredItems.map((option) => (_jsxs("button", { style: {
191
+ }, children: exceedsLimit ? 'Too many options' : 'No options available' })] })), !exceedsLimit && !isLoading ? (filteredItems.map((option) => (_jsxs("button", { style: {
169
192
  display: 'flex',
170
193
  alignItems: 'center',
171
194
  padding: 8,
@@ -206,17 +229,17 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
206
229
  }
207
230
  debounce(updatedChangeEvent);
208
231
  }, children: [_jsx("style", { children: `
209
- .quill-option {
210
- background: white;
211
- }
212
- .quill-option:hover {
213
- background: #F4F4F5;
232
+ .quill-option {
233
+ background: white;
214
234
  }
215
- ` }), _jsx("input", { type: "checkbox", checked: selectedOptions.includes(option.value), style: { width: '14px', height: '14px', margin: 'auto 0' }, readOnly: true }), _jsx("span", { style: {
235
+ .quill-option:hover {
236
+ background: #F4F4F5;
237
+ }
238
+ ` }), _jsx("input", { type: "checkbox", checked: selectedOptions.includes(option.value), style: { width: '14px', height: '14px', margin: 'auto 0' }, readOnly: true }), _jsx("span", { style: {
216
239
  textOverflow: 'ellipsis',
217
240
  whiteSpace: 'nowrap',
218
241
  overflow: 'hidden',
219
- }, children: option.label })] }, option.value)))] }))] }));
242
+ }, children: option.label ?? nullLabel })] }, option.value)))) : isLoading ? (_jsx("div", { children: _jsx(LoadingSpinner, {}) })) : null] }))] }));
220
243
  }
221
244
  export const ListboxTextInput = ({ value, onChange, placeholder, }) => {
222
245
  return (_jsxs("div", { style: {
@@ -2,5 +2,5 @@ import { SelectComponentProps } from './UiComponents';
2
2
  /**
3
3
  * A robust select component that implements the new minimal Select interface.
4
4
  */
5
- export declare function QuillSelectComponent({ options, value, width, onChange, label, }: SelectComponentProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function QuillSelectComponent({ options, value, width, onChange, label, isLoading, disabled, }: SelectComponentProps): import("react/jsx-runtime").JSX.Element;
6
6
  //# sourceMappingURL=QuillSelect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QuillSelect.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAItD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,GACN,EAAE,oBAAoB,2CA2MtB"}
1
+ {"version":3,"file":"QuillSelect.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAItE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,EACT,QAAQ,GACT,EAAE,oBAAoB,2CA8OtB"}
@@ -1,15 +1,31 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useOnClickOutside } from '../hooks';
3
- import { useContext, useRef, useState } from 'react';
3
+ import { LoadingSpinner } from './UiComponents';
4
+ import { useContext, useMemo, useRef, useState } from 'react';
4
5
  import { ThemeContext } from '../Context';
5
6
  /**
6
7
  * A robust select component that implements the new minimal Select interface.
7
8
  */
8
- export function QuillSelectComponent({ options, value, width, onChange, label, }) {
9
+ export function QuillSelectComponent({ options, value, width, onChange, label, isLoading, disabled, }) {
9
10
  const [theme] = useContext(ThemeContext);
10
11
  const [showModal, setShowModal] = useState(false);
11
12
  const modalRef = useRef(null);
12
13
  useOnClickOutside(modalRef, () => setShowModal(false));
14
+ const sortedItems = useMemo(() => {
15
+ // Sort null to top
16
+ return options.sort((a, b) => {
17
+ if (a.value === null) {
18
+ return -1;
19
+ }
20
+ if (b.value === null) {
21
+ return 1;
22
+ }
23
+ return a.label.localeCompare(b.label);
24
+ });
25
+ }, [options]);
26
+ const nullLabel = useMemo(() => {
27
+ return sortedItems.some((item) => item.value === '-') ? 'None' : '-';
28
+ }, [sortedItems]);
13
29
  return (_jsxs("div", { style: {
14
30
  position: 'relative',
15
31
  // width: 200,
@@ -23,7 +39,7 @@ export function QuillSelectComponent({ options, value, width, onChange, label, }
23
39
  fontFamily: theme?.fontFamily,
24
40
  paddingBottom: 5,
25
41
  fontWeight: 600,
26
- }, children: label })), _jsxs("button", { style: {
42
+ }, children: label ?? nullLabel })), _jsxs("button", { style: {
27
43
  fontFamily: theme?.fontFamily,
28
44
  color: theme?.primaryTextColor,
29
45
  width: '100%',
@@ -44,7 +60,14 @@ export function QuillSelectComponent({ options, value, width, onChange, label, }
44
60
  height: 40,
45
61
  minHeight: 40,
46
62
  maxHeight: 40,
47
- }, className: "quill-select-button", onClick: () => setShowModal((showModal) => !showModal), children: [_jsx("style", { children: ` .quill-select-button { background: ${theme?.backgroundColor}; } .quill-select-button:hover { background: ${theme?.hoverBackgroundColor}; }` }), _jsx("span", { style: {
63
+ }, className: "quill-select-button", onClick: () => setShowModal((showModal) => !showModal), disabled: disabled, children: [_jsx("style", { children: `
64
+ .quill-select-button { background: ${theme?.backgroundColor}; }
65
+ .quill-select-button:hover { background: ${theme?.hoverBackgroundColor}; }
66
+ .quill-select-button:disabled {
67
+ opacity: 0.5;
68
+ cursor: not-allowed;
69
+ }
70
+ ` }), _jsx("span", { style: {
48
71
  textOverflow: 'ellipsis',
49
72
  whiteSpace: 'nowrap',
50
73
  overflow: 'hidden',
@@ -68,7 +91,7 @@ export function QuillSelectComponent({ options, value, width, onChange, label, }
68
91
  fontFamily: theme?.fontFamily,
69
92
  maxHeight: '50vh',
70
93
  overflow: 'scroll',
71
- }, children: [_jsxs("button", { style: {
94
+ }, children: [!isLoading && (_jsxs("button", { style: {
72
95
  display: 'flex',
73
96
  alignItems: 'center',
74
97
  justifyContent: 'space-between',
@@ -91,14 +114,14 @@ export function QuillSelectComponent({ options, value, width, onChange, label, }
91
114
  const changeEvent = { target: { value: '' } };
92
115
  onChange(changeEvent);
93
116
  setShowModal(false);
94
- }, children: [_jsx("style", { children: `
117
+ }, disabled: disabled, children: [_jsx("style", { children: `
95
118
  .quill-option {
96
119
  background: white;
97
120
  }
98
121
  .quill-option:hover {
99
122
  background: #F4F4F5;
100
123
  }
101
- ` }), 'Select'] }), options.map((option) => (_jsxs("button", { style: {
124
+ ` }), 'Select'] })), !isLoading ? (options.map((option) => (_jsxs("button", { style: {
102
125
  display: 'flex',
103
126
  alignItems: 'center',
104
127
  justifyContent: 'space-between',
@@ -121,7 +144,7 @@ export function QuillSelectComponent({ options, value, width, onChange, label, }
121
144
  const changeEvent = { target: { value: option.value } };
122
145
  onChange(changeEvent);
123
146
  setShowModal(false);
124
- }, children: [_jsx("style", { children: `
147
+ }, disabled: disabled, children: [_jsx("style", { children: `
125
148
  .quill-option {
126
149
  background: white;
127
150
  }
@@ -132,5 +155,5 @@ export function QuillSelectComponent({ options, value, width, onChange, label, }
132
155
  textOverflow: 'ellipsis',
133
156
  whiteSpace: 'nowrap',
134
157
  overflow: 'hidden',
135
- }, children: option.label })] }, option.label)))] }))] }));
158
+ }, children: option.label ?? '-' })] }, option.label)))) : (_jsx(LoadingSpinner, {}))] }))] }));
136
159
  }
@@ -2,5 +2,5 @@ import { SelectComponentProps } from './UiComponents';
2
2
  /**
3
3
  * A robust select component that implements the new minimal Select interface.
4
4
  */
5
- export declare function QuillSelectComponentWithCombo({ options, value, width, onChange, label, }: SelectComponentProps): import("react/jsx-runtime").JSX.Element;
5
+ export declare function QuillSelectComponentWithCombo({ options, value, width, onChange, label, isLoading, }: SelectComponentProps): import("react/jsx-runtime").JSX.Element;
6
6
  //# sourceMappingURL=QuillSelectWithCombo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QuillSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAWtD;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,EAC5C,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,GACN,EAAE,oBAAoB,2CAoPtB"}
1
+ {"version":3,"file":"QuillSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAWtE;;GAEG;AACH,wBAAgB,6BAA6B,CAAC,EAC5C,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,GACV,EAAE,oBAAoB,2CA8QtB"}