@memberjunction/ng-dashboards 3.4.0 → 4.0.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 (573) hide show
  1. package/dist/AI/ai-dashboard.component.d.ts +62 -0
  2. package/dist/AI/ai-dashboard.component.d.ts.map +1 -0
  3. package/dist/AI/ai-dashboard.component.js +338 -0
  4. package/dist/AI/ai-dashboard.component.js.map +1 -0
  5. package/dist/AI/components/agents/agent-configuration.component.d.ts +12 -5
  6. package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
  7. package/dist/AI/components/agents/agent-configuration.component.js +103 -44
  8. package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
  9. package/dist/AI/components/agents/agent-editor.component.d.ts +14 -5
  10. package/dist/AI/components/agents/agent-editor.component.d.ts.map +1 -1
  11. package/dist/AI/components/agents/agent-editor.component.js +149 -211
  12. package/dist/AI/components/agents/agent-editor.component.js.map +1 -1
  13. package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +1 -1
  14. package/dist/AI/components/agents/agent-filter-panel.component.js +4 -4
  15. package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -1
  16. package/dist/AI/components/charts/performance-heatmap.component.d.ts.map +1 -1
  17. package/dist/AI/components/charts/performance-heatmap.component.js +4 -6
  18. package/dist/AI/components/charts/performance-heatmap.component.js.map +1 -1
  19. package/dist/AI/components/charts/time-series-chart.component.d.ts.map +1 -1
  20. package/dist/AI/components/charts/time-series-chart.component.js +6 -7
  21. package/dist/AI/components/charts/time-series-chart.component.js.map +1 -1
  22. package/dist/AI/components/execution-monitoring.component.d.ts +0 -4
  23. package/dist/AI/components/execution-monitoring.component.d.ts.map +1 -1
  24. package/dist/AI/components/execution-monitoring.component.js +33 -37
  25. package/dist/AI/components/execution-monitoring.component.js.map +1 -1
  26. package/dist/AI/components/models/model-management-v2.component.d.ts +96 -0
  27. package/dist/AI/components/models/model-management-v2.component.d.ts.map +1 -0
  28. package/dist/AI/components/models/model-management-v2.component.js +981 -0
  29. package/dist/AI/components/models/model-management-v2.component.js.map +1 -0
  30. package/dist/AI/components/models/model-management.component.d.ts +3 -6
  31. package/dist/AI/components/models/model-management.component.d.ts.map +1 -1
  32. package/dist/AI/components/models/model-management.component.js +34 -27
  33. package/dist/AI/components/models/model-management.component.js.map +1 -1
  34. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.d.ts.map +1 -1
  35. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +22 -17
  36. package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js.map +1 -1
  37. package/dist/AI/components/prompts/prompt-filter-panel.component.d.ts.map +1 -1
  38. package/dist/AI/components/prompts/prompt-filter-panel.component.js +4 -4
  39. package/dist/AI/components/prompts/prompt-filter-panel.component.js.map +1 -1
  40. package/dist/AI/components/prompts/prompt-management-v2.component.d.ts +97 -0
  41. package/dist/AI/components/prompts/prompt-management-v2.component.d.ts.map +1 -0
  42. package/dist/AI/components/prompts/prompt-management-v2.component.js +811 -0
  43. package/dist/AI/components/prompts/prompt-management-v2.component.js.map +1 -0
  44. package/dist/AI/components/prompts/prompt-management.component.d.ts +3 -6
  45. package/dist/AI/components/prompts/prompt-management.component.d.ts.map +1 -1
  46. package/dist/AI/components/prompts/prompt-management.component.js +34 -32
  47. package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
  48. package/dist/AI/components/prompts/prompt-version-control.component.d.ts.map +1 -1
  49. package/dist/AI/components/prompts/prompt-version-control.component.js +33 -28
  50. package/dist/AI/components/prompts/prompt-version-control.component.js.map +1 -1
  51. package/dist/AI/components/system/system-config-filter-panel.component.d.ts.map +1 -1
  52. package/dist/AI/components/system/system-config-filter-panel.component.js +4 -4
  53. package/dist/AI/components/system/system-config-filter-panel.component.js.map +1 -1
  54. package/dist/AI/components/system/system-configuration.component.d.ts +0 -4
  55. package/dist/AI/components/system/system-configuration.component.d.ts.map +1 -1
  56. package/dist/AI/components/system/system-configuration.component.js +26 -27
  57. package/dist/AI/components/system/system-configuration.component.js.map +1 -1
  58. package/dist/AI/components/widgets/kpi-card.component.d.ts.map +1 -1
  59. package/dist/AI/components/widgets/kpi-card.component.js +52 -42
  60. package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
  61. package/dist/AI/components/widgets/live-execution-widget.component.d.ts.map +1 -1
  62. package/dist/AI/components/widgets/live-execution-widget.component.js +7 -7
  63. package/dist/AI/components/widgets/live-execution-widget.component.js.map +1 -1
  64. package/dist/APIKeys/api-applications-panel.component.d.ts +0 -2
  65. package/dist/APIKeys/api-applications-panel.component.d.ts.map +1 -1
  66. package/dist/APIKeys/api-applications-panel.component.js +193 -189
  67. package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
  68. package/dist/APIKeys/api-key-create-dialog.component.d.ts +0 -2
  69. package/dist/APIKeys/api-key-create-dialog.component.d.ts.map +1 -1
  70. package/dist/APIKeys/api-key-create-dialog.component.js +175 -180
  71. package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
  72. package/dist/APIKeys/api-key-edit-panel.component.d.ts +0 -2
  73. package/dist/APIKeys/api-key-edit-panel.component.d.ts.map +1 -1
  74. package/dist/APIKeys/api-key-edit-panel.component.js +231 -225
  75. package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
  76. package/dist/APIKeys/api-key-list.component.d.ts +0 -2
  77. package/dist/APIKeys/api-key-list.component.d.ts.map +1 -1
  78. package/dist/APIKeys/api-key-list.component.js +113 -114
  79. package/dist/APIKeys/api-key-list.component.js.map +1 -1
  80. package/dist/APIKeys/api-keys-resource.component.d.ts +0 -2
  81. package/dist/APIKeys/api-keys-resource.component.d.ts.map +1 -1
  82. package/dist/APIKeys/api-keys-resource.component.js +294 -302
  83. package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
  84. package/dist/APIKeys/api-scopes-panel.component.d.ts +0 -2
  85. package/dist/APIKeys/api-scopes-panel.component.d.ts.map +1 -1
  86. package/dist/APIKeys/api-scopes-panel.component.js +151 -155
  87. package/dist/APIKeys/api-scopes-panel.component.js.map +1 -1
  88. package/dist/APIKeys/api-usage-panel.component.d.ts +0 -2
  89. package/dist/APIKeys/api-usage-panel.component.d.ts.map +1 -1
  90. package/dist/APIKeys/api-usage-panel.component.js +237 -234
  91. package/dist/APIKeys/api-usage-panel.component.js.map +1 -1
  92. package/dist/Actions/actions-management-dashboard.component.d.ts +52 -0
  93. package/dist/Actions/actions-management-dashboard.component.d.ts.map +1 -0
  94. package/dist/Actions/actions-management-dashboard.component.js +308 -0
  95. package/dist/Actions/actions-management-dashboard.component.js.map +1 -0
  96. package/dist/Actions/components/actions-list-view.component.d.ts.map +1 -1
  97. package/dist/Actions/components/actions-list-view.component.js +15 -14
  98. package/dist/Actions/components/actions-list-view.component.js.map +1 -1
  99. package/dist/Actions/components/actions-overview.component.d.ts +3 -6
  100. package/dist/Actions/components/actions-overview.component.d.ts.map +1 -1
  101. package/dist/Actions/components/actions-overview.component.js +17 -19
  102. package/dist/Actions/components/actions-overview.component.js.map +1 -1
  103. package/dist/Actions/components/categories-list-view.component.d.ts.map +1 -1
  104. package/dist/Actions/components/categories-list-view.component.js +6 -6
  105. package/dist/Actions/components/categories-list-view.component.js.map +1 -1
  106. package/dist/Actions/components/code-management.component.d.ts +0 -4
  107. package/dist/Actions/components/code-management.component.d.ts.map +1 -1
  108. package/dist/Actions/components/code-management.component.js +3 -9
  109. package/dist/Actions/components/code-management.component.js.map +1 -1
  110. package/dist/Actions/components/entity-integration.component.d.ts +0 -4
  111. package/dist/Actions/components/entity-integration.component.d.ts.map +1 -1
  112. package/dist/Actions/components/entity-integration.component.js +3 -9
  113. package/dist/Actions/components/entity-integration.component.js.map +1 -1
  114. package/dist/Actions/components/execution-monitoring.component.d.ts +3 -6
  115. package/dist/Actions/components/execution-monitoring.component.d.ts.map +1 -1
  116. package/dist/Actions/components/execution-monitoring.component.js +13 -16
  117. package/dist/Actions/components/execution-monitoring.component.js.map +1 -1
  118. package/dist/Actions/components/executions-list-view.component.d.ts.map +1 -1
  119. package/dist/Actions/components/executions-list-view.component.js +3 -3
  120. package/dist/Actions/components/executions-list-view.component.js.map +1 -1
  121. package/dist/Actions/components/explorer/action-breadcrumb.component.d.ts.map +1 -1
  122. package/dist/Actions/components/explorer/action-breadcrumb.component.js +6 -6
  123. package/dist/Actions/components/explorer/action-breadcrumb.component.js.map +1 -1
  124. package/dist/Actions/components/explorer/action-card.component.d.ts.map +1 -1
  125. package/dist/Actions/components/explorer/action-card.component.js +11 -10
  126. package/dist/Actions/components/explorer/action-card.component.js.map +1 -1
  127. package/dist/Actions/components/explorer/action-explorer.component.d.ts +0 -4
  128. package/dist/Actions/components/explorer/action-explorer.component.d.ts.map +1 -1
  129. package/dist/Actions/components/explorer/action-explorer.component.js +10 -14
  130. package/dist/Actions/components/explorer/action-explorer.component.js.map +1 -1
  131. package/dist/Actions/components/explorer/action-list-item.component.d.ts.map +1 -1
  132. package/dist/Actions/components/explorer/action-list-item.component.js +8 -8
  133. package/dist/Actions/components/explorer/action-list-item.component.js.map +1 -1
  134. package/dist/Actions/components/explorer/action-toolbar.component.d.ts.map +1 -1
  135. package/dist/Actions/components/explorer/action-toolbar.component.js +15 -14
  136. package/dist/Actions/components/explorer/action-toolbar.component.js.map +1 -1
  137. package/dist/Actions/components/explorer/action-tree-panel.component.d.ts.map +1 -1
  138. package/dist/Actions/components/explorer/action-tree-panel.component.js +11 -10
  139. package/dist/Actions/components/explorer/action-tree-panel.component.js.map +1 -1
  140. package/dist/Actions/components/explorer/index.d.ts +0 -1
  141. package/dist/Actions/components/explorer/index.d.ts.map +1 -1
  142. package/dist/Actions/components/explorer/index.js +0 -4
  143. package/dist/Actions/components/explorer/index.js.map +1 -1
  144. package/dist/Actions/components/explorer/new-action-panel.component.d.ts.map +1 -1
  145. package/dist/Actions/components/explorer/new-action-panel.component.js +10 -10
  146. package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
  147. package/dist/Actions/components/explorer/new-category-panel.component.d.ts.map +1 -1
  148. package/dist/Actions/components/explorer/new-category-panel.component.js +8 -8
  149. package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
  150. package/dist/Actions/components/scheduled-actions.component.d.ts +0 -4
  151. package/dist/Actions/components/scheduled-actions.component.d.ts.map +1 -1
  152. package/dist/Actions/components/scheduled-actions.component.js +3 -9
  153. package/dist/Actions/components/scheduled-actions.component.js.map +1 -1
  154. package/dist/Actions/components/security-permissions.component.d.ts +0 -4
  155. package/dist/Actions/components/security-permissions.component.d.ts.map +1 -1
  156. package/dist/Actions/components/security-permissions.component.js +3 -9
  157. package/dist/Actions/components/security-permissions.component.js.map +1 -1
  158. package/dist/Actions/index.d.ts +0 -7
  159. package/dist/Actions/index.d.ts.map +1 -1
  160. package/dist/Actions/index.js +0 -8
  161. package/dist/Actions/index.js.map +1 -1
  162. package/dist/Communication/communication-dashboard.component.d.ts +0 -1
  163. package/dist/Communication/communication-dashboard.component.d.ts.map +1 -1
  164. package/dist/Communication/communication-dashboard.component.js +38 -51
  165. package/dist/Communication/communication-dashboard.component.js.map +1 -1
  166. package/dist/Communication/communication-logs-resource.component.d.ts +0 -4
  167. package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
  168. package/dist/Communication/communication-logs-resource.component.js +112 -108
  169. package/dist/Communication/communication-logs-resource.component.js.map +1 -1
  170. package/dist/Communication/communication-monitor-resource.component.d.ts +0 -4
  171. package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
  172. package/dist/Communication/communication-monitor-resource.component.js +210 -201
  173. package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
  174. package/dist/Communication/communication-providers-resource.component.d.ts +0 -4
  175. package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
  176. package/dist/Communication/communication-providers-resource.component.js +136 -124
  177. package/dist/Communication/communication-providers-resource.component.js.map +1 -1
  178. package/dist/Communication/communication-runs-resource.component.d.ts +0 -4
  179. package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
  180. package/dist/Communication/communication-runs-resource.component.js +91 -88
  181. package/dist/Communication/communication-runs-resource.component.js.map +1 -1
  182. package/dist/Communication/communication-templates-resource.component.d.ts +0 -4
  183. package/dist/Communication/communication-templates-resource.component.d.ts.map +1 -1
  184. package/dist/Communication/communication-templates-resource.component.js +139 -122
  185. package/dist/Communication/communication-templates-resource.component.js.map +1 -1
  186. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts +0 -4
  187. package/dist/ComponentStudio/component-studio-dashboard.component.d.ts.map +1 -1
  188. package/dist/ComponentStudio/component-studio-dashboard.component.js +21 -20
  189. package/dist/ComponentStudio/component-studio-dashboard.component.js.map +1 -1
  190. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.d.ts.map +1 -1
  191. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +11 -12
  192. package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js.map +1 -1
  193. package/dist/ComponentStudio/components/artifact-load-dialog.component.d.ts.map +1 -1
  194. package/dist/ComponentStudio/components/artifact-load-dialog.component.js +25 -22
  195. package/dist/ComponentStudio/components/artifact-load-dialog.component.js.map +1 -1
  196. package/dist/ComponentStudio/components/artifact-selection-dialog.component.d.ts.map +1 -1
  197. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +16 -16
  198. package/dist/ComponentStudio/components/artifact-selection-dialog.component.js.map +1 -1
  199. package/dist/ComponentStudio/components/browser/component-browser.component.d.ts.map +1 -1
  200. package/dist/ComponentStudio/components/browser/component-browser.component.js +23 -21
  201. package/dist/ComponentStudio/components/browser/component-browser.component.js.map +1 -1
  202. package/dist/ComponentStudio/components/editors/code-editor-panel.component.d.ts.map +1 -1
  203. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +10 -10
  204. package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
  205. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.d.ts.map +1 -1
  206. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +13 -13
  207. package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
  208. package/dist/ComponentStudio/components/editors/requirements-editor.component.d.ts.map +1 -1
  209. package/dist/ComponentStudio/components/editors/requirements-editor.component.js +7 -7
  210. package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
  211. package/dist/ComponentStudio/components/editors/spec-editor.component.d.ts.map +1 -1
  212. package/dist/ComponentStudio/components/editors/spec-editor.component.js +5 -5
  213. package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
  214. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.d.ts.map +1 -1
  215. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +4 -4
  216. package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js.map +1 -1
  217. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.d.ts.map +1 -1
  218. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +9 -9
  219. package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
  220. package/dist/ComponentStudio/components/text-import-dialog.component.d.ts.map +1 -1
  221. package/dist/ComponentStudio/components/text-import-dialog.component.js +4 -4
  222. package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
  223. package/dist/ComponentStudio/components/workspace/component-preview.component.d.ts.map +1 -1
  224. package/dist/ComponentStudio/components/workspace/component-preview.component.js +10 -9
  225. package/dist/ComponentStudio/components/workspace/component-preview.component.js.map +1 -1
  226. package/dist/ComponentStudio/components/workspace/editor-tabs.component.d.ts.map +1 -1
  227. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +4 -4
  228. package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
  229. package/dist/Credentials/components/credential-category-edit-panel.component.d.ts +44 -0
  230. package/dist/Credentials/components/credential-category-edit-panel.component.d.ts.map +1 -0
  231. package/dist/Credentials/components/credential-category-edit-panel.component.js +456 -0
  232. package/dist/Credentials/components/credential-category-edit-panel.component.js.map +1 -0
  233. package/dist/Credentials/components/credential-edit-panel.component.d.ts +70 -0
  234. package/dist/Credentials/components/credential-edit-panel.component.d.ts.map +1 -0
  235. package/dist/Credentials/components/credential-edit-panel.component.js +694 -0
  236. package/dist/Credentials/components/credential-edit-panel.component.js.map +1 -0
  237. package/dist/Credentials/components/credential-type-edit-panel.component.d.ts +56 -0
  238. package/dist/Credentials/components/credential-type-edit-panel.component.d.ts.map +1 -0
  239. package/dist/Credentials/components/credential-type-edit-panel.component.js +563 -0
  240. package/dist/Credentials/components/credential-type-edit-panel.component.js.map +1 -0
  241. package/dist/Credentials/components/credentials-audit-resource.component.d.ts +0 -1
  242. package/dist/Credentials/components/credentials-audit-resource.component.d.ts.map +1 -1
  243. package/dist/Credentials/components/credentials-audit-resource.component.js +200 -196
  244. package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
  245. package/dist/Credentials/components/credentials-categories-resource.component.d.ts +0 -1
  246. package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
  247. package/dist/Credentials/components/credentials-categories-resource.component.js +195 -190
  248. package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
  249. package/dist/Credentials/components/credentials-list-resource.component.d.ts +0 -1
  250. package/dist/Credentials/components/credentials-list-resource.component.d.ts.map +1 -1
  251. package/dist/Credentials/components/credentials-list-resource.component.js +251 -240
  252. package/dist/Credentials/components/credentials-list-resource.component.js.map +1 -1
  253. package/dist/Credentials/components/credentials-overview-resource.component.d.ts +0 -1
  254. package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
  255. package/dist/Credentials/components/credentials-overview-resource.component.js +228 -226
  256. package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
  257. package/dist/Credentials/components/credentials-types-resource.component.d.ts +0 -1
  258. package/dist/Credentials/components/credentials-types-resource.component.d.ts.map +1 -1
  259. package/dist/Credentials/components/credentials-types-resource.component.js +214 -210
  260. package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
  261. package/dist/Credentials/credentials-dashboard.component.d.ts +0 -1
  262. package/dist/Credentials/credentials-dashboard.component.d.ts.map +1 -1
  263. package/dist/Credentials/credentials-dashboard.component.js +31 -44
  264. package/dist/Credentials/credentials-dashboard.component.js.map +1 -1
  265. package/dist/Credentials/pipes/group-by.pipe.d.ts.map +1 -1
  266. package/dist/Credentials/pipes/group-by.pipe.js +2 -1
  267. package/dist/Credentials/pipes/group-by.pipe.js.map +1 -1
  268. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts +0 -1
  269. package/dist/DashboardBrowser/dashboard-browser-resource.component.d.ts.map +1 -1
  270. package/dist/DashboardBrowser/dashboard-browser-resource.component.js +73 -80
  271. package/dist/DashboardBrowser/dashboard-browser-resource.component.js.map +1 -1
  272. package/dist/DashboardBrowser/dashboard-share-dialog.component.d.ts.map +1 -1
  273. package/dist/DashboardBrowser/dashboard-share-dialog.component.js +46 -45
  274. package/dist/DashboardBrowser/dashboard-share-dialog.component.js.map +1 -1
  275. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.d.ts.map +1 -1
  276. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +7 -7
  277. package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js.map +1 -1
  278. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.d.ts.map +1 -1
  279. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +15 -15
  280. package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js.map +1 -1
  281. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts +245 -0
  282. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.d.ts.map +1 -0
  283. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js +1143 -0
  284. package/dist/DataExplorer/components/view-config-panel/view-config-panel.component.js.map +1 -0
  285. package/dist/DataExplorer/components/view-selector/view-selector.component.d.ts.map +1 -1
  286. package/dist/DataExplorer/components/view-selector/view-selector.component.js +17 -11
  287. package/dist/DataExplorer/components/view-selector/view-selector.component.js.map +1 -1
  288. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts +0 -4
  289. package/dist/DataExplorer/data-explorer-dashboard.component.d.ts.map +1 -1
  290. package/dist/DataExplorer/data-explorer-dashboard.component.js +49 -54
  291. package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
  292. package/dist/DataExplorer/data-explorer-resource.component.d.ts +0 -1
  293. package/dist/DataExplorer/data-explorer-resource.component.d.ts.map +1 -1
  294. package/dist/DataExplorer/data-explorer-resource.component.js +3 -6
  295. package/dist/DataExplorer/data-explorer-resource.component.js.map +1 -1
  296. package/dist/DataExplorer/index.d.ts +2 -2
  297. package/dist/DataExplorer/index.d.ts.map +1 -1
  298. package/dist/DataExplorer/index.js +2 -2
  299. package/dist/DataExplorer/index.js.map +1 -1
  300. package/dist/EntityAdmin/components/entity-details.component.d.ts +50 -0
  301. package/dist/EntityAdmin/components/entity-details.component.d.ts.map +1 -0
  302. package/dist/EntityAdmin/components/entity-details.component.js +680 -0
  303. package/dist/EntityAdmin/components/entity-details.component.js.map +1 -0
  304. package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts +31 -0
  305. package/dist/EntityAdmin/components/entity-filter-panel.component.d.ts.map +1 -0
  306. package/dist/EntityAdmin/components/entity-filter-panel.component.js +160 -0
  307. package/dist/EntityAdmin/components/entity-filter-panel.component.js.map +1 -0
  308. package/dist/EntityAdmin/components/erd-composite.component.d.ts +73 -0
  309. package/dist/EntityAdmin/components/erd-composite.component.d.ts.map +1 -0
  310. package/dist/EntityAdmin/components/erd-composite.component.js +271 -0
  311. package/dist/EntityAdmin/components/erd-composite.component.js.map +1 -0
  312. package/dist/EntityAdmin/components/erd-diagram.component.d.ts +47 -0
  313. package/dist/EntityAdmin/components/erd-diagram.component.d.ts.map +1 -0
  314. package/dist/EntityAdmin/components/erd-diagram.component.js +618 -0
  315. package/dist/EntityAdmin/components/erd-diagram.component.js.map +1 -0
  316. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts +0 -1
  317. package/dist/EntityAdmin/entity-admin-dashboard.component.d.ts.map +1 -1
  318. package/dist/EntityAdmin/entity-admin-dashboard.component.js +6 -7
  319. package/dist/EntityAdmin/entity-admin-dashboard.component.js.map +1 -1
  320. package/dist/Home/home-application.d.ts +0 -5
  321. package/dist/Home/home-application.d.ts.map +1 -1
  322. package/dist/Home/home-application.js +0 -9
  323. package/dist/Home/home-application.js.map +1 -1
  324. package/dist/Home/home-dashboard.component.d.ts +0 -4
  325. package/dist/Home/home-dashboard.component.d.ts.map +1 -1
  326. package/dist/Home/home-dashboard.component.js +141 -139
  327. package/dist/Home/home-dashboard.component.js.map +1 -1
  328. package/dist/Lists/components/lists-browse-resource.component.d.ts +0 -1
  329. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  330. package/dist/Lists/components/lists-browse-resource.component.js +761 -685
  331. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  332. package/dist/Lists/components/lists-categories-resource.component.d.ts +0 -1
  333. package/dist/Lists/components/lists-categories-resource.component.d.ts.map +1 -1
  334. package/dist/Lists/components/lists-categories-resource.component.js +340 -316
  335. package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
  336. package/dist/Lists/components/lists-my-lists-resource.component.d.ts +0 -1
  337. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  338. package/dist/Lists/components/lists-my-lists-resource.component.js +530 -482
  339. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  340. package/dist/Lists/components/lists-operations-resource.component.d.ts +0 -1
  341. package/dist/Lists/components/lists-operations-resource.component.d.ts.map +1 -1
  342. package/dist/Lists/components/lists-operations-resource.component.js +508 -455
  343. package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
  344. package/dist/Lists/components/venn-diagram/venn-diagram.component.d.ts.map +1 -1
  345. package/dist/Lists/components/venn-diagram/venn-diagram.component.js +44 -39
  346. package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
  347. package/dist/Lists/index.d.ts +0 -1
  348. package/dist/Lists/index.d.ts.map +1 -1
  349. package/dist/Lists/index.js +0 -11
  350. package/dist/Lists/index.js.map +1 -1
  351. package/dist/MCP/components/mcp-connection-dialog.component.d.ts +0 -4
  352. package/dist/MCP/components/mcp-connection-dialog.component.d.ts.map +1 -1
  353. package/dist/MCP/components/mcp-connection-dialog.component.js +33 -39
  354. package/dist/MCP/components/mcp-connection-dialog.component.js.map +1 -1
  355. package/dist/MCP/components/mcp-log-detail-panel.component.d.ts +0 -4
  356. package/dist/MCP/components/mcp-log-detail-panel.component.d.ts.map +1 -1
  357. package/dist/MCP/components/mcp-log-detail-panel.component.js +42 -44
  358. package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
  359. package/dist/MCP/components/mcp-server-dialog.component.d.ts +3 -4
  360. package/dist/MCP/components/mcp-server-dialog.component.d.ts.map +1 -1
  361. package/dist/MCP/components/mcp-server-dialog.component.js +186 -77
  362. package/dist/MCP/components/mcp-server-dialog.component.js.map +1 -1
  363. package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts +0 -4
  364. package/dist/MCP/components/mcp-test-tool-dialog.component.d.ts.map +1 -1
  365. package/dist/MCP/components/mcp-test-tool-dialog.component.js +187 -187
  366. package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
  367. package/dist/MCP/index.d.ts +5 -5
  368. package/dist/MCP/index.d.ts.map +1 -1
  369. package/dist/MCP/index.js +5 -5
  370. package/dist/MCP/index.js.map +1 -1
  371. package/dist/MCP/mcp-dashboard.component.d.ts +65 -7
  372. package/dist/MCP/mcp-dashboard.component.d.ts.map +1 -1
  373. package/dist/MCP/mcp-dashboard.component.js +976 -697
  374. package/dist/MCP/mcp-dashboard.component.js.map +1 -1
  375. package/dist/MCP/mcp-filter-panel.component.d.ts +54 -0
  376. package/dist/MCP/mcp-filter-panel.component.d.ts.map +1 -0
  377. package/dist/MCP/mcp-filter-panel.component.js +288 -0
  378. package/dist/MCP/mcp-filter-panel.component.js.map +1 -0
  379. package/dist/MCP/mcp-resource.component.d.ts +11 -5
  380. package/dist/MCP/mcp-resource.component.d.ts.map +1 -1
  381. package/dist/MCP/mcp-resource.component.js +8 -9
  382. package/dist/MCP/mcp-resource.component.js.map +1 -1
  383. package/dist/MCP/mcp.module.d.ts +16 -19
  384. package/dist/MCP/mcp.module.d.ts.map +1 -1
  385. package/dist/MCP/mcp.module.js +17 -26
  386. package/dist/MCP/mcp.module.js.map +1 -1
  387. package/dist/MCP/services/mcp-tools.service.d.ts +10 -4
  388. package/dist/MCP/services/mcp-tools.service.d.ts.map +1 -1
  389. package/dist/MCP/services/mcp-tools.service.js +5 -6
  390. package/dist/MCP/services/mcp-tools.service.js.map +1 -1
  391. package/dist/QueryBrowser/query-browser-resource.component.d.ts +0 -1
  392. package/dist/QueryBrowser/query-browser-resource.component.d.ts.map +1 -1
  393. package/dist/QueryBrowser/query-browser-resource.component.js +79 -88
  394. package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
  395. package/dist/Scheduling/components/job-slideout.component.d.ts.map +1 -1
  396. package/dist/Scheduling/components/job-slideout.component.js +117 -116
  397. package/dist/Scheduling/components/job-slideout.component.js.map +1 -1
  398. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts +0 -4
  399. package/dist/Scheduling/components/scheduling-activity-resource.component.d.ts.map +1 -1
  400. package/dist/Scheduling/components/scheduling-activity-resource.component.js +3 -9
  401. package/dist/Scheduling/components/scheduling-activity-resource.component.js.map +1 -1
  402. package/dist/Scheduling/components/scheduling-activity.component.d.ts.map +1 -1
  403. package/dist/Scheduling/components/scheduling-activity.component.js +134 -134
  404. package/dist/Scheduling/components/scheduling-activity.component.js.map +1 -1
  405. package/dist/Scheduling/components/scheduling-health-resource.component.d.ts +20 -0
  406. package/dist/Scheduling/components/scheduling-health-resource.component.d.ts.map +1 -0
  407. package/dist/Scheduling/components/scheduling-health-resource.component.js +55 -0
  408. package/dist/Scheduling/components/scheduling-health-resource.component.js.map +1 -0
  409. package/dist/Scheduling/components/scheduling-health.component.d.ts +30 -0
  410. package/dist/Scheduling/components/scheduling-health.component.d.ts.map +1 -0
  411. package/dist/Scheduling/components/scheduling-health.component.js +315 -0
  412. package/dist/Scheduling/components/scheduling-health.component.js.map +1 -0
  413. package/dist/Scheduling/components/scheduling-history-resource.component.d.ts +20 -0
  414. package/dist/Scheduling/components/scheduling-history-resource.component.d.ts.map +1 -0
  415. package/dist/Scheduling/components/scheduling-history-resource.component.js +55 -0
  416. package/dist/Scheduling/components/scheduling-history-resource.component.js.map +1 -0
  417. package/dist/Scheduling/components/scheduling-history.component.d.ts +48 -0
  418. package/dist/Scheduling/components/scheduling-history.component.d.ts.map +1 -0
  419. package/dist/Scheduling/components/scheduling-history.component.js +377 -0
  420. package/dist/Scheduling/components/scheduling-history.component.js.map +1 -0
  421. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts +0 -4
  422. package/dist/Scheduling/components/scheduling-jobs-resource.component.d.ts.map +1 -1
  423. package/dist/Scheduling/components/scheduling-jobs-resource.component.js +3 -9
  424. package/dist/Scheduling/components/scheduling-jobs-resource.component.js.map +1 -1
  425. package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
  426. package/dist/Scheduling/components/scheduling-jobs.component.js +102 -97
  427. package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
  428. package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts +20 -0
  429. package/dist/Scheduling/components/scheduling-monitor-resource.component.d.ts.map +1 -0
  430. package/dist/Scheduling/components/scheduling-monitor-resource.component.js +55 -0
  431. package/dist/Scheduling/components/scheduling-monitor-resource.component.js.map +1 -0
  432. package/dist/Scheduling/components/scheduling-monitoring.component.d.ts +37 -0
  433. package/dist/Scheduling/components/scheduling-monitoring.component.d.ts.map +1 -0
  434. package/dist/Scheduling/components/scheduling-monitoring.component.js +488 -0
  435. package/dist/Scheduling/components/scheduling-monitoring.component.js.map +1 -0
  436. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts +0 -4
  437. package/dist/Scheduling/components/scheduling-overview-resource.component.d.ts.map +1 -1
  438. package/dist/Scheduling/components/scheduling-overview-resource.component.js +3 -9
  439. package/dist/Scheduling/components/scheduling-overview-resource.component.js.map +1 -1
  440. package/dist/Scheduling/components/scheduling-overview.component.d.ts.map +1 -1
  441. package/dist/Scheduling/components/scheduling-overview.component.js +127 -122
  442. package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
  443. package/dist/Scheduling/components/scheduling-types-resource.component.d.ts +20 -0
  444. package/dist/Scheduling/components/scheduling-types-resource.component.d.ts.map +1 -0
  445. package/dist/Scheduling/components/scheduling-types-resource.component.js +55 -0
  446. package/dist/Scheduling/components/scheduling-types-resource.component.js.map +1 -0
  447. package/dist/Scheduling/components/scheduling-types.component.d.ts +22 -0
  448. package/dist/Scheduling/components/scheduling-types.component.d.ts.map +1 -0
  449. package/dist/Scheduling/components/scheduling-types.component.js +165 -0
  450. package/dist/Scheduling/components/scheduling-types.component.js.map +1 -0
  451. package/dist/Scheduling/scheduling-dashboard.component.d.ts +0 -1
  452. package/dist/Scheduling/scheduling-dashboard.component.d.ts.map +1 -1
  453. package/dist/Scheduling/scheduling-dashboard.component.js +35 -43
  454. package/dist/Scheduling/scheduling-dashboard.component.js.map +1 -1
  455. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts +0 -4
  456. package/dist/SystemDiagnostics/system-diagnostics.component.d.ts.map +1 -1
  457. package/dist/SystemDiagnostics/system-diagnostics.component.js +1552 -1534
  458. package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
  459. package/dist/Testing/components/testing-analytics-resource.component.d.ts.map +1 -1
  460. package/dist/Testing/components/testing-analytics-resource.component.js +3 -3
  461. package/dist/Testing/components/testing-analytics-resource.component.js.map +1 -1
  462. package/dist/Testing/components/testing-analytics.component.d.ts.map +1 -1
  463. package/dist/Testing/components/testing-analytics.component.js +30 -30
  464. package/dist/Testing/components/testing-analytics.component.js.map +1 -1
  465. package/dist/Testing/components/testing-dashboard-tab-resource.component.d.ts.map +1 -1
  466. package/dist/Testing/components/testing-dashboard-tab-resource.component.js +3 -3
  467. package/dist/Testing/components/testing-dashboard-tab-resource.component.js.map +1 -1
  468. package/dist/Testing/components/testing-dashboard-tab.component.d.ts.map +1 -1
  469. package/dist/Testing/components/testing-dashboard-tab.component.js +7 -7
  470. package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
  471. package/dist/Testing/components/testing-execution-resource.component.d.ts +20 -0
  472. package/dist/Testing/components/testing-execution-resource.component.d.ts.map +1 -0
  473. package/dist/Testing/components/testing-execution-resource.component.js +55 -0
  474. package/dist/Testing/components/testing-execution-resource.component.js.map +1 -0
  475. package/dist/Testing/components/testing-execution.component.d.ts +71 -0
  476. package/dist/Testing/components/testing-execution.component.d.ts.map +1 -0
  477. package/dist/Testing/components/testing-execution.component.js +845 -0
  478. package/dist/Testing/components/testing-execution.component.js.map +1 -0
  479. package/dist/Testing/components/testing-explorer-resource.component.d.ts.map +1 -1
  480. package/dist/Testing/components/testing-explorer-resource.component.js +3 -3
  481. package/dist/Testing/components/testing-explorer-resource.component.js.map +1 -1
  482. package/dist/Testing/components/testing-explorer.component.d.ts.map +1 -1
  483. package/dist/Testing/components/testing-explorer.component.js +42 -35
  484. package/dist/Testing/components/testing-explorer.component.js.map +1 -1
  485. package/dist/Testing/components/testing-feedback-resource.component.d.ts +20 -0
  486. package/dist/Testing/components/testing-feedback-resource.component.d.ts.map +1 -0
  487. package/dist/Testing/components/testing-feedback-resource.component.js +55 -0
  488. package/dist/Testing/components/testing-feedback-resource.component.js.map +1 -0
  489. package/dist/Testing/components/testing-feedback.component.d.ts +111 -0
  490. package/dist/Testing/components/testing-feedback.component.d.ts.map +1 -0
  491. package/dist/Testing/components/testing-feedback.component.js +1486 -0
  492. package/dist/Testing/components/testing-feedback.component.js.map +1 -0
  493. package/dist/Testing/components/testing-overview-resource.component.d.ts +20 -0
  494. package/dist/Testing/components/testing-overview-resource.component.d.ts.map +1 -0
  495. package/dist/Testing/components/testing-overview-resource.component.js +55 -0
  496. package/dist/Testing/components/testing-overview-resource.component.js.map +1 -0
  497. package/dist/Testing/components/testing-overview.component.d.ts +30 -0
  498. package/dist/Testing/components/testing-overview.component.d.ts.map +1 -0
  499. package/dist/Testing/components/testing-overview.component.js +361 -0
  500. package/dist/Testing/components/testing-overview.component.js.map +1 -0
  501. package/dist/Testing/components/testing-review-resource.component.d.ts.map +1 -1
  502. package/dist/Testing/components/testing-review-resource.component.js +3 -3
  503. package/dist/Testing/components/testing-review-resource.component.js.map +1 -1
  504. package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
  505. package/dist/Testing/components/testing-review.component.js +16 -16
  506. package/dist/Testing/components/testing-review.component.js.map +1 -1
  507. package/dist/Testing/components/testing-runs-resource.component.d.ts.map +1 -1
  508. package/dist/Testing/components/testing-runs-resource.component.js +3 -3
  509. package/dist/Testing/components/testing-runs-resource.component.js.map +1 -1
  510. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  511. package/dist/Testing/components/testing-runs.component.js +15 -15
  512. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  513. package/dist/Testing/components/testing-version-comparison.component.d.ts +62 -0
  514. package/dist/Testing/components/testing-version-comparison.component.d.ts.map +1 -0
  515. package/dist/Testing/components/testing-version-comparison.component.js +815 -0
  516. package/dist/Testing/components/testing-version-comparison.component.js.map +1 -0
  517. package/dist/Testing/components/testing-version-resource.component.d.ts +20 -0
  518. package/dist/Testing/components/testing-version-resource.component.d.ts.map +1 -0
  519. package/dist/Testing/components/testing-version-resource.component.js +55 -0
  520. package/dist/Testing/components/testing-version-resource.component.js.map +1 -0
  521. package/dist/Testing/components/widgets/oracle-breakdown-table.component.d.ts.map +1 -1
  522. package/dist/Testing/components/widgets/oracle-breakdown-table.component.js +73 -61
  523. package/dist/Testing/components/widgets/oracle-breakdown-table.component.js.map +1 -1
  524. package/dist/Testing/components/widgets/suite-tree.component.d.ts.map +1 -1
  525. package/dist/Testing/components/widgets/suite-tree.component.js +34 -31
  526. package/dist/Testing/components/widgets/suite-tree.component.js.map +1 -1
  527. package/dist/Testing/components/widgets/test-run-detail-panel.component.d.ts.map +1 -1
  528. package/dist/Testing/components/widgets/test-run-detail-panel.component.js +180 -171
  529. package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
  530. package/dist/Testing/testing-dashboard.component.d.ts +0 -1
  531. package/dist/Testing/testing-dashboard.component.d.ts.map +1 -1
  532. package/dist/Testing/testing-dashboard.component.js +9 -8
  533. package/dist/Testing/testing-dashboard.component.js.map +1 -1
  534. package/dist/VersionHistory/components/diff-resource.component.d.ts +119 -0
  535. package/dist/VersionHistory/components/diff-resource.component.d.ts.map +1 -0
  536. package/dist/VersionHistory/components/diff-resource.component.js +1162 -0
  537. package/dist/VersionHistory/components/diff-resource.component.js.map +1 -0
  538. package/dist/VersionHistory/components/graph-resource.component.d.ts +67 -0
  539. package/dist/VersionHistory/components/graph-resource.component.d.ts.map +1 -0
  540. package/dist/VersionHistory/components/graph-resource.component.js +521 -0
  541. package/dist/VersionHistory/components/graph-resource.component.js.map +1 -0
  542. package/dist/VersionHistory/components/index.d.ts +5 -0
  543. package/dist/VersionHistory/components/index.d.ts.map +1 -0
  544. package/dist/VersionHistory/components/index.js +5 -0
  545. package/dist/VersionHistory/components/index.js.map +1 -0
  546. package/dist/VersionHistory/components/labels-resource.component.d.ts +89 -0
  547. package/dist/VersionHistory/components/labels-resource.component.d.ts.map +1 -0
  548. package/dist/VersionHistory/components/labels-resource.component.js +968 -0
  549. package/dist/VersionHistory/components/labels-resource.component.js.map +1 -0
  550. package/dist/VersionHistory/components/restore-resource.component.d.ts +40 -0
  551. package/dist/VersionHistory/components/restore-resource.component.d.ts.map +1 -0
  552. package/dist/VersionHistory/components/restore-resource.component.js +472 -0
  553. package/dist/VersionHistory/components/restore-resource.component.js.map +1 -0
  554. package/dist/VersionHistory/index.d.ts +2 -0
  555. package/dist/VersionHistory/index.d.ts.map +1 -0
  556. package/dist/VersionHistory/index.js +2 -0
  557. package/dist/VersionHistory/index.js.map +1 -0
  558. package/dist/generic/base-dashboard.d.ts +65 -0
  559. package/dist/generic/base-dashboard.d.ts.map +1 -0
  560. package/dist/generic/base-dashboard.js +74 -0
  561. package/dist/generic/base-dashboard.js.map +1 -0
  562. package/dist/module.d.ts +42 -36
  563. package/dist/module.d.ts.map +1 -1
  564. package/dist/module.js +41 -7
  565. package/dist/module.js.map +1 -1
  566. package/dist/public-api.d.ts +20 -19
  567. package/dist/public-api.d.ts.map +1 -1
  568. package/dist/public-api.js +22 -120
  569. package/dist/public-api.js.map +1 -1
  570. package/dist/shared/pipes/highlight-search.pipe.d.ts.map +1 -1
  571. package/dist/shared/pipes/highlight-search.pipe.js +2 -1
  572. package/dist/shared/pipes/highlight-search.pipe.js.map +1 -1
  573. package/package.json +64 -62
