@memberjunction/ng-core-entity-forms 5.4.1 → 5.6.0

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 (345) hide show
  1. package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
  2. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +6 -5
  3. package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
  4. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
  5. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +3 -2
  6. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
  7. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +22 -22
  8. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  9. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
  10. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +9 -8
  11. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
  12. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
  13. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +4 -3
  14. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
  15. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
  16. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +6 -5
  17. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
  18. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +10 -10
  19. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  20. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts.map +1 -1
  21. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +4 -3
  22. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
  23. package/dist/lib/custom/Entities/entity-form.component.d.ts +2 -0
  24. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  25. package/dist/lib/custom/Entities/entity-form.component.js +15 -11
  26. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  27. package/dist/lib/custom/Lists/list-form.component.js +7 -7
  28. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  29. package/dist/lib/custom/Queries/query-form.component.js +4 -4
  30. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  31. package/dist/lib/custom/Tests/test-suite-form.component.d.ts +4 -0
  32. package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
  33. package/dist/lib/custom/Tests/test-suite-form.component.js +13 -5
  34. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  35. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
  36. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +3 -2
  37. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  38. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
  39. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +4 -3
  40. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  41. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.d.ts.map +1 -1
  42. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +5 -4
  43. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
  44. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +1 -0
  45. package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
  46. package/dist/lib/custom/shared/entity-selector-dialog.component.js +7 -3
  47. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  48. package/dist/lib/generated/Entities/MJAIAction/mjaiaction.form.component.js +10 -10
  49. package/dist/lib/generated/Entities/MJAIAction/mjaiaction.form.component.js.map +1 -1
  50. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +90 -90
  51. package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
  52. package/dist/lib/generated/Entities/MJAIAgentNoteType/mjaiagentnotetype.form.component.js +6 -6
  53. package/dist/lib/generated/Entities/MJAIAgentNoteType/mjaiagentnotetype.form.component.js.map +1 -1
  54. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +11 -11
  55. package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
  56. package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js +3 -3
  57. package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js.map +1 -1
  58. package/dist/lib/generated/Entities/MJAIAgentStep/mjaiagentstep.form.component.js +13 -13
  59. package/dist/lib/generated/Entities/MJAIAgentStep/mjaiagentstep.form.component.js.map +1 -1
  60. package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js +6 -6
  61. package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js.map +1 -1
  62. package/dist/lib/generated/Entities/MJAIArchitecture/mjaiarchitecture.form.component.js +4 -4
  63. package/dist/lib/generated/Entities/MJAIArchitecture/mjaiarchitecture.form.component.js.map +1 -1
  64. package/dist/lib/generated/Entities/MJAIConfiguration/mjaiconfiguration.form.component.js +13 -13
  65. package/dist/lib/generated/Entities/MJAIConfiguration/mjaiconfiguration.form.component.js.map +1 -1
  66. package/dist/lib/generated/Entities/MJAIModality/mjaimodality.form.component.js +23 -23
  67. package/dist/lib/generated/Entities/MJAIModality/mjaimodality.form.component.js.map +1 -1
  68. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js +58 -58
  69. package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js.map +1 -1
  70. package/dist/lib/generated/Entities/MJAIModelPriceType/mjaimodelpricetype.form.component.js +3 -3
  71. package/dist/lib/generated/Entities/MJAIModelPriceType/mjaimodelpricetype.form.component.js.map +1 -1
  72. package/dist/lib/generated/Entities/MJAIModelPriceUnitType/mjaimodelpriceunittype.form.component.js +3 -3
  73. package/dist/lib/generated/Entities/MJAIModelPriceUnitType/mjaimodelpriceunittype.form.component.js.map +1 -1
  74. package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.js +10 -10
  75. package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.js.map +1 -1
  76. package/dist/lib/generated/Entities/MJAIModelVendor/mjaimodelvendor.form.component.js +3 -3
  77. package/dist/lib/generated/Entities/MJAIModelVendor/mjaimodelvendor.form.component.js.map +1 -1
  78. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +55 -55
  79. package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
  80. package/dist/lib/generated/Entities/MJAIPromptCategory/mjaipromptcategory.form.component.js +10 -10
  81. package/dist/lib/generated/Entities/MJAIPromptCategory/mjaipromptcategory.form.component.js.map +1 -1
  82. package/dist/lib/generated/Entities/MJAIPromptModel/mjaipromptmodel.form.component.js +3 -3
  83. package/dist/lib/generated/Entities/MJAIPromptModel/mjaipromptmodel.form.component.js.map +1 -1
  84. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +8 -8
  85. package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
  86. package/dist/lib/generated/Entities/MJAIPromptRunMedia/mjaipromptrunmedia.form.component.js +3 -3
  87. package/dist/lib/generated/Entities/MJAIPromptRunMedia/mjaipromptrunmedia.form.component.js.map +1 -1
  88. package/dist/lib/generated/Entities/MJAIPromptType/mjaiprompttype.form.component.js +6 -6
  89. package/dist/lib/generated/Entities/MJAIPromptType/mjaiprompttype.form.component.js.map +1 -1
  90. package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js +13 -13
  91. package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js.map +1 -1
  92. package/dist/lib/generated/Entities/MJAIVendorTypeDefinition/mjaivendortypedefinition.form.component.js +4 -4
  93. package/dist/lib/generated/Entities/MJAIVendorTypeDefinition/mjaivendortypedefinition.form.component.js.map +1 -1
  94. package/dist/lib/generated/Entities/MJAPIApplication/mjapiapplication.form.component.js +5 -5
  95. package/dist/lib/generated/Entities/MJAPIApplication/mjapiapplication.form.component.js.map +1 -1
  96. package/dist/lib/generated/Entities/MJAPIKey/mjapikey.form.component.js +5 -5
  97. package/dist/lib/generated/Entities/MJAPIKey/mjapikey.form.component.js.map +1 -1
  98. package/dist/lib/generated/Entities/MJAPIScope/mjapiscope.form.component.js +5 -5
  99. package/dist/lib/generated/Entities/MJAPIScope/mjapiscope.form.component.js.map +1 -1
  100. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +44 -44
  101. package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
  102. package/dist/lib/generated/Entities/MJActionCategory/mjactioncategory.form.component.js +11 -11
  103. package/dist/lib/generated/Entities/MJActionCategory/mjactioncategory.form.component.js.map +1 -1
  104. package/dist/lib/generated/Entities/MJActionContextType/mjactioncontexttype.form.component.js +6 -6
  105. package/dist/lib/generated/Entities/MJActionContextType/mjactioncontexttype.form.component.js.map +1 -1
  106. package/dist/lib/generated/Entities/MJActionFilter/mjactionfilter.form.component.js +6 -6
  107. package/dist/lib/generated/Entities/MJActionFilter/mjactionfilter.form.component.js.map +1 -1
  108. package/dist/lib/generated/Entities/MJActionParam/mjactionparam.form.component.js +10 -10
  109. package/dist/lib/generated/Entities/MJActionParam/mjactionparam.form.component.js.map +1 -1
  110. package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js +19 -19
  111. package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js.map +1 -1
  112. package/dist/lib/generated/Entities/MJArtifact/mjartifact.form.component.d.ts.map +1 -1
  113. package/dist/lib/generated/Entities/MJArtifact/mjartifact.form.component.js +8 -26
  114. package/dist/lib/generated/Entities/MJArtifact/mjartifact.form.component.js.map +1 -1
  115. package/dist/lib/generated/Entities/MJArtifactType/mjartifacttype.form.component.js +10 -10
  116. package/dist/lib/generated/Entities/MJArtifactType/mjartifacttype.form.component.js.map +1 -1
  117. package/dist/lib/generated/Entities/MJArtifactVersion/mjartifactversion.form.component.js +6 -6
  118. package/dist/lib/generated/Entities/MJArtifactVersion/mjartifactversion.form.component.js.map +1 -1
  119. package/dist/lib/generated/Entities/MJAuditLogType/mjauditlogtype.form.component.js +10 -10
  120. package/dist/lib/generated/Entities/MJAuditLogType/mjauditlogtype.form.component.js.map +1 -1
  121. package/dist/lib/generated/Entities/MJAuthorization/mjauthorization.form.component.js +19 -19
  122. package/dist/lib/generated/Entities/MJAuthorization/mjauthorization.form.component.js.map +1 -1
  123. package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js +5 -5
  124. package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js.map +1 -1
  125. package/dist/lib/generated/Entities/MJCommunicationBaseMessageType/mjcommunicationbasemessagetype.form.component.js +10 -10
  126. package/dist/lib/generated/Entities/MJCommunicationBaseMessageType/mjcommunicationbasemessagetype.form.component.js.map +1 -1
  127. package/dist/lib/generated/Entities/MJCommunicationProvider/mjcommunicationprovider.form.component.js +8 -8
  128. package/dist/lib/generated/Entities/MJCommunicationProvider/mjcommunicationprovider.form.component.js.map +1 -1
  129. package/dist/lib/generated/Entities/MJCommunicationProviderMessageType/mjcommunicationprovidermessagetype.form.component.js +6 -6
  130. package/dist/lib/generated/Entities/MJCommunicationProviderMessageType/mjcommunicationprovidermessagetype.form.component.js.map +1 -1
  131. package/dist/lib/generated/Entities/MJCommunicationRun/mjcommunicationrun.form.component.js +6 -6
  132. package/dist/lib/generated/Entities/MJCommunicationRun/mjcommunicationrun.form.component.js.map +1 -1
  133. package/dist/lib/generated/Entities/MJCompany/mjcompany.form.component.d.ts.map +1 -1
  134. package/dist/lib/generated/Entities/MJCompany/mjcompany.form.component.js +23 -41
  135. package/dist/lib/generated/Entities/MJCompany/mjcompany.form.component.js.map +1 -1
  136. package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js +18 -18
  137. package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js.map +1 -1
  138. package/dist/lib/generated/Entities/MJCompanyIntegrationRun/mjcompanyintegrationrun.form.component.js +14 -14
  139. package/dist/lib/generated/Entities/MJCompanyIntegrationRun/mjcompanyintegrationrun.form.component.js.map +1 -1
  140. package/dist/lib/generated/Entities/MJCompanyIntegrationRunDetail/mjcompanyintegrationrundetail.form.component.js +6 -6
  141. package/dist/lib/generated/Entities/MJCompanyIntegrationRunDetail/mjcompanyintegrationrundetail.form.component.js.map +1 -1
  142. package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js +15 -15
  143. package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js.map +1 -1
  144. package/dist/lib/generated/Entities/MJComponentLibrary/mjcomponentlibrary.form.component.js +3 -3
  145. package/dist/lib/generated/Entities/MJComponentLibrary/mjcomponentlibrary.form.component.js.map +1 -1
  146. package/dist/lib/generated/Entities/MJComponentRegistry/mjcomponentregistry.form.component.js +3 -3
  147. package/dist/lib/generated/Entities/MJComponentRegistry/mjcomponentregistry.form.component.js.map +1 -1
  148. package/dist/lib/generated/Entities/MJContentFileType/mjcontentfiletype.form.component.js +10 -10
  149. package/dist/lib/generated/Entities/MJContentFileType/mjcontentfiletype.form.component.js.map +1 -1
  150. package/dist/lib/generated/Entities/MJContentItem/mjcontentitem.form.component.js +10 -10
  151. package/dist/lib/generated/Entities/MJContentItem/mjcontentitem.form.component.js.map +1 -1
  152. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js +14 -14
  153. package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js.map +1 -1
  154. package/dist/lib/generated/Entities/MJContentSourceType/mjcontentsourcetype.form.component.js +10 -10
  155. package/dist/lib/generated/Entities/MJContentSourceType/mjcontentsourcetype.form.component.js.map +1 -1
  156. package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js +10 -10
  157. package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js.map +1 -1
  158. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +17 -17
  159. package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
  160. package/dist/lib/generated/Entities/MJConversationArtifact/mjconversationartifact.form.component.js +8 -8
  161. package/dist/lib/generated/Entities/MJConversationArtifact/mjconversationartifact.form.component.js.map +1 -1
  162. package/dist/lib/generated/Entities/MJConversationArtifactVersion/mjconversationartifactversion.form.component.js +6 -6
  163. package/dist/lib/generated/Entities/MJConversationArtifactVersion/mjconversationartifactversion.form.component.js.map +1 -1
  164. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +20 -20
  165. package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
  166. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +6 -6
  167. package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
  168. package/dist/lib/generated/Entities/MJCredentialCategory/mjcredentialcategory.form.component.js +4 -4
  169. package/dist/lib/generated/Entities/MJCredentialCategory/mjcredentialcategory.form.component.js.map +1 -1
  170. package/dist/lib/generated/Entities/MJCredentialType/mjcredentialtype.form.component.js +5 -5
  171. package/dist/lib/generated/Entities/MJCredentialType/mjcredentialtype.form.component.js.map +1 -1
  172. package/dist/lib/generated/Entities/MJDashboard/mjdashboard.form.component.js +6 -6
  173. package/dist/lib/generated/Entities/MJDashboard/mjdashboard.form.component.js.map +1 -1
  174. package/dist/lib/generated/Entities/MJDashboardCategory/mjdashboardcategory.form.component.js +12 -12
  175. package/dist/lib/generated/Entities/MJDashboardCategory/mjdashboardcategory.form.component.js.map +1 -1
  176. package/dist/lib/generated/Entities/MJDataContext/mjdatacontext.form.component.js +14 -14
  177. package/dist/lib/generated/Entities/MJDataContext/mjdatacontext.form.component.js.map +1 -1
  178. package/dist/lib/generated/Entities/MJDataset/mjdataset.form.component.js +6 -6
  179. package/dist/lib/generated/Entities/MJDataset/mjdataset.form.component.js.map +1 -1
  180. package/dist/lib/generated/Entities/MJDuplicateRun/mjduplicaterun.form.component.js +6 -6
  181. package/dist/lib/generated/Entities/MJDuplicateRun/mjduplicaterun.form.component.js.map +1 -1
  182. package/dist/lib/generated/Entities/MJDuplicateRunDetail/mjduplicaterundetail.form.component.js +6 -6
  183. package/dist/lib/generated/Entities/MJDuplicateRunDetail/mjduplicaterundetail.form.component.js.map +1 -1
  184. package/dist/lib/generated/Entities/MJEmployee/mjemployee.form.component.js +22 -22
  185. package/dist/lib/generated/Entities/MJEmployee/mjemployee.form.component.js.map +1 -1
  186. package/dist/lib/generated/Entities/MJEncryptionAlgorithm/mjencryptionalgorithm.form.component.js +3 -3
  187. package/dist/lib/generated/Entities/MJEncryptionAlgorithm/mjencryptionalgorithm.form.component.js.map +1 -1
  188. package/dist/lib/generated/Entities/MJEncryptionKey/mjencryptionkey.form.component.js +6 -6
  189. package/dist/lib/generated/Entities/MJEncryptionKey/mjencryptionkey.form.component.js.map +1 -1
  190. package/dist/lib/generated/Entities/MJEncryptionKeySource/mjencryptionkeysource.form.component.js +3 -3
  191. package/dist/lib/generated/Entities/MJEncryptionKeySource/mjencryptionkeysource.form.component.js.map +1 -1
  192. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +217 -217
  193. package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
  194. package/dist/lib/generated/Entities/MJEntityAction/mjentityaction.form.component.js +14 -14
  195. package/dist/lib/generated/Entities/MJEntityAction/mjentityaction.form.component.js.map +1 -1
  196. package/dist/lib/generated/Entities/MJEntityActionInvocationType/mjentityactioninvocationtype.form.component.js +6 -6
  197. package/dist/lib/generated/Entities/MJEntityActionInvocationType/mjentityactioninvocationtype.form.component.js.map +1 -1
  198. package/dist/lib/generated/Entities/MJEntityCommunicationMessageType/mjentitycommunicationmessagetype.form.component.js +6 -6
  199. package/dist/lib/generated/Entities/MJEntityCommunicationMessageType/mjentitycommunicationmessagetype.form.component.js.map +1 -1
  200. package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js +14 -14
  201. package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js.map +1 -1
  202. package/dist/lib/generated/Entities/MJEntityDocumentType/mjentitydocumenttype.form.component.js +6 -6
  203. package/dist/lib/generated/Entities/MJEntityDocumentType/mjentitydocumenttype.form.component.js.map +1 -1
  204. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js +3 -3
  205. package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js.map +1 -1
  206. package/dist/lib/generated/Entities/MJEntityRelationshipDisplayComponent/mjentityrelationshipdisplaycomponent.form.component.js +6 -6
  207. package/dist/lib/generated/Entities/MJEntityRelationshipDisplayComponent/mjentityrelationshipdisplaycomponent.form.component.js.map +1 -1
  208. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js +18 -18
  209. package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js.map +1 -1
  210. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +9 -9
  211. package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
  212. package/dist/lib/generated/Entities/MJFileCategory/mjfilecategory.form.component.js +10 -10
  213. package/dist/lib/generated/Entities/MJFileCategory/mjfilecategory.form.component.js.map +1 -1
  214. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js +12 -12
  215. package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
  216. package/dist/lib/generated/Entities/MJGeneratedCodeCategory/mjgeneratedcodecategory.form.component.js +10 -10
  217. package/dist/lib/generated/Entities/MJGeneratedCodeCategory/mjgeneratedcodecategory.form.component.js.map +1 -1
  218. package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js +14 -14
  219. package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js.map +1 -1
  220. package/dist/lib/generated/Entities/MJLibrary/mjlibrary.form.component.js +10 -10
  221. package/dist/lib/generated/Entities/MJLibrary/mjlibrary.form.component.js.map +1 -1
  222. package/dist/lib/generated/Entities/MJList/mjlist.form.component.js +12 -12
  223. package/dist/lib/generated/Entities/MJList/mjlist.form.component.js.map +1 -1
  224. package/dist/lib/generated/Entities/MJListCategory/mjlistcategory.form.component.js +10 -10
  225. package/dist/lib/generated/Entities/MJListCategory/mjlistcategory.form.component.js.map +1 -1
  226. package/dist/lib/generated/Entities/MJMCPServer/mjmcpserver.form.component.js +5 -5
  227. package/dist/lib/generated/Entities/MJMCPServer/mjmcpserver.form.component.js.map +1 -1
  228. package/dist/lib/generated/Entities/MJMCPServerConnection/mjmcpserverconnection.form.component.js +8 -8
  229. package/dist/lib/generated/Entities/MJMCPServerConnection/mjmcpserverconnection.form.component.js.map +1 -1
  230. package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js +4 -4
  231. package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js.map +1 -1
  232. package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js +16 -16
  233. package/dist/lib/generated/Entities/MJOpenApp/mjopenapp.form.component.js.map +1 -1
  234. package/dist/lib/generated/Entities/MJOutputDeliveryType/mjoutputdeliverytype.form.component.js +6 -6
  235. package/dist/lib/generated/Entities/MJOutputDeliveryType/mjoutputdeliverytype.form.component.js.map +1 -1
  236. package/dist/lib/generated/Entities/MJOutputFormatType/mjoutputformattype.form.component.js +6 -6
  237. package/dist/lib/generated/Entities/MJOutputFormatType/mjoutputformattype.form.component.js.map +1 -1
  238. package/dist/lib/generated/Entities/MJOutputTriggerType/mjoutputtriggertype.form.component.js +6 -6
  239. package/dist/lib/generated/Entities/MJOutputTriggerType/mjoutputtriggertype.form.component.js.map +1 -1
  240. package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js +8 -8
  241. package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js.map +1 -1
  242. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.d.ts.map +1 -1
  243. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js +74 -54
  244. package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js.map +1 -1
  245. package/dist/lib/generated/Entities/MJQueryCategory/mjquerycategory.form.component.js +10 -10
  246. package/dist/lib/generated/Entities/MJQueryCategory/mjquerycategory.form.component.js.map +1 -1
  247. package/dist/lib/generated/Entities/MJQuerySQL/mjquerysql.form.component.d.ts +10 -0
  248. package/dist/lib/generated/Entities/MJQuerySQL/mjquerysql.form.component.d.ts.map +1 -0
  249. package/dist/lib/generated/Entities/MJQuerySQL/mjquerysql.form.component.js +63 -0
  250. package/dist/lib/generated/Entities/MJQuerySQL/mjquerysql.form.component.js.map +1 -0
  251. package/dist/lib/generated/Entities/MJQueue/mjqueue.form.component.js +6 -6
  252. package/dist/lib/generated/Entities/MJQueue/mjqueue.form.component.js.map +1 -1
  253. package/dist/lib/generated/Entities/MJQueueType/mjqueuetype.form.component.js +6 -6
  254. package/dist/lib/generated/Entities/MJQueueType/mjqueuetype.form.component.js.map +1 -1
  255. package/dist/lib/generated/Entities/MJRecommendation/mjrecommendation.form.component.js +6 -6
  256. package/dist/lib/generated/Entities/MJRecommendation/mjrecommendation.form.component.js.map +1 -1
  257. package/dist/lib/generated/Entities/MJRecommendationProvider/mjrecommendationprovider.form.component.js +6 -6
  258. package/dist/lib/generated/Entities/MJRecommendationProvider/mjrecommendationprovider.form.component.js.map +1 -1
  259. package/dist/lib/generated/Entities/MJRecommendationRun/mjrecommendationrun.form.component.js +6 -6
  260. package/dist/lib/generated/Entities/MJRecommendationRun/mjrecommendationrun.form.component.js.map +1 -1
  261. package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js +3 -3
  262. package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js.map +1 -1
  263. package/dist/lib/generated/Entities/MJRecordChangeReplayRun/mjrecordchangereplayrun.form.component.js +6 -6
  264. package/dist/lib/generated/Entities/MJRecordChangeReplayRun/mjrecordchangereplayrun.form.component.js.map +1 -1
  265. package/dist/lib/generated/Entities/MJRecordMergeLog/mjrecordmergelog.form.component.js +10 -10
  266. package/dist/lib/generated/Entities/MJRecordMergeLog/mjrecordmergelog.form.component.js.map +1 -1
  267. package/dist/lib/generated/Entities/MJReport/mjreport.form.component.js +8 -8
  268. package/dist/lib/generated/Entities/MJReport/mjreport.form.component.js.map +1 -1
  269. package/dist/lib/generated/Entities/MJReportCategory/mjreportcategory.form.component.js +10 -10
  270. package/dist/lib/generated/Entities/MJReportCategory/mjreportcategory.form.component.js.map +1 -1
  271. package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js +18 -18
  272. package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js.map +1 -1
  273. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js +28 -28
  274. package/dist/lib/generated/Entities/MJRole/mjrole.form.component.js.map +1 -1
  275. package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js +6 -6
  276. package/dist/lib/generated/Entities/MJRowLevelSecurityFilter/mjrowlevelsecurityfilter.form.component.js.map +1 -1
  277. package/dist/lib/generated/Entities/MJSQLDialect/mjsqldialect.form.component.d.ts +10 -0
  278. package/dist/lib/generated/Entities/MJSQLDialect/mjsqldialect.form.component.d.ts.map +1 -0
  279. package/dist/lib/generated/Entities/MJSQLDialect/mjsqldialect.form.component.js +109 -0
  280. package/dist/lib/generated/Entities/MJSQLDialect/mjsqldialect.form.component.js.map +1 -0
  281. package/dist/lib/generated/Entities/MJScheduledAction/mjscheduledaction.form.component.js +6 -6
  282. package/dist/lib/generated/Entities/MJScheduledAction/mjscheduledaction.form.component.js.map +1 -1
  283. package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js +3 -3
  284. package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js.map +1 -1
  285. package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js +3 -3
  286. package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js.map +1 -1
  287. package/dist/lib/generated/Entities/MJScheduledJobType/mjscheduledjobtype.form.component.js +3 -3
  288. package/dist/lib/generated/Entities/MJScheduledJobType/mjscheduledjobtype.form.component.js.map +1 -1
  289. package/dist/lib/generated/Entities/MJSkill/mjskill.form.component.js +10 -10
  290. package/dist/lib/generated/Entities/MJSkill/mjskill.form.component.js.map +1 -1
  291. package/dist/lib/generated/Entities/MJTag/mjtag.form.component.js +10 -10
  292. package/dist/lib/generated/Entities/MJTag/mjtag.form.component.js.map +1 -1
  293. package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js +16 -16
  294. package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js.map +1 -1
  295. package/dist/lib/generated/Entities/MJTaskType/mjtasktype.form.component.js +3 -3
  296. package/dist/lib/generated/Entities/MJTaskType/mjtasktype.form.component.js.map +1 -1
  297. package/dist/lib/generated/Entities/MJTemplate/mjtemplate.form.component.js +34 -34
  298. package/dist/lib/generated/Entities/MJTemplate/mjtemplate.form.component.js.map +1 -1
  299. package/dist/lib/generated/Entities/MJTemplateCategory/mjtemplatecategory.form.component.js +10 -10
  300. package/dist/lib/generated/Entities/MJTemplateCategory/mjtemplatecategory.form.component.js.map +1 -1
  301. package/dist/lib/generated/Entities/MJTemplateContent/mjtemplatecontent.form.component.js +6 -6
  302. package/dist/lib/generated/Entities/MJTemplateContent/mjtemplatecontent.form.component.js.map +1 -1
  303. package/dist/lib/generated/Entities/MJTemplateContentType/mjtemplatecontenttype.form.component.js +6 -6
  304. package/dist/lib/generated/Entities/MJTemplateContentType/mjtemplatecontenttype.form.component.js.map +1 -1
  305. package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js +4 -4
  306. package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js.map +1 -1
  307. package/dist/lib/generated/Entities/MJTestRun/mjtestrun.form.component.js +14 -14
  308. package/dist/lib/generated/Entities/MJTestRun/mjtestrun.form.component.js.map +1 -1
  309. package/dist/lib/generated/Entities/MJTestRunOutputType/mjtestrunoutputtype.form.component.js +3 -3
  310. package/dist/lib/generated/Entities/MJTestRunOutputType/mjtestrunoutputtype.form.component.js.map +1 -1
  311. package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js +5 -5
  312. package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js.map +1 -1
  313. package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js +3 -3
  314. package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js.map +1 -1
  315. package/dist/lib/generated/Entities/MJTestType/mjtesttype.form.component.js +4 -4
  316. package/dist/lib/generated/Entities/MJTestType/mjtesttype.form.component.js.map +1 -1
  317. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +334 -334
  318. package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
  319. package/dist/lib/generated/Entities/MJUserApplication/mjuserapplication.form.component.js +6 -6
  320. package/dist/lib/generated/Entities/MJUserApplication/mjuserapplication.form.component.js.map +1 -1
  321. package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js +7 -7
  322. package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js.map +1 -1
  323. package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js +14 -14
  324. package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js.map +1 -1
  325. package/dist/lib/generated/Entities/MJUserViewCategory/mjuserviewcategory.form.component.js +10 -10
  326. package/dist/lib/generated/Entities/MJUserViewCategory/mjuserviewcategory.form.component.js.map +1 -1
  327. package/dist/lib/generated/Entities/MJUserViewRun/mjuserviewrun.form.component.js +6 -6
  328. package/dist/lib/generated/Entities/MJUserViewRun/mjuserviewrun.form.component.js.map +1 -1
  329. package/dist/lib/generated/Entities/MJVectorDatabase/mjvectordatabase.form.component.js +10 -10
  330. package/dist/lib/generated/Entities/MJVectorDatabase/mjvectordatabase.form.component.js.map +1 -1
  331. package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js +6 -6
  332. package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js.map +1 -1
  333. package/dist/lib/generated/Entities/MJVersionLabel/mjversionlabel.form.component.js +18 -18
  334. package/dist/lib/generated/Entities/MJVersionLabel/mjversionlabel.form.component.js.map +1 -1
  335. package/dist/lib/generated/Entities/MJWorkflow/mjworkflow.form.component.js +10 -10
  336. package/dist/lib/generated/Entities/MJWorkflow/mjworkflow.form.component.js.map +1 -1
  337. package/dist/lib/generated/Entities/MJWorkflowEngine/mjworkflowengine.form.component.js +6 -6
  338. package/dist/lib/generated/Entities/MJWorkflowEngine/mjworkflowengine.form.component.js.map +1 -1
  339. package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.js +6 -6
  340. package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.js.map +1 -1
  341. package/dist/lib/generated/generated-forms.module.d.ts +80 -78
  342. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  343. package/dist/lib/generated/generated-forms.module.js +25 -19
  344. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  345. package/package.json +30 -30
