@memberjunction/ng-core-entity-forms 2.133.0 → 3.1.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 (674) hide show
  1. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js +1 -1
  2. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js.map +1 -1
  3. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +1 -1
  4. package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -1
  5. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.js +1 -1
  6. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.js.map +1 -1
  7. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.js +1 -1
  8. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.js.map +1 -1
  9. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.js +1 -1
  10. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.js.map +1 -1
  11. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.js +1 -1
  12. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.js.map +1 -1
  13. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.js +1 -1
  14. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.js.map +1 -1
  15. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.js +1 -1
  16. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.js.map +1 -1
  17. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.js +1 -1
  18. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.js.map +1 -1
  19. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.js +1 -1
  20. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.js.map +1 -1
  21. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.js +1 -1
  22. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.js.map +1 -1
  23. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.js +1 -1
  24. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.js.map +1 -1
  25. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.js +1 -1
  26. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.js.map +1 -1
  27. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.js +1 -1
  28. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.js.map +1 -1
  29. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.js +1 -1
  30. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.js.map +1 -1
  31. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.js +1 -1
  32. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.js.map +1 -1
  33. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.js +1 -1
  34. package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.js.map +1 -1
  35. package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.js +1 -1
  36. package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.js.map +1 -1
  37. package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js +1 -1
  38. package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js.map +1 -1
  39. package/dist/lib/custom/AIAgents/add-action-dialog.component.js +1 -1
  40. package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
  41. package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.js +1 -1
  42. package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.js.map +1 -1
  43. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +1 -1
  44. package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
  45. package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1 -1
  46. package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
  47. package/dist/lib/custom/AIAgents/ai-agent-management.service.js +1 -1
  48. package/dist/lib/custom/AIAgents/ai-agent-management.service.js.map +1 -1
  49. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +1 -1
  50. package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
  51. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +1 -1
  52. package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
  53. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +1 -1
  54. package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
  55. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +1 -1
  56. package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -1
  57. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +1 -1
  58. package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
  59. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +1 -1
  60. package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
  61. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +1 -1
  62. package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
  63. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +1 -1
  64. package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
  65. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +1 -1
  66. package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
  67. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +1 -1
  68. package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
  69. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js +1 -1
  70. package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js.map +1 -1
  71. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +1 -1
  72. package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
  73. package/dist/lib/custom/Actions/action-execution-log-form.component.js +1 -1
  74. package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
  75. package/dist/lib/custom/Actions/action-form.component.js +1 -1
  76. package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
  77. package/dist/lib/custom/Actions/action-param-dialog.component.d.ts +1 -1
  78. package/dist/lib/custom/Actions/action-param-dialog.component.d.ts.map +1 -1
  79. package/dist/lib/custom/Actions/action-param-dialog.component.js +2 -1
  80. package/dist/lib/custom/Actions/action-param-dialog.component.js.map +1 -1
  81. package/dist/lib/custom/Actions/action-result-code-dialog.component.js +1 -1
  82. package/dist/lib/custom/Actions/action-result-code-dialog.component.js.map +1 -1
  83. package/dist/lib/custom/Actions/action-test-harness-dialog.component.js +1 -1
  84. package/dist/lib/custom/Actions/action-test-harness-dialog.component.js.map +1 -1
  85. package/dist/lib/custom/Actions/action-test-harness.component.js +1 -1
  86. package/dist/lib/custom/Actions/action-test-harness.component.js.map +1 -1
  87. package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
  88. package/dist/lib/custom/Entities/entity-form.component.js +1 -6
  89. package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
  90. package/dist/lib/custom/EntityActions/entityaction.form.component.js +1 -1
  91. package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
  92. package/dist/lib/custom/Lists/list-form.component.d.ts +48 -1
  93. package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
  94. package/dist/lib/custom/Lists/list-form.component.js +893 -176
  95. package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
  96. package/dist/lib/custom/Queries/query-category-dialog.component.js +1 -1
  97. package/dist/lib/custom/Queries/query-category-dialog.component.js.map +1 -1
  98. package/dist/lib/custom/Queries/query-form.component.js +1 -1
  99. package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
  100. package/dist/lib/custom/Queries/query-run-dialog.component.js +1 -1
  101. package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
  102. package/dist/lib/custom/Templates/template-param-dialog.component.js +1 -1
  103. package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
  104. package/dist/lib/custom/Templates/template-params-grid.component.js +1 -1
  105. package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
  106. package/dist/lib/custom/Templates/templates-form.component.js +1 -1
  107. package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
  108. package/dist/lib/custom/Tests/entity-link-pill.component.js +1 -1
  109. package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
  110. package/dist/lib/custom/Tests/test-form.component.js +1 -1
  111. package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
  112. package/dist/lib/custom/Tests/test-rubric-form.component.js +1 -1
  113. package/dist/lib/custom/Tests/test-rubric-form.component.js.map +1 -1
  114. package/dist/lib/custom/Tests/test-run-feedback-form.component.js +1 -1
  115. package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
  116. package/dist/lib/custom/Tests/test-run-form.component.d.ts +2 -3
  117. package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
  118. package/dist/lib/custom/Tests/test-run-form.component.js +3 -4
  119. package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
  120. package/dist/lib/custom/Tests/test-suite-form.component.js +1 -1
  121. package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
  122. package/dist/lib/custom/Tests/test-suite-run-form.component.js +1 -1
  123. package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
  124. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +1 -1
  125. package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
  126. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js +1 -1
  127. package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js.map +1 -1
  128. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +1 -1
  129. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
  130. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +1 -1
  131. package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
  132. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +1 -1
  133. package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
  134. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +1 -1
  135. package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
  136. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +2 -3
  137. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
  138. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +3 -4
  139. package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
  140. package/dist/lib/custom/custom-forms.module.d.ts +2 -1
  141. package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
  142. package/dist/lib/custom/custom-forms.module.js +8 -4
  143. package/dist/lib/custom/custom-forms.module.js.map +1 -1
  144. package/dist/lib/custom/shared/entity-selector-dialog.component.js +1 -1
  145. package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
  146. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js +1 -1
  147. package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js.map +1 -1
  148. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +1 -1
  149. package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
  150. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js +1 -1
  151. package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js.map +1 -1
  152. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js +1 -1
  153. package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js.map +1 -1
  154. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js +1 -1
  155. package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js.map +1 -1
  156. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.js +1 -1
  157. package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.js.map +1 -1
  158. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.js +1 -1
  159. package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.js.map +1 -1
  160. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js +1 -1
  161. package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js.map +1 -1
  162. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.js +1 -1
  163. package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.js.map +1 -1
  164. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js +1 -1
  165. package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js.map +1 -1
  166. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js +1 -1
  167. package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js.map +1 -1
  168. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js +1 -1
  169. package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js.map +1 -1
  170. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js +1 -1
  171. package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js.map +1 -1
  172. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js +1 -1
  173. package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js.map +1 -1
  174. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.js +1 -1
  175. package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.js.map +1 -1
  176. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js +1 -1
  177. package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js.map +1 -1
  178. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.d.ts.map +1 -1
  179. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js +31 -13
  180. package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js.map +1 -1
  181. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.d.ts +11 -0
  182. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.d.ts.map +1 -0
  183. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.js +105 -0
  184. package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.js.map +1 -0
  185. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js +1 -1
  186. package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js.map +1 -1
  187. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js +1 -1
  188. package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js.map +1 -1
  189. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js +1 -1
  190. package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js.map +1 -1
  191. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js +1 -1
  192. package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js.map +1 -1
  193. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.js +1 -1
  194. package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.js.map +1 -1
  195. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js +1 -1
  196. package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js.map +1 -1
  197. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js +1 -1
  198. package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js.map +1 -1
  199. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.js +1 -1
  200. package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.js.map +1 -1
  201. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.d.ts.map +1 -1
  202. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.js +49 -13
  203. package/dist/lib/generated/Entities/AIModality/aimodality.form.component.js.map +1 -1
  204. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js +1 -1
  205. package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js.map +1 -1
  206. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js +1 -1
  207. package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js.map +1 -1
  208. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.js +1 -1
  209. package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.js.map +1 -1
  210. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js +1 -1
  211. package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js.map +1 -1
  212. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.js +1 -1
  213. package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.js.map +1 -1
  214. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js +1 -1
  215. package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js.map +1 -1
  216. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js +1 -1
  217. package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js.map +1 -1
  218. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js +1 -1
  219. package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js.map +1 -1
  220. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js +1 -1
  221. package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js.map +1 -1
  222. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +1 -1
  223. package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
  224. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js +1 -1
  225. package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js.map +1 -1
  226. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js +1 -1
  227. package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js.map +1 -1
  228. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.d.ts.map +1 -1
  229. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js +26 -8
  230. package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js.map +1 -1
  231. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.d.ts +11 -0
  232. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.d.ts.map +1 -0
  233. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.js +118 -0
  234. package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.js.map +1 -0
  235. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js +1 -1
  236. package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js.map +1 -1
  237. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js +1 -1
  238. package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js.map +1 -1
  239. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +1 -1
  240. package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js.map +1 -1
  241. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js +1 -1
  242. package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js.map +1 -1
  243. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js +1 -1
  244. package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js.map +1 -1
  245. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.js +1 -1
  246. package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.js.map +1 -1
  247. package/dist/lib/generated/Entities/Action/action.form.component.js +1 -1
  248. package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
  249. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js +1 -1
  250. package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js.map +1 -1
  251. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js +1 -1
  252. package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js.map +1 -1
  253. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js +1 -1
  254. package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js.map +1 -1
  255. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js +1 -1
  256. package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js.map +1 -1
  257. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js +1 -1
  258. package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js.map +1 -1
  259. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js +1 -1
  260. package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js.map +1 -1
  261. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js +1 -1
  262. package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js.map +1 -1
  263. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js +18 -16
  264. package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js.map +1 -1
  265. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js +1 -1
  266. package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js.map +1 -1
  267. package/dist/lib/generated/Entities/Application/application.form.component.js +1 -1
  268. package/dist/lib/generated/Entities/Application/application.form.component.js.map +1 -1
  269. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js +1 -1
  270. package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js.map +1 -1
  271. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js +1 -1
  272. package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js.map +1 -1
  273. package/dist/lib/generated/Entities/Artifact/artifact.form.component.js +1 -1
  274. package/dist/lib/generated/Entities/Artifact/artifact.form.component.js.map +1 -1
  275. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.js +1 -1
  276. package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.js.map +1 -1
  277. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js +1 -1
  278. package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js.map +1 -1
  279. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.js +1 -1
  280. package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.js.map +1 -1
  281. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js +1 -1
  282. package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js.map +1 -1
  283. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js +1 -1
  284. package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js.map +1 -1
  285. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js +1 -1
  286. package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js.map +1 -1
  287. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js +1 -1
  288. package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js.map +1 -1
  289. package/dist/lib/generated/Entities/Authorization/authorization.form.component.js +1 -1
  290. package/dist/lib/generated/Entities/Authorization/authorization.form.component.js.map +1 -1
  291. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js +1 -1
  292. package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js.map +1 -1
  293. package/dist/lib/generated/Entities/Collection/collection.form.component.js +1 -1
  294. package/dist/lib/generated/Entities/Collection/collection.form.component.js.map +1 -1
  295. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.js +1 -1
  296. package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.js.map +1 -1
  297. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js +1 -1
  298. package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js.map +1 -1
  299. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js +1 -1
  300. package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js.map +1 -1
  301. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js +1 -1
  302. package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js.map +1 -1
  303. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js +1 -1
  304. package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js.map +1 -1
  305. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js +1 -1
  306. package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js.map +1 -1
  307. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js +1 -1
  308. package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js.map +1 -1
  309. package/dist/lib/generated/Entities/Company/company.form.component.js +1 -1
  310. package/dist/lib/generated/Entities/Company/company.form.component.js.map +1 -1
  311. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js +1 -1
  312. package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js.map +1 -1
  313. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js +1 -1
  314. package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js.map +1 -1
  315. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js +1 -1
  316. package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js.map +1 -1
  317. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js +1 -1
  318. package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js.map +1 -1
  319. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js +1 -1
  320. package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js.map +1 -1
  321. package/dist/lib/generated/Entities/Component/component.form.component.js +1 -1
  322. package/dist/lib/generated/Entities/Component/component.form.component.js.map +1 -1
  323. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.js +1 -1
  324. package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.js.map +1 -1
  325. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.js +1 -1
  326. package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.js.map +1 -1
  327. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.js +1 -1
  328. package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.js.map +1 -1
  329. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.js +1 -1
  330. package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.js.map +1 -1
  331. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js +1 -1
  332. package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js.map +1 -1
  333. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js +1 -1
  334. package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js.map +1 -1
  335. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js +1 -1
  336. package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js.map +1 -1
  337. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js +1 -1
  338. package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js.map +1 -1
  339. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js +1 -1
  340. package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js.map +1 -1
  341. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js +1 -1
  342. package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js.map +1 -1
  343. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js +1 -1
  344. package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js.map +1 -1
  345. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js +1 -1
  346. package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js.map +1 -1
  347. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js +1 -1
  348. package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js.map +1 -1
  349. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js +1 -1
  350. package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js.map +1 -1
  351. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js +1 -1
  352. package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js.map +1 -1
  353. package/dist/lib/generated/Entities/Conversation/conversation.form.component.js +1 -1
  354. package/dist/lib/generated/Entities/Conversation/conversation.form.component.js.map +1 -1
  355. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js +1 -1
  356. package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js.map +1 -1
  357. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js +1 -1
  358. package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js.map +1 -1
  359. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js +1 -1
  360. package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js.map +1 -1
  361. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js +1 -1
  362. package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js.map +1 -1
  363. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js +1 -1
  364. package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js.map +1 -1
  365. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.js +12 -10
  366. package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.js.map +1 -1
  367. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js +1 -1
  368. package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js.map +1 -1
  369. package/dist/lib/generated/Entities/Credential/credential.form.component.js +1 -1
  370. package/dist/lib/generated/Entities/Credential/credential.form.component.js.map +1 -1
  371. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.js +1 -1
  372. package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.js.map +1 -1
  373. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js +1 -1
  374. package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js.map +1 -1
  375. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.d.ts.map +1 -1
  376. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js +44 -8
  377. package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js.map +1 -1
  378. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.d.ts.map +1 -1
  379. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js +42 -6
  380. package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js.map +1 -1
  381. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.d.ts +11 -0
  382. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.d.ts.map +1 -0
  383. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.js +75 -0
  384. package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.js.map +1 -0
  385. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.d.ts +11 -0
  386. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.d.ts.map +1 -0
  387. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.js +85 -0
  388. package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.js.map +1 -0
  389. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.d.ts +11 -0
  390. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.d.ts.map +1 -0
  391. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.js +75 -0
  392. package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.js.map +1 -0
  393. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.d.ts +11 -0
  394. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.d.ts.map +1 -0
  395. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.js +79 -0
  396. package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.js.map +1 -0
  397. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js +1 -1
  398. package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js.map +1 -1
  399. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js +1 -1
  400. package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js.map +1 -1
  401. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js +1 -1
  402. package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js.map +1 -1
  403. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js +1 -1
  404. package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js.map +1 -1
  405. package/dist/lib/generated/Entities/Dataset/dataset.form.component.js +1 -1
  406. package/dist/lib/generated/Entities/Dataset/dataset.form.component.js.map +1 -1
  407. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js +1 -1
  408. package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js.map +1 -1
  409. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js +1 -1
  410. package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js.map +1 -1
  411. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js +1 -1
  412. package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js.map +1 -1
  413. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js +1 -1
  414. package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js.map +1 -1
  415. package/dist/lib/generated/Entities/Employee/employee.form.component.js +1 -1
  416. package/dist/lib/generated/Entities/Employee/employee.form.component.js.map +1 -1
  417. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js +1 -1
  418. package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js.map +1 -1
  419. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js +1 -1
  420. package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js.map +1 -1
  421. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js +1 -1
  422. package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js.map +1 -1
  423. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.js +1 -1
  424. package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.js.map +1 -1
  425. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.js +1 -1
  426. package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.js.map +1 -1
  427. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.js +1 -1
  428. package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.js.map +1 -1
  429. package/dist/lib/generated/Entities/Entity/entity.form.component.js +1 -1
  430. package/dist/lib/generated/Entities/Entity/entity.form.component.js.map +1 -1
  431. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js +1 -1
  432. package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js.map +1 -1
  433. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js +1 -1
  434. package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js.map +1 -1
  435. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js +1 -1
  436. package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js.map +1 -1
  437. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js +1 -1
  438. package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js.map +1 -1
  439. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js +1 -1
  440. package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js.map +1 -1
  441. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js +1 -1
  442. package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js.map +1 -1
  443. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js +1 -1
  444. package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js.map +1 -1
  445. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js +1 -1
  446. package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js.map +1 -1
  447. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js +1 -1
  448. package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js.map +1 -1
  449. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js +1 -1
  450. package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js.map +1 -1
  451. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js +1 -1
  452. package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js.map +1 -1
  453. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js +1 -1
  454. package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js.map +1 -1
  455. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js +1 -1
  456. package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js.map +1 -1
  457. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js +1 -1
  458. package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js.map +1 -1
  459. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js +1 -1
  460. package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js.map +1 -1
  461. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js +1 -1
  462. package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js.map +1 -1
  463. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js +1 -1
  464. package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js.map +1 -1
  465. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js +1 -1
  466. package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js.map +1 -1
  467. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js +1 -1
  468. package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js.map +1 -1
  469. package/dist/lib/generated/Entities/Environment/environment.form.component.js +1 -1
  470. package/dist/lib/generated/Entities/Environment/environment.form.component.js.map +1 -1
  471. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js +1 -1
  472. package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js.map +1 -1
  473. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js +1 -1
  474. package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js.map +1 -1
  475. package/dist/lib/generated/Entities/File/file.form.component.d.ts.map +1 -1
  476. package/dist/lib/generated/Entities/File/file.form.component.js +43 -7
  477. package/dist/lib/generated/Entities/File/file.form.component.js.map +1 -1
  478. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js +1 -1
  479. package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js.map +1 -1
  480. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js +1 -1
  481. package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js.map +1 -1
  482. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js +1 -1
  483. package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js.map +1 -1
  484. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js +1 -1
  485. package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js.map +1 -1
  486. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js +1 -1
  487. package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js.map +1 -1
  488. package/dist/lib/generated/Entities/Integration/integration.form.component.js +1 -1
  489. package/dist/lib/generated/Entities/Integration/integration.form.component.js.map +1 -1
  490. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js +1 -1
  491. package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js.map +1 -1
  492. package/dist/lib/generated/Entities/Library/library.form.component.js +1 -1
  493. package/dist/lib/generated/Entities/Library/library.form.component.js.map +1 -1
  494. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js +1 -1
  495. package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js.map +1 -1
  496. package/dist/lib/generated/Entities/List/list.form.component.js +1 -1
  497. package/dist/lib/generated/Entities/List/list.form.component.js.map +1 -1
  498. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js +1 -1
  499. package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js.map +1 -1
  500. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js +1 -1
  501. package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js.map +1 -1
  502. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.js +1 -1
  503. package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.js.map +1 -1
  504. package/dist/lib/generated/Entities/ListShare/listshare.form.component.js +1 -1
  505. package/dist/lib/generated/Entities/ListShare/listshare.form.component.js.map +1 -1
  506. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js +1 -1
  507. package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js.map +1 -1
  508. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js +1 -1
  509. package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js.map +1 -1
  510. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js +1 -1
  511. package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js.map +1 -1
  512. package/dist/lib/generated/Entities/Project/project.form.component.js +1 -1
  513. package/dist/lib/generated/Entities/Project/project.form.component.js.map +1 -1
  514. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.js +1 -1
  515. package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.js.map +1 -1
  516. package/dist/lib/generated/Entities/Query/query.form.component.js +1 -1
  517. package/dist/lib/generated/Entities/Query/query.form.component.js.map +1 -1
  518. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js +1 -1
  519. package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js.map +1 -1
  520. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js +1 -1
  521. package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js.map +1 -1
  522. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js +1 -1
  523. package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js.map +1 -1
  524. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js +1 -1
  525. package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js.map +1 -1
  526. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js +1 -1
  527. package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js.map +1 -1
  528. package/dist/lib/generated/Entities/Queue/queue.form.component.js +1 -1
  529. package/dist/lib/generated/Entities/Queue/queue.form.component.js.map +1 -1
  530. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js +1 -1
  531. package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js.map +1 -1
  532. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js +1 -1
  533. package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js.map +1 -1
  534. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js +1 -1
  535. package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js.map +1 -1
  536. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js +1 -1
  537. package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js.map +1 -1
  538. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js +1 -1
  539. package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js.map +1 -1
  540. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js +1 -1
  541. package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js.map +1 -1
  542. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js +1 -1
  543. package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js.map +1 -1
  544. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js +1 -1
  545. package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js.map +1 -1
  546. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.js +1 -1
  547. package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.js.map +1 -1
  548. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js +1 -1
  549. package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js.map +1 -1
  550. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js +1 -1
  551. package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js.map +1 -1
  552. package/dist/lib/generated/Entities/Report/report.form.component.js +1 -1
  553. package/dist/lib/generated/Entities/Report/report.form.component.js.map +1 -1
  554. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js +1 -1
  555. package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js.map +1 -1
  556. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js +1 -1
  557. package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js.map +1 -1
  558. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js +1 -1
  559. package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js.map +1 -1
  560. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js +1 -1
  561. package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js.map +1 -1
  562. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js +1 -1
  563. package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js.map +1 -1
  564. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js +1 -1
  565. package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js.map +1 -1
  566. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js +1 -1
  567. package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js.map +1 -1
  568. package/dist/lib/generated/Entities/Role/role.form.component.js +1 -1
  569. package/dist/lib/generated/Entities/Role/role.form.component.js.map +1 -1
  570. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js +1 -1
  571. package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js.map +1 -1
  572. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js +1 -1
  573. package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js.map +1 -1
  574. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js +1 -1
  575. package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js.map +1 -1
  576. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.js +1 -1
  577. package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.js.map +1 -1
  578. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.js +1 -1
  579. package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.js.map +1 -1
  580. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.js +1 -1
  581. package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.js.map +1 -1
  582. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js +1 -1
  583. package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js.map +1 -1
  584. package/dist/lib/generated/Entities/Skill/skill.form.component.js +1 -1
  585. package/dist/lib/generated/Entities/Skill/skill.form.component.js.map +1 -1
  586. package/dist/lib/generated/Entities/Tag/tag.form.component.js +1 -1
  587. package/dist/lib/generated/Entities/Tag/tag.form.component.js.map +1 -1
  588. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js +1 -1
  589. package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js.map +1 -1
  590. package/dist/lib/generated/Entities/Task/task.form.component.js +1 -1
  591. package/dist/lib/generated/Entities/Task/task.form.component.js.map +1 -1
  592. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.js +1 -1
  593. package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.js.map +1 -1
  594. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.js +1 -1
  595. package/dist/lib/generated/Entities/TaskType/tasktype.form.component.js.map +1 -1
  596. package/dist/lib/generated/Entities/Template/template.form.component.js +1 -1
  597. package/dist/lib/generated/Entities/Template/template.form.component.js.map +1 -1
  598. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js +1 -1
  599. package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js.map +1 -1
  600. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js +1 -1
  601. package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js.map +1 -1
  602. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js +1 -1
  603. package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js.map +1 -1
  604. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js +1 -1
  605. package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js.map +1 -1
  606. package/dist/lib/generated/Entities/Test/test.form.component.js +20 -18
  607. package/dist/lib/generated/Entities/Test/test.form.component.js.map +1 -1
  608. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js +1 -1
  609. package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js.map +1 -1
  610. package/dist/lib/generated/Entities/TestRun/testrun.form.component.js +39 -37
  611. package/dist/lib/generated/Entities/TestRun/testrun.form.component.js.map +1 -1
  612. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js +1 -1
  613. package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js.map +1 -1
  614. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js +23 -21
  615. package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js.map +1 -1
  616. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js +17 -15
  617. package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js.map +1 -1
  618. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js +1 -1
  619. package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js.map +1 -1
  620. package/dist/lib/generated/Entities/TestType/testtype.form.component.d.ts.map +1 -1
  621. package/dist/lib/generated/Entities/TestType/testtype.form.component.js +22 -14
  622. package/dist/lib/generated/Entities/TestType/testtype.form.component.js.map +1 -1
  623. package/dist/lib/generated/Entities/User/user.form.component.d.ts.map +1 -1
  624. package/dist/lib/generated/Entities/User/user.form.component.js +232 -142
  625. package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
  626. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js +1 -1
  627. package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js.map +1 -1
  628. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js +1 -1
  629. package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js.map +1 -1
  630. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js +1 -1
  631. package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js.map +1 -1
  632. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js +1 -1
  633. package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js.map +1 -1
  634. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js +1 -1
  635. package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js.map +1 -1
  636. package/dist/lib/generated/Entities/UserRole/userrole.form.component.js +1 -1
  637. package/dist/lib/generated/Entities/UserRole/userrole.form.component.js.map +1 -1
  638. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.js +1 -1
  639. package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.js.map +1 -1
  640. package/dist/lib/generated/Entities/UserView/userview.form.component.js +1 -1
  641. package/dist/lib/generated/Entities/UserView/userview.form.component.js.map +1 -1
  642. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js +1 -1
  643. package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js.map +1 -1
  644. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js +1 -1
  645. package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js.map +1 -1
  646. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js +1 -1
  647. package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js.map +1 -1
  648. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js +1 -1
  649. package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js.map +1 -1
  650. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js +1 -1
  651. package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js.map +1 -1
  652. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js +1 -1
  653. package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js.map +1 -1
  654. package/dist/lib/generated/Entities/Workflow/workflow.form.component.js +1 -1
  655. package/dist/lib/generated/Entities/Workflow/workflow.form.component.js.map +1 -1
  656. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js +1 -1
  657. package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js.map +1 -1
  658. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js +1 -1
  659. package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js.map +1 -1
  660. package/dist/lib/generated/Entities/Workspace/workspace.form.component.js +1 -1
  661. package/dist/lib/generated/Entities/Workspace/workspace.form.component.js.map +1 -1
  662. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js +1 -1
  663. package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js.map +1 -1
  664. package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.d.ts +11 -0
  665. package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.d.ts.map +1 -0
  666. package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.js +67 -0
  667. package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.js.map +1 -0
  668. package/dist/lib/generated/generated-forms.module.d.ts +164 -157
  669. package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
  670. package/dist/lib/generated/generated-forms.module.js +140 -112
  671. package/dist/lib/generated/generated-forms.module.js.map +1 -1
  672. package/dist/lib/shared/components/template-editor.component.js +1 -1
  673. package/dist/lib/shared/components/template-editor.component.js.map +1 -1
  674. package/package.json +36 -35
