@quillsql/admin 1.6.3 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/dist/cjs/Admin.d.ts +14 -8
  2. package/dist/cjs/Admin.d.ts.map +1 -1
  3. package/dist/cjs/Admin.js +134 -25
  4. package/dist/cjs/AdminProvider.d.ts +26 -5
  5. package/dist/cjs/AdminProvider.d.ts.map +1 -1
  6. package/dist/cjs/AdminProvider.js +174 -85
  7. package/dist/cjs/api/ConnectionClient.d.ts +26 -12
  8. package/dist/cjs/api/ConnectionClient.d.ts.map +1 -1
  9. package/dist/cjs/api/ConnectionClient.js +198 -31
  10. package/dist/cjs/assets/ArrowDownHeadIcon.d.ts.map +1 -1
  11. package/dist/cjs/assets/XIcon.d.ts.map +1 -1
  12. package/dist/cjs/components/CardSection.d.ts.map +1 -1
  13. package/dist/cjs/components/CardSection.js +4 -2
  14. package/dist/cjs/components/ClipboardButton.d.ts.map +1 -1
  15. package/dist/cjs/components/DashboardSelectPopover.d.ts.map +1 -1
  16. package/dist/cjs/components/DashboardSelectPopover.js +46 -7
  17. package/dist/cjs/components/DatabaseSelector.d.ts +3 -1
  18. package/dist/cjs/components/DatabaseSelector.d.ts.map +1 -1
  19. package/dist/cjs/components/DatabaseSelector.js +3 -2
  20. package/dist/cjs/components/DateRangePicker/SingleDatePicker.d.ts.map +1 -1
  21. package/dist/cjs/components/DateRangePicker/SingleDatePicker.js +31 -7
  22. package/dist/cjs/components/DateRangePicker/YearlessDateRangePicker.d.ts.map +1 -1
  23. package/dist/cjs/components/DateRangePicker/YearlessDateRangePicker.js +31 -7
  24. package/dist/cjs/components/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  25. package/dist/cjs/components/DropDownMenuWithLabel.d.ts.map +1 -1
  26. package/dist/cjs/components/DropDownMenuWithLabel.js +8 -1
  27. package/dist/cjs/components/DynamicBanner.d.ts +3 -2
  28. package/dist/cjs/components/DynamicBanner.d.ts.map +1 -1
  29. package/dist/cjs/components/DynamicBanner.js +7 -2
  30. package/dist/cjs/components/EmptyDashboardComponent/index.d.ts.map +1 -1
  31. package/dist/cjs/components/EmptyDashboardComponent/index.js +3 -2
  32. package/dist/cjs/components/EmptyVirtualTablesComponent.d.ts.map +1 -1
  33. package/dist/cjs/components/EmptyVirtualTablesComponent.js +4 -1
  34. package/dist/cjs/components/FormTooltip.d.ts.map +1 -1
  35. package/dist/cjs/components/FormTooltip.js +4 -1
  36. package/dist/cjs/components/InputLabel.d.ts.map +1 -1
  37. package/dist/cjs/components/InputLabel.js +4 -2
  38. package/dist/cjs/components/InternalDashboard/DashboardFilter.d.ts +1 -1
  39. package/dist/cjs/components/InternalDashboard/DashboardFilter.d.ts.map +1 -1
  40. package/dist/cjs/components/InternalDashboard/DashboardLoadingComponent.d.ts.map +1 -1
  41. package/dist/cjs/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  42. package/dist/cjs/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.js +33 -14
  43. package/dist/cjs/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  44. package/dist/cjs/components/InternalDashboard/InternalDashboard.d.ts.map +1 -1
  45. package/dist/cjs/components/InternalDashboard/InternalDashboard.js +128 -35
  46. package/dist/cjs/components/OrgSelect.d.ts +0 -6
  47. package/dist/cjs/components/OrgSelect.d.ts.map +1 -1
  48. package/dist/cjs/components/OrgSelect.js +79 -47
  49. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts +8 -2
  50. package/dist/cjs/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  51. package/dist/cjs/components/QuillMultiSelectWithCombo.js +351 -167
  52. package/dist/cjs/components/QuillPopover.d.ts.map +1 -1
  53. package/dist/cjs/components/QuillPopover.js +4 -5
  54. package/dist/cjs/components/QuillSelect.js +9 -9
  55. package/dist/cjs/components/QuillSelectWithCombo.d.ts +4 -3
  56. package/dist/cjs/components/QuillSelectWithCombo.d.ts.map +1 -1
  57. package/dist/cjs/components/QuillSelectWithCombo.js +47 -21
  58. package/dist/cjs/components/QuillToolTipPortal.d.ts.map +1 -1
  59. package/dist/cjs/components/SqlTextEditor.d.ts.map +1 -1
  60. package/dist/cjs/components/SqlTextEditor.js +15 -2
  61. package/dist/cjs/components/Tenants/EditTenant.d.ts.map +1 -1
  62. package/dist/cjs/components/Tenants/EditTenant.js +51 -8
  63. package/dist/cjs/components/UiComponents.d.ts +16 -43
  64. package/dist/cjs/components/UiComponents.d.ts.map +1 -1
  65. package/dist/cjs/components/UiComponents.js +162 -33
  66. package/dist/cjs/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
  67. package/dist/cjs/forms/client_onboard/ConnectDatabase.js +163 -51
  68. package/dist/cjs/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
  69. package/dist/cjs/forms/client_onboard/ConnectSchema.js +36 -2
  70. package/dist/cjs/forms/client_onboard/CreateVirtualTables.d.ts +2 -1
  71. package/dist/cjs/forms/client_onboard/CreateVirtualTables.d.ts.map +1 -1
  72. package/dist/cjs/forms/client_onboard/CreateVirtualTables.js +60 -22
  73. package/dist/cjs/forms/client_onboard/__tests__/ConnectSchema.test.js +2 -1
  74. package/dist/cjs/forms/client_onboard/__tests__/CreateVirtualTables.test.js +2 -1
  75. package/dist/cjs/forms/virtual_tables/CreateEditVirtualTable.d.ts.map +1 -1
  76. package/dist/cjs/forms/virtual_tables/CreateEditVirtualTable.js +101 -15
  77. package/dist/cjs/hooks/useDatabaseSchema.d.ts.map +1 -1
  78. package/dist/cjs/hooks/useDatabaseSchema.js +18 -2
  79. package/dist/cjs/hooks/useLongLoading.d.ts +13 -0
  80. package/dist/cjs/hooks/useLongLoading.d.ts.map +1 -0
  81. package/dist/cjs/hooks/useLongLoading.js +67 -0
  82. package/dist/cjs/hooks/useOnClickOutside.d.ts.map +1 -1
  83. package/dist/cjs/hooks/useThrottle.d.ts.map +1 -1
  84. package/dist/cjs/icons/ArrowDownHeadIcon.d.ts.map +1 -1
  85. package/dist/cjs/icons/CheckCircleIcon.d.ts.map +1 -1
  86. package/dist/cjs/icons/ExclamationFilledIcon.d.ts.map +1 -1
  87. package/dist/cjs/icons/ExteriorLinkIcon.d.ts.map +1 -1
  88. package/dist/cjs/icons/QuestionMarkCircleIcon.d.ts.map +1 -1
  89. package/dist/cjs/modals/CodePreview.d.ts.map +1 -1
  90. package/dist/cjs/modals/CodePreview.js +7 -2
  91. package/dist/cjs/modals/CreateEnvironmentModal.d.ts +5 -0
  92. package/dist/cjs/modals/CreateEnvironmentModal.d.ts.map +1 -0
  93. package/dist/cjs/modals/CreateEnvironmentModal.js +21 -0
  94. package/dist/cjs/modals/EditEnvironmentModal.d.ts.map +1 -1
  95. package/dist/cjs/modals/EditEnvironmentModal.js +74 -17
  96. package/dist/cjs/modals/EditFiltersModal.d.ts.map +1 -1
  97. package/dist/cjs/modals/EditFiltersModal.js +19 -15
  98. package/dist/cjs/modals/NewDashboardModal.d.ts.map +1 -1
  99. package/dist/cjs/modals/NewDashboardModal.js +54 -28
  100. package/dist/cjs/modals/PromoteReportModal.d.ts.map +1 -1
  101. package/dist/cjs/modals/PromoteReportModal.js +15 -4
  102. package/dist/cjs/modals/PromoteViewModal.d.ts.map +1 -1
  103. package/dist/cjs/modals/PromoteViewModal.js +13 -2
  104. package/dist/cjs/primitives/ButtonPrimitive.d.ts.map +1 -1
  105. package/dist/cjs/primitives/ButtonPrimitive.js +10 -6
  106. package/dist/cjs/primitives/CheckboxPrimitive.d.ts.map +1 -1
  107. package/dist/cjs/primitives/CheckboxPrimitive.js +2 -0
  108. package/dist/cjs/primitives/HeaderPrimitive.d.ts.map +1 -1
  109. package/dist/cjs/primitives/HeaderPrimitive.js +11 -7
  110. package/dist/cjs/primitives/PopoverPrimitive.d.ts.map +1 -1
  111. package/dist/cjs/primitives/PopoverPrimitive.js +19 -6
  112. package/dist/cjs/primitives/SecondaryButtonPrimitive.d.ts.map +1 -1
  113. package/dist/cjs/primitives/SecondaryButtonPrimitive.js +5 -3
  114. package/dist/cjs/primitives/TogglePrimitive.d.ts.map +1 -1
  115. package/dist/cjs/public_components/ChartQueryBuilder.d.ts.map +1 -1
  116. package/dist/cjs/public_components/ChartQueryBuilder.js +17 -7
  117. package/dist/cjs/public_components/CreateEnvironment.d.ts.map +1 -1
  118. package/dist/cjs/public_components/CreateEnvironment.js +68 -30
  119. package/dist/cjs/public_components/DashboardManager.d.ts.map +1 -1
  120. package/dist/cjs/public_components/DashboardManager.js +71 -4
  121. package/dist/cjs/public_components/EnvSelectPopover.d.ts +2 -1
  122. package/dist/cjs/public_components/EnvSelectPopover.d.ts.map +1 -1
  123. package/dist/cjs/public_components/EnvSelectPopover.js +48 -8
  124. package/dist/cjs/public_components/VirtualTableManager.d.ts.map +1 -1
  125. package/dist/cjs/public_components/VirtualTableManager.js +124 -10
  126. package/dist/cjs/public_components/__tests__/CreateEnvironment.test.js +41 -2
  127. package/dist/cjs/utils/astProcessing.d.ts.map +1 -1
  128. package/dist/cjs/utils/columnProcessing.d.ts +1 -0
  129. package/dist/cjs/utils/columnProcessing.d.ts.map +1 -1
  130. package/dist/cjs/utils/columnProcessing.js +7 -1
  131. package/dist/cjs/utils/constants.d.ts +1 -0
  132. package/dist/cjs/utils/constants.d.ts.map +1 -1
  133. package/dist/cjs/utils/constants.js +5 -1
  134. package/dist/cjs/utils/dataEditor.d.ts.map +1 -1
  135. package/dist/cjs/utils/dataFetcher.d.ts.map +1 -1
  136. package/dist/cjs/utils/dataFetcher.js +0 -1
  137. package/dist/cjs/utils/databases.d.ts +6 -1
  138. package/dist/cjs/utils/databases.d.ts.map +1 -1
  139. package/dist/cjs/utils/databases.js +23 -5
  140. package/dist/cjs/utils/delay.d.ts.map +1 -1
  141. package/dist/cjs/utils/filter.d.ts +17 -21
  142. package/dist/cjs/utils/filter.d.ts.map +1 -1
  143. package/dist/cjs/utils/filter.js +6 -6
  144. package/dist/cjs/utils/report.d.ts +5 -5
  145. package/dist/cjs/utils/report.d.ts.map +1 -1
  146. package/dist/cjs/utils/schema.d.ts +6 -3
  147. package/dist/cjs/utils/schema.d.ts.map +1 -1
  148. package/dist/cjs/utils/schema.js +42 -3
  149. package/dist/cjs/utils/table.d.ts.map +1 -1
  150. package/dist/cjs/utils/tenants.d.ts.map +1 -1
  151. package/dist/cjs/utils/ui.d.ts.map +1 -1
  152. package/dist/esm/Admin.d.ts +14 -8
  153. package/dist/esm/Admin.d.ts.map +1 -1
  154. package/dist/esm/Admin.js +135 -26
  155. package/dist/esm/AdminProvider.d.ts +26 -5
  156. package/dist/esm/AdminProvider.d.ts.map +1 -1
  157. package/dist/esm/AdminProvider.js +177 -88
  158. package/dist/esm/api/ConnectionClient.d.ts +26 -12
  159. package/dist/esm/api/ConnectionClient.d.ts.map +1 -1
  160. package/dist/esm/api/ConnectionClient.js +196 -31
  161. package/dist/esm/assets/ArrowDownHeadIcon.d.ts.map +1 -1
  162. package/dist/esm/assets/XIcon.d.ts.map +1 -1
  163. package/dist/esm/components/CardSection.d.ts.map +1 -1
  164. package/dist/esm/components/CardSection.js +4 -2
  165. package/dist/esm/components/ClipboardButton.d.ts.map +1 -1
  166. package/dist/esm/components/DashboardSelectPopover.d.ts.map +1 -1
  167. package/dist/esm/components/DashboardSelectPopover.js +47 -8
  168. package/dist/esm/components/DatabaseSelector.d.ts +3 -1
  169. package/dist/esm/components/DatabaseSelector.d.ts.map +1 -1
  170. package/dist/esm/components/DatabaseSelector.js +3 -2
  171. package/dist/esm/components/DateRangePicker/SingleDatePicker.d.ts.map +1 -1
  172. package/dist/esm/components/DateRangePicker/SingleDatePicker.js +31 -7
  173. package/dist/esm/components/DateRangePicker/YearlessDateRangePicker.d.ts.map +1 -1
  174. package/dist/esm/components/DateRangePicker/YearlessDateRangePicker.js +31 -7
  175. package/dist/esm/components/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  176. package/dist/esm/components/DropDownMenuWithLabel.d.ts.map +1 -1
  177. package/dist/esm/components/DropDownMenuWithLabel.js +9 -2
  178. package/dist/esm/components/DynamicBanner.d.ts +3 -2
  179. package/dist/esm/components/DynamicBanner.d.ts.map +1 -1
  180. package/dist/esm/components/DynamicBanner.js +7 -2
  181. package/dist/esm/components/EmptyDashboardComponent/index.d.ts.map +1 -1
  182. package/dist/esm/components/EmptyDashboardComponent/index.js +3 -2
  183. package/dist/esm/components/EmptyVirtualTablesComponent.d.ts.map +1 -1
  184. package/dist/esm/components/EmptyVirtualTablesComponent.js +4 -1
  185. package/dist/esm/components/FormTooltip.d.ts.map +1 -1
  186. package/dist/esm/components/FormTooltip.js +4 -1
  187. package/dist/esm/components/InputLabel.d.ts.map +1 -1
  188. package/dist/esm/components/InputLabel.js +4 -2
  189. package/dist/esm/components/InternalDashboard/DashboardFilter.d.ts +1 -1
  190. package/dist/esm/components/InternalDashboard/DashboardFilter.d.ts.map +1 -1
  191. package/dist/esm/components/InternalDashboard/DashboardFilter.js +1 -1
  192. package/dist/esm/components/InternalDashboard/DashboardLoadingComponent.d.ts.map +1 -1
  193. package/dist/esm/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.d.ts.map +1 -1
  194. package/dist/esm/components/InternalDashboard/DateRangePicker/QuillDateRangePicker.js +33 -11
  195. package/dist/esm/components/InternalDashboard/DateRangePicker/dateRangePickerUtils.d.ts.map +1 -1
  196. package/dist/esm/components/InternalDashboard/InternalDashboard.d.ts.map +1 -1
  197. package/dist/esm/components/InternalDashboard/InternalDashboard.js +129 -36
  198. package/dist/esm/components/OrgSelect.d.ts +0 -6
  199. package/dist/esm/components/OrgSelect.d.ts.map +1 -1
  200. package/dist/esm/components/OrgSelect.js +79 -45
  201. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts +8 -2
  202. package/dist/esm/components/QuillMultiSelectWithCombo.d.ts.map +1 -1
  203. package/dist/esm/components/QuillMultiSelectWithCombo.js +351 -167
  204. package/dist/esm/components/QuillPopover.d.ts.map +1 -1
  205. package/dist/esm/components/QuillPopover.js +4 -5
  206. package/dist/esm/components/QuillSelect.js +9 -9
  207. package/dist/esm/components/QuillSelectWithCombo.d.ts +4 -3
  208. package/dist/esm/components/QuillSelectWithCombo.d.ts.map +1 -1
  209. package/dist/esm/components/QuillSelectWithCombo.js +47 -21
  210. package/dist/esm/components/QuillToolTipPortal.d.ts.map +1 -1
  211. package/dist/esm/components/SqlTextEditor.d.ts.map +1 -1
  212. package/dist/esm/components/SqlTextEditor.js +15 -2
  213. package/dist/esm/components/Tenants/EditTenant.d.ts.map +1 -1
  214. package/dist/esm/components/Tenants/EditTenant.js +51 -8
  215. package/dist/esm/components/UiComponents.d.ts +16 -43
  216. package/dist/esm/components/UiComponents.d.ts.map +1 -1
  217. package/dist/esm/components/UiComponents.js +127 -29
  218. package/dist/esm/forms/client_onboard/ConnectDatabase.d.ts.map +1 -1
  219. package/dist/esm/forms/client_onboard/ConnectDatabase.js +163 -51
  220. package/dist/esm/forms/client_onboard/ConnectSchema.d.ts.map +1 -1
  221. package/dist/esm/forms/client_onboard/ConnectSchema.js +36 -2
  222. package/dist/esm/forms/client_onboard/CreateVirtualTables.d.ts +2 -1
  223. package/dist/esm/forms/client_onboard/CreateVirtualTables.d.ts.map +1 -1
  224. package/dist/esm/forms/client_onboard/CreateVirtualTables.js +61 -23
  225. package/dist/esm/forms/client_onboard/__tests__/ConnectSchema.test.js +2 -1
  226. package/dist/esm/forms/client_onboard/__tests__/CreateVirtualTables.test.js +2 -1
  227. package/dist/esm/forms/virtual_tables/CreateEditVirtualTable.d.ts.map +1 -1
  228. package/dist/esm/forms/virtual_tables/CreateEditVirtualTable.js +103 -17
  229. package/dist/esm/hooks/useDatabaseSchema.d.ts.map +1 -1
  230. package/dist/esm/hooks/useDatabaseSchema.js +19 -3
  231. package/dist/esm/hooks/useLongLoading.d.ts +13 -0
  232. package/dist/esm/hooks/useLongLoading.d.ts.map +1 -0
  233. package/dist/esm/hooks/useLongLoading.js +64 -0
  234. package/dist/esm/hooks/useOnClickOutside.d.ts.map +1 -1
  235. package/dist/esm/hooks/useThrottle.d.ts.map +1 -1
  236. package/dist/esm/icons/ArrowDownHeadIcon.d.ts.map +1 -1
  237. package/dist/esm/icons/CheckCircleIcon.d.ts.map +1 -1
  238. package/dist/esm/icons/ExclamationFilledIcon.d.ts.map +1 -1
  239. package/dist/esm/icons/ExteriorLinkIcon.d.ts.map +1 -1
  240. package/dist/esm/icons/QuestionMarkCircleIcon.d.ts.map +1 -1
  241. package/dist/esm/modals/CodePreview.d.ts.map +1 -1
  242. package/dist/esm/modals/CodePreview.js +7 -2
  243. package/dist/esm/modals/CreateEnvironmentModal.d.ts +5 -0
  244. package/dist/esm/modals/CreateEnvironmentModal.d.ts.map +1 -0
  245. package/dist/esm/modals/CreateEnvironmentModal.js +15 -0
  246. package/dist/esm/modals/EditEnvironmentModal.d.ts.map +1 -1
  247. package/dist/esm/modals/EditEnvironmentModal.js +74 -17
  248. package/dist/esm/modals/EditFiltersModal.d.ts.map +1 -1
  249. package/dist/esm/modals/EditFiltersModal.js +21 -17
  250. package/dist/esm/modals/NewDashboardModal.d.ts.map +1 -1
  251. package/dist/esm/modals/NewDashboardModal.js +55 -29
  252. package/dist/esm/modals/PromoteReportModal.d.ts.map +1 -1
  253. package/dist/esm/modals/PromoteReportModal.js +15 -4
  254. package/dist/esm/modals/PromoteViewModal.d.ts.map +1 -1
  255. package/dist/esm/modals/PromoteViewModal.js +13 -2
  256. package/dist/esm/primitives/ButtonPrimitive.d.ts.map +1 -1
  257. package/dist/esm/primitives/ButtonPrimitive.js +10 -6
  258. package/dist/esm/primitives/CheckboxPrimitive.d.ts.map +1 -1
  259. package/dist/esm/primitives/CheckboxPrimitive.js +2 -0
  260. package/dist/esm/primitives/HeaderPrimitive.d.ts.map +1 -1
  261. package/dist/esm/primitives/HeaderPrimitive.js +11 -7
  262. package/dist/esm/primitives/PopoverPrimitive.d.ts.map +1 -1
  263. package/dist/esm/primitives/PopoverPrimitive.js +19 -6
  264. package/dist/esm/primitives/SecondaryButtonPrimitive.d.ts.map +1 -1
  265. package/dist/esm/primitives/SecondaryButtonPrimitive.js +5 -3
  266. package/dist/esm/primitives/TogglePrimitive.d.ts.map +1 -1
  267. package/dist/esm/public_components/ChartQueryBuilder.d.ts.map +1 -1
  268. package/dist/esm/public_components/ChartQueryBuilder.js +18 -8
  269. package/dist/esm/public_components/CreateEnvironment.d.ts.map +1 -1
  270. package/dist/esm/public_components/CreateEnvironment.js +68 -30
  271. package/dist/esm/public_components/DashboardManager.d.ts.map +1 -1
  272. package/dist/esm/public_components/DashboardManager.js +72 -5
  273. package/dist/esm/public_components/EnvSelectPopover.d.ts +2 -1
  274. package/dist/esm/public_components/EnvSelectPopover.d.ts.map +1 -1
  275. package/dist/esm/public_components/EnvSelectPopover.js +49 -9
  276. package/dist/esm/public_components/VirtualTableManager.d.ts.map +1 -1
  277. package/dist/esm/public_components/VirtualTableManager.js +125 -11
  278. package/dist/esm/public_components/__tests__/CreateEnvironment.test.js +41 -2
  279. package/dist/esm/utils/astProcessing.d.ts.map +1 -1
  280. package/dist/esm/utils/columnProcessing.d.ts +1 -0
  281. package/dist/esm/utils/columnProcessing.d.ts.map +1 -1
  282. package/dist/esm/utils/columnProcessing.js +7 -2
  283. package/dist/esm/utils/constants.d.ts +1 -0
  284. package/dist/esm/utils/constants.d.ts.map +1 -1
  285. package/dist/esm/utils/constants.js +4 -0
  286. package/dist/esm/utils/dataEditor.d.ts.map +1 -1
  287. package/dist/esm/utils/dataFetcher.d.ts.map +1 -1
  288. package/dist/esm/utils/dataFetcher.js +0 -1
  289. package/dist/esm/utils/databases.d.ts +6 -1
  290. package/dist/esm/utils/databases.d.ts.map +1 -1
  291. package/dist/esm/utils/databases.js +23 -5
  292. package/dist/esm/utils/delay.d.ts.map +1 -1
  293. package/dist/esm/utils/filter.d.ts +17 -21
  294. package/dist/esm/utils/filter.d.ts.map +1 -1
  295. package/dist/esm/utils/filter.js +5 -5
  296. package/dist/esm/utils/report.d.ts +5 -5
  297. package/dist/esm/utils/report.d.ts.map +1 -1
  298. package/dist/esm/utils/schema.d.ts +6 -3
  299. package/dist/esm/utils/schema.d.ts.map +1 -1
  300. package/dist/esm/utils/schema.js +42 -3
  301. package/dist/esm/utils/table.d.ts.map +1 -1
  302. package/dist/esm/utils/tenants.d.ts.map +1 -1
  303. package/dist/esm/utils/ui.d.ts.map +1 -1
  304. package/package.json +1 -1
