@memberjunction/ng-dashboards 5.37.0 → 5.39.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 (328) hide show
  1. package/README.md +46 -7
  2. package/dist/AI/components/agents/agent-configuration.component.js +199 -198
  3. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  4. package/dist/AI/components/analytics/ai-analytics-resource.component.d.ts.map +1 -1
  5. package/dist/AI/components/analytics/ai-analytics-resource.component.js +20 -17
  6. package/dist/AI/components/analytics/ai-analytics-resource.component.js.map +1 -1
  7. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts +15 -0
  8. package/dist/AI/components/analytics/cost-budget/cost-budget.component.d.ts.map +1 -1
  9. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js +166 -58
  10. package/dist/AI/components/analytics/cost-budget/cost-budget.component.js.map +1 -1
  11. package/dist/AI/components/analytics/executive-summary/executive-summary.component.d.ts.map +1 -1
  12. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js +2 -1
  13. package/dist/AI/components/analytics/executive-summary/executive-summary.component.js.map +1 -1
  14. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts +1 -0
  15. package/dist/AI/components/analytics/model-performance/model-performance.component.d.ts.map +1 -1
  16. package/dist/AI/components/analytics/model-performance/model-performance.component.js +55 -36
  17. package/dist/AI/components/analytics/model-performance/model-performance.component.js.map +1 -1
  18. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts +9 -1
  19. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.d.ts.map +1 -1
  20. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js +158 -117
  21. package/dist/AI/components/analytics/prompt-runs/prompt-run-analysis.component.js.map +1 -1
  22. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts +1 -0
  23. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.d.ts.map +1 -1
  24. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js +22 -8
  25. package/dist/AI/components/analytics/usage-patterns/usage-patterns.component.js.map +1 -1
  26. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts +89 -842
  27. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.d.ts.map +1 -1
  28. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js +1353 -7683
  29. package/dist/AI/components/autotagging/autotagging-pipeline-resource.component.js.map +1 -1
  30. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts +87 -0
  31. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.d.ts.map +1 -0
  32. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js +475 -0
  33. package/dist/AI/components/autotagging/dialogs/dry-run-preview.dialog.component.js.map +1 -0
  34. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts +29 -0
  35. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.d.ts.map +1 -0
  36. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js +208 -0
  37. package/dist/AI/components/autotagging/dialogs/item-detail.dialog.component.js.map +1 -0
  38. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts +21 -0
  39. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.d.ts.map +1 -0
  40. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js +70 -0
  41. package/dist/AI/components/autotagging/dialogs/no-content-type-warning.dialog.component.js.map +1 -0
  42. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts +235 -0
  43. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.d.ts.map +1 -0
  44. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js +1735 -0
  45. package/dist/AI/components/autotagging/dialogs/source-type-form.dialog.component.js.map +1 -0
  46. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts +61 -0
  47. package/dist/AI/components/autotagging/shared/classify.dryrun.d.ts.map +1 -0
  48. package/dist/AI/components/autotagging/shared/classify.dryrun.js +78 -0
  49. package/dist/AI/components/autotagging/shared/classify.dryrun.js.map +1 -0
  50. package/dist/AI/components/autotagging/shared/classify.format.d.ts +43 -0
  51. package/dist/AI/components/autotagging/shared/classify.format.d.ts.map +1 -0
  52. package/dist/AI/components/autotagging/shared/classify.format.js +209 -0
  53. package/dist/AI/components/autotagging/shared/classify.format.js.map +1 -0
  54. package/dist/AI/components/autotagging/shared/classify.types.d.ts +276 -0
  55. package/dist/AI/components/autotagging/shared/classify.types.d.ts.map +1 -0
  56. package/dist/AI/components/autotagging/shared/classify.types.js +6 -0
  57. package/dist/AI/components/autotagging/shared/classify.types.js.map +1 -0
  58. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts +103 -0
  59. package/dist/AI/components/autotagging/tabs/health-tab.component.d.ts.map +1 -0
  60. package/dist/AI/components/autotagging/tabs/health-tab.component.js +571 -0
  61. package/dist/AI/components/autotagging/tabs/health-tab.component.js.map +1 -0
  62. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts +40 -0
  63. package/dist/AI/components/autotagging/tabs/history-tab.component.d.ts.map +1 -0
  64. package/dist/AI/components/autotagging/tabs/history-tab.component.js +402 -0
  65. package/dist/AI/components/autotagging/tabs/history-tab.component.js.map +1 -0
  66. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts +107 -0
  67. package/dist/AI/components/autotagging/tabs/inbox-tab.component.d.ts.map +1 -0
  68. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js +719 -0
  69. package/dist/AI/components/autotagging/tabs/inbox-tab.component.js.map +1 -0
  70. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts +122 -0
  71. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.d.ts.map +1 -0
  72. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js +752 -0
  73. package/dist/AI/components/autotagging/tabs/pipeline-tab.component.js.map +1 -0
  74. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts +166 -0
  75. package/dist/AI/components/autotagging/tabs/sources-tab.component.d.ts.map +1 -0
  76. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1384 -0
  77. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -0
  78. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts +70 -0
  79. package/dist/AI/components/autotagging/tabs/tags-tab.component.d.ts.map +1 -0
  80. package/dist/AI/components/autotagging/tabs/tags-tab.component.js +448 -0
  81. package/dist/AI/components/autotagging/tabs/tags-tab.component.js.map +1 -0
  82. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts +397 -0
  83. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.d.ts.map +1 -0
  84. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js +3490 -0
  85. package/dist/AI/components/autotagging/tabs/taxonomy-tab.component.js.map +1 -0
  86. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts +47 -0
  87. package/dist/AI/components/autotagging/tabs/types-tab.component.d.ts.map +1 -0
  88. package/dist/AI/components/autotagging/tabs/types-tab.component.js +220 -0
  89. package/dist/AI/components/autotagging/tabs/types-tab.component.js.map +1 -0
  90. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js +293 -289
  91. package/dist/AI/components/duplicates/duplicate-detection-resource.component.js.map +1 -1
  92. package/dist/AI/components/models/model-management.component.js +209 -208
  93. package/dist/AI/components/models/model-management.component.js.map +1 -1
  94. package/dist/AI/components/prompts/prompt-management.component.js +130 -128
  95. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  96. package/dist/AI/components/requests/agent-requests-resource.component.js +61 -61
  97. package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -1
  98. package/dist/AI/components/system/system-configuration.component.js +17 -17
  99. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  100. package/dist/AI/components/tags/tags-resource.component.js +550 -532
  101. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  102. package/dist/AI/components/vectors/vector-management-resource.component.js +1 -1
  103. package/dist/AI/components/vectors/vector-management-resource.component.js.map +1 -1
  104. package/dist/AI/services/ai-instrumentation.service.d.ts +5 -0
  105. package/dist/AI/services/ai-instrumentation.service.d.ts.map +1 -1
  106. package/dist/AI/services/ai-instrumentation.service.js +14 -2
  107. package/dist/AI/services/ai-instrumentation.service.js.map +1 -1
  108. package/dist/AI/services/cache-metrics.d.ts +50 -0
  109. package/dist/AI/services/cache-metrics.d.ts.map +1 -0
  110. package/dist/AI/services/cache-metrics.js +43 -0
  111. package/dist/AI/services/cache-metrics.js.map +1 -0
  112. package/dist/APIKeys/api-key-edit-panel.component.js +2 -2
  113. package/dist/APIKeys/api-keys-resource.component.js +132 -131
  114. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  115. package/dist/Actions/components/actions-overview.component.js +141 -141
  116. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  117. package/dist/Actions/components/execution-monitoring.component.js +15 -15
  118. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  119. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -5
  120. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  121. package/dist/Actions/components/explorer/action-explorer.component.js +139 -212
  122. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  123. package/dist/Admin/admin-data-schema.component.js +2 -2
  124. package/dist/Admin/admin-data-schema.component.js.map +1 -1
  125. package/dist/Admin/admin-dev-tools-resource.component.js +2 -2
  126. package/dist/Admin/admin-dev-tools-resource.component.js.map +1 -1
  127. package/dist/Admin/admin-identity-access.component.js +2 -2
  128. package/dist/Admin/admin-identity-access.component.js.map +1 -1
  129. package/dist/Admin/admin-monitoring.component.js +2 -2
  130. package/dist/Admin/admin-monitoring.component.js.map +1 -1
  131. package/dist/ApplicationRoles/application-roles-resource.component.js +54 -49
  132. package/dist/ApplicationRoles/application-roles-resource.component.js.map +1 -1
  133. package/dist/Communication/communication-logs-resource.component.d.ts +6 -0
  134. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  135. package/dist/Communication/communication-logs-resource.component.js +72 -50
  136. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  137. package/dist/Communication/communication-monitor-resource.component.js +103 -102
  138. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  139. package/dist/Communication/communication-providers-resource.component.js +52 -51
  140. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  141. package/dist/Communication/communication-runs-resource.component.js +39 -38
  142. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  143. package/dist/Communication/communication-templates-resource.component.d.ts +6 -0
  144. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  145. package/dist/Communication/communication-templates-resource.component.js +92 -89
  146. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  147. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +73 -1
  148. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  149. package/dist/ComponentStudio/component-studio-dashboard.component.js +512 -127
  150. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  151. package/dist/ComponentStudio/component-studio-resource.component.d.ts +22 -0
  152. package/dist/ComponentStudio/component-studio-resource.component.d.ts.map +1 -0
  153. package/dist/ComponentStudio/component-studio-resource.component.js +55 -0
  154. package/dist/ComponentStudio/component-studio-resource.component.js.map +1 -0
  155. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts +104 -45
  156. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  157. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +234 -331
  158. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  159. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.d.ts +54 -0
  160. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.d.ts.map +1 -0
  161. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.js +339 -0
  162. package/dist/ComponentStudio/components/form-builder/form-builder-canvas.component.js.map +1 -0
  163. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.d.ts +65 -0
  164. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.d.ts.map +1 -0
  165. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.js +492 -0
  166. package/dist/ComponentStudio/components/form-builder/form-builder-right-panel.component.js.map +1 -0
  167. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.d.ts +88 -0
  168. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.d.ts.map +1 -0
  169. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.js +457 -0
  170. package/dist/ComponentStudio/components/form-builder/form-builder-tab.component.js.map +1 -0
  171. package/dist/ComponentStudio/components/form-override-dialog.component.d.ts +106 -0
  172. package/dist/ComponentStudio/components/form-override-dialog.component.d.ts.map +1 -0
  173. package/dist/ComponentStudio/components/form-override-dialog.component.js +478 -0
  174. package/dist/ComponentStudio/components/form-override-dialog.component.js.map +1 -0
  175. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts +54 -0
  176. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
  177. package/dist/ComponentStudio/components/workspace/component-preview.component.js +361 -50
  178. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  179. package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts +10 -0
  180. package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts.map +1 -1
  181. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +114 -45
  182. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
  183. package/dist/ComponentStudio/services/canvas-to-code.d.ts +32 -0
  184. package/dist/ComponentStudio/services/canvas-to-code.d.ts.map +1 -0
  185. package/dist/ComponentStudio/services/canvas-to-code.js +347 -0
  186. package/dist/ComponentStudio/services/canvas-to-code.js.map +1 -0
  187. package/dist/ComponentStudio/services/code-to-canvas.d.ts +32 -0
  188. package/dist/ComponentStudio/services/code-to-canvas.d.ts.map +1 -0
  189. package/dist/ComponentStudio/services/code-to-canvas.js +92 -0
  190. package/dist/ComponentStudio/services/code-to-canvas.js.map +1 -0
  191. package/dist/ComponentStudio/services/component-studio-state.service.d.ts +29 -0
  192. package/dist/ComponentStudio/services/component-studio-state.service.d.ts.map +1 -1
  193. package/dist/ComponentStudio/services/component-studio-state.service.js +76 -0
  194. package/dist/ComponentStudio/services/component-studio-state.service.js.map +1 -1
  195. package/dist/ComponentStudio/services/entity-form-override.service.d.ts +86 -0
  196. package/dist/ComponentStudio/services/entity-form-override.service.d.ts.map +1 -0
  197. package/dist/ComponentStudio/services/entity-form-override.service.js +246 -0
  198. package/dist/ComponentStudio/services/entity-form-override.service.js.map +1 -0
  199. package/dist/ComponentStudio/services/field-binding-scanner.d.ts +29 -0
  200. package/dist/ComponentStudio/services/field-binding-scanner.d.ts.map +1 -0
  201. package/dist/ComponentStudio/services/field-binding-scanner.js +110 -0
  202. package/dist/ComponentStudio/services/field-binding-scanner.js.map +1 -0
  203. package/dist/ComponentStudio/services/form-canvas-model.d.ts +56 -0
  204. package/dist/ComponentStudio/services/form-canvas-model.d.ts.map +1 -0
  205. package/dist/ComponentStudio/services/form-canvas-model.js +35 -0
  206. package/dist/ComponentStudio/services/form-canvas-model.js.map +1 -0
  207. package/dist/ComponentStudio/services/form-host-props-fixture.d.ts +10 -0
  208. package/dist/ComponentStudio/services/form-host-props-fixture.d.ts.map +1 -0
  209. package/dist/ComponentStudio/services/form-host-props-fixture.js +10 -0
  210. package/dist/ComponentStudio/services/form-host-props-fixture.js.map +1 -0
  211. package/dist/Credentials/components/credentials-audit-resource.component.js +136 -135
  212. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  213. package/dist/Credentials/components/credentials-categories-resource.component.js +155 -152
  214. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  215. package/dist/Credentials/components/credentials-list-resource.component.js +119 -118
  216. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  217. package/dist/Credentials/components/credentials-overview-resource.component.js +129 -128
  218. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  219. package/dist/Credentials/components/credentials-types-resource.component.js +107 -106
  220. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  221. package/dist/DataExplorer/data-explorer-dashboard.component.js +2 -2
  222. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  223. package/dist/DatabaseDesigner/components/database-designer-dashboard.component.js +1 -1
  224. package/dist/DatabaseDesigner/components/entity-list.component.js +115 -114
  225. package/dist/DatabaseDesigner/components/entity-list.component.js.map +1 -1
  226. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts +5 -6
  227. package/dist/DatabaseDesigner/database-designer-dashboards.module.d.ts.map +1 -1
  228. package/dist/DatabaseDesigner/database-designer-dashboards.module.js +4 -5
  229. package/dist/DatabaseDesigner/database-designer-dashboards.module.js.map +1 -1
  230. package/dist/DevTools/app-state-inspector.component.js +18 -17
  231. package/dist/DevTools/app-state-inspector.component.js.map +1 -1
  232. package/dist/DevTools/class-registry.component.js +88 -85
  233. package/dist/DevTools/class-registry.component.js.map +1 -1
  234. package/dist/DevTools/event-monitor.component.js +155 -150
  235. package/dist/DevTools/event-monitor.component.js.map +1 -1
  236. package/dist/DevTools/graphql-console.component.js +245 -243
  237. package/dist/DevTools/graphql-console.component.js.map +1 -1
  238. package/dist/DevTools/layout-inspector.component.js +18 -17
  239. package/dist/DevTools/layout-inspector.component.js.map +1 -1
  240. package/dist/EntityAdmin/entity-admin-dashboard.component.js +20 -19
  241. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  242. package/dist/FormBuilder/form-builder-resource.component.d.ts +964 -0
  243. package/dist/FormBuilder/form-builder-resource.component.d.ts.map +1 -0
  244. package/dist/FormBuilder/form-builder-resource.component.js +4487 -0
  245. package/dist/FormBuilder/form-builder-resource.component.js.map +1 -0
  246. package/dist/FormBuilder/form-builder-version-rail.helpers.d.ts +55 -0
  247. package/dist/FormBuilder/form-builder-version-rail.helpers.d.ts.map +1 -0
  248. package/dist/FormBuilder/form-builder-version-rail.helpers.js +73 -0
  249. package/dist/FormBuilder/form-builder-version-rail.helpers.js.map +1 -0
  250. package/dist/Home/home-application.d.ts +21 -1
  251. package/dist/Home/home-application.d.ts.map +1 -1
  252. package/dist/Home/home-application.js +60 -8
  253. package/dist/Home/home-application.js.map +1 -1
  254. package/dist/Home/home-dashboard.component.js +2 -2
  255. package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
  256. package/dist/Integration/components/activity/activity.component.js +236 -229
  257. package/dist/Integration/components/activity/activity.component.js.map +1 -1
  258. package/dist/Integration/components/connections/connections.component.js +390 -389
  259. package/dist/Integration/components/connections/connections.component.js.map +1 -1
  260. package/dist/Integration/components/overview/overview.component.js +2 -2
  261. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js +2 -2
  262. package/dist/KnowledgeHub/components/analytics/analytics-resource.component.js.map +1 -1
  263. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js +45 -44
  264. package/dist/KnowledgeHub/components/clusters/cluster-visualization-resource.component.js.map +1 -1
  265. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js +293 -291
  266. package/dist/KnowledgeHub/components/config/knowledge-config-resource.component.js.map +1 -1
  267. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js +62 -61
  268. package/dist/KnowledgeHub/components/scheduling/scheduling-resource.component.js.map +1 -1
  269. package/dist/Lists/components/lists-browse-resource.component.d.ts +6 -2
  270. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  271. package/dist/Lists/components/lists-browse-resource.component.js +525 -566
  272. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  273. package/dist/Lists/components/lists-categories-resource.component.js +135 -134
  274. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  275. package/dist/Lists/components/lists-my-lists-resource.component.js +199 -198
  276. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  277. package/dist/MCP/mcp-dashboard.component.js +443 -438
  278. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  279. package/dist/QueryBrowser/query-browser-resource.component.d.ts +14 -14
  280. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  281. package/dist/QueryBrowser/query-browser-resource.component.js +11 -10
  282. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  283. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  284. package/dist/Scheduling/components/scheduling-activity.component.js +146 -147
  285. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  286. package/dist/Scheduling/components/scheduling-jobs.component.js +76 -75
  287. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  288. package/dist/Scheduling/components/scheduling-overview.component.js +97 -96
  289. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  290. package/dist/Scheduling/scheduling-dashboard.component.js +24 -22
  291. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  292. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts +2 -0
  293. package/dist/Scheduling/services/scheduling-instrumentation.service.d.ts.map +1 -1
  294. package/dist/Scheduling/services/scheduling-instrumentation.service.js +1 -0
  295. package/dist/Scheduling/services/scheduling-instrumentation.service.js.map +1 -1
  296. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +1 -1
  297. package/dist/Testing/components/testing-explorer.component.d.ts +14 -4
  298. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  299. package/dist/Testing/components/testing-explorer.component.js +436 -427
  300. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  301. package/dist/Testing/components/testing-runs-resource.component.js +1 -1
  302. package/dist/Testing/components/testing-runs.component.js +116 -115
  303. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  304. package/dist/Testing/testing-dashboard.component.js +6 -7
  305. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  306. package/dist/VersionHistory/components/labels-resource.component.js +173 -172
  307. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
  308. package/dist/VersionHistory/components/restore-resource.component.d.ts +6 -0
  309. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -1
  310. package/dist/VersionHistory/components/restore-resource.component.js +116 -92
  311. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
  312. package/dist/ai-dashboards.module.d.ts +47 -35
  313. package/dist/ai-dashboards.module.d.ts.map +1 -1
  314. package/dist/ai-dashboards.module.js +40 -1
  315. package/dist/ai-dashboards.module.js.map +1 -1
  316. package/dist/communication-dashboards.module.d.ts +1 -1
  317. package/dist/communication-dashboards.module.d.ts.map +1 -1
  318. package/dist/communication-dashboards.module.js +7 -1
  319. package/dist/communication-dashboards.module.js.map +1 -1
  320. package/dist/component-studio-dashboards.module.d.ts +34 -22
  321. package/dist/component-studio-dashboards.module.d.ts.map +1 -1
  322. package/dist/component-studio-dashboards.module.js +65 -9
  323. package/dist/component-studio-dashboards.module.js.map +1 -1
  324. package/dist/testing-dashboards.module.d.ts +4 -5
  325. package/dist/testing-dashboards.module.d.ts.map +1 -1
  326. package/dist/testing-dashboards.module.js +7 -5
  327. package/dist/testing-dashboards.module.js.map +1 -1
  328. package/package.json +55 -53