@@ -5,52 +5,55 @@ 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, ChangeDetectionStrategy } from '@angular/core';
8
- import { Subject } from 'rxjs';
8
+ import { Subject, debounceTime } from 'rxjs';
9
9
  import { RegisterClass } from '@memberjunction/global';
10
10
  import { BaseFormComponent } from '@memberjunction/ng-base-forms';
11
11
  import { ListFormComponent } from '../../generated/Entities/List/list.form.component';
12
- import { Metadata, RunView } from '@memberjunction/core';
12
+ import { Metadata, RunView, LogError, LogStatus } from '@memberjunction/core';
13
13
  import * as i0 from "@angular/core";
14
14
  import * as i1 from "@angular/common";
15
15
  import * as i2 from "@angular/forms";
16
- import * as i3 from "@memberjunction/ng-user-view-grid";
17
- import * as i4 from "@memberjunction/ng-base-forms";
18
- import * as i5 from "@memberjunction/ng-shared-generic";
16
+ import * as i3 from "@progress/kendo-angular-dialog";
17
+ import * as i4 from "@progress/kendo-angular-inputs";
18
+ import * as i5 from "@progress/kendo-angular-buttons";
19
+ import * as i6 from "@memberjunction/ng-base-forms";
20
+ import * as i7 from "@memberjunction/ng-shared-generic";
21
+ import * as i8 from "@memberjunction/ng-list-management";
19
22
  function ListFormComponentExtended_ng_container_7_button_3_Template(rf, ctx) { if (rf & 1) {
20
23
  const _r1 = i0.ɵɵgetCurrentView();
21
- i0.ɵɵelementStart(0, "button", 23);
24
+ i0.ɵɵelementStart(0, "button", 26);
22
25
  i0.ɵɵlistener("click", function ListFormComponentExtended_ng_container_7_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.startEditingName()); });
23
- i0.ɵɵelement(1, "i", 24);
26
+ i0.ɵɵelement(1, "i", 27);
24
27
  i0.ɵɵelementEnd();
25
28
  } }
26
29
  function ListFormComponentExtended_ng_container_7_Template(rf, ctx) { if (rf & 1) {
27
30
  i0.ɵɵelementContainerStart(0);
28
- i0.ɵɵelementStart(1, "h1", 21);
31
+ i0.ɵɵelementStart(1, "h1", 24);
29
32
  i0.ɵɵtext(2);
30
33
  i0.ɵɵelementEnd();
31
- i0.ɵɵtemplate(3, ListFormComponentExtended_ng_container_7_button_3_Template, 2, 0, "button", 22);
34
+ i0.ɵɵtemplate(3, ListFormComponentExtended_ng_container_7_button_3_Template, 2, 0, "button", 25);
32
35
  i0.ɵɵelementContainerEnd();
33
36
  } if (rf & 2) {
34
37
  const ctx_r1 = i0.ɵɵnextContext();
35
38
  i0.ɵɵadvance(2);
36
- i0.ɵɵtextInterpolate((ctx_r1.record == null ? null : ctx_r1.record.Name) || "Untitled List");
39
+ i0.ɵɵtextInterpolate(ctx_r1.record.Name || "Untitled List");
37
40
  i0.ɵɵadvance();
38
41
  i0.ɵɵproperty("ngIf", ctx_r1.isCurrentUserOwner());
39
42
  } }
40
43
  function ListFormComponentExtended_ng_container_8_Template(rf, ctx) { if (rf & 1) {
41
44
  const _r3 = i0.ɵɵgetCurrentView();
42
45
  i0.ɵɵelementContainerStart(0);
43
- i0.ɵɵelementStart(1, "input", 25, 0);
46
+ i0.ɵɵelementStart(1, "input", 28, 0);
44
47
  i0.ɵɵtwoWayListener("ngModelChange", function ListFormComponentExtended_ng_container_8_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.editingName, $event) || (ctx_r1.editingName = $event); return i0.ɵɵresetView($event); });
45
48
  i0.ɵɵlistener("keydown.enter", function ListFormComponentExtended_ng_container_8_Template_input_keydown_enter_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.saveNameEdit()); })("keydown.escape", function ListFormComponentExtended_ng_container_8_Template_input_keydown_escape_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancelNameEdit()); });
46
49
  i0.ɵɵelementEnd();
47
- i0.ɵɵelementStart(3, "button", 26);
50
+ i0.ɵɵelementStart(3, "button", 29);
48
51
  i0.ɵɵlistener("click", function ListFormComponentExtended_ng_container_8_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.saveNameEdit()); });
49
- i0.ɵɵelement(4, "i", 27);
52
+ i0.ɵɵelement(4, "i", 30);
50
53
  i0.ɵɵelementEnd();
51
- i0.ɵɵelementStart(5, "button", 28);
54
+ i0.ɵɵelementStart(5, "button", 31);
52
55
  i0.ɵɵlistener("click", function ListFormComponentExtended_ng_container_8_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancelNameEdit()); });
53
- i0.ɵɵelement(6, "i", 29);
56
+ i0.ɵɵelement(6, "i", 32);
54
57
  i0.ɵɵelementEnd();
55
58
  i0.ɵɵelementContainerEnd();
56
59
  } if (rf & 2) {
@@ -59,7 +62,7 @@ function ListFormComponentExtended_ng_container_8_Template(rf, ctx) { if (rf & 1
59
62
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.editingName);
60
63
  } }
61
64
  function ListFormComponentExtended_button_30_span_4_Template(rf, ctx) { if (rf & 1) {
62
- i0.ɵɵelementStart(0, "span", 33);
65
+ i0.ɵɵelementStart(0, "span", 36);
63
66
  i0.ɵɵtext(1);
64
67
  i0.ɵɵelementEnd();
65
68
  } if (rf & 2) {
@@ -69,13 +72,13 @@ function ListFormComponentExtended_button_30_span_4_Template(rf, ctx) { if (rf &
69
72
  } }
70
73
  function ListFormComponentExtended_button_30_Template(rf, ctx) { if (rf & 1) {
71
74
  const _r4 = i0.ɵɵgetCurrentView();
72
- i0.ɵɵelementStart(0, "button", 30);
75
+ i0.ɵɵelementStart(0, "button", 33);
73
76
  i0.ɵɵlistener("click", function ListFormComponentExtended_button_30_Template_button_click_0_listener() { const nav_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setActiveSection(nav_r5.id)); });
74
77
  i0.ɵɵelement(1, "i");
75
- i0.ɵɵelementStart(2, "span", 31);
78
+ i0.ɵɵelementStart(2, "span", 34);
76
79
  i0.ɵɵtext(3);
77
80
  i0.ɵɵelementEnd();
78
- i0.ɵɵtemplate(4, ListFormComponentExtended_button_30_span_4_Template, 2, 1, "span", 32);
81
+ i0.ɵɵtemplate(4, ListFormComponentExtended_button_30_span_4_Template, 2, 1, "span", 35);
79
82
  i0.ɵɵelementEnd();
80
83
  } if (rf & 2) {
81
84
  const nav_r5 = ctx.$implicit;
@@ -91,13 +94,13 @@ function ListFormComponentExtended_button_30_Template(rf, ctx) { if (rf & 1) {
91
94
  } }
92
95
  function ListFormComponentExtended_section_32_button_7_Template(rf, ctx) { if (rf & 1) {
93
96
  const _r7 = i0.ɵɵgetCurrentView();
94
- i0.ɵɵelementStart(0, "button", 61);
97
+ i0.ɵɵelementStart(0, "button", 64);
95
98
  i0.ɵɵlistener("click", function ListFormComponentExtended_section_32_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.startEditingDescription()); });
96
- i0.ɵɵelement(1, "i", 24);
99
+ i0.ɵɵelement(1, "i", 27);
97
100
  i0.ɵɵelementEnd();
98
101
  } }
99
102
  function ListFormComponentExtended_section_32_ng_container_9_p_1_Template(rf, ctx) { if (rf & 1) {
100
- i0.ɵɵelementStart(0, "p", 64);
103
+ i0.ɵɵelementStart(0, "p", 67);
101
104
  i0.ɵɵtext(1);
102
105
  i0.ɵɵelementEnd();
103
106
  } if (rf & 2) {
@@ -106,33 +109,33 @@ function ListFormComponentExtended_section_32_ng_container_9_p_1_Template(rf, ct
106
109
  i0.ɵɵtextInterpolate(ctx_r1.record.Description);
107
110
  } }
108
111
  function ListFormComponentExtended_section_32_ng_container_9_p_2_Template(rf, ctx) { if (rf & 1) {
109
- i0.ɵɵelementStart(0, "p", 65);
112
+ i0.ɵɵelementStart(0, "p", 68);
110
113
  i0.ɵɵtext(1, "No description provided");
111
114
  i0.ɵɵelementEnd();
112
115
  } }
113
116
  function ListFormComponentExtended_section_32_ng_container_9_Template(rf, ctx) { if (rf & 1) {
114
117
  i0.ɵɵelementContainerStart(0);
115
- i0.ɵɵtemplate(1, ListFormComponentExtended_section_32_ng_container_9_p_1_Template, 2, 1, "p", 62)(2, ListFormComponentExtended_section_32_ng_container_9_p_2_Template, 2, 0, "p", 63);
118
+ i0.ɵɵtemplate(1, ListFormComponentExtended_section_32_ng_container_9_p_1_Template, 2, 1, "p", 65)(2, ListFormComponentExtended_section_32_ng_container_9_p_2_Template, 2, 0, "p", 66);
116
119
  i0.ɵɵelementContainerEnd();
117
120
  } if (rf & 2) {
118
121
  const ctx_r1 = i0.ɵɵnextContext(2);
119
122
  i0.ɵɵadvance();
120
- i0.ɵɵproperty("ngIf", ctx_r1.record == null ? null : ctx_r1.record.Description);
123
+ i0.ɵɵproperty("ngIf", ctx_r1.record.Description);
121
124
  i0.ɵɵadvance();
122
- i0.ɵɵproperty("ngIf", !(ctx_r1.record == null ? null : ctx_r1.record.Description));
125
+ i0.ɵɵproperty("ngIf", !ctx_r1.record.Description);
123
126
  } }
124
127
  function ListFormComponentExtended_section_32_ng_container_10_Template(rf, ctx) { if (rf & 1) {
125
128
  const _r8 = i0.ɵɵgetCurrentView();
126
129
  i0.ɵɵelementContainerStart(0);
127
- i0.ɵɵelementStart(1, "textarea", 66);
130
+ i0.ɵɵelementStart(1, "textarea", 69);
128
131
  i0.ɵɵtwoWayListener("ngModelChange", function ListFormComponentExtended_section_32_ng_container_10_Template_textarea_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.editingDescription, $event) || (ctx_r1.editingDescription = $event); return i0.ɵɵresetView($event); });
129
132
  i0.ɵɵlistener("keydown.escape", function ListFormComponentExtended_section_32_ng_container_10_Template_textarea_keydown_escape_1_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.cancelDescriptionEdit()); });
130
133
  i0.ɵɵelementEnd();
131
- i0.ɵɵelementStart(2, "div", 67)(3, "button", 68);
134
+ i0.ɵɵelementStart(2, "div", 70)(3, "button", 71);
132
135
  i0.ɵɵlistener("click", function ListFormComponentExtended_section_32_ng_container_10_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.saveDescriptionEdit()); });
133
136
  i0.ɵɵtext(4, "Save");
134
137
  i0.ɵɵelementEnd();
135
- i0.ɵɵelementStart(5, "button", 69);
138
+ i0.ɵɵelementStart(5, "button", 72);
136
139
  i0.ɵɵlistener("click", function ListFormComponentExtended_section_32_ng_container_10_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.cancelDescriptionEdit()); });
137
140
  i0.ɵɵtext(6, "Cancel");
138
141
  i0.ɵɵelementEnd()();
@@ -143,8 +146,8 @@ function ListFormComponentExtended_section_32_ng_container_10_Template(rf, ctx)
143
146
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.editingDescription);
144
147
  } }
145
148
  function ListFormComponentExtended_section_32_span_26_Template(rf, ctx) { if (rf & 1) {
146
- i0.ɵɵelementStart(0, "span", 45);
147
- i0.ɵɵelement(1, "i", 70);
149
+ i0.ɵɵelementStart(0, "span", 48);
150
+ i0.ɵɵelement(1, "i", 73);
148
151
  i0.ɵɵtext(2);
149
152
  i0.ɵɵelementEnd();
150
153
  } if (rf & 2) {
@@ -153,7 +156,7 @@ function ListFormComponentExtended_section_32_span_26_Template(rf, ctx) { if (rf
153
156
  i0.ɵɵtextInterpolate1(" ", ctx_r1.categoryName, " ");
154
157
  } }
155
158
  function ListFormComponentExtended_section_32_select_27_option_3_Template(rf, ctx) { if (rf & 1) {
156
- i0.ɵɵelementStart(0, "option", 72);
159
+ i0.ɵɵelementStart(0, "option", 75);
157
160
  i0.ɵɵtext(1);
158
161
  i0.ɵɵelementEnd();
159
162
  } if (rf & 2) {
@@ -164,97 +167,123 @@ function ListFormComponentExtended_section_32_select_27_option_3_Template(rf, ct
164
167
  } }
165
168
  function ListFormComponentExtended_section_32_select_27_Template(rf, ctx) { if (rf & 1) {
166
169
  const _r9 = i0.ɵɵgetCurrentView();
167
- i0.ɵɵelementStart(0, "select", 71);
170
+ i0.ɵɵelementStart(0, "select", 74);
168
171
  i0.ɵɵlistener("ngModelChange", function ListFormComponentExtended_section_32_select_27_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onCategoryChange($event)); });
169
- i0.ɵɵelementStart(1, "option", 72);
172
+ i0.ɵɵelementStart(1, "option", 75);
170
173
  i0.ɵɵtext(2, "Uncategorized");
171
174
  i0.ɵɵelementEnd();
172
- i0.ɵɵtemplate(3, ListFormComponentExtended_section_32_select_27_option_3_Template, 2, 2, "option", 73);
175
+ i0.ɵɵtemplate(3, ListFormComponentExtended_section_32_select_27_option_3_Template, 2, 2, "option", 76);
173
176
  i0.ɵɵelementEnd();
174
177
  } if (rf & 2) {
175
178
  const ctx_r1 = i0.ɵɵnextContext(2);
176
- i0.ɵɵproperty("ngModel", ctx_r1.record == null ? null : ctx_r1.record.CategoryID);
179
+ i0.ɵɵproperty("ngModel", ctx_r1.record.CategoryID);
177
180
  i0.ɵɵadvance();
178
181
  i0.ɵɵproperty("ngValue", null);
179
182
  i0.ɵɵadvance(2);
180
183
  i0.ɵɵproperty("ngForOf", ctx_r1.categories);
181
184
  } }
182
185
  function ListFormComponentExtended_section_32_span_34_Template(rf, ctx) { if (rf & 1) {
183
- i0.ɵɵelementStart(0, "span", 74);
186
+ i0.ɵɵelementStart(0, "span", 77);
184
187
  i0.ɵɵtext(1, "You");
185
188
  i0.ɵɵelementEnd();
186
189
  } }
190
+ function ListFormComponentExtended_section_32_button_54_span_4_Template(rf, ctx) { if (rf & 1) {
191
+ i0.ɵɵelementStart(0, "span", 59);
192
+ i0.ɵɵtext(1);
193
+ i0.ɵɵelementEnd();
194
+ } if (rf & 2) {
195
+ const ctx_r1 = i0.ɵɵnextContext(3);
196
+ i0.ɵɵadvance();
197
+ i0.ɵɵtextInterpolate(ctx_r1.stats.shareCount);
198
+ } }
199
+ function ListFormComponentExtended_section_32_button_54_Template(rf, ctx) { if (rf & 1) {
200
+ const _r11 = i0.ɵɵgetCurrentView();
201
+ i0.ɵɵelementStart(0, "button", 57);
202
+ i0.ɵɵlistener("click", function ListFormComponentExtended_section_32_button_54_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openShareDialog()); });
203
+ i0.ɵɵelement(1, "i", 78);
204
+ i0.ɵɵelementStart(2, "span");
205
+ i0.ɵɵtext(3, "Share List");
206
+ i0.ɵɵelementEnd();
207
+ i0.ɵɵtemplate(4, ListFormComponentExtended_section_32_button_54_span_4_Template, 2, 1, "span", 79);
208
+ i0.ɵɵelementEnd();
209
+ } if (rf & 2) {
210
+ const ctx_r1 = i0.ɵɵnextContext(2);
211
+ i0.ɵɵadvance(4);
212
+ i0.ɵɵproperty("ngIf", ctx_r1.stats.shareCount > 0);
213
+ } }
214
+ function ListFormComponentExtended_section_32_button_55_Template(rf, ctx) { if (rf & 1) {
215
+ const _r12 = i0.ɵɵgetCurrentView();
216
+ i0.ɵɵelementStart(0, "button", 57);
217
+ i0.ɵɵlistener("click", function ListFormComponentExtended_section_32_button_55_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setActiveSection("sharing")); });
218
+ i0.ɵɵelement(1, "i", 78);
219
+ i0.ɵɵelementStart(2, "span");
220
+ i0.ɵɵtext(3, "View Sharing");
221
+ i0.ɵɵelementEnd()();
222
+ } }
187
223
  function ListFormComponentExtended_section_32_Template(rf, ctx) { if (rf & 1) {
188
224
  const _r6 = i0.ɵɵgetCurrentView();
189
- i0.ɵɵelementStart(0, "section", 34)(1, "div", 35)(2, "div", 36)(3, "div", 37)(4, "h3");
190
- i0.ɵɵelement(5, "i", 38);
225
+ i0.ɵɵelementStart(0, "section", 37)(1, "div", 38)(2, "div", 39)(3, "div", 40)(4, "h3");
226
+ i0.ɵɵelement(5, "i", 41);
191
227
  i0.ɵɵtext(6, " Description");
192
228
  i0.ɵɵelementEnd();
193
- i0.ɵɵtemplate(7, ListFormComponentExtended_section_32_button_7_Template, 2, 0, "button", 39);
229
+ i0.ɵɵtemplate(7, ListFormComponentExtended_section_32_button_7_Template, 2, 0, "button", 42);
194
230
  i0.ɵɵelementEnd();
195
- i0.ɵɵelementStart(8, "div", 40);
231
+ i0.ɵɵelementStart(8, "div", 43);
196
232
  i0.ɵɵtemplate(9, ListFormComponentExtended_section_32_ng_container_9_Template, 3, 2, "ng-container", 7)(10, ListFormComponentExtended_section_32_ng_container_10_Template, 7, 1, "ng-container", 7);
197
233
  i0.ɵɵelementEnd()();
198
- i0.ɵɵelementStart(11, "div", 41)(12, "div", 37)(13, "h3");
199
- i0.ɵɵelement(14, "i", 42);
234
+ i0.ɵɵelementStart(11, "div", 44)(12, "div", 40)(13, "h3");
235
+ i0.ɵɵelement(14, "i", 45);
200
236
  i0.ɵɵtext(15, " Details");
201
237
  i0.ɵɵelementEnd()();
202
- i0.ɵɵelementStart(16, "div", 40)(17, "div", 43)(18, "span", 44);
238
+ i0.ɵɵelementStart(16, "div", 43)(17, "div", 46)(18, "span", 47);
203
239
  i0.ɵɵtext(19, "Entity");
204
240
  i0.ɵɵelementEnd();
205
- i0.ɵɵelementStart(20, "span", 45);
206
- i0.ɵɵelement(21, "i", 46);
241
+ i0.ɵɵelementStart(20, "span", 48);
242
+ i0.ɵɵelement(21, "i", 49);
207
243
  i0.ɵɵtext(22);
208
244
  i0.ɵɵelementEnd()();
209
- i0.ɵɵelementStart(23, "div", 43)(24, "span", 44);
245
+ i0.ɵɵelementStart(23, "div", 46)(24, "span", 47);
210
246
  i0.ɵɵtext(25, "Category");
211
247
  i0.ɵɵelementEnd();
212
- i0.ɵɵtemplate(26, ListFormComponentExtended_section_32_span_26_Template, 3, 1, "span", 47)(27, ListFormComponentExtended_section_32_select_27_Template, 4, 3, "select", 48);
248
+ i0.ɵɵtemplate(26, ListFormComponentExtended_section_32_span_26_Template, 3, 1, "span", 50)(27, ListFormComponentExtended_section_32_select_27_Template, 4, 3, "select", 51);
213
249
  i0.ɵɵelementEnd();
214
- i0.ɵɵelementStart(28, "div", 43)(29, "span", 44);
250
+ i0.ɵɵelementStart(28, "div", 46)(29, "span", 47);
215
251
  i0.ɵɵtext(30, "Owner");
216
252
  i0.ɵɵelementEnd();
217
- i0.ɵɵelementStart(31, "span", 45);
218
- i0.ɵɵelement(32, "i", 49);
253
+ i0.ɵɵelementStart(31, "span", 48);
254
+ i0.ɵɵelement(32, "i", 52);
219
255
  i0.ɵɵtext(33);
220
- i0.ɵɵtemplate(34, ListFormComponentExtended_section_32_span_34_Template, 2, 0, "span", 50);
256
+ i0.ɵɵtemplate(34, ListFormComponentExtended_section_32_span_34_Template, 2, 0, "span", 53);
221
257
  i0.ɵɵelementEnd()();
222
- i0.ɵɵelementStart(35, "div", 43)(36, "span", 44);
258
+ i0.ɵɵelementStart(35, "div", 46)(36, "span", 47);
223
259
  i0.ɵɵtext(37, "Created");
224
260
  i0.ɵɵelementEnd();
225
- i0.ɵɵelementStart(38, "span", 45);
226
- i0.ɵɵelement(39, "i", 51);
261
+ i0.ɵɵelementStart(38, "span", 48);
262
+ i0.ɵɵelement(39, "i", 54);
227
263
  i0.ɵɵtext(40);
228
264
  i0.ɵɵpipe(41, "date");
229
265
  i0.ɵɵelementEnd()()()();
230
- i0.ɵɵelementStart(42, "div", 52)(43, "div", 37)(44, "h3");
231
- i0.ɵɵelement(45, "i", 53);
266
+ i0.ɵɵelementStart(42, "div", 55)(43, "div", 40)(44, "h3");
267
+ i0.ɵɵelement(45, "i", 56);
232
268
  i0.ɵɵtext(46, " Quick Actions");
233
269
  i0.ɵɵelementEnd()();
234
- i0.ɵɵelementStart(47, "div", 40)(48, "button", 54);
270
+ i0.ɵɵelementStart(47, "div", 43)(48, "button", 57);
235
271
  i0.ɵɵlistener("click", function ListFormComponentExtended_section_32_Template_button_click_48_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setActiveSection("items")); });
