@solidxai/core-ui 0.1.19 → 0.1.20-beta.1

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 (282) hide show
  1. package/dist/components/common/Link.d.ts.map +1 -1
  2. package/dist/components/common/Link.js +2 -1
  3. package/dist/components/common/Link.js.map +1 -1
  4. package/dist/components/common/Link.tsx +2 -1
  5. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts +1 -0
  6. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts.map +1 -1
  7. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +109 -23
  8. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
  9. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +155 -34
  10. package/dist/components/core/chatter/SolidChatter.js +2 -2
  11. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  12. package/dist/components/core/chatter/SolidChatter.tsx +2 -2
  13. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js +20 -19
  14. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.js.map +1 -1
  15. package/dist/components/core/common/SolidGenericImport/SolidImportTransaction.tsx +16 -16
  16. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.d.ts.map +1 -1
  17. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js +3 -10
  18. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js.map +1 -1
  19. package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.tsx +3 -8
  20. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.d.ts.map +1 -1
  21. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js +36 -9
  22. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.js.map +1 -1
  23. package/dist/components/core/extension/solid-core/moduleMetadata/list/ExportModulePackageRowAction.tsx +78 -7
  24. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts +1 -0
  25. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.d.ts.map +1 -1
  26. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js +1 -1
  27. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.js.map +1 -1
  28. package/dist/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx +1 -1
  29. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.d.ts +4 -0
  30. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.d.ts.map +1 -0
  31. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.js +131 -0
  32. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.js.map +1 -0
  33. package/dist/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.tsx +151 -0
  34. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.d.ts +4 -0
  35. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.d.ts.map +1 -0
  36. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.js +13 -0
  37. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.js.map +1 -0
  38. package/dist/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.tsx +20 -0
  39. package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
  40. package/dist/components/core/form/SolidFormView.js +4 -0
  41. package/dist/components/core/form/SolidFormView.js.map +1 -1
  42. package/dist/components/core/form/SolidFormView.tsx +4 -0
  43. package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
  44. package/dist/components/core/kanban/SolidKanbanView.js +50 -15
  45. package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
  46. package/dist/components/core/kanban/SolidKanbanView.tsx +22 -3
  47. package/dist/components/core/list/SolidListView.d.ts.map +1 -1
  48. package/dist/components/core/list/SolidListView.js +16 -3
  49. package/dist/components/core/list/SolidListView.js.map +1 -1
  50. package/dist/components/core/list/SolidListView.tsx +16 -2
  51. package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
  52. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +4 -1
  53. package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
  54. package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +4 -1
  55. package/dist/components/core/module/ModulePackageDialog.css +102 -0
  56. package/dist/components/core/module/ModulePackageDialog.d.ts +2 -1
  57. package/dist/components/core/module/ModulePackageDialog.d.ts.map +1 -1
  58. package/dist/components/core/module/ModulePackageDialog.js +216 -68
  59. package/dist/components/core/module/ModulePackageDialog.js.map +1 -1
  60. package/dist/components/core/module/ModulePackageDialog.tsx +356 -76
  61. package/dist/components/core/solid-agent/SolidAgentChat.d.ts.map +1 -1
  62. package/dist/components/core/solid-agent/SolidAgentChat.js +9 -3
  63. package/dist/components/core/solid-agent/SolidAgentChat.js.map +1 -1
  64. package/dist/components/core/solid-agent/SolidAgentChat.tsx +9 -4
  65. package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts.map +1 -1
  66. package/dist/components/core/solid-agent/SolidAgentMarkdown.js +25 -6
  67. package/dist/components/core/solid-agent/SolidAgentMarkdown.js.map +1 -1
  68. package/dist/components/core/solid-agent/SolidAgentMarkdown.tsx +15 -1
  69. package/dist/components/core/solid-agent/client/agentRuntime.d.ts +5 -0
  70. package/dist/components/core/solid-agent/client/agentRuntime.d.ts.map +1 -1
  71. package/dist/components/core/solid-agent/client/agentRuntime.js +77 -20
  72. package/dist/components/core/solid-agent/client/agentRuntime.js.map +1 -1
  73. package/dist/components/core/solid-agent/client/agentRuntime.ts +29 -1
  74. package/dist/components/core/solid-agent/client/agentSocket.d.ts +5 -1
  75. package/dist/components/core/solid-agent/client/agentSocket.d.ts.map +1 -1
  76. package/dist/components/core/solid-agent/client/agentSocket.js +27 -4
  77. package/dist/components/core/solid-agent/client/agentSocket.js.map +1 -1
  78. package/dist/components/core/solid-agent/client/agentSocket.ts +14 -3
  79. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js +2 -2
  80. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js.map +1 -1
  81. package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.tsx +5 -5
  82. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts +2 -0
  83. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts.map +1 -1
  84. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js +2 -2
  85. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js.map +1 -1
  86. package/dist/components/core/solid-agent/embed/agentEmbedProtocol.ts +4 -4
  87. package/dist/components/core/solid-agent/thread/AgentThread.d.ts.map +1 -1
  88. package/dist/components/core/solid-agent/thread/AgentThread.js +61 -26
  89. package/dist/components/core/solid-agent/thread/AgentThread.js.map +1 -1
  90. package/dist/components/core/solid-agent/thread/AgentThread.tsx +74 -40
  91. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts +2 -1
  92. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts.map +1 -1
  93. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js +2 -1
  94. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js.map +1 -1
  95. package/dist/components/core/solid-agent/thread/SolidAgentChatItem.tsx +3 -1
  96. package/dist/components/core/solid-agent/types.d.ts +3 -0
  97. package/dist/components/core/solid-agent/types.d.ts.map +1 -1
  98. package/dist/components/core/solid-agent/types.js +0 -9
  99. package/dist/components/core/solid-agent/types.js.map +1 -1
  100. package/dist/components/core/solid-agent/types.ts +4 -2
  101. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts +1 -1
  102. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts.map +1 -1
  103. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js +5 -2
  104. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js.map +1 -1
  105. package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.tsx +11 -5
  106. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js +3 -0
  107. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js.map +1 -1
  108. package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.tsx +4 -0
  109. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js +3 -0
  110. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js.map +1 -1
  111. package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.tsx +4 -0
  112. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js +3 -0
  113. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js.map +1 -1
  114. package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.tsx +4 -0
  115. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js +3 -0
  116. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js.map +1 -1
  117. package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.tsx +4 -0
  118. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js +3 -0
  119. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js.map +1 -1
  120. package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.tsx +4 -0
  121. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js +3 -0
  122. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js.map +1 -1
  123. package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.tsx +4 -0
  124. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js +3 -0
  125. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js.map +1 -1
  126. package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.tsx +4 -0
  127. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js +3 -0
  128. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js.map +1 -1
  129. package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.tsx +4 -0
  130. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js +3 -0
  131. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js.map +1 -1
  132. package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.tsx +4 -0
  133. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js +19 -0
  134. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js.map +1 -1
  135. package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.tsx +20 -0
  136. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js +3 -0
  137. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js.map +1 -1
  138. package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.tsx +4 -0
  139. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js +3 -0
  140. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js.map +1 -1
  141. package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.tsx +4 -0
  142. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js +3 -0
  143. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js.map +1 -1
  144. package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.tsx +4 -0
  145. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js +3 -0
  146. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js.map +1 -1
  147. package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.tsx +4 -0
  148. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js +3 -0
  149. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js.map +1 -1
  150. package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.tsx +4 -0
  151. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js +3 -0
  152. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js.map +1 -1
  153. package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.tsx +4 -0
  154. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js +3 -0
  155. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js.map +1 -1
  156. package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.tsx +4 -0
  157. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js +3 -0
  158. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js.map +1 -1
  159. package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.tsx +4 -0
  160. package/dist/components/core/solid-agent/widgets/solidChatWidgets.module.css +9 -1
  161. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  162. package/dist/components/core/users/CreateUser.js +23 -8
  163. package/dist/components/core/users/CreateUser.js.map +1 -1
  164. package/dist/components/core/users/CreateUser.tsx +10 -6
  165. package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
  166. package/dist/components/layout/AdminHeaderActions.js +1 -29
  167. package/dist/components/layout/AdminHeaderActions.js.map +1 -1
  168. package/dist/components/layout/AdminHeaderActions.tsx +0 -42
  169. package/dist/components/layout/AdminTopHeader.js +2 -2
  170. package/dist/components/layout/AdminTopHeader.js.map +1 -1
  171. package/dist/components/layout/AdminTopHeader.tsx +2 -2
  172. package/dist/components/layout/AppSidebar.d.ts.map +1 -1
  173. package/dist/components/layout/AppSidebar.js +21 -5
  174. package/dist/components/layout/AppSidebar.js.map +1 -1
  175. package/dist/components/layout/AppSidebar.tsx +24 -6
  176. package/dist/components/layout/SolidAiStudioLayout.d.ts +0 -1
  177. package/dist/components/layout/SolidAiStudioLayout.d.ts.map +1 -1
  178. package/dist/components/layout/SolidAiStudioLayout.js +8 -161
  179. package/dist/components/layout/SolidAiStudioLayout.js.map +1 -1
  180. package/dist/components/layout/SolidAiStudioLayout.tsx +6 -136
  181. package/dist/components/layout/user-profile-menu.js +10 -10
  182. package/dist/components/layout/user-profile-menu.js.map +1 -1
  183. package/dist/components/layout/user-profile-menu.tsx +3 -3
  184. package/dist/components/shad-cn-ui/SolidLightbox.d.ts +2 -1
  185. package/dist/components/shad-cn-ui/SolidLightbox.d.ts.map +1 -1
  186. package/dist/components/shad-cn-ui/SolidLightbox.js +11 -4
  187. package/dist/components/shad-cn-ui/SolidLightbox.js.map +1 -1
  188. package/dist/components/shad-cn-ui/SolidLightbox.tsx +14 -1
  189. package/dist/helpers/modelViewPersistence.d.ts +2 -0
  190. package/dist/helpers/modelViewPersistence.d.ts.map +1 -1
  191. package/dist/helpers/modelViewPersistence.js +72 -0
  192. package/dist/helpers/modelViewPersistence.js.map +1 -1
  193. package/dist/helpers/modelViewPersistence.ts +79 -0
  194. package/dist/helpers/registry.d.ts +6 -2
  195. package/dist/helpers/registry.d.ts.map +1 -1
  196. package/dist/helpers/registry.js +68 -3
  197. package/dist/helpers/registry.js.map +1 -1
  198. package/dist/helpers/registry.ts +62 -4
  199. package/dist/hooks/useModelsDevModels.d.ts +43 -0
  200. package/dist/hooks/useModelsDevModels.d.ts.map +1 -0
  201. package/dist/hooks/useModelsDevModels.js +81 -0
  202. package/dist/hooks/useModelsDevModels.js.map +1 -0
  203. package/dist/hooks/useModelsDevModels.ts +106 -0
  204. package/dist/hooks/useRouter.d.ts.map +1 -1
  205. package/dist/hooks/useRouter.js +3 -2
  206. package/dist/hooks/useRouter.js.map +1 -1
  207. package/dist/hooks/useRouter.ts +3 -2
  208. package/dist/index.d.ts +2 -2
  209. package/dist/index.d.ts.map +1 -1
  210. package/dist/index.js +1 -1
  211. package/dist/index.js.map +1 -1
  212. package/dist/index.ts +4 -1
  213. package/dist/modules/solidUiModule.d.ts +3 -2
  214. package/dist/modules/solidUiModule.d.ts.map +1 -1
  215. package/dist/modules/solidUiModule.js +1 -1
  216. package/dist/modules/solidUiModule.js.map +1 -1
  217. package/dist/modules/solidUiModule.ts +5 -1
  218. package/dist/redux/api/moduleApi.d.ts +12 -2
  219. package/dist/redux/api/moduleApi.d.ts.map +1 -1
  220. package/dist/redux/api/moduleApi.js +33 -3
  221. package/dist/redux/api/moduleApi.js.map +1 -1
  222. package/dist/redux/api/moduleApi.ts +17 -2
  223. package/dist/redux/api/solidChatterMessageApi.d.ts +3 -1
  224. package/dist/redux/api/solidChatterMessageApi.d.ts.map +1 -1
  225. package/dist/redux/api/solidChatterMessageApi.js +9 -1
  226. package/dist/redux/api/solidChatterMessageApi.js.map +1 -1
  227. package/dist/redux/api/solidChatterMessageApi.ts +9 -1
  228. package/dist/redux/store/defaultStoreConfig.d.ts +9 -1
  229. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  230. package/dist/resources/globals.css +30 -0
  231. package/dist/resources/solid-custom.css +10 -6
  232. package/dist/resources/solid-tailwind-generated.css +1 -1
  233. package/dist/routes/AppEventListener.d.ts.map +1 -1
  234. package/dist/routes/AppEventListener.js +3 -3
  235. package/dist/routes/AppEventListener.js.map +1 -1
  236. package/dist/routes/AppEventListener.tsx +2 -3
  237. package/dist/routes/pages/admin/core/AgentHubTagsField.css +21 -0
  238. package/dist/routes/pages/admin/core/AgentHubTagsField.d.ts +17 -0
  239. package/dist/routes/pages/admin/core/AgentHubTagsField.d.ts.map +1 -0
  240. package/dist/routes/pages/admin/core/AgentHubTagsField.js +171 -0
  241. package/dist/routes/pages/admin/core/AgentHubTagsField.js.map +1 -0
  242. package/dist/routes/pages/admin/core/AgentHubTagsField.tsx +125 -0
  243. package/dist/routes/pages/admin/core/AgentPersonaHistory.css +130 -0
  244. package/dist/routes/pages/admin/core/AgentPersonaHistory.d.ts +7 -0
  245. package/dist/routes/pages/admin/core/AgentPersonaHistory.d.ts.map +1 -0
  246. package/dist/routes/pages/admin/core/AgentPersonaHistory.js +228 -0
  247. package/dist/routes/pages/admin/core/AgentPersonaHistory.js.map +1 -0
  248. package/dist/routes/pages/admin/core/AgentPersonaHistory.tsx +234 -0
  249. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.css +13 -14
  250. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts.map +1 -1
  251. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js +218 -165
  252. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js.map +1 -1
  253. package/dist/routes/pages/admin/core/AgentRegistryEditorPage.tsx +221 -127
  254. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts.map +1 -1
  255. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js +14 -69
  256. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js.map +1 -1
  257. package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.tsx +15 -83
  258. package/dist/routes/pages/admin/core/AgentToolActivationDialog.d.ts +11 -0
  259. package/dist/routes/pages/admin/core/AgentToolActivationDialog.d.ts.map +1 -0
  260. package/dist/routes/pages/admin/core/AgentToolActivationDialog.js +166 -0
  261. package/dist/routes/pages/admin/core/AgentToolActivationDialog.js.map +1 -0
  262. package/dist/routes/pages/admin/core/AgentToolActivationDialog.tsx +140 -0
  263. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.css +26 -0
  264. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts.map +1 -1
  265. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js +94 -71
  266. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js.map +1 -1
  267. package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.tsx +60 -52
  268. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.d.ts +2 -0
  269. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.d.ts.map +1 -0
  270. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js +108 -0
  271. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.js.map +1 -0
  272. package/dist/routes/pages/admin/core/ArchivedChatterMessagesPage.tsx +96 -0
  273. package/dist/routes/solidRoutes.d.ts.map +1 -1
  274. package/dist/routes/solidRoutes.js +2 -0
  275. package/dist/routes/solidRoutes.js.map +1 -1
  276. package/dist/routes/solidRoutes.tsx +2 -0
  277. package/dist/types/extension-registry.d.ts +12 -0
  278. package/dist/types/extension-registry.d.ts.map +1 -1
  279. package/dist/types/extension-registry.js.map +1 -1
  280. package/dist/types/extension-registry.ts +15 -0
  281. package/dist/types/solid-core.d.ts +2 -0
  282. package/package.json +2 -1