@@ -4,10 +4,10 @@ import { getEventCoordinates } from '@dnd-kit/utilities';
4
4
  import { CSS } from '@dnd-kit/utilities';
5
5
  import { DndContext, closestCorners, KeyboardSensor, PointerSensor, useSensor, useSensors, TouchSensor, MeasuringStrategy, pointerWithin, rectIntersection, DragOverlay, useDroppable, closestCenter, } from '@dnd-kit/core';
6
6
  import { useCallback, useEffect, useMemo, useRef, useState, memo, } from 'react';
7
- import { Chart, useDashboard, useAllReports, } from '@quillsql/react';
7
+ import { Chart, useDashboardInternal, useAllReports, } from '@quillsql/react';
8
8
  import equal from 'fast-deep-equal';
9
9
  import { useAdmin } from '../../AdminProvider';
10
- import { convertCustomFilter, DashboardFilterType, } from '../../utils/filter';
10
+ import { convertCustomFilter, InternalDashboardFilterType as DashboardFilterType, } from '../../utils/filter';
11
11
  import EmptyDashboardComponent from '../EmptyDashboardComponent';
12
12
  import { DashboardLoadingComponent } from './DashboardLoadingComponent';
13
13
  import { QuillErrorMessageComponent } from '../UiComponents';
@@ -56,7 +56,7 @@ onChangeLoading, filters,
56
56
  // onClickChartElement,