236
- i0.ɵɵelement(49, "i", 55);
272
+ i0.ɵɵelement(49, "i", 58);
237
273
  i0.ɵɵelementStart(50, "span");
238
274
  i0.ɵɵtext(51, "View Items");
239
275
  i0.ɵɵelementEnd();
240
- i0.ɵɵelementStart(52, "span", 56);
276
+ i0.ɵɵelementStart(52, "span", 59);
241
277
  i0.ɵɵtext(53);
242
278
  i0.ɵɵelementEnd()();
243
- i0.ɵɵelementStart(54, "button", 57);
244
- i0.ɵɵelement(55, "i", 58);
245
- i0.ɵɵelementStart(56, "span");
246
- i0.ɵɵtext(57, "Share List");
247
- i0.ɵɵelementEnd();
248
- i0.ɵɵelementStart(58, "span", 59);
249
- i0.ɵɵtext(59, "Soon");
250
- i0.ɵɵelementEnd()();
251
- i0.ɵɵelementStart(60, "button", 57);
252
- i0.ɵɵelement(61, "i", 60);
253
- i0.ɵɵelementStart(62, "span");
254
- i0.ɵɵtext(63, "Export Data");
279
+ i0.ɵɵtemplate(54, ListFormComponentExtended_section_32_button_54_Template, 5, 1, "button", 60)(55, ListFormComponentExtended_section_32_button_55_Template, 4, 0, "button", 60);
280
+ i0.ɵɵelementStart(56, "button", 61);
281
+ i0.ɵɵelement(57, "i", 62);
282
+ i0.ɵɵelementStart(58, "span");
283
+ i0.ɵɵtext(59, "Export Data");
255
284
  i0.ɵɵelementEnd();
256
- i0.ɵɵelementStart(64, "span", 59);
257
- i0.ɵɵtext(65, "Soon");
285
+ i0.ɵɵelementStart(60, "span", 63);
286
+ i0.ɵɵtext(61, "Soon");
258
287
  i0.ɵɵelementEnd()()()()()();
259
288
  } if (rf & 2) {
260
289
  const ctx_r1 = i0.ɵɵnextContext();
@@ -277,22 +306,37 @@ function ListFormComponentExtended_section_32_Template(rf, ctx) { if (rf & 1) {
277
306
  i0.ɵɵadvance();
278
307
  i0.ɵɵproperty("ngIf", ctx_r1.isCurrentUserOwner());
279
308
  i0.ɵɵadvance(6);
280
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(41, 14, ctx_r1.record == null ? null : ctx_r1.record.__mj_CreatedAt, "mediumDate"), " ");
309
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(41, 15, ctx_r1.record.__mj_CreatedAt, "mediumDate"), " ");
281
310
  i0.ɵɵadvance(13);
282
311
  i0.ɵɵtextInterpolate(ctx_r1.stats.itemCount);
283
312
  i0.ɵɵadvance();
284
- i0.ɵɵproperty("disabled", true);
285
- i0.ɵɵadvance(6);
313
+ i0.ɵɵproperty("ngIf", ctx_r1.isCurrentUserOwner());
314
+ i0.ɵɵadvance();
315
+ i0.ɵɵproperty("ngIf", !ctx_r1.isCurrentUserOwner());
316
+ i0.ɵɵadvance();
286
317
  i0.ɵɵproperty("disabled", true);
287
318
  } }
288
- function ListFormComponentExtended_section_33_div_10_Template(rf, ctx) { if (rf & 1) {
289
- i0.ɵɵelementStart(0, "div", 86);
290
- i0.ɵɵelement(1, "mj-loading", 87);
319
+ function ListFormComponentExtended_section_33_div_8_Template(rf, ctx) { if (rf & 1) {
320
+ const _r14 = i0.ɵɵgetCurrentView();
321
+ i0.ɵɵelementStart(0, "div", 92)(1, "button", 93);
322
+ i0.ɵɵlistener("click", function ListFormComponentExtended_section_33_div_8_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openAddRecordsDialog()); });
323
+ i0.ɵɵelement(2, "i", 94);
324
+ i0.ɵɵtext(3, " Add Records ");
291
325
  i0.ɵɵelementEnd();
326
+ i0.ɵɵelementStart(4, "button", 95);
327
+ i0.ɵɵlistener("click", function ListFormComponentExtended_section_33_div_8_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openAddFromViewDialog()); });
328
+ i0.ɵɵelement(5, "i", 96);
329
+ i0.ɵɵtext(6, " Add From View ");
330
+ i0.ɵɵelementEnd()();
292
331
  } }
293
332
  function ListFormComponentExtended_section_33_div_11_Template(rf, ctx) { if (rf & 1) {
294
- i0.ɵɵelementStart(0, "div", 88)(1, "div", 89);
295
- i0.ɵɵelement(2, "i", 90);
333
+ i0.ɵɵelementStart(0, "div", 97);
334
+ i0.ɵɵelement(1, "mj-loading", 98);
335
+ i0.ɵɵelementEnd();
336
+ } }
337
+ function ListFormComponentExtended_section_33_div_12_Template(rf, ctx) { if (rf & 1) {
338
+ i0.ɵɵelementStart(0, "div", 99)(1, "div", 100);
339
+ i0.ɵɵelement(2, "i", 101);
296
340
  i0.ɵɵelementEnd();
297
341
  i0.ɵɵelementStart(3, "h3");
298
342
  i0.ɵɵtext(4, "No Items Yet");
@@ -305,14 +349,14 @@ function ListFormComponentExtended_section_33_div_11_Template(rf, ctx) { if (rf
305
349
  i0.ɵɵadvance(6);
306
350
  i0.ɵɵtextInterpolate1("This list doesn't have any items. Add records from the ", ctx_r1.entityDisplayName, " entity.");
307
351
  } }
308
- function ListFormComponentExtended_section_33_div_12_div_1_Template(rf, ctx) { if (rf & 1) {
309
- const _r13 = i0.ɵɵgetCurrentView();
310
- i0.ɵɵelementStart(0, "div", 103)(1, "span", 104);
352
+ function ListFormComponentExtended_section_33_div_13_div_1_Template(rf, ctx) { if (rf & 1) {
353
+ const _r16 = i0.ɵɵgetCurrentView();
354
+ i0.ɵɵelementStart(0, "div", 114)(1, "span", 115);
311
355
  i0.ɵɵtext(2);
312
356
  i0.ɵɵelementEnd();
313
- i0.ɵɵelementStart(3, "button", 105);
314
- i0.ɵɵlistener("click", function ListFormComponentExtended_section_33_div_12_div_1_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.removeSelectedItems()); });
315
- i0.ɵɵelement(4, "i", 106);
357
+ i0.ɵɵelementStart(3, "button", 116);
358
+ i0.ɵɵlistener("click", function ListFormComponentExtended_section_33_div_13_div_1_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.removeSelectedItems()); });
359
+ i0.ɵɵelement(4, "i", 117);
316
360
  i0.ɵɵtext(5, " Remove from List ");
317
361
  i0.ɵɵelementEnd()();
318
362
  } if (rf & 2) {
@@ -320,73 +364,73 @@ function ListFormComponentExtended_section_33_div_12_div_1_Template(rf, ctx) { i
320
364
  i0.ɵɵadvance(2);
321
365
  i0.ɵɵtextInterpolate1("", ctx_r1.selectedItems.size, " selected");
322
366
  } }
323
- function ListFormComponentExtended_section_33_div_12_tr_15_i_8_Template(rf, ctx) { if (rf & 1) {
324
- i0.ɵɵelement(0, "i", 113);
367
+ function ListFormComponentExtended_section_33_div_13_tr_15_i_8_Template(rf, ctx) { if (rf & 1) {
368
+ i0.ɵɵelement(0, "i", 124);
325
369
  } }
326
- function ListFormComponentExtended_section_33_div_12_tr_15_Template(rf, ctx) { if (rf & 1) {
327
- const _r14 = i0.ɵɵgetCurrentView();
328
- i0.ɵɵelementStart(0, "tr")(1, "td", 94)(2, "input", 95);
329
- i0.ɵɵlistener("change", function ListFormComponentExtended_section_33_div_12_tr_15_Template_input_change_2_listener() { const item_r15 = i0.ɵɵrestoreView(_r14).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleItemSelection(item_r15)); });
370
+ function ListFormComponentExtended_section_33_div_13_tr_15_Template(rf, ctx) { if (rf & 1) {
371
+ const _r17 = i0.ɵɵgetCurrentView();
372
+ i0.ɵɵelementStart(0, "tr")(1, "td", 105)(2, "input", 106);
373
+ i0.ɵɵlistener("change", function ListFormComponentExtended_section_33_div_13_tr_15_Template_input_change_2_listener() { const item_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleItemSelection(item_r18)); });
330
374
  i0.ɵɵelementEnd()();
331
- i0.ɵɵelementStart(3, "td", 96)(4, "div", 107);
332
- i0.ɵɵelement(5, "i", 108);
375
+ i0.ɵɵelementStart(3, "td", 107)(4, "div", 118);
376
+ i0.ɵɵelement(5, "i", 119);
333
377
  i0.ɵɵelementStart(6, "span");
334
378
  i0.ɵɵtext(7);
335
379
  i0.ɵɵelementEnd();
336
- i0.ɵɵtemplate(8, ListFormComponentExtended_section_33_div_12_tr_15_i_8_Template, 1, 0, "i", 109);
380
+ i0.ɵɵtemplate(8, ListFormComponentExtended_section_33_div_13_tr_15_i_8_Template, 1, 0, "i", 120);
337
381
  i0.ɵɵelementEnd()();
338
- i0.ɵɵelementStart(9, "td", 97)(10, "code", 110);
382
+ i0.ɵɵelementStart(9, "td", 108)(10, "code", 121);
339
383
  i0.ɵɵtext(11);
340
384
  i0.ɵɵelementEnd()();
341
- i0.ɵɵelementStart(12, "td", 98);
385
+ i0.ɵɵelementStart(12, "td", 109);
342
386
  i0.ɵɵtext(13);
343
387
  i0.ɵɵpipe(14, "date");
344
388
  i0.ɵɵelementEnd();
345
- i0.ɵɵelementStart(15, "td", 99)(16, "button", 111);
346
- i0.ɵɵlistener("click", function ListFormComponentExtended_section_33_div_12_tr_15_Template_button_click_16_listener() { const item_r15 = i0.ɵɵrestoreView(_r14).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openRecord(item_r15)); });
347
- i0.ɵɵelement(17, "i", 112);
389
+ i0.ɵɵelementStart(15, "td", 110)(16, "button", 122);
390
+ i0.ɵɵlistener("click", function ListFormComponentExtended_section_33_div_13_tr_15_Template_button_click_16_listener() { const item_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openRecord(item_r18)); });
391
+ i0.ɵɵelement(17, "i", 123);
348
392
  i0.ɵɵelementEnd()()();
349
393
  } if (rf & 2) {
350
- const item_r15 = ctx.$implicit;
394
+ const item_r18 = ctx.$implicit;
351
395
  const ctx_r1 = i0.ɵɵnextContext(3);
352
- i0.ɵɵclassProp("selected", ctx_r1.selectedItems.has(item_r15.detail.ID));
396
+ i0.ɵɵclassProp("selected", ctx_r1.selectedItems.has(item_r18.detail.ID));
353
397
  i0.ɵɵadvance(2);
354
- i0.ɵɵproperty("checked", ctx_r1.selectedItems.has(item_r15.detail.ID));
398
+ i0.ɵɵproperty("checked", ctx_r1.selectedItems.has(item_r18.detail.ID));
355
399
  i0.ɵɵadvance(2);
356
- i0.ɵɵclassProp("loading", item_r15.isLoading);
400
+ i0.ɵɵclassProp("loading", item_r18.isLoading);
357
401
  i0.ɵɵadvance();
358
402
  i0.ɵɵclassMap(ctx_r1.entityIcon);
359
403
  i0.ɵɵadvance(2);
360
- i0.ɵɵtextInterpolate(item_r15.recordName);
404
+ i0.ɵɵtextInterpolate(item_r18.recordName);
361
405
  i0.ɵɵadvance();
362
- i0.ɵɵproperty("ngIf", item_r15.isLoading);
406
+ i0.ɵɵproperty("ngIf", item_r18.isLoading);
363
407
  i0.ɵɵadvance(3);
364
- i0.ɵɵtextInterpolate(item_r15.detail.RecordID);
408
+ i0.ɵɵtextInterpolate(item_r18.detail.RecordID);
365
409
  i0.ɵɵadvance(2);
366
- i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(14, 11, item_r15.detail.__mj_CreatedAt, "shortDate"), " ");
410
+ i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(14, 11, item_r18.detail.__mj_CreatedAt, "shortDate"), " ");
367
411
  } }
368
- function ListFormComponentExtended_section_33_div_12_Template(rf, ctx) { if (rf & 1) {
369
- const _r12 = i0.ɵɵgetCurrentView();
370
- i0.ɵɵelementStart(0, "div", 91);
371
- i0.ɵɵtemplate(1, ListFormComponentExtended_section_33_div_12_div_1_Template, 6, 1, "div", 92);
372
- i0.ɵɵelementStart(2, "table", 93)(3, "thead")(4, "tr")(5, "th", 94)(6, "input", 95);
373
- i0.ɵɵlistener("change", function ListFormComponentExtended_section_33_div_12_Template_input_change_6_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleSelectAll()); });
412
+ function ListFormComponentExtended_section_33_div_13_Template(rf, ctx) { if (rf & 1) {
413
+ const _r15 = i0.ɵɵgetCurrentView();
414
+ i0.ɵɵelementStart(0, "div", 102);
415
+ i0.ɵɵtemplate(1, ListFormComponentExtended_section_33_div_13_div_1_Template, 6, 1, "div", 103);
416
+ i0.ɵɵelementStart(2, "table", 104)(3, "thead")(4, "tr")(5, "th", 105)(6, "input", 106);
417
+ i0.ɵɵlistener("change", function ListFormComponentExtended_section_33_div_13_Template_input_change_6_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleSelectAll()); });
374
418
  i0.ɵɵelementEnd()();
375
- i0.ɵɵelementStart(7, "th", 96);
419
+ i0.ɵɵelementStart(7, "th", 107);
376
420
  i0.ɵɵtext(8, "Name");
377
421
  i0.ɵɵelementEnd();
378
- i0.ɵɵelementStart(9, "th", 97);
422
+ i0.ɵɵelementStart(9, "th", 108);
379
423
  i0.ɵɵtext(10, "Record ID");
380
424
  i0.ɵɵelementEnd();
381
- i0.ɵɵelementStart(11, "th", 98);
425
+ i0.ɵɵelementStart(11, "th", 109);
382
426
  i0.ɵɵtext(12, "Added");
383
427
  i0.ɵɵelementEnd();
384
- i0.ɵɵelement(13, "th", 99);
428
+ i0.ɵɵelement(13, "th", 110);
385
429
  i0.ɵɵelementEnd()();
386
430
  i0.ɵɵelementStart(14, "tbody");
387
- i0.ɵɵtemplate(15, ListFormComponentExtended_section_33_div_12_tr_15_Template, 18, 14, "tr", 100);
431
+ i0.ɵɵtemplate(15, ListFormComponentExtended_section_33_div_13_tr_15_Template, 18, 14, "tr", 111);
388
432
  i0.ɵɵelementEnd()();
389
- i0.ɵɵelementStart(16, "div", 101)(17, "span", 102);
433
+ i0.ɵɵelementStart(16, "div", 112)(17, "span", 113);
390
434
  i0.ɵɵtext(18);
391
435
  i0.ɵɵelementEnd()()();
392
436
  } if (rf & 2) {
@@ -401,25 +445,28 @@ function ListFormComponentExtended_section_33_div_12_Template(rf, ctx) { if (rf
401
445
  i0.ɵɵtextInterpolate2(" Showing ", ctx_r1.filteredItems.length, " of ", ctx_r1.listItems.length, " items ");
402
446
  } }
403
447
  function ListFormComponentExtended_section_33_Template(rf, ctx) { if (rf & 1) {
404
- const _r11 = i0.ɵɵgetCurrentView();
405
- i0.ɵɵelementStart(0, "section", 75)(1, "div", 76)(2, "h2");
448
+ const _r13 = i0.ɵɵgetCurrentView();
449
+ i0.ɵɵelementStart(0, "section", 80)(1, "div", 81)(2, "h2");
406
450
  i0.ɵɵtext(3, "List Items");
407
451
  i0.ɵɵelementEnd();
408
- i0.ɵɵelementStart(4, "div", 77)(5, "div", 78);
409
- i0.ɵɵelement(6, "i", 79);
410
- i0.ɵɵelementStart(7, "input", 80);
411
- i0.ɵɵtwoWayListener("ngModelChange", function ListFormComponentExtended_section_33_Template_input_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.itemSearchTerm, $event) || (ctx_r1.itemSearchTerm = $event); return i0.ɵɵresetView($event); });
452
+ i0.ɵɵelementStart(4, "div", 82)(5, "div", 83);
453
+ i0.ɵɵelement(6, "i", 84);
454
+ i0.ɵɵelementStart(7, "input", 85);
455
+ i0.ɵɵtwoWayListener("ngModelChange", function ListFormComponentExtended_section_33_Template_input_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.itemSearchTerm, $event) || (ctx_r1.itemSearchTerm = $event); return i0.ɵɵresetView($event); });
412
456
  i0.ɵɵelementEnd()();
413
- i0.ɵɵelementStart(8, "button", 81);
414
- i0.ɵɵlistener("click", function ListFormComponentExtended_section_33_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshItems()); });
415
- i0.ɵɵelement(9, "i", 82);
457
+ i0.ɵɵtemplate(8, ListFormComponentExtended_section_33_div_8_Template, 7, 0, "div", 86);
458
+ i0.ɵɵelementStart(9, "button", 87);
459
+ i0.ɵɵlistener("click", function ListFormComponentExtended_section_33_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshItems()); });
460
+ i0.ɵɵelement(10, "i", 88);
416
461
  i0.ɵɵelementEnd()()();
417
- i0.ɵɵtemplate(10, ListFormComponentExtended_section_33_div_10_Template, 2, 0, "div", 83)(11, ListFormComponentExtended_section_33_div_11_Template, 7, 1, "div", 84)(12, ListFormComponentExtended_section_33_div_12_Template, 19, 5, "div", 85);
462
+ i0.ɵɵtemplate(11, ListFormComponentExtended_section_33_div_11_Template, 2, 0, "div", 89)(12, ListFormComponentExtended_section_33_div_12_Template, 7, 1, "div", 90)(13, ListFormComponentExtended_section_33_div_13_Template, 19, 5, "div", 91);
418
463
  i0.ɵɵelementEnd();
419
464
  } if (rf & 2) {
420
465
  const ctx_r1 = i0.ɵɵnextContext();
421
466
  i0.ɵɵadvance(7);
422
467
  i0.ɵɵtwoWayProperty("ngModel", ctx_r1.itemSearchTerm);
468
+ i0.ɵɵadvance();
469
+ i0.ɵɵproperty("ngIf", ctx_r1.isCurrentUserOwner());
423
470
  i0.ɵɵadvance(3);
424
471
  i0.ɵɵproperty("ngIf", ctx_r1.isLoadingItems);
425
472
  i0.ɵɵadvance();
@@ -427,83 +474,157 @@ function ListFormComponentExtended_section_33_Template(rf, ctx) { if (rf & 1) {
427
474
  i0.ɵɵadvance();
428
475
  i0.ɵɵproperty("ngIf", !ctx_r1.isLoadingItems && ctx_r1.listItems.length > 0);
429
476
  } }
430
- function ListFormComponentExtended_section_34_div_8_Template(rf, ctx) { if (rf & 1) {
431
- i0.ɵɵelementStart(0, "div", 118)(1, "mj-collapsible-panel", 119);
432
- i0.ɵɵelement(2, "mj-user-view-grid", 120);
433
- i0.ɵɵelementEnd();
434
- i0.ɵɵelementStart(3, "mj-collapsible-panel", 121);
435
- i0.ɵɵelement(4, "mj-user-view-grid", 120);
477
+ function ListFormComponentExtended_section_34_div_4_Template(rf, ctx) { if (rf & 1) {
478
+ const _r19 = i0.ɵɵgetCurrentView();
479
+ i0.ɵɵelementStart(0, "div", 82)(1, "button", 71);
480
+ i0.ɵɵlistener("click", function ListFormComponentExtended_section_34_div_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openShareDialog()); });
481
+ i0.ɵɵelement(2, "i", 129);
482
+ i0.ɵɵtext(3, " Manage Sharing ");
436
483
  i0.ɵɵelementEnd()();
484
+ } }
485
+ function ListFormComponentExtended_section_34_div_5_div_9_Template(rf, ctx) { if (rf & 1) {
486
+ i0.ɵɵelementStart(0, "div", 131)(1, "div", 138);
487
+ i0.ɵɵelement(2, "i", 139);
488
+ i0.ɵɵelementEnd();
489
+ i0.ɵɵelementStart(3, "div", 134)(4, "span", 135);
490
+ i0.ɵɵtext(5);
491
+ i0.ɵɵelementEnd();
492
+ i0.ɵɵelementStart(6, "span", 136);
493
+ i0.ɵɵtext(7);
494
+ i0.ɵɵelementEnd()()();
495
+ } if (rf & 2) {
496
+ const ctx_r1 = i0.ɵɵnextContext(3);
497
+ i0.ɵɵadvance(5);
498
+ i0.ɵɵtextInterpolate(ctx_r1.stats.invitationCount);
499
+ i0.ɵɵadvance(2);
500
+ i0.ɵɵtextInterpolate1("Pending Invitation", ctx_r1.stats.invitationCount !== 1 ? "s" : "", "");
501
+ } }
502
+ function ListFormComponentExtended_section_34_div_5_Template(rf, ctx) { if (rf & 1) {
503
+ i0.ɵɵelementStart(0, "div", 130)(1, "div", 131)(2, "div", 132);
504
+ i0.ɵɵelement(3, "i", 133);
505
+ i0.ɵɵelementEnd();
506
+ i0.ɵɵelementStart(4, "div", 134)(5, "span", 135);
507
+ i0.ɵɵtext(6);
508
+ i0.ɵɵelementEnd();
509
+ i0.ɵɵelementStart(7, "span", 136);
510
+ i0.ɵɵtext(8);
511
+ i0.ɵɵelementEnd()()();
512
+ i0.ɵɵtemplate(9, ListFormComponentExtended_section_34_div_5_div_9_Template, 8, 2, "div", 137);
513
+ i0.ɵɵelementEnd();
437
514
  } if (rf & 2) {
438
515
  const ctx_r1 = i0.ɵɵnextContext(2);
516
+ i0.ɵɵadvance(6);
517
+ i0.ɵɵtextInterpolate(ctx_r1.stats.shareCount);
518
+ i0.ɵɵadvance(2);
519
+ i0.ɵɵtextInterpolate1("Active Share", ctx_r1.stats.shareCount !== 1 ? "s" : "", "");
439
520
  i0.ɵɵadvance();
440
- i0.ɵɵproperty("form", ctx_r1)("formContext", ctx_r1.formContext)("badgeCount", ctx_r1.stats.shareCount);
441
- i0.ɵɵadvance();
442
- i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: List Shares", "ListID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: List Shares"))("AllowLoad", true)("EditMode", ctx_r1.GridEditMode());
521
+ i0.ɵɵproperty("ngIf", ctx_r1.stats.invitationCount > 0);
522
+ } }
523
+ function ListFormComponentExtended_section_34_div_6_p_5_Template(rf, ctx) { if (rf & 1) {
524
+ i0.ɵɵelementStart(0, "p");
525
+ i0.ɵɵtext(1, "This list is private. Click \"Manage Sharing\" to share it with other users or roles.");
526
+ i0.ɵɵelementEnd();
527
+ } }
528
+ function ListFormComponentExtended_section_34_div_6_p_6_Template(rf, ctx) { if (rf & 1) {
529
+ i0.ɵɵelementStart(0, "p");
530
+ i0.ɵɵtext(1, "This list hasn't been shared with anyone else.");
531
+ i0.ɵɵelementEnd();
532
+ } }
533
+ function ListFormComponentExtended_section_34_div_6_button_7_Template(rf, ctx) { if (rf & 1) {
534
+ const _r20 = i0.ɵɵgetCurrentView();
535
+ i0.ɵɵelementStart(0, "button", 71);
536
+ i0.ɵɵlistener("click", function ListFormComponentExtended_section_34_div_6_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openShareDialog()); });
537
+ i0.ɵɵelement(1, "i", 129);
538
+ i0.ɵɵtext(2, " Share This List ");
539
+ i0.ɵɵelementEnd();
540
+ } }
541
+ function ListFormComponentExtended_section_34_div_6_Template(rf, ctx) { if (rf & 1) {
542
+ i0.ɵɵelementStart(0, "div", 99)(1, "div", 100);
543
+ i0.ɵɵelement(2, "i", 78);
544
+ i0.ɵɵelementEnd();
545
+ i0.ɵɵelementStart(3, "h3");
546
+ i0.ɵɵtext(4, "Not Shared Yet");
547
+ i0.ɵɵelementEnd();
548
+ i0.ɵɵtemplate(5, ListFormComponentExtended_section_34_div_6_p_5_Template, 2, 0, "p", 7)(6, ListFormComponentExtended_section_34_div_6_p_6_Template, 2, 0, "p", 7)(7, ListFormComponentExtended_section_34_div_6_button_7_Template, 3, 0, "button", 140);
549
+ i0.ɵɵelementEnd();
550
+ } if (rf & 2) {
551
+ const ctx_r1 = i0.ɵɵnextContext(2);
552
+ i0.ɵɵadvance(5);
553
+ i0.ɵɵproperty("ngIf", ctx_r1.isCurrentUserOwner());
443
554
  i0.ɵɵadvance();
444
- i0.ɵɵproperty("form", ctx_r1)("formContext", ctx_r1.formContext)("badgeCount", ctx_r1.stats.invitationCount);
555
+ i0.ɵɵproperty("ngIf", !ctx_r1.isCurrentUserOwner());
445
556
  i0.ɵɵadvance();
446
- i0.ɵɵproperty("Params", ctx_r1.BuildRelationshipViewParamsByEntityName("MJ: List Invitations", "ListID"))("NewRecordValues", ctx_r1.NewRecordValues("MJ: List Invitations"))("AllowLoad", true)("EditMode", ctx_r1.GridEditMode());
557
+ i0.ɵɵproperty("ngIf", ctx_r1.isCurrentUserOwner());
558
+ } }
559
+ function ListFormComponentExtended_section_34_div_7_Template(rf, ctx) { if (rf & 1) {
560
+ i0.ɵɵelementStart(0, "div", 141);
561
+ i0.ɵɵelement(1, "i", 45);
562
+ i0.ɵɵelementStart(2, "span");
563
+ i0.ɵɵtext(3, "Only the list owner can manage sharing settings.");
564
+ i0.ɵɵelementEnd()();
447
565
  } }