@@ -1,12 +1,34 @@
1
1
  import { useMemo, useState } from "react";
2
2
  import { useDispatch } from "react-redux";
3
- import { Download, FileArchive, Files, ShieldCheck } from "lucide-react";
3
+ import { Download, FileArchive, Files, ShieldCheck, Tag } from "lucide-react";
4
4
  import { SolidCircularLoader } from "../../../../../../components/core/common/SolidLoaders/SolidCircularLoader";
5
5
  import { useExportModulePackageMutation } from "../../../../../../redux/api/moduleApi";
6
6
  import { closePopup } from "../../../../../../redux/features/popupSlice";
7
7
  import { showToast } from "../../../../../../redux/features/toastSlice";
8
8
  import { SolidListRowdataDynamicFunctionProps } from "../../../../../../types/solid-core";
9
- import { SolidButton } from "../../../../../shad-cn-ui";
9
+ import { SolidButton, SolidInput, SolidSegmentedControl } from "../../../../../shad-cn-ui";
10
+
11
+ type VersionBump = "none" | "patch" | "minor" | "major";
12
+
13
+ const VERSION_BUMP_OPTIONS: Array<{ label: string; value: VersionBump }> = [
14
+ { label: "Keep", value: "none" },
15
+ { label: "Patch", value: "patch" },
16
+ { label: "Minor", value: "minor" },
17
+ { label: "Major", value: "major" },
18
+ ];
19
+
20
+ const SEMVER_PATTERN = /^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;
21
+
22
+ // Preview only, mirroring semver.inc; the API computes the version that is actually written.
23
+ function previewBumpedVersion(version: string, bump: VersionBump) {
24
+ const match = version.match(/^(\d+)\.(\d+)\.(\d+)(-[^+]*)?/);
25
+ if (!match || bump === "none") return version;
26
+ const [major, minor, patch] = match.slice(1, 4).map(Number);
27
+ const isPrerelease = Boolean(match[4]);
28
+ if (bump === "patch") return isPrerelease ? `${major}.${minor}.${patch}` : `${major}.${minor}.${patch + 1}`;
29
+ if (bump === "minor") return isPrerelease && patch === 0 ? `${major}.${minor}.0` : `${major}.${minor + 1}.0`;
30
+ return isPrerelease && minor === 0 && patch === 0 ? `${major}.0.0` : `${major + 1}.0.0`;
31
+ }
10
32
 