@@ -1,12 +1,12 @@
1
1
  import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "../services/scheduling-instrumentation.service";
4
- import * as i2 from "@angular/common";
5
- import * as i3 from "@angular/forms";
6
- import * as i4 from "@memberjunction/ng-code-editor";
7
- function JobSlideoutComponent_div_9_Template(rf, ctx) { if (rf & 1) {
8
- i0.ɵɵelementStart(0, "div", 34);
9
- i0.ɵɵelement(1, "i", 35);
4
+ import * as i2 from "@angular/forms";
5
+ import * as i3 from "@memberjunction/ng-code-editor";
6
+ import * as i4 from "@angular/common";
7
+ function JobSlideoutComponent_Conditional_9_Template(rf, ctx) { if (rf & 1) {
8
+ i0.ɵɵelementStart(0, "div", 6);
9
+ i0.ɵɵelement(1, "i", 33);
10
10
  i0.ɵɵelementStart(2, "span");
11
11
  i0.ɵɵtext(3);
12
12
  i0.ɵɵelementEnd()();
@@ -15,8 +15,8 @@ function JobSlideoutComponent_div_9_Template(rf, ctx) { if (rf & 1) {
15
15
  i0.ɵɵadvance(3);
16
16
  i0.ɵɵtextInterpolate(ctx_r0.ErrorMessage);
17
17
  } }
18
- function JobSlideoutComponent_option_30_Template(rf, ctx) { if (rf & 1) {
19
- i0.ɵɵelementStart(0, "option", 36);
18
+ function JobSlideoutComponent_For_31_Template(rf, ctx) { if (rf & 1) {
19
+ i0.ɵɵelementStart(0, "option", 16);
20
20
  i0.ɵɵtext(1);
21
21
  i0.ɵɵelementEnd();
22
22
  } if (rf & 2) {
@@ -25,8 +25,8 @@ function JobSlideoutComponent_option_30_Template(rf, ctx) { if (rf & 1) {
25
25
  i0.ɵɵadvance();
26
26
  i0.ɵɵtextInterpolate(t_r2.name);
27
27
  } }
28
- function JobSlideoutComponent_option_35_Template(rf, ctx) { if (rf & 1) {
29
- i0.ɵɵelementStart(0, "option", 36);
28
+ function JobSlideoutComponent_For_37_Template(rf, ctx) { if (rf & 1) {
29
+ i0.ɵɵelementStart(0, "option", 16);
30
30
  i0.ɵɵtext(1);
31
31
  i0.ɵɵelementEnd();
32
32
  } if (rf & 2) {
@@ -35,8 +35,8 @@ function JobSlideoutComponent_option_35_Template(rf, ctx) { if (rf & 1) {
35
35
  i0.ɵɵadvance();
36
36
  i0.ɵɵtextInterpolate(s_r3);
37
37
  } }
38
- function JobSlideoutComponent_option_52_Template(rf, ctx) { if (rf & 1) {
39
- i0.ɵɵelementStart(0, "option", 36);
38
+ function JobSlideoutComponent_For_55_Template(rf, ctx) { if (rf & 1) {
39
+ i0.ɵɵelementStart(0, "option", 16);
40
40
  i0.ɵɵtext(1);
41
41
  i0.ɵɵelementEnd();
42
42
  } if (rf & 2) {
@@ -45,8 +45,8 @@ function JobSlideoutComponent_option_52_Template(rf, ctx) { if (rf & 1) {
45
45
  i0.ɵɵadvance();
46
46
  i0.ɵɵtextInterpolate(tz_r4);
47
47
  } }
48
- function JobSlideoutComponent_option_57_Template(rf, ctx) { if (rf & 1) {
49
- i0.ɵɵelementStart(0, "option", 36);
48
+ function JobSlideoutComponent_For_61_Template(rf, ctx) { if (rf & 1) {
49
+ i0.ɵɵelementStart(0, "option", 16);
50
50
  i0.ɵɵtext(1);
51
51
  i0.ɵɵelementEnd();
52
52
  } if (rf & 2) {
@@ -55,32 +55,32 @@ function JobSlideoutComponent_option_57_Template(rf, ctx) { if (rf & 1) {
55
55
  i0.ɵɵadvance();
56
56
  i0.ɵɵtextInterpolate(c_r5);
57
57
  } }
58
- function JobSlideoutComponent_div_80_Template(rf, ctx) { if (rf & 1) {
58
+ function JobSlideoutComponent_Conditional_84_Template(rf, ctx) { if (rf & 1) {
59
59
  i0.ɵɵelementStart(0, "div", 7)(1, "div", 8);
60
60
  i0.ɵɵtext(2, "Statistics");
61
61
  i0.ɵɵelementEnd();
62
- i0.ɵɵelementStart(3, "div", 37)(4, "div", 38)(5, "span", 39);
62
+ i0.ɵɵelementStart(3, "div", 34)(4, "div", 35)(5, "span", 36);
63
63
  i0.ɵɵtext(6, "Total Runs");
64
64
  i0.ɵɵelementEnd();
65
- i0.ɵɵelementStart(7, "span", 40);
65
+ i0.ɵɵelementStart(7, "span", 37);
66
66
  i0.ɵɵtext(8);
67
67
  i0.ɵɵelementEnd()();
68
- i0.ɵɵelementStart(9, "div", 38)(10, "span", 39);
68
+ i0.ɵɵelementStart(9, "div", 35)(10, "span", 36);
69
69
  i0.ɵɵtext(11, "Success");
70
70
  i0.ɵɵelementEnd();
71
- i0.ɵɵelementStart(12, "span", 41);
71
+ i0.ɵɵelementStart(12, "span", 38);
72
72
  i0.ɵɵtext(13);
73
73
  i0.ɵɵelementEnd()();
74
- i0.ɵɵelementStart(14, "div", 38)(15, "span", 39);
74
+ i0.ɵɵelementStart(14, "div", 35)(15, "span", 36);
75
75
  i0.ɵɵtext(16, "Failures");
76
76
  i0.ɵɵelementEnd();
77
- i0.ɵɵelementStart(17, "span", 42);
77
+ i0.ɵɵelementStart(17, "span", 39);
78
78
  i0.ɵɵtext(18);
79
79
  i0.ɵɵelementEnd()();
80
- i0.ɵɵelementStart(19, "div", 38)(20, "span", 39);
80
+ i0.ɵɵelementStart(19, "div", 35)(20, "span", 36);
81
81
  i0.ɵɵtext(21, "Created");
82
82
  i0.ɵɵelementEnd();
83
- i0.ɵɵelementStart(22, "span", 40);
83
+ i0.ɵɵelementStart(22, "span", 37);
84
84
  i0.ɵɵtext(23);
85
85
  i0.ɵɵpipe(24, "date");
86
86
  i0.ɵɵelementEnd()()()();
@@ -95,30 +95,30 @@ function JobSlideoutComponent_div_80_Template(rf, ctx) { if (rf & 1) {
95
95
  i0.ɵɵadvance(5);
96
96
  i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(24, 4, ctx_r0.Job.createdAt, "short"));
97
97
  } }
98
- function JobSlideoutComponent_button_83_Template(rf, ctx) { if (rf & 1) {
98
+ function JobSlideoutComponent_Conditional_87_Template(rf, ctx) { if (rf & 1) {
99
99
  const _r6 = i0.ɵɵgetCurrentView();
100
- i0.ɵɵelementStart(0, "button", 43);
101
- i0.ɵɵlistener("click", function JobSlideoutComponent_button_83_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.ShowDeleteConfirm = true); });
102
- i0.ɵɵelement(1, "i", 44);
100
+ i0.ɵɵelementStart(0, "button", 40);
101
+ i0.ɵɵlistener("click", function JobSlideoutComponent_Conditional_87_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.ShowDeleteConfirm = true); });
102
+ i0.ɵɵelement(1, "i", 41);
103
103
  i0.ɵɵtext(2, " Delete ");
104
104
  i0.ɵɵelementEnd();
105
105
  } if (rf & 2) {
106
106
  const ctx_r0 = i0.ɵɵnextContext();
107
107
  i0.ɵɵproperty("disabled", ctx_r0.IsDeleting);
108
108
  } }
109
- function JobSlideoutComponent_i_88_Template(rf, ctx) { if (rf & 1) {
110
- i0.ɵɵelement(0, "i", 45);
109
+ function JobSlideoutComponent_Conditional_92_Template(rf, ctx) { if (rf & 1) {
110
+ i0.ɵɵelement(0, "i", 30);
111
111
  } }
112
- function JobSlideoutComponent_i_89_Template(rf, ctx) { if (rf & 1) {
113
- i0.ɵɵelement(0, "i", 46);
112
+ function JobSlideoutComponent_Conditional_93_Template(rf, ctx) { if (rf & 1) {
113
+ i0.ɵɵelement(0, "i", 31);
114
114
  } }
115
- function JobSlideoutComponent_div_91_i_10_Template(rf, ctx) { if (rf & 1) {
116
- i0.ɵɵelement(0, "i", 45);
115
+ function JobSlideoutComponent_Conditional_95_Conditional_10_Template(rf, ctx) { if (rf & 1) {
116
+ i0.ɵɵelement(0, "i", 30);
117
117
  } }
118
- function JobSlideoutComponent_div_91_Template(rf, ctx) { if (rf & 1) {
118
+ function JobSlideoutComponent_Conditional_95_Template(rf, ctx) { if (rf & 1) {
119
119
  const _r7 = i0.ɵɵgetCurrentView();
120
- i0.ɵɵelementStart(0, "div", 47)(1, "div", 48)(2, "div", 49);
121
- i0.ɵɵelement(3, "i", 50);
120
+ i0.ɵɵelementStart(0, "div", 32)(1, "div", 42)(2, "div", 43);
121
+ i0.ɵɵelement(3, "i", 44);
122
122
  i0.ɵɵelementEnd();
123
123
  i0.ɵɵelementStart(4, "h3");
124
124
  i0.ɵɵtext(5, "Delete Job");
@@ -126,13 +126,13 @@ function JobSlideoutComponent_div_91_Template(rf, ctx) { if (rf & 1) {
126
126
  i0.ɵɵelementStart(6, "p");
127
127
  i0.ɵɵtext(7);
128
128
  i0.ɵɵelementEnd();
129
- i0.ɵɵelementStart(8, "div", 51)(9, "button", 52);
130
- i0.ɵɵlistener("click", function JobSlideoutComponent_div_91_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.Delete()); });
131
- i0.ɵɵtemplate(10, JobSlideoutComponent_div_91_i_10_Template, 1, 0, "i", 31);
129
+ i0.ɵɵelementStart(8, "div", 45)(9, "button", 46);
130
+ i0.ɵɵlistener("click", function JobSlideoutComponent_Conditional_95_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.Delete()); });
131
+ i0.ɵɵconditionalCreate(10, JobSlideoutComponent_Conditional_95_Conditional_10_Template, 1, 0, "i", 30);
132
132
  i0.ɵɵtext(11, " Delete ");
133
133
  i0.ɵɵelementEnd();
134
- i0.ɵɵelementStart(12, "button", 29);
135
- i0.ɵɵlistener("click", function JobSlideoutComponent_div_91_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.ShowDeleteConfirm = false); });
134
+ i0.ɵɵelementStart(12, "button", 28);
135
+ i0.ɵɵlistener("click", function JobSlideoutComponent_Conditional_95_Template_button_click_12_listener() { i0.ɵɵrestoreView(_r7); const ctx_r0 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r0.ShowDeleteConfirm = false); });
136
136
  i0.ɵɵtext(13, "Cancel");
137
137
  i0.ɵɵelementEnd()()()();
138
138
  } if (rf & 2) {
@@ -142,7 +142,7 @@ function JobSlideoutComponent_div_91_Template(rf, ctx) { if (rf & 1) {
142
142
  i0.ɵɵadvance(2);
143
143
  i0.ɵɵproperty("disabled", ctx_r0.IsDeleting);
144
144
  i0.ɵɵadvance();
145
- i0.ɵɵproperty("ngIf", ctx_r0.IsDeleting);
145
+ i0.ɵɵconditional(ctx_r0.IsDeleting ? 10 : -1);
146
146
  } }
147
147
  export class JobSlideoutComponent {
148
148
  schedulingService;
@@ -275,7 +275,7 @@ export class JobSlideoutComponent {
275
275
  this.Close.emit();
276
276
  }
277
277
  static ɵfac = function JobSlideoutComponent_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || JobSlideoutComponent)(i0.ɵɵdirectiveInject(i1.SchedulingInstrumentationService), i0.ɵɵdirectiveInject(i0.ChangeDetectorRef)); };
278
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: JobSlideoutComponent, selectors: [["app-job-slideout"]], inputs: { Mode: "Mode", Job: "Job" }, outputs: { Close: "Close", Saved: "Saved" }, decls: 92, vars: 28, consts: [[1, "slideout-container"], [1, "slideout-header"], [1, "slideout-title"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "slideout-body"], ["class", "error-banner", 4, "ngIf"], [1, "form-section"], [1, "section-title"], [1, "form-group"], [1, "form-label"], [1, "required"], ["type", "text", "placeholder", "e.g., Daily Data Sync", 1, "form-input", 3, "ngModelChange", "ngModel"], ["rows", "3", "placeholder", "What does this job do?", 1, "form-textarea", 3, "ngModelChange", "ngModel"], [1, "form-row"], [1, "form-input", 3, "ngModelChange", "ngModel"], [3, "value", 4, "ngFor", "ngForOf"], ["type", "text", "placeholder", "0 */15 * * * *", 1, "form-input", "mono", 3, "ngModelChange", "ngModel"], [1, "form-hint"], [1, "code-editor-wrapper"], [3, "change", "value", "language", "lineWrapping", "placeholder"], [1, "form-row", "checkboxes"], [1, "checkbox-label"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], ["class", "form-section", 4, "ngIf"], [1, "slideout-footer"], [1, "footer-left"], ["class", "delete-btn", 3, "disabled", "click", 4, "ngIf"], [1, "footer-right"], [1, "cancel-btn", 3, "click"], [1, "save-btn", 3, "click", "disabled"], ["class", "fa-solid fa-spinner fa-spin", 4, "ngIf"], ["class", "fa-solid fa-check", 4, "ngIf"], ["class", "confirm-overlay", 4, "ngIf"], [1, "error-banner"], [1, "fa-solid", "fa-circle-exclamation"], [3, "value"], [1, "stats-grid"], [1, "stat-item"], [1, "stat-label"], [1, "stat-value"], [1, "stat-value", "success"], [1, "stat-value", "failure"], [1, "delete-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-trash-can"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-check"], [1, "confirm-overlay"], [1, "confirm-dialog"], [1, "confirm-icon"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "confirm-actions"], [1, "delete-confirm-btn", 3, "click", "disabled"]], template: function JobSlideoutComponent_Template(rf, ctx) { if (rf & 1) {
278
+ static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: JobSlideoutComponent, selectors: [["app-job-slideout"]], inputs: { Mode: "Mode", Job: "Job" }, outputs: { Close: "Close", Saved: "Saved" }, standalone: false, decls: 96, vars: 24, consts: [[1, "slideout-container"], [1, "slideout-header"], [1, "slideout-title"], [1, "close-btn", 3, "click"], [1, "fa-solid", "fa-xmark"], [1, "slideout-body"], [1, "error-banner"], [1, "form-section"], [1, "section-title"], [1, "form-group"], [1, "form-label"], [1, "required"], ["type", "text", "placeholder", "e.g., Daily Data Sync", 1, "form-input", 3, "ngModelChange", "ngModel"], ["rows", "3", "placeholder", "What does this job do?", 1, "form-textarea", 3, "ngModelChange", "ngModel"], [1, "form-row"], [1, "form-input", 3, "ngModelChange", "ngModel"], [3, "value"], ["type", "text", "placeholder", "0 */15 * * * *", 1, "form-input", "mono", 3, "ngModelChange", "ngModel"], [1, "form-hint"], [1, "code-editor-wrapper"], [3, "change", "value", "language", "lineWrapping", "placeholder"], [1, "form-row", "checkboxes"], [1, "checkbox-label"], ["type", "checkbox", 3, "ngModelChange", "ngModel"], [1, "slideout-footer"], [1, "footer-left"], [1, "delete-btn", 3, "disabled"], [1, "footer-right"], [1, "cancel-btn", 3, "click"], [1, "save-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-check"], [1, "confirm-overlay"], [1, "fa-solid", "fa-circle-exclamation"], [1, "stats-grid"], [1, "stat-item"], [1, "stat-label"], [1, "stat-value"], [1, "stat-value", "success"], [1, "stat-value", "failure"], [1, "delete-btn", 3, "click", "disabled"], [1, "fa-solid", "fa-trash-can"], [1, "confirm-dialog"], [1, "confirm-icon"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "confirm-actions"], [1, "delete-confirm-btn", 3, "click", "disabled"]], template: function JobSlideoutComponent_Template(rf, ctx) { if (rf & 1) {
279
279
  i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2);
280
280
  i0.ɵɵelement(3, "i");
281
281
  i0.ɵɵelementStart(4, "span");
@@ -286,7 +286,7 @@ export class JobSlideoutComponent {
286
286
  i0.ɵɵelement(7, "i", 4);
287
287
  i0.ɵɵelementEnd()();
288
288
  i0.ɵɵelementStart(8, "div", 5);
289
- i0.ɵɵtemplate(9, JobSlideoutComponent_div_9_Template, 4, 1, "div", 6);
289
+ i0.ɵɵconditionalCreate(9, JobSlideoutComponent_Conditional_9_Template, 4, 1, "div", 6);
290
290
  i0.ɵɵelementStart(10, "div", 7)(11, "div", 8);
291
291
  i0.ɵɵtext(12, "General");
292
292
  i0.ɵɵelementEnd();
@@ -311,85 +311,86 @@ export class JobSlideoutComponent {
311
311
  i0.ɵɵelementEnd()();
312
312
  i0.ɵɵelementStart(29, "select", 15);
313
313
  i0.ɵɵtwoWayListener("ngModelChange", function JobSlideoutComponent_Template_select_ngModelChange_29_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.JobTypeID, $event) || (ctx.JobTypeID = $event); return $event; });
314
- i0.ɵɵtemplate(30, JobSlideoutComponent_option_30_Template, 2, 2, "option", 16);
314
+ i0.ɵɵrepeaterCreate(30, JobSlideoutComponent_For_31_Template, 2, 2, "option", 16, i0.ɵɵrepeaterTrackByIdentity);
315
315
  i0.ɵɵelementEnd()();
316
- i0.ɵɵelementStart(31, "div", 9)(32, "label", 10);
317
- i0.ɵɵtext(33, "Status");
316
+ i0.ɵɵelementStart(32, "div", 9)(33, "label", 10);
317
+ i0.ɵɵtext(34, "Status");
318
318
  i0.ɵɵelementEnd();
319
- i0.ɵɵelementStart(34, "select", 15);
320
- i0.ɵɵtwoWayListener("ngModelChange", function JobSlideoutComponent_Template_select_ngModelChange_34_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.Status, $event) || (ctx.Status = $event); return $event; });
321
- i0.ɵɵtemplate(35, JobSlideoutComponent_option_35_Template, 2, 2, "option", 16);
319
+ i0.ɵɵelementStart(35, "select", 15);
320
+ i0.ɵɵtwoWayListener("ngModelChange", function JobSlideoutComponent_Template_select_ngModelChange_35_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.Status, $event) || (ctx.Status = $event); return $event; });
321
+ i0.ɵɵrepeaterCreate(36, JobSlideoutComponent_For_37_Template, 2, 2, "option", 16, i0.ɵɵrepeaterTrackByIdentity);
322
322
  i0.ɵɵelementEnd()()()();
323
- i0.ɵɵelementStart(36, "div", 7)(37, "div", 8);
324
- i0.ɵɵtext(38, "Schedule");
323
+ i0.ɵɵelementStart(38, "div", 7)(39, "div", 8);
324
+ i0.ɵɵtext(40, "Schedule");
325
325
  i0.ɵɵelementEnd();
326
- i0.ɵɵelementStart(39, "div", 9)(40, "label", 10);
327
- i0.ɵɵtext(41, "Cron Expression ");
328
- i0.ɵɵelementStart(42, "span", 11);
329
- i0.ɵɵtext(43, "*");
326
+ i0.ɵɵelementStart(41, "div", 9)(42, "label", 10);
327
+ i0.ɵɵtext(43, "Cron Expression ");
328
+ i0.ɵɵelementStart(44, "span", 11);
329
+ i0.ɵɵtext(45, "*");
330
330
  i0.ɵɵelementEnd()();
331
- i0.ɵɵelementStart(44, "input", 17);
332
- i0.ɵɵtwoWayListener("ngModelChange", function JobSlideoutComponent_Template_input_ngModelChange_44_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.CronExpression, $event) || (ctx.CronExpression = $event); return $event; });
331
+ i0.ɵɵelementStart(46, "input", 17);
332
+ i0.ɵɵtwoWayListener("ngModelChange", function JobSlideoutComponent_Template_input_ngModelChange_46_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.CronExpression, $event) || (ctx.CronExpression = $event); return $event; });
333
333
  i0.ɵɵelementEnd();
334
- i0.ɵɵelementStart(45, "div", 18);
335
- i0.ɵɵtext(46, "e.g., 0 */15 * * * * (every 15 minutes)");
334
+ i0.ɵɵelementStart(47, "div", 18);
335
+ i0.ɵɵtext(48, "e.g., 0 */15 * * * * (every 15 minutes)");
336
336
  i0.ɵɵelementEnd()();
337
- i0.ɵɵelementStart(47, "div", 14)(48, "div", 9)(49, "label", 10);
338
- i0.ɵɵtext(50, "Timezone");
337
+ i0.ɵɵelementStart(49, "div", 14)(50, "div", 9)(51, "label", 10);
338
+ i0.ɵɵtext(52, "Timezone");
339
339
  i0.ɵɵelementEnd();
340
- i0.ɵɵelementStart(51, "select", 15);
341
- i0.ɵɵtwoWayListener("ngModelChange", function JobSlideoutComponent_Template_select_ngModelChange_51_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.Timezone, $event) || (ctx.Timezone = $event); return $event; });
342
- i0.ɵɵtemplate(52, JobSlideoutComponent_option_52_Template, 2, 2, "option", 16);
340
+ i0.ɵɵelementStart(53, "select", 15);
341
+ i0.ɵɵtwoWayListener("ngModelChange", function JobSlideoutComponent_Template_select_ngModelChange_53_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.Timezone, $event) || (ctx.Timezone = $event); return $event; });
342
+ i0.ɵɵrepeaterCreate(54, JobSlideoutComponent_For_55_Template, 2, 2, "option", 16, i0.ɵɵrepeaterTrackByIdentity);
343
343
  i0.ɵɵelementEnd()();
344
- i0.ɵɵelementStart(53, "div", 9)(54, "label", 10);
345
- i0.ɵɵtext(55, "Concurrency");
344
+ i0.ɵɵelementStart(56, "div", 9)(57, "label", 10);
345
+ i0.ɵɵtext(58, "Concurrency");
346
346
  i0.ɵɵelementEnd();
347
- i0.ɵɵelementStart(56, "select", 15);
348
- i0.ɵɵtwoWayListener("ngModelChange", function JobSlideoutComponent_Template_select_ngModelChange_56_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.ConcurrencyMode, $event) || (ctx.ConcurrencyMode = $event); return $event; });
349
- i0.ɵɵtemplate(57, JobSlideoutComponent_option_57_Template, 2, 2, "option", 16);
347
+ i0.ɵɵelementStart(59, "select", 15);
348
+ i0.ɵɵtwoWayListener("ngModelChange", function JobSlideoutComponent_Template_select_ngModelChange_59_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.ConcurrencyMode, $event) || (ctx.ConcurrencyMode = $event); return $event; });
349
+ i0.ɵɵrepeaterCreate(60, JobSlideoutComponent_For_61_Template, 2, 2, "option", 16, i0.ɵɵrepeaterTrackByIdentity);
350
350
  i0.ɵɵelementEnd()()()();
351
- i0.ɵɵelementStart(58, "div", 7)(59, "div", 8);
352
- i0.ɵɵtext(60, "Configuration");
351
+ i0.ɵɵelementStart(62, "div", 7)(63, "div", 8);
352
+ i0.ɵɵtext(64, "Configuration");
353
353
  i0.ɵɵelementEnd();
354
- i0.ɵɵelementStart(61, "div", 9)(62, "label", 10);
355
- i0.ɵɵtext(63, "Configuration JSON");
354
+ i0.ɵɵelementStart(65, "div", 9)(66, "label", 10);
355
+ i0.ɵɵtext(67, "Configuration JSON");
356
356
  i0.ɵɵelementEnd();
357
- i0.ɵɵelementStart(64, "div", 19)(65, "mj-code-editor", 20);
358
- i0.ɵɵlistener("change", function JobSlideoutComponent_Template_mj_code_editor_change_65_listener($event) { return ctx.OnConfigurationChange($event); });
357
+ i0.ɵɵelementStart(68, "div", 19)(69, "mj-code-editor", 20);
358
+ i0.ɵɵlistener("change", function JobSlideoutComponent_Template_mj_code_editor_change_69_listener($event) { return ctx.OnConfigurationChange($event); });
359
359
  i0.ɵɵelementEnd()();
360
- i0.ɵɵelementStart(66, "div", 18);
361
- i0.ɵɵtext(67, "Optional JSON configuration for the job type plugin");
360
+ i0.ɵɵelementStart(70, "div", 18);
361
+ i0.ɵɵtext(71, "Optional JSON configuration for the job type plugin");
362
362
  i0.ɵɵelementEnd()()();
363
- i0.ɵɵelementStart(68, "div", 7)(69, "div", 8);
364
- i0.ɵɵtext(70, "Notifications");
363
+ i0.ɵɵelementStart(72, "div", 7)(73, "div", 8);
364
+ i0.ɵɵtext(74, "Notifications");
365
365
  i0.ɵɵelementEnd();
366
- i0.ɵɵelementStart(71, "div", 21)(72, "label", 22)(73, "input", 23);
367
- i0.ɵɵtwoWayListener("ngModelChange", function JobSlideoutComponent_Template_input_ngModelChange_73_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.NotifyOnSuccess, $event) || (ctx.NotifyOnSuccess = $event); return $event; });
366
+ i0.ɵɵelementStart(75, "div", 21)(76, "label", 22)(77, "input", 23);
367
+ i0.ɵɵtwoWayListener("ngModelChange", function JobSlideoutComponent_Template_input_ngModelChange_77_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.NotifyOnSuccess, $event) || (ctx.NotifyOnSuccess = $event); return $event; });
368
368
  i0.ɵɵelementEnd();
369
- i0.ɵɵelementStart(74, "span");
370
- i0.ɵɵtext(75, "Notify on success");
369
+ i0.ɵɵelementStart(78, "span");
370
+ i0.ɵɵtext(79, "Notify on success");
371
371
  i0.ɵɵelementEnd()();
372
- i0.ɵɵelementStart(76, "label", 22)(77, "input", 23);
373
- i0.ɵɵtwoWayListener("ngModelChange", function JobSlideoutComponent_Template_input_ngModelChange_77_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.NotifyOnFailure, $event) || (ctx.NotifyOnFailure = $event); return $event; });
372
+ i0.ɵɵelementStart(80, "label", 22)(81, "input", 23);
373
+ i0.ɵɵtwoWayListener("ngModelChange", function JobSlideoutComponent_Template_input_ngModelChange_81_listener($event) { i0.ɵɵtwoWayBindingSet(ctx.NotifyOnFailure, $event) || (ctx.NotifyOnFailure = $event); return $event; });
374
374
  i0.ɵɵelementEnd();
375
- i0.ɵɵelementStart(78, "span");
376
- i0.ɵɵtext(79, "Notify on failure");
375
+ i0.ɵɵelementStart(82, "span");
376
+ i0.ɵɵtext(83, "Notify on failure");
377
377
  i0.ɵɵelementEnd()()()();
378
- i0.ɵɵtemplate(80, JobSlideoutComponent_div_80_Template, 25, 7, "div", 24);
378
+ i0.ɵɵconditionalCreate(84, JobSlideoutComponent_Conditional_84_Template, 25, 7, "div", 7);
379
379
  i0.ɵɵelementEnd();
380
- i0.ɵɵelementStart(81, "div", 25)(82, "div", 26);
381
- i0.ɵɵtemplate(83, JobSlideoutComponent_button_83_Template, 3, 1, "button", 27);
380
+ i0.ɵɵelementStart(85, "div", 24)(86, "div", 25);
381
+ i0.ɵɵconditionalCreate(87, JobSlideoutComponent_Conditional_87_Template, 3, 1, "button", 26);
382
382
  i0.ɵɵelementEnd();
383
- i0.ɵɵelementStart(84, "div", 28)(85, "button", 29);
384
- i0.ɵɵlistener("click", function JobSlideoutComponent_Template_button_click_85_listener() { return ctx.OnClose(); });
385
- i0.ɵɵtext(86, "Cancel");
383
+ i0.ɵɵelementStart(88, "div", 27)(89, "button", 28);
384
+ i0.ɵɵlistener("click", function JobSlideoutComponent_Template_button_click_89_listener() { return ctx.OnClose(); });
385
+ i0.ɵɵtext(90, "Cancel");
386
386
  i0.ɵɵelementEnd();
387
- i0.ɵɵelementStart(87, "button", 30);
388
- i0.ɵɵlistener("click", function JobSlideoutComponent_Template_button_click_87_listener() { return ctx.Save(); });
389
- i0.ɵɵtemplate(88, JobSlideoutComponent_i_88_Template, 1, 0, "i", 31)(89, JobSlideoutComponent_i_89_Template, 1, 0, "i", 32);
390
- i0.ɵɵtext(90);
387
+ i0.ɵɵelementStart(91, "button", 29);
388
+ i0.ɵɵlistener("click", function JobSlideoutComponent_Template_button_click_91_listener() { return ctx.Save(); });
389
+ i0.ɵɵconditionalCreate(92, JobSlideoutComponent_Conditional_92_Template, 1, 0, "i", 30);
390
+ i0.ɵɵconditionalCreate(93, JobSlideoutComponent_Conditional_93_Template, 1, 0, "i", 31);
391
+ i0.ɵɵtext(94);
391
392
  i0.ɵɵelementEnd()()();
392
- i0.ɵɵtemplate(91, JobSlideoutComponent_div_91_Template, 14, 3, "div", 33);
393
+ i0.ɵɵconditionalCreate(95, JobSlideoutComponent_Conditional_95_Template, 14, 3, "div", 32);
393
394
  i0.ɵɵelementEnd();
394
395
  } if (rf & 2) {
395
396
  i0.ɵɵadvance(3);
@@ -397,7 +398,7 @@ export class JobSlideoutComponent {
397
398
  i0.ɵɵadvance(2);
398
399
  i0.ɵɵtextInterpolate(ctx.Title);
399
400
  i0.ɵɵadvance(4);
400
- i0.ɵɵproperty("ngIf", ctx.ErrorMessage);
401
+ i0.ɵɵconditional(ctx.ErrorMessage ? 9 : -1);
401
402
  i0.ɵɵadvance(9);
402
403
  i0.ɵɵtwoWayProperty("ngModel", ctx.Name);
403
404
  i0.ɵɵadvance(4);
@@ -405,46 +406,46 @@ export class JobSlideoutComponent {
405
406
  i0.ɵɵadvance(7);
406
407
  i0.ɵɵtwoWayProperty("ngModel", ctx.JobTypeID);
407
408
  i0.ɵɵadvance();
408
- i0.ɵɵproperty("ngForOf", ctx.JobTypes);
409
- i0.ɵɵadvance(4);
409
+ i0.ɵɵrepeater(ctx.JobTypes);
410
+ i0.ɵɵadvance(5);
410
411
  i0.ɵɵtwoWayProperty("ngModel", ctx.Status);
411
412
  i0.ɵɵadvance();
412
- i0.ɵɵproperty("ngForOf", ctx.StatusOptions);
413
- i0.ɵɵadvance(9);
413
+ i0.ɵɵrepeater(ctx.StatusOptions);
414
+ i0.ɵɵadvance(10);
414
415
  i0.ɵɵtwoWayProperty("ngModel", ctx.CronExpression);
415
416
  i0.ɵɵadvance(7);
416
417
  i0.ɵɵtwoWayProperty("ngModel", ctx.Timezone);
417
418
  i0.ɵɵadvance();
418
- i0.ɵɵproperty("ngForOf", ctx.TimezoneOptions);
419
- i0.ɵɵadvance(4);
419
+ i0.ɵɵrepeater(ctx.TimezoneOptions);
420
+ i0.ɵɵadvance(5);
420
421
  i0.ɵɵtwoWayProperty("ngModel", ctx.ConcurrencyMode);
421
422
  i0.ɵɵadvance();
422
- i0.ɵɵproperty("ngForOf", ctx.ConcurrencyOptions);
423
- i0.ɵɵadvance(8);
423
+ i0.ɵɵrepeater(ctx.ConcurrencyOptions);
424
+ i0.ɵɵadvance(9);
424
425
  i0.ɵɵproperty("value", ctx.Configuration)("language", "json")("lineWrapping", true)("placeholder", "{ }");
425
426
  i0.ɵɵadvance(8);
426
427
  i0.ɵɵtwoWayProperty("ngModel", ctx.NotifyOnSuccess);
427
428
  i0.ɵɵadvance(4);
428
429
  i0.ɵɵtwoWayProperty("ngModel", ctx.NotifyOnFailure);
429
430
  i0.ɵɵadvance(3);
430
- i0.ɵɵproperty("ngIf", ctx.Mode === "edit" && ctx.Job);
431
+ i0.ɵɵconditional(ctx.Mode === "edit" && ctx.Job ? 84 : -1);
431
432
  i0.ɵɵadvance(3);
432
- i0.ɵɵproperty("ngIf", ctx.Mode === "edit");
433
+ i0.ɵɵconditional(ctx.Mode === "edit" ? 87 : -1);
433
434
  i0.ɵɵadvance(4);
434
435
  i0.ɵɵproperty("disabled", !ctx.IsValid || ctx.IsSaving);
435
436
  i0.ɵɵadvance();
436
- i0.ɵɵproperty("ngIf", ctx.IsSaving);
437
+ i0.ɵɵconditional(ctx.IsSaving ? 92 : -1);
437
438
  i0.ɵɵadvance();
438
- i0.ɵɵproperty("ngIf", !ctx.IsSaving);
439
+ i0.ɵɵconditional(!ctx.IsSaving ? 93 : -1);
439
440
  i0.ɵɵadvance();
440
441
  i0.ɵɵtextInterpolate1(" ", ctx.Mode === "create" ? "Create Job" : "Save Changes", " ");
441
442
  i0.ɵɵadvance();
442
- i0.ɵɵproperty("ngIf", ctx.ShowDeleteConfirm);
443
- } }, dependencies: [i2.NgForOf, i2.NgIf, i3.NgSelectOption, i3.ɵNgSelectMultipleOption, i3.DefaultValueAccessor, i3.CheckboxControlValueAccessor, i3.SelectControlValueAccessor, i3.NgControlStatus, i3.NgModel, i4.CodeEditorComponent, i2.DatePipe], styles: [".slideout-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n\n\n.slideout-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n border-bottom: 1px solid #e2e8f0;\n background: white;\n flex-shrink: 0;\n}\n\n.slideout-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1.1rem;\n font-weight: 700;\n color: #0f172a;\n}\n\n.slideout-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #0076b6;\n}\n\n.close-btn[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n cursor: pointer;\n color: #64748b;\n transition: all 0.2s;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: #f1f5f9;\n color: #0f172a;\n}\n\n\n\n.slideout-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.error-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: #fef2f2;\n border: 1px solid #fecaca;\n border-radius: 10px;\n color: #dc2626;\n font-size: 0.85rem;\n font-weight: 500;\n margin-bottom: 20px;\n}\n\n\n\n.form-section[_ngcontent-%COMP%] {\n margin-bottom: 28px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n font-weight: 700;\n color: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n margin-bottom: 16px;\n padding-bottom: 8px;\n border-bottom: 1px solid #f1f5f9;\n}\n\n.form-group[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 0.8rem;\n font-weight: 600;\n color: #334155;\n margin-bottom: 6px;\n}\n\n.required[_ngcontent-%COMP%] {\n color: #ef4444;\n}\n\n.form-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n font-size: 0.85rem;\n color: #0f172a;\n background: white;\n outline: none;\n transition: border-color 0.2s;\n box-sizing: border-box;\n}\n\n.form-input[_ngcontent-%COMP%]:focus {\n border-color: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.form-textarea[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n font-size: 0.85rem;\n color: #0f172a;\n background: white;\n outline: none;\n transition: border-color 0.2s;\n resize: vertical;\n font-family: inherit;\n box-sizing: border-box;\n}\n\n.form-textarea[_ngcontent-%COMP%]:focus {\n border-color: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.form-textarea.mono[_ngcontent-%COMP%], \n.form-input.mono[_ngcontent-%COMP%] {\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;\n font-size: 0.8rem;\n}\n\n.form-hint[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n color: #94a3b8;\n margin-top: 4px;\n}\n\n.form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n}\n\n.form-row.checkboxes[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n}\n\n.checkbox-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.85rem;\n color: #334155;\n cursor: pointer;\n}\n\n.checkbox-label[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n accent-color: #0076b6;\n}\n\n\n\n.stats-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: #f8fafc;\n border-radius: 10px;\n border: 1px solid #f1f5f9;\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n font-weight: 700;\n color: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n display: block;\n margin-bottom: 4px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 1.1rem;\n font-weight: 800;\n color: #0f172a;\n}\n\n.stat-value.success[_ngcontent-%COMP%] { color: #10b981; }\n.stat-value.failure[_ngcontent-%COMP%] { color: #ef4444; }\n\n\n\n.slideout-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n border-top: 1px solid #e2e8f0;\n background: #f1f5f9;\n flex-shrink: 0;\n box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n z-index: 1;\n}\n\n.footer-left[_ngcontent-%COMP%], .footer-right[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.save-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 10px 24px;\n background: linear-gradient(135deg, #0076b6 0%, #005a8c 100%);\n color: white;\n border: none;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 600;\n transition: all 0.2s ease;\n}\n\n.save-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(0, 118, 182, 0.4);\n}\n\n.save-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.cancel-btn[_ngcontent-%COMP%] {\n padding: 10px 20px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 500;\n color: #475569;\n transition: all 0.2s;\n}\n\n.cancel-btn[_ngcontent-%COMP%]:hover {\n background: #f3f4f6;\n}\n\n.delete-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 10px 16px;\n background: transparent;\n color: #ef4444;\n border: 1px solid #fecaca;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 500;\n transition: all 0.2s;\n}\n\n.delete-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #fef2f2;\n}\n\n.delete-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n.confirm-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0,0,0,0.4);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n}\n\n.confirm-dialog[_ngcontent-%COMP%] {\n background: white;\n border-radius: 16px;\n padding: 32px;\n max-width: 360px;\n text-align: center;\n box-shadow: 0 20px 40px rgba(0,0,0,0.2);\n}\n\n.confirm-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: #fef2f2;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 16px;\n}\n\n.confirm-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.5rem;\n color: #ef4444;\n}\n\n.confirm-dialog[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 1.1rem;\n font-weight: 700;\n color: #0f172a;\n margin: 0 0 8px;\n}\n\n.confirm-dialog[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n color: #64748b;\n margin: 0 0 24px;\n line-height: 1.4;\n}\n\n.confirm-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n justify-content: center;\n}\n\n.delete-confirm-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 10px 24px;\n background: #ef4444;\n color: white;\n border: none;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 600;\n transition: all 0.2s;\n}\n\n.delete-confirm-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #dc2626;\n}\n\n.delete-confirm-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n.code-editor-wrapper[_ngcontent-%COMP%] {\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n overflow: hidden;\n transition: border-color 0.2s;\n}\n\n.code-editor-wrapper[_ngcontent-%COMP%]:focus-within {\n border-color: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.code-editor-wrapper[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n display: block;\n height: 180px;\n}\n\n\n\n@media (max-width: 768px) {\n .slideout-body[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .form-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .form-row.checkboxes[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 12px;\n }\n\n .code-editor-wrapper[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n height: 140px;\n }\n}\n\n@media (max-width: 480px) {\n .slideout-header[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .slideout-footer[_ngcontent-%COMP%] {\n padding: 12px 16px;\n flex-direction: column;\n gap: 10px;\n }\n\n .footer-left[_ngcontent-%COMP%], .footer-right[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .footer-right[_ngcontent-%COMP%] {\n justify-content: stretch;\n }\n\n .save-btn[_ngcontent-%COMP%], .cancel-btn[_ngcontent-%COMP%], .delete-btn[_ngcontent-%COMP%] {\n flex: 1;\n justify-content: center;\n }\n\n .stats-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}"], changeDetection: 0 });
443
+ i0.ɵɵconditional(ctx.ShowDeleteConfirm ? 95 : -1);
444
+ } }, dependencies: [i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.CheckboxControlValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.CodeEditorComponent, i4.DatePipe], styles: [".slideout-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n\n\n.slideout-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n border-bottom: 1px solid #e2e8f0;\n background: white;\n flex-shrink: 0;\n}\n\n.slideout-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1.1rem;\n font-weight: 700;\n color: #0f172a;\n}\n\n.slideout-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #0076b6;\n}\n\n.close-btn[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n cursor: pointer;\n color: #64748b;\n transition: all 0.2s;\n}\n\n.close-btn[_ngcontent-%COMP%]:hover {\n background: #f1f5f9;\n color: #0f172a;\n}\n\n\n\n.slideout-body[_ngcontent-%COMP%] {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.error-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: #fef2f2;\n border: 1px solid #fecaca;\n border-radius: 10px;\n color: #dc2626;\n font-size: 0.85rem;\n font-weight: 500;\n margin-bottom: 20px;\n}\n\n\n\n.form-section[_ngcontent-%COMP%] {\n margin-bottom: 28px;\n}\n\n.section-title[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n font-weight: 700;\n color: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n margin-bottom: 16px;\n padding-bottom: 8px;\n border-bottom: 1px solid #f1f5f9;\n}\n\n.form-group[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.form-label[_ngcontent-%COMP%] {\n display: block;\n font-size: 0.8rem;\n font-weight: 600;\n color: #334155;\n margin-bottom: 6px;\n}\n\n.required[_ngcontent-%COMP%] {\n color: #ef4444;\n}\n\n.form-input[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n font-size: 0.85rem;\n color: #0f172a;\n background: white;\n outline: none;\n transition: border-color 0.2s;\n box-sizing: border-box;\n}\n\n.form-input[_ngcontent-%COMP%]:focus {\n border-color: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.form-textarea[_ngcontent-%COMP%] {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n font-size: 0.85rem;\n color: #0f172a;\n background: white;\n outline: none;\n transition: border-color 0.2s;\n resize: vertical;\n font-family: inherit;\n box-sizing: border-box;\n}\n\n.form-textarea[_ngcontent-%COMP%]:focus {\n border-color: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.form-textarea.mono[_ngcontent-%COMP%], \n.form-input.mono[_ngcontent-%COMP%] {\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;\n font-size: 0.8rem;\n}\n\n.form-hint[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n color: #94a3b8;\n margin-top: 4px;\n}\n\n.form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n}\n\n.form-row.checkboxes[_ngcontent-%COMP%] {\n display: flex;\n gap: 24px;\n}\n\n.checkbox-label[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.85rem;\n color: #334155;\n cursor: pointer;\n}\n\n.checkbox-label[_ngcontent-%COMP%] input[type=\"checkbox\"][_ngcontent-%COMP%] {\n width: 16px;\n height: 16px;\n accent-color: #0076b6;\n}\n\n\n\n.stats-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: #f8fafc;\n border-radius: 10px;\n border: 1px solid #f1f5f9;\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 0.7rem;\n font-weight: 700;\n color: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n display: block;\n margin-bottom: 4px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 1.1rem;\n font-weight: 800;\n color: #0f172a;\n}\n\n.stat-value.success[_ngcontent-%COMP%] { color: #10b981; }\n.stat-value.failure[_ngcontent-%COMP%] { color: #ef4444; }\n\n\n\n.slideout-footer[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n border-top: 1px solid #e2e8f0;\n background: #f1f5f9;\n flex-shrink: 0;\n box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n z-index: 1;\n}\n\n.footer-left[_ngcontent-%COMP%], .footer-right[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.save-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 10px 24px;\n background: linear-gradient(135deg, #0076b6 0%, #005a8c 100%);\n color: white;\n border: none;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 600;\n transition: all 0.2s ease;\n}\n\n.save-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(0, 118, 182, 0.4);\n}\n\n.save-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.cancel-btn[_ngcontent-%COMP%] {\n padding: 10px 20px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 500;\n color: #475569;\n transition: all 0.2s;\n}\n\n.cancel-btn[_ngcontent-%COMP%]:hover {\n background: #f3f4f6;\n}\n\n.delete-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 10px 16px;\n background: transparent;\n color: #ef4444;\n border: 1px solid #fecaca;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 500;\n transition: all 0.2s;\n}\n\n.delete-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #fef2f2;\n}\n\n.delete-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n.confirm-overlay[_ngcontent-%COMP%] {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0,0,0,0.4);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n}\n\n.confirm-dialog[_ngcontent-%COMP%] {\n background: white;\n border-radius: 16px;\n padding: 32px;\n max-width: 360px;\n text-align: center;\n box-shadow: 0 20px 40px rgba(0,0,0,0.2);\n}\n\n.confirm-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: #fef2f2;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 16px;\n}\n\n.confirm-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 1.5rem;\n color: #ef4444;\n}\n\n.confirm-dialog[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n font-size: 1.1rem;\n font-weight: 700;\n color: #0f172a;\n margin: 0 0 8px;\n}\n\n.confirm-dialog[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n font-size: 0.85rem;\n color: #64748b;\n margin: 0 0 24px;\n line-height: 1.4;\n}\n\n.confirm-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n justify-content: center;\n}\n\n.delete-confirm-btn[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 10px 24px;\n background: #ef4444;\n color: white;\n border: none;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 600;\n transition: all 0.2s;\n}\n\n.delete-confirm-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: #dc2626;\n}\n\n.delete-confirm-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n\n\n.code-editor-wrapper[_ngcontent-%COMP%] {\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n overflow: hidden;\n transition: border-color 0.2s;\n}\n\n.code-editor-wrapper[_ngcontent-%COMP%]:focus-within {\n border-color: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.code-editor-wrapper[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n display: block;\n height: 180px;\n}\n\n\n\n@media (max-width: 768px) {\n .slideout-body[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .form-row[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .form-row.checkboxes[_ngcontent-%COMP%] {\n flex-direction: column;\n gap: 12px;\n }\n\n .code-editor-wrapper[_ngcontent-%COMP%] mj-code-editor[_ngcontent-%COMP%] {\n height: 140px;\n }\n}\n\n@media (max-width: 480px) {\n .slideout-header[_ngcontent-%COMP%] {\n padding: 16px;\n }\n\n .slideout-footer[_ngcontent-%COMP%] {\n padding: 12px 16px;\n flex-direction: column;\n gap: 10px;\n }\n\n .footer-left[_ngcontent-%COMP%], .footer-right[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .footer-right[_ngcontent-%COMP%] {\n justify-content: stretch;\n }\n\n .save-btn[_ngcontent-%COMP%], .cancel-btn[_ngcontent-%COMP%], .delete-btn[_ngcontent-%COMP%] {\n flex: 1;\n justify-content: center;\n }\n\n .stats-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n}"], changeDetection: 0 });
444
445
  }
