@solidxai/core-ui 0.1.7-beta.8 → 0.1.7-beta.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (122) hide show
  1. package/dist/components/common/GeneralSettings.d.ts.map +1 -1
  2. package/dist/components/common/GeneralSettings.js +68 -36
  3. package/dist/components/common/GeneralSettings.js.map +1 -1
  4. package/dist/components/common/GeneralSettings.tsx +81 -42
  5. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts +27 -5
  6. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts.map +1 -1
  7. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +25 -37
  8. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
  9. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +131 -52
  10. package/dist/components/core/chatter/SolidChatter.d.ts +2 -1
  11. package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
  12. package/dist/components/core/chatter/SolidChatter.js +2 -2
  13. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  14. package/dist/components/core/chatter/SolidChatter.tsx +2 -1
  15. package/dist/components/core/chatter/SolidChatterHeader.d.ts +1 -0
  16. package/dist/components/core/chatter/SolidChatterHeader.d.ts.map +1 -1
  17. package/dist/components/core/chatter/SolidChatterHeader.js +3 -3
  18. package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
  19. package/dist/components/core/chatter/SolidChatterHeader.tsx +4 -3
  20. package/dist/components/core/chatter/SolidMessageComposer.d.ts +2 -1
  21. package/dist/components/core/chatter/SolidMessageComposer.d.ts.map +1 -1
  22. package/dist/components/core/chatter/SolidMessageComposer.js +3 -1
  23. package/dist/components/core/chatter/SolidMessageComposer.js.map +1 -1
  24. package/dist/components/core/chatter/SolidMessageComposer.tsx +3 -1
  25. package/dist/components/core/common/SolidViewLayoutManager.d.ts +17 -0
  26. package/dist/components/core/common/SolidViewLayoutManager.d.ts.map +1 -1
  27. package/dist/components/core/common/SolidViewLayoutManager.js +58 -1
  28. package/dist/components/core/common/SolidViewLayoutManager.js.map +1 -1
  29. package/dist/components/core/common/SolidViewLayoutManager.ts +43 -2
  30. package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.d.ts +3 -0
  31. package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.d.ts.map +1 -0
  32. package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.js +92 -0
  33. package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.js.map +1 -0
  34. package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.tsx +68 -0
  35. package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts +3 -0
  36. package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts.map +1 -0
  37. package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.js +87 -0
  38. package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.js.map +1 -0
  39. package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.tsx +70 -0
  40. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.d.ts +3 -0
  41. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.d.ts.map +1 -0
  42. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.js +111 -0
  43. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.js.map +1 -0
  44. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.tsx +122 -0
  45. package/dist/components/core/extension/solid-core/mqMessage/form/SolidMqMessageStageFormViewWIdget.d.ts +3 -0
  46. package/dist/components/core/extension/solid-core/mqMessage/form/SolidMqMessageStageFormViewWIdget.d.ts.map +1 -0
  47. package/dist/components/core/extension/solid-core/mqMessage/form/SolidMqMessageStageFormViewWIdget.js +10 -0
  48. package/dist/components/core/extension/solid-core/mqMessage/form/SolidMqMessageStageFormViewWIdget.js.map +1 -0
  49. package/dist/components/core/extension/solid-core/mqMessage/form/SolidMqMessageStageFormViewWIdget.tsx +21 -0
  50. package/dist/components/core/extension/solid-core/mqMessage/form/mqMessageOnFormLoadHandler.d.ts +8 -0
  51. package/dist/components/core/extension/solid-core/mqMessage/form/mqMessageOnFormLoadHandler.d.ts.map +1 -0
  52. package/dist/components/core/extension/solid-core/mqMessage/form/mqMessageOnFormLoadHandler.js +62 -0
  53. package/dist/components/core/extension/solid-core/mqMessage/form/mqMessageOnFormLoadHandler.js.map +1 -0
  54. package/dist/components/core/extension/solid-core/mqMessage/form/mqMessageOnFormLoadHandler.tsx +27 -0
  55. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessageStageListViewWidget.d.ts +3 -0
  56. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessageStageListViewWidget.d.ts.map +1 -0
  57. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessageStageListViewWidget.js +8 -0
  58. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessageStageListViewWidget.js.map +1 -0
  59. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessageStageListViewWidget.tsx +15 -0
  60. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.d.ts +3 -0
  61. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.d.ts.map +1 -0
  62. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.js +158 -0
  63. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.js.map +1 -0
  64. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.tsx +185 -0
  65. package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.d.ts +17 -0
  66. package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.d.ts.map +1 -0
  67. package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.js +52 -0
  68. package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.js.map +1 -0
  69. package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.tsx +83 -0
  70. package/dist/components/core/locales/SolidChatterLocaleTabView.d.ts.map +1 -1
  71. package/dist/components/core/locales/SolidChatterLocaleTabView.js +7 -5
  72. package/dist/components/core/locales/SolidChatterLocaleTabView.js.map +1 -1
  73. package/dist/components/core/locales/SolidChatterLocaleTabView.tsx +3 -0
  74. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.css +38 -0
  75. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.d.ts +1 -0
  76. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.d.ts.map +1 -1
  77. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.js +4 -3
  78. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.js.map +1 -1
  79. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.tsx +13 -3
  80. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.d.ts +2 -1
  81. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.d.ts.map +1 -1
  82. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.js +6 -5
  83. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.js.map +1 -1
  84. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.tsx +6 -7
  85. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  86. package/dist/components/core/users/CreateUser.js +89 -35
  87. package/dist/components/core/users/CreateUser.js.map +1 -1
  88. package/dist/components/core/users/CreateUser.tsx +291 -165
  89. package/dist/components/layout/SolidAiStudioLayout.d.ts.map +1 -1
  90. package/dist/components/layout/SolidAiStudioLayout.js +123 -8
  91. package/dist/components/layout/SolidAiStudioLayout.js.map +1 -1
  92. package/dist/components/layout/SolidAiStudioLayout.tsx +70 -6
  93. package/dist/helpers/registry.d.ts.map +1 -1
  94. package/dist/helpers/registry.js +10 -6
  95. package/dist/helpers/registry.js.map +1 -1
  96. package/dist/helpers/registry.ts +11 -7
  97. package/dist/index.d.ts +3 -0
  98. package/dist/index.d.ts.map +1 -1
  99. package/dist/index.js +3 -0
  100. package/dist/index.js.map +1 -1
  101. package/dist/index.ts +11 -0
  102. package/dist/redux/api/apiKeyApi.d.ts +8 -1
  103. package/dist/redux/api/apiKeyApi.d.ts.map +1 -1
  104. package/dist/redux/api/apiKeyApi.js +12 -1
  105. package/dist/redux/api/apiKeyApi.js.map +1 -1
  106. package/dist/redux/api/apiKeyApi.ts +9 -0
  107. package/dist/redux/store/defaultStoreConfig.d.ts +16 -1
  108. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  109. package/dist/redux/store/defaultStoreConfig.js +3 -1
  110. package/dist/redux/store/defaultStoreConfig.js.map +1 -1
  111. package/dist/redux/store/defaultStoreConfig.ts +3 -1
  112. package/dist/routes/guards/GuestGuard.d.ts +2 -0
  113. package/dist/routes/guards/GuestGuard.d.ts.map +1 -0
  114. package/dist/routes/guards/GuestGuard.js +23 -0
  115. package/dist/routes/guards/GuestGuard.js.map +1 -0
  116. package/dist/routes/guards/GuestGuard.tsx +24 -0
  117. package/dist/routes/solidRoutes.d.ts.map +1 -1
  118. package/dist/routes/solidRoutes.js +2 -1
  119. package/dist/routes/solidRoutes.js.map +1 -1
  120. package/dist/routes/solidRoutes.tsx +2 -1
  121. package/dist/types/solid-core.d.ts +1 -0
  122. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SolidChatter.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatter.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport React, { useState, useEffect } from 'react'\nimport { SolidChatterHeader } from './SolidChatterHeader'\nimport { SolidChatterDateDivider } from './SolidChatterDateDivider'\nimport { SolidChatterMessageBox } from './SolidChatterMessageBox'\nimport { useLazyGetchatterMessageQuery } from '../../../redux/api/solidChatterMessageApi'\nimport qs from \"qs\";\nimport { ERROR_MESSAGES } from '../../../constants/error-messages'\nimport { permissionExpression } from '../../../helpers/permissions'\nimport { SolidButton, SolidMessage } from '../../shad-cn-ui'\nimport { Inbox, Loader2 } from 'lucide-react'\n\ninterface FilterState {\n name: string;\n startDate: Date | null;\n endDate: Date | null;\n}\n\nexport const SolidChatter = ({ modelSingularName, id, refreshChatterMessage, setRefreshChatterMessage, actionsAllowed = [], title }: { modelSingularName: any, id: any, refreshChatterMessage: boolean, setRefreshChatterMessage: (value: boolean) => void, actionsAllowed?: string[], title?: string }) => {\n const [activeTab, setActiveTab] = useState<'email-message' | 'log' | null>('email-message');\n const [visibleBox, setVisibleBox] = useState<'email-message' | 'log' | null>(null);\n const [messages, setMessages] = useState<any[]>([]);\n const [limit, setLimit] = useState<number>(25);\n const [totalRecords, setTotalRecords] = useState<number>(0);\n const [filters, setFilters] = useState<FilterState>({\n name: '',\n startDate: null,\n endDate: null\n });\n\n const [getchatterMessage, { isLoading: isChatterLoading }] = useLazyGetchatterMessageQuery();\n\n useEffect(() => {\n if (refreshChatterMessage) {\n if (id !== 'new') {\n fetchData();\n setRefreshChatterMessage(false);\n }\n }\n }, [refreshChatterMessage]);\n\n useEffect(() => {\n if (id !== 'new') {\n fetchData();\n }\n }, [filters, limit]);\n\n const handleTabClick = (tab: 'email-message' | 'log') => {\n setActiveTab(tab);\n setVisibleBox(prev => (prev === tab ? null : tab));\n }\n\n const formatDate = (dateString: string) => {\n const date = new Date(dateString);\n const today = new Date();\n const yesterday = new Date(today);\n yesterday.setDate(yesterday.getDate() - 1);\n\n if (date.toDateString() === today.toDateString()) {\n return 'Today';\n } else if (date.toDateString() === yesterday.toDateString()) {\n return 'Yesterday';\n } else {\n return dateString;\n }\n };\n\n const fetchData = async () => {\n try {\n const queryData: any = {\n populate: ['user', 'chatterMessageDetails'],\n limit: limit\n };\n\n if (filters.name) {\n queryData.filters = queryData.filters || {};\n queryData.filters['user'] = { fullName: { $containsi: filters.name }};\n }\n if (filters.startDate && filters.endDate) {\n queryData.filters = queryData.filters || {};\n queryData.filters.createdAt = {\n $between: [filters.startDate.toISOString(), filters.endDate.toISOString()]\n };\n } else if (filters.startDate) {\n queryData.filters = queryData.filters || {};\n queryData.filters.createdAt = { $gte: filters.startDate.toISOString() };\n } else if (filters.endDate) {\n queryData.filters = queryData.filters || {};\n queryData.filters.createdAt = { $lte: filters.endDate.toISOString() };\n }\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n const response = await getchatterMessage({\n entityId: id,\n entityName: modelSingularName,\n qs: queryString\n }).unwrap();\n const processedMessages = response.data.records.map((msg: any) => {\n if (msg.messageType === 'custom') {\n // Custom message\n return {\n id: msg.id,\n user: msg.user?.fullName || \"System\",\n messageType: \"custom\",\n message: msg.messageBody,\n time: new Date(msg.createdAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }),\n createdAt: msg.createdAt,\n date: formatDate(msg.createdAt),\n media: msg._media,\n messageSubType: msg.messageSubType,\n modelDisplayName: msg.modelDisplayName,\n modelUserKey: msg.modelUserKey\n };\n } else {\n // Audit message\n const auditRecord = msg.chatterMessageDetails?.map((detail: any) => ({\n field: detail.fieldName,\n fieldDisplayName: detail.fieldDisplayName,\n fieldType: detail.fieldType,\n previous: detail.oldValue,\n current: detail.newValue,\n previousDisplay: detail.oldValueDisplay,\n currentDisplay: detail.newValueDisplay,\n })) || [];\n\n return {\n id: msg.id,\n user: msg.user?.fullName || \"System\",\n messageType: \"audit\",\n time: new Date(msg.createdAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }),\n auditRecord: auditRecord,\n createdAt: msg.createdAt,\n date: formatDate(msg.createdAt),\n messageSubType: msg.messageSubType,\n modelDisplayName: msg.modelDisplayName,\n modelUserKey: msg.modelUserKey,\n message: msg.messageBody,\n };\n }\n });\n setMessages(processedMessages);\n setTotalRecords(response?.data?.meta?.totalRecords || 0);\n } catch (error) {\n console.error(ERROR_MESSAGES.FETCHING_MESSAGE, error);\n }\n }\n\n const handleFilterChange = (newFilters: FilterState) => {\n setFilters({\n name: newFilters.name,\n startDate: newFilters.startDate,\n endDate: newFilters.endDate\n });\n setLimit(25);\n };\n\n const handleLoadMore = () => {\n setLimit(prevLimit => prevLimit + 25);\n };\n\n const canViewMessages = actionsAllowed.includes(`${permissionExpression('chatterMessage', 'findMany')}`);\n\n const renderLoadingState = () => (\n <div className='flex flex-column align-items-center justify-content-center gap-2 h-full text-center text-color-secondary'>\n <Loader2 size={20} className='text-primary animate-spin' />\n <span className='text-sm'>Loading recent activity…</span>\n </div>\n );\n\n const renderEmptyState = () => {\n const isLogComposerOpen = visibleBox === 'log';\n return (\n <div className='flex align-items-center justify-content-center h-full'>\n <div className='flex flex-column align-items-center gap-2 text-center text-color-secondary px-3'>\n <div className='p-2 border-round bg-primary-reverse text-primary'>\n <Inbox size={20} />\n </div>\n <p className='m-0 text-base font-medium text-color'>No activity yet</p>\n <p className='m-0 text-sm'>Log your first internal note or send a message to get things started.</p>\n <SolidButton size='sm' variant='outline' onClick={() => handleTabClick('log')}>\n {isLogComposerOpen ? 'Cancel' : 'Log a note'}\n </SolidButton>\n </div>\n </div>\n );\n };\n\n const permissionError = () => (\n <div className='p-3'>\n <SolidMessage severity='warn' text=\"You do not have permission to view these messages.\" className='justify-content-start' />\n </div>\n );\n\n const renderMessages = () => (\n <div className='flex flex-column gap-3'>\n {messages.map((message, index) => {\n const showDateDivider = index === 0 || message.date !== messages[index - 1].date;\n return (\n <div key={message.id}>\n {showDateDivider && <SolidChatterDateDivider date={message.date} />}\n <SolidChatterMessageBox\n user={message.user}\n messageType={message.messageType}\n message={message.message}\n time={message.time}\n auditRecord={message.auditRecord}\n media={message.media}\n messageSubType={message.messageSubType}\n modelDisplayName={message.modelDisplayName}\n modelUserKey={message.modelUserKey}\n />\n </div>\n );\n })}\n {totalRecords > messages.length && (\n <div className='flex justify-content-center'>\n <SolidButton\n type='button'\n size='sm'\n variant='outline'\n onClick={handleLoadMore}\n >\n Load more\n </SolidButton>\n </div>\n )}\n </div>\n );\n\n return (\n <div className='h-full'>\n <SolidChatterHeader\n id={id}\n refetch={fetchData}\n modelSingularName={modelSingularName}\n activeTab={activeTab}\n handleTabClick={handleTabClick}\n visibleBox={visibleBox}\n onFilterChange={handleFilterChange}\n onComposerCancel={() => setVisibleBox(null)}\n title={title}\n />\n <div className='solid-chatter-body' style={{\n height:\n visibleBox === 'email-message'\n ? 'calc(100vh - 196px)'\n : visibleBox === 'log'\n ? 'calc(100vh - 350px)'\n : 'calc(100vh - 170px)',\n }}>\n {isChatterLoading\n ? renderLoadingState()\n : !canViewMessages\n ? permissionError()\n : messages.length === 0\n ? renderEmptyState()\n : renderMessages()\n }\n </div>\n </div>\n )\n}\n"]}
