@solidxai/core-ui 0.1.12-beta.6 → 0.1.12-beta.8

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 (286) hide show
  1. package/dist/components/auth/AuthLayout.d.ts.map +1 -1
  2. package/dist/components/auth/AuthLayout.js +19 -17
  3. package/dist/components/auth/AuthLayout.js.map +1 -1
  4. package/dist/components/auth/AuthLayout.tsx +59 -34
  5. package/dist/components/common/BackendReconnectIndicator.d.ts +6 -0
  6. package/dist/components/common/BackendReconnectIndicator.d.ts.map +1 -0
  7. package/dist/components/common/BackendReconnectIndicator.js +25 -0
  8. package/dist/components/common/BackendReconnectIndicator.js.map +1 -0
  9. package/dist/components/common/BackendReconnectIndicator.tsx +45 -0
  10. package/dist/components/common/SettingsComponent.d.ts.map +1 -1
  11. package/dist/components/common/SettingsComponent.js +7 -3
  12. package/dist/components/common/SettingsComponent.js.map +1 -1
  13. package/dist/components/common/SettingsComponent.module.css +144 -12
  14. package/dist/components/common/SettingsComponent.tsx +22 -3
  15. package/dist/components/common/SolidAdmin.d.ts.map +1 -1
  16. package/dist/components/common/SolidAdmin.js +7 -2
  17. package/dist/components/common/SolidAdmin.js.map +1 -1
  18. package/dist/components/common/SolidAdmin.tsx +7 -2
  19. package/dist/components/common/SolidBreadcrumb.d.ts.map +1 -1
  20. package/dist/components/common/SolidBreadcrumb.js +1 -6
  21. package/dist/components/common/SolidBreadcrumb.js.map +1 -1
  22. package/dist/components/common/SolidBreadcrumb.tsx +1 -8
  23. package/dist/components/common/SolidMaterialSymbol.d.ts +10 -0
  24. package/dist/components/common/SolidMaterialSymbol.d.ts.map +1 -0
  25. package/dist/components/common/SolidMaterialSymbol.js +69 -0
  26. package/dist/components/common/SolidMaterialSymbol.js.map +1 -0
  27. package/dist/components/common/SolidMaterialSymbol.tsx +96 -0
  28. package/dist/components/common/SolidToastProvider.d.ts.map +1 -1
  29. package/dist/components/common/SolidToastProvider.js +14 -1
  30. package/dist/components/common/SolidToastProvider.js.map +1 -1
  31. package/dist/components/common/SolidToastProvider.tsx +19 -1
  32. package/dist/components/core/card/CardGrid.d.ts +1 -1
  33. package/dist/components/core/card/CardGrid.d.ts.map +1 -1
  34. package/dist/components/core/card/CardGrid.js +2 -2
  35. package/dist/components/core/card/CardGrid.js.map +1 -1
  36. package/dist/components/core/card/CardGrid.tsx +4 -0
  37. package/dist/components/core/card/CardItem.d.ts +2 -0
  38. package/dist/components/core/card/CardItem.d.ts.map +1 -1
  39. package/dist/components/core/card/CardItem.js +7 -2
  40. package/dist/components/core/card/CardItem.js.map +1 -1
  41. package/dist/components/core/card/CardItem.tsx +30 -8
  42. package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
  43. package/dist/components/core/card/SolidCardView.js +87 -21
  44. package/dist/components/core/card/SolidCardView.js.map +1 -1
  45. package/dist/components/core/card/SolidCardView.tsx +96 -40
  46. package/dist/components/core/card/SolidCardViewConfigure.d.ts +1 -1
  47. package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
  48. package/dist/components/core/card/SolidCardViewConfigure.js +9 -7
  49. package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
  50. package/dist/components/core/card/SolidCardViewConfigure.tsx +14 -1
  51. package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.module.css +3 -1
  52. package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
  53. package/dist/components/core/common/SolidGlobalSearchElement.js +4 -3
  54. package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
  55. package/dist/components/core/common/SolidGlobalSearchElement.tsx +15 -19
  56. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map +1 -1
  57. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +43 -16
  58. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
  59. package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +24 -2
  60. package/dist/components/core/form/SolidFormFooter.js +1 -1
  61. package/dist/components/core/form/SolidFormFooter.js.map +1 -1
  62. package/dist/components/core/form/SolidFormFooter.tsx +1 -1
  63. package/dist/components/core/form/SolidFormLayouts.js +1 -1
  64. package/dist/components/core/form/SolidFormLayouts.js.map +1 -1
  65. package/dist/components/core/form/SolidFormLayouts.tsx +2 -2
  66. package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
  67. package/dist/components/core/form/fields/SolidMediaMultipleField.js +120 -56
  68. package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
  69. package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +63 -50
  70. package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
  71. package/dist/components/core/form/fields/SolidMediaSingleField.js +115 -37
  72. package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
  73. package/dist/components/core/form/fields/SolidMediaSingleField.tsx +36 -35
  74. package/dist/components/core/form/fields/SolidRichTextField.d.ts.map +1 -1
  75. package/dist/components/core/form/fields/SolidRichTextField.js +67 -4
  76. package/dist/components/core/form/fields/SolidRichTextField.js.map +1 -1
  77. package/dist/components/core/form/fields/SolidRichTextField.tsx +89 -7
  78. package/dist/components/core/form/fields/mediaFieldUtils.d.ts +3 -0
  79. package/dist/components/core/form/fields/mediaFieldUtils.d.ts.map +1 -0
  80. package/dist/components/core/form/fields/mediaFieldUtils.js +30 -0
  81. package/dist/components/core/form/fields/mediaFieldUtils.js.map +1 -0
  82. package/dist/components/core/form/fields/mediaFieldUtils.ts +45 -0
  83. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.d.ts.map +1 -1
  84. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js +1 -1
  85. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.js.map +1 -1
  86. package/dist/components/core/form/fields/relations/RolesGroupedByModuleWidget.tsx +3 -1
  87. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
  88. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +22 -23
  89. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
  90. package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +13 -7
  91. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.d.ts.map +1 -1
  92. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js +16 -11
  93. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
  94. package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +32 -18
  95. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.d.ts.map +1 -1
  96. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.js +3 -1
  97. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.js.map +1 -1
  98. package/dist/components/core/form/fields/widgets/SolidIconViewWidget.tsx +11 -5
  99. package/dist/components/core/kanban/KanbanBoard.d.ts +1 -1
  100. package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
  101. package/dist/components/core/kanban/KanbanBoard.js +2 -2
  102. package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
  103. package/dist/components/core/kanban/KanbanBoard.tsx +3 -1
  104. package/dist/components/core/kanban/KanbanCard.d.ts +2 -0
  105. package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
  106. package/dist/components/core/kanban/KanbanCard.js +10 -5
  107. package/dist/components/core/kanban/KanbanCard.js.map +1 -1
  108. package/dist/components/core/kanban/KanbanCard.tsx +28 -12
  109. package/dist/components/core/kanban/KanbanColumn.d.ts +3 -1
  110. package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
  111. package/dist/components/core/kanban/KanbanColumn.js +2 -2
  112. package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
  113. package/dist/components/core/kanban/KanbanColumn.tsx +4 -2
  114. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  115. package/dist/components/core/kanban/SolidKanbanView.js +154 -25
  116. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  117. package/dist/components/core/kanban/SolidKanbanView.tsx +129 -16
  118. package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts +1 -1
  119. package/dist/components/core/kanban/SolidKanbanViewConfigure.d.ts.map +1 -1
  120. package/dist/components/core/kanban/SolidKanbanViewConfigure.js +13 -10
  121. package/dist/components/core/kanban/SolidKanbanViewConfigure.js.map +1 -1
  122. package/dist/components/core/kanban/SolidKanbanViewConfigure.tsx +18 -3
  123. package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
  124. package/dist/components/core/list/SolidDataTable.js +3 -2
  125. package/dist/components/core/list/SolidDataTable.js.map +1 -1
  126. package/dist/components/core/list/SolidDataTable.tsx +3 -2
  127. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  128. package/dist/components/core/list/SolidListView.js +16 -5
  129. package/dist/components/core/list/SolidListView.js.map +1 -1
  130. package/dist/components/core/list/SolidListView.tsx +20 -8
  131. package/dist/components/core/list/SolidListViewColumn.d.ts.map +1 -1
  132. package/dist/components/core/list/SolidListViewColumn.js +1 -0
  133. package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
  134. package/dist/components/core/list/SolidListViewColumn.tsx +1 -0
  135. package/dist/components/core/list/columns/SolidShortTextColumn.d.ts.map +1 -1
  136. package/dist/components/core/list/columns/SolidShortTextColumn.js +7 -2
  137. package/dist/components/core/list/columns/SolidShortTextColumn.js.map +1 -1
  138. package/dist/components/core/list/columns/SolidShortTextColumn.tsx +7 -2
  139. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.d.ts.map +1 -1
  140. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js +4 -1
  141. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js.map +1 -1
  142. package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.tsx +5 -2
  143. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
  144. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +2 -1
  145. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
  146. package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +2 -1
  147. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.d.ts.map +1 -1
  148. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js +4 -1
  149. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js.map +1 -1
  150. package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.tsx +5 -2
  151. package/dist/components/core/locales/SolidLocale.d.ts.map +1 -1
  152. package/dist/components/core/locales/SolidLocale.js +1 -1
  153. package/dist/components/core/locales/SolidLocale.js.map +1 -1
  154. package/dist/components/core/locales/SolidLocale.tsx +1 -0
  155. package/dist/components/core/model/CreateModel.css +26 -0
  156. package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
  157. package/dist/components/core/model/FieldMetaData.js +21 -3
  158. package/dist/components/core/model/FieldMetaData.js.map +1 -1
  159. package/dist/components/core/model/FieldMetaData.tsx +45 -4
  160. package/dist/components/core/model/FieldMetaDataForm.css +82 -0
  161. package/dist/components/core/model/FieldMetaDataForm.d.ts +1 -0
  162. package/dist/components/core/model/FieldMetaDataForm.d.ts.map +1 -1
  163. package/dist/components/core/model/FieldMetaDataForm.js +246 -235
  164. package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
  165. package/dist/components/core/model/FieldMetaDataForm.tsx +46 -34
  166. package/dist/components/core/model/FieldSelector.js +1 -1
  167. package/dist/components/core/model/FieldSelector.js.map +1 -1
  168. package/dist/components/core/model/FieldSelector.tsx +1 -1
  169. package/dist/components/core/model/ModelMetaData.js +1 -1
  170. package/dist/components/core/model/ModelMetaData.js.map +1 -1
  171. package/dist/components/core/model/ModelMetaData.tsx +1 -1
  172. package/dist/components/core/module/CreateModule.css +55 -2
  173. package/dist/components/core/module/CreateModule.d.ts.map +1 -1
  174. package/dist/components/core/module/CreateModule.js +2 -2
  175. package/dist/components/core/module/CreateModule.js.map +1 -1
  176. package/dist/components/core/module/CreateModule.tsx +3 -2
  177. package/dist/components/core/module/ModuleMetadataExplorer.css +27 -0
  178. package/dist/components/core/module/ModuleMetadataExplorer.d.ts.map +1 -1
  179. package/dist/components/core/module/ModuleMetadataExplorer.js +1 -1
  180. package/dist/components/core/module/ModuleMetadataExplorer.js.map +1 -1
  181. package/dist/components/core/module/ModuleMetadataExplorer.tsx +1 -0
  182. package/dist/components/core/tree/SolidTreeTable.d.ts +2 -1
  183. package/dist/components/core/tree/SolidTreeTable.d.ts.map +1 -1
  184. package/dist/components/core/tree/SolidTreeTable.js +2 -2
  185. package/dist/components/core/tree/SolidTreeTable.js.map +1 -1
  186. package/dist/components/core/tree/SolidTreeTable.tsx +3 -1
  187. package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
  188. package/dist/components/core/tree/SolidTreeView.js +44 -16
  189. package/dist/components/core/tree/SolidTreeView.js.map +1 -1
  190. package/dist/components/core/tree/SolidTreeView.tsx +55 -24
  191. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  192. package/dist/components/core/users/CreateUser.js +45 -32
  193. package/dist/components/core/users/CreateUser.js.map +1 -1
  194. package/dist/components/core/users/CreateUser.tsx +15 -4
  195. package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
  196. package/dist/components/layout/AdminHeaderActions.js +10 -9
  197. package/dist/components/layout/AdminHeaderActions.js.map +1 -1
  198. package/dist/components/layout/AdminHeaderActions.tsx +2 -0
  199. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  200. package/dist/components/layout/AppSidebar.js +2 -1
  201. package/dist/components/layout/AppSidebar.js.map +1 -1
  202. package/dist/components/layout/AppSidebar.tsx +12 -5
  203. package/dist/components/layout/SolidMenuItemIcon.d.ts +9 -0
  204. package/dist/components/layout/SolidMenuItemIcon.d.ts.map +1 -0
  205. package/dist/components/layout/SolidMenuItemIcon.js +20 -0
  206. package/dist/components/layout/SolidMenuItemIcon.js.map +1 -0
  207. package/dist/components/layout/SolidMenuItemIcon.tsx +45 -0
  208. package/dist/components/layout/navbar-two-menu.d.ts.map +1 -1
  209. package/dist/components/layout/navbar-two-menu.js +6 -7
  210. package/dist/components/layout/navbar-two-menu.js.map +1 -1
  211. package/dist/components/layout/navbar-two-menu.tsx +4 -12
  212. package/dist/components/shad-cn-ui/SolidCodeEditor.d.ts.map +1 -1
  213. package/dist/components/shad-cn-ui/SolidCodeEditor.js +30 -2
  214. package/dist/components/shad-cn-ui/SolidCodeEditor.js.map +1 -1
  215. package/dist/components/shad-cn-ui/SolidCodeEditor.tsx +38 -1
  216. package/dist/helpers/backendHealthMonitor.d.ts +39 -0
  217. package/dist/helpers/backendHealthMonitor.d.ts.map +1 -0
  218. package/dist/helpers/backendHealthMonitor.js +255 -0
  219. package/dist/helpers/backendHealthMonitor.js.map +1 -0
  220. package/dist/helpers/backendHealthMonitor.ts +177 -0
  221. package/dist/helpers/helpers.d.ts +1 -0
  222. package/dist/helpers/helpers.d.ts.map +1 -1
  223. package/dist/helpers/helpers.js +9 -0
  224. package/dist/helpers/helpers.js.map +1 -1
  225. package/dist/helpers/helpers.ts +11 -1
  226. package/dist/helpers/menuItemIcons.d.ts +34 -0
  227. package/dist/helpers/menuItemIcons.d.ts.map +1 -0
  228. package/dist/helpers/menuItemIcons.js +144 -0
  229. package/dist/helpers/menuItemIcons.js.map +1 -0
  230. package/dist/helpers/menuItemIcons.ts +191 -0
  231. package/dist/helpers/relationDisplay.d.ts +3 -0
  232. package/dist/helpers/relationDisplay.d.ts.map +1 -0
  233. package/dist/helpers/relationDisplay.js +92 -0
  234. package/dist/helpers/relationDisplay.js.map +1 -0
  235. package/dist/helpers/relationDisplay.ts +101 -0
  236. package/dist/helpers/settingsPayload.d.ts +1 -0
  237. package/dist/helpers/settingsPayload.d.ts.map +1 -1
  238. package/dist/helpers/settingsPayload.js.map +1 -1
  239. package/dist/helpers/settingsPayload.ts +1 -0
  240. package/dist/helpers/solidIcons.d.ts +2 -0
  241. package/dist/helpers/solidIcons.d.ts.map +1 -1
  242. package/dist/helpers/solidIcons.js +8 -0
  243. package/dist/helpers/solidIcons.js.map +1 -1
  244. package/dist/helpers/solidIcons.tsx +10 -1
  245. package/dist/helpers/waitForBackendAvailability.d.ts +1 -0
  246. package/dist/helpers/waitForBackendAvailability.d.ts.map +1 -1
  247. package/dist/helpers/waitForBackendAvailability.js +35 -22
  248. package/dist/helpers/waitForBackendAvailability.js.map +1 -1
  249. package/dist/helpers/waitForBackendAvailability.ts +18 -12
  250. package/dist/http/solidHttp.d.ts.map +1 -1
  251. package/dist/http/solidHttp.js +10 -4
  252. package/dist/http/solidHttp.js.map +1 -1
  253. package/dist/http/solidHttp.ts +9 -4
  254. package/dist/redux/api/datasourceIntrospectionApi.d.ts +4 -0
  255. package/dist/redux/api/datasourceIntrospectionApi.d.ts.map +1 -1
  256. package/dist/redux/api/datasourceIntrospectionApi.js.map +1 -1
  257. package/dist/redux/api/datasourceIntrospectionApi.ts +4 -0
  258. package/dist/redux/api/fetchBaseQuery.d.ts.map +1 -1
  259. package/dist/redux/api/fetchBaseQuery.js +9 -3
  260. package/dist/redux/api/fetchBaseQuery.js.map +1 -1
  261. package/dist/redux/api/fetchBaseQuery.tsx +9 -3
  262. package/dist/redux/store/StoreProvider.d.ts.map +1 -1
  263. package/dist/redux/store/StoreProvider.js +4 -3
  264. package/dist/redux/store/StoreProvider.js.map +1 -1
  265. package/dist/redux/store/StoreProvider.tsx +4 -3
  266. package/dist/redux/store/defaultStoreConfig.d.ts +5 -5
  267. package/dist/resources/globals.css +341 -49
  268. package/dist/resources/solid-custom.css +464 -11
  269. package/dist/resources/solid-responsive.css +31 -20
  270. package/dist/resources/solid-tailwind-generated.css +1 -1
  271. package/dist/routes/AppEventListener.d.ts.map +1 -1
  272. package/dist/routes/AppEventListener.js +23 -0
  273. package/dist/routes/AppEventListener.js.map +1 -1
  274. package/dist/routes/AppEventListener.tsx +29 -0
  275. package/dist/routes/pages/admin/core/DashboardPage.module.css +12 -0
  276. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +306 -3
  277. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts.map +1 -1
  278. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js +745 -393
  279. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js.map +1 -1
  280. package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.tsx +1074 -420
  281. package/dist/routes/pages/admin/core/DatasourcesPage.css +15 -0
  282. package/dist/routes/pages/admin/core/DatasourcesPage.d.ts.map +1 -1
  283. package/dist/routes/pages/admin/core/DatasourcesPage.js +7 -188
  284. package/dist/routes/pages/admin/core/DatasourcesPage.js.map +1 -1
  285. package/dist/routes/pages/admin/core/DatasourcesPage.tsx +3 -393
  286. package/package.json +1 -1