445
446
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(JobSlideoutComponent, [{
446
447
  type: Component,
447
- args: [{ selector: 'app-job-slideout', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"slideout-container\">\n <!-- Header -->\n <div class=\"slideout-header\">\n <div class=\"slideout-title\">\n <i [class]=\"Mode === 'create' ? 'fa-solid fa-plus-circle' : 'fa-solid fa-pen-to-square'\"></i>\n <span>{{Title}}</span>\n </div>\n <button class=\"close-btn\" (click)=\"OnClose()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <!-- Body -->\n <div class=\"slideout-body\">\n <!-- Error -->\n <div class=\"error-banner\" *ngIf=\"ErrorMessage\">\n <i class=\"fa-solid fa-circle-exclamation\"></i>\n <span>{{ErrorMessage}}</span>\n </div>\n\n <!-- Form -->\n <div class=\"form-section\">\n <div class=\"section-title\">General</div>\n\n <div class=\"form-group\">\n <label class=\"form-label\">Name <span class=\"required\">*</span></label>\n <input class=\"form-input\" type=\"text\" [(ngModel)]=\"Name\" placeholder=\"e.g., Daily Data Sync\" />\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\">Description</label>\n <textarea class=\"form-textarea\" [(ngModel)]=\"Description\" rows=\"3\"\n placeholder=\"What does this job do?\"></textarea>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label class=\"form-label\">Job Type <span class=\"required\">*</span></label>\n <select class=\"form-input\" [(ngModel)]=\"JobTypeID\">\n <option *ngFor=\"let t of JobTypes\" [value]=\"t.id\">{{t.name}}</option>\n </select>\n </div>\n <div class=\"form-group\">\n <label class=\"form-label\">Status</label>\n <select class=\"form-input\" [(ngModel)]=\"Status\">\n <option *ngFor=\"let s of StatusOptions\" [value]=\"s\">{{s}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"form-section\">\n <div class=\"section-title\">Schedule</div>\n\n <div class=\"form-group\">\n <label class=\"form-label\">Cron Expression <span class=\"required\">*</span></label>\n <input class=\"form-input mono\" type=\"text\" [(ngModel)]=\"CronExpression\"\n placeholder=\"0 */15 * * * *\" />\n <div class=\"form-hint\">e.g., 0 */15 * * * * (every 15 minutes)</div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label class=\"form-label\">Timezone</label>\n <select class=\"form-input\" [(ngModel)]=\"Timezone\">\n <option *ngFor=\"let tz of TimezoneOptions\" [value]=\"tz\">{{tz}}</option>\n </select>\n </div>\n <div class=\"form-group\">\n <label class=\"form-label\">Concurrency</label>\n <select class=\"form-input\" [(ngModel)]=\"ConcurrencyMode\">\n <option *ngFor=\"let c of ConcurrencyOptions\" [value]=\"c\">{{c}}</option>\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"form-section\">\n <div class=\"section-title\">Configuration</div>\n <div class=\"form-group\">\n <label class=\"form-label\">Configuration JSON</label>\n <div class=\"code-editor-wrapper\">\n <mj-code-editor\n [value]=\"Configuration\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n [placeholder]=\"'{ }'\"\n (change)=\"OnConfigurationChange($event)\">\n </mj-code-editor>\n </div>\n <div class=\"form-hint\">Optional JSON configuration for the job type plugin</div>\n </div>\n </div>\n\n <div class=\"form-section\">\n <div class=\"section-title\">Notifications</div>\n <div class=\"form-row checkboxes\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"NotifyOnSuccess\" />\n <span>Notify on success</span>\n </label>\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"NotifyOnFailure\" />\n <span>Notify on failure</span>\n </label>\n </div>\n </div>\n\n <!-- Job Stats (Edit Mode) -->\n <div class=\"form-section\" *ngIf=\"Mode === 'edit' && Job\">\n <div class=\"section-title\">Statistics</div>\n <div class=\"stats-grid\">\n <div class=\"stat-item\">\n <span class=\"stat-label\">Total Runs</span>\n <span class=\"stat-value\">{{Job.totalRuns}}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Success</span>\n <span class=\"stat-value success\">{{Job.successCount}}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Failures</span>\n <span class=\"stat-value failure\">{{Job.failureCount}}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Created</span>\n <span class=\"stat-value\">{{Job.createdAt | date:'short'}}</span>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Footer -->\n <div class=\"slideout-footer\">\n <div class=\"footer-left\">\n <button *ngIf=\"Mode === 'edit'\" class=\"delete-btn\" (click)=\"ShowDeleteConfirm = true\"\n [disabled]=\"IsDeleting\">\n <i class=\"fa-solid fa-trash-can\"></i> Delete\n </button>\n </div>\n <div class=\"footer-right\">\n <button class=\"cancel-btn\" (click)=\"OnClose()\">Cancel</button>\n <button class=\"save-btn\" (click)=\"Save()\" [disabled]=\"!IsValid || IsSaving\">\n <i *ngIf=\"IsSaving\" class=\"fa-solid fa-spinner fa-spin\"></i>\n <i *ngIf=\"!IsSaving\" class=\"fa-solid fa-check\"></i>\n {{Mode === 'create' ? 'Create Job' : 'Save Changes'}}\n </button>\n </div>\n </div>\n\n <!-- Delete Confirmation -->\n <div class=\"confirm-overlay\" *ngIf=\"ShowDeleteConfirm\">\n <div class=\"confirm-dialog\">\n <div class=\"confirm-icon\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n </div>\n <h3>Delete Job</h3>\n <p>Are you sure you want to delete \"{{Name}}\"? This action cannot be undone.</p>\n <div class=\"confirm-actions\">\n <button class=\"delete-confirm-btn\" (click)=\"Delete()\" [disabled]=\"IsDeleting\">\n <i *ngIf=\"IsDeleting\" class=\"fa-solid fa-spinner fa-spin\"></i>\n Delete\n </button>\n <button class=\"cancel-btn\" (click)=\"ShowDeleteConfirm = false\">Cancel</button>\n </div>\n </div>\n </div>\n</div>\n", styles: [".slideout-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n/* \u2500\u2500 Header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.slideout-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n border-bottom: 1px solid #e2e8f0;\n background: white;\n flex-shrink: 0;\n}\n\n.slideout-title {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1.1rem;\n font-weight: 700;\n color: #0f172a;\n}\n\n.slideout-title i {\n color: #0076b6;\n}\n\n.close-btn {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n cursor: pointer;\n color: #64748b;\n transition: all 0.2s;\n}\n\n.close-btn:hover {\n background: #f1f5f9;\n color: #0f172a;\n}\n\n/* \u2500\u2500 Body \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.slideout-body {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.error-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: #fef2f2;\n border: 1px solid #fecaca;\n border-radius: 10px;\n color: #dc2626;\n font-size: 0.85rem;\n font-weight: 500;\n margin-bottom: 20px;\n}\n\n/* \u2500\u2500 Form \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.form-section {\n margin-bottom: 28px;\n}\n\n.section-title {\n font-size: 0.7rem;\n font-weight: 700;\n color: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n margin-bottom: 16px;\n padding-bottom: 8px;\n border-bottom: 1px solid #f1f5f9;\n}\n\n.form-group {\n margin-bottom: 16px;\n}\n\n.form-label {\n display: block;\n font-size: 0.8rem;\n font-weight: 600;\n color: #334155;\n margin-bottom: 6px;\n}\n\n.required {\n color: #ef4444;\n}\n\n.form-input {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n font-size: 0.85rem;\n color: #0f172a;\n background: white;\n outline: none;\n transition: border-color 0.2s;\n box-sizing: border-box;\n}\n\n.form-input:focus {\n border-color: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.form-textarea {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n font-size: 0.85rem;\n color: #0f172a;\n background: white;\n outline: none;\n transition: border-color 0.2s;\n resize: vertical;\n font-family: inherit;\n box-sizing: border-box;\n}\n\n.form-textarea:focus {\n border-color: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.form-textarea.mono,\n.form-input.mono {\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;\n font-size: 0.8rem;\n}\n\n.form-hint {\n font-size: 0.7rem;\n color: #94a3b8;\n margin-top: 4px;\n}\n\n.form-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n}\n\n.form-row.checkboxes {\n display: flex;\n gap: 24px;\n}\n\n.checkbox-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.85rem;\n color: #334155;\n cursor: pointer;\n}\n\n.checkbox-label input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n accent-color: #0076b6;\n}\n\n/* \u2500\u2500 Stats Grid \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.stats-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.stat-item {\n padding: 12px 16px;\n background: #f8fafc;\n border-radius: 10px;\n border: 1px solid #f1f5f9;\n}\n\n.stat-label {\n font-size: 0.7rem;\n font-weight: 700;\n color: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n display: block;\n margin-bottom: 4px;\n}\n\n.stat-value {\n font-size: 1.1rem;\n font-weight: 800;\n color: #0f172a;\n}\n\n.stat-value.success { color: #10b981; }\n.stat-value.failure { color: #ef4444; }\n\n/* \u2500\u2500 Footer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.slideout-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n border-top: 1px solid #e2e8f0;\n background: #f1f5f9;\n flex-shrink: 0;\n box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n z-index: 1;\n}\n\n.footer-left, .footer-right {\n display: flex;\n gap: 8px;\n}\n\n.save-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 10px 24px;\n background: linear-gradient(135deg, #0076b6 0%, #005a8c 100%);\n color: white;\n border: none;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 600;\n transition: all 0.2s ease;\n}\n\n.save-btn:hover:not(:disabled) {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(0, 118, 182, 0.4);\n}\n\n.save-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.cancel-btn {\n padding: 10px 20px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 500;\n color: #475569;\n transition: all 0.2s;\n}\n\n.cancel-btn:hover {\n background: #f3f4f6;\n}\n\n.delete-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 10px 16px;\n background: transparent;\n color: #ef4444;\n border: 1px solid #fecaca;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 500;\n transition: all 0.2s;\n}\n\n.delete-btn:hover:not(:disabled) {\n background: #fef2f2;\n}\n\n.delete-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* \u2500\u2500 Delete Confirmation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.confirm-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0,0,0,0.4);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n}\n\n.confirm-dialog {\n background: white;\n border-radius: 16px;\n padding: 32px;\n max-width: 360px;\n text-align: center;\n box-shadow: 0 20px 40px rgba(0,0,0,0.2);\n}\n\n.confirm-icon {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: #fef2f2;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 16px;\n}\n\n.confirm-icon i {\n font-size: 1.5rem;\n color: #ef4444;\n}\n\n.confirm-dialog h3 {\n font-size: 1.1rem;\n font-weight: 700;\n color: #0f172a;\n margin: 0 0 8px;\n}\n\n.confirm-dialog p {\n font-size: 0.85rem;\n color: #64748b;\n margin: 0 0 24px;\n line-height: 1.4;\n}\n\n.confirm-actions {\n display: flex;\n gap: 8px;\n justify-content: center;\n}\n\n.delete-confirm-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 10px 24px;\n background: #ef4444;\n color: white;\n border: none;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 600;\n transition: all 0.2s;\n}\n\n.delete-confirm-btn:hover:not(:disabled) {\n background: #dc2626;\n}\n\n.delete-confirm-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* \u2500\u2500 Code Editor \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.code-editor-wrapper {\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n overflow: hidden;\n transition: border-color 0.2s;\n}\n\n.code-editor-wrapper:focus-within {\n border-color: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.code-editor-wrapper mj-code-editor {\n display: block;\n height: 180px;\n}\n\n/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n@media (max-width: 768px) {\n .slideout-body {\n padding: 16px;\n }\n\n .form-row {\n grid-template-columns: 1fr;\n }\n\n .form-row.checkboxes {\n flex-direction: column;\n gap: 12px;\n }\n\n .code-editor-wrapper mj-code-editor {\n height: 140px;\n }\n}\n\n@media (max-width: 480px) {\n .slideout-header {\n padding: 16px;\n }\n\n .slideout-footer {\n padding: 12px 16px;\n flex-direction: column;\n gap: 10px;\n }\n\n .footer-left, .footer-right {\n width: 100%;\n }\n\n .footer-right {\n justify-content: stretch;\n }\n\n .save-btn, .cancel-btn, .delete-btn {\n flex: 1;\n justify-content: center;\n }\n\n .stats-grid {\n grid-template-columns: 1fr;\n }\n}\n"] }]
448
+ args: [{ standalone: false, selector: 'app-job-slideout', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"slideout-container\">\n <!-- Header -->\n <div class=\"slideout-header\">\n <div class=\"slideout-title\">\n <i [class]=\"Mode === 'create' ? 'fa-solid fa-plus-circle' : 'fa-solid fa-pen-to-square'\"></i>\n <span>{{Title}}</span>\n </div>\n <button class=\"close-btn\" (click)=\"OnClose()\">\n <i class=\"fa-solid fa-xmark\"></i>\n </button>\n </div>\n\n <!-- Body -->\n <div class=\"slideout-body\">\n <!-- Error -->\n @if (ErrorMessage) {\n <div class=\"error-banner\">\n <i class=\"fa-solid fa-circle-exclamation\"></i>\n <span>{{ErrorMessage}}</span>\n </div>\n }\n\n <!-- Form -->\n <div class=\"form-section\">\n <div class=\"section-title\">General</div>\n\n <div class=\"form-group\">\n <label class=\"form-label\">Name <span class=\"required\">*</span></label>\n <input class=\"form-input\" type=\"text\" [(ngModel)]=\"Name\" placeholder=\"e.g., Daily Data Sync\" />\n </div>\n\n <div class=\"form-group\">\n <label class=\"form-label\">Description</label>\n <textarea class=\"form-textarea\" [(ngModel)]=\"Description\" rows=\"3\"\n placeholder=\"What does this job do?\"></textarea>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label class=\"form-label\">Job Type <span class=\"required\">*</span></label>\n <select class=\"form-input\" [(ngModel)]=\"JobTypeID\">\n @for (t of JobTypes; track t) {\n <option [value]=\"t.id\">{{t.name}}</option>\n }\n </select>\n </div>\n <div class=\"form-group\">\n <label class=\"form-label\">Status</label>\n <select class=\"form-input\" [(ngModel)]=\"Status\">\n @for (s of StatusOptions; track s) {\n <option [value]=\"s\">{{s}}</option>\n }\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"form-section\">\n <div class=\"section-title\">Schedule</div>\n\n <div class=\"form-group\">\n <label class=\"form-label\">Cron Expression <span class=\"required\">*</span></label>\n <input class=\"form-input mono\" type=\"text\" [(ngModel)]=\"CronExpression\"\n placeholder=\"0 */15 * * * *\" />\n <div class=\"form-hint\">e.g., 0 */15 * * * * (every 15 minutes)</div>\n </div>\n\n <div class=\"form-row\">\n <div class=\"form-group\">\n <label class=\"form-label\">Timezone</label>\n <select class=\"form-input\" [(ngModel)]=\"Timezone\">\n @for (tz of TimezoneOptions; track tz) {\n <option [value]=\"tz\">{{tz}}</option>\n }\n </select>\n </div>\n <div class=\"form-group\">\n <label class=\"form-label\">Concurrency</label>\n <select class=\"form-input\" [(ngModel)]=\"ConcurrencyMode\">\n @for (c of ConcurrencyOptions; track c) {\n <option [value]=\"c\">{{c}}</option>\n }\n </select>\n </div>\n </div>\n </div>\n\n <div class=\"form-section\">\n <div class=\"section-title\">Configuration</div>\n <div class=\"form-group\">\n <label class=\"form-label\">Configuration JSON</label>\n <div class=\"code-editor-wrapper\">\n <mj-code-editor\n [value]=\"Configuration\"\n [language]=\"'json'\"\n [lineWrapping]=\"true\"\n [placeholder]=\"'{ }'\"\n (change)=\"OnConfigurationChange($event)\">\n </mj-code-editor>\n </div>\n <div class=\"form-hint\">Optional JSON configuration for the job type plugin</div>\n </div>\n </div>\n\n <div class=\"form-section\">\n <div class=\"section-title\">Notifications</div>\n <div class=\"form-row checkboxes\">\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"NotifyOnSuccess\" />\n <span>Notify on success</span>\n </label>\n <label class=\"checkbox-label\">\n <input type=\"checkbox\" [(ngModel)]=\"NotifyOnFailure\" />\n <span>Notify on failure</span>\n </label>\n </div>\n </div>\n\n <!-- Job Stats (Edit Mode) -->\n @if (Mode === 'edit' && Job) {\n <div class=\"form-section\">\n <div class=\"section-title\">Statistics</div>\n <div class=\"stats-grid\">\n <div class=\"stat-item\">\n <span class=\"stat-label\">Total Runs</span>\n <span class=\"stat-value\">{{Job.totalRuns}}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Success</span>\n <span class=\"stat-value success\">{{Job.successCount}}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Failures</span>\n <span class=\"stat-value failure\">{{Job.failureCount}}</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-label\">Created</span>\n <span class=\"stat-value\">{{Job.createdAt | date:'short'}}</span>\n </div>\n </div>\n </div>\n }\n </div>\n\n <!-- Footer -->\n <div class=\"slideout-footer\">\n <div class=\"footer-left\">\n @if (Mode === 'edit') {\n <button class=\"delete-btn\" (click)=\"ShowDeleteConfirm = true\"\n [disabled]=\"IsDeleting\">\n <i class=\"fa-solid fa-trash-can\"></i> Delete\n </button>\n }\n </div>\n <div class=\"footer-right\">\n <button class=\"cancel-btn\" (click)=\"OnClose()\">Cancel</button>\n <button class=\"save-btn\" (click)=\"Save()\" [disabled]=\"!IsValid || IsSaving\">\n @if (IsSaving) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n @if (!IsSaving) {\n <i class=\"fa-solid fa-check\"></i>\n }\n {{Mode === 'create' ? 'Create Job' : 'Save Changes'}}\n </button>\n </div>\n </div>\n\n <!-- Delete Confirmation -->\n @if (ShowDeleteConfirm) {\n <div class=\"confirm-overlay\">\n <div class=\"confirm-dialog\">\n <div class=\"confirm-icon\">\n <i class=\"fa-solid fa-triangle-exclamation\"></i>\n </div>\n <h3>Delete Job</h3>\n <p>Are you sure you want to delete \"{{Name}}\"? This action cannot be undone.</p>\n <div class=\"confirm-actions\">\n <button class=\"delete-confirm-btn\" (click)=\"Delete()\" [disabled]=\"IsDeleting\">\n @if (IsDeleting) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n Delete\n </button>\n <button class=\"cancel-btn\" (click)=\"ShowDeleteConfirm = false\">Cancel</button>\n </div>\n </div>\n </div>\n }\n</div>\n", styles: [".slideout-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n}\n\n/* \u2500\u2500 Header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.slideout-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n border-bottom: 1px solid #e2e8f0;\n background: white;\n flex-shrink: 0;\n}\n\n.slideout-title {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 1.1rem;\n font-weight: 700;\n color: #0f172a;\n}\n\n.slideout-title i {\n color: #0076b6;\n}\n\n.close-btn {\n width: 36px;\n height: 36px;\n display: flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n border: 1px solid #e5e7eb;\n border-radius: 8px;\n cursor: pointer;\n color: #64748b;\n transition: all 0.2s;\n}\n\n.close-btn:hover {\n background: #f1f5f9;\n color: #0f172a;\n}\n\n/* \u2500\u2500 Body \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.slideout-body {\n flex: 1;\n overflow-y: auto;\n padding: 24px;\n}\n\n.error-banner {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: #fef2f2;\n border: 1px solid #fecaca;\n border-radius: 10px;\n color: #dc2626;\n font-size: 0.85rem;\n font-weight: 500;\n margin-bottom: 20px;\n}\n\n/* \u2500\u2500 Form \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.form-section {\n margin-bottom: 28px;\n}\n\n.section-title {\n font-size: 0.7rem;\n font-weight: 700;\n color: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n margin-bottom: 16px;\n padding-bottom: 8px;\n border-bottom: 1px solid #f1f5f9;\n}\n\n.form-group {\n margin-bottom: 16px;\n}\n\n.form-label {\n display: block;\n font-size: 0.8rem;\n font-weight: 600;\n color: #334155;\n margin-bottom: 6px;\n}\n\n.required {\n color: #ef4444;\n}\n\n.form-input {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n font-size: 0.85rem;\n color: #0f172a;\n background: white;\n outline: none;\n transition: border-color 0.2s;\n box-sizing: border-box;\n}\n\n.form-input:focus {\n border-color: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.form-textarea {\n width: 100%;\n padding: 10px 14px;\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n font-size: 0.85rem;\n color: #0f172a;\n background: white;\n outline: none;\n transition: border-color 0.2s;\n resize: vertical;\n font-family: inherit;\n box-sizing: border-box;\n}\n\n.form-textarea:focus {\n border-color: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.form-textarea.mono,\n.form-input.mono {\n font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;\n font-size: 0.8rem;\n}\n\n.form-hint {\n font-size: 0.7rem;\n color: #94a3b8;\n margin-top: 4px;\n}\n\n.form-row {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 12px;\n}\n\n.form-row.checkboxes {\n display: flex;\n gap: 24px;\n}\n\n.checkbox-label {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 0.85rem;\n color: #334155;\n cursor: pointer;\n}\n\n.checkbox-label input[type=\"checkbox\"] {\n width: 16px;\n height: 16px;\n accent-color: #0076b6;\n}\n\n/* \u2500\u2500 Stats Grid \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.stats-grid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n gap: 12px;\n}\n\n.stat-item {\n padding: 12px 16px;\n background: #f8fafc;\n border-radius: 10px;\n border: 1px solid #f1f5f9;\n}\n\n.stat-label {\n font-size: 0.7rem;\n font-weight: 700;\n color: #94a3b8;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n display: block;\n margin-bottom: 4px;\n}\n\n.stat-value {\n font-size: 1.1rem;\n font-weight: 800;\n color: #0f172a;\n}\n\n.stat-value.success { color: #10b981; }\n.stat-value.failure { color: #ef4444; }\n\n/* \u2500\u2500 Footer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.slideout-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n border-top: 1px solid #e2e8f0;\n background: #f1f5f9;\n flex-shrink: 0;\n box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.06);\n position: relative;\n z-index: 1;\n}\n\n.footer-left, .footer-right {\n display: flex;\n gap: 8px;\n}\n\n.save-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 10px 24px;\n background: linear-gradient(135deg, #0076b6 0%, #005a8c 100%);\n color: white;\n border: none;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 600;\n transition: all 0.2s ease;\n}\n\n.save-btn:hover:not(:disabled) {\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(0, 118, 182, 0.4);\n}\n\n.save-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n.cancel-btn {\n padding: 10px 20px;\n background: white;\n border: 1px solid #e5e7eb;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 500;\n color: #475569;\n transition: all 0.2s;\n}\n\n.cancel-btn:hover {\n background: #f3f4f6;\n}\n\n.delete-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 10px 16px;\n background: transparent;\n color: #ef4444;\n border: 1px solid #fecaca;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 500;\n transition: all 0.2s;\n}\n\n.delete-btn:hover:not(:disabled) {\n background: #fef2f2;\n}\n\n.delete-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* \u2500\u2500 Delete Confirmation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.confirm-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0,0,0,0.4);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 10;\n}\n\n.confirm-dialog {\n background: white;\n border-radius: 16px;\n padding: 32px;\n max-width: 360px;\n text-align: center;\n box-shadow: 0 20px 40px rgba(0,0,0,0.2);\n}\n\n.confirm-icon {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: #fef2f2;\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0 auto 16px;\n}\n\n.confirm-icon i {\n font-size: 1.5rem;\n color: #ef4444;\n}\n\n.confirm-dialog h3 {\n font-size: 1.1rem;\n font-weight: 700;\n color: #0f172a;\n margin: 0 0 8px;\n}\n\n.confirm-dialog p {\n font-size: 0.85rem;\n color: #64748b;\n margin: 0 0 24px;\n line-height: 1.4;\n}\n\n.confirm-actions {\n display: flex;\n gap: 8px;\n justify-content: center;\n}\n\n.delete-confirm-btn {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 10px 24px;\n background: #ef4444;\n color: white;\n border: none;\n border-radius: 10px;\n cursor: pointer;\n font-size: 0.85rem;\n font-weight: 600;\n transition: all 0.2s;\n}\n\n.delete-confirm-btn:hover:not(:disabled) {\n background: #dc2626;\n}\n\n.delete-confirm-btn:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n\n/* \u2500\u2500 Code Editor \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.code-editor-wrapper {\n border: 1px solid #e2e8f0;\n border-radius: 10px;\n overflow: hidden;\n transition: border-color 0.2s;\n}\n\n.code-editor-wrapper:focus-within {\n border-color: #0076b6;\n box-shadow: 0 0 0 3px rgba(0, 118, 182, 0.1);\n}\n\n.code-editor-wrapper mj-code-editor {\n display: block;\n height: 180px;\n}\n\n/* \u2500\u2500 Responsive \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n@media (max-width: 768px) {\n .slideout-body {\n padding: 16px;\n }\n\n .form-row {\n grid-template-columns: 1fr;\n }\n\n .form-row.checkboxes {\n flex-direction: column;\n gap: 12px;\n }\n\n .code-editor-wrapper mj-code-editor {\n height: 140px;\n }\n}\n\n@media (max-width: 480px) {\n .slideout-header {\n padding: 16px;\n }\n\n .slideout-footer {\n padding: 12px 16px;\n flex-direction: column;\n gap: 10px;\n }\n\n .footer-left, .footer-right {\n width: 100%;\n }\n\n .footer-right {\n justify-content: stretch;\n }\n\n .save-btn, .cancel-btn, .delete-btn {\n flex: 1;\n justify-content: center;\n }\n\n .stats-grid {\n grid-template-columns: 1fr;\n }\n}\n"] }]
448
449
  }], () => [{ type: i1.SchedulingInstrumentationService }, { type: i0.ChangeDetectorRef }], { Mode: [{
449
450
  type: Input
450
451
  }], Job: [{
@@ -454,5 +455,5 @@ export class JobSlideoutComponent {
454
455
  }], Saved: [{
455
456
  type: Output
456
457
  }] }); })();
457
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(JobSlideoutComponent, { className: "JobSlideoutComponent", filePath: "src/Scheduling/components/job-slideout.component.ts", lineNumber: 10 }); })();
458
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(JobSlideoutComponent, { className: "JobSlideoutComponent", filePath: "src/scheduling/components/job-slideout.component.ts", lineNumber: 11 }); })();
458
459
  //# sourceMappingURL=job-slideout.component.js.map