@memberjunction/ng-core-entity-forms 2.43.0 → 2.44.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +65 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.d.ts +94 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.d.ts.map +1 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.js +814 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-execution-dialog.component.js.map +1 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +198 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +1863 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -0
- package/dist/lib/custom/Actions/actions-top-area-extended.js +2 -2
- package/dist/lib/custom/Entities/entities-form.component.js +2 -2
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +2 -2
- package/dist/lib/custom/Templates/template-param-dialog.component.d.ts +48 -0
- package/dist/lib/custom/Templates/template-param-dialog.component.d.ts.map +1 -0
- package/dist/lib/custom/Templates/template-param-dialog.component.js +689 -0
- package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -0
- package/dist/lib/custom/Templates/templates-form.component.d.ts +88 -0
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -0
- package/dist/lib/custom/Templates/templates-form.component.js +767 -0
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -0
- package/dist/lib/custom/custom-forms.module.d.ts +22 -14
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +63 -10
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIAction/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgent/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgentAction/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgentLearningCycle/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgentModel/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgentNote/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgentNoteType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgentPrompt/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIAgentRequest/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIConfiguration/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIConfigurationParam/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIModel/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIModelAction/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIModelType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIModelVendor/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIPrompt/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIPromptCategory/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIPromptModel/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIPromptRun/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIPromptType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIResultCache/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIVendor/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIVendorType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js +2 -2
- package/dist/lib/generated/Entities/AIVendorTypeDefinition/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Action/action.form.component.js +2 -2
- package/dist/lib/generated/Entities/Action/sections/code.component.js +2 -2
- package/dist/lib/generated/Entities/Action/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Action/sections/top.component.js +2 -2
- package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js +2 -2
- package/dist/lib/generated/Entities/ActionAuthorization/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js +2 -2
- package/dist/lib/generated/Entities/ActionCategory/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js +2 -2
- package/dist/lib/generated/Entities/ActionContext/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js +2 -2
- package/dist/lib/generated/Entities/ActionContextType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js +2 -2
- package/dist/lib/generated/Entities/ActionExecutionLog/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js +2 -2
- package/dist/lib/generated/Entities/ActionFilter/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js +2 -2
- package/dist/lib/generated/Entities/ActionLibrary/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js +2 -2
- package/dist/lib/generated/Entities/ActionParam/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js +2 -2
- package/dist/lib/generated/Entities/ActionResultCode/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Application/application.form.component.js +2 -2
- package/dist/lib/generated/Entities/Application/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js +2 -2
- package/dist/lib/generated/Entities/ApplicationEntity/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js +2 -2
- package/dist/lib/generated/Entities/ApplicationSetting/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js +2 -2
- package/dist/lib/generated/Entities/ArtifactType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js +2 -2
- package/dist/lib/generated/Entities/AuditLog/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js +2 -2
- package/dist/lib/generated/Entities/AuditLogType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Authorization/authorization.form.component.js +2 -2
- package/dist/lib/generated/Entities/Authorization/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js +2 -2
- package/dist/lib/generated/Entities/AuthorizationRole/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js +2 -2
- package/dist/lib/generated/Entities/CommunicationBaseMessageType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js +2 -2
- package/dist/lib/generated/Entities/CommunicationLog/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js +2 -2
- package/dist/lib/generated/Entities/CommunicationProvider/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js +2 -2
- package/dist/lib/generated/Entities/CommunicationProviderMessageType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/CommunicationRun/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Company/company.form.component.js +2 -2
- package/dist/lib/generated/Entities/Company/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js +2 -2
- package/dist/lib/generated/Entities/CompanyIntegration/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js +2 -2
- package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/CompanyIntegrationRun/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js +2 -2
- package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js +2 -2
- package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js +2 -2
- package/dist/lib/generated/Entities/ContentFileType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js +2 -2
- package/dist/lib/generated/Entities/ContentItem/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js +2 -2
- package/dist/lib/generated/Entities/ContentItemAttribute/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js +2 -2
- package/dist/lib/generated/Entities/ContentItemTag/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/ContentProcessRun/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js +2 -2
- package/dist/lib/generated/Entities/ContentSource/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js +2 -2
- package/dist/lib/generated/Entities/ContentSourceParam/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js +2 -2
- package/dist/lib/generated/Entities/ContentSourceType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js +2 -2
- package/dist/lib/generated/Entities/ContentSourceTypeParam/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js +2 -2
- package/dist/lib/generated/Entities/ContentType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js +2 -2
- package/dist/lib/generated/Entities/ContentTypeAttribute/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Conversation/conversation.form.component.js +2 -2
- package/dist/lib/generated/Entities/Conversation/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js +2 -2
- package/dist/lib/generated/Entities/ConversationArtifact/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js +2 -2
- package/dist/lib/generated/Entities/ConversationArtifactPermission/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js +2 -2
- package/dist/lib/generated/Entities/ConversationArtifactVersion/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js +2 -2
- package/dist/lib/generated/Entities/ConversationDetail/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js +2 -2
- package/dist/lib/generated/Entities/Dashboard/sections/details.component.js +5 -5
- package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js +2 -2
- package/dist/lib/generated/Entities/DashboardCategory/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js +2 -2
- package/dist/lib/generated/Entities/DashboardUserPreference/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js +2 -2
- package/dist/lib/generated/Entities/DashboardUserState/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js +2 -2
- package/dist/lib/generated/Entities/DataContext/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js +2 -2
- package/dist/lib/generated/Entities/DataContextItem/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Dataset/dataset.form.component.js +2 -2
- package/dist/lib/generated/Entities/Dataset/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js +2 -2
- package/dist/lib/generated/Entities/DatasetItem/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js +2 -2
- package/dist/lib/generated/Entities/DuplicateRun/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js +2 -2
- package/dist/lib/generated/Entities/DuplicateRunDetail/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js +2 -2
- package/dist/lib/generated/Entities/DuplicateRunDetailMatch/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Employee/employee.form.component.js +2 -2
- package/dist/lib/generated/Entities/Employee/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js +2 -2
- package/dist/lib/generated/Entities/EmployeeCompanyIntegration/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js +2 -2
- package/dist/lib/generated/Entities/EmployeeRole/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js +2 -2
- package/dist/lib/generated/Entities/EmployeeSkill/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Entity/entity.form.component.js +2 -2
- package/dist/lib/generated/Entities/Entity/sections/api.component.js +2 -2
- package/dist/lib/generated/Entities/Entity/sections/audit.component.js +2 -2
- package/dist/lib/generated/Entities/Entity/sections/db.component.js +2 -2
- package/dist/lib/generated/Entities/Entity/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Entity/sections/top.component.js +2 -2
- package/dist/lib/generated/Entities/Entity/sections/ui.component.js +2 -2
- package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityAIAction/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityAction/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityActionFilter/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityActionInvocation/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityActionInvocationType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityActionParam/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityCommunicationField/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityCommunicationMessageType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityDocument/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityDocumentRun/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityDocumentSetting/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityDocumentType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityField/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityFieldValue/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityPermission/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityRecordDocument/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityRelationship/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js +2 -2
- package/dist/lib/generated/Entities/EntitySetting/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js +2 -2
- package/dist/lib/generated/Entities/ErrorLog/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js +2 -2
- package/dist/lib/generated/Entities/ExplorerNavigationItem/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/File/file.form.component.js +2 -2
- package/dist/lib/generated/Entities/File/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js +2 -2
- package/dist/lib/generated/Entities/FileCategory/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js +2 -2
- package/dist/lib/generated/Entities/FileEntityRecordLink/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js +2 -2
- package/dist/lib/generated/Entities/FileStorageProvider/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js +2 -2
- package/dist/lib/generated/Entities/GeneratedCode/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js +2 -2
- package/dist/lib/generated/Entities/GeneratedCodeCategory/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Integration/integration.form.component.js +2 -2
- package/dist/lib/generated/Entities/Integration/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js +2 -2
- package/dist/lib/generated/Entities/IntegrationURLFormat/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Library/library.form.component.js +2 -2
- package/dist/lib/generated/Entities/Library/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js +2 -2
- package/dist/lib/generated/Entities/LibraryItem/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/List/list.form.component.js +2 -2
- package/dist/lib/generated/Entities/List/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js +2 -2
- package/dist/lib/generated/Entities/ListCategory/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js +2 -2
- package/dist/lib/generated/Entities/ListDetail/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js +2 -2
- package/dist/lib/generated/Entities/OutputDeliveryType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js +2 -2
- package/dist/lib/generated/Entities/OutputFormatType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js +2 -2
- package/dist/lib/generated/Entities/OutputTriggerType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Query/query.form.component.js +2 -2
- package/dist/lib/generated/Entities/Query/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js +2 -2
- package/dist/lib/generated/Entities/QueryCategory/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js +2 -2
- package/dist/lib/generated/Entities/QueryEntity/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js +2 -2
- package/dist/lib/generated/Entities/QueryField/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js +2 -2
- package/dist/lib/generated/Entities/QueryPermission/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Queue/queue.form.component.js +2 -2
- package/dist/lib/generated/Entities/Queue/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js +2 -2
- package/dist/lib/generated/Entities/QueueTask/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js +2 -2
- package/dist/lib/generated/Entities/QueueType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js +2 -2
- package/dist/lib/generated/Entities/Recommendation/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js +2 -2
- package/dist/lib/generated/Entities/RecommendationItem/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js +2 -2
- package/dist/lib/generated/Entities/RecommendationProvider/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/RecommendationRun/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js +2 -2
- package/dist/lib/generated/Entities/RecordChange/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/RecordChangeReplayRun/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js +2 -2
- package/dist/lib/generated/Entities/RecordMergeDeletionLog/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js +2 -2
- package/dist/lib/generated/Entities/RecordMergeLog/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Report/report.form.component.js +2 -2
- package/dist/lib/generated/Entities/Report/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js +2 -2
- package/dist/lib/generated/Entities/ReportCategory/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js +2 -2
- package/dist/lib/generated/Entities/ReportSnapshot/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js +2 -2
- package/dist/lib/generated/Entities/ReportUserState/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js +2 -2
- package/dist/lib/generated/Entities/ReportVersion/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js +2 -2
- package/dist/lib/generated/Entities/ResourceLink/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js +2 -2
- package/dist/lib/generated/Entities/ResourcePermission/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js +2 -2
- package/dist/lib/generated/Entities/ResourceType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Role/role.form.component.js +2 -2
- package/dist/lib/generated/Entities/Role/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js +2 -2
- package/dist/lib/generated/Entities/RowLevelSecurityFilter/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js +2 -2
- package/dist/lib/generated/Entities/ScheduledAction/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js +2 -2
- package/dist/lib/generated/Entities/ScheduledActionParam/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js +2 -2
- package/dist/lib/generated/Entities/SchemaInfo/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Skill/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Skill/skill.form.component.js +2 -2
- package/dist/lib/generated/Entities/Tag/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Tag/tag.form.component.js +2 -2
- package/dist/lib/generated/Entities/TaggedItem/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js +2 -2
- package/dist/lib/generated/Entities/Template/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Template/template.form.component.js +2 -2
- package/dist/lib/generated/Entities/TemplateCategory/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js +2 -2
- package/dist/lib/generated/Entities/TemplateContent/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js +2 -2
- package/dist/lib/generated/Entities/TemplateContentType/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js +2 -2
- package/dist/lib/generated/Entities/TemplateParam/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js +2 -2
- package/dist/lib/generated/Entities/User/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/User/user.form.component.js +9 -9
- package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserApplication/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js +2 -2
- package/dist/lib/generated/Entities/UserApplicationEntity/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js +2 -2
- package/dist/lib/generated/Entities/UserFavorite/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js +2 -2
- package/dist/lib/generated/Entities/UserNotification/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js +2 -2
- package/dist/lib/generated/Entities/UserRecordLog/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js +2 -2
- package/dist/lib/generated/Entities/UserRole/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/UserRole/userrole.form.component.js +2 -2
- package/dist/lib/generated/Entities/UserView/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/UserView/userview.form.component.js +2 -2
- package/dist/lib/generated/Entities/UserViewCategory/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js +2 -2
- package/dist/lib/generated/Entities/UserViewRun/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/UserViewRunDetail/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js +2 -2
- package/dist/lib/generated/Entities/VectorDatabase/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js +2 -2
- package/dist/lib/generated/Entities/VectorIndex/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js +2 -2
- package/dist/lib/generated/Entities/VersionInstallation/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js +2 -2
- package/dist/lib/generated/Entities/Workflow/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Workflow/workflow.form.component.js +2 -2
- package/dist/lib/generated/Entities/WorkflowEngine/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js +2 -2
- package/dist/lib/generated/Entities/WorkflowRun/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/Workspace/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/Workspace/workspace.form.component.js +2 -2
- package/dist/lib/generated/Entities/WorkspaceItem/sections/details.component.js +2 -2
- package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js +2 -2
- package/dist/lib/shared/components/template-editor.component.d.ts +67 -0
- package/dist/lib/shared/components/template-editor.component.d.ts.map +1 -0
- package/dist/lib/shared/components/template-editor.component.js +698 -0
- package/dist/lib/shared/components/template-editor.component.js.map +1 -0
- package/package.json +11 -11
|
@@ -0,0 +1,698 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { Component, Input, Output, EventEmitter, ViewChild } from '@angular/core';
|
|
11
|
+
import { Metadata, RunView } from '@memberjunction/core';
|
|
12
|
+
import { MJNotificationService } from '@memberjunction/ng-notifications';
|
|
13
|
+
import { TemplateEngineBase } from '@memberjunction/templates-base-types';
|
|
14
|
+
import { languages } from '@codemirror/language-data';
|
|
15
|
+
import { Subject } from 'rxjs';
|
|
16
|
+
import * as i0 from "@angular/core";
|
|
17
|
+
import * as i1 from "@angular/common";
|
|
18
|
+
import * as i2 from "@angular/forms";
|
|
19
|
+
import * as i3 from "@progress/kendo-angular-inputs";
|
|
20
|
+
import * as i4 from "@progress/kendo-angular-dropdowns";
|
|
21
|
+
import * as i5 from "@memberjunction/ng-code-editor";
|
|
22
|
+
const _c0 = ["codeEditor"];
|
|
23
|
+
const _forTrack0 = ($index, $item) => $item.ID || $index;
|
|
24
|
+
function TemplateEditorComponent_div_0_Conditional_1_For_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
25
|
+
i0.ɵɵtext(0, " \u2022 ");
|
|
26
|
+
i0.ɵɵelementStart(1, "span", 14);
|
|
27
|
+
i0.ɵɵtext(2, "Inactive");
|
|
28
|
+
i0.ɵɵelementEnd();
|
|
29
|
+
} }
|
|
30
|
+
function TemplateEditorComponent_div_0_Conditional_1_For_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
+
const _r4 = i0.ɵɵgetCurrentView();
|
|
32
|
+
i0.ɵɵelementStart(0, "button", 16);
|
|
33
|
+
i0.ɵɵlistener("click", function TemplateEditorComponent_div_0_Conditional_1_For_3_Conditional_7_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r4); const ɵ$index_10_r2 = i0.ɵɵnextContext().$index; const ctx_r2 = i0.ɵɵnextContext(3); ctx_r2.deleteTemplateContent(ɵ$index_10_r2); return i0.ɵɵresetView($event.stopPropagation()); });
|
|
34
|
+
i0.ɵɵelement(1, "i", 17);
|
|
35
|
+
i0.ɵɵelementEnd();
|
|
36
|
+
} }
|
|
37
|
+
function TemplateEditorComponent_div_0_Conditional_1_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
38
|
+
const _r1 = i0.ɵɵgetCurrentView();
|
|
39
|
+
i0.ɵɵelementStart(0, "div", 10);
|
|
40
|
+
i0.ɵɵlistener("click", function TemplateEditorComponent_div_0_Conditional_1_For_3_Template_div_click_0_listener() { const ɵ$index_10_r2 = i0.ɵɵrestoreView(_r1).$index; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.selectTemplateContent(ɵ$index_10_r2, false)); });
|
|
41
|
+
i0.ɵɵelementStart(1, "div", 11)(2, "div", 12);
|
|
42
|
+
i0.ɵɵtext(3);
|
|
43
|
+
i0.ɵɵelementEnd();
|
|
44
|
+
i0.ɵɵelementStart(4, "div", 13);
|
|
45
|
+
i0.ɵɵtext(5);
|
|
46
|
+
i0.ɵɵtemplate(6, TemplateEditorComponent_div_0_Conditional_1_For_3_Conditional_6_Template, 3, 0, "span", 14);
|
|
47
|
+
i0.ɵɵelementEnd()();
|
|
48
|
+
i0.ɵɵtemplate(7, TemplateEditorComponent_div_0_Conditional_1_For_3_Conditional_7_Template, 2, 0, "button", 15);
|
|
49
|
+
i0.ɵɵelementEnd();
|
|
50
|
+
} if (rf & 2) {
|
|
51
|
+
const content_r5 = ctx.$implicit;
|
|
52
|
+
const ɵ$index_10_r2 = ctx.$index;
|
|
53
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
54
|
+
i0.ɵɵstyleProp("border-color", ctx_r2.selectedContentIndex === ɵ$index_10_r2 && !ctx_r2.isAddingNewContent ? "#007bff" : "#ccc")("background", ctx_r2.selectedContentIndex === ɵ$index_10_r2 && !ctx_r2.isAddingNewContent ? "#e3f2fd" : "#fff");
|
|
55
|
+
i0.ɵɵclassProp("active", ctx_r2.selectedContentIndex === ɵ$index_10_r2 && !ctx_r2.isAddingNewContent);
|
|
56
|
+
i0.ɵɵadvance(3);
|
|
57
|
+
i0.ɵɵtextInterpolate1(" ", content_r5.Type || "Version " + (ɵ$index_10_r2 + 1), " ");
|
|
58
|
+
i0.ɵɵadvance(2);
|
|
59
|
+
i0.ɵɵtextInterpolate1(" P:", content_r5.Priority, " ");
|
|
60
|
+
i0.ɵɵadvance();
|
|
61
|
+
i0.ɵɵconditional(!content_r5.IsActive ? 6 : -1);
|
|
62
|
+
i0.ɵɵadvance();
|
|
63
|
+
i0.ɵɵconditional(ctx_r2.templateContents.length > 1 && ctx_r2.config.allowEdit ? 7 : -1);
|
|
64
|
+
} }
|
|
65
|
+
function TemplateEditorComponent_div_0_Conditional_1_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
66
|
+
i0.ɵɵelementStart(0, "div", 8);
|
|
67
|
+
i0.ɵɵelement(1, "i", 18);
|
|
68
|
+
i0.ɵɵelementStart(2, "span", 19);
|
|
69
|
+
i0.ɵɵtext(3, "New");
|
|
70
|
+
i0.ɵɵelementEnd()();
|
|
71
|
+
} }
|
|
72
|
+
function TemplateEditorComponent_div_0_Conditional_1_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
73
|
+
const _r6 = i0.ɵɵgetCurrentView();
|
|
74
|
+
i0.ɵɵelementStart(0, "div", 20);
|
|
75
|
+
i0.ɵɵlistener("click", function TemplateEditorComponent_div_0_Conditional_1_Conditional_5_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.addNewTemplateContent()); });
|
|
76
|
+
i0.ɵɵelement(1, "i", 21);
|
|
77
|
+
i0.ɵɵelementStart(2, "span", 22);
|
|
78
|
+
i0.ɵɵtext(3, "New");
|
|
79
|
+
i0.ɵɵelementEnd()();
|
|
80
|
+
} }
|
|
81
|
+
function TemplateEditorComponent_div_0_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
82
|
+
i0.ɵɵelementStart(0, "div", 3)(1, "div", 6);
|
|
83
|
+
i0.ɵɵrepeaterCreate(2, TemplateEditorComponent_div_0_Conditional_1_For_3_Template, 8, 10, "div", 7, _forTrack0);
|
|
84
|
+
i0.ɵɵtemplate(4, TemplateEditorComponent_div_0_Conditional_1_Conditional_4_Template, 4, 0, "div", 8)(5, TemplateEditorComponent_div_0_Conditional_1_Conditional_5_Template, 4, 0, "div", 9);
|
|
85
|
+
i0.ɵɵelementEnd()();
|
|
86
|
+
} if (rf & 2) {
|
|
87
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
88
|
+
i0.ɵɵadvance(2);
|
|
89
|
+
i0.ɵɵrepeater(ctx_r2.templateContents);
|
|
90
|
+
i0.ɵɵadvance(2);
|
|
91
|
+
i0.ɵɵconditional(ctx_r2.isAddingNewContent ? 4 : -1);
|
|
92
|
+
i0.ɵɵadvance();
|
|
93
|
+
i0.ɵɵconditional(ctx_r2.config.allowEdit && !ctx_r2.isAddingNewContent ? 5 : -1);
|
|
94
|
+
} }
|
|
95
|
+
function TemplateEditorComponent_div_0_Conditional_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
96
|
+
const _r8 = i0.ɵɵgetCurrentView();
|
|
97
|
+
i0.ɵɵelementStart(0, "kendo-dropdownlist", 46);
|
|
98
|
+
i0.ɵɵtwoWayListener("ngModelChange", function TemplateEditorComponent_div_0_Conditional_2_Conditional_7_Template_kendo_dropdownlist_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.currentTemplateContent.TypeID, $event) || (ctx_r2.currentTemplateContent.TypeID = $event); return i0.ɵɵresetView($event); });
|
|
99
|
+
i0.ɵɵlistener("valueChange", function TemplateEditorComponent_div_0_Conditional_2_Conditional_7_Template_kendo_dropdownlist_valueChange_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onContentTypeChange()); });
|
|
100
|
+
i0.ɵɵelementEnd();
|
|
101
|
+
} if (rf & 2) {
|
|
102
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
103
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.currentTemplateContent.TypeID);
|
|
104
|
+
i0.ɵɵproperty("data", ctx_r2.getContentTypeOptionsForContent())("valuePrimitive", true);
|
|
105
|
+
} }
|
|
106
|
+
function TemplateEditorComponent_div_0_Conditional_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
107
|
+
i0.ɵɵelementStart(0, "div", 29);
|
|
108
|
+
i0.ɵɵtext(1);
|
|
109
|
+
i0.ɵɵelementEnd();
|
|
110
|
+
} if (rf & 2) {
|
|
111
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
112
|
+
i0.ɵɵadvance();
|
|
113
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.getContentTypeDisplayText(ctx_r2.currentTemplateContent.TypeID), " ");
|
|
114
|
+
} }
|
|
115
|
+
function TemplateEditorComponent_div_0_Conditional_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
116
|
+
const _r9 = i0.ɵɵgetCurrentView();
|
|
117
|
+
i0.ɵɵelementStart(0, "kendo-numerictextbox", 47);
|
|
118
|
+
i0.ɵɵtwoWayListener("ngModelChange", function TemplateEditorComponent_div_0_Conditional_2_Conditional_13_Template_kendo_numerictextbox_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.currentTemplateContent.Priority, $event) || (ctx_r2.currentTemplateContent.Priority = $event); return i0.ɵɵresetView($event); });
|
|
119
|
+
i0.ɵɵelementEnd();
|
|
120
|
+
} if (rf & 2) {
|
|
121
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
122
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.currentTemplateContent.Priority);
|
|
123
|
+
i0.ɵɵproperty("min", 1)("step", 1)("format", "n0");
|
|
124
|
+
} }
|
|
125
|
+
function TemplateEditorComponent_div_0_Conditional_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
|
|
126
|
+
i0.ɵɵelementStart(0, "div", 29);
|
|
127
|
+
i0.ɵɵtext(1);
|
|
128
|
+
i0.ɵɵelementEnd();
|
|
129
|
+
} if (rf & 2) {
|
|
130
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
131
|
+
i0.ɵɵadvance();
|
|
132
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.currentTemplateContent.Priority || "-", " ");
|
|
133
|
+
} }
|
|
134
|
+
function TemplateEditorComponent_div_0_Conditional_2_Conditional_19_Template(rf, ctx) { if (rf & 1) {
|
|
135
|
+
const _r10 = i0.ɵɵgetCurrentView();
|
|
136
|
+
i0.ɵɵelementStart(0, "div", 35)(1, "input", 48);
|
|
137
|
+
i0.ɵɵtwoWayListener("ngModelChange", function TemplateEditorComponent_div_0_Conditional_2_Conditional_19_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r10); const ctx_r2 = i0.ɵɵnextContext(3); i0.ɵɵtwoWayBindingSet(ctx_r2.currentTemplateContent.IsActive, $event) || (ctx_r2.currentTemplateContent.IsActive = $event); return i0.ɵɵresetView($event); });
|
|
138
|
+
i0.ɵɵelementEnd();
|
|
139
|
+
i0.ɵɵelementStart(2, "label", 49);
|
|
140
|
+
i0.ɵɵtext(3, " Active ");
|
|
141
|
+
i0.ɵɵelementEnd()();
|
|
142
|
+
} if (rf & 2) {
|
|
143
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
144
|
+
i0.ɵɵadvance();
|
|
145
|
+
i0.ɵɵtwoWayProperty("ngModel", ctx_r2.currentTemplateContent.IsActive);
|
|
146
|
+
} }
|
|
147
|
+
function TemplateEditorComponent_div_0_Conditional_2_Conditional_20_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
148
|
+
i0.ɵɵelementStart(0, "span", 50);
|
|
149
|
+
i0.ɵɵelement(1, "i", 52);
|
|
150
|
+
i0.ɵɵtext(2, " Active ");
|
|
151
|
+
i0.ɵɵelementEnd();
|
|
152
|
+
} }
|
|
153
|
+
function TemplateEditorComponent_div_0_Conditional_2_Conditional_20_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
154
|
+
i0.ɵɵelementStart(0, "span", 51);
|
|
155
|
+
i0.ɵɵelement(1, "i", 53);
|
|
156
|
+
i0.ɵɵtext(2, " Inactive ");
|
|
157
|
+
i0.ɵɵelementEnd();
|
|
158
|
+
} }
|
|
159
|
+
function TemplateEditorComponent_div_0_Conditional_2_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
160
|
+
i0.ɵɵelementStart(0, "div", 29);
|
|
161
|
+
i0.ɵɵtemplate(1, TemplateEditorComponent_div_0_Conditional_2_Conditional_20_Conditional_1_Template, 3, 0, "span", 50)(2, TemplateEditorComponent_div_0_Conditional_2_Conditional_20_Conditional_2_Template, 3, 0, "span", 51);
|
|
162
|
+
i0.ɵɵelementEnd();
|
|
163
|
+
} if (rf & 2) {
|
|
164
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
165
|
+
i0.ɵɵadvance();
|
|
166
|
+
i0.ɵɵconditional(ctx_r2.currentTemplateContent.IsActive ? 1 : 2);
|
|
167
|
+
} }
|
|
168
|
+
function TemplateEditorComponent_div_0_Conditional_2_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
169
|
+
i0.ɵɵtext(0, " New ");
|
|
170
|
+
} }
|
|
171
|
+
function TemplateEditorComponent_div_0_Conditional_2_Conditional_28_Template(rf, ctx) { if (rf & 1) {
|
|
172
|
+
i0.ɵɵtext(0);
|
|
173
|
+
} if (rf & 2) {
|
|
174
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
175
|
+
i0.ɵɵtextInterpolate1(" ", ctx_r2.getContentTypeDisplayText(ctx_r2.currentTemplateContent.TypeID), " ");
|
|
176
|
+
} }
|
|
177
|
+
function TemplateEditorComponent_div_0_Conditional_2_Conditional_30_Template(rf, ctx) { if (rf & 1) {
|
|
178
|
+
i0.ɵɵelementStart(0, "span", 42);
|
|
179
|
+
i0.ɵɵelement(1, "i", 54);
|
|
180
|
+
i0.ɵɵtext(2, " Unsaved changes ");
|
|
181
|
+
i0.ɵɵelementEnd();
|
|
182
|
+
} }
|
|
183
|
+
function TemplateEditorComponent_div_0_Conditional_2_Conditional_31_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
184
|
+
i0.ɵɵelement(0, "i", 56);
|
|
185
|
+
i0.ɵɵtext(1, " Running... ");
|
|
186
|
+
} }
|
|
187
|
+
function TemplateEditorComponent_div_0_Conditional_2_Conditional_31_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
188
|
+
i0.ɵɵelement(0, "i", 57);
|
|
189
|
+
i0.ɵɵtext(1, " Run ");
|
|
190
|
+
} }
|
|
191
|
+
function TemplateEditorComponent_div_0_Conditional_2_Conditional_31_Template(rf, ctx) { if (rf & 1) {
|
|
192
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
193
|
+
i0.ɵɵelementStart(0, "button", 55);
|
|
194
|
+
i0.ɵɵlistener("click", function TemplateEditorComponent_div_0_Conditional_2_Conditional_31_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onRunTemplate()); });
|
|
195
|
+
i0.ɵɵtemplate(1, TemplateEditorComponent_div_0_Conditional_2_Conditional_31_Conditional_1_Template, 2, 0)(2, TemplateEditorComponent_div_0_Conditional_2_Conditional_31_Conditional_2_Template, 2, 0);
|
|
196
|
+
i0.ɵɵelementEnd();
|
|
197
|
+
} if (rf & 2) {
|
|
198
|
+
const ctx_r2 = i0.ɵɵnextContext(3);
|
|
199
|
+
i0.ɵɵproperty("disabled", ctx_r2.isRunningTemplate);
|
|
200
|
+
i0.ɵɵadvance();
|
|
201
|
+
i0.ɵɵconditional(ctx_r2.isRunningTemplate ? 1 : 2);
|
|
202
|
+
} }
|
|
203
|
+
function TemplateEditorComponent_div_0_Conditional_2_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
204
|
+
i0.ɵɵelementStart(0, "div", 45)(1, "div", 58);
|
|
205
|
+
i0.ɵɵelement(2, "i", 59);
|
|
206
|
+
i0.ɵɵtext(3, " Template Syntax Quick Reference: ");
|
|
207
|
+
i0.ɵɵelementEnd();
|
|
208
|
+
i0.ɵɵelementStart(4, "div", 60)(5, "div")(6, "strong");
|
|
209
|
+
i0.ɵɵtext(7, "Parameters:");
|
|
210
|
+
i0.ɵɵelementEnd();
|
|
211
|
+
i0.ɵɵelementStart(8, "code", 61);
|
|
212
|
+
i0.ɵɵtext(9);
|
|
213
|
+
i0.ɵɵelementEnd();
|
|
214
|
+
i0.ɵɵelement(10, "br");
|
|
215
|
+
i0.ɵɵelementStart(11, "strong");
|
|
216
|
+
i0.ɵɵtext(12, "Includes:");
|
|
217
|
+
i0.ɵɵelementEnd();
|
|
218
|
+
i0.ɵɵelementStart(13, "code", 61);
|
|
219
|
+
i0.ɵɵtext(14);
|
|
220
|
+
i0.ɵɵelementEnd()();
|
|
221
|
+
i0.ɵɵelementStart(15, "div")(16, "strong");
|
|
222
|
+
i0.ɵɵtext(17, "Conditionals:");
|
|
223
|
+
i0.ɵɵelementEnd();
|
|
224
|
+
i0.ɵɵelementStart(18, "code", 61);
|
|
225
|
+
i0.ɵɵtext(19);
|
|
226
|
+
i0.ɵɵelementEnd();
|
|
227
|
+
i0.ɵɵelement(20, "br");
|
|
228
|
+
i0.ɵɵelementStart(21, "strong");
|
|
229
|
+
i0.ɵɵtext(22, "Loops:");
|
|
230
|
+
i0.ɵɵelementEnd();
|
|
231
|
+
i0.ɵɵelementStart(23, "code", 61);
|
|
232
|
+
i0.ɵɵtext(24);
|
|
233
|
+
i0.ɵɵelementEnd()()()();
|
|
234
|
+
} if (rf & 2) {
|
|
235
|
+
i0.ɵɵadvance(9);
|
|
236
|
+
i0.ɵɵtextInterpolate2("", "{{", " paramName ", "}}", "");
|
|
237
|
+
i0.ɵɵadvance(5);
|
|
238
|
+
i0.ɵɵtextInterpolate("{% template \"TemplateName\" %}");
|
|
239
|
+
i0.ɵɵadvance(5);
|
|
240
|
+
i0.ɵɵtextInterpolate("{% if condition %}");
|
|
241
|
+
i0.ɵɵadvance(5);
|
|
242
|
+
i0.ɵɵtextInterpolate("{% for item in items %}");
|
|
243
|
+
} }
|
|
244
|
+
function TemplateEditorComponent_div_0_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
245
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
246
|
+
i0.ɵɵelementStart(0, "div", 4)(1, "div", 23)(2, "div", 24)(3, "div", 25)(4, "label", 26);
|
|
247
|
+
i0.ɵɵelement(5, "i", 27);
|
|
248
|
+
i0.ɵɵtext(6, " Content Type ");
|
|
249
|
+
i0.ɵɵelementEnd();
|
|
250
|
+
i0.ɵɵtemplate(7, TemplateEditorComponent_div_0_Conditional_2_Conditional_7_Template, 1, 3, "kendo-dropdownlist", 28)(8, TemplateEditorComponent_div_0_Conditional_2_Conditional_8_Template, 2, 1, "div", 29);
|
|
251
|
+
i0.ɵɵelementEnd();
|
|
252
|
+
i0.ɵɵelementStart(9, "div", 25)(10, "label", 30);
|
|
253
|
+
i0.ɵɵelement(11, "i", 31);
|
|
254
|
+
i0.ɵɵtext(12, " Priority ");
|
|
255
|
+
i0.ɵɵelementEnd();
|
|
256
|
+
i0.ɵɵtemplate(13, TemplateEditorComponent_div_0_Conditional_2_Conditional_13_Template, 1, 4, "kendo-numerictextbox", 32)(14, TemplateEditorComponent_div_0_Conditional_2_Conditional_14_Template, 2, 1, "div", 29);
|
|
257
|
+
i0.ɵɵelementEnd();
|
|
258
|
+
i0.ɵɵelementStart(15, "div", 25)(16, "label", 33);
|
|
259
|
+
i0.ɵɵelement(17, "i", 34);
|
|
260
|
+
i0.ɵɵtext(18, " Status ");
|
|
261
|
+
i0.ɵɵelementEnd();
|
|
262
|
+
i0.ɵɵtemplate(19, TemplateEditorComponent_div_0_Conditional_2_Conditional_19_Template, 4, 1, "div", 35)(20, TemplateEditorComponent_div_0_Conditional_2_Conditional_20_Template, 3, 1, "div", 29);
|
|
263
|
+
i0.ɵɵelementEnd()()();
|
|
264
|
+
i0.ɵɵelementStart(21, "div", 36)(22, "div", 37)(23, "label", 38);
|
|
265
|
+
i0.ɵɵelement(24, "i", 39);
|
|
266
|
+
i0.ɵɵtext(25, " Template Content ");
|
|
267
|
+
i0.ɵɵelementStart(26, "span", 40);
|
|
268
|
+
i0.ɵɵtemplate(27, TemplateEditorComponent_div_0_Conditional_2_Conditional_27_Template, 1, 0)(28, TemplateEditorComponent_div_0_Conditional_2_Conditional_28_Template, 1, 1);
|
|
269
|
+
i0.ɵɵelementEnd()();
|
|
270
|
+
i0.ɵɵelementStart(29, "div", 41);
|
|
271
|
+
i0.ɵɵtemplate(30, TemplateEditorComponent_div_0_Conditional_2_Conditional_30_Template, 3, 0, "span", 42)(31, TemplateEditorComponent_div_0_Conditional_2_Conditional_31_Template, 3, 2, "button", 43);
|
|
272
|
+
i0.ɵɵelementEnd()();
|
|
273
|
+
i0.ɵɵelementStart(32, "mj-code-editor", 44, 0);
|
|
274
|
+
i0.ɵɵlistener("change", function TemplateEditorComponent_div_0_Conditional_2_Template_mj_code_editor_change_32_listener($event) { i0.ɵɵrestoreView(_r7); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onTemplateTextChange($event)); });
|
|
275
|
+
i0.ɵɵelementEnd();
|
|
276
|
+
i0.ɵɵtemplate(34, TemplateEditorComponent_div_0_Conditional_2_Conditional_34_Template, 25, 5, "div", 45);
|
|
277
|
+
i0.ɵɵelementEnd()();
|
|
278
|
+
} if (rf & 2) {
|
|
279
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
280
|
+
i0.ɵɵadvance(7);
|
|
281
|
+
i0.ɵɵconditional(ctx_r2.config.allowEdit ? 7 : 8);
|
|
282
|
+
i0.ɵɵadvance(6);
|
|
283
|
+
i0.ɵɵconditional(ctx_r2.config.allowEdit ? 13 : 14);
|
|
284
|
+
i0.ɵɵadvance(6);
|
|
285
|
+
i0.ɵɵconditional(ctx_r2.config.allowEdit ? 19 : 20);
|
|
286
|
+
i0.ɵɵadvance(7);
|
|
287
|
+
i0.ɵɵstyleProp("background", !ctx_r2.currentTemplateContent.ID ? "#28a745" : "#6c757d")("color", "white");
|
|
288
|
+
i0.ɵɵadvance();
|
|
289
|
+
i0.ɵɵconditional(!ctx_r2.currentTemplateContent.ID ? 27 : 28);
|
|
290
|
+
i0.ɵɵadvance(3);
|
|
291
|
+
i0.ɵɵconditional(!ctx_r2.isAddingNewContent && ctx_r2.hasUnsavedChanges ? 30 : -1);
|
|
292
|
+
i0.ɵɵadvance();
|
|
293
|
+
i0.ɵɵconditional(ctx_r2.template.IsSaved && ctx_r2.currentTemplateContent && ctx_r2.config.showRunButton ? 31 : -1);
|
|
294
|
+
i0.ɵɵadvance();
|
|
295
|
+
i0.ɵɵproperty("readonly", !ctx_r2.config.allowEdit)("language", ctx_r2.getEditorLanguage())("languages", ctx_r2.supportedLanguages);
|
|
296
|
+
i0.ɵɵadvance(2);
|
|
297
|
+
i0.ɵɵconditional(!ctx_r2.config.compactMode ? 34 : -1);
|
|
298
|
+
} }
|
|
299
|
+
function TemplateEditorComponent_div_0_Conditional_3_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
300
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
301
|
+
i0.ɵɵelementStart(0, "button", 66);
|
|
302
|
+
i0.ɵɵlistener("click", function TemplateEditorComponent_div_0_Conditional_3_Conditional_6_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.addNewTemplateContent()); });
|
|
303
|
+
i0.ɵɵelement(1, "i", 67);
|
|
304
|
+
i0.ɵɵtext(2, " Create First Content Version ");
|
|
305
|
+
i0.ɵɵelementEnd();
|
|
306
|
+
} }
|
|
307
|
+
function TemplateEditorComponent_div_0_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
308
|
+
i0.ɵɵelementStart(0, "div", 5);
|
|
309
|
+
i0.ɵɵelement(1, "i", 62);
|
|
310
|
+
i0.ɵɵelementStart(2, "h5", 63);
|
|
311
|
+
i0.ɵɵtext(3, "No Template Content");
|
|
312
|
+
i0.ɵɵelementEnd();
|
|
313
|
+
i0.ɵɵelementStart(4, "p", 64);
|
|
314
|
+
i0.ɵɵtext(5, "Create your first template content version to get started.");
|
|
315
|
+
i0.ɵɵelementEnd();
|
|
316
|
+
i0.ɵɵtemplate(6, TemplateEditorComponent_div_0_Conditional_3_Conditional_6_Template, 3, 0, "button", 65);
|
|
317
|
+
i0.ɵɵelementEnd();
|
|
318
|
+
} if (rf & 2) {
|
|
319
|
+
const ctx_r2 = i0.ɵɵnextContext(2);
|
|
320
|
+
i0.ɵɵadvance(6);
|
|
321
|
+
i0.ɵɵconditional(ctx_r2.config.allowEdit ? 6 : -1);
|
|
322
|
+
} }
|
|
323
|
+
function TemplateEditorComponent_div_0_Template(rf, ctx) { if (rf & 1) {
|
|
324
|
+
i0.ɵɵelementStart(0, "div", 2);
|
|
325
|
+
i0.ɵɵtemplate(1, TemplateEditorComponent_div_0_Conditional_1_Template, 6, 2, "div", 3)(2, TemplateEditorComponent_div_0_Conditional_2_Template, 35, 14, "div", 4)(3, TemplateEditorComponent_div_0_Conditional_3_Template, 7, 1, "div", 5);
|
|
326
|
+
i0.ɵɵelementEnd();
|
|
327
|
+
} if (rf & 2) {
|
|
328
|
+
const ctx_r2 = i0.ɵɵnextContext();
|
|
329
|
+
i0.ɵɵadvance();
|
|
330
|
+
i0.ɵɵconditional(ctx_r2.templateContents.length > 0 ? 1 : -1);
|
|
331
|
+
i0.ɵɵadvance();
|
|
332
|
+
i0.ɵɵconditional(ctx_r2.currentTemplateContent ? 2 : 3);
|
|
333
|
+
} }
|
|
334
|
+
export class TemplateEditorComponent {
|
|
335
|
+
constructor() {
|
|
336
|
+
this.template = null;
|
|
337
|
+
this.config = {
|
|
338
|
+
allowEdit: true,
|
|
339
|
+
showRunButton: false,
|
|
340
|
+
compactMode: false
|
|
341
|
+
};
|
|
342
|
+
this.contentChange = new EventEmitter();
|
|
343
|
+
this.runTemplate = new EventEmitter();
|
|
344
|
+
this.templateContents = [];
|
|
345
|
+
this.selectedContentIndex = 0;
|
|
346
|
+
this.isAddingNewContent = false;
|
|
347
|
+
this.newTemplateContent = null;
|
|
348
|
+
this.hasUnsavedChanges = false;
|
|
349
|
+
this.contentTypeOptions = [];
|
|
350
|
+
this.supportedLanguages = languages;
|
|
351
|
+
this.isRunningTemplate = false;
|
|
352
|
+
this.codeEditor = null;
|
|
353
|
+
this.isUpdatingEditorValue = false;
|
|
354
|
+
this.destroy$ = new Subject();
|
|
355
|
+
this._metadata = new Metadata();
|
|
356
|
+
}
|
|
357
|
+
ngOnInit() {
|
|
358
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
359
|
+
this.loadContentTypes();
|
|
360
|
+
if (this.template) {
|
|
361
|
+
yield this.loadTemplateContents();
|
|
362
|
+
}
|
|
363
|
+
});
|
|
364
|
+
}
|
|
365
|
+
ngOnDestroy() {
|
|
366
|
+
this.destroy$.next();
|
|
367
|
+
this.destroy$.complete();
|
|
368
|
+
}
|
|
369
|
+
ngAfterViewInit() {
|
|
370
|
+
// Initial sync when view is ready
|
|
371
|
+
this.syncEditorValue();
|
|
372
|
+
}
|
|
373
|
+
loadTemplateContents() {
|
|
374
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
375
|
+
if (this.template && this.template.ID) {
|
|
376
|
+
try {
|
|
377
|
+
const rv = new RunView();
|
|
378
|
+
const results = yield rv.RunView({
|
|
379
|
+
EntityName: 'Template Contents',
|
|
380
|
+
ExtraFilter: `TemplateID='${this.template.ID}'`,
|
|
381
|
+
OrderBy: 'Priority ASC, __mj_CreatedAt ASC',
|
|
382
|
+
ResultType: 'entity_object'
|
|
383
|
+
});
|
|
384
|
+
this.templateContents = results.Results;
|
|
385
|
+
// If we have contents but no selection, select the first one
|
|
386
|
+
if (this.templateContents.length > 0 && this.selectedContentIndex === 0) {
|
|
387
|
+
this.selectedContentIndex = 0;
|
|
388
|
+
}
|
|
389
|
+
// If no template contents exist, create a default one for single-content optimization
|
|
390
|
+
if (this.templateContents.length === 0) {
|
|
391
|
+
yield this.createDefaultTemplateContent();
|
|
392
|
+
}
|
|
393
|
+
// Sync editor value after loading content
|
|
394
|
+
this.syncEditorValue();
|
|
395
|
+
this.contentChange.emit(this.templateContents);
|
|
396
|
+
}
|
|
397
|
+
catch (error) {
|
|
398
|
+
console.error('Error loading template contents:', error);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
}
|
|
403
|
+
createDefaultTemplateContent() {
|
|
404
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
405
|
+
const defaultContent = yield this._metadata.GetEntityObject('Template Contents');
|
|
406
|
+
defaultContent.TemplateID = this.template.ID;
|
|
407
|
+
defaultContent.Priority = 1;
|
|
408
|
+
defaultContent.IsActive = true;
|
|
409
|
+
// Set default to first real content type (skip "Select Type..." if it exists)
|
|
410
|
+
const validContentTypes = this.contentTypeOptions.filter(option => option.value !== '');
|
|
411
|
+
if (validContentTypes.length > 0) {
|
|
412
|
+
defaultContent.TypeID = validContentTypes[0].value;
|
|
413
|
+
}
|
|
414
|
+
this.templateContents = [defaultContent];
|
|
415
|
+
this.selectedContentIndex = 0;
|
|
416
|
+
// Sync editor value after creating default content
|
|
417
|
+
this.syncEditorValue();
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
selectTemplateContent(index, confirmSwitch = true) {
|
|
421
|
+
// If we're adding new content and user clicks on existing content, ask for confirmation
|
|
422
|
+
if (this.isAddingNewContent && confirmSwitch) {
|
|
423
|
+
if (!confirm('You have unsaved changes to a new content version. Are you sure you want to switch? Your changes will be lost.')) {
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
if (index >= 0 && index < this.templateContents.length) {
|
|
428
|
+
this.selectedContentIndex = index;
|
|
429
|
+
this.isAddingNewContent = false;
|
|
430
|
+
// Don't clear newTemplateContent to preserve the work in progress
|
|
431
|
+
// Sync editor value when switching content
|
|
432
|
+
this.syncEditorValue();
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
loadContentTypes() {
|
|
436
|
+
try {
|
|
437
|
+
// Get content types from TemplateEngine cache
|
|
438
|
+
const contentTypes = TemplateEngineBase.Instance.TemplateContentTypes;
|
|
439
|
+
this.contentTypeOptions = [
|
|
440
|
+
{ text: 'Select Type...', value: '' },
|
|
441
|
+
...contentTypes.map(ct => ({
|
|
442
|
+
text: ct.Name,
|
|
443
|
+
value: ct.ID
|
|
444
|
+
}))
|
|
445
|
+
];
|
|
446
|
+
}
|
|
447
|
+
catch (error) {
|
|
448
|
+
console.error('Error loading content types:', error);
|
|
449
|
+
// Fallback to basic types
|
|
450
|
+
this.contentTypeOptions = [
|
|
451
|
+
{ text: 'Select Type...', value: '' },
|
|
452
|
+
{ text: 'HTML', value: 'HTML' },
|
|
453
|
+
{ text: 'Plain Text', value: 'Text' },
|
|
454
|
+
{ text: 'Markdown', value: 'Markdown' }
|
|
455
|
+
];
|
|
456
|
+
}
|
|
457
|
+
}
|
|
458
|
+
addNewTemplateContent() {
|
|
459
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
460
|
+
if (!this.config.allowEdit)
|
|
461
|
+
return;
|
|
462
|
+
this.newTemplateContent = yield this._metadata.GetEntityObject('Template Contents');
|
|
463
|
+
this.newTemplateContent.TemplateID = this.template.ID;
|
|
464
|
+
this.newTemplateContent.Priority = this.templateContents.length + 1;
|
|
465
|
+
this.newTemplateContent.IsActive = true;
|
|
466
|
+
// Set default to first real content type (skip "Select Type..." if it exists)
|
|
467
|
+
const validContentTypes = this.contentTypeOptions.filter(option => option.value !== '');
|
|
468
|
+
if (validContentTypes.length > 0) {
|
|
469
|
+
this.newTemplateContent.TypeID = validContentTypes[0].value;
|
|
470
|
+
}
|
|
471
|
+
this.newTemplateContent.TemplateText = '';
|
|
472
|
+
// Add immediately to the array
|
|
473
|
+
this.templateContents.push(this.newTemplateContent);
|
|
474
|
+
this.selectedContentIndex = this.templateContents.length - 1;
|
|
475
|
+
this.isAddingNewContent = true;
|
|
476
|
+
// Sync editor value when adding new content
|
|
477
|
+
this.syncEditorValue();
|
|
478
|
+
});
|
|
479
|
+
}
|
|
480
|
+
deleteTemplateContent(index) {
|
|
481
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
482
|
+
var _a;
|
|
483
|
+
if (!this.config.allowEdit || index < 0 || index >= this.templateContents.length)
|
|
484
|
+
return;
|
|
485
|
+
const contentToDelete = this.templateContents[index];
|
|
486
|
+
if (contentToDelete.ID) {
|
|
487
|
+
try {
|
|
488
|
+
const result = yield contentToDelete.Delete();
|
|
489
|
+
if (result) {
|
|
490
|
+
this.templateContents.splice(index, 1);
|
|
491
|
+
// Adjust selected index if necessary
|
|
492
|
+
if (this.selectedContentIndex >= this.templateContents.length) {
|
|
493
|
+
this.selectedContentIndex = Math.max(0, this.templateContents.length - 1);
|
|
494
|
+
}
|
|
495
|
+
// If no contents remain, create a default one
|
|
496
|
+
if (this.templateContents.length === 0) {
|
|
497
|
+
yield this.createDefaultTemplateContent();
|
|
498
|
+
}
|
|
499
|
+
this.contentChange.emit(this.templateContents);
|
|
500
|
+
}
|
|
501
|
+
else {
|
|
502
|
+
MJNotificationService.Instance.CreateSimpleNotification(`Failed to delete template content. ${(_a = contentToDelete.LatestResult) === null || _a === void 0 ? void 0 : _a.Message}`, 'error');
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
catch (error) {
|
|
506
|
+
console.error('Error deleting template content:', error);
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
else {
|
|
510
|
+
// Not saved yet, just remove from array
|
|
511
|
+
this.templateContents.splice(index, 1);
|
|
512
|
+
if (this.selectedContentIndex >= this.templateContents.length) {
|
|
513
|
+
this.selectedContentIndex = Math.max(0, this.templateContents.length - 1);
|
|
514
|
+
}
|
|
515
|
+
// Reset adding new content state if we're deleting the new content
|
|
516
|
+
if (this.isAddingNewContent && index === this.templateContents.length) {
|
|
517
|
+
this.isAddingNewContent = false;
|
|
518
|
+
this.newTemplateContent = null;
|
|
519
|
+
}
|
|
520
|
+
this.contentChange.emit(this.templateContents);
|
|
521
|
+
}
|
|
522
|
+
});
|
|
523
|
+
}
|
|
524
|
+
get currentTemplateContent() {
|
|
525
|
+
if (this.isAddingNewContent) {
|
|
526
|
+
return this.newTemplateContent;
|
|
527
|
+
}
|
|
528
|
+
return this.templateContents[this.selectedContentIndex] || null;
|
|
529
|
+
}
|
|
530
|
+
get hasMultipleContents() {
|
|
531
|
+
return this.templateContents.length > 1 || this.isAddingNewContent;
|
|
532
|
+
}
|
|
533
|
+
onContentTypeChange() {
|
|
534
|
+
// Content type changes just modify the current content, no new record creation
|
|
535
|
+
this.updateUnsavedChangesFlag();
|
|
536
|
+
}
|
|
537
|
+
onContentChange() {
|
|
538
|
+
this.updateUnsavedChangesFlag();
|
|
539
|
+
}
|
|
540
|
+
/**
|
|
541
|
+
* Updates the hasUnsavedChanges flag based on entity dirty states
|
|
542
|
+
*/
|
|
543
|
+
updateUnsavedChangesFlag() {
|
|
544
|
+
this.hasUnsavedChanges = this.templateContents.some(content => content.Dirty) ||
|
|
545
|
+
this.isAddingNewContent;
|
|
546
|
+
}
|
|
547
|
+
onTemplateTextChange(event) {
|
|
548
|
+
var _a;
|
|
549
|
+
if (this.isUpdatingEditorValue) {
|
|
550
|
+
// Ignore change events when we're programmatically updating the editor
|
|
551
|
+
return;
|
|
552
|
+
}
|
|
553
|
+
if (this.currentTemplateContent) {
|
|
554
|
+
// Extract value from event - might be event.target.value or just event depending on component
|
|
555
|
+
const value = typeof event === 'string' ? event : (((_a = event.target) === null || _a === void 0 ? void 0 : _a.value) || event);
|
|
556
|
+
this.currentTemplateContent.TemplateText = value;
|
|
557
|
+
this.updateUnsavedChangesFlag();
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
/**
|
|
561
|
+
* Manually sync the editor value without triggering change events
|
|
562
|
+
*/
|
|
563
|
+
syncEditorValue() {
|
|
564
|
+
// Use Promise.resolve() to wait for the next microtask after any pending changes
|
|
565
|
+
Promise.resolve().then(() => {
|
|
566
|
+
// Then setTimeout for the next macrotask to ensure DOM is updated
|
|
567
|
+
setTimeout(() => {
|
|
568
|
+
var _a;
|
|
569
|
+
if (!this.codeEditor) {
|
|
570
|
+
return;
|
|
571
|
+
}
|
|
572
|
+
this.isUpdatingEditorValue = true;
|
|
573
|
+
const newValue = ((_a = this.currentTemplateContent) === null || _a === void 0 ? void 0 : _a.TemplateText) || '';
|
|
574
|
+
// Use the setValue method from mj-code-editor component
|
|
575
|
+
this.codeEditor.setValue(newValue);
|
|
576
|
+
this.isUpdatingEditorValue = false;
|
|
577
|
+
}, 0);
|
|
578
|
+
});
|
|
579
|
+
}
|
|
580
|
+
saveTemplateContents() {
|
|
581
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
582
|
+
if (!this.config.allowEdit)
|
|
583
|
+
return false;
|
|
584
|
+
try {
|
|
585
|
+
// Save all template contents that have changes
|
|
586
|
+
for (const content of this.templateContents) {
|
|
587
|
+
content.TemplateID = this.template.ID; // Ensure FK is set
|
|
588
|
+
if (content.Dirty || !content.ID) {
|
|
589
|
+
const contentResult = yield content.Save();
|
|
590
|
+
if (!contentResult) {
|
|
591
|
+
console.error('Failed to save template content:', content);
|
|
592
|
+
return false;
|
|
593
|
+
}
|
|
594
|
+
}
|
|
595
|
+
}
|
|
596
|
+
this.isAddingNewContent = false;
|
|
597
|
+
this.newTemplateContent = null;
|
|
598
|
+
this.updateUnsavedChangesFlag();
|
|
599
|
+
this.contentChange.emit(this.templateContents);
|
|
600
|
+
return true;
|
|
601
|
+
}
|
|
602
|
+
catch (error) {
|
|
603
|
+
console.error('Error saving template contents:', error);
|
|
604
|
+
return false;
|
|
605
|
+
}
|
|
606
|
+
});
|
|
607
|
+
}
|
|
608
|
+
getContentTypeDisplayText(typeId) {
|
|
609
|
+
if (!typeId)
|
|
610
|
+
return '-';
|
|
611
|
+
const option = this.contentTypeOptions.find(opt => opt.value === typeId);
|
|
612
|
+
return option ? option.text : typeId;
|
|
613
|
+
}
|
|
614
|
+
getEditorLanguage() {
|
|
615
|
+
var _a;
|
|
616
|
+
if (!((_a = this.currentTemplateContent) === null || _a === void 0 ? void 0 : _a.TypeID)) {
|
|
617
|
+
return 'jinja2'; // default to jinja2 for template syntax (compatible with Nunjucks)
|
|
618
|
+
}
|
|
619
|
+
const contentType = this.currentTemplateContent.TypeID.toLowerCase();
|
|
620
|
+
// Map content types to CodeMirror language modes
|
|
621
|
+
switch (contentType) {
|
|
622
|
+
case 'html':
|
|
623
|
+
return 'jinja2'; // Use jinja2 for HTML templates to get template syntax highlighting
|
|
624
|
+
case 'markdown':
|
|
625
|
+
case 'md':
|
|
626
|
+
return 'markdown';
|
|
627
|
+
case 'javascript':
|
|
628
|
+
case 'js':
|
|
629
|
+
return 'javascript';
|
|
630
|
+
case 'css':
|
|
631
|
+
return 'css';
|
|
632
|
+
case 'json':
|
|
633
|
+
return 'json';
|
|
634
|
+
case 'xml':
|
|
635
|
+
return 'xml';
|
|
636
|
+
case 'sql':
|
|
637
|
+
return 'sql';
|
|
638
|
+
case 'text':
|
|
639
|
+
case 'plain':
|
|
640
|
+
default:
|
|
641
|
+
return 'jinja2'; // Default to jinja2 since templates often contain template syntax
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
/**
|
|
645
|
+
* Test run the current template using the parameter dialog
|
|
646
|
+
*/
|
|
647
|
+
onRunTemplate() {
|
|
648
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
649
|
+
var _a;
|
|
650
|
+
if (!((_a = this.template) === null || _a === void 0 ? void 0 : _a.IsSaved) || !this.currentTemplateContent) {
|
|
651
|
+
MJNotificationService.Instance.CreateSimpleNotification('Please save the template before running it.', 'warning');
|
|
652
|
+
return;
|
|
653
|
+
}
|
|
654
|
+
// Save any unsaved changes first
|
|
655
|
+
if (this.hasUnsavedChanges) {
|
|
656
|
+
const saveResult = yield this.saveTemplateContents();
|
|
657
|
+
if (!saveResult) {
|
|
658
|
+
MJNotificationService.Instance.CreateSimpleNotification('Failed to save template changes.', 'error');
|
|
659
|
+
return;
|
|
660
|
+
}
|
|
661
|
+
}
|
|
662
|
+
// Emit the run template event
|
|
663
|
+
this.runTemplate.emit(this.template);
|
|
664
|
+
});
|
|
665
|
+
}
|
|
666
|
+
getContentTypeOptionsForContent() {
|
|
667
|
+
// Always exclude "Select Type..." option for all content
|
|
668
|
+
return this.contentTypeOptions.filter(option => option.value !== '');
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
TemplateEditorComponent.ɵfac = function TemplateEditorComponent_Factory(t) { return new (t || TemplateEditorComponent)(); };
|
|
672
|
+
TemplateEditorComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TemplateEditorComponent, selectors: [["mj-template-editor"]], viewQuery: function TemplateEditorComponent_Query(rf, ctx) { if (rf & 1) {
|
|
673
|
+
i0.ɵɵviewQuery(_c0, 5);
|
|
674
|
+
} if (rf & 2) {
|
|
675
|
+
let _t;
|
|
676
|
+
i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.codeEditor = _t.first);
|
|
677
|
+
} }, inputs: { template: "template", config: "config" }, outputs: { contentChange: "contentChange", runTemplate: "runTemplate" }, decls: 1, vars: 1, consts: [["codeEditor", ""], ["class", "template-editor", "style", "height: 100%; display: flex; flex-direction: column;", 4, "ngIf"], [1, "template-editor", 2, "height", "100%", "display", "flex", "flex-direction", "column"], [1, "content-versions-tabs", 2, "margin-bottom", "16px", "border-bottom", "2px solid #e0e0e0", "padding-bottom", "8px"], [1, "content-editor-container", 2, "flex", "1", "display", "flex", "flex-direction", "column", "background", "#fff", "border", "1px solid #dee2e6", "border-radius", "8px", "overflow", "hidden"], [1, "no-content-state", 2, "flex", "1", "display", "flex", "flex-direction", "column", "align-items", "center", "justify-content", "center", "background", "#f8f9fa", "border", "2px dashed #dee2e6", "border-radius", "8px", "padding", "40px", "text-align", "center"], [1, "content-tabs", 2, "display", "flex", "gap", "6px", "flex-wrap", "wrap"], [1, "content-version-tab", 2, "padding", "8px 12px", "border", "1px solid #ccc", "border-radius", "6px", "cursor", "pointer", "background", "#fff", "display", "flex", "align-items", "center", "gap", "6px", "transition", "all 0.2s", "position", "relative", 3, "active", "border-color", "background"], [1, "content-version-tab", "active", 2, "padding", "8px 12px", "border", "1px solid #28a745", "border-radius", "6px", "background", "#d4edda", "display", "flex", "align-items", "center", "gap", "6px"], ["onmouseover", "this.style.backgroundColor='#e8f5e9'; this.style.borderStyle='solid';", "onmouseout", "this.style.backgroundColor='#f8f9fa'; this.style.borderStyle='dashed';", "title", "Add new template content", 1, "content-version-tab", "add-new", 2, "padding", "8px 12px", "border", "1px dashed #28a745", "border-radius", "6px", "background", "#f8f9fa", "display", "flex", "align-items", "center", "gap", "6px", "cursor", "pointer", "transition", "all 0.2s"], [1, "content-version-tab", 2, "padding", "8px 12px", "border", "1px solid #ccc", "border-radius", "6px", "cursor", "pointer", "background", "#fff", "display", "flex", "align-items", "center", "gap", "6px", "transition", "all 0.2s", "position", "relative", 3, "click"], [2, "flex", "1"], [2, "font-weight", "600", "font-size", "0.85em", "color", "#495057"], [2, "font-size", "0.7em", "color", "#6c757d"], [2, "color", "#dc3545"], ["type", "button", "onmouseover", "this.style.backgroundColor='#dc3545'; this.style.color='white';", "onmouseout", "this.style.backgroundColor='transparent'; this.style.color='#dc3545';", "title", "Delete this content version", 1, "btn-sm", "delete-btn", 2, "background", "none", "border", "none", "color", "#dc3545", "padding", "4px", "border-radius", "3px", "transition", "all 0.2s", "cursor", "pointer"], ["type", "button", "onmouseover", "this.style.backgroundColor='#dc3545'; this.style.color='white';", "onmouseout", "this.style.backgroundColor='transparent'; this.style.color='#dc3545';", "title", "Delete this content version", 1, "btn-sm", "delete-btn", 2, "background", "none", "border", "none", "color", "#dc3545", "padding", "4px", "border-radius", "3px", "transition", "all 0.2s", "cursor", "pointer", 3, "click"], [1, "fa-solid", "fa-trash", "fa-xs"], [1, "fa-solid", "fa-plus", "text-success"], [2, "font-weight", "600", "color", "#155724", "font-size", "0.85em"], ["onmouseover", "this.style.backgroundColor='#e8f5e9'; this.style.borderStyle='solid';", "onmouseout", "this.style.backgroundColor='#f8f9fa'; this.style.borderStyle='dashed';", "title", "Add new template content", 1, "content-version-tab", "add-new", 2, "padding", "8px 12px", "border", "1px dashed #28a745", "border-radius", "6px", "background", "#f8f9fa", "display", "flex", "align-items", "center", "gap", "6px", "cursor", "pointer", "transition", "all 0.2s", 3, "click"], [1, "fa-solid", "fa-plus", 2, "color", "#28a745", "font-size", "0.75em"], [2, "font-weight", "500", "color", "#28a745", "font-size", "0.85em"], [1, "content-metadata-bar", 2, "background", "#f8f9fa", "border-bottom", "1px solid #dee2e6", "padding", "16px 20px"], [2, "display", "grid", "grid-template-columns", "2fr 1fr 1fr auto", "gap", "20px", "align-items", "end"], [1, "form-group", 2, "margin", "0"], ["for", "contentType", 1, "form-label", 2, "margin-bottom", "4px", "font-size", "0.9em", "font-weight", "600"], [1, "fa-solid", "fa-tag"], ["name", "contentType", "textField", "text", "valueField", "value", 3, "ngModel", "data", "valuePrimitive"], [1, "form-control-plaintext", 2, "font-size", "0.9em", "padding", "4px 0"], ["for", "priority", 1, "form-label", 2, "margin-bottom", "4px", "font-size", "0.9em", "font-weight", "600"], [1, "fa-solid", "fa-sort-numeric-up"], ["name", "priority", 3, "ngModel", "min", "step", "format"], [1, "form-label", 2, "margin-bottom", "4px", "font-size", "0.9em", "font-weight", "600"], [1, "fa-solid", "fa-toggle-on"], [1, "form-check", 2, "margin-top", "8px"], [1, "content-text-editor", 2, "flex", "1", "padding", "20px", "display", "flex", "flex-direction", "column"], [2, "display", "flex", "justify-content", "space-between", "align-items", "center", "margin-bottom", "12px"], ["for", "templateContent", 1, "form-label", 2, "margin", "0", "font-weight", "600", "display", "flex", "align-items", "center", "gap", "8px"], [1, "fa-solid", "fa-code"], [1, "badge", 2, "padding", "4px 8px", "border-radius", "4px", "font-size", "0.75em"], [2, "display", "flex", "align-items", "center", "gap", "12px"], [1, "unsaved-indicator", 2, "color", "#fd7e14", "font-size", "0.85em", "display", "flex", "align-items", "center", "gap", "4px"], ["type", "button", "onmouseover", "this.style.background='#138496'", "onmouseout", "this.style.background='#17a2b8'", "title", "Test run this template", 1, "btn", "btn-sm", 2, "background", "#17a2b8", "color", "white", "border", "none", "padding", "6px 12px", "border-radius", "4px", "font-size", "0.85em", "display", "flex", "align-items", "center", "gap", "6px", "transition", "all 0.2s", 3, "disabled"], [2, "flex", "1", "height", "350px", "border", "1px solid #ced4da", "border-radius", "4px", 3, "change", "readonly", "language", "languages"], [1, "syntax-help", 2, "margin-top", "16px", "padding", "12px", "background", "#e8f5e8", "border-left", "4px solid #28a745", "border-radius", "4px", "font-size", "0.85em"], ["name", "contentType", "textField", "text", "valueField", "value", 3, "ngModelChange", "valueChange", "ngModel", "data", "valuePrimitive"], ["name", "priority", 3, "ngModelChange", "ngModel", "min", "step", "format"], ["type", "checkbox", "id", "isActive", "name", "isActive", 1, "form-check-input", 3, "ngModelChange", "ngModel"], ["for", "isActive", 1, "form-check-label", 2, "font-size", "0.9em"], [1, "badge", "badge-success", 2, "background", "#28a745", "color", "white", "padding", "3px 8px", "border-radius", "3px", "font-size", "0.75em"], [1, "badge", "badge-secondary", 2, "background", "#6c757d", "color", "white", "padding", "3px 8px", "border-radius", "3px", "font-size", "0.75em"], [1, "fa-solid", "fa-check-circle"], [1, "fa-solid", "fa-pause-circle"], [1, "fa-solid", "fa-circle", 2, "font-size", "0.5em"], ["type", "button", "onmouseover", "this.style.background='#138496'", "onmouseout", "this.style.background='#17a2b8'", "title", "Test run this template", 1, "btn", "btn-sm", 2, "background", "#17a2b8", "color", "white", "border", "none", "padding", "6px 12px", "border-radius", "4px", "font-size", "0.85em", "display", "flex", "align-items", "center", "gap", "6px", "transition", "all 0.2s", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "fa-solid", "fa-play"], [2, "font-weight", "600", "margin-bottom", "8px", "color", "#155724"], [1, "fa-solid", "fa-lightbulb"], [2, "display", "grid", "grid-template-columns", "1fr 1fr", "gap", "12px"], [2, "background", "#fff", "padding", "2px 4px", "border-radius", "3px"], [1, "fa-solid", "fa-file-plus", 2, "font-size", "48px", "margin-bottom", "16px", "color", "#6c757d", "opacity", "0.6"], [2, "color", "#495057", "margin-bottom", "8px"], [2, "color", "#6c757d", "margin-bottom", "20px"], ["type", "button", 1, "btn", "btn-primary"], ["type", "button", 1, "btn", "btn-primary", 3, "click"], [1, "fa-solid", "fa-plus"]], template: function TemplateEditorComponent_Template(rf, ctx) { if (rf & 1) {
|
|
678
|
+
i0.ɵɵtemplate(0, TemplateEditorComponent_div_0_Template, 4, 2, "div", 1);
|
|
679
|
+
} if (rf & 2) {
|
|
680
|
+
i0.ɵɵproperty("ngIf", ctx.template);
|
|
681
|
+
} }, dependencies: [i1.NgIf, i2.CheckboxControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.NumericTextBoxComponent, i4.DropDownListComponent, i5.CodeEditorComponent], styles: [".template-editor[_ngcontent-%COMP%] {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n.section-header[_ngcontent-%COMP%] h6[_ngcontent-%COMP%] {\n font-size: 0.9em;\n}\n\n.param-row[_ngcontent-%COMP%]:hover {\n background-color: #f8f9fa !important;\n}\n\n.content-item[_ngcontent-%COMP%] {\n transition: box-shadow 0.2s ease;\n}\n\n.content-item[_ngcontent-%COMP%]:hover {\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n}\n\n.badge[_ngcontent-%COMP%] {\n display: inline-block;\n font-size: 0.7em;\n line-height: 1;\n}\n\n\n\n.template-editor[_ngcontent-%COMP%] kendo-textbox[_ngcontent-%COMP%], \n.template-editor[_ngcontent-%COMP%] kendo-textarea[_ngcontent-%COMP%], \n.template-editor[_ngcontent-%COMP%] kendo-dropdownlist[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.template-editor[_ngcontent-%COMP%] kendo-button[_ngcontent-%COMP%] {\n min-width: auto;\n}"] });
|
|
682
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TemplateEditorComponent, [{
|
|
683
|
+
type: Component,
|
|
684
|
+
args: [{ selector: 'mj-template-editor', template: "<div class=\"template-editor\" *ngIf=\"template\" style=\"height: 100%; display: flex; flex-direction: column;\">\n\n <!-- Content Versions List/Tabs -->\n @if (templateContents.length > 0) {\n <div class=\"content-versions-tabs\" style=\"margin-bottom: 16px; border-bottom: 2px solid #e0e0e0; padding-bottom: 8px;\">\n <div class=\"content-tabs\" style=\"display: flex; gap: 6px; flex-wrap: wrap;\">\n \n @for (content of templateContents; track content.ID || $index; let i = $index) {\n <div class=\"content-version-tab\" \n [class.active]=\"selectedContentIndex === i && !isAddingNewContent\"\n (click)=\"selectTemplateContent(i, false)\"\n style=\"padding: 8px 12px; border: 1px solid #ccc; border-radius: 6px; cursor: pointer; background: #fff; display: flex; align-items: center; gap: 6px; transition: all 0.2s; position: relative;\"\n [style.border-color]=\"selectedContentIndex === i && !isAddingNewContent ? '#007bff' : '#ccc'\"\n [style.background]=\"selectedContentIndex === i && !isAddingNewContent ? '#e3f2fd' : '#fff'\">\n \n <div style=\"flex: 1;\">\n <div style=\"font-weight: 600; font-size: 0.85em; color: #495057;\">\n {{ content.Type || 'Version ' + (i + 1) }}\n </div>\n <div style=\"font-size: 0.7em; color: #6c757d;\">\n P:{{ content.Priority }}\n @if (!content.IsActive) {\n \u2022 <span style=\"color: #dc3545;\">Inactive</span>\n }\n </div>\n </div>\n \n @if (templateContents.length > 1 && config.allowEdit) {\n <button type=\"button\" \n (click)=\"deleteTemplateContent(i); $event.stopPropagation()\"\n class=\"btn-sm delete-btn\"\n style=\"background: none; border: none; color: #dc3545; padding: 4px; border-radius: 3px; transition: all 0.2s; cursor: pointer;\"\n onmouseover=\"this.style.backgroundColor='#dc3545'; this.style.color='white';\"\n onmouseout=\"this.style.backgroundColor='transparent'; this.style.color='#dc3545';\"\n title=\"Delete this content version\">\n <i class=\"fa-solid fa-trash fa-xs\"></i>\n </button>\n }\n </div>\n }\n \n @if (isAddingNewContent) {\n <div class=\"content-version-tab active\" \n style=\"padding: 8px 12px; border: 1px solid #28a745; border-radius: 6px; background: #d4edda; display: flex; align-items: center; gap: 6px;\">\n <i class=\"fa-solid fa-plus text-success\"></i>\n <span style=\"font-weight: 600; color: #155724; font-size: 0.85em;\">New</span>\n </div>\n }\n \n <!-- Add New Content (Edit Mode Only) -->\n @if (config.allowEdit && !isAddingNewContent) {\n <div class=\"content-version-tab add-new\" \n (click)=\"addNewTemplateContent()\"\n style=\"padding: 8px 12px; border: 1px dashed #28a745; border-radius: 6px; background: #f8f9fa; display: flex; align-items: center; gap: 6px; cursor: pointer; transition: all 0.2s;\"\n onmouseover=\"this.style.backgroundColor='#e8f5e9'; this.style.borderStyle='solid';\"\n onmouseout=\"this.style.backgroundColor='#f8f9fa'; this.style.borderStyle='dashed';\"\n title=\"Add new template content\">\n <i class=\"fa-solid fa-plus\" style=\"color: #28a745; font-size: 0.75em;\"></i>\n <span style=\"font-weight: 500; color: #28a745; font-size: 0.85em;\">New</span>\n </div>\n }\n </div>\n </div>\n }\n\n <!-- Content Editor -->\n @if (currentTemplateContent) {\n <div class=\"content-editor-container\" style=\"flex: 1; display: flex; flex-direction: column; background: #fff; border: 1px solid #dee2e6; border-radius: 8px; overflow: hidden;\">\n \n <!-- Content Metadata Bar -->\n <div class=\"content-metadata-bar\" style=\"background: #f8f9fa; border-bottom: 1px solid #dee2e6; padding: 16px 20px;\">\n <div style=\"display: grid; grid-template-columns: 2fr 1fr 1fr auto; gap: 20px; align-items: end;\">\n \n <div class=\"form-group\" style=\"margin: 0;\">\n <label for=\"contentType\" class=\"form-label\" style=\"margin-bottom: 4px; font-size: 0.9em; font-weight: 600;\">\n <i class=\"fa-solid fa-tag\"></i> Content Type\n </label>\n @if (config.allowEdit) {\n <kendo-dropdownlist [(ngModel)]=\"currentTemplateContent.TypeID\"\n name=\"contentType\"\n [data]=\"getContentTypeOptionsForContent()\"\n textField=\"text\"\n valueField=\"value\"\n [valuePrimitive]=\"true\"\n (valueChange)=\"onContentTypeChange()\">\n </kendo-dropdownlist>\n } @else {\n <div class=\"form-control-plaintext\" style=\"font-size: 0.9em; padding: 4px 0;\">\n {{ getContentTypeDisplayText(currentTemplateContent.TypeID) }}\n </div>\n }\n </div>\n \n <div class=\"form-group\" style=\"margin: 0;\">\n <label for=\"priority\" class=\"form-label\" style=\"margin-bottom: 4px; font-size: 0.9em; font-weight: 600;\">\n <i class=\"fa-solid fa-sort-numeric-up\"></i> Priority\n </label>\n @if (config.allowEdit) {\n <kendo-numerictextbox [(ngModel)]=\"currentTemplateContent.Priority\"\n name=\"priority\"\n [min]=\"1\"\n [step]=\"1\"\n [format]=\"'n0'\">\n </kendo-numerictextbox>\n } @else {\n <div class=\"form-control-plaintext\" style=\"font-size: 0.9em; padding: 4px 0;\">\n {{ currentTemplateContent.Priority || '-' }}\n </div>\n }\n </div>\n \n <div class=\"form-group\" style=\"margin: 0;\">\n <label class=\"form-label\" style=\"margin-bottom: 4px; font-size: 0.9em; font-weight: 600;\">\n <i class=\"fa-solid fa-toggle-on\"></i> Status\n </label>\n @if (config.allowEdit) {\n <div class=\"form-check\" style=\"margin-top: 8px;\">\n <input type=\"checkbox\" \n id=\"isActive\"\n class=\"form-check-input\" \n [(ngModel)]=\"currentTemplateContent.IsActive\"\n name=\"isActive\">\n <label class=\"form-check-label\" for=\"isActive\" style=\"font-size: 0.9em;\">\n Active\n </label>\n </div>\n } @else {\n <div class=\"form-control-plaintext\" style=\"font-size: 0.9em; padding: 4px 0;\">\n @if (currentTemplateContent.IsActive) {\n <span class=\"badge badge-success\" style=\"background: #28a745; color: white; padding: 3px 8px; border-radius: 3px; font-size: 0.75em;\">\n <i class=\"fa-solid fa-check-circle\"></i> Active\n </span>\n } @else {\n <span class=\"badge badge-secondary\" style=\"background: #6c757d; color: white; padding: 3px 8px; border-radius: 3px; font-size: 0.75em;\">\n <i class=\"fa-solid fa-pause-circle\"></i> Inactive\n </span>\n }\n </div>\n }\n </div>\n\n </div>\n </div>\n \n <!-- Content Text Editor -->\n <div class=\"content-text-editor\" style=\"flex: 1; padding: 20px; display: flex; flex-direction: column;\">\n <div style=\"display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px;\">\n <label for=\"templateContent\" class=\"form-label\" style=\"margin: 0; font-weight: 600; display: flex; align-items: center; gap: 8px;\">\n <i class=\"fa-solid fa-code\"></i> Template Content\n <span class=\"badge\" style=\"padding: 4px 8px; border-radius: 4px; font-size: 0.75em;\"\n [style.background]=\"!currentTemplateContent.ID ? '#28a745' : '#6c757d'\"\n [style.color]=\"'white'\">\n @if (!currentTemplateContent.ID) {\n New\n } @else {\n {{ getContentTypeDisplayText(currentTemplateContent.TypeID) }}\n }\n </span>\n </label>\n \n <div style=\"display: flex; align-items: center; gap: 12px;\">\n @if (!isAddingNewContent && hasUnsavedChanges) {\n <span class=\"unsaved-indicator\" style=\"color: #fd7e14; font-size: 0.85em; display: flex; align-items: center; gap: 4px;\">\n <i class=\"fa-solid fa-circle\" style=\"font-size: 0.5em;\"></i>\n Unsaved changes\n </span>\n }\n \n @if (template.IsSaved && currentTemplateContent && config.showRunButton) {\n <button type=\"button\" \n class=\"btn btn-sm\"\n [disabled]=\"isRunningTemplate\"\n (click)=\"onRunTemplate()\"\n style=\"background: #17a2b8; color: white; border: none; padding: 6px 12px; border-radius: 4px; font-size: 0.85em; display: flex; align-items: center; gap: 6px; transition: all 0.2s;\"\n onmouseover=\"this.style.background='#138496'\"\n onmouseout=\"this.style.background='#17a2b8'\"\n title=\"Test run this template\">\n @if (isRunningTemplate) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n Running...\n } @else {\n <i class=\"fa-solid fa-play\"></i>\n Run\n }\n </button>\n }\n </div>\n </div>\n \n <mj-code-editor \n #codeEditor\n (change)=\"onTemplateTextChange($event)\"\n [readonly]=\"!config.allowEdit\"\n [language]=\"getEditorLanguage()\"\n [languages]=\"supportedLanguages\"\n style=\"flex: 1; height: 350px; border: 1px solid #ced4da; border-radius: 4px;\">\n </mj-code-editor>\n \n <!-- Template Syntax Help -->\n @if (!config.compactMode) {\n <div class=\"syntax-help\" style=\"margin-top: 16px; padding: 12px; background: #e8f5e8; border-left: 4px solid #28a745; border-radius: 4px; font-size: 0.85em;\">\n <div style=\"font-weight: 600; margin-bottom: 8px; color: #155724;\">\n <i class=\"fa-solid fa-lightbulb\"></i> Template Syntax Quick Reference:\n </div>\n <div style=\"display: grid; grid-template-columns: 1fr 1fr; gap: 12px;\">\n <div>\n <strong>Parameters:</strong> <code style=\"background: #fff; padding: 2px 4px; border-radius: 3px;\">{{'{{'}} paramName {{'}}'}}</code><br>\n <strong>Includes:</strong> <code style=\"background: #fff; padding: 2px 4px; border-radius: 3px;\">{{'{% template \"TemplateName\" %}'}}</code>\n </div>\n <div>\n <strong>Conditionals:</strong> <code style=\"background: #fff; padding: 2px 4px; border-radius: 3px;\">{{'{% if condition %}'}}</code><br>\n <strong>Loops:</strong> <code style=\"background: #fff; padding: 2px 4px; border-radius: 3px;\">{{'{% for item in items %}'}}</code>\n </div>\n </div>\n </div>\n }\n </div>\n </div>\n } @else {\n <!-- No Content State -->\n <div class=\"no-content-state\" style=\"flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; background: #f8f9fa; border: 2px dashed #dee2e6; border-radius: 8px; padding: 40px; text-align: center;\">\n <i class=\"fa-solid fa-file-plus\" style=\"font-size: 48px; margin-bottom: 16px; color: #6c757d; opacity: 0.6;\"></i>\n <h5 style=\"color: #495057; margin-bottom: 8px;\">No Template Content</h5>\n <p style=\"color: #6c757d; margin-bottom: 20px;\">Create your first template content version to get started.</p>\n @if (config.allowEdit) {\n <button type=\"button\" \n (click)=\"addNewTemplateContent()\"\n class=\"btn btn-primary\">\n <i class=\"fa-solid fa-plus\"></i> Create First Content Version\n </button>\n }\n </div>\n }\n</div>", styles: [".template-editor {\n font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;\n}\n\n.section-header h6 {\n font-size: 0.9em;\n}\n\n.param-row:hover {\n background-color: #f8f9fa !important;\n}\n\n.content-item {\n transition: box-shadow 0.2s ease;\n}\n\n.content-item:hover {\n box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n}\n\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 8px;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 8px;\n}\n\n.badge {\n display: inline-block;\n font-size: 0.7em;\n line-height: 1;\n}\n\n/* Kendo UI overrides for better integration */\n.template-editor kendo-textbox,\n.template-editor kendo-textarea,\n.template-editor kendo-dropdownlist {\n width: 100%;\n}\n\n.template-editor kendo-button {\n min-width: auto;\n}"] }]
|
|
685
|
+
}], null, { template: [{
|
|
686
|
+
type: Input
|
|
687
|
+
}], config: [{
|
|
688
|
+
type: Input
|
|
689
|
+
}], contentChange: [{
|
|
690
|
+
type: Output
|
|
691
|
+
}], runTemplate: [{
|
|
692
|
+
type: Output
|
|
693
|
+
}], codeEditor: [{
|
|
694
|
+
type: ViewChild,
|
|
695
|
+
args: ['codeEditor']
|
|
696
|
+
}] }); })();
|
|
697
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TemplateEditorComponent, { className: "TemplateEditorComponent", filePath: "src/lib/shared/components/template-editor.component.ts", lineNumber: 22 }); })();
|
|
698
|
+
//# sourceMappingURL=template-editor.component.js.map
|