@@ -272,6 +272,21 @@
272
272
  background: color-mix(in srgb, var(--card) 96%, white 4%);
273
273
  }
274
274
 
275
+ .sdm-switch {
276
+ min-width: 44px;
277
+ appearance: none;
278
+ -webkit-appearance: none;
279
+ justify-content: flex-start;
280
+ box-sizing: border-box;
281
+ flex-shrink: 0;
282
+ vertical-align: middle;
283
+ }
284
+
285
+ .sdm-switch .solid-switch-thumb {
286
+ display: block;
287
+ flex: 0 0 18px;
288
+ }
289
+
275
290
  .sdm-switch-field strong {
276
291
  display: block;
277
292
  font-size: 13px;
@@ -1 +1 @@
1
- {"version":3,"file":"DatasourcesPage.d.ts","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/DatasourcesPage.tsx"],"names":[],"mappings":"AAyBA,OAAO,uBAAuB,CAAC;AAwG/B,wBAAgB,eAAe,4CA0Z9B"}
1
+ {"version":3,"file":"DatasourcesPage.d.ts","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/DatasourcesPage.tsx"],"names":[],"mappings":"AAMA,OAAO,uBAAuB,CAAC;AAgC/B,wBAAgB,eAAe,4CA+G9B"}
@@ -1,101 +1,13 @@
1
- var __assign = (this && this.__assign) || function () {
2
- __assign = Object.assign || function(t) {
3
- for (var s, i = 1, n = arguments.length; i < n; i++) {
4
- s = arguments[i];
5
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
- t[p] = s[p];
7
- }
8
- return t;
9
- };
10
- return __assign.apply(this, arguments);
11
- };
12
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
- return new (P || (P = Promise))(function (resolve, reject) {
15
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
- step((generator = generator.apply(thisArg, _arguments || [])).next());
19
- });
20
- };
21
- var __generator = (this && this.__generator) || function (thisArg, body) {
22
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
- function verb(n) { return function (v) { return step([n, v]); }; }
25
- function step(op) {
26
- if (f) throw new TypeError("Generator is already executing.");
27
- while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
- if (y = 0, t) op = [op[0] & 2, t.value];
30
- switch (op[0]) {
31
- case 0: case 1: t = op; break;
32
- case 4: _.label++; return { value: op[1], done: false };
33
- case 5: _.label++; y = op[1]; op = [0]; continue;
34
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
- default:
36
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
- if (t[2]) _.ops.pop();
41
- _.trys.pop(); continue;
42
- }
43
- op = body.call(thisArg, _);
44
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
- }
47
- };
48
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
49
- import { Database, Plus, RefreshCw } from "lucide-react";
50
- import { useEffect, useState } from "react";
51
- import { useDispatch } from "react-redux";
52
- import { showToast } from "../../../../redux/features/toastSlice";
53
- import { useCreateDatasourceMutation, useGetDatasourcesQuery, } from "../../../../redux/api/datasourceManagementApi";
54
- import { SolidButton, SolidDialog, SolidDialogBody, SolidDialogDescription, SolidDialogFooter, SolidDialogHeader, SolidDialogSeparator, SolidDialogTitle, SolidInput, SolidPanel, SolidSelect, SolidSpinner, SolidSwitch, } from "../../../../components/shad-cn-ui";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Database, RefreshCw } from "lucide-react";
3
+ import { useGetDatasourcesQuery } from "../../../../redux/api/datasourceManagementApi";
4
+ import { SolidButton, SolidSpinner, } from "../../../../components/shad-cn-ui";
55
5
  import "./DatasourcesPage.css";