448
566
  function ListFormComponentExtended_section_34_Template(rf, ctx) { if (rf & 1) {
449
- i0.ɵɵelementStart(0, "section", 114)(1, "div", 115);
450
- i0.ɵɵelement(2, "i", 58);
451
- i0.ɵɵelementStart(3, "div", 116)(4, "h3");
452
- i0.ɵɵtext(5, "Sharing Coming Soon");
567
+ i0.ɵɵelementStart(0, "section", 125)(1, "div", 81)(2, "h2");
568
+ i0.ɵɵtext(3, "Sharing");
453
569
  i0.ɵɵelementEnd();
454
- i0.ɵɵelementStart(6, "p");
455
- i0.ɵɵtext(7, "You'll soon be able to share lists with other users, manage permissions, and collaborate on list contents.");
456
- i0.ɵɵelementEnd()()();
457
- i0.ɵɵtemplate(8, ListFormComponentExtended_section_34_div_8_Template, 5, 14, "div", 117);
570
+ i0.ɵɵtemplate(4, ListFormComponentExtended_section_34_div_4_Template, 4, 0, "div", 126);
571
+ i0.ɵɵelementEnd();
572
+ i0.ɵɵtemplate(5, ListFormComponentExtended_section_34_div_5_Template, 10, 3, "div", 127)(6, ListFormComponentExtended_section_34_div_6_Template, 8, 3, "div", 90)(7, ListFormComponentExtended_section_34_div_7_Template, 4, 0, "div", 128);
458
573
  i0.ɵɵelementEnd();
459
574
  } if (rf & 2) {
460
575
  const ctx_r1 = i0.ɵɵnextContext();
461
- i0.ɵɵadvance(8);
462
- i0.ɵɵproperty("ngIf", ctx_r1.record == null ? null : ctx_r1.record.IsSaved);
576
+ i0.ɵɵadvance(4);
577
+ i0.ɵɵproperty("ngIf", ctx_r1.isCurrentUserOwner());
578
+ i0.ɵɵadvance();
579
+ i0.ɵɵproperty("ngIf", ctx_r1.stats.shareCount > 0 || ctx_r1.stats.invitationCount > 0);
580
+ i0.ɵɵadvance();
581
+ i0.ɵɵproperty("ngIf", ctx_r1.stats.shareCount === 0 && ctx_r1.stats.invitationCount === 0);
582
+ i0.ɵɵadvance();
583
+ i0.ɵɵproperty("ngIf", !ctx_r1.isCurrentUserOwner() && (ctx_r1.stats.shareCount > 0 || ctx_r1.stats.invitationCount > 0));
463
584
  } }
464
585
  function ListFormComponentExtended_section_35_Template(rf, ctx) { if (rf & 1) {
465
- i0.ɵɵelementStart(0, "section", 122)(1, "div", 76)(2, "h2");
586
+ i0.ɵɵelementStart(0, "section", 142)(1, "div", 81)(2, "h2");
466
587
  i0.ɵɵtext(3, "Activity");
467
588
  i0.ɵɵelementEnd()();
468
- i0.ɵɵelementStart(4, "div", 123)(5, "div", 124)(6, "div", 125);
469
- i0.ɵɵelement(7, "i", 126);
589
+ i0.ɵɵelementStart(4, "div", 143)(5, "div", 144)(6, "div", 145);
590
+ i0.ɵɵelement(7, "i", 146);
470
591
  i0.ɵɵelementEnd();
471
- i0.ɵɵelementStart(8, "div", 127)(9, "p", 128);
592
+ i0.ɵɵelementStart(8, "div", 147)(9, "p", 148);
472
593
  i0.ɵɵtext(10, "List updated");
473
594
  i0.ɵɵelementEnd();
474
- i0.ɵɵelementStart(11, "span", 129);
595
+ i0.ɵɵelementStart(11, "span", 149);
475
596
  i0.ɵɵtext(12);
476
597
  i0.ɵɵpipe(13, "date");
477
598
  i0.ɵɵelementEnd()()();
478
- i0.ɵɵelementStart(14, "div", 124)(15, "div", 130);
479
- i0.ɵɵelement(16, "i", 131);
599
+ i0.ɵɵelementStart(14, "div", 144)(15, "div", 150);
600
+ i0.ɵɵelement(16, "i", 94);
480
601
  i0.ɵɵelementEnd();
481
- i0.ɵɵelementStart(17, "div", 127)(18, "p", 128);
602
+ i0.ɵɵelementStart(17, "div", 147)(18, "p", 148);
482
603
  i0.ɵɵtext(19, "List created");
483
604
  i0.ɵɵelementEnd();
484
- i0.ɵɵelementStart(20, "span", 129);
605
+ i0.ɵɵelementStart(20, "span", 149);
485
606
  i0.ɵɵtext(21);
486
607
  i0.ɵɵpipe(22, "date");
487
608
  i0.ɵɵelementEnd()()()();
488
- i0.ɵɵelementStart(23, "div", 132)(24, "p");
609
+ i0.ɵɵelementStart(23, "div", 151)(24, "p");
489
610
  i0.ɵɵtext(25, "Detailed activity tracking coming soon. You'll be able to see who added items, when shares were created, and more.");
490
611
  i0.ɵɵelementEnd()()();
491
612
  } if (rf & 2) {
492
613
  const ctx_r1 = i0.ɵɵnextContext();
493
614
  i0.ɵɵadvance(12);
494
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(13, 2, ctx_r1.record == null ? null : ctx_r1.record.__mj_UpdatedAt, "medium"));
615
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(13, 2, ctx_r1.record.__mj_UpdatedAt, "medium"));
495
616
  i0.ɵɵadvance(9);
496
- i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(22, 5, ctx_r1.record == null ? null : ctx_r1.record.__mj_CreatedAt, "medium"));
617
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(22, 5, ctx_r1.record.__mj_CreatedAt, "medium"));
497
618
  } }