57
57
  // dateBucket,
58
58
  containerStyle, parentLoading, onManageDashboard, }) => {
59
- const { state, clientLoading: isClientLoading } = useAdmin();
59
+ const { state, clientLoading: isClientLoading, eventTracking } = useAdmin();
60
60
  const tenants = state.currentTenantIdentity;
61
61
  // const client = state.client;
62
62
  // const [userFilters, setUserFilters] = useState<{
@@ -70,7 +70,7 @@ containerStyle, parentLoading, onManageDashboard, }) => {
70
70
  // useEffect(() => {
71
71
  // onUserFiltersUpdated?.(Object.values(userFilters));
72
72
  // }, [userFilters]);
73
- const { isLoading, data, isDashboardFilterLoading, dashboardFilters: populatedDashboardFilters, reload, setSectionOrder, } = useDashboard(name, filters?.map((f) => convertCustomFilter(f)) ?? []);
73
+ const { isLoading, data, isDashboardFilterLoading, dashboardFilters: populatedDashboardFilters, reload, setSectionOrder, } = useDashboardInternal(name, filters?.map((f) => convertCustomFilter(f)) ?? []);
74
74
  const { allReportsById } = useAllReports();
75
75
  const [previewSectionOrder, setPreviewSectionOrder] = useState({});
76
76
  const [isEditingNewSection, setIsEditingNewSection] = useState(false);
@@ -262,7 +262,11 @@ containerStyle, parentLoading, onManageDashboard, }) => {
262
262
  // A filter value can either be a string, an array of strings for a multiselect, or a date range (that could have a comparison range)
263
263
  const [filterValues, setFilterValues] = useState({});
264
264
  const prevNameRef = useRef(name);
265
- const prevTenantsRef = useRef(tenants);
265
+ // const prevTenantsRef = useRef<
266
+ // | { tenantIds: (string | number)[]; tenantField: string }[]
267
+ // | (string | number)[]
268
+ // | undefined
269
+ // >(tenants);
266
270
  // const prevFlagsRef = useRef<string[] | undefined>(flags);
267
271
  // const prevClientRef = useRef<string>(client?.publicKey ?? '');
268
272
  // const addFilterPopoverButtonRef = useRef<HTMLDivElement>(null);
@@ -273,6 +277,7 @@ containerStyle, parentLoading, onManageDashboard, }) => {
273
277
  }