@@ -0,0 +1,65 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import type { CuratedFormField, CuratedFormSchema } from '@memberjunction/interactive-component-types/forms';
3
+ import type { FormCanvasElement, FormCanvasModel, FormCanvasSection } from '../../services/form-canvas-model';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * Right-panel inspector. Two modes:
7
+ *
8
+ * 1. **Palette mode** (default — no element selected): shows the curated
9
+ * fields for the active entity. Each row is a CDK drag source — drop
10
+ * onto a section to add a field element. Includes a search filter and a
11
+ * "bound" badge that mirrors which fields are already on the canvas.
12
+ *
13
+ * 2. **Inspector mode** (element selected): shows the selected element's
14
+ * properties (label override, helper text, required flag, span).
15
+ *
16
+ * The component is presentational — it emits events but doesn't mutate
17
+ * canvas state. The dashboard owns the canvas and applies the updates.
18
+ */
19
+ export declare class FormBuilderRightPanelComponent {
20
+ private _schema;
21
+ set Schema(value: CuratedFormSchema | null);
22
+ get Schema(): CuratedFormSchema | null;
23
+ private _canvas;
24
+ set Canvas(value: FormCanvasModel | null);
25
+ get Canvas(): FormCanvasModel | null;
26
+ SelectedElementId: string | null;
27
+ SelectedSectionId: string | null;
28
+ /** Emitted when the user updates a property on the selected element. */
29
+ ElementChanged: EventEmitter<FormCanvasElement>;
30
+ /** Emitted when the user updates a property on the selected section. */
31
+ SectionChanged: EventEmitter<FormCanvasSection>;
32
+ /** Delete the currently-selected element. */
33
+ ElementDeleted: EventEmitter<string>;
34
+ /** Delete the currently-selected section. */
35
+ SectionDeleted: EventEmitter<string>;
36
+ /** Add a new element from the palette (drag fallback for non-DnD inputs). */
37
+ FieldAdded: EventEmitter<{
38
+ fieldName: string;
39
+ }>;
40
+ Search: string;
41
+ private boundFieldNames;
42
+ private readonly cdr;
43
+ get filteredFields(): CuratedFormField[];
44
+ get SelectedElement(): FormCanvasElement | null;
45
+ get SelectedSection(): FormCanvasSection | null;
46
+ get SelectedField(): CuratedFormField | null;
47
+ isBound(fieldName: string): boolean;
48
+ OnSearchInput(event: Event): void;
49
+ OnElementLabelInput(event: Event): void;
50
+ OnElementHelperInput(event: Event): void;
51
+ OnElementRequiredChange(event: Event): void;
52
+ OnElementSpanChange(event: Event): void;
53
+ OnElementTextInput(event: Event): void;
54
+ OnElementExpressionInput(event: Event): void;
55
+ OnDeleteElement(): void;
56
+ OnSectionTitleInput(event: Event): void;
57
+ OnSectionColumnsChange(event: Event): void;
58
+ OnSectionCollapsibleChange(event: Event): void;
59
+ OnDeleteSection(): void;
60
+ OnPaletteClick(field: CuratedFormField): void;
61
+ private recomputeBoundFields;
62
+ static ɵfac: i0.ɵɵFactoryDeclaration<FormBuilderRightPanelComponent, never>;
63
+ static ɵcmp: i0.ɵɵComponentDeclaration<FormBuilderRightPanelComponent, "mj-form-builder-right-panel", never, { "Schema": { "alias": "Schema"; "required": false; }; "Canvas": { "alias": "Canvas"; "required": false; }; "SelectedElementId": { "alias": "SelectedElementId"; "required": false; }; "SelectedSectionId": { "alias": "SelectedSectionId"; "required": false; }; }, { "ElementChanged": "ElementChanged"; "SectionChanged": "SectionChanged"; "ElementDeleted": "ElementDeleted"; "SectionDeleted": "SectionDeleted"; "FieldAdded": "FieldAdded"; }, never, never, false, never>;
64
+ }
65
+ //# sourceMappingURL=form-builder-right-panel.component.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-builder-right-panel.component.d.ts","sourceRoot":"","sources":["../../../../src/ComponentStudio/components/form-builder/form-builder-right-panel.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAIH,YAAY,EAIf,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAC7G,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAC;;AAE9G;;;;;;;;;;;;;GAaG;AACH,qBAOa,8BAA8B;IACvC,OAAO,CAAC,OAAO,CAAkC;IACjD,IACI,MAAM,CAAC,KAAK,EAAE,iBAAiB,GAAG,IAAI,EAGzC;IACD,IAAI,MAAM,IAAI,iBAAiB,GAAG,IAAI,CAErC;IAED,OAAO,CAAC,OAAO,CAAgC;IAC/C,IACI,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,EAIvC;IACD,IAAI,MAAM,IAAI,eAAe,GAAG,IAAI,CAEnC;IAEQ,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAQ;IACxC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAEjD,wEAAwE;IAC9D,cAAc,kCAAyC;IACjE,wEAAwE;IAC9D,cAAc,kCAAyC;IACjE,6CAA6C;IACnC,cAAc,uBAA8B;IACtD,6CAA6C;IACnC,cAAc,uBAA8B;IACtD,6EAA6E;IACnE,UAAU;mBAAiC,MAAM;OAAM;IAE1D,MAAM,SAAM;IACnB,OAAO,CAAC,eAAe,CAAqB;IAE5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA6B;IAEjD,IAAW,cAAc,IAAI,gBAAgB,EAAE,CAQ9C;IAED,IAAW,eAAe,IAAI,iBAAiB,GAAG,IAAI,CAOrD;IAED,IAAW,eAAe,IAAI,iBAAiB,GAAG,IAAI,CAGrD;IAED,IAAW,aAAa,IAAI,gBAAgB,GAAG,IAAI,CAIlD;IAEM,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAInC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAIjC,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAOvC,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAQxC,uBAAuB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAO3C,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAQvC,kBAAkB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAOtC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAO5C,eAAe,IAAI,IAAI;IAMvB,mBAAmB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAOvC,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAQ1C,0BAA0B,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAO9C,eAAe,IAAI,IAAI;IAMvB,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAIpD,OAAO,CAAC,oBAAoB;yCAjKnB,8BAA8B;2CAA9B,8BAA8B;CA4K1C"}
@@ -0,0 +1,492 @@
1
+ import { Component, ChangeDetectionStrategy, ChangeDetectorRef, EventEmitter, Input, Output, inject, } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/forms";
4
+ const _forTrack0 = ($index, $item) => $item.name;
5
+ function FormBuilderRightPanelComponent_Conditional_1_Conditional_7_Conditional_7_Template(rf, ctx) { if (rf & 1) {
6
+ i0.ɵɵelementStart(0, "span", 12);
7
+ i0.ɵɵtext(1);
8
+ i0.ɵɵelementEnd();
9
+ } if (rf & 2) {
10
+ const ctx_r1 = i0.ɵɵnextContext(3);
11
+ i0.ɵɵadvance();
12
+ i0.ɵɵtextInterpolate1("\u2192 ", ctx_r1.SelectedField.references.entity);
13
+ } }
14
+ function FormBuilderRightPanelComponent_Conditional_1_Conditional_7_Template(rf, ctx) { if (rf & 1) {
15
+ const _r3 = i0.ɵɵgetCurrentView();
16
+ i0.ɵɵelementStart(0, "section", 7)(1, "div", 8)(2, "div", 9);
17
+ i0.ɵɵtext(3);
18
+ i0.ɵɵelementEnd();
19
+ i0.ɵɵelementStart(4, "div", 10)(5, "span", 11);
20
+ i0.ɵɵtext(6);
21
+ i0.ɵɵelementEnd();
22
+ i0.ɵɵconditionalCreate(7, FormBuilderRightPanelComponent_Conditional_1_Conditional_7_Conditional_7_Template, 2, 1, "span", 12);
23
+ i0.ɵɵelementEnd()();
24
+ i0.ɵɵelementStart(8, "div", 13)(9, "label");
25
+ i0.ɵɵtext(10, "Label override");
26
+ i0.ɵɵelementEnd();
27
+ i0.ɵɵelementStart(11, "input", 14);
28
+ i0.ɵɵlistener("input", function FormBuilderRightPanelComponent_Conditional_1_Conditional_7_Template_input_input_11_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnElementLabelInput($event)); });
29
+ i0.ɵɵelementEnd()();
30
+ i0.ɵɵelementStart(12, "div", 13)(13, "label");
31
+ i0.ɵɵtext(14, "Helper text");
32
+ i0.ɵɵelementEnd();
33
+ i0.ɵɵelementStart(15, "input", 15);
34
+ i0.ɵɵlistener("input", function FormBuilderRightPanelComponent_Conditional_1_Conditional_7_Template_input_input_15_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnElementHelperInput($event)); });
35
+ i0.ɵɵelementEnd()();
36
+ i0.ɵɵelementStart(16, "div", 16)(17, "label", 17)(18, "input", 18);
37
+ i0.ɵɵlistener("change", function FormBuilderRightPanelComponent_Conditional_1_Conditional_7_Template_input_change_18_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnElementRequiredChange($event)); });
38
+ i0.ɵɵelementEnd();
39
+ i0.ɵɵelementStart(19, "span");
40
+ i0.ɵɵtext(20, "Required");
41
+ i0.ɵɵelementEnd()();
42
+ i0.ɵɵelementStart(21, "div", 19)(22, "label");
43
+ i0.ɵɵtext(23, "Span");
44
+ i0.ɵɵelementEnd();
45
+ i0.ɵɵelementStart(24, "select", 20);
46
+ i0.ɵɵlistener("change", function FormBuilderRightPanelComponent_Conditional_1_Conditional_7_Template_select_change_24_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnElementSpanChange($event)); });
47
+ i0.ɵɵelementStart(25, "option", 21);
48
+ i0.ɵɵtext(26, "Half");
49
+ i0.ɵɵelementEnd();
50
+ i0.ɵɵelementStart(27, "option", 22);
51
+ i0.ɵɵtext(28, "Full width");
52
+ i0.ɵɵelementEnd()()()()();
53
+ } if (rf & 2) {
54
+ const ctx_r1 = i0.ɵɵnextContext(2);
55
+ i0.ɵɵadvance(3);
56
+ i0.ɵɵtextInterpolate(ctx_r1.SelectedField.displayName || ctx_r1.SelectedField.name);
57
+ i0.ɵɵadvance(3);
58
+ i0.ɵɵtextInterpolate(ctx_r1.SelectedField.type);
59
+ i0.ɵɵadvance();
60
+ i0.ɵɵconditional((ctx_r1.SelectedField.references == null ? null : ctx_r1.SelectedField.references.entity) ? 7 : -1);
61
+ i0.ɵɵadvance(4);
62
+ i0.ɵɵproperty("value", ctx_r1.SelectedElement.label ?? "")("placeholder", ctx_r1.SelectedField.displayName ?? ctx_r1.SelectedField.name);
63
+ i0.ɵɵadvance(4);
64
+ i0.ɵɵproperty("value", ctx_r1.SelectedElement.helper ?? "");
65
+ i0.ɵɵadvance(3);
66
+ i0.ɵɵproperty("checked", ctx_r1.SelectedElement.required ?? ctx_r1.SelectedField.required);
67
+ i0.ɵɵadvance(6);
68
+ i0.ɵɵproperty("value", (ctx_r1.SelectedElement.span ?? 1).toString());
69
+ } }
70
+ function FormBuilderRightPanelComponent_Conditional_1_Conditional_8_Template(rf, ctx) { if (rf & 1) {
71
+ const _r4 = i0.ɵɵgetCurrentView();
72
+ i0.ɵɵelementStart(0, "section", 7)(1, "div", 13)(2, "label");
73
+ i0.ɵɵtext(3, "Static text");
74
+ i0.ɵɵelementEnd();
75
+ i0.ɵɵelementStart(4, "input", 23);
76
+ i0.ɵɵlistener("input", function FormBuilderRightPanelComponent_Conditional_1_Conditional_8_Template_input_input_4_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnElementTextInput($event)); });
77
+ i0.ɵɵelementEnd()();
78
+ i0.ɵɵelementStart(5, "div", 19)(6, "label");
79
+ i0.ɵɵtext(7, "Span");
80
+ i0.ɵɵelementEnd();
81
+ i0.ɵɵelementStart(8, "select", 20);
82
+ i0.ɵɵlistener("change", function FormBuilderRightPanelComponent_Conditional_1_Conditional_8_Template_select_change_8_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnElementSpanChange($event)); });
83
+ i0.ɵɵelementStart(9, "option", 21);
84
+ i0.ɵɵtext(10, "Half");
85
+ i0.ɵɵelementEnd();
86
+ i0.ɵɵelementStart(11, "option", 22);
87
+ i0.ɵɵtext(12, "Full width");
88
+ i0.ɵɵelementEnd()()()();
89
+ } if (rf & 2) {
90
+ const ctx_r1 = i0.ɵɵnextContext(2);
91
+ i0.ɵɵadvance(4);
92
+ i0.ɵɵproperty("value", ctx_r1.SelectedElement.text ?? "");
93
+ i0.ɵɵadvance(4);
94
+ i0.ɵɵproperty("value", (ctx_r1.SelectedElement.span ?? 1).toString());
95
+ } }
96
+ function FormBuilderRightPanelComponent_Conditional_1_Conditional_9_Template(rf, ctx) { if (rf & 1) {
97
+ const _r5 = i0.ɵɵgetCurrentView();
98
+ i0.ɵɵelementStart(0, "section", 7)(1, "div", 13)(2, "label");
99
+ i0.ɵɵtext(3, "Label");
100
+ i0.ɵɵelementEnd();
101
+ i0.ɵɵelementStart(4, "input", 24);
102
+ i0.ɵɵlistener("input", function FormBuilderRightPanelComponent_Conditional_1_Conditional_9_Template_input_input_4_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnElementLabelInput($event)); });
103
+ i0.ɵɵelementEnd()();
104
+ i0.ɵɵelementStart(5, "div", 13)(6, "label");
105
+ i0.ɵɵtext(7, "Expression");
106
+ i0.ɵɵelementEnd();
107
+ i0.ɵɵelementStart(8, "input", 25);
108
+ i0.ɵɵlistener("input", function FormBuilderRightPanelComponent_Conditional_1_Conditional_9_Template_input_input_8_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnElementExpressionInput($event)); });
109
+ i0.ɵɵelementEnd();
110
+ i0.ɵɵelementStart(9, "small");
111
+ i0.ɵɵtext(10, "Evaluated at runtime against ");
112
+ i0.ɵɵelementStart(11, "code");
113
+ i0.ɵɵtext(12, "record");
114
+ i0.ɵɵelementEnd();
115
+ i0.ɵɵtext(13, ".");
116
+ i0.ɵɵelementEnd()()();
117
+ } if (rf & 2) {
118
+ const ctx_r1 = i0.ɵɵnextContext(2);
119
+ i0.ɵɵadvance(4);
120
+ i0.ɵɵproperty("value", ctx_r1.SelectedElement.label ?? "");
121
+ i0.ɵɵadvance(4);
122
+ i0.ɵɵproperty("value", ctx_r1.SelectedElement.expression ?? "");
123
+ } }
124
+ function FormBuilderRightPanelComponent_Conditional_1_Conditional_10_Template(rf, ctx) { if (rf & 1) {
125
+ i0.ɵɵelementStart(0, "section", 7)(1, "p", 26);
126
+ i0.ɵɵtext(2, "Spacer element. No properties.");
127
+ i0.ɵɵelementEnd()();
128
+ } }
129
+ function FormBuilderRightPanelComponent_Conditional_1_Template(rf, ctx) { if (rf & 1) {
130
+ const _r1 = i0.ɵɵgetCurrentView();
131
+ i0.ɵɵelementStart(0, "header", 2)(1, "div", 3);
132
+ i0.ɵɵelement(2, "i", 4);
133
+ i0.ɵɵelementStart(3, "span");
134
+ i0.ɵɵtext(4, "Element Properties");
135
+ i0.ɵɵelementEnd()();
136
+ i0.ɵɵelementStart(5, "button", 5);
137
+ i0.ɵɵlistener("click", function FormBuilderRightPanelComponent_Conditional_1_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDeleteElement()); });
138
+ i0.ɵɵelement(6, "i", 6);
139
+ i0.ɵɵelementEnd()();
140
+ i0.ɵɵconditionalCreate(7, FormBuilderRightPanelComponent_Conditional_1_Conditional_7_Template, 29, 8, "section", 7)(8, FormBuilderRightPanelComponent_Conditional_1_Conditional_8_Template, 13, 2, "section", 7)(9, FormBuilderRightPanelComponent_Conditional_1_Conditional_9_Template, 14, 2, "section", 7)(10, FormBuilderRightPanelComponent_Conditional_1_Conditional_10_Template, 3, 0, "section", 7);
141
+ } if (rf & 2) {
142
+ const ctx_r1 = i0.ɵɵnextContext();
143
+ i0.ɵɵadvance(7);
144
+ i0.ɵɵconditional(ctx_r1.SelectedElement.type === "field" && ctx_r1.SelectedField ? 7 : ctx_r1.SelectedElement.type === "static-text" ? 8 : ctx_r1.SelectedElement.type === "computed" ? 9 : ctx_r1.SelectedElement.type === "spacer" ? 10 : -1);
145
+ } }
146
+ function FormBuilderRightPanelComponent_Conditional_2_Template(rf, ctx) { if (rf & 1) {
147
+ const _r6 = i0.ɵɵgetCurrentView();
148
+ i0.ɵɵelementStart(0, "header", 2)(1, "div", 3);
149
+ i0.ɵɵelement(2, "i", 27);
150
+ i0.ɵɵelementStart(3, "span");
151
+ i0.ɵɵtext(4, "Section Properties");
152
+ i0.ɵɵelementEnd()();
153
+ i0.ɵɵelementStart(5, "button", 28);
154
+ i0.ɵɵlistener("click", function FormBuilderRightPanelComponent_Conditional_2_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnDeleteSection()); });
155
+ i0.ɵɵelement(6, "i", 6);
156
+ i0.ɵɵelementEnd()();
157
+ i0.ɵɵelementStart(7, "section", 7)(8, "div", 13)(9, "label");
158
+ i0.ɵɵtext(10, "Title");
159
+ i0.ɵɵelementEnd();
160
+ i0.ɵɵelementStart(11, "input", 24);
161
+ i0.ɵɵlistener("input", function FormBuilderRightPanelComponent_Conditional_2_Template_input_input_11_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnSectionTitleInput($event)); });
162
+ i0.ɵɵelementEnd()();
163
+ i0.ɵɵelementStart(12, "div", 19)(13, "label");
164
+ i0.ɵɵtext(14, "Columns");
165
+ i0.ɵɵelementEnd();
166
+ i0.ɵɵelementStart(15, "select", 20);
167
+ i0.ɵɵlistener("change", function FormBuilderRightPanelComponent_Conditional_2_Template_select_change_15_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnSectionColumnsChange($event)); });
168
+ i0.ɵɵelementStart(16, "option", 21);
169
+ i0.ɵɵtext(17, "1 column");
170
+ i0.ɵɵelementEnd();
171
+ i0.ɵɵelementStart(18, "option", 22);
172
+ i0.ɵɵtext(19, "2 columns");
173
+ i0.ɵɵelementEnd()()();
174
+ i0.ɵɵelementStart(20, "label", 17)(21, "input", 18);
175
+ i0.ɵɵlistener("change", function FormBuilderRightPanelComponent_Conditional_2_Template_input_change_21_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnSectionCollapsibleChange($event)); });
176
+ i0.ɵɵelementEnd();
177
+ i0.ɵɵelementStart(22, "span");
178
+ i0.ɵɵtext(23, "Collapsible");
179
+ i0.ɵɵelementEnd()()();
180
+ } if (rf & 2) {
181
+ const ctx_r1 = i0.ɵɵnextContext();
182
+ i0.ɵɵadvance(11);
183
+ i0.ɵɵproperty("value", ctx_r1.SelectedSection.title);
184
+ i0.ɵɵadvance(4);
185
+ i0.ɵɵproperty("value", ctx_r1.SelectedSection.columns.toString());
186
+ i0.ɵɵadvance(6);
187
+ i0.ɵɵproperty("checked", ctx_r1.SelectedSection.collapsible);
188
+ } }
189
+ function FormBuilderRightPanelComponent_Conditional_3_For_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
190
+ i0.ɵɵelement(0, "i", 37);
191
+ } }
192
+ function FormBuilderRightPanelComponent_Conditional_3_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
193
+ i0.ɵɵelement(0, "i", 38);
194
+ } }
195
+ function FormBuilderRightPanelComponent_Conditional_3_For_9_Conditional_7_Template(rf, ctx) { if (rf & 1) {
196
+ i0.ɵɵelementStart(0, "span", 41);
197
+ i0.ɵɵtext(1, "*");
198
+ i0.ɵɵelementEnd();
199
+ } }
200
+ function FormBuilderRightPanelComponent_Conditional_3_For_9_Conditional_11_Template(rf, ctx) { if (rf & 1) {
201
+ i0.ɵɵelementStart(0, "span", 12);
202
+ i0.ɵɵtext(1);
203
+ i0.ɵɵelementEnd();
204
+ } if (rf & 2) {
205
+ const f_r9 = i0.ɵɵnextContext().$implicit;
206
+ i0.ɵɵadvance();
207
+ i0.ɵɵtextInterpolate1("\u2192 ", f_r9.references.entity);
208
+ } }
209
+ function FormBuilderRightPanelComponent_Conditional_3_For_9_Conditional_12_Template(rf, ctx) { if (rf & 1) {
210
+ i0.ɵɵelementStart(0, "span", 43);
211
+ i0.ɵɵtext(1);
212
+ i0.ɵɵelementEnd();
213
+ } if (rf & 2) {
214
+ const f_r9 = i0.ɵɵnextContext().$implicit;
215
+ i0.ɵɵadvance();
216
+ i0.ɵɵtextInterpolate1("", f_r9.allowedValues.length, " values");
217
+ } }
218
+ function FormBuilderRightPanelComponent_Conditional_3_For_9_Template(rf, ctx) { if (rf & 1) {
219
+ const _r8 = i0.ɵɵgetCurrentView();
220
+ i0.ɵɵelementStart(0, "li", 35);
221
+ i0.ɵɵlistener("click", function FormBuilderRightPanelComponent_Conditional_3_For_9_Template_li_click_0_listener() { const f_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.OnPaletteClick(f_r9)); })("dragstart", function FormBuilderRightPanelComponent_Conditional_3_For_9_Template_li_dragstart_0_listener($event) { const f_r9 = i0.ɵɵrestoreView(_r8).$implicit; return i0.ɵɵresetView($event.dataTransfer == null ? null : $event.dataTransfer.setData("text/x-mj-form-field", f_r9.name)); });
222
+ i0.ɵɵelementStart(1, "span", 36);
223
+ i0.ɵɵconditionalCreate(2, FormBuilderRightPanelComponent_Conditional_3_For_9_Conditional_2_Template, 1, 0, "i", 37)(3, FormBuilderRightPanelComponent_Conditional_3_For_9_Conditional_3_Template, 1, 0, "i", 38);
224
+ i0.ɵɵelementEnd();
225
+ i0.ɵɵelementStart(4, "div", 39)(5, "div", 40);
226
+ i0.ɵɵtext(6);
227
+ i0.ɵɵconditionalCreate(7, FormBuilderRightPanelComponent_Conditional_3_For_9_Conditional_7_Template, 2, 0, "span", 41);
228
+ i0.ɵɵelementEnd();
229
+ i0.ɵɵelementStart(8, "div", 42)(9, "span", 11);
230
+ i0.ɵɵtext(10);
231
+ i0.ɵɵelementEnd();
232
+ i0.ɵɵconditionalCreate(11, FormBuilderRightPanelComponent_Conditional_3_For_9_Conditional_11_Template, 2, 1, "span", 12);
233
+ i0.ɵɵconditionalCreate(12, FormBuilderRightPanelComponent_Conditional_3_For_9_Conditional_12_Template, 2, 1, "span", 43);
234
+ i0.ɵɵelementEnd()()();
235
+ } if (rf & 2) {
236
+ const f_r9 = ctx.$implicit;
237
+ const ctx_r1 = i0.ɵɵnextContext(2);
238
+ i0.ɵɵclassProp("bound", ctx_r1.isBound(f_r9.name));
239
+ i0.ɵɵattribute("data-field-name", f_r9.name);
240
+ i0.ɵɵadvance(2);
241
+ i0.ɵɵconditional(ctx_r1.isBound(f_r9.name) ? 2 : 3);
242
+ i0.ɵɵadvance(4);
243
+ i0.ɵɵtextInterpolate1(" ", f_r9.displayName || f_r9.name, " ");
244
+ i0.ɵɵadvance();
245
+ i0.ɵɵconditional(f_r9.required ? 7 : -1);
246
+ i0.ɵɵadvance(3);
247
+ i0.ɵɵtextInterpolate(f_r9.type);
248
+ i0.ɵɵadvance();
249
+ i0.ɵɵconditional((f_r9.references == null ? null : f_r9.references.entity) ? 11 : -1);
250
+ i0.ɵɵadvance();
251
+ i0.ɵɵconditional(f_r9.allowedValues && f_r9.allowedValues.length > 0 ? 12 : -1);
252
+ } }
253
+ function FormBuilderRightPanelComponent_Conditional_3_Template(rf, ctx) { if (rf & 1) {
254
+ const _r7 = i0.ɵɵgetCurrentView();
255
+ i0.ɵɵelementStart(0, "header", 2)(1, "div", 3);
256
+ i0.ɵɵelement(2, "i", 29);
257
+ i0.ɵɵelementStart(3, "span");
258
+ i0.ɵɵtext(4, "Field Palette");
259
+ i0.ɵɵelementEnd()()();
260
+ i0.ɵɵelementStart(5, "section", 30)(6, "input", 31);
261
+ i0.ɵɵlistener("input", function FormBuilderRightPanelComponent_Conditional_3_Template_input_input_6_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.OnSearchInput($event)); });
262
+ i0.ɵɵelementEnd()();
263
+ i0.ɵɵelementStart(7, "ul", 32);
264
+ i0.ɵɵrepeaterCreate(8, FormBuilderRightPanelComponent_Conditional_3_For_9_Template, 13, 9, "li", 33, _forTrack0);
265
+ i0.ɵɵelementEnd();
266
+ i0.ɵɵelementStart(10, "footer", 34)(11, "small");
267
+ i0.ɵɵtext(12, "Drag a field onto a section, or click to add to the focused section.");
268
+ i0.ɵɵelementEnd()();
269
+ } if (rf & 2) {
270
+ const ctx_r1 = i0.ɵɵnextContext();
271
+ i0.ɵɵadvance(6);
272
+ i0.ɵɵproperty("value", ctx_r1.Search);
273
+ i0.ɵɵadvance(2);
274
+ i0.ɵɵrepeater(ctx_r1.filteredFields);
275
+ } }
276
+ function FormBuilderRightPanelComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
277
+ i0.ɵɵelementStart(0, "div", 1);
278
+ i0.ɵɵelement(1, "i", 44);
279
+ i0.ɵɵelementStart(2, "p");
280
+ i0.ɵɵtext(3, "Pick an entity from the canvas toolbar to load its field palette.");
281
+ i0.ɵɵelementEnd()();
282
+ } }
283
+ /**
284
+ * Right-panel inspector. Two modes:
285
+ *
286
+ * 1. **Palette mode** (default — no element selected): shows the curated
287
+ * fields for the active entity. Each row is a CDK drag source — drop
288
+ * onto a section to add a field element. Includes a search filter and a
289
+ * "bound" badge that mirrors which fields are already on the canvas.
290
+ *
291
+ * 2. **Inspector mode** (element selected): shows the selected element's
292
+ * properties (label override, helper text, required flag, span).
293
+ *
294
+ * The component is presentational — it emits events but doesn't mutate
295
+ * canvas state. The dashboard owns the canvas and applies the updates.
296
+ */
297
+ export class FormBuilderRightPanelComponent {
298
+ _schema = null;
299
+ set Schema(value) {
300
+ this._schema = value;
301
+ this.cdr.markForCheck();
302
+ }
303
+ get Schema() {
304
+ return this._schema;
305
+ }
306
+ _canvas = null;
307
+ set Canvas(value) {
308
+ this._canvas = value;
309
+ this.recomputeBoundFields();
310
+ this.cdr.markForCheck();
311
+ }
312
+ get Canvas() {
313
+ return this._canvas;
314
+ }
315
+ SelectedElementId = null;
316
+ SelectedSectionId = null;
317
+ /** Emitted when the user updates a property on the selected element. */
318
+ ElementChanged = new EventEmitter();
319
+ /** Emitted when the user updates a property on the selected section. */
320
+ SectionChanged = new EventEmitter();
321
+ /** Delete the currently-selected element. */
322
+ ElementDeleted = new EventEmitter();
323
+ /** Delete the currently-selected section. */
324
+ SectionDeleted = new EventEmitter();
325
+ /** Add a new element from the palette (drag fallback for non-DnD inputs). */
326
+ FieldAdded = new EventEmitter();
327
+ Search = '';
328
+ boundFieldNames = new Set();
329
+ cdr = inject(ChangeDetectorRef);
330
+ get filteredFields() {
331
+ if (!this._schema)
332
+ return [];
333
+ const q = this.Search.trim().toLowerCase();
334
+ if (!q)
335
+ return this._schema.fields;
336
+ return this._schema.fields.filter(f => f.name.toLowerCase().includes(q) ||
337
+ (f.displayName?.toLowerCase().includes(q) ?? false));
338
+ }
339
+ get SelectedElement() {
340
+ if (!this._canvas || !this.SelectedElementId)
341
+ return null;
342
+ for (const section of this._canvas.sections) {
343
+ const found = section.elements.find(e => e.id === this.SelectedElementId);
344
+ if (found)
345
+ return found;
346
+ }
347
+ return null;
348
+ }
349
+ get SelectedSection() {
350
+ if (!this._canvas || !this.SelectedSectionId)
351
+ return null;
352
+ return this._canvas.sections.find(s => s.id === this.SelectedSectionId) ?? null;
353
+ }
354
+ get SelectedField() {
355
+ const el = this.SelectedElement;
356
+ if (!el || el.type !== 'field' || !el.fieldName)
357
+ return null;
358
+ return this._schema?.fields.find(f => f.name === el.fieldName) ?? null;
359
+ }
360
+ isBound(fieldName) {
361
+ return this.boundFieldNames.has(fieldName);
362
+ }
363
+ OnSearchInput(event) {
364
+ this.Search = event.target.value;
365
+ }
366
+ OnElementLabelInput(event) {
367
+ const el = this.SelectedElement;
368
+ if (!el)
369
+ return;
370
+ const next = { ...el, label: event.target.value };
371
+ this.ElementChanged.emit(next);
372
+ }
373
+ OnElementHelperInput(event) {
374
+ const el = this.SelectedElement;
375
+ if (!el)
376
+ return;
377
+ const v = event.target.value;
378
+ const next = { ...el, helper: v.length > 0 ? v : undefined };
379
+ this.ElementChanged.emit(next);
380
+ }
381
+ OnElementRequiredChange(event) {
382
+ const el = this.SelectedElement;
383
+ if (!el)
384
+ return;
385
+ const next = { ...el, required: event.target.checked };
386
+ this.ElementChanged.emit(next);
387
+ }
388
+ OnElementSpanChange(event) {
389
+ const el = this.SelectedElement;
390
+ if (!el)
391
+ return;
392
+ const v = Number(event.target.value);
393
+ const next = { ...el, span: (v === 2 ? 2 : 1) };
394
+ this.ElementChanged.emit(next);
395
+ }
396
+ OnElementTextInput(event) {
397
+ const el = this.SelectedElement;
398
+ if (!el)
399
+ return;
400
+ const next = { ...el, text: event.target.value };
401
+ this.ElementChanged.emit(next);
402
+ }
403
+ OnElementExpressionInput(event) {
404
+ const el = this.SelectedElement;
405
+ if (!el)
406
+ return;
407
+ const next = { ...el, expression: event.target.value };
408
+ this.ElementChanged.emit(next);
409
+ }
410
+ OnDeleteElement() {
411
+ const el = this.SelectedElement;
412
+ if (!el)
413
+ return;
414
+ this.ElementDeleted.emit(el.id);
415
+ }
416
+ OnSectionTitleInput(event) {
417
+ const s = this.SelectedSection;
418
+ if (!s)
419
+ return;
420
+ const next = { ...s, title: event.target.value };
421
+ this.SectionChanged.emit(next);
422
+ }
423
+ OnSectionColumnsChange(event) {
424
+ const s = this.SelectedSection;
425
+ if (!s)
426
+ return;
427
+ const v = Number(event.target.value);
428
+ const next = { ...s, columns: (v === 2 ? 2 : 1) };
429
+ this.SectionChanged.emit(next);
430
+ }
431
+ OnSectionCollapsibleChange(event) {
432
+ const s = this.SelectedSection;
433
+ if (!s)
434
+ return;
435
+ const next = { ...s, collapsible: event.target.checked };
436
+ this.SectionChanged.emit(next);
437
+ }
438
+ OnDeleteSection() {
439
+ const s = this.SelectedSection;
440
+ if (!s)
441
+ return;
442
+ this.SectionDeleted.emit(s.id);
443
+ }
444
+ OnPaletteClick(field) {
445
+ this.FieldAdded.emit({ fieldName: field.name });
446
+ }
447
+ recomputeBoundFields() {
448
+ this.boundFieldNames = new Set();
449
+ if (!this._canvas)
450
+ return;
451
+ for (const section of this._canvas.sections) {
452
+ for (const element of section.elements) {
453
+ if (element.type === 'field' && element.fieldName) {
454
+ this.boundFieldNames.add(element.fieldName);
455
+ }
456
+ }
457
+ }
458
+ }
459
+ static ɵfac = function FormBuilderRightPanelComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || FormBuilderRightPanelComponent)(); };
460
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: FormBuilderRightPanelComponent, selectors: [["mj-form-builder-right-panel"]], inputs: { Schema: "Schema", Canvas: "Canvas", SelectedElementId: "SelectedElementId", SelectedSectionId: "SelectedSectionId" }, outputs: { ElementChanged: "ElementChanged", SectionChanged: "SectionChanged", ElementDeleted: "ElementDeleted", SectionDeleted: "SectionDeleted", FieldAdded: "FieldAdded" }, standalone: false, decls: 5, vars: 1, consts: [[1, "right-panel"], [1, "empty-state"], [1, "panel-header"], [1, "header-title"], [1, "fa-solid", "fa-sliders"], ["title", "Delete element", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "inspector-body"], [1, "field-summary"], [1, "field-summary-name"], [1, "field-summary-meta"], [1, "badge", "badge-type"], [1, "badge", "badge-fk"], [1, "form-field"], ["type", "text", 3, "input", "value", "placeholder"], ["type", "text", "placeholder", "Optional \u2014 shown beneath the input", 3, "input", "value"], [1, "form-row"], [1, "checkbox"], ["type", "checkbox", 3, "change", "checked"], [1, "form-field", "form-field-inline"], [3, "change", "value"], ["value", "1"], ["value", "2"], ["type", "text", "placeholder", "Section description, instructions...", 3, "input", "value"], ["type", "text", 3, "input", "value"], ["type", "text", "placeholder", "record.Quantity * record.UnitPrice", 3, "input", "value"], [1, "muted"], [1, "fa-solid", "fa-layer-group"], ["title", "Delete section", 1, "icon-btn", 3, "click"], [1, "fa-solid", "fa-list-check"], [1, "palette-search"], ["type", "text", "placeholder", "Filter fields\u2026", 3, "input", "value"], [1, "palette-list"], ["draggable", "true", 1, "palette-row", 3, "bound"], [1, "palette-footer"], ["draggable", "true", 1, "palette-row", 3, "click", "dragstart"], [1, "palette-glyph"], [1, "fa-solid", "fa-circle-check"], [1, "fa-regular", "fa-circle"], [1, "palette-body"], [1, "palette-name"], ["title", "Required", 1, "palette-required"], [1, "palette-meta"], [1, "badge", "badge-enum"], [1, "fa-solid", "fa-circle-info"]], template: function FormBuilderRightPanelComponent_Template(rf, ctx) { if (rf & 1) {
461
+ i0.ɵɵelementStart(0, "div", 0);
462
+ i0.ɵɵconditionalCreate(1, FormBuilderRightPanelComponent_Conditional_1_Template, 11, 1)(2, FormBuilderRightPanelComponent_Conditional_2_Template, 24, 3)(3, FormBuilderRightPanelComponent_Conditional_3_Template, 13, 1)(4, FormBuilderRightPanelComponent_Conditional_4_Template, 4, 0, "div", 1);
463
+ i0.ɵɵelementEnd();
464
+ } if (rf & 2) {
465
+ i0.ɵɵadvance();
466
+ i0.ɵɵconditional(ctx.SelectedElement ? 1 : ctx.SelectedSection ? 2 : ctx.Schema ? 3 : 4);
467
+ } }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption], styles: ["[_nghost-%COMP%] { display: block; height: 100%; overflow: hidden; }\n.right-panel[_ngcontent-%COMP%] { display: flex; flex-direction: column; height: 100%; background: var(--mj-bg-surface); }\n\n.panel-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 14px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n.header-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n.header-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { color: var(--mj-brand-primary); }\n.icon-btn[_ngcontent-%COMP%] {\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-text-muted);\n}\n.icon-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-status-error);\n}\n\n.inspector-body[_ngcontent-%COMP%] { padding: 12px 14px; display: flex; flex-direction: column; gap: 12px; overflow-y: auto; flex: 1; }\n\n.field-summary[_ngcontent-%COMP%] {\n padding: 10px 12px;\n border-radius: 4px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n}\n.field-summary-name[_ngcontent-%COMP%] { font-size: 13px; font-weight: 600; color: var(--mj-text-primary); }\n.field-summary-meta[_ngcontent-%COMP%] { display: flex; gap: 6px; margin-top: 4px; }\n\n.form-field[_ngcontent-%COMP%] { display: flex; flex-direction: column; gap: 4px; }\n.form-field[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n.form-field[_ngcontent-%COMP%] input[_ngcontent-%COMP%], .form-field[_ngcontent-%COMP%] select[_ngcontent-%COMP%] {\n padding: 6px 8px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n.form-field[_ngcontent-%COMP%] small[_ngcontent-%COMP%] { font-size: 11px; color: var(--mj-text-muted); margin-top: 2px; }\n.form-field[_ngcontent-%COMP%] small[_ngcontent-%COMP%] code[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n padding: 1px 4px;\n border-radius: 3px;\n font-size: 10px;\n}\n.form-field-inline[_ngcontent-%COMP%] { flex: 1; }\n\n.form-row[_ngcontent-%COMP%] { display: flex; align-items: flex-end; gap: 14px; }\n\n.checkbox[_ngcontent-%COMP%] { display: inline-flex; gap: 8px; align-items: center; font-size: 13px; color: var(--mj-text-primary); cursor: pointer; }\n.checkbox[_ngcontent-%COMP%] input[_ngcontent-%COMP%] { margin: 0; }\n\n.palette-search[_ngcontent-%COMP%] { padding: 10px 14px 6px 14px; flex-shrink: 0; }\n.palette-search[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 6px 8px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.palette-list[_ngcontent-%COMP%] {\n list-style: none;\n padding: 0 8px 8px;\n margin: 0;\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.palette-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 8px;\n border: 1px solid transparent;\n border-radius: 4px;\n cursor: grab;\n transition: background 0.1s, border-color 0.1s;\n}\n.palette-row[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-default);\n}\n.palette-row.bound[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 8%, transparent);\n}\n.palette-row[_ngcontent-%COMP%]:active { cursor: grabbing; }\n\n.palette-glyph[_ngcontent-%COMP%] { width: 16px; padding-top: 2px; }\n.palette-glyph[_ngcontent-%COMP%] .fa-circle-check[_ngcontent-%COMP%] { color: var(--mj-status-success); }\n.palette-glyph[_ngcontent-%COMP%] .fa-circle[_ngcontent-%COMP%] { color: var(--mj-text-disabled); }\n\n.palette-body[_ngcontent-%COMP%] { flex: 1; min-width: 0; }\n.palette-name[_ngcontent-%COMP%] {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n.palette-required[_ngcontent-%COMP%] { color: var(--mj-status-error); margin-left: 4px; }\n.palette-meta[_ngcontent-%COMP%] { display: flex; gap: 6px; margin-top: 4px; flex-wrap: wrap; }\n\n.badge[_ngcontent-%COMP%] {\n padding: 1px 6px;\n border-radius: 999px;\n font-size: 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n.badge-type[_ngcontent-%COMP%] { background: var(--mj-bg-surface-sunken); }\n.badge-fk[_ngcontent-%COMP%] { color: var(--mj-brand-primary); background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent); }\n.badge-enum[_ngcontent-%COMP%] { color: var(--mj-status-info); background: color-mix(in srgb, var(--mj-status-info) 10%, transparent); }\n\n.palette-footer[_ngcontent-%COMP%] {\n padding: 8px 14px;\n border-top: 1px solid var(--mj-border-default);\n color: var(--mj-text-muted);\n font-size: 11px;\n flex-shrink: 0;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n padding: 36px 16px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n.empty-state[_ngcontent-%COMP%] i[_ngcontent-%COMP%] { font-size: 18px; margin-bottom: 8px; color: var(--mj-text-disabled); }\n.muted[_ngcontent-%COMP%] { color: var(--mj-text-muted); font-size: 12px; }"], changeDetection: 0 });
468
+ }
469
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormBuilderRightPanelComponent, [{
470
+ type: Component,
471
+ args: [{ standalone: false, selector: 'mj-form-builder-right-panel', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"right-panel\">\n @if (SelectedElement) {\n <!-- ============== INSPECTOR MODE ============== -->\n <header class=\"panel-header\">\n <div class=\"header-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n <span>Element Properties</span>\n </div>\n <button class=\"icon-btn\" title=\"Delete element\" (click)=\"OnDeleteElement()\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </header>\n\n @if (SelectedElement.type === 'field' && SelectedField) {\n <section class=\"inspector-body\">\n <div class=\"field-summary\">\n <div class=\"field-summary-name\">{{ SelectedField.displayName || SelectedField.name }}</div>\n <div class=\"field-summary-meta\">\n <span class=\"badge badge-type\">{{ SelectedField.type }}</span>\n @if (SelectedField.references?.entity) {\n <span class=\"badge badge-fk\">\u2192 {{ SelectedField.references!.entity }}</span>\n }\n </div>\n </div>\n\n <div class=\"form-field\">\n <label>Label override</label>\n <input type=\"text\" [value]=\"SelectedElement.label ?? ''\"\n (input)=\"OnElementLabelInput($event)\"\n [placeholder]=\"SelectedField.displayName ?? SelectedField.name\" />\n </div>\n\n <div class=\"form-field\">\n <label>Helper text</label>\n <input type=\"text\" [value]=\"SelectedElement.helper ?? ''\"\n (input)=\"OnElementHelperInput($event)\"\n placeholder=\"Optional \u2014 shown beneath the input\" />\n </div>\n\n <div class=\"form-row\">\n <label class=\"checkbox\">\n <input type=\"checkbox\" [checked]=\"SelectedElement.required ?? SelectedField.required\"\n (change)=\"OnElementRequiredChange($event)\" />\n <span>Required</span>\n </label>\n\n <div class=\"form-field form-field-inline\">\n <label>Span</label>\n <select [value]=\"(SelectedElement.span ?? 1).toString()\" (change)=\"OnElementSpanChange($event)\">\n <option value=\"1\">Half</option>\n <option value=\"2\">Full width</option>\n </select>\n </div>\n </div>\n </section>\n } @else if (SelectedElement.type === 'static-text') {\n <section class=\"inspector-body\">\n <div class=\"form-field\">\n <label>Static text</label>\n <input type=\"text\" [value]=\"SelectedElement.text ?? ''\"\n (input)=\"OnElementTextInput($event)\" placeholder=\"Section description, instructions...\" />\n </div>\n <div class=\"form-field form-field-inline\">\n <label>Span</label>\n <select [value]=\"(SelectedElement.span ?? 1).toString()\" (change)=\"OnElementSpanChange($event)\">\n <option value=\"1\">Half</option>\n <option value=\"2\">Full width</option>\n </select>\n </div>\n </section>\n } @else if (SelectedElement.type === 'computed') {\n <section class=\"inspector-body\">\n <div class=\"form-field\">\n <label>Label</label>\n <input type=\"text\" [value]=\"SelectedElement.label ?? ''\" (input)=\"OnElementLabelInput($event)\" />\n </div>\n <div class=\"form-field\">\n <label>Expression</label>\n <input type=\"text\" [value]=\"SelectedElement.expression ?? ''\"\n (input)=\"OnElementExpressionInput($event)\"\n placeholder='record.Quantity * record.UnitPrice' />\n <small>Evaluated at runtime against <code>record</code>.</small>\n </div>\n </section>\n } @else if (SelectedElement.type === 'spacer') {\n <section class=\"inspector-body\">\n <p class=\"muted\">Spacer element. No properties.</p>\n </section>\n }\n\n } @else if (SelectedSection) {\n <!-- ============== SECTION INSPECTOR ============== -->\n <header class=\"panel-header\">\n <div class=\"header-title\">\n <i class=\"fa-solid fa-layer-group\"></i>\n <span>Section Properties</span>\n </div>\n <button class=\"icon-btn\" title=\"Delete section\" (click)=\"OnDeleteSection()\">\n <i class=\"fa-solid fa-trash\"></i>\n </button>\n </header>\n\n <section class=\"inspector-body\">\n <div class=\"form-field\">\n <label>Title</label>\n <input type=\"text\" [value]=\"SelectedSection.title\" (input)=\"OnSectionTitleInput($event)\" />\n </div>\n <div class=\"form-field form-field-inline\">\n <label>Columns</label>\n <select [value]=\"SelectedSection.columns.toString()\" (change)=\"OnSectionColumnsChange($event)\">\n <option value=\"1\">1 column</option>\n <option value=\"2\">2 columns</option>\n </select>\n </div>\n <label class=\"checkbox\">\n <input type=\"checkbox\" [checked]=\"SelectedSection.collapsible\" (change)=\"OnSectionCollapsibleChange($event)\" />\n <span>Collapsible</span>\n </label>\n </section>\n\n } @else if (Schema) {\n <!-- ============== PALETTE MODE ============== -->\n <header class=\"panel-header\">\n <div class=\"header-title\">\n <i class=\"fa-solid fa-list-check\"></i>\n <span>Field Palette</span>\n </div>\n </header>\n\n <section class=\"palette-search\">\n <input type=\"text\" placeholder=\"Filter fields\u2026\" [value]=\"Search\" (input)=\"OnSearchInput($event)\" />\n </section>\n\n <ul class=\"palette-list\">\n @for (f of filteredFields; track f.name) {\n <li class=\"palette-row\"\n [class.bound]=\"isBound(f.name)\"\n (click)=\"OnPaletteClick(f)\"\n [attr.data-field-name]=\"f.name\"\n draggable=\"true\"\n (dragstart)=\"$any($event).dataTransfer?.setData('text/x-mj-form-field', f.name)\">\n <span class=\"palette-glyph\">\n @if (isBound(f.name)) {\n <i class=\"fa-solid fa-circle-check\"></i>\n } @else {\n <i class=\"fa-regular fa-circle\"></i>\n }\n </span>\n <div class=\"palette-body\">\n <div class=\"palette-name\">\n {{ f.displayName || f.name }}\n @if (f.required) {\n <span class=\"palette-required\" title=\"Required\">*</span>\n }\n </div>\n <div class=\"palette-meta\">\n <span class=\"badge badge-type\">{{ f.type }}</span>\n @if (f.references?.entity) {\n <span class=\"badge badge-fk\">\u2192 {{ f.references!.entity }}</span>\n }\n @if (f.allowedValues && f.allowedValues.length > 0) {\n <span class=\"badge badge-enum\">{{ f.allowedValues!.length }} values</span>\n }\n </div>\n </div>\n </li>\n }\n </ul>\n\n <footer class=\"palette-footer\">\n <small>Drag a field onto a section, or click to add to the focused section.</small>\n </footer>\n\n } @else {\n <!-- ============== EMPTY ============== -->\n <div class=\"empty-state\">\n <i class=\"fa-solid fa-circle-info\"></i>\n <p>Pick an entity from the canvas toolbar to load its field palette.</p>\n </div>\n }\n</div>\n", styles: [":host { display: block; height: 100%; overflow: hidden; }\n.right-panel { display: flex; flex-direction: column; height: 100%; background: var(--mj-bg-surface); }\n\n.panel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 14px;\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n}\n.header-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n font-size: 13px;\n color: var(--mj-text-primary);\n}\n.header-title i { color: var(--mj-brand-primary); }\n.icon-btn {\n background: transparent;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n padding: 4px 8px;\n cursor: pointer;\n color: var(--mj-text-muted);\n}\n.icon-btn:hover {\n background: var(--mj-bg-surface-hover);\n color: var(--mj-status-error);\n}\n\n.inspector-body { padding: 12px 14px; display: flex; flex-direction: column; gap: 12px; overflow-y: auto; flex: 1; }\n\n.field-summary {\n padding: 10px 12px;\n border-radius: 4px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n}\n.field-summary-name { font-size: 13px; font-weight: 600; color: var(--mj-text-primary); }\n.field-summary-meta { display: flex; gap: 6px; margin-top: 4px; }\n\n.form-field { display: flex; flex-direction: column; gap: 4px; }\n.form-field label {\n font-size: 11px;\n color: var(--mj-text-muted);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n.form-field input, .form-field select {\n padding: 6px 8px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n.form-field small { font-size: 11px; color: var(--mj-text-muted); margin-top: 2px; }\n.form-field small code {\n background: var(--mj-bg-surface-sunken);\n padding: 1px 4px;\n border-radius: 3px;\n font-size: 10px;\n}\n.form-field-inline { flex: 1; }\n\n.form-row { display: flex; align-items: flex-end; gap: 14px; }\n\n.checkbox { display: inline-flex; gap: 8px; align-items: center; font-size: 13px; color: var(--mj-text-primary); cursor: pointer; }\n.checkbox input { margin: 0; }\n\n.palette-search { padding: 10px 14px 6px 14px; flex-shrink: 0; }\n.palette-search input {\n width: 100%;\n padding: 6px 8px;\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n font-size: 13px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.palette-list {\n list-style: none;\n padding: 0 8px 8px;\n margin: 0;\n flex: 1;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.palette-row {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 8px;\n border: 1px solid transparent;\n border-radius: 4px;\n cursor: grab;\n transition: background 0.1s, border-color 0.1s;\n}\n.palette-row:hover {\n background: var(--mj-bg-surface-hover);\n border-color: var(--mj-border-default);\n}\n.palette-row.bound {\n background: color-mix(in srgb, var(--mj-status-success) 8%, transparent);\n}\n.palette-row:active { cursor: grabbing; }\n\n.palette-glyph { width: 16px; padding-top: 2px; }\n.palette-glyph .fa-circle-check { color: var(--mj-status-success); }\n.palette-glyph .fa-circle { color: var(--mj-text-disabled); }\n\n.palette-body { flex: 1; min-width: 0; }\n.palette-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-primary);\n}\n.palette-required { color: var(--mj-status-error); margin-left: 4px; }\n.palette-meta { display: flex; gap: 6px; margin-top: 4px; flex-wrap: wrap; }\n\n.badge {\n padding: 1px 6px;\n border-radius: 999px;\n font-size: 10px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n}\n.badge-type { background: var(--mj-bg-surface-sunken); }\n.badge-fk { color: var(--mj-brand-primary); background: color-mix(in srgb, var(--mj-brand-primary) 10%, transparent); }\n.badge-enum { color: var(--mj-status-info); background: color-mix(in srgb, var(--mj-status-info) 10%, transparent); }\n\n.palette-footer {\n padding: 8px 14px;\n border-top: 1px solid var(--mj-border-default);\n color: var(--mj-text-muted);\n font-size: 11px;\n flex-shrink: 0;\n}\n\n.empty-state {\n padding: 36px 16px;\n text-align: center;\n color: var(--mj-text-muted);\n font-size: 13px;\n}\n.empty-state i { font-size: 18px; margin-bottom: 8px; color: var(--mj-text-disabled); }\n.muted { color: var(--mj-text-muted); font-size: 12px; }\n"] }]
472
+ }], null, { Schema: [{
473
+ type: Input
474
+ }], Canvas: [{
475
+ type: Input
476
+ }], SelectedElementId: [{
477
+ type: Input
478
+ }], SelectedSectionId: [{
479
+ type: Input
480
+ }], ElementChanged: [{
481
+ type: Output
482
+ }], SectionChanged: [{
483
+ type: Output
484
+ }], ElementDeleted: [{
485
+ type: Output
486
+ }], SectionDeleted: [{
487
+ type: Output
488
+ }], FieldAdded: [{
489
+ type: Output
490
+ }] }); })();
491
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(FormBuilderRightPanelComponent, { className: "FormBuilderRightPanelComponent", filePath: "src/ComponentStudio/components/form-builder/form-builder-right-panel.component.ts", lineNumber: 34 }); })();
492
+ //# sourceMappingURL=form-builder-right-panel.component.js.map