@quillsql/react 2.12.52 → 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 (243) 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 +54 -18
  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 +24 -29
  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/components/Chart/ChartError.js +2 -2
  32. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts +2 -2
  33. package/dist/cjs/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  34. package/dist/cjs/components/Dashboard/DashboardFilter.js +6 -6
  35. package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts +2 -2
  36. package/dist/cjs/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
  37. package/dist/cjs/components/Dashboard/DataLoader.d.ts +5 -1
  38. package/dist/cjs/components/Dashboard/DataLoader.d.ts.map +1 -1
  39. package/dist/cjs/components/Dashboard/DataLoader.js +23 -4
  40. package/dist/cjs/components/Dashboard/TableComponent.d.ts +2 -1
  41. package/dist/cjs/components/Dashboard/TableComponent.d.ts.map +1 -1
  42. package/dist/cjs/components/Dashboard/TableComponent.js +2 -2
  43. package/dist/cjs/components/Dashboard/util.d.ts +2 -2
  44. package/dist/cjs/components/Dashboard/util.d.ts.map +1 -1
  45. package/dist/cjs/components/Dashboard/util.js +2 -2
  46. package/dist/cjs/components/QuillMultiSelect.d.ts.map +1 -1
  47. package/dist/cjs/components/QuillMultiSelect.js +18 -13
  48. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  49. package/dist/cjs/components/QuillMultiSelectWithCombo.js +67 -45
  50. package/dist/cjs/components/QuillSelect.d.ts +1 -1
  51. package/dist/cjs/components/QuillSelect.d.ts.map +1 -1
  52. package/dist/cjs/components/QuillSelect.js +28 -6
  53. package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
  54. package/dist/cjs/components/QuillSelectWithCombo.js +45 -24
  55. package/dist/cjs/components/QuillTable.d.ts +2 -1
  56. package/dist/cjs/components/QuillTable.d.ts.map +1 -1
  57. package/dist/cjs/components/QuillTable.js +7 -4
  58. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts +2 -1
  59. package/dist/cjs/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  60. package/dist/cjs/components/ReportBuilder/AddLimitPopover.js +2 -2
  61. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts +2 -1
  62. package/dist/cjs/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  63. package/dist/cjs/components/ReportBuilder/AddSortPopover.js +2 -2
  64. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts +2 -1
  65. package/dist/cjs/components/ReportBuilder/FilterModal.d.ts.map +1 -1
  66. package/dist/cjs/components/ReportBuilder/FilterModal.js +17 -4
  67. package/dist/cjs/components/ReportBuilder/ui.d.ts +13 -7
  68. package/dist/cjs/components/ReportBuilder/ui.d.ts.map +1 -1
  69. package/dist/cjs/components/ReportBuilder/ui.js +14 -11
  70. package/dist/cjs/components/UiComponents.d.ts +15 -8
  71. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  72. package/dist/cjs/components/UiComponents.js +29 -23
  73. package/dist/cjs/hooks/useAstToFilterTree.d.ts +2 -2
  74. package/dist/cjs/hooks/useAstToFilterTree.d.ts.map +1 -1
  75. package/dist/cjs/hooks/useDashboard.d.ts +9 -4
  76. package/dist/cjs/hooks/useDashboard.d.ts.map +1 -1
  77. package/dist/cjs/hooks/useDashboard.js +61 -38
  78. package/dist/cjs/hooks/useExport.js +1 -1
  79. package/dist/cjs/hooks/useQuill.js +2 -2
  80. package/dist/cjs/hooks/useVirtualTables.d.ts +12 -3
  81. package/dist/cjs/hooks/useVirtualTables.d.ts.map +1 -1
  82. package/dist/cjs/hooks/useVirtualTables.js +105 -1
  83. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts +3 -1
  84. package/dist/cjs/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  85. package/dist/cjs/internals/ReportBuilder/PivotForm.js +9 -9
  86. package/dist/cjs/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  87. package/dist/cjs/internals/ReportBuilder/PivotList.js +21 -15
  88. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts +3 -2
  89. package/dist/cjs/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  90. package/dist/cjs/internals/ReportBuilder/PivotModal.js +9 -9
  91. package/dist/cjs/models/Client.d.ts +10 -2
  92. package/dist/cjs/models/Client.d.ts.map +1 -1
  93. package/dist/cjs/utils/astProcessing.d.ts +3 -3
  94. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  95. package/dist/cjs/utils/client.d.ts.map +1 -1
  96. package/dist/cjs/utils/client.js +2 -7
  97. package/dist/cjs/utils/dashboard.d.ts +5 -5
  98. package/dist/cjs/utils/dashboard.d.ts.map +1 -1
  99. package/dist/cjs/utils/dashboard.js +87 -7
  100. package/dist/cjs/utils/dataFetcher.d.ts +4 -4
  101. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  102. package/dist/cjs/utils/dataFetcher.js +1 -1
  103. package/dist/cjs/utils/filterProcessing.d.ts.map +1 -1
  104. package/dist/cjs/utils/filterProcessing.js +2 -8
  105. package/dist/cjs/utils/paginationProcessing.js +1 -1
  106. package/dist/cjs/utils/pivotConstructor.d.ts +2 -2
  107. package/dist/cjs/utils/pivotConstructor.d.ts.map +1 -1
  108. package/dist/cjs/utils/pivotConstructor.js +1 -1
  109. package/dist/cjs/utils/pivotProcessing.d.ts.map +1 -1
  110. package/dist/cjs/utils/pivotProcessing.js +6 -2
  111. package/dist/cjs/utils/queryConstructor.d.ts.map +1 -1
  112. package/dist/cjs/utils/queryConstructor.js +12 -9
  113. package/dist/cjs/utils/report.d.ts +6 -5
  114. package/dist/cjs/utils/report.d.ts.map +1 -1
  115. package/dist/cjs/utils/report.js +69 -24
  116. package/dist/cjs/utils/schema.d.ts +3 -3
  117. package/dist/cjs/utils/schema.d.ts.map +1 -1
  118. package/dist/cjs/utils/schema.js +39 -35
  119. package/dist/cjs/utils/tableProcessing.d.ts +17 -10
  120. package/dist/cjs/utils/tableProcessing.d.ts.map +1 -1
  121. package/dist/cjs/utils/tableProcessing.js +42 -23
  122. package/dist/esm/Chart.js +2 -2
  123. package/dist/esm/ChartBuilder.d.ts +7 -3
  124. package/dist/esm/ChartBuilder.d.ts.map +1 -1
  125. package/dist/esm/ChartBuilder.js +51 -18
  126. package/dist/esm/ChartEditor.d.ts +3 -1
  127. package/dist/esm/ChartEditor.d.ts.map +1 -1
  128. package/dist/esm/ChartEditor.js +43 -8
  129. package/dist/esm/Context.d.ts +4 -5
  130. package/dist/esm/Context.d.ts.map +1 -1
  131. package/dist/esm/Context.js +23 -35
  132. package/dist/esm/Dashboard.d.ts +4 -3
  133. package/dist/esm/Dashboard.d.ts.map +1 -1
  134. package/dist/esm/Dashboard.js +24 -29
  135. package/dist/esm/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  136. package/dist/esm/DateRangePicker/QuillDateRangePicker.js +8 -10
  137. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts +1 -0
  138. package/dist/esm/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  139. package/dist/esm/DateRangePicker/dateRangePickerUtils.js +1 -1
  140. package/dist/esm/QuillProvider.js +1 -1
  141. package/dist/esm/ReportBuilder.d.ts +8 -12
  142. package/dist/esm/ReportBuilder.d.ts.map +1 -1
  143. package/dist/esm/ReportBuilder.js +160 -86
  144. package/dist/esm/SQLEditor.d.ts +8 -1
  145. package/dist/esm/SQLEditor.d.ts.map +1 -1
  146. package/dist/esm/SQLEditor.js +83 -31
  147. package/dist/esm/Table.js +2 -2
  148. package/dist/esm/assets/AdjustmentsIcon.d.ts +5 -0
  149. package/dist/esm/assets/AdjustmentsIcon.d.ts.map +1 -0
  150. package/dist/esm/assets/AdjustmentsIcon.js +3 -0
  151. package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +1 -1
  152. package/dist/esm/components/Chart/ChartError.js +2 -2
  153. package/dist/esm/components/Dashboard/DashboardFilter.d.ts +2 -2
  154. package/dist/esm/components/Dashboard/DashboardFilter.d.ts.map +1 -1
  155. package/dist/esm/components/Dashboard/DashboardFilter.js +6 -6
  156. package/dist/esm/components/Dashboard/DashboardTemplate.d.ts +2 -2
  157. package/dist/esm/components/Dashboard/DashboardTemplate.d.ts.map +1 -1
  158. package/dist/esm/components/Dashboard/DataLoader.d.ts +5 -1
  159. package/dist/esm/components/Dashboard/DataLoader.d.ts.map +1 -1
  160. package/dist/esm/components/Dashboard/DataLoader.js +25 -6
  161. package/dist/esm/components/Dashboard/TableComponent.d.ts +2 -1
  162. package/dist/esm/components/Dashboard/TableComponent.d.ts.map +1 -1
  163. package/dist/esm/components/Dashboard/TableComponent.js +2 -2
  164. package/dist/esm/components/Dashboard/util.d.ts +2 -2
  165. package/dist/esm/components/Dashboard/util.d.ts.map +1 -1
  166. package/dist/esm/components/Dashboard/util.js +2 -2
  167. package/dist/esm/components/QuillMultiSelect.d.ts.map +1 -1
  168. package/dist/esm/components/QuillMultiSelect.js +19 -14
  169. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  170. package/dist/esm/components/QuillMultiSelectWithCombo.js +68 -46
  171. package/dist/esm/components/QuillSelect.d.ts +1 -1
  172. package/dist/esm/components/QuillSelect.d.ts.map +1 -1
  173. package/dist/esm/components/QuillSelect.js +29 -7
  174. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
  175. package/dist/esm/components/QuillSelectWithCombo.js +46 -25
  176. package/dist/esm/components/QuillTable.d.ts +2 -1
  177. package/dist/esm/components/QuillTable.d.ts.map +1 -1
  178. package/dist/esm/components/QuillTable.js +7 -4
  179. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts +2 -1
  180. package/dist/esm/components/ReportBuilder/AddLimitPopover.d.ts.map +1 -1
  181. package/dist/esm/components/ReportBuilder/AddLimitPopover.js +2 -2
  182. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts +2 -1
  183. package/dist/esm/components/ReportBuilder/AddSortPopover.d.ts.map +1 -1
  184. package/dist/esm/components/ReportBuilder/AddSortPopover.js +2 -2
  185. package/dist/esm/components/ReportBuilder/FilterModal.d.ts +2 -1
  186. package/dist/esm/components/ReportBuilder/FilterModal.d.ts.map +1 -1
  187. package/dist/esm/components/ReportBuilder/FilterModal.js +17 -4
  188. package/dist/esm/components/ReportBuilder/ui.d.ts +13 -7
  189. package/dist/esm/components/ReportBuilder/ui.d.ts.map +1 -1
  190. package/dist/esm/components/ReportBuilder/ui.js +14 -11
  191. package/dist/esm/components/UiComponents.d.ts +15 -8
  192. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  193. package/dist/esm/components/UiComponents.js +29 -23
  194. package/dist/esm/hooks/useAstToFilterTree.d.ts +2 -2
  195. package/dist/esm/hooks/useAstToFilterTree.d.ts.map +1 -1
  196. package/dist/esm/hooks/useDashboard.d.ts +9 -4
  197. package/dist/esm/hooks/useDashboard.d.ts.map +1 -1
  198. package/dist/esm/hooks/useDashboard.js +62 -39
  199. package/dist/esm/hooks/useExport.js +1 -1
  200. package/dist/esm/hooks/useQuill.js +3 -3
  201. package/dist/esm/hooks/useVirtualTables.d.ts +12 -3
  202. package/dist/esm/hooks/useVirtualTables.d.ts.map +1 -1
  203. package/dist/esm/hooks/useVirtualTables.js +106 -2
  204. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts +3 -1
  205. package/dist/esm/internals/ReportBuilder/PivotForm.d.ts.map +1 -1
  206. package/dist/esm/internals/ReportBuilder/PivotForm.js +9 -9
  207. package/dist/esm/internals/ReportBuilder/PivotList.d.ts.map +1 -1
  208. package/dist/esm/internals/ReportBuilder/PivotList.js +21 -15
  209. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts +3 -2
  210. package/dist/esm/internals/ReportBuilder/PivotModal.d.ts.map +1 -1
  211. package/dist/esm/internals/ReportBuilder/PivotModal.js +9 -9
  212. package/dist/esm/models/Client.d.ts +10 -2
  213. package/dist/esm/models/Client.d.ts.map +1 -1
  214. package/dist/esm/utils/astProcessing.d.ts +3 -3
  215. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  216. package/dist/esm/utils/client.d.ts.map +1 -1
  217. package/dist/esm/utils/client.js +2 -7
  218. package/dist/esm/utils/dashboard.d.ts +5 -5
  219. package/dist/esm/utils/dashboard.d.ts.map +1 -1
  220. package/dist/esm/utils/dashboard.js +87 -7
  221. package/dist/esm/utils/dataFetcher.d.ts +4 -4
  222. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  223. package/dist/esm/utils/dataFetcher.js +1 -1
  224. package/dist/esm/utils/filterProcessing.d.ts.map +1 -1
  225. package/dist/esm/utils/filterProcessing.js +2 -8
  226. package/dist/esm/utils/paginationProcessing.js +1 -1
  227. package/dist/esm/utils/pivotConstructor.d.ts +2 -2
  228. package/dist/esm/utils/pivotConstructor.d.ts.map +1 -1
  229. package/dist/esm/utils/pivotConstructor.js +1 -1
  230. package/dist/esm/utils/pivotProcessing.d.ts.map +1 -1
  231. package/dist/esm/utils/pivotProcessing.js +6 -2
  232. package/dist/esm/utils/queryConstructor.d.ts.map +1 -1
  233. package/dist/esm/utils/queryConstructor.js +12 -9
  234. package/dist/esm/utils/report.d.ts +6 -5
  235. package/dist/esm/utils/report.d.ts.map +1 -1
  236. package/dist/esm/utils/report.js +68 -24
  237. package/dist/esm/utils/schema.d.ts +3 -3
  238. package/dist/esm/utils/schema.d.ts.map +1 -1
  239. package/dist/esm/utils/schema.js +39 -35
  240. package/dist/esm/utils/tableProcessing.d.ts +17 -10
  241. package/dist/esm/utils/tableProcessing.d.ts.map +1 -1
  242. package/dist/esm/utils/tableProcessing.js +39 -20
  243. package/package.json +1 -1