274
278
  // const pendingReloadRef = useRef(false);
275
279
  const isInitialLoadOfDashboardRef = useRef(false);
280
+ const [initialLoad, setInitialLoad] = useState(true);
276
281
  // const referencedTables = useMemo(() => {
277
282
  // const sections = data?.sections || {};
278
283
  // // find intersection of all referenced tables
@@ -286,8 +291,12 @@ containerStyle, parentLoading, onManageDashboard, }) => {
286
291
  useEffect(() => {
287
292
  if (prevNameRef.current === name &&
288
293
  Object.values(data?.sections ?? {}).flat().length) {
294
+ setInitialLoad(false);
289
295
  return;
290
296
  }
297
+ else {
298
+ setInitialLoad(true);
299
+ }
291
300
  prevNameRef.current = name;
292
301
  if (isClientLoading || parentLoading || tenants === undefined) {
293
302
  // Reload the dashboard when the client is loaded
@@ -297,36 +306,34 @@ containerStyle, parentLoading, onManageDashboard, }) => {
297
306
  if (isInitialLoadOfDashboardRef.current)
298
307
  return;
299
308
  isInitialLoadOfDashboardRef.current = true;
300
- reload(name, true, undefined, populatedDashboardFilters?.length
301
- ? { filters: populatedDashboardFilters, refetchReports: true }
302
- : undefined).then(() => {
309
+ reload(name, true).then(() => {
303
310
  isInitialLoadOfDashboardRef.current = false;
304
- prevTenantsRef.current = tenants;
305
- // prevFlagsRef.current = flags;
306
- });
307
- }, [name, isClientLoading, parentLoading, tenants]);
308
- const tenantMounted = useRef(false);
309
- useEffect(() => {
310
- if (!tenantMounted.current) {
311
- tenantMounted.current = true;
312
- return;
313
- }
314
- const tenantsChanged = !equal(prevTenantsRef.current, tenants);
315
- // || equal(prevFlagsRef.current, flags);
316
- if (isClientLoading || tenants === undefined || !tenantsChanged) {
317
- // Reload the dashboard when the client is loaded
318
- // pendingReloadRef.current = true;
319
- return;
320
- }
321
- if (isInitialLoadOfDashboardRef.current)
322
- return;
323
- isInitialLoadOfDashboardRef.current = true;
324
- reload(name, tenantsChanged).then(() => {
325
- prevTenantsRef.current = tenants;
311
+ setInitialLoad(false);
312
+ // prevTenantsRef.current = tenants;
326
313
  // prevFlagsRef.current = flags;
327
- isInitialLoadOfDashboardRef.current = false;
328
314
  });
329
- }, [tenants]);
315
+ }, [name, isClientLoading, parentLoading]);
316
+ // const tenantMounted = useRef(false);
317
+ // useEffect(() => {
318
+ // if (!tenantMounted.current) {
319
+ // tenantMounted.current = true;
320
+ // return;
321
+ // }
322
+ // const tenantsChanged = !equal(prevTenantsRef.current, tenants);
323
+ // // || equal(prevFlagsRef.current, flags);
324
+ // if (isClientLoading || tenants === undefined || !tenantsChanged) {
325
+ // // Reload the dashboard when the client is loaded
326
+ // // pendingReloadRef.current = true;
327
+ // return;
328
+ // }
329
+ // if (isInitialLoadOfDashboardRef.current) return;
330
+ // isInitialLoadOfDashboardRef.current = true;
331
+ // reload(name, tenantsChanged).then(() => {
332
+ // prevTenantsRef.current = tenants;
333
+ // // prevFlagsRef.current = flags;
334
+ // isInitialLoadOfDashboardRef.current = false;
335
+ // });
336
+ // }, [tenants]);
330
337
  // TODO: this block does not appear necessary, uncomment if otherwise
331
338
  // useEffect(() => {
332
339
  // if (prevClientRef.current === client?.publicKey) {
@@ -438,6 +445,17 @@ containerStyle, parentLoading, onManageDashboard, }) => {
438
445
  const updateFilter = (filter, value, comparison) => {
439
446
  if (!populatedDashboardFilters)
440
447
  return;
448
+ eventTracking?.addBreadcrumb?.({
449
+ message: 'Updated filter in InternalDashboard',
450
+ data: {
451
+ filter: filter.label,
452
+ value: JSON.stringify(value),
453
+ dashboardName: name,
454
+ },
455
+ category: 'log',
456
+ level: 'info',
457
+ timestamp: Date.now(),
458
+ });
441
459
  let filterValue = {};
442
460
  if (filter.filterType === 'string') {
443
461
  if (filter.stringFilterType === 'multiselect') {
@@ -669,6 +687,18 @@ containerStyle, parentLoading, onManageDashboard, }) => {
669
687
  const newIndex = sortedSectionNames.indexOf(targetSection);
670
688
  if (oldIndex !== -1 && newIndex !== -1 && oldIndex !== newIndex) {
671
689
  const newSectionOrder = arrayMove(sortedSectionNames, oldIndex, newIndex);
690
+ eventTracking?.addBreadcrumb?.({
691
+ message: `Reordered Dashboard Section`,
692
+ category: 'interaction',
693
+ level: 'info',
694
+ timestamp: Date.now(),
695
+ data: {
696
+ movedSection: activeId,
697
+ oldIndex,
698
+ newIndex,
699
+ targetSection,
700
+ },
701
+ });
672
702
  handleSectionReorder(newSectionOrder);
673
703
  }
674
704
  }
@@ -740,6 +770,18 @@ containerStyle, parentLoading, onManageDashboard, }) => {
740
770
  }