1
+ {"version":3,"file":"SolidChatter.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatter.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport React, { useState, useEffect } from 'react'\nimport { SolidChatterHeader } from './SolidChatterHeader'\nimport { SolidChatterDateDivider } from './SolidChatterDateDivider'\nimport { SolidChatterMessageBox } from './SolidChatterMessageBox'\nimport { useLazyGetchatterMessageQuery } from '../../../redux/api/solidChatterMessageApi'\nimport qs from \"qs\";\nimport { ERROR_MESSAGES } from '../../../constants/error-messages'\nimport { permissionExpression } from '../../../helpers/permissions'\nimport { SolidButton, SolidMessage } from '../../shad-cn-ui'\nimport { Inbox, Loader2 } from 'lucide-react'\n\ninterface FilterState {\n name: string;\n startDate: Date | null;\n endDate: Date | null;\n}\n\nexport const SolidChatter = ({ modelSingularName, id, refreshChatterMessage, setRefreshChatterMessage, actionsAllowed = [], title, modelUserKey }: { modelSingularName: any, id: any, refreshChatterMessage: boolean, setRefreshChatterMessage: (value: boolean) => void, actionsAllowed?: string[], title?: string, modelUserKey?: string }) => {\n const [activeTab, setActiveTab] = useState<'email-message' | 'log' | null>('email-message');\n const [visibleBox, setVisibleBox] = useState<'email-message' | 'log' | null>(null);\n const [messages, setMessages] = useState<any[]>([]);\n const [limit, setLimit] = useState<number>(25);\n const [totalRecords, setTotalRecords] = useState<number>(0);\n const [filters, setFilters] = useState<FilterState>({\n name: '',\n startDate: null,\n endDate: null\n });\n\n const [getchatterMessage, { isLoading: isChatterLoading }] = useLazyGetchatterMessageQuery();\n\n useEffect(() => {\n if (refreshChatterMessage) {\n if (id !== 'new') {\n fetchData();\n setRefreshChatterMessage(false);\n }\n }\n }, [refreshChatterMessage]);\n\n useEffect(() => {\n if (id !== 'new') {\n fetchData();\n }\n }, [filters, limit]);\n\n const handleTabClick = (tab: 'email-message' | 'log') => {\n setActiveTab(tab);\n setVisibleBox(prev => (prev === tab ? null : tab));\n }\n\n const formatDate = (dateString: string) => {\n const date = new Date(dateString);\n const today = new Date();\n const yesterday = new Date(today);\n yesterday.setDate(yesterday.getDate() - 1);\n\n if (date.toDateString() === today.toDateString()) {\n return 'Today';\n } else if (date.toDateString() === yesterday.toDateString()) {\n return 'Yesterday';\n } else {\n return dateString;\n }\n };\n\n const fetchData = async () => {\n try {\n const queryData: any = {\n populate: ['user', 'chatterMessageDetails'],\n limit: limit\n };\n\n if (filters.name) {\n queryData.filters = queryData.filters || {};\n queryData.filters['user'] = { fullName: { $containsi: filters.name }};\n }\n if (filters.startDate && filters.endDate) {\n queryData.filters = queryData.filters || {};\n queryData.filters.createdAt = {\n $between: [filters.startDate.toISOString(), filters.endDate.toISOString()]\n };\n } else if (filters.startDate) {\n queryData.filters = queryData.filters || {};\n queryData.filters.createdAt = { $gte: filters.startDate.toISOString() };\n } else if (filters.endDate) {\n queryData.filters = queryData.filters || {};\n queryData.filters.createdAt = { $lte: filters.endDate.toISOString() };\n }\n\n const queryString = qs.stringify(queryData, {\n encodeValuesOnly: true,\n });\n const response = await getchatterMessage({\n entityId: id,\n entityName: modelSingularName,\n qs: queryString\n }).unwrap();\n const processedMessages = response.data.records.map((msg: any) => {\n if (msg.messageType === 'custom') {\n // Custom message\n return {\n id: msg.id,\n user: msg.user?.fullName || \"System\",\n messageType: \"custom\",\n message: msg.messageBody,\n time: new Date(msg.createdAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }),\n createdAt: msg.createdAt,\n date: formatDate(msg.createdAt),\n media: msg._media,\n messageSubType: msg.messageSubType,\n modelDisplayName: msg.modelDisplayName,\n modelUserKey: msg.modelUserKey\n };\n } else {\n // Audit message\n const auditRecord = msg.chatterMessageDetails?.map((detail: any) => ({\n field: detail.fieldName,\n fieldDisplayName: detail.fieldDisplayName,\n fieldType: detail.fieldType,\n previous: detail.oldValue,\n current: detail.newValue,\n previousDisplay: detail.oldValueDisplay,\n currentDisplay: detail.newValueDisplay,\n })) || [];\n\n return {\n id: msg.id,\n user: msg.user?.fullName || \"System\",\n messageType: \"audit\",\n time: new Date(msg.createdAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }),\n auditRecord: auditRecord,\n createdAt: msg.createdAt,\n date: formatDate(msg.createdAt),\n messageSubType: msg.messageSubType,\n modelDisplayName: msg.modelDisplayName,\n modelUserKey: msg.modelUserKey,\n message: msg.messageBody,\n };\n }\n });\n setMessages(processedMessages);\n setTotalRecords(response?.data?.meta?.totalRecords || 0);\n } catch (error) {\n console.error(ERROR_MESSAGES.FETCHING_MESSAGE, error);\n }\n }\n\n const handleFilterChange = (newFilters: FilterState) => {\n setFilters({\n name: newFilters.name,\n startDate: newFilters.startDate,\n endDate: newFilters.endDate\n });\n setLimit(25);\n };\n\n const handleLoadMore = () => {\n setLimit(prevLimit => prevLimit + 25);\n };\n\n const canViewMessages = actionsAllowed.includes(`${permissionExpression('chatterMessage', 'findMany')}`);\n\n const renderLoadingState = () => (\n <div className='flex flex-column align-items-center justify-content-center gap-2 h-full text-center text-color-secondary'>\n <Loader2 size={20} className='text-primary animate-spin' />\n <span className='text-sm'>Loading recent activity…</span>\n </div>\n );\n\n const renderEmptyState = () => {\n const isLogComposerOpen = visibleBox === 'log';\n return (\n <div className='flex align-items-center justify-content-center h-full'>\n <div className='flex flex-column align-items-center gap-2 text-center text-color-secondary px-3'>\n <div className='p-2 border-round bg-primary-reverse text-primary'>\n <Inbox size={20} />\n </div>\n <p className='m-0 text-base font-medium text-color'>No activity yet</p>\n <p className='m-0 text-sm'>Log your first internal note or send a message to get things started.</p>\n <SolidButton size='sm' variant='outline' onClick={() => handleTabClick('log')}>\n {isLogComposerOpen ? 'Cancel' : 'Log a note'}\n </SolidButton>\n </div>\n </div>\n );\n };\n\n const permissionError = () => (\n <div className='p-3'>\n <SolidMessage severity='warn' text=\"You do not have permission to view these messages.\" className='justify-content-start' />\n </div>\n );\n\n const renderMessages = () => (\n <div className='flex flex-column gap-3'>\n {messages.map((message, index) => {\n const showDateDivider = index === 0 || message.date !== messages[index - 1].date;\n return (\n <div key={message.id}>\n {showDateDivider && <SolidChatterDateDivider date={message.date} />}\n <SolidChatterMessageBox\n user={message.user}\n messageType={message.messageType}\n message={message.message}\n time={message.time}\n auditRecord={message.auditRecord}\n media={message.media}\n messageSubType={message.messageSubType}\n modelDisplayName={message.modelDisplayName}\n modelUserKey={message.modelUserKey}\n />\n </div>\n );\n })}\n {totalRecords > messages.length && (\n <div className='flex justify-content-center'>\n <SolidButton\n type='button'\n size='sm'\n variant='outline'\n onClick={handleLoadMore}\n >\n Load more\n </SolidButton>\n </div>\n )}\n </div>\n );\n\n return (\n <div className='h-full'>\n <SolidChatterHeader\n id={id}\n refetch={fetchData}\n modelSingularName={modelSingularName}\n activeTab={activeTab}\n handleTabClick={handleTabClick}\n visibleBox={visibleBox}\n onFilterChange={handleFilterChange}\n onComposerCancel={() => setVisibleBox(null)}\n title={title}\n modelUserKey={modelUserKey}\n />\n <div className='solid-chatter-body' style={{\n height:\n visibleBox === 'email-message'\n ? 'calc(100vh - 196px)'\n : visibleBox === 'log'\n ? 'calc(100vh - 350px)'\n : 'calc(100vh - 170px)',\n }}>\n {isChatterLoading\n ? renderLoadingState()\n : !canViewMessages\n ? permissionError()\n : messages.length === 0\n ? renderEmptyState()\n : renderMessages()\n }\n </div>\n </div>\n )\n}\n"]}
@@ -16,7 +16,7 @@ interface FilterState {
16
16
  endDate: Date | null;
17
17
  }