11
33
  const ExportModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProps) => {
12
34
  const dispatch = useDispatch();
@@ -16,6 +38,11 @@ const ExportModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProp
16
38
 
17
39
  const moduleName = String(event?.rowData?.name || event?.rowData?.id || "").trim();
18
40
  const moduleDisplayName = String(event?.rowData?.displayName || moduleName || "this module").trim();
41
+ const currentVersion = String(event?.rowData?.version || "").trim() || null;
42
+ const [bump, setBump] = useState<VersionBump>("none");
43
+ const [initialVersion, setInitialVersion] = useState("1.0.0");
44
+ const isInitialVersionValid = SEMVER_PATTERN.test(initialVersion.trim());
45
+ const exportVersion = currentVersion ? previewBumpedVersion(currentVersion, bump) : initialVersion.trim();
19
46
 
20
47
  const exportArtifacts = useMemo(
21
48
  () => [
@@ -37,11 +64,13 @@ const ExportModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProp
37
64
  setIsExporting(true);
38
65
  setErrorState(null);
39
66
 
40
- const response = await exportModulePackage({ moduleName }).unwrap();
67
+ const response = await exportModulePackage(
68
+ currentVersion ? { moduleName, bump } : { moduleName, version: initialVersion.trim() },
69
+ ).unwrap();
41
70
  const fileUrl = window.URL.createObjectURL(response.blob);
42
71
  const link = document.createElement("a");
43
72
  link.href = fileUrl;
44
- link.download = response.fileName || `${moduleName}.sldx`;
73
+ link.download = response.fileName || `${moduleName}-v${exportVersion}.sldx`;
45
74
  document.body.appendChild(link);
46
75
  link.click();
47
76
  link.remove();
@@ -51,7 +80,7 @@ const ExportModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProp
51
80
  showToast({
52
81
  severity: "success",
53
82
  summary: "Module exported",
54
- detail: `${moduleDisplayName} was packaged and downloaded as a .sldx archive.`,
83
+ detail: `${moduleDisplayName} v${exportVersion} was packaged and downloaded as a .sldx archive.`,
55
84
  })
56
85
  );
57
86
  dispatch(closePopup());
@@ -99,6 +128,42 @@ const ExportModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProp
99
128
  Export <strong>{moduleDisplayName}</strong> with its `solid-api`, `solid-ui`, and manifest assets.
100
129
  </p>
101
130
 
131
+ <div className="solid-generate-code-popup__panel">
132
+ <div className="solid-generate-code-popup__panel-title">
133
+ <Tag size={15} />
134
+ <span>Version</span>
135
+ </div>
136
+ {currentVersion ? (
137
+ <div className="solid-export-module-version">
138
+ <SolidSegmentedControl options={VERSION_BUMP_OPTIONS} value={bump} onChange={(value) => setBump(value)} />
139
+ <p className="solid-export-module-version__copy">
140
+ {bump === "none"
141
+ ? `Exports the current version, v${currentVersion}.`
142
+ : `Bumps v${currentVersion} to v${exportVersion} in the module metadata file, then exports it.`}
143
+ </p>
144
+ </div>
145
+ ) : (
146
+ <div className="solid-export-module-version">
147
+ <label className="solid-export-module-version__label" htmlFor="export-module-initial-version">
148
+ This module has no version yet. Set its initial version:
149
+ </label>
150
+ <SolidInput
151
+ id="export-module-initial-version"
152
+ value={initialVersion}
153
+ onChange={(changeEvent) => setInitialVersion(changeEvent.target.value)}
154
+ placeholder="1.0.0"
155
+ aria-invalid={!isInitialVersionValid}
156
+ />
157
+ {!isInitialVersionValid ? (
158
+ <p className="solid-export-module-version__error">Use a semver version such as 1.0.0.</p>
159
+ ) : null}
160
+ </div>
161
+ )}
162
+ <p className="solid-export-module-version__copy">
163
+ File: <code>{moduleName}-v{exportVersion || "?"}.sldx</code>
164
+ </p>
165
+ </div>
166
+
102
167
  <div className="solid-generate-code-popup__panel">
103
168
  <div className="solid-generate-code-popup__panel-title">
104
169
  <FileArchive size={15} />
@@ -131,8 +196,14 @@ const ExportModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProp
131
196
  ) : null}
132
197
 
133
198
  <div className="solid-generate-code-popup__actions">