@@ -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
  };
@@ -1 +1 @@
1
- {"version":3,"file":"QuillMultiSelect.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelect.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAgC3E;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,EACxC,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE,yBAAyB,2CA4Q3B;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,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useOnClickOutside } from '../hooks';
3
3
  import { LoadingSpinner } from './UiComponents';
4
- import { useContext, useEffect, useRef, useState, } from 'react';
4
+ import { useContext, useEffect, useMemo, useRef, useState, } from 'react';
5
5
  import { ThemeContext } from '../Context';
6
6
  /**
7
7
  * Helper function for displaying option labels
@@ -15,7 +15,7 @@ function displaySelectedOptionLabels({ options, value, }) {
15
15
  return 'Select';
16
16
  }
17
17
  return matchingOptions
18
- .map((elem) => elem.label)
18
+ .map((elem) => elem.label ?? '-')
19
19
  .join(', ');
20
20
  }
21
21
  /**
@@ -27,8 +27,6 @@ export function QuillMultiSelectComponent({ options, width, onChange, label, val
27
27
  const [showModal, setShowModal] = useState(false);
28
28
  const modalRef = useRef(null);
29
29
  const debounceTimeoutId = useRef(null);
30
- // const [searchQuery, setSearchQuery] = useState('');
31
- // const [filteredOptions, setFilteredOptions] = useState(options);
32
30
  useOnClickOutside(modalRef, () => setShowModal(false));
33
31
  useEffect(() => {
34
32
  if (!value) {
@@ -38,6 +36,21 @@ export function QuillMultiSelectComponent({ options, width, onChange, label, val
38
36
  setSelectedOptions(value);
39
37
  }
40
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]);
41
54
  const debounce = (updatedChangeEvent) => {
42
55
  if (debounceTimeoutId.current) {
43
56
  clearTimeout(debounceTimeoutId.current);
@@ -46,14 +59,6 @@ export function QuillMultiSelectComponent({ options, width, onChange, label, val
46
59
  onChange(updatedChangeEvent);
47
60
  }, 500);
48
61
  };
49
- // const filterOptions = (query: string) => {
50
- // setSearchQuery(query);
51
- // setFilteredOptions(
52
- // options.filter((option) =>
53
- // option.label.toLowerCase().includes(query.toLowerCase()),
54
- // ),
55
- // );
56
- // };
57
62
  return (_jsxs("div", { style: {
58
63
  position: 'relative',
59
64
  borderRadius: '6px',
@@ -113,7 +118,7 @@ export function QuillMultiSelectComponent({ options, width, onChange, label, val
113
118
  fontFamily: theme?.fontFamily,
114
119
  maxHeight: '50vh',
115
120
  overflow: 'scroll',
116
- }, children: !isLoading ? (options.map((option) => (_jsxs("button", { style: {
121
+ }, children: !isLoading ? (sortedItems.map((option) => (_jsxs("button", { style: {
117
122
  display: 'flex',
118
123
  alignItems: 'center',
119
124
  padding: 8,
@@ -164,7 +169,7 @@ export function QuillMultiSelectComponent({ options, width, onChange, label, val
164
169
  textOverflow: 'ellipsis',
165
170
  whiteSpace: 'nowrap',
166
171
  overflow: 'hidden',
167
- }, children: option.label })] }, option.value)))) : (_jsx(LoadingSpinner, {})) }))] }));
172
+ }, children: option.label ?? nullLabel })] }, option.value)))) : (_jsx(LoadingSpinner, {})) }))] }));
168
173
  }
169
174
  export const ListboxTextInput = ({ value, onChange, placeholder, }) => {
170
175
  return (_jsxs("div", { style: {
@@ -1 +1 @@
1
- {"version":3,"file":"QuillMultiSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelectWithCombo.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAgC3E;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,EACjD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE,yBAAyB,2CAuV3B;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,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useOnClickOutside } from '../hooks';
3
3
  import { LoadingSpinner } from './UiComponents';
4
- import React, { useContext, useEffect, useRef, useState, } from 'react';
4
+ import React, { useContext, useEffect, useMemo, useRef, useState, } from 'react';
5
5
  import { ThemeContext } from '../Context';
6
6
  /**
7
7
  * Helper function for displaying option labels
@@ -28,27 +28,15 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
28
28
  const modalRef = useRef(null);
29
29
  const debounceTimeoutId = useRef(null);
30
30
  const [searchQuery, setSearchQuery] = React.useState('');
31
- const [filteredItems, setFilteredItems] = React.useState(options.slice(0, 20));
31
+ const [exceedsLimit, setExceedsLimit] = useState(false);
32
32
  useEffect(() => {
33
- 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
+ }
34
39
  }, [options]);
35
- const handleSearchChange = (value) => {
36
- setSearchQuery(value);
37
- const curFilteredItems = value === ''
38
- ? options.slice(0, 20)
39
- : options
40
- .filter((option) => {
41
- if (!option) {
42
- return false;
43
- }
44
- return option.value
45
- .toLowerCase()
46
- .replace(/\s+/g, '')
47
- .includes(value.toLowerCase().replace(/\s+/g, ''));
48
- })
49
- .slice(0, 20);
50
- setFilteredItems(curFilteredItems);
51
- };
52
40
  useOnClickOutside(modalRef, () => setShowModal(false));
53
41
  useEffect(() => {
54
42
  if (!value) {
@@ -66,14 +54,43 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
66
54
  onChange(updatedChangeEvent);
67
55
  }, 500);
68
56
  };
69
- // const filterOptions = (query: string) => {
70
- // setSearchQuery(query);
71
- // setFilteredOptions(
72
- // options.filter((option) =>
73
- // option.label.toLowerCase().includes(query.toLowerCase()),
74
- // ),
75
- // );
76
- // };
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]);
77
94
  return (_jsxs("div", { style: {
78
95
  position: 'relative',
79
96
  borderRadius: '6px',
@@ -85,7 +102,7 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
85
102
  fontFamily: theme?.fontFamily,
86
103
  paddingBottom: 5,
87
104
  fontWeight: 600,
88
- }, children: label })), _jsxs("button", { style: {
105
+ }, children: label ?? nullLabel })), _jsxs("button", { style: {
89
106
  fontFamily: theme?.fontFamily,
90
107
  color: theme?.primaryTextColor,
91
108
  width: '100%',
@@ -134,9 +151,14 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
134
151
  maxHeight: '50vh',
135
152
  overflow: 'scroll',
136
153
  fontSize: 14,
137
- }, children: [options && options.length > 20 && !isLoading && (_jsx(ListboxTextInput, { value: searchQuery, placeholder: "Search", onChange: (value) => {
138
- handleSearchChange(value);
139
- } })), options && options.length > 20 && (_jsx("div", { style: { height: 9, width: 230, borderTop: '1px solid #e7e7e7' } })), (!filteredItems || filteredItems.length === 0) && !isLoading && (_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: {
140
162
  display: 'flex',
141
163
  alignItems: 'center',
142
164
  padding: 8,
@@ -155,18 +177,18 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
155
177
  gap: 6,
156
178
  overflow: 'hidden',
157
179
  }, children: [_jsx("style", { children: `
158
- .quill-option {
159
- background: white;
160
- }
161
- .quill-option:hover {
162
- background: #F4F4F5;
180
+ .quill-option {
181
+ background: white;
163
182
  }
164
- ` }), _jsx("span", { style: {
183
+ .quill-option:hover {
184
+ background: #F4F4F5;
185
+ }
186
+ ` }), _jsx("span", { style: {
165
187
  textOverflow: 'ellipsis',
166
188
  whiteSpace: 'nowrap',
167
189
  overflow: 'hidden',
168
190
  cursor: 'default',
169
- }, children: "No options available" })] })), !isLoading ? (filteredItems.map((option) => (_jsxs("button", { style: {
191
+ }, children: exceedsLimit ? 'Too many options' : 'No options available' })] })), !exceedsLimit && !isLoading ? (filteredItems.map((option) => (_jsxs("button", { style: {
170
192
  display: 'flex',
171
193
  alignItems: 'center',
172
194
  padding: 8,
@@ -207,17 +229,17 @@ export function QuillMultiSelectComponentWithCombo({ options, width, onChange, l
207
229
  }
208
230
  debounce(updatedChangeEvent);
209
231
  }, children: [_jsx("style", { children: `
210
- .quill-option {
211
- background: white;
212
- }
213
- .quill-option:hover {
214
- background: #F4F4F5;
232
+ .quill-option {
233
+ background: white;
215
234
  }
216
- ` }), _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: {
217
239
  textOverflow: 'ellipsis',
218
240
  whiteSpace: 'nowrap',
219
241
  overflow: 'hidden',
220
- }, children: option.label })] }, option.value)))) : (_jsx(LoadingSpinner, {}))] }))] }));
242
+ }, children: option.label ?? nullLabel })] }, option.value)))) : isLoading ? (_jsx("div", { children: _jsx(LoadingSpinner, {}) })) : null] }))] }));
221
243
  }
222
244
  export const ListboxTextInput = ({ value, onChange, placeholder, }) => {
223
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, isLoading, }: 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,EAAkB,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAItE;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,OAAO,EACP,KAAK,EACL,KAAK,EACL,QAAQ,EACR,KAAK,EACL,SAAS,GACV,EAAE,oBAAoB,2CAiNtB"}
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,16 +1,31 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useOnClickOutside } from '../hooks';
3
3
  import { LoadingSpinner } from './UiComponents';
4
- import { useContext, useRef, useState } from 'react';
4
+ import { useContext, useMemo, useRef, useState } from 'react';
5
5
  import { ThemeContext } from '../Context';
6
6
  /**
7
7
  * A robust select component that implements the new minimal Select interface.
8
8
  */
9
- export function QuillSelectComponent({ options, value, width, onChange, label, isLoading, }) {
9
+ export function QuillSelectComponent({ options, value, width, onChange, label, isLoading, disabled, }) {
10
10
  const [theme] = useContext(ThemeContext);
11
11
  const [showModal, setShowModal] = useState(false);
12
12
  const modalRef = useRef(null);
13
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]);
14
29
  return (_jsxs("div", { style: {
15
30
  position: 'relative',
16
31
  // width: 200,
@@ -24,7 +39,7 @@ export function QuillSelectComponent({ options, value, width, onChange, label, i
24
39
  fontFamily: theme?.fontFamily,
25
40
  paddingBottom: 5,
26
41
  fontWeight: 600,
27
- }, children: label })), _jsxs("button", { style: {
42
+ }, children: label ?? nullLabel })), _jsxs("button", { style: {
28
43
  fontFamily: theme?.fontFamily,
29
44
  color: theme?.primaryTextColor,
30
45
  width: '100%',
@@ -45,7 +60,14 @@ export function QuillSelectComponent({ options, value, width, onChange, label, i
45
60
  height: 40,
46
61
  minHeight: 40,
47
62
  maxHeight: 40,
48
- }, 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: {
49
71
  textOverflow: 'ellipsis',
50
72
  whiteSpace: 'nowrap',
51
73
  overflow: 'hidden',
@@ -92,7 +114,7 @@ export function QuillSelectComponent({ options, value, width, onChange, label, i
92
114
  const changeEvent = { target: { value: '' } };
93
115
  onChange(changeEvent);
94
116
  setShowModal(false);
95
- }, children: [_jsx("style", { children: `
117
+ }, disabled: disabled, children: [_jsx("style", { children: `
96
118
  .quill-option {
97
119
  background: white;
98
120
  }
@@ -122,7 +144,7 @@ export function QuillSelectComponent({ options, value, width, onChange, label, i
122
144
  const changeEvent = { target: { value: option.value } };
123
145
  onChange(changeEvent);
124
146
  setShowModal(false);
125
- }, children: [_jsx("style", { children: `
147
+ }, disabled: disabled, children: [_jsx("style", { children: `
126
148
  .quill-option {
127
149
  background: white;
128
150
  }
@@ -133,5 +155,5 @@ export function QuillSelectComponent({ options, value, width, onChange, label, i
133
155
  textOverflow: 'ellipsis',
134
156
  whiteSpace: 'nowrap',
135
157
  overflow: 'hidden',
136
- }, children: option.label })] }, option.label)))) : (_jsx(LoadingSpinner, {}))] }))] }));
158
+ }, children: option.label ?? '-' })] }, option.label)))) : (_jsx(LoadingSpinner, {}))] }))] }));
137
159
  }