741
771
  }
742
772
  newItems[sourceSection] = result;
773
+ eventTracking?.addBreadcrumb?.({
774
+ message: `Reordered Dashboard Report In Default Section`,
775
+ category: 'interaction',
776
+ level: 'info',
777
+ timestamp: Date.now(),
778
+ data: {
779
+ movedReport: reportId,
780
+ oldIndex: typeActiveIndex,
781
+ newIndex: typeOverIndex,
782
+ targetSection,
783
+ },
784
+ });
743
785
  handleReorder(newItems);
744
786
  }
745
787
  }
@@ -752,6 +794,18 @@ containerStyle, parentLoading, onManageDashboard, }) => {
752
794
  const overIndex = newItems[sourceSection].indexOf(overItem);
753
795
  if (activeIndex !== -1 && overIndex !== -1) {
754
796
  newItems[sourceSection] = arrayMove(newItems[sourceSection], activeIndex, overIndex);
797
+ eventTracking?.addBreadcrumb?.({
798
+ message: `Reordered Dashboard Report In Same Section`,
799
+ category: 'interaction',
800
+ level: 'info',
801
+ timestamp: Date.now(),
802
+ data: {
803
+ movedReport: reportId,
804
+ oldIndex: activeIndex,
805
+ newIndex: overIndex,
806
+ targetSection,
807
+ },
808
+ });
755
809
  handleReorder(newItems);
756
810
  }
757
811
  }
@@ -791,6 +845,18 @@ containerStyle, parentLoading, onManageDashboard, }) => {
791
845
  newItems[targetSection]?.push(report);
792
846
  }
793
847
  }
848
+ eventTracking?.addBreadcrumb?.({
849
+ message: `Reordered Dashboard Report In Different Section`,
850
+ category: 'interaction',
851
+ level: 'info',
852
+ timestamp: Date.now(),
853
+ data: {
854
+ movedReport: reportId,
855
+ newIndex: newItems[targetSection]?.indexOf(report),
856
+ targetSection,
857
+ sourceSection,
858
+ },
859
+ });
794
860
  handleReorder(newItems);
795
861
  }
796
862
  }, [data?.sections, sortedSectionNames, handleReorder, handleSectionReorder]);
@@ -971,13 +1037,21 @@ containerStyle, parentLoading, onManageDashboard, }) => {
971
1037
  }, [data?.sectionOrder, data?.sections, setSectionOrder]);
972
1038
  const existingSectionNames = useMemo(() => Object.keys(data?.sections || {}), [data?.sections]);
973
1039
  if (!isLoading &&
974
- (Object.keys(data?.sections ?? {}).length === 0 ||
975
- Object.values(data?.sections ?? {}).flat().length === 0)) {
1040
+ data?.sections &&
1041
+ (Object.keys(data.sections).length === 0 ||
1042
+ Object.values(data.sections).flat().length === 0)) {
976
1043
  return _jsx(EmptyDashboardComponent, {});
977
1044
  }