134
- <SolidButton size="small" autoFocus leftIcon={<Download size={14} />} onClick={handleExport}>
135
- Export Module
199
+ <SolidButton
200
+ size="small"
201
+ autoFocus
202
+ leftIcon={<Download size={14} />}
203
+ onClick={handleExport}
204
+ disabled={!currentVersion && !isInitialVersionValid}
205
+ >
206
+ Export v{exportVersion || "?"}
136
207
  </SolidButton>
137
208
  <SolidButton size="small" variant="outline" onClick={() => dispatch(closePopup())}>
138
209
  Cancel
@@ -6,6 +6,7 @@ type ModuleImportListHeaderActionProps = {
6
6
  resumeTransactionKey?: string | null;
7
7
  autoResume?: boolean;
8
8
  };
9
+ export declare function refreshMatchingListViews(moduleName?: string, modelName?: string): void;
9
10
  export declare function ModuleImportListHeaderAction({ params, resumeTransactionKey, autoResume }: ModuleImportListHeaderActionProps): import("react/jsx-runtime").JSX.Element;
10
11
  export {};
11
12
  //# sourceMappingURL=ModuleImportListHeaderAction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleImportListHeaderAction.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx"],"names":[],"mappings":"AAKA,KAAK,iCAAiC,GAAG;IACvC,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAYF,wBAAgB,4BAA4B,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,UAAU,EAAE,EAAE,iCAAiC,2CAW3H"}
1
+ {"version":3,"file":"ModuleImportListHeaderAction.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx"],"names":[],"mappings":"AAKA,KAAK,iCAAiC,GAAG;IACvC,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,oBAAoB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,wBAAgB,wBAAwB,CAAC,UAAU,SAAe,EAAE,SAAS,SAAmB,QAQ/F;AAED,wBAAgB,4BAA4B,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,UAAU,EAAE,EAAE,iCAAiC,2CAW3H"}
@@ -3,7 +3,7 @@ import { useDispatch } from "react-redux";
3
3
  import { closePopup } from "../../../../../../redux/features/popupSlice";
4
4
  import { getListView, getRegisteredListViewIds } from "../../../../list/listViewRegistry";
5
5
  import { ModulePackageImportContent } from "../../../../module/ModulePackageDialog";