18
18
 
19
- export const SolidChatter = ({ modelSingularName, id, refreshChatterMessage, setRefreshChatterMessage, actionsAllowed = [], title }: { modelSingularName: any, id: any, refreshChatterMessage: boolean, setRefreshChatterMessage: (value: boolean) => void, actionsAllowed?: string[], title?: string }) => {
19
+ export const SolidChatter = ({ modelSingularName, id, refreshChatterMessage, setRefreshChatterMessage, actionsAllowed = [], title, modelUserKey }: { modelSingularName: any, id: any, refreshChatterMessage: boolean, setRefreshChatterMessage: (value: boolean) => void, actionsAllowed?: string[], title?: string, modelUserKey?: string }) => {
20
20
  const [activeTab, setActiveTab] = useState<'email-message' | 'log' | null>('email-message');
21
21
  const [visibleBox, setVisibleBox] = useState<'email-message' | 'log' | null>(null);
22
22
  const [messages, setMessages] = useState<any[]>([]);
@@ -241,6 +241,7 @@ export const SolidChatter = ({ modelSingularName, id, refreshChatterMessage, set
241
241
  onFilterChange={handleFilterChange}
242
242
  onComposerCancel={() => setVisibleBox(null)}
243
243
  title={title}
244
+ modelUserKey={modelUserKey}
244
245
  />
245
246
  <div className='solid-chatter-body' style={{
246
247
  height:
@@ -13,6 +13,7 @@ interface Props {
13
13
  onFilterChange?: (filters: FilterState) => void;
14
14
  onComposerCancel?: () => void;
15
15
  title?: string;
16
+ modelUserKey?: string;
16
17
  }
17
18
  export declare const SolidChatterHeader: (props: Props) => import("react/jsx-runtime").JSX.Element;
18
19
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"SolidChatterHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatterHeader.tsx"],"names":[],"mappings":"AAkBA,UAAU,WAAW;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB;AAED,UAAU,KAAK;IACX,SAAS,EAAE,GAAG,CAAC;IACf,cAAc,EAAE,GAAG,CAAC;IACpB,UAAU,EAAE,GAAG,CAAC;IAChB,iBAAiB,EAAE,GAAG,CAAC;IACvB,OAAO,EAAE,GAAG,CAAC;IACb,EAAE,EAAE,GAAG,CAAC;IACR,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAChD,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,kBAAkB,UAAW,KAAK,4CA0N9C,CAAA"}
1
+ {"version":3,"file":"SolidChatterHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatterHeader.tsx"],"names":[],"mappings":"AAkBA,UAAU,WAAW;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB;AAED,UAAU,KAAK;IACX,SAAS,EAAE,GAAG,CAAC;IACf,cAAc,EAAE,GAAG,CAAC;IACpB,UAAU,EAAE,GAAG,CAAC;IAChB,iBAAiB,EAAE,GAAG,CAAC;IACvB,OAAO,EAAE,GAAG,CAAC;IACb,EAAE,EAAE,GAAG,CAAC;IACR,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAC;IAChD,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,kBAAkB,UAAW,KAAK,4CA0N9C,CAAA"}
@@ -55,7 +55,7 @@ import { SolidButton, SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialo
55
55
  import { Filter, RefreshCw, Edit } from 'lucide-react';
56
56
  export var SolidChatterHeader = function (props) {
57
57
  var _a, _b;
58
- var activeTab = props.activeTab, visibleBox = props.visibleBox, handleTabClick = props.handleTabClick, modelSingularName = props.modelSingularName, refetch = props.refetch, id = props.id, onFilterChange = props.onFilterChange, onComposerCancel = props.onComposerCancel, title = props.title;
58
+ var activeTab = props.activeTab, visibleBox = props.visibleBox, handleTabClick = props.handleTabClick, modelSingularName = props.modelSingularName, refetch = props.refetch, id = props.id, onFilterChange = props.onFilterChange, onComposerCancel = props.onComposerCancel, title = props.title, modelUserKey = props.modelUserKey;
59
59
  var _c = useState(false), showFilterDialog = _c[0], setShowFilterDialog = _c[1];
60
60
  var _d = useState({
61
61
  name: '',
@@ -135,7 +135,7 @@ export var SolidChatterHeader = function (props) {
135
135
  };
136
136
  return (_jsxs("div", { className: "".concat(styles.chatterTitle, " ").concat(title ? styles.chatterTitleWithLabel : '', " solid-list-toolbar"), children: [_jsxs("div", { className: 'flex justify-content-between align-items-center solid-list-toolbar-row', children: [_jsx("p", { className: "m-0 view-title solid-text-wrapper form-wrapper-title", children: title || '' }), _jsxs("div", { className: 'flex align-items-center solid-header-buttons-wrapper', children: [_jsx(SolidButton, { size: "sm", type: "button", "aria-label": "Log Note", variant: hasActiveFilters ? 'primary' : 'outline', className: "solid-icon-button", style: { gap: 0 }, leftIcon: _jsx(Edit, { size: 14 }), onClick: function () { return handleTabClick('log'); } }), _jsx(SolidButton, { size: "sm", type: "button", "aria-label": "Filter", variant: hasActiveFilters ? 'primary' : 'outline', className: "solid-icon-button", style: { gap: 0 }, leftIcon: _jsx(Filter, { size: 14 }), onClick: handleFilterClick }), _jsx(SolidButton, { size: "sm", type: "button", "aria-label": "Refresh", variant: "outline", className: "solid-icon-button", style: { gap: 0 }, leftIcon: _jsx(RefreshCw, { size: 14 }), onClick: refetch })] })] }), visibleBox &&
137
137
  _jsxs("div", { className: 'mt-2', children: [visibleBox === "email-message" &&
138
- _jsx(SolidMessageComposer, { id: id, refetch: refetch, modelSingularName: modelSingularName, type: "email", onCancel: onComposerCancel }), visibleBox === "log" &&
139
- _jsx(SolidMessageComposer, { id: id, refetch: refetch, modelSingularName: modelSingularName, onCancel: onComposerCancel })] }), _jsxs(SolidDialog, { open: showFilterDialog, onOpenChange: setShowFilterDialog, className: 'solid-filter-dialog-shell solid-chatter-filter-main', style: { width: 500 }, showHeader: false, children: [_jsxs(SolidDialogHeader, { className: "solid-filter-dialog-head", children: [_jsx("div", { children: _jsx(SolidDialogTitle, { className: "solid-filter-dialog-title m-0", children: "Filter Messages" }) }), _jsx(SolidDialogClose, { className: "solid-filter-dialog-close" })] }), _jsx(SolidDialogSeparator, { className: "solid-filter-dialog-sep" }), _jsx(SolidDialogBody, { className: "solid-filter-dialog-body", children: _jsxs("div", { className: "flex flex-column gap-3", children: [_jsxs("div", { className: "flex flex-column gap-2", children: [_jsx("label", { htmlFor: "fullName", className: "form-field-label", children: "User" }), _jsx(SolidAutocomplete, { id: "fullName", value: filters.name, suggestions: suggestions, field: "fullName", completeMethod: searchUsers, onChange: function (e) { return handleUserChange(e.value); }, placeholder: "Filter by user", className: "w-full", inputClassName: "w-full" })] }), _jsxs("div", { className: "flex flex-column gap-2", children: [_jsx("label", { htmlFor: "dateRange", className: "form-field-label", children: "Date Range" }), _jsxs("div", { className: "flex gap-2 flex-column md:flex-row", children: [_jsx("div", { className: "flex-1", children: _jsx(SolidDatePicker, { selected: (_a = filters.startDate) !== null && _a !== void 0 ? _a : undefined, onChange: function (date) { return setFilters(function (prev) { return (__assign(__assign({}, prev), { startDate: date !== null && date !== void 0 ? date : null })); }); }, placeholderText: "Start Date", className: "w-full", wrapperClassName: "w-full", inputClassName: "w-full" }) }), _jsx("div", { className: "flex-1", children: _jsx(SolidDatePicker, { selected: (_b = filters.endDate) !== null && _b !== void 0 ? _b : undefined, onChange: function (date) { return setFilters(function (prev) { return (__assign(__assign({}, prev), { endDate: date !== null && date !== void 0 ? date : null })); }); }, placeholderText: "End Date", className: "w-full", wrapperClassName: "w-full", inputClassName: "w-full" }) })] })] })] }) }), _jsxs(SolidDialogFooter, { children: [_jsx(SolidButton, { label: "Clear", size: "sm", variant: "outline", onClick: handleClearFilters }), _jsx(SolidButton, { label: "Apply", size: "sm", className: "solid-purple-button", onClick: handleApplyFilters })] })] })] }));
138
+ _jsx(SolidMessageComposer, { id: id, refetch: refetch, modelSingularName: modelSingularName, type: "email", onCancel: onComposerCancel, modelUserKey: modelUserKey }), visibleBox === "log" &&
139
+ _jsx(SolidMessageComposer, { id: id, refetch: refetch, modelSingularName: modelSingularName, onCancel: onComposerCancel, modelUserKey: modelUserKey })] }), _jsxs(SolidDialog, { open: showFilterDialog, onOpenChange: setShowFilterDialog, className: 'solid-filter-dialog-shell solid-chatter-filter-main', style: { width: 500 }, showHeader: false, children: [_jsxs(SolidDialogHeader, { className: "solid-filter-dialog-head", children: [_jsx("div", { children: _jsx(SolidDialogTitle, { className: "solid-filter-dialog-title m-0", children: "Filter Messages" }) }), _jsx(SolidDialogClose, { className: "solid-filter-dialog-close" })] }), _jsx(SolidDialogSeparator, { className: "solid-filter-dialog-sep" }), _jsx(SolidDialogBody, { className: "solid-filter-dialog-body", children: _jsxs("div", { className: "flex flex-column gap-3", children: [_jsxs("div", { className: "flex flex-column gap-2", children: [_jsx("label", { htmlFor: "fullName", className: "form-field-label", children: "User" }), _jsx(SolidAutocomplete, { id: "fullName", value: filters.name, suggestions: suggestions, field: "fullName", completeMethod: searchUsers, onChange: function (e) { return handleUserChange(e.value); }, placeholder: "Filter by user", className: "w-full", inputClassName: "w-full" })] }), _jsxs("div", { className: "flex flex-column gap-2", children: [_jsx("label", { htmlFor: "dateRange", className: "form-field-label", children: "Date Range" }), _jsxs("div", { className: "flex gap-2 flex-column md:flex-row", children: [_jsx("div", { className: "flex-1", children: _jsx(SolidDatePicker, { selected: (_a = filters.startDate) !== null && _a !== void 0 ? _a : undefined, onChange: function (date) { return setFilters(function (prev) { return (__assign(__assign({}, prev), { startDate: date !== null && date !== void 0 ? date : null })); }); }, placeholderText: "Start Date", className: "w-full", wrapperClassName: "w-full", inputClassName: "w-full" }) }), _jsx("div", { className: "flex-1", children: _jsx(SolidDatePicker, { selected: (_b = filters.endDate) !== null && _b !== void 0 ? _b : undefined, onChange: function (date) { return setFilters(function (prev) { return (__assign(__assign({}, prev), { endDate: date !== null && date !== void 0 ? date : null })); }); }, placeholderText: "End Date", className: "w-full", wrapperClassName: "w-full", inputClassName: "w-full" }) })] })] })] }) }), _jsxs(SolidDialogFooter, { children: [_jsx(SolidButton, { label: "Clear", size: "sm", variant: "outline", onClick: handleClearFilters }), _jsx(SolidButton, { label: "Apply", size: "sm", className: "solid-purple-button", onClick: handleApplyFilters })] })] })] }));
140
140
  };