978
- if (hidden || isLoading || isClientLoading || parentLoading) {
1045
+ if (hidden ||
1046
+ isLoading ||
1047
+ isClientLoading ||
1048
+ parentLoading ||
1049
+ initialLoad ||
1050
+ !data?.sections) {
1051
+ // No sections means yet to fetch
979
1052
  return _jsx(DashboardLoadingComponent, { containerStyle: containerStyle });
980
1053
  }
1054
+ // TODO: Never reached
981
1055
  if (!data?.sections) {
982
1056
  return (_jsx(QuillErrorMessageComponent, { containerStyle: { height: 100 }, errorMessage: "Error loading dashboard" }));
983
1057
  }
@@ -1183,6 +1257,7 @@ containerStyle, parentLoading, onManageDashboard, }) => {
1183
1257
 
1184
1258
  .section-grid-container.empty::after {
1185
1259
  content: 'Drop reports here';
1260
+ font-family: ${state.theme?.fontFamily};
1186
1261
  color: #9CA3AF;
1187
1262
  font-size: 16px;
1188
1263
  opacity: 0.8;
@@ -1330,6 +1405,12 @@ containerStyle, parentLoading, onManageDashboard, }) => {
1330
1405
  marginBottom: 6,
1331
1406
  marginTop: -12,
1332
1407
  }, children: [_jsx(SecondaryButtonPrimitive, { onClick: onManageDashboard, label: "Manage Dashboard" }), _jsx(SecondaryButtonPrimitive, { onClick: () => {
1408
+ eventTracking?.addBreadcrumb?.({
1409
+ message: 'Clicked add section button in InternalDashboard',
1410
+ category: 'interaction',
1411
+ level: 'info',
1412
+ timestamp: Date.now(),
1413
+ });
1333
1414
  // Same as if the user clicked the Add section button at the bottom
1334
1415
  setIsEditingNewSection(true);
1335
1416
  // Scroll to the bottom of the page
@@ -1437,7 +1518,7 @@ containerStyle, parentLoading, onManageDashboard, }) => {
1437
1518
  alignItems: 'top',
1438
1519
  borderRadius: '10px',
1439
1520
  border: '1px solid #E7E7E7',
1440
- background: 'white',
1521
+ background: state.theme.backgroundColor,
1441
1522
  height: activeItem.chartType === 'metric'
1442
1523
  ? '150px'
1443
1524
  : activeItem.chartType === 'table'
@@ -1458,6 +1539,8 @@ containerStyle, parentLoading, onManageDashboard, }) => {
1458
1539
  marginBottom: 'auto',
1459
1540
  }, children: _jsx("h1", { style: {
1460
1541
  fontSize: 18,
1542
+ fontFamily: state.theme?.fontFamily,
1543
+ color: state.theme?.primaryTextColor,
1461
1544
  fontWeight: '500',
1462
1545
  margin: 0,
1463
1546
  textOverflow: 'ellipsis',
@@ -1477,6 +1560,7 @@ const DeleteButton = ({ onClick }) => {
1477
1560
  };
1478
1561
  const SortableSection = ({ id, sectionName, sectionIndex, metrics, charts, tables, data, previewSectionOrder, onClickReport, onSectionNameUpdate, onSectionDelete, activeId, overId, draggedIndex, isHighlighted, isDraggingAnySection, }) => {
1479
1562
  const { attributes, listeners, setNodeRef: setSortableNodeRef, isDragging, } = useSortable({ id, animateLayoutChanges: () => false });
1563
+ const { state: { theme }, } = useAdmin();
1480
1564
  const [isEditing, setIsEditing] = useState(false);
1481
1565
  const [editedName, setEditedName] = useState(sectionName);
1482
1566
  const [inputWidth, setInputWidth] = useState('auto');
@@ -1648,6 +1732,8 @@ const SortableSection = ({ id, sectionName, sectionIndex, metrics, charts, table
1648
1732
  } }), _jsxs("div", { style: { display: 'flex', flexDirection: 'column', gap: 20 }, children: [_jsxs("div", { className: "section-header", style: { marginTop: sectionIndex > 0 ? 20 : 0 }, children: [sectionName ? (isEditing ? (_jsx("input", { ref: inputRef, className: "section-name-input", value: editedName, onChange: handleTextChange, onKeyDown: handleKeyDown, onBlur: handleSave, style: {
1649
1733
  fontSize: 22,
1650
1734
  fontWeight: 'bold',
1735
+ color: theme.primaryTextColor,
1736
+ fontFamily: theme.fontFamily,
1651
1737
  width: inputWidth,
1652
1738
  minWidth: '20px',
1653
1739
  textAlign: 'left',
@@ -1656,6 +1742,8 @@ const SortableSection = ({ id, sectionName, sectionIndex, metrics, charts, table
1656
1742
  margin: 0,
1657
1743
  padding: 0,
1658
1744
  } })) : (_jsx("h1", { className: isDefaultSection ? '' : 'section-name-display', onClick: isDefaultSection ? undefined : handleStartEditing, ref: h1Ref, style: {
1745
+ color: theme?.primaryTextColor,
1746
+ fontFamily: theme?.fontFamily,
1659
1747
  fontSize: 22,
1660
1748
  fontWeight: 'bold',
1661
1749
  textAlign: 'left',
@@ -1727,6 +1815,7 @@ const SortableSection = ({ id, sectionName, sectionIndex, metrics, charts, table
1727
1815
  } })] }));
1728
1816
  };
1729
1817
  const SortableItem = ({ id, section, chartType, value, onClickReport, }) => {
1818
+ const { state: { theme }, } = useAdmin();
1730
1819
  const compoundId = `${section}::${id}`;
1731
1820
  const { attributes, listeners, setNodeRef, transform, isDragging } = useSortable({
1732
1821
  id: compoundId,
@@ -1779,6 +1868,8 @@ const SortableItem = ({ id, section, chartType, value, onClickReport, }) => {
1779
1868
  fontSize: 18,
1780
1869
  fontWeight: '500',
1781
1870
  flexGrow: 1,
1871
+ color: theme?.primaryTextColor,
1872
+ fontFamily: theme?.fontFamily,
1782
1873
  }, children: value }), _jsx("div", { className: "quill-report-edit-buttons", style: {
1783
1874
  display: 'flex',
1784
1875
  flexDirection: 'column',
@@ -1840,6 +1931,7 @@ function HandleButton(props) {
1840
1931
  } })] })] }));
1841
1932
  }
1842
1933
  const NewSectionButton = ({ onAddSection, existingSections, isEditing, setIsEditing, }) => {
1934
+ const { state: { theme }, } = useAdmin();
1843
1935
  const [sectionName, setSectionName] = useState('');
1844
1936
  const [error, setError] = useState('');
1845
1937
  const inputRef = useRef(null);
@@ -1905,6 +1997,7 @@ const NewSectionButton = ({ onAddSection, existingSections, isEditing, setIsEdit
1905
1997
  marginTop: '8px',
1906
1998
  fontSize: '16px',
1907
1999
  fontWeight: 300,
2000
+ fontFamily: theme?.fontFamily,
1908
2001
  color: '#9CA0A7',
1909
2002
  }, children: "New section" })] }));
1910
2003
  }
@@ -11,12 +11,6 @@ interface PopoverComponentProps {
11
11
  setIsOpen: (isOpen: boolean) => void;
12
12
  }
13
13
  export declare function Popover({ onClose, parentRef, children, style, onClick, label, showTrigger, isOpen, setIsOpen, }: PopoverComponentProps): import("react/jsx-runtime").JSX.Element;
14
- export declare const ListboxTextInput: ({ value, onChange, placeholder, id, }: {
15
- value: string;
16
- onChange: (e: string) => void;
17
- placeholder: string;
18
- id: string;
19
- }) => import("react/jsx-runtime").JSX.Element;
20
14
  export default function OrgSelect({ isLoading }: {
21
15
  isLoading: boolean;
22
16
  }): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"OrgSelect.d.ts","sourceRoot":"","sources":["../../../src/components/OrgSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AASpE,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACtC;AAED,wBAAgB,OAAO,CAAC,EACtB,OAAO,EACP,SAAS,EACT,QAAQ,EACR,KAAU,EACV,OAAO,EACP,KAAK,EACL,WAAkB,EAClB,MAAM,EACN,SAAS,GACV,EAAE,qBAAqB,2CA4HvB;AAED,eAAO,MAAM,gBAAgB,0CAK1B;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ,4CAyDA,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,2CAsJtE;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,aAAa,GACd,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,2CAwEA"}