498
619
  function ListFormComponentExtended_section_36_Template(rf, ctx) { if (rf & 1) {
499
- i0.ɵɵelementStart(0, "section", 133)(1, "div", 76)(2, "h2");
620
+ i0.ɵɵelementStart(0, "section", 152)(1, "div", 81)(2, "h2");
500
621
  i0.ɵɵtext(3, "Settings");
501
622
  i0.ɵɵelementEnd()();
502
- i0.ɵɵelementStart(4, "div", 134)(5, "mj-collapsible-panel", 135)(6, "div", 136);
503
- i0.ɵɵelement(7, "mj-form-field", 137)(8, "mj-form-field", 138)(9, "mj-form-field", 139);
623
+ i0.ɵɵelementStart(4, "div", 153)(5, "mj-collapsible-panel", 154)(6, "div", 155);
624
+ i0.ɵɵelement(7, "mj-form-field", 156)(8, "mj-form-field", 157)(9, "mj-form-field", 158);
504
625
  i0.ɵɵelementEnd()();
505
- i0.ɵɵelementStart(10, "mj-collapsible-panel", 140)(11, "div", 136);
506
- i0.ɵɵelement(12, "mj-form-field", 141)(13, "mj-form-field", 142)(14, "mj-form-field", 143)(15, "mj-form-field", 144);
626
+ i0.ɵɵelementStart(10, "mj-collapsible-panel", 159)(11, "div", 155);
627
+ i0.ɵɵelement(12, "mj-form-field", 160)(13, "mj-form-field", 161)(14, "mj-form-field", 162)(15, "mj-form-field", 163);
507
628
  i0.ɵɵelementEnd()()()();
508
629
  } if (rf & 2) {
509
630
  const ctx_r1 = i0.ɵɵnextContext();
@@ -526,6 +647,295 @@ function ListFormComponentExtended_section_36_Template(rf, ctx) { if (rf & 1) {
526
647
  i0.ɵɵadvance();
527
648
  i0.ɵɵproperty("record", ctx_r1.record)("ShowLabel", true)("EditMode", false)("formContext", ctx_r1.formContext);
528
649
  } }
650
+ function ListFormComponentExtended_kendo_dialog_37_ng_container_2_Template(rf, ctx) { if (rf & 1) {
651
+ i0.ɵɵelementContainerStart(0);
652
+ i0.ɵɵelementStart(1, "div", 168);
653
+ i0.ɵɵelement(2, "mj-loading", 169);
654
+ i0.ɵɵelementEnd();
655
+ i0.ɵɵelementContainerEnd();
656
+ } if (rf & 2) {
657
+ const ctx_r1 = i0.ɵɵnextContext(2);
658
+ i0.ɵɵadvance(2);
659
+ i0.ɵɵproperty("text", "Adding " + ctx_r1.addTotal + " records to list...");
660
+ } }
661
+ function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_template_3_Template(rf, ctx) { if (rf & 1) {
662
+ i0.ɵɵelement(0, "span", 175);
663
+ } }
664
+ function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_7_Template(rf, ctx) { if (rf & 1) {
665
+ i0.ɵɵelementContainerStart(0);
666
+ i0.ɵɵelementStart(1, "div", 176);
667
+ i0.ɵɵelement(2, "mj-loading", 177);
668
+ i0.ɵɵelementEnd();
669
+ i0.ɵɵelementContainerEnd();
670
+ } if (rf & 2) {
671
+ i0.ɵɵadvance(2);
672
+ i0.ɵɵproperty("showText", false);
673
+ } }
674
+ function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_8_Template(rf, ctx) { if (rf & 1) {
675
+ i0.ɵɵelementContainerStart(0);
676
+ i0.ɵɵelementStart(1, "div", 178);
677
+ i0.ɵɵelement(2, "span", 179);
678
+ i0.ɵɵelementStart(3, "p");
679
+ i0.ɵɵtext(4);
680
+ i0.ɵɵelementEnd()();
681
+ i0.ɵɵelementContainerEnd();
682
+ } if (rf & 2) {
683
+ const ctx_r1 = i0.ɵɵnextContext(3);
684
+ i0.ɵɵadvance(4);
685
+ i0.ɵɵtextInterpolate1("No records found matching \"", ctx_r1.addRecordsSearchFilter, "\"");
686
+ } }
687
+ function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_9_Template(rf, ctx) { if (rf & 1) {
688
+ i0.ɵɵelementContainerStart(0);
689
+ i0.ɵɵelementStart(1, "div", 178);
690
+ i0.ɵɵelement(2, "span", 180);
691
+ i0.ɵɵelementStart(3, "p");
692
+ i0.ɵɵtext(4, "Search for records to add to this list");
693
+ i0.ɵɵelementEnd()();
694
+ i0.ɵɵelementContainerEnd();
695
+ } }
696
+ function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_span_2_Template(rf, ctx) { if (rf & 1) {
697
+ i0.ɵɵelement(0, "span", 192);
698
+ } }
699
+ function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_input_3_Template(rf, ctx) { if (rf & 1) {
700
+ const _r26 = i0.ɵɵgetCurrentView();
701
+ i0.ɵɵelementStart(0, "input", 193);
702
+ i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_input_3_Template_input_click_0_listener($event) { i0.ɵɵrestoreView(_r26); return i0.ɵɵresetView($event.stopPropagation()); })("change", function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_input_3_Template_input_change_0_listener() { i0.ɵɵrestoreView(_r26); const record_r25 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleRecordSelection(record_r25)); });
703
+ i0.ɵɵelementEnd();
704
+ } if (rf & 2) {
705
+ const record_r25 = i0.ɵɵnextContext().$implicit;
706
+ i0.ɵɵproperty("checked", record_r25.isSelected);
707
+ } }
708
+ function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_span_6_Template(rf, ctx) { if (rf & 1) {
709
+ i0.ɵɵelementStart(0, "span", 194);
710
+ i0.ɵɵtext(1, "In List");
711
+ i0.ɵɵelementEnd();
712
+ } }
713
+ function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_Template(rf, ctx) { if (rf & 1) {
714
+ const _r24 = i0.ɵɵgetCurrentView();
715
+ i0.ɵɵelementStart(0, "div", 186);
716
+ i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_Template_div_click_0_listener() { const record_r25 = i0.ɵɵrestoreView(_r24).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleRecordSelection(record_r25)); });
717
+ i0.ɵɵelementStart(1, "div", 187);
718
+ i0.ɵɵtemplate(2, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_span_2_Template, 1, 0, "span", 188)(3, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_input_3_Template, 1, 1, "input", 189);
719
+ i0.ɵɵelementEnd();
720
+ i0.ɵɵelementStart(4, "div", 190);
721
+ i0.ɵɵtext(5);
722
+ i0.ɵɵelementEnd();
723
+ i0.ɵɵtemplate(6, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_span_6_Template, 2, 0, "span", 191);
724
+ i0.ɵɵelementEnd();
725
+ } if (rf & 2) {
726
+ const record_r25 = ctx.$implicit;
727
+ i0.ɵɵclassProp("in-list", record_r25.isInList)("selected", record_r25.isSelected);
728
+ i0.ɵɵadvance(2);
729
+ i0.ɵɵproperty("ngIf", record_r25.isInList);
730
+ i0.ɵɵadvance();
731
+ i0.ɵɵproperty("ngIf", !record_r25.isInList);
732
+ i0.ɵɵadvance(2);
733
+ i0.ɵɵtextInterpolate(record_r25.Name);
734
+ i0.ɵɵadvance();
735
+ i0.ɵɵproperty("ngIf", record_r25.isInList);
736
+ } }
737
+ function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_Template(rf, ctx) { if (rf & 1) {
738
+ const _r23 = i0.ɵɵgetCurrentView();
739
+ i0.ɵɵelementContainerStart(0);
740
+ i0.ɵɵelementStart(1, "div", 181)(2, "button", 182);
741
+ i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.selectAllAddable()); });
742
+ i0.ɵɵtext(3, "Select All");
743
+ i0.ɵɵelementEnd();
744
+ i0.ɵɵelementStart(4, "button", 182);
745
+ i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.deselectAllAddable()); });
746
+ i0.ɵɵtext(5, "Deselect All");
747
+ i0.ɵɵelementEnd();
748
+ i0.ɵɵelementStart(6, "span", 183);
749
+ i0.ɵɵtext(7);
750
+ i0.ɵɵelementEnd()();
751
+ i0.ɵɵelementStart(8, "div", 184);
752
+ i0.ɵɵtemplate(9, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_Template, 7, 8, "div", 185);
753
+ i0.ɵɵelementEnd();
754
+ i0.ɵɵelementContainerEnd();
755
+ } if (rf & 2) {
756
+ const ctx_r1 = i0.ɵɵnextContext(3);
757
+ i0.ɵɵadvance(7);
758
+ i0.ɵɵtextInterpolate1("", ctx_r1.selectedAddableRecords.length, " selected");
759
+ i0.ɵɵadvance(2);
760
+ i0.ɵɵproperty("ngForOf", ctx_r1.addableRecords);
761
+ } }
762
+ function ListFormComponentExtended_kendo_dialog_37_ng_container_3_Template(rf, ctx) { if (rf & 1) {
763
+ const _r22 = i0.ɵɵgetCurrentView();
764
+ i0.ɵɵelementContainerStart(0);
765
+ i0.ɵɵelementStart(1, "div", 170)(2, "kendo-textbox", 171);
766
+ i0.ɵɵlistener("valueChange", function ListFormComponentExtended_kendo_dialog_37_ng_container_3_Template_kendo_textbox_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onAddRecordsSearchChange($event)); });
767
+ i0.ɵɵtemplate(3, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_template_3_Template, 1, 0, "ng-template", 172);
768
+ i0.ɵɵelementEnd();
769
+ i0.ɵɵelementStart(4, "span", 173);
770
+ i0.ɵɵtext(5, "Type at least 2 characters to search");
771
+ i0.ɵɵelementEnd()();
772
+ i0.ɵɵelementStart(6, "div", 174);
773
+ i0.ɵɵtemplate(7, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_7_Template, 3, 1, "ng-container", 7)(8, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_8_Template, 5, 1, "ng-container", 7)(9, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_9_Template, 5, 0, "ng-container", 7)(10, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_Template, 10, 2, "ng-container", 7);
774
+ i0.ɵɵelementEnd();
775
+ i0.ɵɵelementContainerEnd();
776
+ } if (rf & 2) {
777
+ const ctx_r1 = i0.ɵɵnextContext(2);
778
+ i0.ɵɵadvance(2);
779
+ i0.ɵɵproperty("placeholder", "Search " + ctx_r1.entityDisplayName + "...")("clearButton", true)("value", ctx_r1.addRecordsSearchFilter);
780
+ i0.ɵɵadvance(5);
781
+ i0.ɵɵproperty("ngIf", ctx_r1.addDialogLoading);
782
+ i0.ɵɵadvance();
783
+ i0.ɵɵproperty("ngIf", !ctx_r1.addDialogLoading && ctx_r1.addableRecords.length === 0 && ctx_r1.addRecordsSearchFilter.length >= 2);
784
+ i0.ɵɵadvance();
785
+ i0.ɵɵproperty("ngIf", !ctx_r1.addDialogLoading && ctx_r1.addableRecords.length === 0 && ctx_r1.addRecordsSearchFilter.length < 2);
786
+ i0.ɵɵadvance();
787
+ i0.ɵɵproperty("ngIf", !ctx_r1.addDialogLoading && ctx_r1.addableRecords.length > 0);
788
+ } }
789
+ function ListFormComponentExtended_kendo_dialog_37_Template(rf, ctx) { if (rf & 1) {
790
+ const _r21 = i0.ɵɵgetCurrentView();
791
+ i0.ɵɵelementStart(0, "kendo-dialog", 164);
792
+ i0.ɵɵlistener("close", function ListFormComponentExtended_kendo_dialog_37_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddRecordsDialog()); });
793
+ i0.ɵɵelementStart(1, "div", 165);
794
+ i0.ɵɵtemplate(2, ListFormComponentExtended_kendo_dialog_37_ng_container_2_Template, 3, 1, "ng-container", 7)(3, ListFormComponentExtended_kendo_dialog_37_ng_container_3_Template, 11, 7, "ng-container", 7);
795
+ i0.ɵɵelementEnd();
796
+ i0.ɵɵelementStart(4, "kendo-dialog-actions")(5, "button", 166);
797
+ i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_37_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.confirmAddRecords()); });
798
+ i0.ɵɵtext(6);
799
+ i0.ɵɵelementEnd();
800
+ i0.ɵɵelementStart(7, "button", 167);
801
+ i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_37_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddRecordsDialog()); });
802
+ i0.ɵɵtext(8, " Cancel ");
803
+ i0.ɵɵelementEnd()()();
804
+ } if (rf & 2) {
805
+ const ctx_r1 = i0.ɵɵnextContext();
806
+ i0.ɵɵproperty("title", "Add " + ctx_r1.entityDisplayName + " to List")("minWidth", 400)("width", 600)("height", 550);
807
+ i0.ɵɵadvance(2);
808
+ i0.ɵɵproperty("ngIf", ctx_r1.addDialogSaving);
809
+ i0.ɵɵadvance();
810
+ i0.ɵɵproperty("ngIf", !ctx_r1.addDialogSaving);
811
+ i0.ɵɵadvance(2);
812
+ i0.ɵɵproperty("disabled", ctx_r1.addDialogSaving || ctx_r1.selectedAddableRecords.length === 0);
813
+ i0.ɵɵadvance();
814
+ i0.ɵɵtextInterpolate2(" Add ", ctx_r1.selectedAddableRecords.length > 0 ? ctx_r1.selectedAddableRecords.length : "", " Record", ctx_r1.selectedAddableRecords.length !== 1 ? "s" : "", " ");
815
+ i0.ɵɵadvance();
816
+ i0.ɵɵproperty("disabled", ctx_r1.addDialogSaving);
817
+ } }
818
+ function ListFormComponentExtended_kendo_dialog_38_ng_container_2_Template(rf, ctx) { if (rf & 1) {
819
+ i0.ɵɵelementContainerStart(0);
820
+ i0.ɵɵelementStart(1, "div", 168);
821
+ i0.ɵɵelement(2, "mj-loading", 197);
822
+ i0.ɵɵelementEnd();
823
+ i0.ɵɵelementContainerEnd();
824
+ } }
825
+ function ListFormComponentExtended_kendo_dialog_38_ng_container_3_Template(rf, ctx) { if (rf & 1) {
826
+ i0.ɵɵelementContainerStart(0);
827
+ i0.ɵɵelementStart(1, "div", 168);
828
+ i0.ɵɵelement(2, "mj-loading", 169);
829
+ i0.ɵɵelementEnd();
830
+ i0.ɵɵelementContainerEnd();
831
+ } if (rf & 2) {
832
+ const ctx_r1 = i0.ɵɵnextContext(2);
833
+ i0.ɵɵadvance(2);
834
+ i0.ɵɵproperty("text", "Adding " + ctx_r1.addFromViewTotal + " records to list...");
835
+ } }
836
+ function ListFormComponentExtended_kendo_dialog_38_ng_container_4_Template(rf, ctx) { if (rf & 1) {
837
+ i0.ɵɵelementContainerStart(0);
838
+ i0.ɵɵelementStart(1, "div", 168);
839
+ i0.ɵɵelement(2, "mj-loading", 198);
840
+ i0.ɵɵelementEnd();
841
+ i0.ɵɵelementContainerEnd();
842
+ } }
843
+ function ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_4_Template(rf, ctx) { if (rf & 1) {
844
+ i0.ɵɵelementContainerStart(0);
845
+ i0.ɵɵelementStart(1, "div", 178);
846
+ i0.ɵɵelement(2, "span", 201);
847
+ i0.ɵɵelementStart(3, "p");
848
+ i0.ɵɵtext(4, "No saved views found for this entity");
849
+ i0.ɵɵelementEnd()();
850
+ i0.ɵɵelementContainerEnd();
851
+ } }
852
+ function ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_5_div_1_Template(rf, ctx) { if (rf & 1) {
853
+ const _r28 = i0.ɵɵgetCurrentView();
854
+ i0.ɵɵelementStart(0, "div", 203);
855
+ i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_5_div_1_Template_div_click_0_listener() { const view_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleViewSelection(view_r29)); });
856
+ i0.ɵɵelementStart(1, "input", 193);
857
+ i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_5_div_1_Template_input_click_1_listener($event) { i0.ɵɵrestoreView(_r28); return i0.ɵɵresetView($event.stopPropagation()); })("change", function ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_5_div_1_Template_input_change_1_listener() { const view_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleViewSelection(view_r29)); });
858
+ i0.ɵɵelementEnd();
859
+ i0.ɵɵelement(2, "span", 204);
860
+ i0.ɵɵelementStart(3, "span", 205);
861
+ i0.ɵɵtext(4);
862
+ i0.ɵɵelementEnd()();
863
+ } if (rf & 2) {
864
+ const view_r29 = ctx.$implicit;
865
+ const ctx_r1 = i0.ɵɵnextContext(4);
866
+ i0.ɵɵclassProp("selected", ctx_r1.isViewSelected(view_r29));
867
+ i0.ɵɵadvance();
868
+ i0.ɵɵproperty("checked", ctx_r1.isViewSelected(view_r29));
869
+ i0.ɵɵadvance(3);
870
+ i0.ɵɵtextInterpolate(view_r29.Name);
871
+ } }
872
+ function ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_5_Template(rf, ctx) { if (rf & 1) {
873
+ i0.ɵɵelementContainerStart(0);
874
+ i0.ɵɵtemplate(1, ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_5_div_1_Template, 5, 4, "div", 202);
875
+ i0.ɵɵelementContainerEnd();
876
+ } if (rf & 2) {
877
+ const ctx_r1 = i0.ɵɵnextContext(3);
878
+ i0.ɵɵadvance();
879
+ i0.ɵɵproperty("ngForOf", ctx_r1.userViews);
880
+ } }
881
+ function ListFormComponentExtended_kendo_dialog_38_ng_container_5_Template(rf, ctx) { if (rf & 1) {
882
+ i0.ɵɵelementContainerStart(0);
883
+ i0.ɵɵelementStart(1, "p", 199);
884
+ i0.ɵɵtext(2, "Select views to add their records to this list:");
885
+ i0.ɵɵelementEnd();
886
+ i0.ɵɵelementStart(3, "div", 200);
887
+ i0.ɵɵtemplate(4, ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_4_Template, 5, 0, "ng-container", 7)(5, ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_5_Template, 2, 1, "ng-container", 7);
888
+ i0.ɵɵelementEnd();
889
+ i0.ɵɵelementContainerEnd();
890
+ } if (rf & 2) {
891
+ const ctx_r1 = i0.ɵɵnextContext(2);
892
+ i0.ɵɵadvance(4);
893
+ i0.ɵɵproperty("ngIf", !ctx_r1.userViews || ctx_r1.userViews.length === 0);
894
+ i0.ɵɵadvance();
895
+ i0.ɵɵproperty("ngIf", ctx_r1.userViews && ctx_r1.userViews.length > 0);
896
+ } }
897
+ function ListFormComponentExtended_kendo_dialog_38_Template(rf, ctx) { if (rf & 1) {
898
+ const _r27 = i0.ɵɵgetCurrentView();
899
+ i0.ɵɵelementStart(0, "kendo-dialog", 195);
900
+ i0.ɵɵlistener("close", function ListFormComponentExtended_kendo_dialog_38_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddFromViewDialog()); });
901
+ i0.ɵɵelementStart(1, "div", 196);
902
+ i0.ɵɵtemplate(2, ListFormComponentExtended_kendo_dialog_38_ng_container_2_Template, 3, 0, "ng-container", 7)(3, ListFormComponentExtended_kendo_dialog_38_ng_container_3_Template, 3, 1, "ng-container", 7)(4, ListFormComponentExtended_kendo_dialog_38_ng_container_4_Template, 3, 0, "ng-container", 7)(5, ListFormComponentExtended_kendo_dialog_38_ng_container_5_Template, 6, 2, "ng-container", 7);
903
+ i0.ɵɵelementEnd();
904
+ i0.ɵɵelementStart(6, "kendo-dialog-actions")(7, "button", 166);
905
+ i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_38_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.confirmAddFromView()); });
906
+ i0.ɵɵtext(8);
907
+ i0.ɵɵelementEnd();
908
+ i0.ɵɵelementStart(9, "button", 167);
909
+ i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_38_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddFromViewDialog()); });
910
+ i0.ɵɵtext(10, " Cancel ");
911
+ i0.ɵɵelementEnd()()();
912
+ } if (rf & 2) {
913
+ const ctx_r1 = i0.ɵɵnextContext();
914
+ i0.ɵɵproperty("minWidth", 400)("width", 600)("height", 500);
915
+ i0.ɵɵadvance(2);
916
+ i0.ɵɵproperty("ngIf", ctx_r1.showAddFromViewLoader && ctx_r1.fetchingRecordsToSave);
917
+ i0.ɵɵadvance();
918
+ i0.ɵɵproperty("ngIf", ctx_r1.showAddFromViewLoader && ctx_r1.addFromViewTotal > 0 && !ctx_r1.fetchingRecordsToSave);
919
+ i0.ɵɵadvance();
920
+ i0.ɵɵproperty("ngIf", ctx_r1.showAddFromViewLoader && !ctx_r1.fetchingRecordsToSave && ctx_r1.addFromViewTotal === 0);
921
+ i0.ɵɵadvance();
922
+ i0.ɵɵproperty("ngIf", !ctx_r1.showAddFromViewLoader);
923
+ i0.ɵɵadvance(2);
924
+ i0.ɵɵproperty("disabled", ctx_r1.showAddFromViewLoader || ctx_r1.userViewsToAdd.length === 0);
925
+ i0.ɵɵadvance();
926
+ i0.ɵɵtextInterpolate2(" Add from ", ctx_r1.userViewsToAdd.length, " View", ctx_r1.userViewsToAdd.length !== 1 ? "s" : "", " ");
927
+ i0.ɵɵadvance();
928
+ i0.ɵɵproperty("disabled", ctx_r1.showAddFromViewLoader);
929
+ } }
930
+ function ListFormComponentExtended_mj_list_share_dialog_39_Template(rf, ctx) { if (rf & 1) {
931
+ const _r30 = i0.ɵɵgetCurrentView();
932
+ i0.ɵɵelementStart(0, "mj-list-share-dialog", 206);
933
+ i0.ɵɵlistener("complete", function ListFormComponentExtended_mj_list_share_dialog_39_Template_mj_list_share_dialog_complete_0_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onShareDialogComplete($event)); })("cancel", function ListFormComponentExtended_mj_list_share_dialog_39_Template_mj_list_share_dialog_cancel_0_listener() { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onShareDialogCancel()); });
934
+ i0.ɵɵelementEnd();
935
+ } if (rf & 2) {
936
+ const ctx_r1 = i0.ɵɵnextContext();
937
+ i0.ɵɵproperty("config", ctx_r1.shareDialogConfig)("visible", ctx_r1.showShareDialog);
938
+ } }
529
939
  /**
530
940
  * World-class List form component that provides a rich exploration experience
531
941
  * for managing lists in the MemberJunction system.
@@ -572,11 +982,36 @@ let ListFormComponentExtended = class ListFormComponentExtended extends ListForm
572
982
  this.isEditingDescription = false;
573
983
  this.editingName = '';
574
984
  this.editingDescription = '';
985
+ // Add Records dialog
986
+ this.showAddRecordsDialog = false;
987
+ this.addDialogLoading = false;
988
+ this.addDialogSaving = false;
989
+ this.addableRecords = [];
990
+ this.addRecordsSearchFilter = '';
991
+ this.existingListDetailIds = new Set();
992
+ this.addProgress = 0;
993
+ this.addTotal = 0;
994
+ this.searchSubject = new Subject();
995
+ // Add From View dialog
996
+ this.showAddFromViewDialog = false;
997
+ this.showAddFromViewLoader = false;
998
+ this.userViews = null;
999
+ this.userViewsToAdd = [];
1000
+ this.addFromViewProgress = 0;
1001
+ this.addFromViewTotal = 0;
1002
+ this.fetchingRecordsToSave = false;
1003
+ // Share dialog
1004
+ this.showShareDialog = false;
1005
+ this.shareDialogConfig = null;
575
1006
  this.destroy$ = new Subject();
576
1007
  this.metadata = new Metadata();
577
1008
  }
578
1009
  async ngOnInit() {
579
1010
  await super.ngOnInit();
1011
+ // Set up search debounce
1012
+ this.searchSubject
1013
+ .pipe(debounceTime(300))
1014
+ .subscribe((searchText) => this.searchRecords(searchText));
580
1015
  await this.loadExplorerData();
581
1016
  }
582
1017
  // Helper to show notifications using SharedService's deprecated method
@@ -906,8 +1341,283 @@ let ListFormComponentExtended = class ListFormComponentExtended extends ListForm
906
1341
  await this.loadStats();
907
1342
  this.updateNavBadges();
908
1343
  }
909
- static { this.ɵfac = /*@__PURE__*/ (() => { let ɵListFormComponentExtended_BaseFactory; return function ListFormComponentExtended_Factory(t) { return (ɵListFormComponentExtended_BaseFactory || (ɵListFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(ListFormComponentExtended)))(t || ListFormComponentExtended); }; })(); }
910
- static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ListFormComponentExtended, selectors: [["mj-list-form-extended"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 37, vars: 18, consts: [["nameInput", ""], [1, "list-form-explorer"], [1, "list-header"], [1, "header-content"], [1, "header-icon"], [1, "header-info"], [1, "name-row"], [4, "ngIf"], [1, "entity-badge"], [1, "header-stats"], [1, "stat-item"], [1, "stat-value"], [1, "stat-label"], [1, "nav-rail"], ["class", "nav-item", 3, "active", "disabled", "title", "click", 4, "ngFor", "ngForOf"], [1, "main-content"], ["class", "section overview-section", 4, "ngIf"], ["class", "section items-section", 4, "ngIf"], ["class", "section sharing-section", 4, "ngIf"], ["class", "section activity-section", 4, "ngIf"], ["class", "section settings-section", 4, "ngIf"], [1, "list-name"], ["class", "edit-btn", "title", "Edit name", 3, "click", 4, "ngIf"], ["title", "Edit name", 1, "edit-btn", 3, "click"], [1, "fa-solid", "fa-pen"], ["type", "text", 1, "inline-edit-input", "name-input", 3, "ngModelChange", "keydown.enter", "keydown.escape", "ngModel"], [1, "save-btn", 3, "click"], [1, "fa-solid", "fa-check"], [1, "cancel-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "nav-item", 3, "click", "title"], [1, "nav-label"], ["class", "nav-badge", 4, "ngIf"], [1, "nav-badge"], [1, "section", "overview-section"], [1, "overview-grid"], [1, "overview-card", "description-card"], [1, "card-header"], [1, "fa-solid", "fa-align-left"], ["class", "edit-btn", 3, "click", 4, "ngIf"], [1, "card-body"], [1, "overview-card", "details-card"], [1, "fa-solid", "fa-info-circle"], [1, "detail-row"], [1, "detail-label"], [1, "detail-value"], [1, "detail-icon"], ["class", "detail-value", 4, "ngIf"], ["class", "category-select", 3, "ngModel", "ngModelChange", 4, "ngIf"], [1, "fa-solid", "fa-user", "detail-icon"], ["class", "owner-badge", 4, "ngIf"], [1, "fa-solid", "fa-calendar", "detail-icon"], [1, "overview-card", "actions-card"], [1, "fa-solid", "fa-bolt"], [1, "action-btn", 3, "click"], [1, "fa-solid", "fa-list"], [1, "action-count"], ["title", "Coming soon", 1, "action-btn", 3, "disabled"], [1, "fa-solid", "fa-share-nodes"], [1, "coming-soon"], [1, "fa-solid", "fa-file-export"], [1, "edit-btn", 3, "click"], ["class", "description-text", 4, "ngIf"], ["class", "description-empty", 4, "ngIf"], [1, "description-text"], [1, "description-empty"], ["placeholder", "Add a description...", "rows", "3", 1, "inline-edit-input", "description-input", 3, "ngModelChange", "keydown.escape", "ngModel"], [1, "edit-actions"], [1, "btn-primary", 3, "click"], [1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-folder", "detail-icon"], [1, "category-select", 3, "ngModelChange", "ngModel"], [3, "ngValue"], [3, "ngValue", 4, "ngFor", "ngForOf"], [1, "owner-badge"], [1, "section", "items-section"], [1, "section-header"], [1, "section-actions"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search items...", 3, "ngModelChange", "ngModel"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-refresh"], ["class", "loading-state", 4, "ngIf"], ["class", "empty-state", 4, "ngIf"], ["class", "items-table-container", 4, "ngIf"], [1, "loading-state"], ["text", "Loading items...", "size", "medium"], [1, "empty-state"], [1, "empty-icon"], [1, "fa-solid", "fa-inbox"], [1, "items-table-container"], ["class", "items-toolbar", 4, "ngIf"], [1, "items-table"], [1, "col-checkbox"], ["type", "checkbox", 3, "change", "checked"], [1, "col-name"], [1, "col-id"], [1, "col-added"], [1, "col-actions"], [3, "selected", 4, "ngFor", "ngForOf"], [1, "items-footer"], [1, "items-count"], [1, "items-toolbar"], [1, "selection-count"], [1, "btn-danger", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "item-name"], [1, "item-icon"], ["class", "fa-solid fa-spinner fa-spin", 4, "ngIf"], [1, "record-id"], ["title", "Open record", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "section", "sharing-section"], [1, "coming-soon-banner"], [1, "banner-content"], ["class", "shares-grid", 4, "ngIf"], [1, "shares-grid"], ["sectionKey", "shares", "sectionName", "Current Shares", "icon", "fa fa-users", 3, "form", "formContext", "badgeCount"], [3, "Params", "NewRecordValues", "AllowLoad", "EditMode"], ["sectionKey", "invitations", "sectionName", "Pending Invitations", "icon", "fa fa-envelope", 3, "form", "formContext", "badgeCount"], [1, "section", "activity-section"], [1, "activity-timeline"], [1, "timeline-item"], [1, "timeline-icon"], [1, "fa-solid", "fa-edit"], [1, "timeline-content"], [1, "timeline-text"], [1, "timeline-date"], [1, "timeline-icon", "create"], [1, "fa-solid", "fa-plus"], [1, "activity-info"], [1, "section", "settings-section"], [1, "settings-form"], ["sectionKey", "listSettings", "sectionName", "List Settings", "icon", "fa fa-cog", 3, "form", "formContext"], [1, "form-body"], ["FieldName", "Name", "Type", "textbox", 3, "record", "ShowLabel", "EditMode", "formContext"], ["FieldName", "Description", "Type", "textarea", 3, "record", "ShowLabel", "EditMode", "formContext"], ["FieldName", "CategoryID", "Type", "textbox", "LinkType", "Record", "LinkComponentType", "Search", 3, "record", "ShowLabel", "EditMode", "formContext"], ["sectionKey", "systemInfo", "sectionName", "System Information", "icon", "fa fa-info-circle", 3, "form", "formContext"], ["FieldName", "EntityID", "Type", "textbox", 3, "record", "ShowLabel", "EditMode", "formContext"], ["FieldName", "UserID", "Type", "textbox", 3, "record", "ShowLabel", "EditMode", "formContext"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "record", "ShowLabel", "EditMode", "formContext"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "record", "ShowLabel", "EditMode", "formContext"]], template: function ListFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
1344
+ // ==========================================
1345
+ // Add Records Dialog
1346
+ // ==========================================
1347
+ async openAddRecordsDialog() {
1348
+ this.showAddRecordsDialog = true;
1349
+ this.addableRecords = [];
1350
+ this.addRecordsSearchFilter = '';
1351
+ this.addDialogLoading = true;
1352
+ this.addDialogSaving = false;
1353
+ // Load existing list detail IDs to mark which records are already in the list
1354
+ await this.loadExistingListDetailIds();
1355
+ this.addDialogLoading = false;
1356
+ this.cdr.markForCheck();
1357
+ }
1358
+ closeAddRecordsDialog() {
1359
+ this.showAddRecordsDialog = false;
1360
+ this.addableRecords = [];
1361
+ this.addRecordsSearchFilter = '';
1362
+ this.existingListDetailIds.clear();
1363
+ this.addDialogSaving = false;
1364
+ this.addProgress = 0;
1365
+ this.addTotal = 0;
1366
+ this.cdr.markForCheck();
1367
+ }
1368
+ async loadExistingListDetailIds() {
1369
+ if (!this.record)
1370
+ return;
1371
+ const rv = new RunView();
1372
+ const result = await rv.RunView({
1373
+ EntityName: 'List Details',
1374
+ ExtraFilter: `ListID = '${this.record.ID}'`,
1375
+ Fields: ['RecordID'],
1376
+ ResultType: 'simple'
1377
+ }, this.metadata.CurrentUser);
1378
+ if (result.Success) {
1379
+ this.existingListDetailIds = new Set(result.Results.map(r => r.RecordID));
1380
+ }
1381
+ }
1382
+ onAddRecordsSearchChange(value) {
1383
+ this.addRecordsSearchFilter = value;
1384
+ this.searchSubject.next(value);
1385
+ }
1386
+ async searchRecords(searchText) {
1387
+ if (!this.record || !searchText || searchText.length < 2) {
1388
+ this.addableRecords = [];
1389
+ this.cdr.markForCheck();
1390
+ return;
1391
+ }
1392
+ this.addDialogLoading = true;
1393
+ this.cdr.markForCheck();
1394
+ const sourceEntityInfo = this.metadata.EntityByID(this.record.EntityID);
1395
+ if (!sourceEntityInfo) {
1396
+ this.addDialogLoading = false;
1397
+ this.cdr.markForCheck();
1398
+ return;
1399
+ }
1400
+ const nameField = sourceEntityInfo.Fields.find(field => field.IsNameField);
1401
+ const pkField = sourceEntityInfo.FirstPrimaryKey?.Name || 'ID';
1402
+ let filter;
1403
+ if (nameField) {
1404
+ filter = `${nameField.Name} LIKE '%${searchText}%'`;
1405
+ }
1406
+ const rv = new RunView();
1407
+ const result = await rv.RunView({
1408
+ EntityName: this.record.Entity,
1409
+ ExtraFilter: filter,
1410
+ MaxRows: 100,
1411
+ ResultType: 'simple'
1412
+ });
1413
+ if (result.Success) {
1414
+ this.addableRecords = result.Results.map((record) => {
1415
+ const recordId = String(record[pkField]);
1416
+ return {
1417
+ ID: recordId,
1418
+ Name: nameField ? String(record[nameField.Name]) : recordId,
1419
+ isInList: this.existingListDetailIds.has(recordId),
1420
+ isSelected: false
1421
+ };
1422
+ });
1423
+ }
1424
+ this.addDialogLoading = false;
1425
+ this.cdr.markForCheck();
1426
+ }
1427
+ toggleRecordSelection(record) {
1428
+ if (record.isInList)
1429
+ return; // Can't select records already in list
1430
+ record.isSelected = !record.isSelected;
1431
+ this.cdr.markForCheck();
1432
+ }
1433
+ get selectedAddableRecords() {
1434
+ return this.addableRecords.filter(r => r.isSelected);
1435
+ }
1436
+ selectAllAddable() {
1437
+ this.addableRecords.forEach(r => {
1438
+ if (!r.isInList)
1439
+ r.isSelected = true;
1440
+ });
1441
+ this.cdr.markForCheck();
1442
+ }
1443
+ deselectAllAddable() {
1444
+ this.addableRecords.forEach(r => r.isSelected = false);
1445
+ this.cdr.markForCheck();
1446
+ }
1447
+ async confirmAddRecords() {
1448
+ const recordsToAdd = this.selectedAddableRecords;
1449
+ if (recordsToAdd.length === 0 || !this.record)
1450
+ return;
1451
+ this.addDialogSaving = true;
1452
+ this.addTotal = recordsToAdd.length;
1453
+ this.addProgress = 0;
1454
+ this.cdr.markForCheck();
1455
+ // Use transaction group for bulk insert
1456
+ const tg = await this.metadata.CreateTransactionGroup();
1457
+ for (const record of recordsToAdd) {
1458
+ const listDetail = await this.metadata.GetEntityObject('List Details');
1459
+ listDetail.ListID = this.record.ID;
1460
+ listDetail.RecordID = record.ID;
1461
+ listDetail.TransactionGroup = tg;
1462
+ await listDetail.Save();
1463
+ }
1464
+ const success = await tg.Submit();
1465
+ if (success) {
1466
+ this.addProgress = this.addTotal;
1467
+ this.showNotification(`Added ${recordsToAdd.length} record${recordsToAdd.length !== 1 ? 's' : ''} to list`, 'success', 2500);
1468
+ this.closeAddRecordsDialog();
1469
+ await this.refreshItems();
1470
+ }
1471
+ else {
1472
+ LogError('Error adding records to list');
1473
+ this.showNotification('Failed to add some records', 'error', 2500);
1474
+ this.addDialogSaving = false;
1475
+ this.cdr.markForCheck();
1476
+ }
1477
+ }
1478
+ // ==========================================
1479
+ // Add From View Dialog
1480
+ // ==========================================
1481
+ async openAddFromViewDialog() {
1482
+ this.showAddFromViewDialog = true;
1483
+ this.userViewsToAdd = [];
1484
+ this.cdr.markForCheck();
1485
+ if (!this.userViews) {
1486
+ await this.loadEntityViews();
1487
+ }
1488
+ }
1489
+ closeAddFromViewDialog() {
1490
+ this.showAddFromViewDialog = false;
1491
+ this.userViewsToAdd = [];
1492
+ this.showAddFromViewLoader = false;
1493
+ this.addFromViewProgress = 0;
1494
+ this.addFromViewTotal = 0;
1495
+ this.cdr.markForCheck();
1496
+ }
1497
+ async loadEntityViews() {
1498
+ if (!this.record || !this.record.Entity)
1499
+ return;
1500
+ this.showAddFromViewLoader = true;
1501
+ this.cdr.markForCheck();
1502
+ const rv = new RunView();
1503
+ const runViewResult = await rv.RunView({
1504
+ EntityName: 'User Views',
1505
+ ExtraFilter: `UserID = '${this.metadata.CurrentUser.ID}' AND EntityID = '${this.record.EntityID}'`,
1506
+ ResultType: 'entity_object'
1507
+ }, this.metadata.CurrentUser);
1508
+ if (!runViewResult.Success) {
1509
+ LogError(`Error loading User Views for entity ${this.record.Entity}`);
1510
+ }
1511
+ else {
1512
+ this.userViews = runViewResult.Results;
1513
+ }
1514
+ this.showAddFromViewLoader = false;
1515
+ this.cdr.markForCheck();
1516
+ }
1517
+ toggleViewSelection(view) {
1518
+ const index = this.userViewsToAdd.findIndex(v => v.ID === view.ID);
1519
+ if (index >= 0) {
1520
+ this.userViewsToAdd.splice(index, 1);
1521
+ }
1522
+ else {
1523
+ this.userViewsToAdd.push(view);
1524
+ }
1525
+ this.cdr.markForCheck();
1526
+ }
1527
+ isViewSelected(view) {
1528
+ return this.userViewsToAdd.some(v => v.ID === view.ID);
1529
+ }
1530
+ async confirmAddFromView() {
1531
+ if (!this.record || this.userViewsToAdd.length === 0)
1532
+ return;
1533
+ this.showAddFromViewLoader = true;
1534
+ this.fetchingRecordsToSave = true;
1535
+ this.cdr.markForCheck();
1536
+ const rv = new RunView();
1537
+ // Collect all unique record IDs from selected views
1538
+ const recordIdSet = new Set();
1539
+ for (const userView of this.userViewsToAdd) {
1540
+ const runViewResult = await rv.RunView({
1541
+ EntityName: 'User Views',
1542
+ ViewEntity: userView,
1543
+ Fields: ['ID']
1544
+ }, this.metadata.CurrentUser);
1545
+ if (runViewResult.Success) {
1546
+ const records = runViewResult.Results;
1547
+ records.forEach(r => recordIdSet.add(r.ID));
1548
+ }
1549
+ }
1550
+ // Filter out records already in the list
1551
+ await this.loadExistingListDetailIds();
1552
+ const recordsToAdd = [...recordIdSet].filter(id => !this.existingListDetailIds.has(id));
1553
+ this.addFromViewTotal = recordsToAdd.length;
1554
+ this.addFromViewProgress = 0;
1555
+ this.fetchingRecordsToSave = false;
1556
+ this.cdr.markForCheck();
1557
+ if (recordsToAdd.length === 0) {
1558
+ this.showNotification('All records already in list', 'info', 2500);
1559
+ this.showAddFromViewLoader = false;
1560
+ this.cdr.markForCheck();
1561
+ return;
1562
+ }
1563
+ LogStatus(`Adding ${recordsToAdd.length} records to list`);
1564
+ // Use transaction group for bulk insert
1565
+ const tg = await this.metadata.CreateTransactionGroup();
1566
+ for (const recordID of recordsToAdd) {
1567
+ const listDetail = await this.metadata.GetEntityObject('List Details');
1568
+ listDetail.ListID = this.record.ID;
1569
+ listDetail.RecordID = recordID;
1570
+ listDetail.TransactionGroup = tg;
1571
+ await listDetail.Save();
1572
+ }
1573
+ const success = await tg.Submit();
1574
+ if (success) {
1575
+ this.addFromViewProgress = this.addFromViewTotal;
1576
+ this.showNotification(`Added ${recordsToAdd.length} record${recordsToAdd.length !== 1 ? 's' : ''} to list`, 'success', 2500);
1577
+ this.closeAddFromViewDialog();
1578
+ await this.refreshItems();
1579
+ }
1580
+ else {
1581
+ LogError('Error adding records from view to list');
1582
+ this.showNotification('Failed to add some records', 'error', 2500);
1583
+ this.showAddFromViewLoader = false;
1584
+ this.cdr.markForCheck();
1585
+ }
1586
+ }
1587
+ // ==========================================
1588
+ // Share Dialog
1589
+ // ==========================================
1590
+ openShareDialog() {
1591
+ if (!this.record?.IsSaved)
1592
+ return;
1593
+ this.shareDialogConfig = {
1594
+ listId: this.record.ID,
1595
+ listName: this.record.Name,
1596
+ currentUserId: this.metadata.CurrentUser.ID,
1597
+ isOwner: this.isCurrentUserOwner()
1598
+ };
1599
+ this.showShareDialog = true;
1600
+ this.cdr.markForCheck();
1601
+ }
1602
+ onShareDialogComplete(result) {
1603
+ this.showShareDialog = false;
1604
+ this.shareDialogConfig = null;
1605
+ if (result.action === 'apply') {
1606
+ // Refresh stats to update share counts
1607
+ this.loadStats().then(() => {
1608
+ this.updateNavBadges();
1609
+ this.cdr.markForCheck();
1610
+ });
1611
+ }
1612
+ this.cdr.markForCheck();
1613
+ }
1614
+ onShareDialogCancel() {
1615
+ this.showShareDialog = false;
1616
+ this.shareDialogConfig = null;
1617
+ this.cdr.markForCheck();
1618
+ }
1619
+ static { this.ɵfac = /*@__PURE__*/ (() => { let ɵListFormComponentExtended_BaseFactory; return function ListFormComponentExtended_Factory(__ngFactoryType__) { return (ɵListFormComponentExtended_BaseFactory || (ɵListFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(ListFormComponentExtended)))(__ngFactoryType__ || ListFormComponentExtended); }; })(); }
1620
+ static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ListFormComponentExtended, selectors: [["mj-list-form-extended"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 40, vars: 21, consts: [["nameInput", ""], [1, "list-form-explorer"], [1, "list-header"], [1, "header-content"], [1, "header-icon"], [1, "header-info"], [1, "name-row"], [4, "ngIf"], [1, "entity-badge"], [1, "header-stats"], [1, "stat-item"], [1, "stat-value"], [1, "stat-label"], [1, "nav-rail"], ["class", "nav-item", 3, "active", "disabled", "title", "click", 4, "ngFor", "ngForOf"], [1, "main-content"], ["class", "section overview-section", 4, "ngIf"], ["class", "section items-section", 4, "ngIf"], ["class", "section sharing-section", 4, "ngIf"], ["class", "section activity-section", 4, "ngIf"], ["class", "section settings-section", 4, "ngIf"], [3, "title", "minWidth", "width", "height", "close", 4, "ngIf"], ["title", "Add Records from Views", 3, "minWidth", "width", "height", "close", 4, "ngIf"], [3, "config", "visible", "complete", "cancel", 4, "ngIf"], [1, "list-name"], ["class", "edit-btn", "title", "Edit name", 3, "click", 4, "ngIf"], ["title", "Edit name", 1, "edit-btn", 3, "click"], [1, "fa-solid", "fa-pen"], ["type", "text", 1, "inline-edit-input", "name-input", 3, "ngModelChange", "keydown.enter", "keydown.escape", "ngModel"], [1, "save-btn", 3, "click"], [1, "fa-solid", "fa-check"], [1, "cancel-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "nav-item", 3, "click", "title"], [1, "nav-label"], ["class", "nav-badge", 4, "ngIf"], [1, "nav-badge"], [1, "section", "overview-section"], [1, "overview-grid"], [1, "overview-card", "description-card"], [1, "card-header"], [1, "fa-solid", "fa-align-left"], ["class", "edit-btn", 3, "click", 4, "ngIf"], [1, "card-body"], [1, "overview-card", "details-card"], [1, "fa-solid", "fa-info-circle"], [1, "detail-row"], [1, "detail-label"], [1, "detail-value"], [1, "detail-icon"], ["class", "detail-value", 4, "ngIf"], ["class", "category-select", 3, "ngModel", "ngModelChange", 4, "ngIf"], [1, "fa-solid", "fa-user", "detail-icon"], ["class", "owner-badge", 4, "ngIf"], [1, "fa-solid", "fa-calendar", "detail-icon"], [1, "overview-card", "actions-card"], [1, "fa-solid", "fa-bolt"], [1, "action-btn", 3, "click"], [1, "fa-solid", "fa-list"], [1, "action-count"], ["class", "action-btn", 3, "click", 4, "ngIf"], ["title", "Coming soon", 1, "action-btn", 3, "disabled"], [1, "fa-solid", "fa-file-export"], [1, "coming-soon"], [1, "edit-btn", 3, "click"], ["class", "description-text", 4, "ngIf"], ["class", "description-empty", 4, "ngIf"], [1, "description-text"], [1, "description-empty"], ["placeholder", "Add a description...", "rows", "3", 1, "inline-edit-input", "description-input", 3, "ngModelChange", "keydown.escape", "ngModel"], [1, "edit-actions"], [1, "btn-primary", 3, "click"], [1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-folder", "detail-icon"], [1, "category-select", 3, "ngModelChange", "ngModel"], [3, "ngValue"], [3, "ngValue", 4, "ngFor", "ngForOf"], [1, "owner-badge"], [1, "fa-solid", "fa-share-nodes"], ["class", "action-count", 4, "ngIf"], [1, "section", "items-section"], [1, "section-header"], [1, "section-actions"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search items...", 3, "ngModelChange", "ngModel"], ["class", "add-buttons", 4, "ngIf"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-refresh"], ["class", "loading-state", 4, "ngIf"], ["class", "empty-state", 4, "ngIf"], ["class", "items-table-container", 4, "ngIf"], [1, "add-buttons"], ["title", "Add individual records", 1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-plus"], ["title", "Add records from a saved view", 1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-table-list"], [1, "loading-state"], ["text", "Loading items...", "size", "medium"], [1, "empty-state"], [1, "empty-icon"], [1, "fa-solid", "fa-inbox"], [1, "items-table-container"], ["class", "items-toolbar", 4, "ngIf"], [1, "items-table"], [1, "col-checkbox"], ["type", "checkbox", 3, "change", "checked"], [1, "col-name"], [1, "col-id"], [1, "col-added"], [1, "col-actions"], [3, "selected", 4, "ngFor", "ngForOf"], [1, "items-footer"], [1, "items-count"], [1, "items-toolbar"], [1, "selection-count"], [1, "btn-danger", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "item-name"], [1, "item-icon"], ["class", "fa-solid fa-spinner fa-spin", 4, "ngIf"], [1, "record-id"], ["title", "Open record", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "section", "sharing-section"], ["class", "section-actions", 4, "ngIf"], ["class", "sharing-summary", 4, "ngIf"], ["class", "readonly-notice", 4, "ngIf"], [1, "fa-solid", "fa-user-plus"], [1, "sharing-summary"], [1, "summary-card"], [1, "summary-icon"], [1, "fa-solid", "fa-users"], [1, "summary-content"], [1, "summary-value"], [1, "summary-label"], ["class", "summary-card", 4, "ngIf"], [1, "summary-icon", "pending"], [1, "fa-solid", "fa-envelope"], ["class", "btn-primary", 3, "click", 4, "ngIf"], [1, "readonly-notice"], [1, "section", "activity-section"], [1, "activity-timeline"], [1, "timeline-item"], [1, "timeline-icon"], [1, "fa-solid", "fa-edit"], [1, "timeline-content"], [1, "timeline-text"], [1, "timeline-date"], [1, "timeline-icon", "create"], [1, "activity-info"], [1, "section", "settings-section"], [1, "settings-form"], ["sectionKey", "listSettings", "sectionName", "List Settings", "icon", "fa fa-cog", 3, "form", "formContext"], [1, "form-body"], ["FieldName", "Name", "Type", "textbox", 3, "record", "ShowLabel", "EditMode", "formContext"], ["FieldName", "Description", "Type", "textarea", 3, "record", "ShowLabel", "EditMode", "formContext"], ["FieldName", "CategoryID", "Type", "textbox", "LinkType", "Record", "LinkComponentType", "Search", 3, "record", "ShowLabel", "EditMode", "formContext"], ["sectionKey", "systemInfo", "sectionName", "System Information", "icon", "fa fa-info-circle", 3, "form", "formContext"], ["FieldName", "EntityID", "Type", "textbox", 3, "record", "ShowLabel", "EditMode", "formContext"], ["FieldName", "UserID", "Type", "textbox", 3, "record", "ShowLabel", "EditMode", "formContext"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "record", "ShowLabel", "EditMode", "formContext"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "record", "ShowLabel", "EditMode", "formContext"], [3, "close", "title", "minWidth", "width", "height"], [1, "dialog-content", "add-records-dialog"], ["kendoButton", "", "themeColor", "primary", 3, "click", "disabled"], ["kendoButton", "", "fillMode", "outline", 3, "click", "disabled"], [1, "dialog-loading"], ["size", "small", 3, "text"], [1, "search-section"], [1, "search-input", 3, "valueChange", "placeholder", "clearButton", "value"], ["kendoTextBoxPrefixTemplate", ""], [1, "search-hint"], [1, "records-list"], [1, "fa-solid", "fa-search", "search-icon"], [1, "list-loading"], ["size", "small", 3, "showText"], [1, "empty-results"], [1, "fa-solid", "fa-search", "empty-icon"], [1, "fa-solid", "fa-list", "empty-icon"], [1, "selection-controls"], ["kendoButton", "", "fillMode", "flat", "size", "small", 3, "click"], [1, "selection-info"], [1, "records-scroll"], ["class", "record-item", 3, "in-list", "selected", "click", 4, "ngFor", "ngForOf"], [1, "record-item", 3, "click"], [1, "record-checkbox"], ["class", "fa-solid fa-check in-list-icon", "title", "Already in list", 4, "ngIf"], ["type", "checkbox", 3, "checked", "click", "change", 4, "ngIf"], [1, "record-name"], ["class", "in-list-badge", 4, "ngIf"], ["title", "Already in list", 1, "fa-solid", "fa-check", "in-list-icon"], ["type", "checkbox", 3, "click", "change", "checked"], [1, "in-list-badge"], ["title", "Add Records from Views", 3, "close", "minWidth", "width", "height"], [1, "dialog-content"], ["text", "Loading records from views...", "size", "small"], ["text", "Loading views...", "size", "small"], [1, "dialog-instruction"], [1, "views-list"], [1, "fa-solid", "fa-folder-open", "empty-icon"], ["class", "view-item", 3, "selected", "click", 4, "ngFor", "ngForOf"], [1, "view-item", 3, "click"], [1, "fa-solid", "fa-table-list", "view-icon"], [1, "view-name"], [3, "complete", "cancel", "config", "visible"]], template: function ListFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
911
1621
  i0.ɵɵelementStart(0, "div", 1)(1, "header", 2)(2, "div", 3)(3, "div", 4);
912
1622
  i0.ɵɵelement(4, "i");
913
1623
  i0.ɵɵelementEnd();
@@ -941,8 +1651,9 @@ let ListFormComponentExtended = class ListFormComponentExtended extends ListForm
941
1651
  i0.ɵɵtemplate(30, ListFormComponentExtended_button_30_Template, 5, 9, "button", 14);
942
1652
  i0.ɵɵelementEnd();
943
1653
  i0.ɵɵelementStart(31, "main", 15);
944
- i0.ɵɵtemplate(32, ListFormComponentExtended_section_32_Template, 66, 17, "section", 16)(33, ListFormComponentExtended_section_33_Template, 13, 4, "section", 17)(34, ListFormComponentExtended_section_34_Template, 9, 1, "section", 18)(35, ListFormComponentExtended_section_35_Template, 26, 8, "section", 19)(36, ListFormComponentExtended_section_36_Template, 16, 32, "section", 20);
1654
+ i0.ɵɵtemplate(32, ListFormComponentExtended_section_32_Template, 62, 18, "section", 16)(33, ListFormComponentExtended_section_33_Template, 14, 5, "section", 17)(34, ListFormComponentExtended_section_34_Template, 8, 4, "section", 18)(35, ListFormComponentExtended_section_35_Template, 26, 8, "section", 19)(36, ListFormComponentExtended_section_36_Template, 16, 32, "section", 20);
945
1655
  i0.ɵɵelementEnd()();
1656
+ i0.ɵɵtemplate(37, ListFormComponentExtended_kendo_dialog_37_Template, 9, 10, "kendo-dialog", 21)(38, ListFormComponentExtended_kendo_dialog_38_Template, 11, 11, "kendo-dialog", 22)(39, ListFormComponentExtended_mj_list_share_dialog_39_Template, 1, 2, "mj-list-share-dialog", 23);
946
1657
  } if (rf & 2) {
947
1658
  i0.ɵɵadvance(3);
948
1659
  i0.ɵɵstyleProp("background-color", "#2196F3");
@@ -974,7 +1685,13 @@ let ListFormComponentExtended = class ListFormComponentExtended extends ListForm
974
1685
  i0.ɵɵproperty("ngIf", ctx.activeSection === "activity");
975
1686
  i0.ɵɵadvance();
976
1687
  i0.ɵɵproperty("ngIf", ctx.activeSection === "settings");
977
- } }, dependencies: [i1.NgForOf, i1.NgIf, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.UserViewGridComponent, i4.MJFormField, i4.CollapsiblePanelComponent, i5.LoadingComponent, i1.DatePipe], styles: ["\n\n\n\n\n\n\n.list-form-explorer[_ngcontent-%COMP%] {\n display: grid;\n grid-template-areas:\n \"header header\"\n \"nav main\";\n grid-template-columns: 64px 1fr;\n grid-template-rows: auto 1fr;\n height: 100%;\n min-height: 100vh;\n background: #f5f7fa;\n}\n\n\n\n.list-header[_ngcontent-%COMP%] {\n grid-area: header;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: white;\n border-bottom: 1px solid #e0e0e0;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.header-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.name-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.list-name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: #1a1a2e;\n}\n\n.edit-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 6px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn[_ngcontent-%COMP%]:hover {\n background: #f0f0f0;\n color: #666;\n}\n\n.inline-edit-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 2px solid #2196F3;\n border-radius: 6px;\n font-size: inherit;\n background: white;\n outline: none;\n}\n\n.name-input[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 600;\n min-width: 300px;\n}\n\n.save-btn[_ngcontent-%COMP%], .cancel-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.save-btn[_ngcontent-%COMP%] {\n color: #4CAF50;\n}\n\n.save-btn[_ngcontent-%COMP%]:hover {\n background: #e8f5e9;\n}\n\n.cancel-btn[_ngcontent-%COMP%] {\n color: #f44336;\n}\n\n.cancel-btn[_ngcontent-%COMP%]:hover {\n background: #ffebee;\n}\n\n.entity-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: #e3f2fd;\n border-radius: 16px;\n font-size: 13px;\n color: #1976D2;\n font-weight: 500;\n}\n\n.entity-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 32px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 80px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 600;\n color: #333;\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #999;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.nav-rail[_ngcontent-%COMP%] {\n grid-area: nav;\n display: flex;\n flex-direction: column;\n padding: 16px 8px;\n background: #1a1a2e;\n gap: 4px;\n}\n\n.nav-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 12px 8px;\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s;\n position: relative;\n}\n\n.nav-item[_ngcontent-%COMP%]:hover:not(.disabled) {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n}\n\n.nav-item.active[_ngcontent-%COMP%] {\n background: rgba(33, 150, 243, 0.2);\n color: #64b5f6;\n}\n\n.nav-item.active[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 24px;\n background: #2196F3;\n border-radius: 0 3px 3px 0;\n}\n\n.nav-item.disabled[_ngcontent-%COMP%] {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n}\n\n.nav-label[_ngcontent-%COMP%] {\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.nav-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 6px;\n right: 6px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: #2196F3;\n border-radius: 9px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n\n\n.main-content[_ngcontent-%COMP%] {\n grid-area: main;\n padding: 24px;\n overflow-y: auto;\n}\n\n.section[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n}\n\n.section-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n}\n\n.section-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n\n\n.search-box[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: #999;\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n padding: 10px 12px 10px 36px;\n border: 1px solid #ddd;\n border-radius: 8px;\n font-size: 14px;\n width: 250px;\n transition: all 0.2s;\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #2196F3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n}\n\n\n\n.overview-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 20px;\n}\n\n.overview-card[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #666;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #999;\n}\n\n.card-body[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.description-text[_ngcontent-%COMP%] {\n margin: 0;\n color: #333;\n line-height: 1.6;\n}\n\n.description-empty[_ngcontent-%COMP%] {\n margin: 0;\n color: #999;\n font-style: italic;\n}\n\n.description-input[_ngcontent-%COMP%] {\n width: 100%;\n resize: vertical;\n font-family: inherit;\n}\n\n.edit-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: #2196F3;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: #1976D2;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: white;\n color: #666;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid #ddd;\n padding: 8px 12px;\n border-radius: 6px;\n color: #666;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n border-color: #ccc;\n}\n\n.btn-danger[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: #f44336;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s;\n}\n\n.btn-danger[_ngcontent-%COMP%]:hover {\n background: #d32f2f;\n}\n\n\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-bottom: 1px solid #f5f5f5;\n}\n\n.detail-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #999;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n color: #999;\n font-size: 12px;\n}\n\n.owner-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #e8f5e9;\n color: #388E3C;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-select[_ngcontent-%COMP%] {\n padding: 6px 12px;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n background: white;\n cursor: pointer;\n}\n\n.category-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #2196F3;\n}\n\n\n\n.action-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 14px 16px;\n background: #f9fafb;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n margin-bottom: 8px;\n text-align: left;\n}\n\n.action-btn[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #f3f4f6;\n border-color: #d1d5db;\n}\n\n.action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: #2196F3;\n width: 24px;\n text-align: center;\n}\n\n.action-btn[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type {\n flex: 1;\n font-size: 14px;\n color: #333;\n}\n\n.action-count[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #e3f2fd;\n color: #1976D2;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.coming-soon[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #fff3e0;\n color: #f57c00;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n background: linear-gradient(135deg, #e3f2fd, #f3e5f5);\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: #7c4dff;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 12px;\n font-size: 20px;\n color: #333;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #666;\n max-width: 400px;\n}\n\n.items-table-container[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.items-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: #e3f2fd;\n border-bottom: 1px solid #bbdefb;\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #1976D2;\n font-weight: 500;\n}\n\n.items-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.items-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 12px 16px;\n font-size: 12px;\n font-weight: 600;\n color: #666;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: #fafafa;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.items-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid #f0f0f0;\n font-size: 14px;\n color: #333;\n}\n\n.items-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.items-table[_ngcontent-%COMP%] tr.selected[_ngcontent-%COMP%] {\n background: #e3f2fd;\n}\n\n.items-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover:not(.selected) {\n background: #fafafa;\n}\n\n.col-checkbox[_ngcontent-%COMP%] {\n width: 40px;\n}\n\n.col-name[_ngcontent-%COMP%] {\n width: 35%;\n}\n\n.col-id[_ngcontent-%COMP%] {\n width: 25%;\n}\n\n.col-added[_ngcontent-%COMP%] {\n width: 20%;\n}\n\n.col-actions[_ngcontent-%COMP%] {\n width: 60px;\n text-align: right;\n}\n\n.item-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.item-name.loading[_ngcontent-%COMP%] {\n color: #999;\n}\n\n.item-icon[_ngcontent-%COMP%] {\n color: #999;\n}\n\n.record-id[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: #f5f5f5;\n padding: 4px 8px;\n border-radius: 4px;\n color: #666;\n}\n\n.items-footer[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: #fafafa;\n border-top: 1px solid #f0f0f0;\n}\n\n.items-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #666;\n}\n\n\n\n.coming-soon-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 24px;\n background: linear-gradient(135deg, #e3f2fd 0%, #f3e5f5 100%);\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.coming-soon-banner[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: #7c4dff;\n}\n\n.banner-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px;\n color: #333;\n}\n\n.banner-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #666;\n}\n\n.shares-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n\n\n.activity-timeline[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n padding: 20px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n margin-bottom: 20px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n padding: 16px 0;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.timeline-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: #e3f2fd;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #2196F3;\n flex-shrink: 0;\n}\n\n.timeline-icon.create[_ngcontent-%COMP%] {\n background: #e8f5e9;\n color: #4CAF50;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.timeline-text[_ngcontent-%COMP%] {\n margin: 0 0 4px;\n color: #333;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #999;\n}\n\n.activity-info[_ngcontent-%COMP%] {\n background: #fff8e1;\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #f57c00;\n font-size: 14px;\n}\n\n\n\n.settings-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n\n\n@media (max-width: 1024px) {\n .list-form-explorer[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n grid-template-areas:\n \"header\"\n \"nav\"\n \"main\";\n }\n\n .nav-rail[_ngcontent-%COMP%] {\n flex-direction: row;\n padding: 8px 16px;\n overflow-x: auto;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n flex-direction: row;\n padding: 10px 16px;\n gap: 8px;\n }\n\n .nav-item[_ngcontent-%COMP%]::before {\n display: none;\n }\n\n .header-stats[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .list-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .overview-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .section-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n width: 100%;\n }\n}", ".k-pane[_ngcontent-%COMP%] {\n background-color: #F5F6FA;\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n} \n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: #F5F6FA;\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n} \n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n \n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: #F5F6FA;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: #667eea;\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: #6b7280;\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3b82f6;\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n background: white;\n color: #374151;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6b7280;\n margin-left: auto;\n font-weight: 500;\n}\n\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: #667eea;\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: #fef08a;\n color: #854d0e;\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: #10b981;\n color: white;\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: #9ca3af;\n}"], changeDetection: 0 }); }
1688
+ i0.ɵɵadvance();
1689
+ i0.ɵɵproperty("ngIf", ctx.showAddRecordsDialog);
1690
+ i0.ɵɵadvance();
1691
+ i0.ɵɵproperty("ngIf", ctx.showAddFromViewDialog);
1692
+ i0.ɵɵadvance();
1693
+ i0.ɵɵproperty("ngIf", ctx.showShareDialog && ctx.shareDialogConfig);
1694
+ } }, dependencies: [i1.NgForOf, i1.NgIf, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.DialogComponent, i3.DialogActionsComponent, i4.TextBoxComponent, i4.TextBoxPrefixTemplateDirective, i5.ButtonComponent, i6.MJFormField, i6.CollapsiblePanelComponent, i7.LoadingComponent, i8.ListShareDialogComponent, i1.DatePipe], styles: ["\n\n\n\n\n\n\n.list-form-explorer[_ngcontent-%COMP%] {\n display: grid;\n grid-template-areas:\n \"header header\"\n \"nav main\";\n grid-template-columns: 64px 1fr;\n grid-template-rows: auto 1fr;\n height: 100%;\n min-height: 100vh;\n background: #f5f7fa;\n}\n\n\n\n.list-header[_ngcontent-%COMP%] {\n grid-area: header;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: white;\n border-bottom: 1px solid #e0e0e0;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.header-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.name-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.list-name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: #1a1a2e;\n}\n\n.edit-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 6px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn[_ngcontent-%COMP%]:hover {\n background: #f0f0f0;\n color: #666;\n}\n\n.inline-edit-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 2px solid #2196F3;\n border-radius: 6px;\n font-size: inherit;\n background: white;\n outline: none;\n}\n\n.name-input[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 600;\n min-width: 300px;\n}\n\n.save-btn[_ngcontent-%COMP%], .cancel-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.save-btn[_ngcontent-%COMP%] {\n color: #4CAF50;\n}\n\n.save-btn[_ngcontent-%COMP%]:hover {\n background: #e8f5e9;\n}\n\n.cancel-btn[_ngcontent-%COMP%] {\n color: #f44336;\n}\n\n.cancel-btn[_ngcontent-%COMP%]:hover {\n background: #ffebee;\n}\n\n.entity-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: #e3f2fd;\n border-radius: 16px;\n font-size: 13px;\n color: #1976D2;\n font-weight: 500;\n}\n\n.entity-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 32px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 80px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 600;\n color: #333;\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #999;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.nav-rail[_ngcontent-%COMP%] {\n grid-area: nav;\n display: flex;\n flex-direction: column;\n padding: 16px 8px;\n background: #1a1a2e;\n gap: 4px;\n}\n\n.nav-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 12px 8px;\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s;\n position: relative;\n}\n\n.nav-item[_ngcontent-%COMP%]:hover:not(.disabled) {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n}\n\n.nav-item.active[_ngcontent-%COMP%] {\n background: rgba(33, 150, 243, 0.2);\n color: #64b5f6;\n}\n\n.nav-item.active[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 24px;\n background: #2196F3;\n border-radius: 0 3px 3px 0;\n}\n\n.nav-item.disabled[_ngcontent-%COMP%] {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n}\n\n.nav-label[_ngcontent-%COMP%] {\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.nav-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 6px;\n right: 6px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: #2196F3;\n border-radius: 9px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n\n\n.main-content[_ngcontent-%COMP%] {\n grid-area: main;\n padding: 24px;\n overflow-y: auto;\n}\n\n.section[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n}\n\n.section-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n}\n\n.section-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n\n\n.search-box[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: #999;\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n padding: 10px 12px 10px 36px;\n border: 1px solid #ddd;\n border-radius: 8px;\n font-size: 14px;\n width: 250px;\n transition: all 0.2s;\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #2196F3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n}\n\n\n\n.overview-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 20px;\n}\n\n.overview-card[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #666;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #999;\n}\n\n.card-body[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.description-text[_ngcontent-%COMP%] {\n margin: 0;\n color: #333;\n line-height: 1.6;\n}\n\n.description-empty[_ngcontent-%COMP%] {\n margin: 0;\n color: #999;\n font-style: italic;\n}\n\n.description-input[_ngcontent-%COMP%] {\n width: 100%;\n resize: vertical;\n font-family: inherit;\n}\n\n.edit-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: #2196F3;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: #1976D2;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: white;\n color: #666;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid #ddd;\n padding: 8px 12px;\n border-radius: 6px;\n color: #666;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n border-color: #ccc;\n}\n\n.btn-danger[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: #f44336;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s;\n}\n\n.btn-danger[_ngcontent-%COMP%]:hover {\n background: #d32f2f;\n}\n\n\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-bottom: 1px solid #f5f5f5;\n}\n\n.detail-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #999;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n color: #999;\n font-size: 12px;\n}\n\n.owner-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #e8f5e9;\n color: #388E3C;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-select[_ngcontent-%COMP%] {\n padding: 6px 12px;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n background: white;\n cursor: pointer;\n}\n\n.category-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #2196F3;\n}\n\n\n\n.action-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 14px 16px;\n background: #f9fafb;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n margin-bottom: 8px;\n text-align: left;\n}\n\n.action-btn[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #f3f4f6;\n border-color: #d1d5db;\n}\n\n.action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: #2196F3;\n width: 24px;\n text-align: center;\n}\n\n.action-btn[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type {\n flex: 1;\n font-size: 14px;\n color: #333;\n}\n\n.action-count[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #e3f2fd;\n color: #1976D2;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.coming-soon[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #fff3e0;\n color: #f57c00;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n background: linear-gradient(135deg, #e3f2fd, #f3e5f5);\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: #7c4dff;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 12px;\n font-size: 20px;\n color: #333;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #666;\n max-width: 400px;\n}\n\n.items-table-container[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.items-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: #e3f2fd;\n border-bottom: 1px solid #bbdefb;\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #1976D2;\n font-weight: 500;\n}\n\n.items-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.items-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 12px 16px;\n font-size: 12px;\n font-weight: 600;\n color: #666;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: #fafafa;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.items-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid #f0f0f0;\n font-size: 14px;\n color: #333;\n}\n\n.items-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.items-table[_ngcontent-%COMP%] tr.selected[_ngcontent-%COMP%] {\n background: #e3f2fd;\n}\n\n.items-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover:not(.selected) {\n background: #fafafa;\n}\n\n.col-checkbox[_ngcontent-%COMP%] {\n width: 40px;\n}\n\n.col-name[_ngcontent-%COMP%] {\n width: 35%;\n}\n\n.col-id[_ngcontent-%COMP%] {\n width: 25%;\n}\n\n.col-added[_ngcontent-%COMP%] {\n width: 20%;\n}\n\n.col-actions[_ngcontent-%COMP%] {\n width: 60px;\n text-align: right;\n}\n\n.item-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.item-name.loading[_ngcontent-%COMP%] {\n color: #999;\n}\n\n.item-icon[_ngcontent-%COMP%] {\n color: #999;\n}\n\n.record-id[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: #f5f5f5;\n padding: 4px 8px;\n border-radius: 4px;\n color: #666;\n}\n\n.items-footer[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: #fafafa;\n border-top: 1px solid #f0f0f0;\n}\n\n.items-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #666;\n}\n\n\n\n.coming-soon-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 24px;\n background: linear-gradient(135deg, #e3f2fd 0%, #f3e5f5 100%);\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.coming-soon-banner[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: #7c4dff;\n}\n\n.banner-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px;\n color: #333;\n}\n\n.banner-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #666;\n}\n\n.shares-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n\n\n.activity-timeline[_ngcontent-%COMP%] {\n background: white;\n border-radius: 12px;\n padding: 20px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n margin-bottom: 20px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n padding: 16px 0;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.timeline-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: #e3f2fd;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #2196F3;\n flex-shrink: 0;\n}\n\n.timeline-icon.create[_ngcontent-%COMP%] {\n background: #e8f5e9;\n color: #4CAF50;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.timeline-text[_ngcontent-%COMP%] {\n margin: 0 0 4px;\n color: #333;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #999;\n}\n\n.activity-info[_ngcontent-%COMP%] {\n background: #fff8e1;\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #f57c00;\n font-size: 14px;\n}\n\n\n\n.settings-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n\n\n.add-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.add-buttons[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n\n\n.sharing-summary[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px 24px;\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n flex: 1;\n max-width: 280px;\n}\n\n.summary-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: 12px;\n background: #e3f2fd;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #2196F3;\n font-size: 20px;\n}\n\n.summary-icon.pending[_ngcontent-%COMP%] {\n background: #fff3e0;\n color: #f57c00;\n}\n\n.summary-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.summary-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 600;\n color: #333;\n line-height: 1;\n}\n\n.summary-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #666;\n margin-top: 4px;\n}\n\n.readonly-notice[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: #f5f5f5;\n border-radius: 8px;\n color: #666;\n font-size: 14px;\n}\n\n.readonly-notice[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #999;\n}\n\n\n\n.dialog-content[_ngcontent-%COMP%] {\n padding: 16px 0;\n}\n\n.dialog-loading[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n gap: 16px;\n}\n\n.dialog-instruction[_ngcontent-%COMP%] {\n margin: 0 0 16px;\n color: #666;\n}\n\n\n\n.add-records-dialog[_ngcontent-%COMP%] .search-section[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .search-input[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .search-hint[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n color: #999;\n margin-top: 4px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .records-list[_ngcontent-%COMP%] {\n min-height: 280px;\n max-height: 320px;\n overflow-y: auto;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .list-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 40px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .empty-results[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: #666;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .empty-results[_ngcontent-%COMP%] .empty-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n font-size: 24px;\n margin-bottom: 12px;\n background: #f5f5f5;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .selection-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: #f5f5f5;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .selection-info[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 12px;\n color: #666;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .records-scroll[_ngcontent-%COMP%] {\n max-height: 260px;\n overflow-y: auto;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid #f0f0f0;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item[_ngcontent-%COMP%]:hover {\n background: #f9f9f9;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item.selected[_ngcontent-%COMP%] {\n background: #e3f2fd;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item.in-list[_ngcontent-%COMP%] {\n background: #f5f5f5;\n cursor: default;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-checkbox[_ngcontent-%COMP%] {\n width: 20px;\n display: flex;\n justify-content: center;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .in-list-icon[_ngcontent-%COMP%] {\n color: #4CAF50;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .in-list-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #e8f5e9;\n color: #388E3C;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n}\n\n\n\n.views-list[_ngcontent-%COMP%] {\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n max-height: 320px;\n overflow-y: auto;\n}\n\n.views-list[_ngcontent-%COMP%] .empty-results[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: #666;\n}\n\n.views-list[_ngcontent-%COMP%] .empty-results[_ngcontent-%COMP%] .empty-icon[_ngcontent-%COMP%] {\n font-size: 36px;\n color: #ccc;\n margin-bottom: 12px;\n}\n\n.view-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 16px;\n border-bottom: 1px solid #f0f0f0;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.view-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.view-item[_ngcontent-%COMP%]:hover {\n background: #f9f9f9;\n}\n\n.view-item.selected[_ngcontent-%COMP%] {\n background: #e3f2fd;\n}\n\n.view-item[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: #2196F3;\n}\n\n.view-item[_ngcontent-%COMP%] .view-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n}\n\n\n\n@media (max-width: 1024px) {\n .list-form-explorer[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n grid-template-areas:\n \"header\"\n \"nav\"\n \"main\";\n }\n\n .nav-rail[_ngcontent-%COMP%] {\n flex-direction: row;\n padding: 8px 16px;\n overflow-x: auto;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n flex-direction: row;\n padding: 10px 16px;\n gap: 8px;\n }\n\n .nav-item[_ngcontent-%COMP%]::before {\n display: none;\n }\n\n .header-stats[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .list-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .overview-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .section-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n width: 100%;\n }\n}", ".k-pane[_ngcontent-%COMP%] {\n background-color: #F5F6FA;\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n} \n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: #F5F6FA;\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n} \n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n \n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: #F5F6FA;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: #667eea;\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: #6b7280;\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3b82f6;\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n background: white;\n color: #374151;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6b7280;\n margin-left: auto;\n font-weight: 500;\n}\n\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: #667eea;\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: #fef08a;\n color: #854d0e;\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: #10b981;\n color: white;\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: #9ca3af;\n}"], changeDetection: 0 }); }
978
1695
  };