141
141
  //# sourceMappingURL=SolidChatterHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidChatterHeader.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatterHeader.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react'\nimport styles from './chatter.module.css'\nimport { SolidMessageComposer } from './SolidMessageComposer'\nimport { useLazyGetusersQuery } from '../../../redux/api/userApi'\nimport { ERROR_MESSAGES } from '../../../constants/error-messages'\nimport {\n SolidButton,\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidAutocomplete,\n SolidDatePicker\n} from '../../shad-cn-ui'\nimport { Filter, RefreshCw,Edit } from 'lucide-react'\ninterface FilterState {\n name: string;\n startDate: Date | null;\n endDate: Date | null;\n}\n\ninterface Props {\n activeTab: any,\n handleTabClick: any,\n visibleBox: any,\n modelSingularName: any,\n refetch: any,\n id: any,\n onFilterChange?: (filters: FilterState) => void;\n onComposerCancel?: () => void;\n title?: string;\n}\n\nexport const SolidChatterHeader = (props: Props) => {\n const { activeTab, visibleBox, handleTabClick, modelSingularName, refetch, id, onFilterChange, onComposerCancel, title } = props;\n const [showFilterDialog, setShowFilterDialog] = useState(false);\n const [filters, setFilters] = useState<FilterState>({\n name: '',\n startDate: null,\n endDate: null\n });\n const [hasActiveFilters, setHasActiveFilters] = useState(false);\n const [suggestions, setSuggestions] = useState<any[]>([]);\n const [getUsers] = useLazyGetusersQuery();\n\n useEffect(() => {\n const isActive = filters.name !== '' || filters.startDate !== null || filters.endDate !== null;\n setHasActiveFilters(isActive);\n }, [filters]);\n\n const handleFilterClick = () => {\n setShowFilterDialog(true);\n };\n\n const handleApplyFilters = () => {\n if (onFilterChange) {\n onFilterChange(filters);\n }\n setShowFilterDialog(false);\n };\n\n const handleClearFilters = () => {\n const clearedFilters = {\n name: '',\n startDate: null,\n endDate: null\n };\n setFilters(clearedFilters);\n if (onFilterChange) {\n onFilterChange(clearedFilters);\n }\n setShowFilterDialog(false);\n };\n\n const updateNameFilter = (value: string) => {\n setFilters(prev => {\n if (prev.name === value) {\n return prev;\n }\n return {\n ...prev,\n name: value\n };\n });\n };\n\n const searchUsers = async (event: { query: string }) => {\n updateNameFilter(event.query || '');\n try {\n const response = await getUsers(`filters[fullName][$containsi]=${event.query}`).unwrap();\n setSuggestions(response?.data?.records || []);\n } catch (error) {\n console.error(ERROR_MESSAGES.FETCHING_USER, error);\n setSuggestions([]);\n }\n };\n\n const handleUserChange = (value: any) => {\n if (!value) {\n updateNameFilter('');\n return;\n }\n if (typeof value === 'object') {\n updateNameFilter(value.fullName || '');\n return;\n }\n updateNameFilter(value);\n };\n\n return (\n <div className={`${styles.chatterTitle} ${title ? styles.chatterTitleWithLabel : ''} solid-list-toolbar`}>\n <div className='flex justify-content-between align-items-center solid-list-toolbar-row'>\n <p className=\"m-0 view-title solid-text-wrapper form-wrapper-title\">\n {title || ''}\n </p>\n <div className='flex align-items-center solid-header-buttons-wrapper'>\n {/* <Button\n label=\"Send Message\"\n size=\"small\"\n type=\"button\"\n onClick={() => handleTabClick('email-message')}\n {...(activeTab !== 'email-message' && {\n severity: 'secondary',\n outlined: true,\n })}\n /> */}\n {/* <SolidButton\n label=\"Log Note\"\n size=\"sm\"\n type=\"button\"\n variant=\"primary\"\n className=\"solid-purple-button\"\n onClick={() => handleTabClick('log')}\n /> */}\n <SolidButton\n size=\"sm\"\n type=\"button\"\n aria-label=\"Log Note\"\n variant={hasActiveFilters ? 'primary' : 'outline'}\n className=\"solid-icon-button\"\n style={{ gap: 0 }}\n leftIcon={<Edit size={14} />}\n onClick={() => handleTabClick('log')}\n />\n <SolidButton\n size=\"sm\"\n type=\"button\"\n aria-label=\"Filter\"\n variant={hasActiveFilters ? 'primary' : 'outline'}\n className=\"solid-icon-button\"\n style={{ gap: 0 }}\n leftIcon={<Filter size={14} />}\n onClick={handleFilterClick}\n />\n <SolidButton\n size=\"sm\"\n type=\"button\"\n aria-label=\"Refresh\"\n variant=\"outline\"\n className=\"solid-icon-button\"\n style={{ gap: 0 }}\n leftIcon={<RefreshCw size={14} />}\n onClick={refetch}\n />\n </div>\n </div>\n {visibleBox &&\n <div className='mt-2'>\n {visibleBox === \"email-message\" &&\n <SolidMessageComposer id={id} refetch={refetch} modelSingularName={modelSingularName} type={\"email\"} onCancel={onComposerCancel} />\n }\n\n {visibleBox === \"log\" &&\n <SolidMessageComposer id={id} refetch={refetch} modelSingularName={modelSingularName} onCancel={onComposerCancel} />\n }\n </div>\n }\n <SolidDialog\n open={showFilterDialog}\n onOpenChange={setShowFilterDialog}\n className='solid-filter-dialog-shell solid-chatter-filter-main'\n style={{ width: 500 }}\n showHeader={false}\n >\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Filter Messages</SolidDialogTitle>\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 <div className=\"flex flex-column gap-3\">\n <div className=\"flex flex-column gap-2\">\n <label htmlFor=\"fullName\" className=\"form-field-label\">User</label>\n <SolidAutocomplete\n id=\"fullName\"\n value={filters.name}\n suggestions={suggestions}\n field=\"fullName\"\n completeMethod={searchUsers}\n onChange={(e) => handleUserChange(e.value)}\n placeholder=\"Filter by user\"\n className=\"w-full\"\n inputClassName=\"w-full\"\n />\n </div>\n <div className=\"flex flex-column gap-2\">\n <label htmlFor=\"dateRange\" className=\"form-field-label\">Date Range</label>\n <div className=\"flex gap-2 flex-column md:flex-row\">\n <div className=\"flex-1\">\n <SolidDatePicker\n selected={filters.startDate ?? undefined}\n onChange={(date: Date | null) => setFilters(prev => ({ ...prev, startDate: date ?? null }))}\n placeholderText=\"Start Date\"\n className=\"w-full\"\n wrapperClassName=\"w-full\"\n inputClassName=\"w-full\"\n />\n </div>\n <div className=\"flex-1\">\n <SolidDatePicker\n selected={filters.endDate ?? undefined}\n onChange={(date: Date | null) => setFilters(prev => ({ ...prev, endDate: date ?? null }))}\n placeholderText=\"End Date\"\n className=\"w-full\"\n wrapperClassName=\"w-full\"\n inputClassName=\"w-full\"\n />\n </div>\n </div>\n </div>\n </div>\n </SolidDialogBody>\n <SolidDialogFooter>\n <SolidButton \n label=\"Clear\" \n size=\"sm\"\n variant=\"outline\"\n onClick={handleClearFilters}\n />\n <SolidButton \n label=\"Apply\" \n size=\"sm\"\n className=\"solid-purple-button\"\n onClick={handleApplyFilters}\n />\n </SolidDialogFooter>\n </SolidDialog>\n </div>\n )\n}\n"]}