@@ -6,7 +6,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
6
6
  };
7
7
  import { Component, ChangeDetectionStrategy, inject } from '@angular/core';
8
8
  import { Subject, debounceTime } from 'rxjs';
9
- import { RegisterClass } from '@memberjunction/global';
9
+ import { RegisterClass, UUIDsEqual } from '@memberjunction/global';
10
10
  import { BaseFormComponent } from '@memberjunction/ng-base-forms';
11
11
  import { SharedService } from '@memberjunction/ng-shared';
12
12
  import { MJListFormComponent } from '../../generated/Entities/MJList/mjlist.form.component';
@@ -1011,7 +1011,7 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
1011
1011
  try {
1012
1012
  // Load entity info for context
1013
1013
  if (this.record?.EntityID) {
1014
- this.entityInfo = this.metadata.Entities.find(e => e.ID === this.record.EntityID) || null;
1014
+ this.entityInfo = this.metadata.Entities.find(e => UUIDsEqual(e.ID, this.record.EntityID)) || null;
1015
1015
  }
1016
1016
  // Load categories for dropdown
1017
1017
  await this.loadCategories();
@@ -1204,7 +1204,7 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
1204
1204
  return;
1205
1205
  try {
1206
1206
  for (const id of this.selectedItems) {
1207
- const item = this.listItems.find(i => i.detail.ID === id);
1207
+ const item = this.listItems.find(i => UUIDsEqual(i.detail.ID, id));
1208
1208
  if (item) {
1209
1209
  await item.detail.Delete();
1210
1210
  }
@@ -1283,7 +1283,7 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
1283
1283
  get categoryName() {
1284
1284
  if (!this.record?.CategoryID)
1285
1285
  return 'Uncategorized';
1286
- const category = this.categories.find(c => c.ID === this.record.CategoryID);
1286
+ const category = this.categories.find(c => UUIDsEqual(c.ID, this.record.CategoryID));
1287
1287
  return category?.Name || 'Unknown';
1288
1288
  }
1289
1289
  get formattedItemCount() {
@@ -1308,7 +1308,7 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
1308
1308
  return this.record?.User || 'Unknown';
1309
1309
  }
1310
1310
  isCurrentUserOwner() {
1311
- return this.record?.UserID === this.metadata.CurrentUser?.ID;
1311
+ return UUIDsEqual(this.record?.UserID, this.metadata.CurrentUser?.ID);
1312
1312
  }
1313
1313
  async onCategoryChange(categoryId) {
1314
1314
  this.record.CategoryID = categoryId;
@@ -1500,7 +1500,7 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
1500
1500
  this.cdr.markForCheck();
1501
1501
  }
1502
1502
  toggleViewSelection(view) {
1503
- const index = this.userViewsToAdd.findIndex(v => v.ID === view.ID);
1503
+ const index = this.userViewsToAdd.findIndex(v => UUIDsEqual(v.ID, view.ID));
1504
1504
  if (index >= 0) {
1505
1505
  this.userViewsToAdd.splice(index, 1);
1506
1506
  }
@@ -1510,7 +1510,7 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
1510
1510
  this.cdr.markForCheck();
1511
1511
  }
1512
1512
  isViewSelected(view) {
1513
- return this.userViewsToAdd.some(v => v.ID === view.ID);
1513
+ return this.userViewsToAdd.some(v => UUIDsEqual(v.ID, view.ID));
1514
1514
  }
1515
1515
  async confirmAddFromView() {
1516
1516
  if (!this.record || this.userViewsToAdd.length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"list-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/Lists/list-form.component.ts","../../../../src/lib/custom/Lists/list-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { Subject, debounceTime } from 'rxjs';\nimport { RegisterClass } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { MJListFormComponent } from '../../generated/Entities/MJList/mjlist.form.component';\nimport { MJListEntity, MJListDetailEntity, MJListDetailEntityExtended, MJListCategoryEntity, MJUserViewEntityExtended } from '@memberjunction/core-entities';\nimport { Metadata, RunView, RunViewResult, EntityInfo, LogError, LogStatus } from '@memberjunction/core';\nimport { ListShareDialogConfig, ListShareDialogResult } from '@memberjunction/ng-list-management';\n\nexport type ListSection = 'overview' | 'items' | 'sharing' | 'activity' | 'settings';\n\nexport interface ListItemViewModel {\n detail: MJListDetailEntity;\n recordName: string;\n isLoading: boolean;\n}\n\nexport interface ListStats {\n itemCount: number;\n shareCount: number;\n invitationCount: number;\n lastUpdated: Date | null;\n}\n\n/**\n * Represents a record that can be added to a list\n */\nexport interface AddableRecord {\n ID: string;\n Name: string;\n isInList: boolean;\n isSelected: boolean;\n}\n\n/**\n * World-class List form component that provides a rich exploration experience\n * for managing lists in the MemberJunction system.\n *\n * Features:\n * - Overview with visual stats and entity context\n * - Items grid with inline record navigation\n * - Sharing management (coming soon)\n * - Activity history\n * - Settings and configuration\n */\n@RegisterClass(BaseFormComponent, 'MJ: Lists')\n@Component({\n standalone: false,\n selector: 'mj-list-form-extended',\n templateUrl: './list-form.component.html',\n styleUrls: ['./list-form.component.css', '../../../shared/form-styles.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MJListFormComponentExtended extends MJListFormComponent implements OnInit, OnDestroy {\n private sharedService = inject(SharedService);\n\n public override record!: MJListEntity;\n\n // Navigation\n public activeSection: ListSection = 'overview';\n public navItems = [\n { id: 'overview' as ListSection, icon: 'fa-solid fa-house', label: 'Overview' },\n { id: 'items' as ListSection, icon: 'fa-solid fa-list', label: 'Items', badge: 0 },\n { id: 'sharing' as ListSection, icon: 'fa-solid fa-share-nodes', label: 'Sharing', badge: 0, disabled: false },\n { id: 'activity' as ListSection, icon: 'fa-solid fa-clock-rotate-left', label: 'Activity' },\n { id: 'settings' as ListSection, icon: 'fa-solid fa-gear', label: 'Settings' }\n ];\n\n // Data\n public listItems: ListItemViewModel[] = [];\n public categories: MJListCategoryEntity[] = [];\n public entityInfo: EntityInfo | null = null;\n public stats: ListStats = {\n itemCount: 0,\n shareCount: 0,\n invitationCount: 0,\n lastUpdated: null\n };\n\n // Loading states\n public isLoadingItems = false;\n public isLoadingStats = false;\n public explorerError: string | null = null;\n\n // Items section\n public itemSearchTerm = '';\n public selectedItems = new Set<string>();\n public isSelectAllChecked = false;\n\n // Edit state\n public isEditingName = false;\n public isEditingDescription = false;\n public editingName = '';\n public editingDescription = '';\n\n // Add Records dialog\n public showAddRecordsDialog = false;\n public addDialogLoading = false;\n public addDialogSaving = false;\n public addableRecords: AddableRecord[] = [];\n public addRecordsSearchFilter = '';\n public existingListDetailIds = new Set<string>();\n public addProgress = 0;\n public addTotal = 0;\n private searchSubject = new Subject<string>();\n\n // Add From View dialog\n public showAddFromViewDialog = false;\n public showAddFromViewLoader = false;\n public userViews: MJUserViewEntityExtended[] | null = null;\n public userViewsToAdd: MJUserViewEntityExtended[] = [];\n public addFromViewProgress = 0;\n public addFromViewTotal = 0;\n public fetchingRecordsToSave = false;\n\n // Share dialog\n public showShareDialog = false;\n public shareDialogConfig: ListShareDialogConfig | null = null;\n\n private destroy$ = new Subject<void>();\n private metadata = new Metadata();\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n\n // Set up search debounce\n this.searchSubject\n .pipe(debounceTime(300))\n .subscribe((searchText) => this.searchRecords(searchText));\n\n await this.loadExplorerData();\n }\n\n // Helper to show notifications using SharedService's deprecated method\n private showNotification(message: string, style: 'success' | 'error' | 'info' = 'info', duration: number = 3000): void {\n this.sharedService.CreateSimpleNotification(message, style, duration);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private async loadExplorerData(): Promise<void> {\n try {\n // Load entity info for context\n if (this.record?.EntityID) {\n this.entityInfo = this.metadata.Entities.find(e => e.ID === this.record.EntityID) || null;\n }\n\n // Load categories for dropdown\n await this.loadCategories();\n\n // Load items and stats in parallel\n await Promise.all([\n this.loadItems(),\n this.loadStats()\n ]);\n\n this.updateNavBadges();\n } catch (error) {\n console.error('Error loading list data:', error);\n this.explorerError = 'Failed to load list data';\n } finally {\n this.cdr.markForCheck();\n }\n }\n\n private async loadCategories(): Promise<void> {\n const rv = new RunView();\n const result = await rv.RunView<MJListCategoryEntity>({\n EntityName: 'MJ: List Categories',\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n if (result.Success) {\n this.categories = result.Results;\n }\n }\n\n private async loadItems(): Promise<void> {\n if (!this.record?.IsSaved) return;\n\n this.isLoadingItems = true;\n this.cdr.markForCheck();\n\n try {\n const rv = new RunView();\n const result = await rv.RunView<MJListDetailEntity>({\n EntityName: 'MJ: List Details',\n ExtraFilter: `ListID = '${this.record.ID}'`,\n OrderBy: '__mj_CreatedAt DESC',\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.listItems = result.Results.map(detail => ({\n detail,\n recordName: detail.RecordID || 'Loading...',\n isLoading: true\n }));\n\n // Load record names asynchronously\n this.loadRecordNames();\n }\n } catch (error) {\n console.error('Error loading list items:', error);\n } finally {\n this.isLoadingItems = false;\n this.cdr.markForCheck();\n }\n }\n\n private async loadRecordNames(): Promise<void> {\n if (!this.entityInfo) return;\n\n const rv = new RunView();\n // Get the name field - NameField is EntityFieldInfo or undefined\n const nameFieldInfo = this.entityInfo.NameField;\n const nameFieldName = nameFieldInfo ? nameFieldInfo.Name : 'ID';\n\n for (const item of this.listItems) {\n try {\n const result = await rv.RunView({\n EntityName: this.entityInfo.Name,\n ExtraFilter: `ID = '${item.detail.RecordID}'`,\n Fields: [nameFieldName],\n ResultType: 'simple',\n MaxRows: 1\n });\n\n if (result.Success && result.Results.length > 0) {\n const record = result.Results[0] as Record<string, string>;\n item.recordName = record[nameFieldName] || item.detail.RecordID || '';\n }\n } catch (error) {\n item.recordName = item.detail.RecordID || 'Unknown';\n } finally {\n item.isLoading = false;\n }\n }\n this.cdr.markForCheck();\n }\n\n private async loadStats(): Promise<void> {\n if (!this.record?.IsSaved) return;\n\n this.isLoadingStats = true;\n\n try {\n const rv = new RunView();\n const [itemsResult, sharesResult, invitationsResult] = await rv.RunViews([\n {\n EntityName: 'MJ: List Details',\n ExtraFilter: `ListID = '${this.record.ID}'`,\n ResultType: 'count_only'\n },\n {\n EntityName: 'MJ: List Shares',\n ExtraFilter: `ListID = '${this.record.ID}'`,\n ResultType: 'count_only'\n },\n {\n EntityName: 'MJ: List Invitations',\n ExtraFilter: `ListID = '${this.record.ID}'`,\n ResultType: 'count_only'\n }\n ]);\n\n this.stats = {\n itemCount: itemsResult.Success ? itemsResult.TotalRowCount : 0,\n shareCount: sharesResult.Success ? sharesResult.TotalRowCount : 0,\n invitationCount: invitationsResult.Success ? invitationsResult.TotalRowCount : 0,\n lastUpdated: this.record.__mj_UpdatedAt\n };\n } catch (error) {\n console.error('Error loading stats:', error);\n } finally {\n this.isLoadingStats = false;\n this.cdr.markForCheck();\n }\n }\n\n private updateNavBadges(): void {\n this.navItems = this.navItems.map(item => {\n switch (item.id) {\n case 'items':\n return { ...item, badge: this.stats.itemCount };\n case 'sharing':\n return { ...item, badge: this.stats.shareCount + this.stats.invitationCount };\n default:\n return item;\n }\n });\n }\n\n // === Navigation ===\n\n public setActiveSection(section: ListSection): void {\n const navItem = this.navItems.find(n => n.id === section);\n if (navItem?.disabled) return;\n\n this.activeSection = section;\n this.cdr.markForCheck();\n }\n\n // === Items Management ===\n\n public get filteredItems(): ListItemViewModel[] {\n if (!this.itemSearchTerm) return this.listItems;\n\n const term = this.itemSearchTerm.toLowerCase();\n return this.listItems.filter(item =>\n item.recordName.toLowerCase().includes(term) ||\n item.detail.RecordID?.toLowerCase().includes(term)\n );\n }\n\n public toggleItemSelection(item: ListItemViewModel): void {\n const id = item.detail.ID;\n if (this.selectedItems.has(id)) {\n this.selectedItems.delete(id);\n } else {\n this.selectedItems.add(id);\n }\n this.updateSelectAllState();\n this.cdr.markForCheck();\n }\n\n public toggleSelectAll(): void {\n if (this.isSelectAllChecked) {\n this.selectedItems.clear();\n } else {\n for (const item of this.filteredItems) {\n this.selectedItems.add(item.detail.ID);\n }\n }\n this.isSelectAllChecked = !this.isSelectAllChecked;\n this.cdr.markForCheck();\n }\n\n private updateSelectAllState(): void {\n this.isSelectAllChecked = this.filteredItems.length > 0 &&\n this.filteredItems.every(item => this.selectedItems.has(item.detail.ID));\n }\n\n public async removeSelectedItems(): Promise<void> {\n if (this.selectedItems.size === 0) return;\n\n const count = this.selectedItems.size;\n const confirmMessage = `Remove ${count} item${count > 1 ? 's' : ''} from this list?`;\n\n if (!confirm(confirmMessage)) return;\n\n try {\n for (const id of this.selectedItems) {\n const item = this.listItems.find(i => i.detail.ID === id);\n if (item) {\n await item.detail.Delete();\n }\n }\n\n this.showNotification(\n `Removed ${count} item${count > 1 ? 's' : ''} from list`,\n 'success',\n 3000\n );\n\n this.selectedItems.clear();\n await this.loadItems();\n await this.loadStats();\n this.updateNavBadges();\n } catch (error) {\n console.error('Error removing items:', error);\n this.showNotification(\n 'Error removing items from list',\n 'error',\n 4000\n );\n }\n }\n\n public openRecord(item: ListItemViewModel): void {\n if (!this.entityInfo || !item.detail.RecordID) return;\n\n // Use SharedService to open the record\n this.sharedService.InvokeManualResize();\n }\n\n // === Inline Editing ===\n\n public startEditingName(): void {\n this.editingName = this.record.Name;\n this.isEditingName = true;\n this.cdr.markForCheck();\n }\n\n public async saveNameEdit(): Promise<void> {\n if (!this.editingName.trim()) {\n this.cancelNameEdit();\n return;\n }\n\n this.record.Name = this.editingName.trim();\n const saved = await this.record.Save();\n\n if (saved) {\n this.showNotification('Name updated', 'success', 2000);\n } else {\n this.showNotification('Failed to update name', 'error', 3000);\n }\n\n this.isEditingName = false;\n this.cdr.markForCheck();\n }\n\n public cancelNameEdit(): void {\n this.isEditingName = false;\n this.cdr.markForCheck();\n }\n\n public startEditingDescription(): void {\n this.editingDescription = this.record.Description || '';\n this.isEditingDescription = true;\n this.cdr.markForCheck();\n }\n\n public async saveDescriptionEdit(): Promise<void> {\n this.record.Description = this.editingDescription.trim() || null;\n const saved = await this.record.Save();\n\n if (saved) {\n this.showNotification('Description updated', 'success', 2000);\n } else {\n this.showNotification('Failed to update description', 'error', 3000);\n }\n\n this.isEditingDescription = false;\n this.cdr.markForCheck();\n }\n\n public cancelDescriptionEdit(): void {\n this.isEditingDescription = false;\n this.cdr.markForCheck();\n }\n\n // === Helpers ===\n\n public get entityDisplayName(): string {\n return this.entityInfo?.DisplayName || this.entityInfo?.Name || this.record?.Entity || 'Unknown';\n }\n\n public get entityIcon(): string {\n return this.entityInfo?.Icon || 'fa-solid fa-table';\n }\n\n public get categoryName(): string {\n if (!this.record?.CategoryID) return 'Uncategorized';\n const category = this.categories.find(c => c.ID === this.record.CategoryID);\n return category?.Name || 'Unknown';\n }\n\n public get formattedItemCount(): string {\n return this.stats.itemCount.toLocaleString();\n }\n\n public get formattedLastUpdated(): string {\n if (!this.stats.lastUpdated) return 'Never';\n const date = new Date(this.stats.lastUpdated);\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffDays === 0) return 'Today';\n if (diffDays === 1) return 'Yesterday';\n if (diffDays < 7) return `${diffDays} days ago`;\n return date.toLocaleDateString();\n }\n\n public getOwnerName(): string {\n return this.record?.User || 'Unknown';\n }\n\n public isCurrentUserOwner(): boolean {\n return this.record?.UserID === this.metadata.CurrentUser?.ID;\n }\n\n public async onCategoryChange(categoryId: string | null): Promise<void> {\n this.record.CategoryID = categoryId;\n const saved = await this.record.Save();\n\n if (saved) {\n this.showNotification('Category updated', 'success', 2000);\n } else {\n this.showNotification('Failed to update category', 'error', 3000);\n }\n\n this.cdr.markForCheck();\n }\n\n public async refreshItems(): Promise<void> {\n await this.loadItems();\n await this.loadStats();\n this.updateNavBadges();\n }\n\n // ==========================================\n // Add Records Dialog\n // ==========================================\n\n public async openAddRecordsDialog(): Promise<void> {\n this.showAddRecordsDialog = true;\n this.addableRecords = [];\n this.addRecordsSearchFilter = '';\n this.addDialogLoading = true;\n this.addDialogSaving = false;\n\n // Load existing list detail IDs to mark which records are already in the list\n await this.loadExistingListDetailIds();\n this.addDialogLoading = false;\n this.cdr.markForCheck();\n }\n\n public closeAddRecordsDialog(): void {\n this.showAddRecordsDialog = false;\n this.addableRecords = [];\n this.addRecordsSearchFilter = '';\n this.existingListDetailIds.clear();\n this.addDialogSaving = false;\n this.addProgress = 0;\n this.addTotal = 0;\n this.cdr.markForCheck();\n }\n\n private async loadExistingListDetailIds(): Promise<void> {\n if (!this.record) return;\n\n const rv = new RunView();\n const result = await rv.RunView<{ RecordID: string }>({\n EntityName: 'MJ: List Details',\n ExtraFilter: `ListID = '${this.record.ID}'`,\n Fields: ['RecordID'],\n ResultType: 'simple'\n }, this.metadata.CurrentUser);\n\n if (result.Success) {\n this.existingListDetailIds = new Set(result.Results.map(r => r.RecordID));\n }\n }\n\n public onAddRecordsSearchChange(value: string): void {\n this.addRecordsSearchFilter = value;\n this.searchSubject.next(value);\n }\n\n private async searchRecords(searchText: string): Promise<void> {\n if (!this.record || !searchText || searchText.length < 2) {\n this.addableRecords = [];\n this.cdr.markForCheck();\n return;\n }\n\n this.addDialogLoading = true;\n this.cdr.markForCheck();\n\n const sourceEntityInfo = this.metadata.EntityByID(this.record.EntityID);\n if (!sourceEntityInfo) {\n this.addDialogLoading = false;\n this.cdr.markForCheck();\n return;\n }\n\n const nameField = sourceEntityInfo.Fields.find(field => field.IsNameField);\n const pkField = sourceEntityInfo.FirstPrimaryKey?.Name || 'ID';\n\n let filter: string | undefined;\n if (nameField) {\n filter = `${nameField.Name} LIKE '%${searchText}%'`;\n }\n\n const rv = new RunView();\n const result: RunViewResult = await rv.RunView({\n EntityName: this.record.Entity,\n ExtraFilter: filter,\n MaxRows: 100,\n ResultType: 'simple'\n });\n\n if (result.Success) {\n this.addableRecords = result.Results.map((record: Record<string, unknown>) => {\n const recordId = String(record[pkField]);\n return {\n ID: recordId,\n Name: nameField ? String(record[nameField.Name]) : recordId,\n isInList: this.existingListDetailIds.has(recordId),\n isSelected: false\n };\n });\n }\n\n this.addDialogLoading = false;\n this.cdr.markForCheck();\n }\n\n public toggleRecordSelection(record: AddableRecord): void {\n if (record.isInList) return; // Can't select records already in list\n record.isSelected = !record.isSelected;\n this.cdr.markForCheck();\n }\n\n public get selectedAddableRecords(): AddableRecord[] {\n return this.addableRecords.filter(r => r.isSelected);\n }\n\n public selectAllAddable(): void {\n this.addableRecords.forEach(r => {\n if (!r.isInList) r.isSelected = true;\n });\n this.cdr.markForCheck();\n }\n\n public deselectAllAddable(): void {\n this.addableRecords.forEach(r => r.isSelected = false);\n this.cdr.markForCheck();\n }\n\n public async confirmAddRecords(): Promise<void> {\n const recordsToAdd = this.selectedAddableRecords;\n if (recordsToAdd.length === 0 || !this.record) return;\n\n this.addDialogSaving = true;\n this.addTotal = recordsToAdd.length;\n this.addProgress = 0;\n this.cdr.markForCheck();\n\n // Use transaction group for bulk insert\n const tg = await this.metadata.CreateTransactionGroup();\n\n for (const record of recordsToAdd) {\n const listDetail = await this.metadata.GetEntityObject<MJListDetailEntityExtended>('MJ: List Details');\n listDetail.ListID = this.record.ID;\n listDetail.RecordID = record.ID;\n listDetail.TransactionGroup = tg;\n await listDetail.Save();\n }\n\n const success = await tg.Submit();\n\n if (success) {\n this.addProgress = this.addTotal;\n this.showNotification(\n `Added ${recordsToAdd.length} record${recordsToAdd.length !== 1 ? 's' : ''} to list`,\n 'success',\n 2500\n );\n this.closeAddRecordsDialog();\n await this.refreshItems();\n } else {\n LogError('Error adding records to list');\n this.showNotification('Failed to add some records', 'error', 2500);\n this.addDialogSaving = false;\n this.cdr.markForCheck();\n }\n }\n\n // ==========================================\n // Add From View Dialog\n // ==========================================\n\n public async openAddFromViewDialog(): Promise<void> {\n this.showAddFromViewDialog = true;\n this.userViewsToAdd = [];\n this.cdr.markForCheck();\n\n if (!this.userViews) {\n await this.loadEntityViews();\n }\n }\n\n public closeAddFromViewDialog(): void {\n this.showAddFromViewDialog = false;\n this.userViewsToAdd = [];\n this.showAddFromViewLoader = false;\n this.addFromViewProgress = 0;\n this.addFromViewTotal = 0;\n this.cdr.markForCheck();\n }\n\n private async loadEntityViews(): Promise<void> {\n if (!this.record || !this.record.Entity) return;\n\n this.showAddFromViewLoader = true;\n this.cdr.markForCheck();\n\n const rv = new RunView();\n const runViewResult = await rv.RunView<MJUserViewEntityExtended>({\n EntityName: 'MJ: User Views',\n ExtraFilter: `UserID = '${this.metadata.CurrentUser.ID}' AND EntityID = '${this.record.EntityID}'`,\n ResultType: 'entity_object'\n }, this.metadata.CurrentUser);\n\n if (!runViewResult.Success) {\n LogError(`Error loading User Views for entity ${this.record.Entity}`);\n } else {\n this.userViews = runViewResult.Results;\n }\n\n this.showAddFromViewLoader = false;\n this.cdr.markForCheck();\n }\n\n public toggleViewSelection(view: MJUserViewEntityExtended): void {\n const index = this.userViewsToAdd.findIndex(v => v.ID === view.ID);\n if (index >= 0) {\n this.userViewsToAdd.splice(index, 1);\n } else {\n this.userViewsToAdd.push(view);\n }\n this.cdr.markForCheck();\n }\n\n public isViewSelected(view: MJUserViewEntityExtended): boolean {\n return this.userViewsToAdd.some(v => v.ID === view.ID);\n }\n\n public async confirmAddFromView(): Promise<void> {\n if (!this.record || this.userViewsToAdd.length === 0) return;\n\n this.showAddFromViewLoader = true;\n this.fetchingRecordsToSave = true;\n this.cdr.markForCheck();\n\n const rv = new RunView();\n\n // Collect all unique record IDs from selected views\n const recordIdSet = new Set<string>();\n\n for (const userView of this.userViewsToAdd) {\n const runViewResult = await rv.RunView({\n EntityName: 'MJ: User Views',\n ViewEntity: userView,\n Fields: ['ID']\n }, this.metadata.CurrentUser);\n\n if (runViewResult.Success) {\n const records = runViewResult.Results as Array<{ ID: string }>;\n records.forEach(r => recordIdSet.add(r.ID));\n }\n }\n\n // Filter out records already in the list\n await this.loadExistingListDetailIds();\n const recordsToAdd = [...recordIdSet].filter(id => !this.existingListDetailIds.has(id));\n\n this.addFromViewTotal = recordsToAdd.length;\n this.addFromViewProgress = 0;\n this.fetchingRecordsToSave = false;\n this.cdr.markForCheck();\n\n if (recordsToAdd.length === 0) {\n this.showNotification('All records already in list', 'info', 2500);\n this.showAddFromViewLoader = false;\n this.cdr.markForCheck();\n return;\n }\n\n LogStatus(`Adding ${recordsToAdd.length} records to list`);\n\n // Use transaction group for bulk insert\n const tg = await this.metadata.CreateTransactionGroup();\n\n for (const recordID of recordsToAdd) {\n const listDetail = await this.metadata.GetEntityObject<MJListDetailEntityExtended>('MJ: List Details');\n listDetail.ListID = this.record.ID;\n listDetail.RecordID = recordID;\n listDetail.TransactionGroup = tg;\n await listDetail.Save();\n }\n\n const success = await tg.Submit();\n\n if (success) {\n this.addFromViewProgress = this.addFromViewTotal;\n this.showNotification(\n `Added ${recordsToAdd.length} record${recordsToAdd.length !== 1 ? 's' : ''} to list`,\n 'success',\n 2500\n );\n this.closeAddFromViewDialog();\n await this.refreshItems();\n } else {\n LogError('Error adding records from view to list');\n this.showNotification('Failed to add some records', 'error', 2500);\n this.showAddFromViewLoader = false;\n this.cdr.markForCheck();\n }\n }\n\n // ==========================================\n // Share Dialog\n // ==========================================\n\n public openShareDialog(): void {\n if (!this.record?.IsSaved) return;\n\n this.shareDialogConfig = {\n listId: this.record.ID,\n listName: this.record.Name,\n currentUserId: this.metadata.CurrentUser.ID,\n isOwner: this.isCurrentUserOwner()\n };\n this.showShareDialog = true;\n this.cdr.markForCheck();\n }\n\n public onShareDialogComplete(result: ListShareDialogResult): void {\n this.showShareDialog = false;\n this.shareDialogConfig = null;\n\n if (result.action === 'apply') {\n // Refresh stats to update share counts\n this.loadStats().then(() => {\n this.updateNavBadges();\n this.cdr.markForCheck();\n });\n }\n this.cdr.markForCheck();\n }\n\n public onShareDialogCancel(): void {\n this.showShareDialog = false;\n this.shareDialogConfig = null;\n this.cdr.markForCheck();\n }\n}\n","<!-- World-Class List Form -->\n<div class=\"list-form-explorer\">\n <!-- Header -->\n <header class=\"list-header\">\n <div class=\"header-content\">\n <div class=\"header-icon\" [style.background-color]=\"'#2196F3'\">\n <i [class]=\"entityIcon\"></i>\n </div>\n <div class=\"header-info\">\n <div class=\"name-row\">\n @if (!isEditingName) {\n <h1 class=\"list-name\">{{record.Name || 'Untitled List'}}</h1>\n @if (isCurrentUserOwner()) {\n <button\n class=\"edit-btn\"\n (click)=\"startEditingName()\"\n title=\"Edit name\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n }\n @if (isEditingName) {\n <input\n type=\"text\"\n class=\"inline-edit-input name-input\"\n [(ngModel)]=\"editingName\"\n (keydown.enter)=\"saveNameEdit()\"\n (keydown.escape)=\"cancelNameEdit()\"\n #nameInput />\n <button class=\"save-btn\" (click)=\"saveNameEdit()\">\n <i class=\"fa-solid fa-check\"></i>\n </button>\n <button class=\"cancel-btn\" (click)=\"cancelNameEdit()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n <div class=\"entity-badge\">\n <i [class]=\"entityIcon\"></i>\n <span>{{entityDisplayName}}</span>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{formattedItemCount}}</span>\n <span class=\"stat-label\">Items</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{stats.shareCount}}</span>\n <span class=\"stat-label\">Shares</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{formattedLastUpdated}}</span>\n <span class=\"stat-label\">Updated</span>\n </div>\n </div>\n </header>\n\n <!-- Navigation Rail -->\n <nav class=\"nav-rail\">\n @for (nav of navItems; track nav) {\n <button\n class=\"nav-item\"\n [class.active]=\"activeSection === nav.id\"\n [class.disabled]=\"nav.disabled\"\n (click)=\"setActiveSection(nav.id)\"\n [title]=\"nav.label\">\n <i [class]=\"nav.icon\"></i>\n <span class=\"nav-label\">{{nav.label}}</span>\n @if (nav.badge && nav.badge > 0) {\n <span class=\"nav-badge\">{{nav.badge}}</span>\n }\n </button>\n }\n </nav>\n\n <!-- Main Content -->\n <main class=\"main-content\">\n <!-- Overview Section -->\n @if (activeSection === 'overview') {\n <section class=\"section overview-section\">\n <div class=\"overview-grid\">\n <!-- Description Card -->\n <div class=\"overview-card description-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-align-left\"></i> Description</h3>\n @if (isCurrentUserOwner() && !isEditingDescription) {\n <button\n class=\"edit-btn\"\n (click)=\"startEditingDescription()\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n </div>\n <div class=\"card-body\">\n @if (!isEditingDescription) {\n @if (record.Description) {\n <p class=\"description-text\">{{record.Description}}</p>\n }\n @if (!record.Description) {\n <p class=\"description-empty\">No description provided</p>\n }\n }\n @if (isEditingDescription) {\n <textarea\n class=\"inline-edit-input description-input\"\n [(ngModel)]=\"editingDescription\"\n placeholder=\"Add a description...\"\n rows=\"3\"\n (keydown.escape)=\"cancelDescriptionEdit()\"></textarea>\n <div class=\"edit-actions\">\n <button class=\"btn-primary\" (click)=\"saveDescriptionEdit()\">Save</button>\n <button class=\"btn-secondary\" (click)=\"cancelDescriptionEdit()\">Cancel</button>\n </div>\n }\n </div>\n </div>\n <!-- Details Card -->\n <div class=\"overview-card details-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-info-circle\"></i> Details</h3>\n </div>\n <div class=\"card-body\">\n <div class=\"detail-row\">\n <span class=\"detail-label\">Entity</span>\n <span class=\"detail-value\">\n <i [class]=\"entityIcon\" class=\"detail-icon\"></i>\n {{entityDisplayName}}\n </span>\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Category</span>\n @if (!isCurrentUserOwner()) {\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-folder detail-icon\"></i>\n {{categoryName}}\n </span>\n }\n @if (isCurrentUserOwner()) {\n <select\n class=\"category-select\"\n [ngModel]=\"record.CategoryID\"\n (ngModelChange)=\"onCategoryChange($event)\">\n <option [ngValue]=\"null\">Uncategorized</option>\n @for (cat of categories; track cat) {\n <option [ngValue]=\"cat.ID\">{{cat.Name}}</option>\n }\n </select>\n }\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Owner</span>\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-user detail-icon\"></i>\n {{getOwnerName()}}\n @if (isCurrentUserOwner()) {\n <span class=\"owner-badge\">You</span>\n }\n </span>\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Created</span>\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-calendar detail-icon\"></i>\n {{record.__mj_CreatedAt | date:'mediumDate'}}\n </span>\n </div>\n </div>\n </div>\n <!-- Quick Actions Card -->\n <div class=\"overview-card actions-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-bolt\"></i> Quick Actions</h3>\n </div>\n <div class=\"card-body\">\n <button class=\"action-btn\" (click)=\"setActiveSection('items')\">\n <i class=\"fa-solid fa-list\"></i>\n <span>View Items</span>\n <span class=\"action-count\">{{stats.itemCount}}</span>\n </button>\n @if (isCurrentUserOwner()) {\n <button class=\"action-btn\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>Share List</span>\n @if (stats.shareCount > 0) {\n <span class=\"action-count\">{{stats.shareCount}}</span>\n }\n </button>\n }\n @if (!isCurrentUserOwner()) {\n <button class=\"action-btn\" (click)=\"setActiveSection('sharing')\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>View Sharing</span>\n </button>\n }\n <button class=\"action-btn\" [disabled]=\"true\" title=\"Coming soon\">\n <i class=\"fa-solid fa-file-export\"></i>\n <span>Export Data</span>\n <span class=\"coming-soon\">Soon</span>\n </button>\n </div>\n </div>\n </div>\n </section>\n }\n\n <!-- Items Section -->\n @if (activeSection === 'items') {\n <section class=\"section items-section\">\n <div class=\"section-header\">\n <h2>List Items</h2>\n <div class=\"section-actions\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Search items...\"\n [(ngModel)]=\"itemSearchTerm\" />\n </div>\n @if (isCurrentUserOwner()) {\n <div class=\"add-buttons\">\n <button class=\"btn-secondary\" (click)=\"openAddRecordsDialog()\" title=\"Add individual records\">\n <i class=\"fa-solid fa-plus\"></i> Add Records\n </button>\n <button class=\"btn-secondary\" (click)=\"openAddFromViewDialog()\" title=\"Add records from a saved view\">\n <i class=\"fa-solid fa-table-list\"></i> Add From View\n </button>\n </div>\n }\n <button class=\"btn-icon\" (click)=\"refreshItems()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n <!-- Loading State -->\n @if (isLoadingItems) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading items...\" size=\"medium\"></mj-loading>\n </div>\n }\n <!-- Empty State -->\n @if (!isLoadingItems && listItems.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-inbox\"></i>\n </div>\n <h3>No Items Yet</h3>\n <p>This list doesn't have any items. Add records from the {{entityDisplayName}} entity.</p>\n </div>\n }\n <!-- Items Table -->\n @if (!isLoadingItems && listItems.length > 0) {\n <div class=\"items-table-container\">\n @if (selectedItems.size > 0) {\n <div class=\"items-toolbar\">\n <span class=\"selection-count\">{{selectedItems.size}} selected</span>\n <button class=\"btn-danger\" (click)=\"removeSelectedItems()\">\n <i class=\"fa-solid fa-trash\"></i>\n Remove from List\n </button>\n </div>\n }\n <table class=\"items-table\">\n <thead>\n <tr>\n <th class=\"col-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelectAllChecked\"\n (change)=\"toggleSelectAll()\" />\n </th>\n <th class=\"col-name\">Name</th>\n <th class=\"col-id\">Record ID</th>\n <th class=\"col-added\">Added</th>\n <th class=\"col-actions\"></th>\n </tr>\n </thead>\n <tbody>\n @for (item of filteredItems; track item) {\n <tr\n [class.selected]=\"selectedItems.has(item.detail.ID)\">\n <td class=\"col-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"selectedItems.has(item.detail.ID)\"\n (change)=\"toggleItemSelection(item)\" />\n </td>\n <td class=\"col-name\">\n <div class=\"item-name\" [class.loading]=\"item.isLoading\">\n <i [class]=\"entityIcon\" class=\"item-icon\"></i>\n <span>{{item.recordName}}</span>\n @if (item.isLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n </div>\n </td>\n <td class=\"col-id\">\n <code class=\"record-id\">{{item.detail.RecordID}}</code>\n </td>\n <td class=\"col-added\">\n {{item.detail.__mj_CreatedAt | date:'shortDate'}}\n </td>\n <td class=\"col-actions\">\n <button\n class=\"btn-icon\"\n (click)=\"openRecord(item)\"\n title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n <div class=\"items-footer\">\n <span class=\"items-count\">\n Showing {{filteredItems.length}} of {{listItems.length}} items\n </span>\n </div>\n </div>\n }\n </section>\n }\n\n <!-- Sharing Section -->\n @if (activeSection === 'sharing') {\n <section class=\"section sharing-section\">\n <div class=\"section-header\">\n <h2>Sharing</h2>\n @if (isCurrentUserOwner()) {\n <div class=\"section-actions\">\n <button class=\"btn-primary\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-user-plus\"></i> Manage Sharing\n </button>\n </div>\n }\n </div>\n <!-- Sharing summary -->\n @if (stats.shareCount > 0 || stats.invitationCount > 0) {\n <div class=\"sharing-summary\">\n <div class=\"summary-card\">\n <div class=\"summary-icon\">\n <i class=\"fa-solid fa-users\"></i>\n </div>\n <div class=\"summary-content\">\n <span class=\"summary-value\">{{stats.shareCount}}</span>\n <span class=\"summary-label\">Active Share{{stats.shareCount !== 1 ? 's' : ''}}</span>\n </div>\n </div>\n @if (stats.invitationCount > 0) {\n <div class=\"summary-card\">\n <div class=\"summary-icon pending\">\n <i class=\"fa-solid fa-envelope\"></i>\n </div>\n <div class=\"summary-content\">\n <span class=\"summary-value\">{{stats.invitationCount}}</span>\n <span class=\"summary-label\">Pending Invitation{{stats.invitationCount !== 1 ? 's' : ''}}</span>\n </div>\n </div>\n }\n </div>\n }\n <!-- Empty state for no shares -->\n @if (stats.shareCount === 0 && stats.invitationCount === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n </div>\n <h3>Not Shared Yet</h3>\n @if (isCurrentUserOwner()) {\n <p>This list is private. Click \"Manage Sharing\" to share it with other users or roles.</p>\n }\n @if (!isCurrentUserOwner()) {\n <p>This list hasn't been shared with anyone else.</p>\n }\n @if (isCurrentUserOwner()) {\n <button class=\"btn-primary\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-user-plus\"></i> Share This List\n </button>\n }\n </div>\n }\n <!-- Read-only notice for non-owners -->\n @if (!isCurrentUserOwner() && (stats.shareCount > 0 || stats.invitationCount > 0)) {\n <div class=\"readonly-notice\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>Only the list owner can manage sharing settings.</span>\n </div>\n }\n </section>\n }\n\n <!-- Activity Section -->\n @if (activeSection === 'activity') {\n <section class=\"section activity-section\">\n <div class=\"section-header\">\n <h2>Activity</h2>\n </div>\n <div class=\"activity-timeline\">\n <div class=\"timeline-item\">\n <div class=\"timeline-icon\">\n <i class=\"fa-solid fa-edit\"></i>\n </div>\n <div class=\"timeline-content\">\n <p class=\"timeline-text\">List updated</p>\n <span class=\"timeline-date\">{{record.__mj_UpdatedAt | date:'medium'}}</span>\n </div>\n </div>\n <div class=\"timeline-item\">\n <div class=\"timeline-icon create\">\n <i class=\"fa-solid fa-plus\"></i>\n </div>\n <div class=\"timeline-content\">\n <p class=\"timeline-text\">List created</p>\n <span class=\"timeline-date\">{{record.__mj_CreatedAt | date:'medium'}}</span>\n </div>\n </div>\n </div>\n <div class=\"activity-info\">\n <p>Detailed activity tracking coming soon. You'll be able to see who added items, when shares were created, and more.</p>\n </div>\n </section>\n }\n\n <!-- Settings Section -->\n @if (activeSection === 'settings') {\n <section class=\"section settings-section\">\n <div class=\"section-header\">\n <h2>Settings</h2>\n </div>\n <div class=\"settings-form\">\n <mj-collapsible-panel\n SectionKey=\"listSettings\"\n SectionName=\"List Settings\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"form-body\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Name\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Description\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"CategoryID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n LinkComponentType=\"Search\">\n </mj-form-field>\n </div>\n </mj-collapsible-panel>\n <mj-collapsible-panel\n SectionKey=\"systemInfo\"\n SectionName=\"System Information\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"form-body\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EntityID\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserID\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n </div>\n </mj-collapsible-panel>\n </div>\n </section>\n }\n </main>\n</div>\n\n<!-- Add Records Dialog -->\n@if (showAddRecordsDialog) {\n <kendo-dialog\n [title]=\"'Add ' + entityDisplayName + ' to List'\"\n (close)=\"closeAddRecordsDialog()\"\n [minWidth]=\"400\"\n [width]=\"600\"\n [height]=\"550\">\n <div class=\"dialog-content add-records-dialog\">\n @if (addDialogSaving) {\n <div class=\"dialog-loading\">\n <mj-loading [text]=\"'Adding ' + addTotal + ' records to list...'\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!addDialogSaving) {\n <!-- Search Input -->\n <div class=\"search-section\">\n <kendo-textbox\n [placeholder]=\"'Search ' + entityDisplayName + '...'\"\n [clearButton]=\"true\"\n (valueChange)=\"onAddRecordsSearchChange($event)\"\n [value]=\"addRecordsSearchFilter\"\n class=\"search-input\">\n <ng-template kendoTextBoxPrefixTemplate>\n <span class=\"fa-solid fa-search search-icon\"></span>\n </ng-template>\n </kendo-textbox>\n <span class=\"search-hint\">Type at least 2 characters to search</span>\n </div>\n <!-- Records List -->\n <div class=\"records-list\">\n @if (addDialogLoading) {\n <div class=\"list-loading\">\n <mj-loading [showText]=\"false\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!addDialogLoading && addableRecords.length === 0 && addRecordsSearchFilter.length >= 2) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-search empty-icon\"></span>\n <p>No records found matching \"{{ addRecordsSearchFilter }}\"</p>\n </div>\n }\n @if (!addDialogLoading && addableRecords.length === 0 && addRecordsSearchFilter.length < 2) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-list empty-icon\"></span>\n <p>Search for records to add to this list</p>\n </div>\n }\n @if (!addDialogLoading && addableRecords.length > 0) {\n <!-- Selection controls -->\n <div class=\"selection-controls\">\n <button kendoButton fillMode=\"flat\" size=\"small\" (click)=\"selectAllAddable()\">Select All</button>\n <button kendoButton fillMode=\"flat\" size=\"small\" (click)=\"deselectAllAddable()\">Deselect All</button>\n <span class=\"selection-info\">{{ selectedAddableRecords.length }} selected</span>\n </div>\n <!-- Records -->\n <div class=\"records-scroll\">\n @for (record of addableRecords; track record) {\n <div class=\"record-item\"\n [class.in-list]=\"record.isInList\"\n [class.selected]=\"record.isSelected\"\n (click)=\"toggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.isInList) {\n <span class=\"fa-solid fa-check in-list-icon\" title=\"Already in list\"></span>\n }\n @if (!record.isInList) {\n <input type=\"checkbox\"\n [checked]=\"record.isSelected\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRecordSelection(record)\">\n }\n </div>\n <div class=\"record-name\">{{ record.Name }}</div>\n @if (record.isInList) {\n <span class=\"in-list-badge\">In List</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n <kendo-dialog-actions>\n <button kendoButton\n (click)=\"confirmAddRecords()\"\n [disabled]=\"addDialogSaving || selectedAddableRecords.length === 0\"\n themeColor=\"primary\">\n Add {{ selectedAddableRecords.length > 0 ? selectedAddableRecords.length : '' }} Record{{ selectedAddableRecords.length !== 1 ? 's' : '' }}\n </button>\n <button kendoButton\n (click)=\"closeAddRecordsDialog()\"\n [disabled]=\"addDialogSaving\"\n fillMode=\"outline\">\n Cancel\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n}\n\n<!-- Add From View Dialog -->\n@if (showAddFromViewDialog) {\n <kendo-dialog\n title=\"Add Records from Views\"\n (close)=\"closeAddFromViewDialog()\"\n [minWidth]=\"400\"\n [width]=\"600\"\n [height]=\"500\">\n <div class=\"dialog-content\">\n @if (showAddFromViewLoader && fetchingRecordsToSave) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading records from views...\" size=\"small\"></mj-loading>\n </div>\n }\n @if (showAddFromViewLoader && addFromViewTotal > 0 && !fetchingRecordsToSave) {\n <div class=\"dialog-loading\">\n <mj-loading [text]=\"'Adding ' + addFromViewTotal + ' records to list...'\" size=\"small\"></mj-loading>\n </div>\n }\n @if (showAddFromViewLoader && !fetchingRecordsToSave && addFromViewTotal === 0) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading views...\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!showAddFromViewLoader) {\n <p class=\"dialog-instruction\">Select views to add their records to this list:</p>\n <div class=\"views-list\">\n @if (!userViews || userViews.length === 0) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-folder-open empty-icon\"></span>\n <p>No saved views found for this entity</p>\n </div>\n }\n @if (userViews && userViews.length > 0) {\n @for (view of userViews; track view) {\n <div class=\"view-item\"\n [class.selected]=\"isViewSelected(view)\"\n (click)=\"toggleViewSelection(view)\">\n <input type=\"checkbox\"\n [checked]=\"isViewSelected(view)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleViewSelection(view)\">\n <span class=\"fa-solid fa-table-list view-icon\"></span>\n <span class=\"view-name\">{{ view.Name }}</span>\n </div>\n }\n }\n </div>\n }\n </div>\n <kendo-dialog-actions>\n <button kendoButton\n (click)=\"confirmAddFromView()\"\n [disabled]=\"showAddFromViewLoader || userViewsToAdd.length === 0\"\n themeColor=\"primary\">\n Add from {{ userViewsToAdd.length }} View{{ userViewsToAdd.length !== 1 ? 's' : '' }}\n </button>\n <button kendoButton\n (click)=\"closeAddFromViewDialog()\"\n [disabled]=\"showAddFromViewLoader\"\n fillMode=\"outline\">\n Cancel\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n}\n\n<!-- Share Dialog -->\n@if (showShareDialog && shareDialogConfig) {\n <mj-list-share-dialog\n [config]=\"shareDialogConfig\"\n [visible]=\"showShareDialog\"\n (complete)=\"onShareDialogComplete($event)\"\n (cancel)=\"onShareDialogCancel()\">\n </mj-list-share-dialog>\n}\n"]}
1
+ {"version":3,"file":"list-form.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/Lists/list-form.component.ts","../../../../src/lib/custom/Lists/list-form.component.html"],"names":[],"mappings":"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","sourcesContent":["import { Component, OnInit, OnDestroy, ChangeDetectionStrategy, inject } from '@angular/core';\nimport { Subject, debounceTime } from 'rxjs';\nimport { RegisterClass , UUIDsEqual } from '@memberjunction/global';\nimport { BaseFormComponent } from '@memberjunction/ng-base-forms';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { MJListFormComponent } from '../../generated/Entities/MJList/mjlist.form.component';\nimport { MJListEntity, MJListDetailEntity, MJListDetailEntityExtended, MJListCategoryEntity, MJUserViewEntityExtended } from '@memberjunction/core-entities';\nimport { Metadata, RunView, RunViewResult, EntityInfo, LogError, LogStatus } from '@memberjunction/core';\nimport { ListShareDialogConfig, ListShareDialogResult } from '@memberjunction/ng-list-management';\n\nexport type ListSection = 'overview' | 'items' | 'sharing' | 'activity' | 'settings';\n\nexport interface ListItemViewModel {\n detail: MJListDetailEntity;\n recordName: string;\n isLoading: boolean;\n}\n\nexport interface ListStats {\n itemCount: number;\n shareCount: number;\n invitationCount: number;\n lastUpdated: Date | null;\n}\n\n/**\n * Represents a record that can be added to a list\n */\nexport interface AddableRecord {\n ID: string;\n Name: string;\n isInList: boolean;\n isSelected: boolean;\n}\n\n/**\n * World-class List form component that provides a rich exploration experience\n * for managing lists in the MemberJunction system.\n *\n * Features:\n * - Overview with visual stats and entity context\n * - Items grid with inline record navigation\n * - Sharing management (coming soon)\n * - Activity history\n * - Settings and configuration\n */\n@RegisterClass(BaseFormComponent, 'MJ: Lists')\n@Component({\n standalone: false,\n selector: 'mj-list-form-extended',\n templateUrl: './list-form.component.html',\n styleUrls: ['./list-form.component.css', '../../../shared/form-styles.css'],\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class MJListFormComponentExtended extends MJListFormComponent implements OnInit, OnDestroy {\n private sharedService = inject(SharedService);\n\n public override record!: MJListEntity;\n\n // Navigation\n public activeSection: ListSection = 'overview';\n public navItems = [\n { id: 'overview' as ListSection, icon: 'fa-solid fa-house', label: 'Overview' },\n { id: 'items' as ListSection, icon: 'fa-solid fa-list', label: 'Items', badge: 0 },\n { id: 'sharing' as ListSection, icon: 'fa-solid fa-share-nodes', label: 'Sharing', badge: 0, disabled: false },\n { id: 'activity' as ListSection, icon: 'fa-solid fa-clock-rotate-left', label: 'Activity' },\n { id: 'settings' as ListSection, icon: 'fa-solid fa-gear', label: 'Settings' }\n ];\n\n // Data\n public listItems: ListItemViewModel[] = [];\n public categories: MJListCategoryEntity[] = [];\n public entityInfo: EntityInfo | null = null;\n public stats: ListStats = {\n itemCount: 0,\n shareCount: 0,\n invitationCount: 0,\n lastUpdated: null\n };\n\n // Loading states\n public isLoadingItems = false;\n public isLoadingStats = false;\n public explorerError: string | null = null;\n\n // Items section\n public itemSearchTerm = '';\n public selectedItems = new Set<string>();\n public isSelectAllChecked = false;\n\n // Edit state\n public isEditingName = false;\n public isEditingDescription = false;\n public editingName = '';\n public editingDescription = '';\n\n // Add Records dialog\n public showAddRecordsDialog = false;\n public addDialogLoading = false;\n public addDialogSaving = false;\n public addableRecords: AddableRecord[] = [];\n public addRecordsSearchFilter = '';\n public existingListDetailIds = new Set<string>();\n public addProgress = 0;\n public addTotal = 0;\n private searchSubject = new Subject<string>();\n\n // Add From View dialog\n public showAddFromViewDialog = false;\n public showAddFromViewLoader = false;\n public userViews: MJUserViewEntityExtended[] | null = null;\n public userViewsToAdd: MJUserViewEntityExtended[] = [];\n public addFromViewProgress = 0;\n public addFromViewTotal = 0;\n public fetchingRecordsToSave = false;\n\n // Share dialog\n public showShareDialog = false;\n public shareDialogConfig: ListShareDialogConfig | null = null;\n\n private destroy$ = new Subject<void>();\n private metadata = new Metadata();\n\n override async ngOnInit(): Promise<void> {\n await super.ngOnInit();\n\n // Set up search debounce\n this.searchSubject\n .pipe(debounceTime(300))\n .subscribe((searchText) => this.searchRecords(searchText));\n\n await this.loadExplorerData();\n }\n\n // Helper to show notifications using SharedService's deprecated method\n private showNotification(message: string, style: 'success' | 'error' | 'info' = 'info', duration: number = 3000): void {\n this.sharedService.CreateSimpleNotification(message, style, duration);\n }\n\n ngOnDestroy(): void {\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n private async loadExplorerData(): Promise<void> {\n try {\n // Load entity info for context\n if (this.record?.EntityID) {\n this.entityInfo = this.metadata.Entities.find(e => UUIDsEqual(e.ID, this.record.EntityID)) || null;\n }\n\n // Load categories for dropdown\n await this.loadCategories();\n\n // Load items and stats in parallel\n await Promise.all([\n this.loadItems(),\n this.loadStats()\n ]);\n\n this.updateNavBadges();\n } catch (error) {\n console.error('Error loading list data:', error);\n this.explorerError = 'Failed to load list data';\n } finally {\n this.cdr.markForCheck();\n }\n }\n\n private async loadCategories(): Promise<void> {\n const rv = new RunView();\n const result = await rv.RunView<MJListCategoryEntity>({\n EntityName: 'MJ: List Categories',\n OrderBy: 'Name',\n ResultType: 'entity_object'\n });\n if (result.Success) {\n this.categories = result.Results;\n }\n }\n\n private async loadItems(): Promise<void> {\n if (!this.record?.IsSaved) return;\n\n this.isLoadingItems = true;\n this.cdr.markForCheck();\n\n try {\n const rv = new RunView();\n const result = await rv.RunView<MJListDetailEntity>({\n EntityName: 'MJ: List Details',\n ExtraFilter: `ListID = '${this.record.ID}'`,\n OrderBy: '__mj_CreatedAt DESC',\n ResultType: 'entity_object'\n });\n\n if (result.Success) {\n this.listItems = result.Results.map(detail => ({\n detail,\n recordName: detail.RecordID || 'Loading...',\n isLoading: true\n }));\n\n // Load record names asynchronously\n this.loadRecordNames();\n }\n } catch (error) {\n console.error('Error loading list items:', error);\n } finally {\n this.isLoadingItems = false;\n this.cdr.markForCheck();\n }\n }\n\n private async loadRecordNames(): Promise<void> {\n if (!this.entityInfo) return;\n\n const rv = new RunView();\n // Get the name field - NameField is EntityFieldInfo or undefined\n const nameFieldInfo = this.entityInfo.NameField;\n const nameFieldName = nameFieldInfo ? nameFieldInfo.Name : 'ID';\n\n for (const item of this.listItems) {\n try {\n const result = await rv.RunView({\n EntityName: this.entityInfo.Name,\n ExtraFilter: `ID = '${item.detail.RecordID}'`,\n Fields: [nameFieldName],\n ResultType: 'simple',\n MaxRows: 1\n });\n\n if (result.Success && result.Results.length > 0) {\n const record = result.Results[0] as Record<string, string>;\n item.recordName = record[nameFieldName] || item.detail.RecordID || '';\n }\n } catch (error) {\n item.recordName = item.detail.RecordID || 'Unknown';\n } finally {\n item.isLoading = false;\n }\n }\n this.cdr.markForCheck();\n }\n\n private async loadStats(): Promise<void> {\n if (!this.record?.IsSaved) return;\n\n this.isLoadingStats = true;\n\n try {\n const rv = new RunView();\n const [itemsResult, sharesResult, invitationsResult] = await rv.RunViews([\n {\n EntityName: 'MJ: List Details',\n ExtraFilter: `ListID = '${this.record.ID}'`,\n ResultType: 'count_only'\n },\n {\n EntityName: 'MJ: List Shares',\n ExtraFilter: `ListID = '${this.record.ID}'`,\n ResultType: 'count_only'\n },\n {\n EntityName: 'MJ: List Invitations',\n ExtraFilter: `ListID = '${this.record.ID}'`,\n ResultType: 'count_only'\n }\n ]);\n\n this.stats = {\n itemCount: itemsResult.Success ? itemsResult.TotalRowCount : 0,\n shareCount: sharesResult.Success ? sharesResult.TotalRowCount : 0,\n invitationCount: invitationsResult.Success ? invitationsResult.TotalRowCount : 0,\n lastUpdated: this.record.__mj_UpdatedAt\n };\n } catch (error) {\n console.error('Error loading stats:', error);\n } finally {\n this.isLoadingStats = false;\n this.cdr.markForCheck();\n }\n }\n\n private updateNavBadges(): void {\n this.navItems = this.navItems.map(item => {\n switch (item.id) {\n case 'items':\n return { ...item, badge: this.stats.itemCount };\n case 'sharing':\n return { ...item, badge: this.stats.shareCount + this.stats.invitationCount };\n default:\n return item;\n }\n });\n }\n\n // === Navigation ===\n\n public setActiveSection(section: ListSection): void {\n const navItem = this.navItems.find(n => n.id === section);\n if (navItem?.disabled) return;\n\n this.activeSection = section;\n this.cdr.markForCheck();\n }\n\n // === Items Management ===\n\n public get filteredItems(): ListItemViewModel[] {\n if (!this.itemSearchTerm) return this.listItems;\n\n const term = this.itemSearchTerm.toLowerCase();\n return this.listItems.filter(item =>\n item.recordName.toLowerCase().includes(term) ||\n item.detail.RecordID?.toLowerCase().includes(term)\n );\n }\n\n public toggleItemSelection(item: ListItemViewModel): void {\n const id = item.detail.ID;\n if (this.selectedItems.has(id)) {\n this.selectedItems.delete(id);\n } else {\n this.selectedItems.add(id);\n }\n this.updateSelectAllState();\n this.cdr.markForCheck();\n }\n\n public toggleSelectAll(): void {\n if (this.isSelectAllChecked) {\n this.selectedItems.clear();\n } else {\n for (const item of this.filteredItems) {\n this.selectedItems.add(item.detail.ID);\n }\n }\n this.isSelectAllChecked = !this.isSelectAllChecked;\n this.cdr.markForCheck();\n }\n\n private updateSelectAllState(): void {\n this.isSelectAllChecked = this.filteredItems.length > 0 &&\n this.filteredItems.every(item => this.selectedItems.has(item.detail.ID));\n }\n\n public async removeSelectedItems(): Promise<void> {\n if (this.selectedItems.size === 0) return;\n\n const count = this.selectedItems.size;\n const confirmMessage = `Remove ${count} item${count > 1 ? 's' : ''} from this list?`;\n\n if (!confirm(confirmMessage)) return;\n\n try {\n for (const id of this.selectedItems) {\n const item = this.listItems.find(i => UUIDsEqual(i.detail.ID, id));\n if (item) {\n await item.detail.Delete();\n }\n }\n\n this.showNotification(\n `Removed ${count} item${count > 1 ? 's' : ''} from list`,\n 'success',\n 3000\n );\n\n this.selectedItems.clear();\n await this.loadItems();\n await this.loadStats();\n this.updateNavBadges();\n } catch (error) {\n console.error('Error removing items:', error);\n this.showNotification(\n 'Error removing items from list',\n 'error',\n 4000\n );\n }\n }\n\n public openRecord(item: ListItemViewModel): void {\n if (!this.entityInfo || !item.detail.RecordID) return;\n\n // Use SharedService to open the record\n this.sharedService.InvokeManualResize();\n }\n\n // === Inline Editing ===\n\n public startEditingName(): void {\n this.editingName = this.record.Name;\n this.isEditingName = true;\n this.cdr.markForCheck();\n }\n\n public async saveNameEdit(): Promise<void> {\n if (!this.editingName.trim()) {\n this.cancelNameEdit();\n return;\n }\n\n this.record.Name = this.editingName.trim();\n const saved = await this.record.Save();\n\n if (saved) {\n this.showNotification('Name updated', 'success', 2000);\n } else {\n this.showNotification('Failed to update name', 'error', 3000);\n }\n\n this.isEditingName = false;\n this.cdr.markForCheck();\n }\n\n public cancelNameEdit(): void {\n this.isEditingName = false;\n this.cdr.markForCheck();\n }\n\n public startEditingDescription(): void {\n this.editingDescription = this.record.Description || '';\n this.isEditingDescription = true;\n this.cdr.markForCheck();\n }\n\n public async saveDescriptionEdit(): Promise<void> {\n this.record.Description = this.editingDescription.trim() || null;\n const saved = await this.record.Save();\n\n if (saved) {\n this.showNotification('Description updated', 'success', 2000);\n } else {\n this.showNotification('Failed to update description', 'error', 3000);\n }\n\n this.isEditingDescription = false;\n this.cdr.markForCheck();\n }\n\n public cancelDescriptionEdit(): void {\n this.isEditingDescription = false;\n this.cdr.markForCheck();\n }\n\n // === Helpers ===\n\n public get entityDisplayName(): string {\n return this.entityInfo?.DisplayName || this.entityInfo?.Name || this.record?.Entity || 'Unknown';\n }\n\n public get entityIcon(): string {\n return this.entityInfo?.Icon || 'fa-solid fa-table';\n }\n\n public get categoryName(): string {\n if (!this.record?.CategoryID) return 'Uncategorized';\n const category = this.categories.find(c => UUIDsEqual(c.ID, this.record.CategoryID));\n return category?.Name || 'Unknown';\n }\n\n public get formattedItemCount(): string {\n return this.stats.itemCount.toLocaleString();\n }\n\n public get formattedLastUpdated(): string {\n if (!this.stats.lastUpdated) return 'Never';\n const date = new Date(this.stats.lastUpdated);\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24));\n\n if (diffDays === 0) return 'Today';\n if (diffDays === 1) return 'Yesterday';\n if (diffDays < 7) return `${diffDays} days ago`;\n return date.toLocaleDateString();\n }\n\n public getOwnerName(): string {\n return this.record?.User || 'Unknown';\n }\n\n public isCurrentUserOwner(): boolean {\n return UUIDsEqual(this.record?.UserID, this.metadata.CurrentUser?.ID);\n }\n\n public async onCategoryChange(categoryId: string | null): Promise<void> {\n this.record.CategoryID = categoryId;\n const saved = await this.record.Save();\n\n if (saved) {\n this.showNotification('Category updated', 'success', 2000);\n } else {\n this.showNotification('Failed to update category', 'error', 3000);\n }\n\n this.cdr.markForCheck();\n }\n\n public async refreshItems(): Promise<void> {\n await this.loadItems();\n await this.loadStats();\n this.updateNavBadges();\n }\n\n // ==========================================\n // Add Records Dialog\n // ==========================================\n\n public async openAddRecordsDialog(): Promise<void> {\n this.showAddRecordsDialog = true;\n this.addableRecords = [];\n this.addRecordsSearchFilter = '';\n this.addDialogLoading = true;\n this.addDialogSaving = false;\n\n // Load existing list detail IDs to mark which records are already in the list\n await this.loadExistingListDetailIds();\n this.addDialogLoading = false;\n this.cdr.markForCheck();\n }\n\n public closeAddRecordsDialog(): void {\n this.showAddRecordsDialog = false;\n this.addableRecords = [];\n this.addRecordsSearchFilter = '';\n this.existingListDetailIds.clear();\n this.addDialogSaving = false;\n this.addProgress = 0;\n this.addTotal = 0;\n this.cdr.markForCheck();\n }\n\n private async loadExistingListDetailIds(): Promise<void> {\n if (!this.record) return;\n\n const rv = new RunView();\n const result = await rv.RunView<{ RecordID: string }>({\n EntityName: 'MJ: List Details',\n ExtraFilter: `ListID = '${this.record.ID}'`,\n Fields: ['RecordID'],\n ResultType: 'simple'\n }, this.metadata.CurrentUser);\n\n if (result.Success) {\n this.existingListDetailIds = new Set(result.Results.map(r => r.RecordID));\n }\n }\n\n public onAddRecordsSearchChange(value: string): void {\n this.addRecordsSearchFilter = value;\n this.searchSubject.next(value);\n }\n\n private async searchRecords(searchText: string): Promise<void> {\n if (!this.record || !searchText || searchText.length < 2) {\n this.addableRecords = [];\n this.cdr.markForCheck();\n return;\n }\n\n this.addDialogLoading = true;\n this.cdr.markForCheck();\n\n const sourceEntityInfo = this.metadata.EntityByID(this.record.EntityID);\n if (!sourceEntityInfo) {\n this.addDialogLoading = false;\n this.cdr.markForCheck();\n return;\n }\n\n const nameField = sourceEntityInfo.Fields.find(field => field.IsNameField);\n const pkField = sourceEntityInfo.FirstPrimaryKey?.Name || 'ID';\n\n let filter: string | undefined;\n if (nameField) {\n filter = `${nameField.Name} LIKE '%${searchText}%'`;\n }\n\n const rv = new RunView();\n const result: RunViewResult = await rv.RunView({\n EntityName: this.record.Entity,\n ExtraFilter: filter,\n MaxRows: 100,\n ResultType: 'simple'\n });\n\n if (result.Success) {\n this.addableRecords = result.Results.map((record: Record<string, unknown>) => {\n const recordId = String(record[pkField]);\n return {\n ID: recordId,\n Name: nameField ? String(record[nameField.Name]) : recordId,\n isInList: this.existingListDetailIds.has(recordId),\n isSelected: false\n };\n });\n }\n\n this.addDialogLoading = false;\n this.cdr.markForCheck();\n }\n\n public toggleRecordSelection(record: AddableRecord): void {\n if (record.isInList) return; // Can't select records already in list\n record.isSelected = !record.isSelected;\n this.cdr.markForCheck();\n }\n\n public get selectedAddableRecords(): AddableRecord[] {\n return this.addableRecords.filter(r => r.isSelected);\n }\n\n public selectAllAddable(): void {\n this.addableRecords.forEach(r => {\n if (!r.isInList) r.isSelected = true;\n });\n this.cdr.markForCheck();\n }\n\n public deselectAllAddable(): void {\n this.addableRecords.forEach(r => r.isSelected = false);\n this.cdr.markForCheck();\n }\n\n public async confirmAddRecords(): Promise<void> {\n const recordsToAdd = this.selectedAddableRecords;\n if (recordsToAdd.length === 0 || !this.record) return;\n\n this.addDialogSaving = true;\n this.addTotal = recordsToAdd.length;\n this.addProgress = 0;\n this.cdr.markForCheck();\n\n // Use transaction group for bulk insert\n const tg = await this.metadata.CreateTransactionGroup();\n\n for (const record of recordsToAdd) {\n const listDetail = await this.metadata.GetEntityObject<MJListDetailEntityExtended>('MJ: List Details');\n listDetail.ListID = this.record.ID;\n listDetail.RecordID = record.ID;\n listDetail.TransactionGroup = tg;\n await listDetail.Save();\n }\n\n const success = await tg.Submit();\n\n if (success) {\n this.addProgress = this.addTotal;\n this.showNotification(\n `Added ${recordsToAdd.length} record${recordsToAdd.length !== 1 ? 's' : ''} to list`,\n 'success',\n 2500\n );\n this.closeAddRecordsDialog();\n await this.refreshItems();\n } else {\n LogError('Error adding records to list');\n this.showNotification('Failed to add some records', 'error', 2500);\n this.addDialogSaving = false;\n this.cdr.markForCheck();\n }\n }\n\n // ==========================================\n // Add From View Dialog\n // ==========================================\n\n public async openAddFromViewDialog(): Promise<void> {\n this.showAddFromViewDialog = true;\n this.userViewsToAdd = [];\n this.cdr.markForCheck();\n\n if (!this.userViews) {\n await this.loadEntityViews();\n }\n }\n\n public closeAddFromViewDialog(): void {\n this.showAddFromViewDialog = false;\n this.userViewsToAdd = [];\n this.showAddFromViewLoader = false;\n this.addFromViewProgress = 0;\n this.addFromViewTotal = 0;\n this.cdr.markForCheck();\n }\n\n private async loadEntityViews(): Promise<void> {\n if (!this.record || !this.record.Entity) return;\n\n this.showAddFromViewLoader = true;\n this.cdr.markForCheck();\n\n const rv = new RunView();\n const runViewResult = await rv.RunView<MJUserViewEntityExtended>({\n EntityName: 'MJ: User Views',\n ExtraFilter: `UserID = '${this.metadata.CurrentUser.ID}' AND EntityID = '${this.record.EntityID}'`,\n ResultType: 'entity_object'\n }, this.metadata.CurrentUser);\n\n if (!runViewResult.Success) {\n LogError(`Error loading User Views for entity ${this.record.Entity}`);\n } else {\n this.userViews = runViewResult.Results;\n }\n\n this.showAddFromViewLoader = false;\n this.cdr.markForCheck();\n }\n\n public toggleViewSelection(view: MJUserViewEntityExtended): void {\n const index = this.userViewsToAdd.findIndex(v => UUIDsEqual(v.ID, view.ID));\n if (index >= 0) {\n this.userViewsToAdd.splice(index, 1);\n } else {\n this.userViewsToAdd.push(view);\n }\n this.cdr.markForCheck();\n }\n\n public isViewSelected(view: MJUserViewEntityExtended): boolean {\n return this.userViewsToAdd.some(v => UUIDsEqual(v.ID, view.ID));\n }\n\n public async confirmAddFromView(): Promise<void> {\n if (!this.record || this.userViewsToAdd.length === 0) return;\n\n this.showAddFromViewLoader = true;\n this.fetchingRecordsToSave = true;\n this.cdr.markForCheck();\n\n const rv = new RunView();\n\n // Collect all unique record IDs from selected views\n const recordIdSet = new Set<string>();\n\n for (const userView of this.userViewsToAdd) {\n const runViewResult = await rv.RunView({\n EntityName: 'MJ: User Views',\n ViewEntity: userView,\n Fields: ['ID']\n }, this.metadata.CurrentUser);\n\n if (runViewResult.Success) {\n const records = runViewResult.Results as Array<{ ID: string }>;\n records.forEach(r => recordIdSet.add(r.ID));\n }\n }\n\n // Filter out records already in the list\n await this.loadExistingListDetailIds();\n const recordsToAdd = [...recordIdSet].filter(id => !this.existingListDetailIds.has(id));\n\n this.addFromViewTotal = recordsToAdd.length;\n this.addFromViewProgress = 0;\n this.fetchingRecordsToSave = false;\n this.cdr.markForCheck();\n\n if (recordsToAdd.length === 0) {\n this.showNotification('All records already in list', 'info', 2500);\n this.showAddFromViewLoader = false;\n this.cdr.markForCheck();\n return;\n }\n\n LogStatus(`Adding ${recordsToAdd.length} records to list`);\n\n // Use transaction group for bulk insert\n const tg = await this.metadata.CreateTransactionGroup();\n\n for (const recordID of recordsToAdd) {\n const listDetail = await this.metadata.GetEntityObject<MJListDetailEntityExtended>('MJ: List Details');\n listDetail.ListID = this.record.ID;\n listDetail.RecordID = recordID;\n listDetail.TransactionGroup = tg;\n await listDetail.Save();\n }\n\n const success = await tg.Submit();\n\n if (success) {\n this.addFromViewProgress = this.addFromViewTotal;\n this.showNotification(\n `Added ${recordsToAdd.length} record${recordsToAdd.length !== 1 ? 's' : ''} to list`,\n 'success',\n 2500\n );\n this.closeAddFromViewDialog();\n await this.refreshItems();\n } else {\n LogError('Error adding records from view to list');\n this.showNotification('Failed to add some records', 'error', 2500);\n this.showAddFromViewLoader = false;\n this.cdr.markForCheck();\n }\n }\n\n // ==========================================\n // Share Dialog\n // ==========================================\n\n public openShareDialog(): void {\n if (!this.record?.IsSaved) return;\n\n this.shareDialogConfig = {\n listId: this.record.ID,\n listName: this.record.Name,\n currentUserId: this.metadata.CurrentUser.ID,\n isOwner: this.isCurrentUserOwner()\n };\n this.showShareDialog = true;\n this.cdr.markForCheck();\n }\n\n public onShareDialogComplete(result: ListShareDialogResult): void {\n this.showShareDialog = false;\n this.shareDialogConfig = null;\n\n if (result.action === 'apply') {\n // Refresh stats to update share counts\n this.loadStats().then(() => {\n this.updateNavBadges();\n this.cdr.markForCheck();\n });\n }\n this.cdr.markForCheck();\n }\n\n public onShareDialogCancel(): void {\n this.showShareDialog = false;\n this.shareDialogConfig = null;\n this.cdr.markForCheck();\n }\n}\n","<!-- World-Class List Form -->\n<div class=\"list-form-explorer\">\n <!-- Header -->\n <header class=\"list-header\">\n <div class=\"header-content\">\n <div class=\"header-icon\" [style.background-color]=\"'#2196F3'\">\n <i [class]=\"entityIcon\"></i>\n </div>\n <div class=\"header-info\">\n <div class=\"name-row\">\n @if (!isEditingName) {\n <h1 class=\"list-name\">{{record.Name || 'Untitled List'}}</h1>\n @if (isCurrentUserOwner()) {\n <button\n class=\"edit-btn\"\n (click)=\"startEditingName()\"\n title=\"Edit name\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n }\n @if (isEditingName) {\n <input\n type=\"text\"\n class=\"inline-edit-input name-input\"\n [(ngModel)]=\"editingName\"\n (keydown.enter)=\"saveNameEdit()\"\n (keydown.escape)=\"cancelNameEdit()\"\n #nameInput />\n <button class=\"save-btn\" (click)=\"saveNameEdit()\">\n <i class=\"fa-solid fa-check\"></i>\n </button>\n <button class=\"cancel-btn\" (click)=\"cancelNameEdit()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n <div class=\"entity-badge\">\n <i [class]=\"entityIcon\"></i>\n <span>{{entityDisplayName}}</span>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{formattedItemCount}}</span>\n <span class=\"stat-label\">Items</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{stats.shareCount}}</span>\n <span class=\"stat-label\">Shares</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{formattedLastUpdated}}</span>\n <span class=\"stat-label\">Updated</span>\n </div>\n </div>\n </header>\n\n <!-- Navigation Rail -->\n <nav class=\"nav-rail\">\n @for (nav of navItems; track nav) {\n <button\n class=\"nav-item\"\n [class.active]=\"activeSection === nav.id\"\n [class.disabled]=\"nav.disabled\"\n (click)=\"setActiveSection(nav.id)\"\n [title]=\"nav.label\">\n <i [class]=\"nav.icon\"></i>\n <span class=\"nav-label\">{{nav.label}}</span>\n @if (nav.badge && nav.badge > 0) {\n <span class=\"nav-badge\">{{nav.badge}}</span>\n }\n </button>\n }\n </nav>\n\n <!-- Main Content -->\n <main class=\"main-content\">\n <!-- Overview Section -->\n @if (activeSection === 'overview') {\n <section class=\"section overview-section\">\n <div class=\"overview-grid\">\n <!-- Description Card -->\n <div class=\"overview-card description-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-align-left\"></i> Description</h3>\n @if (isCurrentUserOwner() && !isEditingDescription) {\n <button\n class=\"edit-btn\"\n (click)=\"startEditingDescription()\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n </div>\n <div class=\"card-body\">\n @if (!isEditingDescription) {\n @if (record.Description) {\n <p class=\"description-text\">{{record.Description}}</p>\n }\n @if (!record.Description) {\n <p class=\"description-empty\">No description provided</p>\n }\n }\n @if (isEditingDescription) {\n <textarea\n class=\"inline-edit-input description-input\"\n [(ngModel)]=\"editingDescription\"\n placeholder=\"Add a description...\"\n rows=\"3\"\n (keydown.escape)=\"cancelDescriptionEdit()\"></textarea>\n <div class=\"edit-actions\">\n <button class=\"btn-primary\" (click)=\"saveDescriptionEdit()\">Save</button>\n <button class=\"btn-secondary\" (click)=\"cancelDescriptionEdit()\">Cancel</button>\n </div>\n }\n </div>\n </div>\n <!-- Details Card -->\n <div class=\"overview-card details-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-info-circle\"></i> Details</h3>\n </div>\n <div class=\"card-body\">\n <div class=\"detail-row\">\n <span class=\"detail-label\">Entity</span>\n <span class=\"detail-value\">\n <i [class]=\"entityIcon\" class=\"detail-icon\"></i>\n {{entityDisplayName}}\n </span>\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Category</span>\n @if (!isCurrentUserOwner()) {\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-folder detail-icon\"></i>\n {{categoryName}}\n </span>\n }\n @if (isCurrentUserOwner()) {\n <select\n class=\"category-select\"\n [ngModel]=\"record.CategoryID\"\n (ngModelChange)=\"onCategoryChange($event)\">\n <option [ngValue]=\"null\">Uncategorized</option>\n @for (cat of categories; track cat) {\n <option [ngValue]=\"cat.ID\">{{cat.Name}}</option>\n }\n </select>\n }\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Owner</span>\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-user detail-icon\"></i>\n {{getOwnerName()}}\n @if (isCurrentUserOwner()) {\n <span class=\"owner-badge\">You</span>\n }\n </span>\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Created</span>\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-calendar detail-icon\"></i>\n {{record.__mj_CreatedAt | date:'mediumDate'}}\n </span>\n </div>\n </div>\n </div>\n <!-- Quick Actions Card -->\n <div class=\"overview-card actions-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-bolt\"></i> Quick Actions</h3>\n </div>\n <div class=\"card-body\">\n <button class=\"action-btn\" (click)=\"setActiveSection('items')\">\n <i class=\"fa-solid fa-list\"></i>\n <span>View Items</span>\n <span class=\"action-count\">{{stats.itemCount}}</span>\n </button>\n @if (isCurrentUserOwner()) {\n <button class=\"action-btn\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>Share List</span>\n @if (stats.shareCount > 0) {\n <span class=\"action-count\">{{stats.shareCount}}</span>\n }\n </button>\n }\n @if (!isCurrentUserOwner()) {\n <button class=\"action-btn\" (click)=\"setActiveSection('sharing')\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>View Sharing</span>\n </button>\n }\n <button class=\"action-btn\" [disabled]=\"true\" title=\"Coming soon\">\n <i class=\"fa-solid fa-file-export\"></i>\n <span>Export Data</span>\n <span class=\"coming-soon\">Soon</span>\n </button>\n </div>\n </div>\n </div>\n </section>\n }\n\n <!-- Items Section -->\n @if (activeSection === 'items') {\n <section class=\"section items-section\">\n <div class=\"section-header\">\n <h2>List Items</h2>\n <div class=\"section-actions\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Search items...\"\n [(ngModel)]=\"itemSearchTerm\" />\n </div>\n @if (isCurrentUserOwner()) {\n <div class=\"add-buttons\">\n <button class=\"btn-secondary\" (click)=\"openAddRecordsDialog()\" title=\"Add individual records\">\n <i class=\"fa-solid fa-plus\"></i> Add Records\n </button>\n <button class=\"btn-secondary\" (click)=\"openAddFromViewDialog()\" title=\"Add records from a saved view\">\n <i class=\"fa-solid fa-table-list\"></i> Add From View\n </button>\n </div>\n }\n <button class=\"btn-icon\" (click)=\"refreshItems()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n <!-- Loading State -->\n @if (isLoadingItems) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading items...\" size=\"medium\"></mj-loading>\n </div>\n }\n <!-- Empty State -->\n @if (!isLoadingItems && listItems.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-inbox\"></i>\n </div>\n <h3>No Items Yet</h3>\n <p>This list doesn't have any items. Add records from the {{entityDisplayName}} entity.</p>\n </div>\n }\n <!-- Items Table -->\n @if (!isLoadingItems && listItems.length > 0) {\n <div class=\"items-table-container\">\n @if (selectedItems.size > 0) {\n <div class=\"items-toolbar\">\n <span class=\"selection-count\">{{selectedItems.size}} selected</span>\n <button class=\"btn-danger\" (click)=\"removeSelectedItems()\">\n <i class=\"fa-solid fa-trash\"></i>\n Remove from List\n </button>\n </div>\n }\n <table class=\"items-table\">\n <thead>\n <tr>\n <th class=\"col-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelectAllChecked\"\n (change)=\"toggleSelectAll()\" />\n </th>\n <th class=\"col-name\">Name</th>\n <th class=\"col-id\">Record ID</th>\n <th class=\"col-added\">Added</th>\n <th class=\"col-actions\"></th>\n </tr>\n </thead>\n <tbody>\n @for (item of filteredItems; track item) {\n <tr\n [class.selected]=\"selectedItems.has(item.detail.ID)\">\n <td class=\"col-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"selectedItems.has(item.detail.ID)\"\n (change)=\"toggleItemSelection(item)\" />\n </td>\n <td class=\"col-name\">\n <div class=\"item-name\" [class.loading]=\"item.isLoading\">\n <i [class]=\"entityIcon\" class=\"item-icon\"></i>\n <span>{{item.recordName}}</span>\n @if (item.isLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n </div>\n </td>\n <td class=\"col-id\">\n <code class=\"record-id\">{{item.detail.RecordID}}</code>\n </td>\n <td class=\"col-added\">\n {{item.detail.__mj_CreatedAt | date:'shortDate'}}\n </td>\n <td class=\"col-actions\">\n <button\n class=\"btn-icon\"\n (click)=\"openRecord(item)\"\n title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n <div class=\"items-footer\">\n <span class=\"items-count\">\n Showing {{filteredItems.length}} of {{listItems.length}} items\n </span>\n </div>\n </div>\n }\n </section>\n }\n\n <!-- Sharing Section -->\n @if (activeSection === 'sharing') {\n <section class=\"section sharing-section\">\n <div class=\"section-header\">\n <h2>Sharing</h2>\n @if (isCurrentUserOwner()) {\n <div class=\"section-actions\">\n <button class=\"btn-primary\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-user-plus\"></i> Manage Sharing\n </button>\n </div>\n }\n </div>\n <!-- Sharing summary -->\n @if (stats.shareCount > 0 || stats.invitationCount > 0) {\n <div class=\"sharing-summary\">\n <div class=\"summary-card\">\n <div class=\"summary-icon\">\n <i class=\"fa-solid fa-users\"></i>\n </div>\n <div class=\"summary-content\">\n <span class=\"summary-value\">{{stats.shareCount}}</span>\n <span class=\"summary-label\">Active Share{{stats.shareCount !== 1 ? 's' : ''}}</span>\n </div>\n </div>\n @if (stats.invitationCount > 0) {\n <div class=\"summary-card\">\n <div class=\"summary-icon pending\">\n <i class=\"fa-solid fa-envelope\"></i>\n </div>\n <div class=\"summary-content\">\n <span class=\"summary-value\">{{stats.invitationCount}}</span>\n <span class=\"summary-label\">Pending Invitation{{stats.invitationCount !== 1 ? 's' : ''}}</span>\n </div>\n </div>\n }\n </div>\n }\n <!-- Empty state for no shares -->\n @if (stats.shareCount === 0 && stats.invitationCount === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n </div>\n <h3>Not Shared Yet</h3>\n @if (isCurrentUserOwner()) {\n <p>This list is private. Click \"Manage Sharing\" to share it with other users or roles.</p>\n }\n @if (!isCurrentUserOwner()) {\n <p>This list hasn't been shared with anyone else.</p>\n }\n @if (isCurrentUserOwner()) {\n <button class=\"btn-primary\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-user-plus\"></i> Share This List\n </button>\n }\n </div>\n }\n <!-- Read-only notice for non-owners -->\n @if (!isCurrentUserOwner() && (stats.shareCount > 0 || stats.invitationCount > 0)) {\n <div class=\"readonly-notice\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>Only the list owner can manage sharing settings.</span>\n </div>\n }\n </section>\n }\n\n <!-- Activity Section -->\n @if (activeSection === 'activity') {\n <section class=\"section activity-section\">\n <div class=\"section-header\">\n <h2>Activity</h2>\n </div>\n <div class=\"activity-timeline\">\n <div class=\"timeline-item\">\n <div class=\"timeline-icon\">\n <i class=\"fa-solid fa-edit\"></i>\n </div>\n <div class=\"timeline-content\">\n <p class=\"timeline-text\">List updated</p>\n <span class=\"timeline-date\">{{record.__mj_UpdatedAt | date:'medium'}}</span>\n </div>\n </div>\n <div class=\"timeline-item\">\n <div class=\"timeline-icon create\">\n <i class=\"fa-solid fa-plus\"></i>\n </div>\n <div class=\"timeline-content\">\n <p class=\"timeline-text\">List created</p>\n <span class=\"timeline-date\">{{record.__mj_CreatedAt | date:'medium'}}</span>\n </div>\n </div>\n </div>\n <div class=\"activity-info\">\n <p>Detailed activity tracking coming soon. You'll be able to see who added items, when shares were created, and more.</p>\n </div>\n </section>\n }\n\n <!-- Settings Section -->\n @if (activeSection === 'settings') {\n <section class=\"section settings-section\">\n <div class=\"section-header\">\n <h2>Settings</h2>\n </div>\n <div class=\"settings-form\">\n <mj-collapsible-panel\n SectionKey=\"listSettings\"\n SectionName=\"List Settings\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"form-body\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Name\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Description\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"CategoryID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n LinkComponentType=\"Search\">\n </mj-form-field>\n </div>\n </mj-collapsible-panel>\n <mj-collapsible-panel\n SectionKey=\"systemInfo\"\n SectionName=\"System Information\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"form-body\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EntityID\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserID\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n </div>\n </mj-collapsible-panel>\n </div>\n </section>\n }\n </main>\n</div>\n\n<!-- Add Records Dialog -->\n@if (showAddRecordsDialog) {\n <kendo-dialog\n [title]=\"'Add ' + entityDisplayName + ' to List'\"\n (close)=\"closeAddRecordsDialog()\"\n [minWidth]=\"400\"\n [width]=\"600\"\n [height]=\"550\">\n <div class=\"dialog-content add-records-dialog\">\n @if (addDialogSaving) {\n <div class=\"dialog-loading\">\n <mj-loading [text]=\"'Adding ' + addTotal + ' records to list...'\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!addDialogSaving) {\n <!-- Search Input -->\n <div class=\"search-section\">\n <kendo-textbox\n [placeholder]=\"'Search ' + entityDisplayName + '...'\"\n [clearButton]=\"true\"\n (valueChange)=\"onAddRecordsSearchChange($event)\"\n [value]=\"addRecordsSearchFilter\"\n class=\"search-input\">\n <ng-template kendoTextBoxPrefixTemplate>\n <span class=\"fa-solid fa-search search-icon\"></span>\n </ng-template>\n </kendo-textbox>\n <span class=\"search-hint\">Type at least 2 characters to search</span>\n </div>\n <!-- Records List -->\n <div class=\"records-list\">\n @if (addDialogLoading) {\n <div class=\"list-loading\">\n <mj-loading [showText]=\"false\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!addDialogLoading && addableRecords.length === 0 && addRecordsSearchFilter.length >= 2) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-search empty-icon\"></span>\n <p>No records found matching \"{{ addRecordsSearchFilter }}\"</p>\n </div>\n }\n @if (!addDialogLoading && addableRecords.length === 0 && addRecordsSearchFilter.length < 2) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-list empty-icon\"></span>\n <p>Search for records to add to this list</p>\n </div>\n }\n @if (!addDialogLoading && addableRecords.length > 0) {\n <!-- Selection controls -->\n <div class=\"selection-controls\">\n <button kendoButton fillMode=\"flat\" size=\"small\" (click)=\"selectAllAddable()\">Select All</button>\n <button kendoButton fillMode=\"flat\" size=\"small\" (click)=\"deselectAllAddable()\">Deselect All</button>\n <span class=\"selection-info\">{{ selectedAddableRecords.length }} selected</span>\n </div>\n <!-- Records -->\n <div class=\"records-scroll\">\n @for (record of addableRecords; track record) {\n <div class=\"record-item\"\n [class.in-list]=\"record.isInList\"\n [class.selected]=\"record.isSelected\"\n (click)=\"toggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.isInList) {\n <span class=\"fa-solid fa-check in-list-icon\" title=\"Already in list\"></span>\n }\n @if (!record.isInList) {\n <input type=\"checkbox\"\n [checked]=\"record.isSelected\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRecordSelection(record)\">\n }\n </div>\n <div class=\"record-name\">{{ record.Name }}</div>\n @if (record.isInList) {\n <span class=\"in-list-badge\">In List</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n <kendo-dialog-actions>\n <button kendoButton\n (click)=\"confirmAddRecords()\"\n [disabled]=\"addDialogSaving || selectedAddableRecords.length === 0\"\n themeColor=\"primary\">\n Add {{ selectedAddableRecords.length > 0 ? selectedAddableRecords.length : '' }} Record{{ selectedAddableRecords.length !== 1 ? 's' : '' }}\n </button>\n <button kendoButton\n (click)=\"closeAddRecordsDialog()\"\n [disabled]=\"addDialogSaving\"\n fillMode=\"outline\">\n Cancel\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n}\n\n<!-- Add From View Dialog -->\n@if (showAddFromViewDialog) {\n <kendo-dialog\n title=\"Add Records from Views\"\n (close)=\"closeAddFromViewDialog()\"\n [minWidth]=\"400\"\n [width]=\"600\"\n [height]=\"500\">\n <div class=\"dialog-content\">\n @if (showAddFromViewLoader && fetchingRecordsToSave) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading records from views...\" size=\"small\"></mj-loading>\n </div>\n }\n @if (showAddFromViewLoader && addFromViewTotal > 0 && !fetchingRecordsToSave) {\n <div class=\"dialog-loading\">\n <mj-loading [text]=\"'Adding ' + addFromViewTotal + ' records to list...'\" size=\"small\"></mj-loading>\n </div>\n }\n @if (showAddFromViewLoader && !fetchingRecordsToSave && addFromViewTotal === 0) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading views...\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!showAddFromViewLoader) {\n <p class=\"dialog-instruction\">Select views to add their records to this list:</p>\n <div class=\"views-list\">\n @if (!userViews || userViews.length === 0) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-folder-open empty-icon\"></span>\n <p>No saved views found for this entity</p>\n </div>\n }\n @if (userViews && userViews.length > 0) {\n @for (view of userViews; track view) {\n <div class=\"view-item\"\n [class.selected]=\"isViewSelected(view)\"\n (click)=\"toggleViewSelection(view)\">\n <input type=\"checkbox\"\n [checked]=\"isViewSelected(view)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleViewSelection(view)\">\n <span class=\"fa-solid fa-table-list view-icon\"></span>\n <span class=\"view-name\">{{ view.Name }}</span>\n </div>\n }\n }\n </div>\n }\n </div>\n <kendo-dialog-actions>\n <button kendoButton\n (click)=\"confirmAddFromView()\"\n [disabled]=\"showAddFromViewLoader || userViewsToAdd.length === 0\"\n themeColor=\"primary\">\n Add from {{ userViewsToAdd.length }} View{{ userViewsToAdd.length !== 1 ? 's' : '' }}\n </button>\n <button kendoButton\n (click)=\"closeAddFromViewDialog()\"\n [disabled]=\"showAddFromViewLoader\"\n fillMode=\"outline\">\n Cancel\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n}\n\n<!-- Share Dialog -->\n@if (showShareDialog && shareDialogConfig) {\n <mj-list-share-dialog\n [config]=\"shareDialogConfig\"\n [visible]=\"showShareDialog\"\n (complete)=\"onShareDialogComplete($event)\"\n (cancel)=\"onShareDialogCancel()\">\n </mj-list-share-dialog>\n}\n"]}
@@ -5,7 +5,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { Component, ViewChild } from '@angular/core';
8
- import { RegisterClass } from '@memberjunction/global';
8
+ import { RegisterClass, UUIDsEqual } from '@memberjunction/global';
9
9
  import { BaseFormComponent } from '@memberjunction/ng-base-forms';
10
10
  import { MJQueryFormComponent } from '../../generated/Entities/MJQuery/mjquery.form.component';
11
11
  import { Metadata, RunView, RUN_QUERY_SQL_FILTERS } from '@memberjunction/core';
@@ -1170,7 +1170,7 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1170
1170
  if (!this.record.CategoryID)
1171
1171
  return '';
1172
1172
  const findPath = (categoryId) => {
1173
- const category = this.categories.find(c => c.ID === categoryId);
1173
+ const category = this.categories.find(c => UUIDsEqual(c.ID, categoryId));
1174
1174
  if (!category)
1175
1175
  return [];
1176
1176
  if (category.ParentID) {
@@ -1462,7 +1462,7 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1462
1462
  try {
1463
1463
  const deleted = await field.Delete();
1464
1464
  if (deleted) {
1465
- this.queryFields = this.queryFields.filter(f => f.ID !== field.ID);
1465
+ this.queryFields = this.queryFields.filter(f => !UUIDsEqual(f.ID, field.ID));
1466
1466
  this.updateUnsavedChangesFlag();
1467
1467
  MJNotificationService.Instance.CreateSimpleNotification('Field deleted successfully', 'success', 3000);
1468
1468
  }
@@ -1499,7 +1499,7 @@ let MJQueryFormComponentExtended = class MJQueryFormComponentExtended extends MJ
1499
1499
  try {
1500
1500
  const deleted = await entity.Delete();
1501
1501
  if (deleted) {
1502
- this.queryEntities = this.queryEntities.filter(e => e.ID !== entity.ID);
1502
+ this.queryEntities = this.queryEntities.filter(e => !UUIDsEqual(e.ID, entity.ID));
1503
1503
  this.updateUnsavedChangesFlag();
1504
1504
  MJNotificationService.Instance.CreateSimpleNotification('Entity deleted successfully', 'success', 3000);
1505
1505
  }