@solidxai/core-ui 0.1.19-beta.0 → 0.1.19-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.
- package/README.md +19 -0
- package/dist/components/common/SolidPopupContainer.d.ts.map +1 -1
- package/dist/components/common/SolidPopupContainer.js +3 -2
- package/dist/components/common/SolidPopupContainer.js.map +1 -1
- package/dist/components/common/SolidPopupContainer.tsx +3 -2
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts.map +1 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +4 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
- package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +11 -5
- package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatter.js +2 -1
- package/dist/components/core/chatter/SolidChatter.js.map +1 -1
- package/dist/components/core/chatter/SolidChatter.tsx +2 -0
- package/dist/components/core/chatter/SolidChatterMessageBox.d.ts +2 -0
- package/dist/components/core/chatter/SolidChatterMessageBox.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.js +7 -4
- package/dist/components/core/chatter/SolidChatterMessageBox.js.map +1 -1
- package/dist/components/core/chatter/SolidChatterMessageBox.tsx +8 -3
- package/dist/components/core/chatter/SolidChatterMessageWidget.d.ts +5 -0
- package/dist/components/core/chatter/SolidChatterMessageWidget.d.ts.map +1 -0
- package/dist/components/core/chatter/SolidChatterMessageWidget.js +85 -0
- package/dist/components/core/chatter/SolidChatterMessageWidget.js.map +1 -0
- package/dist/components/core/chatter/SolidChatterMessageWidget.tsx +59 -0
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +6 -5
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +6 -5
- package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.d.ts +11 -0
- package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.js +102 -0
- package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.js.map +1 -0
- package/dist/components/core/extension/solid-core/agentEvent/list/AgentEventOutcomeListWidget.tsx +129 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.d.ts +4 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.js +29 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.js.map +1 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.module.css +226 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentRegistryCardWidget.tsx +57 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.d.ts +4 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js +33 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.js.map +1 -0
- package/dist/components/core/extension/solid-core/agentRegistry/card/AgentResourceCardWidget.tsx +47 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.d.ts +5 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.js +59 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.js.map +1 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentProcessesPanel.tsx +82 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.d.ts +17 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.js +258 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.js.map +1 -0
- package/dist/components/core/extension/solid-core/agentToolRegistry/AgentToolSessionsPanel.tsx +286 -0
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js +102 -62
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.js.map +1 -1
- package/dist/components/core/extension/solid-core/modelMetadata/list/DeleteModelRowAction.tsx +116 -106
- package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.d.ts +6 -0
- package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.js +37 -0
- package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/MqMessageSelectedRecordsSummaryHeaderAction.tsx +89 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.d.ts +3 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.js +18 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageDetailsKanbanCardAction.tsx +51 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.d.ts +10 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.d.ts.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.js +63 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.js.map +1 -0
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanQuickFilterHeaderAction.tsx +111 -0
- package/dist/components/core/field/FieldListViewData.d.ts.map +1 -1
- package/dist/components/core/field/FieldListViewData.js +29 -9
- package/dist/components/core/field/FieldListViewData.js.map +1 -1
- package/dist/components/core/field/FieldListViewData.tsx +7 -6
- package/dist/components/core/form/SolidFormView.d.ts +1 -0
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +49 -48
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +4 -3
- package/dist/components/core/form/fields/SolidPasswordField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidPasswordField.js +13 -1
- package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
- package/dist/components/core/form/fields/SolidPasswordField.tsx +14 -3
- package/dist/components/core/kanban/KanbanBoard.d.ts +1 -1
- package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.js +2 -2
- package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.tsx +5 -1
- package/dist/components/core/kanban/KanbanCard.d.ts +3 -0
- package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanCard.js +5 -4
- package/dist/components/core/kanban/KanbanCard.js.map +1 -1
- package/dist/components/core/kanban/KanbanCard.tsx +31 -11
- package/dist/components/core/kanban/KanbanColumn.d.ts +5 -1
- package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.js +14 -3
- package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.tsx +43 -3
- package/dist/components/core/kanban/SolidKanbanView.d.ts +2 -0
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +90 -52
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +93 -13
- package/dist/components/core/list/SolidDataTable.d.ts +2 -1
- package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
- package/dist/components/core/list/SolidDataTable.js +2 -2
- package/dist/components/core/list/SolidDataTable.js.map +1 -1
- package/dist/components/core/list/SolidDataTable.tsx +3 -0
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +114 -57
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +71 -7
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js +14 -0
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.js.map +1 -1
- package/dist/components/core/list/SolidListViewHeaderContextMenuButton.tsx +13 -0
- package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.d.ts +3 -0
- package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.js +51 -0
- package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.js.map +1 -0
- package/dist/components/core/list/widgets/AgentProcessNeedsRestartListWidget.tsx +60 -0
- package/dist/components/core/list/widgets/SolidIconNameListViewWidget.d.ts +4 -0
- package/dist/components/core/list/widgets/SolidIconNameListViewWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidIconNameListViewWidget.js +24 -0
- package/dist/components/core/list/widgets/SolidIconNameListViewWidget.js.map +1 -0
- package/dist/components/core/list/widgets/SolidIconNameListViewWidget.tsx +32 -0
- package/dist/components/core/model/ModelListViewData.d.ts.map +1 -1
- package/dist/components/core/model/ModelListViewData.js +6 -23
- package/dist/components/core/model/ModelListViewData.js.map +1 -1
- package/dist/components/core/model/ModelListViewData.tsx +1 -48
- package/dist/components/core/solid-agent/AgentModelIndicator.d.ts +5 -0
- package/dist/components/core/solid-agent/AgentModelIndicator.d.ts.map +1 -0
- package/dist/components/core/solid-agent/AgentModelIndicator.js +14 -0
- package/dist/components/core/solid-agent/AgentModelIndicator.js.map +1 -0
- package/dist/components/core/solid-agent/AgentModelIndicator.tsx +40 -0
- package/dist/components/core/solid-agent/AgentSignIn.d.ts +12 -0
- package/dist/components/core/solid-agent/AgentSignIn.d.ts.map +1 -0
- package/dist/components/core/solid-agent/AgentSignIn.js +82 -0
- package/dist/components/core/solid-agent/AgentSignIn.js.map +1 -0
- package/dist/components/core/solid-agent/AgentSignIn.tsx +91 -0
- package/dist/components/core/solid-agent/SolidAgent.module.css +596 -0
- package/dist/components/core/solid-agent/SolidAgentChat.d.ts +30 -0
- package/dist/components/core/solid-agent/SolidAgentChat.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentChat.js +300 -0
- package/dist/components/core/solid-agent/SolidAgentChat.js.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentChat.tsx +451 -0
- package/dist/components/core/solid-agent/SolidAgentEmbedded.d.ts +44 -0
- package/dist/components/core/solid-agent/SolidAgentEmbedded.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentEmbedded.js +46 -0
- package/dist/components/core/solid-agent/SolidAgentEmbedded.js.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentEmbedded.tsx +87 -0
- package/dist/components/core/solid-agent/SolidAgentHost.d.ts +8 -0
- package/dist/components/core/solid-agent/SolidAgentHost.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentHost.js +152 -0
- package/dist/components/core/solid-agent/SolidAgentHost.js.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentHost.tsx +164 -0
- package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts +16 -0
- package/dist/components/core/solid-agent/SolidAgentMarkdown.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentMarkdown.js +161 -0
- package/dist/components/core/solid-agent/SolidAgentMarkdown.js.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentMarkdown.tsx +133 -0
- package/dist/components/core/solid-agent/SolidAgentMount.d.ts +3 -0
- package/dist/components/core/solid-agent/SolidAgentMount.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentMount.js +62 -0
- package/dist/components/core/solid-agent/SolidAgentMount.js.map +1 -0
- package/dist/components/core/solid-agent/SolidAgentMount.tsx +31 -0
- package/dist/components/core/solid-agent/SolidXAIIcon.d.ts +5 -0
- package/dist/components/core/solid-agent/SolidXAIIcon.d.ts.map +1 -0
- package/dist/components/core/solid-agent/SolidXAIIcon.js +7 -0
- package/dist/components/core/solid-agent/SolidXAIIcon.js.map +1 -0
- package/dist/components/core/solid-agent/SolidXAIIcon.tsx +6 -0
- package/dist/components/core/solid-agent/agentAttachments.d.ts +20 -0
- package/dist/components/core/solid-agent/agentAttachments.d.ts.map +1 -0
- package/dist/components/core/solid-agent/agentAttachments.js +184 -0
- package/dist/components/core/solid-agent/agentAttachments.js.map +1 -0
- package/dist/components/core/solid-agent/agentAttachments.ts +119 -0
- package/dist/components/core/solid-agent/agentEvents.d.ts +34 -0
- package/dist/components/core/solid-agent/agentEvents.d.ts.map +1 -0
- package/dist/components/core/solid-agent/agentEvents.js +282 -0
- package/dist/components/core/solid-agent/agentEvents.js.map +1 -0
- package/dist/components/core/solid-agent/agentEvents.ts +292 -0
- package/dist/components/core/solid-agent/agentFormat.d.ts +18 -0
- package/dist/components/core/solid-agent/agentFormat.d.ts.map +1 -0
- package/dist/components/core/solid-agent/agentFormat.js +179 -0
- package/dist/components/core/solid-agent/agentFormat.js.map +1 -0
- package/dist/components/core/solid-agent/agentFormat.ts +160 -0
- package/dist/components/core/solid-agent/client/agentAttachmentMedia.d.ts +9 -0
- package/dist/components/core/solid-agent/client/agentAttachmentMedia.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentAttachmentMedia.js +129 -0
- package/dist/components/core/solid-agent/client/agentAttachmentMedia.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentAttachmentMedia.ts +69 -0
- package/dist/components/core/solid-agent/client/agentAuth.d.ts +63 -0
- package/dist/components/core/solid-agent/client/agentAuth.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentAuth.js +307 -0
- package/dist/components/core/solid-agent/client/agentAuth.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentAuth.ts +222 -0
- package/dist/components/core/solid-agent/client/agentRest.d.ts +30 -0
- package/dist/components/core/solid-agent/client/agentRest.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentRest.js +178 -0
- package/dist/components/core/solid-agent/client/agentRest.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentRest.ts +100 -0
- package/dist/components/core/solid-agent/client/agentRuntime.d.ts +48 -0
- package/dist/components/core/solid-agent/client/agentRuntime.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentRuntime.js +406 -0
- package/dist/components/core/solid-agent/client/agentRuntime.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentRuntime.ts +226 -0
- package/dist/components/core/solid-agent/client/agentSocket.d.ts +46 -0
- package/dist/components/core/solid-agent/client/agentSocket.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentSocket.js +535 -0
- package/dist/components/core/solid-agent/client/agentSocket.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentSocket.ts +276 -0
- package/dist/components/core/solid-agent/client/agentUrls.d.ts +11 -0
- package/dist/components/core/solid-agent/client/agentUrls.d.ts.map +1 -0
- package/dist/components/core/solid-agent/client/agentUrls.js +18 -0
- package/dist/components/core/solid-agent/client/agentUrls.js.map +1 -0
- package/dist/components/core/solid-agent/client/agentUrls.ts +19 -0
- package/dist/components/core/solid-agent/composer/AgentComposer.d.ts +21 -0
- package/dist/components/core/solid-agent/composer/AgentComposer.d.ts.map +1 -0
- package/dist/components/core/solid-agent/composer/AgentComposer.js +219 -0
- package/dist/components/core/solid-agent/composer/AgentComposer.js.map +1 -0
- package/dist/components/core/solid-agent/composer/AgentComposer.tsx +241 -0
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.d.ts +8 -0
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.d.ts.map +1 -0
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js +87 -0
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.js.map +1 -0
- package/dist/components/core/solid-agent/embed/AgentEmbeddingPanel.tsx +58 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts +20 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.d.ts.map +1 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js +103 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.js.map +1 -0
- package/dist/components/core/solid-agent/embed/agentEmbedProtocol.ts +60 -0
- package/dist/components/core/solid-agent/embed/agentEmbedSamples.d.ts +11 -0
- package/dist/components/core/solid-agent/embed/agentEmbedSamples.d.ts.map +1 -0
- package/dist/components/core/solid-agent/embed/agentEmbedSamples.js +21 -0
- package/dist/components/core/solid-agent/embed/agentEmbedSamples.js.map +1 -0
- package/dist/components/core/solid-agent/embed/agentEmbedSamples.ts +266 -0
- package/dist/components/core/solid-agent/processes/agentHubProcessApi.d.ts +15 -0
- package/dist/components/core/solid-agent/processes/agentHubProcessApi.d.ts.map +1 -0
- package/dist/components/core/solid-agent/processes/agentHubProcessApi.js +122 -0
- package/dist/components/core/solid-agent/processes/agentHubProcessApi.js.map +1 -0
- package/dist/components/core/solid-agent/processes/agentHubProcessApi.ts +64 -0
- package/dist/components/core/solid-agent/sdk/solidAgent.d.ts +39 -0
- package/dist/components/core/solid-agent/sdk/solidAgent.d.ts.map +1 -0
- package/dist/components/core/solid-agent/sdk/solidAgent.js +44 -0
- package/dist/components/core/solid-agent/sdk/solidAgent.js.map +1 -0
- package/dist/components/core/solid-agent/sdk/solidAgent.ts +56 -0
- package/dist/components/core/solid-agent/thread/AgentThread.d.ts +17 -0
- package/dist/components/core/solid-agent/thread/AgentThread.d.ts.map +1 -0
- package/dist/components/core/solid-agent/thread/AgentThread.js +166 -0
- package/dist/components/core/solid-agent/thread/AgentThread.js.map +1 -0
- package/dist/components/core/solid-agent/thread/AgentThread.tsx +248 -0
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts +36 -0
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.d.ts.map +1 -0
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js +148 -0
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.js.map +1 -0
- package/dist/components/core/solid-agent/thread/SolidAgentChatItem.tsx +116 -0
- package/dist/components/core/solid-agent/thread/inlineWidget.d.ts +8 -0
- package/dist/components/core/solid-agent/thread/inlineWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/thread/inlineWidget.js +30 -0
- package/dist/components/core/solid-agent/thread/inlineWidget.js.map +1 -0
- package/dist/components/core/solid-agent/thread/inlineWidget.ts +27 -0
- package/dist/components/core/solid-agent/types.d.ts +155 -0
- package/dist/components/core/solid-agent/types.d.ts.map +1 -0
- package/dist/components/core/solid-agent/types.js +31 -0
- package/dist/components/core/solid-agent/types.js.map +1 -0
- package/dist/components/core/solid-agent/types.ts +148 -0
- package/dist/components/core/solid-agent/useAdminInputContext.d.ts +4 -0
- package/dist/components/core/solid-agent/useAdminInputContext.d.ts.map +1 -0
- package/dist/components/core/solid-agent/useAdminInputContext.js +49 -0
- package/dist/components/core/solid-agent/useAdminInputContext.js.map +1 -0
- package/dist/components/core/solid-agent/useAdminInputContext.ts +52 -0
- package/dist/components/core/solid-agent/useAgentAuth.d.ts +14 -0
- package/dist/components/core/solid-agent/useAgentAuth.d.ts.map +1 -0
- package/dist/components/core/solid-agent/useAgentAuth.js +88 -0
- package/dist/components/core/solid-agent/useAgentAuth.js.map +1 -0
- package/dist/components/core/solid-agent/useAgentAuth.ts +40 -0
- package/dist/components/core/solid-agent/useAgentAvailability.d.ts +19 -0
- package/dist/components/core/solid-agent/useAgentAvailability.d.ts.map +1 -0
- package/dist/components/core/solid-agent/useAgentAvailability.js +109 -0
- package/dist/components/core/solid-agent/useAgentAvailability.js.map +1 -0
- package/dist/components/core/solid-agent/useAgentAvailability.ts +80 -0
- package/dist/components/core/solid-agent/useAgentChat.d.ts +22 -0
- package/dist/components/core/solid-agent/useAgentChat.d.ts.map +1 -0
- package/dist/components/core/solid-agent/useAgentChat.js +45 -0
- package/dist/components/core/solid-agent/useAgentChat.js.map +1 -0
- package/dist/components/core/solid-agent/useAgentChat.ts +57 -0
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js +15 -0
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultAssistantMessageChatWidget.tsx +24 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js +15 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultErrorChatWidget.tsx +28 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js +20 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultNoticeChatWidget.tsx +8 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js +11 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultThinkingChatWidget.tsx +16 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js +67 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultToolCallChatWidget.tsx +135 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js +24 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultUnknownChatWidget.tsx +17 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.d.ts +8 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js +30 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/DefaultUserMessageChatWidget.tsx +77 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js +40 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidChecklistChatWidget.tsx +57 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js +13 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidCodeChatWidget.tsx +19 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js +55 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidDiffListChatWidget.tsx +81 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js +15 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidGalleryChatWidget.tsx +30 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js +15 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidJsonChatWidget.tsx +21 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js +21 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidLinkCardChatWidget.tsx +33 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js +11 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidMarkdownChatWidget.tsx +9 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.d.ts +15 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js +26 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidProgressChatWidget.tsx +42 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js +41 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidQuestionChatWidget.tsx +69 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js +23 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidStatusChatWidget.tsx +40 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.d.ts +4 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js +32 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidTableChatWidget.tsx +55 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.d.ts +7 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js +17 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/SolidToolActivityChatWidget.tsx +31 -0
- package/dist/components/core/solid-agent/widgets/chatWidgetUtils.d.ts +12 -0
- package/dist/components/core/solid-agent/widgets/chatWidgetUtils.d.ts.map +1 -0
- package/dist/components/core/solid-agent/widgets/chatWidgetUtils.js +17 -0
- package/dist/components/core/solid-agent/widgets/chatWidgetUtils.js.map +1 -0
- package/dist/components/core/solid-agent/widgets/chatWidgetUtils.ts +19 -0
- package/dist/components/core/solid-agent/widgets/solidChatWidgets.module.css +909 -0
- package/dist/components/core/solid-ai/SolidAiChat.js +1 -1
- package/dist/components/core/solid-ai/SolidAiChat.js.map +1 -1
- package/dist/components/core/solid-ai/SolidAiChat.tsx +2 -2
- package/dist/components/layout/AdminLayout.d.ts.map +1 -1
- package/dist/components/layout/AdminLayout.js +2 -1
- package/dist/components/layout/AdminLayout.js.map +1 -1
- package/dist/components/layout/AdminLayout.tsx +2 -0
- package/dist/components/shad-cn-ui/SolidAutocomplete.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.js +2 -2
- package/dist/components/shad-cn-ui/SolidAutocomplete.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidAutocomplete.tsx +19 -15
- package/dist/components/shad-cn-ui/SolidDialog.d.ts +2 -1
- package/dist/components/shad-cn-ui/SolidDialog.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidDialog.js +2 -2
- package/dist/components/shad-cn-ui/SolidDialog.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidDialog.tsx +3 -0
- package/dist/components/shad-cn-ui/SolidIconPicker.d.ts +7 -0
- package/dist/components/shad-cn-ui/SolidIconPicker.d.ts.map +1 -0
- package/dist/components/shad-cn-ui/SolidIconPicker.js +43 -0
- package/dist/components/shad-cn-ui/SolidIconPicker.js.map +1 -0
- package/dist/components/shad-cn-ui/SolidIconPicker.tsx +73 -0
- package/dist/components/shad-cn-ui/index.d.ts +1 -0
- package/dist/components/shad-cn-ui/index.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/index.js +1 -0
- package/dist/components/shad-cn-ui/index.js.map +1 -1
- package/dist/components/shad-cn-ui/index.ts +1 -0
- package/dist/constants/allowed-ai-models.d.ts +8 -0
- package/dist/constants/allowed-ai-models.d.ts.map +1 -0
- package/dist/constants/allowed-ai-models.js +33 -0
- package/dist/constants/allowed-ai-models.js.map +1 -0
- package/dist/constants/allowed-ai-models.ts +39 -0
- package/dist/helpers/hydrateRelationRules.d.ts.map +1 -1
- package/dist/helpers/hydrateRelationRules.js +3 -1
- package/dist/helpers/hydrateRelationRules.js.map +1 -1
- package/dist/helpers/hydrateRelationRules.ts +5 -1
- package/dist/helpers/registry.d.ts +4 -2
- package/dist/helpers/registry.d.ts.map +1 -1
- package/dist/helpers/registry.js +75 -12
- package/dist/helpers/registry.js.map +1 -1
- package/dist/helpers/registry.ts +73 -16
- package/dist/helpers/updatePasswordField.d.ts.map +1 -1
- package/dist/helpers/updatePasswordField.js +21 -15
- package/dist/helpers/updatePasswordField.js.map +1 -1
- package/dist/helpers/updatePasswordField.ts +6 -1
- package/dist/index.d.ts +21 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -3
- package/dist/index.js.map +1 -1
- package/dist/index.ts +34 -3
- package/dist/redux/api/fieldApi.js +1 -1
- package/dist/redux/api/fieldApi.js.map +1 -1
- package/dist/redux/api/fieldApi.ts +2 -2
- package/dist/redux/api/modelApi.d.ts +13 -13
- package/dist/redux/api/modelApi.d.ts.map +1 -1
- package/dist/redux/api/modelApi.js +15 -15
- package/dist/redux/api/modelApi.js.map +1 -1
- package/dist/redux/api/modelApi.ts +12 -15
- package/dist/redux/features/agentSlice.d.ts +34 -0
- package/dist/redux/features/agentSlice.d.ts.map +1 -0
- package/dist/redux/features/agentSlice.js +92 -0
- package/dist/redux/features/agentSlice.js.map +1 -0
- package/dist/redux/features/agentSlice.ts +119 -0
- package/dist/redux/store/defaultStoreConfig.d.ts +11 -10
- package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
- package/dist/redux/store/defaultStoreConfig.js +2 -0
- package/dist/redux/store/defaultStoreConfig.js.map +1 -1
- package/dist/redux/store/defaultStoreConfig.ts +2 -0
- package/dist/redux/store/solidEntityApiPool.d.ts.map +1 -1
- package/dist/redux/store/solidEntityApiPool.js +7 -0
- package/dist/redux/store/solidEntityApiPool.js.map +1 -1
- package/dist/redux/store/solidEntityApiPool.ts +6 -0
- package/dist/resources/globals.css +109 -1
- package/dist/resources/solid-custom.css +295 -0
- package/dist/resources/solid-tailwind-generated.css +1 -1
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.css +47 -0
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.d.ts +12 -0
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.js +80 -0
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentRegistryAuditPanel.tsx +123 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.css +110 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts +3 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js +702 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentRegistryEditorPage.tsx +630 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.css +303 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts +3 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js +330 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentSkillRegistryEditorPage.tsx +460 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.css +125 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts +3 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js +295 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.js.map +1 -0
- package/dist/routes/pages/admin/core/AgentToolRegistryEditorPage.tsx +275 -0
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.js +11 -11
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.js.map +1 -1
- package/dist/routes/pages/admin/core/WorkflowDefinitionEditorPage.tsx +15 -15
- package/dist/routes/pages/embed/AgentEmbedPage.d.ts +3 -0
- package/dist/routes/pages/embed/AgentEmbedPage.d.ts.map +1 -0
- package/dist/routes/pages/embed/AgentEmbedPage.js +170 -0
- package/dist/routes/pages/embed/AgentEmbedPage.js.map +1 -0
- package/dist/routes/pages/embed/AgentEmbedPage.module.css +195 -0
- package/dist/routes/pages/embed/AgentEmbedPage.tsx +169 -0
- package/dist/routes/solidRoutes.d.ts.map +1 -1
- package/dist/routes/solidRoutes.js +8 -0
- package/dist/routes/solidRoutes.js.map +1 -1
- package/dist/routes/solidRoutes.tsx +8 -0
- package/dist/types/extension-registry.d.ts +4 -0
- package/dist/types/extension-registry.d.ts.map +1 -1
- package/dist/types/extension-registry.js +7 -0
- package/dist/types/extension-registry.js.map +1 -1
- package/dist/types/extension-registry.ts +7 -0
- package/dist/types/index.d.ts +4 -0
- package/dist/types/list-row-action.d.ts +2 -0
- package/dist/types/list-row-action.d.ts.map +1 -1
- package/dist/types/list-row-action.js.map +1 -1
- package/dist/types/list-row-action.ts +3 -0
- package/dist/types/solid-core.d.ts +36 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -110,6 +110,25 @@ A complete set of primitives built on Radix UI, PrimeReact, and Bootstrap, inclu
|
|
|
110
110
|
|
|
111
111
|
- `SolidChatter` — per-record messaging thread and activity feed component, mirroring the backend Chatter feature
|
|
112
112
|
|
|
113
|
+
Custom messages whose `messageSubType` is neither `custom`, `note`, nor `task` can use a registered chatter widget. Register the component under the exact subtype name:
|
|
114
|
+
|
|
115
|
+
```tsx
|
|
116
|
+
import {
|
|
117
|
+
ExtensionComponentTypes,
|
|
118
|
+
registerExtensionComponent,
|
|
119
|
+
type SolidChatterMessageWidgetProps,
|
|
120
|
+
} from '@solidxai/core-ui';
|
|
121
|
+
|
|
122
|
+
const ApprovalMessage = ({ chatterMessage }: SolidChatterMessageWidgetProps) => {
|
|
123
|
+
const payload = JSON.parse(chatterMessage.messageBody ?? '{}');
|
|
124
|
+
return <div>{payload.title}</div>;
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
registerExtensionComponent('ApprovalMessage', ApprovalMessage, ExtensionComponentTypes.chatterMessageWidget);
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
The chatter post API sets `messageType` to `custom`; provide `messageSubType: ApprovalMessage` and a JSON string in `messageBody`. The widget receives the original chatter API record. An unregistered subtype displays the JSON as formatted plain text inside the normal chatter card.
|
|
131
|
+
|
|
113
132
|
|
|
114
133
|
## Installation
|
|
115
134
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidPopupContainer.d.ts","sourceRoot":"","sources":["../../../src/components/common/SolidPopupContainer.tsx"],"names":[],"mappings":"AAMA,QAAA,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"SolidPopupContainer.d.ts","sourceRoot":"","sources":["../../../src/components/common/SolidPopupContainer.tsx"],"names":[],"mappings":"AAMA,QAAA,MAAM,mBAAmB,sDA0ExB,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
|
|
@@ -59,7 +59,8 @@ var SolidPopupContainer = function () {
|
|
|
59
59
|
if (!isOpen)
|
|
60
60
|
return null;
|
|
61
61
|
var DynamicComponent = getExtensionComponent(event === null || event === void 0 ? void 0 : event.action);
|
|
62
|
-
var
|
|
62
|
+
var isDeleteModelDialog = (event === null || event === void 0 ? void 0 : event.action) === "DeleteModelRowAction";
|
|
63
|
+
var popupWidth = (event === null || event === void 0 ? void 0 : event.popupWidth) ? event.popupWidth : isDeleteModelDialog ? "min(960px, calc(100vw - 32px))" : "50vw";
|
|
63
64
|
var popupBody = (_a = event === null || event === void 0 ? void 0 : event.body) !== null && _a !== void 0 ? _a : event === null || event === void 0 ? void 0 : event.message;
|
|
64
65
|
var handleButtonClick = function (button) { return __awaiter(void 0, void 0, void 0, function () {
|
|
65
66
|
var actionFn;
|
|
@@ -89,7 +90,7 @@ var SolidPopupContainer = function () {
|
|
|
89
90
|
return (_jsx(SolidDialog, { open: isOpen, onOpenChange: function (open) {
|
|
90
91
|
if (!open && isClosable)
|
|
91
92
|
handleClose();
|
|
92
|
-
}, dismissible: isClosable, showHeader: false, className: "solid-popup-dialog solid-common-dialog", overlayClassName: "solid-popup-backdrop", style: { width: popupWidth }, children: DynamicComponent ? (_jsx(DynamicComponent, __assign({}, event))) : (_jsxs(_Fragment, { children: [(event === null || event === void 0 ? void 0 : event.title) ? (_jsxs(_Fragment, { children: [_jsxs(SolidDialogHeader, { children: [_jsx(SolidDialogTitle, { children: event.title }), isClosable ? _jsx(SolidDialogClose, {}) : null] }), _jsx(SolidDialogSeparator, {})] })) : null, popupBody ? _jsx(SolidDialogBody, { children: popupBody }) : null, ((_b = event === null || event === void 0 ? void 0 : event.buttons) === null || _b === void 0 ? void 0 : _b.length) ? (_jsx(SolidDialogFooter, { children: event.buttons.map(function (button, index) { return (_jsx(SolidButton, { type: "button", size: "sm", variant: button.variant, className: button.className, icon: button.icon, onClick: function () { return handleButtonClick(button); }, children: button.label }, "".concat(button.label, "-").concat(index))); }) })) : null] })) }));
|
|
93
|
+
}, dismissible: isClosable, showHeader: false, className: "solid-popup-dialog solid-common-dialog".concat(isDeleteModelDialog ? " solid-delete-model-dialog" : ""), overlayClassName: "solid-popup-backdrop", style: { width: popupWidth }, children: DynamicComponent ? (_jsx(DynamicComponent, __assign({}, event))) : (_jsxs(_Fragment, { children: [(event === null || event === void 0 ? void 0 : event.title) ? (_jsxs(_Fragment, { children: [_jsxs(SolidDialogHeader, { children: [_jsx(SolidDialogTitle, { children: event.title }), isClosable ? _jsx(SolidDialogClose, {}) : null] }), _jsx(SolidDialogSeparator, {})] })) : null, popupBody ? _jsx(SolidDialogBody, { children: popupBody }) : null, ((_b = event === null || event === void 0 ? void 0 : event.buttons) === null || _b === void 0 ? void 0 : _b.length) ? (_jsx(SolidDialogFooter, { children: event.buttons.map(function (button, index) { return (_jsx(SolidButton, { type: "button", size: "sm", variant: button.variant, className: button.className, icon: button.icon, onClick: function () { return handleButtonClick(button); }, children: button.label }, "".concat(button.label, "-").concat(index))); }) })) : null] })) }));
|
|
93
94
|
};
|
|
94
95
|
export default SolidPopupContainer;
|
|
95
96
|
//# sourceMappingURL=SolidPopupContainer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidPopupContainer.js","sourceRoot":"","sources":["../../../src/components/common/SolidPopupContainer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAe,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE1K,IAAM,mBAAmB,GAAG;;IACpB,IAAA,KAAoB,WAAW,CAAC,UAAC,KAAgB,IAAK,OAAA,KAAK,CAAC,KAAK,EAAX,CAAW,CAAC,EAAhE,MAAM,YAAA,EAAE,KAAK,WAAmD,CAAC;IACzE,IAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAE/B,IAAM,WAAW,GAAG,cAAM,OAAA,QAAQ,CAAC,UAAU,EAAE,CAAC,EAAtB,CAAsB,CAAC;IACjD,IAAM,UAAU,GAAG,OAAO,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,QAAQ,CAAC,CAAC;IAE5C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,IAAM,gBAAgB,GAAG,qBAAqB,CAAC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,CAAC,CAAC;IAC9D,IAAM,UAAU,GAAG,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,UAAU,EAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"SolidPopupContainer.js","sourceRoot":"","sources":["../../../src/components/common/SolidPopupContainer.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useSelector, useDispatch } from \"react-redux\";\nimport { RootState } from \"../../types/solid-core\";\nimport { closePopup, PopupButton } from \"../../redux/features/popupSlice\";\nimport { getExtensionComponent, getExtensionFunction } from \"../../helpers/registry\";\nimport { SolidButton, SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialogFooter, SolidDialogHeader, SolidDialogSeparator, SolidDialogTitle } from \"../shad-cn-ui\";\n\nconst SolidPopupContainer = () => {\n const { isOpen, event } = useSelector((state: RootState) => state.popup);\n const dispatch = useDispatch();\n\n const handleClose = () => dispatch(closePopup());\n const isClosable = Boolean(event?.closable);\n\n if (!isOpen) return null;\n\n const DynamicComponent = getExtensionComponent(event?.action);\n const isDeleteModelDialog = event?.action === \"DeleteModelRowAction\";\n const popupWidth = event?.popupWidth ? event.popupWidth : isDeleteModelDialog ? \"min(960px, calc(100vw - 32px))\" : \"50vw\";\n const popupBody = event?.body ?? event?.message;\n\n const handleButtonClick = async (button: PopupButton) => {\n if (typeof button.action === \"function\") {\n await button.action(event, handleClose);\n } else if (typeof button.action === \"string\") {\n const actionFn = getExtensionFunction(button.action);\n await actionFn?.({ ...event, button, closePopup: handleClose });\n }\n\n if (button.closeOnClick !== false) {\n handleClose();\n }\n };\n\n return (\n <SolidDialog\n open={isOpen}\n onOpenChange={(open) => {\n if (!open && isClosable) handleClose();\n }}\n dismissible={isClosable}\n showHeader={false}\n className={`solid-popup-dialog solid-common-dialog${isDeleteModelDialog ? \" solid-delete-model-dialog\" : \"\"}`}\n overlayClassName=\"solid-popup-backdrop\"\n style={{ width: popupWidth }}\n >\n {DynamicComponent ? (\n <DynamicComponent {...event} />\n ) : (\n <>\n {event?.title ? (\n <>\n <SolidDialogHeader>\n <SolidDialogTitle>{event.title}</SolidDialogTitle>\n {isClosable ? <SolidDialogClose /> : null}\n </SolidDialogHeader>\n <SolidDialogSeparator />\n </>\n ) : null}\n {popupBody ? <SolidDialogBody>{popupBody}</SolidDialogBody> : null}\n {event?.buttons?.length ? (\n <SolidDialogFooter>\n {event.buttons.map((button: PopupButton, index: number) => (\n <SolidButton\n key={`${button.label}-${index}`}\n type=\"button\"\n size=\"sm\"\n variant={button.variant as any}\n className={button.className}\n icon={button.icon}\n onClick={() => handleButtonClick(button)}\n >\n {button.label}\n </SolidButton>\n ))}\n </SolidDialogFooter>\n ) : null}\n </>\n )}\n </SolidDialog>\n );\n};\n\nexport default SolidPopupContainer;\n"]}
|
|
@@ -14,7 +14,8 @@ const SolidPopupContainer = () => {
|
|
|
14
14
|
if (!isOpen) return null;
|
|
15
15
|
|
|
16
16
|
const DynamicComponent = getExtensionComponent(event?.action);
|
|
17
|
-
const
|
|
17
|
+
const isDeleteModelDialog = event?.action === "DeleteModelRowAction";
|
|
18
|
+
const popupWidth = event?.popupWidth ? event.popupWidth : isDeleteModelDialog ? "min(960px, calc(100vw - 32px))" : "50vw";
|
|
18
19
|
const popupBody = event?.body ?? event?.message;
|
|
19
20
|
|
|
20
21
|
const handleButtonClick = async (button: PopupButton) => {
|
|
@@ -38,7 +39,7 @@ const SolidPopupContainer = () => {
|
|
|
38
39
|
}}
|
|
39
40
|
dismissible={isClosable}
|
|
40
41
|
showHeader={false}
|
|
41
|
-
className=
|
|
42
|
+
className={`solid-popup-dialog solid-common-dialog${isDeleteModelDialog ? " solid-delete-model-dialog" : ""}`}
|
|
42
43
|
overlayClassName="solid-popup-backdrop"
|
|
43
44
|
style={{ width: popupWidth }}
|
|
44
45
|
>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiModelConfigTab.d.ts","sourceRoot":"","sources":["../../../../../src/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AiModelConfigTab.d.ts","sourceRoot":"","sources":["../../../../../src/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx"],"names":[],"mappings":"AAgBA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE;QACN,OAAO,EAAE,UAAU,CAAC;QACpB,IAAI,EAAE,UAAU,CAAC;KAClB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC1C;AAmBD,eAAO,MAAM,sBAAsB,cAAe,OAAO,MAAM,EAAE,aAAa,CAAC,KAAG,OAAO,MAAM,EAAE,aAAa,CAG5G,CAAC;AAgLH,UAAU,iBAAiB;IACzB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzC,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,IAAI,CAAC;IACtE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;CAC9B;AAED,eAAO,MAAM,YAAY,oEAAqE,iBAAiB,4CA+E9G,CAAC;AAIF,UAAU,mBAAmB;IAC3B,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACzC,kBAAkB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;CACjD;AAED,eAAO,MAAM,cAAc,kDAAmD,mBAAmB,4CAoEhG,CAAC"}
|
|
@@ -12,6 +12,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
12
12
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
13
13
|
import React, { useState } from "react";
|
|
14
14
|
import { SolidButton, SolidDialog, SolidDialogBody, SolidDialogFooter, SolidDialogHeader, SolidDialogTitle, SolidInput, SolidSelect, SolidSwitch, SolidTextarea, } from "../../../shad-cn-ui";
|
|
15
|
+
import { getAllowedModelIdsForProvider } from "../../../../constants/allowed-ai-models";
|
|
15
16
|
var PROVIDER_TYPE_OPTIONS = [
|
|
16
17
|
{ label: "OpenAI", value: "openai" },
|
|
17
18
|
{ label: "Anthropic", value: "anthropic" },
|
|
@@ -136,6 +137,8 @@ export var ProvidersTab = function (_a) {
|
|
|
136
137
|
};
|
|
137
138
|
export var ModelConfigTab = function (_a) {
|
|
138
139
|
var modelEntry = _a.modelEntry, providers = _a.providers, onModelEntryChange = _a.onModelEntryChange;
|
|
140
|
+
var allowedModelIds = getAllowedModelIdsForProvider(modelEntry.providerId);
|
|
141
|
+
var modelOptions = allowedModelIds.map(function (modelId) { return ({ label: modelId, value: modelId }); });
|
|
139
142
|
var providerOptions = Object.entries(providers).map(function (_a) {
|
|
140
143
|
var _b, _c;
|
|
141
144
|
var key = _a[0], entry = _a[1];
|
|
@@ -143,7 +146,7 @@ export var ModelConfigTab = function (_a) {
|
|
|
143
146
|
var label = BUILT_IN_TYPES.includes(key) ? typeLabel : "".concat(key, " (").concat(typeLabel, ")");
|
|
144
147
|
return { label: label, value: key };
|
|
145
148
|
});
|
|
146
|
-
return (_jsxs("div", { className: "flex flex-col gap-6", children: [_jsxs("div", { className: "solid-ai-model-config-card", style: __assign(__assign({}, cardStyle), { width: "50%" }), children: [_jsx("p", { className: "solid-settings-subheading", children: "Model Config" }), _jsxs("div", { className: "flex flex-col gap-4 mt-4", children: [_jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: "Provider" }), _jsx(SolidSelect, { className: "w-full", value: modelEntry.providerId, options: providerOptions, native: false, onChange: function (e) { return onModelEntryChange(__assign(__assign({}, modelEntry), { providerId: e.value })); }, placeholder: "Select Provider" })] }), _jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: "Model" }), _jsx(
|
|
149
|
+
return (_jsxs("div", { className: "flex flex-col gap-6", children: [_jsxs("div", { className: "solid-ai-model-config-card", style: __assign(__assign({}, cardStyle), { width: "50%" }), children: [_jsx("p", { className: "solid-settings-subheading", children: "Model Config" }), _jsxs("div", { className: "flex flex-col gap-4 mt-4", children: [_jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: "Provider" }), _jsx(SolidSelect, { className: "w-full", value: modelEntry.providerId, options: providerOptions, native: false, onChange: function (e) { return onModelEntryChange(__assign(__assign({}, modelEntry), { providerId: e.value, model: "" })); }, placeholder: "Select Provider" })] }), _jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: "Model" }), _jsx(SolidSelect, { className: "w-full", value: modelEntry.model || "", options: modelOptions, native: false, onChange: function (e) { return onModelEntryChange(__assign(__assign({}, modelEntry), { model: e.value })); }, placeholder: modelOptions.length ? "Select Model" : "No built-in models for this provider", disabled: !modelOptions.length })] })] })] }), _jsxs("div", { className: "solid-ai-model-config-card", style: __assign(__assign({}, cardStyle), { width: "50%" }), children: [_jsx("p", { className: "solid-settings-subheading", children: "Behavior" }), _jsxs("div", { className: "flex flex-col gap-4 mt-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(SolidSwitch, { checked: modelEntry.behavior.streaming, onChange: function (val) {
|
|
147
150
|
return onModelEntryChange(__assign(__assign({}, modelEntry), { behavior: __assign(__assign({}, modelEntry.behavior), { streaming: val }) }));
|
|
148
151
|
} }), _jsx("label", { className: "form-field-label", style: { marginBottom: 0 }, children: "Streaming" })] }), _jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: "Custom Params (JSON)" }), _jsx(SolidTextarea, { value: modelEntry.behavior.custom, onChange: function (e) {
|
|
149
152
|
return onModelEntryChange(__assign(__assign({}, modelEntry), { behavior: __assign(__assign({}, modelEntry.behavior), { custom: e.target.value }) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AiModelConfigTab.js","sourceRoot":"","sources":["../../../../../src/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState } from \"react\";\nimport {\n SolidButton,\n SolidDialog,\n SolidDialogBody,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogTitle,\n SolidInput,\n SolidSelect,\n SolidSwitch,\n SolidTextarea,\n} from \"../../../shad-cn-ui\";\n\n\nexport interface ModelBehavior {\n streaming: boolean;\n custom: string;\n}\n\nexport interface ProviderEntry {\n type: string;\n apiKey: string;\n baseUrl?: string;\n}\n\nexport interface ModelEntry {\n providerId: string;\n model: string;\n behavior: ModelBehavior;\n}\n\nexport interface SolidAiConfig {\n models: {\n default: ModelEntry;\n fast: ModelEntry;\n };\n providers: Record<string, ProviderEntry>;\n}\n\n\nconst PROVIDER_TYPE_OPTIONS = [\n { label: \"OpenAI\", value: \"openai\" },\n { label: \"Anthropic\", value: \"anthropic\" },\n { label: \"OpenAI Compatible\", value: \"openai-compatible\" },\n { label: \"Anthropic Compatible\", value: \"anthropic-compatible\" },\n];\n\nconst COMPATIBLE_TYPES = [\"openai-compatible\", \"anthropic-compatible\"];\n\nconst BUILT_IN_TYPES = [\"openai\", \"anthropic\"];\n\nconst DEFAULT_BUILT_IN_PROVIDERS: Record<string, ProviderEntry> = {\n openai: { type: \"openai\", apiKey: \"\" },\n anthropic: { type: \"anthropic\", apiKey: \"\" },\n};\n\nexport const ensureBuiltInProviders = (providers: Record<string, ProviderEntry>): Record<string, ProviderEntry> => ({\n ...DEFAULT_BUILT_IN_PROVIDERS,\n ...providers,\n});\n\nconst cardStyle: React.CSSProperties = {\n border: \"1px solid var(--solid-border-color, #e2e8f0)\",\n borderRadius: \"0.5rem\",\n padding: \"1.25rem\",\n background: \"var(--solid-card-bg, var(--solid-surface-bg, transparent))\",\n};\n\n\ninterface ProviderModalProps {\n visible: boolean;\n onHide: () => void;\n providers: Record<string, ProviderEntry>;\n onProvidersChange: (providers: Record<string, ProviderEntry>) => void;\n editKey?: string | null; // null = add mode, string = edit mode\n}\n\nconst ProviderModal = ({ visible, onHide, providers, onProvidersChange, editKey }: ProviderModalProps) => {\n const isEdit = !!editKey;\n const existingEntry = isEdit ? providers[editKey] : null;\n\n const [providerType, setProviderType] = useState(existingEntry?.type ?? \"\");\n const [providerName, setProviderName] = useState(editKey && !BUILT_IN_TYPES.includes(editKey) ? editKey : \"\");\n const [providerBaseUrl, setProviderBaseUrl] = useState(existingEntry?.baseUrl ?? \"\");\n const [providerApiKey, setProviderApiKey] = useState(existingEntry?.apiKey ?? \"\");\n\n const isCompatible = COMPATIBLE_TYPES.includes(providerType);\n\n // Reset state when modal opens with new data\n React.useEffect(() => {\n if (visible) {\n const entry = editKey ? providers[editKey] : null;\n setProviderType(entry?.type ?? \"\");\n setProviderName(editKey && !BUILT_IN_TYPES.includes(editKey) ? editKey : \"\");\n setProviderBaseUrl(entry?.baseUrl ?? \"\");\n setProviderApiKey(entry?.apiKey ?? \"\");\n }\n }, [visible, editKey]);\n\n // In add mode, only show compatible types (built-ins are always pre-added)\n // In edit mode, show all types but lock the value\n const typeOptions = isEdit\n ? PROVIDER_TYPE_OPTIONS\n : PROVIDER_TYPE_OPTIONS.filter((opt) => COMPATIBLE_TYPES.includes(opt.value));\n\n const handleSave = () => {\n if (!providerType) return;\n\n let key: string;\n const entry: ProviderEntry = { type: providerType, apiKey: providerApiKey };\n\n if (isCompatible) {\n if (!providerName.trim()) return;\n key = providerName.trim();\n entry.baseUrl = providerBaseUrl;\n } else {\n key = providerType;\n }\n\n // In add mode, don't overwrite existing\n if (!isEdit && providers[key]) return;\n\n const next = { ...providers };\n\n // If editing and key changed (shouldn't happen for built-in), remove old\n if (isEdit && editKey !== key) {\n delete next[editKey!];\n }\n\n next[key] = entry;\n onProvidersChange(next);\n onHide();\n };\n\n const handleRemove = () => {\n if (!editKey) return;\n const next = { ...providers };\n delete next[editKey];\n onProvidersChange(next);\n onHide();\n };\n\n const canSave = providerType && (isCompatible ? providerName.trim() : true);\n\n return (\n <SolidDialog open={visible} onOpenChange={(open) => !open && onHide()} style={{ width: \"500px\" }}>\n <SolidDialogHeader>\n <SolidDialogTitle>\n {isEdit\n ? `Edit Provider — ${BUILT_IN_TYPES.includes(editKey!) ? PROVIDER_TYPE_OPTIONS.find((o) => o.value === editKey)?.label : editKey}`\n : \"Add Provider\"}\n </SolidDialogTitle>\n </SolidDialogHeader>\n <SolidDialogBody>\n <div className=\"flex flex-col gap-4\">\n {!(isEdit && BUILT_IN_TYPES.includes(editKey!)) && (\n <div>\n <label className=\"form-field-label\">Provider Type</label>\n <SolidSelect\n className=\"w-full\"\n value={providerType}\n options={typeOptions}\n native={false}\n onChange={(e) => {\n setProviderType(e.value);\n if (!isEdit) {\n setProviderName(\"\");\n setProviderBaseUrl(\"\");\n }\n }}\n placeholder=\"Select Provider Type\"\n disabled={isEdit}\n />\n </div>\n )}\n {isCompatible && (\n <>\n {!isEdit && (\n <div>\n <label className=\"form-field-label\">Name (unique identifier)</label>\n <SolidInput\n placeholder=\"e.g. openrouter, together-ai\"\n value={providerName}\n onChange={(e) => setProviderName(e.target.value)}\n className=\"w-full\"\n />\n </div>\n )}\n <div>\n <label className=\"form-field-label\">Base URL</label>\n <SolidInput\n placeholder=\"https://openrouter.ai/api/v1\"\n value={providerBaseUrl}\n onChange={(e) => setProviderBaseUrl(e.target.value)}\n className=\"w-full\"\n />\n </div>\n </>\n )}\n <div>\n <label className=\"form-field-label\">API Key</label>\n <SolidInput\n type=\"password\"\n value={providerApiKey}\n onChange={(e) => setProviderApiKey(e.target.value)}\n className=\"w-full\"\n />\n </div>\n </div>\n </SolidDialogBody>\n <SolidDialogFooter>\n <div className=\"flex justify-between w-full\">\n <div>\n {isEdit && !BUILT_IN_TYPES.includes(editKey!) && (\n <SolidButton variant=\"ghost\" onClick={handleRemove} style={{ color: \"var(--solid-danger-color, #ef4444)\" }}>\n Remove\n </SolidButton>\n )}\n </div>\n <div className=\"flex gap-2\">\n <SolidButton variant=\"outline\" onClick={onHide}>\n Cancel\n </SolidButton>\n <SolidButton onClick={handleSave} disabled={!canSave}>\n {isEdit ? \"Save\" : \"Add\"}\n </SolidButton>\n </div>\n </div>\n </SolidDialogFooter>\n </SolidDialog>\n );\n};\n\n// --- Providers Tab (List View) ---\n\ninterface ProvidersTabProps {\n providers: Record<string, ProviderEntry>;\n onProvidersChange: (providers: Record<string, ProviderEntry>) => void;\n showAddModal?: boolean;\n onAddModalClose?: () => void;\n}\n\nexport const ProvidersTab = ({ providers, onProvidersChange, showAddModal, onAddModalClose }: ProvidersTabProps) => {\n const [editKey, setEditKey] = useState<string | null>(null);\n const [modalVisible, setModalVisible] = useState(false);\n\n // Ensure built-in providers are always present\n const allProviders = ensureBuiltInProviders(providers);\n\n // Open modal when parent triggers add\n React.useEffect(() => {\n if (showAddModal) {\n setEditKey(null);\n setModalVisible(true);\n }\n }, [showAddModal]);\n\n const providerEntries = Object.entries(allProviders);\n\n const handleRowClick = (key: string) => {\n setEditKey(key);\n setModalVisible(true);\n };\n\n return (\n <>\n <div className=\"solid-simple-table\">\n <table style={{ width: \"100%\" }}>\n <thead>\n <tr>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>Name</th>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>Type</th>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>API Key</th>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>Base URL</th>\n </tr>\n </thead>\n <tbody>\n {providerEntries.length === 0 && (\n <tr>\n <td colSpan={4} style={{ textAlign: \"center\", padding: \"2rem 1rem\", opacity: 0.5 }}>\n No providers configured.\n </td>\n </tr>\n )}\n {providerEntries.map(([key, entry]) => {\n const typeLabel = PROVIDER_TYPE_OPTIONS.find((o) => o.value === entry.type)?.label ?? entry.type;\n const isBuiltIn = BUILT_IN_TYPES.includes(key);\n const displayName = isBuiltIn ? typeLabel : key;\n const maskedKey = entry.apiKey ? \"\\u2022\".repeat(Math.min(entry.apiKey.length, 8)) : \"-\";\n\n return (\n <tr\n key={key}\n onClick={() => handleRowClick(key)}\n style={{ cursor: \"pointer\" }}\n className=\"solid-table-row-hover\"\n >\n <td style={{ padding: \"0.75rem 1rem\", fontWeight: 500 }}>{displayName}</td>\n <td style={{ padding: \"0.75rem 1rem\" }}>{typeLabel}</td>\n <td style={{ padding: \"0.75rem 1rem\" }}>{maskedKey}</td>\n <td style={{ padding: \"0.75rem 1rem\" }}>{entry.baseUrl || \"-\"}</td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n\n <ProviderModal\n visible={modalVisible}\n onHide={() => {\n setModalVisible(false);\n setEditKey(null);\n onAddModalClose?.();\n }}\n providers={allProviders}\n onProvidersChange={onProvidersChange}\n editKey={editKey}\n />\n </>\n );\n};\n\n// --- Model Config Tab (used for Intelligent Model & Fast Model) ---\n\ninterface ModelConfigTabProps {\n modelEntry: ModelEntry;\n providers: Record<string, ProviderEntry>;\n onModelEntryChange: (entry: ModelEntry) => void;\n}\n\nexport const ModelConfigTab = ({ modelEntry, providers, onModelEntryChange }: ModelConfigTabProps) => {\n const providerOptions = Object.entries(providers).map(([key, entry]) => {\n const typeLabel = PROVIDER_TYPE_OPTIONS.find((o) => o.value === entry.type)?.label ?? entry.type;\n const label = BUILT_IN_TYPES.includes(key) ? typeLabel : `${key} (${typeLabel})`;\n return { label, value: key };\n });\n\n return (\n <div className=\"flex flex-col gap-6\">\n <div className=\"solid-ai-model-config-card\" style={{ ...cardStyle, width: \"50%\" }}>\n <p className=\"solid-settings-subheading\">Model Config</p>\n <div className=\"flex flex-col gap-4 mt-4\">\n <div>\n <label className=\"form-field-label\">Provider</label>\n <SolidSelect\n className=\"w-full\"\n value={modelEntry.providerId}\n options={providerOptions}\n native={false}\n onChange={(e) => onModelEntryChange({ ...modelEntry, providerId: e.value })}\n placeholder=\"Select Provider\"\n />\n </div>\n <div>\n <label className=\"form-field-label\">Model</label>\n <SolidInput\n placeholder=\"e.g. gpt-4o-mini\"\n value={modelEntry.model || \"\"}\n onChange={(e) => onModelEntryChange({ ...modelEntry, model: e.target.value })}\n className=\"w-full\"\n />\n </div>\n </div>\n </div>\n\n <div className=\"solid-ai-model-config-card\" style={{ ...cardStyle, width: \"50%\" }}>\n <p className=\"solid-settings-subheading\">Behavior</p>\n <div className=\"flex flex-col gap-4 mt-4\">\n <div className=\"flex items-center gap-2\">\n <SolidSwitch\n checked={modelEntry.behavior.streaming}\n onChange={(val) =>\n onModelEntryChange({ ...modelEntry, behavior: { ...modelEntry.behavior, streaming: val } })\n }\n />\n <label className=\"form-field-label\" style={{ marginBottom: 0 }}>Streaming</label>\n </div>\n <div>\n <label className=\"form-field-label\">Custom Params (JSON)</label>\n <SolidTextarea\n value={modelEntry.behavior.custom}\n onChange={(e) =>\n onModelEntryChange({ ...modelEntry, behavior: { ...modelEntry.behavior, custom: e.target.value } })\n }\n placeholder='{ \"temperature\": 0.7, \"maxTokens\": 1000 }'\n rows={4}\n className=\"w-full\"\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"AiModelConfigTab.js","sourceRoot":"","sources":["../../../../../src/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState } from \"react\";\nimport {\n SolidButton,\n SolidDialog,\n SolidDialogBody,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogTitle,\n SolidInput,\n SolidSelect,\n SolidSwitch,\n SolidTextarea,\n} from \"../../../shad-cn-ui\";\nimport { getAllowedModelIdsForProvider } from \"../../../../constants/allowed-ai-models\";\n\n\nexport interface ModelBehavior {\n streaming: boolean;\n custom: string;\n}\n\nexport interface ProviderEntry {\n type: string;\n apiKey: string;\n baseUrl?: string;\n}\n\nexport interface ModelEntry {\n providerId: string;\n model: string;\n behavior: ModelBehavior;\n}\n\nexport interface SolidAiConfig {\n models: {\n default: ModelEntry;\n fast: ModelEntry;\n };\n providers: Record<string, ProviderEntry>;\n}\n\n\nconst PROVIDER_TYPE_OPTIONS = [\n { label: \"OpenAI\", value: \"openai\" },\n { label: \"Anthropic\", value: \"anthropic\" },\n { label: \"OpenAI Compatible\", value: \"openai-compatible\" },\n { label: \"Anthropic Compatible\", value: \"anthropic-compatible\" },\n];\n\nconst COMPATIBLE_TYPES = [\"openai-compatible\", \"anthropic-compatible\"];\n\nconst BUILT_IN_TYPES = [\"openai\", \"anthropic\"];\n\nconst DEFAULT_BUILT_IN_PROVIDERS: Record<string, ProviderEntry> = {\n openai: { type: \"openai\", apiKey: \"\" },\n anthropic: { type: \"anthropic\", apiKey: \"\" },\n};\n\nexport const ensureBuiltInProviders = (providers: Record<string, ProviderEntry>): Record<string, ProviderEntry> => ({\n ...DEFAULT_BUILT_IN_PROVIDERS,\n ...providers,\n});\n\nconst cardStyle: React.CSSProperties = {\n border: \"1px solid var(--solid-border-color, #e2e8f0)\",\n borderRadius: \"0.5rem\",\n padding: \"1.25rem\",\n background: \"var(--solid-card-bg, var(--solid-surface-bg, transparent))\",\n};\n\n\ninterface ProviderModalProps {\n visible: boolean;\n onHide: () => void;\n providers: Record<string, ProviderEntry>;\n onProvidersChange: (providers: Record<string, ProviderEntry>) => void;\n editKey?: string | null; // null = add mode, string = edit mode\n}\n\nconst ProviderModal = ({ visible, onHide, providers, onProvidersChange, editKey }: ProviderModalProps) => {\n const isEdit = !!editKey;\n const existingEntry = isEdit ? providers[editKey] : null;\n\n const [providerType, setProviderType] = useState(existingEntry?.type ?? \"\");\n const [providerName, setProviderName] = useState(editKey && !BUILT_IN_TYPES.includes(editKey) ? editKey : \"\");\n const [providerBaseUrl, setProviderBaseUrl] = useState(existingEntry?.baseUrl ?? \"\");\n const [providerApiKey, setProviderApiKey] = useState(existingEntry?.apiKey ?? \"\");\n\n const isCompatible = COMPATIBLE_TYPES.includes(providerType);\n\n // Reset state when modal opens with new data\n React.useEffect(() => {\n if (visible) {\n const entry = editKey ? providers[editKey] : null;\n setProviderType(entry?.type ?? \"\");\n setProviderName(editKey && !BUILT_IN_TYPES.includes(editKey) ? editKey : \"\");\n setProviderBaseUrl(entry?.baseUrl ?? \"\");\n setProviderApiKey(entry?.apiKey ?? \"\");\n }\n }, [visible, editKey]);\n\n // In add mode, only show compatible types (built-ins are always pre-added)\n // In edit mode, show all types but lock the value\n const typeOptions = isEdit\n ? PROVIDER_TYPE_OPTIONS\n : PROVIDER_TYPE_OPTIONS.filter((opt) => COMPATIBLE_TYPES.includes(opt.value));\n\n const handleSave = () => {\n if (!providerType) return;\n\n let key: string;\n const entry: ProviderEntry = { type: providerType, apiKey: providerApiKey };\n\n if (isCompatible) {\n if (!providerName.trim()) return;\n key = providerName.trim();\n entry.baseUrl = providerBaseUrl;\n } else {\n key = providerType;\n }\n\n // In add mode, don't overwrite existing\n if (!isEdit && providers[key]) return;\n\n const next = { ...providers };\n\n // If editing and key changed (shouldn't happen for built-in), remove old\n if (isEdit && editKey !== key) {\n delete next[editKey!];\n }\n\n next[key] = entry;\n onProvidersChange(next);\n onHide();\n };\n\n const handleRemove = () => {\n if (!editKey) return;\n const next = { ...providers };\n delete next[editKey];\n onProvidersChange(next);\n onHide();\n };\n\n const canSave = providerType && (isCompatible ? providerName.trim() : true);\n\n return (\n <SolidDialog open={visible} onOpenChange={(open) => !open && onHide()} style={{ width: \"500px\" }}>\n <SolidDialogHeader>\n <SolidDialogTitle>\n {isEdit\n ? `Edit Provider — ${BUILT_IN_TYPES.includes(editKey!) ? PROVIDER_TYPE_OPTIONS.find((o) => o.value === editKey)?.label : editKey}`\n : \"Add Provider\"}\n </SolidDialogTitle>\n </SolidDialogHeader>\n <SolidDialogBody>\n <div className=\"flex flex-col gap-4\">\n {!(isEdit && BUILT_IN_TYPES.includes(editKey!)) && (\n <div>\n <label className=\"form-field-label\">Provider Type</label>\n <SolidSelect\n className=\"w-full\"\n value={providerType}\n options={typeOptions}\n native={false}\n onChange={(e) => {\n setProviderType(e.value);\n if (!isEdit) {\n setProviderName(\"\");\n setProviderBaseUrl(\"\");\n }\n }}\n placeholder=\"Select Provider Type\"\n disabled={isEdit}\n />\n </div>\n )}\n {isCompatible && (\n <>\n {!isEdit && (\n <div>\n <label className=\"form-field-label\">Name (unique identifier)</label>\n <SolidInput\n placeholder=\"e.g. openrouter, together-ai\"\n value={providerName}\n onChange={(e) => setProviderName(e.target.value)}\n className=\"w-full\"\n />\n </div>\n )}\n <div>\n <label className=\"form-field-label\">Base URL</label>\n <SolidInput\n placeholder=\"https://openrouter.ai/api/v1\"\n value={providerBaseUrl}\n onChange={(e) => setProviderBaseUrl(e.target.value)}\n className=\"w-full\"\n />\n </div>\n </>\n )}\n <div>\n <label className=\"form-field-label\">API Key</label>\n <SolidInput\n type=\"password\"\n value={providerApiKey}\n onChange={(e) => setProviderApiKey(e.target.value)}\n className=\"w-full\"\n />\n </div>\n </div>\n </SolidDialogBody>\n <SolidDialogFooter>\n <div className=\"flex justify-between w-full\">\n <div>\n {isEdit && !BUILT_IN_TYPES.includes(editKey!) && (\n <SolidButton variant=\"ghost\" onClick={handleRemove} style={{ color: \"var(--solid-danger-color, #ef4444)\" }}>\n Remove\n </SolidButton>\n )}\n </div>\n <div className=\"flex gap-2\">\n <SolidButton variant=\"outline\" onClick={onHide}>\n Cancel\n </SolidButton>\n <SolidButton onClick={handleSave} disabled={!canSave}>\n {isEdit ? \"Save\" : \"Add\"}\n </SolidButton>\n </div>\n </div>\n </SolidDialogFooter>\n </SolidDialog>\n );\n};\n\n// --- Providers Tab (List View) ---\n\ninterface ProvidersTabProps {\n providers: Record<string, ProviderEntry>;\n onProvidersChange: (providers: Record<string, ProviderEntry>) => void;\n showAddModal?: boolean;\n onAddModalClose?: () => void;\n}\n\nexport const ProvidersTab = ({ providers, onProvidersChange, showAddModal, onAddModalClose }: ProvidersTabProps) => {\n const [editKey, setEditKey] = useState<string | null>(null);\n const [modalVisible, setModalVisible] = useState(false);\n\n // Ensure built-in providers are always present\n const allProviders = ensureBuiltInProviders(providers);\n\n // Open modal when parent triggers add\n React.useEffect(() => {\n if (showAddModal) {\n setEditKey(null);\n setModalVisible(true);\n }\n }, [showAddModal]);\n\n const providerEntries = Object.entries(allProviders);\n\n const handleRowClick = (key: string) => {\n setEditKey(key);\n setModalVisible(true);\n };\n\n return (\n <>\n <div className=\"solid-simple-table\">\n <table style={{ width: \"100%\" }}>\n <thead>\n <tr>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>Name</th>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>Type</th>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>API Key</th>\n <th style={{ textAlign: \"left\", padding: \"0.75rem 1rem\" }}>Base URL</th>\n </tr>\n </thead>\n <tbody>\n {providerEntries.length === 0 && (\n <tr>\n <td colSpan={4} style={{ textAlign: \"center\", padding: \"2rem 1rem\", opacity: 0.5 }}>\n No providers configured.\n </td>\n </tr>\n )}\n {providerEntries.map(([key, entry]) => {\n const typeLabel = PROVIDER_TYPE_OPTIONS.find((o) => o.value === entry.type)?.label ?? entry.type;\n const isBuiltIn = BUILT_IN_TYPES.includes(key);\n const displayName = isBuiltIn ? typeLabel : key;\n const maskedKey = entry.apiKey ? \"\\u2022\".repeat(Math.min(entry.apiKey.length, 8)) : \"-\";\n\n return (\n <tr\n key={key}\n onClick={() => handleRowClick(key)}\n style={{ cursor: \"pointer\" }}\n className=\"solid-table-row-hover\"\n >\n <td style={{ padding: \"0.75rem 1rem\", fontWeight: 500 }}>{displayName}</td>\n <td style={{ padding: \"0.75rem 1rem\" }}>{typeLabel}</td>\n <td style={{ padding: \"0.75rem 1rem\" }}>{maskedKey}</td>\n <td style={{ padding: \"0.75rem 1rem\" }}>{entry.baseUrl || \"-\"}</td>\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n\n <ProviderModal\n visible={modalVisible}\n onHide={() => {\n setModalVisible(false);\n setEditKey(null);\n onAddModalClose?.();\n }}\n providers={allProviders}\n onProvidersChange={onProvidersChange}\n editKey={editKey}\n />\n </>\n );\n};\n\n// --- Model Config Tab (used for Intelligent Model & Fast Model) ---\n\ninterface ModelConfigTabProps {\n modelEntry: ModelEntry;\n providers: Record<string, ProviderEntry>;\n onModelEntryChange: (entry: ModelEntry) => void;\n}\n\nexport const ModelConfigTab = ({ modelEntry, providers, onModelEntryChange }: ModelConfigTabProps) => {\n const allowedModelIds = getAllowedModelIdsForProvider(modelEntry.providerId);\n const modelOptions = allowedModelIds.map((modelId) => ({ label: modelId, value: modelId }));\n const providerOptions = Object.entries(providers).map(([key, entry]) => {\n const typeLabel = PROVIDER_TYPE_OPTIONS.find((o) => o.value === entry.type)?.label ?? entry.type;\n const label = BUILT_IN_TYPES.includes(key) ? typeLabel : `${key} (${typeLabel})`;\n return { label, value: key };\n });\n\n return (\n <div className=\"flex flex-col gap-6\">\n <div className=\"solid-ai-model-config-card\" style={{ ...cardStyle, width: \"50%\" }}>\n <p className=\"solid-settings-subheading\">Model Config</p>\n <div className=\"flex flex-col gap-4 mt-4\">\n <div>\n <label className=\"form-field-label\">Provider</label>\n <SolidSelect\n className=\"w-full\"\n value={modelEntry.providerId}\n options={providerOptions}\n native={false}\n onChange={(e) => onModelEntryChange({ ...modelEntry, providerId: e.value, model: \"\" })}\n placeholder=\"Select Provider\"\n />\n </div>\n <div>\n <label className=\"form-field-label\">Model</label>\n <SolidSelect\n className=\"w-full\"\n value={modelEntry.model || \"\"}\n options={modelOptions}\n native={false}\n onChange={(e) => onModelEntryChange({ ...modelEntry, model: e.value })}\n placeholder={modelOptions.length ? \"Select Model\" : \"No built-in models for this provider\"}\n disabled={!modelOptions.length}\n />\n </div>\n </div>\n </div>\n\n <div className=\"solid-ai-model-config-card\" style={{ ...cardStyle, width: \"50%\" }}>\n <p className=\"solid-settings-subheading\">Behavior</p>\n <div className=\"flex flex-col gap-4 mt-4\">\n <div className=\"flex items-center gap-2\">\n <SolidSwitch\n checked={modelEntry.behavior.streaming}\n onChange={(val) =>\n onModelEntryChange({ ...modelEntry, behavior: { ...modelEntry.behavior, streaming: val } })\n }\n />\n <label className=\"form-field-label\" style={{ marginBottom: 0 }}>Streaming</label>\n </div>\n <div>\n <label className=\"form-field-label\">Custom Params (JSON)</label>\n <SolidTextarea\n value={modelEntry.behavior.custom}\n onChange={(e) =>\n onModelEntryChange({ ...modelEntry, behavior: { ...modelEntry.behavior, custom: e.target.value } })\n }\n placeholder='{ \"temperature\": 0.7, \"maxTokens\": 1000 }'\n rows={4}\n className=\"w-full\"\n />\n </div>\n </div>\n </div>\n </div>\n );\n};\n"]}
|
|
@@ -11,6 +11,7 @@ import {
|
|
|
11
11
|
SolidSwitch,
|
|
12
12
|
SolidTextarea,
|
|
13
13
|
} from "../../../shad-cn-ui";
|
|
14
|
+
import { getAllowedModelIdsForProvider } from "../../../../constants/allowed-ai-models";
|
|
14
15
|
|
|
15
16
|
|
|
16
17
|
export interface ModelBehavior {
|
|
@@ -331,6 +332,8 @@ interface ModelConfigTabProps {
|
|
|
331
332
|
}
|
|
332
333
|
|
|
333
334
|
export const ModelConfigTab = ({ modelEntry, providers, onModelEntryChange }: ModelConfigTabProps) => {
|
|
335
|
+
const allowedModelIds = getAllowedModelIdsForProvider(modelEntry.providerId);
|
|
336
|
+
const modelOptions = allowedModelIds.map((modelId) => ({ label: modelId, value: modelId }));
|
|
334
337
|
const providerOptions = Object.entries(providers).map(([key, entry]) => {
|
|
335
338
|
const typeLabel = PROVIDER_TYPE_OPTIONS.find((o) => o.value === entry.type)?.label ?? entry.type;
|
|
336
339
|
const label = BUILT_IN_TYPES.includes(key) ? typeLabel : `${key} (${typeLabel})`;
|
|
@@ -349,17 +352,20 @@ export const ModelConfigTab = ({ modelEntry, providers, onModelEntryChange }: Mo
|
|
|
349
352
|
value={modelEntry.providerId}
|
|
350
353
|
options={providerOptions}
|
|
351
354
|
native={false}
|
|
352
|
-
onChange={(e) => onModelEntryChange({ ...modelEntry, providerId: e.value })}
|
|
355
|
+
onChange={(e) => onModelEntryChange({ ...modelEntry, providerId: e.value, model: "" })}
|
|
353
356
|
placeholder="Select Provider"
|
|
354
357
|
/>
|
|
355
358
|
</div>
|
|
356
359
|
<div>
|
|
357
360
|
<label className="form-field-label">Model</label>
|
|
358
|
-
<
|
|
359
|
-
placeholder="e.g. gpt-4o-mini"
|
|
360
|
-
value={modelEntry.model || ""}
|
|
361
|
-
onChange={(e) => onModelEntryChange({ ...modelEntry, model: e.target.value })}
|
|
361
|
+
<SolidSelect
|
|
362
362
|
className="w-full"
|
|
363
|
+
value={modelEntry.model || ""}
|
|
364
|
+
options={modelOptions}
|
|
365
|
+
native={false}
|
|
366
|
+
onChange={(e) => onModelEntryChange({ ...modelEntry, model: e.value })}
|
|
367
|
+
placeholder={modelOptions.length ? "Select Model" : "No built-in models for this provider"}
|
|
368
|
+
disabled={!modelOptions.length}
|
|
363
369
|
/>
|
|
364
370
|
</div>
|
|
365
371
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidChatter.d.ts","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatter.tsx"],"names":[],"mappings":"AA2BA,eAAO,MAAM,YAAY;uBAA+I,GAAG;QAAM,GAAG;2BAAyB,OAAO;sCAAoC,OAAO,KAAK,IAAI;;;;
|
|
1
|
+
{"version":3,"file":"SolidChatter.d.ts","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatter.tsx"],"names":[],"mappings":"AA2BA,eAAO,MAAM,YAAY;uBAA+I,GAAG;QAAM,GAAG;2BAAyB,OAAO;sCAAoC,OAAO,KAAK,IAAI;;;;6CAmSvQ,CAAA"}
|
|
@@ -172,6 +172,7 @@ export var SolidChatter = function (_a) {
|
|
|
172
172
|
date: formatDate(displayTimeSource),
|
|
173
173
|
media: msg._media,
|
|
174
174
|
messageSubType: msg.messageSubType,
|
|
175
|
+
chatterMessage: msg,
|
|
175
176
|
status: msg.status,
|
|
176
177
|
modelDisplayName: msg.modelDisplayName,
|
|
177
178
|
modelUserKey: msg.modelUserKey
|
|
@@ -243,7 +244,7 @@ export var SolidChatter = function (_a) {
|
|
|
243
244
|
var permissionError = function () { return (_jsx("div", { className: 'p-3', children: _jsx(SolidMessage, { severity: 'warn', text: "You do not have permission to view these messages.", className: 'justify-start' }) })); };
|
|
244
245
|
var renderMessages = function () { return (_jsxs("div", { className: 'flex flex-col gap-4', children: [messages.map(function (message, index) {
|
|
245
246
|
var showDateDivider = index === 0 || message.date !== messages[index - 1].date;
|
|
246
|
-
return (_jsxs("div", { children: [showDateDivider && _jsx(SolidChatterDateDivider, { date: message.date }), _jsx(SolidChatterMessageBox, { messageId: message.id, user: message.user, userId: message.userId, messageType: message.messageType, message: message.message, messageBodyMentions: message.messageBodyMentions, time: message.time, auditRecord: message.auditRecord, media: message.media, messageSubType: message.messageSubType, status: message.status, modelDisplayName: message.modelDisplayName, modelUserKey: message.modelUserKey, onRefresh: fetchData })] }, message.id));
|
|
247
|
+
return (_jsxs("div", { children: [showDateDivider && _jsx(SolidChatterDateDivider, { date: message.date }), _jsx(SolidChatterMessageBox, { messageId: message.id, user: message.user, userId: message.userId, messageType: message.messageType, message: message.message, messageBodyMentions: message.messageBodyMentions, time: message.time, auditRecord: message.auditRecord, media: message.media, messageSubType: message.messageSubType, chatterMessage: message.chatterMessage, status: message.status, modelDisplayName: message.modelDisplayName, modelUserKey: message.modelUserKey, onRefresh: fetchData })] }, message.id));
|
|
247
248
|
}), totalRecords > messages.length && (_jsx("div", { className: 'flex justify-center', children: _jsx(SolidButton, { type: 'button', size: 'sm', variant: 'outline', onClick: handleLoadMore, children: "Load more" }) }))] })); };
|
|
248
249
|
return (_jsxs("div", { className: 'h-full', children: [_jsx(SolidChatterHeader, { id: id, refetch: fetchData, modelSingularName: modelSingularName, activeTab: activeTab, handleTabClick: handleTabClick, visibleBox: visibleBox, onFilterChange: handleFilterChange, onComposerCancel: function () { return setVisibleBox(null); }, title: title, modelUserKey: modelUserKey }), _jsx("div", { className: 'solid-chatter-body', style: {
|
|
249
250
|
height: isMobileViewport
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidChatter.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatter.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport React, { useState, useEffect } from 'react'\nimport { SolidChatterHeader } from './SolidChatterHeader'\nimport { SolidChatterDateDivider } from './SolidChatterDateDivider'\nimport { SolidChatterMessageBox } from './SolidChatterMessageBox'\nimport { useLazyGetchatterMessageQuery } from '../../../redux/api/solidChatterMessageApi'\nimport qs from \"qs\";\nimport { ERROR_MESSAGES } from '../../../constants/error-messages'\nimport { permissionExpression } from '../../../helpers/permissions'\nimport { SolidButton, SolidMessage } from '../../shad-cn-ui'\nimport { Inbox, Loader2 } from 'lucide-react'\nimport { renderMessageBodyMentions } from './chatterMentions'\n\ninterface FilterState {\n name: string;\n startDate: Date | null;\n endDate: Date | null;\n}\n\nconst isEmptyAuditValue = (value: string | null | undefined) => {\n if (value == null) return true;\n if (typeof value !== 'string') return false;\n\n const normalizedValue = value.trim().toLowerCase();\n return normalizedValue === '' || normalizedValue === 'none' || normalizedValue === 'null';\n};\n\nexport const SolidChatter = ({ modelSingularName, id, refreshChatterMessage, setRefreshChatterMessage, actionsAllowed = [], title, modelUserKey }: { modelSingularName: any, id: any, refreshChatterMessage: boolean, setRefreshChatterMessage: (value: boolean) => void, actionsAllowed?: string[], title?: string, modelUserKey?: string }) => {\n const [activeTab, setActiveTab] = useState<'email-message' | 'log' | null>('email-message');\n const [visibleBox, setVisibleBox] = useState<'email-message' | 'log' | null>(null);\n const [messages, setMessages] = useState<any[]>([]);\n const [limit, setLimit] = useState<number>(25);\n const [totalRecords, setTotalRecords] = useState<number>(0);\n const [filters, setFilters] = useState<FilterState>({\n name: '',\n startDate: null,\n endDate: null\n });\n const [isMobileViewport, setIsMobileViewport] = useState(false);\n\n const [getchatterMessage, { isLoading: isChatterLoading }] = useLazyGetchatterMessageQuery();\n\n useEffect(() => {\n const updateViewport = () => setIsMobileViewport(window.innerWidth <= 1199);\n updateViewport();\n window.addEventListener('resize', updateViewport);\n return () => window.removeEventListener('resize', updateViewport);\n }, []);\n\n useEffect(() => {\n if (refreshChatterMessage) {\n if (id !== 'new') {\n fetchData();\n setRefreshChatterMessage(false);\n }\n }\n }, [refreshChatterMessage]);\n\n useEffect(() => {\n if (id !== 'new') {\n fetchData();\n }\n }, [filters, limit]);\n\n const handleTabClick = (tab: 'email-message' | 'log') => {\n setActiveTab(tab);\n setVisibleBox(prev => (prev === tab ? null : tab));\n }\n\n const formatDate = (dateString: string) => {\n const date = new Date(dateString);\n const today = new Date();\n const yesterday = new Date(today);\n yesterday.setDate(yesterday.getDate() - 1);\n\n if (date.toDateString() === today.toDateString()) {\n return 'Today';\n } else if (date.toDateString() === yesterday.toDateString()) {\n return 'Yesterday';\n } else {\n return dateString;\n }\n };\n\n const fetchData = async () => {\n try {\n const queryData: any = {\n populate: ['user', 'chatterMessageDetails'],\n limit: limit\n };\n\n if (filters.name) {\n queryData.filters = queryData.filters || {};\n queryData.filters['user'] = { fullName: { $containsi: filters.name }};\n }\n const startOfDay = (d: Date) => {\n const x = new Date(d);\n x.setHours(0, 0, 0, 0);\n return x;\n };\n const endOfDay = (d: Date) => {\n const x = new Date(d);\n x.setHours(23, 59, 59, 999);\n return x;\n };\n if (filters.startDate && filters.endDate) {\n queryData.filters = queryData.filters || {};\n queryData.filters.createdAt = {\n $between: [startOfDay(filters.startDate).toISOString(), endOfDay(filters.endDate).toISOString()]\n };\n } else if (filters.startDate) {\n queryData.filters = queryData.filters || {};\n queryData.filters.createdAt = { $gte: startOfDay(filters.startDate).toISOString() };\n } else if (filters.endDate) {\n queryData.filters = queryData.filters || {};\n queryData.filters.createdAt = { $lte: endOfDay(filters.endDate).toISOString() };\n }\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n const response = await getchatterMessage({\n entityId: id,\n entityName: modelSingularName,\n qs: queryString\n }).unwrap();\n const processedMessages = response.data.records.map((msg: any) => {\n if (msg.messageType === 'custom') {\n const displayTimeSource = msg.updatedAt || msg.createdAt;\n // Custom message\n return {\n id: msg.id,\n user: msg.user?.fullName || \"System\",\n userId: msg.user?.id,\n messageType: \"custom\",\n message: renderMessageBodyMentions(msg.messageBody, msg.messageBodyMentions),\n messageBodyMentions: msg.messageBodyMentions,\n time: new Date(displayTimeSource).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }),\n createdAt: displayTimeSource,\n date: formatDate(displayTimeSource),\n media: msg._media,\n messageSubType: msg.messageSubType,\n status: msg.status,\n modelDisplayName: msg.modelDisplayName,\n modelUserKey: msg.modelUserKey\n };\n } else {\n // Audit message\n const auditRecord = msg.chatterMessageDetails?.map((detail: any) => ({\n field: detail.fieldName,\n fieldDisplayName: detail.fieldDisplayName,\n fieldType: detail.fieldType,\n previous: detail.oldValue,\n current: detail.newValue,\n previousDisplay: detail.oldValueDisplay,\n currentDisplay: detail.newValueDisplay,\n })).filter((detail: any) => {\n const previousValue = detail.previousDisplay ?? detail.previous;\n const currentValue = detail.currentDisplay ?? detail.current;\n\n return !(isEmptyAuditValue(previousValue) && isEmptyAuditValue(currentValue));\n }) || [];\n\n if (auditRecord.length === 0) {\n return null;\n }\n\n return {\n id: msg.id,\n user: msg.user?.fullName || \"System\",\n userId: msg.user?.id,\n messageType: \"audit\",\n time: new Date(msg.createdAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }),\n auditRecord: auditRecord,\n createdAt: msg.createdAt,\n date: formatDate(msg.createdAt),\n messageSubType: msg.messageSubType,\n modelDisplayName: msg.modelDisplayName,\n modelUserKey: msg.modelUserKey,\n message: msg.messageBody,\n };\n }\n }).filter(Boolean);\n setMessages(processedMessages);\n setTotalRecords(response?.data?.meta?.totalRecords || 0);\n } catch (error) {\n console.error(ERROR_MESSAGES.FETCHING_MESSAGE, error);\n }\n }\n\n const handleFilterChange = (newFilters: FilterState) => {\n setFilters({\n name: newFilters.name,\n startDate: newFilters.startDate,\n endDate: newFilters.endDate\n });\n setLimit(25);\n };\n\n const handleLoadMore = () => {\n setLimit(prevLimit => prevLimit + 25);\n };\n\n const canViewMessages = actionsAllowed.includes(`${permissionExpression('chatterMessage', 'findMany')}`);\n\n const renderLoadingState = () => (\n <div className='flex h-full flex-col items-center justify-center gap-2 text-center text-color-secondary'>\n <Loader2 size={20} className='animate-spin text-[var(--primary-color)]' />\n <span className='text-sm'>Loading recent activity…</span>\n </div>\n );\n\n const renderEmptyState = () => {\n const isLogComposerOpen = visibleBox === 'log';\n return (\n <div className='flex h-full items-center justify-center'>\n <div className='flex flex-col items-center gap-2 px-3 text-center text-color-secondary'>\n <div className='rounded bg-[var(--primary-color-text)] p-2 text-[var(--primary-color)]'>\n <Inbox size={20} />\n </div>\n <p className='m-0 text-base font-medium text-color'>No activity yet</p>\n <p className='m-0 text-sm'>Log your first internal note or send a message to get things started.</p>\n <SolidButton size='sm' variant='outline' onClick={() => handleTabClick('log')}>\n {isLogComposerOpen ? 'Cancel' : 'Log a note'}\n </SolidButton>\n </div>\n </div>\n );\n };\n\n const permissionError = () => (\n <div className='p-3'>\n <SolidMessage severity='warn' text=\"You do not have permission to view these messages.\" className='justify-start' />\n </div>\n );\n\n const renderMessages = () => (\n <div className='flex flex-col gap-4'>\n {messages.map((message, index) => {\n const showDateDivider = index === 0 || message.date !== messages[index - 1].date;\n return (\n <div key={message.id}>\n {showDateDivider && <SolidChatterDateDivider date={message.date} />}\n <SolidChatterMessageBox\n messageId={message.id}\n user={message.user}\n userId={message.userId}\n messageType={message.messageType}\n message={message.message}\n messageBodyMentions={message.messageBodyMentions}\n time={message.time}\n auditRecord={message.auditRecord}\n media={message.media}\n messageSubType={message.messageSubType}\n status={message.status}\n modelDisplayName={message.modelDisplayName}\n modelUserKey={message.modelUserKey}\n onRefresh={fetchData}\n />\n </div>\n );\n })}\n {totalRecords > messages.length && (\n <div className='flex justify-center'>\n <SolidButton\n type='button'\n size='sm'\n variant='outline'\n onClick={handleLoadMore}\n >\n Load more\n </SolidButton>\n </div>\n )}\n </div>\n );\n\n return (\n <div className='h-full'>\n <SolidChatterHeader\n id={id}\n refetch={fetchData}\n modelSingularName={modelSingularName}\n activeTab={activeTab}\n handleTabClick={handleTabClick}\n visibleBox={visibleBox}\n onFilterChange={handleFilterChange}\n onComposerCancel={() => setVisibleBox(null)}\n title={title}\n modelUserKey={modelUserKey}\n />\n <div className='solid-chatter-body' style={{\n height:\n isMobileViewport\n ? (visibleBox === 'email-message'\n ? 'calc(100dvh - 248px)'\n : visibleBox === 'log'\n ? 'calc(100dvh - 210px)'\n : 'calc(100dvh - 60px)')\n : (visibleBox === 'email-message'\n ? 'calc(100vh - 196px)'\n : visibleBox === 'log'\n ? 'calc(100vh - 292px)'\n : 'calc(100vh - 127px)'),\n }}>\n {isChatterLoading\n ? renderLoadingState()\n : !canViewMessages\n ? permissionError()\n : messages.length === 0\n ? renderEmptyState()\n : renderMessages()\n }\n </div>\n </div>\n )\n}\n"]}
|
|
1
|
+
{"version":3,"file":"SolidChatter.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatter.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAA;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAA;AACzF,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAA;AAQ7D,IAAM,iBAAiB,GAAG,UAAC,KAAgC;IACvD,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5C,IAAM,eAAe,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACnD,OAAO,eAAe,KAAK,EAAE,IAAI,eAAe,KAAK,MAAM,IAAI,eAAe,KAAK,MAAM,CAAC;AAC9F,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,YAAY,GAAG,UAAC,EAA+S;QAA7S,iBAAiB,uBAAA,EAAE,EAAE,QAAA,EAAE,qBAAqB,2BAAA,EAAE,wBAAwB,8BAAA,EAAE,sBAAmB,EAAnB,cAAc,mBAAG,EAAE,KAAA,EAAE,KAAK,WAAA,EAAE,YAAY,kBAAA;IACrI,IAAA,KAA4B,QAAQ,CAAiC,eAAe,CAAC,EAApF,SAAS,QAAA,EAAE,YAAY,QAA6D,CAAC;IACtF,IAAA,KAA8B,QAAQ,CAAiC,IAAI,CAAC,EAA3E,UAAU,QAAA,EAAE,aAAa,QAAkD,CAAC;IAC7E,IAAA,KAA0B,QAAQ,CAAQ,EAAE,CAAC,EAA5C,QAAQ,QAAA,EAAE,WAAW,QAAuB,CAAC;IAC9C,IAAA,KAAoB,QAAQ,CAAS,EAAE,CAAC,EAAvC,KAAK,QAAA,EAAE,QAAQ,QAAwB,CAAC;IACzC,IAAA,KAAkC,QAAQ,CAAS,CAAC,CAAC,EAApD,YAAY,QAAA,EAAE,eAAe,QAAuB,CAAC;IACtD,IAAA,KAAwB,QAAQ,CAAc;QAChD,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;KAChB,CAAC,EAJK,OAAO,QAAA,EAAE,UAAU,QAIxB,CAAC;IACG,IAAA,KAA0C,QAAQ,CAAC,KAAK,CAAC,EAAxD,gBAAgB,QAAA,EAAE,mBAAmB,QAAmB,CAAC;IAE1D,IAAA,KAAuD,6BAA6B,EAAE,EAArF,iBAAiB,QAAA,EAAe,gBAAgB,kBAAqC,CAAC;IAE7F,SAAS,CAAC;QACN,IAAM,cAAc,GAAG,cAAM,OAAA,mBAAmB,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,EAA9C,CAA8C,CAAC;QAC5E,cAAc,EAAE,CAAC;QACjB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAClD,OAAO,cAAM,OAAA,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,cAAc,CAAC,EAApD,CAAoD,CAAC;IACtE,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,SAAS,CAAC;QACN,IAAI,qBAAqB,EAAE;YACvB,IAAI,EAAE,KAAK,KAAK,EAAE;gBACd,SAAS,EAAE,CAAC;gBACZ,wBAAwB,CAAC,KAAK,CAAC,CAAC;aACnC;SACJ;IACL,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAE5B,SAAS,CAAC;QACN,IAAI,EAAE,KAAK,KAAK,EAAE;YACd,SAAS,EAAE,CAAC;SACf;IACL,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;IAErB,IAAM,cAAc,GAAG,UAAC,GAA4B;QAChD,YAAY,CAAC,GAAG,CAAC,CAAC;QAClB,aAAa,CAAC,UAAA,IAAI,IAAI,OAAA,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,EAA3B,CAA2B,CAAC,CAAC;IACvD,CAAC,CAAA;IAED,IAAM,UAAU,GAAG,UAAC,UAAkB;QAClC,IAAM,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC;QAClC,IAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,IAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;QAClC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,KAAK,CAAC,YAAY,EAAE,EAAE;YAC9C,OAAO,OAAO,CAAC;SAClB;aAAM,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,SAAS,CAAC,YAAY,EAAE,EAAE;YACzD,OAAO,WAAW,CAAC;SACtB;aAAM;YACH,OAAO,UAAU,CAAC;SACrB;IACL,CAAC,CAAC;IAEF,IAAM,SAAS,GAAG;;;;;;;oBAEJ,SAAS,GAAQ;wBACnB,QAAQ,EAAE,CAAC,MAAM,EAAE,uBAAuB,CAAC;wBAC3C,KAAK,EAAE,KAAK;qBACf,CAAC;oBAEF,IAAI,OAAO,CAAC,IAAI,EAAE;wBACd,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC;wBAC5C,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,OAAO,CAAC,IAAI,EAAE,EAAC,CAAC;qBACzE;oBACK,UAAU,GAAG,UAAC,CAAO;wBACvB,IAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;wBACtB,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;wBACvB,OAAO,CAAC,CAAC;oBACb,CAAC,CAAC;oBACI,QAAQ,GAAG,UAAC,CAAO;wBACrB,IAAM,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;wBACtB,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;wBAC5B,OAAO,CAAC,CAAC;oBACb,CAAC,CAAC;oBACF,IAAI,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,OAAO,EAAE;wBACtC,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC;wBAC5C,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG;4BAC1B,QAAQ,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;yBACnG,CAAC;qBACL;yBAAM,IAAI,OAAO,CAAC,SAAS,EAAE;wBAC1B,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC;wBAC5C,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;qBACvF;yBAAM,IAAI,OAAO,CAAC,OAAO,EAAE;wBACxB,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC;wBAC5C,SAAS,CAAC,OAAO,CAAC,SAAS,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;qBACnF;oBAEK,WAAW,GAAG,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE;wBACxC,gBAAgB,EAAE,IAAI;qBACzB,CAAC,CAAC;oBACc,qBAAM,iBAAiB,CAAC;4BACrC,QAAQ,EAAE,EAAE;4BACZ,UAAU,EAAE,iBAAiB;4BAC7B,EAAE,EAAE,WAAW;yBAClB,CAAC,CAAC,MAAM,EAAE,EAAA;;oBAJL,QAAQ,GAAG,SAIN;oBACL,iBAAiB,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,GAAQ;;wBACzD,IAAI,GAAG,CAAC,WAAW,KAAK,QAAQ,EAAE;4BAC9B,IAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC;4BACzD,iBAAiB;4BACjB,OAAO;gCACH,EAAE,EAAE,GAAG,CAAC,EAAE;gCACV,IAAI,EAAE,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,QAAQ,KAAI,QAAQ;gCACpC,MAAM,EAAE,MAAA,GAAG,CAAC,IAAI,0CAAE,EAAE;gCACpB,WAAW,EAAE,QAAQ;gCACrB,OAAO,EAAE,yBAAyB,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,mBAAmB,CAAC;gCAC5E,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;gCAC5C,IAAI,EAAE,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gCAChG,SAAS,EAAE,iBAAiB;gCAC5B,IAAI,EAAE,UAAU,CAAC,iBAAiB,CAAC;gCACnC,KAAK,EAAE,GAAG,CAAC,MAAM;gCACjB,cAAc,EAAE,GAAG,CAAC,cAAc;gCAClC,cAAc,EAAE,GAAG;gCACnB,MAAM,EAAE,GAAG,CAAC,MAAM;gCAClB,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;gCACtC,YAAY,EAAE,GAAG,CAAC,YAAY;6BACjC,CAAC;yBACL;6BAAM;4BACH,gBAAgB;4BAChB,IAAM,WAAW,GAAG,CAAA,MAAA,GAAG,CAAC,qBAAqB,0CAAE,GAAG,CAAC,UAAC,MAAW,IAAK,OAAA,CAAC;gCACjE,KAAK,EAAE,MAAM,CAAC,SAAS;gCACvB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;gCACzC,SAAS,EAAE,MAAM,CAAC,SAAS;gCAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ;gCACzB,OAAO,EAAE,MAAM,CAAC,QAAQ;gCACxB,eAAe,EAAE,MAAM,CAAC,eAAe;gCACvC,cAAc,EAAE,MAAM,CAAC,eAAe;6BACzC,CAAC,EARkE,CAQlE,EAAE,MAAM,CAAC,UAAC,MAAW;;gCACnB,IAAM,aAAa,GAAG,MAAA,MAAM,CAAC,eAAe,mCAAI,MAAM,CAAC,QAAQ,CAAC;gCAChE,IAAM,YAAY,GAAG,MAAA,MAAM,CAAC,cAAc,mCAAI,MAAM,CAAC,OAAO,CAAC;gCAE7D,OAAO,CAAC,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;4BAClF,CAAC,CAAC,KAAI,EAAE,CAAC;4BAET,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;gCAC1B,OAAO,IAAI,CAAC;6BACf;4BAED,OAAO;gCACH,EAAE,EAAE,GAAG,CAAC,EAAE;gCACV,IAAI,EAAE,CAAA,MAAA,GAAG,CAAC,IAAI,0CAAE,QAAQ,KAAI,QAAQ;gCACpC,MAAM,EAAE,MAAA,GAAG,CAAC,IAAI,0CAAE,EAAE;gCACpB,WAAW,EAAE,OAAO;gCACpB,IAAI,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;gCAC5F,WAAW,EAAE,WAAW;gCACxB,SAAS,EAAE,GAAG,CAAC,SAAS;gCACxB,IAAI,EAAE,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC;gCAC/B,cAAc,EAAE,GAAG,CAAC,cAAc;gCAClC,gBAAgB,EAAE,GAAG,CAAC,gBAAgB;gCACtC,YAAY,EAAE,GAAG,CAAC,YAAY;gCAC9B,OAAO,EAAE,GAAG,CAAC,WAAW;6BAC3B,CAAC;yBACL;oBACL,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACnB,WAAW,CAAC,iBAAiB,CAAC,CAAC;oBAC/B,eAAe,CAAC,CAAA,MAAA,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,0CAAE,IAAI,0CAAE,YAAY,KAAI,CAAC,CAAC,CAAC;;;;oBAEzD,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,EAAE,OAAK,CAAC,CAAC;;;;;SAE7D,CAAA;IAED,IAAM,kBAAkB,GAAG,UAAC,UAAuB;QAC/C,UAAU,CAAC;YACP,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,SAAS,EAAE,UAAU,CAAC,SAAS;YAC/B,OAAO,EAAE,UAAU,CAAC,OAAO;SAC9B,CAAC,CAAC;QACH,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC,CAAC;IAEF,IAAM,cAAc,GAAG;QACnB,QAAQ,CAAC,UAAA,SAAS,IAAI,OAAA,SAAS,GAAG,EAAE,EAAd,CAAc,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,IAAM,eAAe,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAG,oBAAoB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAE,CAAC,CAAC;IAEzG,IAAM,kBAAkB,GAAG,cAAM,OAAA,CAC7B,eAAK,SAAS,EAAC,yFAAyF,aACpG,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,0CAA0C,GAAG,EAC1E,eAAM,SAAS,EAAC,SAAS,8CAAgC,IACvD,CACT,EALgC,CAKhC,CAAC;IAEF,IAAM,gBAAgB,GAAG;QACrB,IAAM,iBAAiB,GAAG,UAAU,KAAK,KAAK,CAAC;QAC/C,OAAO,CACP,cAAK,SAAS,EAAC,yCAAyC,YACpD,eAAK,SAAS,EAAC,wEAAwE,aACnF,cAAK,SAAS,EAAC,wEAAwE,YACnF,KAAC,KAAK,IAAC,IAAI,EAAE,EAAE,GAAI,GACjB,EACN,YAAG,SAAS,EAAC,sCAAsC,gCAAoB,EACvE,YAAG,SAAS,EAAC,aAAa,sFAA0E,EACpG,KAAC,WAAW,IAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,cAAM,OAAA,cAAc,CAAC,KAAK,CAAC,EAArB,CAAqB,YACxE,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,GAClC,IACZ,GACJ,CACL,CAAC;IACN,CAAC,CAAC;IAEF,IAAM,eAAe,GAAG,cAAM,OAAA,CAC1B,cAAK,SAAS,EAAC,KAAK,YAChB,KAAC,YAAY,IAAC,QAAQ,EAAC,MAAM,EAAC,IAAI,EAAC,oDAAoD,EAAC,SAAS,EAAC,eAAe,GAAG,GAClH,CACT,EAJ6B,CAI7B,CAAC;IAEF,IAAM,cAAc,GAAG,cAAM,OAAA,CACzB,eAAK,SAAS,EAAC,qBAAqB,aAC/B,QAAQ,CAAC,GAAG,CAAC,UAAC,OAAO,EAAE,KAAK;gBACzB,IAAM,eAAe,GAAG,KAAK,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBACjF,OAAO,CACH,0BACK,eAAe,IAAI,KAAC,uBAAuB,IAAC,IAAI,EAAE,OAAO,CAAC,IAAI,GAAI,EACnE,KAAC,sBAAsB,IACnB,SAAS,EAAE,OAAO,CAAC,EAAE,EACrB,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,WAAW,EAAE,OAAO,CAAC,WAAW,EAChC,OAAO,EAAE,OAAO,CAAC,OAAO,EACxB,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAChD,IAAI,EAAE,OAAO,CAAC,IAAI,EAClB,WAAW,EAAE,OAAO,CAAC,WAAW,EAChC,KAAK,EAAE,OAAO,CAAC,KAAK,EACpB,cAAc,EAAE,OAAO,CAAC,cAAc,EACtC,cAAc,EAAE,OAAO,CAAC,cAAc,EACtC,MAAM,EAAE,OAAO,CAAC,MAAM,EACtB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAC1C,YAAY,EAAE,OAAO,CAAC,YAAY,EAClC,SAAS,EAAE,SAAS,GACtB,KAlBI,OAAO,CAAC,EAAE,CAmBd,CACT,CAAC;YACN,CAAC,CAAC,EACD,YAAY,GAAG,QAAQ,CAAC,MAAM,IAAI,CAC/B,cAAK,SAAS,EAAC,qBAAqB,YAChC,KAAC,WAAW,IACR,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,cAAc,0BAGb,GACZ,CACT,IACC,CACT,EAxC4B,CAwC5B,CAAC;IAEF,OAAO,CACH,eAAK,SAAS,EAAC,QAAQ,aACnB,KAAC,kBAAkB,IACf,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,SAAS,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,cAAc,EAC9B,UAAU,EAAE,UAAU,EACtB,cAAc,EAAE,kBAAkB,EAClC,gBAAgB,EAAE,cAAM,OAAA,aAAa,CAAC,IAAI,CAAC,EAAnB,CAAmB,EAC3C,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,YAAY,GAC5B,EACF,cAAK,SAAS,EAAC,oBAAoB,EAAC,KAAK,EAAE;oBACvC,MAAM,EACF,gBAAgB;wBACZ,CAAC,CAAC,CAAC,UAAU,KAAK,eAAe;4BAC7B,CAAC,CAAC,sBAAsB;4BACxB,CAAC,CAAC,UAAU,KAAK,KAAK;gCAClB,CAAC,CAAC,sBAAsB;gCACxB,CAAC,CAAC,qBAAqB,CAAC;wBAChC,CAAC,CAAC,CAAC,UAAU,KAAK,eAAe;4BAC7B,CAAC,CAAC,qBAAqB;4BACvB,CAAC,CAAC,UAAU,KAAK,KAAK;gCAClB,CAAC,CAAC,qBAAqB;gCACvB,CAAC,CAAC,qBAAqB,CAAC;iBAC3C,YACI,gBAAgB;oBACb,CAAC,CAAC,kBAAkB,EAAE;oBACtB,CAAC,CAAC,CAAC,eAAe;wBACd,CAAC,CAAC,eAAe,EAAE;wBACnB,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;4BACnB,CAAC,CAAC,gBAAgB,EAAE;4BACpB,CAAC,CAAC,cAAc,EAAE,GAE5B,IACJ,CACT,CAAA;AACL,CAAC,CAAA","sourcesContent":["\nimport React, { useState, useEffect } from 'react'\nimport { SolidChatterHeader } from './SolidChatterHeader'\nimport { SolidChatterDateDivider } from './SolidChatterDateDivider'\nimport { SolidChatterMessageBox } from './SolidChatterMessageBox'\nimport { useLazyGetchatterMessageQuery } from '../../../redux/api/solidChatterMessageApi'\nimport qs from \"qs\";\nimport { ERROR_MESSAGES } from '../../../constants/error-messages'\nimport { permissionExpression } from '../../../helpers/permissions'\nimport { SolidButton, SolidMessage } from '../../shad-cn-ui'\nimport { Inbox, Loader2 } from 'lucide-react'\nimport { renderMessageBodyMentions } from './chatterMentions'\n\ninterface FilterState {\n name: string;\n startDate: Date | null;\n endDate: Date | null;\n}\n\nconst isEmptyAuditValue = (value: string | null | undefined) => {\n if (value == null) return true;\n if (typeof value !== 'string') return false;\n\n const normalizedValue = value.trim().toLowerCase();\n return normalizedValue === '' || normalizedValue === 'none' || normalizedValue === 'null';\n};\n\nexport const SolidChatter = ({ modelSingularName, id, refreshChatterMessage, setRefreshChatterMessage, actionsAllowed = [], title, modelUserKey }: { modelSingularName: any, id: any, refreshChatterMessage: boolean, setRefreshChatterMessage: (value: boolean) => void, actionsAllowed?: string[], title?: string, modelUserKey?: string }) => {\n const [activeTab, setActiveTab] = useState<'email-message' | 'log' | null>('email-message');\n const [visibleBox, setVisibleBox] = useState<'email-message' | 'log' | null>(null);\n const [messages, setMessages] = useState<any[]>([]);\n const [limit, setLimit] = useState<number>(25);\n const [totalRecords, setTotalRecords] = useState<number>(0);\n const [filters, setFilters] = useState<FilterState>({\n name: '',\n startDate: null,\n endDate: null\n });\n const [isMobileViewport, setIsMobileViewport] = useState(false);\n\n const [getchatterMessage, { isLoading: isChatterLoading }] = useLazyGetchatterMessageQuery();\n\n useEffect(() => {\n const updateViewport = () => setIsMobileViewport(window.innerWidth <= 1199);\n updateViewport();\n window.addEventListener('resize', updateViewport);\n return () => window.removeEventListener('resize', updateViewport);\n }, []);\n\n useEffect(() => {\n if (refreshChatterMessage) {\n if (id !== 'new') {\n fetchData();\n setRefreshChatterMessage(false);\n }\n }\n }, [refreshChatterMessage]);\n\n useEffect(() => {\n if (id !== 'new') {\n fetchData();\n }\n }, [filters, limit]);\n\n const handleTabClick = (tab: 'email-message' | 'log') => {\n setActiveTab(tab);\n setVisibleBox(prev => (prev === tab ? null : tab));\n }\n\n const formatDate = (dateString: string) => {\n const date = new Date(dateString);\n const today = new Date();\n const yesterday = new Date(today);\n yesterday.setDate(yesterday.getDate() - 1);\n\n if (date.toDateString() === today.toDateString()) {\n return 'Today';\n } else if (date.toDateString() === yesterday.toDateString()) {\n return 'Yesterday';\n } else {\n return dateString;\n }\n };\n\n const fetchData = async () => {\n try {\n const queryData: any = {\n populate: ['user', 'chatterMessageDetails'],\n limit: limit\n };\n\n if (filters.name) {\n queryData.filters = queryData.filters || {};\n queryData.filters['user'] = { fullName: { $containsi: filters.name }};\n }\n const startOfDay = (d: Date) => {\n const x = new Date(d);\n x.setHours(0, 0, 0, 0);\n return x;\n };\n const endOfDay = (d: Date) => {\n const x = new Date(d);\n x.setHours(23, 59, 59, 999);\n return x;\n };\n if (filters.startDate && filters.endDate) {\n queryData.filters = queryData.filters || {};\n queryData.filters.createdAt = {\n $between: [startOfDay(filters.startDate).toISOString(), endOfDay(filters.endDate).toISOString()]\n };\n } else if (filters.startDate) {\n queryData.filters = queryData.filters || {};\n queryData.filters.createdAt = { $gte: startOfDay(filters.startDate).toISOString() };\n } else if (filters.endDate) {\n queryData.filters = queryData.filters || {};\n queryData.filters.createdAt = { $lte: endOfDay(filters.endDate).toISOString() };\n }\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n const response = await getchatterMessage({\n entityId: id,\n entityName: modelSingularName,\n qs: queryString\n }).unwrap();\n const processedMessages = response.data.records.map((msg: any) => {\n if (msg.messageType === 'custom') {\n const displayTimeSource = msg.updatedAt || msg.createdAt;\n // Custom message\n return {\n id: msg.id,\n user: msg.user?.fullName || \"System\",\n userId: msg.user?.id,\n messageType: \"custom\",\n message: renderMessageBodyMentions(msg.messageBody, msg.messageBodyMentions),\n messageBodyMentions: msg.messageBodyMentions,\n time: new Date(displayTimeSource).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }),\n createdAt: displayTimeSource,\n date: formatDate(displayTimeSource),\n media: msg._media,\n messageSubType: msg.messageSubType,\n chatterMessage: msg,\n status: msg.status,\n modelDisplayName: msg.modelDisplayName,\n modelUserKey: msg.modelUserKey\n };\n } else {\n // Audit message\n const auditRecord = msg.chatterMessageDetails?.map((detail: any) => ({\n field: detail.fieldName,\n fieldDisplayName: detail.fieldDisplayName,\n fieldType: detail.fieldType,\n previous: detail.oldValue,\n current: detail.newValue,\n previousDisplay: detail.oldValueDisplay,\n currentDisplay: detail.newValueDisplay,\n })).filter((detail: any) => {\n const previousValue = detail.previousDisplay ?? detail.previous;\n const currentValue = detail.currentDisplay ?? detail.current;\n\n return !(isEmptyAuditValue(previousValue) && isEmptyAuditValue(currentValue));\n }) || [];\n\n if (auditRecord.length === 0) {\n return null;\n }\n\n return {\n id: msg.id,\n user: msg.user?.fullName || \"System\",\n userId: msg.user?.id,\n messageType: \"audit\",\n time: new Date(msg.createdAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }),\n auditRecord: auditRecord,\n createdAt: msg.createdAt,\n date: formatDate(msg.createdAt),\n messageSubType: msg.messageSubType,\n modelDisplayName: msg.modelDisplayName,\n modelUserKey: msg.modelUserKey,\n message: msg.messageBody,\n };\n }\n }).filter(Boolean);\n setMessages(processedMessages);\n setTotalRecords(response?.data?.meta?.totalRecords || 0);\n } catch (error) {\n console.error(ERROR_MESSAGES.FETCHING_MESSAGE, error);\n }\n }\n\n const handleFilterChange = (newFilters: FilterState) => {\n setFilters({\n name: newFilters.name,\n startDate: newFilters.startDate,\n endDate: newFilters.endDate\n });\n setLimit(25);\n };\n\n const handleLoadMore = () => {\n setLimit(prevLimit => prevLimit + 25);\n };\n\n const canViewMessages = actionsAllowed.includes(`${permissionExpression('chatterMessage', 'findMany')}`);\n\n const renderLoadingState = () => (\n <div className='flex h-full flex-col items-center justify-center gap-2 text-center text-color-secondary'>\n <Loader2 size={20} className='animate-spin text-[var(--primary-color)]' />\n <span className='text-sm'>Loading recent activity…</span>\n </div>\n );\n\n const renderEmptyState = () => {\n const isLogComposerOpen = visibleBox === 'log';\n return (\n <div className='flex h-full items-center justify-center'>\n <div className='flex flex-col items-center gap-2 px-3 text-center text-color-secondary'>\n <div className='rounded bg-[var(--primary-color-text)] p-2 text-[var(--primary-color)]'>\n <Inbox size={20} />\n </div>\n <p className='m-0 text-base font-medium text-color'>No activity yet</p>\n <p className='m-0 text-sm'>Log your first internal note or send a message to get things started.</p>\n <SolidButton size='sm' variant='outline' onClick={() => handleTabClick('log')}>\n {isLogComposerOpen ? 'Cancel' : 'Log a note'}\n </SolidButton>\n </div>\n </div>\n );\n };\n\n const permissionError = () => (\n <div className='p-3'>\n <SolidMessage severity='warn' text=\"You do not have permission to view these messages.\" className='justify-start' />\n </div>\n );\n\n const renderMessages = () => (\n <div className='flex flex-col gap-4'>\n {messages.map((message, index) => {\n const showDateDivider = index === 0 || message.date !== messages[index - 1].date;\n return (\n <div key={message.id}>\n {showDateDivider && <SolidChatterDateDivider date={message.date} />}\n <SolidChatterMessageBox\n messageId={message.id}\n user={message.user}\n userId={message.userId}\n messageType={message.messageType}\n message={message.message}\n messageBodyMentions={message.messageBodyMentions}\n time={message.time}\n auditRecord={message.auditRecord}\n media={message.media}\n messageSubType={message.messageSubType}\n chatterMessage={message.chatterMessage}\n status={message.status}\n modelDisplayName={message.modelDisplayName}\n modelUserKey={message.modelUserKey}\n onRefresh={fetchData}\n />\n </div>\n );\n })}\n {totalRecords > messages.length && (\n <div className='flex justify-center'>\n <SolidButton\n type='button'\n size='sm'\n variant='outline'\n onClick={handleLoadMore}\n >\n Load more\n </SolidButton>\n </div>\n )}\n </div>\n );\n\n return (\n <div className='h-full'>\n <SolidChatterHeader\n id={id}\n refetch={fetchData}\n modelSingularName={modelSingularName}\n activeTab={activeTab}\n handleTabClick={handleTabClick}\n visibleBox={visibleBox}\n onFilterChange={handleFilterChange}\n onComposerCancel={() => setVisibleBox(null)}\n title={title}\n modelUserKey={modelUserKey}\n />\n <div className='solid-chatter-body' style={{\n height:\n isMobileViewport\n ? (visibleBox === 'email-message'\n ? 'calc(100dvh - 248px)'\n : visibleBox === 'log'\n ? 'calc(100dvh - 210px)'\n : 'calc(100dvh - 60px)')\n : (visibleBox === 'email-message'\n ? 'calc(100vh - 196px)'\n : visibleBox === 'log'\n ? 'calc(100vh - 292px)'\n : 'calc(100vh - 127px)'),\n }}>\n {isChatterLoading\n ? renderLoadingState()\n : !canViewMessages\n ? permissionError()\n : messages.length === 0\n ? renderEmptyState()\n : renderMessages()\n }\n </div>\n </div>\n )\n}\n"]}
|
|
@@ -140,6 +140,7 @@ export const SolidChatter = ({ modelSingularName, id, refreshChatterMessage, set
|
|
|
140
140
|
date: formatDate(displayTimeSource),
|
|
141
141
|
media: msg._media,
|
|
142
142
|
messageSubType: msg.messageSubType,
|
|
143
|
+
chatterMessage: msg,
|
|
143
144
|
status: msg.status,
|
|
144
145
|
modelDisplayName: msg.modelDisplayName,
|
|
145
146
|
modelUserKey: msg.modelUserKey
|
|
@@ -252,6 +253,7 @@ export const SolidChatter = ({ modelSingularName, id, refreshChatterMessage, set
|
|
|
252
253
|
auditRecord={message.auditRecord}
|
|
253
254
|
media={message.media}
|
|
254
255
|
messageSubType={message.messageSubType}
|
|
256
|
+
chatterMessage={message.chatterMessage}
|
|
255
257
|
status={message.status}
|
|
256
258
|
modelDisplayName={message.modelDisplayName}
|
|
257
259
|
modelUserKey={message.modelUserKey}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SolidChatterMessageWidgetProps } from '../../../types/solid-core';
|
|
1
2
|
interface Props {
|
|
2
3
|
messageId?: number | string;
|
|
3
4
|
user: string;
|
|
@@ -8,6 +9,7 @@ interface Props {
|
|
|
8
9
|
time?: string;
|
|
9
10
|
auditRecord?: any;
|
|
10
11
|
messageSubType?: string;
|
|
12
|
+
chatterMessage?: SolidChatterMessageWidgetProps['chatterMessage'];
|
|
11
13
|
status?: string;
|
|
12
14
|
modelDisplayName?: string;
|
|
13
15
|
modelUserKey?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidChatterMessageBox.d.ts","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatterMessageBox.tsx"],"names":[],"mappings":"AAgBA,UAAU,KAAK;IACX,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE;QACJ,kBAAkB,CAAC,EAAE,KAAK,CAAC;YACvB,EAAE,EAAE,MAAM,CAAC;YACX,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,EAAE,MAAM,CAAC;YACjB,gBAAgB,EAAE,MAAM,CAAC;YACzB,SAAS,EAAE,MAAM,CAAC;SACrB,CAAC,CAAC;KACN,CAAC;CACL;AAsBD,eAAO,MAAM,sBAAsB,UAAW,KAAK,
|
|
1
|
+
{"version":3,"file":"SolidChatterMessageBox.d.ts","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatterMessageBox.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAA;AAE/E,UAAU,KAAK;IACX,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,8BAA8B,CAAC,gBAAgB,CAAC,CAAC;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,KAAK,CAAC,EAAE;QACJ,kBAAkB,CAAC,EAAE,KAAK,CAAC;YACvB,EAAE,EAAE,MAAM,CAAC;YACX,WAAW,EAAE,MAAM,CAAC;YACpB,QAAQ,EAAE,MAAM,CAAC;YACjB,gBAAgB,EAAE,MAAM,CAAC;YACzB,SAAS,EAAE,MAAM,CAAC;SACrB,CAAC,CAAC;KACN,CAAC;CACL;AAsBD,eAAO,MAAM,sBAAsB,UAAW,KAAK,4CAwdlD,CAAA"}
|
|
@@ -49,6 +49,7 @@ import Image from "../../common/Image";
|
|
|
49
49
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
50
50
|
import styles from './chatter.module.css';
|
|
51
51
|
import { SolidChatterCustomMessage } from './SolidChatterCustomMessage';
|
|
52
|
+
import { isChatterMessageWidget, SolidChatterMessageWidget } from './SolidChatterMessageWidget';
|
|
52
53
|
import { SolidChatterAuditMessage } from './SolidChatterAuditMessage';
|
|
53
54
|
import { Check, GitBranch, MessageSquare, Paperclip, Pencil, Trash2, X } from 'lucide-react';
|
|
54
55
|
import { SolidButton, SolidLightbox, SolidTag, SolidTooltip, SolidTooltipContent, SolidTooltipTrigger, SolidIcon, SolidTextarea } from '../../shad-cn-ui';
|
|
@@ -78,7 +79,7 @@ var getFileIcon = function (mimeType) {
|
|
|
78
79
|
};
|
|
79
80
|
export var SolidChatterMessageBox = function (props) {
|
|
80
81
|
var _a;
|
|
81
|
-
var messageId = props.messageId, user = props.user, userId = props.userId, messageType = props.messageType, message = props.message, messageBodyMentions = props.messageBodyMentions, time = props.time, auditRecord = props.auditRecord, media = props.media, messageSubType = props.messageSubType, status = props.status, modelDisplayName = props.modelDisplayName, modelUserKey = props.modelUserKey, onRefresh = props.onRefresh;
|
|
82
|
+
var messageId = props.messageId, user = props.user, userId = props.userId, messageType = props.messageType, message = props.message, messageBodyMentions = props.messageBodyMentions, time = props.time, auditRecord = props.auditRecord, media = props.media, messageSubType = props.messageSubType, chatterMessage = props.chatterMessage, status = props.status, modelDisplayName = props.modelDisplayName, modelUserKey = props.modelUserKey, onRefresh = props.onRefresh;
|
|
82
83
|
var _b = useState([]), lightboxSlides = _b[0], setLightboxSlides = _b[1];
|
|
83
84
|
var _c = useState(false), openLightbox = _c[0], setOpenLightbox = _c[1];
|
|
84
85
|
var _d = useState(status), taskStatus = _d[0], setTaskStatus = _d[1];
|
|
@@ -145,7 +146,7 @@ export var SolidChatterMessageBox = function (props) {
|
|
|
145
146
|
: messageSubType === "audit_insert"
|
|
146
147
|
? "Inserted"
|
|
147
148
|
: "Audit record")
|
|
148
|
-
: "Internal note";
|
|
149
|
+
: isChatterMessageWidget(messageType, messageSubType) ? "Custom message" : "Internal note";
|
|
149
150
|
var TypeIcon = messageType === 'audit' ? GitBranch : MessageSquare;
|
|
150
151
|
var isTaskMessage = messageSubType === 'task';
|
|
151
152
|
var isTaskCompleted = (taskStatus !== null && taskStatus !== void 0 ? taskStatus : '').toLowerCase() === 'completed';
|
|
@@ -303,9 +304,11 @@ export var SolidChatterMessageBox = function (props) {
|
|
|
303
304
|
return (_jsxs("div", { className: styles.solidChatterMessageBox, children: [_jsx("div", { className: styles.solidChatterMessageCard, children: _jsxs("div", { className: styles.solidChatterMessageLayout, children: [_jsx("div", { className: styles.solidChatterAvatar, style: avatarStyle, children: initials || user.charAt(0).toUpperCase() }), _jsxs("div", { className: styles.solidChatterMessageContent, children: [_jsxs("div", { className: styles.solidChatterMessageHeader, children: [_jsxs("div", { className: 'flex items-center gap-2 flex-wrap', children: [_jsx("p", { className: styles.solidChatterUser, children: user }), _jsxs(SolidTooltip, { children: [_jsx(SolidTooltipTrigger, { asChild: true, children: _jsx("span", { className: "".concat(styles.solidChatterBadge, " ").concat(messageType === 'audit' ? styles.audit : styles.custom), "aria-label": messageLabel, children: _jsx(TypeIcon, { size: 12 }) }) }), _jsx(SolidTooltipContent, { side: "right", children: messageLabel })] })] }), _jsxs("div", { className: 'flex items-center gap-2', children: [canEditNote && !isEditing && (_jsx(SolidButton, { type: "button", size: "sm", variant: "ghost", className: "solid-icon-button", leftIcon: _jsx(Pencil, { size: 12 }), onClick: function () {
|
|
304
305
|
resetMentions(parseMessageBodyMentions(messageBodyMentions));
|
|
305
306
|
setIsEditing(true);
|
|
306
|
-
}, "aria-label": "Edit note", title: "Edit note" })), _jsx("span", { className: styles.solidChatterTime, children: time })] })] }), modelDisplayName && (_jsxs("p", { className: "".concat(styles.solidChatterMeta, " m-0"), children: [modelDisplayName, modelUserKey && _jsxs(_Fragment, { children: [" \u00B7 ", _jsx("span", { className: 'font-medium', children: modelUserKey })] })] })), localMessage && !isEditing && (_jsx("div", { className: styles.solidMessageWrapper, children: messageType === 'audit'
|
|
307
|
+
}, "aria-label": "Edit note", title: "Edit note" })), _jsx("span", { className: styles.solidChatterTime, children: time })] })] }), modelDisplayName && (_jsxs("p", { className: "".concat(styles.solidChatterMeta, " m-0"), children: [modelDisplayName, modelUserKey && _jsxs(_Fragment, { children: [" \u00B7 ", _jsx("span", { className: 'font-medium', children: modelUserKey })] })] })), (localMessage || (chatterMessage && isChatterMessageWidget(messageType, messageSubType))) && !isEditing && (_jsx("div", { className: styles.solidMessageWrapper, children: messageType === 'audit'
|
|
307
308
|
? _jsx(SolidChatterAuditMessage, { auditRecord: auditRecord })
|
|
308
|
-
:
|
|
309
|
+
: chatterMessage && isChatterMessageWidget(messageType, messageSubType)
|
|
310
|
+
? _jsx(SolidChatterMessageWidget, { chatterMessage: chatterMessage })
|
|
311
|
+
: _jsx(SolidChatterCustomMessage, { message: localMessage }) })), isEditing && (_jsxs("div", { className: 'flex flex-col gap-2', children: [_jsx(SolidTextarea, { ref: editTextareaRef, value: editedMessage, onChange: handleMentionTextChange, onKeyDown: handleEditKeyDown, onKeyUp: handleMentionKeyUp, onClick: handleMentionClick, rows: 4, className: "w-full py-2" }), _jsx("p", { className: styles.chatterComposerHelp, children: "Type @ to mention a user. Press Ctrl+Enter to save." }), mentionRange && (_jsx(SolidChatterMentionMenu, { isLoading: isFetchingMentionUsers, users: mentionSuggestions, activeIndex: activeMentionIndex, onSelect: handleSelectMention })), _jsxs("div", { className: 'flex flex-col gap-2', children: [_jsx("input", { ref: fileInputRef, id: "note-edit-file-".concat(messageId), type: "file", multiple: true, onChange: handleFileSelect, style: { display: 'none' } }), selectedFiles.length > 0 && (_jsx("div", { className: 'flex flex-col gap-1', children: selectedFiles.map(function (file, index) { return (_jsxs("div", { className: 'flex items-center justify-between text-xs', children: [_jsxs("span", { children: [file.name, " (", formatFileSize(file.size), ")"] }), _jsx(SolidButton, { type: "button", size: "sm", variant: "ghost", className: 'solid-icon-button', leftIcon: _jsx(X, { size: 12 }), onClick: function () { return setSelectedFiles(function (prev) { return prev.filter(function (_, i) { return i !== index; }); }); }, "aria-label": "Remove ".concat(file.name) })] }, "".concat(file.name, "-").concat(index))); }) }))] }), _jsxs("div", { className: 'flex items-center justify-between gap-2 flex-wrap', children: [_jsxs("div", { className: 'flex items-center gap-2', children: [_jsx(SolidButton, { type: "button", size: "sm", variant: "ghost", className: "solid-icon-button", leftIcon: _jsx(Paperclip, { size: 14 }), onClick: function () { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, "aria-label": "Attach files", title: "Attach files" }), _jsx("span", { className: 'text-xs text-color-secondary', children: "Attach file" })] }), _jsxs("div", { className: 'flex items-center justify-end gap-2', children: [_jsx(SolidButton, { type: "button", size: "sm", variant: "outline", leftIcon: _jsx(X, { size: 12 }), onClick: handleCancelEdit, children: "Cancel" }), _jsx(SolidButton, { type: "button", size: "sm", variant: "primary", loading: isUpdatingNote, leftIcon: _jsx(Check, { size: 12 }), onClick: handleEditSave, disabled: !(editedMessage === null || editedMessage === void 0 ? void 0 : editedMessage.trim()) || (removedAttachmentIds.length === 0 && selectedFiles.length === 0 && editedMessage.trim() === (message !== null && message !== void 0 ? message : '').trim()), children: "Save" })] })] })] })), visibleAttachments.length > 0 && (_jsx("div", { className: styles.solidChatterAttachments, children: visibleAttachments.map(function (attachment) {
|
|
309
312
|
var isImage = attachment.mimeType.startsWith('image/');
|
|
310
313
|
return (_jsxs("div", { className: styles.solidChatterAttachment, style: { position: 'relative' }, children: [isEditing && canEditNote && (_jsx(SolidButton, { type: "button", size: "sm", variant: "ghost", className: "solid-icon-button", leftIcon: _jsx(Trash2, { size: 12, color: "#dc2626" }), onClick: function () { return toggleRemoveAttachment(attachment.id); }, "aria-label": "Remove ".concat(attachment.originalFileName), title: "Remove ".concat(attachment.originalFileName), style: {
|
|
311
314
|
position: 'absolute',
|