1
+ {"version":3,"file":"SolidChatterHeader.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidChatterHeader.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from 'react'\nimport styles from './chatter.module.css'\nimport { SolidMessageComposer } from './SolidMessageComposer'\nimport { useLazyGetusersQuery } from '../../../redux/api/userApi'\nimport { ERROR_MESSAGES } from '../../../constants/error-messages'\nimport {\n SolidButton,\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogFooter,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidAutocomplete,\n SolidDatePicker\n} from '../../shad-cn-ui'\nimport { Filter, RefreshCw,Edit } from 'lucide-react'\ninterface FilterState {\n name: string;\n startDate: Date | null;\n endDate: Date | null;\n}\n\ninterface Props {\n activeTab: any,\n handleTabClick: any,\n visibleBox: any,\n modelSingularName: any,\n refetch: any,\n id: any,\n onFilterChange?: (filters: FilterState) => void;\n onComposerCancel?: () => void;\n title?: string;\n modelUserKey?: string;\n}\n\nexport const SolidChatterHeader = (props: Props) => {\n const { activeTab, visibleBox, handleTabClick, modelSingularName, refetch, id, onFilterChange, onComposerCancel, title, modelUserKey } = props;\n const [showFilterDialog, setShowFilterDialog] = useState(false);\n const [filters, setFilters] = useState<FilterState>({\n name: '',\n startDate: null,\n endDate: null\n });\n const [hasActiveFilters, setHasActiveFilters] = useState(false);\n const [suggestions, setSuggestions] = useState<any[]>([]);\n const [getUsers] = useLazyGetusersQuery();\n\n useEffect(() => {\n const isActive = filters.name !== '' || filters.startDate !== null || filters.endDate !== null;\n setHasActiveFilters(isActive);\n }, [filters]);\n\n const handleFilterClick = () => {\n setShowFilterDialog(true);\n };\n\n const handleApplyFilters = () => {\n if (onFilterChange) {\n onFilterChange(filters);\n }\n setShowFilterDialog(false);\n };\n\n const handleClearFilters = () => {\n const clearedFilters = {\n name: '',\n startDate: null,\n endDate: null\n };\n setFilters(clearedFilters);\n if (onFilterChange) {\n onFilterChange(clearedFilters);\n }\n setShowFilterDialog(false);\n };\n\n const updateNameFilter = (value: string) => {\n setFilters(prev => {\n if (prev.name === value) {\n return prev;\n }\n return {\n ...prev,\n name: value\n };\n });\n };\n\n const searchUsers = async (event: { query: string }) => {\n updateNameFilter(event.query || '');\n try {\n const response = await getUsers(`filters[fullName][$containsi]=${event.query}`).unwrap();\n setSuggestions(response?.data?.records || []);\n } catch (error) {\n console.error(ERROR_MESSAGES.FETCHING_USER, error);\n setSuggestions([]);\n }\n };\n\n const handleUserChange = (value: any) => {\n if (!value) {\n updateNameFilter('');\n return;\n }\n if (typeof value === 'object') {\n updateNameFilter(value.fullName || '');\n return;\n }\n updateNameFilter(value);\n };\n\n return (\n <div className={`${styles.chatterTitle} ${title ? styles.chatterTitleWithLabel : ''} solid-list-toolbar`}>\n <div className='flex justify-content-between align-items-center solid-list-toolbar-row'>\n <p className=\"m-0 view-title solid-text-wrapper form-wrapper-title\">\n {title || ''}\n </p>\n <div className='flex align-items-center solid-header-buttons-wrapper'>\n {/* <Button\n label=\"Send Message\"\n size=\"small\"\n type=\"button\"\n onClick={() => handleTabClick('email-message')}\n {...(activeTab !== 'email-message' && {\n severity: 'secondary',\n outlined: true,\n })}\n /> */}\n {/* <SolidButton\n label=\"Log Note\"\n size=\"sm\"\n type=\"button\"\n variant=\"primary\"\n className=\"solid-purple-button\"\n onClick={() => handleTabClick('log')}\n /> */}\n <SolidButton\n size=\"sm\"\n type=\"button\"\n aria-label=\"Log Note\"\n variant={hasActiveFilters ? 'primary' : 'outline'}\n className=\"solid-icon-button\"\n style={{ gap: 0 }}\n leftIcon={<Edit size={14} />}\n onClick={() => handleTabClick('log')}\n />\n <SolidButton\n size=\"sm\"\n type=\"button\"\n aria-label=\"Filter\"\n variant={hasActiveFilters ? 'primary' : 'outline'}\n className=\"solid-icon-button\"\n style={{ gap: 0 }}\n leftIcon={<Filter size={14} />}\n onClick={handleFilterClick}\n />\n <SolidButton\n size=\"sm\"\n type=\"button\"\n aria-label=\"Refresh\"\n variant=\"outline\"\n className=\"solid-icon-button\"\n style={{ gap: 0 }}\n leftIcon={<RefreshCw size={14} />}\n onClick={refetch}\n />\n </div>\n </div>\n {visibleBox &&\n <div className='mt-2'>\n {visibleBox === \"email-message\" &&\n <SolidMessageComposer id={id} refetch={refetch} modelSingularName={modelSingularName} type={\"email\"} onCancel={onComposerCancel} modelUserKey={modelUserKey} />\n }\n\n {visibleBox === \"log\" &&\n <SolidMessageComposer id={id} refetch={refetch} modelSingularName={modelSingularName} onCancel={onComposerCancel} modelUserKey={modelUserKey} />\n }\n </div>\n }\n <SolidDialog\n open={showFilterDialog}\n onOpenChange={setShowFilterDialog}\n className='solid-filter-dialog-shell solid-chatter-filter-main'\n style={{ width: 500 }}\n showHeader={false}\n >\n <SolidDialogHeader className=\"solid-filter-dialog-head\">\n <div>\n <SolidDialogTitle className=\"solid-filter-dialog-title m-0\">Filter Messages</SolidDialogTitle>\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 <div className=\"flex flex-column gap-3\">\n <div className=\"flex flex-column gap-2\">\n <label htmlFor=\"fullName\" className=\"form-field-label\">User</label>\n <SolidAutocomplete\n id=\"fullName\"\n value={filters.name}\n suggestions={suggestions}\n field=\"fullName\"\n completeMethod={searchUsers}\n onChange={(e) => handleUserChange(e.value)}\n placeholder=\"Filter by user\"\n className=\"w-full\"\n inputClassName=\"w-full\"\n />\n </div>\n <div className=\"flex flex-column gap-2\">\n <label htmlFor=\"dateRange\" className=\"form-field-label\">Date Range</label>\n <div className=\"flex gap-2 flex-column md:flex-row\">\n <div className=\"flex-1\">\n <SolidDatePicker\n selected={filters.startDate ?? undefined}\n onChange={(date: Date | null) => setFilters(prev => ({ ...prev, startDate: date ?? null }))}\n placeholderText=\"Start Date\"\n className=\"w-full\"\n wrapperClassName=\"w-full\"\n inputClassName=\"w-full\"\n />\n </div>\n <div className=\"flex-1\">\n <SolidDatePicker\n selected={filters.endDate ?? undefined}\n onChange={(date: Date | null) => setFilters(prev => ({ ...prev, endDate: date ?? null }))}\n placeholderText=\"End Date\"\n className=\"w-full\"\n wrapperClassName=\"w-full\"\n inputClassName=\"w-full\"\n />\n </div>\n </div>\n </div>\n </div>\n </SolidDialogBody>\n <SolidDialogFooter>\n <SolidButton \n label=\"Clear\" \n size=\"sm\"\n variant=\"outline\"\n onClick={handleClearFilters}\n />\n <SolidButton \n label=\"Apply\" \n size=\"sm\"\n className=\"solid-purple-button\"\n onClick={handleApplyFilters}\n />\n </SolidDialogFooter>\n </SolidDialog>\n </div>\n )\n}\n"]}
@@ -32,10 +32,11 @@ interface Props {
32
32
  onFilterChange?: (filters: FilterState) => void;
33
33
  onComposerCancel?: () => void;
34
34
  title?: string;
35
+ modelUserKey?: string;
35
36
  }
36
37
 
