@memberjunction/ng-core-entity-forms 5.35.0 → 5.36.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/dist/lib/custom/Lists/list-form.component.d.ts +6 -0
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +271 -204
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js +7 -7
- package/dist/lib/generated/Entities/MJAIAgent/mjaiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentAction/mjaiagentaction.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIAgentAction/mjaiagentaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentCategory/mjaiagentcategory.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIAgentCategory/mjaiagentcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentDataSource/mjaiagentdatasource.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIAgentDataSource/mjaiagentdatasource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentExample/mjaiagentexample.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJAIAgentExample/mjaiagentexample.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentLearningCycle/mjaiagentlearningcycle.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIAgentLearningCycle/mjaiagentlearningcycle.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJAIAgentNote/mjaiagentnote.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentPermission/mjaiagentpermission.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIAgentPermission/mjaiagentpermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentPrompt/mjaiagentprompt.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIAgentPrompt/mjaiagentprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRelationship/mjaiagentrelationship.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRelationship/mjaiagentrelationship.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRequest/mjaiagentrequest.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRequest/mjaiagentrequest.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js +6 -6
- package/dist/lib/generated/Entities/MJAIAgentRun/mjaiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRunMedia/mjaiagentrunmedia.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRunMedia/mjaiagentrunmedia.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIAgentRunStep/mjaiagentrunstep.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentSearchScope/mjaiagentsearchscope.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIAgentSearchScope/mjaiagentsearchscope.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentStep/mjaiagentstep.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIAgentStep/mjaiagentstep.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIAgentType/mjaiagenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIArchitecture/mjaiarchitecture.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIArchitecture/mjaiarchitecture.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIConfiguration/mjaiconfiguration.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIConfiguration/mjaiconfiguration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIModel/mjaimodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModelCost/mjaimodelcost.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIModelCost/mjaimodelcost.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModelModality/mjaimodelmodality.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIModelModality/mjaimodelmodality.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIModelType/mjaimodeltype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJAIPrompt/mjaiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptModel/mjaipromptmodel.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIPromptModel/mjaipromptmodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRunMedia/mjaipromptrunmedia.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRunMedia/mjaipromptrunmedia.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIResultCache/mjairesultcache.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAIResultCache/mjairesultcache.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIVendorType/mjaivendortype.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAIVendorType/mjaivendortype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAPIKey/mjapikey.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAPIKey/mjapikey.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAPIKeyUsageLog/mjapikeyusagelog.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAPIKeyUsageLog/mjapikeyusagelog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAccessControlRule/mjaccesscontrolrule.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJAccessControlRule/mjaccesscontrolrule.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJActionExecutionLog/mjactionexecutionlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJApplication/mjapplication.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJArchiveConfiguration/mjarchiveconfiguration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJArchiveConfigurationEntity/mjarchiveconfigurationentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJArchiveRun/mjarchiverun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJArchiveRunDetail/mjarchiverundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJArtifactVersion/mjartifactversion.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJArtifactVersion/mjartifactversion.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJArtifactVersionAttribute/mjartifactversionattribute.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJArtifactVersionAttribute/mjartifactversionattribute.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJCollection/mjcollection.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCommunicationLog/mjcommunicationlog.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJCommunicationLog/mjcommunicationlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCommunicationProvider/mjcommunicationprovider.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJCommunicationProvider/mjcommunicationprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCommunicationRun/mjcommunicationrun.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJCommunicationRun/mjcommunicationrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJCompanyIntegration/mjcompanyintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationEntityMap/mjcompanyintegrationentitymap.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationEntityMap/mjcompanyintegrationentitymap.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationRun/mjcompanyintegrationrun.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationRun/mjcompanyintegrationrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationRunAPILog/mjcompanyintegrationrunapilog.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationRunAPILog/mjcompanyintegrationrunapilog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationRunDetail/mjcompanyintegrationrundetail.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJCompanyIntegrationRunDetail/mjcompanyintegrationrundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJComponent/mjcomponent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJComponentLibrary/mjcomponentlibrary.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJComponentLibrary/mjcomponentlibrary.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentItem/mjcontentitem.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJContentItem/mjcontentitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentProcessRunDetail/mjcontentprocessrundetail.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJContentProcessRunDetail/mjcontentprocessrundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJContentSource/mjcontentsource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJContentType/mjcontenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJConversationDetail/mjconversationdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationDetailAttachment/mjconversationdetailattachment.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJConversationDetailAttachment/mjconversationdetailattachment.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJCredential/mjcredential.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDashboard/mjdashboard.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJDashboard/mjdashboard.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDashboardCategoryPermission/mjdashboardcategorypermission.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJDashboardCategoryPermission/mjdashboardcategorypermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDashboardUserPreference/mjdashboarduserpreference.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJDashboardUserPreference/mjdashboarduserpreference.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDataContextItem/mjdatacontextitem.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJDataContextItem/mjdatacontextitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDatasetItem/mjdatasetitem.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJDatasetItem/mjdatasetitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJDuplicateRun/mjduplicaterun.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJDuplicateRun/mjduplicaterun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEmployee/mjemployee.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJEmployee/mjemployee.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +5 -5
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJEntityDocument/mjentitydocument.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJEntityField/mjentityfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKeyRelatedEntity/mjentityorganickeyrelatedentity.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKeyRelatedEntity/mjentityorganickeyrelatedentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityPermission/mjentitypermission.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJEntityPermission/mjentitypermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityRecordDocument/mjentityrecorddocument.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJEntityRecordDocument/mjentityrecorddocument.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityRelationship/mjentityrelationship.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJEntityRelationship/mjentityrelationship.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJEnvironment/mjenvironment.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJErrorLog/mjerrorlog.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJErrorLog/mjerrorlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJGeneratedCode/mjgeneratedcode.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJGeneratedCode/mjgeneratedcode.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJIntegration/mjintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJIntegrationObject/mjintegrationobject.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegrationObjectField/mjintegrationobjectfield.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJIntegrationObjectField/mjintegrationobjectfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJIntegrationURLFormat/mjintegrationurlformat.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJIntegrationURLFormat/mjintegrationurlformat.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJKnowledgeHubSavedSearch/mjknowledgehubsavedsearch.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJKnowledgeHubSavedSearch/mjknowledgehubsavedsearch.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJList/mjlist.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJList/mjlist.form.component.js +45 -27
- package/dist/lib/generated/Entities/MJList/mjlist.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJListCategory/mjlistcategory.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJListCategory/mjlistcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMCPServer/mjmcpserver.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJMCPServer/mjmcpserver.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMCPServerConnection/mjmcpserverconnection.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJMCPServerConnection/mjmcpserverconnection.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJMCPServerTool/mjmcpservertool.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMCPToolExecutionLog/mjmcptoolexecutionlog.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJMCPToolExecutionLog/mjmcptoolexecutionlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJPermissionDomain/mjpermissiondomain.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJPermissionDomain/mjpermissiondomain.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJProject/mjproject.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJPublicLink/mjpubliclink.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJPublicLink/mjpubliclink.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJQuery/mjquery.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJQueue/mjqueue.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJQueue/mjqueue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJQueueTask/mjqueuetask.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJQueueTask/mjqueuetask.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecommendationRun/mjrecommendationrun.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJRecommendationRun/mjrecommendationrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJRecordChange/mjrecordchange.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordGeoCode/mjrecordgeocode.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJRecordGeoCode/mjrecordgeocode.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordLink/mjrecordlink.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJRecordLink/mjrecordlink.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordMergeLog/mjrecordmergelog.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJRecordMergeLog/mjrecordmergelog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJReport/mjreport.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJReport/mjreport.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJResourcePermission/mjresourcepermission.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJResourcePermission/mjresourcepermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJResourceType/mjresourcetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledAction/mjscheduledaction.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJScheduledAction/mjscheduledaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJScheduledJob/mjscheduledjob.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJScheduledJobRun/mjscheduledjobrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSearchExecutionLog/mjsearchexecutionlog.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJSearchExecutionLog/mjsearchexecutionlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSearchProvider/mjsearchprovider.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJSearchProvider/mjsearchprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSearchScope/mjsearchscope.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJSearchScope/mjsearchscope.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSearchScopeEntity/mjsearchscopeentity.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJSearchScopeEntity/mjsearchscopeentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSearchScopeExternalIndex/mjsearchscopeexternalindex.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJSearchScopeExternalIndex/mjsearchscopeexternalindex.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSearchScopeProvider/mjsearchscopeprovider.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJSearchScopeProvider/mjsearchscopeprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJSearchScopeTestQuery/mjsearchscopetestquery.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJSearchScopeTestQuery/mjsearchscopetestquery.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTag/mjtag.form.component.js +3 -3
- package/dist/lib/generated/Entities/MJTag/mjtag.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTagSuggestion/mjtagsuggestion.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJTagSuggestion/mjtagsuggestion.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTemplate/mjtemplate.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJTemplate/mjtemplate.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTemplateCategory/mjtemplatecategory.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJTemplateCategory/mjtemplatecategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTemplateParam/mjtemplateparam.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJTemplateParam/mjtemplateparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJTest/mjtest.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestRun/mjtestrun.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJTestRun/mjtestrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestRunOutput/mjtestrunoutput.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJTestRunOutput/mjtestrunoutput.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJTestSuite/mjtestsuite.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js +4 -4
- package/dist/lib/generated/Entities/MJTestSuiteRun/mjtestsuiterun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js +123 -105
- package/dist/lib/generated/Entities/MJUser/mjuser.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJUserNotificationType/mjusernotificationtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserRecordLog/mjuserrecordlog.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJUserRecordLog/mjuserrecordlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js +27 -9
- package/dist/lib/generated/Entities/MJUserView/mjuserview.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJUserViewCategory/mjuserviewcategory.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJUserViewCategory/mjuserviewcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJVectorIndex/mjvectorindex.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJVersionInstallation/mjversioninstallation.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJVersionInstallation/mjversioninstallation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJVersionLabel/mjversionlabel.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJVersionLabel/mjversionlabel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJWorkspace/mjworkspace.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJWorkspaceItem/mjworkspaceitem.form.component.js +1 -1
- package/dist/lib/generated/Entities/MJWorkspaceItem/mjworkspaceitem.form.component.js.map +1 -1
- package/package.json +36 -36
|
@@ -20,16 +20,16 @@ import * as i5 from "@memberjunction/ng-list-management";
|
|
|
20
20
|
import * as i6 from "@angular/common";
|
|
21
21
|
function MJListFormComponentExtended_Conditional_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
22
22
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
23
|
-
i0.ɵɵelementStart(0, "button",
|
|
23
|
+
i0.ɵɵelementStart(0, "button", 26);
|
|
24
24
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_7_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.startEditingName()); });
|
|
25
|
-
i0.ɵɵelement(1, "i",
|
|
25
|
+
i0.ɵɵelement(1, "i", 27);
|
|
26
26
|
i0.ɵɵelementEnd();
|
|
27
27
|
} }
|
|
28
28
|
function MJListFormComponentExtended_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
29
|
-
i0.ɵɵelementStart(0, "h1",
|
|
29
|
+
i0.ɵɵelementStart(0, "h1", 24);
|
|
30
30
|
i0.ɵɵtext(1);
|
|
31
31
|
i0.ɵɵelementEnd();
|
|
32
|
-
i0.ɵɵconditionalCreate(2, MJListFormComponentExtended_Conditional_7_Conditional_2_Template, 2, 0, "button",
|
|
32
|
+
i0.ɵɵconditionalCreate(2, MJListFormComponentExtended_Conditional_7_Conditional_2_Template, 2, 0, "button", 25);
|
|
33
33
|
} if (rf & 2) {
|
|
34
34
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
35
35
|
i0.ɵɵadvance();
|
|
@@ -39,24 +39,24 @@ function MJListFormComponentExtended_Conditional_7_Template(rf, ctx) { if (rf &
|
|
|
39
39
|
} }
|
|
40
40
|
function MJListFormComponentExtended_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
41
41
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
42
|
-
i0.ɵɵelementStart(0, "input",
|
|
42
|
+
i0.ɵɵelementStart(0, "input", 28, 0);
|
|
43
43
|
i0.ɵɵtwoWayListener("ngModelChange", function MJListFormComponentExtended_Conditional_8_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.editingName, $event) || (ctx_r1.editingName = $event); return i0.ɵɵresetView($event); });
|
|
44
44
|
i0.ɵɵlistener("keydown.enter", function MJListFormComponentExtended_Conditional_8_Template_input_keydown_enter_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.saveNameEdit()); })("keydown.escape", function MJListFormComponentExtended_Conditional_8_Template_input_keydown_escape_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancelNameEdit()); });
|
|
45
45
|
i0.ɵɵelementEnd();
|
|
46
|
-
i0.ɵɵelementStart(2, "button",
|
|
46
|
+
i0.ɵɵelementStart(2, "button", 29);
|
|
47
47
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_8_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.saveNameEdit()); });
|
|
48
|
-
i0.ɵɵelement(3, "i",
|
|
48
|
+
i0.ɵɵelement(3, "i", 30);
|
|
49
49
|
i0.ɵɵelementEnd();
|
|
50
|
-
i0.ɵɵelementStart(4, "button",
|
|
50
|
+
i0.ɵɵelementStart(4, "button", 31);
|
|
51
51
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_8_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancelNameEdit()); });
|
|
52
|
-
i0.ɵɵelement(5, "i",
|
|
52
|
+
i0.ɵɵelement(5, "i", 32);
|
|
53
53
|
i0.ɵɵelementEnd();
|
|
54
54
|
} if (rf & 2) {
|
|
55
55
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
56
56
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.editingName);
|
|
57
57
|
} }
|
|
58
58
|
function MJListFormComponentExtended_For_31_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
59
|
-
i0.ɵɵelementStart(0, "span",
|
|
59
|
+
i0.ɵɵelementStart(0, "span", 35);
|
|
60
60
|
i0.ɵɵtext(1);
|
|
61
61
|
i0.ɵɵelementEnd();
|
|
62
62
|
} if (rf & 2) {
|
|
@@ -66,13 +66,13 @@ function MJListFormComponentExtended_For_31_Conditional_4_Template(rf, ctx) { if
|
|
|
66
66
|
} }
|
|
67
67
|
function MJListFormComponentExtended_For_31_Template(rf, ctx) { if (rf & 1) {
|
|
68
68
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
69
|
-
i0.ɵɵelementStart(0, "button",
|
|
69
|
+
i0.ɵɵelementStart(0, "button", 33);
|
|
70
70
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_For_31_Template_button_click_0_listener() { const nav_r5 = i0.ɵɵrestoreView(_r4).$implicit; const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setActiveSection(nav_r5.id)); });
|
|
71
71
|
i0.ɵɵelement(1, "i");
|
|
72
|
-
i0.ɵɵelementStart(2, "span",
|
|
72
|
+
i0.ɵɵelementStart(2, "span", 34);
|
|
73
73
|
i0.ɵɵtext(3);
|
|
74
74
|
i0.ɵɵelementEnd();
|
|
75
|
-
i0.ɵɵconditionalCreate(4, MJListFormComponentExtended_For_31_Conditional_4_Template, 2, 1, "span",
|
|
75
|
+
i0.ɵɵconditionalCreate(4, MJListFormComponentExtended_For_31_Conditional_4_Template, 2, 1, "span", 35);
|
|
76
76
|
i0.ɵɵelementEnd();
|
|
77
77
|
} if (rf & 2) {
|
|
78
78
|
const nav_r5 = ctx.$implicit;
|
|
@@ -88,13 +88,13 @@ function MJListFormComponentExtended_For_31_Template(rf, ctx) { if (rf & 1) {
|
|
|
88
88
|
} }
|
|
89
89
|
function MJListFormComponentExtended_Conditional_33_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
90
90
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
91
|
-
i0.ɵɵelementStart(0, "button",
|
|
91
|
+
i0.ɵɵelementStart(0, "button", 61);
|
|
92
92
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_33_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.startEditingDescription()); });
|
|
93
|
-
i0.ɵɵelement(1, "i",
|
|
93
|
+
i0.ɵɵelement(1, "i", 27);
|
|
94
94
|
i0.ɵɵelementEnd();
|
|
95
95
|
} }
|
|
96
96
|
function MJListFormComponentExtended_Conditional_33_Conditional_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
97
|
-
i0.ɵɵelementStart(0, "p",
|
|
97
|
+
i0.ɵɵelementStart(0, "p", 62);
|
|
98
98
|
i0.ɵɵtext(1);
|
|
99
99
|
i0.ɵɵelementEnd();
|
|
100
100
|
} if (rf & 2) {
|
|
@@ -103,13 +103,13 @@ function MJListFormComponentExtended_Conditional_33_Conditional_9_Conditional_0_
|
|
|
103
103
|
i0.ɵɵtextInterpolate(ctx_r1.record.Description);
|
|
104
104
|
} }
|
|
105
105
|
function MJListFormComponentExtended_Conditional_33_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
106
|
-
i0.ɵɵelementStart(0, "p",
|
|
106
|
+
i0.ɵɵelementStart(0, "p", 63);
|
|
107
107
|
i0.ɵɵtext(1, "No description provided");
|
|
108
108
|
i0.ɵɵelementEnd();
|
|
109
109
|
} }
|
|
110
110
|
function MJListFormComponentExtended_Conditional_33_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
111
|
-
i0.ɵɵconditionalCreate(0, MJListFormComponentExtended_Conditional_33_Conditional_9_Conditional_0_Template, 2, 1, "p",
|
|
112
|
-
i0.ɵɵconditionalCreate(1, MJListFormComponentExtended_Conditional_33_Conditional_9_Conditional_1_Template, 2, 0, "p",
|
|
111
|
+
i0.ɵɵconditionalCreate(0, MJListFormComponentExtended_Conditional_33_Conditional_9_Conditional_0_Template, 2, 1, "p", 62);
|
|
112
|
+
i0.ɵɵconditionalCreate(1, MJListFormComponentExtended_Conditional_33_Conditional_9_Conditional_1_Template, 2, 0, "p", 63);
|
|
113
113
|
} if (rf & 2) {
|
|
114
114
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
115
115
|
i0.ɵɵconditional(ctx_r1.record.Description ? 0 : -1);
|
|
@@ -118,15 +118,15 @@ function MJListFormComponentExtended_Conditional_33_Conditional_9_Template(rf, c
|
|
|
118
118
|
} }
|
|
119
119
|
function MJListFormComponentExtended_Conditional_33_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
120
120
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
121
|
-
i0.ɵɵelementStart(0, "textarea",
|
|
121
|
+
i0.ɵɵelementStart(0, "textarea", 64);
|
|
122
122
|
i0.ɵɵtwoWayListener("ngModelChange", function MJListFormComponentExtended_Conditional_33_Conditional_10_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.editingDescription, $event) || (ctx_r1.editingDescription = $event); return i0.ɵɵresetView($event); });
|
|
123
123
|
i0.ɵɵlistener("keydown.escape", function MJListFormComponentExtended_Conditional_33_Conditional_10_Template_textarea_keydown_escape_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.cancelDescriptionEdit()); });
|
|
124
124
|
i0.ɵɵelementEnd();
|
|
125
|
-
i0.ɵɵelementStart(1, "div",
|
|
125
|
+
i0.ɵɵelementStart(1, "div", 65)(2, "button", 66);
|
|
126
126
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_33_Conditional_10_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.saveDescriptionEdit()); });
|
|
127
127
|
i0.ɵɵtext(3, "Save");
|
|
128
128
|
i0.ɵɵelementEnd();
|
|
129
|
-
i0.ɵɵelementStart(4, "button",
|
|
129
|
+
i0.ɵɵelementStart(4, "button", 67);
|
|
130
130
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_33_Conditional_10_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.cancelDescriptionEdit()); });
|
|
131
131
|
i0.ɵɵtext(5, "Cancel");
|
|
132
132
|
i0.ɵɵelementEnd()();
|
|
@@ -135,8 +135,8 @@ function MJListFormComponentExtended_Conditional_33_Conditional_10_Template(rf,
|
|
|
135
135
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.editingDescription);
|
|
136
136
|
} }
|
|
137
137
|
function MJListFormComponentExtended_Conditional_33_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
138
|
-
i0.ɵɵelementStart(0, "span",
|
|
139
|
-
i0.ɵɵelement(1, "i",
|
|
138
|
+
i0.ɵɵelementStart(0, "span", 46);
|
|
139
|
+
i0.ɵɵelement(1, "i", 68);
|
|
140
140
|
i0.ɵɵtext(2);
|
|
141
141
|
i0.ɵɵelementEnd();
|
|
142
142
|
} if (rf & 2) {
|
|
@@ -145,7 +145,7 @@ function MJListFormComponentExtended_Conditional_33_Conditional_26_Template(rf,
|
|
|
145
145
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.categoryName, " ");
|
|
146
146
|
} }
|
|
147
147
|
function MJListFormComponentExtended_Conditional_33_Conditional_27_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
148
|
-
i0.ɵɵelementStart(0, "option",
|
|
148
|
+
i0.ɵɵelementStart(0, "option", 70);
|
|
149
149
|
i0.ɵɵtext(1);
|
|
150
150
|
i0.ɵɵelementEnd();
|
|
151
151
|
} if (rf & 2) {
|
|
@@ -156,12 +156,12 @@ function MJListFormComponentExtended_Conditional_33_Conditional_27_For_4_Templat
|
|
|
156
156
|
} }
|
|
157
157
|
function MJListFormComponentExtended_Conditional_33_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
158
158
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
159
|
-
i0.ɵɵelementStart(0, "select",
|
|
159
|
+
i0.ɵɵelementStart(0, "select", 69);
|
|
160
160
|
i0.ɵɵlistener("ngModelChange", function MJListFormComponentExtended_Conditional_33_Conditional_27_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onCategoryChange($event)); });
|
|
161
|
-
i0.ɵɵelementStart(1, "option",
|
|
161
|
+
i0.ɵɵelementStart(1, "option", 70);
|
|
162
162
|
i0.ɵɵtext(2, "Uncategorized");
|
|
163
163
|
i0.ɵɵelementEnd();
|
|
164
|
-
i0.ɵɵrepeaterCreate(3, MJListFormComponentExtended_Conditional_33_Conditional_27_For_4_Template, 2, 2, "option",
|
|
164
|
+
i0.ɵɵrepeaterCreate(3, MJListFormComponentExtended_Conditional_33_Conditional_27_For_4_Template, 2, 2, "option", 70, i0.ɵɵrepeaterTrackByIdentity);
|
|
165
165
|
i0.ɵɵelementEnd();
|
|
166
166
|
} if (rf & 2) {
|
|
167
167
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -172,12 +172,12 @@ function MJListFormComponentExtended_Conditional_33_Conditional_27_Template(rf,
|
|
|
172
172
|
i0.ɵɵrepeater(ctx_r1.categories);
|
|
173
173
|
} }
|
|
174
174
|
function MJListFormComponentExtended_Conditional_33_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
175
|
-
i0.ɵɵelementStart(0, "span",
|
|
175
|
+
i0.ɵɵelementStart(0, "span", 50);
|
|
176
176
|
i0.ɵɵtext(1, "You");
|
|
177
177
|
i0.ɵɵelementEnd();
|
|
178
178
|
} }
|
|
179
179
|
function MJListFormComponentExtended_Conditional_33_Conditional_54_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
180
|
-
i0.ɵɵelementStart(0, "span",
|
|
180
|
+
i0.ɵɵelementStart(0, "span", 56);
|
|
181
181
|
i0.ɵɵtext(1);
|
|
182
182
|
i0.ɵɵelementEnd();
|
|
183
183
|
} if (rf & 2) {
|
|
@@ -187,13 +187,13 @@ function MJListFormComponentExtended_Conditional_33_Conditional_54_Conditional_4
|
|
|
187
187
|
} }
|
|
188
188
|
function MJListFormComponentExtended_Conditional_33_Conditional_54_Template(rf, ctx) { if (rf & 1) {
|
|
189
189
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
190
|
-
i0.ɵɵelementStart(0, "button",
|
|
190
|
+
i0.ɵɵelementStart(0, "button", 54);
|
|
191
191
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_33_Conditional_54_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openShareDialog()); });
|
|
192
|
-
i0.ɵɵelement(1, "i",
|
|
192
|
+
i0.ɵɵelement(1, "i", 71);
|
|
193
193
|
i0.ɵɵelementStart(2, "span");
|
|
194
194
|
i0.ɵɵtext(3, "Share List");
|
|
195
195
|
i0.ɵɵelementEnd();
|
|
196
|
-
i0.ɵɵconditionalCreate(4, MJListFormComponentExtended_Conditional_33_Conditional_54_Conditional_4_Template, 2, 1, "span",
|
|
196
|
+
i0.ɵɵconditionalCreate(4, MJListFormComponentExtended_Conditional_33_Conditional_54_Conditional_4_Template, 2, 1, "span", 56);
|
|
197
197
|
i0.ɵɵelementEnd();
|
|
198
198
|
} if (rf & 2) {
|
|
199
199
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -202,79 +202,79 @@ function MJListFormComponentExtended_Conditional_33_Conditional_54_Template(rf,
|
|
|
202
202
|
} }
|
|
203
203
|
function MJListFormComponentExtended_Conditional_33_Conditional_55_Template(rf, ctx) { if (rf & 1) {
|
|
204
204
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
205
|
-
i0.ɵɵelementStart(0, "button",
|
|
205
|
+
i0.ɵɵelementStart(0, "button", 54);
|
|
206
206
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_33_Conditional_55_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setActiveSection("sharing")); });
|
|
207
|
-
i0.ɵɵelement(1, "i",
|
|
207
|
+
i0.ɵɵelement(1, "i", 71);
|
|
208
208
|
i0.ɵɵelementStart(2, "span");
|
|
209
209
|
i0.ɵɵtext(3, "View Sharing");
|
|
210
210
|
i0.ɵɵelementEnd()();
|
|
211
211
|
} }
|
|
212
212
|
function MJListFormComponentExtended_Conditional_33_Template(rf, ctx) { if (rf & 1) {
|
|
213
213
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
214
|
-
i0.ɵɵelementStart(0, "section", 15)(1, "div",
|
|
215
|
-
i0.ɵɵelement(5, "i",
|
|
214
|
+
i0.ɵɵelementStart(0, "section", 15)(1, "div", 36)(2, "div", 37)(3, "div", 38)(4, "h3");
|
|
215
|
+
i0.ɵɵelement(5, "i", 39);
|
|
216
216
|
i0.ɵɵtext(6, " Description");
|
|
217
217
|
i0.ɵɵelementEnd();
|
|
218
|
-
i0.ɵɵconditionalCreate(7, MJListFormComponentExtended_Conditional_33_Conditional_7_Template, 2, 0, "button",
|
|
218
|
+
i0.ɵɵconditionalCreate(7, MJListFormComponentExtended_Conditional_33_Conditional_7_Template, 2, 0, "button", 40);
|
|
219
219
|
i0.ɵɵelementEnd();
|
|
220
|
-
i0.ɵɵelementStart(8, "div",
|
|
220
|
+
i0.ɵɵelementStart(8, "div", 41);
|
|
221
221
|
i0.ɵɵconditionalCreate(9, MJListFormComponentExtended_Conditional_33_Conditional_9_Template, 2, 2);
|
|
222
222
|
i0.ɵɵconditionalCreate(10, MJListFormComponentExtended_Conditional_33_Conditional_10_Template, 6, 1);
|
|
223
223
|
i0.ɵɵelementEnd()();
|
|
224
|
-
i0.ɵɵelementStart(11, "div",
|
|
225
|
-
i0.ɵɵelement(14, "i",
|
|
224
|
+
i0.ɵɵelementStart(11, "div", 42)(12, "div", 38)(13, "h3");
|
|
225
|
+
i0.ɵɵelement(14, "i", 43);
|
|
226
226
|
i0.ɵɵtext(15, " Details");
|
|
227
227
|
i0.ɵɵelementEnd()();
|
|
228
|
-
i0.ɵɵelementStart(16, "div",
|
|
228
|
+
i0.ɵɵelementStart(16, "div", 41)(17, "div", 44)(18, "span", 45);
|
|
229
229
|
i0.ɵɵtext(19, "Entity");
|
|
230
230
|
i0.ɵɵelementEnd();
|
|
231
|
-
i0.ɵɵelementStart(20, "span",
|
|
232
|
-
i0.ɵɵelement(21, "i",
|
|
231
|
+
i0.ɵɵelementStart(20, "span", 46);
|
|
232
|
+
i0.ɵɵelement(21, "i", 47);
|
|
233
233
|
i0.ɵɵtext(22);
|
|
234
234
|
i0.ɵɵelementEnd()();
|
|
235
|
-
i0.ɵɵelementStart(23, "div",
|
|
235
|
+
i0.ɵɵelementStart(23, "div", 44)(24, "span", 45);
|
|
236
236
|
i0.ɵɵtext(25, "Category");
|
|
237
237
|
i0.ɵɵelementEnd();
|
|
238
|
-
i0.ɵɵconditionalCreate(26, MJListFormComponentExtended_Conditional_33_Conditional_26_Template, 3, 1, "span",
|
|
239
|
-
i0.ɵɵconditionalCreate(27, MJListFormComponentExtended_Conditional_33_Conditional_27_Template, 5, 2, "select",
|
|
238
|
+
i0.ɵɵconditionalCreate(26, MJListFormComponentExtended_Conditional_33_Conditional_26_Template, 3, 1, "span", 46);
|
|
239
|
+
i0.ɵɵconditionalCreate(27, MJListFormComponentExtended_Conditional_33_Conditional_27_Template, 5, 2, "select", 48);
|
|
240
240
|
i0.ɵɵelementEnd();
|
|
241
|
-
i0.ɵɵelementStart(28, "div",
|
|
241
|
+
i0.ɵɵelementStart(28, "div", 44)(29, "span", 45);
|
|
242
242
|
i0.ɵɵtext(30, "Owner");
|
|
243
243
|
i0.ɵɵelementEnd();
|
|
244
|
-
i0.ɵɵelementStart(31, "span",
|
|
245
|
-
i0.ɵɵelement(32, "i",
|
|
244
|
+
i0.ɵɵelementStart(31, "span", 46);
|
|
245
|
+
i0.ɵɵelement(32, "i", 49);
|
|
246
246
|
i0.ɵɵtext(33);
|
|
247
|
-
i0.ɵɵconditionalCreate(34, MJListFormComponentExtended_Conditional_33_Conditional_34_Template, 2, 0, "span",
|
|
247
|
+
i0.ɵɵconditionalCreate(34, MJListFormComponentExtended_Conditional_33_Conditional_34_Template, 2, 0, "span", 50);
|
|
248
248
|
i0.ɵɵelementEnd()();
|
|
249
|
-
i0.ɵɵelementStart(35, "div",
|
|
249
|
+
i0.ɵɵelementStart(35, "div", 44)(36, "span", 45);
|
|
250
250
|
i0.ɵɵtext(37, "Created");
|
|
251
251
|
i0.ɵɵelementEnd();
|
|
252
|
-
i0.ɵɵelementStart(38, "span",
|
|
253
|
-
i0.ɵɵelement(39, "i",
|
|
252
|
+
i0.ɵɵelementStart(38, "span", 46);
|
|
253
|
+
i0.ɵɵelement(39, "i", 51);
|
|
254
254
|
i0.ɵɵtext(40);
|
|
255
255
|
i0.ɵɵpipe(41, "date");
|
|
256
256
|
i0.ɵɵelementEnd()()()();
|
|
257
|
-
i0.ɵɵelementStart(42, "div",
|
|
258
|
-
i0.ɵɵelement(45, "i",
|
|
257
|
+
i0.ɵɵelementStart(42, "div", 52)(43, "div", 38)(44, "h3");
|
|
258
|
+
i0.ɵɵelement(45, "i", 53);
|
|
259
259
|
i0.ɵɵtext(46, " Quick Actions");
|
|
260
260
|
i0.ɵɵelementEnd()();
|
|
261
|
-
i0.ɵɵelementStart(47, "div",
|
|
261
|
+
i0.ɵɵelementStart(47, "div", 41)(48, "button", 54);
|
|
262
262
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_33_Template_button_click_48_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setActiveSection("items")); });
|
|
263
|
-
i0.ɵɵelement(49, "i",
|
|
263
|
+
i0.ɵɵelement(49, "i", 55);
|
|
264
264
|
i0.ɵɵelementStart(50, "span");
|
|
265
265
|
i0.ɵɵtext(51, "View Items");
|
|
266
266
|
i0.ɵɵelementEnd();
|
|
267
|
-
i0.ɵɵelementStart(52, "span",
|
|
267
|
+
i0.ɵɵelementStart(52, "span", 56);
|
|
268
268
|
i0.ɵɵtext(53);
|
|
269
269
|
i0.ɵɵelementEnd()();
|
|
270
|
-
i0.ɵɵconditionalCreate(54, MJListFormComponentExtended_Conditional_33_Conditional_54_Template, 5, 1, "button",
|
|
271
|
-
i0.ɵɵconditionalCreate(55, MJListFormComponentExtended_Conditional_33_Conditional_55_Template, 4, 0, "button",
|
|
272
|
-
i0.ɵɵelementStart(56, "button",
|
|
273
|
-
i0.ɵɵelement(57, "i",
|
|
270
|
+
i0.ɵɵconditionalCreate(54, MJListFormComponentExtended_Conditional_33_Conditional_54_Template, 5, 1, "button", 57);
|
|
271
|
+
i0.ɵɵconditionalCreate(55, MJListFormComponentExtended_Conditional_33_Conditional_55_Template, 4, 0, "button", 57);
|
|
272
|
+
i0.ɵɵelementStart(56, "button", 58);
|
|
273
|
+
i0.ɵɵelement(57, "i", 59);
|
|
274
274
|
i0.ɵɵelementStart(58, "span");
|
|
275
275
|
i0.ɵɵtext(59, "Export Data");
|
|
276
276
|
i0.ɵɵelementEnd();
|
|
277
|
-
i0.ɵɵelementStart(60, "span",
|
|
277
|
+
i0.ɵɵelementStart(60, "span", 60);
|
|
278
278
|
i0.ɵɵtext(61, "Soon");
|
|
279
279
|
i0.ɵɵelementEnd()()()()()();
|
|
280
280
|
} if (rf & 2) {
|
|
@@ -310,25 +310,25 @@ function MJListFormComponentExtended_Conditional_33_Template(rf, ctx) { if (rf &
|
|
|
310
310
|
} }
|
|
311
311
|
function MJListFormComponentExtended_Conditional_34_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
312
312
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
313
|
-
i0.ɵɵelementStart(0, "div",
|
|
313
|
+
i0.ɵɵelementStart(0, "div", 77)(1, "button", 83);
|
|
314
314
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_34_Conditional_8_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openAddRecordsDialog()); });
|
|
315
|
-
i0.ɵɵelement(2, "i",
|
|
315
|
+
i0.ɵɵelement(2, "i", 84);
|
|
316
316
|
i0.ɵɵtext(3, " Add Records ");
|
|
317
317
|
i0.ɵɵelementEnd();
|
|
318
|
-
i0.ɵɵelementStart(4, "button",
|
|
318
|
+
i0.ɵɵelementStart(4, "button", 85);
|
|
319
319
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_34_Conditional_8_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openAddFromViewDialog()); });
|
|
320
|
-
i0.ɵɵelement(5, "i",
|
|
320
|
+
i0.ɵɵelement(5, "i", 86);
|
|
321
321
|
i0.ɵɵtext(6, " Add From View ");
|
|
322
322
|
i0.ɵɵelementEnd()();
|
|
323
323
|
} }
|
|
324
324
|
function MJListFormComponentExtended_Conditional_34_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
325
|
-
i0.ɵɵelementStart(0, "div",
|
|
326
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
325
|
+
i0.ɵɵelementStart(0, "div", 80);
|
|
326
|
+
i0.ɵɵelement(1, "mj-loading", 87);
|
|
327
327
|
i0.ɵɵelementEnd();
|
|
328
328
|
} }
|
|
329
329
|
function MJListFormComponentExtended_Conditional_34_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
330
|
-
i0.ɵɵelementStart(0, "div",
|
|
331
|
-
i0.ɵɵelement(2, "i",
|
|
330
|
+
i0.ɵɵelementStart(0, "div", 81)(1, "div", 88);
|
|
331
|
+
i0.ɵɵelement(2, "i", 89);
|
|
332
332
|
i0.ɵɵelementEnd();
|
|
333
333
|
i0.ɵɵelementStart(3, "h3");
|
|
334
334
|
i0.ɵɵtext(4, "No Items Yet");
|
|
@@ -343,12 +343,12 @@ function MJListFormComponentExtended_Conditional_34_Conditional_12_Template(rf,
|
|
|
343
343
|
} }
|
|
344
344
|
function MJListFormComponentExtended_Conditional_34_Conditional_13_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
345
345
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
346
|
-
i0.ɵɵelementStart(0, "div",
|
|
346
|
+
i0.ɵɵelementStart(0, "div", 90)(1, "span", 101);
|
|
347
347
|
i0.ɵɵtext(2);
|
|
348
348
|
i0.ɵɵelementEnd();
|
|
349
|
-
i0.ɵɵelementStart(3, "button",
|
|
349
|
+
i0.ɵɵelementStart(3, "button", 102);
|
|
350
350
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_34_Conditional_13_Conditional_1_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.removeSelectedItems()); });
|
|
351
|
-
i0.ɵɵelement(4, "i",
|
|
351
|
+
i0.ɵɵelement(4, "i", 103);
|
|
352
352
|
i0.ɵɵtext(5, " Remove from List ");
|
|
353
353
|
i0.ɵɵelementEnd()();
|
|
354
354
|
} if (rf & 2) {
|
|
@@ -357,30 +357,30 @@ function MJListFormComponentExtended_Conditional_34_Conditional_13_Conditional_1
|
|
|
357
357
|
i0.ɵɵtextInterpolate1("", ctx_r1.selectedItems.size, " selected");
|
|
358
358
|
} }
|
|
359
359
|
function MJListFormComponentExtended_Conditional_34_Conditional_13_For_16_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
360
|
-
i0.ɵɵelement(0, "i",
|
|
360
|
+
i0.ɵɵelement(0, "i", 106);
|
|
361
361
|
} }
|
|
362
362
|
function MJListFormComponentExtended_Conditional_34_Conditional_13_For_16_Template(rf, ctx) { if (rf & 1) {
|
|
363
363
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
364
|
-
i0.ɵɵelementStart(0, "tr")(1, "td",
|
|
364
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 92)(2, "input", 93);
|
|
365
365
|
i0.ɵɵlistener("change", function MJListFormComponentExtended_Conditional_34_Conditional_13_For_16_Template_input_change_2_listener() { const item_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleItemSelection(item_r18)); });
|
|
366
366
|
i0.ɵɵelementEnd()();
|
|
367
|
-
i0.ɵɵelementStart(3, "td",
|
|
368
|
-
i0.ɵɵelement(5, "i",
|
|
367
|
+
i0.ɵɵelementStart(3, "td", 94)(4, "div", 104);
|
|
368
|
+
i0.ɵɵelement(5, "i", 105);
|
|
369
369
|
i0.ɵɵelementStart(6, "span");
|
|
370
370
|
i0.ɵɵtext(7);
|
|
371
371
|
i0.ɵɵelementEnd();
|
|
372
|
-
i0.ɵɵconditionalCreate(8, MJListFormComponentExtended_Conditional_34_Conditional_13_For_16_Conditional_8_Template, 1, 0, "i",
|
|
372
|
+
i0.ɵɵconditionalCreate(8, MJListFormComponentExtended_Conditional_34_Conditional_13_For_16_Conditional_8_Template, 1, 0, "i", 106);
|
|
373
373
|
i0.ɵɵelementEnd()();
|
|
374
|
-
i0.ɵɵelementStart(9, "td",
|
|
374
|
+
i0.ɵɵelementStart(9, "td", 95)(10, "code", 107);
|
|
375
375
|
i0.ɵɵtext(11);
|
|
376
376
|
i0.ɵɵelementEnd()();
|
|
377
|
-
i0.ɵɵelementStart(12, "td",
|
|
377
|
+
i0.ɵɵelementStart(12, "td", 96);
|
|
378
378
|
i0.ɵɵtext(13);
|
|
379
379
|
i0.ɵɵpipe(14, "date");
|
|
380
380
|
i0.ɵɵelementEnd();
|
|
381
|
-
i0.ɵɵelementStart(15, "td",
|
|
381
|
+
i0.ɵɵelementStart(15, "td", 97)(16, "button", 108);
|
|
382
382
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_34_Conditional_13_For_16_Template_button_click_16_listener() { const item_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openRecord(item_r18)); });
|
|
383
|
-
i0.ɵɵelement(17, "i",
|
|
383
|
+
i0.ɵɵelement(17, "i", 109);
|
|
384
384
|
i0.ɵɵelementEnd()()();
|
|
385
385
|
} if (rf & 2) {
|
|
386
386
|
const item_r18 = ctx.$implicit;
|
|
@@ -403,26 +403,26 @@ function MJListFormComponentExtended_Conditional_34_Conditional_13_For_16_Templa
|
|
|
403
403
|
} }
|
|
404
404
|
function MJListFormComponentExtended_Conditional_34_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
405
405
|
const _r15 = i0.ɵɵgetCurrentView();
|
|
406
|
-
i0.ɵɵelementStart(0, "div",
|
|
407
|
-
i0.ɵɵconditionalCreate(1, MJListFormComponentExtended_Conditional_34_Conditional_13_Conditional_1_Template, 6, 1, "div",
|
|
408
|
-
i0.ɵɵelementStart(2, "table",
|
|
406
|
+
i0.ɵɵelementStart(0, "div", 82);
|
|
407
|
+
i0.ɵɵconditionalCreate(1, MJListFormComponentExtended_Conditional_34_Conditional_13_Conditional_1_Template, 6, 1, "div", 90);
|
|
408
|
+
i0.ɵɵelementStart(2, "table", 91)(3, "thead")(4, "tr")(5, "th", 92)(6, "input", 93);
|
|
409
409
|
i0.ɵɵlistener("change", function MJListFormComponentExtended_Conditional_34_Conditional_13_Template_input_change_6_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleSelectAll()); });
|
|
410
410
|
i0.ɵɵelementEnd()();
|
|
411
|
-
i0.ɵɵelementStart(7, "th",
|
|
411
|
+
i0.ɵɵelementStart(7, "th", 94);
|
|
412
412
|
i0.ɵɵtext(8, "Name");
|
|
413
413
|
i0.ɵɵelementEnd();
|
|
414
|
-
i0.ɵɵelementStart(9, "th",
|
|
414
|
+
i0.ɵɵelementStart(9, "th", 95);
|
|
415
415
|
i0.ɵɵtext(10, "Record ID");
|
|
416
416
|
i0.ɵɵelementEnd();
|
|
417
|
-
i0.ɵɵelementStart(11, "th",
|
|
417
|
+
i0.ɵɵelementStart(11, "th", 96);
|
|
418
418
|
i0.ɵɵtext(12, "Added");
|
|
419
419
|
i0.ɵɵelementEnd();
|
|
420
|
-
i0.ɵɵelement(13, "th",
|
|
420
|
+
i0.ɵɵelement(13, "th", 97);
|
|
421
421
|
i0.ɵɵelementEnd()();
|
|
422
422
|
i0.ɵɵelementStart(14, "tbody");
|
|
423
|
-
i0.ɵɵrepeaterCreate(15, MJListFormComponentExtended_Conditional_34_Conditional_13_For_16_Template, 18, 14, "tr",
|
|
423
|
+
i0.ɵɵrepeaterCreate(15, MJListFormComponentExtended_Conditional_34_Conditional_13_For_16_Template, 18, 14, "tr", 98, i0.ɵɵrepeaterTrackByIdentity);
|
|
424
424
|
i0.ɵɵelementEnd()();
|
|
425
|
-
i0.ɵɵelementStart(17, "div",
|
|
425
|
+
i0.ɵɵelementStart(17, "div", 99)(18, "span", 100);
|
|
426
426
|
i0.ɵɵtext(19);
|
|
427
427
|
i0.ɵɵelementEnd()()();
|
|
428
428
|
} if (rf & 2) {
|
|
@@ -438,22 +438,22 @@ function MJListFormComponentExtended_Conditional_34_Conditional_13_Template(rf,
|
|
|
438
438
|
} }
|
|
439
439
|
function MJListFormComponentExtended_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
440
440
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
441
|
-
i0.ɵɵelementStart(0, "section", 16)(1, "div",
|
|
441
|
+
i0.ɵɵelementStart(0, "section", 16)(1, "div", 72)(2, "h2");
|
|
442
442
|
i0.ɵɵtext(3, "List Items");
|
|
443
443
|
i0.ɵɵelementEnd();
|
|
444
|
-
i0.ɵɵelementStart(4, "div",
|
|
445
|
-
i0.ɵɵelement(6, "i",
|
|
446
|
-
i0.ɵɵelementStart(7, "input",
|
|
444
|
+
i0.ɵɵelementStart(4, "div", 73)(5, "div", 74);
|
|
445
|
+
i0.ɵɵelement(6, "i", 75);
|
|
446
|
+
i0.ɵɵelementStart(7, "input", 76);
|
|
447
447
|
i0.ɵɵtwoWayListener("ngModelChange", function MJListFormComponentExtended_Conditional_34_Template_input_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.itemSearchTerm, $event) || (ctx_r1.itemSearchTerm = $event); return i0.ɵɵresetView($event); });
|
|
448
448
|
i0.ɵɵelementEnd()();
|
|
449
|
-
i0.ɵɵconditionalCreate(8, MJListFormComponentExtended_Conditional_34_Conditional_8_Template, 7, 0, "div",
|
|
450
|
-
i0.ɵɵelementStart(9, "button",
|
|
449
|
+
i0.ɵɵconditionalCreate(8, MJListFormComponentExtended_Conditional_34_Conditional_8_Template, 7, 0, "div", 77);
|
|
450
|
+
i0.ɵɵelementStart(9, "button", 78);
|
|
451
451
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_34_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshItems()); });
|
|
452
|
-
i0.ɵɵelement(10, "i",
|
|
452
|
+
i0.ɵɵelement(10, "i", 79);
|
|
453
453
|
i0.ɵɵelementEnd()()();
|
|
454
|
-
i0.ɵɵconditionalCreate(11, MJListFormComponentExtended_Conditional_34_Conditional_11_Template, 2, 0, "div",
|
|
455
|
-
i0.ɵɵconditionalCreate(12, MJListFormComponentExtended_Conditional_34_Conditional_12_Template, 7, 1, "div",
|
|
456
|
-
i0.ɵɵconditionalCreate(13, MJListFormComponentExtended_Conditional_34_Conditional_13_Template, 20, 4, "div",
|
|
454
|
+
i0.ɵɵconditionalCreate(11, MJListFormComponentExtended_Conditional_34_Conditional_11_Template, 2, 0, "div", 80);
|
|
455
|
+
i0.ɵɵconditionalCreate(12, MJListFormComponentExtended_Conditional_34_Conditional_12_Template, 7, 1, "div", 81);
|
|
456
|
+
i0.ɵɵconditionalCreate(13, MJListFormComponentExtended_Conditional_34_Conditional_13_Template, 20, 4, "div", 82);
|
|
457
457
|
i0.ɵɵelementEnd();
|
|
458
458
|
} if (rf & 2) {
|
|
459
459
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -470,20 +470,20 @@ function MJListFormComponentExtended_Conditional_34_Template(rf, ctx) { if (rf &
|
|
|
470
470
|
} }
|
|
471
471
|
function MJListFormComponentExtended_Conditional_35_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
472
472
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
473
|
-
i0.ɵɵelementStart(0, "div",
|
|
473
|
+
i0.ɵɵelementStart(0, "div", 73)(1, "button", 66);
|
|
474
474
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_35_Conditional_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openShareDialog()); });
|
|
475
|
-
i0.ɵɵelement(2, "i",
|
|
475
|
+
i0.ɵɵelement(2, "i", 112);
|
|
476
476
|
i0.ɵɵtext(3, " Manage Sharing ");
|
|
477
477
|
i0.ɵɵelementEnd()();
|
|
478
478
|
} }
|
|
479
479
|
function MJListFormComponentExtended_Conditional_35_Conditional_5_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
480
|
-
i0.ɵɵelementStart(0, "div",
|
|
481
|
-
i0.ɵɵelement(2, "i",
|
|
480
|
+
i0.ɵɵelementStart(0, "div", 113)(1, "div", 119);
|
|
481
|
+
i0.ɵɵelement(2, "i", 120);
|
|
482
482
|
i0.ɵɵelementEnd();
|
|
483
|
-
i0.ɵɵelementStart(3, "div",
|
|
483
|
+
i0.ɵɵelementStart(3, "div", 116)(4, "span", 117);
|
|
484
484
|
i0.ɵɵtext(5);
|
|
485
485
|
i0.ɵɵelementEnd();
|
|
486
|
-
i0.ɵɵelementStart(6, "span",
|
|
486
|
+
i0.ɵɵelementStart(6, "span", 118);
|
|
487
487
|
i0.ɵɵtext(7);
|
|
488
488
|
i0.ɵɵelementEnd()()();
|
|
489
489
|
} if (rf & 2) {
|
|
@@ -494,16 +494,16 @@ function MJListFormComponentExtended_Conditional_35_Conditional_5_Conditional_9_
|
|
|
494
494
|
i0.ɵɵtextInterpolate1("Pending Invitation", ctx_r1.stats.invitationCount !== 1 ? "s" : "");
|
|
495
495
|
} }
|
|
496
496
|
function MJListFormComponentExtended_Conditional_35_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
497
|
-
i0.ɵɵelementStart(0, "div",
|
|
498
|
-
i0.ɵɵelement(3, "i",
|
|
497
|
+
i0.ɵɵelementStart(0, "div", 110)(1, "div", 113)(2, "div", 114);
|
|
498
|
+
i0.ɵɵelement(3, "i", 115);
|
|
499
499
|
i0.ɵɵelementEnd();
|
|
500
|
-
i0.ɵɵelementStart(4, "div",
|
|
500
|
+
i0.ɵɵelementStart(4, "div", 116)(5, "span", 117);
|
|
501
501
|
i0.ɵɵtext(6);
|
|
502
502
|
i0.ɵɵelementEnd();
|
|
503
|
-
i0.ɵɵelementStart(7, "span",
|
|
503
|
+
i0.ɵɵelementStart(7, "span", 118);
|
|
504
504
|
i0.ɵɵtext(8);
|
|
505
505
|
i0.ɵɵelementEnd()()();
|
|
506
|
-
i0.ɵɵconditionalCreate(9, MJListFormComponentExtended_Conditional_35_Conditional_5_Conditional_9_Template, 8, 2, "div",
|
|
506
|
+
i0.ɵɵconditionalCreate(9, MJListFormComponentExtended_Conditional_35_Conditional_5_Conditional_9_Template, 8, 2, "div", 113);
|
|
507
507
|
i0.ɵɵelementEnd();
|
|
508
508
|
} if (rf & 2) {
|
|
509
509
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -526,22 +526,22 @@ function MJListFormComponentExtended_Conditional_35_Conditional_6_Conditional_6_
|
|
|
526
526
|
} }
|
|
527
527
|
function MJListFormComponentExtended_Conditional_35_Conditional_6_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
528
528
|
const _r20 = i0.ɵɵgetCurrentView();
|
|
529
|
-
i0.ɵɵelementStart(0, "button",
|
|
529
|
+
i0.ɵɵelementStart(0, "button", 66);
|
|
530
530
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_35_Conditional_6_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openShareDialog()); });
|
|
531
|
-
i0.ɵɵelement(1, "i",
|
|
531
|
+
i0.ɵɵelement(1, "i", 112);
|
|
532
532
|
i0.ɵɵtext(2, " Share This List ");
|
|
533
533
|
i0.ɵɵelementEnd();
|
|
534
534
|
} }
|
|
535
535
|
function MJListFormComponentExtended_Conditional_35_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
536
|
-
i0.ɵɵelementStart(0, "div",
|
|
537
|
-
i0.ɵɵelement(2, "i",
|
|
536
|
+
i0.ɵɵelementStart(0, "div", 81)(1, "div", 88);
|
|
537
|
+
i0.ɵɵelement(2, "i", 71);
|
|
538
538
|
i0.ɵɵelementEnd();
|
|
539
539
|
i0.ɵɵelementStart(3, "h3");
|
|
540
540
|
i0.ɵɵtext(4, "Not Shared Yet");
|
|
541
541
|
i0.ɵɵelementEnd();
|
|
542
542
|
i0.ɵɵconditionalCreate(5, MJListFormComponentExtended_Conditional_35_Conditional_6_Conditional_5_Template, 2, 0, "p");
|
|
543
543
|
i0.ɵɵconditionalCreate(6, MJListFormComponentExtended_Conditional_35_Conditional_6_Conditional_6_Template, 2, 0, "p");
|
|
544
|
-
i0.ɵɵconditionalCreate(7, MJListFormComponentExtended_Conditional_35_Conditional_6_Conditional_7_Template, 3, 0, "button",
|
|
544
|
+
i0.ɵɵconditionalCreate(7, MJListFormComponentExtended_Conditional_35_Conditional_6_Conditional_7_Template, 3, 0, "button", 121);
|
|
545
545
|
i0.ɵɵelementEnd();
|
|
546
546
|
} if (rf & 2) {
|
|
547
547
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -553,21 +553,21 @@ function MJListFormComponentExtended_Conditional_35_Conditional_6_Template(rf, c
|
|
|
553
553
|
i0.ɵɵconditional(ctx_r1.isCurrentUserOwner() ? 7 : -1);
|
|
554
554
|
} }
|
|
555
555
|
function MJListFormComponentExtended_Conditional_35_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
556
|
-
i0.ɵɵelementStart(0, "div",
|
|
557
|
-
i0.ɵɵelement(1, "i",
|
|
556
|
+
i0.ɵɵelementStart(0, "div", 111);
|
|
557
|
+
i0.ɵɵelement(1, "i", 43);
|
|
558
558
|
i0.ɵɵelementStart(2, "span");
|
|
559
559
|
i0.ɵɵtext(3, "Only the list owner can manage sharing settings.");
|
|
560
560
|
i0.ɵɵelementEnd()();
|
|
561
561
|
} }
|
|
562
562
|
function MJListFormComponentExtended_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
563
|
-
i0.ɵɵelementStart(0, "section", 17)(1, "div",
|
|
563
|
+
i0.ɵɵelementStart(0, "section", 17)(1, "div", 72)(2, "h2");
|
|
564
564
|
i0.ɵɵtext(3, "Sharing");
|
|
565
565
|
i0.ɵɵelementEnd();
|
|
566
|
-
i0.ɵɵconditionalCreate(4, MJListFormComponentExtended_Conditional_35_Conditional_4_Template, 4, 0, "div",
|
|
566
|
+
i0.ɵɵconditionalCreate(4, MJListFormComponentExtended_Conditional_35_Conditional_4_Template, 4, 0, "div", 73);
|
|
567
567
|
i0.ɵɵelementEnd();
|
|
568
|
-
i0.ɵɵconditionalCreate(5, MJListFormComponentExtended_Conditional_35_Conditional_5_Template, 10, 3, "div",
|
|
569
|
-
i0.ɵɵconditionalCreate(6, MJListFormComponentExtended_Conditional_35_Conditional_6_Template, 8, 3, "div",
|
|
570
|
-
i0.ɵɵconditionalCreate(7, MJListFormComponentExtended_Conditional_35_Conditional_7_Template, 4, 0, "div",
|
|
568
|
+
i0.ɵɵconditionalCreate(5, MJListFormComponentExtended_Conditional_35_Conditional_5_Template, 10, 3, "div", 110);
|
|
569
|
+
i0.ɵɵconditionalCreate(6, MJListFormComponentExtended_Conditional_35_Conditional_6_Template, 8, 3, "div", 81);
|
|
570
|
+
i0.ɵɵconditionalCreate(7, MJListFormComponentExtended_Conditional_35_Conditional_7_Template, 4, 0, "div", 111);
|
|
571
571
|
i0.ɵɵelementEnd();
|
|
572
572
|
} if (rf & 2) {
|
|
573
573
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -581,30 +581,30 @@ function MJListFormComponentExtended_Conditional_35_Template(rf, ctx) { if (rf &
|
|
|
581
581
|
i0.ɵɵconditional(!ctx_r1.isCurrentUserOwner() && (ctx_r1.stats.shareCount > 0 || ctx_r1.stats.invitationCount > 0) ? 7 : -1);
|
|
582
582
|
} }
|
|
583
583
|
function MJListFormComponentExtended_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
584
|
-
i0.ɵɵelementStart(0, "section", 18)(1, "div",
|
|
584
|
+
i0.ɵɵelementStart(0, "section", 18)(1, "div", 72)(2, "h2");
|
|
585
585
|
i0.ɵɵtext(3, "Activity");
|
|
586
586
|
i0.ɵɵelementEnd()();
|
|
587
|
-
i0.ɵɵelementStart(4, "div",
|
|
588
|
-
i0.ɵɵelement(7, "i",
|
|
587
|
+
i0.ɵɵelementStart(4, "div", 122)(5, "div", 123)(6, "div", 124);
|
|
588
|
+
i0.ɵɵelement(7, "i", 125);
|
|
589
589
|
i0.ɵɵelementEnd();
|
|
590
|
-
i0.ɵɵelementStart(8, "div",
|
|
590
|
+
i0.ɵɵelementStart(8, "div", 126)(9, "p", 127);
|
|
591
591
|
i0.ɵɵtext(10, "List updated");
|
|
592
592
|
i0.ɵɵelementEnd();
|
|
593
|
-
i0.ɵɵelementStart(11, "span",
|
|
593
|
+
i0.ɵɵelementStart(11, "span", 128);
|
|
594
594
|
i0.ɵɵtext(12);
|
|
595
595
|
i0.ɵɵpipe(13, "date");
|
|
596
596
|
i0.ɵɵelementEnd()()();
|
|
597
|
-
i0.ɵɵelementStart(14, "div",
|
|
598
|
-
i0.ɵɵelement(16, "i",
|
|
597
|
+
i0.ɵɵelementStart(14, "div", 123)(15, "div", 129);
|
|
598
|
+
i0.ɵɵelement(16, "i", 84);
|
|
599
599
|
i0.ɵɵelementEnd();
|
|
600
|
-
i0.ɵɵelementStart(17, "div",
|
|
600
|
+
i0.ɵɵelementStart(17, "div", 126)(18, "p", 127);
|
|
601
601
|
i0.ɵɵtext(19, "List created");
|
|
602
602
|
i0.ɵɵelementEnd();
|
|
603
|
-
i0.ɵɵelementStart(20, "span",
|
|
603
|
+
i0.ɵɵelementStart(20, "span", 128);
|
|
604
604
|
i0.ɵɵtext(21);
|
|
605
605
|
i0.ɵɵpipe(22, "date");
|
|
606
606
|
i0.ɵɵelementEnd()()()();
|
|
607
|
-
i0.ɵɵelementStart(23, "div",
|
|
607
|
+
i0.ɵɵelementStart(23, "div", 130)(24, "p");
|
|
608
608
|
i0.ɵɵtext(25, "Detailed activity tracking coming soon. You'll be able to see who added items, when shares were created, and more.");
|
|
609
609
|
i0.ɵɵelementEnd()()();
|
|
610
610
|
} if (rf & 2) {
|
|
@@ -615,14 +615,14 @@ function MJListFormComponentExtended_Conditional_36_Template(rf, ctx) { if (rf &
|
|
|
615
615
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(22, 5, ctx_r1.record.__mj_CreatedAt, "medium"));
|
|
616
616
|
} }
|
|
617
617
|
function MJListFormComponentExtended_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
618
|
-
i0.ɵɵelementStart(0, "section", 19)(1, "div",
|
|
618
|
+
i0.ɵɵelementStart(0, "section", 19)(1, "div", 72)(2, "h2");
|
|
619
619
|
i0.ɵɵtext(3, "Settings");
|
|
620
620
|
i0.ɵɵelementEnd()();
|
|
621
|
-
i0.ɵɵelementStart(4, "div",
|
|
622
|
-
i0.ɵɵelement(7, "mj-form-field",
|
|
621
|
+
i0.ɵɵelementStart(4, "div", 131)(5, "mj-collapsible-panel", 132)(6, "div", 133);
|
|
622
|
+
i0.ɵɵelement(7, "mj-form-field", 134)(8, "mj-form-field", 135)(9, "mj-form-field", 136);
|
|
623
623
|
i0.ɵɵelementEnd()();
|
|
624
|
-
i0.ɵɵelementStart(10, "mj-collapsible-panel",
|
|
625
|
-
i0.ɵɵelement(12, "mj-form-field",
|
|
624
|
+
i0.ɵɵelementStart(10, "mj-collapsible-panel", 137)(11, "div", 133);
|
|
625
|
+
i0.ɵɵelement(12, "mj-form-field", 138)(13, "mj-form-field", 139)(14, "mj-form-field", 140)(15, "mj-form-field", 141);
|
|
626
626
|
i0.ɵɵelementEnd()()()();
|
|
627
627
|
} if (rf & 2) {
|
|
628
628
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -646,8 +646,8 @@ function MJListFormComponentExtended_Conditional_37_Template(rf, ctx) { if (rf &
|
|
|
646
646
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", false)("FormContext", ctx_r1.formContext);
|
|
647
647
|
} }
|
|
648
648
|
function MJListFormComponentExtended_Conditional_38_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
649
|
-
i0.ɵɵelementStart(0, "div",
|
|
650
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
649
|
+
i0.ɵɵelementStart(0, "div", 144);
|
|
650
|
+
i0.ɵɵelement(1, "mj-loading", 147);
|
|
651
651
|
i0.ɵɵelementEnd();
|
|
652
652
|
} if (rf & 2) {
|
|
653
653
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -655,16 +655,16 @@ function MJListFormComponentExtended_Conditional_38_Conditional_2_Template(rf, c
|
|
|
655
655
|
i0.ɵɵproperty("text", "Adding " + ctx_r1.addTotal + " records to list...");
|
|
656
656
|
} }
|
|
657
657
|
function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
658
|
-
i0.ɵɵelementStart(0, "div",
|
|
659
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
658
|
+
i0.ɵɵelementStart(0, "div", 154);
|
|
659
|
+
i0.ɵɵelement(1, "mj-loading", 156);
|
|
660
660
|
i0.ɵɵelementEnd();
|
|
661
661
|
} if (rf & 2) {
|
|
662
662
|
i0.ɵɵadvance();
|
|
663
663
|
i0.ɵɵproperty("showText", false);
|
|
664
664
|
} }
|
|
665
665
|
function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
666
|
-
i0.ɵɵelementStart(0, "div",
|
|
667
|
-
i0.ɵɵelement(1, "span",
|
|
666
|
+
i0.ɵɵelementStart(0, "div", 155);
|
|
667
|
+
i0.ɵɵelement(1, "span", 157);
|
|
668
668
|
i0.ɵɵelementStart(2, "p");
|
|
669
669
|
i0.ɵɵtext(3);
|
|
670
670
|
i0.ɵɵelementEnd()();
|
|
@@ -674,18 +674,18 @@ function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_8_
|
|
|
674
674
|
i0.ɵɵtextInterpolate1("No records found matching \"", ctx_r1.addRecordsSearchFilter, "\"");
|
|
675
675
|
} }
|
|
676
676
|
function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
677
|
-
i0.ɵɵelementStart(0, "div",
|
|
678
|
-
i0.ɵɵelement(1, "span",
|
|
677
|
+
i0.ɵɵelementStart(0, "div", 155);
|
|
678
|
+
i0.ɵɵelement(1, "span", 158);
|
|
679
679
|
i0.ɵɵelementStart(2, "p");
|
|
680
680
|
i0.ɵɵtext(3, "Search for records to add to this list");
|
|
681
681
|
i0.ɵɵelementEnd()();
|
|
682
682
|
} }
|
|
683
683
|
function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_For_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
684
|
-
i0.ɵɵelement(0, "span",
|
|
684
|
+
i0.ɵɵelement(0, "span", 166);
|
|
685
685
|
} }
|
|
686
686
|
function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
687
687
|
const _r26 = i0.ɵɵgetCurrentView();
|
|
688
|
-
i0.ɵɵelementStart(0, "input",
|
|
688
|
+
i0.ɵɵelementStart(0, "input", 170);
|
|
689
689
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_For_9_Conditional_3_Template_input_click_0_listener($event) { i0.ɵɵrestoreView(_r26); return i0.ɵɵresetView($event.stopPropagation()); })("change", function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_For_9_Conditional_3_Template_input_change_0_listener() { i0.ɵɵrestoreView(_r26); const record_r25 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleRecordSelection(record_r25)); });
|
|
690
690
|
i0.ɵɵelementEnd();
|
|
691
691
|
} if (rf & 2) {
|
|
@@ -693,22 +693,22 @@ function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10
|
|
|
693
693
|
i0.ɵɵproperty("checked", record_r25.isSelected);
|
|
694
694
|
} }
|
|
695
695
|
function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
696
|
-
i0.ɵɵelementStart(0, "span",
|
|
696
|
+
i0.ɵɵelementStart(0, "span", 169);
|
|
697
697
|
i0.ɵɵtext(1, "In List");
|
|
698
698
|
i0.ɵɵelementEnd();
|
|
699
699
|
} }
|
|
700
700
|
function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
701
701
|
const _r24 = i0.ɵɵgetCurrentView();
|
|
702
|
-
i0.ɵɵelementStart(0, "div",
|
|
702
|
+
i0.ɵɵelementStart(0, "div", 164);
|
|
703
703
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_For_9_Template_div_click_0_listener() { const record_r25 = i0.ɵɵrestoreView(_r24).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleRecordSelection(record_r25)); });
|
|
704
|
-
i0.ɵɵelementStart(1, "div",
|
|
705
|
-
i0.ɵɵconditionalCreate(2, MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_For_9_Conditional_2_Template, 1, 0, "span",
|
|
706
|
-
i0.ɵɵconditionalCreate(3, MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_For_9_Conditional_3_Template, 1, 1, "input",
|
|
704
|
+
i0.ɵɵelementStart(1, "div", 165);
|
|
705
|
+
i0.ɵɵconditionalCreate(2, MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_For_9_Conditional_2_Template, 1, 0, "span", 166);
|
|
706
|
+
i0.ɵɵconditionalCreate(3, MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_For_9_Conditional_3_Template, 1, 1, "input", 167);
|
|
707
707
|
i0.ɵɵelementEnd();
|
|
708
|
-
i0.ɵɵelementStart(4, "div",
|
|
708
|
+
i0.ɵɵelementStart(4, "div", 168);
|
|
709
709
|
i0.ɵɵtext(5);
|
|
710
710
|
i0.ɵɵelementEnd();
|
|
711
|
-
i0.ɵɵconditionalCreate(6, MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_For_9_Conditional_6_Template, 2, 0, "span",
|
|
711
|
+
i0.ɵɵconditionalCreate(6, MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_For_9_Conditional_6_Template, 2, 0, "span", 169);
|
|
712
712
|
i0.ɵɵelementEnd();
|
|
713
713
|
} if (rf & 2) {
|
|
714
714
|
const record_r25 = ctx.$implicit;
|
|
@@ -724,19 +724,19 @@ function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10
|
|
|
724
724
|
} }
|
|
725
725
|
function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
726
726
|
const _r23 = i0.ɵɵgetCurrentView();
|
|
727
|
-
i0.ɵɵelementStart(0, "div",
|
|
727
|
+
i0.ɵɵelementStart(0, "div", 159)(1, "button", 160);
|
|
728
728
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.selectAllAddable()); });
|
|
729
729
|
i0.ɵɵtext(2, "Select All");
|
|
730
730
|
i0.ɵɵelementEnd();
|
|
731
|
-
i0.ɵɵelementStart(3, "button",
|
|
731
|
+
i0.ɵɵelementStart(3, "button", 160);
|
|
732
732
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.deselectAllAddable()); });
|
|
733
733
|
i0.ɵɵtext(4, "Deselect All");
|
|
734
734
|
i0.ɵɵelementEnd();
|
|
735
|
-
i0.ɵɵelementStart(5, "span",
|
|
735
|
+
i0.ɵɵelementStart(5, "span", 161);
|
|
736
736
|
i0.ɵɵtext(6);
|
|
737
737
|
i0.ɵɵelementEnd()();
|
|
738
|
-
i0.ɵɵelementStart(7, "div",
|
|
739
|
-
i0.ɵɵrepeaterCreate(8, MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_For_9_Template, 7, 8, "div",
|
|
738
|
+
i0.ɵɵelementStart(7, "div", 162);
|
|
739
|
+
i0.ɵɵrepeaterCreate(8, MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_For_9_Template, 7, 8, "div", 163, i0.ɵɵrepeaterTrackByIdentity);
|
|
740
740
|
i0.ɵɵelementEnd();
|
|
741
741
|
} if (rf & 2) {
|
|
742
742
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -747,19 +747,19 @@ function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10
|
|
|
747
747
|
} }
|
|
748
748
|
function MJListFormComponentExtended_Conditional_38_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
749
749
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
750
|
-
i0.ɵɵelementStart(0, "div",
|
|
751
|
-
i0.ɵɵelement(2, "span",
|
|
752
|
-
i0.ɵɵelementStart(3, "input",
|
|
750
|
+
i0.ɵɵelementStart(0, "div", 148)(1, "div", 149);
|
|
751
|
+
i0.ɵɵelement(2, "span", 150);
|
|
752
|
+
i0.ɵɵelementStart(3, "input", 151);
|
|
753
753
|
i0.ɵɵtwoWayListener("ngModelChange", function MJListFormComponentExtended_Conditional_38_Conditional_3_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.addRecordsSearchFilter, $event) || (ctx_r1.addRecordsSearchFilter = $event); return i0.ɵɵresetView($event); });
|
|
754
754
|
i0.ɵɵlistener("ngModelChange", function MJListFormComponentExtended_Conditional_38_Conditional_3_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onAddRecordsSearchChange($event)); });
|
|
755
755
|
i0.ɵɵelementEnd()();
|
|
756
|
-
i0.ɵɵelementStart(4, "span",
|
|
756
|
+
i0.ɵɵelementStart(4, "span", 152);
|
|
757
757
|
i0.ɵɵtext(5, "Type at least 2 characters to search");
|
|
758
758
|
i0.ɵɵelementEnd()();
|
|
759
|
-
i0.ɵɵelementStart(6, "div",
|
|
760
|
-
i0.ɵɵconditionalCreate(7, MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_7_Template, 2, 1, "div",
|
|
761
|
-
i0.ɵɵconditionalCreate(8, MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_8_Template, 4, 1, "div",
|
|
762
|
-
i0.ɵɵconditionalCreate(9, MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_9_Template, 4, 0, "div",
|
|
759
|
+
i0.ɵɵelementStart(6, "div", 153);
|
|
760
|
+
i0.ɵɵconditionalCreate(7, MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_7_Template, 2, 1, "div", 154);
|
|
761
|
+
i0.ɵɵconditionalCreate(8, MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_8_Template, 4, 1, "div", 155);
|
|
762
|
+
i0.ɵɵconditionalCreate(9, MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_9_Template, 4, 0, "div", 155);
|
|
763
763
|
i0.ɵɵconditionalCreate(10, MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10_Template, 10, 1);
|
|
764
764
|
i0.ɵɵelementEnd();
|
|
765
765
|
} if (rf & 2) {
|
|
@@ -778,17 +778,17 @@ function MJListFormComponentExtended_Conditional_38_Conditional_3_Template(rf, c
|
|
|
778
778
|
} }
|
|
779
779
|
function MJListFormComponentExtended_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
780
780
|
const _r21 = i0.ɵɵgetCurrentView();
|
|
781
|
-
i0.ɵɵelementStart(0, "mj-dialog",
|
|
781
|
+
i0.ɵɵelementStart(0, "mj-dialog", 142);
|
|
782
782
|
i0.ɵɵlistener("Close", function MJListFormComponentExtended_Conditional_38_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddRecordsDialog()); });
|
|
783
|
-
i0.ɵɵelementStart(1, "div",
|
|
784
|
-
i0.ɵɵconditionalCreate(2, MJListFormComponentExtended_Conditional_38_Conditional_2_Template, 2, 1, "div",
|
|
783
|
+
i0.ɵɵelementStart(1, "div", 143);
|
|
784
|
+
i0.ɵɵconditionalCreate(2, MJListFormComponentExtended_Conditional_38_Conditional_2_Template, 2, 1, "div", 144);
|
|
785
785
|
i0.ɵɵconditionalCreate(3, MJListFormComponentExtended_Conditional_38_Conditional_3_Template, 11, 6);
|
|
786
786
|
i0.ɵɵelementEnd();
|
|
787
|
-
i0.ɵɵelementStart(4, "mj-dialog-actions")(5, "button",
|
|
787
|
+
i0.ɵɵelementStart(4, "mj-dialog-actions")(5, "button", 145);
|
|
788
788
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_38_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.confirmAddRecords()); });
|
|
789
789
|
i0.ɵɵtext(6);
|
|
790
790
|
i0.ɵɵelementEnd();
|
|
791
|
-
i0.ɵɵelementStart(7, "button",
|
|
791
|
+
i0.ɵɵelementStart(7, "button", 146);
|
|
792
792
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_38_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddRecordsDialog()); });
|
|
793
793
|
i0.ɵɵtext(8, " Cancel ");
|
|
794
794
|
i0.ɵɵelementEnd()()();
|
|
@@ -807,13 +807,13 @@ function MJListFormComponentExtended_Conditional_38_Template(rf, ctx) { if (rf &
|
|
|
807
807
|
i0.ɵɵproperty("disabled", ctx_r1.addDialogSaving);
|
|
808
808
|
} }
|
|
809
809
|
function MJListFormComponentExtended_Conditional_39_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
810
|
-
i0.ɵɵelementStart(0, "div",
|
|
811
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
810
|
+
i0.ɵɵelementStart(0, "div", 144);
|
|
811
|
+
i0.ɵɵelement(1, "mj-loading", 173);
|
|
812
812
|
i0.ɵɵelementEnd();
|
|
813
813
|
} }
|
|
814
814
|
function MJListFormComponentExtended_Conditional_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
815
|
-
i0.ɵɵelementStart(0, "div",
|
|
816
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
815
|
+
i0.ɵɵelementStart(0, "div", 144);
|
|
816
|
+
i0.ɵɵelement(1, "mj-loading", 147);
|
|
817
817
|
i0.ɵɵelementEnd();
|
|
818
818
|
} if (rf & 2) {
|
|
819
819
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -821,26 +821,26 @@ function MJListFormComponentExtended_Conditional_39_Conditional_3_Template(rf, c
|
|
|
821
821
|
i0.ɵɵproperty("text", "Adding " + ctx_r1.addFromViewTotal + " records to list...");
|
|
822
822
|
} }
|
|
823
823
|
function MJListFormComponentExtended_Conditional_39_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
824
|
-
i0.ɵɵelementStart(0, "div",
|
|
825
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
824
|
+
i0.ɵɵelementStart(0, "div", 144);
|
|
825
|
+
i0.ɵɵelement(1, "mj-loading", 174);
|
|
826
826
|
i0.ɵɵelementEnd();
|
|
827
827
|
} }
|
|
828
828
|
function MJListFormComponentExtended_Conditional_39_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
829
|
-
i0.ɵɵelementStart(0, "div",
|
|
830
|
-
i0.ɵɵelement(1, "span",
|
|
829
|
+
i0.ɵɵelementStart(0, "div", 155);
|
|
830
|
+
i0.ɵɵelement(1, "span", 177);
|
|
831
831
|
i0.ɵɵelementStart(2, "p");
|
|
832
832
|
i0.ɵɵtext(3, "No saved views found for this entity");
|
|
833
833
|
i0.ɵɵelementEnd()();
|
|
834
834
|
} }
|
|
835
835
|
function MJListFormComponentExtended_Conditional_39_Conditional_5_Conditional_4_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
836
836
|
const _r28 = i0.ɵɵgetCurrentView();
|
|
837
|
-
i0.ɵɵelementStart(0, "div",
|
|
837
|
+
i0.ɵɵelementStart(0, "div", 179);
|
|
838
838
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_39_Conditional_5_Conditional_4_For_1_Template_div_click_0_listener() { const view_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleViewSelection(view_r29)); });
|
|
839
|
-
i0.ɵɵelementStart(1, "input",
|
|
839
|
+
i0.ɵɵelementStart(1, "input", 170);
|
|
840
840
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_39_Conditional_5_Conditional_4_For_1_Template_input_click_1_listener($event) { i0.ɵɵrestoreView(_r28); return i0.ɵɵresetView($event.stopPropagation()); })("change", function MJListFormComponentExtended_Conditional_39_Conditional_5_Conditional_4_For_1_Template_input_change_1_listener() { const view_r29 = i0.ɵɵrestoreView(_r28).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleViewSelection(view_r29)); });
|
|
841
841
|
i0.ɵɵelementEnd();
|
|
842
|
-
i0.ɵɵelement(2, "span",
|
|
843
|
-
i0.ɵɵelementStart(3, "span",
|
|
842
|
+
i0.ɵɵelement(2, "span", 180);
|
|
843
|
+
i0.ɵɵelementStart(3, "span", 181);
|
|
844
844
|
i0.ɵɵtext(4);
|
|
845
845
|
i0.ɵɵelementEnd()();
|
|
846
846
|
} if (rf & 2) {
|
|
@@ -853,17 +853,17 @@ function MJListFormComponentExtended_Conditional_39_Conditional_5_Conditional_4_
|
|
|
853
853
|
i0.ɵɵtextInterpolate(view_r29.Name);
|
|
854
854
|
} }
|
|
855
855
|
function MJListFormComponentExtended_Conditional_39_Conditional_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
856
|
-
i0.ɵɵrepeaterCreate(0, MJListFormComponentExtended_Conditional_39_Conditional_5_Conditional_4_For_1_Template, 5, 4, "div",
|
|
856
|
+
i0.ɵɵrepeaterCreate(0, MJListFormComponentExtended_Conditional_39_Conditional_5_Conditional_4_For_1_Template, 5, 4, "div", 178, i0.ɵɵrepeaterTrackByIdentity);
|
|
857
857
|
} if (rf & 2) {
|
|
858
858
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
859
859
|
i0.ɵɵrepeater(ctx_r1.userViews);
|
|
860
860
|
} }
|
|
861
861
|
function MJListFormComponentExtended_Conditional_39_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
862
|
-
i0.ɵɵelementStart(0, "p",
|
|
862
|
+
i0.ɵɵelementStart(0, "p", 175);
|
|
863
863
|
i0.ɵɵtext(1, "Select views to add their records to this list:");
|
|
864
864
|
i0.ɵɵelementEnd();
|
|
865
|
-
i0.ɵɵelementStart(2, "div",
|
|
866
|
-
i0.ɵɵconditionalCreate(3, MJListFormComponentExtended_Conditional_39_Conditional_5_Conditional_3_Template, 4, 0, "div",
|
|
865
|
+
i0.ɵɵelementStart(2, "div", 176);
|
|
866
|
+
i0.ɵɵconditionalCreate(3, MJListFormComponentExtended_Conditional_39_Conditional_5_Conditional_3_Template, 4, 0, "div", 155);
|
|
867
867
|
i0.ɵɵconditionalCreate(4, MJListFormComponentExtended_Conditional_39_Conditional_5_Conditional_4_Template, 2, 0);
|
|
868
868
|
i0.ɵɵelementEnd();
|
|
869
869
|
} if (rf & 2) {
|
|
@@ -875,19 +875,19 @@ function MJListFormComponentExtended_Conditional_39_Conditional_5_Template(rf, c
|
|
|
875
875
|
} }
|
|
876
876
|
function MJListFormComponentExtended_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
877
877
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
878
|
-
i0.ɵɵelementStart(0, "mj-dialog",
|
|
878
|
+
i0.ɵɵelementStart(0, "mj-dialog", 171);
|
|
879
879
|
i0.ɵɵlistener("Close", function MJListFormComponentExtended_Conditional_39_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddFromViewDialog()); });
|
|
880
|
-
i0.ɵɵelementStart(1, "div",
|
|
881
|
-
i0.ɵɵconditionalCreate(2, MJListFormComponentExtended_Conditional_39_Conditional_2_Template, 2, 0, "div",
|
|
882
|
-
i0.ɵɵconditionalCreate(3, MJListFormComponentExtended_Conditional_39_Conditional_3_Template, 2, 1, "div",
|
|
883
|
-
i0.ɵɵconditionalCreate(4, MJListFormComponentExtended_Conditional_39_Conditional_4_Template, 2, 0, "div",
|
|
880
|
+
i0.ɵɵelementStart(1, "div", 172);
|
|
881
|
+
i0.ɵɵconditionalCreate(2, MJListFormComponentExtended_Conditional_39_Conditional_2_Template, 2, 0, "div", 144);
|
|
882
|
+
i0.ɵɵconditionalCreate(3, MJListFormComponentExtended_Conditional_39_Conditional_3_Template, 2, 1, "div", 144);
|
|
883
|
+
i0.ɵɵconditionalCreate(4, MJListFormComponentExtended_Conditional_39_Conditional_4_Template, 2, 0, "div", 144);
|
|
884
884
|
i0.ɵɵconditionalCreate(5, MJListFormComponentExtended_Conditional_39_Conditional_5_Template, 5, 2);
|
|
885
885
|
i0.ɵɵelementEnd();
|
|
886
|
-
i0.ɵɵelementStart(6, "mj-dialog-actions")(7, "button",
|
|
886
|
+
i0.ɵɵelementStart(6, "mj-dialog-actions")(7, "button", 145);
|
|
887
887
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_39_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.confirmAddFromView()); });
|
|
888
888
|
i0.ɵɵtext(8);
|
|
889
889
|
i0.ɵɵelementEnd();
|
|
890
|
-
i0.ɵɵelementStart(9, "button",
|
|
890
|
+
i0.ɵɵelementStart(9, "button", 146);
|
|
891
891
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_39_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddFromViewDialog()); });
|
|
892
892
|
i0.ɵɵtext(10, " Cancel ");
|
|
893
893
|
i0.ɵɵelementEnd()()();
|
|
@@ -911,13 +911,47 @@ function MJListFormComponentExtended_Conditional_39_Template(rf, ctx) { if (rf &
|
|
|
911
911
|
} }
|
|
912
912
|
function MJListFormComponentExtended_Conditional_40_Template(rf, ctx) { if (rf & 1) {
|
|
913
913
|
const _r30 = i0.ɵɵgetCurrentView();
|
|
914
|
-
i0.ɵɵelementStart(0, "mj-list-share-dialog",
|
|
915
|
-
i0.ɵɵlistener("complete", function MJListFormComponentExtended_Conditional_40_Template_mj_list_share_dialog_complete_0_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onShareDialogComplete($event)); })("cancel", function MJListFormComponentExtended_Conditional_40_Template_mj_list_share_dialog_cancel_0_listener() { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onShareDialogCancel()); });
|
|
914
|
+
i0.ɵɵelementStart(0, "mj-list-share-dialog", 182);
|
|
915
|
+
i0.ɵɵlistener("complete", function MJListFormComponentExtended_Conditional_40_Template_mj_list_share_dialog_complete_0_listener($event) { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onShareDialogComplete($event)); })("cancel", function MJListFormComponentExtended_Conditional_40_Template_mj_list_share_dialog_cancel_0_listener() { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onShareDialogCancel()); })("manageInvitations", function MJListFormComponentExtended_Conditional_40_Template_mj_list_share_dialog_manageInvitations_0_listener() { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openInvitationsDialog()); })("viewAuditLog", function MJListFormComponentExtended_Conditional_40_Template_mj_list_share_dialog_viewAuditLog_0_listener() { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openAuditLogDialog()); });
|
|
916
916
|
i0.ɵɵelementEnd();
|
|
917
917
|
} if (rf & 2) {
|
|
918
918
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
919
919
|
i0.ɵɵproperty("config", ctx_r1.shareDialogConfig)("visible", ctx_r1.showShareDialog);
|
|
920
920
|
} }
|
|
921
|
+
function MJListFormComponentExtended_Conditional_41_Template(rf, ctx) { if (rf & 1) {
|
|
922
|
+
const _r31 = i0.ɵɵgetCurrentView();
|
|
923
|
+
i0.ɵɵelementStart(0, "mj-dialog", 183);
|
|
924
|
+
i0.ɵɵlistener("Close", function MJListFormComponentExtended_Conditional_41_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r31); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeInvitationsDialog()); });
|
|
925
|
+
i0.ɵɵelementStart(1, "div", 184);
|
|
926
|
+
i0.ɵɵelement(2, "mj-list-invitations", 185);
|
|
927
|
+
i0.ɵɵelementEnd();
|
|
928
|
+
i0.ɵɵelementStart(3, "mj-dialog-actions")(4, "button", 186);
|
|
929
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_41_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r31); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeInvitationsDialog()); });
|
|
930
|
+
i0.ɵɵtext(5, "Close");
|
|
931
|
+
i0.ɵɵelementEnd()()();
|
|
932
|
+
} if (rf & 2) {
|
|
933
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
934
|
+
i0.ɵɵproperty("Visible", true)("Title", "Invitations \u2014 " + ctx_r1.record.Name)("MinWidth", 640)("Width", 900)("Height", 640);
|
|
935
|
+
i0.ɵɵadvance(2);
|
|
936
|
+
i0.ɵɵproperty("Provider", ctx_r1.ProviderToUse)("ListID", ctx_r1.record.ID)("ListName", ctx_r1.record.Name);
|
|
937
|
+
} }
|
|
938
|
+
function MJListFormComponentExtended_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
939
|
+
const _r32 = i0.ɵɵgetCurrentView();
|
|
940
|
+
i0.ɵɵelementStart(0, "mj-dialog", 183);
|
|
941
|
+
i0.ɵɵlistener("Close", function MJListFormComponentExtended_Conditional_42_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAuditLogDialog()); });
|
|
942
|
+
i0.ɵɵelementStart(1, "div", 187);
|
|
943
|
+
i0.ɵɵelement(2, "mj-list-audit-log", 188);
|
|
944
|
+
i0.ɵɵelementEnd();
|
|
945
|
+
i0.ɵɵelementStart(3, "mj-dialog-actions")(4, "button", 186);
|
|
946
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_42_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAuditLogDialog()); });
|
|
947
|
+
i0.ɵɵtext(5, "Close");
|
|
948
|
+
i0.ɵɵelementEnd()()();
|
|
949
|
+
} if (rf & 2) {
|
|
950
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
951
|
+
i0.ɵɵproperty("Visible", true)("Title", "Audit Log \u2014 " + ctx_r1.record.Name)("MinWidth", 720)("Width", 980)("Height", 680);
|
|
952
|
+
i0.ɵɵadvance(2);
|
|
953
|
+
i0.ɵɵproperty("Provider", ctx_r1.ProviderToUse)("ListID", ctx_r1.record.ID);
|
|
954
|
+
} }
|
|
921
955
|
/**
|
|
922
956
|
* World-class List form component that provides a rich exploration experience
|
|
923
957
|
* for managing lists in the MemberJunction system.
|
|
@@ -986,6 +1020,9 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
|
|
|
986
1020
|
// Share dialog
|
|
987
1021
|
this.showShareDialog = false;
|
|
988
1022
|
this.shareDialogConfig = null;
|
|
1023
|
+
// Invitations / audit log dialogs — opened from the share dialog.
|
|
1024
|
+
this.showInvitationsDialog = false;
|
|
1025
|
+
this.showAuditLogDialog = false;
|
|
989
1026
|
this.destroy$ = new Subject();
|
|
990
1027
|
}
|
|
991
1028
|
get metadata() { return this.ProviderToUse; }
|
|
@@ -1599,8 +1636,32 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
|
|
|
1599
1636
|
this.shareDialogConfig = null;
|
|
1600
1637
|
this.cdr.markForCheck();
|
|
1601
1638
|
}
|
|
1639
|
+
// ==========================================
|
|
1640
|
+
// Invitations / Audit Log dialogs (mockups 16, 18)
|
|
1641
|
+
// ==========================================
|
|
1642
|
+
openInvitationsDialog() {
|
|
1643
|
+
// Closing share dialog so it doesn't stack visually. User can
|
|
1644
|
+
// reopen via toolbar; the share dialog isn't stateful enough to
|
|
1645
|
+
// need preservation across this transition.
|
|
1646
|
+
this.showShareDialog = false;
|
|
1647
|
+
this.showInvitationsDialog = true;
|
|
1648
|
+
this.cdr.markForCheck();
|
|
1649
|
+
}
|
|
1650
|
+
closeInvitationsDialog() {
|
|
1651
|
+
this.showInvitationsDialog = false;
|
|
1652
|
+
this.cdr.markForCheck();
|
|
1653
|
+
}
|
|
1654
|
+
openAuditLogDialog() {
|
|
1655
|
+
this.showShareDialog = false;
|
|
1656
|
+
this.showAuditLogDialog = true;
|
|
1657
|
+
this.cdr.markForCheck();
|
|
1658
|
+
}
|
|
1659
|
+
closeAuditLogDialog() {
|
|
1660
|
+
this.showAuditLogDialog = false;
|
|
1661
|
+
this.cdr.markForCheck();
|
|
1662
|
+
}
|
|
1602
1663
|
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJListFormComponentExtended_BaseFactory; return function MJListFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJListFormComponentExtended_BaseFactory || (ɵMJListFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJListFormComponentExtended)))(__ngFactoryType__ || MJListFormComponentExtended); }; })(); }
|
|
1603
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJListFormComponentExtended, selectors: [["mj-list-form-extended"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
1664
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJListFormComponentExtended, selectors: [["mj-list-form-extended"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 43, vars: 22, consts: [["nameInput", ""], [1, "list-form-explorer"], [1, "list-header"], [1, "header-content"], [1, "header-icon"], [1, "header-info"], [1, "name-row"], [1, "entity-badge"], [1, "header-stats"], [1, "stat-item"], [1, "stat-value"], [1, "stat-label"], [1, "nav-rail"], [1, "nav-item", 3, "active", "disabled", "title"], [1, "main-content"], [1, "section", "overview-section"], [1, "section", "items-section"], [1, "section", "sharing-section"], [1, "section", "activity-section"], [1, "section", "settings-section"], [3, "Title", "Visible", "MinWidth", "Width", "Height"], ["Title", "Add Records from Views", 3, "Visible", "MinWidth", "Width", "Height"], [3, "config", "visible"], [3, "Visible", "Title", "MinWidth", "Width", "Height"], [1, "list-name"], ["title", "Edit name", 1, "edit-btn"], ["title", "Edit name", 1, "edit-btn", 3, "click"], [1, "fa-solid", "fa-pen"], ["type", "text", 1, "inline-edit-input", "name-input", 3, "ngModelChange", "keydown.enter", "keydown.escape", "ngModel"], [1, "save-btn", 3, "click"], [1, "fa-solid", "fa-check"], [1, "cancel-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "nav-item", 3, "click", "title"], [1, "nav-label"], [1, "nav-badge"], [1, "overview-grid"], [1, "overview-card", "description-card"], [1, "card-header"], [1, "fa-solid", "fa-align-left"], [1, "edit-btn"], [1, "card-body"], [1, "overview-card", "details-card"], [1, "fa-solid", "fa-info-circle"], [1, "detail-row"], [1, "detail-label"], [1, "detail-value"], [1, "detail-icon"], [1, "category-select", 3, "ngModel"], [1, "fa-solid", "fa-user", "detail-icon"], [1, "owner-badge"], [1, "fa-solid", "fa-calendar", "detail-icon"], [1, "overview-card", "actions-card"], [1, "fa-solid", "fa-bolt"], [1, "action-btn", 3, "click"], [1, "fa-solid", "fa-list"], [1, "action-count"], [1, "action-btn"], ["title", "Coming soon", 1, "action-btn", 3, "disabled"], [1, "fa-solid", "fa-file-export"], [1, "coming-soon"], [1, "edit-btn", 3, "click"], [1, "description-text"], [1, "description-empty"], ["placeholder", "Add a description...", "rows", "3", 1, "inline-edit-input", "description-input", 3, "ngModelChange", "keydown.escape", "ngModel"], [1, "edit-actions"], [1, "btn-primary", 3, "click"], [1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-folder", "detail-icon"], [1, "category-select", 3, "ngModelChange", "ngModel"], [3, "ngValue"], [1, "fa-solid", "fa-share-nodes"], [1, "section-header"], [1, "section-actions"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search items...", 3, "ngModelChange", "ngModel"], [1, "add-buttons"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "loading-state"], [1, "empty-state"], [1, "items-table-container"], ["title", "Add individual records", 1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-plus"], ["title", "Add records from a saved view", 1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-table-list"], ["text", "Loading items...", "size", "medium"], [1, "empty-icon"], [1, "fa-solid", "fa-inbox"], [1, "items-toolbar"], [1, "items-table"], [1, "col-checkbox"], ["type", "checkbox", 3, "change", "checked"], [1, "col-name"], [1, "col-id"], [1, "col-added"], [1, "col-actions"], [3, "selected"], [1, "items-footer"], [1, "items-count"], [1, "selection-count"], [1, "btn-danger", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "item-name"], [1, "item-icon"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "record-id"], ["title", "Open record", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "sharing-summary"], [1, "readonly-notice"], [1, "fa-solid", "fa-user-plus"], [1, "summary-card"], [1, "summary-icon"], [1, "fa-solid", "fa-users"], [1, "summary-content"], [1, "summary-value"], [1, "summary-label"], [1, "summary-icon", "pending"], [1, "fa-solid", "fa-envelope"], [1, "btn-primary"], [1, "activity-timeline"], [1, "timeline-item"], [1, "timeline-icon"], [1, "fa-solid", "fa-edit"], [1, "timeline-content"], [1, "timeline-text"], [1, "timeline-date"], [1, "timeline-icon", "create"], [1, "activity-info"], [1, "settings-form"], ["SectionKey", "listSettings", "SectionName", "List Settings", "Icon", "fa fa-cog", 3, "Form", "FormContext"], [1, "form-body"], ["FieldName", "Name", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Description", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "CategoryID", "Type", "textbox", "LinkType", "Record", "LinkComponentType", "Search", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "systemInfo", "SectionName", "System Information", "Icon", "fa fa-info-circle", 3, "Form", "FormContext"], ["FieldName", "EntityID", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "UserID", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [3, "Close", "Title", "Visible", "MinWidth", "Width", "Height"], [1, "dialog-content", "add-records-dialog"], [1, "dialog-loading"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], ["mjButton", "", 3, "click", "disabled"], ["size", "small", 3, "text"], [1, "search-section"], [1, "search-input-wrapper"], [1, "fa-solid", "fa-search", "search-icon"], ["type", "text", 1, "mj-input", "search-input", 3, "ngModelChange", "placeholder", "ngModel"], [1, "search-hint"], [1, "records-list"], [1, "list-loading"], [1, "empty-results"], ["size", "small", 3, "showText"], [1, "fa-solid", "fa-search", "empty-icon"], [1, "fa-solid", "fa-list", "empty-icon"], [1, "selection-controls"], ["mjButton", "", "variant", "flat", 3, "click"], [1, "selection-info"], [1, "records-scroll"], [1, "record-item", 3, "in-list", "selected"], [1, "record-item", 3, "click"], [1, "record-checkbox"], ["title", "Already in list", 1, "fa-solid", "fa-check", "in-list-icon"], ["type", "checkbox", 3, "checked"], [1, "record-name"], [1, "in-list-badge"], ["type", "checkbox", 3, "click", "change", "checked"], ["Title", "Add Records from Views", 3, "Close", "Visible", "MinWidth", "Width", "Height"], [1, "dialog-content"], ["text", "Loading records from views...", "size", "small"], ["text", "Loading views...", "size", "small"], [1, "dialog-instruction"], [1, "views-list"], [1, "fa-solid", "fa-folder-open", "empty-icon"], [1, "view-item", 3, "selected"], [1, "view-item", 3, "click"], [1, "fa-solid", "fa-table-list", "view-icon"], [1, "view-name"], [3, "complete", "cancel", "manageInvitations", "viewAuditLog", "config", "visible"], [3, "Close", "Visible", "Title", "MinWidth", "Width", "Height"], [1, "dialog-content", "invitations-dialog"], [3, "Provider", "ListID", "ListName"], ["mjButton", "", "variant", "outline", 3, "click"], [1, "dialog-content", "audit-log-dialog"], [3, "Provider", "ListID"]], template: function MJListFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
1604
1665
|
i0.ɵɵelementStart(0, "div", 1)(1, "header", 2)(2, "div", 3)(3, "div", 4);
|
|
1605
1666
|
i0.ɵɵelement(4, "i");
|
|
1606
1667
|
i0.ɵɵelementEnd();
|
|
@@ -1644,6 +1705,8 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
|
|
|
1644
1705
|
i0.ɵɵconditionalCreate(38, MJListFormComponentExtended_Conditional_38_Template, 9, 11, "mj-dialog", 20);
|
|
1645
1706
|
i0.ɵɵconditionalCreate(39, MJListFormComponentExtended_Conditional_39_Template, 11, 12, "mj-dialog", 21);
|
|
1646
1707
|
i0.ɵɵconditionalCreate(40, MJListFormComponentExtended_Conditional_40_Template, 1, 2, "mj-list-share-dialog", 22);
|
|
1708
|
+
i0.ɵɵconditionalCreate(41, MJListFormComponentExtended_Conditional_41_Template, 6, 8, "mj-dialog", 23);
|
|
1709
|
+
i0.ɵɵconditionalCreate(42, MJListFormComponentExtended_Conditional_42_Template, 6, 7, "mj-dialog", 23);
|
|
1647
1710
|
} if (rf & 2) {
|
|
1648
1711
|
i0.ɵɵadvance(3);
|
|
1649
1712
|
i0.ɵɵstyleProp("background-color", "var(--mj-brand-primary)");
|
|
@@ -1681,7 +1744,11 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
|
|
|
1681
1744
|
i0.ɵɵconditional(ctx.showAddFromViewDialog ? 39 : -1);
|
|
1682
1745
|
i0.ɵɵadvance();
|
|
1683
1746
|
i0.ɵɵconditional(ctx.showShareDialog && ctx.shareDialogConfig ? 40 : -1);
|
|
1684
|
-
} }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJButtonDirective, i2.MJDialogComponent, i2.MJDialogActionsComponent, i3.MjFormFieldComponent, i3.MjCollapsiblePanelComponent, i4.LoadingComponent, i5.ListShareDialogComponent, i6.DatePipe], styles: ["\n\n\n\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n\n.list-form-explorer[_ngcontent-%COMP%] {\n display: grid;\n grid-template-areas:\n \"header header\"\n \"nav main\";\n grid-template-columns: 64px 1fr;\n grid-template-rows: auto 1fr;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\n}\n\n\n\n.list-header[_ngcontent-%COMP%] {\n grid-area: header;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.header-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.name-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.list-name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.inline-edit-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 2px solid var(--mj-brand-primary);\n border-radius: 6px;\n font-size: inherit;\n background: var(--mj-bg-surface);\n outline: none;\n}\n\n.name-input[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 600;\n min-width: 300px;\n}\n\n.save-btn[_ngcontent-%COMP%], .cancel-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.save-btn[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.save-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.cancel-btn[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.cancel-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.entity-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 16px;\n font-size: 13px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.entity-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 32px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 80px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.nav-rail[_ngcontent-%COMP%] {\n grid-area: nav;\n display: flex;\n flex-direction: column;\n padding: 16px 8px;\n background: var(--mj-text-primary);\n gap: 4px;\n}\n\n.nav-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 12px 8px;\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s;\n position: relative;\n}\n\n.nav-item[_ngcontent-%COMP%]:hover:not(.disabled) {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n}\n\n.nav-item.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n color: color-mix(in srgb, var(--mj-brand-primary) 60%, white);\n}\n\n.nav-item.active[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 24px;\n background: var(--mj-brand-primary);\n border-radius: 0 3px 3px 0;\n}\n\n.nav-item.disabled[_ngcontent-%COMP%] {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n}\n\n.nav-label[_ngcontent-%COMP%] {\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.nav-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 6px;\n right: 6px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: var(--mj-brand-primary);\n border-radius: 9px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n\n\n.main-content[_ngcontent-%COMP%] {\n grid-area: main;\n padding: 24px;\n overflow-y: auto;\n}\n\n.section[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n}\n\n.section-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n\n\n.search-box[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: var(--mj-text-disabled);\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n padding: 10px 12px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n width: 250px;\n transition: all 0.2s;\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n\n\n.overview-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 20px;\n}\n\n.overview-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.card-body[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.description-text[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-primary);\n line-height: 1.6;\n}\n\n.description-empty[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.description-input[_ngcontent-%COMP%] {\n width: 100%;\n resize: vertical;\n font-family: inherit;\n}\n\n.edit-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n}\n\n.btn-danger[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-status-error);\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s;\n}\n\n.btn-danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 85%, black);\n}\n\n\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-bg-surface-card);\n}\n\n.detail-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.owner-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-select[_ngcontent-%COMP%] {\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n}\n\n.category-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n\n\n.action-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 14px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n margin-bottom: 8px;\n text-align: left;\n}\n\n.action-btn[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-brand-primary);\n width: 24px;\n text-align: center;\n}\n\n.action-btn[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.action-count[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.coming-soon[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: var(--mj-brand-primary);\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 12px;\n font-size: 20px;\n color: var(--mj-text-primary);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n max-width: 400px;\n}\n\n.items-table-container[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.items-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.items-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.items-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 12px 16px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.items-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.items-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.items-table[_ngcontent-%COMP%] tr.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.items-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover:not(.selected) {\n background: var(--mj-bg-surface-card);\n}\n\n.col-checkbox[_ngcontent-%COMP%] {\n width: 40px;\n}\n\n.col-name[_ngcontent-%COMP%] {\n width: 35%;\n}\n\n.col-id[_ngcontent-%COMP%] {\n width: 25%;\n}\n\n.col-added[_ngcontent-%COMP%] {\n width: 20%;\n}\n\n.col-actions[_ngcontent-%COMP%] {\n width: 60px;\n text-align: right;\n}\n\n.item-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.item-name.loading[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.item-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.record-id[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 4px;\n color: var(--mj-text-secondary);\n}\n\n.items-footer[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n}\n\n.items-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n\n\n.coming-soon-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 24px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.coming-soon-banner[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-brand-primary);\n}\n\n.banner-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px;\n color: var(--mj-text-primary);\n}\n\n.banner-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n.shares-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n\n\n.activity-timeline[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n padding: 20px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n margin-bottom: 20px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n padding: 16px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.timeline-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.timeline-icon.create[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.timeline-text[_ngcontent-%COMP%] {\n margin: 0 0 4px;\n color: var(--mj-text-primary);\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.activity-info[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-status-warning);\n font-size: 14px;\n}\n\n\n\n.settings-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n\n\n.add-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.add-buttons[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n\n\n.sharing-summary[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n flex: 1;\n max-width: 280px;\n}\n\n.summary-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n font-size: 20px;\n}\n\n.summary-icon.pending[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.summary-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.summary-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 600;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.summary-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.readonly-notice[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n font-size: 14px;\n}\n\n.readonly-notice[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n\n\n.dialog-content[_ngcontent-%COMP%] {\n padding: 16px 0;\n}\n\n.dialog-loading[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n gap: 16px;\n}\n\n.dialog-instruction[_ngcontent-%COMP%] {\n margin: 0 0 16px;\n color: var(--mj-text-secondary);\n}\n\n\n\n.add-records-dialog[_ngcontent-%COMP%] .search-section[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .search-input[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .search-hint[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .records-list[_ngcontent-%COMP%] {\n min-height: 280px;\n max-height: 320px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .list-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 40px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .empty-results[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: var(--mj-text-secondary);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .empty-results[_ngcontent-%COMP%] .empty-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n font-size: 24px;\n margin-bottom: 12px;\n background: var(--mj-bg-surface-card);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .selection-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .selection-info[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .records-scroll[_ngcontent-%COMP%] {\n max-height: 260px;\n overflow-y: auto;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item.in-list[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n cursor: default;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-checkbox[_ngcontent-%COMP%] {\n width: 20px;\n display: flex;\n justify-content: center;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .in-list-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .in-list-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n}\n\n\n\n.views-list[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n max-height: 320px;\n overflow-y: auto;\n}\n\n.views-list[_ngcontent-%COMP%] .empty-results[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: var(--mj-text-secondary);\n}\n\n.views-list[_ngcontent-%COMP%] .empty-results[_ngcontent-%COMP%] .empty-icon[_ngcontent-%COMP%] {\n font-size: 36px;\n color: var(--mj-border-strong);\n margin-bottom: 12px;\n}\n\n.view-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.view-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.view-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.view-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.view-item[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.view-item[_ngcontent-%COMP%] .view-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n}\n\n\n\n@media (max-width: 1024px) {\n .list-form-explorer[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n grid-template-areas:\n \"header\"\n \"nav\"\n \"main\";\n }\n\n .nav-rail[_ngcontent-%COMP%] {\n flex-direction: row;\n padding: 8px 16px;\n overflow-x: auto;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n flex-direction: row;\n padding: 10px 16px;\n gap: 8px;\n }\n\n .nav-item[_ngcontent-%COMP%]::before {\n display: none;\n }\n\n .header-stats[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .list-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .overview-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .section-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n width: 100%;\n }\n}", ".k-pane[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n}\n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}"], changeDetection: 0 }); }
|
|
1747
|
+
i0.ɵɵadvance();
|
|
1748
|
+
i0.ɵɵconditional(ctx.showInvitationsDialog && (ctx.record == null ? null : ctx.record.IsSaved) ? 41 : -1);
|
|
1749
|
+
i0.ɵɵadvance();
|
|
1750
|
+
i0.ɵɵconditional(ctx.showAuditLogDialog && (ctx.record == null ? null : ctx.record.IsSaved) ? 42 : -1);
|
|
1751
|
+
} }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJButtonDirective, i2.MJDialogComponent, i2.MJDialogActionsComponent, i3.MjFormFieldComponent, i3.MjCollapsiblePanelComponent, i4.LoadingComponent, i5.ListAuditLogComponent, i5.ListInvitationsComponent, i5.ListShareDialogComponent, i6.DatePipe], styles: ["\n\n\n\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n\n.list-form-explorer[_ngcontent-%COMP%] {\n display: grid;\n grid-template-areas:\n \"header header\"\n \"nav main\";\n grid-template-columns: 64px 1fr;\n grid-template-rows: auto 1fr;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\n}\n\n\n\n.list-header[_ngcontent-%COMP%] {\n grid-area: header;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.header-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.name-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.list-name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.inline-edit-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 2px solid var(--mj-brand-primary);\n border-radius: 6px;\n font-size: inherit;\n background: var(--mj-bg-surface);\n outline: none;\n}\n\n.name-input[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 600;\n min-width: 300px;\n}\n\n.save-btn[_ngcontent-%COMP%], .cancel-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.save-btn[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.save-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.cancel-btn[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.cancel-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.entity-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 16px;\n font-size: 13px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.entity-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 32px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 80px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n\n.nav-rail[_ngcontent-%COMP%] {\n grid-area: nav;\n display: flex;\n flex-direction: column;\n padding: 16px 8px;\n background: var(--mj-text-primary);\n gap: 4px;\n}\n\n.nav-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 12px 8px;\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s;\n position: relative;\n}\n\n.nav-item[_ngcontent-%COMP%]:hover:not(.disabled) {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n}\n\n.nav-item.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n color: color-mix(in srgb, var(--mj-brand-primary) 60%, white);\n}\n\n.nav-item.active[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 24px;\n background: var(--mj-brand-primary);\n border-radius: 0 3px 3px 0;\n}\n\n.nav-item.disabled[_ngcontent-%COMP%] {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n}\n\n.nav-label[_ngcontent-%COMP%] {\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.nav-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 6px;\n right: 6px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: var(--mj-brand-primary);\n border-radius: 9px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n\n\n.main-content[_ngcontent-%COMP%] {\n grid-area: main;\n padding: 24px;\n overflow-y: auto;\n}\n\n.section[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n}\n\n.section-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n\n\n.search-box[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: var(--mj-text-disabled);\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n padding: 10px 12px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n width: 250px;\n transition: all 0.2s;\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n\n\n.overview-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 20px;\n}\n\n.overview-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.card-body[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.description-text[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-primary);\n line-height: 1.6;\n}\n\n.description-empty[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.description-input[_ngcontent-%COMP%] {\n width: 100%;\n resize: vertical;\n font-family: inherit;\n}\n\n.edit-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n}\n\n.btn-danger[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-status-error);\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s;\n}\n\n.btn-danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 85%, black);\n}\n\n\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-bg-surface-card);\n}\n\n.detail-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.owner-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-select[_ngcontent-%COMP%] {\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n}\n\n.category-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n\n\n.action-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 14px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n margin-bottom: 8px;\n text-align: left;\n}\n\n.action-btn[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-brand-primary);\n width: 24px;\n text-align: center;\n}\n\n.action-btn[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.action-count[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.coming-soon[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.empty-state[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon[_ngcontent-%COMP%] {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 20px;\n}\n\n.empty-icon[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 36px;\n color: var(--mj-brand-primary);\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 12px;\n font-size: 20px;\n color: var(--mj-text-primary);\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n max-width: 400px;\n}\n\n.items-table-container[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.items-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.items-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.items-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 12px 16px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.items-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.items-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.items-table[_ngcontent-%COMP%] tr.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.items-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover:not(.selected) {\n background: var(--mj-bg-surface-card);\n}\n\n.col-checkbox[_ngcontent-%COMP%] {\n width: 40px;\n}\n\n.col-name[_ngcontent-%COMP%] {\n width: 35%;\n}\n\n.col-id[_ngcontent-%COMP%] {\n width: 25%;\n}\n\n.col-added[_ngcontent-%COMP%] {\n width: 20%;\n}\n\n.col-actions[_ngcontent-%COMP%] {\n width: 60px;\n text-align: right;\n}\n\n.item-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.item-name.loading[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.item-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.record-id[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 4px;\n color: var(--mj-text-secondary);\n}\n\n.items-footer[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n}\n\n.items-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n\n\n.coming-soon-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 24px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.coming-soon-banner[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-brand-primary);\n}\n\n.banner-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px;\n color: var(--mj-text-primary);\n}\n\n.banner-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n.shares-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n\n\n.activity-timeline[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n padding: 20px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n margin-bottom: 20px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n padding: 16px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.timeline-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.timeline-icon.create[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.timeline-text[_ngcontent-%COMP%] {\n margin: 0 0 4px;\n color: var(--mj-text-primary);\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.activity-info[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-status-warning);\n font-size: 14px;\n}\n\n\n\n.settings-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n\n\n.add-buttons[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n}\n\n.add-buttons[_ngcontent-%COMP%] .btn-secondary[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n\n\n.sharing-summary[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n flex: 1;\n max-width: 280px;\n}\n\n.summary-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n font-size: 20px;\n}\n\n.summary-icon.pending[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.summary-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.summary-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 600;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.summary-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.readonly-notice[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n font-size: 14px;\n}\n\n.readonly-notice[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n\n\n.dialog-content[_ngcontent-%COMP%] {\n padding: 16px 0;\n}\n\n.dialog-loading[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n gap: 16px;\n}\n\n.dialog-instruction[_ngcontent-%COMP%] {\n margin: 0 0 16px;\n color: var(--mj-text-secondary);\n}\n\n\n\n.add-records-dialog[_ngcontent-%COMP%] .search-section[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .search-input[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .search-hint[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .records-list[_ngcontent-%COMP%] {\n min-height: 280px;\n max-height: 320px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .list-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 40px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .empty-results[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: var(--mj-text-secondary);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .empty-results[_ngcontent-%COMP%] .empty-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n font-size: 24px;\n margin-bottom: 12px;\n background: var(--mj-bg-surface-card);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .selection-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .selection-info[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .records-scroll[_ngcontent-%COMP%] {\n max-height: 260px;\n overflow-y: auto;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item.in-list[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n cursor: default;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-checkbox[_ngcontent-%COMP%] {\n width: 20px;\n display: flex;\n justify-content: center;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .in-list-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .in-list-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n}\n\n\n\n.views-list[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n max-height: 320px;\n overflow-y: auto;\n}\n\n.views-list[_ngcontent-%COMP%] .empty-results[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: var(--mj-text-secondary);\n}\n\n.views-list[_ngcontent-%COMP%] .empty-results[_ngcontent-%COMP%] .empty-icon[_ngcontent-%COMP%] {\n font-size: 36px;\n color: var(--mj-border-strong);\n margin-bottom: 12px;\n}\n\n.view-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.view-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.view-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.view-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.view-item[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.view-item[_ngcontent-%COMP%] .view-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n}\n\n\n\n@media (max-width: 1024px) {\n .list-form-explorer[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n grid-template-areas:\n \"header\"\n \"nav\"\n \"main\";\n }\n\n .nav-rail[_ngcontent-%COMP%] {\n flex-direction: row;\n padding: 8px 16px;\n overflow-x: auto;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n flex-direction: row;\n padding: 10px 16px;\n gap: 8px;\n }\n\n .nav-item[_ngcontent-%COMP%]::before {\n display: none;\n }\n\n .header-stats[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .list-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .overview-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .section-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n width: 100%;\n }\n}", ".k-pane[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n}\n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n\n\n.form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n\n\n@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}"], changeDetection: 0 }); }
|
|
1685
1752
|
};
|
|
1686
1753
|
MJListFormComponentExtended = __decorate([
|
|
1687
1754
|
RegisterClass(BaseFormComponent, 'MJ: Lists')
|
|
@@ -1689,7 +1756,7 @@ MJListFormComponentExtended = __decorate([
|
|
|
1689
1756
|
export { MJListFormComponentExtended };
|
|
1690
1757
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJListFormComponentExtended, [{
|
|
1691
1758
|
type: Component,
|
|
1692
|
-
args: [{ standalone: false, selector: 'mj-list-form-extended', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- World-Class List Form -->\n<div class=\"list-form-explorer\">\n <!-- Header -->\n <header class=\"list-header\">\n <div class=\"header-content\">\n <div class=\"header-icon\" [style.background-color]=\"'var(--mj-brand-primary)'\">\n <i [class]=\"entityIcon\"></i>\n </div>\n <div class=\"header-info\">\n <div class=\"name-row\">\n @if (!isEditingName) {\n <h1 class=\"list-name\">{{record.Name || 'Untitled List'}}</h1>\n @if (isCurrentUserOwner()) {\n <button\n class=\"edit-btn\"\n (click)=\"startEditingName()\"\n title=\"Edit name\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n }\n @if (isEditingName) {\n <input\n type=\"text\"\n class=\"inline-edit-input name-input\"\n [(ngModel)]=\"editingName\"\n (keydown.enter)=\"saveNameEdit()\"\n (keydown.escape)=\"cancelNameEdit()\"\n #nameInput />\n <button class=\"save-btn\" (click)=\"saveNameEdit()\">\n <i class=\"fa-solid fa-check\"></i>\n </button>\n <button class=\"cancel-btn\" (click)=\"cancelNameEdit()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n <div class=\"entity-badge\">\n <i [class]=\"entityIcon\"></i>\n <span>{{entityDisplayName}}</span>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{formattedItemCount}}</span>\n <span class=\"stat-label\">Items</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{stats.shareCount}}</span>\n <span class=\"stat-label\">Shares</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{formattedLastUpdated}}</span>\n <span class=\"stat-label\">Updated</span>\n </div>\n </div>\n </header>\n\n <!-- Navigation Rail -->\n <nav class=\"nav-rail\">\n @for (nav of navItems; track nav) {\n <button\n class=\"nav-item\"\n [class.active]=\"activeSection === nav.id\"\n [class.disabled]=\"nav.disabled\"\n (click)=\"setActiveSection(nav.id)\"\n [title]=\"nav.label\">\n <i [class]=\"nav.icon\"></i>\n <span class=\"nav-label\">{{nav.label}}</span>\n @if (nav.badge && nav.badge > 0) {\n <span class=\"nav-badge\">{{nav.badge}}</span>\n }\n </button>\n }\n </nav>\n\n <!-- Main Content -->\n <main class=\"main-content\">\n <!-- Overview Section -->\n @if (activeSection === 'overview') {\n <section class=\"section overview-section\">\n <div class=\"overview-grid\">\n <!-- Description Card -->\n <div class=\"overview-card description-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-align-left\"></i> Description</h3>\n @if (isCurrentUserOwner() && !isEditingDescription) {\n <button\n class=\"edit-btn\"\n (click)=\"startEditingDescription()\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n </div>\n <div class=\"card-body\">\n @if (!isEditingDescription) {\n @if (record.Description) {\n <p class=\"description-text\">{{record.Description}}</p>\n }\n @if (!record.Description) {\n <p class=\"description-empty\">No description provided</p>\n }\n }\n @if (isEditingDescription) {\n <textarea\n class=\"inline-edit-input description-input\"\n [(ngModel)]=\"editingDescription\"\n placeholder=\"Add a description...\"\n rows=\"3\"\n (keydown.escape)=\"cancelDescriptionEdit()\"></textarea>\n <div class=\"edit-actions\">\n <button class=\"btn-primary\" (click)=\"saveDescriptionEdit()\">Save</button>\n <button class=\"btn-secondary\" (click)=\"cancelDescriptionEdit()\">Cancel</button>\n </div>\n }\n </div>\n </div>\n <!-- Details Card -->\n <div class=\"overview-card details-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-info-circle\"></i> Details</h3>\n </div>\n <div class=\"card-body\">\n <div class=\"detail-row\">\n <span class=\"detail-label\">Entity</span>\n <span class=\"detail-value\">\n <i [class]=\"entityIcon\" class=\"detail-icon\"></i>\n {{entityDisplayName}}\n </span>\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Category</span>\n @if (!isCurrentUserOwner()) {\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-folder detail-icon\"></i>\n {{categoryName}}\n </span>\n }\n @if (isCurrentUserOwner()) {\n <select\n class=\"category-select\"\n [ngModel]=\"record.CategoryID\"\n (ngModelChange)=\"onCategoryChange($event)\">\n <option [ngValue]=\"null\">Uncategorized</option>\n @for (cat of categories; track cat) {\n <option [ngValue]=\"cat.ID\">{{cat.Name}}</option>\n }\n </select>\n }\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Owner</span>\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-user detail-icon\"></i>\n {{getOwnerName()}}\n @if (isCurrentUserOwner()) {\n <span class=\"owner-badge\">You</span>\n }\n </span>\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Created</span>\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-calendar detail-icon\"></i>\n {{record.__mj_CreatedAt | date:'mediumDate'}}\n </span>\n </div>\n </div>\n </div>\n <!-- Quick Actions Card -->\n <div class=\"overview-card actions-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-bolt\"></i> Quick Actions</h3>\n </div>\n <div class=\"card-body\">\n <button class=\"action-btn\" (click)=\"setActiveSection('items')\">\n <i class=\"fa-solid fa-list\"></i>\n <span>View Items</span>\n <span class=\"action-count\">{{stats.itemCount}}</span>\n </button>\n @if (isCurrentUserOwner()) {\n <button class=\"action-btn\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>Share List</span>\n @if (stats.shareCount > 0) {\n <span class=\"action-count\">{{stats.shareCount}}</span>\n }\n </button>\n }\n @if (!isCurrentUserOwner()) {\n <button class=\"action-btn\" (click)=\"setActiveSection('sharing')\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>View Sharing</span>\n </button>\n }\n <button class=\"action-btn\" [disabled]=\"true\" title=\"Coming soon\">\n <i class=\"fa-solid fa-file-export\"></i>\n <span>Export Data</span>\n <span class=\"coming-soon\">Soon</span>\n </button>\n </div>\n </div>\n </div>\n </section>\n }\n\n <!-- Items Section -->\n @if (activeSection === 'items') {\n <section class=\"section items-section\">\n <div class=\"section-header\">\n <h2>List Items</h2>\n <div class=\"section-actions\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Search items...\"\n [(ngModel)]=\"itemSearchTerm\" />\n </div>\n @if (isCurrentUserOwner()) {\n <div class=\"add-buttons\">\n <button class=\"btn-secondary\" (click)=\"openAddRecordsDialog()\" title=\"Add individual records\">\n <i class=\"fa-solid fa-plus\"></i> Add Records\n </button>\n <button class=\"btn-secondary\" (click)=\"openAddFromViewDialog()\" title=\"Add records from a saved view\">\n <i class=\"fa-solid fa-table-list\"></i> Add From View\n </button>\n </div>\n }\n <button class=\"btn-icon\" (click)=\"refreshItems()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n <!-- Loading State -->\n @if (isLoadingItems) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading items...\" size=\"medium\"></mj-loading>\n </div>\n }\n <!-- Empty State -->\n @if (!isLoadingItems && listItems.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-inbox\"></i>\n </div>\n <h3>No Items Yet</h3>\n <p>This list doesn't have any items. Add records from the {{entityDisplayName}} entity.</p>\n </div>\n }\n <!-- Items Table -->\n @if (!isLoadingItems && listItems.length > 0) {\n <div class=\"items-table-container\">\n @if (selectedItems.size > 0) {\n <div class=\"items-toolbar\">\n <span class=\"selection-count\">{{selectedItems.size}} selected</span>\n <button class=\"btn-danger\" (click)=\"removeSelectedItems()\">\n <i class=\"fa-solid fa-trash\"></i>\n Remove from List\n </button>\n </div>\n }\n <table class=\"items-table\">\n <thead>\n <tr>\n <th class=\"col-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelectAllChecked\"\n (change)=\"toggleSelectAll()\" />\n </th>\n <th class=\"col-name\">Name</th>\n <th class=\"col-id\">Record ID</th>\n <th class=\"col-added\">Added</th>\n <th class=\"col-actions\"></th>\n </tr>\n </thead>\n <tbody>\n @for (item of filteredItems; track item) {\n <tr\n [class.selected]=\"selectedItems.has(item.detail.ID)\">\n <td class=\"col-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"selectedItems.has(item.detail.ID)\"\n (change)=\"toggleItemSelection(item)\" />\n </td>\n <td class=\"col-name\">\n <div class=\"item-name\" [class.loading]=\"item.isLoading\">\n <i [class]=\"entityIcon\" class=\"item-icon\"></i>\n <span>{{item.recordName}}</span>\n @if (item.isLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n </div>\n </td>\n <td class=\"col-id\">\n <code class=\"record-id\">{{item.detail.RecordID}}</code>\n </td>\n <td class=\"col-added\">\n {{item.detail.__mj_CreatedAt | date:'shortDate'}}\n </td>\n <td class=\"col-actions\">\n <button\n class=\"btn-icon\"\n (click)=\"openRecord(item)\"\n title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n <div class=\"items-footer\">\n <span class=\"items-count\">\n Showing {{filteredItems.length}} of {{listItems.length}} items\n </span>\n </div>\n </div>\n }\n </section>\n }\n\n <!-- Sharing Section -->\n @if (activeSection === 'sharing') {\n <section class=\"section sharing-section\">\n <div class=\"section-header\">\n <h2>Sharing</h2>\n @if (isCurrentUserOwner()) {\n <div class=\"section-actions\">\n <button class=\"btn-primary\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-user-plus\"></i> Manage Sharing\n </button>\n </div>\n }\n </div>\n <!-- Sharing summary -->\n @if (stats.shareCount > 0 || stats.invitationCount > 0) {\n <div class=\"sharing-summary\">\n <div class=\"summary-card\">\n <div class=\"summary-icon\">\n <i class=\"fa-solid fa-users\"></i>\n </div>\n <div class=\"summary-content\">\n <span class=\"summary-value\">{{stats.shareCount}}</span>\n <span class=\"summary-label\">Active Share{{stats.shareCount !== 1 ? 's' : ''}}</span>\n </div>\n </div>\n @if (stats.invitationCount > 0) {\n <div class=\"summary-card\">\n <div class=\"summary-icon pending\">\n <i class=\"fa-solid fa-envelope\"></i>\n </div>\n <div class=\"summary-content\">\n <span class=\"summary-value\">{{stats.invitationCount}}</span>\n <span class=\"summary-label\">Pending Invitation{{stats.invitationCount !== 1 ? 's' : ''}}</span>\n </div>\n </div>\n }\n </div>\n }\n <!-- Empty state for no shares -->\n @if (stats.shareCount === 0 && stats.invitationCount === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n </div>\n <h3>Not Shared Yet</h3>\n @if (isCurrentUserOwner()) {\n <p>This list is private. Click \"Manage Sharing\" to share it with other users or roles.</p>\n }\n @if (!isCurrentUserOwner()) {\n <p>This list hasn't been shared with anyone else.</p>\n }\n @if (isCurrentUserOwner()) {\n <button class=\"btn-primary\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-user-plus\"></i> Share This List\n </button>\n }\n </div>\n }\n <!-- Read-only notice for non-owners -->\n @if (!isCurrentUserOwner() && (stats.shareCount > 0 || stats.invitationCount > 0)) {\n <div class=\"readonly-notice\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>Only the list owner can manage sharing settings.</span>\n </div>\n }\n </section>\n }\n\n <!-- Activity Section -->\n @if (activeSection === 'activity') {\n <section class=\"section activity-section\">\n <div class=\"section-header\">\n <h2>Activity</h2>\n </div>\n <div class=\"activity-timeline\">\n <div class=\"timeline-item\">\n <div class=\"timeline-icon\">\n <i class=\"fa-solid fa-edit\"></i>\n </div>\n <div class=\"timeline-content\">\n <p class=\"timeline-text\">List updated</p>\n <span class=\"timeline-date\">{{record.__mj_UpdatedAt | date:'medium'}}</span>\n </div>\n </div>\n <div class=\"timeline-item\">\n <div class=\"timeline-icon create\">\n <i class=\"fa-solid fa-plus\"></i>\n </div>\n <div class=\"timeline-content\">\n <p class=\"timeline-text\">List created</p>\n <span class=\"timeline-date\">{{record.__mj_CreatedAt | date:'medium'}}</span>\n </div>\n </div>\n </div>\n <div class=\"activity-info\">\n <p>Detailed activity tracking coming soon. You'll be able to see who added items, when shares were created, and more.</p>\n </div>\n </section>\n }\n\n <!-- Settings Section -->\n @if (activeSection === 'settings') {\n <section class=\"section settings-section\">\n <div class=\"section-header\">\n <h2>Settings</h2>\n </div>\n <div class=\"settings-form\">\n <mj-collapsible-panel\n SectionKey=\"listSettings\"\n SectionName=\"List Settings\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"form-body\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Name\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Description\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"CategoryID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n LinkComponentType=\"Search\">\n </mj-form-field>\n </div>\n </mj-collapsible-panel>\n <mj-collapsible-panel\n SectionKey=\"systemInfo\"\n SectionName=\"System Information\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"form-body\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EntityID\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserID\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n </div>\n </mj-collapsible-panel>\n </div>\n </section>\n }\n </main>\n</div>\n\n<!-- Add Records Dialog -->\n@if (showAddRecordsDialog) {\n <mj-dialog\n [Title]=\"'Add ' + entityDisplayName + ' to List'\"\n (Close)=\"closeAddRecordsDialog()\"\n [Visible]=\"showAddRecordsDialog\"\n [MinWidth]=\"400\"\n [Width]=\"600\"\n [Height]=\"550\">\n <div class=\"dialog-content add-records-dialog\">\n @if (addDialogSaving) {\n <div class=\"dialog-loading\">\n <mj-loading [text]=\"'Adding ' + addTotal + ' records to list...'\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!addDialogSaving) {\n <!-- Search Input -->\n <div class=\"search-section\">\n <div class=\"search-input-wrapper\">\n <span class=\"fa-solid fa-search search-icon\"></span>\n <input\n type=\"text\"\n class=\"mj-input search-input\"\n [placeholder]=\"'Search ' + entityDisplayName + '...'\"\n [(ngModel)]=\"addRecordsSearchFilter\"\n (ngModelChange)=\"onAddRecordsSearchChange($event)\" />\n </div>\n <span class=\"search-hint\">Type at least 2 characters to search</span>\n </div>\n <!-- Records List -->\n <div class=\"records-list\">\n @if (addDialogLoading) {\n <div class=\"list-loading\">\n <mj-loading [showText]=\"false\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!addDialogLoading && addableRecords.length === 0 && addRecordsSearchFilter.length >= 2) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-search empty-icon\"></span>\n <p>No records found matching \"{{ addRecordsSearchFilter }}\"</p>\n </div>\n }\n @if (!addDialogLoading && addableRecords.length === 0 && addRecordsSearchFilter.length < 2) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-list empty-icon\"></span>\n <p>Search for records to add to this list</p>\n </div>\n }\n @if (!addDialogLoading && addableRecords.length > 0) {\n <!-- Selection controls -->\n <div class=\"selection-controls\">\n <button mjButton variant=\"flat\" (click)=\"selectAllAddable()\">Select All</button>\n <button mjButton variant=\"flat\" (click)=\"deselectAllAddable()\">Deselect All</button>\n <span class=\"selection-info\">{{ selectedAddableRecords.length }} selected</span>\n </div>\n <!-- Records -->\n <div class=\"records-scroll\">\n @for (record of addableRecords; track record) {\n <div class=\"record-item\"\n [class.in-list]=\"record.isInList\"\n [class.selected]=\"record.isSelected\"\n (click)=\"toggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.isInList) {\n <span class=\"fa-solid fa-check in-list-icon\" title=\"Already in list\"></span>\n }\n @if (!record.isInList) {\n <input type=\"checkbox\"\n [checked]=\"record.isSelected\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRecordSelection(record)\">\n }\n </div>\n <div class=\"record-name\">{{ record.Name }}</div>\n @if (record.isInList) {\n <span class=\"in-list-badge\">In List</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton\n (click)=\"confirmAddRecords()\"\n [disabled]=\"addDialogSaving || selectedAddableRecords.length === 0\"\n variant=\"primary\">\n Add {{ selectedAddableRecords.length > 0 ? selectedAddableRecords.length : '' }} Record{{ selectedAddableRecords.length !== 1 ? 's' : '' }}\n </button>\n <button mjButton\n (click)=\"closeAddRecordsDialog()\"\n [disabled]=\"addDialogSaving\">\n Cancel\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n\n<!-- Add From View Dialog -->\n@if (showAddFromViewDialog) {\n <mj-dialog\n Title=\"Add Records from Views\"\n (Close)=\"closeAddFromViewDialog()\"\n [Visible]=\"showAddFromViewDialog\"\n [MinWidth]=\"400\"\n [Width]=\"600\"\n [Height]=\"500\">\n <div class=\"dialog-content\">\n @if (showAddFromViewLoader && fetchingRecordsToSave) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading records from views...\" size=\"small\"></mj-loading>\n </div>\n }\n @if (showAddFromViewLoader && addFromViewTotal > 0 && !fetchingRecordsToSave) {\n <div class=\"dialog-loading\">\n <mj-loading [text]=\"'Adding ' + addFromViewTotal + ' records to list...'\" size=\"small\"></mj-loading>\n </div>\n }\n @if (showAddFromViewLoader && !fetchingRecordsToSave && addFromViewTotal === 0) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading views...\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!showAddFromViewLoader) {\n <p class=\"dialog-instruction\">Select views to add their records to this list:</p>\n <div class=\"views-list\">\n @if (!userViews || userViews.length === 0) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-folder-open empty-icon\"></span>\n <p>No saved views found for this entity</p>\n </div>\n }\n @if (userViews && userViews.length > 0) {\n @for (view of userViews; track view) {\n <div class=\"view-item\"\n [class.selected]=\"isViewSelected(view)\"\n (click)=\"toggleViewSelection(view)\">\n <input type=\"checkbox\"\n [checked]=\"isViewSelected(view)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleViewSelection(view)\">\n <span class=\"fa-solid fa-table-list view-icon\"></span>\n <span class=\"view-name\">{{ view.Name }}</span>\n </div>\n }\n }\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton\n (click)=\"confirmAddFromView()\"\n [disabled]=\"showAddFromViewLoader || userViewsToAdd.length === 0\"\n variant=\"primary\">\n Add from {{ userViewsToAdd.length }} View{{ userViewsToAdd.length !== 1 ? 's' : '' }}\n </button>\n <button mjButton\n (click)=\"closeAddFromViewDialog()\"\n [disabled]=\"showAddFromViewLoader\">\n Cancel\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n\n<!-- Share Dialog -->\n@if (showShareDialog && shareDialogConfig) {\n <mj-list-share-dialog\n [config]=\"shareDialogConfig\"\n [visible]=\"showShareDialog\"\n (complete)=\"onShareDialogComplete($event)\"\n (cancel)=\"onShareDialogCancel()\">\n </mj-list-share-dialog>\n}\n", styles: ["/* ============================================\n WORLD-CLASS LIST FORM STYLES\n ============================================ */\n\n:host {\n display: block;\n height: 100%;\n}\n\n/* Layout */\n.list-form-explorer {\n display: grid;\n grid-template-areas:\n \"header header\"\n \"nav main\";\n grid-template-columns: 64px 1fr;\n grid-template-rows: auto 1fr;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\n}\n\n/* Header */\n.list-header {\n grid-area: header;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.header-content {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.header-icon {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.header-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.name-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.list-name {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-btn {\n background: none;\n border: none;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.inline-edit-input {\n padding: 8px 12px;\n border: 2px solid var(--mj-brand-primary);\n border-radius: 6px;\n font-size: inherit;\n background: var(--mj-bg-surface);\n outline: none;\n}\n\n.name-input {\n font-size: 24px;\n font-weight: 600;\n min-width: 300px;\n}\n\n.save-btn, .cancel-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.save-btn {\n color: var(--mj-status-success);\n}\n\n.save-btn:hover {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.cancel-btn {\n color: var(--mj-status-error);\n}\n\n.cancel-btn:hover {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.entity-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 16px;\n font-size: 13px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.entity-badge i {\n font-size: 12px;\n}\n\n.header-stats {\n display: flex;\n gap: 32px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 80px;\n}\n\n.stat-value {\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.stat-label {\n font-size: 12px;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Navigation Rail */\n.nav-rail {\n grid-area: nav;\n display: flex;\n flex-direction: column;\n padding: 16px 8px;\n background: var(--mj-text-primary);\n gap: 4px;\n}\n\n.nav-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 12px 8px;\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s;\n position: relative;\n}\n\n.nav-item:hover:not(.disabled) {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n}\n\n.nav-item.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n color: color-mix(in srgb, var(--mj-brand-primary) 60%, white);\n}\n\n.nav-item.active::before {\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 24px;\n background: var(--mj-brand-primary);\n border-radius: 0 3px 3px 0;\n}\n\n.nav-item.disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.nav-item i {\n font-size: 18px;\n}\n\n.nav-label {\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.nav-badge {\n position: absolute;\n top: 6px;\n right: 6px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: var(--mj-brand-primary);\n border-radius: 9px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Main Content */\n.main-content {\n grid-area: main;\n padding: 24px;\n overflow-y: auto;\n}\n\n.section {\n animation: fadeIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n}\n\n.section-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-actions {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n/* Search Box */\n.search-box {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box i {\n position: absolute;\n left: 12px;\n color: var(--mj-text-disabled);\n}\n\n.search-box input {\n padding: 10px 12px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n width: 250px;\n transition: all 0.2s;\n}\n\n.search-box input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n/* Overview Section */\n.overview-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 20px;\n}\n\n.overview-card {\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.card-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.card-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.card-header h3 i {\n color: var(--mj-text-disabled);\n}\n\n.card-body {\n padding: 20px;\n}\n\n.description-text {\n margin: 0;\n color: var(--mj-text-primary);\n line-height: 1.6;\n}\n\n.description-empty {\n margin: 0;\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.description-input {\n width: 100%;\n resize: vertical;\n font-family: inherit;\n}\n\n.edit-actions {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.btn-primary {\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.btn-primary:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n}\n\n.btn-secondary {\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-secondary:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.btn-icon {\n background: none;\n border: 1px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n}\n\n.btn-danger {\n padding: 8px 16px;\n background: var(--mj-status-error);\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s;\n}\n\n.btn-danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 85%, black);\n}\n\n/* Details Card */\n.detail-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-bg-surface-card);\n}\n\n.detail-row:last-child {\n border-bottom: none;\n}\n\n.detail-label {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.detail-value {\n font-size: 14px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.owner-badge {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-select {\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n}\n\n.category-select:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n/* Actions Card */\n.action-btn {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 14px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n margin-bottom: 8px;\n text-align: left;\n}\n\n.action-btn:last-child {\n margin-bottom: 0;\n}\n\n.action-btn:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.action-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.action-btn i {\n font-size: 18px;\n color: var(--mj-brand-primary);\n width: 24px;\n text-align: center;\n}\n\n.action-btn span:first-of-type {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.action-count {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.coming-soon {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n/* Items Section */\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 36px;\n color: var(--mj-brand-primary);\n}\n\n.empty-state h3 {\n margin: 0 0 12px;\n font-size: 20px;\n color: var(--mj-text-primary);\n}\n\n.empty-state p {\n margin: 0;\n color: var(--mj-text-secondary);\n max-width: 400px;\n}\n\n.items-table-container {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.items-toolbar {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.selection-count {\n font-size: 14px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.items-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.items-table th {\n text-align: left;\n padding: 12px 16px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.items-table td {\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.items-table tr:last-child td {\n border-bottom: none;\n}\n\n.items-table tr.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.items-table tr:hover:not(.selected) {\n background: var(--mj-bg-surface-card);\n}\n\n.col-checkbox {\n width: 40px;\n}\n\n.col-name {\n width: 35%;\n}\n\n.col-id {\n width: 25%;\n}\n\n.col-added {\n width: 20%;\n}\n\n.col-actions {\n width: 60px;\n text-align: right;\n}\n\n.item-name {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.item-name.loading {\n color: var(--mj-text-disabled);\n}\n\n.item-icon {\n color: var(--mj-text-disabled);\n}\n\n.record-id {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 4px;\n color: var(--mj-text-secondary);\n}\n\n.items-footer {\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n}\n\n.items-count {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n/* Sharing Section */\n.coming-soon-banner {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 24px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.coming-soon-banner > i {\n font-size: 48px;\n color: var(--mj-brand-primary);\n}\n\n.banner-content h3 {\n margin: 0 0 8px;\n color: var(--mj-text-primary);\n}\n\n.banner-content p {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n.shares-grid {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n/* Activity Section */\n.activity-timeline {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n padding: 20px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n margin-bottom: 20px;\n}\n\n.timeline-item {\n display: flex;\n gap: 16px;\n padding: 16px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.timeline-item:last-child {\n border-bottom: none;\n}\n\n.timeline-icon {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.timeline-icon.create {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-content {\n flex: 1;\n}\n\n.timeline-text {\n margin: 0 0 4px;\n color: var(--mj-text-primary);\n}\n\n.timeline-date {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.activity-info {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info p {\n margin: 0;\n color: var(--mj-status-warning);\n font-size: 14px;\n}\n\n/* Settings Section */\n.settings-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n/* Add Buttons in Items Section */\n.add-buttons {\n display: flex;\n gap: 8px;\n}\n\n.add-buttons .btn-secondary {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Sharing Summary */\n.sharing-summary {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n flex: 1;\n max-width: 280px;\n}\n\n.summary-icon {\n width: 48px;\n height: 48px;\n border-radius: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n font-size: 20px;\n}\n\n.summary-icon.pending {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.summary-content {\n display: flex;\n flex-direction: column;\n}\n\n.summary-value {\n font-size: 28px;\n font-weight: 600;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.summary-label {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.readonly-notice {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n font-size: 14px;\n}\n\n.readonly-notice i {\n color: var(--mj-text-disabled);\n}\n\n/* Dialog Styles */\n.dialog-content {\n padding: 16px 0;\n}\n\n.dialog-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n gap: 16px;\n}\n\n.dialog-instruction {\n margin: 0 0 16px;\n color: var(--mj-text-secondary);\n}\n\n/* Add Records Dialog */\n.add-records-dialog .search-section {\n margin-bottom: 16px;\n}\n\n.add-records-dialog .search-input {\n width: 100%;\n}\n\n.add-records-dialog .search-hint {\n display: block;\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n}\n\n.add-records-dialog .records-list {\n min-height: 280px;\n max-height: 320px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n}\n\n.add-records-dialog .list-loading {\n display: flex;\n justify-content: center;\n padding: 40px;\n}\n\n.add-records-dialog .empty-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: var(--mj-text-secondary);\n}\n\n.add-records-dialog .empty-results .empty-icon {\n width: 48px;\n height: 48px;\n font-size: 24px;\n margin-bottom: 12px;\n background: var(--mj-bg-surface-card);\n}\n\n.add-records-dialog .selection-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.add-records-dialog .selection-info {\n margin-left: auto;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.add-records-dialog .records-scroll {\n max-height: 260px;\n overflow-y: auto;\n}\n\n.add-records-dialog .record-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.add-records-dialog .record-item:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.add-records-dialog .record-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.add-records-dialog .record-item.in-list {\n background: var(--mj-bg-surface-card);\n cursor: default;\n}\n\n.add-records-dialog .record-checkbox {\n width: 20px;\n display: flex;\n justify-content: center;\n}\n\n.add-records-dialog .in-list-icon {\n color: var(--mj-status-success);\n}\n\n.add-records-dialog .record-name {\n flex: 1;\n font-size: 14px;\n}\n\n.add-records-dialog .in-list-badge {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n}\n\n/* Add From View Dialog */\n.views-list {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n max-height: 320px;\n overflow-y: auto;\n}\n\n.views-list .empty-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: var(--mj-text-secondary);\n}\n\n.views-list .empty-results .empty-icon {\n font-size: 36px;\n color: var(--mj-border-strong);\n margin-bottom: 12px;\n}\n\n.view-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.view-item:last-child {\n border-bottom: none;\n}\n\n.view-item:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.view-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.view-item .view-icon {\n color: var(--mj-brand-primary);\n}\n\n.view-item .view-name {\n flex: 1;\n font-size: 14px;\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .list-form-explorer {\n grid-template-columns: 1fr;\n grid-template-areas:\n \"header\"\n \"nav\"\n \"main\";\n }\n\n .nav-rail {\n flex-direction: row;\n padding: 8px 16px;\n overflow-x: auto;\n }\n\n .nav-item {\n flex-direction: row;\n padding: 10px 16px;\n gap: 8px;\n }\n\n .nav-item::before {\n display: none;\n }\n\n .header-stats {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .list-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .overview-grid {\n grid-template-columns: 1fr;\n }\n\n .search-box input {\n width: 100%;\n }\n\n .section-actions {\n flex-direction: column;\n align-items: stretch;\n width: 100%;\n }\n}\n", ".k-pane {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n"] }]
|
|
1759
|
+
args: [{ standalone: false, selector: 'mj-list-form-extended', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- World-Class List Form -->\n<div class=\"list-form-explorer\">\n <!-- Header -->\n <header class=\"list-header\">\n <div class=\"header-content\">\n <div class=\"header-icon\" [style.background-color]=\"'var(--mj-brand-primary)'\">\n <i [class]=\"entityIcon\"></i>\n </div>\n <div class=\"header-info\">\n <div class=\"name-row\">\n @if (!isEditingName) {\n <h1 class=\"list-name\">{{record.Name || 'Untitled List'}}</h1>\n @if (isCurrentUserOwner()) {\n <button\n class=\"edit-btn\"\n (click)=\"startEditingName()\"\n title=\"Edit name\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n }\n @if (isEditingName) {\n <input\n type=\"text\"\n class=\"inline-edit-input name-input\"\n [(ngModel)]=\"editingName\"\n (keydown.enter)=\"saveNameEdit()\"\n (keydown.escape)=\"cancelNameEdit()\"\n #nameInput />\n <button class=\"save-btn\" (click)=\"saveNameEdit()\">\n <i class=\"fa-solid fa-check\"></i>\n </button>\n <button class=\"cancel-btn\" (click)=\"cancelNameEdit()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n <div class=\"entity-badge\">\n <i [class]=\"entityIcon\"></i>\n <span>{{entityDisplayName}}</span>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{formattedItemCount}}</span>\n <span class=\"stat-label\">Items</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{stats.shareCount}}</span>\n <span class=\"stat-label\">Shares</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{formattedLastUpdated}}</span>\n <span class=\"stat-label\">Updated</span>\n </div>\n </div>\n </header>\n\n <!-- Navigation Rail -->\n <nav class=\"nav-rail\">\n @for (nav of navItems; track nav) {\n <button\n class=\"nav-item\"\n [class.active]=\"activeSection === nav.id\"\n [class.disabled]=\"nav.disabled\"\n (click)=\"setActiveSection(nav.id)\"\n [title]=\"nav.label\">\n <i [class]=\"nav.icon\"></i>\n <span class=\"nav-label\">{{nav.label}}</span>\n @if (nav.badge && nav.badge > 0) {\n <span class=\"nav-badge\">{{nav.badge}}</span>\n }\n </button>\n }\n </nav>\n\n <!-- Main Content -->\n <main class=\"main-content\">\n <!-- Overview Section -->\n @if (activeSection === 'overview') {\n <section class=\"section overview-section\">\n <div class=\"overview-grid\">\n <!-- Description Card -->\n <div class=\"overview-card description-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-align-left\"></i> Description</h3>\n @if (isCurrentUserOwner() && !isEditingDescription) {\n <button\n class=\"edit-btn\"\n (click)=\"startEditingDescription()\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n </div>\n <div class=\"card-body\">\n @if (!isEditingDescription) {\n @if (record.Description) {\n <p class=\"description-text\">{{record.Description}}</p>\n }\n @if (!record.Description) {\n <p class=\"description-empty\">No description provided</p>\n }\n }\n @if (isEditingDescription) {\n <textarea\n class=\"inline-edit-input description-input\"\n [(ngModel)]=\"editingDescription\"\n placeholder=\"Add a description...\"\n rows=\"3\"\n (keydown.escape)=\"cancelDescriptionEdit()\"></textarea>\n <div class=\"edit-actions\">\n <button class=\"btn-primary\" (click)=\"saveDescriptionEdit()\">Save</button>\n <button class=\"btn-secondary\" (click)=\"cancelDescriptionEdit()\">Cancel</button>\n </div>\n }\n </div>\n </div>\n <!-- Details Card -->\n <div class=\"overview-card details-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-info-circle\"></i> Details</h3>\n </div>\n <div class=\"card-body\">\n <div class=\"detail-row\">\n <span class=\"detail-label\">Entity</span>\n <span class=\"detail-value\">\n <i [class]=\"entityIcon\" class=\"detail-icon\"></i>\n {{entityDisplayName}}\n </span>\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Category</span>\n @if (!isCurrentUserOwner()) {\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-folder detail-icon\"></i>\n {{categoryName}}\n </span>\n }\n @if (isCurrentUserOwner()) {\n <select\n class=\"category-select\"\n [ngModel]=\"record.CategoryID\"\n (ngModelChange)=\"onCategoryChange($event)\">\n <option [ngValue]=\"null\">Uncategorized</option>\n @for (cat of categories; track cat) {\n <option [ngValue]=\"cat.ID\">{{cat.Name}}</option>\n }\n </select>\n }\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Owner</span>\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-user detail-icon\"></i>\n {{getOwnerName()}}\n @if (isCurrentUserOwner()) {\n <span class=\"owner-badge\">You</span>\n }\n </span>\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Created</span>\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-calendar detail-icon\"></i>\n {{record.__mj_CreatedAt | date:'mediumDate'}}\n </span>\n </div>\n </div>\n </div>\n <!-- Quick Actions Card -->\n <div class=\"overview-card actions-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-bolt\"></i> Quick Actions</h3>\n </div>\n <div class=\"card-body\">\n <button class=\"action-btn\" (click)=\"setActiveSection('items')\">\n <i class=\"fa-solid fa-list\"></i>\n <span>View Items</span>\n <span class=\"action-count\">{{stats.itemCount}}</span>\n </button>\n @if (isCurrentUserOwner()) {\n <button class=\"action-btn\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>Share List</span>\n @if (stats.shareCount > 0) {\n <span class=\"action-count\">{{stats.shareCount}}</span>\n }\n </button>\n }\n @if (!isCurrentUserOwner()) {\n <button class=\"action-btn\" (click)=\"setActiveSection('sharing')\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>View Sharing</span>\n </button>\n }\n <button class=\"action-btn\" [disabled]=\"true\" title=\"Coming soon\">\n <i class=\"fa-solid fa-file-export\"></i>\n <span>Export Data</span>\n <span class=\"coming-soon\">Soon</span>\n </button>\n </div>\n </div>\n </div>\n </section>\n }\n\n <!-- Items Section -->\n @if (activeSection === 'items') {\n <section class=\"section items-section\">\n <div class=\"section-header\">\n <h2>List Items</h2>\n <div class=\"section-actions\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Search items...\"\n [(ngModel)]=\"itemSearchTerm\" />\n </div>\n @if (isCurrentUserOwner()) {\n <div class=\"add-buttons\">\n <button class=\"btn-secondary\" (click)=\"openAddRecordsDialog()\" title=\"Add individual records\">\n <i class=\"fa-solid fa-plus\"></i> Add Records\n </button>\n <button class=\"btn-secondary\" (click)=\"openAddFromViewDialog()\" title=\"Add records from a saved view\">\n <i class=\"fa-solid fa-table-list\"></i> Add From View\n </button>\n </div>\n }\n <button class=\"btn-icon\" (click)=\"refreshItems()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n <!-- Loading State -->\n @if (isLoadingItems) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading items...\" size=\"medium\"></mj-loading>\n </div>\n }\n <!-- Empty State -->\n @if (!isLoadingItems && listItems.length === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-inbox\"></i>\n </div>\n <h3>No Items Yet</h3>\n <p>This list doesn't have any items. Add records from the {{entityDisplayName}} entity.</p>\n </div>\n }\n <!-- Items Table -->\n @if (!isLoadingItems && listItems.length > 0) {\n <div class=\"items-table-container\">\n @if (selectedItems.size > 0) {\n <div class=\"items-toolbar\">\n <span class=\"selection-count\">{{selectedItems.size}} selected</span>\n <button class=\"btn-danger\" (click)=\"removeSelectedItems()\">\n <i class=\"fa-solid fa-trash\"></i>\n Remove from List\n </button>\n </div>\n }\n <table class=\"items-table\">\n <thead>\n <tr>\n <th class=\"col-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelectAllChecked\"\n (change)=\"toggleSelectAll()\" />\n </th>\n <th class=\"col-name\">Name</th>\n <th class=\"col-id\">Record ID</th>\n <th class=\"col-added\">Added</th>\n <th class=\"col-actions\"></th>\n </tr>\n </thead>\n <tbody>\n @for (item of filteredItems; track item) {\n <tr\n [class.selected]=\"selectedItems.has(item.detail.ID)\">\n <td class=\"col-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"selectedItems.has(item.detail.ID)\"\n (change)=\"toggleItemSelection(item)\" />\n </td>\n <td class=\"col-name\">\n <div class=\"item-name\" [class.loading]=\"item.isLoading\">\n <i [class]=\"entityIcon\" class=\"item-icon\"></i>\n <span>{{item.recordName}}</span>\n @if (item.isLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n </div>\n </td>\n <td class=\"col-id\">\n <code class=\"record-id\">{{item.detail.RecordID}}</code>\n </td>\n <td class=\"col-added\">\n {{item.detail.__mj_CreatedAt | date:'shortDate'}}\n </td>\n <td class=\"col-actions\">\n <button\n class=\"btn-icon\"\n (click)=\"openRecord(item)\"\n title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n <div class=\"items-footer\">\n <span class=\"items-count\">\n Showing {{filteredItems.length}} of {{listItems.length}} items\n </span>\n </div>\n </div>\n }\n </section>\n }\n\n <!-- Sharing Section -->\n @if (activeSection === 'sharing') {\n <section class=\"section sharing-section\">\n <div class=\"section-header\">\n <h2>Sharing</h2>\n @if (isCurrentUserOwner()) {\n <div class=\"section-actions\">\n <button class=\"btn-primary\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-user-plus\"></i> Manage Sharing\n </button>\n </div>\n }\n </div>\n <!-- Sharing summary -->\n @if (stats.shareCount > 0 || stats.invitationCount > 0) {\n <div class=\"sharing-summary\">\n <div class=\"summary-card\">\n <div class=\"summary-icon\">\n <i class=\"fa-solid fa-users\"></i>\n </div>\n <div class=\"summary-content\">\n <span class=\"summary-value\">{{stats.shareCount}}</span>\n <span class=\"summary-label\">Active Share{{stats.shareCount !== 1 ? 's' : ''}}</span>\n </div>\n </div>\n @if (stats.invitationCount > 0) {\n <div class=\"summary-card\">\n <div class=\"summary-icon pending\">\n <i class=\"fa-solid fa-envelope\"></i>\n </div>\n <div class=\"summary-content\">\n <span class=\"summary-value\">{{stats.invitationCount}}</span>\n <span class=\"summary-label\">Pending Invitation{{stats.invitationCount !== 1 ? 's' : ''}}</span>\n </div>\n </div>\n }\n </div>\n }\n <!-- Empty state for no shares -->\n @if (stats.shareCount === 0 && stats.invitationCount === 0) {\n <div class=\"empty-state\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n </div>\n <h3>Not Shared Yet</h3>\n @if (isCurrentUserOwner()) {\n <p>This list is private. Click \"Manage Sharing\" to share it with other users or roles.</p>\n }\n @if (!isCurrentUserOwner()) {\n <p>This list hasn't been shared with anyone else.</p>\n }\n @if (isCurrentUserOwner()) {\n <button class=\"btn-primary\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-user-plus\"></i> Share This List\n </button>\n }\n </div>\n }\n <!-- Read-only notice for non-owners -->\n @if (!isCurrentUserOwner() && (stats.shareCount > 0 || stats.invitationCount > 0)) {\n <div class=\"readonly-notice\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>Only the list owner can manage sharing settings.</span>\n </div>\n }\n </section>\n }\n\n <!-- Activity Section -->\n @if (activeSection === 'activity') {\n <section class=\"section activity-section\">\n <div class=\"section-header\">\n <h2>Activity</h2>\n </div>\n <div class=\"activity-timeline\">\n <div class=\"timeline-item\">\n <div class=\"timeline-icon\">\n <i class=\"fa-solid fa-edit\"></i>\n </div>\n <div class=\"timeline-content\">\n <p class=\"timeline-text\">List updated</p>\n <span class=\"timeline-date\">{{record.__mj_UpdatedAt | date:'medium'}}</span>\n </div>\n </div>\n <div class=\"timeline-item\">\n <div class=\"timeline-icon create\">\n <i class=\"fa-solid fa-plus\"></i>\n </div>\n <div class=\"timeline-content\">\n <p class=\"timeline-text\">List created</p>\n <span class=\"timeline-date\">{{record.__mj_CreatedAt | date:'medium'}}</span>\n </div>\n </div>\n </div>\n <div class=\"activity-info\">\n <p>Detailed activity tracking coming soon. You'll be able to see who added items, when shares were created, and more.</p>\n </div>\n </section>\n }\n\n <!-- Settings Section -->\n @if (activeSection === 'settings') {\n <section class=\"section settings-section\">\n <div class=\"section-header\">\n <h2>Settings</h2>\n </div>\n <div class=\"settings-form\">\n <mj-collapsible-panel\n SectionKey=\"listSettings\"\n SectionName=\"List Settings\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"form-body\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Name\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Description\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"CategoryID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n LinkComponentType=\"Search\">\n </mj-form-field>\n </div>\n </mj-collapsible-panel>\n <mj-collapsible-panel\n SectionKey=\"systemInfo\"\n SectionName=\"System Information\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"form-body\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EntityID\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserID\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n </div>\n </mj-collapsible-panel>\n </div>\n </section>\n }\n </main>\n</div>\n\n<!-- Add Records Dialog -->\n@if (showAddRecordsDialog) {\n <mj-dialog\n [Title]=\"'Add ' + entityDisplayName + ' to List'\"\n (Close)=\"closeAddRecordsDialog()\"\n [Visible]=\"showAddRecordsDialog\"\n [MinWidth]=\"400\"\n [Width]=\"600\"\n [Height]=\"550\">\n <div class=\"dialog-content add-records-dialog\">\n @if (addDialogSaving) {\n <div class=\"dialog-loading\">\n <mj-loading [text]=\"'Adding ' + addTotal + ' records to list...'\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!addDialogSaving) {\n <!-- Search Input -->\n <div class=\"search-section\">\n <div class=\"search-input-wrapper\">\n <span class=\"fa-solid fa-search search-icon\"></span>\n <input\n type=\"text\"\n class=\"mj-input search-input\"\n [placeholder]=\"'Search ' + entityDisplayName + '...'\"\n [(ngModel)]=\"addRecordsSearchFilter\"\n (ngModelChange)=\"onAddRecordsSearchChange($event)\" />\n </div>\n <span class=\"search-hint\">Type at least 2 characters to search</span>\n </div>\n <!-- Records List -->\n <div class=\"records-list\">\n @if (addDialogLoading) {\n <div class=\"list-loading\">\n <mj-loading [showText]=\"false\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!addDialogLoading && addableRecords.length === 0 && addRecordsSearchFilter.length >= 2) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-search empty-icon\"></span>\n <p>No records found matching \"{{ addRecordsSearchFilter }}\"</p>\n </div>\n }\n @if (!addDialogLoading && addableRecords.length === 0 && addRecordsSearchFilter.length < 2) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-list empty-icon\"></span>\n <p>Search for records to add to this list</p>\n </div>\n }\n @if (!addDialogLoading && addableRecords.length > 0) {\n <!-- Selection controls -->\n <div class=\"selection-controls\">\n <button mjButton variant=\"flat\" (click)=\"selectAllAddable()\">Select All</button>\n <button mjButton variant=\"flat\" (click)=\"deselectAllAddable()\">Deselect All</button>\n <span class=\"selection-info\">{{ selectedAddableRecords.length }} selected</span>\n </div>\n <!-- Records -->\n <div class=\"records-scroll\">\n @for (record of addableRecords; track record) {\n <div class=\"record-item\"\n [class.in-list]=\"record.isInList\"\n [class.selected]=\"record.isSelected\"\n (click)=\"toggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.isInList) {\n <span class=\"fa-solid fa-check in-list-icon\" title=\"Already in list\"></span>\n }\n @if (!record.isInList) {\n <input type=\"checkbox\"\n [checked]=\"record.isSelected\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRecordSelection(record)\">\n }\n </div>\n <div class=\"record-name\">{{ record.Name }}</div>\n @if (record.isInList) {\n <span class=\"in-list-badge\">In List</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton\n (click)=\"confirmAddRecords()\"\n [disabled]=\"addDialogSaving || selectedAddableRecords.length === 0\"\n variant=\"primary\">\n Add {{ selectedAddableRecords.length > 0 ? selectedAddableRecords.length : '' }} Record{{ selectedAddableRecords.length !== 1 ? 's' : '' }}\n </button>\n <button mjButton\n (click)=\"closeAddRecordsDialog()\"\n [disabled]=\"addDialogSaving\">\n Cancel\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n\n<!-- Add From View Dialog -->\n@if (showAddFromViewDialog) {\n <mj-dialog\n Title=\"Add Records from Views\"\n (Close)=\"closeAddFromViewDialog()\"\n [Visible]=\"showAddFromViewDialog\"\n [MinWidth]=\"400\"\n [Width]=\"600\"\n [Height]=\"500\">\n <div class=\"dialog-content\">\n @if (showAddFromViewLoader && fetchingRecordsToSave) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading records from views...\" size=\"small\"></mj-loading>\n </div>\n }\n @if (showAddFromViewLoader && addFromViewTotal > 0 && !fetchingRecordsToSave) {\n <div class=\"dialog-loading\">\n <mj-loading [text]=\"'Adding ' + addFromViewTotal + ' records to list...'\" size=\"small\"></mj-loading>\n </div>\n }\n @if (showAddFromViewLoader && !fetchingRecordsToSave && addFromViewTotal === 0) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading views...\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!showAddFromViewLoader) {\n <p class=\"dialog-instruction\">Select views to add their records to this list:</p>\n <div class=\"views-list\">\n @if (!userViews || userViews.length === 0) {\n <div class=\"empty-results\">\n <span class=\"fa-solid fa-folder-open empty-icon\"></span>\n <p>No saved views found for this entity</p>\n </div>\n }\n @if (userViews && userViews.length > 0) {\n @for (view of userViews; track view) {\n <div class=\"view-item\"\n [class.selected]=\"isViewSelected(view)\"\n (click)=\"toggleViewSelection(view)\">\n <input type=\"checkbox\"\n [checked]=\"isViewSelected(view)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleViewSelection(view)\">\n <span class=\"fa-solid fa-table-list view-icon\"></span>\n <span class=\"view-name\">{{ view.Name }}</span>\n </div>\n }\n }\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton\n (click)=\"confirmAddFromView()\"\n [disabled]=\"showAddFromViewLoader || userViewsToAdd.length === 0\"\n variant=\"primary\">\n Add from {{ userViewsToAdd.length }} View{{ userViewsToAdd.length !== 1 ? 's' : '' }}\n </button>\n <button mjButton\n (click)=\"closeAddFromViewDialog()\"\n [disabled]=\"showAddFromViewLoader\">\n Cancel\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n\n<!-- Share Dialog -->\n@if (showShareDialog && shareDialogConfig) {\n <mj-list-share-dialog\n [config]=\"shareDialogConfig\"\n [visible]=\"showShareDialog\"\n (complete)=\"onShareDialogComplete($event)\"\n (cancel)=\"onShareDialogCancel()\"\n (manageInvitations)=\"openInvitationsDialog()\"\n (viewAuditLog)=\"openAuditLogDialog()\">\n </mj-list-share-dialog>\n}\n\n<!-- Invitations Dialog (mockup 16). Opened from the share dialog's\n \"Manage Invitations\" button. Per-list \u2014 bound to record.ID. -->\n@if (showInvitationsDialog && record?.IsSaved) {\n <mj-dialog\n [Visible]=\"true\"\n [Title]=\"'Invitations \u2014 ' + record.Name\"\n (Close)=\"closeInvitationsDialog()\"\n [MinWidth]=\"640\"\n [Width]=\"900\"\n [Height]=\"640\">\n <div class=\"dialog-content invitations-dialog\">\n <mj-list-invitations\n [Provider]=\"ProviderToUse\"\n [ListID]=\"record.ID\"\n [ListName]=\"record.Name\">\n </mj-list-invitations>\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"closeInvitationsDialog()\" variant=\"outline\">Close</button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n\n<!-- Audit Log Dialog (mockup 18). Opened from the share dialog's\n \"View audit log\" link. Per-list \u2014 bound to record.ID. -->\n@if (showAuditLogDialog && record?.IsSaved) {\n <mj-dialog\n [Visible]=\"true\"\n [Title]=\"'Audit Log \u2014 ' + record.Name\"\n (Close)=\"closeAuditLogDialog()\"\n [MinWidth]=\"720\"\n [Width]=\"980\"\n [Height]=\"680\">\n <div class=\"dialog-content audit-log-dialog\">\n <mj-list-audit-log\n [Provider]=\"ProviderToUse\"\n [ListID]=\"record.ID\">\n </mj-list-audit-log>\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"closeAuditLogDialog()\" variant=\"outline\">Close</button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n", styles: ["/* ============================================\n WORLD-CLASS LIST FORM STYLES\n ============================================ */\n\n:host {\n display: block;\n height: 100%;\n}\n\n/* Layout */\n.list-form-explorer {\n display: grid;\n grid-template-areas:\n \"header header\"\n \"nav main\";\n grid-template-columns: 64px 1fr;\n grid-template-rows: auto 1fr;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\n}\n\n/* Header */\n.list-header {\n grid-area: header;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.header-content {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.header-icon {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.header-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.name-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.list-name {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-btn {\n background: none;\n border: none;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.inline-edit-input {\n padding: 8px 12px;\n border: 2px solid var(--mj-brand-primary);\n border-radius: 6px;\n font-size: inherit;\n background: var(--mj-bg-surface);\n outline: none;\n}\n\n.name-input {\n font-size: 24px;\n font-weight: 600;\n min-width: 300px;\n}\n\n.save-btn, .cancel-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.save-btn {\n color: var(--mj-status-success);\n}\n\n.save-btn:hover {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.cancel-btn {\n color: var(--mj-status-error);\n}\n\n.cancel-btn:hover {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.entity-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 16px;\n font-size: 13px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.entity-badge i {\n font-size: 12px;\n}\n\n.header-stats {\n display: flex;\n gap: 32px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 80px;\n}\n\n.stat-value {\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.stat-label {\n font-size: 12px;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Navigation Rail */\n.nav-rail {\n grid-area: nav;\n display: flex;\n flex-direction: column;\n padding: 16px 8px;\n background: var(--mj-text-primary);\n gap: 4px;\n}\n\n.nav-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 12px 8px;\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s;\n position: relative;\n}\n\n.nav-item:hover:not(.disabled) {\n background: rgba(255, 255, 255, 0.1);\n color: white;\n}\n\n.nav-item.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n color: color-mix(in srgb, var(--mj-brand-primary) 60%, white);\n}\n\n.nav-item.active::before {\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 24px;\n background: var(--mj-brand-primary);\n border-radius: 0 3px 3px 0;\n}\n\n.nav-item.disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.nav-item i {\n font-size: 18px;\n}\n\n.nav-label {\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.nav-badge {\n position: absolute;\n top: 6px;\n right: 6px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: var(--mj-brand-primary);\n border-radius: 9px;\n font-size: 10px;\n font-weight: 600;\n color: white;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Main Content */\n.main-content {\n grid-area: main;\n padding: 24px;\n overflow-y: auto;\n}\n\n.section {\n animation: fadeIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n}\n\n.section-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-actions {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n/* Search Box */\n.search-box {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box i {\n position: absolute;\n left: 12px;\n color: var(--mj-text-disabled);\n}\n\n.search-box input {\n padding: 10px 12px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n width: 250px;\n transition: all 0.2s;\n}\n\n.search-box input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n/* Overview Section */\n.overview-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 20px;\n}\n\n.overview-card {\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.card-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.card-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.card-header h3 i {\n color: var(--mj-text-disabled);\n}\n\n.card-body {\n padding: 20px;\n}\n\n.description-text {\n margin: 0;\n color: var(--mj-text-primary);\n line-height: 1.6;\n}\n\n.description-empty {\n margin: 0;\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.description-input {\n width: 100%;\n resize: vertical;\n font-family: inherit;\n}\n\n.edit-actions {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.btn-primary {\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.btn-primary:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n}\n\n.btn-secondary {\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-secondary:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.btn-icon {\n background: none;\n border: 1px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n}\n\n.btn-danger {\n padding: 8px 16px;\n background: var(--mj-status-error);\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s;\n}\n\n.btn-danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 85%, black);\n}\n\n/* Details Card */\n.detail-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-bg-surface-card);\n}\n\n.detail-row:last-child {\n border-bottom: none;\n}\n\n.detail-label {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.detail-value {\n font-size: 14px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.owner-badge {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-select {\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n}\n\n.category-select:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n/* Actions Card */\n.action-btn {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 14px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n margin-bottom: 8px;\n text-align: left;\n}\n\n.action-btn:last-child {\n margin-bottom: 0;\n}\n\n.action-btn:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.action-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.action-btn i {\n font-size: 18px;\n color: var(--mj-brand-primary);\n width: 24px;\n text-align: center;\n}\n\n.action-btn span:first-of-type {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.action-count {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.coming-soon {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n/* Items Section */\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n text-align: center;\n}\n\n.empty-icon {\n width: 80px;\n height: 80px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 20px;\n}\n\n.empty-icon i {\n font-size: 36px;\n color: var(--mj-brand-primary);\n}\n\n.empty-state h3 {\n margin: 0 0 12px;\n font-size: 20px;\n color: var(--mj-text-primary);\n}\n\n.empty-state p {\n margin: 0;\n color: var(--mj-text-secondary);\n max-width: 400px;\n}\n\n.items-table-container {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.items-toolbar {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.selection-count {\n font-size: 14px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.items-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.items-table th {\n text-align: left;\n padding: 12px 16px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.items-table td {\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.items-table tr:last-child td {\n border-bottom: none;\n}\n\n.items-table tr.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.items-table tr:hover:not(.selected) {\n background: var(--mj-bg-surface-card);\n}\n\n.col-checkbox {\n width: 40px;\n}\n\n.col-name {\n width: 35%;\n}\n\n.col-id {\n width: 25%;\n}\n\n.col-added {\n width: 20%;\n}\n\n.col-actions {\n width: 60px;\n text-align: right;\n}\n\n.item-name {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.item-name.loading {\n color: var(--mj-text-disabled);\n}\n\n.item-icon {\n color: var(--mj-text-disabled);\n}\n\n.record-id {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 4px;\n color: var(--mj-text-secondary);\n}\n\n.items-footer {\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n}\n\n.items-count {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n/* Sharing Section */\n.coming-soon-banner {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 24px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.coming-soon-banner > i {\n font-size: 48px;\n color: var(--mj-brand-primary);\n}\n\n.banner-content h3 {\n margin: 0 0 8px;\n color: var(--mj-text-primary);\n}\n\n.banner-content p {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n.shares-grid {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n/* Activity Section */\n.activity-timeline {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n padding: 20px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n margin-bottom: 20px;\n}\n\n.timeline-item {\n display: flex;\n gap: 16px;\n padding: 16px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.timeline-item:last-child {\n border-bottom: none;\n}\n\n.timeline-icon {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.timeline-icon.create {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-content {\n flex: 1;\n}\n\n.timeline-text {\n margin: 0 0 4px;\n color: var(--mj-text-primary);\n}\n\n.timeline-date {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.activity-info {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info p {\n margin: 0;\n color: var(--mj-status-warning);\n font-size: 14px;\n}\n\n/* Settings Section */\n.settings-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n/* Add Buttons in Items Section */\n.add-buttons {\n display: flex;\n gap: 8px;\n}\n\n.add-buttons .btn-secondary {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Sharing Summary */\n.sharing-summary {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n flex: 1;\n max-width: 280px;\n}\n\n.summary-icon {\n width: 48px;\n height: 48px;\n border-radius: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n font-size: 20px;\n}\n\n.summary-icon.pending {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.summary-content {\n display: flex;\n flex-direction: column;\n}\n\n.summary-value {\n font-size: 28px;\n font-weight: 600;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.summary-label {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.readonly-notice {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n font-size: 14px;\n}\n\n.readonly-notice i {\n color: var(--mj-text-disabled);\n}\n\n/* Dialog Styles */\n.dialog-content {\n padding: 16px 0;\n}\n\n.dialog-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n gap: 16px;\n}\n\n.dialog-instruction {\n margin: 0 0 16px;\n color: var(--mj-text-secondary);\n}\n\n/* Add Records Dialog */\n.add-records-dialog .search-section {\n margin-bottom: 16px;\n}\n\n.add-records-dialog .search-input {\n width: 100%;\n}\n\n.add-records-dialog .search-hint {\n display: block;\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n}\n\n.add-records-dialog .records-list {\n min-height: 280px;\n max-height: 320px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n}\n\n.add-records-dialog .list-loading {\n display: flex;\n justify-content: center;\n padding: 40px;\n}\n\n.add-records-dialog .empty-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: var(--mj-text-secondary);\n}\n\n.add-records-dialog .empty-results .empty-icon {\n width: 48px;\n height: 48px;\n font-size: 24px;\n margin-bottom: 12px;\n background: var(--mj-bg-surface-card);\n}\n\n.add-records-dialog .selection-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.add-records-dialog .selection-info {\n margin-left: auto;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.add-records-dialog .records-scroll {\n max-height: 260px;\n overflow-y: auto;\n}\n\n.add-records-dialog .record-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.add-records-dialog .record-item:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.add-records-dialog .record-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.add-records-dialog .record-item.in-list {\n background: var(--mj-bg-surface-card);\n cursor: default;\n}\n\n.add-records-dialog .record-checkbox {\n width: 20px;\n display: flex;\n justify-content: center;\n}\n\n.add-records-dialog .in-list-icon {\n color: var(--mj-status-success);\n}\n\n.add-records-dialog .record-name {\n flex: 1;\n font-size: 14px;\n}\n\n.add-records-dialog .in-list-badge {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n}\n\n/* Add From View Dialog */\n.views-list {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n max-height: 320px;\n overflow-y: auto;\n}\n\n.views-list .empty-results {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px 20px;\n color: var(--mj-text-secondary);\n}\n\n.views-list .empty-results .empty-icon {\n font-size: 36px;\n color: var(--mj-border-strong);\n margin-bottom: 12px;\n}\n\n.view-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.view-item:last-child {\n border-bottom: none;\n}\n\n.view-item:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.view-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.view-item .view-icon {\n color: var(--mj-brand-primary);\n}\n\n.view-item .view-name {\n flex: 1;\n font-size: 14px;\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .list-form-explorer {\n grid-template-columns: 1fr;\n grid-template-areas:\n \"header\"\n \"nav\"\n \"main\";\n }\n\n .nav-rail {\n flex-direction: row;\n padding: 8px 16px;\n overflow-x: auto;\n }\n\n .nav-item {\n flex-direction: row;\n padding: 10px 16px;\n gap: 8px;\n }\n\n .nav-item::before {\n display: none;\n }\n\n .header-stats {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .list-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .overview-grid {\n grid-template-columns: 1fr;\n }\n\n .search-box input {\n width: 100%;\n }\n\n .section-actions {\n flex-direction: column;\n align-items: stretch;\n width: 100%;\n }\n}\n", ".k-pane {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n"] }]
|
|
1693
1760
|
}], null, null); })();
|
|
1694
1761
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJListFormComponentExtended, { className: "MJListFormComponentExtended", filePath: "src/lib/custom/Lists/list-form.component.ts", lineNumber: 55 }); })();
|
|
1695
1762
|
//# sourceMappingURL=list-form.component.js.map
|