6
- function refreshMatchingListViews(moduleName, modelName) {
6
+ export function refreshMatchingListViews(moduleName, modelName) {
7
7
  if (moduleName === void 0) { moduleName = "solid-core"; }
8
8
  if (modelName === void 0) { modelName = "moduleMetadata"; }
9
9
  var prefix = "page:".concat(moduleName, ":").concat(modelName, ":");
@@ -1 +1 @@
1
- {"version":3,"file":"ModuleImportListHeaderAction.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAWpF,SAAS,wBAAwB,CAAC,UAAyB,EAAE,SAA4B;IAAvD,2BAAA,EAAA,yBAAyB;IAAE,0BAAA,EAAA,4BAA4B;IACvF,IAAM,MAAM,GAAG,eAAQ,UAAU,cAAI,SAAS,MAAG,CAAC;IAElD,wBAAwB,EAAE;SACvB,MAAM,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAzB,CAAyB,CAAC;SAC7C,OAAO,CAAC,UAAC,MAAM;;QACd,MAAA,WAAW,CAAC,MAAM,CAAC,0CAAE,OAAO,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,EAA+E;QAA7E,MAAM,YAAA,EAAE,oBAAoB,0BAAA,EAAE,UAAU,gBAAA;IACrF,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,OAAO,CACL,KAAC,0BAA0B,IACzB,qBAAqB,EAAE,oBAAoB,EAC3C,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,cAAM,OAAA,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAtB,CAAsB,EACrC,UAAU,EAAE,cAAM,OAAA,wBAAwB,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAC,EAA/D,CAA+D,GACjF,CACH,CAAC;AACJ,CAAC","sourcesContent":["import { useDispatch } from \"react-redux\";\nimport { closePopup } from \"../../../../../../redux/features/popupSlice\";\nimport { getListView, getRegisteredListViewIds } from \"../../../../list/listViewRegistry\";\nimport { ModulePackageImportContent } from \"../../../../module/ModulePackageDialog\";\n\ntype ModuleImportListHeaderActionProps = {\n params?: {\n moduleName?: string;\n modelName?: string;\n };\n resumeTransactionKey?: string | null;\n autoResume?: boolean;\n};\n\nfunction refreshMatchingListViews(moduleName = \"solid-core\", modelName = \"moduleMetadata\") {\n const prefix = `page:${moduleName}:${modelName}:`;\n\n getRegisteredListViewIds()\n .filter((listId) => listId.startsWith(prefix))\n .forEach((listId) => {\n getListView(listId)?.refresh();\n });\n}\n\nexport function ModuleImportListHeaderAction({ params, resumeTransactionKey, autoResume }: ModuleImportListHeaderActionProps) {\n const dispatch = useDispatch();\n\n return (\n <ModulePackageImportContent\n initialTransactionKey={resumeTransactionKey}\n autoResume={autoResume}\n onClose={() => dispatch(closePopup())}\n onImported={() => refreshMatchingListViews(params?.moduleName, params?.modelName)}\n />\n );\n}\n"]}
1
+ {"version":3,"file":"ModuleImportListHeaderAction.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/ModuleImportListHeaderAction.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AAWpF,MAAM,UAAU,wBAAwB,CAAC,UAAyB,EAAE,SAA4B;IAAvD,2BAAA,EAAA,yBAAyB;IAAE,0BAAA,EAAA,4BAA4B;IAC9F,IAAM,MAAM,GAAG,eAAQ,UAAU,cAAI,SAAS,MAAG,CAAC;IAElD,wBAAwB,EAAE;SACvB,MAAM,CAAC,UAAC,MAAM,IAAK,OAAA,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAzB,CAAyB,CAAC;SAC7C,OAAO,CAAC,UAAC,MAAM;;QACd,MAAA,WAAW,CAAC,MAAM,CAAC,0CAAE,OAAO,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,EAA+E;QAA7E,MAAM,YAAA,EAAE,oBAAoB,0BAAA,EAAE,UAAU,gBAAA;IACrF,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,OAAO,CACL,KAAC,0BAA0B,IACzB,qBAAqB,EAAE,oBAAoB,EAC3C,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,cAAM,OAAA,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAtB,CAAsB,EACrC,UAAU,EAAE,cAAM,OAAA,wBAAwB,CAAC,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,SAAS,CAAC,EAA/D,CAA+D,GACjF,CACH,CAAC;AACJ,CAAC","sourcesContent":["import { useDispatch } from \"react-redux\";\nimport { closePopup } from \"../../../../../../redux/features/popupSlice\";\nimport { getListView, getRegisteredListViewIds } from \"../../../../list/listViewRegistry\";\nimport { ModulePackageImportContent } from \"../../../../module/ModulePackageDialog\";\n\ntype ModuleImportListHeaderActionProps = {\n params?: {\n moduleName?: string;\n modelName?: string;\n };\n resumeTransactionKey?: string | null;\n autoResume?: boolean;\n};\n\nexport function refreshMatchingListViews(moduleName = \"solid-core\", modelName = \"moduleMetadata\") {\n const prefix = `page:${moduleName}:${modelName}:`;\n\n getRegisteredListViewIds()\n .filter((listId) => listId.startsWith(prefix))\n .forEach((listId) => {\n getListView(listId)?.refresh();\n });\n}\n\nexport function ModuleImportListHeaderAction({ params, resumeTransactionKey, autoResume }: ModuleImportListHeaderActionProps) {\n const dispatch = useDispatch();\n\n return (\n <ModulePackageImportContent\n initialTransactionKey={resumeTransactionKey}\n autoResume={autoResume}\n onClose={() => dispatch(closePopup())}\n onImported={() => refreshMatchingListViews(params?.moduleName, params?.modelName)}\n />\n );\n}\n"]}
@@ -12,7 +12,7 @@ type ModuleImportListHeaderActionProps = {
12
12
  autoResume?: boolean;
13
13
  };
14
14
 
15
- function refreshMatchingListViews(moduleName = "solid-core", modelName = "moduleMetadata") {
15
+ export function refreshMatchingListViews(moduleName = "solid-core", modelName = "moduleMetadata") {
16
16
  const prefix = `page:${moduleName}:${modelName}:`;
17
17
 
18
18
  getRegisteredListViewIds()
@@ -0,0 +1,4 @@
1
+ import { SolidListRowdataDynamicFunctionProps } from "../../../../../../types/solid-core";
2
+ declare const RestoreModulePackageRowAction: (event: SolidListRowdataDynamicFunctionProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default RestoreModulePackageRowAction;
4
+ //# sourceMappingURL=RestoreModulePackageRowAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RestoreModulePackageRowAction.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.tsx"],"names":[],"mappings":"AAUA,OAAO,EAAE,oCAAoC,EAAE,MAAM,oCAAoC,CAAC;AAK1F,QAAA,MAAM,6BAA6B,UAAW,oCAAoC,4CAqIjF,CAAC;AAEF,eAAe,6BAA6B,CAAC"}
@@ -0,0 +1,131 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ 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;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
38
+ import { useEffect, useState } from "react";
39
+ import { useDispatch } from "react-redux";
40
+ import { History, TriangleAlert } from "lucide-react";
41
+ import { SolidCircularLoader } from "../../../../../../components/core/common/SolidLoaders/SolidCircularLoader";
42
+ import { useLazyGetLatestModulePackageBackupQuery, useRestoreModulePackageImportMutation, } from "../../../../../../redux/api/moduleApi";
43
+ import { closePopup } from "../../../../../../redux/features/popupSlice";
44
+ import { showToast } from "../../../../../../redux/features/toastSlice";
45
+ import { SolidButton } from "../../../../../shad-cn-ui";
46
+ var formatVersion = function (version) { return (version ? "v".concat(version) : "unversioned"); };
47
+ var RestoreModulePackageRowAction = function (event) {
48
+ var _a, _b, _c, _d, _e, _f;
49
+ var dispatch = useDispatch();
50
+ var moduleName = String(((_a = event === null || event === void 0 ? void 0 : event.rowData) === null || _a === void 0 ? void 0 : _a.name) || ((_b = event === null || event === void 0 ? void 0 : event.rowData) === null || _b === void 0 ? void 0 : _b.id) || "").trim();
51
+ var moduleDisplayName = String(((_c = event === null || event === void 0 ? void 0 : event.rowData) === null || _c === void 0 ? void 0 : _c.displayName) || moduleName || "this module").trim();
52
+ var fetchLatestBackup = useLazyGetLatestModulePackageBackupQuery()[0];
53
+ var restoreModulePackageImport = useRestoreModulePackageImportMutation()[0];
54
+ var _g = useState(null), backup = _g[0], setBackup = _g[1];
55
+ var _h = useState(true), isLoading = _h[0], setIsLoading = _h[1];
56
+ var _j = useState(false), isRestoring = _j[0], setIsRestoring = _j[1];
57
+ var _k = useState(null), errorState = _k[0], setErrorState = _k[1];
58
+ useEffect(function () {
59
+ var cancelled = false;
60
+ var load = function () { return __awaiter(void 0, void 0, void 0, function () {
61
+ var response, error_1;
62
+ var _a;
63
+ return __generator(this, function (_b) {
64
+ switch (_b.label) {
65
+ case 0:
66
+ _b.trys.push([0, 2, 3, 4]);
67
+ return [4 /*yield*/, fetchLatestBackup({ moduleName: moduleName }, false).unwrap()];
68
+ case 1:
69
+ response = _b.sent();
70
+ if (!cancelled)
71
+ setBackup(response !== null && response !== void 0 ? response : null);
72
+ return [3 /*break*/, 4];
73
+ case 2:
74
+ error_1 = _b.sent();
75
+ if (!cancelled)
76
+ setErrorState(String(((_a = error_1 === null || error_1 === void 0 ? void 0 : error_1.data) === null || _a === void 0 ? void 0 : _a.message) || (error_1 === null || error_1 === void 0 ? void 0 : error_1.message) || "Unable to look up backups for this module."));
77
+ return [3 /*break*/, 4];
78
+ case 3:
79
+ if (!cancelled)
80
+ setIsLoading(false);
81
+ return [7 /*endfinally*/];
82
+ case 4: return [2 /*return*/];
83
+ }
84
+ });
85
+ }); };
86
+ void load();
87
+ return function () {
88
+ cancelled = true;
89
+ };
90
+ }, [fetchLatestBackup, moduleName]);
91
+ var handleRestore = function () { return __awaiter(void 0, void 0, void 0, function () {
92
+ var error_2, detail;
93
+ var _a, _b;
94
+ return __generator(this, function (_c) {
95
+ switch (_c.label) {
96
+ case 0:
97
+ if (!(backup === null || backup === void 0 ? void 0 : backup.transactionKey))
98
+ return [2 /*return*/];
99
+ _c.label = 1;
100
+ case 1:
101
+ _c.trys.push([1, 3, , 4]);
102
+ setIsRestoring(true);
103
+ setErrorState(null);
104
+ return [4 /*yield*/, restoreModulePackageImport({ transactionKey: backup.transactionKey }).unwrap()];
105
+ case 2:
106
+ _c.sent();
107
+ dispatch(showToast({
108
+ severity: "success",
109
+ summary: "Previous version restored",
110
+ detail: "".concat(moduleDisplayName, " ").concat(formatVersion((_a = backup.backup) === null || _a === void 0 ? void 0 : _a.version), " was put back. Wait for the UI and API to restart, then refresh this module list page to continue with build and seed."),
111
+ }));
112
+ dispatch(closePopup());
113
+ return [3 /*break*/, 4];
114
+ case 3:
115
+ error_2 = _c.sent();
116
+ detail = String(((_b = error_2 === null || error_2 === void 0 ? void 0 : error_2.data) === null || _b === void 0 ? void 0 : _b.message) || (error_2 === null || error_2 === void 0 ? void 0 : error_2.message) || "Unable to restore the previous version.");
117
+ setErrorState(detail);
118
+ dispatch(showToast({ severity: "error", summary: "Restore failed", detail: detail }));
119
+ setIsRestoring(false);
120
+ return [3 /*break*/, 4];
121
+ case 4: return [2 /*return*/];
122
+ }
123
+ });
124
+ }); };
125
+ if (isLoading || isRestoring) {
126
+ return (_jsxs("div", { className: "solid-generate-code-popup", children: [_jsx("div", { className: "solid-filter-dialog-head solid-generate-code-popup__head", children: _jsx("div", { children: _jsx("h3", { className: "solid-filter-dialog-title", children: "Restore Previous Version" }) }) }), _jsx("div", { className: "solid-filter-dialog-sep" }), _jsxs("div", { className: "solid-filter-dialog-body solid-generate-code-popup__body solid-generate-code-popup__body--loading", children: [_jsx(SolidCircularLoader, {}), _jsx("p", { className: "solid-generate-code-popup__loading-title", children: isRestoring ? "Restoring..." : "Looking for a backup..." })] })] }));
127
+ }
128
+ return (_jsxs("div", { className: "solid-generate-code-popup", children: [_jsx("div", { className: "solid-filter-dialog-head solid-generate-code-popup__head", children: _jsxs("div", { children: [_jsx("h3", { className: "solid-filter-dialog-title", children: "Restore Previous Version" }), _jsx("p", { className: "solid-filter-dialog-subtitle m-0", children: "Put back the module folders from before the last update." })] }) }), _jsx("div", { className: "solid-filter-dialog-sep" }), _jsxs("div", { className: "solid-filter-dialog-body solid-generate-code-popup__body", children: [backup ? (_jsxs(_Fragment, { children: [_jsxs("p", { className: "solid-generate-code-popup__intro", children: ["Restore ", _jsx("strong", { children: moduleDisplayName }), " from ", _jsx("strong", { children: formatVersion(backup.currentVersion) }), " back to", " ", _jsx("strong", { children: formatVersion((_d = backup.backup) === null || _d === void 0 ? void 0 : _d.version) }), ". The backup was taken on", " ", ((_e = backup.backup) === null || _e === void 0 ? void 0 : _e.createdAt) ? new Date(backup.backup.createdAt).toLocaleString() : "an earlier update", "."] }), _jsxs("div", { className: "solid-generate-code-popup__panel", children: [_jsxs("div", { className: "solid-generate-code-popup__panel-title", children: [_jsx(History, { size: 15 }), _jsx("span", { children: "What happens" })] }), _jsxs("ul", { className: "solid-generate-code-popup__list", children: [_jsx("li", { children: "The solid-api and solid-ui folders for this module are replaced with the backup." }), _jsx("li", { children: "The UI and API restart. Refresh this page afterwards and continue with build and seed; prune is turned on for that seed." })] })] }), _jsxs("div", { className: "solid-generate-code-popup__notice is-warning", children: [_jsx(TriangleAlert, { size: 16 }), _jsx("span", { children: "When the API restarts, the database schema is synced to the restored code: columns added by the newer version are dropped along with their data, and tables it added are left in place. Back up the database first if this module has data you care about." })] })] })) : (_jsxs("p", { className: "solid-generate-code-popup__intro", children: ["There is no backup for ", _jsx("strong", { children: moduleDisplayName }), ". A backup is taken each time the module is updated from a package."] })), errorState ? (_jsxs("div", { className: "solid-generate-code-popup__notice is-warning", children: [_jsx(TriangleAlert, { size: 16 }), _jsx("span", { children: errorState })] })) : null, _jsxs("div", { className: "solid-generate-code-popup__actions", children: [backup ? (_jsxs(SolidButton, { size: "small", variant: "destructive", leftIcon: _jsx(History, { size: 14 }), onClick: handleRestore, children: ["Restore ", formatVersion((_f = backup.backup) === null || _f === void 0 ? void 0 : _f.version)] })) : null, _jsx(SolidButton, { size: "small", variant: "outline", onClick: function () { return dispatch(closePopup()); }, children: backup ? "Cancel" : "Close" })] })] })] }));
129
+ };
130
+ export default RestoreModulePackageRowAction;
131
+ //# sourceMappingURL=RestoreModulePackageRowAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RestoreModulePackageRowAction.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/RestoreModulePackageRowAction.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport { History, TriangleAlert } from \"lucide-react\";\nimport { SolidCircularLoader } from \"../../../../../../components/core/common/SolidLoaders/SolidCircularLoader\";\nimport {\n useLazyGetLatestModulePackageBackupQuery,\n useRestoreModulePackageImportMutation,\n} from \"../../../../../../redux/api/moduleApi\";\nimport { closePopup } from \"../../../../../../redux/features/popupSlice\";\nimport { showToast } from \"../../../../../../redux/features/toastSlice\";\nimport { SolidListRowdataDynamicFunctionProps } from \"../../../../../../types/solid-core\";\nimport { SolidButton } from \"../../../../../shad-cn-ui\";\n\nconst formatVersion = (version?: string | null) => (version ? `v${version}` : \"unversioned\");\n\nconst RestoreModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProps) => {\n const dispatch = useDispatch();\n const moduleName = String(event?.rowData?.name || event?.rowData?.id || \"\").trim();\n const moduleDisplayName = String(event?.rowData?.displayName || moduleName || \"this module\").trim();\n\n const [fetchLatestBackup] = useLazyGetLatestModulePackageBackupQuery();\n const [restoreModulePackageImport] = useRestoreModulePackageImportMutation();\n const [backup, setBackup] = useState<any | null>(null);\n const [isLoading, setIsLoading] = useState(true);\n const [isRestoring, setIsRestoring] = useState(false);\n const [errorState, setErrorState] = useState<string | null>(null);\n\n useEffect(() => {\n let cancelled = false;\n const load = async () => {\n try {\n const response = await fetchLatestBackup({ moduleName }, false).unwrap();\n if (!cancelled) setBackup(response ?? null);\n } catch (error: any) {\n if (!cancelled) setErrorState(String(error?.data?.message || error?.message || \"Unable to look up backups for this module.\"));\n } finally {\n if (!cancelled) setIsLoading(false);\n }\n };\n void load();\n return () => {\n cancelled = true;\n };\n }, [fetchLatestBackup, moduleName]);\n\n const handleRestore = async () => {\n if (!backup?.transactionKey) return;\n\n try {\n setIsRestoring(true);\n setErrorState(null);\n await restoreModulePackageImport({ transactionKey: backup.transactionKey }).unwrap();\n dispatch(\n showToast({\n severity: \"success\",\n summary: \"Previous version restored\",\n detail: `${moduleDisplayName} ${formatVersion(backup.backup?.version)} was put back. Wait for the UI and API to restart, then refresh this module list page to continue with build and seed.`,\n }),\n );\n dispatch(closePopup());\n } catch (error: any) {\n const detail = String(error?.data?.message || error?.message || \"Unable to restore the previous version.\");\n setErrorState(detail);\n dispatch(showToast({ severity: \"error\", summary: \"Restore failed\", detail }));\n setIsRestoring(false);\n }\n };\n\n if (isLoading || isRestoring) {\n return (\n <div className=\"solid-generate-code-popup\">\n <div className=\"solid-filter-dialog-head solid-generate-code-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Restore Previous Version</h3>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-generate-code-popup__body solid-generate-code-popup__body--loading\">\n <SolidCircularLoader />\n <p className=\"solid-generate-code-popup__loading-title\">{isRestoring ? \"Restoring...\" : \"Looking for a backup...\"}</p>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"solid-generate-code-popup\">\n <div className=\"solid-filter-dialog-head solid-generate-code-popup__head\">\n <div>\n <h3 className=\"solid-filter-dialog-title\">Restore Previous Version</h3>\n <p className=\"solid-filter-dialog-subtitle m-0\">Put back the module folders from before the last update.</p>\n </div>\n </div>\n <div className=\"solid-filter-dialog-sep\" />\n <div className=\"solid-filter-dialog-body solid-generate-code-popup__body\">\n {backup ? (\n <>\n <p className=\"solid-generate-code-popup__intro\">\n Restore <strong>{moduleDisplayName}</strong> from <strong>{formatVersion(backup.currentVersion)}</strong> back to{\" \"}\n <strong>{formatVersion(backup.backup?.version)}</strong>. The backup was taken on{\" \"}\n {backup.backup?.createdAt ? new Date(backup.backup.createdAt).toLocaleString() : \"an earlier update\"}.\n </p>\n\n <div className=\"solid-generate-code-popup__panel\">\n <div className=\"solid-generate-code-popup__panel-title\">\n <History size={15} />\n <span>What happens</span>\n </div>\n <ul className=\"solid-generate-code-popup__list\">\n <li>The solid-api and solid-ui folders for this module are replaced with the backup.</li>\n <li>The UI and API restart. Refresh this page afterwards and continue with build and seed; prune is turned on for that seed.</li>\n </ul>\n </div>\n\n <div className=\"solid-generate-code-popup__notice is-warning\">\n <TriangleAlert size={16} />\n <span>\n When the API restarts, the database schema is synced to the restored code: columns added by the newer version are dropped\n along with their data, and tables it added are left in place. Back up the database first if this module has data you care about.\n </span>\n </div>\n </>\n ) : (\n <p className=\"solid-generate-code-popup__intro\">\n There is no backup for <strong>{moduleDisplayName}</strong>. A backup is taken each time the module is updated from a package.\n </p>\n )}\n\n {errorState ? (\n <div className=\"solid-generate-code-popup__notice is-warning\">\n <TriangleAlert size={16} />\n <span>{errorState}</span>\n </div>\n ) : null}\n\n <div className=\"solid-generate-code-popup__actions\">\n {backup ? (\n <SolidButton size=\"small\" variant=\"destructive\" leftIcon={<History size={14} />} onClick={handleRestore}>\n Restore {formatVersion(backup.backup?.version)}\n </SolidButton>\n ) : null}\n <SolidButton size=\"small\" variant=\"outline\" onClick={() => dispatch(closePopup())}>\n {backup ? \"Cancel\" : \"Close\"}\n </SolidButton>\n </div>\n </div>\n </div>\n );\n};\n\nexport default RestoreModulePackageRowAction;\n"]}
@@ -0,0 +1,151 @@
1
+ import { useEffect, useState } from "react";
2
+ import { useDispatch } from "react-redux";
3
+ import { History, TriangleAlert } from "lucide-react";
4
+ import { SolidCircularLoader } from "../../../../../../components/core/common/SolidLoaders/SolidCircularLoader";
5
+ import {
6
+ useLazyGetLatestModulePackageBackupQuery,
7
+ useRestoreModulePackageImportMutation,
8
+ } from "../../../../../../redux/api/moduleApi";
9
+ import { closePopup } from "../../../../../../redux/features/popupSlice";
10
+ import { showToast } from "../../../../../../redux/features/toastSlice";
11
+ import { SolidListRowdataDynamicFunctionProps } from "../../../../../../types/solid-core";
12
+ import { SolidButton } from "../../../../../shad-cn-ui";
13
+
14
+ const formatVersion = (version?: string | null) => (version ? `v${version}` : "unversioned");
15
+
16
+ const RestoreModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProps) => {
17
+ const dispatch = useDispatch();
18
+ const moduleName = String(event?.rowData?.name || event?.rowData?.id || "").trim();
19
+ const moduleDisplayName = String(event?.rowData?.displayName || moduleName || "this module").trim();
20
+
21
+ const [fetchLatestBackup] = useLazyGetLatestModulePackageBackupQuery();
22
+ const [restoreModulePackageImport] = useRestoreModulePackageImportMutation();
23
+ const [backup, setBackup] = useState<any | null>(null);
24
+ const [isLoading, setIsLoading] = useState(true);
25
+ const [isRestoring, setIsRestoring] = useState(false);
26
+ const [errorState, setErrorState] = useState<string | null>(null);
27
+
28
+ useEffect(() => {
29
+ let cancelled = false;
30
+ const load = async () => {
31
+ try {
32
+ const response = await fetchLatestBackup({ moduleName }, false).unwrap();
33
+ if (!cancelled) setBackup(response ?? null);
34
+ } catch (error: any) {
35
+ if (!cancelled) setErrorState(String(error?.data?.message || error?.message || "Unable to look up backups for this module."));
36
+ } finally {
37
+ if (!cancelled) setIsLoading(false);
38
+ }
39
+ };
40
+ void load();
41
+ return () => {
42
+ cancelled = true;
43
+ };
44
+ }, [fetchLatestBackup, moduleName]);
45
+
46
+ const handleRestore = async () => {
47
+ if (!backup?.transactionKey) return;
48
+
49
+ try {
50
+ setIsRestoring(true);
51
+ setErrorState(null);
52
+ await restoreModulePackageImport({ transactionKey: backup.transactionKey }).unwrap();
53
+ dispatch(
54
+ showToast({
55
+ severity: "success",
56
+ summary: "Previous version restored",
57
+ detail: `${moduleDisplayName} ${formatVersion(backup.backup?.version)} was put back. Wait for the UI and API to restart, then refresh this module list page to continue with build and seed.`,
58
+ }),
59
+ );
60
+ dispatch(closePopup());
61
+ } catch (error: any) {
62
+ const detail = String(error?.data?.message || error?.message || "Unable to restore the previous version.");
63
+ setErrorState(detail);
64
+ dispatch(showToast({ severity: "error", summary: "Restore failed", detail }));
65
+ setIsRestoring(false);
66
+ }
67
+ };
68
+
69
+ if (isLoading || isRestoring) {
70
+ return (
71
+ <div className="solid-generate-code-popup">
72
+ <div className="solid-filter-dialog-head solid-generate-code-popup__head">
73
+ <div>
74
+ <h3 className="solid-filter-dialog-title">Restore Previous Version</h3>
75
+ </div>
76
+ </div>
77
+ <div className="solid-filter-dialog-sep" />
78
+ <div className="solid-filter-dialog-body solid-generate-code-popup__body solid-generate-code-popup__body--loading">
79
+ <SolidCircularLoader />
80
+ <p className="solid-generate-code-popup__loading-title">{isRestoring ? "Restoring..." : "Looking for a backup..."}</p>
81
+ </div>
82
+ </div>
83
+ );
84
+ }
85
+
86
+ return (
87
+ <div className="solid-generate-code-popup">
88
+ <div className="solid-filter-dialog-head solid-generate-code-popup__head">
89
+ <div>
90
+ <h3 className="solid-filter-dialog-title">Restore Previous Version</h3>
91
+ <p className="solid-filter-dialog-subtitle m-0">Put back the module folders from before the last update.</p>
92
+ </div>
93
+ </div>
94
+ <div className="solid-filter-dialog-sep" />
95
+ <div className="solid-filter-dialog-body solid-generate-code-popup__body">
96
+ {backup ? (
97
+ <>
98
+ <p className="solid-generate-code-popup__intro">
99
+ Restore <strong>{moduleDisplayName}</strong> from <strong>{formatVersion(backup.currentVersion)}</strong> back to{" "}
100
+ <strong>{formatVersion(backup.backup?.version)}</strong>. The backup was taken on{" "}
101
+ {backup.backup?.createdAt ? new Date(backup.backup.createdAt).toLocaleString() : "an earlier update"}.
102
+ </p>
103
+
104
+ <div className="solid-generate-code-popup__panel">
105
+ <div className="solid-generate-code-popup__panel-title">
106
+ <History size={15} />
107
+ <span>What happens</span>
108
+ </div>
109
+ <ul className="solid-generate-code-popup__list">
110
+ <li>The solid-api and solid-ui folders for this module are replaced with the backup.</li>
111
+ <li>The UI and API restart. Refresh this page afterwards and continue with build and seed; prune is turned on for that seed.</li>
112
+ </ul>
113
+ </div>
114
+
115
+ <div className="solid-generate-code-popup__notice is-warning">
116
+ <TriangleAlert size={16} />
117
+ <span>
118
+ When the API restarts, the database schema is synced to the restored code: columns added by the newer version are dropped
119
+ along with their data, and tables it added are left in place. Back up the database first if this module has data you care about.
120
+ </span>
121
+ </div>
122
+ </>
123
+ ) : (
124
+ <p className="solid-generate-code-popup__intro">
125
+ There is no backup for <strong>{moduleDisplayName}</strong>. A backup is taken each time the module is updated from a package.
126
+ </p>
127
+ )}
128
+
129
+ {errorState ? (
130
+ <div className="solid-generate-code-popup__notice is-warning">
131
+ <TriangleAlert size={16} />
132
+ <span>{errorState}</span>
133
+ </div>
134
+ ) : null}
135
+
136
+ <div className="solid-generate-code-popup__actions">
137
+ {backup ? (
138
+ <SolidButton size="small" variant="destructive" leftIcon={<History size={14} />} onClick={handleRestore}>
139
+ Restore {formatVersion(backup.backup?.version)}
140
+ </SolidButton>
141
+ ) : null}
142
+ <SolidButton size="small" variant="outline" onClick={() => dispatch(closePopup())}>
143
+ {backup ? "Cancel" : "Close"}
144
+ </SolidButton>
145
+ </div>
146
+ </div>
147
+ </div>
148
+ );
149
+ };
150
+
151
+ export default RestoreModulePackageRowAction;
@@ -0,0 +1,4 @@
1
+ import { SolidListRowdataDynamicFunctionProps } from "../../../../../../types/solid-core";
2
+ declare const UpdateModulePackageRowAction: (event: SolidListRowdataDynamicFunctionProps) => import("react/jsx-runtime").JSX.Element;
3
+ export default UpdateModulePackageRowAction;
4
+ //# sourceMappingURL=UpdateModulePackageRowAction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateModulePackageRowAction.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,oCAAoC,EAAE,MAAM,oCAAoC,CAAC;AAI1F,QAAA,MAAM,4BAA4B,UAAW,oCAAoC,4CAWhF,CAAC;AAEF,eAAe,4BAA4B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useDispatch } from "react-redux";
3
+ import { closePopup } from "../../../../../../redux/features/popupSlice";
4
+ import { ModulePackageImportContent } from "../../../../module/ModulePackageDialog";
5
+ import { refreshMatchingListViews } from "./ModuleImportListHeaderAction";
6
+ var UpdateModulePackageRowAction = function (event) {
7
+ var _a;
8
+ var dispatch = useDispatch();
9
+ var moduleName = String(((_a = event === null || event === void 0 ? void 0 : event.rowData) === null || _a === void 0 ? void 0 : _a.name) || "").trim();
10
+ return (_jsx(ModulePackageImportContent, { targetModuleName: moduleName || null, onClose: function () { return dispatch(closePopup()); }, onImported: function () { var _a, _b; return refreshMatchingListViews((_a = event === null || event === void 0 ? void 0 : event.params) === null || _a === void 0 ? void 0 : _a.moduleName, (_b = event === null || event === void 0 ? void 0 : event.params) === null || _b === void 0 ? void 0 : _b.modelName); } }));
11
+ };
12
+ export default UpdateModulePackageRowAction;
13
+ //# sourceMappingURL=UpdateModulePackageRowAction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateModulePackageRowAction.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/moduleMetadata/list/UpdateModulePackageRowAction.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,6CAA6C,CAAC;AAEzE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,IAAM,4BAA4B,GAAG,UAAC,KAA2C;;IAC/E,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,IAAM,UAAU,GAAG,MAAM,CAAC,CAAA,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,0CAAE,IAAI,KAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAE7D,OAAO,CACL,KAAC,0BAA0B,IACzB,gBAAgB,EAAE,UAAU,IAAI,IAAI,EACpC,OAAO,EAAE,cAAM,OAAA,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAtB,CAAsB,EACrC,UAAU,EAAE,0BAAM,OAAA,wBAAwB,CAAC,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,0CAAE,UAAU,EAAE,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,0CAAE,SAAS,CAAC,CAAA,EAAA,GAC/F,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,4BAA4B,CAAC","sourcesContent":["import { useDispatch } from \"react-redux\";\nimport { closePopup } from \"../../../../../../redux/features/popupSlice\";\nimport { SolidListRowdataDynamicFunctionProps } from \"../../../../../../types/solid-core\";\nimport { ModulePackageImportContent } from \"../../../../module/ModulePackageDialog\";\nimport { refreshMatchingListViews } from \"./ModuleImportListHeaderAction\";\n\nconst UpdateModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProps) => {\n const dispatch = useDispatch();\n const moduleName = String(event?.rowData?.name || \"\").trim();\n\n return (\n <ModulePackageImportContent\n targetModuleName={moduleName || null}\n onClose={() => dispatch(closePopup())}\n onImported={() => refreshMatchingListViews(event?.params?.moduleName, event?.params?.modelName)}\n />\n );\n};\n\nexport default UpdateModulePackageRowAction;\n"]}
@@ -0,0 +1,20 @@
1
+ import { useDispatch } from "react-redux";
2
+ import { closePopup } from "../../../../../../redux/features/popupSlice";
3
+ import { SolidListRowdataDynamicFunctionProps } from "../../../../../../types/solid-core";
4
+ import { ModulePackageImportContent } from "../../../../module/ModulePackageDialog";
5
+ import { refreshMatchingListViews } from "./ModuleImportListHeaderAction";
6
+
7
+ const UpdateModulePackageRowAction = (event: SolidListRowdataDynamicFunctionProps) => {
8
+ const dispatch = useDispatch();
9
+ const moduleName = String(event?.rowData?.name || "").trim();
10
+
11
+ return (
12
+ <ModulePackageImportContent
13
+ targetModuleName={moduleName || null}
14
+ onClose={() => dispatch(closePopup())}
15
+ onImported={() => refreshMatchingListViews(event?.params?.moduleName, event?.params?.modelName)}
16
+ />
17
+ );
18
+ };
19
+
20
+ export default UpdateModulePackageRowAction;
@@ -1 +1 @@
1
- {"version":3,"file":"SolidFormView.d.ts","sourceRoot":"","sources":["../../../../src/components/core/form/SolidFormView.tsx"],"names":[],"mappings":"AA+DA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,mBAAmB,CAAC,EAAE,GAAG,CAAA;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AA6IF,eAAO,MAAM,uBAAuB,WAAY,GAAG,EAAE,KAAG,GAQvD,CAAA;AACD,eAAO,MAAM,sBAAsB,QAAS,MAAM,uBAAuB,OAAO,MAAM,EAAE,GAAG,CAAC,QAa3F,CAAC;AAkXF,QAAA,MAAM,aAAa,WAAY,kBAAkB,4CA++ChD,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"SolidFormView.d.ts","sourceRoot":"","sources":["../../../../src/components/core/form/SolidFormView.tsx"],"names":[],"mappings":"AA+DA,MAAM,MAAM,kBAAkB,GAAG;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,GAAG,CAAC;IACvB,mBAAmB,CAAC,EAAE,GAAG,CAAA;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AA6IF,eAAO,MAAM,uBAAuB,WAAY,GAAG,EAAE,KAAG,GAQvD,CAAA;AACD,eAAO,MAAM,sBAAsB,QAAS,MAAM,uBAAuB,OAAO,MAAM,EAAE,GAAG,CAAC,QAa3F,CAAC;AAkXF,QAAA,MAAM,aAAa,WAAY,kBAAkB,4CAm/ChD,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -950,6 +950,10 @@ var SolidFormView = function (params) {
950
950
  case 4: return [4 /*yield*/, updateEntity({ id: +params.id, data: formData_1 }).unwrap()];
951
951
  case 5:
952
952
  result = _p.sent();
953
+ // The audit event is produced by the entity update. Refresh the chatter
954
+ // directly from this save path so the panel does not depend on mutation
955
+ // status transitions to notice the new audit message.
956
+ setRefreshChatterMessage(true);
953
957
  // Keep the current screen in sync with the normalized payload returned by the API
954
958
  // so toggling view/edit after save does not continue showing stale pre-save values.
955
959
  if (result === null || result === void 0 ? void 0 : result.data) {