@memberjunction/ng-core-entity-forms 6.2.0-edge.0 → 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/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-view-models.d.ts +31 -0
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.js +52 -16
- package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +107 -10
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.js +291 -101
- package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -1
- 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 +110 -4
- package/dist/lib/custom/RecordProcesses/record-process-form.component.d.ts.map +1 -1
- package/dist/lib/custom/RecordProcesses/record-process-form.component.js +858 -86
- 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 +140 -15
- 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 +326 -100
- 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/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/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/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/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/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 +45 -19
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.js +95 -43
- package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts +20 -16
- package/dist/lib/panels/model-predictions/model-prediction.panel.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.panel.js +73 -65
- 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/package.json +43 -42
|
@@ -11,7 +11,7 @@ function EntitySelectorDialogComponent_Conditional_3_Template(rf, ctx) { if (rf
|
|
|
11
11
|
i0.ɵɵelement(0, "i");
|
|
12
12
|
} if (rf & 2) {
|
|
13
13
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
14
|
-
i0.ɵɵclassMap(ctx_r0.config.
|
|
14
|
+
i0.ɵɵclassMap(ctx_r0.config.Icon);
|
|
15
15
|
} }
|
|
16
16
|
function EntitySelectorDialogComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
17
17
|
i0.ɵɵelementStart(0, "div", 8);
|
|
@@ -22,7 +22,7 @@ function EntitySelectorDialogComponent_Conditional_10_Template(rf, ctx) { if (rf
|
|
|
22
22
|
} if (rf & 2) {
|
|
23
23
|
const ctx_r0 = i0.ɵɵnextContext();
|
|
24
24
|
i0.ɵɵadvance(3);
|
|
25
|
-
i0.ɵɵtextInterpolate1("Loading ", ctx_r0.config.
|
|
25
|
+
i0.ɵɵtextInterpolate1("Loading ", ctx_r0.config.EntityName, "...");
|
|
26
26
|
} }
|
|
27
27
|
function EntitySelectorDialogComponent_Conditional_11_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
28
28
|
i0.ɵɵelement(0, "mj-empty-state", 16);
|
|
@@ -38,7 +38,7 @@ function EntitySelectorDialogComponent_Conditional_11_Conditional_2_For_2_Condit
|
|
|
38
38
|
const entity_r3 = i0.ɵɵnextContext().$implicit;
|
|
39
39
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
40
40
|
i0.ɵɵadvance();
|
|
41
|
-
i0.ɵɵtextInterpolate(entity_r3[ctx_r0.config.
|
|
41
|
+
i0.ɵɵtextInterpolate(entity_r3[ctx_r0.config.DescriptionField]);
|
|
42
42
|
} }
|
|
43
43
|
function EntitySelectorDialogComponent_Conditional_11_Conditional_2_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
44
44
|
i0.ɵɵelementStart(0, "div", 24)(1, "span", 25);
|
|
@@ -48,9 +48,9 @@ function EntitySelectorDialogComponent_Conditional_11_Conditional_2_For_2_Condit
|
|
|
48
48
|
const entity_r3 = i0.ɵɵnextContext().$implicit;
|
|
49
49
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
50
50
|
i0.ɵɵadvance();
|
|
51
|
-
i0.ɵɵclassProp("active", entity_r3[ctx_r0.config.
|
|
51
|
+
i0.ɵɵclassProp("active", entity_r3[ctx_r0.config.StatusField] === "Active");
|
|
52
52
|
i0.ɵɵadvance();
|
|
53
|
-
i0.ɵɵtextInterpolate1(" ", entity_r3[ctx_r0.config.
|
|
53
|
+
i0.ɵɵtextInterpolate1(" ", entity_r3[ctx_r0.config.StatusField], " ");
|
|
54
54
|
} }
|
|
55
55
|
function EntitySelectorDialogComponent_Conditional_11_Conditional_2_For_2_Template(rf, ctx) { if (rf & 1) {
|
|
56
56
|
const _r2 = i0.ɵɵgetCurrentView();
|
|
@@ -70,13 +70,13 @@ function EntitySelectorDialogComponent_Conditional_11_Conditional_2_For_2_Templa
|
|
|
70
70
|
const ctx_r0 = i0.ɵɵnextContext(3);
|
|
71
71
|
i0.ɵɵclassProp("selected", ctx_r0.IsEntitySelected(entity_r3));
|
|
72
72
|
i0.ɵɵadvance(2);
|
|
73
|
-
i0.ɵɵclassMap(ctx_r0.config.
|
|
73
|
+
i0.ɵɵclassMap(ctx_r0.config.Icon || "fa-solid fa-file");
|
|
74
74
|
i0.ɵɵadvance(3);
|
|
75
|
-
i0.ɵɵtextInterpolate(entity_r3[ctx_r0.config.
|
|
75
|
+
i0.ɵɵtextInterpolate(entity_r3[ctx_r0.config.DisplayField] || "Untitled");
|
|
76
76
|
i0.ɵɵadvance();
|
|
77
|
-
i0.ɵɵconditional(ctx_r0.config.
|
|
77
|
+
i0.ɵɵconditional(ctx_r0.config.DescriptionField && entity_r3[ctx_r0.config.DescriptionField] ? 6 : -1);
|
|
78
78
|
i0.ɵɵadvance();
|
|
79
|
-
i0.ɵɵconditional(ctx_r0.config.
|
|
79
|
+
i0.ɵɵconditional(ctx_r0.config.StatusField && entity_r3[ctx_r0.config.StatusField] ? 7 : -1);
|
|
80
80
|
} }
|
|
81
81
|
function EntitySelectorDialogComponent_Conditional_11_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
82
82
|
i0.ɵɵelementStart(0, "div", 17);
|
|
@@ -97,73 +97,125 @@ function EntitySelectorDialogComponent_Conditional_11_Template(rf, ctx) { if (rf
|
|
|
97
97
|
i0.ɵɵconditional(ctx_r0.filteredEntities.length === 0 ? 1 : 2);
|
|
98
98
|
} }
|
|
99
99
|
export class EntitySelectorDialogComponent extends BaseAngularComponent {
|
|
100
|
+
/** @deprecated Use {@link Entities}. */
|
|
101
|
+
get entities() {
|
|
102
|
+
return this.Entities;
|
|
103
|
+
}
|
|
104
|
+
/** @deprecated Use {@link Entities}. */
|
|
105
|
+
set entities(value) {
|
|
106
|
+
this.Entities = value;
|
|
107
|
+
}
|
|
108
|
+
/** @deprecated Use {@link FilteredEntities}. */
|
|
109
|
+
get filteredEntities() {
|
|
110
|
+
return this.FilteredEntities;
|
|
111
|
+
}
|
|
112
|
+
/** @deprecated Use {@link FilteredEntities}. */
|
|
113
|
+
set filteredEntities(value) {
|
|
114
|
+
this.FilteredEntities = value;
|
|
115
|
+
}
|
|
116
|
+
/** @deprecated Use {@link SelectedEntity}. */
|
|
117
|
+
get selectedEntity() {
|
|
118
|
+
return this.SelectedEntity;
|
|
119
|
+
}
|
|
120
|
+
/** @deprecated Use {@link SelectedEntity}. */
|
|
121
|
+
set selectedEntity(value) {
|
|
122
|
+
this.SelectedEntity = value;
|
|
123
|
+
}
|
|
124
|
+
/** @deprecated Use {@link SearchText}. */
|
|
125
|
+
get searchText() {
|
|
126
|
+
return this.SearchText;
|
|
127
|
+
}
|
|
128
|
+
/** @deprecated Use {@link SearchText}. */
|
|
129
|
+
set searchText(value) {
|
|
130
|
+
this.SearchText = value;
|
|
131
|
+
}
|
|
100
132
|
constructor(sharedService) {
|
|
101
133
|
super();
|
|
102
134
|
this.sharedService = sharedService;
|
|
103
|
-
this.
|
|
104
|
-
this.
|
|
105
|
-
this.
|
|
106
|
-
this.
|
|
135
|
+
this.Entities = [];
|
|
136
|
+
this.FilteredEntities = [];
|
|
137
|
+
this.SelectedEntity = null;
|
|
138
|
+
this.SearchText = '';
|
|
107
139
|
this.isLoading = true;
|
|
108
140
|
this.DialogClosed = new EventEmitter();
|
|
109
141
|
}
|
|
110
142
|
/** Title for the empty/no-results placeholder, echoing the active search term when narrowed. */
|
|
111
143
|
get EmptyStateTitle() {
|
|
112
|
-
return this.
|
|
113
|
-
? `No ${this.config.
|
|
114
|
-
: `No ${this.config.
|
|
144
|
+
return this.SearchText
|
|
145
|
+
? `No ${this.config.EntityName} match "${this.SearchText}"`
|
|
146
|
+
: `No ${this.config.EntityName} found`;
|
|
115
147
|
}
|
|
116
148
|
async ngOnInit() {
|
|
117
|
-
await this.
|
|
149
|
+
await this.LoadEntities();
|
|
118
150
|
}
|
|
119
|
-
async
|
|
151
|
+
async LoadEntities() {
|
|
120
152
|
this.isLoading = true;
|
|
121
153
|
try {
|
|
122
154
|
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
123
155
|
const result = await rv.RunView({
|
|
124
|
-
EntityName: this.config.
|
|
125
|
-
ExtraFilter: this.config.
|
|
126
|
-
OrderBy: this.config.
|
|
156
|
+
EntityName: this.config.EntityName,
|
|
157
|
+
ExtraFilter: this.config.Filters,
|
|
158
|
+
OrderBy: this.config.OrderBy
|
|
127
159
|
});
|
|
128
|
-
this.
|
|
129
|
-
this.
|
|
160
|
+
this.Entities = result.Results;
|
|
161
|
+
this.FilteredEntities = [...this.Entities];
|
|
130
162
|
}
|
|
131
163
|
catch (error) {
|
|
132
164
|
console.error('Error loading entities:', error);
|
|
133
|
-
this.
|
|
134
|
-
this.
|
|
165
|
+
this.Entities = [];
|
|
166
|
+
this.FilteredEntities = [];
|
|
135
167
|
}
|
|
136
168
|
finally {
|
|
137
169
|
this.isLoading = false;
|
|
138
170
|
}
|
|
139
171
|
}
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
172
|
+
/** @deprecated Use {@link LoadEntities}. */
|
|
173
|
+
async loadEntities() {
|
|
174
|
+
return this.LoadEntities();
|
|
175
|
+
}
|
|
176
|
+
OnSearchChange() {
|
|
177
|
+
if (!this.SearchText) {
|
|
178
|
+
this.FilteredEntities = [...this.Entities];
|
|
143
179
|
}
|
|
144
180
|
else {
|
|
145
|
-
const searchLower = this.
|
|
146
|
-
this.
|
|
147
|
-
const displayValue = entity[this.config.
|
|
148
|
-
const descriptionValue = this.config.
|
|
181
|
+
const searchLower = this.SearchText.toLowerCase();
|
|
182
|
+
this.FilteredEntities = this.Entities.filter(entity => {
|
|
183
|
+
const displayValue = entity[this.config.DisplayField] || '';
|
|
184
|
+
const descriptionValue = this.config.DescriptionField ? (entity[this.config.DescriptionField] || '') : '';
|
|
149
185
|
return displayValue.toLowerCase().includes(searchLower) ||
|
|
150
186
|
descriptionValue.toLowerCase().includes(searchLower);
|
|
151
187
|
});
|
|
152
188
|
}
|
|
153
189
|
}
|
|
190
|
+
/** @deprecated Use {@link OnSearchChange}. */
|
|
191
|
+
onSearchChange() {
|
|
192
|
+
return this.OnSearchChange();
|
|
193
|
+
}
|
|
194
|
+
SelectEntity(entity) {
|
|
195
|
+
this.SelectedEntity = entity;
|
|
196
|
+
}
|
|
197
|
+
/** @deprecated Use {@link SelectEntity}. */
|
|
154
198
|
selectEntity(entity) {
|
|
155
|
-
this.
|
|
199
|
+
return this.SelectEntity(entity);
|
|
156
200
|
}
|
|
157
|
-
|
|
158
|
-
if (this.
|
|
159
|
-
this.DialogClosed.emit({ entity: this.
|
|
201
|
+
OnSelect() {
|
|
202
|
+
if (this.SelectedEntity) {
|
|
203
|
+
this.DialogClosed.emit({ entity: this.SelectedEntity });
|
|
160
204
|
}
|
|
161
205
|
}
|
|
162
|
-
|
|
206
|
+
/** @deprecated Use {@link OnSelect}. */
|
|
207
|
+
onSelect() {
|
|
208
|
+
return this.OnSelect();
|
|
209
|
+
}
|
|
210
|
+
CreateNew() {
|
|
163
211
|
this.DialogClosed.emit({ createNew: true });
|
|
164
212
|
}
|
|
213
|
+
/** @deprecated Use {@link CreateNew}. */
|
|
214
|
+
createNew() {
|
|
215
|
+
return this.CreateNew();
|
|
216
|
+
}
|
|
165
217
|
IsEntitySelected(entity) {
|
|
166
|
-
return UUIDsEqual(this.
|
|
218
|
+
return UUIDsEqual(this.SelectedEntity?.ID, entity.ID);
|
|
167
219
|
}
|
|
168
220
|
onCancel() {
|
|
169
221
|
this.DialogClosed.emit(null);
|
|
@@ -198,9 +250,9 @@ export class EntitySelectorDialogComponent extends BaseAngularComponent {
|
|
|
198
250
|
i0.ɵɵelementEnd()()();
|
|
199
251
|
} if (rf & 2) {
|
|
200
252
|
i0.ɵɵadvance(3);
|
|
201
|
-
i0.ɵɵconditional(ctx.config.
|
|
253
|
+
i0.ɵɵconditional(ctx.config.Icon ? 3 : -1);
|
|
202
254
|
i0.ɵɵadvance();
|
|
203
|
-
i0.ɵɵtextInterpolate1(" ", ctx.config.
|
|
255
|
+
i0.ɵɵtextInterpolate1(" ", ctx.config.Title);
|
|
204
256
|
i0.ɵɵadvance(5);
|
|
205
257
|
i0.ɵɵtwoWayProperty("ngModel", ctx.searchText);
|
|
206
258
|
i0.ɵɵadvance();
|
|
@@ -216,9 +268,9 @@ export class EntitySelectorDialogComponent extends BaseAngularComponent {
|
|
|
216
268
|
args: [{ standalone: false, selector: 'mj-entity-selector-dialog', template: `
|
|
217
269
|
<div class="dialog-wrapper">
|
|
218
270
|
<div class="dialog-header">
|
|
219
|
-
<h3>@if (config.
|
|
220
|
-
<i [class]="config.
|
|
221
|
-
} {{ config.
|
|
271
|
+
<h3>@if (config.Icon) {
|
|
272
|
+
<i [class]="config.Icon"></i>
|
|
273
|
+
} {{ config.Title }}</h3>
|
|
222
274
|
</div>
|
|
223
275
|
<div class="dialog-content">
|
|
224
276
|
<!-- Search Bar -->
|
|
@@ -233,7 +285,7 @@ export class EntitySelectorDialogComponent extends BaseAngularComponent {
|
|
|
233
285
|
@if (isLoading) {
|
|
234
286
|
<div class="loading-state">
|
|
235
287
|
<i class="fa-solid fa-spinner fa-spin"></i>
|
|
236
|
-
<p>Loading {{ config.
|
|
288
|
+
<p>Loading {{ config.EntityName }}...</p>
|
|
237
289
|
</div>
|
|
238
290
|
}
|
|
239
291
|
|
|
@@ -251,17 +303,17 @@ export class EntitySelectorDialogComponent extends BaseAngularComponent {
|
|
|
251
303
|
[class.selected]="IsEntitySelected(entity)"
|
|
252
304
|
(click)="selectEntity(entity)">
|
|
253
305
|
<div class="item-icon">
|
|
254
|
-
<i [class]="config.
|
|
306
|
+
<i [class]="config.Icon || 'fa-solid fa-file'"></i>
|
|
255
307
|
</div>
|
|
256
308
|
<div class="item-content">
|
|
257
|
-
<div class="item-title">{{ entity[config.
|
|
258
|
-
@if (config.
|
|
259
|
-
<div class="item-description">{{ entity[config.
|
|
309
|
+
<div class="item-title">{{ entity[config.DisplayField] || 'Untitled' }}</div>
|
|
310
|
+
@if (config.DescriptionField && entity[config.DescriptionField]) {
|
|
311
|
+
<div class="item-description">{{ entity[config.DescriptionField] }}</div>
|
|
260
312
|
}
|
|
261
|
-
@if (config.
|
|
313
|
+
@if (config.StatusField && entity[config.StatusField]) {
|
|
262
314
|
<div class="item-status">
|
|
263
|
-
<span class="status-badge" [class.active]="entity[config.
|
|
264
|
-
{{ entity[config.
|
|
315
|
+
<span class="status-badge" [class.active]="entity[config.StatusField] === 'Active'">
|
|
316
|
+
{{ entity[config.StatusField] }}
|
|
265
317
|
</span>
|
|
266
318
|
</div>
|
|
267
319
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity-selector-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/shared/entity-selector-dialog.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { RunView } from '@memberjunction/core';\nimport { UUIDsEqual } from '@memberjunction/global';\n\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nexport interface EntitySelectorConfig {\n entityName: string;\n title: string;\n displayField: string;\n descriptionField?: string;\n statusField?: string;\n filters?: string;\n orderBy?: string;\n icon?: string;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-entity-selector-dialog',\n template: `\n <div class=\"dialog-wrapper\">\n <div class=\"dialog-header\">\n <h3>@if (config.icon) {\n <i [class]=\"config.icon\"></i>\n } {{ config.title }}</h3>\n </div>\n <div class=\"dialog-content\">\n <!-- Search Bar -->\n <div class=\"search-bar\">\n <div class=\"search-input-wrapper\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input class=\"mj-input search-input\" [(ngModel)]=\"searchText\" placeholder=\"Search...\" (ngModelChange)=\"onSearchChange()\" />\n </div>\n </div>\n \n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading {{ config.entityName }}...</p>\n </div>\n }\n\n <!-- Entity List -->\n @if (!isLoading) {\n <div class=\"entity-list-container\">\n @if (filteredEntities.length === 0) {\n <mj-empty-state class=\"empty-state\"\n [Variant]=\"searchText ? 'no-results' : 'empty'\"\n [Title]=\"EmptyStateTitle\" />\n } @else {\n <div class=\"entity-list\">\n @for (entity of filteredEntities; track entity.ID) {\n <div class=\"entity-item\"\n [class.selected]=\"IsEntitySelected(entity)\"\n (click)=\"selectEntity(entity)\">\n <div class=\"item-icon\">\n <i [class]=\"config.icon || 'fa-solid fa-file'\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ entity[config.displayField] || 'Untitled' }}</div>\n @if (config.descriptionField && entity[config.descriptionField]) {\n <div class=\"item-description\">{{ entity[config.descriptionField] }}</div>\n }\n @if (config.statusField && entity[config.statusField]) {\n <div class=\"item-status\">\n <span class=\"status-badge\" [class.active]=\"entity[config.statusField] === 'Active'\">\n {{ entity[config.statusField] }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n <div class=\"dialog-actions\">\n <button mjButton variant=\"primary\" (click)=\"createNew()\">\n <i class=\"fa-solid fa-plus\"></i> Create New\n </button>\n <button mjButton (click)=\"onCancel()\">Cancel</button>\n <button mjButton variant=\"primary\" [disabled]=\"!selectedEntity\" (click)=\"onSelect()\">Select</button>\n </div>\n </div>\n `,\n styles: [`\n .dialog-wrapper {\n display: flex;\n flex-direction: column;\n height: 600px;\n width: 800px;\n }\n\n .dialog-header {\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .dialog-header h3 {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .dialog-content {\n display: flex;\n flex-direction: column;\n flex: 1;\n padding: 16px;\n gap: 16px;\n overflow: hidden;\n }\n\n .dialog-actions {\n padding: 16px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n }\n\n .search-bar {\n display: flex;\n gap: 12px;\n }\n\n .search-input-wrapper {\n flex: 1;\n position: relative;\n display: flex;\n align-items: center;\n }\n\n .search-icon {\n position: absolute;\n left: 10px;\n color: var(--mj-text-muted);\n pointer-events: none;\n }\n\n .search-input {\n flex: 1;\n padding-left: 32px;\n }\n\n .loading-state {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n gap: 12px;\n }\n\n .loading-state i {\n font-size: 48px;\n color: var(--mj-border-default);\n }\n\n mj-empty-state.empty-state {\n flex: 1;\n }\n\n .entity-list-container {\n flex: 1;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken);\n }\n\n .entity-list {\n padding: 8px;\n }\n\n .entity-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n margin-bottom: 8px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .entity-item:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-md);\n }\n\n .entity-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n }\n\n .item-icon {\n width: 36px;\n height: 36px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .item-icon i {\n color: var(--mj-brand-primary);\n font-size: 16px;\n }\n\n .item-content {\n flex: 1;\n min-width: 0;\n }\n\n .item-title {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n }\n\n .item-description {\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .item-status {\n margin-top: 4px;\n }\n\n .status-badge {\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n font-weight: 500;\n }\n\n .status-badge.active {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n }\n `]\n})\nexport class EntitySelectorDialogComponent extends BaseAngularComponent implements OnInit {\n @Input() config!: EntitySelectorConfig;\n\n public entities: any[] = [];\n public filteredEntities: any[] = [];\n public selectedEntity: any = null;\n public searchText: string = '';\n public isLoading: boolean = true;\n\n @Output() DialogClosed = new EventEmitter<Record<string, unknown> | null>();\n\n constructor(\n private sharedService: SharedService\n ) {\n super();}\n\n /** Title for the empty/no-results placeholder, echoing the active search term when narrowed. */\n public get EmptyStateTitle(): string {\n return this.searchText\n ? `No ${this.config.entityName} match \"${this.searchText}\"`\n : `No ${this.config.entityName} found`;\n }\n\n async ngOnInit() {\n await this.loadEntities();\n }\n\n async loadEntities() {\n this.isLoading = true;\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView({\n EntityName: this.config.entityName,\n ExtraFilter: this.config.filters,\n OrderBy: this.config.orderBy \n });\n\n this.entities = result.Results;\n this.filteredEntities = [...this.entities];\n } catch (error) {\n console.error('Error loading entities:', error);\n this.entities = [];\n this.filteredEntities = [];\n } finally {\n this.isLoading = false;\n }\n }\n\n onSearchChange() {\n if (!this.searchText) {\n this.filteredEntities = [...this.entities];\n } else {\n const searchLower = this.searchText.toLowerCase();\n this.filteredEntities = this.entities.filter(entity => {\n const displayValue = entity[this.config.displayField] || '';\n const descriptionValue = this.config.descriptionField ? (entity[this.config.descriptionField] || '') : '';\n return displayValue.toLowerCase().includes(searchLower) || \n descriptionValue.toLowerCase().includes(searchLower);\n });\n }\n }\n\n selectEntity(entity: any) {\n this.selectedEntity = entity;\n }\n\n onSelect() {\n if (this.selectedEntity) {\n this.DialogClosed.emit({ entity: this.selectedEntity });\n }\n }\n\n createNew() {\n this.DialogClosed.emit({ createNew: true });\n }\n\n IsEntitySelected(entity: Record<string, unknown>): boolean {\n return UUIDsEqual(this.selectedEntity?.ID, entity.ID as string);\n }\n\n onCancel() {\n this.DialogClosed.emit(null);\n }\n}"]}
|
|
1
|
+
{"version":3,"file":"entity-selector-dialog.component.js","sourceRoot":"","sources":["../../../../src/lib/custom/shared/entity-selector-dialog.component.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component, Input, Output, EventEmitter, OnInit } from '@angular/core';\nimport { SharedService } from '@memberjunction/ng-shared';\nimport { RunView } from '@memberjunction/core';\nimport { UUIDsEqual } from '@memberjunction/global';\n\nimport { BaseAngularComponent } from '@memberjunction/ng-base-types';\nexport interface EntitySelectorConfig {\n EntityName: string;\n Title: string;\n DisplayField: string;\n DescriptionField?: string;\n StatusField?: string;\n Filters?: string;\n OrderBy?: string;\n Icon?: string;\n}\n\n@Component({\n standalone: false,\n selector: 'mj-entity-selector-dialog',\n template: `\n <div class=\"dialog-wrapper\">\n <div class=\"dialog-header\">\n <h3>@if (config.Icon) {\n <i [class]=\"config.Icon\"></i>\n } {{ config.Title }}</h3>\n </div>\n <div class=\"dialog-content\">\n <!-- Search Bar -->\n <div class=\"search-bar\">\n <div class=\"search-input-wrapper\">\n <i class=\"fa-solid fa-search search-icon\"></i>\n <input class=\"mj-input search-input\" [(ngModel)]=\"searchText\" placeholder=\"Search...\" (ngModelChange)=\"onSearchChange()\" />\n </div>\n </div>\n \n <!-- Loading State -->\n @if (isLoading) {\n <div class=\"loading-state\">\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n <p>Loading {{ config.EntityName }}...</p>\n </div>\n }\n\n <!-- Entity List -->\n @if (!isLoading) {\n <div class=\"entity-list-container\">\n @if (filteredEntities.length === 0) {\n <mj-empty-state class=\"empty-state\"\n [Variant]=\"searchText ? 'no-results' : 'empty'\"\n [Title]=\"EmptyStateTitle\" />\n } @else {\n <div class=\"entity-list\">\n @for (entity of filteredEntities; track entity.ID) {\n <div class=\"entity-item\"\n [class.selected]=\"IsEntitySelected(entity)\"\n (click)=\"selectEntity(entity)\">\n <div class=\"item-icon\">\n <i [class]=\"config.Icon || 'fa-solid fa-file'\"></i>\n </div>\n <div class=\"item-content\">\n <div class=\"item-title\">{{ entity[config.DisplayField] || 'Untitled' }}</div>\n @if (config.DescriptionField && entity[config.DescriptionField]) {\n <div class=\"item-description\">{{ entity[config.DescriptionField] }}</div>\n }\n @if (config.StatusField && entity[config.StatusField]) {\n <div class=\"item-status\">\n <span class=\"status-badge\" [class.active]=\"entity[config.StatusField] === 'Active'\">\n {{ entity[config.StatusField] }}\n </span>\n </div>\n }\n </div>\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n <div class=\"dialog-actions\">\n <button mjButton variant=\"primary\" (click)=\"createNew()\">\n <i class=\"fa-solid fa-plus\"></i> Create New\n </button>\n <button mjButton (click)=\"onCancel()\">Cancel</button>\n <button mjButton variant=\"primary\" [disabled]=\"!selectedEntity\" (click)=\"onSelect()\">Select</button>\n </div>\n </div>\n `,\n styles: [`\n .dialog-wrapper {\n display: flex;\n flex-direction: column;\n height: 600px;\n width: 800px;\n }\n\n .dialog-header {\n padding: 16px;\n border-bottom: 1px solid var(--mj-border-default);\n }\n\n .dialog-header h3 {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .dialog-content {\n display: flex;\n flex-direction: column;\n flex: 1;\n padding: 16px;\n gap: 16px;\n overflow: hidden;\n }\n\n .dialog-actions {\n padding: 16px;\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n gap: 8px;\n justify-content: flex-end;\n }\n\n .search-bar {\n display: flex;\n gap: 12px;\n }\n\n .search-input-wrapper {\n flex: 1;\n position: relative;\n display: flex;\n align-items: center;\n }\n\n .search-icon {\n position: absolute;\n left: 10px;\n color: var(--mj-text-muted);\n pointer-events: none;\n }\n\n .search-input {\n flex: 1;\n padding-left: 32px;\n }\n\n .loading-state {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-muted);\n gap: 12px;\n }\n\n .loading-state i {\n font-size: 48px;\n color: var(--mj-border-default);\n }\n\n mj-empty-state.empty-state {\n flex: 1;\n }\n\n .entity-list-container {\n flex: 1;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n background: var(--mj-bg-surface-sunken);\n }\n\n .entity-list {\n padding: 8px;\n }\n\n .entity-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px;\n margin-bottom: 8px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s ease;\n }\n\n .entity-item:hover {\n border-color: var(--mj-brand-primary);\n box-shadow: var(--mj-shadow-md);\n }\n\n .entity-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-color: var(--mj-brand-primary);\n }\n\n .item-icon {\n width: 36px;\n height: 36px;\n background: var(--mj-bg-surface-sunken);\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n }\n\n .item-icon i {\n color: var(--mj-brand-primary);\n font-size: 16px;\n }\n\n .item-content {\n flex: 1;\n min-width: 0;\n }\n\n .item-title {\n font-weight: 600;\n color: var(--mj-text-primary);\n margin-bottom: 4px;\n }\n\n .item-description {\n font-size: 13px;\n color: var(--mj-text-muted);\n line-height: 1.4;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .item-status {\n margin-top: 4px;\n }\n\n .status-badge {\n font-size: 11px;\n padding: 2px 8px;\n border-radius: 12px;\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n font-weight: 500;\n }\n\n .status-badge.active {\n background: var(--mj-status-success-bg);\n color: var(--mj-status-success-text);\n }\n `]\n})\nexport class EntitySelectorDialogComponent extends BaseAngularComponent implements OnInit {\n @Input() config!: EntitySelectorConfig;\n\n public Entities: any[] = [];\n\n /** @deprecated Use {@link Entities}. */\n public get entities(): any[] {\n return this.Entities;\n }\n /** @deprecated Use {@link Entities}. */\n public set entities(value: any[]) {\n this.Entities = value;\n }\n public FilteredEntities: any[] = [];\n\n /** @deprecated Use {@link FilteredEntities}. */\n public get filteredEntities(): any[] {\n return this.FilteredEntities;\n }\n /** @deprecated Use {@link FilteredEntities}. */\n public set filteredEntities(value: any[]) {\n this.FilteredEntities = value;\n }\n public SelectedEntity: any = null;\n\n /** @deprecated Use {@link SelectedEntity}. */\n public get selectedEntity(): any {\n return this.SelectedEntity;\n }\n /** @deprecated Use {@link SelectedEntity}. */\n public set selectedEntity(value: any) {\n this.SelectedEntity = value;\n }\n public SearchText: string = '';\n\n /** @deprecated Use {@link SearchText}. */\n public get searchText(): string {\n return this.SearchText;\n }\n /** @deprecated Use {@link SearchText}. */\n public set searchText(value: string) {\n this.SearchText = value;\n }\n public isLoading: boolean = true;\n\n @Output() DialogClosed = new EventEmitter<Record<string, unknown> | null>();\n\n constructor(\n private sharedService: SharedService\n ) {\n super();}\n\n /** Title for the empty/no-results placeholder, echoing the active search term when narrowed. */\n public get EmptyStateTitle(): string {\n return this.SearchText\n ? `No ${this.config.EntityName} match \"${this.SearchText}\"`\n : `No ${this.config.EntityName} found`;\n }\n\n async ngOnInit() {\n await this.LoadEntities();\n }\n\n async LoadEntities() {\n this.isLoading = true;\n try {\n const rv = RunView.FromMetadataProvider(this.ProviderToUse);\n const result = await rv.RunView({\n EntityName: this.config.EntityName,\n ExtraFilter: this.config.Filters,\n OrderBy: this.config.OrderBy \n });\n\n this.Entities = result.Results;\n this.FilteredEntities = [...this.Entities];\n } catch (error) {\n console.error('Error loading entities:', error);\n this.Entities = [];\n this.FilteredEntities = [];\n } finally {\n this.isLoading = false;\n }\n }\n\n /** @deprecated Use {@link LoadEntities}. */\n async loadEntities() {\n return this.LoadEntities();\n }\n\n OnSearchChange() {\n if (!this.SearchText) {\n this.FilteredEntities = [...this.Entities];\n } else {\n const searchLower = this.SearchText.toLowerCase();\n this.FilteredEntities = this.Entities.filter(entity => {\n const displayValue = entity[this.config.DisplayField] || '';\n const descriptionValue = this.config.DescriptionField ? (entity[this.config.DescriptionField] || '') : '';\n return displayValue.toLowerCase().includes(searchLower) || \n descriptionValue.toLowerCase().includes(searchLower);\n });\n }\n }\n\n /** @deprecated Use {@link OnSearchChange}. */\n onSearchChange() {\n return this.OnSearchChange();\n }\n\n SelectEntity(entity: any) {\n this.SelectedEntity = entity;\n }\n\n /** @deprecated Use {@link SelectEntity}. */\n selectEntity(entity: any) {\n return this.SelectEntity(entity);\n }\n\n OnSelect() {\n if (this.SelectedEntity) {\n this.DialogClosed.emit({ entity: this.SelectedEntity });\n }\n }\n\n /** @deprecated Use {@link OnSelect}. */\n onSelect() {\n return this.OnSelect();\n }\n\n CreateNew() {\n this.DialogClosed.emit({ createNew: true });\n }\n\n /** @deprecated Use {@link CreateNew}. */\n createNew() {\n return this.CreateNew();\n }\n\n IsEntitySelected(entity: Record<string, unknown>): boolean {\n return UUIDsEqual(this.SelectedEntity?.ID, entity.ID as string);\n }\n\n onCancel() {\n this.DialogClosed.emit(null);\n }\n}"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mjaipromptrun.form.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;;AAGlE,qBAMa,0BAA2B,SAAQ,iBAAiB;IACtD,MAAM,EAAG,mBAAmB,CAAC;IAErB,QAAQ;yCAHd,0BAA0B;2CAA1B,0BAA0B;
|
|
1
|
+
{"version":3,"file":"mjaipromptrun.form.component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAEpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;;AAGlE,qBAMa,0BAA2B,SAAQ,iBAAiB;IACtD,MAAM,EAAG,mBAAmB,CAAC;IAErB,QAAQ;yCAHd,0BAA0B;2CAA1B,0BAA0B;CAwBtC"}
|