1
+ {"version":3,"file":"OrgSelect.d.ts","sourceRoot":"","sources":["../../../src/components/OrgSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA+C,MAAM,OAAO,CAAC;AAUpE,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,GAAG,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACtC;AAED,wBAAgB,OAAO,CAAC,EACtB,OAAO,EACP,SAAS,EACT,QAAQ,EACR,KAAU,EACV,OAAO,EACP,KAAK,EACL,WAAkB,EAClB,MAAM,EACN,SAAS,GACV,EAAE,qBAAqB,2CAsIvB;AAED,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE;IAAE,SAAS,EAAE,OAAO,CAAA;CAAE,2CAmOtE;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,aAAa,GACd,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC;IAC7C,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,2CA8EA"}
@@ -7,9 +7,11 @@ import { QuillSelectComponentWithCombo } from './QuillSelectWithCombo';
7
7
  import { QuillMultiSelectComponentWithCombo } from './QuillMultiSelectWithCombo';
8
8
  import { useDashboardManager } from '../hooks/useDashboardManager';
9
9
  import GlobeIcon from '../icons/GlobeIcon';
10
+ import { useAdmin } from '../AdminProvider';
10
11
  export function Popover({ onClose, parentRef, children, style = {}, onClick, label, showTrigger = true, isOpen, setIsOpen, }) {
11
12
  const modalRef = useRef(null);
12
13
  const [maxHeight, setMaxHeight] = useState('40vh');
14
+ const { state: { theme }, } = useAdmin();
13
15
  useOnClickOutside(modalRef, (e) => {
14
16
  // Exclude click on trigger button (e.g. Dropdown Button) from outside click handler
15
17
  const isTriggerElem = parentRef
@@ -43,7 +45,7 @@ export function Popover({ onClose, parentRef, children, style = {}, onClick, lab
43
45
  };
44
46
  return (_jsxs(_Fragment, { children: [showTrigger && (_jsxs("button", {
45
47
  // onMouseEnter={() => setIsOpen(true)}
46
- onClick: (e) => {
48
+ className: "quill-select-button", onClick: (e) => {
47
49
  setIsOpen(!isOpen);
48
50
  if (onClick) {
49
51
  onClick(e);
@@ -59,31 +61,36 @@ export function Popover({ onClose, parentRef, children, style = {}, onClick, lab
59
61
  textOverflow: 'ellipsis',
60
62
  borderRadius: 6,
61
63
  WebkitAppearance: 'none',
62
- borderTop: '1px solid #e7e7e7',
63
- borderLeft: '1px solid #e7e7e7',
64
- borderRight: '1px solid #e7e7e7',
65
- borderBottom: '1px solid #e7e7e7',
64
+ borderTop: `1px solid ${theme.borderColor}`,
65
+ borderLeft: `1px solid ${theme.borderColor}`,
66
+ borderRight: `1px solid ${theme.borderColor}`,
67
+ borderBottom: `1px solid ${theme.borderColor}`,
66
68
  paddingLeft: 12,
67
69
  paddingRight: 12,
68
70
  height: 40,
69
- background: 'white',
70
- color: '#384151',
71
+ fontFamily: theme.fontFamily,
71
72
  fontWeight: 500,
72
73
  fontSize: 14,
73
74
  position: 'relative',
74
- }, children: [label, _jsx(ArrowDownHeadIcon, { style: {
75
+ }, children: [_jsx("style", { children: ` .quill-select-button { background: ${theme?.backgroundColor}; color: ${theme?.primaryTextColor}; }
76
+ .quill-select-button:hover { background: ${theme?.hoverBackgroundColor}; color: ${theme?.hoverTextColor}; }
77
+ .quill-select-button:disabled {
78
+ cursor: not-allowed;
79
+ opacity: 0.5;
80
+ }
81
+ ` }), label, _jsx(ArrowDownHeadIcon, { style: {
75
82
  height: '20px',
76
83
  width: '20px',
77
84
  flex: 'none',
78
85
  position: 'absolute',
79
86
  right: 8,
80
87
  top: 8,
81
- color: '#6C727F',
88
+ color: theme.primaryTextColor,
82
89
  }, "aria-hidden": "true" })] })), _jsx("div", { id: "quill-popover-modal", ref: modalRef, style: { position: 'relative', display: isOpen ? 'block' : 'none' }, children: _jsx("div", { style: {
83
- background: 'white',
90
+ background: theme.backgroundColor,
84
91
  position: 'absolute',
85
92
  boxShadow: '0px 1px 12px 0px rgba(56, 65, 81, 0.1)',
86
- border: '1px solid #e7e7e7',
93
+ border: `1px solid ${theme.borderColor}`,
87
94
  boxSizing: 'content-box',
88
95
  zIndex: 1,
89
96
  top: showTrigger ? 8 : 0,
@@ -97,35 +104,10 @@ export function Popover({ onClose, parentRef, children, style = {}, onClick, lab
97
104
  ...style,
98
105
  }, children: children }) })] }));
99
106
  }
100
- export const ListboxTextInput = ({ value, onChange, placeholder, id, }) => {
101
- return (_jsxs("div", { style: {
102
- position: 'relative',
103
- display: 'flex',
104
- flexDirection: 'row',
105
- alignItems: 'center',
106
- marginTop: 2,
107
- }, children: [_jsx("style", { children: `
108
- .quill-text-input {
109
- background-color: white;
110
- height: 40px;
111
- width: 180px;
112
- z-index: 2;
113
- color: #384151;
114
- border-radius: 4px;
115
- text-align: left;
116
- padding-right: 12px;
117
- padding-top: 0px;
118
- padding-bottom: 0px;
119
- box-sizing: content-box;
120
- margin-left: 6px;
121
- }
122
- .quill-text-input:focus {
123
- outline: none;
124
- }` }), _jsx("div", { style: { width: 6 } }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 16 16", fill: "rgba(56, 65, 81, 0.7)", height: "16", width: "16", children: _jsx("path", { fillRule: "evenodd", d: "M9.965 11.026a5 5 0 1 1 1.06-1.06l2.755 2.754a.75.75 0 1 1-1.06 1.06l-2.755-2.754ZM10.5 7a3.5 3.5 0 1 1-7 0 3.5 3.5 0 0 1 7 0Z", clipRule: "evenodd" }) }), _jsx("input", { id: id, className: "quill-text-input", type: "text", value: value, onChange: (event) => onChange(event.target.value), placeholder: placeholder })] }));
125
- };
126
107
  export default function OrgSelect({ isLoading }) {
127
108
  const { dashboardTenants, dashboardOwnerTenant, selectedTenantType, selectedTenantValues, setSelectedTenantValues, selectedDashboardTenantIds, setSelectedTenantType, setSelectedDashboardTenantIds, dashboardTenantIdsLoading, } = useTenants();
128
109
  const { selectedDashboard } = useDashboardManager();
110
+ const { eventTracking } = useAdmin();
129
111
  const debounceIdTimeoutId = useRef(null);
130
112
  const debounceValueTimeoutId = useRef(null);
131
113
  const debouncedSetSelectedDashboardTenantIds = (value) => {
@@ -133,6 +115,15 @@ export default function OrgSelect({ isLoading }) {
133
115
  clearTimeout(debounceIdTimeoutId.current);
134
116
  }
135
117
  debounceIdTimeoutId.current = setTimeout(() => {
118
+ eventTracking?.addBreadcrumb?.({
119
+ message: 'Set tenant ids in OrgSelect',
120
+ data: {
121
+ tenantIds: value,
122
+ },
123
+ category: 'interaction',
124
+ level: 'info',
125
+ timestamp: Date.now(),
126
+ });
136
127
  setSelectedDashboardTenantIds(value);
137
128
  }, 500);
138
129
  };
@@ -141,7 +132,16 @@ export default function OrgSelect({ isLoading }) {
141
132
  clearTimeout(debounceValueTimeoutId.current);
142
133
  }
143
134
  debounceValueTimeoutId.current = setTimeout(() => {
144
- setSelectedTenantValues(value);
135
+ eventTracking?.addBreadcrumb?.({
136
+ message: 'Set tenant values in OrgSelect',
137
+ data: {
138
+ tenantValues: value,
139
+ },
140
+ category: 'interaction',
141
+ level: 'info',
142
+ timestamp: Date.now(),
143
+ });
144
+ setSelectedTenantValues(Array.isArray(value) ? value : [value]);
145
145
  }, 500);
146
146
  };
147
147
  const dashboardTenantOptions = useMemo(() => {
@@ -167,13 +167,43 @@ export default function OrgSelect({ isLoading }) {
167
167
  value: id.id,
168
168
  })) ?? []);
169
169
  }, [selectedTenantType]);
170
- return (_jsxs("div", { style: { display: 'flex', flexDirection: 'row', gap: 16 }, children: [dashboardTenantOptions?.length > 1 && (_jsx(QuillSelectComponentWithCombo, { label: 'Tenant Type', width: 230, value: selectedTenantType?.tenantField, options: dashboardTenantOptions, onChange: (e) => setSelectedTenantType(e.target.value), isLoading: isLoading, disabled: isLoading, hideEmptyOption: true, badge: ownerIsSelected ? 'Owner' : undefined })), _jsx(QuillMultiSelectComponentWithCombo, { label: selectedTenantType?.scope === 'database'
170
+ return (_jsxs("div", { style: {
171
+ display: 'flex',
172
+ flexDirection: 'row',
173
+ gap: 16,
174
+ fontWeight: 500,
175
+ }, children: [dashboardTenantOptions?.length > 1 && (_jsx(QuillSelectComponentWithCombo, { label: 'Tenant Type', width: 230, value: selectedTenantType?.tenantField, options: dashboardTenantOptions, onChange: (e) => setSelectedTenantType(e.target.value), isLoading: isLoading, disabled: isLoading, hideEmptyOption: true, badge: ownerIsSelected ? 'Owner' : undefined })), ownerIsSelected ? (_jsx(QuillSelectComponentWithCombo, { label: selectedTenantType?.scope === 'database'
176
+ ? 'Tags'
177
+ : (selectedTenantType?.name ?? 'Tenant'), width: 230, value: !tenantValueOptions.length
178
+ ? null
179
+ : selectedTenantValues
180
+ ? selectedTenantValues[0]
181
+ : null, options: tenantValueOptions, onChange: (e) => debouncedSetSelectedTenantValues(e.target.value),
182
+ // emptyLabel={
183
+ // selectedTenantType?.scope === 'database'
184
+ // ? 'No tags provided'
185
+ // : undefined
186
+ // }
187
+ disabled: isLoading, hideEmptyOption: true,
188
+ // allSelectedLabel={
189
+ // selectedTenantType?.scope === 'database' ? undefined : (
190
+ // <div style={{ display: 'flex', flexDirection: 'row', gap: 3 }}>
191
+ // <GlobeIcon
192
+ // style={{
193
+ // marginTop: 1.75,
194
+ // }}
195
+ // />
196
+ // <div>All {(selectedTenantType?.name ?? 'Tenant') + 's'}</div>
197
+ // </div>
198
+ // )
199
+ // }
200
+ isLoading: isLoading, displayValue: true })) : (_jsx(QuillMultiSelectComponentWithCombo, { label: selectedTenantType?.scope === 'database'
171
201
  ? 'Tags'
172
202
  : (selectedTenantType?.name ?? 'Tenant'), width: 230, value: !tenantValueOptions.length ? [] : (selectedTenantValues ?? []), options: tenantValueOptions, onChange: (e) => debouncedSetSelectedTenantValues(e.target.value), emptyLabel: selectedTenantType?.scope === 'database'
173
203
  ? 'No tags provided'
174
204
  : undefined, disabled: isLoading, allSelectedLabel: selectedTenantType?.scope === 'database' ? undefined : (_jsxs("div", { style: { display: 'flex', flexDirection: 'row', gap: 3 }, children: [_jsx(GlobeIcon, { style: {
175
205
  marginTop: 1.75,
176
- } }), _jsxs("div", { children: ["All ", (selectedTenantType?.name ?? 'Tenant') + 's'] })] })), isLoading: isLoading }, (selectedTenantType?.tenantField ?? 'Tenant') + 'options'), selectedTenantType &&
206
+ } }), _jsxs("div", { children: ["All ", (selectedTenantType?.name ?? 'Tenant') + 's'] })] })), isLoading: isLoading, enableSingleSelectOption: true, displayValue: true, enableSubmitButton: true, submitButtonText: 'Submit' }, (selectedTenantType?.tenantField ?? 'Tenant') + 'options')), selectedTenantType &&
177
207
  !ownerIsSelected &&
178
208
  dashboardOwnerTenant?.scope !== 'database' &&
179
209
  !!selectedTenantValues?.length && (_jsx(QuillMultiSelectComponentWithCombo, { label: dashboardOwnerTenant?.name ?? 'Viewing as', width: 230, value: isLoading ? [] : (selectedDashboardTenantIds ?? []), options: dashboardOwnerTenant?.tenantIds?.map((id) => ({
@@ -181,9 +211,10 @@ export default function OrgSelect({ isLoading }) {
181
211
  value: id.id,
182
212
  })) ?? [], onChange: (e) => debouncedSetSelectedDashboardTenantIds(e.target.value), isLoading: dashboardTenantIdsLoading || isLoading, disabled: isLoading, allSelectedLabel: selectedTenantType?.scope === 'database' ? undefined : (_jsxs("div", { style: { display: 'flex', flexDirection: 'row', gap: 3 }, children: [_jsx(GlobeIcon, { style: {
183
213
  marginTop: 1.75,
184
- } }), _jsx("div", { children: "All Tenants" })] })) }))] }));
214
+ } }), _jsx("div", { children: "All Tenants" })] })), enableSingleSelectOption: true, displayValue: true, enableSubmitButton: true, submitButtonText: 'Submit' }))] }));
185
215
  }