56
6
  var providerOptions = [
57
7
  { label: "PostgreSQL", value: "postgres" },
58
8
  { label: "MySQL", value: "mysql" },
59
9
  { label: "MS SQL Server", value: "mssql" },
60
10
  ];
61
- var defaultFormState = {
62
- name: "",
63
- displayName: "",
64
- type: "postgres",
65
- host: "",
66
- port: 5432,
67
- database: "",
68
- username: "",
69
- password: "",
70
- synchronize: false,
71
- logging: false,
72
- ssl: false,
73
- sslRejectUnauthorized: true,
74
- poolMax: 20,
75
- connectionTimeoutMs: 60000,
76
- idleTimeoutMs: 30000,
77
- statementTimeoutMs: 60000,
78
- idleInTxTimeoutMs: 60000,
79
- retryAttempts: 0,
80
- retryDelayMs: 0,
81
- encrypt: false,
82
- trustServerCertificate: true,
83
- };
84
- function slugifyDatasourceName(value) {
85
- return value
86
- .toLowerCase()
87
- .trim()
88
- .replace(/[^a-z0-9]+/g, "-")
89
- .replace(/^-+|-+$/g, "")
90
- .slice(0, 48);
91
- }
92
- function getDefaultPort(type) {
93
- if (type === "mysql")
94
- return 3306;
95
- if (type === "mssql")
96
- return 1433;
97
- return 5432;
98
- }
99
11
  function providerLabel(type) {
100
12
  var _a;
101
13
  return ((_a = providerOptions.find(function (option) { return option.value === type; })) === null || _a === void 0 ? void 0 : _a.label) || type;
@@ -114,108 +26,15 @@ function providerGlyph(type) {
114
26
  return "MY";
115
27
  return "MS";
116
28
  }
117
- function readMutationError(error) {
118
- var _a;
119
- return (((_a = error === null || error === void 0 ? void 0 : error.data) === null || _a === void 0 ? void 0 : _a.message)
120
- || (error === null || error === void 0 ? void 0 : error.error)
121
- || (error === null || error === void 0 ? void 0 : error.message)
122
- || "Unable to save the datasource.");
123
- }
124
- function sanitizePayload(formState) {
125
- var payload = __assign(__assign({}, formState), { name: slugifyDatasourceName(formState.name) });
126
- if (payload.type === "mssql") {
127
- delete payload.ssl;
128
- delete payload.sslRejectUnauthorized;
129
- delete payload.statementTimeoutMs;
130
- delete payload.idleInTxTimeoutMs;
131
- }
132
- else {
133
- delete payload.encrypt;
134
- delete payload.trustServerCertificate;
135
- }
136
- if (payload.type !== "postgres") {
137
- delete payload.statementTimeoutMs;
138
- delete payload.idleInTxTimeoutMs;
139
- }
140
- return payload;
141
- }
142
29
  function DatasourceProviderMark(_a) {
143
30
  var type = _a.type;
144
31
  return (_jsx("div", { className: "sdm-provider-mark ".concat(providerTone(type)), children: _jsx("span", { children: providerGlyph(type) }) }));
145
32
  }
146
33
  export function DatasourcesPage() {
147
- var _this = this;
148
- var _a, _b, _c, _d, _e, _f, _g;
149
- var dispatch = useDispatch();
150
- var _h = useGetDatasourcesQuery(), _j = _h.data, datasources = _j === void 0 ? [] : _j, isLoading = _h.isLoading, isFetching = _h.isFetching, error = _h.error, refetch = _h.refetch;
151
- var _k = useCreateDatasourceMutation(), createDatasource = _k[0], isCreating = _k[1].isLoading;
152
- var _l = useState(false), dialogOpen = _l[0], setDialogOpen = _l[1];
153
- var _m = useState(false), nameTouched = _m[0], setNameTouched = _m[1];
154
- var _o = useState(defaultFormState), formState = _o[0], setFormState = _o[1];
155
- useEffect(function () {
156
- if (!dialogOpen) {
157
- setFormState(defaultFormState);
158
- setNameTouched(false);
159
- }
160
- }, [dialogOpen]);
161
- var handleFieldChange = function (key, value) {
162
- setFormState(function (current) {
163
- var _a;
164
- return (__assign(__assign({}, current), (_a = {}, _a[key] = value, _a)));
165
- });
166
- };
167
- var handleDisplayNameChange = function (value) {
168
- setFormState(function (current) { return (__assign(__assign({}, current), { displayName: value, name: nameTouched ? current.name : slugifyDatasourceName(value) })); });
169
- };
170
- var handleTypeChange = function (value) {
171
- handleFieldChange("type", value);
172
- handleFieldChange("port", getDefaultPort(value));
173
- };
174
- var handleSubmit = function () { return __awaiter(_this, void 0, void 0, function () {
175
- var payload, mutationError_1;
176
- return __generator(this, function (_a) {
177
- switch (_a.label) {
178
- case 0:
179
- if (!formState.name || !formState.host || !formState.database || !formState.username || !formState.password) {
180
- dispatch(showToast({
181
- severity: "warn",
182
- summary: "Missing details",
183
- detail: "Fill in the datasource name, host, database, username, and password.",
184
- }));
185
- return [2 /*return*/];
186
- }
187
- _a.label = 1;
188
- case 1:
189
- _a.trys.push([1, 3, , 4]);
190
- payload = sanitizePayload(formState);
191
- return [4 /*yield*/, createDatasource(payload).unwrap()];
192
- case 2:
193
- _a.sent();
194
- setDialogOpen(false);
195
- dispatch(showToast({
196
- severity: "success",
197
- summary: "Datasource created",
198
- detail: "".concat(payload.displayName || payload.name, " is now registered in SolidX."),
199
- }));
200
- return [3 /*break*/, 4];
201
- case 3:
202
- mutationError_1 = _a.sent();
203
- dispatch(showToast({
204
- severity: "error",
205
- summary: "Datasource creation failed",
206
- detail: readMutationError(mutationError_1),
207
- }));
208
- return [3 /*break*/, 4];
209
- case 4: return [2 /*return*/];
210
- }
211
- });
212
- }); };
213
- return (_jsxs("div", { className: "sdm-page", children: [_jsxs("div", { className: "sdm-header", children: [_jsxs("div", { className: "sdm-title-block", children: [_jsx("h1", { className: "sdm-title", children: "Datasource Management" }), _jsx("p", { className: "sdm-subtitle", children: "Review and manage the datasources configured for this SolidX application." })] }), _jsxs("div", { className: "sdm-header-actions", children: [isFetching && !isLoading ? (_jsxs("div", { className: "sdm-inline-status", children: [_jsx(SolidSpinner, { size: 16 }), _jsx("span", { children: "Refreshing" })] })) : null, _jsx(SolidButton, { className: "sdm-icon-button", leftIcon: _jsx(Plus, { size: 16 }), onClick: function () { return setDialogOpen(true); }, tooltip: "Add datasource", "aria-label": "Add datasource" }), _jsx(SolidButton, { className: "sdm-icon-button", leftIcon: _jsx(RefreshCw, { size: 16 }), onClick: function () { return void refetch(); }, tooltip: "Refresh", "aria-label": "Refresh" })] })] }), isLoading ? (_jsxs("div", { className: "sdm-loading", children: [_jsx(SolidSpinner, { size: 28 }), _jsx("p", { children: "Loading datasource configuration..." })] })) : error ? (_jsxs("div", { className: "sdm-error", children: [_jsx("span", { children: "Unable to load datasource configuration." }), _jsx(SolidButton, { size: "small", variant: "outline", onClick: function () { return void refetch(); }, children: "Retry" })] })) : datasources.length ? (_jsx("div", { className: "sdm-grid", children: datasources.map(function (datasource) {
34
+ var _a = useGetDatasourcesQuery(), _b = _a.data, datasources = _b === void 0 ? [] : _b, isLoading = _a.isLoading, isFetching = _a.isFetching, error = _a.error, refetch = _a.refetch;
35
+ return (_jsxs("div", { className: "sdm-page", children: [_jsxs("div", { className: "sdm-header", children: [_jsxs("div", { className: "sdm-title-block", children: [_jsx("h1", { className: "sdm-title", children: "Datasource Management" }), _jsx("p", { className: "sdm-subtitle", children: "Review and manage the datasources configured for this SolidX application." })] }), _jsxs("div", { className: "sdm-header-actions", children: [isFetching && !isLoading ? (_jsxs("div", { className: "sdm-inline-status", children: [_jsx(SolidSpinner, { size: 16 }), _jsx("span", { children: "Refreshing" })] })) : null, _jsx(SolidButton, { className: "sdm-icon-button", leftIcon: _jsx(RefreshCw, { size: 16 }), onClick: function () { return void refetch(); }, tooltip: "Refresh", "aria-label": "Refresh" })] })] }), isLoading ? (_jsxs("div", { className: "sdm-loading", children: [_jsx(SolidSpinner, { size: 28 }), _jsx("p", { children: "Loading datasource configuration..." })] })) : error ? (_jsxs("div", { className: "sdm-error", children: [_jsx("span", { children: "Unable to load datasource configuration." }), _jsx(SolidButton, { size: "small", variant: "outline", onClick: function () { return void refetch(); }, children: "Retry" })] })) : datasources.length ? (_jsx("div", { className: "sdm-grid", children: datasources.map(function (datasource) {
214
36
  var _a, _b;
215
37
  return (_jsxs("article", { className: "sdm-card", children: [_jsxs("div", { className: "sdm-card__top", children: [_jsxs("div", { className: "sdm-card__identity", children: [_jsx(DatasourceProviderMark, { type: datasource.type }), _jsxs("div", { children: [_jsx("h3", { children: datasource.displayName }), _jsx("p", { children: datasource.name })] })] }), _jsxs("div", { className: "sdm-card__badges", children: [_jsx("span", { className: "sdm-badge sdm-badge--provider", children: providerLabel(datasource.type) }), datasource.isDefault ? _jsx("span", { className: "sdm-badge sdm-badge--default", children: "Default" }) : null] })] }), _jsxs("div", { className: "sdm-card__facts", children: [_jsxs("div", { className: "sdm-card__row", children: [_jsx("span", { children: "Host" }), _jsx("strong", { children: datasource.host || "Not configured" })] }), _jsxs("div", { className: "sdm-card__row", children: [_jsx("span", { children: "Port" }), _jsx("strong", { children: (_a = datasource.port) !== null && _a !== void 0 ? _a : "Not configured" })] }), _jsxs("div", { className: "sdm-card__row", children: [_jsx("span", { children: "Database" }), _jsx("strong", { children: datasource.database || "Not configured" })] }), _jsxs("div", { className: "sdm-card__row", children: [_jsx("span", { children: "User" }), _jsx("strong", { children: datasource.username || "Not configured" })] }), _jsxs("div", { className: "sdm-card__row", children: [_jsx("span", { children: "Env prefix" }), _jsx("strong", { children: datasource.envPrefix })] }), _jsxs("div", { className: "sdm-card__row", children: [_jsx("span", { children: "Password" }), _jsx("strong", { children: datasource.passwordConfigured ? "Configured" : "Missing" })] })] }), _jsxs("div", { className: "sdm-card__footer", children: [_jsxs("div", { className: "sdm-meta-pill", children: ["sync: ", datasource.synchronize === null ? "n/a" : String(datasource.synchronize)] }), _jsxs("div", { className: "sdm-meta-pill", children: ["logging: ", datasource.logging === null ? "n/a" : String(datasource.logging)] }), ((_b = datasource.advanced) === null || _b === void 0 ? void 0 : _b.poolMax) ? _jsxs("div", { className: "sdm-meta-pill", children: ["pool: ", datasource.advanced.poolMax] }) : null] })] }, datasource.name));
216
- }) })) : (_jsxs("div", { className: "sdm-empty", children: [_jsx(Database, { size: 22 }), _jsxs("div", { children: [_jsx("h3", { children: "No datasources configured" }), _jsx("p", { children: "Create one here and SolidX will wire the module and environment variables for you." })] }), _jsx(SolidButton, { size: "small", onClick: function () { return setDialogOpen(true); }, leftIcon: _jsx(Plus, { size: 14 }), children: "Add datasource" })] })), _jsxs(SolidDialog, { open: dialogOpen, onOpenChange: setDialogOpen, style: { width: "min(860px, calc(100vw - 32px))" }, children: [_jsx(SolidDialogHeader, { children: _jsxs("div", { children: [_jsx(SolidDialogTitle, { children: "Add datasource" }), _jsx(SolidDialogDescription, { children: "Create a new datasource module, register it in `app.module.ts`, and persist its env variables to disk." })] }) }), _jsx(SolidDialogSeparator, {}), _jsxs(SolidDialogBody, { children: [_jsxs("div", { className: "sdm-form-grid", children: [_jsxs("label", { className: "sdm-form-field", children: [_jsx("span", { children: "Display name" }), _jsx(SolidInput, { value: formState.displayName || "", placeholder: "Applications", onChange: function (event) { return handleDisplayNameChange(event.target.value); } })] }), _jsxs("label", { className: "sdm-form-field", children: [_jsx("span", { children: "Datasource key" }), _jsx(SolidInput, { value: formState.name, placeholder: "applications", onChange: function (event) {
217
- setNameTouched(true);
218
- handleFieldChange("name", slugifyDatasourceName(event.target.value));
219
- } })] }), _jsxs("label", { className: "sdm-form-field", children: [_jsx("span", { children: "Provider" }), _jsx(SolidSelect, { value: formState.type, options: providerOptions, onChange: function (event) { return handleTypeChange(event.value); } })] }), _jsxs("label", { className: "sdm-form-field", children: [_jsx("span", { children: "Port" }), _jsx(SolidInput, { type: "number", value: formState.port, onChange: function (event) { return handleFieldChange("port", Number(event.target.value) || getDefaultPort(formState.type)); } })] }), _jsxs("label", { className: "sdm-form-field", children: [_jsx("span", { children: "Host" }), _jsx(SolidInput, { value: formState.host, placeholder: "localhost", onChange: function (event) { return handleFieldChange("host", event.target.value); } })] }), _jsxs("label", { className: "sdm-form-field", children: [_jsx("span", { children: "Database" }), _jsx(SolidInput, { value: formState.database, placeholder: "solidx_app", onChange: function (event) { return handleFieldChange("database", event.target.value); } })] }), _jsxs("label", { className: "sdm-form-field", children: [_jsx("span", { children: "Username" }), _jsx(SolidInput, { value: formState.username, placeholder: "postgres", onChange: function (event) { return handleFieldChange("username", event.target.value); } })] }), _jsxs("label", { className: "sdm-form-field", children: [_jsx("span", { children: "Password" }), _jsx(SolidInput, { type: "password", value: formState.password, onChange: function (event) { return handleFieldChange("password", event.target.value); } })] })] }), _jsxs("div", { className: "sdm-switch-row", children: [_jsxs("label", { className: "sdm-switch-field", children: [_jsxs("div", { children: [_jsx("strong", { children: "Synchronize" }), _jsx("span", { children: "Write `*_DATABASE_SYNCHRONIZE` for this datasource." })] }), _jsx(SolidSwitch, { checked: !!formState.synchronize, onChange: function (checked) { return handleFieldChange("synchronize", checked); } })] }), _jsxs("label", { className: "sdm-switch-field", children: [_jsxs("div", { children: [_jsx("strong", { children: "Logging" }), _jsx("span", { children: "Enable TypeORM logging through the generated datasource module." })] }), _jsx(SolidSwitch, { checked: !!formState.logging, onChange: function (checked) { return handleFieldChange("logging", checked); } })] })] }), _jsx(SolidPanel, { header: "Advanced options", toggleable: true, className: "solid-column-panel sdm-advanced-panel", children: _jsxs("div", { className: "sdm-advanced-grid", children: [formState.type === "mssql" ? (_jsxs(_Fragment, { children: [_jsxs("label", { className: "sdm-switch-field sdm-switch-field--inline", children: [_jsxs("div", { children: [_jsx("strong", { children: "Encrypt" }), _jsx("span", { children: "MSSQL connection option." })] }), _jsx(SolidSwitch, { checked: !!formState.encrypt, onChange: function (checked) { return handleFieldChange("encrypt", checked); } })] }), _jsxs("label", { className: "sdm-switch-field sdm-switch-field--inline", children: [_jsxs("div", { children: [_jsx("strong", { children: "Trust certificate" }), _jsx("span", { children: "Allow self-signed development certificates." })] }), _jsx(SolidSwitch, { checked: !!formState.trustServerCertificate, onChange: function (checked) { return handleFieldChange("trustServerCertificate", checked); } })] })] })) : (_jsxs(_Fragment, { children: [_jsxs("label", { className: "sdm-switch-field sdm-switch-field--inline", children: [_jsxs("div", { children: [_jsx("strong", { children: "SSL" }), _jsx("span", { children: "Enable SSL for PostgreSQL or MySQL." })] }), _jsx(SolidSwitch, { checked: !!formState.ssl, onChange: function (checked) { return handleFieldChange("ssl", checked); } })] }), _jsxs("label", { className: "sdm-switch-field sdm-switch-field--inline", children: [_jsxs("div", { children: [_jsx("strong", { children: "Reject unauthorized" }), _jsx("span", { children: "Keep certificate validation strict when SSL is enabled." })] }), _jsx(SolidSwitch, { checked: !!formState.sslRejectUnauthorized, onChange: function (checked) { return handleFieldChange("sslRejectUnauthorized", checked); } })] })] })), _jsxs("label", { className: "sdm-form-field", children: [_jsx("span", { children: "Pool max" }), _jsx(SolidInput, { type: "number", value: (_a = formState.poolMax) !== null && _a !== void 0 ? _a : "", onChange: function (event) { return handleFieldChange("poolMax", Number(event.target.value) || 0); } })] }), _jsxs("label", { className: "sdm-form-field", children: [_jsx("span", { children: "Connection timeout (ms)" }), _jsx(SolidInput, { type: "number", value: (_b = formState.connectionTimeoutMs) !== null && _b !== void 0 ? _b : "", onChange: function (event) { return handleFieldChange("connectionTimeoutMs", Number(event.target.value) || 0); } })] }), _jsxs("label", { className: "sdm-form-field", children: [_jsx("span", { children: "Idle timeout (ms)" }), _jsx(SolidInput, { type: "number", value: (_c = formState.idleTimeoutMs) !== null && _c !== void 0 ? _c : "", onChange: function (event) { return handleFieldChange("idleTimeoutMs", Number(event.target.value) || 0); } })] }), formState.type === "postgres" ? (_jsxs(_Fragment, { children: [_jsxs("label", { className: "sdm-form-field", children: [_jsx("span", { children: "Statement timeout (ms)" }), _jsx(SolidInput, { type: "number", value: (_d = formState.statementTimeoutMs) !== null && _d !== void 0 ? _d : "", onChange: function (event) { return handleFieldChange("statementTimeoutMs", Number(event.target.value) || 0); } })] }), _jsxs("label", { className: "sdm-form-field", children: [_jsx("span", { children: "Idle in transaction timeout (ms)" }), _jsx(SolidInput, { type: "number", value: (_e = formState.idleInTxTimeoutMs) !== null && _e !== void 0 ? _e : "", onChange: function (event) { return handleFieldChange("idleInTxTimeoutMs", Number(event.target.value) || 0); } })] })] })) : null, _jsxs("label", { className: "sdm-form-field", children: [_jsx("span", { children: "Retry attempts" }), _jsx(SolidInput, { type: "number", value: (_f = formState.retryAttempts) !== null && _f !== void 0 ? _f : "", onChange: function (event) { return handleFieldChange("retryAttempts", Number(event.target.value) || 0); } })] }), _jsxs("label", { className: "sdm-form-field", children: [_jsx("span", { children: "Retry delay (ms)" }), _jsx(SolidInput, { type: "number", value: (_g = formState.retryDelayMs) !== null && _g !== void 0 ? _g : "", onChange: function (event) { return handleFieldChange("retryDelayMs", Number(event.target.value) || 0); } })] })] }) })] }), _jsxs(SolidDialogFooter, { children: [_jsx(SolidButton, { variant: "outline", onClick: function () { return setDialogOpen(false); }, children: "Cancel" }), _jsx(SolidButton, { onClick: function () { return void handleSubmit(); }, loading: isCreating, children: "Create datasource" })] })] })] }));
38
+ }) })) : (_jsxs("div", { className: "sdm-empty", children: [_jsx(Database, { size: 22 }), _jsxs("div", { children: [_jsx("h3", { children: "No datasources configured" }), _jsx("p", { children: "Datasource creation is temporarily unavailable from this screen." })] })] }))] }));
220
39
  }
221
40
  //# sourceMappingURL=DatasourcesPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatasourcesPage.js","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/DatasourcesPage.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Database, Plus, RefreshCw } from \"lucide-react\";\nimport { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { showToast } from \"../../../../redux/features/toastSlice\";\nimport {\n type CreateDatasourceManagementPayload,\n type DatasourceManagementRecord,\n useCreateDatasourceMutation,\n useGetDatasourcesQuery,\n} from \"../../../../redux/api/datasourceManagementApi\";\nimport {\n SolidButton,\n SolidDialog,\n SolidDialogBody,\n SolidDialogDescription,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidInput,\n SolidPanel,\n SolidSelect,\n SolidSpinner,\n SolidSwitch,\n} from \"../../../../components/shad-cn-ui\";\nimport \"./DatasourcesPage.css\";\n\nconst providerOptions = [\n { label: \"PostgreSQL\", value: \"postgres\" },\n { label: \"MySQL\", value: \"mysql\" },\n { label: \"MS SQL Server\", value: \"mssql\" },\n] as const;\n\nconst defaultFormState: CreateDatasourceManagementPayload = {\n name: \"\",\n displayName: \"\",\n type: \"postgres\",\n host: \"\",\n port: 5432,\n database: \"\",\n username: \"\",\n password: \"\",\n synchronize: false,\n logging: false,\n ssl: false,\n sslRejectUnauthorized: true,\n poolMax: 20,\n connectionTimeoutMs: 60000,\n idleTimeoutMs: 30000,\n statementTimeoutMs: 60000,\n idleInTxTimeoutMs: 60000,\n retryAttempts: 0,\n retryDelayMs: 0,\n encrypt: false,\n trustServerCertificate: true,\n};\n\nfunction slugifyDatasourceName(value: string) {\n return value\n .toLowerCase()\n .trim()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .slice(0, 48);\n}\n\nfunction getDefaultPort(type: CreateDatasourceManagementPayload[\"type\"]) {\n if (type === \"mysql\") return 3306;\n if (type === \"mssql\") return 1433;\n return 5432;\n}\n\nfunction providerLabel(type: string) {\n return providerOptions.find((option) => option.value === type)?.label || type;\n}\n\nfunction providerTone(type: string) {\n if (type === \"postgres\") return \"sdm-provider-mark--postgres\";\n if (type === \"mysql\") return \"sdm-provider-mark--mysql\";\n return \"sdm-provider-mark--mssql\";\n}\n\nfunction providerGlyph(type: string) {\n if (type === \"postgres\") return \"PG\";\n if (type === \"mysql\") return \"MY\";\n return \"MS\";\n}\n\nfunction readMutationError(error: any) {\n return (\n error?.data?.message\n || error?.error\n || error?.message\n || \"Unable to save the datasource.\"\n );\n}\n\nfunction sanitizePayload(formState: CreateDatasourceManagementPayload): CreateDatasourceManagementPayload {\n const payload: CreateDatasourceManagementPayload = {\n ...formState,\n name: slugifyDatasourceName(formState.name),\n };\n\n if (payload.type === \"mssql\") {\n delete payload.ssl;\n delete payload.sslRejectUnauthorized;\n delete payload.statementTimeoutMs;\n delete payload.idleInTxTimeoutMs;\n } else {\n delete payload.encrypt;\n delete payload.trustServerCertificate;\n }\n\n if (payload.type !== \"postgres\") {\n delete payload.statementTimeoutMs;\n delete payload.idleInTxTimeoutMs;\n }\n\n return payload;\n}\n\nfunction DatasourceProviderMark({ type }: { type: string }) {\n return (\n <div className={`sdm-provider-mark ${providerTone(type)}`}>\n <span>{providerGlyph(type)}</span>\n </div>\n );\n}\n\nexport function DatasourcesPage() {\n const dispatch = useDispatch();\n const {\n data: datasources = [],\n isLoading,\n isFetching,\n error,\n refetch,\n } = useGetDatasourcesQuery();\n const [createDatasource, { isLoading: isCreating }] = useCreateDatasourceMutation();\n const [dialogOpen, setDialogOpen] = useState(false);\n const [nameTouched, setNameTouched] = useState(false);\n const [formState, setFormState] = useState<CreateDatasourceManagementPayload>(defaultFormState);\n\n useEffect(() => {\n if (!dialogOpen) {\n setFormState(defaultFormState);\n setNameTouched(false);\n }\n }, [dialogOpen]);\n\n const handleFieldChange = <K extends keyof CreateDatasourceManagementPayload>(\n key: K,\n value: CreateDatasourceManagementPayload[K],\n ) => {\n setFormState((current) => ({\n ...current,\n [key]: value,\n }));\n };\n\n const handleDisplayNameChange = (value: string) => {\n setFormState((current) => ({\n ...current,\n displayName: value,\n name: nameTouched ? current.name : slugifyDatasourceName(value),\n }));\n };\n\n const handleTypeChange = (value: CreateDatasourceManagementPayload[\"type\"]) => {\n handleFieldChange(\"type\", value);\n handleFieldChange(\"port\", getDefaultPort(value));\n };\n\n const handleSubmit = async () => {\n if (!formState.name || !formState.host || !formState.database || !formState.username || !formState.password) {\n dispatch(showToast({\n severity: \"warn\",\n summary: \"Missing details\",\n detail: \"Fill in the datasource name, host, database, username, and password.\",\n }));\n return;\n }\n\n try {\n const payload = sanitizePayload(formState);\n await createDatasource(payload).unwrap();\n setDialogOpen(false);\n dispatch(showToast({\n severity: \"success\",\n summary: \"Datasource created\",\n detail: `${payload.displayName || payload.name} is now registered in SolidX.`,\n }));\n } catch (mutationError: any) {\n dispatch(showToast({\n severity: \"error\",\n summary: \"Datasource creation failed\",\n detail: readMutationError(mutationError),\n }));\n }\n };\n\n return (\n <div className=\"sdm-page\">\n <div className=\"sdm-header\">\n <div className=\"sdm-title-block\">\n <h1 className=\"sdm-title\">Datasource Management</h1>\n <p className=\"sdm-subtitle\">Review and manage the datasources configured for this SolidX application.</p>\n </div>\n\n <div className=\"sdm-header-actions\">\n {isFetching && !isLoading ? (\n <div className=\"sdm-inline-status\">\n <SolidSpinner size={16} />\n <span>Refreshing</span>\n </div>\n ) : null}\n\n <SolidButton\n className=\"sdm-icon-button\"\n leftIcon={<Plus size={16} />}\n onClick={() => setDialogOpen(true)}\n tooltip=\"Add datasource\"\n aria-label=\"Add datasource\"\n />\n\n <SolidButton\n className=\"sdm-icon-button\"\n leftIcon={<RefreshCw size={16} />}\n onClick={() => void refetch()}\n tooltip=\"Refresh\"\n aria-label=\"Refresh\"\n />\n </div>\n </div>\n\n {isLoading ? (\n <div className=\"sdm-loading\">\n <SolidSpinner size={28} />\n <p>Loading datasource configuration...</p>\n </div>\n ) : error ? (\n <div className=\"sdm-error\">\n <span>Unable to load datasource configuration.</span>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => void refetch()}>\n Retry\n </SolidButton>\n </div>\n ) : datasources.length ? (\n <div className=\"sdm-grid\">\n {datasources.map((datasource) => (\n <article key={datasource.name} className=\"sdm-card\">\n <div className=\"sdm-card__top\">\n <div className=\"sdm-card__identity\">\n <DatasourceProviderMark type={datasource.type} />\n <div>\n <h3>{datasource.displayName}</h3>\n <p>{datasource.name}</p>\n </div>\n </div>\n <div className=\"sdm-card__badges\">\n <span className=\"sdm-badge sdm-badge--provider\">{providerLabel(datasource.type)}</span>\n {datasource.isDefault ? <span className=\"sdm-badge sdm-badge--default\">Default</span> : null}\n </div>\n </div>\n\n <div className=\"sdm-card__facts\">\n <div className=\"sdm-card__row\">\n <span>Host</span>\n <strong>{datasource.host || \"Not configured\"}</strong>\n </div>\n <div className=\"sdm-card__row\">\n <span>Port</span>\n <strong>{datasource.port ?? \"Not configured\"}</strong>\n </div>\n <div className=\"sdm-card__row\">\n <span>Database</span>\n <strong>{datasource.database || \"Not configured\"}</strong>\n </div>\n <div className=\"sdm-card__row\">\n <span>User</span>\n <strong>{datasource.username || \"Not configured\"}</strong>\n </div>\n <div className=\"sdm-card__row\">\n <span>Env prefix</span>\n <strong>{datasource.envPrefix}</strong>\n </div>\n <div className=\"sdm-card__row\">\n <span>Password</span>\n <strong>{datasource.passwordConfigured ? \"Configured\" : \"Missing\"}</strong>\n </div>\n </div>\n\n <div className=\"sdm-card__footer\">\n <div className=\"sdm-meta-pill\">sync: {datasource.synchronize === null ? \"n/a\" : String(datasource.synchronize)}</div>\n <div className=\"sdm-meta-pill\">logging: {datasource.logging === null ? \"n/a\" : String(datasource.logging)}</div>\n {datasource.advanced?.poolMax ? <div className=\"sdm-meta-pill\">pool: {datasource.advanced.poolMax}</div> : null}\n </div>\n </article>\n ))}\n </div>\n ) : (\n <div className=\"sdm-empty\">\n <Database size={22} />\n <div>\n <h3>No datasources configured</h3>\n <p>Create one here and SolidX will wire the module and environment variables for you.</p>\n </div>\n <SolidButton size=\"small\" onClick={() => setDialogOpen(true)} leftIcon={<Plus size={14} />}>\n Add datasource\n </SolidButton>\n </div>\n )}\n\n <SolidDialog open={dialogOpen} onOpenChange={setDialogOpen} style={{ width: \"min(860px, calc(100vw - 32px))\" }}>\n <SolidDialogHeader>\n <div>\n <SolidDialogTitle>Add datasource</SolidDialogTitle>\n <SolidDialogDescription>\n Create a new datasource module, register it in `app.module.ts`, and persist its env variables to disk.\n </SolidDialogDescription>\n </div>\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody>\n <div className=\"sdm-form-grid\">\n <label className=\"sdm-form-field\">\n <span>Display name</span>\n <SolidInput\n value={formState.displayName || \"\"}\n placeholder=\"Applications\"\n onChange={(event) => handleDisplayNameChange(event.target.value)}\n />\n </label>\n\n <label className=\"sdm-form-field\">\n <span>Datasource key</span>\n <SolidInput\n value={formState.name}\n placeholder=\"applications\"\n onChange={(event) => {\n setNameTouched(true);\n handleFieldChange(\"name\", slugifyDatasourceName(event.target.value));\n }}\n />\n </label>\n\n <label className=\"sdm-form-field\">\n <span>Provider</span>\n <SolidSelect\n value={formState.type}\n options={providerOptions as any}\n onChange={(event) => handleTypeChange(event.value)}\n />\n </label>\n\n <label className=\"sdm-form-field\">\n <span>Port</span>\n <SolidInput\n type=\"number\"\n value={formState.port}\n onChange={(event) => handleFieldChange(\"port\", Number(event.target.value) || getDefaultPort(formState.type))}\n />\n </label>\n\n <label className=\"sdm-form-field\">\n <span>Host</span>\n <SolidInput\n value={formState.host}\n placeholder=\"localhost\"\n onChange={(event) => handleFieldChange(\"host\", event.target.value)}\n />\n </label>\n\n <label className=\"sdm-form-field\">\n <span>Database</span>\n <SolidInput\n value={formState.database}\n placeholder=\"solidx_app\"\n onChange={(event) => handleFieldChange(\"database\", event.target.value)}\n />\n </label>\n\n <label className=\"sdm-form-field\">\n <span>Username</span>\n <SolidInput\n value={formState.username}\n placeholder=\"postgres\"\n onChange={(event) => handleFieldChange(\"username\", event.target.value)}\n />\n </label>\n\n <label className=\"sdm-form-field\">\n <span>Password</span>\n <SolidInput\n type=\"password\"\n value={formState.password}\n onChange={(event) => handleFieldChange(\"password\", event.target.value)}\n />\n </label>\n </div>\n\n <div className=\"sdm-switch-row\">\n <label className=\"sdm-switch-field\">\n <div>\n <strong>Synchronize</strong>\n <span>Write `*_DATABASE_SYNCHRONIZE` for this datasource.</span>\n </div>\n <SolidSwitch checked={!!formState.synchronize} onChange={(checked) => handleFieldChange(\"synchronize\", checked)} />\n </label>\n\n <label className=\"sdm-switch-field\">\n <div>\n <strong>Logging</strong>\n <span>Enable TypeORM logging through the generated datasource module.</span>\n </div>\n <SolidSwitch checked={!!formState.logging} onChange={(checked) => handleFieldChange(\"logging\", checked)} />\n </label>\n </div>\n\n <SolidPanel header=\"Advanced options\" toggleable className=\"solid-column-panel sdm-advanced-panel\">\n <div className=\"sdm-advanced-grid\">\n {formState.type === \"mssql\" ? (\n <>\n <label className=\"sdm-switch-field sdm-switch-field--inline\">\n <div>\n <strong>Encrypt</strong>\n <span>MSSQL connection option.</span>\n </div>\n <SolidSwitch checked={!!formState.encrypt} onChange={(checked) => handleFieldChange(\"encrypt\", checked)} />\n </label>\n\n <label className=\"sdm-switch-field sdm-switch-field--inline\">\n <div>\n <strong>Trust certificate</strong>\n <span>Allow self-signed development certificates.</span>\n </div>\n <SolidSwitch checked={!!formState.trustServerCertificate} onChange={(checked) => handleFieldChange(\"trustServerCertificate\", checked)} />\n </label>\n </>\n ) : (\n <>\n <label className=\"sdm-switch-field sdm-switch-field--inline\">\n <div>\n <strong>SSL</strong>\n <span>Enable SSL for PostgreSQL or MySQL.</span>\n </div>\n <SolidSwitch checked={!!formState.ssl} onChange={(checked) => handleFieldChange(\"ssl\", checked)} />\n </label>\n\n <label className=\"sdm-switch-field sdm-switch-field--inline\">\n <div>\n <strong>Reject unauthorized</strong>\n <span>Keep certificate validation strict when SSL is enabled.</span>\n </div>\n <SolidSwitch checked={!!formState.sslRejectUnauthorized} onChange={(checked) => handleFieldChange(\"sslRejectUnauthorized\", checked)} />\n </label>\n </>\n )}\n\n <label className=\"sdm-form-field\">\n <span>Pool max</span>\n <SolidInput\n type=\"number\"\n value={formState.poolMax ?? \"\"}\n onChange={(event) => handleFieldChange(\"poolMax\", Number(event.target.value) || 0)}\n />\n </label>\n\n <label className=\"sdm-form-field\">\n <span>Connection timeout (ms)</span>\n <SolidInput\n type=\"number\"\n value={formState.connectionTimeoutMs ?? \"\"}\n onChange={(event) => handleFieldChange(\"connectionTimeoutMs\", Number(event.target.value) || 0)}\n />\n </label>\n\n <label className=\"sdm-form-field\">\n <span>Idle timeout (ms)</span>\n <SolidInput\n type=\"number\"\n value={formState.idleTimeoutMs ?? \"\"}\n onChange={(event) => handleFieldChange(\"idleTimeoutMs\", Number(event.target.value) || 0)}\n />\n </label>\n\n {formState.type === \"postgres\" ? (\n <>\n <label className=\"sdm-form-field\">\n <span>Statement timeout (ms)</span>\n <SolidInput\n type=\"number\"\n value={formState.statementTimeoutMs ?? \"\"}\n onChange={(event) => handleFieldChange(\"statementTimeoutMs\", Number(event.target.value) || 0)}\n />\n </label>\n\n <label className=\"sdm-form-field\">\n <span>Idle in transaction timeout (ms)</span>\n <SolidInput\n type=\"number\"\n value={formState.idleInTxTimeoutMs ?? \"\"}\n onChange={(event) => handleFieldChange(\"idleInTxTimeoutMs\", Number(event.target.value) || 0)}\n />\n </label>\n </>\n ) : null}\n\n <label className=\"sdm-form-field\">\n <span>Retry attempts</span>\n <SolidInput\n type=\"number\"\n value={formState.retryAttempts ?? \"\"}\n onChange={(event) => handleFieldChange(\"retryAttempts\", Number(event.target.value) || 0)}\n />\n </label>\n\n <label className=\"sdm-form-field\">\n <span>Retry delay (ms)</span>\n <SolidInput\n type=\"number\"\n value={formState.retryDelayMs ?? \"\"}\n onChange={(event) => handleFieldChange(\"retryDelayMs\", Number(event.target.value) || 0)}\n />\n </label>\n </div>\n </SolidPanel>\n </SolidDialogBody>\n <SolidDialogFooter>\n <SolidButton variant=\"outline\" onClick={() => setDialogOpen(false)}>\n Cancel\n </SolidButton>\n <SolidButton onClick={() => void handleSubmit()} loading={isCreating}>\n Create datasource\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"DatasourcesPage.js","sourceRoot":"","sources":["../../../../../src/routes/pages/admin/core/DatasourcesPage.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Database, RefreshCw } from \"lucide-react\";\nimport { useGetDatasourcesQuery } from \"../../../../redux/api/datasourceManagementApi\";\nimport {\n SolidButton,\n SolidSpinner,\n} from \"../../../../components/shad-cn-ui\";\nimport \"./DatasourcesPage.css\";\n\nconst providerOptions = [\n { label: \"PostgreSQL\", value: \"postgres\" },\n { label: \"MySQL\", value: \"mysql\" },\n { label: \"MS SQL Server\", value: \"mssql\" },\n] as const;\n\nfunction providerLabel(type: string) {\n return providerOptions.find((option) => option.value === type)?.label || type;\n}\n\nfunction providerTone(type: string) {\n if (type === \"postgres\") return \"sdm-provider-mark--postgres\";\n if (type === \"mysql\") return \"sdm-provider-mark--mysql\";\n return \"sdm-provider-mark--mssql\";\n}\n\nfunction providerGlyph(type: string) {\n if (type === \"postgres\") return \"PG\";\n if (type === \"mysql\") return \"MY\";\n return \"MS\";\n}\n\nfunction DatasourceProviderMark({ type }: { type: string }) {\n return (\n <div className={`sdm-provider-mark ${providerTone(type)}`}>\n <span>{providerGlyph(type)}</span>\n </div>\n );\n}\n\nexport function DatasourcesPage() {\n const {\n data: datasources = [],\n isLoading,\n isFetching,\n error,\n refetch,\n } = useGetDatasourcesQuery();\n\n return (\n <div className=\"sdm-page\">\n <div className=\"sdm-header\">\n <div className=\"sdm-title-block\">\n <h1 className=\"sdm-title\">Datasource Management</h1>\n <p className=\"sdm-subtitle\">Review and manage the datasources configured for this SolidX application.</p>\n </div>\n\n <div className=\"sdm-header-actions\">\n {isFetching && !isLoading ? (\n <div className=\"sdm-inline-status\">\n <SolidSpinner size={16} />\n <span>Refreshing</span>\n </div>\n ) : null}\n\n <SolidButton\n className=\"sdm-icon-button\"\n leftIcon={<RefreshCw size={16} />}\n onClick={() => void refetch()}\n tooltip=\"Refresh\"\n aria-label=\"Refresh\"\n />\n </div>\n </div>\n\n {isLoading ? (\n <div className=\"sdm-loading\">\n <SolidSpinner size={28} />\n <p>Loading datasource configuration...</p>\n </div>\n ) : error ? (\n <div className=\"sdm-error\">\n <span>Unable to load datasource configuration.</span>\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => void refetch()}>\n Retry\n </SolidButton>\n </div>\n ) : datasources.length ? (\n <div className=\"sdm-grid\">\n {datasources.map((datasource) => (\n <article key={datasource.name} className=\"sdm-card\">\n <div className=\"sdm-card__top\">\n <div className=\"sdm-card__identity\">\n <DatasourceProviderMark type={datasource.type} />\n <div>\n <h3>{datasource.displayName}</h3>\n <p>{datasource.name}</p>\n </div>\n </div>\n <div className=\"sdm-card__badges\">\n <span className=\"sdm-badge sdm-badge--provider\">{providerLabel(datasource.type)}</span>\n {datasource.isDefault ? <span className=\"sdm-badge sdm-badge--default\">Default</span> : null}\n </div>\n </div>\n\n <div className=\"sdm-card__facts\">\n <div className=\"sdm-card__row\">\n <span>Host</span>\n <strong>{datasource.host || \"Not configured\"}</strong>\n </div>\n <div className=\"sdm-card__row\">\n <span>Port</span>\n <strong>{datasource.port ?? \"Not configured\"}</strong>\n </div>\n <div className=\"sdm-card__row\">\n <span>Database</span>\n <strong>{datasource.database || \"Not configured\"}</strong>\n </div>\n <div className=\"sdm-card__row\">\n <span>User</span>\n <strong>{datasource.username || \"Not configured\"}</strong>\n </div>\n <div className=\"sdm-card__row\">\n <span>Env prefix</span>\n <strong>{datasource.envPrefix}</strong>\n </div>\n <div className=\"sdm-card__row\">\n <span>Password</span>\n <strong>{datasource.passwordConfigured ? \"Configured\" : \"Missing\"}</strong>\n </div>\n </div>\n\n <div className=\"sdm-card__footer\">\n <div className=\"sdm-meta-pill\">sync: {datasource.synchronize === null ? \"n/a\" : String(datasource.synchronize)}</div>\n <div className=\"sdm-meta-pill\">logging: {datasource.logging === null ? \"n/a\" : String(datasource.logging)}</div>\n {datasource.advanced?.poolMax ? <div className=\"sdm-meta-pill\">pool: {datasource.advanced.poolMax}</div> : null}\n </div>\n </article>\n ))}\n </div>\n ) : (\n <div className=\"sdm-empty\">\n <Database size={22} />\n <div>\n <h3>No datasources configured</h3>\n <p>Datasource creation is temporarily unavailable from this screen.</p>\n </div>\n </div>\n )}\n </div>\n );\n}\n"]}