979
1696
  ListFormComponentExtended = __decorate([
980
1697
  RegisterClass(BaseFormComponent, 'Lists')
@@ -982,9 +1699,9 @@ ListFormComponentExtended = __decorate([
982
1699
  export { ListFormComponentExtended };
983
1700
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ListFormComponentExtended, [{
984
1701
  type: Component,
985
- args: [{ selector: 'mj-list-form-extended', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- 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 <ng-container *ngIf=\"!isEditingName\">\n <h1 class=\"list-name\">{{record?.Name || 'Untitled List'}}</h1>\n <button\n class=\"edit-btn\"\n (click)=\"startEditingName()\"\n title=\"Edit name\"\n *ngIf=\"isCurrentUserOwner()\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\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 <button\n *ngFor=\"let nav of navItems\"\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 <span class=\"nav-badge\" *ngIf=\"nav.badge && nav.badge > 0\">{{nav.badge}}</span>\n </button>\n </nav>\n\n <!-- Main Content -->\n <main class=\"main-content\">\n <!-- Overview Section -->\n <section class=\"section overview-section\" *ngIf=\"activeSection === 'overview'\">\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 <button\n class=\"edit-btn\"\n (click)=\"startEditingDescription()\"\n *ngIf=\"isCurrentUserOwner() && !isEditingDescription\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n </div>\n <div class=\"card-body\">\n <ng-container *ngIf=\"!isEditingDescription\">\n <p *ngIf=\"record?.Description\" class=\"description-text\">{{record.Description}}</p>\n <p *ngIf=\"!record?.Description\" class=\"description-empty\">No description provided</p>\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\n </div>\n </div>\n\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 <span class=\"detail-value\" *ngIf=\"!isCurrentUserOwner()\">\n <i class=\"fa-solid fa-folder detail-icon\"></i>\n {{categoryName}}\n </span>\n <select\n *ngIf=\"isCurrentUserOwner()\"\n class=\"category-select\"\n [ngModel]=\"record?.CategoryID\"\n (ngModelChange)=\"onCategoryChange($event)\">\n <option [ngValue]=\"null\">Uncategorized</option>\n <option *ngFor=\"let cat of categories\" [ngValue]=\"cat.ID\">{{cat.Name}}</option>\n </select>\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 <span class=\"owner-badge\" *ngIf=\"isCurrentUserOwner()\">You</span>\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\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 <button class=\"action-btn\" [disabled]=\"true\" title=\"Coming soon\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>Share List</span>\n <span class=\"coming-soon\">Soon</span>\n </button>\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 <!-- Items Section -->\n <section class=\"section items-section\" *ngIf=\"activeSection === 'items'\">\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 <button class=\"btn-icon\" (click)=\"refreshItems()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n\n <!-- Loading State -->\n <div class=\"loading-state\" *ngIf=\"isLoadingItems\">\n <mj-loading text=\"Loading items...\" size=\"medium\"></mj-loading>\n </div>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"!isLoadingItems && listItems.length === 0\">\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 <div class=\"items-table-container\" *ngIf=\"!isLoadingItems && listItems.length > 0\">\n <div class=\"items-toolbar\" *ngIf=\"selectedItems.size > 0\">\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 <tr\n *ngFor=\"let item of filteredItems\"\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 <i *ngIf=\"item.isLoading\" class=\"fa-solid fa-spinner fa-spin\"></i>\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 </tbody>\n </table>\n\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 </section>\n\n <!-- Sharing Section -->\n <section class=\"section sharing-section\" *ngIf=\"activeSection === 'sharing'\">\n <div class=\"coming-soon-banner\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <div class=\"banner-content\">\n <h3>Sharing Coming Soon</h3>\n <p>You'll soon be able to share lists with other users, manage permissions, and collaborate on list contents.</p>\n </div>\n </div>\n\n <!-- Show existing shares/invitations using standard grids -->\n <div class=\"shares-grid\" *ngIf=\"record?.IsSaved\">\n <mj-collapsible-panel\n sectionKey=\"shares\"\n sectionName=\"Current Shares\"\n icon=\"fa fa-users\"\n [form]=\"this\"\n [formContext]=\"formContext\"\n [badgeCount]=\"stats.shareCount\">\n <mj-user-view-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: List Shares','ListID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: List Shares')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\">\n </mj-user-view-grid>\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n sectionKey=\"invitations\"\n sectionName=\"Pending Invitations\"\n icon=\"fa fa-envelope\"\n [form]=\"this\"\n [formContext]=\"formContext\"\n [badgeCount]=\"stats.invitationCount\">\n <mj-user-view-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: List Invitations','ListID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: List Invitations')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\">\n </mj-user-view-grid>\n </mj-collapsible-panel>\n </div>\n </section>\n\n <!-- Activity Section -->\n <section class=\"section activity-section\" *ngIf=\"activeSection === 'activity'\">\n <div class=\"section-header\">\n <h2>Activity</h2>\n </div>\n\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\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 <!-- Settings Section -->\n <section class=\"section settings-section\" *ngIf=\"activeSection === 'settings'\">\n <div class=\"section-header\">\n <h2>Settings</h2>\n </div>\n\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\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 </main>\n</div>\n", styles: ["/* ============================================\n WORLD-CLASS LIST FORM STYLES\n ============================================ */\n\n/* Layout */\n.list-form-explorer {\n display: grid;\n grid-template-areas:\n \"header header\"\n \"nav main\";\n grid-template-columns: 64px 1fr;\n grid-template-rows: auto 1fr;\n height: 100%;\n min-height: 100vh;\n background: #f5f7fa;\n}\n\n/* Header */\n.list-header {\n grid-area: header;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: white;\n border-bottom: 1px solid #e0e0e0;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.header-content {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.header-icon {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.header-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.name-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.list-name {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: #1a1a2e;\n}\n\n.edit-btn {\n background: none;\n border: none;\n padding: 6px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn:hover {\n background: #f0f0f0;\n color: #666;\n}\n\n.inline-edit-input {\n padding: 8px 12px;\n border: 2px solid #2196F3;\n border-radius: 6px;\n font-size: inherit;\n background: white;\n outline: none;\n}\n\n.name-input {\n font-size: 24px;\n font-weight: 600;\n min-width: 300px;\n}\n\n.save-btn, .cancel-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.save-btn {\n color: #4CAF50;\n}\n\n.save-btn:hover {\n background: #e8f5e9;\n}\n\n.cancel-btn {\n color: #f44336;\n}\n\n.cancel-btn:hover {\n background: #ffebee;\n}\n\n.entity-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: #e3f2fd;\n border-radius: 16px;\n font-size: 13px;\n color: #1976D2;\n font-weight: 500;\n}\n\n.entity-badge i {\n font-size: 12px;\n}\n\n.header-stats {\n display: flex;\n gap: 32px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 80px;\n}\n\n.stat-value {\n font-size: 24px;\n font-weight: 600;\n color: #333;\n}\n\n.stat-label {\n font-size: 12px;\n color: #999;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Navigation Rail */\n.nav-rail {\n grid-area: nav;\n display: flex;\n flex-direction: column;\n padding: 16px 8px;\n background: #1a1a2e;\n gap: 4px;\n}\n\n.nav-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 12px 8px;\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s;\n position: relative;\n}\n\n.nav-item:hover:not(.disabled) {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n}\n\n.nav-item.active {\n background: rgba(33, 150, 243, 0.2);\n color: #64b5f6;\n}\n\n.nav-item.active::before {\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 24px;\n background: #2196F3;\n border-radius: 0 3px 3px 0;\n}\n\n.nav-item.disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.nav-item i {\n font-size: 18px;\n}\n\n.nav-label {\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.nav-badge {\n position: absolute;\n top: 6px;\n right: 6px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: #2196F3;\n border-radius: 9px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Main Content */\n.main-content {\n grid-area: main;\n padding: 24px;\n overflow-y: auto;\n}\n\n.section {\n animation: fadeIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n}\n\n.section-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n}\n\n.section-actions {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n/* Search Box */\n.search-box {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box i {\n position: absolute;\n left: 12px;\n color: #999;\n}\n\n.search-box input {\n padding: 10px 12px 10px 36px;\n border: 1px solid #ddd;\n border-radius: 8px;\n font-size: 14px;\n width: 250px;\n transition: all 0.2s;\n}\n\n.search-box input:focus {\n outline: none;\n border-color: #2196F3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n}\n\n/* Overview Section */\n.overview-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 20px;\n}\n\n.overview-card {\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.card-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.card-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #666;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.card-header h3 i {\n color: #999;\n}\n\n.card-body {\n padding: 20px;\n}\n\n.description-text {\n margin: 0;\n color: #333;\n line-height: 1.6;\n}\n\n.description-empty {\n margin: 0;\n color: #999;\n font-style: italic;\n}\n\n.description-input {\n width: 100%;\n resize: vertical;\n font-family: inherit;\n}\n\n.edit-actions {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.btn-primary {\n padding: 8px 16px;\n background: #2196F3;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.btn-primary:hover {\n background: #1976D2;\n}\n\n.btn-secondary {\n padding: 8px 16px;\n background: white;\n color: #666;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-secondary:hover {\n background: #f5f5f5;\n}\n\n.btn-icon {\n background: none;\n border: 1px solid #ddd;\n padding: 8px 12px;\n border-radius: 6px;\n color: #666;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon:hover {\n background: #f5f5f5;\n border-color: #ccc;\n}\n\n.btn-danger {\n padding: 8px 16px;\n background: #f44336;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s;\n}\n\n.btn-danger:hover {\n background: #d32f2f;\n}\n\n/* Details Card */\n.detail-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-bottom: 1px solid #f5f5f5;\n}\n\n.detail-row:last-child {\n border-bottom: none;\n}\n\n.detail-label {\n font-size: 13px;\n color: #999;\n}\n\n.detail-value {\n font-size: 14px;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon {\n color: #999;\n font-size: 12px;\n}\n\n.owner-badge {\n padding: 2px 8px;\n background: #e8f5e9;\n color: #388E3C;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-select {\n padding: 6px 12px;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n background: white;\n cursor: pointer;\n}\n\n.category-select:focus {\n outline: none;\n border-color: #2196F3;\n}\n\n/* Actions Card */\n.action-btn {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 14px 16px;\n background: #f9fafb;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n margin-bottom: 8px;\n text-align: left;\n}\n\n.action-btn:last-child {\n margin-bottom: 0;\n}\n\n.action-btn:hover:not(:disabled) {\n background: #f3f4f6;\n border-color: #d1d5db;\n}\n\n.action-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.action-btn i {\n font-size: 18px;\n color: #2196F3;\n width: 24px;\n text-align: center;\n}\n\n.action-btn span:first-of-type {\n flex: 1;\n font-size: 14px;\n color: #333;\n}\n\n.action-count {\n padding: 2px 8px;\n background: #e3f2fd;\n color: #1976D2;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.coming-soon {\n padding: 2px 8px;\n background: #fff3e0;\n color: #f57c00;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n/* Items Section */\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n background: linear-gradient(135deg, #e3f2fd, #f3e5f5);\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 36px;\n color: #7c4dff;\n}\n\n.empty-state h3 {\n margin: 0 0 12px;\n font-size: 20px;\n color: #333;\n}\n\n.empty-state p {\n margin: 0;\n color: #666;\n max-width: 400px;\n}\n\n.items-table-container {\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.items-toolbar {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: #e3f2fd;\n border-bottom: 1px solid #bbdefb;\n}\n\n.selection-count {\n font-size: 14px;\n color: #1976D2;\n font-weight: 500;\n}\n\n.items-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.items-table th {\n text-align: left;\n padding: 12px 16px;\n font-size: 12px;\n font-weight: 600;\n color: #666;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: #fafafa;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.items-table td {\n padding: 14px 16px;\n border-bottom: 1px solid #f0f0f0;\n font-size: 14px;\n color: #333;\n}\n\n.items-table tr:last-child td {\n border-bottom: none;\n}\n\n.items-table tr.selected {\n background: #e3f2fd;\n}\n\n.items-table tr:hover:not(.selected) {\n background: #fafafa;\n}\n\n.col-checkbox {\n width: 40px;\n}\n\n.col-name {\n width: 35%;\n}\n\n.col-id {\n width: 25%;\n}\n\n.col-added {\n width: 20%;\n}\n\n.col-actions {\n width: 60px;\n text-align: right;\n}\n\n.item-name {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.item-name.loading {\n color: #999;\n}\n\n.item-icon {\n color: #999;\n}\n\n.record-id {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: #f5f5f5;\n padding: 4px 8px;\n border-radius: 4px;\n color: #666;\n}\n\n.items-footer {\n padding: 12px 16px;\n background: #fafafa;\n border-top: 1px solid #f0f0f0;\n}\n\n.items-count {\n font-size: 13px;\n color: #666;\n}\n\n/* Sharing Section */\n.coming-soon-banner {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 24px;\n background: linear-gradient(135deg, #e3f2fd 0%, #f3e5f5 100%);\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.coming-soon-banner > i {\n font-size: 48px;\n color: #7c4dff;\n}\n\n.banner-content h3 {\n margin: 0 0 8px;\n color: #333;\n}\n\n.banner-content p {\n margin: 0;\n color: #666;\n}\n\n.shares-grid {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n/* Activity Section */\n.activity-timeline {\n background: white;\n border-radius: 12px;\n padding: 20px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n margin-bottom: 20px;\n}\n\n.timeline-item {\n display: flex;\n gap: 16px;\n padding: 16px 0;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.timeline-item:last-child {\n border-bottom: none;\n}\n\n.timeline-icon {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: #e3f2fd;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #2196F3;\n flex-shrink: 0;\n}\n\n.timeline-icon.create {\n background: #e8f5e9;\n color: #4CAF50;\n}\n\n.timeline-content {\n flex: 1;\n}\n\n.timeline-text {\n margin: 0 0 4px;\n color: #333;\n}\n\n.timeline-date {\n font-size: 13px;\n color: #999;\n}\n\n.activity-info {\n background: #fff8e1;\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info p {\n margin: 0;\n color: #f57c00;\n font-size: 14px;\n}\n\n/* Settings Section */\n.settings-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .list-form-explorer {\n grid-template-columns: 1fr;\n grid-template-areas:\n \"header\"\n \"nav\"\n \"main\";\n }\n\n .nav-rail {\n flex-direction: row;\n padding: 8px 16px;\n overflow-x: auto;\n }\n\n .nav-item {\n flex-direction: row;\n padding: 10px 16px;\n gap: 8px;\n }\n\n .nav-item::before {\n display: none;\n }\n\n .header-stats {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .list-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .overview-grid {\n grid-template-columns: 1fr;\n }\n\n .search-box input {\n width: 100%;\n }\n\n .section-actions {\n flex-direction: column;\n align-items: stretch;\n width: 100%;\n }\n}\n", ".k-pane {\n background-color: #F5F6FA;\n}\n\n.content-margin {\n margin: 10px;\n} \n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: #F5F6FA;\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n\n/* .record-form .record-form-row:nth-child(odd) {\n background-color: #f2f2f2; \n} */\n\n/* \n.record-form .record-form-row:nth-child(even) {\n background-color: #ffffff; \n} */\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n} \n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n \n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: #F5F6FA;\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: #667eea;\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header .collapse-icon {\n color: #6b7280;\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity .collapsible-header {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity .collapsible-title i {\n color: #3b82f6;\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n background: white;\n color: #374151;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls .section-search::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: #6b7280;\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: #667eea;\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: #fef08a;\n color: #854d0e;\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: #10b981;\n color: white;\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: #9ca3af;\n}\n"] }]
1702
+ args: [{ selector: 'mj-list-form-extended', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- 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 <ng-container *ngIf=\"!isEditingName\">\n <h1 class=\"list-name\">{{record.Name || 'Untitled List'}}</h1>\n <button\n class=\"edit-btn\"\n (click)=\"startEditingName()\"\n title=\"Edit name\"\n *ngIf=\"isCurrentUserOwner()\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\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 <button\n *ngFor=\"let nav of navItems\"\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 <span class=\"nav-badge\" *ngIf=\"nav.badge && nav.badge > 0\">{{nav.badge}}</span>\n </button>\n </nav>\n\n <!-- Main Content -->\n <main class=\"main-content\">\n <!-- Overview Section -->\n <section class=\"section overview-section\" *ngIf=\"activeSection === 'overview'\">\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 <button\n class=\"edit-btn\"\n (click)=\"startEditingDescription()\"\n *ngIf=\"isCurrentUserOwner() && !isEditingDescription\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n </div>\n <div class=\"card-body\">\n <ng-container *ngIf=\"!isEditingDescription\">\n <p *ngIf=\"record.Description\" class=\"description-text\">{{record.Description}}</p>\n <p *ngIf=\"!record.Description\" class=\"description-empty\">No description provided</p>\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\n </div>\n </div>\n\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 <span class=\"detail-value\" *ngIf=\"!isCurrentUserOwner()\">\n <i class=\"fa-solid fa-folder detail-icon\"></i>\n {{categoryName}}\n </span>\n <select\n *ngIf=\"isCurrentUserOwner()\"\n class=\"category-select\"\n [ngModel]=\"record.CategoryID\"\n (ngModelChange)=\"onCategoryChange($event)\">\n <option [ngValue]=\"null\">Uncategorized</option>\n <option *ngFor=\"let cat of categories\" [ngValue]=\"cat.ID\">{{cat.Name}}</option>\n </select>\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 <span class=\"owner-badge\" *ngIf=\"isCurrentUserOwner()\">You</span>\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\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 <button class=\"action-btn\" (click)=\"openShareDialog()\" *ngIf=\"isCurrentUserOwner()\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>Share List</span>\n <span class=\"action-count\" *ngIf=\"stats.shareCount > 0\">{{stats.shareCount}}</span>\n </button>\n <button class=\"action-btn\" (click)=\"setActiveSection('sharing')\" *ngIf=\"!isCurrentUserOwner()\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>View Sharing</span>\n </button>\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 <!-- Items Section -->\n <section class=\"section items-section\" *ngIf=\"activeSection === 'items'\">\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 <div class=\"add-buttons\" *ngIf=\"isCurrentUserOwner()\">\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 <button class=\"btn-icon\" (click)=\"refreshItems()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n\n <!-- Loading State -->\n <div class=\"loading-state\" *ngIf=\"isLoadingItems\">\n <mj-loading text=\"Loading items...\" size=\"medium\"></mj-loading>\n </div>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"!isLoadingItems && listItems.length === 0\">\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 <div class=\"items-table-container\" *ngIf=\"!isLoadingItems && listItems.length > 0\">\n <div class=\"items-toolbar\" *ngIf=\"selectedItems.size > 0\">\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 <tr\n *ngFor=\"let item of filteredItems\"\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 <i *ngIf=\"item.isLoading\" class=\"fa-solid fa-spinner fa-spin\"></i>\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 </tbody>\n </table>\n\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 </section>\n\n <!-- Sharing Section -->\n <section class=\"section sharing-section\" *ngIf=\"activeSection === 'sharing'\">\n <div class=\"section-header\">\n <h2>Sharing</h2>\n <div class=\"section-actions\" *ngIf=\"isCurrentUserOwner()\">\n <button class=\"btn-primary\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-user-plus\"></i> Manage Sharing\n </button>\n </div>\n </div>\n\n <!-- Sharing summary -->\n <div class=\"sharing-summary\" *ngIf=\"stats.shareCount > 0 || stats.invitationCount > 0\">\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 <div class=\"summary-card\" *ngIf=\"stats.invitationCount > 0\">\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 </div>\n\n <!-- Empty state for no shares -->\n <div class=\"empty-state\" *ngIf=\"stats.shareCount === 0 && stats.invitationCount === 0\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n </div>\n <h3>Not Shared Yet</h3>\n <p *ngIf=\"isCurrentUserOwner()\">This list is private. Click \"Manage Sharing\" to share it with other users or roles.</p>\n <p *ngIf=\"!isCurrentUserOwner()\">This list hasn't been shared with anyone else.</p>\n <button class=\"btn-primary\" (click)=\"openShareDialog()\" *ngIf=\"isCurrentUserOwner()\">\n <i class=\"fa-solid fa-user-plus\"></i> Share This List\n </button>\n </div>\n\n <!-- Read-only notice for non-owners -->\n <div class=\"readonly-notice\" *ngIf=\"!isCurrentUserOwner() && (stats.shareCount > 0 || stats.invitationCount > 0)\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>Only the list owner can manage sharing settings.</span>\n </div>\n </section>\n\n <!-- Activity Section -->\n <section class=\"section activity-section\" *ngIf=\"activeSection === 'activity'\">\n <div class=\"section-header\">\n <h2>Activity</h2>\n </div>\n\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\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 <!-- Settings Section -->\n <section class=\"section settings-section\" *ngIf=\"activeSection === 'settings'\">\n <div class=\"section-header\">\n <h2>Settings</h2>\n </div>\n\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\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 </main>\n</div>\n\n<!-- Add Records Dialog -->\n<kendo-dialog\n *ngIf=\"showAddRecordsDialog\"\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 <ng-container *ngIf=\"addDialogSaving\">\n <div class=\"dialog-loading\">\n <mj-loading [text]=\"'Adding ' + addTotal + ' records to list...'\" size=\"small\"></mj-loading>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!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\n <!-- Records List -->\n <div class=\"records-list\">\n <ng-container *ngIf=\"addDialogLoading\">\n <div class=\"list-loading\">\n <mj-loading [showText]=\"false\" size=\"small\"></mj-loading>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!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 </ng-container>\n <ng-container *ngIf=\"!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 </ng-container>\n <ng-container *ngIf=\"!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\n <!-- Records -->\n <div class=\"records-scroll\">\n <div class=\"record-item\"\n *ngFor=\"let record of addableRecords\"\n [class.in-list]=\"record.isInList\"\n [class.selected]=\"record.isSelected\"\n (click)=\"toggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n <span class=\"fa-solid fa-check in-list-icon\" *ngIf=\"record.isInList\" title=\"Already in list\"></span>\n <input type=\"checkbox\"\n *ngIf=\"!record.isInList\"\n [checked]=\"record.isSelected\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRecordSelection(record)\">\n </div>\n <div class=\"record-name\">{{ record.Name }}</div>\n <span class=\"in-list-badge\" *ngIf=\"record.isInList\">In List</span>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\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<!-- Add From View Dialog -->\n<kendo-dialog\n *ngIf=\"showAddFromViewDialog\"\n title=\"Add Records from Views\"\n (close)=\"closeAddFromViewDialog()\"\n [minWidth]=\"400\"\n [width]=\"600\"\n [height]=\"500\">\n <div class=\"dialog-content\">\n <ng-container *ngIf=\"showAddFromViewLoader && fetchingRecordsToSave\">\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading records from views...\" size=\"small\"></mj-loading>\n </div>\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\n <ng-container *ngIf=\"showAddFromViewLoader && !fetchingRecordsToSave && addFromViewTotal === 0\">\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading views...\" size=\"small\"></mj-loading>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!showAddFromViewLoader\">\n <p class=\"dialog-instruction\">Select views to add their records to this list:</p>\n\n <div class=\"views-list\">\n <ng-container *ngIf=\"!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 </ng-container>\n <ng-container *ngIf=\"userViews && userViews.length > 0\">\n <div class=\"view-item\"\n *ngFor=\"let view of userViews\"\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 </ng-container>\n </div>\n </ng-container>\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<!-- Share Dialog -->\n<mj-list-share-dialog\n *ngIf=\"showShareDialog && shareDialogConfig\"\n [config]=\"shareDialogConfig\"\n [visible]=\"showShareDialog\"\n (complete)=\"onShareDialogComplete($event)\"\n (cancel)=\"onShareDialogCancel()\">\n</mj-list-share-dialog>\n", styles: ["/* ============================================\n WORLD-CLASS LIST FORM STYLES\n ============================================ */\n\n/* Layout */\n.list-form-explorer {\n display: grid;\n grid-template-areas:\n \"header header\"\n \"nav main\";\n grid-template-columns: 64px 1fr;\n grid-template-rows: auto 1fr;\n height: 100%;\n min-height: 100vh;\n background: #f5f7fa;\n}\n\n/* Header */\n.list-header {\n grid-area: header;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: white;\n border-bottom: 1px solid #e0e0e0;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.header-content {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.header-icon {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.header-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.name-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.list-name {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: #1a1a2e;\n}\n\n.edit-btn {\n background: none;\n border: none;\n padding: 6px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn:hover {\n background: #f0f0f0;\n color: #666;\n}\n\n.inline-edit-input {\n padding: 8px 12px;\n border: 2px solid #2196F3;\n border-radius: 6px;\n font-size: inherit;\n background: white;\n outline: none;\n}\n\n.name-input {\n font-size: 24px;\n font-weight: 600;\n min-width: 300px;\n}\n\n.save-btn, .cancel-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.save-btn {\n color: #4CAF50;\n}\n\n.save-btn:hover {\n background: #e8f5e9;\n}\n\n.cancel-btn {\n color: #f44336;\n}\n\n.cancel-btn:hover {\n background: #ffebee;\n}\n\n.entity-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: #e3f2fd;\n border-radius: 16px;\n font-size: 13px;\n color: #1976D2;\n font-weight: 500;\n}\n\n.entity-badge i {\n font-size: 12px;\n}\n\n.header-stats {\n display: flex;\n gap: 32px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 80px;\n}\n\n.stat-value {\n font-size: 24px;\n font-weight: 600;\n color: #333;\n}\n\n.stat-label {\n font-size: 12px;\n color: #999;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Navigation Rail */\n.nav-rail {\n grid-area: nav;\n display: flex;\n flex-direction: column;\n padding: 16px 8px;\n background: #1a1a2e;\n gap: 4px;\n}\n\n.nav-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 12px 8px;\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s;\n position: relative;\n}\n\n.nav-item:hover:not(.disabled) {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n}\n\n.nav-item.active {\n background: rgba(33, 150, 243, 0.2);\n color: #64b5f6;\n}\n\n.nav-item.active::before {\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 24px;\n background: #2196F3;\n border-radius: 0 3px 3px 0;\n}\n\n.nav-item.disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.nav-item i {\n font-size: 18px;\n}\n\n.nav-label {\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.nav-badge {\n position: absolute;\n top: 6px;\n right: 6px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: #2196F3;\n border-radius: 9px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Main Content */\n.main-content {\n grid-area: main;\n padding: 24px;\n overflow-y: auto;\n}\n\n.section {\n animation: fadeIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n}\n\n.section-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n}\n\n.section-actions {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n/* Search Box */\n.search-box {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box i {\n position: absolute;\n left: 12px;\n color: #999;\n}\n\n.search-box input {\n padding: 10px 12px 10px 36px;\n border: 1px solid #ddd;\n border-radius: 8px;\n font-size: 14px;\n width: 250px;\n transition: all 0.2s;\n}\n\n.search-box input:focus {\n outline: none;\n border-color: #2196F3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n}\n\n/* Overview Section */\n.overview-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 20px;\n}\n\n.overview-card {\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.card-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.card-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #666;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.card-header h3 i {\n color: #999;\n}\n\n.card-body {\n padding: 20px;\n}\n\n.description-text {\n margin: 0;\n color: #333;\n line-height: 1.6;\n}\n\n.description-empty {\n margin: 0;\n color: #999;\n font-style: italic;\n}\n\n.description-input {\n width: 100%;\n resize: vertical;\n font-family: inherit;\n}\n\n.edit-actions {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.btn-primary {\n padding: 8px 16px;\n background: #2196F3;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.btn-primary:hover {\n background: #1976D2;\n}\n\n.btn-secondary {\n padding: 8px 16px;\n background: white;\n color: #666;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-secondary:hover {\n background: #f5f5f5;\n}\n\n.btn-icon {\n background: none;\n border: 1px solid #ddd;\n padding: 8px 12px;\n border-radius: 6px;\n color: #666;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon:hover {\n background: #f5f5f5;\n border-color: #ccc;\n}\n\n.btn-danger {\n padding: 8px 16px;\n background: #f44336;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s;\n}\n\n.btn-danger:hover {\n background: #d32f2f;\n}\n\n/* Details Card */\n.detail-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-bottom: 1px solid #f5f5f5;\n}\n\n.detail-row:last-child {\n border-bottom: none;\n}\n\n.detail-label {\n font-size: 13px;\n color: #999;\n}\n\n.detail-value {\n font-size: 14px;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon {\n color: #999;\n font-size: 12px;\n}\n\n.owner-badge {\n padding: 2px 8px;\n background: #e8f5e9;\n color: #388E3C;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-select {\n padding: 6px 12px;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n background: white;\n cursor: pointer;\n}\n\n.category-select:focus {\n outline: none;\n border-color: #2196F3;\n}\n\n/* Actions Card */\n.action-btn {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 14px 16px;\n background: #f9fafb;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n margin-bottom: 8px;\n text-align: left;\n}\n\n.action-btn:last-child {\n margin-bottom: 0;\n}\n\n.action-btn:hover:not(:disabled) {\n background: #f3f4f6;\n border-color: #d1d5db;\n}\n\n.action-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.action-btn i {\n font-size: 18px;\n color: #2196F3;\n width: 24px;\n text-align: center;\n}\n\n.action-btn span:first-of-type {\n flex: 1;\n font-size: 14px;\n color: #333;\n}\n\n.action-count {\n padding: 2px 8px;\n background: #e3f2fd;\n color: #1976D2;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.coming-soon {\n padding: 2px 8px;\n background: #fff3e0;\n color: #f57c00;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n/* Items Section */\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n background: linear-gradient(135deg, #e3f2fd, #f3e5f5);\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 36px;\n color: #7c4dff;\n}\n\n.empty-state h3 {\n margin: 0 0 12px;\n font-size: 20px;\n color: #333;\n}\n\n.empty-state p {\n margin: 0;\n color: #666;\n max-width: 400px;\n}\n\n.items-table-container {\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.items-toolbar {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: #e3f2fd;\n border-bottom: 1px solid #bbdefb;\n}\n\n.selection-count {\n font-size: 14px;\n color: #1976D2;\n font-weight: 500;\n}\n\n.items-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.items-table th {\n text-align: left;\n padding: 12px 16px;\n font-size: 12px;\n font-weight: 600;\n color: #666;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: #fafafa;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.items-table td {\n padding: 14px 16px;\n border-bottom: 1px solid #f0f0f0;\n font-size: 14px;\n color: #333;\n}\n\n.items-table tr:last-child td {\n border-bottom: none;\n}\n\n.items-table tr.selected {\n background: #e3f2fd;\n}\n\n.items-table tr:hover:not(.selected) {\n background: #fafafa;\n}\n\n.col-checkbox {\n width: 40px;\n}\n\n.col-name {\n width: 35%;\n}\n\n.col-id {\n width: 25%;\n}\n\n.col-added {\n width: 20%;\n}\n\n.col-actions {\n width: 60px;\n text-align: right;\n}\n\n.item-name {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.item-name.loading {\n color: #999;\n}\n\n.item-icon {\n color: #999;\n}\n\n.record-id {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: #f5f5f5;\n padding: 4px 8px;\n border-radius: 4px;\n color: #666;\n}\n\n.items-footer {\n padding: 12px 16px;\n background: #fafafa;\n border-top: 1px solid #f0f0f0;\n}\n\n.items-count {\n font-size: 13px;\n color: #666;\n}\n\n/* Sharing Section */\n.coming-soon-banner {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 24px;\n background: linear-gradient(135deg, #e3f2fd 0%, #f3e5f5 100%);\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.coming-soon-banner > i {\n font-size: 48px;\n color: #7c4dff;\n}\n\n.banner-content h3 {\n margin: 0 0 8px;\n color: #333;\n}\n\n.banner-content p {\n margin: 0;\n color: #666;\n}\n\n.shares-grid {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n/* Activity Section */\n.activity-timeline {\n background: white;\n border-radius: 12px;\n padding: 20px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n margin-bottom: 20px;\n}\n\n.timeline-item {\n display: flex;\n gap: 16px;\n padding: 16px 0;\n border-bottom: 1px solid #f0f0f0;\n}\n\n.timeline-item:last-child {\n border-bottom: none;\n}\n\n.timeline-icon {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: #e3f2fd;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #2196F3;\n flex-shrink: 0;\n}\n\n.timeline-icon.create {\n background: #e8f5e9;\n color: #4CAF50;\n}\n\n.timeline-content {\n flex: 1;\n}\n\n.timeline-text {\n margin: 0 0 4px;\n color: #333;\n}\n\n.timeline-date {\n font-size: 13px;\n color: #999;\n}\n\n.activity-info {\n background: #fff8e1;\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info p {\n margin: 0;\n color: #f57c00;\n font-size: 14px;\n}\n\n/* Settings Section */\n.settings-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n/* Add Buttons in Items Section */\n.add-buttons {\n display: flex;\n gap: 8px;\n}\n\n.add-buttons .btn-secondary {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Sharing Summary */\n.sharing-summary {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px 24px;\n background: white;\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n flex: 1;\n max-width: 280px;\n}\n\n.summary-icon {\n width: 48px;\n height: 48px;\n border-radius: 12px;\n background: #e3f2fd;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #2196F3;\n font-size: 20px;\n}\n\n.summary-icon.pending {\n background: #fff3e0;\n color: #f57c00;\n}\n\n.summary-content {\n display: flex;\n flex-direction: column;\n}\n\n.summary-value {\n font-size: 28px;\n font-weight: 600;\n color: #333;\n line-height: 1;\n}\n\n.summary-label {\n font-size: 13px;\n color: #666;\n margin-top: 4px;\n}\n\n.readonly-notice {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: #f5f5f5;\n border-radius: 8px;\n color: #666;\n font-size: 14px;\n}\n\n.readonly-notice i {\n color: #999;\n}\n\n/* Dialog Styles */\n.dialog-content {\n padding: 16px 0;\n}\n\n.dialog-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n gap: 16px;\n}\n\n.dialog-instruction {\n margin: 0 0 16px;\n color: #666;\n}\n\n/* Add Records Dialog */\n.add-records-dialog .search-section {\n margin-bottom: 16px;\n}\n\n.add-records-dialog .search-input {\n width: 100%;\n}\n\n.add-records-dialog .search-hint {\n display: block;\n font-size: 12px;\n color: #999;\n margin-top: 4px;\n}\n\n.add-records-dialog .records-list {\n min-height: 280px;\n max-height: 320px;\n overflow-y: auto;\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n}\n\n.add-records-dialog .list-loading {\n display: flex;\n justify-content: center;\n padding: 40px;\n}\n\n.add-records-dialog .empty-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: #666;\n}\n\n.add-records-dialog .empty-results .empty-icon {\n width: 48px;\n height: 48px;\n font-size: 24px;\n margin-bottom: 12px;\n background: #f5f5f5;\n}\n\n.add-records-dialog .selection-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: #f5f5f5;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.add-records-dialog .selection-info {\n margin-left: auto;\n font-size: 12px;\n color: #666;\n}\n\n.add-records-dialog .records-scroll {\n max-height: 260px;\n overflow-y: auto;\n}\n\n.add-records-dialog .record-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid #f0f0f0;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.add-records-dialog .record-item:hover {\n background: #f9f9f9;\n}\n\n.add-records-dialog .record-item.selected {\n background: #e3f2fd;\n}\n\n.add-records-dialog .record-item.in-list {\n background: #f5f5f5;\n cursor: default;\n}\n\n.add-records-dialog .record-checkbox {\n width: 20px;\n display: flex;\n justify-content: center;\n}\n\n.add-records-dialog .in-list-icon {\n color: #4CAF50;\n}\n\n.add-records-dialog .record-name {\n flex: 1;\n font-size: 14px;\n}\n\n.add-records-dialog .in-list-badge {\n padding: 2px 8px;\n background: #e8f5e9;\n color: #388E3C;\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n}\n\n/* Add From View Dialog */\n.views-list {\n border: 1px solid #e0e0e0;\n border-radius: 8px;\n max-height: 320px;\n overflow-y: auto;\n}\n\n.views-list .empty-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: #666;\n}\n\n.views-list .empty-results .empty-icon {\n font-size: 36px;\n color: #ccc;\n margin-bottom: 12px;\n}\n\n.view-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 16px;\n border-bottom: 1px solid #f0f0f0;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.view-item:last-child {\n border-bottom: none;\n}\n\n.view-item:hover {\n background: #f9f9f9;\n}\n\n.view-item.selected {\n background: #e3f2fd;\n}\n\n.view-item .view-icon {\n color: #2196F3;\n}\n\n.view-item .view-name {\n flex: 1;\n font-size: 14px;\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .list-form-explorer {\n grid-template-columns: 1fr;\n grid-template-areas:\n \"header\"\n \"nav\"\n \"main\";\n }\n\n .nav-rail {\n flex-direction: row;\n padding: 8px 16px;\n overflow-x: auto;\n }\n\n .nav-item {\n flex-direction: row;\n padding: 10px 16px;\n gap: 8px;\n }\n\n .nav-item::before {\n display: none;\n }\n\n .header-stats {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .list-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .overview-grid {\n grid-template-columns: 1fr;\n }\n\n .search-box input {\n width: 100%;\n }\n\n .section-actions {\n flex-direction: column;\n align-items: stretch;\n width: 100%;\n }\n}\n", ".k-pane {\n background-color: #F5F6FA;\n}\n\n.content-margin {\n margin: 10px;\n} \n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: #F5F6FA;\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n\n/* .record-form .record-form-row:nth-child(odd) {\n background-color: #f2f2f2; \n} */\n\n/* \n.record-form .record-form-row:nth-child(even) {\n background-color: #ffffff; \n} */\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n} \n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n \n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: #F5F6FA;\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: #667eea;\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header .collapse-icon {\n color: #6b7280;\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity .collapsible-header {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity .collapsible-title i {\n color: #3b82f6;\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n background: white;\n color: #374151;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls .section-search::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: #6b7280;\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: #667eea;\n color: white;\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: #fef08a;\n color: #854d0e;\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: #10b981;\n color: white;\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: #9ca3af;\n}\n"] }]
986
1703
  }], null, null); })();
987
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ListFormComponentExtended, { className: "ListFormComponentExtended", filePath: "src/lib/custom/Lists/list-form.component.ts", lineNumber: 42 }); })();
1704
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ListFormComponentExtended, { className: "ListFormComponentExtended", filePath: "src/lib/custom/Lists/list-form.component.ts", lineNumber: 53 }); })();
988
1705
  export function LoadListFormComponentExtended() {
989
1706
  // Prevents tree-shaking
990
1707
  }