186
216
  export function ListboxRow({ item, isSelected, setSelected, hoverActions, allowUnselect, }) {
217
+ const { state: { theme }, } = useAdmin();
187
218
  return (_jsx("div", { className: 'quill-list-select' + (isSelected ? ' quill-list-selected' : ''), style: {
188
219
  paddingBottom: 6,
189
220
  cursor: isSelected && !allowUnselect ? 'default' : 'pointer',
@@ -192,7 +223,6 @@ export function ListboxRow({ item, isSelected, setSelected, hoverActions, allowU
192
223
  ? () => setSelected(item)
193
224
  : undefined, className: "quill-list-select-title", style: {
194
225
  height: 42,
195
- color: '#384151',
196
226
  width: 216,
197
227
  borderRadius: 6,
198
228
  textAlign: 'left',
@@ -209,13 +239,16 @@ export function ListboxRow({ item, isSelected, setSelected, hoverActions, allowU
209
239
  overflow: 'hidden',
210
240
  }, children: [_jsx("style", { children: `
211
241
  .quill-list-select > div {
212
- background-color: white;
242
+ background-color: ${theme?.backgroundColor};
243
+ color: ${theme?.primaryTextColor};
213
244
  }
214
245
  .quill-list-selected > div {
215
- background-color: rgba(56, 65, 81, 0.04);
246
+ background-color: ${theme?.hoverBackgroundColor};
247
+ color: ${theme?.hoverTextColor};
216
248
  }
217
249
  .quill-list-select:hover > div {
218
- background-color: rgba(56, 65, 81, 0.04);
250
+ background-color: ${theme?.hoverBackgroundColor};
251
+ color: ${theme?.hoverTextColor};
219
252
  }
220
253
  .quill-list-select-hover-actions {
221
254
  display: none;
@@ -229,5 +262,6 @@ export function ListboxRow({ item, isSelected, setSelected, hoverActions, allowU
229
262
  whiteSpace: 'nowrap',
230
263
  overflow: 'hidden',
231
264
  display: 'block',
265
+ fontFamily: theme.fontFamily,
232
266
  }, children: item }), _jsx("div", { className: isSelected ? '' : 'quill-list-select-hover-actions', children: hoverActions && hoverActions(item) })] }) }));
233
267
  }
@@ -17,14 +17,20 @@ export interface MultiSelectComponentProps {
17
17
  allSelectedLabel?: JSX.Element;
18
18
  noneSelectedLabel?: JSX.Element;
19
19
  mimicReactSelect?: boolean;
20
+ enableSingleSelectOption?: boolean;
21
+ displayValue?: boolean;
22
+ enableSubmitButton?: boolean;
23
+ submitButtonText?: string;
20
24
  }
21
25
  /**
22
26
  * A robust select component that implements the new minimal Select interface.
23
27
  */
24
- export declare function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, value, isLoading, disabled, emptyLabel, allSelectedLabel, noneSelectedLabel, mimicReactSelect, }: MultiSelectComponentProps): import("react/jsx-runtime").JSX.Element;
25
- export declare const ListboxTextInput: ({ value, onChange, placeholder, }: {
28
+ export declare function QuillMultiSelectComponentWithCombo({ options, width, onChange, label, value, isLoading, disabled, emptyLabel, allSelectedLabel, noneSelectedLabel, mimicReactSelect, enableSingleSelectOption, displayValue, enableSubmitButton, submitButtonText, }: MultiSelectComponentProps): import("react/jsx-runtime").JSX.Element;
29
+ export declare const ListboxTextInput: ({ value, onChange, placeholder, id, width, }: {
26
30
  value: string;
27
31
  onChange: (e: string) => void;
28
32
  placeholder: string;
33
+ width?: number;
34
+ id?: string;
29
35
  }) => import("react/jsx-runtime").JSX.Element;
30
36
  //# sourceMappingURL=QuillMultiSelectWithCombo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"QuillMultiSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelectWithCombo.tsx"],"names":[],"mappings":"AASA,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAClC,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE;YAAE,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;SAAE,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,EACjD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,EACT,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,GACjB,EAAE,yBAAyB,2CAumB3B;AAED,eAAO,MAAM,gBAAgB,sCAI1B;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;CACrB,4CAwDA,CAAC"}
1
+ {"version":3,"file":"QuillMultiSelectWithCombo.d.ts","sourceRoot":"","sources":["../../../src/components/QuillMultiSelectWithCombo.tsx"],"names":[],"mappings":"AASA,MAAM,WAAW,yBAAyB;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;IAClC,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QACvB,KAAK,EAAE,MAAM,CAAC;KACf,EAAE,CAAC;IACJ,QAAQ,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE;YAAE,KAAK,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;SAAE,CAAA;KAAE,KAAK,IAAI,CAAC;IAC7E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAC/B,iBAAiB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC;IAChC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAAC,EACjD,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,EACT,QAAQ,EACR,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,GACjB,EAAE,yBAAyB,2CAs1B3B;AAED,eAAO,MAAM,gBAAgB,GAAI,8CAM9B;IACD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,4CAkEA,CAAC"}