@solidxai/core-ui 0.1.19-beta.0 → 0.1.19
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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidGlobalSearchElement.js","sourceRoot":"","sources":["../../../../src/components/core/common/SolidGlobalSearchElement.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { forwardRef, useCallback, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport FilterComponent, { FilterOperator, FilterRule, FilterRuleType } from \"../../../components/core/common/FilterComponent\";\nimport { toTitleCase } from \"../../../helpers/helpers\";\nimport {clearFilterObjectFromLocalStorage,getFilterObjectFromLocalStorage,setFilterObjectToLocalStorage,\n} from \"./globalSearchPersistence\";\nimport { createSolidEntityApi } from \"../../../redux/api/solidEntityApi\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport qs from \"qs\";\nimport { SolidSaveCustomFilterForm } from \"./SolidSaveCustomFilterForm\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { hydrateRelationRules } from \"../../../helpers/hydrateRelationRules\";\nimport { useSession } from '../../../hooks/useSession'\nimport { getUnboundSavedFilterVariableNames, parseSavedFilterQueryJson, resolveSavedFilterVariables } from '../../../helpers/resolveActiveUserId';\nimport GroupingComponent, { AggregationRule, GroupingRule, DateGroupingFormat } from \"./GroupingComponent\";\nimport { Bookmark, Check, Filter, Pencil, Plus, Search, SearchX, Sparkles, Trash2, X } from \"lucide-react\";\nimport { SolidButton } from \"../../shad-cn-ui/SolidButton\";\nimport { SolidInput } from \"../../shad-cn-ui/SolidInput\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogDescription,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n} from \"../../shad-cn-ui/SolidDialog\";\n\n\nconst getRandomInt = (min: number, max: number) => {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\ninterface PredefinedSearch {\n name: string;\n description?: string;\n filters: Record<string, any>;\n}\n\nexport type SearchableField = {\n fieldName: string;\n displayName: string;\n searchField: string;\n matchMode: string;\n}\n\nexport type GroupableField = {\n fieldName: string;\n displayName: string;\n searchField: string;\n matchMode: string;\n type: string;\n ormType: string;\n relationType: string;\n computedFieldValueType: string;\n}\n\nconst extractFields = (nodes: any[] = []): any[] => {\n const result: any[] = [];\n\n for (const node of nodes) {\n if (node?.type === \"field\") {\n result.push(node);\n }\n\n if (Array.isArray(node?.children)) {\n result.push(...extractFields(node.children));\n }\n }\n\n return result;\n};\n\n\nconst transformFiltersToRules = (filter: any, parentRule: number | null = null): FilterRule => {\n if (!filter || typeof filter !== \"object\" || Object.keys(filter).length === 0) {\n throw new Error(\"Invalid filter: expected a non-null object with properties\");\n }\n if (!filter || typeof filter !== \"object\") {\n throw new Error(\"Invalid filter: expected a non-null object\");\n }\n const currentId = idCounter++;\n if (filter[\"$or\"]) {\n return {\n id: currentId,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.OR,\n parentRule,\n children: filter[\"$or\"]\n .filter((sub: any) => {\n // Filter out null, undefined, empty strings, and empty objects\n if (sub == null) return false;\n if (typeof sub === \"string\" && sub.trim() === \"\") return false;\n if (typeof sub === \"object\" && Object.keys(sub).length === 0) return false;\n return true;\n })\n .map((subFilter: any) => transformFiltersToRules(subFilter, currentId))\n };\n }\n\n if (filter[\"$and\"]) {\n return {\n id: currentId,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.AND,\n parentRule,\n children: filter[\"$and\"]\n .filter((sub: any) => {\n // Filter out null, undefined, empty strings, and empty objects\n if (sub == null) return false;\n if (typeof sub === \"string\" && sub.trim() === \"\") return false;\n if (typeof sub === \"object\" && Object.keys(sub).length === 0) return false;\n return true;\n })\n .map((subFilter: any) => transformFiltersToRules(subFilter, currentId))\n };\n }\n\n // Handle single rule condition\n for (const fieldName in filter) {\n const condition = filter[fieldName];\n if (!condition || typeof condition !== \"object\") {\n throw new Error(`Invalid condition for field '${fieldName}'`);\n }\n\n // CASE 1: relation filter → unwrap first\n if (condition?.id && typeof condition?.id === \"object\") {\n for (const matchMode in condition.id) {\n const rawValue = condition.id[matchMode];\n const mathcModeValue: any = matchMode\n return {\n id: currentId,\n type: FilterRuleType.RULE,\n fieldName,\n matchMode: mathcModeValue,\n value: Array.isArray(rawValue) ? rawValue : [rawValue],\n parentRule,\n children: []\n };\n }\n }\n\n // CASE 2: normal field → loop stays\n for (const matchMode in condition) {\n const rawValue = condition[matchMode];\n const mathcModeValue: any = matchMode\n return {\n id: currentId,\n type: FilterRuleType.RULE,\n fieldName,\n matchMode: mathcModeValue,\n value: Array.isArray(rawValue) ? rawValue : [rawValue],\n parentRule,\n children: []\n };\n }\n\n\n }\n throw new Error(ERROR_MESSAGES.INVALID_FILTER_STRUCTURE);\n}\n\n\n\n\nlet idCounter = 1;\nconst generateId = () => Date.now() + Math.floor(Math.random() * 1000);\n\n\nconst transformRulesToFilters = (input: any, viewData: any) => {\n\n // Helper function to process individual rules\n const processRule = (rule: any) => {\n if (rule.value !== undefined && rule.value !== null) {\n\n // Ensure rule.value is always an array of primitive values.\n // Mixed arrays like [\"failed\", { label: \"pending\", value: \"pending\" }]\n // must be normalized before query serialization.\n const rawValues = Array.isArray(rule?.value) ? rule.value : [rule?.value];\n let values = rawValues.map((item: any) => {\n if (item && typeof item === \"object\") {\n if (Object.prototype.hasOwnProperty.call(item, \"value\")) return item.value;\n if (Object.prototype.hasOwnProperty.call(item, \"label\")) return item.label;\n }\n return item;\n });\n if (rule.matchMode !== '$in' && rule.matchMode !== '$notIn' && rule.matchMode !== '$between' && rule.matchMode !== '$null' && rule.matchMode !== '$notNull') {\n values = values[0];\n }\n\n\n const fieldMeta = viewData?.data?.solidFieldsMetadata?.[rule.fieldName];\n const isManyToMany = fieldMeta?.type === 'relation' && fieldMeta?.relationType === 'many-to-many';\n\n\n let transformedRule;\n if (isManyToMany) {\n // For many-to-many relations, always use array format for $in/$notIn\n transformedRule = {\n [rule.fieldName]: {\n id: {\n [rule.matchMode]: values // Keep as array\n }\n }\n };\n } else {\n // Rule transformation\n transformedRule = {\n [rule.fieldName]: {\n [rule.matchMode]: values // Assuming `value` is always an array with `value` and `label`\n }\n };\n }\n\n let processedFields;\n if (rule.children && rule.children.length > 0) {\n processedFields = rule.children.map((child: any) => processRuleGroup(child)).filter((child: any) => child != null);;\n }\n if (processedFields) {\n return { ...transformedRule, processedFields }\n }\n return { ...transformedRule }\n\n }\n\n };\n\n // Helper function to process rule groups\n const processRuleGroup = (ruleGroup: any) => {\n const operator = ruleGroup.matchOperator === 'or' ? '$or' : '$and';\n const children = ruleGroup.children.map((child: any) => {\n if (child.type === 'rule') {\n // Process the rule\n return processRule(child);\n } else if (child.type === 'rule_group') {\n // Process the rule group recursively\n return processRuleGroup(child);\n }\n }).filter((child: any) => child != null);\n // If no valid children, return null\n // if (children.length === 0) {\n // return null;\n // }\n\n // If only one child, return it directly without wrapping in operator\n // if (children.length === 1) {\n // return children[0];\n // }\n\n return {\n [operator]: children\n };\n };\n\n\n // Start processing the root rule group\n const filterObject = processRuleGroup(input);\n\n if (!filterObject) {\n return {};\n }\n\n function liftProcessedFields(filters: any) {\n if (!filters || typeof filters !== 'object') return filters;\n\n const processArray = (arr: any) => {\n let newArr = [];\n for (let obj of arr) {\n if (obj && obj.processedFields) {\n let processed: any = processArray(obj.processedFields); // Recursively process nested processedFields\n delete obj.processedFields;\n newArr.push(obj, ...processed);\n } else {\n newArr.push(obj);\n }\n\n for (let key in obj) {\n if (Array.isArray(obj[key])) {\n obj[key] = processArray(obj[key]);\n }\n }\n }\n return newArr;\n }\n\n for (let key in filters) {\n if (Array.isArray(filters[key])) {\n filters[key] = processArray(filters[key]);\n }\n }\n\n return filters;\n }\n\n\n return liftProcessedFields(filterObject)\n\n}\n\n\ntype GroupedType = {\n values: string[];\n searchField: any;\n matchMode: string;\n}\n\n// Build nested condition for relation fields\nfunction buildNestedCondition(path: string, operatorKey: string, value: any) {\n const keys = path.split(\".\").filter(Boolean);\n const leaf = { [operatorKey]: value };\n return keys.reduceRight((acc, key) => ({ [key]: acc }), leaf);\n}\n\nconst tranformSearchToFilters = (input: any) => {\n if (!input || !input.$and) return input;\n\n const grouped: Record<string, GroupedType> = {};\n\n input.$and.forEach(({ fieldName, value, searchField, matchMode }: any) => {\n const val = Array.isArray(value) && value.length === 1 ? value[0] : value;\n\n if (!grouped[fieldName]) {\n grouped[fieldName] = { values: [], searchField: searchField || \"\", matchMode: matchMode || \"$containsi\" };\n }\n\n if (Array.isArray(val)) {\n grouped[fieldName]?.values.push(...val);\n } else {\n grouped[fieldName]?.values.push(val);\n }\n });\n\n // return {\n // $and: Object.entries(grouped).map(([fieldName, values]) => ({\n // [fieldName]: {\n // $containsi: values.length === 1 ? values[0] : values\n // }\n // }))\n // };\n\n const andFilters: any[] = [];\n\n Object.entries(grouped).forEach(([fieldName, value]) => {\n\n const isNested = value.searchField ? value.searchField.includes(\".\") : false;\n\n if (isNested) {\n\n // NESTED: use $eq and expand dot-notation into nested objects\n if (value.values.length === 1) {\n andFilters.push(buildNestedCondition(value.searchField, value.matchMode, value.values[0]));\n } else {\n andFilters.push({\n $or: value.values.map(v => buildNestedCondition(value.searchField, value.matchMode, v)),\n });\n }\n } else {\n\n if (value.values.length === 1) {\n andFilters.push({\n [fieldName]: {\n $containsi: value.values[0]\n }\n });\n } else {\n andFilters.push({\n $or: value.values.map((v) => ({\n [fieldName]: { $containsi: v }\n }))\n });\n }\n }\n });\n\n return {\n $and: andFilters\n };\n}\n\nexport const mergeSearchAndCustomFilters = (transformedFilter: any, newFilter: any, transformedFilterName: string, newFilterName: string) => {\n const filters: any = {};\n\n // Add only non-null filters\n if (transformedFilter && Object.keys(transformedFilter).length > 0) {\n filters[transformedFilterName] = transformedFilter;\n }\n if (newFilter && Object.keys(newFilter).length > 0) {\n filters[newFilterName] = newFilter;\n }\n\n // Return the combined filters object\n return filters;\n}\n\n\nexport const mergeAllDiffFilters = (customFilter: any, searchFilter: any, savedFilter: any, preDefinedFilter?: any, groupingRules?: GroupingRule[], aggregationRules?: AggregationRule[]) => {\n const filters: any = {};\n\n // Add only non-null filters\n if (customFilter && Object.keys(customFilter).length > 0) {\n filters[\"custom_filter_predicate\"] = customFilter;\n }\n if (searchFilter && Object.keys(searchFilter).length > 0) {\n filters[\"search_predicate\"] = searchFilter;\n }\n if (savedFilter && Object.keys(savedFilter).length > 0) {\n filters[\"saved_filter_predicate\"] = savedFilter;\n }\n if (preDefinedFilter && Object.keys(preDefinedFilter).length > 0) {\n filters[\"predefined_search_predicate\"] = preDefinedFilter;\n }\n if (groupingRules && Object.keys(groupingRules).length > 0) {\n filters[\"grouping_rules\"] = groupingRules;\n }\n if (aggregationRules && Object.keys(aggregationRules).length > 0) {\n filters[\"aggregation_rules\"] = aggregationRules;\n }\n // Return the combined filters object\n return filters;\n}\n\nconst SavedFilterList = ({ savedfilter, activeSavedFilterReference, activeSavedFilterReferences, applySavedFilter, openSavedCustomFilter, setSavedFilterTobeDeleted, setIsDeleteSQDialogVisible, isFocused, onMouseEnter, optionId }: any) => {\n const isActive = activeSavedFilterReferences\n ? activeSavedFilterReferences.includes(savedfilter?.systemKey ? `system:${savedfilter.systemKey}` : `id:${savedfilter.id}`)\n : savedfilter?.systemKey\n ? activeSavedFilterReference === savedfilter.systemKey\n : String(activeSavedFilterReference) === String(savedfilter.id);\n\n return (\n <div className=\"solid-saved-filter-item\" onMouseEnter={onMouseEnter}>\n <div className=\"solid-saved-filter-main-wrap\">\n <SolidButton\n variant=\"ghost\"\n size=\"sm\"\n className={`solid-saved-filter-main w-full ${isActive ? \"is-active\" : \"\"} ${isFocused ? \"solid-search-overlay-option-active\" : \"\"}`}\n id={optionId}\n role=\"option\"\n aria-selected={isFocused}\n aria-label={`${savedfilter.name}${isActive ? \", applied\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={(e) => {\n e.stopPropagation();\n applySavedFilter(savedfilter);\n }}\n title={savedfilter?.description}\n >\n <span className=\"solid-search-overlay-option-content\">\n <span className=\"solid-search-overlay-option-icon\" aria-hidden=\"true\">\n <Bookmark size={15} />\n </span>\n <span className=\"solid-search-overlay-option-copy\">\n <span className=\"solid-search-overlay-option-title\">{savedfilter.name}</span>\n {savedfilter?.description && (\n <span className=\"solid-search-overlay-option-description\">{savedfilter.description}</span>\n )}\n </span>\n {isActive && (\n <span className=\"solid-search-overlay-option-check\" aria-hidden=\"true\">\n <Check size={14} />\n </span>\n )}\n </span>\n </SolidButton>\n </div>\n <div className=\"solid-saved-filter-actions\">\n {savedfilter.isSeeded !== true && !savedfilter.systemKey &&\n <>\n <SolidButton\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-saved-filter-icon-btn\"\n onMouseDown={(e) => {\n e.preventDefault();\n openSavedCustomFilter(savedfilter);\n }}\n aria-label={`Edit ${savedfilter.name}`}\n >\n <Pencil size={14} />\n </SolidButton>\n <SolidButton\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-saved-filter-icon-btn is-danger\"\n onMouseDown={(e) => {\n e.preventDefault();\n setSavedFilterTobeDeleted(savedfilter);\n setIsDeleteSQDialogVisible(true);\n }}\n aria-label={`Delete ${savedfilter.name}`}\n >\n <Trash2 size={14} />\n </SolidButton>\n </>\n }\n\n </div>\n </div>\n )\n}\n\nconst replacePlaceholders = (obj: any, searchValue: string): any => {\n if (typeof obj === 'string') {\n return obj.replace(/\\{\\{search\\}\\}/g, searchValue);\n }\n if (Array.isArray(obj)) {\n return obj.map(item => replacePlaceholders(item, searchValue));\n }\n if (obj && typeof obj === 'object') {\n const newObj: any = {};\n for (const key in obj) {\n newObj[key] = replacePlaceholders(obj[key], searchValue);\n }\n return newObj;\n }\n return obj;\n};\n\n\nconst extractChips = (node: any): any[] => {\n if (!node) return [];\n\n // If node has $and\n if (node.$and && Array.isArray(node.$and)) {\n return node.$and.flatMap(extractChips);\n }\n\n // If node has $or\n if (node.$or && Array.isArray(node.$or)) {\n return node.$or.flatMap(extractChips);\n }\n\n // Leaf condition\n const field = Object.keys(node)[0];\n const operatorObj = node[field];\n\n // ✅ Normal case\n if (operatorObj?.$containsi) {\n return [{\n columnName: field,\n value: operatorObj.$containsi,\n columnDisplayName: field.charAt(0).toUpperCase() + field.slice(1),\n searchField: field,\n matchMode: \"$containsi\"\n }];\n }\n // ✅ Nested case (like city.name)\n else if (typeof operatorObj === \"object\") {\n const nestedField = Object.keys(operatorObj)[0];\n const nestedOperatorObj = operatorObj[nestedField];\n\n const operatorKey = nestedOperatorObj\n ? Object.keys(nestedOperatorObj).find(k => k.startsWith(\"$\"))\n : null;\n\n if (operatorKey) {\n return [{\n columnName: field,\n value: nestedOperatorObj[operatorKey],\n columnDisplayName: field.charAt(0).toUpperCase() + field.slice(1),\n searchField: `${field}.${nestedField}`,\n matchMode: operatorKey\n }];\n }\n }\n\n return [];\n};\n\nconst areFilterStateValuesEqual = (left: any, right: any) =>\n JSON.stringify(left ?? null) === JSON.stringify(right ?? null);\n\n\n\ntype RelationCache = Map<string, { label: string; value: number }>;\n\n\n\nexport const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handleApplyCustomFilter, showSaveFilterPopup, setShowSaveFilterPopup, filterPredicates, allowMultipleSavedFilters = false }: any, ref) => {\n const dispatch = useDispatch();\n type OverlayOption =\n | { id: string; kind: \"field\"; field: any }\n | { id: string; kind: \"predefined\"; predefined: any }\n | { id: string; kind: \"saved\"; saved: any }\n | { id: string; kind: \"custom\" }\n | { id: string; kind: \"grouping\" };\n const overlayInstanceId = useId();\n const overlayListboxId = `${overlayInstanceId}-search-options`;\n const getOverlayOptionId = (index: number) => `${overlayInstanceId}-search-option-${index}`;\n type ManagedChipItem = {\n id: string;\n type: \"saved\" | \"search\" | \"predefined\" | \"custom\" | \"grouping\";\n label: string;\n onRemove: () => void;\n onOpen?: () => void;\n };\n\n const defaultState: FilterRule[] = [\n {\n id: 1,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.OR,\n parentRule: null,\n children: [\n {\n id: Date.now() + getRandomInt(1, 500),\n type: FilterRuleType.RULE,\n fieldName: null,\n matchMode: null,\n value: null,\n parentRule: 1,\n children: []\n },\n {\n id: Date.now() + getRandomInt(1, 500),\n type: FilterRuleType.RULE,\n fieldName: null,\n matchMode: null,\n value: null,\n parentRule: 1,\n children: []\n }\n ]\n }\n ];\n\n const defaultAggregationRules: AggregationRule[] = [\n {\n id: 1,\n operator: \"count\",\n fieldName: \"id\",\n locked: true\n }\n ];\n\n const defaultGroupingRules: GroupingRule[] = [\n { id: 1, fieldName: null, dateGrouping: null }\n ];\n\n const [initialState, setInitialState] = useState(defaultState);\n const searchableEntityLabel =\n viewData?.data?.solidView?.displayName ||\n viewData?.data?.solidView?.model?.displayName ||\n \"records\";\n\n const chipsRef = useRef<HTMLDivElement | null | any>(null);\n\n // filterRules is used to maintian the ui of custom filter \n // customFilter is used to maintian the transformed filter object of custom filter\n const [filterRules, setFilterRules] = useState<FilterRule[]>(initialState);\n const [customFilter, setCustomFilter] = useState<any | null>(null);\n\n const [fields, setFields] = useState<any[]>([]);\n const [searchableFields, setSearchableFields] = useState<any[]>([]);\n const [groupableFields, setGroupableFields] = useState<GroupableField[]>([]);\n\n const [groupingRules, setGroupingRules] = useState<GroupingRule[]>(defaultGroupingRules);\n const [aggregationRules, setAggregationRules] = useState<AggregationRule[]>(defaultAggregationRules);\n\n // used to show the list of predefined searches \n const [predefinedSearches, setPredefinedSearches] = useState<PredefinedSearch[]>([]);\n\n // used to open / close the custom fitler popup \n const [showGlobalSearchElement, setShowGlobalSearchElement] = useState<boolean>(false);\n\n // used to open / close the group fitler popup \n const [showGroupFilterElement, setShowGroupFilterElement] = useState<boolean>(false);\n\n\n // searchChips maintain the ui to display searched query \n // searchFilter maintain the transformed filter of the searched query \n const [searchChips, setSearchChips] = useState<{ columnName?: string; value: string }[]>([]);\n const [searchFilter, setSearchFilter] = useState<any | null>(null);\n\n // predefinedSearchChip maintain the ui to display predefined searches query \n const [predefinedSearchChip, setPredefinedSearchChip] = useState<{ name: string; value: string } | null>(null);\n\n // state to maintain the text typed in the search input box\n const [inputValue, setInputValue] = useState<string | null>(\"\");\n const [focusedIndex, setFocusedIndex] = useState(-1);\n\n // flag to prevent un necessary re renders\n const [hasSearched, setHasSearched] = useState<boolean>(false);\n\n // currentSavedFilterData is used to save the whole object of saved filter \n const [currentSavedFilterData, setCurrentSavedFilterData] = useState<any>();\n const [currentSavedFilterQuery, setCurrentSavedFilterQuery] = useState<any>();\n const [currentSavedFilterVariables, setCurrentSavedFilterVariables] = useState<Record<string, any>>({});\n const [currentSavedFilterRules, setCurrentSavedFilterRules] = useState<any>();\n const [activeSavedFilters, setActiveSavedFilters] = useState<any[]>([]);\n const [editingSavedFilterKey, setEditingSavedFilterKey] = useState<string | null>(null);\n const [showSavedFilterComponent, setShowSavedFilterComponent] = useState<boolean>(false);\n\n\n const [savedFilterTobeDeleted, setSavedFilterTobeDeleted] = useState<any | null>(null);\n const [isDeleteSQDialogVisible, setIsDeleteSQDialogVisible] = useState<boolean>(false);\n const [savedFilterQueryString, setSavedFilterQueryString] = useState<string>();\n const [showOverlay, setShowOverlay] = useState(false);\n const overlayRef = useRef<HTMLDivElement | null>(null);\n const searchInputRef = useRef<HTMLInputElement | null>(null);\n const [showChipManager, setShowChipManager] = useState(false);\n const chipManagerRef = useRef<HTMLDivElement | null>(null);\n const chipManagerTriggerRef = useRef<HTMLButtonElement | null>(null);\n\n const focusSearchInput = () => {\n requestAnimationFrame(() => {\n searchInputRef.current?.focus();\n });\n };\n\n useEffect(() => {\n if (focusedIndex >= 0 && showOverlay) {\n const activeElement = overlayRef.current?.querySelector(`.solid-search-overlay-option-active`);\n if (activeElement) {\n activeElement.scrollIntoView({\n block: 'nearest',\n inline: 'start'\n });\n }\n }\n }, [focusedIndex, showOverlay]);\n\n const { data: session, status } = useSession();\n const user = session?.user;\n\n const [refreshKey, setRefreshKey] = useState(0);\n\n const [predefinedSearchBaseFilter, setPredefinedSearchBaseFilter] = useState<any>(null);\n\n const [savedFilters, setSavedFilters] = useState<any[]>([]);\n const [savedFiltersLoaded, setSavedFiltersLoaded] = useState(false);\n const isDraftPublishWorkflowEnabled = viewData?.data?.solidView?.model?.draftPublishWorkflow === true;\n \n const workflowPublishedVersionsSavedFilter = useMemo(() => {\n if (!isDraftPublishWorkflowEnabled) return null;\n return {\n id: \"system-published-versions\",\n systemKey: \"workflow-published-versions\",\n name: \"Published Versions\",\n description: \"Shows current published records, including records that are published but not latest.\",\n isSeeded: true,\n filterQueryJson: JSON.stringify({\n isPublished: { $eq: true },\n isLatest: { $in: [true, false] },\n }),\n };\n }, [isDraftPublishWorkflowEnabled]);\n\n const allAvailableSavedFilters = useMemo(\n () => workflowPublishedVersionsSavedFilter\n ? [workflowPublishedVersionsSavedFilter, ...(savedFilters || [])]\n : (savedFilters || []),\n [workflowPublishedVersionsSavedFilter, savedFilters]\n );\n const availableSavedFilters = allAvailableSavedFilters;\n const selectableSavedFilters = useMemo(\n () => allAvailableSavedFilters.filter((filter: any) => {\n try {\n return getUnboundSavedFilterVariableNames(parseSavedFilterQueryJson(filter.filterQueryJson || \"{}\")).length === 0;\n } catch {\n return false;\n }\n }),\n [allAvailableSavedFilters]\n );\n\n const entityApi = createSolidEntityApi(\"savedFilters\");\n const {\n useCreateSolidEntityMutation,\n useDeleteSolidEntityMutation,\n useGetSolidEntityByIdQuery,\n useUpdateSolidEntityMutation,\n useLazyGetSolidEntitiesQuery\n } = entityApi;\n\n const [\n createEntity,\n { isSuccess: isEntityCreateSuccess, isError: isEntityCreateError, error: entityCreateError },\n ] = useCreateSolidEntityMutation();\n\n const [\n updateEntity,\n { isSuccess: isEntityUpdateSuceess, isError: isEntityUpdateError, error: entityUpdateError },\n ] = useUpdateSolidEntityMutation();\n\n const [\n deleteEntity,\n { isSuccess: isEntityDeleteSuceess, isError: isEntityDeleteError, error: entityDeleteError },\n ] = useDeleteSolidEntityMutation();\n\n const [triggerGetSolidEntities, { data: solidEntityListViewData, isLoading: isSavedFilterLoading, error }] = useLazyGetSolidEntitiesQuery();\n\n const [savedFilterFetchDataRefreshKey, setSavedFilterFetchDataRefreshKey] = useState(0);\n\n useEffect(() => {\n const fn = async () => {\n if (!viewData?.data?.solidView?.model?.id || !viewData?.data?.solidView?.id || !user?.id) {\n return;\n }\n setSavedFiltersLoaded(false)\n const filters = {\n $or: [\n {\n $and: [\n { model: { $in: [viewData?.data?.solidView?.model?.id] } },\n { view: { $in: [viewData?.solidView?.id] } },\n { user: { $in: [user?.id] } },\n { isPrivate: { $eq: true } }\n ]\n },\n {\n $and: [\n { model: { $in: [viewData?.data?.solidView?.model?.id] } },\n { view: { $in: [viewData?.solidView?.id] } },\n { isPrivate: { $eq: false } }\n ]\n }\n\n ]\n }\n const queryData: any = {\n offset: 0,\n limit: 10,\n filters: filters,\n populate: [\"model\", \"view\", \"user\"],\n sort: [\"id:desc\"],\n };\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n setSavedFilterQueryString(queryString)\n const savedFilter = await triggerGetSolidEntities(queryString).unwrap();\n\n if (savedFilter) {\n // console.log(\"savedFilter\", savedFilter);\n setSavedFilters(savedFilter?.records)\n }\n setSavedFiltersLoaded(true);\n }\n fn()\n }, [\n savedFilterFetchDataRefreshKey,\n viewData?.data?.solidView?.id,\n viewData?.data?.solidView?.model?.id,\n user?.id\n ])\n\n const getSavedFilterKey = (savedFilter: any) =>\n savedFilter?.systemKey ? `system:${savedFilter.systemKey}` : `id:${savedFilter?.id}`;\n\n const getPersistedSavedFilterItems = (queryObject: any): any[] => {\n if (!allowMultipleSavedFilters) return [];\n if (Array.isArray(queryObject?.saved_filter_items)) {\n return queryObject.saved_filter_items;\n }\n if (queryObject?.saved_filter_predicate) {\n return [{\n id: queryObject.saved_filter_id,\n systemKey: queryObject.saved_filter_system_key,\n name: queryObject.saved_filter_name || \"Saved Filter\",\n predicate: queryObject.saved_filter_predicate,\n variables: queryObject.saved_filter_variables || {},\n }];\n }\n return [];\n };\n\n// Updates search, custom filter, grouping, aggregation, and UI state from a single shared filter source.\n const syncFilterUiStateFromSharedSource = useCallback(async (queryObject: any | null) => {\n const nextSearchFilter = queryObject?.search_predicate || null;\n const nextSearchChips = nextSearchFilter ? extractChips(nextSearchFilter) : [];\n const nextCustomFilter =\n queryObject?.custom_filter_predicate && Object.keys(queryObject.custom_filter_predicate).length !== 0\n ? queryObject.custom_filter_predicate\n : null;\n const nextPredefinedBaseFilter = queryObject?.predefined_search_predicate || null;\n const nextPredefinedSearchChip =\n nextPredefinedBaseFilter && queryObject?.predefined_search_chip\n ? queryObject.predefined_search_chip\n : null;\n const persistedSavedFilterItems = getPersistedSavedFilterItems(queryObject);\n const nextSavedFilterItems = allowMultipleSavedFilters\n ? persistedSavedFilterItems.map((item: any) => {\n const savedFilter = availableSavedFilters.find((candidate: any) =>\n item?.systemKey\n ? candidate?.systemKey === item.systemKey\n : String(candidate?.id) === String(item?.id)\n );\n return {\n data: savedFilter || {\n id: item?.id,\n systemKey: item?.systemKey,\n name: item?.name || \"Saved Filter\",\n filterQueryJson: JSON.stringify(item?.predicate || {}),\n },\n query: item?.predicate || {},\n variables: item?.variables || {},\n };\n })\n : [];\n const nextSavedFilter = allowMultipleSavedFilters\n ? (nextSavedFilterItems.length > 0 ? { $or: nextSavedFilterItems.map((item: any) => item.query) } : null)\n : queryObject?.saved_filter_predicate || null;\n const nextSavedFilterVariables = queryObject?.saved_filter_variables ?? {};\n const nextSavedFilterData = allowMultipleSavedFilters\n ? (nextSavedFilterItems.length > 0 ? nextSavedFilterItems[nextSavedFilterItems.length - 1].data : null)\n : nextSavedFilter\n ? availableSavedFilters.find((savedFilter: any) => {\n if (queryObject?.saved_filter_system_key) {\n return savedFilter?.systemKey === queryObject.saved_filter_system_key;\n }\n if (queryObject?.saved_filter_id) {\n return String(savedFilter?.id) === String(queryObject.saved_filter_id);\n }\n return false;\n }) || {\n id: queryObject?.saved_filter_id,\n systemKey: queryObject?.saved_filter_system_key,\n name: queryObject?.saved_filter_name || 'Saved Filter',\n filterQueryJson: JSON.stringify(nextSavedFilter),\n }\n : null;\n\n setSearchFilter((prev: any) => areFilterStateValuesEqual(prev, nextSearchFilter) ? prev : nextSearchFilter);\n setSearchChips((prev) => areFilterStateValuesEqual(prev, nextSearchChips) ? prev : nextSearchChips);\n setCustomFilter((prev: any) => areFilterStateValuesEqual(prev, nextCustomFilter) ? prev : nextCustomFilter);\n setPredefinedSearchBaseFilter((prev: any) => areFilterStateValuesEqual(prev, nextPredefinedBaseFilter) ? prev : nextPredefinedBaseFilter);\n setPredefinedSearchChip((prev) => areFilterStateValuesEqual(prev, nextPredefinedSearchChip) ? prev : nextPredefinedSearchChip);\n setCurrentSavedFilterData((prev: any) => areFilterStateValuesEqual(prev, nextSavedFilterData) ? prev : nextSavedFilterData);\n setCurrentSavedFilterQuery((prev: any) => areFilterStateValuesEqual(prev, nextSavedFilter) ? prev : nextSavedFilter);\n setCurrentSavedFilterVariables((prev) => areFilterStateValuesEqual(prev, nextSavedFilterVariables) ? prev : nextSavedFilterVariables);\n setActiveSavedFilters((prev) => areFilterStateValuesEqual(prev, nextSavedFilterItems) ? prev : nextSavedFilterItems);\n\n if (nextCustomFilter && viewData?.data) {\n const rules: FilterRule = transformFiltersToRules(nextCustomFilter);\n const hydratedRules = await hydrateRelationRules([rules], viewData);\n setFilterRules((prev) => areFilterStateValuesEqual(prev, hydratedRules) ? prev : hydratedRules);\n } else {\n setFilterRules((prev) => areFilterStateValuesEqual(prev, initialState) ? prev : initialState);\n }\n\n const hasGroupingRules = queryObject?.grouping_rules?.some((rule: any) => rule.fieldName !== null);\n let nextGroupingRules: GroupingRule[] = [{ id: 1, fieldName: null, dateGrouping: null }];\n\n if (hasGroupingRules) {\n nextGroupingRules = queryObject.grouping_rules;\n } else {\n const layoutGroupBy = viewData?.data?.solidView?.layout?.attrs?.groupBy;\n if (Array.isArray(layoutGroupBy) && layoutGroupBy.length > 0) {\n nextGroupingRules = layoutGroupBy.map((groupStr: string, index: number) => {\n const [fieldName, dateGrouping] = groupStr.split(\":\");\n return {\n id: Date.now() + index,\n fieldName: fieldName || null,\n dateGrouping: (dateGrouping as DateGroupingFormat) || null,\n };\n });\n }\n }\n\n const nextAggregationRules =\n Array.isArray(queryObject?.aggregation_rules) && queryObject.aggregation_rules.length > 0\n ? queryObject.aggregation_rules\n : [{ id: 1, operator: \"count\", fieldName: \"id\", locked: true }];\n\n setGroupingRules((prev) => areFilterStateValuesEqual(prev, nextGroupingRules) ? prev : nextGroupingRules);\n setAggregationRules((prev) => areFilterStateValuesEqual(prev, nextAggregationRules) ? prev : nextAggregationRules);\n }, [allowMultipleSavedFilters, availableSavedFilters, initialState, viewData]);\n\n const resetAppliedFilters = ({ preserveGrouping = false }: { preserveGrouping?: boolean } = {}) => {\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null);\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n setCurrentSavedFilterData(null);\n setCurrentSavedFilterQuery(null);\n setCurrentSavedFilterVariables({});\n setCurrentSavedFilterRules(null);\n setActiveSavedFilters([]);\n setEditingSavedFilterKey(null);\n if (!preserveGrouping) {\n setGroupingRules(defaultGroupingRules);\n setAggregationRules(defaultAggregationRules);\n }\n setShowOverlay(false);\n setShowChipManager(false);\n setInputValue(\"\");\n clearFilterObjectFromLocalStorage();\n\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n };\n\n useImperativeHandle(ref, () => ({\n clearFilter: () => {\n resetAppliedFilters();\n },\n getSavedFilters: () => availableSavedFilters.map((filter: any) => ({ ...filter })),\n applySavedFilterByName: (name: string, variables: Record<string, any> = {}) => {\n const savedFilter = allAvailableSavedFilters.find((filter: any) => filter?.name === name);\n if (!savedFilter) {\n return false;\n }\n\n return applySavedFilter(savedFilter, variables);\n },\n clearAppliedFilters: (options?: { preserveGrouping?: boolean }) => {\n resetAppliedFilters(options);\n },\n openGroupingDialog: () => {\n setShowOverlay(false);\n setShowGroupFilterElement(true);\n },\n openCustomFilterDialog: () => {\n setShowOverlay(false);\n setShowGlobalSearchElement(true);\n }\n }));\n\n useEffect(() => {\n if (!viewData?.data?.solidView?.id) return;\n void syncFilterUiStateFromSharedSource(getFilterObjectFromLocalStorage());\n }, [syncFilterUiStateFromSharedSource, viewData?.data?.solidView?.id]);\n\n useEffect(() => {\n const fn = async () => {\n if (savedFiltersLoaded) {\n const queryObject = getFilterObjectFromLocalStorage();\n await syncFilterUiStateFromSharedSource(queryObject);\n\n setRefreshKey((prev) => prev + 1)\n setHasSearched(true);\n }\n }\n fn()\n }, [availableSavedFilters, savedFiltersLoaded, syncFilterUiStateFromSharedSource, viewData?.data?.solidView?.id])\n\n useEffect(() => {\n const fn = async () => {\n if (filterPredicates !== undefined && filterPredicates !== null) {\n // const formattedChips = filterPredicates.search_predicate?.$and.map((chip: any, key: any) => {\n // const chipKey = Object.keys(chip)[0]; // Get the key, e.g., \"displayName\"\n // const chipValue = chip[chipKey]?.$containsi; // Get the value of \"$containsi\"\n // const chipdata = {\n // columnName: chipKey,\n // value: chipValue\n // };\n // return chipdata\n // }\n // );\n // setSearchChips(formattedChips);\n await syncFilterUiStateFromSharedSource(filterPredicates);\n }\n }\n fn()\n }, [filterPredicates, syncFilterUiStateFromSharedSource])\n\n useEffect(() => {\n if (viewData?.data?.solidFieldsMetadata) {\n setInputValue(\"\");\n let fieldsData = viewData?.data?.solidFieldsMetadata;\n // console.log(`fiels data while rendering solid global search element: `);\n // console.log(fieldsData);\n\n const layoutChildren = viewData?.data?.solidView?.layout?.children ?? [];\n const fieldElements = extractFields(layoutChildren);\n\n\n // Build one entry per layout column (not per field name), so multiple columns\n // sharing the same field name (e.g. several viewMetadata columns with different\n // searchFields/labels) each appear as a separate searchable option.\n const seenKeys = new Set<string>();\n const fieldsList: any[] = [];\n\n // First pass: one entry per unique field name (for non-searchable / filter use)\n Object.entries(fieldsData ?? {}).forEach(([key, value]: any) => {\n const viewFieldElement = fieldElements.find(\n (f: any) => f?.attrs?.name === key\n );\n seenKeys.add(key);\n fieldsList.push({\n name: viewFieldElement?.attrs?.label ?? value.displayName,\n value: key,\n type: value.type,\n ormType: value.ormType,\n matchMode: viewFieldElement?.attrs?.searchMatchMode,\n searchField: viewFieldElement?.attrs?.searchField ?? null,\n isSearchable: viewFieldElement?.attrs?.isSearchable ?? false,\n relationType: value?.relationType ?? null,\n });\n });\n\n // Second pass: for any layout column that shares a field name but has a\n // distinct searchField, add it as an additional searchable entry.\n fieldElements.forEach((fieldElement: any) => {\n const key = fieldElement?.attrs?.name;\n const searchField = fieldElement?.attrs?.searchField;\n const isSearchable = fieldElement?.attrs?.isSearchable ?? false;\n if (!isSearchable || !searchField) return;\n // Already covered by the first pass entry for this key?\n const existingEntry = fieldsList.find(\n (e: any) => e.value === key && e.searchField === searchField\n );\n if (existingEntry) return; // already in list\n const value: any = (fieldsData ?? {})[key];\n if (!value) return;\n fieldsList.push({\n name: fieldElement?.attrs?.label ?? value.displayName,\n value: key,\n type: value.type,\n ormType: value.ormType,\n matchMode: fieldElement?.attrs?.searchMatchMode,\n searchField: searchField,\n isSearchable: true,\n relationType: value?.relationType ?? null,\n });\n });\n\n const filterableFieldsList = fieldsList.filter((field: any) => {\n switch (field.type) {\n case \"mediaSingle\":\n case \"mediaMultiple\":\n return false;\n default:\n return true;\n }\n });\n\n setFields(filterableFieldsList);\n\n const searchableFieldsList = fieldsList.filter((field: any) => {\n if (!field.isSearchable) return false;\n\n switch (field.type) {\n case \"relation\":\n // Only include relation if searchField is present\n return !!field.searchField;\n case \"longText\":\n case \"shortText\":\n case \"selectionStatic\":\n case \"selectionDynamic\":\n return true;\n // case \"selectionStatic\":\n case \"computed\":\n return field.ormType === \"varchar\";\n default:\n return false;\n }\n });\n\n const groupableFieldsList = fieldsList.filter((field: any) => {\n switch (field.type) {\n case \"relation\":\n // Only include relation if searchField is present\n if (field.relationType === \"many-to-one\")\n return true;\n return false;\n case \"longText\":\n case \"shortText\":\n case \"selectionStatic\":\n case \"selectionDynamic\":\n case \"int\":\n case \"float\":\n case \"boolean\":\n case \"date\":\n case \"datetime\":\n return true;\n // case \"selectionStatic\":\n case \"computed\":\n return field.ormType === \"varchar\";\n default:\n return false;\n }\n });\n \n // Optionally map to a minimal structure if needed for UI\n let finalSearchableFieldsList: any = searchableFieldsList.map((field: any) => ({\n fieldName: field.value,\n displayName: field.name,\n searchField: field.searchField ?? \"\",\n matchMode: field.matchMode\n }));\n \n setSearchableFields(finalSearchableFieldsList);\n\n let finalGroupableFieldsList: any = groupableFieldsList.map((field: any) => ({\n fieldName: field.value,\n displayName: field.name,\n searchField: field.searchField ?? \"\",\n matchMode: field.matchMode,\n type: field.type,\n ormType: field.ormType,\n relationType: field.relationType,\n computedFieldValueType: field.computedFieldValueType\n }));\n\n setGroupableFields(finalGroupableFieldsList)\n\n const predefinedSearchesList = viewData?.data?.solidView?.layout?.attrs?.predefinedSearches || [];\n setPredefinedSearches(predefinedSearchesList);\n }\n // used to open the \n }, [viewData])\n\n useEffect(() => {\n if (chipsRef.current) {\n const inputElement = chipsRef.current.querySelector(\"input\");\n if (inputElement) {\n inputElement.addEventListener(\"input\", (e: any) => {\n setInputValue((e.target as HTMLInputElement).value);\n });\n }\n }\n }, []);\n\n\n const handleAddChip = (columnName?: string) => {\n if (inputValue?.trim()) {\n const fallbackField = searchableFields[0]; // guaranteed object\n if (!fallbackField) return;\n // Support comma-separated values: split, trim and add as separate chips\n const values = inputValue.split(\",\").map(v => v.trim()).filter(v => v !== \"\");\n const fieldName = columnName || fallbackField.fieldName;\n const chipsToAdd = values.map(v => ({\n columnName: fieldName,\n value: v,\n columnDisplayName: fallbackField.displayName,\n searchField: fallbackField.searchField,\n matchMode: fallbackField.matchMode\n }));\n\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n }\n\n };\n\n const clearCustomFilter = () => {\n setFilterRules(initialState);\n setCustomFilter(null)\n // setPredefinedSearchChip(null)\n // setPredefinedSearchBaseFilter(null)\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n }\n\n\n const transformCustomFilterRules = (filterRules: any) => {\n const transformedFilter = transformRulesToFilters(filterRules[0], viewData);\n // If there's a predefined search, merge it with the new custom filter\n let finalCustomFilter = transformedFilter;\n // if (predefinedSearchChip && predefinedSearchBaseFilter) {\n // // Combine predefined filter with new custom filter\n // finalCustomFilter = {\n // $and: [predefinedSearchBaseFilter, transformedFilter]\n // };\n // }\n setCustomFilter(finalCustomFilter);\n setShowGlobalSearchElement(false);\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n }\n\n const transformSavedFilterRules = (filterRules: any) => {\n const transformedFilter = transformRulesToFilters(filterRules[0], viewData);\n\n // If there's a predefined search, merge it with the new custom filter\n let finalCustomFilter = transformedFilter;\n // if (predefinedSearchChip && predefinedSearchBaseFilter) {\n // // Combine predefined filter with new custom filter\n // finalCustomFilter = {\n // $and: [predefinedSearchBaseFilter, transformedFilter]\n // };\n // }\n setCurrentSavedFilterQuery(finalCustomFilter);\n if (allowMultipleSavedFilters && editingSavedFilterKey) {\n const nextItems = activeSavedFilters.map((item: any) =>\n getSavedFilterKey(item.data) === editingSavedFilterKey\n ? { ...item, query: finalCustomFilter }\n : item\n );\n setActiveSavedFilters(nextItems);\n persistActiveSavedFilters(nextItems);\n }\n setShowSavedFilterComponent(false);\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n\n }\n\n const applyGrouping = (groupingRules: GroupingRule[], aggregationRules: AggregationRule[]) => {\n setHasSearched(true)\n setShowGroupFilterElement(false);\n setGroupingRules(groupingRules);\n setAggregationRules(aggregationRules);\n setRefreshKey((prev) => prev + 1)\n }\n\n const openCustomFilterDialog = () => {\n setShowOverlay(false);\n setShowGlobalSearchElement(true);\n };\n\n const openGroupingDialog = () => {\n setShowOverlay(false);\n setShowGroupFilterElement(true);\n };\n\n useEffect(() => {\n if (refreshKey > 0 && hasSearched) {\n\n const formattedChips = {\n $and: searchChips.map((chip: any) => ({\n fieldName: chip.columnName,\n matchMode: chip.matchMode,\n value: [chip.value],\n searchField: chip.searchField ?? \"\",\n }))\n };\n\n\n const finalSearchFilter = tranformSearchToFilters(formattedChips);\n setSearchFilter(finalSearchFilter);\n\n const finalSavedFilter: any = allowMultipleSavedFilters\n ? (activeSavedFilters.length > 0 ? { $or: activeSavedFilters.map((item: any) => item.query) } : null)\n : currentSavedFilterQuery;\n const finalPredefinedFilter = predefinedSearchBaseFilter\n\n const finalCustomFilter = customFilter\n const finalFilter = mergeAllDiffFilters(finalCustomFilter, finalSearchFilter, finalSavedFilter, finalPredefinedFilter, groupingRules, aggregationRules)\n finalFilter.predefined_search_chip =\n finalPredefinedFilter && predefinedSearchChip\n ? predefinedSearchChip\n : null;\n if (allowMultipleSavedFilters && activeSavedFilters.length > 0) {\n const resolvedItems = activeSavedFilters.map((item: any) => resolveSavedFilterVariables(item.query, user?.id, item.variables || {}));\n if (resolvedItems.some((item: any) => item.missingVariables.length > 0)) return;\n finalFilter.resolved_saved_filter_predicate = { $or: resolvedItems.map((item: any) => item.value) };\n finalFilter.saved_filter_variables = {};\n finalFilter.saved_filter_items = activeSavedFilters.map((item: any) => ({\n id: item.data?.id ?? null,\n systemKey: item.data?.systemKey ?? null,\n name: item.data?.name ?? null,\n predicate: item.query,\n variables: item.variables || {},\n }));\n } else if (finalSavedFilter && Object.keys(finalSavedFilter).length > 0) {\n const resolved = resolveSavedFilterVariables(finalSavedFilter, user?.id, currentSavedFilterVariables);\n if (resolved.missingVariables.length > 0) return;\n finalFilter.resolved_saved_filter_predicate = resolved.value;\n finalFilter.saved_filter_variables = currentSavedFilterVariables;\n }\n if (!allowMultipleSavedFilters && currentSavedFilterData?.id) {\n finalFilter.saved_filter_id = currentSavedFilterData.id;\n }\n if (!allowMultipleSavedFilters && currentSavedFilterData?.systemKey) {\n finalFilter.saved_filter_system_key = currentSavedFilterData.systemKey;\n }\n if (!allowMultipleSavedFilters && currentSavedFilterData?.name) {\n finalFilter.saved_filter_name = currentSavedFilterData.name;\n }\n handleApplyCustomFilter(finalFilter, true);\n setHasSearched(false)\n // }\n }\n }, [refreshKey]);\n\n\n // Handle predefined search selection\n\n const hasCustomFilterChanged = () => {\n if (!predefinedSearchChip || !customFilter || !predefinedSearchBaseFilter) {\n return false;\n }\n // Deep comparison to check if filter has changed\n return JSON.stringify(customFilter) !== JSON.stringify(predefinedSearchBaseFilter);\n };\n\n const openSavedCustomFilter = async (savedfilter: any) => {\n //Open custom filter popup \n // setShowGlobalSearchElement(true);\n // // dont refetch the data yet\n // const customFilter = JSON.parse(savedfilter.filterQueryJson);\n // setCustomFilter(customFilter ? customFilter : null);\n // if (customFilter) {\n // const formatedCustomChips: FilterRule = transformFiltersToRules(customFilter ? customFilter : null);\n // setFilterRules(formatedCustomChips ? [formatedCustomChips] : initialState);\n // }\n\n\n if (!allowMultipleSavedFilters) {\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n }\n\n if (savedfilter?.id) {\n const savedfilterId = savedfilter.id;\n setShowOverlay(false);\n setEditingSavedFilterKey(getSavedFilterKey(savedfilter));\n const currentSavedFilterData: any = availableSavedFilters.find((savedFilter: any) => savedFilter.id === savedfilterId);\n setCurrentSavedFilterData(currentSavedFilterData);\n if (currentSavedFilterData) {\n const filterJson = parseSavedFilterQueryJson(currentSavedFilterData?.filterQueryJson);\n if (filterJson) {\n let finalSavedFilter = filterJson\n setCurrentSavedFilterQuery(finalSavedFilter)\n const rules: FilterRule = transformFiltersToRules(finalSavedFilter ? finalSavedFilter : null);\n const hydratedRules = await hydrateRelationRules(\n [rules],\n viewData\n );\n setCurrentSavedFilterRules(hydratedRules ? hydratedRules : initialState);\n setShowSavedFilterComponent(true)\n }\n }\n } else {\n console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);\n }\n }\n\n const persistActiveSavedFilters = (items: any[]) => {\n const first = items[0];\n const persistedFilter = {\n ...(getFilterObjectFromLocalStorage() || {}),\n saved_filter_items: items.map((item) => ({\n id: item.data?.id ?? null,\n systemKey: item.data?.systemKey ?? null,\n name: item.data?.name ?? null,\n predicate: item.query,\n variables: item.variables || {},\n })),\n saved_filter_predicate: items.length > 0 ? (items.length === 1 ? first.query : { $or: items.map((item) => item.query) }) : null,\n saved_filter_variables: items.length === 1 ? (first.variables || {}) : {},\n saved_filter_id: items.length === 1 ? first.data?.id ?? null : null,\n saved_filter_system_key: items.length === 1 ? first.data?.systemKey ?? null : null,\n saved_filter_name: items.length === 1 ? first.data?.name ?? null : null,\n };\n delete persistedFilter.finalFullFilter;\n setFilterObjectToLocalStorage(persistedFilter);\n };\n\n const persistActiveSavedFilter = (savedFilter: any, filterJson: any, variables: Record<string, any>) => {\n if (allowMultipleSavedFilters) {\n persistActiveSavedFilters([{ data: savedFilter, query: filterJson, variables }]);\n return;\n }\n const persistedFilter = {\n ...(getFilterObjectFromLocalStorage() || {}),\n custom_filter_predicate: null,\n search_predicate: null,\n predefined_search_predicate: null,\n predefined_search_chip: null,\n saved_filter_predicate: filterJson,\n saved_filter_variables: variables,\n saved_filter_id: savedFilter?.id ?? null,\n saved_filter_system_key: savedFilter?.systemKey ?? null,\n saved_filter_name: savedFilter?.name ?? null,\n };\n delete persistedFilter.finalFullFilter;\n setFilterObjectToLocalStorage(persistedFilter);\n };\n\n const clearActiveSavedFilter = () => {\n setCurrentSavedFilterData(null);\n setCurrentSavedFilterQuery(null);\n setCurrentSavedFilterVariables({});\n setCurrentSavedFilterRules(null);\n setShowSavedFilterComponent(false);\n\n const persistedFilter = {\n ...(getFilterObjectFromLocalStorage() || {}),\n saved_filter_items: [],\n saved_filter_predicate: null,\n saved_filter_variables: {},\n saved_filter_id: null,\n saved_filter_system_key: null,\n saved_filter_name: null,\n };\n delete persistedFilter.finalFullFilter;\n setFilterObjectToLocalStorage(persistedFilter);\n\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n };\n\n const deleteSavedFilter = async () => {\n if (!savedFilterTobeDeleted?.id) {\n setIsDeleteSQDialogVisible(false);\n setSavedFilterTobeDeleted(null);\n return;\n }\n\n try {\n await deleteEntity(savedFilterTobeDeleted?.id).unwrap();\n dispatch(showToast({\n severity: \"success\",\n summary: ERROR_MESSAGES.DELETED,\n detail: ERROR_MESSAGES.ENTITY_DELETE,\n }));\n\n if (allowMultipleSavedFilters) {\n const nextItems = activeSavedFilters.filter((item: any) => String(item.data?.id) !== String(savedFilterTobeDeleted?.id));\n setActiveSavedFilters(nextItems);\n if (String(savedFilterTobeDeleted?.id) === String(currentSavedFilterData?.id)) {\n setCurrentSavedFilterData(null);\n setCurrentSavedFilterQuery(null);\n setCurrentSavedFilterVariables({});\n }\n persistActiveSavedFilters(nextItems);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n } else if (String(savedFilterTobeDeleted?.id) === String(currentSavedFilterData?.id)) {\n removeSavedFilter();\n }\n setIsDeleteSQDialogVisible(false);\n setSavedFilterTobeDeleted(null);\n setTimeout(() => {\n setSavedFilterFetchDataRefreshKey(prev => prev + 1)\n }, 500)\n } catch (error: any) {\n const errorMessage = error?.data?.message || error?.data?.error || error?.message || ERROR_MESSAGES.SOMETHING_WRONG;\n dispatch(showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.DELETE_FAIELD,\n detail: errorMessage,\n }));\n }\n }\n const handleSaveFilter = async (formValues: any) => {\n setShowSaveFilterPopup(false)\n\n try {\n if (formValues.id) {\n const filterJson = currentSavedFilterQuery;\n const formData = new FormData();\n formData.append(\"name\", formValues.name);\n formData.append(\"filterQueryJson\", JSON.stringify(filterJson, null, 2));\n formData.append(\"modelId\", viewData?.data?.solidView?.model?.id);\n formData.append(\"viewId\", viewData?.data?.solidView?.id);\n formData.append(\"isPrivate\", formValues.isPrivate);\n formData.append(\"userId\", user?.id);\n\n await updateEntity({ id: +formValues.id, data: formData }).unwrap();\n dispatch(showToast({\n severity: \"success\",\n summary: ERROR_MESSAGES.SAVED_FILTER_UPDATED,\n detail: ERROR_MESSAGES.SAVED_FILTER_UPDATED_SUCCESSFULLY,\n }));\n\n if (!allowMultipleSavedFilters) {\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n }\n // Apply the rename immediately, both to the active filter and to\n // the cached list — otherwise the list still holds the pre-rename\n // entry, which wins the id-based lookup the next time saved-filter\n // state gets re-derived from it, reverting the name until a real\n // refetch lands (e.g. only after removing and reapplying).\n const savedFilterRecord = { id: formValues.id, name: formValues.name, isPrivate: formValues.isPrivate, filterQueryJson: JSON.stringify(filterJson, null, 2) };\n setSavedFilters((prev) => prev.map((f: any) => String(f?.id) === String(formValues.id) ? { ...f, ...savedFilterRecord } : f));\n setCurrentSavedFilterData(savedFilterRecord);\n setCurrentSavedFilterQuery(filterJson);\n if (allowMultipleSavedFilters) {\n const nextItems = activeSavedFilters.map((item: any) =>\n getSavedFilterKey(item.data) === getSavedFilterKey(savedFilterRecord)\n ? { data: savedFilterRecord, query: filterJson, variables: currentSavedFilterVariables }\n : item\n );\n setActiveSavedFilters(nextItems);\n persistActiveSavedFilters(nextItems);\n } else {\n persistActiveSavedFilter(savedFilterRecord, filterJson, currentSavedFilterVariables);\n }\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n } else {\n\n const filterJson = customFilter;\n const formData = new FormData();\n formData.append(\"name\", formValues.name);\n formData.append(\"filterQueryJson\", JSON.stringify(filterJson, null, 2));\n formData.append(\"modelId\", viewData?.data?.solidView?.model?.id);\n formData.append(\"viewId\", viewData?.data?.solidView?.id);\n formData.append(\"isPrivate\", formValues.isPrivate);\n formData.append(\"userId\", user?.id);\n const result = await createEntity(formData).unwrap();\n dispatch(showToast({\n severity: \"success\",\n summary: ERROR_MESSAGES.SAVED_FILTER_CREATED,\n detail: ERROR_MESSAGES.SAVED_FILTER_CREATED_SUCCESSFULLY,\n }));\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n // The custom filter just became this saved filter — apply it, and\n // seed the cached list with it, immediately (see rename branch above).\n // A newly created saved filter replaces any other active filters/saved\n // filters rather than joining them — only applying an existing saved\n // filter is additive when allowMultipleSavedFilters is on.\n const savedFilterRecord = { id: result.data.id, name: formValues.name, isPrivate: formValues.isPrivate, filterQueryJson: JSON.stringify(filterJson, null, 2) };\n setSavedFilters((prev) => [savedFilterRecord, ...prev]);\n setCurrentSavedFilterData(savedFilterRecord);\n setCurrentSavedFilterQuery(filterJson);\n setCurrentSavedFilterVariables({});\n if (allowMultipleSavedFilters) {\n const nextItems = [{ data: savedFilterRecord, query: filterJson, variables: {} }];\n setActiveSavedFilters(nextItems);\n persistActiveSavedFilters(nextItems);\n } else {\n persistActiveSavedFilter(savedFilterRecord, filterJson, {});\n }\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n }\n } catch (error: any) {\n const errorMessage = error?.data?.message || error?.data?.error || error?.message || ERROR_MESSAGES.SOMETHING_WRONG;\n dispatch(showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.ERROR,\n detail: errorMessage,\n }));\n }\n }\n\n\n\n useEffect(() => {\n // Explicitly type the event as a MouseEvent\n function handleClickOutside(event: MouseEvent) {\n if (overlayRef.current && !overlayRef.current.contains(event.target as Node)) {\n setShowOverlay(false);\n }\n }\n if (showOverlay) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [showOverlay]);\n\n useEffect(() => {\n function handleChipManagerClickOutside(event: MouseEvent) {\n const targetNode = event.target as Node;\n if (chipManagerRef.current?.contains(targetNode)) return;\n if (chipManagerTriggerRef.current?.contains(targetNode)) return;\n setShowChipManager(false);\n }\n\n if (showChipManager) {\n document.addEventListener(\"mousedown\", handleChipManagerClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleChipManagerClickOutside);\n };\n }, [showChipManager]);\n\n const CustomChip = () => {\n // console.log(\"customFilter\", customFilter);\n const ruleCount =\n customFilter?.$or?.length ??\n customFilter?.$and?.length ??\n Object.keys(customFilter || {}).length;\n\n return (\n <li>\n <div className=\"custom-filter-chip-type\">\n <div className=\"flex items-center gap-2 text-base\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\n onClick={() => {\n setShowGlobalSearchElement(true)\n }\n }>\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"var(--primary-color, var(--primary))\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{ruleCount}</strong> rules applied</span>\n </div>\n\n {/* button to clear filter */}\n <button type=\"button\" onClick={clearCustomFilter} style={{ cursor: \"pointer\" }} className=\"ml-1\">\n <X size={14} />\n </button>\n </div>\n </li>\n )\n };\n\n\n //saved filter related code start\n\n const applySavedFilter = (savedfilter: any, variables: Record<string, any> = {}) => {\n if (!savedfilter?.id && !savedfilter?.systemKey) {\n console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);\n return false;\n }\n\n let filterJson: any;\n try {\n filterJson = parseSavedFilterQueryJson(savedfilter?.filterQueryJson);\n } catch {\n console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);\n return false;\n }\n\n const resolved = resolveSavedFilterVariables(filterJson, user?.id, variables);\n if (resolved.missingVariables.length > 0) {\n console.error(`Unable to apply saved filter '${savedfilter?.name}': missing variables ${resolved.missingVariables.join(\", \")}`);\n return false;\n }\n\n if (allowMultipleSavedFilters) {\n const key = getSavedFilterKey(savedfilter);\n const nextItem = { data: savedfilter, query: filterJson, variables };\n const existingItem = activeSavedFilters.find((item: any) => getSavedFilterKey(item.data) === key);\n if (existingItem && areFilterStateValuesEqual(existingItem.query, filterJson) && areFilterStateValuesEqual(existingItem.variables, variables)) {\n return true;\n }\n const nextItems = existingItem\n ? activeSavedFilters.map((item: any) => getSavedFilterKey(item.data) === key ? nextItem : item)\n : [...activeSavedFilters, nextItem];\n setActiveSavedFilters(nextItems);\n setCurrentSavedFilterData(savedfilter);\n setCurrentSavedFilterQuery(filterJson);\n setCurrentSavedFilterVariables(variables);\n setEditingSavedFilterKey(null);\n persistActiveSavedFilters(nextItems);\n setShowOverlay(false);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n return true;\n }\n\n // Applying the already-active filter must be a no-op. This is important\n // for lifecycle extensions: applying a filter causes a new list load,\n // which invokes onBeforeListDataLoad/onListLoad again.\n const sameSavedFilterReference =\n (currentSavedFilterData?.id != null &&\n savedfilter?.id != null &&\n areFilterStateValuesEqual(currentSavedFilterData.id, savedfilter.id)) ||\n (currentSavedFilterData?.systemKey != null &&\n savedfilter?.systemKey != null &&\n areFilterStateValuesEqual(currentSavedFilterData.systemKey, savedfilter.systemKey));\n const sameSavedFilter =\n sameSavedFilterReference &&\n areFilterStateValuesEqual(currentSavedFilterQuery, filterJson) &&\n areFilterStateValuesEqual(currentSavedFilterVariables, variables);\n\n if (sameSavedFilter) {\n return true;\n }\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n setCurrentSavedFilterData(savedfilter);\n setCurrentSavedFilterQuery(filterJson);\n setCurrentSavedFilterVariables(variables);\n persistActiveSavedFilter(savedfilter, filterJson, variables);\n setShowOverlay(false);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n return true;\n }\n\n const removeSavedFilter = () => {\n if (allowMultipleSavedFilters) {\n const key = getSavedFilterKey(currentSavedFilterData);\n const nextItems = activeSavedFilters.filter((item: any) => getSavedFilterKey(item.data) !== key);\n setActiveSavedFilters(nextItems);\n setCurrentSavedFilterData(null);\n setCurrentSavedFilterQuery(null);\n setCurrentSavedFilterVariables({});\n setEditingSavedFilterKey(null);\n persistActiveSavedFilters(nextItems);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n return;\n }\n clearActiveSavedFilter();\n }\n\n const SavedFiltersChip = () => {\n\n return (\n <li>\n <div className=\"custom-filter-chip-type\">\n <div className=\"flex items-center gap-2 text-base\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\n onClick={() => {\n const fn = async () => {\n if (currentSavedFilterQuery) {\n const rules: FilterRule = transformFiltersToRules(currentSavedFilterQuery ? currentSavedFilterQuery : null);\n const hydratedRules = await hydrateRelationRules(\n [rules],\n viewData\n );\n setCurrentSavedFilterRules(hydratedRules ? hydratedRules : initialState);\n setShowSavedFilterComponent(true)\n }\n }\n fn()\n }\n }\n >\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"var(--primary-color, var(--primary))\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{currentSavedFilterData?.name}</strong></span>\n </div>\n\n {/* button to clear filter */}\n <button type=\"button\" onClick={removeSavedFilter} style={{ cursor: \"pointer\" }} className=\"ml-1\">\n <X size={14} />\n </button>\n </div>\n </li>\n )\n };\n\n const removeGrouping = () => {\n setGroupingRules(defaultGroupingRules);\n setAggregationRules(defaultAggregationRules);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n }\n\n const GroupingChip = () => {\n return (\n <li className=\"solid-global-search-chip\">\n <div className=\"flex items-center gap-2\">\n <div className=\"flex items-center gap-2\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n\n onClick={() => setShowGroupFilterElement(true)}\n >\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"var(--primary-color, var(--primary))\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{groupingRules.length}</strong> Grouping rules applied</span>\n </div>\n\n {/* button to clear filter */}\n <button type=\"button\" onClick={removeGrouping} style={{ cursor: \"pointer\" }} className=\"ml-1\">\n <X size={14} />\n </button>\n </div>\n </li>\n )\n };\n\n\n\n\n //saved filter related code end\n\n\n // search related code start\n\n const handleRemoveChipGroup = (columnName: string) => {\n const updatedChips = searchChips.filter(chip => chip.columnName !== columnName);\n setSearchChips(updatedChips);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n\n };\n\n const groupedSearchChips = searchChips.reduce((acc: Record<string, string[]>, chip) => {\n const key = chip.columnName;\n if (!key) return acc; // skip if undefined\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(chip.value);\n return acc;\n }, {});\n\n const customRuleCount =\n customFilter?.$or?.length ??\n customFilter?.$and?.length ??\n Object.keys(customFilter || {}).length;\n\n const managedChipItems = useMemo<ManagedChipItem[]>(() => {\n const items: ManagedChipItem[] = [];\n\n const savedItems = allowMultipleSavedFilters\n ? activeSavedFilters\n : (currentSavedFilterData?.name ? [{ data: currentSavedFilterData }] : []);\n savedItems.forEach((item: any) => {\n if (item.data?.name) {\n items.push({\n id: `saved-filter:${getSavedFilterKey(item.data)}`,\n type: \"saved\",\n label: `Saved: ${item.data.name}`,\n onRemove: () => {\n if (!allowMultipleSavedFilters) {\n removeSavedFilter();\n return;\n }\n const nextItems = activeSavedFilters.filter((active: any) => getSavedFilterKey(active.data) !== getSavedFilterKey(item.data));\n setActiveSavedFilters(nextItems);\n if (getSavedFilterKey(currentSavedFilterData) === getSavedFilterKey(item.data)) {\n setCurrentSavedFilterData(null);\n setCurrentSavedFilterQuery(null);\n setCurrentSavedFilterVariables({});\n }\n persistActiveSavedFilters(nextItems);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n },\n ...(allowMultipleSavedFilters ? { onOpen: () => openSavedCustomFilter(item.data) } : {}),\n });\n }\n });\n\n if (predefinedSearchChip?.name && predefinedSearchChip?.value) {\n items.push({\n id: \"predefined-search\",\n type: \"predefined\",\n label: `Predefined: ${predefinedSearchChip.name} (${predefinedSearchChip.value})`,\n onRemove: () => removePredefinedSearchChip(),\n });\n }\n\n if (customFilter && customRuleCount > 0) {\n items.push({\n id: \"custom-filter\",\n type: \"custom\",\n label: `${customRuleCount} custom rules applied`,\n onRemove: () => clearCustomFilter(),\n onOpen: () => setShowGlobalSearchElement(true)\n });\n }\n\n if (groupingRules.length > 0 && groupingRules.some((r) => r.fieldName !== null)) {\n items.push({\n id: \"grouping-rules\",\n type: \"grouping\",\n label: `${groupingRules.length} grouping rules applied`,\n onRemove: () => removeGrouping(),\n onOpen: () => setShowGroupFilterElement(true)\n\n });\n }\n\n Object.entries(groupedSearchChips).forEach(([column, values]) => {\n const fieldMeta = searchableFields.find((field) => field.fieldName === column);\n const columnDisplayName = fieldMeta?.displayName || column;\n items.push({\n id: `search:${column}`,\n type: \"search\",\n label: `${columnDisplayName}: ${values.join(\" or \")}`,\n onRemove: () => handleRemoveChipGroup(column),\n });\n });\n\n return items;\n }, [\n currentSavedFilterData,\n activeSavedFilters,\n allowMultipleSavedFilters,\n predefinedSearchChip,\n customFilter,\n customRuleCount,\n groupingRules,\n groupedSearchChips,\n searchableFields,\n ]);\n\n const MAX_VISIBLE_CHIPS = 3;\n const visibleChipItems = managedChipItems.slice(0, MAX_VISIBLE_CHIPS);\n const hiddenChipItems = managedChipItems.slice(MAX_VISIBLE_CHIPS);\n const hiddenChipCount = hiddenChipItems.length;\n\n const handleManagedChipOpen = (chip: ManagedChipItem) => {\n if (!chip.onOpen) return;\n chip.onOpen();\n };\n\n const clearAllAppliedChips = () => {\n if (managedChipItems.length === 0) return;\n resetAppliedFilters();\n };\n\n useEffect(() => {\n if (managedChipItems.length === 0 && showChipManager) {\n setShowChipManager(false);\n }\n }, [managedChipItems.length, showChipManager]);\n\n\n const overlayOptions = useMemo<OverlayOption[]>(() => {\n const currentValue = inputValue?.trim() || \"\";\n const fields: OverlayOption[] = currentValue\n ? searchableFields.map((field: any) => ({\n id: `field:${field.fieldName}`,\n kind: \"field\" as const,\n field\n }))\n : [];\n const predefined: OverlayOption[] =\n currentValue && predefinedSearches?.length\n ? predefinedSearches.map((p: any, idx: number) => ({\n id: `predefined:${p.name || idx}`,\n kind: \"predefined\" as const,\n predefined: p,\n }))\n : [];\n const saved: OverlayOption[] = (selectableSavedFilters || []).map((s: any) => ({\n id: `saved:${s.id}`,\n kind: \"saved\" as const,\n saved: s,\n }));\n const custom: OverlayOption[] = [{\n id: \"footer:custom\",\n kind: \"custom\" as const,\n }];\n const grouping: OverlayOption[] =\n viewType === \"tree\"\n ? [{\n id: \"footer:grouping\",\n kind: \"grouping\" as const,\n }]\n : [];\n\n return [...predefined, ...fields, ...saved, ...custom, ...grouping];\n }, [inputValue, searchableFields, predefinedSearches, selectableSavedFilters, viewType]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const currentValue = inputValue?.trim() || \"\";\n\n const applyFieldOption = (value: any) => {\n const trimmed = inputValue?.trim();\n if (!trimmed) return;\n const values = trimmed.split(\",\").map((v) => v.trim()).filter((v) => v !== \"\");\n const chipsToAdd = values.map(v => ({\n columnName: value.fieldName,\n value: v,\n columnDisplayName: value.displayName,\n searchField: value.searchField,\n matchMode: value.matchMode\n }));\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n setShowOverlay(false);\n };\n\n if (e.key === \"Escape\") {\n e.preventDefault();\n setShowOverlay(false);\n return;\n }\n\n if ((e.key === \"ArrowDown\" || e.key === \"ArrowUp\") && overlayOptions.length > 0) {\n e.preventDefault();\n setShowOverlay(true);\n const nextIndex =\n e.key === \"ArrowDown\"\n ? (focusedIndex + 1) % overlayOptions.length\n : (focusedIndex <= 0 ? overlayOptions.length - 1 : focusedIndex - 1);\n setFocusedIndex(nextIndex);\n return;\n }\n\n if ((e.key === \"Home\" || e.key === \"End\") && showOverlay && overlayOptions.length > 0) {\n e.preventDefault();\n setFocusedIndex(e.key === \"Home\" ? 0 : overlayOptions.length - 1);\n return;\n }\n\n if (e.key === \"Enter\") {\n if (currentValue || focusedIndex >= 0) {\n e.preventDefault();\n const activeOption = overlayOptions[focusedIndex] || (currentValue\n ? overlayOptions.find((option) => option.kind === \"field\" || option.kind === \"predefined\")\n : null);\n\n if (activeOption?.kind === \"field\") {\n applyFieldOption(activeOption.field);\n } else if (activeOption?.kind === \"predefined\") {\n handlePredefinedSearch(activeOption.predefined);\n } else if (activeOption?.kind === \"saved\") {\n applySavedFilter(activeOption.saved);\n } else if (activeOption?.kind === \"custom\") {\n openCustomFilterDialog();\n } else if (activeOption?.kind === \"grouping\") {\n openGroupingDialog();\n } else if (currentValue) {\n handleAddChip();\n setShowOverlay(false);\n }\n }\n } else if (e.key === \"Backspace\" && inputValue === \"\") {\n if (searchChips.length > 0) {\n setSearchChips((prev) => prev.slice(0, -1));\n } else if (customFilter) {\n setCustomFilter(null);\n setFilterRules(initialState);\n } else if (predefinedSearchChip) {\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n } else if (currentSavedFilterData) {\n removeSavedFilter();\n }\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n }\n };\n\n useEffect(() => {\n if (!showOverlay) {\n setFocusedIndex(-1);\n }\n }, [showOverlay]);\n\n const SearchChip = () => (\n <>\n {Object.entries(groupedSearchChips).map(([column, values]) => {\n const fieldMeta = searchableFields.find(f => f.fieldName === column);\n const columnDisplayName = fieldMeta?.displayName || column;\n\n return (\n <li key={column}>\n <div className=\"search-filter-chip-type\">\n <div>{columnDisplayName}</div>\n {values.map((value, index) => (\n <React.Fragment>\n {/* displayname */}\n <span key={index} className=\"custom-chip-value\">{value}\n </span>\n {index < values.length - 1 &&\n <span className=\"custom-chip-or\">or</span>\n }\n </React.Fragment>\n ))}\n {/* button to clear filter */}\n <button type=\"button\" className=\"ml-1\" style={{ cursor: \"pointer\" }} onClick={() => handleRemoveChipGroup(column)}>\n <X size={14} />\n </button>\n </div>\n </li>\n )\n })}\n </>\n );\n\n // search related code end\n\n\n // predefinedfilter related code start\n\n const handlePredefinedSearch = (predefinedSearch: any) => {\n if (!inputValue?.trim()) return;\n\n if (!predefinedSearch?.filters) {\n console.error('Invalid predefined search: missing filters', predefinedSearch);\n return;\n }\n\n try {\n // Replace {{ search }} placeholders with actual search value\n const processedFilter = replacePlaceholders(predefinedSearch.filters, inputValue.trim());\n\n // Clear all existing filters and searches\n // setSearchChips([]);\n // setSearchFilter(null);\n // setFilterRules(initialState);\n // setCustomFilter(null)\n // removeSavedFilter();\n // Set the predefined search chip\n setPredefinedSearchChip({\n name: predefinedSearch.name,\n value: inputValue.trim()\n });\n\n setPredefinedSearchBaseFilter(processedFilter);\n\n // Apply the predefined search filter as custom filter\n // setCustomFilter(processedFilter);\n\n // Clear input and close overlay\n setInputValue(\"\");\n setShowOverlay(false);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n } catch (error) {\n console.error('Error applying predefined search:', error);\n // Optionally show user-friendly error message\n }\n };\n\n\n const removePredefinedSearchChip = () => {\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null)\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n };\n\n const PredefinedSearchChip = () => (\n <li>\n <div className=\"search-filter-chip-type\">\n <div className=\"flex items-center gap-2\">\n <strong>{predefinedSearchChip?.name}:</strong>\n <span className=\"custom-chip-value\">{predefinedSearchChip?.value}</span>\n </div>\n {/* button to clear filter */}\n <button type=\"button\" className=\"ml-1\" style={{ cursor: \"pointer\" }} onClick={removePredefinedSearchChip}>\n <X size={14} />\n </button>\n </div>\n </li>\n );\n\n // predefinedfilter related code end\n\n return (\n <>\n <div className=\"relative flex justify-center solid-custom-filter-wrapper\">\n <div className=\"solid-global-search-element\">\n <ul className=\"solid-global-search-chip-list\">\n {visibleChipItems.map((chip) => (\n <li key={chip.id}>\n <div className={`search-filter-chip-type solid-chip-pill solid-chip-tone-${chip.type}`}>\n {chip.onOpen ? (\n <button\n type=\"button\"\n className=\"solid-chip-label-button\"\n title={chip.label}\n aria-label={`Open ${chip.label}`}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => handleManagedChipOpen(chip)}\n >\n <span className=\"custom-chip-value solid-chip-pill-label\" title={chip.label}>\n {chip.label}\n </span>\n </button>\n ) : (\n <span className=\"custom-chip-value solid-chip-pill-label\" title={chip.label}>\n {chip.label}\n </span>\n )}\n <button\n type=\"button\"\n className=\"solid-chip-pill-remove\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={chip.onRemove}\n aria-label={`Remove ${chip.label}`}\n >\n <X size={14} />\n </button>\n </div>\n </li>\n ))}\n {hiddenChipCount > 0 && (\n <li>\n <button\n type=\"button\"\n ref={chipManagerTriggerRef}\n className=\"solid-chip-manage-trigger\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => setShowChipManager((prev) => !prev)}\n >\n +{hiddenChipCount} more\n </button>\n </li>\n )}\n {/* {managedChipItems.length > 0 && hiddenChipCount === 0 && (\n <li>\n <button\n type=\"button\"\n ref={chipManagerTriggerRef}\n className=\"solid-chip-manage-trigger solid-chip-manage-trigger-secondary\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => setShowChipManager((prev) => !prev)}\n >\n Manage\n </button>\n </li>\n )} */}\n <li ref={chipsRef} className=\"solid-global-search-input-item\">\n <div className=\"relative solid-global-search-element-wrapper\">\n <SolidInput\n ref={searchInputRef}\n className=\"solid-global-search-input\"\n value={inputValue || \"\"}\n placeholder=\"Search…\"\n role=\"combobox\"\n aria-label=\"Search and filter\"\n aria-autocomplete=\"list\"\n aria-expanded={showOverlay}\n aria-controls={showOverlay ? overlayListboxId : undefined}\n aria-activedescendant={showOverlay && focusedIndex >= 0 ? getOverlayOptionId(focusedIndex) : undefined}\n onChange={(e) => {\n setInputValue(e.target.value);\n setShowChipManager(false);\n setShowOverlay(true);\n setFocusedIndex(-1);\n }}\n onFocus={() => {\n setShowChipManager(false);\n if (inputValue?.trim()) setShowOverlay(true);\n }}\n onBlur={() => {\n // Delay so you can click buttons inside overlay\n setTimeout(() => setShowOverlay(false), 150);\n }}\n\n onKeyDown={handleKeyDown}\n />\n <SolidButton\n variant=\"outline\"\n size=\"sm\"\n onMouseDown={(e) => {\n // Preserve input focus so overlay keyboard navigation continues to work.\n e.preventDefault();\n }}\n onClick={() => {\n setShowChipManager(false);\n setShowOverlay(true);\n focusSearchInput();\n }}\n className=\"custom-filter-button solid-global-search-trigger\"\n aria-label=\"Open search options\"\n >\n <Search size={14} />\n </SolidButton>\n </div>\n </li>\n </ul>\n </div>\n\n {/* {showChipManager && managedChipItems.length > 0 && (\n <div ref={chipManagerRef} className=\"absolute z-5 solid-chip-manager-panel\">\n <div className=\"solid-chip-manager-header\">\n <div className=\"solid-chip-manager-title\">Applied chips ({managedChipItems.length})</div>\n <button type=\"button\" className=\"solid-chip-manager-clear-btn\" onClick={clearAllAppliedChips}>\n Clear all\n </button>\n </div>\n <div className=\"solid-chip-manager-body\">\n {managedChipItems.map((chip) => (\n <div key={`manage-${chip.id}`} className={`solid-chip-manager-item solid-chip-tone-${chip.type}`} onClick={() => {\n if (chip.id == \"custom-filter\" || chip.id == \"grouping-rules\") {\n if(chip.onOpen){\n chip.onOpen()\n }\n }\n }\n }>\n <span className=\"solid-chip-manager-item-label\" title={chip.label}>\n {chip.label}\n </span>\n <button\n type=\"button\"\n className=\"solid-chip-manager-item-remove\"\n onClick={chip.onRemove}\n aria-label={`Remove ${chip.label}`}\n >\n <X size={14} />\n </button>\n </div>\n ))}\n </div>\n </div>\n )} */}\n\n {showOverlay && (\n <div\n ref={overlayRef}\n id={overlayListboxId}\n role=\"listbox\"\n aria-label=\"Search and filter options\"\n className=\"solid-search-overlay-panel\"\n >\n <div className=\"solid-search-overlay-scroll\">\n {inputValue ? (\n <>\n {predefinedSearches && predefinedSearches.length > 0 && (\n <>\n <div className=\"solid-search-overlay-section solid-search-overlay-section--predefined\">\n <h6 className=\"my-1 solid-search-overlay-heading solid-search-overlay-section-title solid-search-overlay-heading-with-icon\">\n <Sparkles size={14} />\n <span>Suggested searches</span>\n <span className=\"solid-search-overlay-section-count\">{predefinedSearches.length}</span>\n </h6>\n {predefinedSearches.map((predefinedSearch: any, index: number) => {\n const optionIndex = overlayOptions.findIndex((option) => option.id === `predefined:${predefinedSearch.name || index}`);\n return (\n <SolidButton\n key={index}\n id={getOverlayOptionId(optionIndex)}\n role=\"option\"\n aria-selected={focusedIndex === optionIndex}\n variant=\"ghost\"\n size=\"sm\"\n className={`text-color solid-search-overlay-option ${focusedIndex === optionIndex ? \"solid-search-overlay-option-active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={(e) => {\n e.stopPropagation();\n handlePredefinedSearch(predefinedSearch);\n }}\n onMouseEnter={() => setFocusedIndex(optionIndex)}\n >\n <span className=\"solid-search-overlay-option-content\">\n <span className=\"solid-search-overlay-option-icon\" aria-hidden=\"true\">\n <Sparkles size={15} />\n </span>\n <span className=\"solid-search-overlay-option-copy\">\n <span className=\"solid-search-overlay-option-title\">{predefinedSearch.name}</span>\n <span className=\"solid-search-overlay-option-description\">\n Search for “{inputValue}”{predefinedSearch.description ? ` — ${predefinedSearch.description}` : \"\"}\n </span>\n </span>\n </span>\n </SolidButton>\n );\n })}\n </div>\n <hr className=\"solid-search-overlay-section-separator\" />\n </>\n )}\n <div className=\"solid-search-overlay-section solid-search-overlay-section--search\">\n <h6 className=\"my-1 solid-search-overlay-heading solid-search-overlay-section-title solid-search-overlay-heading-with-icon\">\n <Search size={13} />\n <span>Search individual fields</span>\n <span className=\"solid-search-overlay-section-count\">{searchableFields.length}</span>\n </h6>\n {searchableFields.length > 0 ? (\n searchableFields.map((value: any, index: number) => {\n const optionIndex = overlayOptions.findIndex((option) => option.id === `field:${value.fieldName}`);\n return (\n <SolidButton\n key={index}\n id={getOverlayOptionId(optionIndex)}\n role=\"option\"\n aria-selected={focusedIndex === optionIndex}\n variant=\"ghost\"\n size=\"sm\"\n className={`text-color solid-search-overlay-option ${focusedIndex === optionIndex ? \"solid-search-overlay-option-active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={(e) => {\n e.stopPropagation();\n const currentValue = inputValue?.trim();\n if (currentValue) {\n const values = currentValue.split(\",\").map((v) => v.trim()).filter((v) => v !== \"\");\n const chipsToAdd = values.map(v => ({\n columnName: value.fieldName,\n value: v,\n columnDisplayName: value.displayName,\n searchField: value.searchField,\n matchMode: value.matchMode\n }));\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n setShowOverlay(false);\n }\n }}\n onMouseEnter={() => setFocusedIndex(optionIndex)}\n >\n <span className=\"solid-search-overlay-option-content\">\n <span className=\"solid-search-overlay-option-icon\" aria-hidden=\"true\">\n <Search size={15} />\n </span>\n <span className=\"solid-search-overlay-option-copy\">\n <span className=\"solid-search-overlay-option-title\">{toTitleCase(value.displayName.trim())}</span>\n <span className=\"solid-search-overlay-option-description\">Search for “{inputValue}”</span>\n </span>\n </span>\n </SolidButton>\n )\n })\n ) : (\n <div className=\"solid-search-overlay-no-fields\">\n <div className=\"solid-search-overlay-no-fields-icon\">\n <SearchX size={14} />\n </div>\n <div className=\"solid-search-overlay-no-fields-text\">\n No fields configured for search.\n </div>\n </div>\n )}\n </div>\n </>\n ) :\n <>\n <div className=\"solid-search-overlay-empty\">\n <div className=\"solid-search-overlay-panel-callout\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Search size={13} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <div className=\"solid-search-overlay-empty-title\">\n Start typing to search\n </div>\n <div className=\"solid-search-overlay-empty-subtitle\">\n Enter a value to see suggested searches and searchable {searchableEntityLabel} fields.\n </div>\n </div>\n </div>\n </div>\n </>\n }\n {selectableSavedFilters.length > 0 &&\n <>\n <hr className=\"solid-search-overlay-section-separator\" />\n <div className=\"solid-search-overlay-section solid-search-overlay-section--saved\">\n <div className=\"solid-search-overlay-panel-callout solid-search-overlay-panel-callout-compact items-center\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Bookmark size={13} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <p className=\"solid-search-overlay-heading solid-search-overlay-section-title\">\n <span>Saved filters</span>\n <span className=\"solid-search-overlay-section-count\">{selectableSavedFilters.length}</span>\n </p>\n </div>\n </div>\n <div className=\"solid-search-overlay-saved-list\">\n {selectableSavedFilters.map((savedfilter: any, index: number) => (\n <SavedFilterList\n key={savedfilter.id}\n savedfilter={savedfilter}\n activeSavedFilterReference={currentSavedFilterData?.systemKey || currentSavedFilterData?.id}\n activeSavedFilterReferences={allowMultipleSavedFilters ? activeSavedFilters.map((item: any) => getSavedFilterKey(item.data)) : undefined}\n applySavedFilter={applySavedFilter}\n openSavedCustomFilter={openSavedCustomFilter}\n setSavedFilterTobeDeleted={setSavedFilterTobeDeleted}\n setIsDeleteSQDialogVisible={setIsDeleteSQDialogVisible}\n isFocused={overlayOptions[focusedIndex]?.id === `saved:${savedfilter.id}`}\n onMouseEnter={() => {\n const optIndex = overlayOptions.findIndex(o => o.id === `saved:${savedfilter.id}`);\n if (optIndex !== -1) setFocusedIndex(optIndex);\n }}\n optionId={getOverlayOptionId(overlayOptions.findIndex(o => o.id === `saved:${savedfilter.id}`))}\n />\n ))}\n </div>\n </div>\n </>\n }\n </div>\n\n <div className=\"solid-search-overlay-footer\">\n <button\n type=\"button\"\n id={getOverlayOptionId(overlayOptions.findIndex((option) => option.id === \"footer:custom\"))}\n role=\"option\"\n aria-selected={overlayOptions[focusedIndex]?.id === \"footer:custom\"}\n className={`solid-search-overlay-footer-action solid-search-overlay-footer-action--custom ${overlayOptions[focusedIndex]?.id === \"footer:custom\" ? \"solid-search-overlay-option-active\" : \"\"}`}\n onMouseDown={(event) => {\n event.preventDefault();\n openCustomFilterDialog();\n }}\n onMouseEnter={() => {\n const optIndex = overlayOptions.findIndex((o) => o.id === \"footer:custom\");\n if (optIndex !== -1) setFocusedIndex(optIndex);\n }}\n >\n <div className=\"solid-search-overlay-footer-action-main\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Filter size={14} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <div className=\"solid-search-overlay-footer-title solid-search-overlay-section-title\">\n Advanced filters\n </div>\n <div className=\"solid-search-overlay-footer-subtitle\">\n Combine fields, operators and values.\n </div>\n </div>\n </div>\n </button>\n {viewType === \"tree\" && (\n <button\n type=\"button\"\n id={getOverlayOptionId(overlayOptions.findIndex((option) => option.id === \"footer:grouping\"))}\n role=\"option\"\n aria-selected={overlayOptions[focusedIndex]?.id === \"footer:grouping\"}\n className={`solid-search-overlay-footer-action solid-search-overlay-footer-action-secondary ${overlayOptions[focusedIndex]?.id === \"footer:grouping\" ? \"solid-search-overlay-option-active\" : \"\"}`}\n onMouseDown={(event) => {\n event.preventDefault();\n openGroupingDialog();\n }}\n onMouseEnter={() => {\n const optIndex = overlayOptions.findIndex((o) => o.id === \"footer:grouping\");\n if (optIndex !== -1) setFocusedIndex(optIndex);\n }}\n >\n <div className=\"solid-search-overlay-footer-action-main\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Plus size={14} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <div className=\"solid-search-overlay-footer-title solid-search-overlay-section-title\">\n Group and aggregate\n </div>\n <div className=\"solid-search-overlay-footer-subtitle\">\n Organise records and calculate aggregate values.\n </div>\n </div>\n </div>\n </button>\n )}\n </div>\n </div>\n )\n }\n <SolidDialog open={showGlobalSearchElement} onOpenChange={setShowGlobalSearchElement} className=\"solid-global-search-filter solid-filter-dialog-shell\" style={{ width: \"min(960px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Add Custom Filter</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Apply conditions on any field with operators.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n {fields.length > 0 &&\n <FilterComponent viewData={viewData} fields={fields} filterRules={filterRules} setFilterRules={setFilterRules} transformFilterRules={transformCustomFilterRules} closeDialog={() => setShowGlobalSearchElement(false)}></FilterComponent>\n }\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog open={showGroupFilterElement} onOpenChange={setShowGroupFilterElement} className=\"solid-global-search-filter solid-filter-dialog-shell solid-filter-dialog-shell-grouping\" style={{ width: \"min(560px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Grouping</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Configure grouping and aggregation.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n {groupableFields.length > 0 &&\n <GroupingComponent\n viewData={viewData}\n fields={groupableFields}\n groupingRules={groupingRules}\n setGroupingRules={setGroupingRules}\n aggregationRules={aggregationRules}\n setAggregationRules={setAggregationRules}\n applyGrouping={applyGrouping}\n closeDialog={() => setShowGroupFilterElement(false)}\n ></GroupingComponent>\n }\n </SolidDialogBody>\n </SolidDialog >\n <SolidDialog open={showSavedFilterComponent} onOpenChange={setShowSavedFilterComponent} className=\"solid-global-search-filter solid-filter-dialog-shell\" style={{ width: \"min(960px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Saved Filter</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Review and refine the saved filter conditions.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n {fields.length > 0 &&\n <FilterComponent viewData={viewData} fields={fields} filterRules={currentSavedFilterRules} setFilterRules={setCurrentSavedFilterRules} transformFilterRules={transformSavedFilterRules} closeDialog={() => setShowSavedFilterComponent(false)}></FilterComponent>\n }\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog open={showSaveFilterPopup} onOpenChange={setShowSaveFilterPopup} className=\"solid-custom-filter-dialog solid-save-filter-dialog\" style={{ width: \"min(420px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Save Custom Filter</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Name this filter so you can reuse it later.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n <SolidSaveCustomFilterForm currentSavedFilterData={currentSavedFilterData} handleSaveFilter={handleSaveFilter} closeDialog={() => setShowSaveFilterPopup(false)}></SolidSaveCustomFilterForm>\n </SolidDialogBody>\n </SolidDialog>\n\n <SolidDialog\n open={isDeleteSQDialogVisible}\n onOpenChange={(open) => {\n setIsDeleteSQDialogVisible(open);\n if (!open) {\n setSavedFilterTobeDeleted(null);\n }\n }}\n className=\"solid-confirm-dialog\"\n style={{ width: \"min(420px, calc(100vw - 2rem))\" }}\n >\n <SolidDialogHeader>\n <div>\n <SolidDialogTitle>Confirm Delete</SolidDialogTitle>\n <SolidDialogDescription>Are you sure you want to delete the {savedFilterTobeDeleted?.name} saved query?</SolidDialogDescription>\n </div>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogFooter className=\"justify-center\">\n <SolidButton variant=\"destructive\" size=\"sm\" onClick={deleteSavedFilter}>\n <Check size={14} />\n Yes\n </SolidButton>\n <SolidButton\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n setIsDeleteSQDialogVisible(false);\n setSavedFilterTobeDeleted(null);\n }}\n >\n <X size={14} />\n No\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n </div >\n </>\n )\n});\n"]}
|
|
1
|
+
{"version":3,"file":"SolidGlobalSearchElement.js","sourceRoot":"","sources":["../../../../src/components/core/common/SolidGlobalSearchElement.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { forwardRef, useCallback, useEffect, useId, useImperativeHandle, useMemo, useRef, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport FilterComponent, { FilterOperator, FilterRule, FilterRuleType } from \"../../../components/core/common/FilterComponent\";\nimport { toTitleCase } from \"../../../helpers/helpers\";\nimport {clearFilterObjectFromLocalStorage,getFilterObjectFromLocalStorage,setFilterObjectToLocalStorage,\n} from \"./globalSearchPersistence\";\nimport { createSolidEntityApi } from \"../../../redux/api/solidEntityApi\";\nimport { showToast } from \"../../../redux/features/toastSlice\";\nimport qs from \"qs\";\nimport { SolidSaveCustomFilterForm } from \"./SolidSaveCustomFilterForm\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { hydrateRelationRules } from \"../../../helpers/hydrateRelationRules\";\nimport { useSession } from '../../../hooks/useSession'\nimport { getUnboundSavedFilterVariableNames, parseSavedFilterQueryJson, resolveSavedFilterVariables } from '../../../helpers/resolveActiveUserId';\nimport GroupingComponent, { AggregationRule, GroupingRule, DateGroupingFormat } from \"./GroupingComponent\";\nimport { Bookmark, Check, Filter, Pencil, Plus, Search, SearchX, Sparkles, Trash2, X } from \"lucide-react\";\nimport { SolidButton } from \"../../shad-cn-ui/SolidButton\";\nimport { SolidInput } from \"../../shad-cn-ui/SolidInput\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogDescription,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n} from \"../../shad-cn-ui/SolidDialog\";\n\nconst savedFiltersEntityApi = createSolidEntityApi(\"savedFilters\");\n\nconst getRandomInt = (min: number, max: number) => {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\ninterface PredefinedSearch {\n name: string;\n description?: string;\n filters: Record<string, any>;\n}\n\nexport type SearchableField = {\n fieldName: string;\n displayName: string;\n searchField: string;\n matchMode: string;\n}\n\nexport type GroupableField = {\n fieldName: string;\n displayName: string;\n searchField: string;\n matchMode: string;\n type: string;\n ormType: string;\n relationType: string;\n computedFieldValueType: string;\n}\n\nconst extractFields = (nodes: any[] = []): any[] => {\n const result: any[] = [];\n\n for (const node of nodes) {\n if (node?.type === \"field\") {\n result.push(node);\n }\n\n if (Array.isArray(node?.children)) {\n result.push(...extractFields(node.children));\n }\n }\n\n return result;\n};\n\n\nconst transformFiltersToRules = (filter: any, parentRule: number | null = null): FilterRule => {\n if (!filter || typeof filter !== \"object\" || Object.keys(filter).length === 0) {\n throw new Error(\"Invalid filter: expected a non-null object with properties\");\n }\n if (!filter || typeof filter !== \"object\") {\n throw new Error(\"Invalid filter: expected a non-null object\");\n }\n const currentId = idCounter++;\n if (filter[\"$or\"]) {\n return {\n id: currentId,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.OR,\n parentRule,\n children: filter[\"$or\"]\n .filter((sub: any) => {\n // Filter out null, undefined, empty strings, and empty objects\n if (sub == null) return false;\n if (typeof sub === \"string\" && sub.trim() === \"\") return false;\n if (typeof sub === \"object\" && Object.keys(sub).length === 0) return false;\n return true;\n })\n .map((subFilter: any) => transformFiltersToRules(subFilter, currentId))\n };\n }\n\n if (filter[\"$and\"]) {\n return {\n id: currentId,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.AND,\n parentRule,\n children: filter[\"$and\"]\n .filter((sub: any) => {\n // Filter out null, undefined, empty strings, and empty objects\n if (sub == null) return false;\n if (typeof sub === \"string\" && sub.trim() === \"\") return false;\n if (typeof sub === \"object\" && Object.keys(sub).length === 0) return false;\n return true;\n })\n .map((subFilter: any) => transformFiltersToRules(subFilter, currentId))\n };\n }\n\n // Handle single rule condition\n for (const fieldName in filter) {\n const condition = filter[fieldName];\n if (!condition || typeof condition !== \"object\") {\n throw new Error(`Invalid condition for field '${fieldName}'`);\n }\n\n // CASE 1: relation filter → unwrap first\n if (condition?.id && typeof condition?.id === \"object\") {\n for (const matchMode in condition.id) {\n const rawValue = condition.id[matchMode];\n const mathcModeValue: any = matchMode\n return {\n id: currentId,\n type: FilterRuleType.RULE,\n fieldName,\n matchMode: mathcModeValue,\n value: Array.isArray(rawValue) ? rawValue : [rawValue],\n parentRule,\n children: []\n };\n }\n }\n\n // CASE 2: normal field → loop stays\n for (const matchMode in condition) {\n const rawValue = condition[matchMode];\n const mathcModeValue: any = matchMode\n return {\n id: currentId,\n type: FilterRuleType.RULE,\n fieldName,\n matchMode: mathcModeValue,\n value: Array.isArray(rawValue) ? rawValue : [rawValue],\n parentRule,\n children: []\n };\n }\n\n\n }\n throw new Error(ERROR_MESSAGES.INVALID_FILTER_STRUCTURE);\n}\n\n\n\n\nlet idCounter = 1;\nconst generateId = () => Date.now() + Math.floor(Math.random() * 1000);\n\n\nconst transformRulesToFilters = (input: any, viewData: any) => {\n\n // Helper function to process individual rules\n const processRule = (rule: any) => {\n if (rule.value !== undefined && rule.value !== null) {\n\n // Ensure rule.value is always an array of primitive values.\n // Mixed arrays like [\"failed\", { label: \"pending\", value: \"pending\" }]\n // must be normalized before query serialization.\n const rawValues = Array.isArray(rule?.value) ? rule.value : [rule?.value];\n let values = rawValues.map((item: any) => {\n if (item && typeof item === \"object\") {\n if (Object.prototype.hasOwnProperty.call(item, \"value\")) return item.value;\n if (Object.prototype.hasOwnProperty.call(item, \"label\")) return item.label;\n }\n return item;\n });\n if (rule.matchMode !== '$in' && rule.matchMode !== '$notIn' && rule.matchMode !== '$between' && rule.matchMode !== '$null' && rule.matchMode !== '$notNull') {\n values = values[0];\n }\n\n\n const fieldMeta = viewData?.data?.solidFieldsMetadata?.[rule.fieldName];\n const isToManyRelation = fieldMeta?.type === 'relation'\n && ['one-to-many', 'many-to-many'].includes(fieldMeta?.relationType);\n\n\n let transformedRule;\n if (isToManyRelation) {\n // Collection relations must be filtered through a related scalar field.\n transformedRule = {\n [rule.fieldName]: {\n id: {\n [rule.matchMode]: values // Keep as array\n }\n }\n };\n } else {\n // Rule transformation\n transformedRule = {\n [rule.fieldName]: {\n [rule.matchMode]: values // Assuming `value` is always an array with `value` and `label`\n }\n };\n }\n\n let processedFields;\n if (rule.children && rule.children.length > 0) {\n processedFields = rule.children.map((child: any) => processRuleGroup(child)).filter((child: any) => child != null);;\n }\n if (processedFields) {\n return { ...transformedRule, processedFields }\n }\n return { ...transformedRule }\n\n }\n\n };\n\n // Helper function to process rule groups\n const processRuleGroup = (ruleGroup: any) => {\n const operator = ruleGroup.matchOperator === 'or' ? '$or' : '$and';\n const children = ruleGroup.children.map((child: any) => {\n if (child.type === 'rule') {\n // Process the rule\n return processRule(child);\n } else if (child.type === 'rule_group') {\n // Process the rule group recursively\n return processRuleGroup(child);\n }\n }).filter((child: any) => child != null);\n // If no valid children, return null\n // if (children.length === 0) {\n // return null;\n // }\n\n // If only one child, return it directly without wrapping in operator\n // if (children.length === 1) {\n // return children[0];\n // }\n\n return {\n [operator]: children\n };\n };\n\n\n // Start processing the root rule group\n const filterObject = processRuleGroup(input);\n\n if (!filterObject) {\n return {};\n }\n\n function liftProcessedFields(filters: any) {\n if (!filters || typeof filters !== 'object') return filters;\n\n const processArray = (arr: any) => {\n let newArr = [];\n for (let obj of arr) {\n if (obj && obj.processedFields) {\n let processed: any = processArray(obj.processedFields); // Recursively process nested processedFields\n delete obj.processedFields;\n newArr.push(obj, ...processed);\n } else {\n newArr.push(obj);\n }\n\n for (let key in obj) {\n if (Array.isArray(obj[key])) {\n obj[key] = processArray(obj[key]);\n }\n }\n }\n return newArr;\n }\n\n for (let key in filters) {\n if (Array.isArray(filters[key])) {\n filters[key] = processArray(filters[key]);\n }\n }\n\n return filters;\n }\n\n\n return liftProcessedFields(filterObject)\n\n}\n\n\ntype GroupedType = {\n values: string[];\n searchField: any;\n matchMode: string;\n}\n\n// Build nested condition for relation fields\nfunction buildNestedCondition(path: string, operatorKey: string, value: any) {\n const keys = path.split(\".\").filter(Boolean);\n const leaf = { [operatorKey]: value };\n return keys.reduceRight((acc, key) => ({ [key]: acc }), leaf);\n}\n\nconst tranformSearchToFilters = (input: any) => {\n if (!input || !input.$and) return input;\n\n const grouped: Record<string, GroupedType> = {};\n\n input.$and.forEach(({ fieldName, value, searchField, matchMode }: any) => {\n const val = Array.isArray(value) && value.length === 1 ? value[0] : value;\n\n if (!grouped[fieldName]) {\n grouped[fieldName] = { values: [], searchField: searchField || \"\", matchMode: matchMode || \"$containsi\" };\n }\n\n if (Array.isArray(val)) {\n grouped[fieldName]?.values.push(...val);\n } else {\n grouped[fieldName]?.values.push(val);\n }\n });\n\n // return {\n // $and: Object.entries(grouped).map(([fieldName, values]) => ({\n // [fieldName]: {\n // $containsi: values.length === 1 ? values[0] : values\n // }\n // }))\n // };\n\n const andFilters: any[] = [];\n\n Object.entries(grouped).forEach(([fieldName, value]) => {\n\n const isNested = value.searchField ? value.searchField.includes(\".\") : false;\n\n if (isNested) {\n\n // NESTED: use $eq and expand dot-notation into nested objects\n if (value.values.length === 1) {\n andFilters.push(buildNestedCondition(value.searchField, value.matchMode, value.values[0]));\n } else {\n andFilters.push({\n $or: value.values.map(v => buildNestedCondition(value.searchField, value.matchMode, v)),\n });\n }\n } else {\n\n if (value.values.length === 1) {\n andFilters.push({\n [fieldName]: {\n $containsi: value.values[0]\n }\n });\n } else {\n andFilters.push({\n $or: value.values.map((v) => ({\n [fieldName]: { $containsi: v }\n }))\n });\n }\n }\n });\n\n return {\n $and: andFilters\n };\n}\n\nexport const mergeSearchAndCustomFilters = (transformedFilter: any, newFilter: any, transformedFilterName: string, newFilterName: string) => {\n const filters: any = {};\n\n // Add only non-null filters\n if (transformedFilter && Object.keys(transformedFilter).length > 0) {\n filters[transformedFilterName] = transformedFilter;\n }\n if (newFilter && Object.keys(newFilter).length > 0) {\n filters[newFilterName] = newFilter;\n }\n\n // Return the combined filters object\n return filters;\n}\n\n\nexport const mergeAllDiffFilters = (customFilter: any, searchFilter: any, savedFilter: any, preDefinedFilter?: any, groupingRules?: GroupingRule[], aggregationRules?: AggregationRule[]) => {\n const filters: any = {};\n\n // Add only non-null filters\n if (customFilter && Object.keys(customFilter).length > 0) {\n filters[\"custom_filter_predicate\"] = customFilter;\n }\n if (searchFilter && Object.keys(searchFilter).length > 0) {\n filters[\"search_predicate\"] = searchFilter;\n }\n if (savedFilter && Object.keys(savedFilter).length > 0) {\n filters[\"saved_filter_predicate\"] = savedFilter;\n }\n if (preDefinedFilter && Object.keys(preDefinedFilter).length > 0) {\n filters[\"predefined_search_predicate\"] = preDefinedFilter;\n }\n if (groupingRules && Object.keys(groupingRules).length > 0) {\n filters[\"grouping_rules\"] = groupingRules;\n }\n if (aggregationRules && Object.keys(aggregationRules).length > 0) {\n filters[\"aggregation_rules\"] = aggregationRules;\n }\n // Return the combined filters object\n return filters;\n}\n\nconst SavedFilterList = ({ savedfilter, activeSavedFilterReference, activeSavedFilterReferences, applySavedFilter, openSavedCustomFilter, setSavedFilterTobeDeleted, setIsDeleteSQDialogVisible, isFocused, onMouseEnter, optionId }: any) => {\n const isActive = activeSavedFilterReferences\n ? activeSavedFilterReferences.includes(savedfilter?.systemKey ? `system:${savedfilter.systemKey}` : `id:${savedfilter.id}`)\n : savedfilter?.systemKey\n ? activeSavedFilterReference === savedfilter.systemKey\n : String(activeSavedFilterReference) === String(savedfilter.id);\n\n return (\n <div className=\"solid-saved-filter-item\" onMouseEnter={onMouseEnter}>\n <div className=\"solid-saved-filter-main-wrap\">\n <SolidButton\n variant=\"ghost\"\n size=\"sm\"\n className={`solid-saved-filter-main w-full ${isActive ? \"is-active\" : \"\"} ${isFocused ? \"solid-search-overlay-option-active\" : \"\"}`}\n id={optionId}\n role=\"option\"\n aria-selected={isFocused}\n aria-label={`${savedfilter.name}${isActive ? \", applied\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={(e) => {\n e.stopPropagation();\n applySavedFilter(savedfilter);\n }}\n title={savedfilter?.description}\n >\n <span className=\"solid-search-overlay-option-content\">\n <span className=\"solid-search-overlay-option-icon\" aria-hidden=\"true\">\n <Bookmark size={15} />\n </span>\n <span className=\"solid-search-overlay-option-copy\">\n <span className=\"solid-search-overlay-option-title\">{savedfilter.name}</span>\n {savedfilter?.description && (\n <span className=\"solid-search-overlay-option-description\">{savedfilter.description}</span>\n )}\n </span>\n {isActive && (\n <span className=\"solid-search-overlay-option-check\" aria-hidden=\"true\">\n <Check size={14} />\n </span>\n )}\n </span>\n </SolidButton>\n </div>\n <div className=\"solid-saved-filter-actions\">\n {savedfilter.isSeeded !== true && !savedfilter.systemKey &&\n <>\n <SolidButton\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-saved-filter-icon-btn\"\n onMouseDown={(e) => {\n e.preventDefault();\n openSavedCustomFilter(savedfilter);\n }}\n aria-label={`Edit ${savedfilter.name}`}\n >\n <Pencil size={14} />\n </SolidButton>\n <SolidButton\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-saved-filter-icon-btn is-danger\"\n onMouseDown={(e) => {\n e.preventDefault();\n setSavedFilterTobeDeleted(savedfilter);\n setIsDeleteSQDialogVisible(true);\n }}\n aria-label={`Delete ${savedfilter.name}`}\n >\n <Trash2 size={14} />\n </SolidButton>\n </>\n }\n\n </div>\n </div>\n )\n}\n\nconst replacePlaceholders = (obj: any, searchValue: string): any => {\n if (typeof obj === 'string') {\n return obj.replace(/\\{\\{search\\}\\}/g, searchValue);\n }\n if (Array.isArray(obj)) {\n return obj.map(item => replacePlaceholders(item, searchValue));\n }\n if (obj && typeof obj === 'object') {\n const newObj: any = {};\n for (const key in obj) {\n newObj[key] = replacePlaceholders(obj[key], searchValue);\n }\n return newObj;\n }\n return obj;\n};\n\n\nconst extractChips = (node: any): any[] => {\n if (!node) return [];\n\n // If node has $and\n if (node.$and && Array.isArray(node.$and)) {\n return node.$and.flatMap(extractChips);\n }\n\n // If node has $or\n if (node.$or && Array.isArray(node.$or)) {\n return node.$or.flatMap(extractChips);\n }\n\n // Leaf condition\n const field = Object.keys(node)[0];\n const operatorObj = node[field];\n\n // ✅ Normal case\n if (operatorObj?.$containsi) {\n return [{\n columnName: field,\n value: operatorObj.$containsi,\n columnDisplayName: field.charAt(0).toUpperCase() + field.slice(1),\n searchField: field,\n matchMode: \"$containsi\"\n }];\n }\n // ✅ Nested case (like city.name)\n else if (typeof operatorObj === \"object\") {\n const nestedField = Object.keys(operatorObj)[0];\n const nestedOperatorObj = operatorObj[nestedField];\n\n const operatorKey = nestedOperatorObj\n ? Object.keys(nestedOperatorObj).find(k => k.startsWith(\"$\"))\n : null;\n\n if (operatorKey) {\n return [{\n columnName: field,\n value: nestedOperatorObj[operatorKey],\n columnDisplayName: field.charAt(0).toUpperCase() + field.slice(1),\n searchField: `${field}.${nestedField}`,\n matchMode: operatorKey\n }];\n }\n }\n\n return [];\n};\n\nconst areFilterStateValuesEqual = (left: any, right: any) =>\n JSON.stringify(left ?? null) === JSON.stringify(right ?? null);\n\n\n\ntype RelationCache = Map<string, { label: string; value: number }>;\n\n\n\nexport const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handleApplyCustomFilter, showSaveFilterPopup, setShowSaveFilterPopup, filterPredicates, allowMultipleSavedFilters = false }: any, ref) => {\n const dispatch = useDispatch();\n type OverlayOption =\n | { id: string; kind: \"field\"; field: any }\n | { id: string; kind: \"predefined\"; predefined: any }\n | { id: string; kind: \"saved\"; saved: any }\n | { id: string; kind: \"custom\" }\n | { id: string; kind: \"grouping\" };\n const overlayInstanceId = useId();\n const overlayListboxId = `${overlayInstanceId}-search-options`;\n const getOverlayOptionId = (index: number) => `${overlayInstanceId}-search-option-${index}`;\n type ManagedChipItem = {\n id: string;\n type: \"saved\" | \"search\" | \"predefined\" | \"custom\" | \"grouping\";\n label: string;\n onRemove: () => void;\n onOpen?: () => void;\n };\n\n const defaultState: FilterRule[] = [\n {\n id: 1,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.OR,\n parentRule: null,\n children: [\n {\n id: Date.now() + getRandomInt(1, 500),\n type: FilterRuleType.RULE,\n fieldName: null,\n matchMode: null,\n value: null,\n parentRule: 1,\n children: []\n },\n {\n id: Date.now() + getRandomInt(1, 500),\n type: FilterRuleType.RULE,\n fieldName: null,\n matchMode: null,\n value: null,\n parentRule: 1,\n children: []\n }\n ]\n }\n ];\n\n const defaultAggregationRules: AggregationRule[] = [\n {\n id: 1,\n operator: \"count\",\n fieldName: \"id\",\n locked: true\n }\n ];\n\n const defaultGroupingRules: GroupingRule[] = [\n { id: 1, fieldName: null, dateGrouping: null }\n ];\n\n const [initialState, setInitialState] = useState(defaultState);\n const searchableEntityLabel =\n viewData?.data?.solidView?.displayName ||\n viewData?.data?.solidView?.model?.displayName ||\n \"records\";\n\n const chipsRef = useRef<HTMLDivElement | null | any>(null);\n\n // filterRules is used to maintian the ui of custom filter \n // customFilter is used to maintian the transformed filter object of custom filter\n const [filterRules, setFilterRules] = useState<FilterRule[]>(initialState);\n const [customFilter, setCustomFilter] = useState<any | null>(null);\n\n const [fields, setFields] = useState<any[]>([]);\n const [searchableFields, setSearchableFields] = useState<any[]>([]);\n const [groupableFields, setGroupableFields] = useState<GroupableField[]>([]);\n\n const [groupingRules, setGroupingRules] = useState<GroupingRule[]>(defaultGroupingRules);\n const [aggregationRules, setAggregationRules] = useState<AggregationRule[]>(defaultAggregationRules);\n\n // used to show the list of predefined searches \n const [predefinedSearches, setPredefinedSearches] = useState<PredefinedSearch[]>([]);\n\n // used to open / close the custom fitler popup \n const [showGlobalSearchElement, setShowGlobalSearchElement] = useState<boolean>(false);\n\n // used to open / close the group fitler popup \n const [showGroupFilterElement, setShowGroupFilterElement] = useState<boolean>(false);\n\n\n // searchChips maintain the ui to display searched query \n // searchFilter maintain the transformed filter of the searched query \n const [searchChips, setSearchChips] = useState<{ columnName?: string; value: string }[]>([]);\n const [searchFilter, setSearchFilter] = useState<any | null>(null);\n\n // predefinedSearchChip maintain the ui to display predefined searches query \n const [predefinedSearchChip, setPredefinedSearchChip] = useState<{ name: string; value: string } | null>(null);\n\n // state to maintain the text typed in the search input box\n const [inputValue, setInputValue] = useState<string | null>(\"\");\n const [focusedIndex, setFocusedIndex] = useState(-1);\n\n // flag to prevent un necessary re renders\n const [hasSearched, setHasSearched] = useState<boolean>(false);\n\n // currentSavedFilterData is used to save the whole object of saved filter \n const [currentSavedFilterData, setCurrentSavedFilterData] = useState<any>();\n const [currentSavedFilterQuery, setCurrentSavedFilterQuery] = useState<any>();\n const [currentSavedFilterVariables, setCurrentSavedFilterVariables] = useState<Record<string, any>>({});\n const [currentSavedFilterRules, setCurrentSavedFilterRules] = useState<any>();\n const [activeSavedFilters, setActiveSavedFilters] = useState<any[]>([]);\n const [editingSavedFilterKey, setEditingSavedFilterKey] = useState<string | null>(null);\n const [showSavedFilterComponent, setShowSavedFilterComponent] = useState<boolean>(false);\n\n\n const [savedFilterTobeDeleted, setSavedFilterTobeDeleted] = useState<any | null>(null);\n const [isDeleteSQDialogVisible, setIsDeleteSQDialogVisible] = useState<boolean>(false);\n const [savedFilterQueryString, setSavedFilterQueryString] = useState<string>();\n const [showOverlay, setShowOverlay] = useState(false);\n const overlayRef = useRef<HTMLDivElement | null>(null);\n const searchInputRef = useRef<HTMLInputElement | null>(null);\n const [showChipManager, setShowChipManager] = useState(false);\n const chipManagerRef = useRef<HTMLDivElement | null>(null);\n const chipManagerTriggerRef = useRef<HTMLButtonElement | null>(null);\n\n const focusSearchInput = () => {\n requestAnimationFrame(() => {\n searchInputRef.current?.focus();\n });\n };\n\n useEffect(() => {\n if (focusedIndex >= 0 && showOverlay) {\n const activeElement = overlayRef.current?.querySelector(`.solid-search-overlay-option-active`);\n if (activeElement) {\n activeElement.scrollIntoView({\n block: 'nearest',\n inline: 'start'\n });\n }\n }\n }, [focusedIndex, showOverlay]);\n\n const { data: session, status } = useSession();\n const user = session?.user;\n\n const [refreshKey, setRefreshKey] = useState(0);\n\n const [predefinedSearchBaseFilter, setPredefinedSearchBaseFilter] = useState<any>(null);\n\n const [savedFilters, setSavedFilters] = useState<any[]>([]);\n const [savedFiltersLoaded, setSavedFiltersLoaded] = useState(false);\n const isDraftPublishWorkflowEnabled = viewData?.data?.solidView?.model?.draftPublishWorkflow === true;\n \n const workflowPublishedVersionsSavedFilter = useMemo(() => {\n if (!isDraftPublishWorkflowEnabled) return null;\n return {\n id: \"system-published-versions\",\n systemKey: \"workflow-published-versions\",\n name: \"Published Versions\",\n description: \"Shows current published records, including records that are published but not latest.\",\n isSeeded: true,\n filterQueryJson: JSON.stringify({\n isPublished: { $eq: true },\n isLatest: { $in: [true, false] },\n }),\n };\n }, [isDraftPublishWorkflowEnabled]);\n\n const allAvailableSavedFilters = useMemo(\n () => workflowPublishedVersionsSavedFilter\n ? [workflowPublishedVersionsSavedFilter, ...(savedFilters || [])]\n : (savedFilters || []),\n [workflowPublishedVersionsSavedFilter, savedFilters]\n );\n const availableSavedFilters = allAvailableSavedFilters;\n const selectableSavedFilters = useMemo(\n () => allAvailableSavedFilters.filter((filter: any) => {\n try {\n return getUnboundSavedFilterVariableNames(parseSavedFilterQueryJson(filter.filterQueryJson || \"{}\")).length === 0;\n } catch {\n return false;\n }\n }),\n [allAvailableSavedFilters]\n );\n\n const {\n useCreateSolidEntityMutation,\n useDeleteSolidEntityMutation,\n useGetSolidEntityByIdQuery,\n useUpdateSolidEntityMutation,\n useLazyGetSolidEntitiesQuery\n } = savedFiltersEntityApi;\n\n const [\n createEntity,\n { isSuccess: isEntityCreateSuccess, isError: isEntityCreateError, error: entityCreateError },\n ] = useCreateSolidEntityMutation();\n\n const [\n updateEntity,\n { isSuccess: isEntityUpdateSuceess, isError: isEntityUpdateError, error: entityUpdateError },\n ] = useUpdateSolidEntityMutation();\n\n const [\n deleteEntity,\n { isSuccess: isEntityDeleteSuceess, isError: isEntityDeleteError, error: entityDeleteError },\n ] = useDeleteSolidEntityMutation();\n\n const [triggerGetSolidEntities, { data: solidEntityListViewData, isLoading: isSavedFilterLoading, error }] = useLazyGetSolidEntitiesQuery();\n\n const [savedFilterFetchDataRefreshKey, setSavedFilterFetchDataRefreshKey] = useState(0);\n\n useEffect(() => {\n const fn = async () => {\n if (!viewData?.data?.solidView?.model?.id || !viewData?.data?.solidView?.id || !user?.id) {\n return;\n }\n setSavedFiltersLoaded(false)\n const filters = {\n $or: [\n {\n $and: [\n { model: { $in: [viewData?.data?.solidView?.model?.id] } },\n { view: { $in: [viewData?.solidView?.id] } },\n { user: { $in: [user?.id] } },\n { isPrivate: { $eq: true } }\n ]\n },\n {\n $and: [\n { model: { $in: [viewData?.data?.solidView?.model?.id] } },\n { view: { $in: [viewData?.solidView?.id] } },\n { isPrivate: { $eq: false } }\n ]\n }\n\n ]\n }\n const queryData: any = {\n offset: 0,\n limit: 10,\n filters: filters,\n populate: [\"model\", \"view\", \"user\"],\n sort: [\"id:desc\"],\n };\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n setSavedFilterQueryString(queryString)\n const savedFilter = await triggerGetSolidEntities(queryString).unwrap();\n\n if (savedFilter) {\n // console.log(\"savedFilter\", savedFilter);\n setSavedFilters(savedFilter?.records)\n }\n setSavedFiltersLoaded(true);\n }\n fn()\n }, [\n savedFilterFetchDataRefreshKey,\n viewData?.data?.solidView?.id,\n viewData?.data?.solidView?.model?.id,\n user?.id\n ])\n\n const getSavedFilterKey = (savedFilter: any) =>\n savedFilter?.systemKey ? `system:${savedFilter.systemKey}` : `id:${savedFilter?.id}`;\n\n const getPersistedSavedFilterItems = (queryObject: any): any[] => {\n if (!allowMultipleSavedFilters) return [];\n if (Array.isArray(queryObject?.saved_filter_items)) {\n return queryObject.saved_filter_items;\n }\n if (queryObject?.saved_filter_predicate) {\n return [{\n id: queryObject.saved_filter_id,\n systemKey: queryObject.saved_filter_system_key,\n name: queryObject.saved_filter_name || \"Saved Filter\",\n predicate: queryObject.saved_filter_predicate,\n variables: queryObject.saved_filter_variables || {},\n }];\n }\n return [];\n };\n\n// Updates search, custom filter, grouping, aggregation, and UI state from a single shared filter source.\n const syncFilterUiStateFromSharedSource = useCallback(async (queryObject: any | null) => {\n const nextSearchFilter = queryObject?.search_predicate || null;\n const nextSearchChips = nextSearchFilter ? extractChips(nextSearchFilter) : [];\n const nextCustomFilter =\n queryObject?.custom_filter_predicate && Object.keys(queryObject.custom_filter_predicate).length !== 0\n ? queryObject.custom_filter_predicate\n : null;\n const nextPredefinedBaseFilter = queryObject?.predefined_search_predicate || null;\n const nextPredefinedSearchChip =\n nextPredefinedBaseFilter && queryObject?.predefined_search_chip\n ? queryObject.predefined_search_chip\n : null;\n const persistedSavedFilterItems = getPersistedSavedFilterItems(queryObject);\n const nextSavedFilterItems = allowMultipleSavedFilters\n ? persistedSavedFilterItems.map((item: any) => {\n const savedFilter = availableSavedFilters.find((candidate: any) =>\n item?.systemKey\n ? candidate?.systemKey === item.systemKey\n : String(candidate?.id) === String(item?.id)\n );\n return {\n data: savedFilter || {\n id: item?.id,\n systemKey: item?.systemKey,\n name: item?.name || \"Saved Filter\",\n filterQueryJson: JSON.stringify(item?.predicate || {}),\n },\n query: item?.predicate || {},\n variables: item?.variables || {},\n };\n })\n : [];\n const nextSavedFilter = allowMultipleSavedFilters\n ? (nextSavedFilterItems.length > 0 ? { $or: nextSavedFilterItems.map((item: any) => item.query) } : null)\n : queryObject?.saved_filter_predicate || null;\n const nextSavedFilterVariables = queryObject?.saved_filter_variables ?? {};\n const nextSavedFilterData = allowMultipleSavedFilters\n ? (nextSavedFilterItems.length > 0 ? nextSavedFilterItems[nextSavedFilterItems.length - 1].data : null)\n : nextSavedFilter\n ? availableSavedFilters.find((savedFilter: any) => {\n if (queryObject?.saved_filter_system_key) {\n return savedFilter?.systemKey === queryObject.saved_filter_system_key;\n }\n if (queryObject?.saved_filter_id) {\n return String(savedFilter?.id) === String(queryObject.saved_filter_id);\n }\n return false;\n }) || {\n id: queryObject?.saved_filter_id,\n systemKey: queryObject?.saved_filter_system_key,\n name: queryObject?.saved_filter_name || 'Saved Filter',\n filterQueryJson: JSON.stringify(nextSavedFilter),\n }\n : null;\n\n setSearchFilter((prev: any) => areFilterStateValuesEqual(prev, nextSearchFilter) ? prev : nextSearchFilter);\n setSearchChips((prev) => areFilterStateValuesEqual(prev, nextSearchChips) ? prev : nextSearchChips);\n setCustomFilter((prev: any) => areFilterStateValuesEqual(prev, nextCustomFilter) ? prev : nextCustomFilter);\n setPredefinedSearchBaseFilter((prev: any) => areFilterStateValuesEqual(prev, nextPredefinedBaseFilter) ? prev : nextPredefinedBaseFilter);\n setPredefinedSearchChip((prev) => areFilterStateValuesEqual(prev, nextPredefinedSearchChip) ? prev : nextPredefinedSearchChip);\n setCurrentSavedFilterData((prev: any) => areFilterStateValuesEqual(prev, nextSavedFilterData) ? prev : nextSavedFilterData);\n setCurrentSavedFilterQuery((prev: any) => areFilterStateValuesEqual(prev, nextSavedFilter) ? prev : nextSavedFilter);\n setCurrentSavedFilterVariables((prev) => areFilterStateValuesEqual(prev, nextSavedFilterVariables) ? prev : nextSavedFilterVariables);\n setActiveSavedFilters((prev) => areFilterStateValuesEqual(prev, nextSavedFilterItems) ? prev : nextSavedFilterItems);\n\n if (nextCustomFilter && viewData?.data) {\n const rules: FilterRule = transformFiltersToRules(nextCustomFilter);\n const hydratedRules = await hydrateRelationRules([rules], viewData);\n setFilterRules((prev) => areFilterStateValuesEqual(prev, hydratedRules) ? prev : hydratedRules);\n } else {\n setFilterRules((prev) => areFilterStateValuesEqual(prev, initialState) ? prev : initialState);\n }\n\n const hasGroupingRules = queryObject?.grouping_rules?.some((rule: any) => rule.fieldName !== null);\n let nextGroupingRules: GroupingRule[] = [{ id: 1, fieldName: null, dateGrouping: null }];\n\n if (hasGroupingRules) {\n nextGroupingRules = queryObject.grouping_rules;\n } else {\n const layoutGroupBy = viewData?.data?.solidView?.layout?.attrs?.groupBy;\n if (Array.isArray(layoutGroupBy) && layoutGroupBy.length > 0) {\n nextGroupingRules = layoutGroupBy.map((groupStr: string, index: number) => {\n const [fieldName, dateGrouping] = groupStr.split(\":\");\n return {\n id: Date.now() + index,\n fieldName: fieldName || null,\n dateGrouping: (dateGrouping as DateGroupingFormat) || null,\n };\n });\n }\n }\n\n const nextAggregationRules =\n Array.isArray(queryObject?.aggregation_rules) && queryObject.aggregation_rules.length > 0\n ? queryObject.aggregation_rules\n : [{ id: 1, operator: \"count\", fieldName: \"id\", locked: true }];\n\n setGroupingRules((prev) => areFilterStateValuesEqual(prev, nextGroupingRules) ? prev : nextGroupingRules);\n setAggregationRules((prev) => areFilterStateValuesEqual(prev, nextAggregationRules) ? prev : nextAggregationRules);\n }, [allowMultipleSavedFilters, availableSavedFilters, initialState, viewData]);\n\n const resetAppliedFilters = ({ preserveGrouping = false }: { preserveGrouping?: boolean } = {}) => {\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null);\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n setCurrentSavedFilterData(null);\n setCurrentSavedFilterQuery(null);\n setCurrentSavedFilterVariables({});\n setCurrentSavedFilterRules(null);\n setActiveSavedFilters([]);\n setEditingSavedFilterKey(null);\n if (!preserveGrouping) {\n setGroupingRules(defaultGroupingRules);\n setAggregationRules(defaultAggregationRules);\n }\n setShowOverlay(false);\n setShowChipManager(false);\n setInputValue(\"\");\n clearFilterObjectFromLocalStorage();\n\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n };\n\n useImperativeHandle(ref, () => ({\n clearFilter: () => {\n resetAppliedFilters();\n },\n getSavedFilters: () => availableSavedFilters.map((filter: any) => ({ ...filter })),\n applySavedFilterByName: (name: string, variables: Record<string, any> = {}) => {\n const savedFilter = allAvailableSavedFilters.find((filter: any) => filter?.name === name);\n if (!savedFilter) {\n return false;\n }\n\n return applySavedFilter(savedFilter, variables);\n },\n clearAppliedFilters: (options?: { preserveGrouping?: boolean }) => {\n resetAppliedFilters(options);\n },\n openGroupingDialog: () => {\n setShowOverlay(false);\n setShowGroupFilterElement(true);\n },\n openCustomFilterDialog: () => {\n setShowOverlay(false);\n setShowGlobalSearchElement(true);\n }\n }));\n\n useEffect(() => {\n if (!viewData?.data?.solidView?.id) return;\n void syncFilterUiStateFromSharedSource(getFilterObjectFromLocalStorage());\n }, [syncFilterUiStateFromSharedSource, viewData?.data?.solidView?.id]);\n\n useEffect(() => {\n const fn = async () => {\n if (savedFiltersLoaded) {\n const queryObject = getFilterObjectFromLocalStorage();\n await syncFilterUiStateFromSharedSource(queryObject);\n\n setRefreshKey((prev) => prev + 1)\n setHasSearched(true);\n }\n }\n fn()\n }, [availableSavedFilters, savedFiltersLoaded, syncFilterUiStateFromSharedSource, viewData?.data?.solidView?.id])\n\n useEffect(() => {\n const fn = async () => {\n if (filterPredicates !== undefined && filterPredicates !== null) {\n // const formattedChips = filterPredicates.search_predicate?.$and.map((chip: any, key: any) => {\n // const chipKey = Object.keys(chip)[0]; // Get the key, e.g., \"displayName\"\n // const chipValue = chip[chipKey]?.$containsi; // Get the value of \"$containsi\"\n // const chipdata = {\n // columnName: chipKey,\n // value: chipValue\n // };\n // return chipdata\n // }\n // );\n // setSearchChips(formattedChips);\n await syncFilterUiStateFromSharedSource(filterPredicates);\n }\n }\n fn()\n }, [filterPredicates, syncFilterUiStateFromSharedSource])\n\n useEffect(() => {\n if (viewData?.data?.solidFieldsMetadata) {\n setInputValue(\"\");\n let fieldsData = viewData?.data?.solidFieldsMetadata;\n // console.log(`fiels data while rendering solid global search element: `);\n // console.log(fieldsData);\n\n const layoutChildren = viewData?.data?.solidView?.layout?.children ?? [];\n const fieldElements = extractFields(layoutChildren);\n\n\n // Build one entry per layout column (not per field name), so multiple columns\n // sharing the same field name (e.g. several viewMetadata columns with different\n // searchFields/labels) each appear as a separate searchable option.\n const seenKeys = new Set<string>();\n const fieldsList: any[] = [];\n\n // First pass: one entry per unique field name (for non-searchable / filter use)\n Object.entries(fieldsData ?? {}).forEach(([key, value]: any) => {\n const viewFieldElement = fieldElements.find(\n (f: any) => f?.attrs?.name === key\n );\n seenKeys.add(key);\n fieldsList.push({\n name: viewFieldElement?.attrs?.label ?? value.displayName,\n value: key,\n type: value.type,\n ormType: value.ormType,\n matchMode: viewFieldElement?.attrs?.searchMatchMode,\n searchField: viewFieldElement?.attrs?.searchField ?? null,\n isSearchable: viewFieldElement?.attrs?.isSearchable ?? false,\n relationType: value?.relationType ?? null,\n });\n });\n\n // Second pass: for any layout column that shares a field name but has a\n // distinct searchField, add it as an additional searchable entry.\n fieldElements.forEach((fieldElement: any) => {\n const key = fieldElement?.attrs?.name;\n const searchField = fieldElement?.attrs?.searchField;\n const isSearchable = fieldElement?.attrs?.isSearchable ?? false;\n if (!isSearchable || !searchField) return;\n // Already covered by the first pass entry for this key?\n const existingEntry = fieldsList.find(\n (e: any) => e.value === key && e.searchField === searchField\n );\n if (existingEntry) return; // already in list\n const value: any = (fieldsData ?? {})[key];\n if (!value) return;\n fieldsList.push({\n name: fieldElement?.attrs?.label ?? value.displayName,\n value: key,\n type: value.type,\n ormType: value.ormType,\n matchMode: fieldElement?.attrs?.searchMatchMode,\n searchField: searchField,\n isSearchable: true,\n relationType: value?.relationType ?? null,\n });\n });\n\n const filterableFieldsList = fieldsList.filter((field: any) => {\n switch (field.type) {\n case \"mediaSingle\":\n case \"mediaMultiple\":\n return false;\n default:\n return true;\n }\n });\n\n setFields(filterableFieldsList);\n\n const searchableFieldsList = fieldsList.filter((field: any) => {\n if (!field.isSearchable) return false;\n\n switch (field.type) {\n case \"relation\":\n // Only include relation if searchField is present\n return !!field.searchField;\n case \"longText\":\n case \"shortText\":\n case \"selectionStatic\":\n case \"selectionDynamic\":\n return true;\n // case \"selectionStatic\":\n case \"computed\":\n return field.ormType === \"varchar\";\n default:\n return false;\n }\n });\n\n const groupableFieldsList = fieldsList.filter((field: any) => {\n switch (field.type) {\n case \"relation\":\n // Only include relation if searchField is present\n if (field.relationType === \"many-to-one\")\n return true;\n return false;\n case \"longText\":\n case \"shortText\":\n case \"selectionStatic\":\n case \"selectionDynamic\":\n case \"int\":\n case \"float\":\n case \"boolean\":\n case \"date\":\n case \"datetime\":\n return true;\n // case \"selectionStatic\":\n case \"computed\":\n return field.ormType === \"varchar\";\n default:\n return false;\n }\n });\n \n // Optionally map to a minimal structure if needed for UI\n let finalSearchableFieldsList: any = searchableFieldsList.map((field: any) => ({\n fieldName: field.value,\n displayName: field.name,\n searchField: field.searchField ?? \"\",\n matchMode: field.matchMode\n }));\n \n setSearchableFields(finalSearchableFieldsList);\n\n let finalGroupableFieldsList: any = groupableFieldsList.map((field: any) => ({\n fieldName: field.value,\n displayName: field.name,\n searchField: field.searchField ?? \"\",\n matchMode: field.matchMode,\n type: field.type,\n ormType: field.ormType,\n relationType: field.relationType,\n computedFieldValueType: field.computedFieldValueType\n }));\n\n setGroupableFields(finalGroupableFieldsList)\n\n const predefinedSearchesList = viewData?.data?.solidView?.layout?.attrs?.predefinedSearches || [];\n setPredefinedSearches(predefinedSearchesList);\n }\n // used to open the \n }, [viewData])\n\n useEffect(() => {\n if (chipsRef.current) {\n const inputElement = chipsRef.current.querySelector(\"input\");\n if (inputElement) {\n inputElement.addEventListener(\"input\", (e: any) => {\n setInputValue((e.target as HTMLInputElement).value);\n });\n }\n }\n }, []);\n\n\n const handleAddChip = (columnName?: string) => {\n if (inputValue?.trim()) {\n const fallbackField = searchableFields[0]; // guaranteed object\n if (!fallbackField) return;\n // Support comma-separated values: split, trim and add as separate chips\n const values = inputValue.split(\",\").map(v => v.trim()).filter(v => v !== \"\");\n const fieldName = columnName || fallbackField.fieldName;\n const chipsToAdd = values.map(v => ({\n columnName: fieldName,\n value: v,\n columnDisplayName: fallbackField.displayName,\n searchField: fallbackField.searchField,\n matchMode: fallbackField.matchMode\n }));\n\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n }\n\n };\n\n const clearCustomFilter = () => {\n setFilterRules(initialState);\n setCustomFilter(null)\n // setPredefinedSearchChip(null)\n // setPredefinedSearchBaseFilter(null)\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n }\n\n\n const transformCustomFilterRules = (filterRules: any) => {\n const transformedFilter = transformRulesToFilters(filterRules[0], viewData);\n // If there's a predefined search, merge it with the new custom filter\n let finalCustomFilter = transformedFilter;\n // if (predefinedSearchChip && predefinedSearchBaseFilter) {\n // // Combine predefined filter with new custom filter\n // finalCustomFilter = {\n // $and: [predefinedSearchBaseFilter, transformedFilter]\n // };\n // }\n setCustomFilter(finalCustomFilter);\n setShowGlobalSearchElement(false);\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n }\n\n const transformSavedFilterRules = (filterRules: any) => {\n const transformedFilter = transformRulesToFilters(filterRules[0], viewData);\n\n // If there's a predefined search, merge it with the new custom filter\n let finalCustomFilter = transformedFilter;\n // if (predefinedSearchChip && predefinedSearchBaseFilter) {\n // // Combine predefined filter with new custom filter\n // finalCustomFilter = {\n // $and: [predefinedSearchBaseFilter, transformedFilter]\n // };\n // }\n setCurrentSavedFilterQuery(finalCustomFilter);\n if (allowMultipleSavedFilters && editingSavedFilterKey) {\n const nextItems = activeSavedFilters.map((item: any) =>\n getSavedFilterKey(item.data) === editingSavedFilterKey\n ? { ...item, query: finalCustomFilter }\n : item\n );\n setActiveSavedFilters(nextItems);\n persistActiveSavedFilters(nextItems);\n }\n setShowSavedFilterComponent(false);\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n\n }\n\n const applyGrouping = (groupingRules: GroupingRule[], aggregationRules: AggregationRule[]) => {\n setHasSearched(true)\n setShowGroupFilterElement(false);\n setGroupingRules(groupingRules);\n setAggregationRules(aggregationRules);\n setRefreshKey((prev) => prev + 1)\n }\n\n const openCustomFilterDialog = () => {\n setShowOverlay(false);\n setShowGlobalSearchElement(true);\n };\n\n const openGroupingDialog = () => {\n setShowOverlay(false);\n setShowGroupFilterElement(true);\n };\n\n useEffect(() => {\n if (refreshKey > 0 && hasSearched) {\n\n const formattedChips = {\n $and: searchChips.map((chip: any) => ({\n fieldName: chip.columnName,\n matchMode: chip.matchMode,\n value: [chip.value],\n searchField: chip.searchField ?? \"\",\n }))\n };\n\n\n const finalSearchFilter = tranformSearchToFilters(formattedChips);\n setSearchFilter(finalSearchFilter);\n\n const finalSavedFilter: any = allowMultipleSavedFilters\n ? (activeSavedFilters.length > 0 ? { $or: activeSavedFilters.map((item: any) => item.query) } : null)\n : currentSavedFilterQuery;\n const finalPredefinedFilter = predefinedSearchBaseFilter\n\n const finalCustomFilter = customFilter\n const finalFilter = mergeAllDiffFilters(finalCustomFilter, finalSearchFilter, finalSavedFilter, finalPredefinedFilter, groupingRules, aggregationRules)\n finalFilter.predefined_search_chip =\n finalPredefinedFilter && predefinedSearchChip\n ? predefinedSearchChip\n : null;\n if (allowMultipleSavedFilters && activeSavedFilters.length > 0) {\n const resolvedItems = activeSavedFilters.map((item: any) => resolveSavedFilterVariables(item.query, user?.id, item.variables || {}));\n if (resolvedItems.some((item: any) => item.missingVariables.length > 0)) return;\n finalFilter.resolved_saved_filter_predicate = { $or: resolvedItems.map((item: any) => item.value) };\n finalFilter.saved_filter_variables = {};\n finalFilter.saved_filter_items = activeSavedFilters.map((item: any) => ({\n id: item.data?.id ?? null,\n systemKey: item.data?.systemKey ?? null,\n name: item.data?.name ?? null,\n predicate: item.query,\n variables: item.variables || {},\n }));\n } else if (finalSavedFilter && Object.keys(finalSavedFilter).length > 0) {\n const resolved = resolveSavedFilterVariables(finalSavedFilter, user?.id, currentSavedFilterVariables);\n if (resolved.missingVariables.length > 0) return;\n finalFilter.resolved_saved_filter_predicate = resolved.value;\n finalFilter.saved_filter_variables = currentSavedFilterVariables;\n }\n if (!allowMultipleSavedFilters && currentSavedFilterData?.id) {\n finalFilter.saved_filter_id = currentSavedFilterData.id;\n }\n if (!allowMultipleSavedFilters && currentSavedFilterData?.systemKey) {\n finalFilter.saved_filter_system_key = currentSavedFilterData.systemKey;\n }\n if (!allowMultipleSavedFilters && currentSavedFilterData?.name) {\n finalFilter.saved_filter_name = currentSavedFilterData.name;\n }\n handleApplyCustomFilter(finalFilter, true);\n setHasSearched(false)\n // }\n }\n }, [refreshKey]);\n\n\n // Handle predefined search selection\n\n const hasCustomFilterChanged = () => {\n if (!predefinedSearchChip || !customFilter || !predefinedSearchBaseFilter) {\n return false;\n }\n // Deep comparison to check if filter has changed\n return JSON.stringify(customFilter) !== JSON.stringify(predefinedSearchBaseFilter);\n };\n\n const openSavedCustomFilter = async (savedfilter: any) => {\n //Open custom filter popup \n // setShowGlobalSearchElement(true);\n // // dont refetch the data yet\n // const customFilter = JSON.parse(savedfilter.filterQueryJson);\n // setCustomFilter(customFilter ? customFilter : null);\n // if (customFilter) {\n // const formatedCustomChips: FilterRule = transformFiltersToRules(customFilter ? customFilter : null);\n // setFilterRules(formatedCustomChips ? [formatedCustomChips] : initialState);\n // }\n\n\n if (!allowMultipleSavedFilters) {\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n }\n\n if (savedfilter?.id) {\n const savedfilterId = savedfilter.id;\n setShowOverlay(false);\n setEditingSavedFilterKey(getSavedFilterKey(savedfilter));\n const currentSavedFilterData: any = availableSavedFilters.find((savedFilter: any) => savedFilter.id === savedfilterId);\n setCurrentSavedFilterData(currentSavedFilterData);\n if (currentSavedFilterData) {\n const filterJson = parseSavedFilterQueryJson(currentSavedFilterData?.filterQueryJson);\n if (filterJson) {\n let finalSavedFilter = filterJson\n setCurrentSavedFilterQuery(finalSavedFilter)\n const rules: FilterRule = transformFiltersToRules(finalSavedFilter ? finalSavedFilter : null);\n const hydratedRules = await hydrateRelationRules(\n [rules],\n viewData\n );\n setCurrentSavedFilterRules(hydratedRules ? hydratedRules : initialState);\n setShowSavedFilterComponent(true)\n }\n }\n } else {\n console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);\n }\n }\n\n const persistActiveSavedFilters = (items: any[]) => {\n const first = items[0];\n const persistedFilter = {\n ...(getFilterObjectFromLocalStorage() || {}),\n saved_filter_items: items.map((item) => ({\n id: item.data?.id ?? null,\n systemKey: item.data?.systemKey ?? null,\n name: item.data?.name ?? null,\n predicate: item.query,\n variables: item.variables || {},\n })),\n saved_filter_predicate: items.length > 0 ? (items.length === 1 ? first.query : { $or: items.map((item) => item.query) }) : null,\n saved_filter_variables: items.length === 1 ? (first.variables || {}) : {},\n saved_filter_id: items.length === 1 ? first.data?.id ?? null : null,\n saved_filter_system_key: items.length === 1 ? first.data?.systemKey ?? null : null,\n saved_filter_name: items.length === 1 ? first.data?.name ?? null : null,\n };\n delete persistedFilter.finalFullFilter;\n setFilterObjectToLocalStorage(persistedFilter);\n };\n\n const persistActiveSavedFilter = (savedFilter: any, filterJson: any, variables: Record<string, any>) => {\n if (allowMultipleSavedFilters) {\n persistActiveSavedFilters([{ data: savedFilter, query: filterJson, variables }]);\n return;\n }\n const persistedFilter = {\n ...(getFilterObjectFromLocalStorage() || {}),\n custom_filter_predicate: null,\n search_predicate: null,\n predefined_search_predicate: null,\n predefined_search_chip: null,\n saved_filter_predicate: filterJson,\n saved_filter_variables: variables,\n saved_filter_id: savedFilter?.id ?? null,\n saved_filter_system_key: savedFilter?.systemKey ?? null,\n saved_filter_name: savedFilter?.name ?? null,\n };\n delete persistedFilter.finalFullFilter;\n setFilterObjectToLocalStorage(persistedFilter);\n };\n\n const clearActiveSavedFilter = () => {\n setCurrentSavedFilterData(null);\n setCurrentSavedFilterQuery(null);\n setCurrentSavedFilterVariables({});\n setCurrentSavedFilterRules(null);\n setShowSavedFilterComponent(false);\n\n const persistedFilter = {\n ...(getFilterObjectFromLocalStorage() || {}),\n saved_filter_items: [],\n saved_filter_predicate: null,\n saved_filter_variables: {},\n saved_filter_id: null,\n saved_filter_system_key: null,\n saved_filter_name: null,\n };\n delete persistedFilter.finalFullFilter;\n setFilterObjectToLocalStorage(persistedFilter);\n\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n };\n\n const deleteSavedFilter = async () => {\n if (!savedFilterTobeDeleted?.id) {\n setIsDeleteSQDialogVisible(false);\n setSavedFilterTobeDeleted(null);\n return;\n }\n\n try {\n await deleteEntity(savedFilterTobeDeleted?.id).unwrap();\n dispatch(showToast({\n severity: \"success\",\n summary: ERROR_MESSAGES.DELETED,\n detail: ERROR_MESSAGES.ENTITY_DELETE,\n }));\n\n if (allowMultipleSavedFilters) {\n const nextItems = activeSavedFilters.filter((item: any) => String(item.data?.id) !== String(savedFilterTobeDeleted?.id));\n setActiveSavedFilters(nextItems);\n if (String(savedFilterTobeDeleted?.id) === String(currentSavedFilterData?.id)) {\n setCurrentSavedFilterData(null);\n setCurrentSavedFilterQuery(null);\n setCurrentSavedFilterVariables({});\n }\n persistActiveSavedFilters(nextItems);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n } else if (String(savedFilterTobeDeleted?.id) === String(currentSavedFilterData?.id)) {\n removeSavedFilter();\n }\n setIsDeleteSQDialogVisible(false);\n setSavedFilterTobeDeleted(null);\n setTimeout(() => {\n setSavedFilterFetchDataRefreshKey(prev => prev + 1)\n }, 500)\n } catch (error: any) {\n const errorMessage = error?.data?.message || error?.data?.error || error?.message || ERROR_MESSAGES.SOMETHING_WRONG;\n dispatch(showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.DELETE_FAIELD,\n detail: errorMessage,\n }));\n }\n }\n const handleSaveFilter = async (formValues: any) => {\n setShowSaveFilterPopup(false)\n\n try {\n if (formValues.id) {\n const filterJson = currentSavedFilterQuery;\n const formData = new FormData();\n formData.append(\"name\", formValues.name);\n formData.append(\"filterQueryJson\", JSON.stringify(filterJson, null, 2));\n formData.append(\"modelId\", viewData?.data?.solidView?.model?.id);\n formData.append(\"viewId\", viewData?.data?.solidView?.id);\n formData.append(\"isPrivate\", formValues.isPrivate);\n formData.append(\"userId\", user?.id);\n\n await updateEntity({ id: +formValues.id, data: formData }).unwrap();\n dispatch(showToast({\n severity: \"success\",\n summary: ERROR_MESSAGES.SAVED_FILTER_UPDATED,\n detail: ERROR_MESSAGES.SAVED_FILTER_UPDATED_SUCCESSFULLY,\n }));\n\n if (!allowMultipleSavedFilters) {\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n }\n // Apply the rename immediately, both to the active filter and to\n // the cached list — otherwise the list still holds the pre-rename\n // entry, which wins the id-based lookup the next time saved-filter\n // state gets re-derived from it, reverting the name until a real\n // refetch lands (e.g. only after removing and reapplying).\n const savedFilterRecord = { id: formValues.id, name: formValues.name, isPrivate: formValues.isPrivate, filterQueryJson: JSON.stringify(filterJson, null, 2) };\n setSavedFilters((prev) => prev.map((f: any) => String(f?.id) === String(formValues.id) ? { ...f, ...savedFilterRecord } : f));\n setCurrentSavedFilterData(savedFilterRecord);\n setCurrentSavedFilterQuery(filterJson);\n if (allowMultipleSavedFilters) {\n const nextItems = activeSavedFilters.map((item: any) =>\n getSavedFilterKey(item.data) === getSavedFilterKey(savedFilterRecord)\n ? { data: savedFilterRecord, query: filterJson, variables: currentSavedFilterVariables }\n : item\n );\n setActiveSavedFilters(nextItems);\n persistActiveSavedFilters(nextItems);\n } else {\n persistActiveSavedFilter(savedFilterRecord, filterJson, currentSavedFilterVariables);\n }\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n } else {\n\n const filterJson = customFilter;\n const formData = new FormData();\n formData.append(\"name\", formValues.name);\n formData.append(\"filterQueryJson\", JSON.stringify(filterJson, null, 2));\n formData.append(\"modelId\", viewData?.data?.solidView?.model?.id);\n formData.append(\"viewId\", viewData?.data?.solidView?.id);\n formData.append(\"isPrivate\", formValues.isPrivate);\n formData.append(\"userId\", user?.id);\n const result = await createEntity(formData).unwrap();\n dispatch(showToast({\n severity: \"success\",\n summary: ERROR_MESSAGES.SAVED_FILTER_CREATED,\n detail: ERROR_MESSAGES.SAVED_FILTER_CREATED_SUCCESSFULLY,\n }));\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n // The custom filter just became this saved filter — apply it, and\n // seed the cached list with it, immediately (see rename branch above).\n // A newly created saved filter replaces any other active filters/saved\n // filters rather than joining them — only applying an existing saved\n // filter is additive when allowMultipleSavedFilters is on.\n const savedFilterRecord = { id: result.data.id, name: formValues.name, isPrivate: formValues.isPrivate, filterQueryJson: JSON.stringify(filterJson, null, 2) };\n setSavedFilters((prev) => [savedFilterRecord, ...prev]);\n setCurrentSavedFilterData(savedFilterRecord);\n setCurrentSavedFilterQuery(filterJson);\n setCurrentSavedFilterVariables({});\n if (allowMultipleSavedFilters) {\n const nextItems = [{ data: savedFilterRecord, query: filterJson, variables: {} }];\n setActiveSavedFilters(nextItems);\n persistActiveSavedFilters(nextItems);\n } else {\n persistActiveSavedFilter(savedFilterRecord, filterJson, {});\n }\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n }\n } catch (error: any) {\n const errorMessage = error?.data?.message || error?.data?.error || error?.message || ERROR_MESSAGES.SOMETHING_WRONG;\n dispatch(showToast({\n severity: \"error\",\n summary: ERROR_MESSAGES.ERROR,\n detail: errorMessage,\n }));\n }\n }\n\n\n\n useEffect(() => {\n // Explicitly type the event as a MouseEvent\n function handleClickOutside(event: MouseEvent) {\n if (overlayRef.current && !overlayRef.current.contains(event.target as Node)) {\n setShowOverlay(false);\n }\n }\n if (showOverlay) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [showOverlay]);\n\n useEffect(() => {\n function handleChipManagerClickOutside(event: MouseEvent) {\n const targetNode = event.target as Node;\n if (chipManagerRef.current?.contains(targetNode)) return;\n if (chipManagerTriggerRef.current?.contains(targetNode)) return;\n setShowChipManager(false);\n }\n\n if (showChipManager) {\n document.addEventListener(\"mousedown\", handleChipManagerClickOutside);\n }\n\n return () => {\n document.removeEventListener(\"mousedown\", handleChipManagerClickOutside);\n };\n }, [showChipManager]);\n\n const CustomChip = () => {\n // console.log(\"customFilter\", customFilter);\n const ruleCount =\n customFilter?.$or?.length ??\n customFilter?.$and?.length ??\n Object.keys(customFilter || {}).length;\n\n return (\n <li>\n <div className=\"custom-filter-chip-type\">\n <div className=\"flex items-center gap-2 text-base\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\n onClick={() => {\n setShowGlobalSearchElement(true)\n }\n }>\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"var(--primary-color, var(--primary))\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{ruleCount}</strong> rules applied</span>\n </div>\n\n {/* button to clear filter */}\n <button type=\"button\" onClick={clearCustomFilter} style={{ cursor: \"pointer\" }} className=\"ml-1\">\n <X size={14} />\n </button>\n </div>\n </li>\n )\n };\n\n\n //saved filter related code start\n\n const applySavedFilter = (savedfilter: any, variables: Record<string, any> = {}) => {\n if (!savedfilter?.id && !savedfilter?.systemKey) {\n console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);\n return false;\n }\n\n let filterJson: any;\n try {\n filterJson = parseSavedFilterQueryJson(savedfilter?.filterQueryJson);\n } catch {\n console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);\n return false;\n }\n\n const resolved = resolveSavedFilterVariables(filterJson, user?.id, variables);\n if (resolved.missingVariables.length > 0) {\n console.error(`Unable to apply saved filter '${savedfilter?.name}': missing variables ${resolved.missingVariables.join(\", \")}`);\n return false;\n }\n\n if (allowMultipleSavedFilters) {\n const key = getSavedFilterKey(savedfilter);\n const nextItem = { data: savedfilter, query: filterJson, variables };\n const existingItem = activeSavedFilters.find((item: any) => getSavedFilterKey(item.data) === key);\n if (existingItem && areFilterStateValuesEqual(existingItem.query, filterJson) && areFilterStateValuesEqual(existingItem.variables, variables)) {\n return true;\n }\n const nextItems = existingItem\n ? activeSavedFilters.map((item: any) => getSavedFilterKey(item.data) === key ? nextItem : item)\n : [...activeSavedFilters, nextItem];\n setActiveSavedFilters(nextItems);\n setCurrentSavedFilterData(savedfilter);\n setCurrentSavedFilterQuery(filterJson);\n setCurrentSavedFilterVariables(variables);\n setEditingSavedFilterKey(null);\n persistActiveSavedFilters(nextItems);\n setShowOverlay(false);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n return true;\n }\n\n // Applying the already-active filter must be a no-op. This is important\n // for lifecycle extensions: applying a filter causes a new list load,\n // which invokes onBeforeListDataLoad/onListLoad again.\n const sameSavedFilterReference =\n (currentSavedFilterData?.id != null &&\n savedfilter?.id != null &&\n areFilterStateValuesEqual(currentSavedFilterData.id, savedfilter.id)) ||\n (currentSavedFilterData?.systemKey != null &&\n savedfilter?.systemKey != null &&\n areFilterStateValuesEqual(currentSavedFilterData.systemKey, savedfilter.systemKey));\n const sameSavedFilter =\n sameSavedFilterReference &&\n areFilterStateValuesEqual(currentSavedFilterQuery, filterJson) &&\n areFilterStateValuesEqual(currentSavedFilterVariables, variables);\n\n if (sameSavedFilter) {\n return true;\n }\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n setCurrentSavedFilterData(savedfilter);\n setCurrentSavedFilterQuery(filterJson);\n setCurrentSavedFilterVariables(variables);\n persistActiveSavedFilter(savedfilter, filterJson, variables);\n setShowOverlay(false);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n return true;\n }\n\n const removeSavedFilter = () => {\n if (allowMultipleSavedFilters) {\n const key = getSavedFilterKey(currentSavedFilterData);\n const nextItems = activeSavedFilters.filter((item: any) => getSavedFilterKey(item.data) !== key);\n setActiveSavedFilters(nextItems);\n setCurrentSavedFilterData(null);\n setCurrentSavedFilterQuery(null);\n setCurrentSavedFilterVariables({});\n setEditingSavedFilterKey(null);\n persistActiveSavedFilters(nextItems);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n return;\n }\n clearActiveSavedFilter();\n }\n\n const SavedFiltersChip = () => {\n\n return (\n <li>\n <div className=\"custom-filter-chip-type\">\n <div className=\"flex items-center gap-2 text-base\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\n onClick={() => {\n const fn = async () => {\n if (currentSavedFilterQuery) {\n const rules: FilterRule = transformFiltersToRules(currentSavedFilterQuery ? currentSavedFilterQuery : null);\n const hydratedRules = await hydrateRelationRules(\n [rules],\n viewData\n );\n setCurrentSavedFilterRules(hydratedRules ? hydratedRules : initialState);\n setShowSavedFilterComponent(true)\n }\n }\n fn()\n }\n }\n >\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"var(--primary-color, var(--primary))\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{currentSavedFilterData?.name}</strong></span>\n </div>\n\n {/* button to clear filter */}\n <button type=\"button\" onClick={removeSavedFilter} style={{ cursor: \"pointer\" }} className=\"ml-1\">\n <X size={14} />\n </button>\n </div>\n </li>\n )\n };\n\n const removeGrouping = () => {\n setGroupingRules(defaultGroupingRules);\n setAggregationRules(defaultAggregationRules);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n }\n\n const GroupingChip = () => {\n return (\n <li className=\"solid-global-search-chip\">\n <div className=\"flex items-center gap-2\">\n <div className=\"flex items-center gap-2\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n\n onClick={() => setShowGroupFilterElement(true)}\n >\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"var(--primary-color, var(--primary))\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{groupingRules.length}</strong> Grouping rules applied</span>\n </div>\n\n {/* button to clear filter */}\n <button type=\"button\" onClick={removeGrouping} style={{ cursor: \"pointer\" }} className=\"ml-1\">\n <X size={14} />\n </button>\n </div>\n </li>\n )\n };\n\n\n\n\n //saved filter related code end\n\n\n // search related code start\n\n const handleRemoveChipGroup = (columnName: string) => {\n const updatedChips = searchChips.filter(chip => chip.columnName !== columnName);\n setSearchChips(updatedChips);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n\n };\n\n const groupedSearchChips = searchChips.reduce((acc: Record<string, string[]>, chip) => {\n const key = chip.columnName;\n if (!key) return acc; // skip if undefined\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(chip.value);\n return acc;\n }, {});\n\n const customRuleCount =\n customFilter?.$or?.length ??\n customFilter?.$and?.length ??\n Object.keys(customFilter || {}).length;\n\n const managedChipItems = useMemo<ManagedChipItem[]>(() => {\n const items: ManagedChipItem[] = [];\n\n const savedItems = allowMultipleSavedFilters\n ? activeSavedFilters\n : (currentSavedFilterData?.name ? [{ data: currentSavedFilterData }] : []);\n savedItems.forEach((item: any) => {\n if (item.data?.name) {\n items.push({\n id: `saved-filter:${getSavedFilterKey(item.data)}`,\n type: \"saved\",\n label: `Saved: ${item.data.name}`,\n onRemove: () => {\n if (!allowMultipleSavedFilters) {\n removeSavedFilter();\n return;\n }\n const nextItems = activeSavedFilters.filter((active: any) => getSavedFilterKey(active.data) !== getSavedFilterKey(item.data));\n setActiveSavedFilters(nextItems);\n if (getSavedFilterKey(currentSavedFilterData) === getSavedFilterKey(item.data)) {\n setCurrentSavedFilterData(null);\n setCurrentSavedFilterQuery(null);\n setCurrentSavedFilterVariables({});\n }\n persistActiveSavedFilters(nextItems);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n },\n ...(allowMultipleSavedFilters ? { onOpen: () => openSavedCustomFilter(item.data) } : {}),\n });\n }\n });\n\n if (predefinedSearchChip?.name && predefinedSearchChip?.value) {\n items.push({\n id: \"predefined-search\",\n type: \"predefined\",\n label: `Predefined: ${predefinedSearchChip.name} (${predefinedSearchChip.value})`,\n onRemove: () => removePredefinedSearchChip(),\n });\n }\n\n if (customFilter && customRuleCount > 0) {\n items.push({\n id: \"custom-filter\",\n type: \"custom\",\n label: `${customRuleCount} custom rules applied`,\n onRemove: () => clearCustomFilter(),\n onOpen: () => setShowGlobalSearchElement(true)\n });\n }\n\n if (groupingRules.length > 0 && groupingRules.some((r) => r.fieldName !== null)) {\n items.push({\n id: \"grouping-rules\",\n type: \"grouping\",\n label: `${groupingRules.length} grouping rules applied`,\n onRemove: () => removeGrouping(),\n onOpen: () => setShowGroupFilterElement(true)\n\n });\n }\n\n Object.entries(groupedSearchChips).forEach(([column, values]) => {\n const fieldMeta = searchableFields.find((field) => field.fieldName === column);\n const columnDisplayName = fieldMeta?.displayName || column;\n items.push({\n id: `search:${column}`,\n type: \"search\",\n label: `${columnDisplayName}: ${values.join(\" or \")}`,\n onRemove: () => handleRemoveChipGroup(column),\n });\n });\n\n return items;\n }, [\n currentSavedFilterData,\n activeSavedFilters,\n allowMultipleSavedFilters,\n predefinedSearchChip,\n customFilter,\n customRuleCount,\n groupingRules,\n groupedSearchChips,\n searchableFields,\n ]);\n\n const MAX_VISIBLE_CHIPS = 3;\n const visibleChipItems = managedChipItems.slice(0, MAX_VISIBLE_CHIPS);\n const hiddenChipItems = managedChipItems.slice(MAX_VISIBLE_CHIPS);\n const hiddenChipCount = hiddenChipItems.length;\n\n const handleManagedChipOpen = (chip: ManagedChipItem) => {\n if (!chip.onOpen) return;\n chip.onOpen();\n };\n\n const clearAllAppliedChips = () => {\n if (managedChipItems.length === 0) return;\n resetAppliedFilters();\n };\n\n useEffect(() => {\n if (managedChipItems.length === 0 && showChipManager) {\n setShowChipManager(false);\n }\n }, [managedChipItems.length, showChipManager]);\n\n\n const overlayOptions = useMemo<OverlayOption[]>(() => {\n const currentValue = inputValue?.trim() || \"\";\n const fields: OverlayOption[] = currentValue\n ? searchableFields.map((field: any) => ({\n id: `field:${field.fieldName}`,\n kind: \"field\" as const,\n field\n }))\n : [];\n const predefined: OverlayOption[] =\n currentValue && predefinedSearches?.length\n ? predefinedSearches.map((p: any, idx: number) => ({\n id: `predefined:${p.name || idx}`,\n kind: \"predefined\" as const,\n predefined: p,\n }))\n : [];\n const saved: OverlayOption[] = (selectableSavedFilters || []).map((s: any) => ({\n id: `saved:${s.id}`,\n kind: \"saved\" as const,\n saved: s,\n }));\n const custom: OverlayOption[] = [{\n id: \"footer:custom\",\n kind: \"custom\" as const,\n }];\n const grouping: OverlayOption[] =\n viewType === \"tree\"\n ? [{\n id: \"footer:grouping\",\n kind: \"grouping\" as const,\n }]\n : [];\n\n return [...predefined, ...fields, ...saved, ...custom, ...grouping];\n }, [inputValue, searchableFields, predefinedSearches, selectableSavedFilters, viewType]);\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n const currentValue = inputValue?.trim() || \"\";\n\n const applyFieldOption = (value: any) => {\n const trimmed = inputValue?.trim();\n if (!trimmed) return;\n const values = trimmed.split(\",\").map((v) => v.trim()).filter((v) => v !== \"\");\n const chipsToAdd = values.map(v => ({\n columnName: value.fieldName,\n value: v,\n columnDisplayName: value.displayName,\n searchField: value.searchField,\n matchMode: value.matchMode\n }));\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n setShowOverlay(false);\n };\n\n if (e.key === \"Escape\") {\n e.preventDefault();\n setShowOverlay(false);\n return;\n }\n\n if ((e.key === \"ArrowDown\" || e.key === \"ArrowUp\") && overlayOptions.length > 0) {\n e.preventDefault();\n setShowOverlay(true);\n const nextIndex =\n e.key === \"ArrowDown\"\n ? (focusedIndex + 1) % overlayOptions.length\n : (focusedIndex <= 0 ? overlayOptions.length - 1 : focusedIndex - 1);\n setFocusedIndex(nextIndex);\n return;\n }\n\n if ((e.key === \"Home\" || e.key === \"End\") && showOverlay && overlayOptions.length > 0) {\n e.preventDefault();\n setFocusedIndex(e.key === \"Home\" ? 0 : overlayOptions.length - 1);\n return;\n }\n\n if (e.key === \"Enter\") {\n if (currentValue || focusedIndex >= 0) {\n e.preventDefault();\n const activeOption = overlayOptions[focusedIndex] || (currentValue\n ? overlayOptions.find((option) => option.kind === \"field\" || option.kind === \"predefined\")\n : null);\n\n if (activeOption?.kind === \"field\") {\n applyFieldOption(activeOption.field);\n } else if (activeOption?.kind === \"predefined\") {\n handlePredefinedSearch(activeOption.predefined);\n } else if (activeOption?.kind === \"saved\") {\n applySavedFilter(activeOption.saved);\n } else if (activeOption?.kind === \"custom\") {\n openCustomFilterDialog();\n } else if (activeOption?.kind === \"grouping\") {\n openGroupingDialog();\n } else if (currentValue) {\n handleAddChip();\n setShowOverlay(false);\n }\n }\n } else if (e.key === \"Backspace\" && inputValue === \"\") {\n if (searchChips.length > 0) {\n setSearchChips((prev) => prev.slice(0, -1));\n } else if (customFilter) {\n setCustomFilter(null);\n setFilterRules(initialState);\n } else if (predefinedSearchChip) {\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n } else if (currentSavedFilterData) {\n removeSavedFilter();\n }\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1);\n }\n };\n\n useEffect(() => {\n if (!showOverlay) {\n setFocusedIndex(-1);\n }\n }, [showOverlay]);\n\n const SearchChip = () => (\n <>\n {Object.entries(groupedSearchChips).map(([column, values]) => {\n const fieldMeta = searchableFields.find(f => f.fieldName === column);\n const columnDisplayName = fieldMeta?.displayName || column;\n\n return (\n <li key={column}>\n <div className=\"search-filter-chip-type\">\n <div>{columnDisplayName}</div>\n {values.map((value, index) => (\n <React.Fragment>\n {/* displayname */}\n <span key={index} className=\"custom-chip-value\">{value}\n </span>\n {index < values.length - 1 &&\n <span className=\"custom-chip-or\">or</span>\n }\n </React.Fragment>\n ))}\n {/* button to clear filter */}\n <button type=\"button\" className=\"ml-1\" style={{ cursor: \"pointer\" }} onClick={() => handleRemoveChipGroup(column)}>\n <X size={14} />\n </button>\n </div>\n </li>\n )\n })}\n </>\n );\n\n // search related code end\n\n\n // predefinedfilter related code start\n\n const handlePredefinedSearch = (predefinedSearch: any) => {\n if (!inputValue?.trim()) return;\n\n if (!predefinedSearch?.filters) {\n console.error('Invalid predefined search: missing filters', predefinedSearch);\n return;\n }\n\n try {\n // Replace {{ search }} placeholders with actual search value\n const processedFilter = replacePlaceholders(predefinedSearch.filters, inputValue.trim());\n\n // Clear all existing filters and searches\n // setSearchChips([]);\n // setSearchFilter(null);\n // setFilterRules(initialState);\n // setCustomFilter(null)\n // removeSavedFilter();\n // Set the predefined search chip\n setPredefinedSearchChip({\n name: predefinedSearch.name,\n value: inputValue.trim()\n });\n\n setPredefinedSearchBaseFilter(processedFilter);\n\n // Apply the predefined search filter as custom filter\n // setCustomFilter(processedFilter);\n\n // Clear input and close overlay\n setInputValue(\"\");\n setShowOverlay(false);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n } catch (error) {\n console.error('Error applying predefined search:', error);\n // Optionally show user-friendly error message\n }\n };\n\n\n const removePredefinedSearchChip = () => {\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null)\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n };\n\n const PredefinedSearchChip = () => (\n <li>\n <div className=\"search-filter-chip-type\">\n <div className=\"flex items-center gap-2\">\n <strong>{predefinedSearchChip?.name}:</strong>\n <span className=\"custom-chip-value\">{predefinedSearchChip?.value}</span>\n </div>\n {/* button to clear filter */}\n <button type=\"button\" className=\"ml-1\" style={{ cursor: \"pointer\" }} onClick={removePredefinedSearchChip}>\n <X size={14} />\n </button>\n </div>\n </li>\n );\n\n // predefinedfilter related code end\n\n return (\n <>\n <div className=\"relative flex justify-center solid-custom-filter-wrapper\">\n <div className=\"solid-global-search-element\">\n <ul className=\"solid-global-search-chip-list\">\n {visibleChipItems.map((chip) => (\n <li key={chip.id}>\n <div className={`search-filter-chip-type solid-chip-pill solid-chip-tone-${chip.type}`}>\n {chip.onOpen ? (\n <button\n type=\"button\"\n className=\"solid-chip-label-button\"\n title={chip.label}\n aria-label={`Open ${chip.label}`}\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => handleManagedChipOpen(chip)}\n >\n <span className=\"custom-chip-value solid-chip-pill-label\" title={chip.label}>\n {chip.label}\n </span>\n </button>\n ) : (\n <span className=\"custom-chip-value solid-chip-pill-label\" title={chip.label}>\n {chip.label}\n </span>\n )}\n <button\n type=\"button\"\n className=\"solid-chip-pill-remove\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={chip.onRemove}\n aria-label={`Remove ${chip.label}`}\n >\n <X size={14} />\n </button>\n </div>\n </li>\n ))}\n {hiddenChipCount > 0 && (\n <li>\n <button\n type=\"button\"\n ref={chipManagerTriggerRef}\n className=\"solid-chip-manage-trigger\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => setShowChipManager((prev) => !prev)}\n >\n +{hiddenChipCount} more\n </button>\n </li>\n )}\n {/* {managedChipItems.length > 0 && hiddenChipCount === 0 && (\n <li>\n <button\n type=\"button\"\n ref={chipManagerTriggerRef}\n className=\"solid-chip-manage-trigger solid-chip-manage-trigger-secondary\"\n onMouseDown={(e) => e.preventDefault()}\n onClick={() => setShowChipManager((prev) => !prev)}\n >\n Manage\n </button>\n </li>\n )} */}\n <li ref={chipsRef} className=\"solid-global-search-input-item\">\n <div className=\"relative solid-global-search-element-wrapper\">\n <SolidInput\n ref={searchInputRef}\n className=\"solid-global-search-input\"\n value={inputValue || \"\"}\n placeholder=\"Search…\"\n role=\"combobox\"\n aria-label=\"Search and filter\"\n aria-autocomplete=\"list\"\n aria-expanded={showOverlay}\n aria-controls={showOverlay ? overlayListboxId : undefined}\n aria-activedescendant={showOverlay && focusedIndex >= 0 ? getOverlayOptionId(focusedIndex) : undefined}\n onChange={(e) => {\n setInputValue(e.target.value);\n setShowChipManager(false);\n setShowOverlay(true);\n setFocusedIndex(-1);\n }}\n onFocus={() => {\n setShowChipManager(false);\n if (inputValue?.trim()) setShowOverlay(true);\n }}\n onBlur={() => {\n // Delay so you can click buttons inside overlay\n setTimeout(() => setShowOverlay(false), 150);\n }}\n\n onKeyDown={handleKeyDown}\n />\n <SolidButton\n variant=\"outline\"\n size=\"sm\"\n onMouseDown={(e) => {\n // Preserve input focus so overlay keyboard navigation continues to work.\n e.preventDefault();\n }}\n onClick={() => {\n setShowChipManager(false);\n setShowOverlay(true);\n focusSearchInput();\n }}\n className=\"custom-filter-button solid-global-search-trigger\"\n aria-label=\"Open search options\"\n >\n <Search size={14} />\n </SolidButton>\n </div>\n </li>\n </ul>\n </div>\n\n {/* {showChipManager && managedChipItems.length > 0 && (\n <div ref={chipManagerRef} className=\"absolute z-5 solid-chip-manager-panel\">\n <div className=\"solid-chip-manager-header\">\n <div className=\"solid-chip-manager-title\">Applied chips ({managedChipItems.length})</div>\n <button type=\"button\" className=\"solid-chip-manager-clear-btn\" onClick={clearAllAppliedChips}>\n Clear all\n </button>\n </div>\n <div className=\"solid-chip-manager-body\">\n {managedChipItems.map((chip) => (\n <div key={`manage-${chip.id}`} className={`solid-chip-manager-item solid-chip-tone-${chip.type}`} onClick={() => {\n if (chip.id == \"custom-filter\" || chip.id == \"grouping-rules\") {\n if(chip.onOpen){\n chip.onOpen()\n }\n }\n }\n }>\n <span className=\"solid-chip-manager-item-label\" title={chip.label}>\n {chip.label}\n </span>\n <button\n type=\"button\"\n className=\"solid-chip-manager-item-remove\"\n onClick={chip.onRemove}\n aria-label={`Remove ${chip.label}`}\n >\n <X size={14} />\n </button>\n </div>\n ))}\n </div>\n </div>\n )} */}\n\n {showOverlay && (\n <div\n ref={overlayRef}\n id={overlayListboxId}\n role=\"listbox\"\n aria-label=\"Search and filter options\"\n className=\"solid-search-overlay-panel\"\n >\n <div className=\"solid-search-overlay-scroll\">\n {inputValue ? (\n <>\n {predefinedSearches && predefinedSearches.length > 0 && (\n <>\n <div className=\"solid-search-overlay-section solid-search-overlay-section--predefined\">\n <h6 className=\"my-1 solid-search-overlay-heading solid-search-overlay-section-title solid-search-overlay-heading-with-icon\">\n <Sparkles size={14} />\n <span>Suggested searches</span>\n <span className=\"solid-search-overlay-section-count\">{predefinedSearches.length}</span>\n </h6>\n {predefinedSearches.map((predefinedSearch: any, index: number) => {\n const optionIndex = overlayOptions.findIndex((option) => option.id === `predefined:${predefinedSearch.name || index}`);\n return (\n <SolidButton\n key={index}\n id={getOverlayOptionId(optionIndex)}\n role=\"option\"\n aria-selected={focusedIndex === optionIndex}\n variant=\"ghost\"\n size=\"sm\"\n className={`text-color solid-search-overlay-option ${focusedIndex === optionIndex ? \"solid-search-overlay-option-active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={(e) => {\n e.stopPropagation();\n handlePredefinedSearch(predefinedSearch);\n }}\n onMouseEnter={() => setFocusedIndex(optionIndex)}\n >\n <span className=\"solid-search-overlay-option-content\">\n <span className=\"solid-search-overlay-option-icon\" aria-hidden=\"true\">\n <Sparkles size={15} />\n </span>\n <span className=\"solid-search-overlay-option-copy\">\n <span className=\"solid-search-overlay-option-title\">{predefinedSearch.name}</span>\n <span className=\"solid-search-overlay-option-description\">\n Search for “{inputValue}”{predefinedSearch.description ? ` — ${predefinedSearch.description}` : \"\"}\n </span>\n </span>\n </span>\n </SolidButton>\n );\n })}\n </div>\n <hr className=\"solid-search-overlay-section-separator\" />\n </>\n )}\n <div className=\"solid-search-overlay-section solid-search-overlay-section--search\">\n <h6 className=\"my-1 solid-search-overlay-heading solid-search-overlay-section-title solid-search-overlay-heading-with-icon\">\n <Search size={13} />\n <span>Search individual fields</span>\n <span className=\"solid-search-overlay-section-count\">{searchableFields.length}</span>\n </h6>\n {searchableFields.length > 0 ? (\n searchableFields.map((value: any, index: number) => {\n const optionIndex = overlayOptions.findIndex((option) => option.id === `field:${value.fieldName}`);\n return (\n <SolidButton\n key={index}\n id={getOverlayOptionId(optionIndex)}\n role=\"option\"\n aria-selected={focusedIndex === optionIndex}\n variant=\"ghost\"\n size=\"sm\"\n className={`text-color solid-search-overlay-option ${focusedIndex === optionIndex ? \"solid-search-overlay-option-active\" : \"\"}`}\n onMouseDown={(e) => {\n e.preventDefault();\n e.stopPropagation();\n }}\n onClick={(e) => {\n e.stopPropagation();\n const currentValue = inputValue?.trim();\n if (currentValue) {\n const values = currentValue.split(\",\").map((v) => v.trim()).filter((v) => v !== \"\");\n const chipsToAdd = values.map(v => ({\n columnName: value.fieldName,\n value: v,\n columnDisplayName: value.displayName,\n searchField: value.searchField,\n matchMode: value.matchMode\n }));\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n setShowOverlay(false);\n }\n }}\n onMouseEnter={() => setFocusedIndex(optionIndex)}\n >\n <span className=\"solid-search-overlay-option-content\">\n <span className=\"solid-search-overlay-option-icon\" aria-hidden=\"true\">\n <Search size={15} />\n </span>\n <span className=\"solid-search-overlay-option-copy\">\n <span className=\"solid-search-overlay-option-title\">{toTitleCase(value.displayName.trim())}</span>\n <span className=\"solid-search-overlay-option-description\">Search for “{inputValue}”</span>\n </span>\n </span>\n </SolidButton>\n )\n })\n ) : (\n <div className=\"solid-search-overlay-no-fields\">\n <div className=\"solid-search-overlay-no-fields-icon\">\n <SearchX size={14} />\n </div>\n <div className=\"solid-search-overlay-no-fields-text\">\n No fields configured for search.\n </div>\n </div>\n )}\n </div>\n </>\n ) :\n <>\n <div className=\"solid-search-overlay-empty\">\n <div className=\"solid-search-overlay-panel-callout\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Search size={13} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <div className=\"solid-search-overlay-empty-title\">\n Start typing to search\n </div>\n <div className=\"solid-search-overlay-empty-subtitle\">\n Enter a value to see suggested searches and searchable {searchableEntityLabel} fields.\n </div>\n </div>\n </div>\n </div>\n </>\n }\n {selectableSavedFilters.length > 0 &&\n <>\n <hr className=\"solid-search-overlay-section-separator\" />\n <div className=\"solid-search-overlay-section solid-search-overlay-section--saved\">\n <div className=\"solid-search-overlay-panel-callout solid-search-overlay-panel-callout-compact items-center\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Bookmark size={13} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <p className=\"solid-search-overlay-heading solid-search-overlay-section-title\">\n <span>Saved filters</span>\n <span className=\"solid-search-overlay-section-count\">{selectableSavedFilters.length}</span>\n </p>\n </div>\n </div>\n <div className=\"solid-search-overlay-saved-list\">\n {selectableSavedFilters.map((savedfilter: any, index: number) => (\n <SavedFilterList\n key={savedfilter.id}\n savedfilter={savedfilter}\n activeSavedFilterReference={currentSavedFilterData?.systemKey || currentSavedFilterData?.id}\n activeSavedFilterReferences={allowMultipleSavedFilters ? activeSavedFilters.map((item: any) => getSavedFilterKey(item.data)) : undefined}\n applySavedFilter={applySavedFilter}\n openSavedCustomFilter={openSavedCustomFilter}\n setSavedFilterTobeDeleted={setSavedFilterTobeDeleted}\n setIsDeleteSQDialogVisible={setIsDeleteSQDialogVisible}\n isFocused={overlayOptions[focusedIndex]?.id === `saved:${savedfilter.id}`}\n onMouseEnter={() => {\n const optIndex = overlayOptions.findIndex(o => o.id === `saved:${savedfilter.id}`);\n if (optIndex !== -1) setFocusedIndex(optIndex);\n }}\n optionId={getOverlayOptionId(overlayOptions.findIndex(o => o.id === `saved:${savedfilter.id}`))}\n />\n ))}\n </div>\n </div>\n </>\n }\n </div>\n\n <div className=\"solid-search-overlay-footer\">\n <button\n type=\"button\"\n id={getOverlayOptionId(overlayOptions.findIndex((option) => option.id === \"footer:custom\"))}\n role=\"option\"\n aria-selected={overlayOptions[focusedIndex]?.id === \"footer:custom\"}\n className={`solid-search-overlay-footer-action solid-search-overlay-footer-action--custom ${overlayOptions[focusedIndex]?.id === \"footer:custom\" ? \"solid-search-overlay-option-active\" : \"\"}`}\n onMouseDown={(event) => {\n event.preventDefault();\n openCustomFilterDialog();\n }}\n onMouseEnter={() => {\n const optIndex = overlayOptions.findIndex((o) => o.id === \"footer:custom\");\n if (optIndex !== -1) setFocusedIndex(optIndex);\n }}\n >\n <div className=\"solid-search-overlay-footer-action-main\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Filter size={14} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <div className=\"solid-search-overlay-footer-title solid-search-overlay-section-title\">\n Advanced filters\n </div>\n <div className=\"solid-search-overlay-footer-subtitle\">\n Combine fields, operators and values.\n </div>\n </div>\n </div>\n </button>\n {viewType === \"tree\" && (\n <button\n type=\"button\"\n id={getOverlayOptionId(overlayOptions.findIndex((option) => option.id === \"footer:grouping\"))}\n role=\"option\"\n aria-selected={overlayOptions[focusedIndex]?.id === \"footer:grouping\"}\n className={`solid-search-overlay-footer-action solid-search-overlay-footer-action-secondary ${overlayOptions[focusedIndex]?.id === \"footer:grouping\" ? \"solid-search-overlay-option-active\" : \"\"}`}\n onMouseDown={(event) => {\n event.preventDefault();\n openGroupingDialog();\n }}\n onMouseEnter={() => {\n const optIndex = overlayOptions.findIndex((o) => o.id === \"footer:grouping\");\n if (optIndex !== -1) setFocusedIndex(optIndex);\n }}\n >\n <div className=\"solid-search-overlay-footer-action-main\">\n <div className=\"solid-search-overlay-panel-callout-icon\">\n <Plus size={14} />\n </div>\n <div className=\"solid-search-overlay-panel-callout-copy\">\n <div className=\"solid-search-overlay-footer-title solid-search-overlay-section-title\">\n Group and aggregate\n </div>\n <div className=\"solid-search-overlay-footer-subtitle\">\n Organise records and calculate aggregate values.\n </div>\n </div>\n </div>\n </button>\n )}\n </div>\n </div>\n )\n }\n <SolidDialog open={showGlobalSearchElement} onOpenChange={setShowGlobalSearchElement} className=\"solid-global-search-filter solid-filter-dialog-shell\" style={{ width: \"min(960px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Add Custom Filter</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Apply conditions on any field with operators.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n {fields.length > 0 &&\n <FilterComponent viewData={viewData} fields={fields} filterRules={filterRules} setFilterRules={setFilterRules} transformFilterRules={transformCustomFilterRules} closeDialog={() => setShowGlobalSearchElement(false)}></FilterComponent>\n }\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog open={showGroupFilterElement} onOpenChange={setShowGroupFilterElement} className=\"solid-global-search-filter solid-filter-dialog-shell solid-filter-dialog-shell-grouping\" style={{ width: \"min(560px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Grouping</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Configure grouping and aggregation.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n {groupableFields.length > 0 &&\n <GroupingComponent\n viewData={viewData}\n fields={groupableFields}\n groupingRules={groupingRules}\n setGroupingRules={setGroupingRules}\n aggregationRules={aggregationRules}\n setAggregationRules={setAggregationRules}\n applyGrouping={applyGrouping}\n closeDialog={() => setShowGroupFilterElement(false)}\n ></GroupingComponent>\n }\n </SolidDialogBody>\n </SolidDialog >\n <SolidDialog open={showSavedFilterComponent} onOpenChange={setShowSavedFilterComponent} className=\"solid-global-search-filter solid-filter-dialog-shell\" style={{ width: \"min(960px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Saved Filter</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Review and refine the saved filter conditions.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n {fields.length > 0 &&\n <FilterComponent viewData={viewData} fields={fields} filterRules={currentSavedFilterRules} setFilterRules={setCurrentSavedFilterRules} transformFilterRules={transformSavedFilterRules} closeDialog={() => setShowSavedFilterComponent(false)}></FilterComponent>\n }\n </SolidDialogBody>\n </SolidDialog>\n <SolidDialog open={showSaveFilterPopup} onOpenChange={setShowSaveFilterPopup} className=\"solid-custom-filter-dialog solid-save-filter-dialog\" style={{ width: \"min(420px, calc(100vw - 2rem))\" }}>\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Save Custom Filter</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">Name this filter so you can reuse it later.</SolidDialogDescription>\n </div>\n <SolidDialogClose className=\"solid-filter-dialog-close\" />\n </SolidDialogHeader>\n <SolidDialogSeparator className=\"solid-filter-dialog-sep\" />\n <SolidDialogBody className=\"solid-filter-dialog-body\">\n <SolidSaveCustomFilterForm currentSavedFilterData={currentSavedFilterData} handleSaveFilter={handleSaveFilter} closeDialog={() => setShowSaveFilterPopup(false)}></SolidSaveCustomFilterForm>\n </SolidDialogBody>\n </SolidDialog>\n\n <SolidDialog\n open={isDeleteSQDialogVisible}\n onOpenChange={(open) => {\n setIsDeleteSQDialogVisible(open);\n if (!open) {\n setSavedFilterTobeDeleted(null);\n }\n }}\n className=\"solid-confirm-dialog\"\n style={{ width: \"min(420px, calc(100vw - 2rem))\" }}\n >\n <SolidDialogHeader>\n <div>\n <SolidDialogTitle>Confirm Delete</SolidDialogTitle>\n <SolidDialogDescription>Are you sure you want to delete the {savedFilterTobeDeleted?.name} saved query?</SolidDialogDescription>\n </div>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogFooter className=\"justify-center\">\n <SolidButton variant=\"destructive\" size=\"sm\" onClick={deleteSavedFilter}>\n <Check size={14} />\n Yes\n </SolidButton>\n <SolidButton\n variant=\"outline\"\n size=\"sm\"\n onClick={() => {\n setIsDeleteSQDialogVisible(false);\n setSavedFilterTobeDeleted(null);\n }}\n >\n <X size={14} />\n No\n </SolidButton>\n </SolidDialogFooter>\n </SolidDialog>\n </div >\n </>\n )\n});\n"]}
|