37
38
  export const SolidChatterHeader = (props: Props) => {
38
- const { activeTab, visibleBox, handleTabClick, modelSingularName, refetch, id, onFilterChange, onComposerCancel, title } = props;
39
+ const { activeTab, visibleBox, handleTabClick, modelSingularName, refetch, id, onFilterChange, onComposerCancel, title, modelUserKey } = props;
39
40
  const [showFilterDialog, setShowFilterDialog] = useState(false);
40
41
  const [filters, setFilters] = useState<FilterState>({
41
42
  name: '',
@@ -170,11 +171,11 @@ export const SolidChatterHeader = (props: Props) => {
170
171
  {visibleBox &&
171
172
  <div className='mt-2'>
172
173
  {visibleBox === "email-message" &&
173
- <SolidMessageComposer id={id} refetch={refetch} modelSingularName={modelSingularName} type={"email"} onCancel={onComposerCancel} />
174
+ <SolidMessageComposer id={id} refetch={refetch} modelSingularName={modelSingularName} type={"email"} onCancel={onComposerCancel} modelUserKey={modelUserKey} />
174
175
  }
175
176
 
176
177
  {visibleBox === "log" &&
177
- <SolidMessageComposer id={id} refetch={refetch} modelSingularName={modelSingularName} onCancel={onComposerCancel} />
178
+ <SolidMessageComposer id={id} refetch={refetch} modelSingularName={modelSingularName} onCancel={onComposerCancel} modelUserKey={modelUserKey} />
178
179
  }
179
180
  </div>
180
181
  }
@@ -4,7 +4,8 @@ interface SolidMessageComposerProps {
4
4
  refetch?: any;
5
5
  id?: any;
6
6
  onCancel?: () => void;
7
+ modelUserKey?: string;
7
8
  }
8
- export declare const SolidMessageComposer: ({ type, modelSingularName, refetch, id, onCancel }: SolidMessageComposerProps) => import("react/jsx-runtime").JSX.Element;
9
+ export declare const SolidMessageComposer: ({ type, modelSingularName, refetch, id, onCancel, modelUserKey }: SolidMessageComposerProps) => import("react/jsx-runtime").JSX.Element;
9
10
  export {};
10
11
  //# sourceMappingURL=SolidMessageComposer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"SolidMessageComposer.d.ts","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidMessageComposer.tsx"],"names":[],"mappings":"AAQA,UAAU,yBAAyB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,EAAE,CAAC,EAAE,GAAG,CAAC;IACT,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,eAAO,MAAM,oBAAoB,uDAAwD,yBAAyB,4CA0KjH,CAAA"}
1
+ {"version":3,"file":"SolidMessageComposer.d.ts","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidMessageComposer.tsx"],"names":[],"mappings":"AAQA,UAAU,yBAAyB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,GAAG,CAAC;IACxB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,EAAE,CAAC,EAAE,GAAG,CAAC;IACT,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,oBAAoB,qEAAsE,yBAAyB,4CA2K/H,CAAA"}
@@ -52,7 +52,7 @@ import { useSession } from '../../../hooks/useSession';
52
52
  import { SolidButton, SolidTextarea } from '../../shad-cn-ui';
53
53
  import { FileText, Paperclip, X } from 'lucide-react';
54
54
  export var SolidMessageComposer = function (_a) {
55
- var type = _a.type, modelSingularName = _a.modelSingularName, refetch = _a.refetch, id = _a.id, onCancel = _a.onCancel;
55
+ var type = _a.type, modelSingularName = _a.modelSingularName, refetch = _a.refetch, id = _a.id, onCancel = _a.onCancel, modelUserKey = _a.modelUserKey;
56
56
  var _b = useState(''), message = _b[0], setMessage = _b[1];
57
57
  var _c = useState([]), selectedFiles = _c[0], setSelectedFiles = _c[1];
58
58
  var _d = useSession(), session = _d.data, status = _d.status;
@@ -89,6 +89,8 @@ export var SolidMessageComposer = function (_a) {
89
89
  formData_1.append('coModelEntityId', id);
90
90
  formData_1.append('coModelName', modelSingularName);
91
91
  formData_1.append('userId', (user === null || user === void 0 ? void 0 : user.id) || 1);
92
+ if (modelUserKey)
93
+ formData_1.append('modelUserKey', modelUserKey);
92
94
  selectedFiles.forEach(function (file, index) {
93
95
  formData_1.append("messageAttachments", file);
94
96
  });
@@ -1 +1 @@
1
- {"version":3,"file":"SolidMessageComposer.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidMessageComposer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,MAAM,MAAM,sBAAsB,CAAA;AACzC,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAA;AAC3F,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,cAAc,CAAA;AAUrD,MAAM,CAAC,IAAM,oBAAoB,GAAG,UAAC,EAA6E;QAA3E,IAAI,UAAA,EAAE,iBAAiB,uBAAA,EAAE,OAAO,aAAA,EAAE,EAAE,QAAA,EAAE,QAAQ,cAAA;IAC3E,IAAA,KAAwB,QAAQ,CAAC,EAAE,CAAC,EAAnC,OAAO,QAAA,EAAE,UAAU,QAAgB,CAAC;IACrC,IAAA,KAAoC,QAAQ,CAAS,EAAE,CAAC,EAAvD,aAAa,QAAA,EAAE,gBAAgB,QAAwB,CAAC;IAEzD,IAAA,KAA4B,UAAU,EAAE,EAAhC,OAAO,UAAA,EAAE,MAAM,YAAiB,CAAC;IAC/C,IAAM,IAAI,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAC;IAC3B,IAAM,YAAY,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAEpD,qEAAqE;IAC/D,IAAA,KAA4D,+BAA+B,EAAE,EAA5F,oBAAoB,QAAA,EAAE,UAAiC,EAA/B,SAAS,eAAA,EAAE,SAAS,eAAA,EAAE,OAAO,aAAuC,CAAC;IAEpG,IAAM,UAAU,GAAG;QACf,kBAAkB;QAClB,oBAAoB;QACpB,kBAAkB;KACrB,CAAA;IAED,IAAM,gBAAgB,GAAG,UAAC,KAA0C;QAChE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;YACpB,IAAM,OAAK,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC7C,gBAAgB,CAAC,UAAA,IAAI,IAAI,uCAAI,IAAI,SAAK,OAAK,SAAlB,CAAmB,CAAC,CAAC;SACjD;IACL,CAAC,CAAC;IAEF,IAAM,YAAY,GAAG,UAAO,CAAkB;;;;;oBAC1C,CAAC,CAAC,cAAc,EAAE,CAAC;oBACnB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC;wBAAE,sBAAO;;;;oBAGhD,aAAW,IAAI,QAAQ,EAAE,CAAC;oBAChC,UAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;oBACzC,UAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;oBAC5C,UAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;oBACxC,UAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;oBACvC,UAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;oBAClD,UAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,EAAE,KAAI,CAAC,CAAC,CAAC;oBAEzC,aAAa,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,KAAK;wBAC9B,UAAQ,CAAC,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;oBAChD,CAAC,CAAC,CAAC;oBAEH,qBAAM,oBAAoB,CAAC,UAAQ,CAAC,CAAC,MAAM,EAAE,EAAA;;oBAA7C,SAA6C,CAAC;oBAC9C,UAAU,CAAC,EAAE,CAAC,CAAC;oBACf,gBAAgB,CAAC,EAAE,CAAC,CAAC;;;;oBAErB,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,EAAE,OAAK,CAAC,CAAC;;;;;SAE7D,CAAC;IAEF,SAAS,CAAC;QACN,IAAI,SAAS,EAAE;YACX,OAAO,EAAE,CAAA;SACZ;IACL,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC;IAEhB,IAAM,cAAc,GAAG,UAAC,IAAY;QAChC,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAC;QACrB,OAAO,IAAI,IAAI,IAAI,GAAG,IAAI;YACtB,CAAC,CAAC,UAAG,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAK;YAC3C,CAAC,CAAC,UAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAK,CAAC;IAC3C,CAAC,CAAC;IAEF,OAAO,CACH,gBAAM,SAAS,EAAE,MAAM,CAAC,sBAAsB,EAAE,QAAQ,EAAE,YAAY,aAsBlE,eAAK,SAAS,EAAE,UAAG,MAAM,CAAC,mBAAmB,mCAAgC,aACzE,cAAK,SAAS,EAAC,iDAAiD,YAC5D,YAAG,SAAS,EAAC,sBAAsB,YAC9B,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,GACrD,GACF,EACN,KAAC,aAAa,IACV,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,UAAC,CAAC,IAAK,OAAA,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAA1B,CAA0B,EAC3C,WAAW,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,uBAAuB,EACvF,SAAS,EAAC,YAAY,EACtB,IAAI,EAAE,CAAC,GACT,EACF,eAAK,SAAS,EAAC,iEAAiE,aAC5E,eAAK,SAAS,EAAC,+BAA+B,aAC1C,gBACI,IAAI,EAAC,MAAM,EACX,GAAG,EAAE,YAAY,EACjB,QAAQ,EAAE,gBAAgB,EAC1B,QAAQ,QACR,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,GAC5B,EACF,KAAC,WAAW,IACR,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,mBAAmB,EAC7B,QAAQ,EAAE,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,GAAI,EACjC,OAAO,EAAE,sBAAM,OAAA,MAAA,YAAY,CAAC,OAAO,0CAAE,KAAK,EAAE,CAAA,EAAA,gBACjC,cAAc,EACzB,KAAK,EAAC,cAAc,GACtB,EACF,eAAM,SAAS,EAAC,8BAA8B,4BAAmB,IAC/D,EACN,eAAK,SAAS,EAAC,+BAA+B,aAC1C,KAAC,WAAW,IACR,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,2BAA2B,EACrC,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,SAAS,YAEjB,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GACxB,EACd,KAAC,WAAW,IACR,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,IAAI,EACT,OAAO,EAAC,OAAO,EACf,OAAO,EAAE;4CACL,UAAU,CAAC,EAAE,CAAC,CAAC;4CACf,gBAAgB,CAAC,EAAE,CAAC,CAAC;4CACrB,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,EAAI,CAAC;wCACjB,CAAC,uBAGS,IACZ,IACJ,IACJ,EACL,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,CACzB,cAAK,SAAS,EAAE,MAAM,CAAC,oBAAoB,YACtC,aAAa,CAAC,GAAG,CAAC,UAAC,IAAI,EAAE,KAAK,IAAK,OAAA,CAChC,eAAiB,SAAS,EAAE,MAAM,CAAC,uBAAuB,aACtD,cAAK,SAAS,EAAE,MAAM,CAAC,uBAAuB,YAC1C,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,GACpB,EACN,eAAK,SAAS,EAAE,MAAM,CAAC,uBAAuB,aAC1C,YAAG,SAAS,EAAE,MAAM,CAAC,uBAAuB,YAAG,IAAI,CAAC,IAAI,GAAK,EAC7D,eAAM,SAAS,EAAE,MAAM,CAAC,uBAAuB,YAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,GAAQ,IACjF,EACN,KAAC,WAAW,IACR,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,mBAAmB,EAC7B,QAAQ,EAAE,KAAC,CAAC,IAAC,IAAI,EAAE,EAAE,GAAI,EACzB,OAAO,EAAE,cAAM,OAAA,gBAAgB,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,KAAK,KAAK,EAAX,CAAW,CAAC,EAAlC,CAAkC,CAAC,EAA5D,CAA4D,gBAC/D,iBAAU,IAAI,CAAC,IAAI,CAAE,GACnC,KAhBI,KAAK,CAiBT,CACT,EAnBmC,CAmBnC,CAAC,GACA,CACT,IACE,CACV,CAAA;AACL,CAAC,CAAA","sourcesContent":["import styles from './chatter.module.css'\nimport { useCreateChatterMessageMutation } from '../../../redux/api/solidChatterMessageApi'\nimport { useEffect, useState, useRef } from 'react'\nimport { ERROR_MESSAGES } from '../../../constants/error-messages'\nimport { useSession } from '../../../hooks/useSession'\nimport { SolidButton, SolidTextarea } from '../../shad-cn-ui'\nimport { FileText, Paperclip, X } from 'lucide-react'\n\ninterface SolidMessageComposerProps {\n type?: string;\n modelSingularName?: any;\n refetch?: any;\n id?: any;\n onCancel?: () => void;\n}\n\nexport const SolidMessageComposer = ({ type, modelSingularName, refetch, id, onCancel }: SolidMessageComposerProps) => {\n const [message, setMessage] = useState('');\n const [selectedFiles, setSelectedFiles] = useState<File[]>([]);\n\n const { data: session, status } = useSession();\n const user = session?.user;\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // const { data: viewLayoutData } = useGetSolidViewLayoutQuery(null);\n const [createChatterMessage, { isLoading, isSuccess, isError }] = useCreateChatterMessageMutation();\n\n const tempEmails = [\n \"johndoe@gmal.com\",\n \"tempmail@gmail.com\",\n \"example@mail.com\"\n ]\n\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.target.files) {\n const files = Array.from(event.target.files);\n setSelectedFiles(prev => [...prev, ...files]);\n }\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!message.trim() && selectedFiles.length === 0) return;\n\n try {\n const formData = new FormData();\n formData.append('messageType', \"custom\");\n formData.append('messageSubType', \"custom\");\n formData.append('messageBody', message);\n formData.append('coModelEntityId', id);\n formData.append('coModelName', modelSingularName);\n formData.append('userId', user?.id || 1);\n\n selectedFiles.forEach((file, index) => {\n formData.append(`messageAttachments`, file);\n });\n\n await createChatterMessage(formData).unwrap();\n setMessage('');\n setSelectedFiles([]);\n } catch (error) {\n console.error(ERROR_MESSAGES.FETCHING_MESSAGE, error);\n }\n };\n\n useEffect(() => {\n if (isSuccess) {\n refetch()\n }\n }, [isSuccess]);\n\n const formatFileSize = (size: number) => {\n if (!size) return \"\";\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n\n return (\n <form className={styles.chatterMessageComposer} onSubmit={handleSubmit}>\n {/* {type === 'email' &&\n <div className='flex align-items-center gap-1 text-sm mb-2'>\n <span className='font-bold'>To:</span>\n <div className={styles.chatterEmails}>\n {tempEmails.map((mail, index) => (\n <span key={index}>\n {mail}\n </span>\n ))}\n </div>\n <div className={`si si-sort-down-fill text-primary ${styles.emailTooltipIcon}`} style={{ fontSize: 8 }}>\n <div className={styles.emailsTooltip}>\n {tempEmails.map((mail, index) => (\n <span key={index} className='text-color text-sm'>\n {mail}\n </span>\n ))}\n </div>\n </div>\n </div>\n } */}\n <div className={`${styles.solidMessageWrapper} flex flex-column gap-2 w-full`}>\n <div className='flex align-items-center justify-content-between'>\n <p className='form-field-label m-0'>\n {type === 'email' ? 'Email Message' : 'Internal Note'}\n </p>\n </div>\n <SolidTextarea\n value={message}\n onChange={(e) => setMessage(e.target.value)}\n placeholder={type === 'email' ? 'Send a message to followers' : 'Log an internal note.'}\n className=\"w-full p-1\"\n rows={4}\n />\n <div className='flex align-items-center justify-content-between flex-wrap gap-2'>\n <div className='flex align-items-center gap-2'>\n <input\n type=\"file\"\n ref={fileInputRef}\n onChange={handleFileSelect}\n multiple\n style={{ display: 'none' }}\n />\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-icon-button\"\n leftIcon={<Paperclip size={14} />}\n onClick={() => fileInputRef.current?.click()}\n aria-label=\"Attach files\"\n title=\"Attach files\"\n />\n <span className='text-xs text-color-secondary'>Attach file</span>\n </div>\n <div className='flex align-items-center gap-2'>\n <SolidButton\n type='submit'\n size='sm'\n className='gap-2 solid-purple-button'\n variant='primary'\n loading={isLoading}\n >\n {type === 'email' ? 'Send' : 'Log'}\n </SolidButton>\n <SolidButton\n type='button'\n size='sm'\n variant='ghost'\n onClick={() => {\n setMessage('');\n setSelectedFiles([]);\n onCancel?.();\n }}\n >\n Cancel\n </SolidButton>\n </div>\n </div>\n </div>\n {selectedFiles.length > 0 && (\n <div className={styles.chatterSelectedFiles}>\n {selectedFiles.map((file, index) => (\n <div key={index} className={styles.chatterSelectedFileCard}>\n <div className={styles.chatterSelectedFileIcon}>\n <FileText size={16} />\n </div>\n <div className={styles.chatterSelectedFileMeta}>\n <p className={styles.chatterSelectedFileName}>{file.name}</p>\n <span className={styles.chatterSelectedFileSize}>{formatFileSize(file.size)}</span>\n </div>\n <SolidButton\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"solid-icon-button\"\n leftIcon={<X size={12} />}\n onClick={() => setSelectedFiles(prev => prev.filter((_, i) => i !== index))}\n aria-label={`Remove ${file.name}`}\n />\n </div>\n ))}\n </div>\n )}\n </form>\n )\n}\n"]}
1
+ {"version":3,"file":"SolidMessageComposer.js","sourceRoot":"","sources":["../../../../src/components/core/chatter/SolidMessageComposer.tsx"],"names":[],"mappings":"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","sourcesContent":["import styles from './chatter.module.css'\nimport { useCreateChatterMessageMutation } from '../../../redux/api/solidChatterMessageApi'\nimport { useEffect, useState, useRef } from 'react'\nimport { ERROR_MESSAGES } from '../../../constants/error-messages'\nimport { useSession } from '../../../hooks/useSession'\nimport { SolidButton, SolidTextarea } from '../../shad-cn-ui'\nimport { FileText, Paperclip, X } from 'lucide-react'\n\ninterface SolidMessageComposerProps {\n type?: string;\n modelSingularName?: any;\n refetch?: any;\n id?: any;\n onCancel?: () => void;\n modelUserKey?: string;\n}\n\nexport const SolidMessageComposer = ({ type, modelSingularName, refetch, id, onCancel, modelUserKey }: SolidMessageComposerProps) => {\n const [message, setMessage] = useState('');\n const [selectedFiles, setSelectedFiles] = useState<File[]>([]);\n\n const { data: session, status } = useSession();\n const user = session?.user;\n const fileInputRef = useRef<HTMLInputElement>(null);\n\n // const { data: viewLayoutData } = useGetSolidViewLayoutQuery(null);\n const [createChatterMessage, { isLoading, isSuccess, isError }] = useCreateChatterMessageMutation();\n\n const tempEmails = [\n \"johndoe@gmal.com\",\n \"tempmail@gmail.com\",\n \"example@mail.com\"\n ]\n\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (event.target.files) {\n const files = Array.from(event.target.files);\n setSelectedFiles(prev => [...prev, ...files]);\n }\n };\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!message.trim() && selectedFiles.length === 0) return;\n\n try {\n const formData = new FormData();\n formData.append('messageType', \"custom\");\n formData.append('messageSubType', \"custom\");\n formData.append('messageBody', message);\n formData.append('coModelEntityId', id);\n formData.append('coModelName', modelSingularName);\n formData.append('userId', user?.id || 1);\n\n if (modelUserKey) formData.append('modelUserKey', modelUserKey);\n selectedFiles.forEach((file, index) => {\n formData.append(`messageAttachments`, file);\n });\n\n await createChatterMessage(formData).unwrap();\n setMessage('');\n setSelectedFiles([]);\n } catch (error) {\n console.error(ERROR_MESSAGES.FETCHING_MESSAGE, error);\n }\n };\n\n useEffect(() => {\n if (isSuccess) {\n refetch()\n }\n }, [isSuccess]);\n\n const formatFileSize = (size: number) => {\n if (!size) return \"\";\n return size >= 1024 * 1024\n ? `${(size / (1024 * 1024)).toFixed(1)} MB`\n : `${(size / 1024).toFixed(1)} KB`;\n };\n\n return (\n <form className={styles.chatterMessageComposer} onSubmit={handleSubmit}>\n {/* {type === 'email' &&\n <div className='flex align-items-center gap-1 text-sm mb-2'>\n <span className='font-bold'>To:</span>\n <div className={styles.chatterEmails}>\n {tempEmails.map((mail, index) => (\n <span key={index}>\n {mail}\n </span>\n ))}\n </div>\n <div className={`si si-sort-down-fill text-primary ${styles.emailTooltipIcon}`} style={{ fontSize: 8 }}>\n <div className={styles.emailsTooltip}>\n {tempEmails.map((mail, index) => (\n <span key={index} className='text-color text-sm'>\n {mail}\n </span>\n ))}\n </div>\n </div>\n </div>\n } */}\n <div className={`${styles.solidMessageWrapper} flex flex-column gap-2 w-full`}>\n <div className='flex align-items-center justify-content-between'>\n <p className='form-field-label m-0'>\n {type === 'email' ? 'Email Message' : 'Internal Note'}\n </p>\n </div>\n <SolidTextarea\n value={message}\n onChange={(e) => setMessage(e.target.value)}\n placeholder={type === 'email' ? 'Send a message to followers' : 'Log an internal note.'}\n className=\"w-full p-1\"\n rows={4}\n />\n <div className='flex align-items-center justify-content-between flex-wrap gap-2'>\n <div className='flex align-items-center gap-2'>\n <input\n type=\"file\"\n ref={fileInputRef}\n onChange={handleFileSelect}\n multiple\n style={{ display: 'none' }}\n />\n <SolidButton\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n className=\"solid-icon-button\"\n leftIcon={<Paperclip size={14} />}\n onClick={() => fileInputRef.current?.click()}\n aria-label=\"Attach files\"\n title=\"Attach files\"\n />\n <span className='text-xs text-color-secondary'>Attach file</span>\n </div>\n <div className='flex align-items-center gap-2'>\n <SolidButton\n type='submit'\n size='sm'\n className='gap-2 solid-purple-button'\n variant='primary'\n loading={isLoading}\n >\n {type === 'email' ? 'Send' : 'Log'}\n </SolidButton>\n <SolidButton\n type='button'\n size='sm'\n variant='ghost'\n onClick={() => {\n setMessage('');\n setSelectedFiles([]);\n onCancel?.();\n }}\n >\n Cancel\n </SolidButton>\n </div>\n </div>\n </div>\n {selectedFiles.length > 0 && (\n <div className={styles.chatterSelectedFiles}>\n {selectedFiles.map((file, index) => (\n <div key={index} className={styles.chatterSelectedFileCard}>\n <div className={styles.chatterSelectedFileIcon}>\n <FileText size={16} />\n </div>\n <div className={styles.chatterSelectedFileMeta}>\n <p className={styles.chatterSelectedFileName}>{file.name}</p>\n <span className={styles.chatterSelectedFileSize}>{formatFileSize(file.size)}</span>\n </div>\n <SolidButton\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"solid-icon-button\"\n leftIcon={<X size={12} />}\n onClick={() => setSelectedFiles(prev => prev.filter((_, i) => i !== index))}\n aria-label={`Remove ${file.name}`}\n />\n </div>\n ))}\n </div>\n )}\n </form>\n )\n}\n"]}
@@ -12,9 +12,10 @@ interface SolidMessageComposerProps {
12
12
  refetch?: any;
13
13
  id?: any;
14
14
  onCancel?: () => void;
15
+ modelUserKey?: string;
15
16
  }
16
17
 
17
- export const SolidMessageComposer = ({ type, modelSingularName, refetch, id, onCancel }: SolidMessageComposerProps) => {
18
+ export const SolidMessageComposer = ({ type, modelSingularName, refetch, id, onCancel, modelUserKey }: SolidMessageComposerProps) => {
18
19
  const [message, setMessage] = useState('');
19
20
  const [selectedFiles, setSelectedFiles] = useState<File[]>([]);
20
21
 
@@ -51,6 +52,7 @@ export const SolidMessageComposer = ({ type, modelSingularName, refetch, id, onC
51
52
  formData.append('coModelName', modelSingularName);
52
53
  formData.append('userId', user?.id || 1);
53
54
 
55
+ if (modelUserKey) formData.append('modelUserKey', modelUserKey);
54
56
  selectedFiles.forEach((file, index) => {
55
57
  formData.append(`messageAttachments`, file);
56
58
  });
@@ -9,6 +9,7 @@ import { LayoutAttribute, LayoutNode } from "../../../types/solid-core";
9
9
  export declare class SolidViewLayoutManager {
10
10
  /** Internal mutable layout copy */
11
11
  private layout;
12
+ private clone;
12
13
  /**
13
14
  * Creates a new layout manager instance.
14
15
  * A deep copy of the provided layout is created to avoid side effects.
@@ -34,6 +35,7 @@ export declare class SolidViewLayoutManager {
34
35
  * @returns true if the node was removed
35
36
  */
36
37
  private removeNodeRecursive;
38
+ private insertNodeBeforeRecursive;
37
39
  /**
38
40
  * Returns the managed layout instance.
39
41
  *
@@ -49,6 +51,21 @@ export declare class SolidViewLayoutManager {
49
51
  * @returns true if node was found and updated
50
52
  */
51
53
  updateNodeAttributes(name: string, newAttributes: Partial<LayoutAttribute>): boolean;
54
+ /**
55
+ * Checks whether a node exists by name.
56
+ *
57
+ * @param name - Node name
58
+ * @returns true if found
59
+ */
60
+ hasNode(name: string): boolean;
61
+ /**
62
+ * Inserts a node before the first matching target node.
63
+ *
64
+ * @param targetName - Target node name
65
+ * @param newNode - Node to insert
66
+ * @returns true if insertion was successful
67
+ */
68
+ insertNodeBefore(targetName: string, newNode: LayoutNode): boolean;
52
69
  /**
53
70
  * Adds a child node to a parent node.
54
71
  *
@@ -1 +1 @@
1
- {"version":3,"file":"SolidViewLayoutManager.d.ts","sourceRoot":"","sources":["../../../../src/components/core/common/SolidViewLayoutManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAExE;;;;;;GAMG;AACH,qBAAa,sBAAsB;IAC/B,mCAAmC;IACnC,OAAO,CAAC,MAAM,CAAa;IAE3B;;;;;OAKG;gBACS,MAAM,EAAE,UAAU;IAK9B;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ;IAuBhB,OAAO,CAAC,SAAS;IAkBjB;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAa3B;;;;QAII;IACJ,SAAS,IAAI,UAAU;IAKvB;;;;;;;OAOG;IACH,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO;IASpF;;;;;;;OAOG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,GAAE,OAAe,GAAG,OAAO;IA2BjG;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IASjC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,EAAE,IAAI,GAAE,UAAwB;IAS7E;;;;;;OAMG;IACH,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO;IAoB3D;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO;IAiB3D;;;;;;OAMG;IACH,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO;IAkB9D;;;;;OAKG;IACH,oBAAoB,CAAC,IAAI,EAAE,CAAC,MAAM,eAAe,CAAC,EAAE,GAAG,OAAO;IAiB9D;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAKvC;;;;;;OAMG;IACH,wBAAwB,CACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAChC,OAAO;IAWV;;;;;OAKG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAYjD;;;;;OAKG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAK1C;;;;;OAKG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAKvC;;;;;;OAMG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO;IASnE;;;;;;;OAOG;IACH,uBAAuB,CACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAChC,OAAO;IAeV;;;;;;OAMG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;CActE"}
1
+ {"version":3,"file":"SolidViewLayoutManager.d.ts","sourceRoot":"","sources":["../../../../src/components/core/common/SolidViewLayoutManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAExE;;;;;;GAMG;AACH,qBAAa,sBAAsB;IAC/B,mCAAmC;IACnC,OAAO,CAAC,MAAM,CAAa;IAE3B,OAAO,CAAC,KAAK;IAMb;;;;;OAKG;gBACS,MAAM,EAAE,UAAU;IAK9B;;;;;;;OAOG;IACH,OAAO,CAAC,QAAQ;IAuBhB,OAAO,CAAC,SAAS;IAkBjB;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,yBAAyB;IAejC;;;;QAII;IACJ,SAAS,IAAI,UAAU;IAKvB;;;;;;;OAOG;IACH,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO;IASpF;;;;;OAKG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI9B;;;;;;OAMG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO;IAIlE;;;;;;;OAOG;IACH,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,GAAE,OAAe,GAAG,OAAO;IA2BjG;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IASjC;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,EAAE,IAAI,GAAE,UAAwB;IAS7E;;;;;;OAMG;IACH,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO;IAoB3D;;;;;OAKG;IACH,iBAAiB,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO;IAiB3D;;;;;;OAMG;IACH,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO;IAkB9D;;;;;OAKG;IACH,oBAAoB,CAAC,IAAI,EAAE,CAAC,MAAM,eAAe,CAAC,EAAE,GAAG,OAAO;IAiB9D;;;;OAIG;IACH,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAKvC;;;;;;OAMG;IACH,wBAAwB,CACpB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAChC,OAAO;IAWV;;;;;OAKG;IACH,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAYjD;;;;;OAKG;IACH,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAK1C;;;;;OAKG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAKvC;;;;;;OAMG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO;IASnE;;;;;;;OAOG;IACH,uBAAuB,CACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAChC,OAAO;IAeV;;;;;;OAMG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;CActE"}
@@ -33,8 +33,18 @@ var SolidViewLayoutManager = /** @class */ (function () {
33
33
  value: void 0
34
34
  });
35
35
  // Create a deep copy to prevent modifying the original object
36
- this.layout = structuredClone ? structuredClone(layout) : JSON.parse(JSON.stringify(layout));
36
+ this.layout = this.clone(layout);
37
37
  }
38
+ Object.defineProperty(SolidViewLayoutManager.prototype, "clone", {
39
+ enumerable: false,
40
+ configurable: true,
41
+ writable: true,
42
+ value: function (value) {
43
+ return typeof structuredClone === "function"
44
+ ? structuredClone(value)
45
+ : JSON.parse(JSON.stringify(value));
46
+ }
47
+ });
38
48
  /**
39
49
  * Recursively finds a layout node by its `attrs.name`.
40
50
  * Searches children and formButtons.
@@ -120,6 +130,24 @@ var SolidViewLayoutManager = /** @class */ (function () {
120
130
  return parent.children.some(function (child) { return _this.removeNodeRecursive(child, name); });
121
131
  }
122
132
  });
133
+ Object.defineProperty(SolidViewLayoutManager.prototype, "insertNodeBeforeRecursive", {
134
+ enumerable: false,
135
+ configurable: true,
136
+ writable: true,
137
+ value: function (parent, targetName, newNode) {
138
+ var _this = this;
139
+ if (!parent.children || parent.children.length === 0)
140
+ return false;
141
+ var targetIndex = parent.children.findIndex(function (child) { return child.attrs.name === targetName; });
142
+ if (targetIndex !== -1) {
143
+ parent.children.splice(targetIndex, 0, this.clone(newNode));
144
+ return true;
145
+ }
146
+ return parent.children.some(function (child) {
147
+ return _this.insertNodeBeforeRecursive(child, targetName, newNode);
148
+ });
149
+ }
150
+ });
123
151
  /**
124
152
  * Returns the managed layout instance.
125
153
  *
@@ -155,6 +183,35 @@ var SolidViewLayoutManager = /** @class */ (function () {
155
183
  return false;
156
184
  }
157
185
  });
186
+ /**
187
+ * Checks whether a node exists by name.
188
+ *
189
+ * @param name - Node name
190
+ * @returns true if found
191
+ */
192
+ Object.defineProperty(SolidViewLayoutManager.prototype, "hasNode", {
193
+ enumerable: false,
194
+ configurable: true,
195
+ writable: true,
196
+ value: function (name) {
197
+ return !!this.findNode(this.layout, name);
198
+ }
199
+ });
200
+ /**
201
+ * Inserts a node before the first matching target node.
202
+ *
203
+ * @param targetName - Target node name
204
+ * @param newNode - Node to insert
205
+ * @returns true if insertion was successful
206
+ */
207
+ Object.defineProperty(SolidViewLayoutManager.prototype, "insertNodeBefore", {
208
+ enumerable: false,
209
+ configurable: true,
210
+ writable: true,
211
+ value: function (targetName, newNode) {
212
+ return this.insertNodeBeforeRecursive(this.layout, targetName, newNode);
213
+ }
214
+ });
158
215
  /**
159
216
  * Adds a child node to a parent node.
160
217
  *