@@ -1 +1 @@
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,2CAwPtB"}
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"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useOnClickOutside } from '../hooks';
3
3
  import { LoadingSpinner } from './UiComponents';
4
- import React, { useContext, useEffect, useRef, useState, } from 'react';
4
+ import React, { useContext, useMemo, useRef, useState, } from 'react';
5
5
  import { ThemeContext } from '../Context';
6
6
  import { ListboxTextInput } from './QuillMultiSelectWithCombo';
7
7
  /**
@@ -12,28 +12,49 @@ export function QuillSelectComponentWithCombo({ options, value, width, onChange,
12
12
  const [showModal, setShowModal] = useState(false);
13
13
  const modalRef = useRef(null);
14
14
  const [searchQuery, setSearchQuery] = React.useState('');
15
- const [filteredItems, setFilteredItems] = React.useState([]);
16
- useOnClickOutside(modalRef, () => setShowModal(false));
17
- useEffect(() => {
18
- setFilteredItems(options.slice(0, 20));
19
- }, [options]);
20
- const handleSearchChange = (value) => {
21
- setSearchQuery(value);
22
- const curFilteredItems = value === ''
23
- ? options.slice(0, 20)
24
- : options
25
- .filter((option) => {
26
- if (!option) {
27
- return false;
15
+ const filteredItems = React.useMemo(function () {
16
+ // Sort null to top
17
+ if (searchQuery === '') {
18
+ return options.sort((a, b) => {
19
+ if (a.value === null) {
20
+ return -1;
21
+ }
22
+ if (b.value === null) {
23
+ return 1;
28
24
  }
29
- return option.value
30
- .toLowerCase()
31
- .replace(/\s+/g, '')
32
- .includes(value.toLowerCase().replace(/\s+/g, ''));
33
- })
34
- .slice(0, 20);
35
- setFilteredItems(curFilteredItems);
36
- };
25
+ return a.label.localeCompare(b.label);
26
+ });
27
+ }
28
+ return options
29
+ .filter((option) => {
30
+ if (!option) {
31
+ return false;
32
+ }
33
+ return option.value
34
+ .toLowerCase()
35
+ .replace(/\s+/g, '')
36
+ .includes(searchQuery.toLowerCase().replace(/\s+/g, ''));
37
+ })
38
+ .sort((a, b) => {
39
+ if (a.value === null) {
40
+ return -1;
41
+ }
42
+ if (b.value === null) {
43
+ return 1;
44
+ }
45
+ return a.label.localeCompare(b.label);
46
+ })
47
+ .slice(0, 20);
48
+ }, [options, searchQuery]);
49
+ const nullLabel = useMemo(() => {
50
+ return filteredItems.some((item) => item.value === '-') ? 'None' : '-';
51
+ }, [filteredItems]);
52
+ const selectedLabel = useMemo(() => {
53
+ const selectedOption = options.find((elem) => elem.value === value);
54
+ return selectedOption && selectedOption.label == null
55
+ ? nullLabel
56
+ : selectedOption?.label ?? 'Select';
57
+ }, [value, options, nullLabel]);
37
58
  useOnClickOutside(modalRef, () => setShowModal(false));
38
59
  return (_jsxs("div", { style: {
39
60
  position: 'relative',
@@ -73,7 +94,7 @@ export function QuillSelectComponentWithCombo({ options, value, width, onChange,
73
94
  textOverflow: 'ellipsis',
74
95
  whiteSpace: 'nowrap',
75
96
  overflow: 'hidden',
76
- }, children: options.find((elem) => elem.value === value)?.label || 'Select' }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true", "data-slot": "icon", height: 20, width: 20, style: { minHeight: 20, minWidth: 20 }, children: _jsx("path", { fillRule: "evenodd", d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z", clipRule: "evenodd" }) })] }), showModal && (_jsxs("div", { ref: modalRef, style: {
97
+ }, children: selectedLabel }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 20 20", fill: "currentColor", "aria-hidden": "true", "data-slot": "icon", height: 20, width: 20, style: { minHeight: 20, minWidth: 20 }, children: _jsx("path", { fillRule: "evenodd", d: "M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z", clipRule: "evenodd" }) })] }), showModal && (_jsxs("div", { ref: modalRef, style: {
77
98
  position: 'absolute',
78
99
  width: '100%',
79
100
  display: 'flex',
@@ -95,7 +116,7 @@ export function QuillSelectComponentWithCombo({ options, value, width, onChange,
95
116
  overflow: 'scroll',
96
117
  fontSize: 14,
97
118
  }, children: [options && options.length > 20 && !isLoading && (_jsx(ListboxTextInput, { value: searchQuery, placeholder: "Search", onChange: (value) => {
98
- handleSearchChange(value);
119
+ setSearchQuery(value);
99
120
  } })), searchQuery === '' && !isLoading && (_jsxs("button", { style: {
100
121
  display: 'flex',
101
122
  alignItems: 'center',
@@ -160,5 +181,5 @@ export function QuillSelectComponentWithCombo({ options, value, width, onChange,
160
181
  textOverflow: 'ellipsis',
161
182
  whiteSpace: 'nowrap',
162
183
  overflow: 'hidden',
163
- }, children: option.label })] }, option.value)))) : (_jsx(LoadingSpinner, {}))] }))] }));
184
+ }, children: option.label ?? nullLabel })] }, option.value)))) : (_jsx(LoadingSpinner, {}))] }))] }));
164
185
  }
@@ -3,6 +3,7 @@ import { ButtonComponentProps } from './UiComponents';
3
3
  export interface TableComponentProps {
4
4
  rows: object[];
5
5
  rowCount?: number;
6
+ rowCountIsLoading?: boolean;
6
7
  columns: {
7
8
  label: string;
8
9
  field: string;
@@ -27,5 +28,5 @@ export interface TableComponentProps {
27
28
  direction: string;
28
29
  }) => void;
29
30
  }
30
- export default function QuillTable({ rows, rowCount, columns, isLoading, currentPage, sort, hideCSVDownloadButton, containerStyle, className, LoadingComponent, rowsPerPage, emptyStateLabel, downloadCSV, onPageChange, onSortChange, }: TableComponentProps): import("react/jsx-runtime").JSX.Element;
31
+ export default function QuillTable({ rows, rowCount, rowCountIsLoading, columns, isLoading, currentPage, sort, hideCSVDownloadButton, containerStyle, className, LoadingComponent, rowsPerPage, emptyStateLabel, downloadCSV, onPageChange, onSortChange, }: TableComponentProps): import("react/jsx-runtime").JSX.Element;
31
32
  //# 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,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,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,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,IAAI,EACJ,QAAQ,EACR,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,GACb,EAAE,mBAAmB,2CA+crB"}
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,CAAC,EAAE,MAAM,CAAC;IACrB,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,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,GACb,EAAE,mBAAmB,2CAidrB"}
@@ -3,7 +3,7 @@ import { useContext, useEffect, useState } from 'react';
3
3
  import { compareValues } from '../utils/valueFormatter';
4
4
  import { ThemeContext } from '../Context';
5
5
  import { QuillLoadingComponent } from './UiComponents';
6
- export default function QuillTable({ rows, rowCount, columns, isLoading, currentPage, sort, hideCSVDownloadButton = true, containerStyle, className, LoadingComponent = QuillLoadingComponent, rowsPerPage = 10, emptyStateLabel = 'No results', downloadCSV, onPageChange, onSortChange, }) {
6
+ export default function QuillTable({ rows, rowCount, rowCountIsLoading, columns, isLoading, currentPage, sort, hideCSVDownloadButton = true, containerStyle, className, LoadingComponent = QuillLoadingComponent, rowsPerPage = 10, emptyStateLabel = 'No results', downloadCSV, onPageChange, onSortChange, }) {
7
7
  const [activeRows, setActiveRows] = useState([]);
8
8
  const [pageIndex, setPageIndex] = useState(currentPage || 0);
9
9
  const [maxPage, setMaxPage] = useState(1);
@@ -11,16 +11,16 @@ export default function QuillTable({ rows, rowCount, columns, isLoading, current
11
11
  const [sortDirection, setSortDirection] = useState(sort?.direction || 'desc');
12
12
  const [theme] = useContext(ThemeContext);
13
13
  const [isPaginating, setIsPaginating] = useState(true);
14
- const [initialLoad, setInitialLoad] = useState(isLoading);
14
+ const [initialLoad, setInitialLoad] = useState(true);
15
15
  useEffect(() => {
16
16
  setSortColumn(sort?.field || '');
17
17
  setSortDirection(sort?.direction || 'desc');
18
18
  }, [sort]);
19
19
  useEffect(() => {
20
- setIsPaginating(true);
21
20
  if (rows?.length === 0 && isLoading) {
22
21
  return;
23
22
  }
23
+ setIsPaginating(true);
24
24
  const start = pageIndex * rowsPerPage;
25
25
  const end = (pageIndex + 1) * rowsPerPage;
26
26
  if (rowCount && onSortChange && rowCount !== rows.length) {
@@ -102,6 +102,7 @@ export default function QuillTable({ rows, rowCount, columns, isLoading, current
102
102
  margin: 0,
103
103
  boxSizing: 'border-box',
104
104
  outline: 'none',
105
+ position: 'relative',
105
106
  }, children: _jsxs("div", { role: "table", className: "table", style: {
106
107
  display: 'flex',
107
108
  flexDirection: 'column',
@@ -175,6 +176,8 @@ export default function QuillTable({ rows, rowCount, columns, isLoading, current
175
176
  alignItems: 'center',
176
177
  fontSize: 13,
177
178
  color: theme?.secondaryTextColor || 'rgb(55, 65, 81)',
179
+ position: 'absolute',
180
+ width: '100%',
178
181
  }, children: emptyStateLabel })) : (_jsx("div", { role: "rowgroup", className: "tbody", children: activeRows &&
179
182
  activeRows.map((row, rowIndex) => (_jsx("div", { role: "row", className: "tr", style: {
180
183
  display: isPaginating || isLoading ? 'none' : 'flex',
@@ -259,7 +262,7 @@ export default function QuillTable({ rows, rowCount, columns, isLoading, current
259
262
  fontSize: 12,
260
263
  fontFamily: theme?.fontFamily,
261
264
  color: theme?.primaryTextColor,
262
- }, children: [pageIndex + 1, ' of ', maxPage] }), _jsx("div", { style: { width: 8 } }), _jsx("button", { onClick: decreasePage, style: {
265
+ }, children: [pageIndex + 1, ' of ', rowCountIsLoading && maxPage >= 30 ? 'many' : maxPage] }), _jsx("div", { style: { width: 8 } }), _jsx("button", { onClick: decreasePage, style: {
263
266
  cursor: 'pointer',
264
267
  border: 'none',
265
268
  background: 'transparent',