@memberjunction/ng-core-entity-forms 6.1.4 → 6.2.0-edge.1
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.
- package/README.md +22 -0
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.d.ts +1 -1
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js +2 -2
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-overview.panel.js.map +1 -1
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts +90 -16
- package/dist/lib/custom/AIAgents/add-action-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +218 -70
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts +80 -16
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +146 -46
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +329 -27
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +794 -262
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts +76 -0
- package/dist/lib/custom/AIAgents/ai-agent-management.service.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-management.service.js +77 -33
- package/dist/lib/custom/AIAgents/ai-agent-management.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts +69 -15
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +182 -74
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts +105 -25
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +272 -112
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts +32 -6
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +71 -19
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts +10 -0
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +27 -7
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts +65 -15
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +152 -52
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts +81 -15
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +145 -45
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts +71 -17
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +175 -67
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +173 -27
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +385 -93
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts +64 -4
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +129 -29
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +260 -27
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +686 -238
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts +10 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js +17 -9
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js.map +1 -1
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts +74 -16
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +174 -58
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +108 -14
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +258 -70
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts +198 -14
- package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +387 -107
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts +12 -6
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.d.ts.map +1 -1
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.js +41 -29
- package/dist/lib/custom/BridgeProviders/bridge-provider-features.js.map +1 -1
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js +14 -14
- package/dist/lib/custom/BridgeProviders/bridge-provider-form.component.js.map +1 -1
- package/dist/lib/custom/Companies/company-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Companies/company-overview.panel.js +2 -2
- package/dist/lib/custom/Companies/company-overview.panel.js.map +1 -1
- package/dist/lib/custom/Conversations/conversation-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Conversations/conversation-overview.panel.js +2 -2
- package/dist/lib/custom/Conversations/conversation-overview.panel.js.map +1 -1
- package/dist/lib/custom/Employees/employee-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Employees/employee-overview.panel.js +2 -2
- package/dist/lib/custom/Employees/employee-overview.panel.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +209 -28
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +494 -138
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts +5 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.d.ts.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +10 -2
- package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
- package/dist/lib/custom/Files/file-form.component.d.ts +1 -1
- package/dist/lib/custom/Files/file-form.component.js +2 -2
- package/dist/lib/custom/Files/file-form.component.js.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.d.ts +300 -36
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +664 -208
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-form.component.d.ts +27 -0
- package/dist/lib/custom/MLModels/ml-model-form.component.d.ts.map +1 -0
- package/dist/lib/custom/MLModels/ml-model-form.component.js +193 -0
- package/dist/lib/custom/MLModels/ml-model-form.component.js.map +1 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +75 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.js +244 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -0
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +173 -0
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -0
- package/dist/lib/custom/MLModels/ps-model-detail.component.js +883 -0
- package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -0
- package/dist/lib/custom/Queries/query-form.component.d.ts +201 -26
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +429 -109
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.d.ts +107 -14
- package/dist/lib/custom/Queries/query-run-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +249 -79
- package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts +133 -7
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -1
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js +1268 -19
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js.map +1 -1
- package/dist/lib/custom/SearchScopes/searchscope-form.component.d.ts +1 -1
- package/dist/lib/custom/SearchScopes/searchscope-form.component.js +4 -4
- package/dist/lib/custom/SearchScopes/searchscope-form.component.js.map +1 -1
- package/dist/lib/custom/SessionBridges/session-bridge-form.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.d.ts +77 -13
- package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.js +196 -78
- package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.d.ts +49 -7
- package/dist/lib/custom/Templates/template-params-grid.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.js +132 -44
- package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.d.ts +142 -17
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +333 -113
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.d.ts +24 -4
- package/dist/lib/custom/Tests/entity-link-pill.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.js +64 -20
- package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts +217 -27
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +549 -169
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-checks.d.ts +2 -0
- package/dist/lib/custom/Tests/test-run-checks.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-checks.js +5 -1
- package/dist/lib/custom/Tests/test-run-checks.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts +2 -0
- package/dist/lib/custom/Tests/test-run-feedback-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js +5 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.d.ts +146 -18
- package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +362 -106
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts +390 -47
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +1015 -343
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +214 -26
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +535 -159
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/Users/user-overview.panel.d.ts +1 -1
- package/dist/lib/custom/Users/user-overview.panel.js +2 -2
- package/dist/lib/custom/Users/user-overview.panel.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts +208 -29
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +446 -138
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts +6 -0
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js +16 -4
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts +50 -6
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js +84 -12
- package/dist/lib/custom/ai-agent-run/ai-agent-run-data.service.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts +89 -5
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +216 -70
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts +62 -3
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +140 -42
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts +81 -10
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +165 -37
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +121 -14
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +287 -79
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts +101 -15
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js +281 -97
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts +43 -25
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js +100 -64
- package/dist/lib/custom/ai-agent-run/flow/agent-run-flow.model.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts +14 -2
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.js +71 -53
- package/dist/lib/custom/ai-agent-run/flow/constellation.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts +14 -2
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js +70 -52
- package/dist/lib/custom/ai-agent-run/flow/flame-cascade.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts +8 -0
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js +22 -6
- package/dist/lib/custom/ai-agent-run/flow/flow-svg.util.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts +24 -2
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js +91 -59
- package/dist/lib/custom/ai-agent-run/flow/flowchart.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts +10 -2
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js +33 -17
- package/dist/lib/custom/ai-agent-run/flow/pan-zoom.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts +2 -0
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js +34 -30
- package/dist/lib/custom/ai-agent-run/flow/run-tree-flow-projection.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts +14 -2
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js +69 -51
- package/dist/lib/custom/ai-agent-run/flow/subway-lines.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +32 -30
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +21 -4
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts +38 -12
- package/dist/lib/custom/shared/entity-selector-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.js +103 -51
- package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +62 -26
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +59 -51
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js +76 -74
- package/dist/lib/generated/Entities/MJAIVendor/mjaivendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +33 -15
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +100 -82
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js +24 -20
- package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js +122 -0
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.js +125 -0
- package/dist/lib/generated/Entities/MJFeatureValueCache/mjfeaturevaluecache.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js +23 -5
- package/dist/lib/generated/Entities/MJProcessRun/mjprocessrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js +25 -6
- package/dist/lib/generated/Entities/MJProcessRunDetail/mjprocessrundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js +27 -25
- package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js +11 -15
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +43 -7
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +155 -119
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.js +78 -0
- package/dist/lib/generated/Entities/MJWebSearchProvider/mjwebsearchprovider.form.component.js.map +1 -0
- package/dist/lib/generated/generated-forms.module.d.ts +240 -237
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +11 -2
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts +5 -1
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.d.ts.map +1 -1
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js +11 -3
- package/dist/lib/panels/ai-skill-sharing/ai-skill-sharing-panel.component.js.map +1 -1
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.d.ts +2 -0
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.d.ts.map +1 -1
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js +16 -12
- package/dist/lib/panels/content-sources/tag-pipeline-configuration.panel.js.map +1 -1
- package/dist/lib/panels/content-sources/website-crawler-settings.panel.d.ts +1 -1
- package/dist/lib/panels/content-sources/website-crawler-settings.panel.js +2 -2
- package/dist/lib/panels/content-sources/website-crawler-settings.panel.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +122 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.js +236 -11
- package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +72 -13
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.js +577 -78
- package/dist/lib/panels/model-predictions/model-prediction.panel.js.map +1 -1
- package/dist/lib/shared/components/template-editor.component.d.ts +133 -14
- package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +322 -124
- package/dist/lib/shared/components/template-editor.component.js.map +1 -1
- package/dist/public-api.d.ts +4 -0
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +4 -0
- package/dist/public-api.js.map +1 -1
- package/package.json +43 -41
|
@@ -295,28 +295,28 @@ function MJTemplateFormComponentExtended_Conditional_0_Template(rf, ctx) { if (r
|
|
|
295
295
|
let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended extends MJTemplateFormComponent {
|
|
296
296
|
constructor() {
|
|
297
297
|
super(...arguments);
|
|
298
|
-
this.
|
|
299
|
-
this.
|
|
300
|
-
this.
|
|
301
|
-
this.
|
|
302
|
-
this.
|
|
303
|
-
this.
|
|
304
|
-
this.
|
|
305
|
-
this.
|
|
306
|
-
this.
|
|
298
|
+
this.ToolbarConfig = CUSTOM_LAYOUT_TOOLBAR_CONFIG;
|
|
299
|
+
this.TemplateContents = [];
|
|
300
|
+
this.SelectedContentIndex = 0;
|
|
301
|
+
this.IsAddingNewContent = false;
|
|
302
|
+
this.NewTemplateContent = null;
|
|
303
|
+
this.HasUnsavedChanges = false;
|
|
304
|
+
this.TemplateInfoExpanded = true;
|
|
305
|
+
this.TemplateContentsExpanded = true;
|
|
306
|
+
this.CategoryOptions = [
|
|
307
307
|
{ text: 'Select Category...', value: '' },
|
|
308
308
|
// TODO: Load from database
|
|
309
309
|
];
|
|
310
|
-
this.
|
|
311
|
-
this.
|
|
312
|
-
this.
|
|
310
|
+
this.ContentTypeOptions = [];
|
|
311
|
+
this.SupportedLanguages = languages;
|
|
312
|
+
this.CodeEditor = null;
|
|
313
313
|
this.isUpdatingEditorValue = false;
|
|
314
|
-
this.
|
|
315
|
-
this.
|
|
316
|
-
this.
|
|
317
|
-
this.
|
|
314
|
+
this.IsRunningTemplate = false;
|
|
315
|
+
this.TemplateTestResult = null;
|
|
316
|
+
this.TemplateTestError = null;
|
|
317
|
+
this.ShowParamDialog = false;
|
|
318
318
|
// Template editor configuration for shared component
|
|
319
|
-
this.
|
|
319
|
+
this.TemplateEditorConfig = {
|
|
320
320
|
allowEdit: true,
|
|
321
321
|
showRunButton: true,
|
|
322
322
|
compactMode: false
|
|
@@ -325,13 +325,145 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
325
325
|
this.activeTimeouts = [];
|
|
326
326
|
this.confirmService = inject(MJConfirmService);
|
|
327
327
|
}
|
|
328
|
+
/** @deprecated Use {@link ToolbarConfig}. */
|
|
329
|
+
get toolbarConfig() {
|
|
330
|
+
return this.ToolbarConfig;
|
|
331
|
+
}
|
|
328
332
|
/** Custom-layout Template form looks best full-width on first open. */
|
|
329
333
|
getDefaultFormWidthMode() { return 'full-width'; }
|
|
334
|
+
/** @deprecated Use {@link TemplateContents}. */
|
|
335
|
+
get templateContents() {
|
|
336
|
+
return this.TemplateContents;
|
|
337
|
+
}
|
|
338
|
+
/** @deprecated Use {@link TemplateContents}. */
|
|
339
|
+
set templateContents(value) {
|
|
340
|
+
this.TemplateContents = value;
|
|
341
|
+
}
|
|
342
|
+
/** @deprecated Use {@link SelectedContentIndex}. */
|
|
343
|
+
get selectedContentIndex() {
|
|
344
|
+
return this.SelectedContentIndex;
|
|
345
|
+
}
|
|
346
|
+
/** @deprecated Use {@link SelectedContentIndex}. */
|
|
347
|
+
set selectedContentIndex(value) {
|
|
348
|
+
this.SelectedContentIndex = value;
|
|
349
|
+
}
|
|
350
|
+
/** @deprecated Use {@link IsAddingNewContent}. */
|
|
351
|
+
get isAddingNewContent() {
|
|
352
|
+
return this.IsAddingNewContent;
|
|
353
|
+
}
|
|
354
|
+
/** @deprecated Use {@link IsAddingNewContent}. */
|
|
355
|
+
set isAddingNewContent(value) {
|
|
356
|
+
this.IsAddingNewContent = value;
|
|
357
|
+
}
|
|
358
|
+
/** @deprecated Use {@link NewTemplateContent}. */
|
|
359
|
+
get newTemplateContent() {
|
|
360
|
+
return this.NewTemplateContent;
|
|
361
|
+
}
|
|
362
|
+
/** @deprecated Use {@link NewTemplateContent}. */
|
|
363
|
+
set newTemplateContent(value) {
|
|
364
|
+
this.NewTemplateContent = value;
|
|
365
|
+
}
|
|
366
|
+
/** @deprecated Use {@link HasUnsavedChanges}. */
|
|
367
|
+
get hasUnsavedChanges() {
|
|
368
|
+
return this.HasUnsavedChanges;
|
|
369
|
+
}
|
|
370
|
+
/** @deprecated Use {@link HasUnsavedChanges}. */
|
|
371
|
+
set hasUnsavedChanges(value) {
|
|
372
|
+
this.HasUnsavedChanges = value;
|
|
373
|
+
}
|
|
374
|
+
/** @deprecated Use {@link TemplateInfoExpanded}. */
|
|
375
|
+
get templateInfoExpanded() {
|
|
376
|
+
return this.TemplateInfoExpanded;
|
|
377
|
+
}
|
|
378
|
+
/** @deprecated Use {@link TemplateInfoExpanded}. */
|
|
379
|
+
set templateInfoExpanded(value) {
|
|
380
|
+
this.TemplateInfoExpanded = value;
|
|
381
|
+
}
|
|
382
|
+
/** @deprecated Use {@link TemplateContentsExpanded}. */
|
|
383
|
+
get templateContentsExpanded() {
|
|
384
|
+
return this.TemplateContentsExpanded;
|
|
385
|
+
}
|
|
386
|
+
/** @deprecated Use {@link TemplateContentsExpanded}. */
|
|
387
|
+
set templateContentsExpanded(value) {
|
|
388
|
+
this.TemplateContentsExpanded = value;
|
|
389
|
+
}
|
|
390
|
+
/** @deprecated Use {@link CategoryOptions}. */
|
|
391
|
+
get categoryOptions() {
|
|
392
|
+
return this.CategoryOptions;
|
|
393
|
+
}
|
|
394
|
+
/** @deprecated Use {@link CategoryOptions}. */
|
|
395
|
+
set categoryOptions(value) {
|
|
396
|
+
this.CategoryOptions = value;
|
|
397
|
+
}
|
|
398
|
+
/** @deprecated Use {@link ContentTypeOptions}. */
|
|
399
|
+
get contentTypeOptions() {
|
|
400
|
+
return this.ContentTypeOptions;
|
|
401
|
+
}
|
|
402
|
+
/** @deprecated Use {@link ContentTypeOptions}. */
|
|
403
|
+
set contentTypeOptions(value) {
|
|
404
|
+
this.ContentTypeOptions = value;
|
|
405
|
+
}
|
|
406
|
+
/** @deprecated Use {@link SupportedLanguages}. */
|
|
407
|
+
get supportedLanguages() {
|
|
408
|
+
return this.SupportedLanguages;
|
|
409
|
+
}
|
|
410
|
+
/** @deprecated Use {@link SupportedLanguages}. */
|
|
411
|
+
set supportedLanguages(value) {
|
|
412
|
+
this.SupportedLanguages = value;
|
|
413
|
+
}
|
|
414
|
+
/** @deprecated Use {@link CodeEditor}. */
|
|
415
|
+
get codeEditor() {
|
|
416
|
+
return this.CodeEditor;
|
|
417
|
+
}
|
|
418
|
+
/** @deprecated Use {@link CodeEditor}. */
|
|
419
|
+
set codeEditor(value) {
|
|
420
|
+
this.CodeEditor = value;
|
|
421
|
+
}
|
|
422
|
+
/** @deprecated Use {@link IsRunningTemplate}. */
|
|
423
|
+
get isRunningTemplate() {
|
|
424
|
+
return this.IsRunningTemplate;
|
|
425
|
+
}
|
|
426
|
+
/** @deprecated Use {@link IsRunningTemplate}. */
|
|
427
|
+
set isRunningTemplate(value) {
|
|
428
|
+
this.IsRunningTemplate = value;
|
|
429
|
+
}
|
|
430
|
+
/** @deprecated Use {@link TemplateTestResult}. */
|
|
431
|
+
get templateTestResult() {
|
|
432
|
+
return this.TemplateTestResult;
|
|
433
|
+
}
|
|
434
|
+
/** @deprecated Use {@link TemplateTestResult}. */
|
|
435
|
+
set templateTestResult(value) {
|
|
436
|
+
this.TemplateTestResult = value;
|
|
437
|
+
}
|
|
438
|
+
/** @deprecated Use {@link TemplateTestError}. */
|
|
439
|
+
get templateTestError() {
|
|
440
|
+
return this.TemplateTestError;
|
|
441
|
+
}
|
|
442
|
+
/** @deprecated Use {@link TemplateTestError}. */
|
|
443
|
+
set templateTestError(value) {
|
|
444
|
+
this.TemplateTestError = value;
|
|
445
|
+
}
|
|
446
|
+
/** @deprecated Use {@link ShowParamDialog}. */
|
|
447
|
+
get showParamDialog() {
|
|
448
|
+
return this.ShowParamDialog;
|
|
449
|
+
}
|
|
450
|
+
/** @deprecated Use {@link ShowParamDialog}. */
|
|
451
|
+
set showParamDialog(value) {
|
|
452
|
+
this.ShowParamDialog = value;
|
|
453
|
+
}
|
|
454
|
+
/** @deprecated Use {@link TemplateEditorConfig}. */
|
|
455
|
+
get templateEditorConfig() {
|
|
456
|
+
return this.TemplateEditorConfig;
|
|
457
|
+
}
|
|
458
|
+
/** @deprecated Use {@link TemplateEditorConfig}. */
|
|
459
|
+
set templateEditorConfig(value) {
|
|
460
|
+
this.TemplateEditorConfig = value;
|
|
461
|
+
}
|
|
330
462
|
async ngOnInit() {
|
|
331
463
|
await super.ngOnInit();
|
|
332
|
-
await this.
|
|
333
|
-
await this.
|
|
334
|
-
this.
|
|
464
|
+
await this.LoadTemplateContents();
|
|
465
|
+
await this.LoadCategories();
|
|
466
|
+
this.LoadContentTypes();
|
|
335
467
|
}
|
|
336
468
|
ngOnDestroy() {
|
|
337
469
|
this.destroy$.next();
|
|
@@ -344,7 +476,7 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
344
476
|
// Initial sync when view is ready
|
|
345
477
|
this.syncEditorValue();
|
|
346
478
|
}
|
|
347
|
-
async
|
|
479
|
+
async LoadTemplateContents() {
|
|
348
480
|
if (this.record && this.record.ID) {
|
|
349
481
|
try {
|
|
350
482
|
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
@@ -354,14 +486,14 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
354
486
|
OrderBy: 'Priority ASC, __mj_CreatedAt ASC',
|
|
355
487
|
ResultType: 'entity_object'
|
|
356
488
|
});
|
|
357
|
-
this.
|
|
489
|
+
this.TemplateContents = results.Results;
|
|
358
490
|
// If we have contents but no selection, select the first one
|
|
359
|
-
if (this.
|
|
360
|
-
this.
|
|
491
|
+
if (this.TemplateContents.length > 0 && this.SelectedContentIndex === 0) {
|
|
492
|
+
this.SelectedContentIndex = 0;
|
|
361
493
|
}
|
|
362
494
|
// If no template contents exist, create a default one for single-content optimization
|
|
363
|
-
if (this.
|
|
364
|
-
await this.
|
|
495
|
+
if (this.TemplateContents.length === 0) {
|
|
496
|
+
await this.CreateDefaultTemplateContent();
|
|
365
497
|
}
|
|
366
498
|
// Entity change tracking is handled automatically by BaseEntity
|
|
367
499
|
// Sync editor value after loading content
|
|
@@ -372,25 +504,33 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
372
504
|
}
|
|
373
505
|
}
|
|
374
506
|
}
|
|
375
|
-
|
|
507
|
+
/** @deprecated Use {@link LoadTemplateContents}. */
|
|
508
|
+
async loadTemplateContents() {
|
|
509
|
+
return this.LoadTemplateContents();
|
|
510
|
+
}
|
|
511
|
+
async CreateDefaultTemplateContent() {
|
|
376
512
|
const md = this.ProviderToUse;
|
|
377
513
|
const defaultContent = await md.GetEntityObject('MJ: Template Contents');
|
|
378
514
|
defaultContent.TemplateID = this.record.ID;
|
|
379
515
|
defaultContent.Priority = 1;
|
|
380
516
|
defaultContent.IsActive = true;
|
|
381
517
|
// Set default to first real content type (skip "Select Type..." if it exists)
|
|
382
|
-
const validContentTypes = this.
|
|
518
|
+
const validContentTypes = this.ContentTypeOptions.filter(option => option.value !== '');
|
|
383
519
|
if (validContentTypes.length > 0) {
|
|
384
520
|
defaultContent.TypeID = validContentTypes[0].value;
|
|
385
521
|
}
|
|
386
|
-
this.
|
|
387
|
-
this.
|
|
522
|
+
this.TemplateContents = [defaultContent];
|
|
523
|
+
this.SelectedContentIndex = 0;
|
|
388
524
|
// Sync editor value after creating default content
|
|
389
525
|
this.syncEditorValue();
|
|
390
526
|
}
|
|
391
|
-
|
|
527
|
+
/** @deprecated Use {@link CreateDefaultTemplateContent}. */
|
|
528
|
+
async createDefaultTemplateContent() {
|
|
529
|
+
return this.CreateDefaultTemplateContent();
|
|
530
|
+
}
|
|
531
|
+
async SelectTemplateContent(index, confirmSwitch = true) {
|
|
392
532
|
// If we're adding new content and user clicks on existing content, ask for confirmation
|
|
393
|
-
if (this.
|
|
533
|
+
if (this.IsAddingNewContent && confirmSwitch) {
|
|
394
534
|
if (!(await this.confirmService.Confirm({
|
|
395
535
|
title: 'Discard changes?',
|
|
396
536
|
message: 'Switch content version and lose your unsaved changes?',
|
|
@@ -399,21 +539,25 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
399
539
|
return;
|
|
400
540
|
}
|
|
401
541
|
}
|
|
402
|
-
if (index >= 0 && index < this.
|
|
403
|
-
this.
|
|
404
|
-
this.
|
|
542
|
+
if (index >= 0 && index < this.TemplateContents.length) {
|
|
543
|
+
this.SelectedContentIndex = index;
|
|
544
|
+
this.IsAddingNewContent = false;
|
|
405
545
|
// Don't clear newTemplateContent to preserve the work in progress
|
|
406
546
|
// Sync editor value when switching content
|
|
407
547
|
this.syncEditorValue();
|
|
408
548
|
}
|
|
409
549
|
}
|
|
410
|
-
|
|
550
|
+
/** @deprecated Use {@link SelectTemplateContent}. */
|
|
551
|
+
async selectTemplateContent(index, confirmSwitch = true) {
|
|
552
|
+
return this.SelectTemplateContent(index, confirmSwitch);
|
|
553
|
+
}
|
|
554
|
+
async LoadCategories() {
|
|
411
555
|
try {
|
|
412
556
|
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
413
557
|
const results = await rv.RunView({
|
|
414
558
|
EntityName: 'MJ: Template Categories'
|
|
415
559
|
});
|
|
416
|
-
this.
|
|
560
|
+
this.CategoryOptions = [
|
|
417
561
|
{ text: 'Select Category...', value: '' },
|
|
418
562
|
...results.Results.map((cat) => ({
|
|
419
563
|
text: cat.Name,
|
|
@@ -423,14 +567,18 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
423
567
|
}
|
|
424
568
|
catch (error) {
|
|
425
569
|
console.error('Error loading categories:', error);
|
|
426
|
-
this.
|
|
570
|
+
this.CategoryOptions = [{ text: 'Select Category...', value: '' }];
|
|
427
571
|
}
|
|
428
572
|
}
|
|
429
|
-
|
|
573
|
+
/** @deprecated Use {@link LoadCategories}. */
|
|
574
|
+
async loadCategories() {
|
|
575
|
+
return this.LoadCategories();
|
|
576
|
+
}
|
|
577
|
+
LoadContentTypes() {
|
|
430
578
|
try {
|
|
431
579
|
// Get content types from TemplateEngine cache
|
|
432
580
|
const contentTypes = TemplateEngineBase.Instance.TemplateContentTypes;
|
|
433
|
-
this.
|
|
581
|
+
this.ContentTypeOptions = [
|
|
434
582
|
{ text: 'Select Type...', value: '' },
|
|
435
583
|
...contentTypes.map(ct => ({
|
|
436
584
|
text: ct.Name,
|
|
@@ -441,7 +589,7 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
441
589
|
catch (error) {
|
|
442
590
|
console.error('Error loading content types:', error);
|
|
443
591
|
// Fallback to basic types
|
|
444
|
-
this.
|
|
592
|
+
this.ContentTypeOptions = [
|
|
445
593
|
{ text: 'Select Type...', value: '' },
|
|
446
594
|
{ text: 'HTML', value: 'HTML' },
|
|
447
595
|
{ text: 'Plain Text', value: 'Text' },
|
|
@@ -449,12 +597,16 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
449
597
|
];
|
|
450
598
|
}
|
|
451
599
|
}
|
|
452
|
-
|
|
600
|
+
/** @deprecated Use {@link LoadContentTypes}. */
|
|
601
|
+
loadContentTypes() {
|
|
602
|
+
return this.LoadContentTypes();
|
|
603
|
+
}
|
|
604
|
+
async OnCategoryChange(value) {
|
|
453
605
|
// If it's a new category (string but not in existing options)
|
|
454
|
-
if (value && !this.
|
|
606
|
+
if (value && !this.CategoryOptions.find(opt => opt.value === value)) {
|
|
455
607
|
// Check for duplicate category names (case-insensitive, trimmed)
|
|
456
608
|
if (this.isDuplicateCategory(value)) {
|
|
457
|
-
const existingCategory = this.
|
|
609
|
+
const existingCategory = this.CategoryOptions.find(option => option.text && option.text.trim().toLowerCase() === value.trim().toLowerCase());
|
|
458
610
|
if (existingCategory) {
|
|
459
611
|
// Use the existing category instead
|
|
460
612
|
this.record.CategoryID = existingCategory.value;
|
|
@@ -471,7 +623,7 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
471
623
|
const saved = await newCategory.Save();
|
|
472
624
|
if (saved) {
|
|
473
625
|
// Add to options and set the ID
|
|
474
|
-
this.
|
|
626
|
+
this.CategoryOptions.push({
|
|
475
627
|
text: newCategory.Name,
|
|
476
628
|
value: newCategory.ID
|
|
477
629
|
});
|
|
@@ -488,44 +640,56 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
488
640
|
}
|
|
489
641
|
}
|
|
490
642
|
}
|
|
491
|
-
|
|
643
|
+
/** @deprecated Use {@link OnCategoryChange}. */
|
|
644
|
+
async onCategoryChange(value) {
|
|
645
|
+
return this.OnCategoryChange(value);
|
|
646
|
+
}
|
|
647
|
+
async AddNewTemplateContent() {
|
|
492
648
|
const md = this.ProviderToUse;
|
|
493
|
-
this.
|
|
494
|
-
this.
|
|
495
|
-
this.
|
|
496
|
-
this.
|
|
649
|
+
this.NewTemplateContent = await md.GetEntityObject('MJ: Template Contents');
|
|
650
|
+
this.NewTemplateContent.TemplateID = this.record.ID;
|
|
651
|
+
this.NewTemplateContent.Priority = this.TemplateContents.length + 1;
|
|
652
|
+
this.NewTemplateContent.IsActive = true;
|
|
497
653
|
// Set default to first real content type (skip "Select Type..." if it exists)
|
|
498
|
-
const validContentTypes = this.
|
|
654
|
+
const validContentTypes = this.ContentTypeOptions.filter(option => option.value !== '');
|
|
499
655
|
if (validContentTypes.length > 0) {
|
|
500
|
-
this.
|
|
656
|
+
this.NewTemplateContent.TypeID = validContentTypes[0].value;
|
|
501
657
|
}
|
|
502
|
-
this.
|
|
658
|
+
this.NewTemplateContent.TemplateText = '';
|
|
503
659
|
// Add immediately to the array
|
|
504
|
-
this.
|
|
505
|
-
this.
|
|
506
|
-
this.
|
|
660
|
+
this.TemplateContents.push(this.NewTemplateContent);
|
|
661
|
+
this.SelectedContentIndex = this.TemplateContents.length - 1;
|
|
662
|
+
this.IsAddingNewContent = true;
|
|
507
663
|
// Sync editor value when adding new content
|
|
508
664
|
this.syncEditorValue();
|
|
509
665
|
}
|
|
666
|
+
/** @deprecated Use {@link AddNewTemplateContent}. */
|
|
667
|
+
async addNewTemplateContent() {
|
|
668
|
+
return this.AddNewTemplateContent();
|
|
669
|
+
}
|
|
670
|
+
CancelNewTemplateContent() {
|
|
671
|
+
this.IsAddingNewContent = false;
|
|
672
|
+
this.NewTemplateContent = null;
|
|
673
|
+
}
|
|
674
|
+
/** @deprecated Use {@link CancelNewTemplateContent}. */
|
|
510
675
|
cancelNewTemplateContent() {
|
|
511
|
-
this.
|
|
512
|
-
this.newTemplateContent = null;
|
|
676
|
+
return this.CancelNewTemplateContent();
|
|
513
677
|
}
|
|
514
|
-
async
|
|
515
|
-
if (index >= 0 && index < this.
|
|
516
|
-
const contentToDelete = this.
|
|
678
|
+
async DeleteTemplateContent(index) {
|
|
679
|
+
if (index >= 0 && index < this.TemplateContents.length) {
|
|
680
|
+
const contentToDelete = this.TemplateContents[index];
|
|
517
681
|
if (contentToDelete.ID) {
|
|
518
682
|
try {
|
|
519
683
|
const result = await contentToDelete.Delete();
|
|
520
684
|
if (result) {
|
|
521
|
-
this.
|
|
685
|
+
this.TemplateContents.splice(index, 1);
|
|
522
686
|
// Adjust selected index if necessary
|
|
523
|
-
if (this.
|
|
524
|
-
this.
|
|
687
|
+
if (this.SelectedContentIndex >= this.TemplateContents.length) {
|
|
688
|
+
this.SelectedContentIndex = Math.max(0, this.TemplateContents.length - 1);
|
|
525
689
|
}
|
|
526
690
|
// If no contents remain, create a default one
|
|
527
|
-
if (this.
|
|
528
|
-
await this.
|
|
691
|
+
if (this.TemplateContents.length === 0) {
|
|
692
|
+
await this.CreateDefaultTemplateContent();
|
|
529
693
|
}
|
|
530
694
|
}
|
|
531
695
|
else {
|
|
@@ -539,14 +703,14 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
539
703
|
}
|
|
540
704
|
else {
|
|
541
705
|
// Not saved yet, just remove from array
|
|
542
|
-
this.
|
|
543
|
-
if (this.
|
|
544
|
-
this.
|
|
706
|
+
this.TemplateContents.splice(index, 1);
|
|
707
|
+
if (this.SelectedContentIndex >= this.TemplateContents.length) {
|
|
708
|
+
this.SelectedContentIndex = Math.max(0, this.TemplateContents.length - 1);
|
|
545
709
|
}
|
|
546
710
|
// Reset adding new content state if we're deleting the new content
|
|
547
|
-
if (this.
|
|
548
|
-
this.
|
|
549
|
-
this.
|
|
711
|
+
if (this.IsAddingNewContent && index === this.TemplateContents.length) {
|
|
712
|
+
this.IsAddingNewContent = false;
|
|
713
|
+
this.NewTemplateContent = null;
|
|
550
714
|
}
|
|
551
715
|
}
|
|
552
716
|
}
|
|
@@ -554,43 +718,67 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
554
718
|
console.error('Invalid index for deletion:', index);
|
|
555
719
|
}
|
|
556
720
|
}
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
721
|
+
/** @deprecated Use {@link DeleteTemplateContent}. */
|
|
722
|
+
async deleteTemplateContent(index) {
|
|
723
|
+
return this.DeleteTemplateContent(index);
|
|
724
|
+
}
|
|
725
|
+
get CurrentTemplateContent() {
|
|
726
|
+
if (this.IsAddingNewContent) {
|
|
727
|
+
return this.NewTemplateContent;
|
|
560
728
|
}
|
|
561
|
-
return this.
|
|
729
|
+
return this.TemplateContents[this.SelectedContentIndex] || null;
|
|
730
|
+
}
|
|
731
|
+
/** @deprecated Use {@link CurrentTemplateContent}. */
|
|
732
|
+
get currentTemplateContent() {
|
|
733
|
+
return this.CurrentTemplateContent;
|
|
562
734
|
}
|
|
735
|
+
get HasMultipleContents() {
|
|
736
|
+
return this.TemplateContents.length > 1 || this.IsAddingNewContent;
|
|
737
|
+
}
|
|
738
|
+
/** @deprecated Use {@link HasMultipleContents}. */
|
|
563
739
|
get hasMultipleContents() {
|
|
564
|
-
return this.
|
|
740
|
+
return this.HasMultipleContents;
|
|
565
741
|
}
|
|
566
|
-
|
|
742
|
+
OnContentTypeChange() {
|
|
567
743
|
// Content type changes just modify the current content, no new record creation
|
|
568
744
|
this.updateUnsavedChangesFlag();
|
|
569
745
|
}
|
|
570
|
-
|
|
746
|
+
/** @deprecated Use {@link OnContentTypeChange}. */
|
|
747
|
+
onContentTypeChange() {
|
|
748
|
+
return this.OnContentTypeChange();
|
|
749
|
+
}
|
|
750
|
+
OnContentChange() {
|
|
571
751
|
this.updateUnsavedChangesFlag();
|
|
572
752
|
}
|
|
753
|
+
/** @deprecated Use {@link OnContentChange}. */
|
|
754
|
+
onContentChange() {
|
|
755
|
+
return this.OnContentChange();
|
|
756
|
+
}
|
|
573
757
|
/**
|
|
574
758
|
* Updates the hasUnsavedChanges flag based on entity dirty states
|
|
575
759
|
*/
|
|
576
760
|
updateUnsavedChangesFlag() {
|
|
577
|
-
this.
|
|
578
|
-
this.
|
|
761
|
+
this.HasUnsavedChanges = this.TemplateContents.some(content => content.Dirty) ||
|
|
762
|
+
this.IsAddingNewContent ||
|
|
579
763
|
this.record?.Dirty || false;
|
|
580
764
|
}
|
|
581
|
-
|
|
765
|
+
OnTemplateTextChange(event) {
|
|
582
766
|
if (this.isUpdatingEditorValue) {
|
|
583
767
|
// Ignore change events when we're programmatically updating the editor
|
|
584
768
|
return;
|
|
585
769
|
}
|
|
586
|
-
if (this.
|
|
770
|
+
if (this.CurrentTemplateContent) {
|
|
587
771
|
// Extract value from event - might be event.target.value or just event depending on component
|
|
588
772
|
const value = typeof event === 'string' ? event : (event.target?.value || event);
|
|
589
|
-
this.
|
|
773
|
+
this.CurrentTemplateContent.TemplateText = value;
|
|
590
774
|
// hasUnsavedChanges is automatically handled by entity's IsDirty flag
|
|
591
775
|
this.updateUnsavedChangesFlag();
|
|
592
776
|
}
|
|
593
777
|
}
|
|
778
|
+
/** @deprecated Use {@link OnTemplateTextChange}. */
|
|
779
|
+
onTemplateTextChange(event) {
|
|
780
|
+
return this.OnTemplateTextChange(event);
|
|
781
|
+
}
|
|
594
782
|
/**
|
|
595
783
|
* Helper method to track setTimeout calls for cleanup
|
|
596
784
|
*/
|
|
@@ -614,21 +802,21 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
614
802
|
Promise.resolve().then(() => {
|
|
615
803
|
// Then tracked setTimeout for the next macrotask to ensure DOM is updated
|
|
616
804
|
this.setTrackedTimeout(() => {
|
|
617
|
-
if (!this.
|
|
805
|
+
if (!this.CodeEditor) {
|
|
618
806
|
return;
|
|
619
807
|
}
|
|
620
808
|
this.isUpdatingEditorValue = true;
|
|
621
|
-
const newValue = this.
|
|
809
|
+
const newValue = this.CurrentTemplateContent?.TemplateText || '';
|
|
622
810
|
// Use the setValue method from mj-code-editor component
|
|
623
|
-
this.
|
|
811
|
+
this.CodeEditor.setValue(newValue);
|
|
624
812
|
this.isUpdatingEditorValue = false;
|
|
625
813
|
}, 0);
|
|
626
814
|
});
|
|
627
815
|
}
|
|
628
|
-
async
|
|
816
|
+
async SaveTemplateContents() {
|
|
629
817
|
try {
|
|
630
818
|
// Save all template contents that have changes
|
|
631
|
-
for (const content of this.
|
|
819
|
+
for (const content of this.TemplateContents) {
|
|
632
820
|
content.TemplateID = this.record.ID; // Ensure FK is set
|
|
633
821
|
if (content.Dirty || !content.ID) {
|
|
634
822
|
const contentResult = await content.Save();
|
|
@@ -638,8 +826,8 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
638
826
|
}
|
|
639
827
|
}
|
|
640
828
|
}
|
|
641
|
-
this.
|
|
642
|
-
this.
|
|
829
|
+
this.IsAddingNewContent = false;
|
|
830
|
+
this.NewTemplateContent = null;
|
|
643
831
|
this.updateUnsavedChangesFlag(); // Update based on current entity states
|
|
644
832
|
return true;
|
|
645
833
|
}
|
|
@@ -648,12 +836,16 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
648
836
|
return false;
|
|
649
837
|
}
|
|
650
838
|
}
|
|
839
|
+
/** @deprecated Use {@link SaveTemplateContents}. */
|
|
840
|
+
async saveTemplateContents() {
|
|
841
|
+
return this.SaveTemplateContents();
|
|
842
|
+
}
|
|
651
843
|
async SaveRecord(StopEditModeAfterSave = true) {
|
|
652
844
|
// Check if we need to create a new category first
|
|
653
|
-
if (this.record.CategoryID && !this.
|
|
845
|
+
if (this.record.CategoryID && !this.CategoryOptions.find(opt => opt.value === this.record.CategoryID)) {
|
|
654
846
|
// Check for duplicate category names (case-insensitive, trimmed)
|
|
655
847
|
if (this.isDuplicateCategory(this.record.CategoryID)) {
|
|
656
|
-
const existingCategory = this.
|
|
848
|
+
const existingCategory = this.CategoryOptions.find(option => option.text && option.text.trim().toLowerCase() === this.record.CategoryID?.trim().toLowerCase());
|
|
657
849
|
if (existingCategory) {
|
|
658
850
|
// Use the existing category instead
|
|
659
851
|
this.record.CategoryID = existingCategory.value;
|
|
@@ -670,7 +862,7 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
670
862
|
const saved = await newCategory.Save();
|
|
671
863
|
if (saved) {
|
|
672
864
|
// Add to options and set the ID
|
|
673
|
-
this.
|
|
865
|
+
this.CategoryOptions.push({
|
|
674
866
|
text: newCategory.Name,
|
|
675
867
|
value: newCategory.ID
|
|
676
868
|
});
|
|
@@ -698,21 +890,25 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
698
890
|
const templateSaved = await super.SaveRecord(StopEditModeAfterSave);
|
|
699
891
|
if (templateSaved) {
|
|
700
892
|
// Then save all template contents
|
|
701
|
-
return await this.
|
|
893
|
+
return await this.SaveTemplateContents();
|
|
702
894
|
}
|
|
703
895
|
return false;
|
|
704
896
|
}
|
|
705
|
-
|
|
897
|
+
GetContentTypeDisplayText(typeId) {
|
|
706
898
|
if (!typeId)
|
|
707
899
|
return '-';
|
|
708
|
-
const option = this.
|
|
900
|
+
const option = this.ContentTypeOptions.find(opt => opt.value === typeId);
|
|
709
901
|
return option ? option.text : typeId;
|
|
710
902
|
}
|
|
711
|
-
|
|
712
|
-
|
|
903
|
+
/** @deprecated Use {@link GetContentTypeDisplayText}. */
|
|
904
|
+
getContentTypeDisplayText(typeId) {
|
|
905
|
+
return this.GetContentTypeDisplayText(typeId);
|
|
906
|
+
}
|
|
907
|
+
GetEditorLanguage() {
|
|
908
|
+
if (!this.CurrentTemplateContent?.TypeID) {
|
|
713
909
|
return 'jinja2'; // default to jinja2 for template syntax (compatible with Nunjucks)
|
|
714
910
|
}
|
|
715
|
-
const contentType = this.
|
|
911
|
+
const contentType = this.CurrentTemplateContent.TypeID.toLowerCase();
|
|
716
912
|
// Map content types to CodeMirror language modes
|
|
717
913
|
switch (contentType) {
|
|
718
914
|
case 'html':
|
|
@@ -737,20 +933,24 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
737
933
|
return 'jinja2'; // Default to jinja2 since templates often contain template syntax
|
|
738
934
|
}
|
|
739
935
|
}
|
|
936
|
+
/** @deprecated Use {@link GetEditorLanguage}. */
|
|
937
|
+
getEditorLanguage() {
|
|
938
|
+
return this.GetEditorLanguage();
|
|
939
|
+
}
|
|
740
940
|
isDuplicateCategory(categoryName) {
|
|
741
941
|
const normalizedName = categoryName.trim().toLowerCase();
|
|
742
|
-
return this.
|
|
942
|
+
return this.CategoryOptions.some(option => option.text && option.text.trim().toLowerCase() === normalizedName);
|
|
743
943
|
}
|
|
744
944
|
/**
|
|
745
945
|
* Test run the current template using the parameter dialog
|
|
746
946
|
*/
|
|
747
|
-
async
|
|
748
|
-
if (!this.record?.IsSaved || !this.
|
|
947
|
+
async RunTemplate() {
|
|
948
|
+
if (!this.record?.IsSaved || !this.CurrentTemplateContent) {
|
|
749
949
|
MJNotificationService.Instance.CreateSimpleNotification('Please save the template before running it.', 'warning');
|
|
750
950
|
return;
|
|
751
951
|
}
|
|
752
952
|
// Save any unsaved changes first
|
|
753
|
-
if (this.
|
|
953
|
+
if (this.HasUnsavedChanges) {
|
|
754
954
|
const saveResult = await this.SaveRecord(false); // Don't exit edit mode
|
|
755
955
|
if (!saveResult) {
|
|
756
956
|
MJNotificationService.Instance.CreateSimpleNotification('Failed to save template changes.', 'error');
|
|
@@ -758,37 +958,57 @@ let MJTemplateFormComponentExtended = class MJTemplateFormComponentExtended exte
|
|
|
758
958
|
}
|
|
759
959
|
}
|
|
760
960
|
// Show the parameter dialog
|
|
761
|
-
this.
|
|
961
|
+
this.ShowParamDialog = true;
|
|
962
|
+
}
|
|
963
|
+
/** @deprecated Use {@link RunTemplate}. */
|
|
964
|
+
async runTemplate() {
|
|
965
|
+
return this.RunTemplate();
|
|
762
966
|
}
|
|
763
967
|
/**
|
|
764
968
|
* Handle parameter dialog close
|
|
765
969
|
*/
|
|
970
|
+
OnParamDialogClose() {
|
|
971
|
+
this.ShowParamDialog = false;
|
|
972
|
+
}
|
|
973
|
+
/** @deprecated Use {@link OnParamDialogClose}. */
|
|
766
974
|
onParamDialogClose() {
|
|
767
|
-
this.
|
|
975
|
+
return this.OnParamDialogClose();
|
|
768
976
|
}
|
|
769
|
-
|
|
977
|
+
GetContentTypeOptionsForContent() {
|
|
770
978
|
// Always exclude "Select Type..." option for all content
|
|
771
|
-
return this.
|
|
979
|
+
return this.ContentTypeOptions.filter(option => option.value !== '');
|
|
980
|
+
}
|
|
981
|
+
/** @deprecated Use {@link GetContentTypeOptionsForContent}. */
|
|
982
|
+
getContentTypeOptionsForContent() {
|
|
983
|
+
return this.GetContentTypeOptionsForContent();
|
|
772
984
|
}
|
|
773
985
|
/**
|
|
774
986
|
* Handles template content changes from the shared editor
|
|
775
987
|
*/
|
|
776
|
-
|
|
777
|
-
this.
|
|
988
|
+
OnSharedTemplateContentChange(content) {
|
|
989
|
+
this.TemplateContents = content;
|
|
778
990
|
this.updateUnsavedChangesFlag();
|
|
779
991
|
}
|
|
992
|
+
/** @deprecated Use {@link OnSharedTemplateContentChange}. */
|
|
993
|
+
onSharedTemplateContentChange(content) {
|
|
994
|
+
return this.OnSharedTemplateContentChange(content);
|
|
995
|
+
}
|
|
780
996
|
/**
|
|
781
997
|
* Handles template run requests from the shared editor
|
|
782
998
|
*/
|
|
999
|
+
OnSharedTemplateRun(template) {
|
|
1000
|
+
this.RunTemplate();
|
|
1001
|
+
}
|
|
1002
|
+
/** @deprecated Use {@link OnSharedTemplateRun}. */
|
|
783
1003
|
onSharedTemplateRun(template) {
|
|
784
|
-
this.
|
|
1004
|
+
return this.OnSharedTemplateRun(template);
|
|
785
1005
|
}
|
|
786
1006
|
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJTemplateFormComponentExtended_BaseFactory; return function MJTemplateFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJTemplateFormComponentExtended_BaseFactory || (ɵMJTemplateFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJTemplateFormComponentExtended)))(__ngFactoryType__ || MJTemplateFormComponentExtended); }; })(); }
|
|
787
1007
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJTemplateFormComponentExtended, selectors: [["mj-templates-form"]], viewQuery: function MJTemplateFormComponentExtended_Query(rf, ctx) { if (rf & 1) {
|
|
788
1008
|
i0.ɵɵviewQuery(_c0, 5);
|
|
789
1009
|
} if (rf & 2) {
|
|
790
1010
|
let _t;
|
|
791
|
-
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.
|
|
1011
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.CodeEditor = _t.first);
|
|
792
1012
|
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 1, vars: 1, consts: [["form", "ngForm"], [3, "Navigate", "DeleteRequested", "FavoriteToggled", "HistoryRequested", "ListManagementRequested", "Record", "FormComponent", "ToolbarConfig", "WidthMode"], [1, "record-form", 2, "display", "flex", "flex-direction", "column", "height", "100%", "overflow", "hidden"], [1, "template-main-area", 2, "display", "flex", "flex-direction", "column", "flex", "1", "min-height", "0", "overflow-y", "auto"], [1, "template-header-area"], [2, "display", "flex", "justify-content", "space-between", "align-items", "flex-start", "gap", "20px"], [2, "flex", "1", "min-width", "0"], [2, "display", "flex", "align-items", "center", "gap", "12px", "margin-bottom", "8px"], [1, "fa-solid", "fa-file-code", "template-icon"], ["type", "text", "name", "templateName", "placeholder", "Enter template name...", 1, "mj-input", 2, "font-size", "1.2em", "font-weight", "600", "min-width", "300px", "flex", "1", 3, "ngModel"], [2, "display", "flex", "gap", "16px", "margin-bottom", "12px", "flex-wrap", "wrap", "align-items", "center"], ["name", "description", "placeholder", "Enter template description...", 1, "mj-textarea", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModel", "rows"], [1, "description-text"], [2, "display", "flex", "align-items", "center", "gap", "16px", "flex-wrap", "wrap"], [2, "display", "flex", "align-items", "center", "gap", "6px", "font-size", "0.85em"], [1, "fa-solid", "fa-file-lines", "meta-icon"], [1, "meta-label"], [1, "meta-value"], [2, "display", "flex", "flex-direction", "column", "gap", "8px", "align-items", "flex-end"], ["title", "Run Template", 1, "run-template-btn"], [1, "configuration-sections"], [2, "margin-bottom", "12px", 3, "Expanded"], ["mjAccordionTitle", ""], [2, "padding", "8px", "min-height", "400px"], [2, "height", "100%", "display", "block", 3, "contentChange", "runTemplate", "template", "config"], [2, "padding", "16px"], [2, "display", "grid", "grid-template-columns", "1fr 1fr", "gap", "20px"], ["FieldName", "UserPrompt", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "UserID", "Type", "textbox", "LinkType", "Record", "LinkComponentType", "Search", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "ActiveAt", "Type", "datepicker", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "DisabledAt", "Type", "datepicker", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "IsActive", "Type", "checkbox", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "Category", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode"], ["FieldName", "User", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode"], [3, "isVisibleChange", "onClose", "template", "isVisible"], ["type", "text", "name", "templateName", "placeholder", "Enter template name...", 1, "mj-input", 2, "font-size", "1.2em", "font-weight", "600", "min-width", "300px", "flex", "1", 3, "ngModelChange", "ngModel"], [1, "active-badge"], [1, "inactive-badge"], [1, "fa-solid", "fa-check-circle"], [1, "fa-solid", "fa-pause-circle"], [1, "field-label"], ["name", "categoryId", "TextField", "text", "ValueField", "value", "Placeholder", "Select or enter new category...", 2, "width", "250px", 3, "ngModelChange", "ValueChange", "ngModel", "Data", "ValuePrimitive", "AllowCustom"], ["name", "isActive", 3, "ngModelChange", "ngModel"], ["name", "description", "placeholder", "Enter template description...", 1, "mj-textarea", 2, "width", "100%", "max-width", "600px", "margin-bottom", "12px", 3, "ngModelChange", "ngModel", "rows"], [1, "fa-solid", "fa-folder", "meta-icon"], ["title", "Run Template", 1, "run-template-btn", 3, "click"], [1, "fa-solid", "fa-play"], [1, "panel-title"], [1, "fa-solid", "fa-code"], [1, "count-badge"], [1, "fa-solid", "fa-cogs"], [2, "padding", "16px 0"], [3, "template", "editMode"], [1, "fa-solid", "fa-sliders"], [3, "Params", "NewRecordValues", "AllowLoad", "ShowToolbar"], [1, "fa-solid", "fa-robot"], [1, "fa-solid", "fa-file-text"]], template: function MJTemplateFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
793
1013
|
i0.ɵɵconditionalCreate(0, MJTemplateFormComponentExtended_Conditional_0_Template, 48, 46);
|
|
794
1014
|
} if (rf & 2) {
|
|
@@ -802,7 +1022,7 @@ export { MJTemplateFormComponentExtended };
|
|
|
802
1022
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJTemplateFormComponentExtended, [{
|
|
803
1023
|
type: Component,
|
|
804
1024
|
args: [{ standalone: false, selector: 'mj-templates-form', template: "@if (record) {\n<mj-record-form-container [Record]=\"record\" [FormComponent]=\"this\"\n [ToolbarConfig]=\"toolbarConfig\"\n [WidthMode]=\"'full-width'\"\n (Navigate)=\"OnFormNavigate($event)\"\n (DeleteRequested)=\"OnDeleteRequested()\"\n (FavoriteToggled)=\"OnFavoriteToggled()\"\n (HistoryRequested)=\"OnHistoryRequested()\"\n (ListManagementRequested)=\"OnListManagementRequested()\">\n <form class=\"record-form\" #form=\"ngForm\" style=\"display: flex; flex-direction: column; height: 100%; overflow: hidden;\">\n\n <!-- Main Content Area -->\n <div class=\"template-main-area\" style=\"display: flex; flex-direction: column; flex: 1; min-height: 0; overflow-y: auto;\">\n\n <!-- Header Section -->\n <div class=\"template-header-area\">\n <div style=\"display: flex; justify-content: space-between; align-items: flex-start; gap: 20px;\">\n\n <!-- Left: Template Info -->\n <div style=\"flex: 1; min-width: 0;\">\n <div style=\"display: flex; align-items: center; gap: 12px; margin-bottom: 8px;\">\n <i class=\"fa-solid fa-file-code template-icon\"></i>\n @if (EditMode) {\n <input type=\"text\" class=\"mj-input\"\n [(ngModel)]=\"record.Name\"\n name=\"templateName\"\n placeholder=\"Enter template name...\"\n style=\"font-size: 1.2em; font-weight: 600; min-width: 300px; flex: 1;\" />\n } @else {\n <h4>{{ record.Name || 'Unnamed Template' }}</h4>\n @if (record.IsActive) {\n <span class=\"active-badge\">\n <i class=\"fa-solid fa-check-circle\"></i> Active\n </span>\n } @else {\n <span class=\"inactive-badge\">\n <i class=\"fa-solid fa-pause-circle\"></i> Inactive\n </span>\n }\n }\n </div>\n\n <!-- Category and Active toggle when in edit mode -->\n @if (EditMode) {\n <div style=\"display: flex; gap: 16px; margin-bottom: 12px; flex-wrap: wrap; align-items: center;\">\n <div>\n <label class=\"field-label\">Category</label>\n <mj-combobox [(ngModel)]=\"record.CategoryID\"\n name=\"categoryId\"\n [Data]=\"categoryOptions\"\n TextField=\"text\"\n ValueField=\"value\"\n [ValuePrimitive]=\"true\"\n [AllowCustom]=\"true\"\n (ValueChange)=\"onCategoryChange($any($event))\"\n Placeholder=\"Select or enter new category...\"\n style=\"width: 250px;\">\n </mj-combobox>\n </div>\n <div>\n <label class=\"field-label\">Active</label>\n <mj-switch [(ngModel)]=\"record.IsActive\" name=\"isActive\"></mj-switch>\n </div>\n </div>\n }\n\n @if (EditMode) {\n <textarea class=\"mj-textarea\"\n [(ngModel)]=\"record.Description\"\n name=\"description\"\n [rows]=\"2\"\n placeholder=\"Enter template description...\"\n style=\"width: 100%; max-width: 600px; margin-bottom: 12px;\"></textarea>\n } @else if (record.Description) {\n <p class=\"description-text\">{{ record.Description }}</p>\n }\n\n <!-- Quick Info Row -->\n <div style=\"display: flex; align-items: center; gap: 16px; flex-wrap: wrap;\">\n @if (record.Category) {\n <div style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-folder meta-icon\"></i>\n <span class=\"meta-label\">Category:</span>\n <span class=\"meta-value\">{{ record.Category }}</span>\n </div>\n }\n\n <div style=\"display: flex; align-items: center; gap: 6px; font-size: 0.85em;\">\n <i class=\"fa-solid fa-file-lines meta-icon\"></i>\n <span class=\"meta-label\">Contents:</span>\n <span class=\"meta-value\">{{ templateContents.length }}</span>\n </div>\n </div>\n </div>\n\n <!-- Right: Action Buttons -->\n <div style=\"display: flex; flex-direction: column; gap: 8px; align-items: flex-end;\">\n @if (record.IsSaved) {\n <button class=\"run-template-btn\"\n (click)=\"runTemplate()\"\n title=\"Run Template\">\n <i class=\"fa-solid fa-play\"></i> Run\n </button>\n }\n </div>\n </div>\n </div>\n\n <!-- Configuration Sections with Expansion Panels -->\n <div class=\"configuration-sections\">\n\n <!-- Template Editor Section -->\n <mj-accordion-panel\n [Expanded]=\"true\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-code\"></i>\n Template Editor\n @if (templateContents.length > 0) {\n <span class=\"count-badge\">{{ templateContents.length }}</span>\n }\n </span>\n </ng-template>\n\n <div style=\"padding: 8px; min-height: 400px;\">\n <mj-template-editor\n [template]=\"record\"\n [config]=\"templateEditorConfig\"\n (contentChange)=\"onSharedTemplateContentChange($event)\"\n (runTemplate)=\"onSharedTemplateRun($event)\"\n style=\"height: 100%; display: block;\">\n </mj-template-editor>\n </div>\n </mj-accordion-panel>\n\n <!-- Details Section -->\n <mj-accordion-panel\n [Expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-cogs\"></i>\n Details\n </span>\n </ng-template>\n\n <div style=\"padding: 16px;\">\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 20px;\">\n <!-- Left Column -->\n <div>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserPrompt\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n LinkType=\"Record\"\n LinkComponentType=\"Search\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"ActiveAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"DisabledAt\"\n Type=\"datepicker\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n </div>\n\n <!-- Right Column -->\n <div>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"IsActive\"\n Type=\"checkbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Category\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"User\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\">\n </mj-form-field>\n </div>\n </div>\n </div>\n </mj-accordion-panel>\n\n <!-- Template Parameters Section -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [Expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-sliders\"></i>\n Parameters\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n <mj-template-params-grid\n [template]=\"record\"\n [editMode]=\"EditMode\">\n </mj-template-params-grid>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- AI Prompts Section -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [Expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-robot\"></i>\n AI Prompts\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: AI Prompts','TemplateID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: AI Prompts')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </div>\n </mj-accordion-panel>\n }\n\n <!-- Entity Documents Section -->\n @if (record.IsSaved) {\n <mj-accordion-panel\n [Expanded]=\"false\"\n style=\"margin-bottom: 12px;\">\n <ng-template mjAccordionTitle>\n <span class=\"panel-title\">\n <i class=\"fa-solid fa-file-text\"></i>\n Entity Documents\n </span>\n </ng-template>\n\n <div style=\"padding: 16px 0;\">\n <mj-explorer-entity-data-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: Entity Documents','TemplateID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: Entity Documents')\"\n [AllowLoad]=\"true\"\n [ShowToolbar]=\"false\">\n </mj-explorer-entity-data-grid>\n </div>\n </mj-accordion-panel>\n }\n </div>\n </div>\n </form>\n</mj-record-form-container>\n\n<!-- Template Parameter Dialog -->\n<mj-template-param-dialog\n [template]=\"record\"\n [(isVisible)]=\"showParamDialog\"\n (onClose)=\"onParamDialogClose()\">\n</mj-template-param-dialog>\n}\n", styles: [".k-pane {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n", "/* Override shared form-styles to enable flex layout */\n:host {\n display: block;\n height: 100%;\n}\n\n.record-form-container {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n background: var(--mj-bg-surface);\n}\n\n/* Override the shared record-form min-height so flex layout works properly */\n.record-form {\n min-height: 0 !important;\n}\n\n.template-header {\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n/* Header section */\n.template-header-area {\n flex-shrink: 0;\n padding: 20px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n}\n\n.template-header-area .template-icon {\n color: var(--mj-brand-primary);\n font-size: 1.4em;\n}\n\n.template-header-area h4 {\n margin: 0;\n color: var(--mj-text-primary);\n font-weight: 600;\n flex: 1;\n}\n\n.template-header-area .active-badge {\n background: color-mix(in srgb, var(--mj-status-success) 15%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border: 1px solid color-mix(in srgb, var(--mj-status-success) 30%, transparent);\n padding: 4px 12px;\n border-radius: 16px;\n font-size: 0.8em;\n font-weight: 600;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n\n.template-header-area .inactive-badge {\n background: color-mix(in srgb, var(--mj-text-muted) 15%, var(--mj-bg-surface));\n color: var(--mj-text-muted);\n border: 1px solid color-mix(in srgb, var(--mj-text-muted) 30%, transparent);\n padding: 4px 12px;\n border-radius: 16px;\n font-size: 0.8em;\n font-weight: 600;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n}\n\n.template-header-area .field-label {\n display: block;\n margin-bottom: 4px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n font-size: 0.9em;\n}\n\n.template-header-area .description-text {\n margin: 0 0 12px 0;\n color: var(--mj-text-muted);\n font-size: 0.9em;\n line-height: 1.4;\n}\n\n.template-header-area .meta-icon {\n color: var(--mj-text-muted);\n}\n\n.template-header-area .meta-label {\n color: var(--mj-text-muted);\n}\n\n.template-header-area .meta-value {\n color: var(--mj-text-secondary);\n font-weight: 500;\n}\n\n/* Run template button */\n.run-template-btn {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n padding: 10px 20px;\n border-radius: 8px;\n font-size: 0.95em;\n font-weight: 600;\n display: inline-flex;\n align-items: center;\n gap: 8px;\n cursor: pointer;\n transition: background 0.15s ease;\n}\n\n.run-template-btn:hover {\n background: var(--mj-brand-primary-hover);\n}\n\n/* Configuration sections */\n.configuration-sections {\n flex: 1;\n background: var(--mj-bg-surface);\n border-top: 2px solid var(--mj-border-default);\n padding: 16px;\n min-height: 0;\n}\n\n/* Expansion panel titles */\n.panel-title {\n display: flex;\n align-items: center;\n gap: 8px;\n font-weight: 600;\n}\n\n.panel-title i {\n color: var(--mj-text-muted);\n}\n\n.panel-title .count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 6px;\n border-radius: 10px;\n font-size: 0.7em;\n}\n\n.badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n}\n\n/* Accordion Panel Styling */\n::ng-deep .configuration-sections mj-accordion-panel {\n margin-bottom: 12px;\n}\n\n::ng-deep .configuration-sections .mj-accordion-panel {\n border: 1px solid var(--mj-border-default);\n border-radius: 12px;\n overflow: hidden;\n background: var(--mj-bg-surface-card);\n}\n\n::ng-deep .configuration-sections .mj-accordion-header {\n padding: 16px 20px;\n font-weight: 600;\n font-size: 16px;\n}\n\n::ng-deep .configuration-sections .mj-accordion-panel--expanded .mj-accordion-header {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n}\n\n::ng-deep .configuration-sections .mj-accordion-body {\n padding: 0;\n}\n\n/* Smooth transitions */\n.template-header,\n.badge {\n transition: all 0.2s ease;\n}\n"] }]
|
|
805
|
-
}], null, {
|
|
1025
|
+
}], null, { CodeEditor: [{
|
|
806
1026
|
type: ViewChild,
|
|
807
1027
|
args: ['codeEditor']
|
|
808
1028
|
}] }); })();
|