@memberjunction/ng-core-entity-forms 2.133.0 → 3.1.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/AIAgents/FlowAgentType/flow-agent-diagram.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-diagram.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-agent-form-section.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/condition-editor/condition-editor.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/confirmation-dialog/confirmation-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/custom-node/custom-node.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/execution-panel/execution-panel.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/flow-editor/flow-editor.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/prompt-editor/prompt-editor.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/properties-panel/properties-panel.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/simple-condition-editor/simple-condition-editor.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/step/step.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/components/toolbar/toolbar.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-editor.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/flow-executor.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/mj-flow-transformer.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/module-manager.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/flow-editor-integration/services/prompt-manager.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/mj-integrated-flow-editor.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js +1 -1
- package/dist/lib/custom/AIAgents/FlowAgentType/step-info-control.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.js +1 -1
- package/dist/lib/custom/AIAgents/agent-permissions-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +1 -1
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-management.service.js +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-management.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +1 -1
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js +1 -1
- package/dist/lib/custom/AIAgents/new-agent-dialog.service.js.map +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +1 -1
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +1 -1
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-management.service.js.map +1 -1
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js +1 -1
- package/dist/lib/custom/AIPrompts/template-selector-dialog.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +1 -1
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-param-dialog.component.d.ts +1 -1
- package/dist/lib/custom/Actions/action-param-dialog.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-param-dialog.component.js +2 -1
- package/dist/lib/custom/Actions/action-param-dialog.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-result-code-dialog.component.js +1 -1
- package/dist/lib/custom/Actions/action-result-code-dialog.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-test-harness-dialog.component.js +1 -1
- package/dist/lib/custom/Actions/action-test-harness-dialog.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-test-harness.component.js +1 -1
- package/dist/lib/custom/Actions/action-test-harness.component.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +1 -6
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.d.ts +48 -1
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +893 -176
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-category-dialog.component.js +1 -1
- package/dist/lib/custom/Queries/query-category-dialog.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +1 -1
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.js +1 -1
- package/dist/lib/custom/Templates/template-param-dialog.component.js.map +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.js +1 -1
- package/dist/lib/custom/Templates/template-params-grid.component.js.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.js +1 -1
- package/dist/lib/custom/Tests/entity-link-pill.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +1 -1
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-rubric-form.component.js +1 -1
- package/dist/lib/custom/Tests/test-rubric-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js +1 -1
- package/dist/lib/custom/Tests/test-run-feedback-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.d.ts +2 -3
- package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +3 -4
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-analytics.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-cost.service.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-detail.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-step-node.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-timeline.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run-visualization.component.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +2 -3
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js +3 -4
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +2 -1
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +8 -4
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.js +1 -1
- package/dist/lib/custom/shared/entity-selector-dialog.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAction/aiaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgent/aiagent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentAction/aiagentaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentArtifactType/aiagentartifacttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentConfiguration/aiagentconfiguration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentDataSource/aiagentdatasource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentExample/aiagentexample.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentLearningCycle/aiagentlearningcycle.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentModality/aiagentmodality.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentModel/aiagentmodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentNote/aiagentnote.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentNoteType/aiagentnotetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentPermission/aiagentpermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentPrompt/aiagentprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentRelationship/aiagentrelationship.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentRequest/aiagentrequest.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js +31 -13
- package/dist/lib/generated/Entities/AIAgentRun/aiagentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.js +105 -0
- package/dist/lib/generated/Entities/AIAgentRunMedia/aiagentrunmedia.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentRunStep/aiagentrunstep.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentStep/aiagentstep.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentStepPath/aiagentsteppath.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIAgentType/aiagenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIArchitecture/aiarchitecture.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIConfiguration/aiconfiguration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIConfigurationParam/aiconfigurationparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.js +1 -1
- package/dist/lib/generated/Entities/AICredentialBinding/aicredentialbinding.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModality/aimodality.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIModality/aimodality.form.component.js +49 -13
- package/dist/lib/generated/Entities/AIModality/aimodality.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIModel/aimodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIModelAction/aimodelaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIModelArchitecture/aimodelarchitecture.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIModelCost/aimodelcost.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIModelModality/aimodelmodality.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIModelPriceType/aimodelpricetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIModelPriceUnitType/aimodelpriceunittype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIModelType/aimodeltype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIModelVendor/aimodelvendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIPrompt/aiprompt.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIPromptCategory/aipromptcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIPromptModel/aipromptmodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js +26 -8
- package/dist/lib/generated/Entities/AIPromptRun/aipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.js +118 -0
- package/dist/lib/generated/Entities/AIPromptRunMedia/aipromptrunmedia.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIPromptType/aiprompttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIResultCache/airesultcache.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIVendor/aivendor.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIVendorType/aivendortype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js +1 -1
- package/dist/lib/generated/Entities/AIVendorTypeDefinition/aivendortypedefinition.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.js +1 -1
- package/dist/lib/generated/Entities/AccessControlRule/accesscontrolrule.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Action/action.form.component.js +1 -1
- package/dist/lib/generated/Entities/Action/action.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js +1 -1
- package/dist/lib/generated/Entities/ActionAuthorization/actionauthorization.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js +1 -1
- package/dist/lib/generated/Entities/ActionCategory/actioncategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js +1 -1
- package/dist/lib/generated/Entities/ActionContext/actioncontext.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js +1 -1
- package/dist/lib/generated/Entities/ActionContextType/actioncontexttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js +1 -1
- package/dist/lib/generated/Entities/ActionExecutionLog/actionexecutionlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js +1 -1
- package/dist/lib/generated/Entities/ActionFilter/actionfilter.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js +1 -1
- package/dist/lib/generated/Entities/ActionLibrary/actionlibrary.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js +18 -16
- package/dist/lib/generated/Entities/ActionParam/actionparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js +1 -1
- package/dist/lib/generated/Entities/ActionResultCode/actionresultcode.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Application/application.form.component.js +1 -1
- package/dist/lib/generated/Entities/Application/application.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js +1 -1
- package/dist/lib/generated/Entities/ApplicationEntity/applicationentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js +1 -1
- package/dist/lib/generated/Entities/ApplicationSetting/applicationsetting.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Artifact/artifact.form.component.js +1 -1
- package/dist/lib/generated/Entities/Artifact/artifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.js +1 -1
- package/dist/lib/generated/Entities/ArtifactPermission/artifactpermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js +1 -1
- package/dist/lib/generated/Entities/ArtifactType/artifacttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.js +1 -1
- package/dist/lib/generated/Entities/ArtifactUse/artifactuse.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js +1 -1
- package/dist/lib/generated/Entities/ArtifactVersion/artifactversion.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js +1 -1
- package/dist/lib/generated/Entities/ArtifactVersionAttribute/artifactversionattribute.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js +1 -1
- package/dist/lib/generated/Entities/AuditLog/auditlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js +1 -1
- package/dist/lib/generated/Entities/AuditLogType/auditlogtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Authorization/authorization.form.component.js +1 -1
- package/dist/lib/generated/Entities/Authorization/authorization.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js +1 -1
- package/dist/lib/generated/Entities/AuthorizationRole/authorizationrole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Collection/collection.form.component.js +1 -1
- package/dist/lib/generated/Entities/Collection/collection.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.js +1 -1
- package/dist/lib/generated/Entities/CollectionArtifact/collectionartifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js +1 -1
- package/dist/lib/generated/Entities/CollectionPermission/collectionpermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js +1 -1
- package/dist/lib/generated/Entities/CommunicationBaseMessageType/communicationbasemessagetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js +1 -1
- package/dist/lib/generated/Entities/CommunicationLog/communicationlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js +1 -1
- package/dist/lib/generated/Entities/CommunicationProvider/communicationprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js +1 -1
- package/dist/lib/generated/Entities/CommunicationProviderMessageType/communicationprovidermessagetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js +1 -1
- package/dist/lib/generated/Entities/CommunicationRun/communicationrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Company/company.form.component.js +1 -1
- package/dist/lib/generated/Entities/Company/company.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js +1 -1
- package/dist/lib/generated/Entities/CompanyIntegration/companyintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRecordMap/companyintegrationrecordmap.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRun/companyintegrationrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRunAPILog/companyintegrationrunapilog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js +1 -1
- package/dist/lib/generated/Entities/CompanyIntegrationRunDetail/companyintegrationrundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Component/component.form.component.js +1 -1
- package/dist/lib/generated/Entities/Component/component.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.js +1 -1
- package/dist/lib/generated/Entities/ComponentDependency/componentdependency.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.js +1 -1
- package/dist/lib/generated/Entities/ComponentLibrary/componentlibrary.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.js +1 -1
- package/dist/lib/generated/Entities/ComponentLibraryLink/componentlibrarylink.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.js +1 -1
- package/dist/lib/generated/Entities/ComponentRegistry/componentregistry.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js +1 -1
- package/dist/lib/generated/Entities/ContentFileType/contentfiletype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js +1 -1
- package/dist/lib/generated/Entities/ContentItem/contentitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js +1 -1
- package/dist/lib/generated/Entities/ContentItemAttribute/contentitemattribute.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js +1 -1
- package/dist/lib/generated/Entities/ContentItemTag/contentitemtag.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js +1 -1
- package/dist/lib/generated/Entities/ContentProcessRun/contentprocessrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js +1 -1
- package/dist/lib/generated/Entities/ContentSource/contentsource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js +1 -1
- package/dist/lib/generated/Entities/ContentSourceParam/contentsourceparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js +1 -1
- package/dist/lib/generated/Entities/ContentSourceType/contentsourcetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js +1 -1
- package/dist/lib/generated/Entities/ContentSourceTypeParam/contentsourcetypeparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js +1 -1
- package/dist/lib/generated/Entities/ContentType/contenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js +1 -1
- package/dist/lib/generated/Entities/ContentTypeAttribute/contenttypeattribute.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Conversation/conversation.form.component.js +1 -1
- package/dist/lib/generated/Entities/Conversation/conversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js +1 -1
- package/dist/lib/generated/Entities/ConversationArtifact/conversationartifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js +1 -1
- package/dist/lib/generated/Entities/ConversationArtifactPermission/conversationartifactpermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js +1 -1
- package/dist/lib/generated/Entities/ConversationArtifactVersion/conversationartifactversion.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js +1 -1
- package/dist/lib/generated/Entities/ConversationDetail/conversationdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js +1 -1
- package/dist/lib/generated/Entities/ConversationDetailArtifact/conversationdetailartifact.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.js +12 -10
- package/dist/lib/generated/Entities/ConversationDetailAttachment/conversationdetailattachment.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js +1 -1
- package/dist/lib/generated/Entities/ConversationDetailRating/conversationdetailrating.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Credential/credential.form.component.js +1 -1
- package/dist/lib/generated/Entities/Credential/credential.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.js +1 -1
- package/dist/lib/generated/Entities/CredentialCategory/credentialcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js +1 -1
- package/dist/lib/generated/Entities/CredentialType/credentialtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js +44 -8
- package/dist/lib/generated/Entities/Dashboard/dashboard.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js +42 -6
- package/dist/lib/generated/Entities/DashboardCategory/dashboardcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.js +75 -0
- package/dist/lib/generated/Entities/DashboardCategoryLink/dashboardcategorylink.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.js +85 -0
- package/dist/lib/generated/Entities/DashboardCategoryPermission/dashboardcategorypermission.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.js +75 -0
- package/dist/lib/generated/Entities/DashboardPartType/dashboardparttype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.js +79 -0
- package/dist/lib/generated/Entities/DashboardPermission/dashboardpermission.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js +1 -1
- package/dist/lib/generated/Entities/DashboardUserPreference/dashboarduserpreference.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js +1 -1
- package/dist/lib/generated/Entities/DashboardUserState/dashboarduserstate.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js +1 -1
- package/dist/lib/generated/Entities/DataContext/datacontext.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js +1 -1
- package/dist/lib/generated/Entities/DataContextItem/datacontextitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Dataset/dataset.form.component.js +1 -1
- package/dist/lib/generated/Entities/Dataset/dataset.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js +1 -1
- package/dist/lib/generated/Entities/DatasetItem/datasetitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js +1 -1
- package/dist/lib/generated/Entities/DuplicateRun/duplicaterun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js +1 -1
- package/dist/lib/generated/Entities/DuplicateRunDetail/duplicaterundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js +1 -1
- package/dist/lib/generated/Entities/DuplicateRunDetailMatch/duplicaterundetailmatch.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Employee/employee.form.component.js +1 -1
- package/dist/lib/generated/Entities/Employee/employee.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js +1 -1
- package/dist/lib/generated/Entities/EmployeeCompanyIntegration/employeecompanyintegration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js +1 -1
- package/dist/lib/generated/Entities/EmployeeRole/employeerole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js +1 -1
- package/dist/lib/generated/Entities/EmployeeSkill/employeeskill.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.js +1 -1
- package/dist/lib/generated/Entities/EncryptionAlgorithm/encryptionalgorithm.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.js +1 -1
- package/dist/lib/generated/Entities/EncryptionKey/encryptionkey.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.js +1 -1
- package/dist/lib/generated/Entities/EncryptionKeySource/encryptionkeysource.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Entity/entity.form.component.js +1 -1
- package/dist/lib/generated/Entities/Entity/entity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityAIAction/entityaiaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityAction/entityaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityActionFilter/entityactionfilter.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityActionInvocation/entityactioninvocation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityActionInvocationType/entityactioninvocationtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityActionParam/entityactionparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityCommunicationField/entitycommunicationfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityCommunicationMessageType/entitycommunicationmessagetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityDocument/entitydocument.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityDocumentRun/entitydocumentrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityDocumentSetting/entitydocumentsetting.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityDocumentType/entitydocumenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityField/entityfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityFieldValue/entityfieldvalue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityPermission/entitypermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityRecordDocument/entityrecorddocument.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityRelationship/entityrelationship.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntityRelationshipDisplayComponent/entityrelationshipdisplaycomponent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js +1 -1
- package/dist/lib/generated/Entities/EntitySetting/entitysetting.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Environment/environment.form.component.js +1 -1
- package/dist/lib/generated/Entities/Environment/environment.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js +1 -1
- package/dist/lib/generated/Entities/ErrorLog/errorlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js +1 -1
- package/dist/lib/generated/Entities/ExplorerNavigationItem/explorernavigationitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/File/file.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/File/file.form.component.js +43 -7
- package/dist/lib/generated/Entities/File/file.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js +1 -1
- package/dist/lib/generated/Entities/FileCategory/filecategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js +1 -1
- package/dist/lib/generated/Entities/FileEntityRecordLink/fileentityrecordlink.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js +1 -1
- package/dist/lib/generated/Entities/FileStorageProvider/filestorageprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js +1 -1
- package/dist/lib/generated/Entities/GeneratedCode/generatedcode.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js +1 -1
- package/dist/lib/generated/Entities/GeneratedCodeCategory/generatedcodecategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Integration/integration.form.component.js +1 -1
- package/dist/lib/generated/Entities/Integration/integration.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js +1 -1
- package/dist/lib/generated/Entities/IntegrationURLFormat/integrationurlformat.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Library/library.form.component.js +1 -1
- package/dist/lib/generated/Entities/Library/library.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js +1 -1
- package/dist/lib/generated/Entities/LibraryItem/libraryitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/List/list.form.component.js +1 -1
- package/dist/lib/generated/Entities/List/list.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js +1 -1
- package/dist/lib/generated/Entities/ListCategory/listcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js +1 -1
- package/dist/lib/generated/Entities/ListDetail/listdetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.js +1 -1
- package/dist/lib/generated/Entities/ListInvitation/listinvitation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ListShare/listshare.form.component.js +1 -1
- package/dist/lib/generated/Entities/ListShare/listshare.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js +1 -1
- package/dist/lib/generated/Entities/OutputDeliveryType/outputdeliverytype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js +1 -1
- package/dist/lib/generated/Entities/OutputFormatType/outputformattype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js +1 -1
- package/dist/lib/generated/Entities/OutputTriggerType/outputtriggertype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Project/project.form.component.js +1 -1
- package/dist/lib/generated/Entities/Project/project.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.js +1 -1
- package/dist/lib/generated/Entities/PublicLink/publiclink.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Query/query.form.component.js +1 -1
- package/dist/lib/generated/Entities/Query/query.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js +1 -1
- package/dist/lib/generated/Entities/QueryCategory/querycategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js +1 -1
- package/dist/lib/generated/Entities/QueryEntity/queryentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js +1 -1
- package/dist/lib/generated/Entities/QueryField/queryfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js +1 -1
- package/dist/lib/generated/Entities/QueryParameter/queryparameter.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js +1 -1
- package/dist/lib/generated/Entities/QueryPermission/querypermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Queue/queue.form.component.js +1 -1
- package/dist/lib/generated/Entities/Queue/queue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js +1 -1
- package/dist/lib/generated/Entities/QueueTask/queuetask.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js +1 -1
- package/dist/lib/generated/Entities/QueueType/queuetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js +1 -1
- package/dist/lib/generated/Entities/Recommendation/recommendation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js +1 -1
- package/dist/lib/generated/Entities/RecommendationItem/recommendationitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js +1 -1
- package/dist/lib/generated/Entities/RecommendationProvider/recommendationprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js +1 -1
- package/dist/lib/generated/Entities/RecommendationRun/recommendationrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js +1 -1
- package/dist/lib/generated/Entities/RecordChange/recordchange.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js +1 -1
- package/dist/lib/generated/Entities/RecordChangeReplayRun/recordchangereplayrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.js +1 -1
- package/dist/lib/generated/Entities/RecordLink/recordlink.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js +1 -1
- package/dist/lib/generated/Entities/RecordMergeDeletionLog/recordmergedeletionlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js +1 -1
- package/dist/lib/generated/Entities/RecordMergeLog/recordmergelog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Report/report.form.component.js +1 -1
- package/dist/lib/generated/Entities/Report/report.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js +1 -1
- package/dist/lib/generated/Entities/ReportCategory/reportcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js +1 -1
- package/dist/lib/generated/Entities/ReportSnapshot/reportsnapshot.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js +1 -1
- package/dist/lib/generated/Entities/ReportUserState/reportuserstate.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js +1 -1
- package/dist/lib/generated/Entities/ReportVersion/reportversion.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js +1 -1
- package/dist/lib/generated/Entities/ResourceLink/resourcelink.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js +1 -1
- package/dist/lib/generated/Entities/ResourcePermission/resourcepermission.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js +1 -1
- package/dist/lib/generated/Entities/ResourceType/resourcetype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Role/role.form.component.js +1 -1
- package/dist/lib/generated/Entities/Role/role.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js +1 -1
- package/dist/lib/generated/Entities/RowLevelSecurityFilter/rowlevelsecurityfilter.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js +1 -1
- package/dist/lib/generated/Entities/ScheduledAction/scheduledaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js +1 -1
- package/dist/lib/generated/Entities/ScheduledActionParam/scheduledactionparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.js +1 -1
- package/dist/lib/generated/Entities/ScheduledJob/scheduledjob.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.js +1 -1
- package/dist/lib/generated/Entities/ScheduledJobRun/scheduledjobrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.js +1 -1
- package/dist/lib/generated/Entities/ScheduledJobType/scheduledjobtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js +1 -1
- package/dist/lib/generated/Entities/SchemaInfo/schemainfo.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Skill/skill.form.component.js +1 -1
- package/dist/lib/generated/Entities/Skill/skill.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Tag/tag.form.component.js +1 -1
- package/dist/lib/generated/Entities/Tag/tag.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js +1 -1
- package/dist/lib/generated/Entities/TaggedItem/taggeditem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Task/task.form.component.js +1 -1
- package/dist/lib/generated/Entities/Task/task.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.js +1 -1
- package/dist/lib/generated/Entities/TaskDependency/taskdependency.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TaskType/tasktype.form.component.js +1 -1
- package/dist/lib/generated/Entities/TaskType/tasktype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Template/template.form.component.js +1 -1
- package/dist/lib/generated/Entities/Template/template.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js +1 -1
- package/dist/lib/generated/Entities/TemplateCategory/templatecategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js +1 -1
- package/dist/lib/generated/Entities/TemplateContent/templatecontent.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js +1 -1
- package/dist/lib/generated/Entities/TemplateContentType/templatecontenttype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js +1 -1
- package/dist/lib/generated/Entities/TemplateParam/templateparam.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Test/test.form.component.js +20 -18
- package/dist/lib/generated/Entities/Test/test.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js +1 -1
- package/dist/lib/generated/Entities/TestRubric/testrubric.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TestRun/testrun.form.component.js +39 -37
- package/dist/lib/generated/Entities/TestRun/testrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js +1 -1
- package/dist/lib/generated/Entities/TestRunFeedback/testrunfeedback.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js +23 -21
- package/dist/lib/generated/Entities/TestSuite/testsuite.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js +17 -15
- package/dist/lib/generated/Entities/TestSuiteRun/testsuiterun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js +1 -1
- package/dist/lib/generated/Entities/TestSuiteTest/testsuitetest.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/TestType/testtype.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/TestType/testtype.form.component.js +22 -14
- package/dist/lib/generated/Entities/TestType/testtype.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/User/user.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/User/user.form.component.js +232 -142
- package/dist/lib/generated/Entities/User/user.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js +1 -1
- package/dist/lib/generated/Entities/UserApplication/userapplication.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js +1 -1
- package/dist/lib/generated/Entities/UserApplicationEntity/userapplicationentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js +1 -1
- package/dist/lib/generated/Entities/UserFavorite/userfavorite.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js +1 -1
- package/dist/lib/generated/Entities/UserNotification/usernotification.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js +1 -1
- package/dist/lib/generated/Entities/UserRecordLog/userrecordlog.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserRole/userrole.form.component.js +1 -1
- package/dist/lib/generated/Entities/UserRole/userrole.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.js +1 -1
- package/dist/lib/generated/Entities/UserSetting/usersetting.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserView/userview.form.component.js +1 -1
- package/dist/lib/generated/Entities/UserView/userview.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js +1 -1
- package/dist/lib/generated/Entities/UserViewCategory/userviewcategory.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js +1 -1
- package/dist/lib/generated/Entities/UserViewRun/userviewrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js +1 -1
- package/dist/lib/generated/Entities/UserViewRunDetail/userviewrundetail.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js +1 -1
- package/dist/lib/generated/Entities/VectorDatabase/vectordatabase.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js +1 -1
- package/dist/lib/generated/Entities/VectorIndex/vectorindex.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js +1 -1
- package/dist/lib/generated/Entities/VersionInstallation/versioninstallation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Workflow/workflow.form.component.js +1 -1
- package/dist/lib/generated/Entities/Workflow/workflow.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js +1 -1
- package/dist/lib/generated/Entities/WorkflowEngine/workflowengine.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js +1 -1
- package/dist/lib/generated/Entities/WorkflowRun/workflowrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/Workspace/workspace.form.component.js +1 -1
- package/dist/lib/generated/Entities/Workspace/workspace.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js +1 -1
- package/dist/lib/generated/Entities/WorkspaceItem/workspaceitem.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.d.ts +11 -0
- package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.js +67 -0
- package/dist/lib/generated/Entities/flyway_schema_history/flyway_schema_history.form.component.js.map +1 -0
- package/dist/lib/generated/generated-forms.module.d.ts +164 -157
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +140 -112
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +1 -1
- package/dist/lib/shared/components/template-editor.component.js.map +1 -1
- package/package.json +36 -35
|
@@ -5,52 +5,55 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { Component, ChangeDetectionStrategy } from '@angular/core';
|
|
8
|
-
import { Subject } from 'rxjs';
|
|
8
|
+
import { Subject, debounceTime } from 'rxjs';
|
|
9
9
|
import { RegisterClass } from '@memberjunction/global';
|
|
10
10
|
import { BaseFormComponent } from '@memberjunction/ng-base-forms';
|
|
11
11
|
import { ListFormComponent } from '../../generated/Entities/List/list.form.component';
|
|
12
|
-
import { Metadata, RunView } from '@memberjunction/core';
|
|
12
|
+
import { Metadata, RunView, LogError, LogStatus } from '@memberjunction/core';
|
|
13
13
|
import * as i0 from "@angular/core";
|
|
14
14
|
import * as i1 from "@angular/common";
|
|
15
15
|
import * as i2 from "@angular/forms";
|
|
16
|
-
import * as i3 from "@
|
|
17
|
-
import * as i4 from "@
|
|
18
|
-
import * as i5 from "@
|
|
16
|
+
import * as i3 from "@progress/kendo-angular-dialog";
|
|
17
|
+
import * as i4 from "@progress/kendo-angular-inputs";
|
|
18
|
+
import * as i5 from "@progress/kendo-angular-buttons";
|
|
19
|
+
import * as i6 from "@memberjunction/ng-base-forms";
|
|
20
|
+
import * as i7 from "@memberjunction/ng-shared-generic";
|
|
21
|
+
import * as i8 from "@memberjunction/ng-list-management";
|
|
19
22
|
function ListFormComponentExtended_ng_container_7_button_3_Template(rf, ctx) { if (rf & 1) {
|
|
20
23
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
21
|
-
i0.ɵɵelementStart(0, "button",
|
|
24
|
+
i0.ɵɵelementStart(0, "button", 26);
|
|
22
25
|
i0.ɵɵlistener("click", function ListFormComponentExtended_ng_container_7_button_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.startEditingName()); });
|
|
23
|
-
i0.ɵɵelement(1, "i",
|
|
26
|
+
i0.ɵɵelement(1, "i", 27);
|
|
24
27
|
i0.ɵɵelementEnd();
|
|
25
28
|
} }
|
|
26
29
|
function ListFormComponentExtended_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
27
30
|
i0.ɵɵelementContainerStart(0);
|
|
28
|
-
i0.ɵɵelementStart(1, "h1",
|
|
31
|
+
i0.ɵɵelementStart(1, "h1", 24);
|
|
29
32
|
i0.ɵɵtext(2);
|
|
30
33
|
i0.ɵɵelementEnd();
|
|
31
|
-
i0.ɵɵtemplate(3, ListFormComponentExtended_ng_container_7_button_3_Template, 2, 0, "button",
|
|
34
|
+
i0.ɵɵtemplate(3, ListFormComponentExtended_ng_container_7_button_3_Template, 2, 0, "button", 25);
|
|
32
35
|
i0.ɵɵelementContainerEnd();
|
|
33
36
|
} if (rf & 2) {
|
|
34
37
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
35
38
|
i0.ɵɵadvance(2);
|
|
36
|
-
i0.ɵɵtextInterpolate(
|
|
39
|
+
i0.ɵɵtextInterpolate(ctx_r1.record.Name || "Untitled List");
|
|
37
40
|
i0.ɵɵadvance();
|
|
38
41
|
i0.ɵɵproperty("ngIf", ctx_r1.isCurrentUserOwner());
|
|
39
42
|
} }
|
|
40
43
|
function ListFormComponentExtended_ng_container_8_Template(rf, ctx) { if (rf & 1) {
|
|
41
44
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
42
45
|
i0.ɵɵelementContainerStart(0);
|
|
43
|
-
i0.ɵɵelementStart(1, "input",
|
|
46
|
+
i0.ɵɵelementStart(1, "input", 28, 0);
|
|
44
47
|
i0.ɵɵtwoWayListener("ngModelChange", function ListFormComponentExtended_ng_container_8_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.editingName, $event) || (ctx_r1.editingName = $event); return i0.ɵɵresetView($event); });
|
|
45
48
|
i0.ɵɵlistener("keydown.enter", function ListFormComponentExtended_ng_container_8_Template_input_keydown_enter_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.saveNameEdit()); })("keydown.escape", function ListFormComponentExtended_ng_container_8_Template_input_keydown_escape_1_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancelNameEdit()); });
|
|
46
49
|
i0.ɵɵelementEnd();
|
|
47
|
-
i0.ɵɵelementStart(3, "button",
|
|
50
|
+
i0.ɵɵelementStart(3, "button", 29);
|
|
48
51
|
i0.ɵɵlistener("click", function ListFormComponentExtended_ng_container_8_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.saveNameEdit()); });
|
|
49
|
-
i0.ɵɵelement(4, "i",
|
|
52
|
+
i0.ɵɵelement(4, "i", 30);
|
|
50
53
|
i0.ɵɵelementEnd();
|
|
51
|
-
i0.ɵɵelementStart(5, "button",
|
|
54
|
+
i0.ɵɵelementStart(5, "button", 31);
|
|
52
55
|
i0.ɵɵlistener("click", function ListFormComponentExtended_ng_container_8_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancelNameEdit()); });
|
|
53
|
-
i0.ɵɵelement(6, "i",
|
|
56
|
+
i0.ɵɵelement(6, "i", 32);
|
|
54
57
|
i0.ɵɵelementEnd();
|
|
55
58
|
i0.ɵɵelementContainerEnd();
|
|
56
59
|
} if (rf & 2) {
|
|
@@ -59,7 +62,7 @@ function ListFormComponentExtended_ng_container_8_Template(rf, ctx) { if (rf & 1
|
|
|
59
62
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.editingName);
|
|
60
63
|
} }
|
|
61
64
|
function ListFormComponentExtended_button_30_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
62
|
-
i0.ɵɵelementStart(0, "span",
|
|
65
|
+
i0.ɵɵelementStart(0, "span", 36);
|
|
63
66
|
i0.ɵɵtext(1);
|
|
64
67
|
i0.ɵɵelementEnd();
|
|
65
68
|
} if (rf & 2) {
|
|
@@ -69,13 +72,13 @@ function ListFormComponentExtended_button_30_span_4_Template(rf, ctx) { if (rf &
|
|
|
69
72
|
} }
|
|
70
73
|
function ListFormComponentExtended_button_30_Template(rf, ctx) { if (rf & 1) {
|
|
71
74
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
72
|
-
i0.ɵɵelementStart(0, "button",
|
|
75
|
+
i0.ɵɵelementStart(0, "button", 33);
|
|
73
76
|
i0.ɵɵlistener("click", function ListFormComponentExtended_button_30_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)); });
|
|
74
77
|
i0.ɵɵelement(1, "i");
|
|
75
|
-
i0.ɵɵelementStart(2, "span",
|
|
78
|
+
i0.ɵɵelementStart(2, "span", 34);
|
|
76
79
|
i0.ɵɵtext(3);
|
|
77
80
|
i0.ɵɵelementEnd();
|
|
78
|
-
i0.ɵɵtemplate(4, ListFormComponentExtended_button_30_span_4_Template, 2, 1, "span",
|
|
81
|
+
i0.ɵɵtemplate(4, ListFormComponentExtended_button_30_span_4_Template, 2, 1, "span", 35);
|
|
79
82
|
i0.ɵɵelementEnd();
|
|
80
83
|
} if (rf & 2) {
|
|
81
84
|
const nav_r5 = ctx.$implicit;
|
|
@@ -91,13 +94,13 @@ function ListFormComponentExtended_button_30_Template(rf, ctx) { if (rf & 1) {
|
|
|
91
94
|
} }
|
|
92
95
|
function ListFormComponentExtended_section_32_button_7_Template(rf, ctx) { if (rf & 1) {
|
|
93
96
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
94
|
-
i0.ɵɵelementStart(0, "button",
|
|
97
|
+
i0.ɵɵelementStart(0, "button", 64);
|
|
95
98
|
i0.ɵɵlistener("click", function ListFormComponentExtended_section_32_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.startEditingDescription()); });
|
|
96
|
-
i0.ɵɵelement(1, "i",
|
|
99
|
+
i0.ɵɵelement(1, "i", 27);
|
|
97
100
|
i0.ɵɵelementEnd();
|
|
98
101
|
} }
|
|
99
102
|
function ListFormComponentExtended_section_32_ng_container_9_p_1_Template(rf, ctx) { if (rf & 1) {
|
|
100
|
-
i0.ɵɵelementStart(0, "p",
|
|
103
|
+
i0.ɵɵelementStart(0, "p", 67);
|
|
101
104
|
i0.ɵɵtext(1);
|
|
102
105
|
i0.ɵɵelementEnd();
|
|
103
106
|
} if (rf & 2) {
|
|
@@ -106,33 +109,33 @@ function ListFormComponentExtended_section_32_ng_container_9_p_1_Template(rf, ct
|
|
|
106
109
|
i0.ɵɵtextInterpolate(ctx_r1.record.Description);
|
|
107
110
|
} }
|
|
108
111
|
function ListFormComponentExtended_section_32_ng_container_9_p_2_Template(rf, ctx) { if (rf & 1) {
|
|
109
|
-
i0.ɵɵelementStart(0, "p",
|
|
112
|
+
i0.ɵɵelementStart(0, "p", 68);
|
|
110
113
|
i0.ɵɵtext(1, "No description provided");
|
|
111
114
|
i0.ɵɵelementEnd();
|
|
112
115
|
} }
|
|
113
116
|
function ListFormComponentExtended_section_32_ng_container_9_Template(rf, ctx) { if (rf & 1) {
|
|
114
117
|
i0.ɵɵelementContainerStart(0);
|
|
115
|
-
i0.ɵɵtemplate(1, ListFormComponentExtended_section_32_ng_container_9_p_1_Template, 2, 1, "p",
|
|
118
|
+
i0.ɵɵtemplate(1, ListFormComponentExtended_section_32_ng_container_9_p_1_Template, 2, 1, "p", 65)(2, ListFormComponentExtended_section_32_ng_container_9_p_2_Template, 2, 0, "p", 66);
|
|
116
119
|
i0.ɵɵelementContainerEnd();
|
|
117
120
|
} if (rf & 2) {
|
|
118
121
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
119
122
|
i0.ɵɵadvance();
|
|
120
|
-
i0.ɵɵproperty("ngIf", ctx_r1.record
|
|
123
|
+
i0.ɵɵproperty("ngIf", ctx_r1.record.Description);
|
|
121
124
|
i0.ɵɵadvance();
|
|
122
|
-
i0.ɵɵproperty("ngIf", !
|
|
125
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.record.Description);
|
|
123
126
|
} }
|
|
124
127
|
function ListFormComponentExtended_section_32_ng_container_10_Template(rf, ctx) { if (rf & 1) {
|
|
125
128
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
126
129
|
i0.ɵɵelementContainerStart(0);
|
|
127
|
-
i0.ɵɵelementStart(1, "textarea",
|
|
130
|
+
i0.ɵɵelementStart(1, "textarea", 69);
|
|
128
131
|
i0.ɵɵtwoWayListener("ngModelChange", function ListFormComponentExtended_section_32_ng_container_10_Template_textarea_ngModelChange_1_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); });
|
|
129
132
|
i0.ɵɵlistener("keydown.escape", function ListFormComponentExtended_section_32_ng_container_10_Template_textarea_keydown_escape_1_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.cancelDescriptionEdit()); });
|
|
130
133
|
i0.ɵɵelementEnd();
|
|
131
|
-
i0.ɵɵelementStart(2, "div",
|
|
134
|
+
i0.ɵɵelementStart(2, "div", 70)(3, "button", 71);
|
|
132
135
|
i0.ɵɵlistener("click", function ListFormComponentExtended_section_32_ng_container_10_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.saveDescriptionEdit()); });
|
|
133
136
|
i0.ɵɵtext(4, "Save");
|
|
134
137
|
i0.ɵɵelementEnd();
|
|
135
|
-
i0.ɵɵelementStart(5, "button",
|
|
138
|
+
i0.ɵɵelementStart(5, "button", 72);
|
|
136
139
|
i0.ɵɵlistener("click", function ListFormComponentExtended_section_32_ng_container_10_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.cancelDescriptionEdit()); });
|
|
137
140
|
i0.ɵɵtext(6, "Cancel");
|
|
138
141
|
i0.ɵɵelementEnd()();
|
|
@@ -143,8 +146,8 @@ function ListFormComponentExtended_section_32_ng_container_10_Template(rf, ctx)
|
|
|
143
146
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.editingDescription);
|
|
144
147
|
} }
|
|
145
148
|
function ListFormComponentExtended_section_32_span_26_Template(rf, ctx) { if (rf & 1) {
|
|
146
|
-
i0.ɵɵelementStart(0, "span",
|
|
147
|
-
i0.ɵɵelement(1, "i",
|
|
149
|
+
i0.ɵɵelementStart(0, "span", 48);
|
|
150
|
+
i0.ɵɵelement(1, "i", 73);
|
|
148
151
|
i0.ɵɵtext(2);
|
|
149
152
|
i0.ɵɵelementEnd();
|
|
150
153
|
} if (rf & 2) {
|
|
@@ -153,7 +156,7 @@ function ListFormComponentExtended_section_32_span_26_Template(rf, ctx) { if (rf
|
|
|
153
156
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.categoryName, " ");
|
|
154
157
|
} }
|
|
155
158
|
function ListFormComponentExtended_section_32_select_27_option_3_Template(rf, ctx) { if (rf & 1) {
|
|
156
|
-
i0.ɵɵelementStart(0, "option",
|
|
159
|
+
i0.ɵɵelementStart(0, "option", 75);
|
|
157
160
|
i0.ɵɵtext(1);
|
|
158
161
|
i0.ɵɵelementEnd();
|
|
159
162
|
} if (rf & 2) {
|
|
@@ -164,97 +167,123 @@ function ListFormComponentExtended_section_32_select_27_option_3_Template(rf, ct
|
|
|
164
167
|
} }
|
|
165
168
|
function ListFormComponentExtended_section_32_select_27_Template(rf, ctx) { if (rf & 1) {
|
|
166
169
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
167
|
-
i0.ɵɵelementStart(0, "select",
|
|
170
|
+
i0.ɵɵelementStart(0, "select", 74);
|
|
168
171
|
i0.ɵɵlistener("ngModelChange", function ListFormComponentExtended_section_32_select_27_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onCategoryChange($event)); });
|
|
169
|
-
i0.ɵɵelementStart(1, "option",
|
|
172
|
+
i0.ɵɵelementStart(1, "option", 75);
|
|
170
173
|
i0.ɵɵtext(2, "Uncategorized");
|
|
171
174
|
i0.ɵɵelementEnd();
|
|
172
|
-
i0.ɵɵtemplate(3, ListFormComponentExtended_section_32_select_27_option_3_Template, 2, 2, "option",
|
|
175
|
+
i0.ɵɵtemplate(3, ListFormComponentExtended_section_32_select_27_option_3_Template, 2, 2, "option", 76);
|
|
173
176
|
i0.ɵɵelementEnd();
|
|
174
177
|
} if (rf & 2) {
|
|
175
178
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
176
|
-
i0.ɵɵproperty("ngModel", ctx_r1.record
|
|
179
|
+
i0.ɵɵproperty("ngModel", ctx_r1.record.CategoryID);
|
|
177
180
|
i0.ɵɵadvance();
|
|
178
181
|
i0.ɵɵproperty("ngValue", null);
|
|
179
182
|
i0.ɵɵadvance(2);
|
|
180
183
|
i0.ɵɵproperty("ngForOf", ctx_r1.categories);
|
|
181
184
|
} }
|
|
182
185
|
function ListFormComponentExtended_section_32_span_34_Template(rf, ctx) { if (rf & 1) {
|
|
183
|
-
i0.ɵɵelementStart(0, "span",
|
|
186
|
+
i0.ɵɵelementStart(0, "span", 77);
|
|
184
187
|
i0.ɵɵtext(1, "You");
|
|
185
188
|
i0.ɵɵelementEnd();
|
|
186
189
|
} }
|
|
190
|
+
function ListFormComponentExtended_section_32_button_54_span_4_Template(rf, ctx) { if (rf & 1) {
|
|
191
|
+
i0.ɵɵelementStart(0, "span", 59);
|
|
192
|
+
i0.ɵɵtext(1);
|
|
193
|
+
i0.ɵɵelementEnd();
|
|
194
|
+
} if (rf & 2) {
|
|
195
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
196
|
+
i0.ɵɵadvance();
|
|
197
|
+
i0.ɵɵtextInterpolate(ctx_r1.stats.shareCount);
|
|
198
|
+
} }
|
|
199
|
+
function ListFormComponentExtended_section_32_button_54_Template(rf, ctx) { if (rf & 1) {
|
|
200
|
+
const _r11 = i0.ɵɵgetCurrentView();
|
|
201
|
+
i0.ɵɵelementStart(0, "button", 57);
|
|
202
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_section_32_button_54_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openShareDialog()); });
|
|
203
|
+
i0.ɵɵelement(1, "i", 78);
|
|
204
|
+
i0.ɵɵelementStart(2, "span");
|
|
205
|
+
i0.ɵɵtext(3, "Share List");
|
|
206
|
+
i0.ɵɵelementEnd();
|
|
207
|
+
i0.ɵɵtemplate(4, ListFormComponentExtended_section_32_button_54_span_4_Template, 2, 1, "span", 79);
|
|
208
|
+
i0.ɵɵelementEnd();
|
|
209
|
+
} if (rf & 2) {
|
|
210
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
211
|
+
i0.ɵɵadvance(4);
|
|
212
|
+
i0.ɵɵproperty("ngIf", ctx_r1.stats.shareCount > 0);
|
|
213
|
+
} }
|
|
214
|
+
function ListFormComponentExtended_section_32_button_55_Template(rf, ctx) { if (rf & 1) {
|
|
215
|
+
const _r12 = i0.ɵɵgetCurrentView();
|
|
216
|
+
i0.ɵɵelementStart(0, "button", 57);
|
|
217
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_section_32_button_55_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setActiveSection("sharing")); });
|
|
218
|
+
i0.ɵɵelement(1, "i", 78);
|
|
219
|
+
i0.ɵɵelementStart(2, "span");
|
|
220
|
+
i0.ɵɵtext(3, "View Sharing");
|
|
221
|
+
i0.ɵɵelementEnd()();
|
|
222
|
+
} }
|
|
187
223
|
function ListFormComponentExtended_section_32_Template(rf, ctx) { if (rf & 1) {
|
|
188
224
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
189
|
-
i0.ɵɵelementStart(0, "section",
|
|
190
|
-
i0.ɵɵelement(5, "i",
|
|
225
|
+
i0.ɵɵelementStart(0, "section", 37)(1, "div", 38)(2, "div", 39)(3, "div", 40)(4, "h3");
|
|
226
|
+
i0.ɵɵelement(5, "i", 41);
|
|
191
227
|
i0.ɵɵtext(6, " Description");
|
|
192
228
|
i0.ɵɵelementEnd();
|
|
193
|
-
i0.ɵɵtemplate(7, ListFormComponentExtended_section_32_button_7_Template, 2, 0, "button",
|
|
229
|
+
i0.ɵɵtemplate(7, ListFormComponentExtended_section_32_button_7_Template, 2, 0, "button", 42);
|
|
194
230
|
i0.ɵɵelementEnd();
|
|
195
|
-
i0.ɵɵelementStart(8, "div",
|
|
231
|
+
i0.ɵɵelementStart(8, "div", 43);
|
|
196
232
|
i0.ɵɵtemplate(9, ListFormComponentExtended_section_32_ng_container_9_Template, 3, 2, "ng-container", 7)(10, ListFormComponentExtended_section_32_ng_container_10_Template, 7, 1, "ng-container", 7);
|
|
197
233
|
i0.ɵɵelementEnd()();
|
|
198
|
-
i0.ɵɵelementStart(11, "div",
|
|
199
|
-
i0.ɵɵelement(14, "i",
|
|
234
|
+
i0.ɵɵelementStart(11, "div", 44)(12, "div", 40)(13, "h3");
|
|
235
|
+
i0.ɵɵelement(14, "i", 45);
|
|
200
236
|
i0.ɵɵtext(15, " Details");
|
|
201
237
|
i0.ɵɵelementEnd()();
|
|
202
|
-
i0.ɵɵelementStart(16, "div",
|
|
238
|
+
i0.ɵɵelementStart(16, "div", 43)(17, "div", 46)(18, "span", 47);
|
|
203
239
|
i0.ɵɵtext(19, "Entity");
|
|
204
240
|
i0.ɵɵelementEnd();
|
|
205
|
-
i0.ɵɵelementStart(20, "span",
|
|
206
|
-
i0.ɵɵelement(21, "i",
|
|
241
|
+
i0.ɵɵelementStart(20, "span", 48);
|
|
242
|
+
i0.ɵɵelement(21, "i", 49);
|
|
207
243
|
i0.ɵɵtext(22);
|
|
208
244
|
i0.ɵɵelementEnd()();
|
|
209
|
-
i0.ɵɵelementStart(23, "div",
|
|
245
|
+
i0.ɵɵelementStart(23, "div", 46)(24, "span", 47);
|
|
210
246
|
i0.ɵɵtext(25, "Category");
|
|
211
247
|
i0.ɵɵelementEnd();
|
|
212
|
-
i0.ɵɵtemplate(26, ListFormComponentExtended_section_32_span_26_Template, 3, 1, "span",
|
|
248
|
+
i0.ɵɵtemplate(26, ListFormComponentExtended_section_32_span_26_Template, 3, 1, "span", 50)(27, ListFormComponentExtended_section_32_select_27_Template, 4, 3, "select", 51);
|
|
213
249
|
i0.ɵɵelementEnd();
|
|
214
|
-
i0.ɵɵelementStart(28, "div",
|
|
250
|
+
i0.ɵɵelementStart(28, "div", 46)(29, "span", 47);
|
|
215
251
|
i0.ɵɵtext(30, "Owner");
|
|
216
252
|
i0.ɵɵelementEnd();
|
|
217
|
-
i0.ɵɵelementStart(31, "span",
|
|
218
|
-
i0.ɵɵelement(32, "i",
|
|
253
|
+
i0.ɵɵelementStart(31, "span", 48);
|
|
254
|
+
i0.ɵɵelement(32, "i", 52);
|
|
219
255
|
i0.ɵɵtext(33);
|
|
220
|
-
i0.ɵɵtemplate(34, ListFormComponentExtended_section_32_span_34_Template, 2, 0, "span",
|
|
256
|
+
i0.ɵɵtemplate(34, ListFormComponentExtended_section_32_span_34_Template, 2, 0, "span", 53);
|
|
221
257
|
i0.ɵɵelementEnd()();
|
|
222
|
-
i0.ɵɵelementStart(35, "div",
|
|
258
|
+
i0.ɵɵelementStart(35, "div", 46)(36, "span", 47);
|
|
223
259
|
i0.ɵɵtext(37, "Created");
|
|
224
260
|
i0.ɵɵelementEnd();
|
|
225
|
-
i0.ɵɵelementStart(38, "span",
|
|
226
|
-
i0.ɵɵelement(39, "i",
|
|
261
|
+
i0.ɵɵelementStart(38, "span", 48);
|
|
262
|
+
i0.ɵɵelement(39, "i", 54);
|
|
227
263
|
i0.ɵɵtext(40);
|
|
228
264
|
i0.ɵɵpipe(41, "date");
|
|
229
265
|
i0.ɵɵelementEnd()()()();
|
|
230
|
-
i0.ɵɵelementStart(42, "div",
|
|
231
|
-
i0.ɵɵelement(45, "i",
|
|
266
|
+
i0.ɵɵelementStart(42, "div", 55)(43, "div", 40)(44, "h3");
|
|
267
|
+
i0.ɵɵelement(45, "i", 56);
|
|
232
268
|
i0.ɵɵtext(46, " Quick Actions");
|
|
233
269
|
i0.ɵɵelementEnd()();
|
|
234
|
-
i0.ɵɵelementStart(47, "div",
|
|
270
|
+
i0.ɵɵelementStart(47, "div", 43)(48, "button", 57);
|
|
235
271
|
i0.ɵɵlistener("click", function ListFormComponentExtended_section_32_Template_button_click_48_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setActiveSection("items")); });
|
|
236
|
-
i0.ɵɵelement(49, "i",
|
|
272
|
+
i0.ɵɵelement(49, "i", 58);
|
|
237
273
|
i0.ɵɵelementStart(50, "span");
|
|
238
274
|
i0.ɵɵtext(51, "View Items");
|
|
239
275
|
i0.ɵɵelementEnd();
|
|
240
|
-
i0.ɵɵelementStart(52, "span",
|
|
276
|
+
i0.ɵɵelementStart(52, "span", 59);
|
|
241
277
|
i0.ɵɵtext(53);
|
|
242
278
|
i0.ɵɵelementEnd()();
|
|
243
|
-
i0.ɵɵ
|
|
244
|
-
i0.ɵɵ
|
|
245
|
-
i0.ɵɵ
|
|
246
|
-
i0.ɵɵ
|
|
247
|
-
i0.ɵɵ
|
|
248
|
-
i0.ɵɵelementStart(58, "span", 59);
|
|
249
|
-
i0.ɵɵtext(59, "Soon");
|
|
250
|
-
i0.ɵɵelementEnd()();
|
|
251
|
-
i0.ɵɵelementStart(60, "button", 57);
|
|
252
|
-
i0.ɵɵelement(61, "i", 60);
|
|
253
|
-
i0.ɵɵelementStart(62, "span");
|
|
254
|
-
i0.ɵɵtext(63, "Export Data");
|
|
279
|
+
i0.ɵɵtemplate(54, ListFormComponentExtended_section_32_button_54_Template, 5, 1, "button", 60)(55, ListFormComponentExtended_section_32_button_55_Template, 4, 0, "button", 60);
|
|
280
|
+
i0.ɵɵelementStart(56, "button", 61);
|
|
281
|
+
i0.ɵɵelement(57, "i", 62);
|
|
282
|
+
i0.ɵɵelementStart(58, "span");
|
|
283
|
+
i0.ɵɵtext(59, "Export Data");
|
|
255
284
|
i0.ɵɵelementEnd();
|
|
256
|
-
i0.ɵɵelementStart(
|
|
257
|
-
i0.ɵɵtext(
|
|
285
|
+
i0.ɵɵelementStart(60, "span", 63);
|
|
286
|
+
i0.ɵɵtext(61, "Soon");
|
|
258
287
|
i0.ɵɵelementEnd()()()()()();
|
|
259
288
|
} if (rf & 2) {
|
|
260
289
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -277,22 +306,37 @@ function ListFormComponentExtended_section_32_Template(rf, ctx) { if (rf & 1) {
|
|
|
277
306
|
i0.ɵɵadvance();
|
|
278
307
|
i0.ɵɵproperty("ngIf", ctx_r1.isCurrentUserOwner());
|
|
279
308
|
i0.ɵɵadvance(6);
|
|
280
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(41,
|
|
309
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(41, 15, ctx_r1.record.__mj_CreatedAt, "mediumDate"), " ");
|
|
281
310
|
i0.ɵɵadvance(13);
|
|
282
311
|
i0.ɵɵtextInterpolate(ctx_r1.stats.itemCount);
|
|
283
312
|
i0.ɵɵadvance();
|
|
284
|
-
i0.ɵɵproperty("
|
|
285
|
-
i0.ɵɵadvance(
|
|
313
|
+
i0.ɵɵproperty("ngIf", ctx_r1.isCurrentUserOwner());
|
|
314
|
+
i0.ɵɵadvance();
|
|
315
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.isCurrentUserOwner());
|
|
316
|
+
i0.ɵɵadvance();
|
|
286
317
|
i0.ɵɵproperty("disabled", true);
|
|
287
318
|
} }
|
|
288
|
-
function
|
|
289
|
-
i0.ɵɵ
|
|
290
|
-
i0.ɵɵ
|
|
319
|
+
function ListFormComponentExtended_section_33_div_8_Template(rf, ctx) { if (rf & 1) {
|
|
320
|
+
const _r14 = i0.ɵɵgetCurrentView();
|
|
321
|
+
i0.ɵɵelementStart(0, "div", 92)(1, "button", 93);
|
|
322
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_section_33_div_8_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openAddRecordsDialog()); });
|
|
323
|
+
i0.ɵɵelement(2, "i", 94);
|
|
324
|
+
i0.ɵɵtext(3, " Add Records ");
|
|
291
325
|
i0.ɵɵelementEnd();
|
|
326
|
+
i0.ɵɵelementStart(4, "button", 95);
|
|
327
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_section_33_div_8_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openAddFromViewDialog()); });
|
|
328
|
+
i0.ɵɵelement(5, "i", 96);
|
|
329
|
+
i0.ɵɵtext(6, " Add From View ");
|
|
330
|
+
i0.ɵɵelementEnd()();
|
|
292
331
|
} }
|
|
293
332
|
function ListFormComponentExtended_section_33_div_11_Template(rf, ctx) { if (rf & 1) {
|
|
294
|
-
i0.ɵɵelementStart(0, "div",
|
|
295
|
-
i0.ɵɵelement(
|
|
333
|
+
i0.ɵɵelementStart(0, "div", 97);
|
|
334
|
+
i0.ɵɵelement(1, "mj-loading", 98);
|
|
335
|
+
i0.ɵɵelementEnd();
|
|
336
|
+
} }
|
|
337
|
+
function ListFormComponentExtended_section_33_div_12_Template(rf, ctx) { if (rf & 1) {
|
|
338
|
+
i0.ɵɵelementStart(0, "div", 99)(1, "div", 100);
|
|
339
|
+
i0.ɵɵelement(2, "i", 101);
|
|
296
340
|
i0.ɵɵelementEnd();
|
|
297
341
|
i0.ɵɵelementStart(3, "h3");
|
|
298
342
|
i0.ɵɵtext(4, "No Items Yet");
|
|
@@ -305,14 +349,14 @@ function ListFormComponentExtended_section_33_div_11_Template(rf, ctx) { if (rf
|
|
|
305
349
|
i0.ɵɵadvance(6);
|
|
306
350
|
i0.ɵɵtextInterpolate1("This list doesn't have any items. Add records from the ", ctx_r1.entityDisplayName, " entity.");
|
|
307
351
|
} }
|
|
308
|
-
function
|
|
309
|
-
const
|
|
310
|
-
i0.ɵɵelementStart(0, "div",
|
|
352
|
+
function ListFormComponentExtended_section_33_div_13_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
353
|
+
const _r16 = i0.ɵɵgetCurrentView();
|
|
354
|
+
i0.ɵɵelementStart(0, "div", 114)(1, "span", 115);
|
|
311
355
|
i0.ɵɵtext(2);
|
|
312
356
|
i0.ɵɵelementEnd();
|
|
313
|
-
i0.ɵɵelementStart(3, "button",
|
|
314
|
-
i0.ɵɵlistener("click", function
|
|
315
|
-
i0.ɵɵelement(4, "i",
|
|
357
|
+
i0.ɵɵelementStart(3, "button", 116);
|
|
358
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_section_33_div_13_div_1_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.removeSelectedItems()); });
|
|
359
|
+
i0.ɵɵelement(4, "i", 117);
|
|
316
360
|
i0.ɵɵtext(5, " Remove from List ");
|
|
317
361
|
i0.ɵɵelementEnd()();
|
|
318
362
|
} if (rf & 2) {
|
|
@@ -320,73 +364,73 @@ function ListFormComponentExtended_section_33_div_12_div_1_Template(rf, ctx) { i
|
|
|
320
364
|
i0.ɵɵadvance(2);
|
|
321
365
|
i0.ɵɵtextInterpolate1("", ctx_r1.selectedItems.size, " selected");
|
|
322
366
|
} }
|
|
323
|
-
function
|
|
324
|
-
i0.ɵɵelement(0, "i",
|
|
367
|
+
function ListFormComponentExtended_section_33_div_13_tr_15_i_8_Template(rf, ctx) { if (rf & 1) {
|
|
368
|
+
i0.ɵɵelement(0, "i", 124);
|
|
325
369
|
} }
|
|
326
|
-
function
|
|
327
|
-
const
|
|
328
|
-
i0.ɵɵelementStart(0, "tr")(1, "td",
|
|
329
|
-
i0.ɵɵlistener("change", function
|
|
370
|
+
function ListFormComponentExtended_section_33_div_13_tr_15_Template(rf, ctx) { if (rf & 1) {
|
|
371
|
+
const _r17 = i0.ɵɵgetCurrentView();
|
|
372
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 105)(2, "input", 106);
|
|
373
|
+
i0.ɵɵlistener("change", function ListFormComponentExtended_section_33_div_13_tr_15_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)); });
|
|
330
374
|
i0.ɵɵelementEnd()();
|
|
331
|
-
i0.ɵɵelementStart(3, "td",
|
|
332
|
-
i0.ɵɵelement(5, "i",
|
|
375
|
+
i0.ɵɵelementStart(3, "td", 107)(4, "div", 118);
|
|
376
|
+
i0.ɵɵelement(5, "i", 119);
|
|
333
377
|
i0.ɵɵelementStart(6, "span");
|
|
334
378
|
i0.ɵɵtext(7);
|
|
335
379
|
i0.ɵɵelementEnd();
|
|
336
|
-
i0.ɵɵtemplate(8,
|
|
380
|
+
i0.ɵɵtemplate(8, ListFormComponentExtended_section_33_div_13_tr_15_i_8_Template, 1, 0, "i", 120);
|
|
337
381
|
i0.ɵɵelementEnd()();
|
|
338
|
-
i0.ɵɵelementStart(9, "td",
|
|
382
|
+
i0.ɵɵelementStart(9, "td", 108)(10, "code", 121);
|
|
339
383
|
i0.ɵɵtext(11);
|
|
340
384
|
i0.ɵɵelementEnd()();
|
|
341
|
-
i0.ɵɵelementStart(12, "td",
|
|
385
|
+
i0.ɵɵelementStart(12, "td", 109);
|
|
342
386
|
i0.ɵɵtext(13);
|
|
343
387
|
i0.ɵɵpipe(14, "date");
|
|
344
388
|
i0.ɵɵelementEnd();
|
|
345
|
-
i0.ɵɵelementStart(15, "td",
|
|
346
|
-
i0.ɵɵlistener("click", function
|
|
347
|
-
i0.ɵɵelement(17, "i",
|
|
389
|
+
i0.ɵɵelementStart(15, "td", 110)(16, "button", 122);
|
|
390
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_section_33_div_13_tr_15_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)); });
|
|
391
|
+
i0.ɵɵelement(17, "i", 123);
|
|
348
392
|
i0.ɵɵelementEnd()()();
|
|
349
393
|
} if (rf & 2) {
|
|
350
|
-
const
|
|
394
|
+
const item_r18 = ctx.$implicit;
|
|
351
395
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
352
|
-
i0.ɵɵclassProp("selected", ctx_r1.selectedItems.has(
|
|
396
|
+
i0.ɵɵclassProp("selected", ctx_r1.selectedItems.has(item_r18.detail.ID));
|
|
353
397
|
i0.ɵɵadvance(2);
|
|
354
|
-
i0.ɵɵproperty("checked", ctx_r1.selectedItems.has(
|
|
398
|
+
i0.ɵɵproperty("checked", ctx_r1.selectedItems.has(item_r18.detail.ID));
|
|
355
399
|
i0.ɵɵadvance(2);
|
|
356
|
-
i0.ɵɵclassProp("loading",
|
|
400
|
+
i0.ɵɵclassProp("loading", item_r18.isLoading);
|
|
357
401
|
i0.ɵɵadvance();
|
|
358
402
|
i0.ɵɵclassMap(ctx_r1.entityIcon);
|
|
359
403
|
i0.ɵɵadvance(2);
|
|
360
|
-
i0.ɵɵtextInterpolate(
|
|
404
|
+
i0.ɵɵtextInterpolate(item_r18.recordName);
|
|
361
405
|
i0.ɵɵadvance();
|
|
362
|
-
i0.ɵɵproperty("ngIf",
|
|
406
|
+
i0.ɵɵproperty("ngIf", item_r18.isLoading);
|
|
363
407
|
i0.ɵɵadvance(3);
|
|
364
|
-
i0.ɵɵtextInterpolate(
|
|
408
|
+
i0.ɵɵtextInterpolate(item_r18.detail.RecordID);
|
|
365
409
|
i0.ɵɵadvance(2);
|
|
366
|
-
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(14, 11,
|
|
410
|
+
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(14, 11, item_r18.detail.__mj_CreatedAt, "shortDate"), " ");
|
|
367
411
|
} }
|
|
368
|
-
function
|
|
369
|
-
const
|
|
370
|
-
i0.ɵɵelementStart(0, "div",
|
|
371
|
-
i0.ɵɵtemplate(1,
|
|
372
|
-
i0.ɵɵelementStart(2, "table",
|
|
373
|
-
i0.ɵɵlistener("change", function
|
|
412
|
+
function ListFormComponentExtended_section_33_div_13_Template(rf, ctx) { if (rf & 1) {
|
|
413
|
+
const _r15 = i0.ɵɵgetCurrentView();
|
|
414
|
+
i0.ɵɵelementStart(0, "div", 102);
|
|
415
|
+
i0.ɵɵtemplate(1, ListFormComponentExtended_section_33_div_13_div_1_Template, 6, 1, "div", 103);
|
|
416
|
+
i0.ɵɵelementStart(2, "table", 104)(3, "thead")(4, "tr")(5, "th", 105)(6, "input", 106);
|
|
417
|
+
i0.ɵɵlistener("change", function ListFormComponentExtended_section_33_div_13_Template_input_change_6_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleSelectAll()); });
|
|
374
418
|
i0.ɵɵelementEnd()();
|
|
375
|
-
i0.ɵɵelementStart(7, "th",
|
|
419
|
+
i0.ɵɵelementStart(7, "th", 107);
|
|
376
420
|
i0.ɵɵtext(8, "Name");
|
|
377
421
|
i0.ɵɵelementEnd();
|
|
378
|
-
i0.ɵɵelementStart(9, "th",
|
|
422
|
+
i0.ɵɵelementStart(9, "th", 108);
|
|
379
423
|
i0.ɵɵtext(10, "Record ID");
|
|
380
424
|
i0.ɵɵelementEnd();
|
|
381
|
-
i0.ɵɵelementStart(11, "th",
|
|
425
|
+
i0.ɵɵelementStart(11, "th", 109);
|
|
382
426
|
i0.ɵɵtext(12, "Added");
|
|
383
427
|
i0.ɵɵelementEnd();
|
|
384
|
-
i0.ɵɵelement(13, "th",
|
|
428
|
+
i0.ɵɵelement(13, "th", 110);
|
|
385
429
|
i0.ɵɵelementEnd()();
|
|
386
430
|
i0.ɵɵelementStart(14, "tbody");
|
|
387
|
-
i0.ɵɵtemplate(15,
|
|
431
|
+
i0.ɵɵtemplate(15, ListFormComponentExtended_section_33_div_13_tr_15_Template, 18, 14, "tr", 111);
|
|
388
432
|
i0.ɵɵelementEnd()();
|
|
389
|
-
i0.ɵɵelementStart(16, "div",
|
|
433
|
+
i0.ɵɵelementStart(16, "div", 112)(17, "span", 113);
|
|
390
434
|
i0.ɵɵtext(18);
|
|
391
435
|
i0.ɵɵelementEnd()()();
|
|
392
436
|
} if (rf & 2) {
|
|
@@ -401,25 +445,28 @@ function ListFormComponentExtended_section_33_div_12_Template(rf, ctx) { if (rf
|
|
|
401
445
|
i0.ɵɵtextInterpolate2(" Showing ", ctx_r1.filteredItems.length, " of ", ctx_r1.listItems.length, " items ");
|
|
402
446
|
} }
|
|
403
447
|
function ListFormComponentExtended_section_33_Template(rf, ctx) { if (rf & 1) {
|
|
404
|
-
const
|
|
405
|
-
i0.ɵɵelementStart(0, "section",
|
|
448
|
+
const _r13 = i0.ɵɵgetCurrentView();
|
|
449
|
+
i0.ɵɵelementStart(0, "section", 80)(1, "div", 81)(2, "h2");
|
|
406
450
|
i0.ɵɵtext(3, "List Items");
|
|
407
451
|
i0.ɵɵelementEnd();
|
|
408
|
-
i0.ɵɵelementStart(4, "div",
|
|
409
|
-
i0.ɵɵelement(6, "i",
|
|
410
|
-
i0.ɵɵelementStart(7, "input",
|
|
411
|
-
i0.ɵɵtwoWayListener("ngModelChange", function ListFormComponentExtended_section_33_Template_input_ngModelChange_7_listener($event) { i0.ɵɵrestoreView(
|
|
452
|
+
i0.ɵɵelementStart(4, "div", 82)(5, "div", 83);
|
|
453
|
+
i0.ɵɵelement(6, "i", 84);
|
|
454
|
+
i0.ɵɵelementStart(7, "input", 85);
|
|
455
|
+
i0.ɵɵtwoWayListener("ngModelChange", function ListFormComponentExtended_section_33_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); });
|
|
412
456
|
i0.ɵɵelementEnd()();
|
|
413
|
-
i0.ɵɵ
|
|
414
|
-
i0.ɵɵ
|
|
415
|
-
i0.ɵɵ
|
|
457
|
+
i0.ɵɵtemplate(8, ListFormComponentExtended_section_33_div_8_Template, 7, 0, "div", 86);
|
|
458
|
+
i0.ɵɵelementStart(9, "button", 87);
|
|
459
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_section_33_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshItems()); });
|
|
460
|
+
i0.ɵɵelement(10, "i", 88);
|
|
416
461
|
i0.ɵɵelementEnd()()();
|
|
417
|
-
i0.ɵɵtemplate(
|
|
462
|
+
i0.ɵɵtemplate(11, ListFormComponentExtended_section_33_div_11_Template, 2, 0, "div", 89)(12, ListFormComponentExtended_section_33_div_12_Template, 7, 1, "div", 90)(13, ListFormComponentExtended_section_33_div_13_Template, 19, 5, "div", 91);
|
|
418
463
|
i0.ɵɵelementEnd();
|
|
419
464
|
} if (rf & 2) {
|
|
420
465
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
421
466
|
i0.ɵɵadvance(7);
|
|
422
467
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.itemSearchTerm);
|
|
468
|
+
i0.ɵɵadvance();
|
|
469
|
+
i0.ɵɵproperty("ngIf", ctx_r1.isCurrentUserOwner());
|
|
423
470
|
i0.ɵɵadvance(3);
|
|
424
471
|
i0.ɵɵproperty("ngIf", ctx_r1.isLoadingItems);
|
|
425
472
|
i0.ɵɵadvance();
|
|
@@ -427,83 +474,157 @@ function ListFormComponentExtended_section_33_Template(rf, ctx) { if (rf & 1) {
|
|
|
427
474
|
i0.ɵɵadvance();
|
|
428
475
|
i0.ɵɵproperty("ngIf", !ctx_r1.isLoadingItems && ctx_r1.listItems.length > 0);
|
|
429
476
|
} }
|
|
430
|
-
function
|
|
431
|
-
i0.ɵɵ
|
|
432
|
-
i0.ɵɵ
|
|
433
|
-
i0.ɵɵ
|
|
434
|
-
i0.ɵɵ
|
|
435
|
-
i0.ɵɵ
|
|
477
|
+
function ListFormComponentExtended_section_34_div_4_Template(rf, ctx) { if (rf & 1) {
|
|
478
|
+
const _r19 = i0.ɵɵgetCurrentView();
|
|
479
|
+
i0.ɵɵelementStart(0, "div", 82)(1, "button", 71);
|
|
480
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_section_34_div_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openShareDialog()); });
|
|
481
|
+
i0.ɵɵelement(2, "i", 129);
|
|
482
|
+
i0.ɵɵtext(3, " Manage Sharing ");
|
|
436
483
|
i0.ɵɵelementEnd()();
|
|
484
|
+
} }
|
|
485
|
+
function ListFormComponentExtended_section_34_div_5_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
486
|
+
i0.ɵɵelementStart(0, "div", 131)(1, "div", 138);
|
|
487
|
+
i0.ɵɵelement(2, "i", 139);
|
|
488
|
+
i0.ɵɵelementEnd();
|
|
489
|
+
i0.ɵɵelementStart(3, "div", 134)(4, "span", 135);
|
|
490
|
+
i0.ɵɵtext(5);
|
|
491
|
+
i0.ɵɵelementEnd();
|
|
492
|
+
i0.ɵɵelementStart(6, "span", 136);
|
|
493
|
+
i0.ɵɵtext(7);
|
|
494
|
+
i0.ɵɵelementEnd()()();
|
|
495
|
+
} if (rf & 2) {
|
|
496
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
497
|
+
i0.ɵɵadvance(5);
|
|
498
|
+
i0.ɵɵtextInterpolate(ctx_r1.stats.invitationCount);
|
|
499
|
+
i0.ɵɵadvance(2);
|
|
500
|
+
i0.ɵɵtextInterpolate1("Pending Invitation", ctx_r1.stats.invitationCount !== 1 ? "s" : "", "");
|
|
501
|
+
} }
|
|
502
|
+
function ListFormComponentExtended_section_34_div_5_Template(rf, ctx) { if (rf & 1) {
|
|
503
|
+
i0.ɵɵelementStart(0, "div", 130)(1, "div", 131)(2, "div", 132);
|
|
504
|
+
i0.ɵɵelement(3, "i", 133);
|
|
505
|
+
i0.ɵɵelementEnd();
|
|
506
|
+
i0.ɵɵelementStart(4, "div", 134)(5, "span", 135);
|
|
507
|
+
i0.ɵɵtext(6);
|
|
508
|
+
i0.ɵɵelementEnd();
|
|
509
|
+
i0.ɵɵelementStart(7, "span", 136);
|
|
510
|
+
i0.ɵɵtext(8);
|
|
511
|
+
i0.ɵɵelementEnd()()();
|
|
512
|
+
i0.ɵɵtemplate(9, ListFormComponentExtended_section_34_div_5_div_9_Template, 8, 2, "div", 137);
|
|
513
|
+
i0.ɵɵelementEnd();
|
|
437
514
|
} if (rf & 2) {
|
|
438
515
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
516
|
+
i0.ɵɵadvance(6);
|
|
517
|
+
i0.ɵɵtextInterpolate(ctx_r1.stats.shareCount);
|
|
518
|
+
i0.ɵɵadvance(2);
|
|
519
|
+
i0.ɵɵtextInterpolate1("Active Share", ctx_r1.stats.shareCount !== 1 ? "s" : "", "");
|
|
439
520
|
i0.ɵɵadvance();
|
|
440
|
-
i0.ɵɵproperty("
|
|
441
|
-
|
|
442
|
-
|
|
521
|
+
i0.ɵɵproperty("ngIf", ctx_r1.stats.invitationCount > 0);
|
|
522
|
+
} }
|
|
523
|
+
function ListFormComponentExtended_section_34_div_6_p_5_Template(rf, ctx) { if (rf & 1) {
|
|
524
|
+
i0.ɵɵelementStart(0, "p");
|
|
525
|
+
i0.ɵɵtext(1, "This list is private. Click \"Manage Sharing\" to share it with other users or roles.");
|
|
526
|
+
i0.ɵɵelementEnd();
|
|
527
|
+
} }
|
|
528
|
+
function ListFormComponentExtended_section_34_div_6_p_6_Template(rf, ctx) { if (rf & 1) {
|
|
529
|
+
i0.ɵɵelementStart(0, "p");
|
|
530
|
+
i0.ɵɵtext(1, "This list hasn't been shared with anyone else.");
|
|
531
|
+
i0.ɵɵelementEnd();
|
|
532
|
+
} }
|
|
533
|
+
function ListFormComponentExtended_section_34_div_6_button_7_Template(rf, ctx) { if (rf & 1) {
|
|
534
|
+
const _r20 = i0.ɵɵgetCurrentView();
|
|
535
|
+
i0.ɵɵelementStart(0, "button", 71);
|
|
536
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_section_34_div_6_button_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openShareDialog()); });
|
|
537
|
+
i0.ɵɵelement(1, "i", 129);
|
|
538
|
+
i0.ɵɵtext(2, " Share This List ");
|
|
539
|
+
i0.ɵɵelementEnd();
|
|
540
|
+
} }
|
|
541
|
+
function ListFormComponentExtended_section_34_div_6_Template(rf, ctx) { if (rf & 1) {
|
|
542
|
+
i0.ɵɵelementStart(0, "div", 99)(1, "div", 100);
|
|
543
|
+
i0.ɵɵelement(2, "i", 78);
|
|
544
|
+
i0.ɵɵelementEnd();
|
|
545
|
+
i0.ɵɵelementStart(3, "h3");
|
|
546
|
+
i0.ɵɵtext(4, "Not Shared Yet");
|
|
547
|
+
i0.ɵɵelementEnd();
|
|
548
|
+
i0.ɵɵtemplate(5, ListFormComponentExtended_section_34_div_6_p_5_Template, 2, 0, "p", 7)(6, ListFormComponentExtended_section_34_div_6_p_6_Template, 2, 0, "p", 7)(7, ListFormComponentExtended_section_34_div_6_button_7_Template, 3, 0, "button", 140);
|
|
549
|
+
i0.ɵɵelementEnd();
|
|
550
|
+
} if (rf & 2) {
|
|
551
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
552
|
+
i0.ɵɵadvance(5);
|
|
553
|
+
i0.ɵɵproperty("ngIf", ctx_r1.isCurrentUserOwner());
|
|
443
554
|
i0.ɵɵadvance();
|
|
444
|
-
i0.ɵɵproperty("
|
|
555
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.isCurrentUserOwner());
|
|
445
556
|
i0.ɵɵadvance();
|
|
446
|
-
i0.ɵɵproperty("
|
|
557
|
+
i0.ɵɵproperty("ngIf", ctx_r1.isCurrentUserOwner());
|
|
558
|
+
} }
|
|
559
|
+
function ListFormComponentExtended_section_34_div_7_Template(rf, ctx) { if (rf & 1) {
|
|
560
|
+
i0.ɵɵelementStart(0, "div", 141);
|
|
561
|
+
i0.ɵɵelement(1, "i", 45);
|
|
562
|
+
i0.ɵɵelementStart(2, "span");
|
|
563
|
+
i0.ɵɵtext(3, "Only the list owner can manage sharing settings.");
|
|
564
|
+
i0.ɵɵelementEnd()();
|
|
447
565
|
} }
|
|
448
566
|
function ListFormComponentExtended_section_34_Template(rf, ctx) { if (rf & 1) {
|
|
449
|
-
i0.ɵɵelementStart(0, "section",
|
|
450
|
-
i0.ɵɵ
|
|
451
|
-
i0.ɵɵelementStart(3, "div", 116)(4, "h3");
|
|
452
|
-
i0.ɵɵtext(5, "Sharing Coming Soon");
|
|
567
|
+
i0.ɵɵelementStart(0, "section", 125)(1, "div", 81)(2, "h2");
|
|
568
|
+
i0.ɵɵtext(3, "Sharing");
|
|
453
569
|
i0.ɵɵelementEnd();
|
|
454
|
-
i0.ɵɵ
|
|
455
|
-
i0.ɵɵ
|
|
456
|
-
i0.ɵɵ
|
|
457
|
-
i0.ɵɵtemplate(8, ListFormComponentExtended_section_34_div_8_Template, 5, 14, "div", 117);
|
|
570
|
+
i0.ɵɵtemplate(4, ListFormComponentExtended_section_34_div_4_Template, 4, 0, "div", 126);
|
|
571
|
+
i0.ɵɵelementEnd();
|
|
572
|
+
i0.ɵɵtemplate(5, ListFormComponentExtended_section_34_div_5_Template, 10, 3, "div", 127)(6, ListFormComponentExtended_section_34_div_6_Template, 8, 3, "div", 90)(7, ListFormComponentExtended_section_34_div_7_Template, 4, 0, "div", 128);
|
|
458
573
|
i0.ɵɵelementEnd();
|
|
459
574
|
} if (rf & 2) {
|
|
460
575
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
461
|
-
i0.ɵɵadvance(
|
|
462
|
-
i0.ɵɵproperty("ngIf", ctx_r1.
|
|
576
|
+
i0.ɵɵadvance(4);
|
|
577
|
+
i0.ɵɵproperty("ngIf", ctx_r1.isCurrentUserOwner());
|
|
578
|
+
i0.ɵɵadvance();
|
|
579
|
+
i0.ɵɵproperty("ngIf", ctx_r1.stats.shareCount > 0 || ctx_r1.stats.invitationCount > 0);
|
|
580
|
+
i0.ɵɵadvance();
|
|
581
|
+
i0.ɵɵproperty("ngIf", ctx_r1.stats.shareCount === 0 && ctx_r1.stats.invitationCount === 0);
|
|
582
|
+
i0.ɵɵadvance();
|
|
583
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.isCurrentUserOwner() && (ctx_r1.stats.shareCount > 0 || ctx_r1.stats.invitationCount > 0));
|
|
463
584
|
} }
|
|
464
585
|
function ListFormComponentExtended_section_35_Template(rf, ctx) { if (rf & 1) {
|
|
465
|
-
i0.ɵɵelementStart(0, "section",
|
|
586
|
+
i0.ɵɵelementStart(0, "section", 142)(1, "div", 81)(2, "h2");
|
|
466
587
|
i0.ɵɵtext(3, "Activity");
|
|
467
588
|
i0.ɵɵelementEnd()();
|
|
468
|
-
i0.ɵɵelementStart(4, "div",
|
|
469
|
-
i0.ɵɵelement(7, "i",
|
|
589
|
+
i0.ɵɵelementStart(4, "div", 143)(5, "div", 144)(6, "div", 145);
|
|
590
|
+
i0.ɵɵelement(7, "i", 146);
|
|
470
591
|
i0.ɵɵelementEnd();
|
|
471
|
-
i0.ɵɵelementStart(8, "div",
|
|
592
|
+
i0.ɵɵelementStart(8, "div", 147)(9, "p", 148);
|
|
472
593
|
i0.ɵɵtext(10, "List updated");
|
|
473
594
|
i0.ɵɵelementEnd();
|
|
474
|
-
i0.ɵɵelementStart(11, "span",
|
|
595
|
+
i0.ɵɵelementStart(11, "span", 149);
|
|
475
596
|
i0.ɵɵtext(12);
|
|
476
597
|
i0.ɵɵpipe(13, "date");
|
|
477
598
|
i0.ɵɵelementEnd()()();
|
|
478
|
-
i0.ɵɵelementStart(14, "div",
|
|
479
|
-
i0.ɵɵelement(16, "i",
|
|
599
|
+
i0.ɵɵelementStart(14, "div", 144)(15, "div", 150);
|
|
600
|
+
i0.ɵɵelement(16, "i", 94);
|
|
480
601
|
i0.ɵɵelementEnd();
|
|
481
|
-
i0.ɵɵelementStart(17, "div",
|
|
602
|
+
i0.ɵɵelementStart(17, "div", 147)(18, "p", 148);
|
|
482
603
|
i0.ɵɵtext(19, "List created");
|
|
483
604
|
i0.ɵɵelementEnd();
|
|
484
|
-
i0.ɵɵelementStart(20, "span",
|
|
605
|
+
i0.ɵɵelementStart(20, "span", 149);
|
|
485
606
|
i0.ɵɵtext(21);
|
|
486
607
|
i0.ɵɵpipe(22, "date");
|
|
487
608
|
i0.ɵɵelementEnd()()()();
|
|
488
|
-
i0.ɵɵelementStart(23, "div",
|
|
609
|
+
i0.ɵɵelementStart(23, "div", 151)(24, "p");
|
|
489
610
|
i0.ɵɵtext(25, "Detailed activity tracking coming soon. You'll be able to see who added items, when shares were created, and more.");
|
|
490
611
|
i0.ɵɵelementEnd()()();
|
|
491
612
|
} if (rf & 2) {
|
|
492
613
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
493
614
|
i0.ɵɵadvance(12);
|
|
494
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(13, 2, ctx_r1.record
|
|
615
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(13, 2, ctx_r1.record.__mj_UpdatedAt, "medium"));
|
|
495
616
|
i0.ɵɵadvance(9);
|
|
496
|
-
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(22, 5, ctx_r1.record
|
|
617
|
+
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(22, 5, ctx_r1.record.__mj_CreatedAt, "medium"));
|
|
497
618
|
} }
|
|
498
619
|
function ListFormComponentExtended_section_36_Template(rf, ctx) { if (rf & 1) {
|
|
499
|
-
i0.ɵɵelementStart(0, "section",
|
|
620
|
+
i0.ɵɵelementStart(0, "section", 152)(1, "div", 81)(2, "h2");
|
|
500
621
|
i0.ɵɵtext(3, "Settings");
|
|
501
622
|
i0.ɵɵelementEnd()();
|
|
502
|
-
i0.ɵɵelementStart(4, "div",
|
|
503
|
-
i0.ɵɵelement(7, "mj-form-field",
|
|
623
|
+
i0.ɵɵelementStart(4, "div", 153)(5, "mj-collapsible-panel", 154)(6, "div", 155);
|
|
624
|
+
i0.ɵɵelement(7, "mj-form-field", 156)(8, "mj-form-field", 157)(9, "mj-form-field", 158);
|
|
504
625
|
i0.ɵɵelementEnd()();
|
|
505
|
-
i0.ɵɵelementStart(10, "mj-collapsible-panel",
|
|
506
|
-
i0.ɵɵelement(12, "mj-form-field",
|
|
626
|
+
i0.ɵɵelementStart(10, "mj-collapsible-panel", 159)(11, "div", 155);
|
|
627
|
+
i0.ɵɵelement(12, "mj-form-field", 160)(13, "mj-form-field", 161)(14, "mj-form-field", 162)(15, "mj-form-field", 163);
|
|
507
628
|
i0.ɵɵelementEnd()()()();
|
|
508
629
|
} if (rf & 2) {
|
|
509
630
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -526,6 +647,295 @@ function ListFormComponentExtended_section_36_Template(rf, ctx) { if (rf & 1) {
|
|
|
526
647
|
i0.ɵɵadvance();
|
|
527
648
|
i0.ɵɵproperty("record", ctx_r1.record)("ShowLabel", true)("EditMode", false)("formContext", ctx_r1.formContext);
|
|
528
649
|
} }
|
|
650
|
+
function ListFormComponentExtended_kendo_dialog_37_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
651
|
+
i0.ɵɵelementContainerStart(0);
|
|
652
|
+
i0.ɵɵelementStart(1, "div", 168);
|
|
653
|
+
i0.ɵɵelement(2, "mj-loading", 169);
|
|
654
|
+
i0.ɵɵelementEnd();
|
|
655
|
+
i0.ɵɵelementContainerEnd();
|
|
656
|
+
} if (rf & 2) {
|
|
657
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
658
|
+
i0.ɵɵadvance(2);
|
|
659
|
+
i0.ɵɵproperty("text", "Adding " + ctx_r1.addTotal + " records to list...");
|
|
660
|
+
} }
|
|
661
|
+
function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_template_3_Template(rf, ctx) { if (rf & 1) {
|
|
662
|
+
i0.ɵɵelement(0, "span", 175);
|
|
663
|
+
} }
|
|
664
|
+
function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_7_Template(rf, ctx) { if (rf & 1) {
|
|
665
|
+
i0.ɵɵelementContainerStart(0);
|
|
666
|
+
i0.ɵɵelementStart(1, "div", 176);
|
|
667
|
+
i0.ɵɵelement(2, "mj-loading", 177);
|
|
668
|
+
i0.ɵɵelementEnd();
|
|
669
|
+
i0.ɵɵelementContainerEnd();
|
|
670
|
+
} if (rf & 2) {
|
|
671
|
+
i0.ɵɵadvance(2);
|
|
672
|
+
i0.ɵɵproperty("showText", false);
|
|
673
|
+
} }
|
|
674
|
+
function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_8_Template(rf, ctx) { if (rf & 1) {
|
|
675
|
+
i0.ɵɵelementContainerStart(0);
|
|
676
|
+
i0.ɵɵelementStart(1, "div", 178);
|
|
677
|
+
i0.ɵɵelement(2, "span", 179);
|
|
678
|
+
i0.ɵɵelementStart(3, "p");
|
|
679
|
+
i0.ɵɵtext(4);
|
|
680
|
+
i0.ɵɵelementEnd()();
|
|
681
|
+
i0.ɵɵelementContainerEnd();
|
|
682
|
+
} if (rf & 2) {
|
|
683
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
684
|
+
i0.ɵɵadvance(4);
|
|
685
|
+
i0.ɵɵtextInterpolate1("No records found matching \"", ctx_r1.addRecordsSearchFilter, "\"");
|
|
686
|
+
} }
|
|
687
|
+
function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_9_Template(rf, ctx) { if (rf & 1) {
|
|
688
|
+
i0.ɵɵelementContainerStart(0);
|
|
689
|
+
i0.ɵɵelementStart(1, "div", 178);
|
|
690
|
+
i0.ɵɵelement(2, "span", 180);
|
|
691
|
+
i0.ɵɵelementStart(3, "p");
|
|
692
|
+
i0.ɵɵtext(4, "Search for records to add to this list");
|
|
693
|
+
i0.ɵɵelementEnd()();
|
|
694
|
+
i0.ɵɵelementContainerEnd();
|
|
695
|
+
} }
|
|
696
|
+
function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_span_2_Template(rf, ctx) { if (rf & 1) {
|
|
697
|
+
i0.ɵɵelement(0, "span", 192);
|
|
698
|
+
} }
|
|
699
|
+
function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_input_3_Template(rf, ctx) { if (rf & 1) {
|
|
700
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
701
|
+
i0.ɵɵelementStart(0, "input", 193);
|
|
702
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_input_3_Template_input_click_0_listener($event) { i0.ɵɵrestoreView(_r26); return i0.ɵɵresetView($event.stopPropagation()); })("change", function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_input_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)); });
|
|
703
|
+
i0.ɵɵelementEnd();
|
|
704
|
+
} if (rf & 2) {
|
|
705
|
+
const record_r25 = i0.ɵɵnextContext().$implicit;
|
|
706
|
+
i0.ɵɵproperty("checked", record_r25.isSelected);
|
|
707
|
+
} }
|
|
708
|
+
function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_span_6_Template(rf, ctx) { if (rf & 1) {
|
|
709
|
+
i0.ɵɵelementStart(0, "span", 194);
|
|
710
|
+
i0.ɵɵtext(1, "In List");
|
|
711
|
+
i0.ɵɵelementEnd();
|
|
712
|
+
} }
|
|
713
|
+
function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_Template(rf, ctx) { if (rf & 1) {
|
|
714
|
+
const _r24 = i0.ɵɵgetCurrentView();
|
|
715
|
+
i0.ɵɵelementStart(0, "div", 186);
|
|
716
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_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)); });
|
|
717
|
+
i0.ɵɵelementStart(1, "div", 187);
|
|
718
|
+
i0.ɵɵtemplate(2, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_span_2_Template, 1, 0, "span", 188)(3, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_input_3_Template, 1, 1, "input", 189);
|
|
719
|
+
i0.ɵɵelementEnd();
|
|
720
|
+
i0.ɵɵelementStart(4, "div", 190);
|
|
721
|
+
i0.ɵɵtext(5);
|
|
722
|
+
i0.ɵɵelementEnd();
|
|
723
|
+
i0.ɵɵtemplate(6, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_span_6_Template, 2, 0, "span", 191);
|
|
724
|
+
i0.ɵɵelementEnd();
|
|
725
|
+
} if (rf & 2) {
|
|
726
|
+
const record_r25 = ctx.$implicit;
|
|
727
|
+
i0.ɵɵclassProp("in-list", record_r25.isInList)("selected", record_r25.isSelected);
|
|
728
|
+
i0.ɵɵadvance(2);
|
|
729
|
+
i0.ɵɵproperty("ngIf", record_r25.isInList);
|
|
730
|
+
i0.ɵɵadvance();
|
|
731
|
+
i0.ɵɵproperty("ngIf", !record_r25.isInList);
|
|
732
|
+
i0.ɵɵadvance(2);
|
|
733
|
+
i0.ɵɵtextInterpolate(record_r25.Name);
|
|
734
|
+
i0.ɵɵadvance();
|
|
735
|
+
i0.ɵɵproperty("ngIf", record_r25.isInList);
|
|
736
|
+
} }
|
|
737
|
+
function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_Template(rf, ctx) { if (rf & 1) {
|
|
738
|
+
const _r23 = i0.ɵɵgetCurrentView();
|
|
739
|
+
i0.ɵɵelementContainerStart(0);
|
|
740
|
+
i0.ɵɵelementStart(1, "div", 181)(2, "button", 182);
|
|
741
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.selectAllAddable()); });
|
|
742
|
+
i0.ɵɵtext(3, "Select All");
|
|
743
|
+
i0.ɵɵelementEnd();
|
|
744
|
+
i0.ɵɵelementStart(4, "button", 182);
|
|
745
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.deselectAllAddable()); });
|
|
746
|
+
i0.ɵɵtext(5, "Deselect All");
|
|
747
|
+
i0.ɵɵelementEnd();
|
|
748
|
+
i0.ɵɵelementStart(6, "span", 183);
|
|
749
|
+
i0.ɵɵtext(7);
|
|
750
|
+
i0.ɵɵelementEnd()();
|
|
751
|
+
i0.ɵɵelementStart(8, "div", 184);
|
|
752
|
+
i0.ɵɵtemplate(9, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_div_9_Template, 7, 8, "div", 185);
|
|
753
|
+
i0.ɵɵelementEnd();
|
|
754
|
+
i0.ɵɵelementContainerEnd();
|
|
755
|
+
} if (rf & 2) {
|
|
756
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
757
|
+
i0.ɵɵadvance(7);
|
|
758
|
+
i0.ɵɵtextInterpolate1("", ctx_r1.selectedAddableRecords.length, " selected");
|
|
759
|
+
i0.ɵɵadvance(2);
|
|
760
|
+
i0.ɵɵproperty("ngForOf", ctx_r1.addableRecords);
|
|
761
|
+
} }
|
|
762
|
+
function ListFormComponentExtended_kendo_dialog_37_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
763
|
+
const _r22 = i0.ɵɵgetCurrentView();
|
|
764
|
+
i0.ɵɵelementContainerStart(0);
|
|
765
|
+
i0.ɵɵelementStart(1, "div", 170)(2, "kendo-textbox", 171);
|
|
766
|
+
i0.ɵɵlistener("valueChange", function ListFormComponentExtended_kendo_dialog_37_ng_container_3_Template_kendo_textbox_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onAddRecordsSearchChange($event)); });
|
|
767
|
+
i0.ɵɵtemplate(3, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_template_3_Template, 1, 0, "ng-template", 172);
|
|
768
|
+
i0.ɵɵelementEnd();
|
|
769
|
+
i0.ɵɵelementStart(4, "span", 173);
|
|
770
|
+
i0.ɵɵtext(5, "Type at least 2 characters to search");
|
|
771
|
+
i0.ɵɵelementEnd()();
|
|
772
|
+
i0.ɵɵelementStart(6, "div", 174);
|
|
773
|
+
i0.ɵɵtemplate(7, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_7_Template, 3, 1, "ng-container", 7)(8, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_8_Template, 5, 1, "ng-container", 7)(9, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_9_Template, 5, 0, "ng-container", 7)(10, ListFormComponentExtended_kendo_dialog_37_ng_container_3_ng_container_10_Template, 10, 2, "ng-container", 7);
|
|
774
|
+
i0.ɵɵelementEnd();
|
|
775
|
+
i0.ɵɵelementContainerEnd();
|
|
776
|
+
} if (rf & 2) {
|
|
777
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
778
|
+
i0.ɵɵadvance(2);
|
|
779
|
+
i0.ɵɵproperty("placeholder", "Search " + ctx_r1.entityDisplayName + "...")("clearButton", true)("value", ctx_r1.addRecordsSearchFilter);
|
|
780
|
+
i0.ɵɵadvance(5);
|
|
781
|
+
i0.ɵɵproperty("ngIf", ctx_r1.addDialogLoading);
|
|
782
|
+
i0.ɵɵadvance();
|
|
783
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.addDialogLoading && ctx_r1.addableRecords.length === 0 && ctx_r1.addRecordsSearchFilter.length >= 2);
|
|
784
|
+
i0.ɵɵadvance();
|
|
785
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.addDialogLoading && ctx_r1.addableRecords.length === 0 && ctx_r1.addRecordsSearchFilter.length < 2);
|
|
786
|
+
i0.ɵɵadvance();
|
|
787
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.addDialogLoading && ctx_r1.addableRecords.length > 0);
|
|
788
|
+
} }
|
|
789
|
+
function ListFormComponentExtended_kendo_dialog_37_Template(rf, ctx) { if (rf & 1) {
|
|
790
|
+
const _r21 = i0.ɵɵgetCurrentView();
|
|
791
|
+
i0.ɵɵelementStart(0, "kendo-dialog", 164);
|
|
792
|
+
i0.ɵɵlistener("close", function ListFormComponentExtended_kendo_dialog_37_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddRecordsDialog()); });
|
|
793
|
+
i0.ɵɵelementStart(1, "div", 165);
|
|
794
|
+
i0.ɵɵtemplate(2, ListFormComponentExtended_kendo_dialog_37_ng_container_2_Template, 3, 1, "ng-container", 7)(3, ListFormComponentExtended_kendo_dialog_37_ng_container_3_Template, 11, 7, "ng-container", 7);
|
|
795
|
+
i0.ɵɵelementEnd();
|
|
796
|
+
i0.ɵɵelementStart(4, "kendo-dialog-actions")(5, "button", 166);
|
|
797
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_37_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.confirmAddRecords()); });
|
|
798
|
+
i0.ɵɵtext(6);
|
|
799
|
+
i0.ɵɵelementEnd();
|
|
800
|
+
i0.ɵɵelementStart(7, "button", 167);
|
|
801
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_37_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddRecordsDialog()); });
|
|
802
|
+
i0.ɵɵtext(8, " Cancel ");
|
|
803
|
+
i0.ɵɵelementEnd()()();
|
|
804
|
+
} if (rf & 2) {
|
|
805
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
806
|
+
i0.ɵɵproperty("title", "Add " + ctx_r1.entityDisplayName + " to List")("minWidth", 400)("width", 600)("height", 550);
|
|
807
|
+
i0.ɵɵadvance(2);
|
|
808
|
+
i0.ɵɵproperty("ngIf", ctx_r1.addDialogSaving);
|
|
809
|
+
i0.ɵɵadvance();
|
|
810
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.addDialogSaving);
|
|
811
|
+
i0.ɵɵadvance(2);
|
|
812
|
+
i0.ɵɵproperty("disabled", ctx_r1.addDialogSaving || ctx_r1.selectedAddableRecords.length === 0);
|
|
813
|
+
i0.ɵɵadvance();
|
|
814
|
+
i0.ɵɵtextInterpolate2(" Add ", ctx_r1.selectedAddableRecords.length > 0 ? ctx_r1.selectedAddableRecords.length : "", " Record", ctx_r1.selectedAddableRecords.length !== 1 ? "s" : "", " ");
|
|
815
|
+
i0.ɵɵadvance();
|
|
816
|
+
i0.ɵɵproperty("disabled", ctx_r1.addDialogSaving);
|
|
817
|
+
} }
|
|
818
|
+
function ListFormComponentExtended_kendo_dialog_38_ng_container_2_Template(rf, ctx) { if (rf & 1) {
|
|
819
|
+
i0.ɵɵelementContainerStart(0);
|
|
820
|
+
i0.ɵɵelementStart(1, "div", 168);
|
|
821
|
+
i0.ɵɵelement(2, "mj-loading", 197);
|
|
822
|
+
i0.ɵɵelementEnd();
|
|
823
|
+
i0.ɵɵelementContainerEnd();
|
|
824
|
+
} }
|
|
825
|
+
function ListFormComponentExtended_kendo_dialog_38_ng_container_3_Template(rf, ctx) { if (rf & 1) {
|
|
826
|
+
i0.ɵɵelementContainerStart(0);
|
|
827
|
+
i0.ɵɵelementStart(1, "div", 168);
|
|
828
|
+
i0.ɵɵelement(2, "mj-loading", 169);
|
|
829
|
+
i0.ɵɵelementEnd();
|
|
830
|
+
i0.ɵɵelementContainerEnd();
|
|
831
|
+
} if (rf & 2) {
|
|
832
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
833
|
+
i0.ɵɵadvance(2);
|
|
834
|
+
i0.ɵɵproperty("text", "Adding " + ctx_r1.addFromViewTotal + " records to list...");
|
|
835
|
+
} }
|
|
836
|
+
function ListFormComponentExtended_kendo_dialog_38_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
837
|
+
i0.ɵɵelementContainerStart(0);
|
|
838
|
+
i0.ɵɵelementStart(1, "div", 168);
|
|
839
|
+
i0.ɵɵelement(2, "mj-loading", 198);
|
|
840
|
+
i0.ɵɵelementEnd();
|
|
841
|
+
i0.ɵɵelementContainerEnd();
|
|
842
|
+
} }
|
|
843
|
+
function ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_4_Template(rf, ctx) { if (rf & 1) {
|
|
844
|
+
i0.ɵɵelementContainerStart(0);
|
|
845
|
+
i0.ɵɵelementStart(1, "div", 178);
|
|
846
|
+
i0.ɵɵelement(2, "span", 201);
|
|
847
|
+
i0.ɵɵelementStart(3, "p");
|
|
848
|
+
i0.ɵɵtext(4, "No saved views found for this entity");
|
|
849
|
+
i0.ɵɵelementEnd()();
|
|
850
|
+
i0.ɵɵelementContainerEnd();
|
|
851
|
+
} }
|
|
852
|
+
function ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_5_div_1_Template(rf, ctx) { if (rf & 1) {
|
|
853
|
+
const _r28 = i0.ɵɵgetCurrentView();
|
|
854
|
+
i0.ɵɵelementStart(0, "div", 203);
|
|
855
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_5_div_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)); });
|
|
856
|
+
i0.ɵɵelementStart(1, "input", 193);
|
|
857
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_5_div_1_Template_input_click_1_listener($event) { i0.ɵɵrestoreView(_r28); return i0.ɵɵresetView($event.stopPropagation()); })("change", function ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_5_div_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)); });
|
|
858
|
+
i0.ɵɵelementEnd();
|
|
859
|
+
i0.ɵɵelement(2, "span", 204);
|
|
860
|
+
i0.ɵɵelementStart(3, "span", 205);
|
|
861
|
+
i0.ɵɵtext(4);
|
|
862
|
+
i0.ɵɵelementEnd()();
|
|
863
|
+
} if (rf & 2) {
|
|
864
|
+
const view_r29 = ctx.$implicit;
|
|
865
|
+
const ctx_r1 = i0.ɵɵnextContext(4);
|
|
866
|
+
i0.ɵɵclassProp("selected", ctx_r1.isViewSelected(view_r29));
|
|
867
|
+
i0.ɵɵadvance();
|
|
868
|
+
i0.ɵɵproperty("checked", ctx_r1.isViewSelected(view_r29));
|
|
869
|
+
i0.ɵɵadvance(3);
|
|
870
|
+
i0.ɵɵtextInterpolate(view_r29.Name);
|
|
871
|
+
} }
|
|
872
|
+
function ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
873
|
+
i0.ɵɵelementContainerStart(0);
|
|
874
|
+
i0.ɵɵtemplate(1, ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_5_div_1_Template, 5, 4, "div", 202);
|
|
875
|
+
i0.ɵɵelementContainerEnd();
|
|
876
|
+
} if (rf & 2) {
|
|
877
|
+
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
878
|
+
i0.ɵɵadvance();
|
|
879
|
+
i0.ɵɵproperty("ngForOf", ctx_r1.userViews);
|
|
880
|
+
} }
|
|
881
|
+
function ListFormComponentExtended_kendo_dialog_38_ng_container_5_Template(rf, ctx) { if (rf & 1) {
|
|
882
|
+
i0.ɵɵelementContainerStart(0);
|
|
883
|
+
i0.ɵɵelementStart(1, "p", 199);
|
|
884
|
+
i0.ɵɵtext(2, "Select views to add their records to this list:");
|
|
885
|
+
i0.ɵɵelementEnd();
|
|
886
|
+
i0.ɵɵelementStart(3, "div", 200);
|
|
887
|
+
i0.ɵɵtemplate(4, ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_4_Template, 5, 0, "ng-container", 7)(5, ListFormComponentExtended_kendo_dialog_38_ng_container_5_ng_container_5_Template, 2, 1, "ng-container", 7);
|
|
888
|
+
i0.ɵɵelementEnd();
|
|
889
|
+
i0.ɵɵelementContainerEnd();
|
|
890
|
+
} if (rf & 2) {
|
|
891
|
+
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
892
|
+
i0.ɵɵadvance(4);
|
|
893
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.userViews || ctx_r1.userViews.length === 0);
|
|
894
|
+
i0.ɵɵadvance();
|
|
895
|
+
i0.ɵɵproperty("ngIf", ctx_r1.userViews && ctx_r1.userViews.length > 0);
|
|
896
|
+
} }
|
|
897
|
+
function ListFormComponentExtended_kendo_dialog_38_Template(rf, ctx) { if (rf & 1) {
|
|
898
|
+
const _r27 = i0.ɵɵgetCurrentView();
|
|
899
|
+
i0.ɵɵelementStart(0, "kendo-dialog", 195);
|
|
900
|
+
i0.ɵɵlistener("close", function ListFormComponentExtended_kendo_dialog_38_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddFromViewDialog()); });
|
|
901
|
+
i0.ɵɵelementStart(1, "div", 196);
|
|
902
|
+
i0.ɵɵtemplate(2, ListFormComponentExtended_kendo_dialog_38_ng_container_2_Template, 3, 0, "ng-container", 7)(3, ListFormComponentExtended_kendo_dialog_38_ng_container_3_Template, 3, 1, "ng-container", 7)(4, ListFormComponentExtended_kendo_dialog_38_ng_container_4_Template, 3, 0, "ng-container", 7)(5, ListFormComponentExtended_kendo_dialog_38_ng_container_5_Template, 6, 2, "ng-container", 7);
|
|
903
|
+
i0.ɵɵelementEnd();
|
|
904
|
+
i0.ɵɵelementStart(6, "kendo-dialog-actions")(7, "button", 166);
|
|
905
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_38_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.confirmAddFromView()); });
|
|
906
|
+
i0.ɵɵtext(8);
|
|
907
|
+
i0.ɵɵelementEnd();
|
|
908
|
+
i0.ɵɵelementStart(9, "button", 167);
|
|
909
|
+
i0.ɵɵlistener("click", function ListFormComponentExtended_kendo_dialog_38_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r27); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddFromViewDialog()); });
|
|
910
|
+
i0.ɵɵtext(10, " Cancel ");
|
|
911
|
+
i0.ɵɵelementEnd()()();
|
|
912
|
+
} if (rf & 2) {
|
|
913
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
914
|
+
i0.ɵɵproperty("minWidth", 400)("width", 600)("height", 500);
|
|
915
|
+
i0.ɵɵadvance(2);
|
|
916
|
+
i0.ɵɵproperty("ngIf", ctx_r1.showAddFromViewLoader && ctx_r1.fetchingRecordsToSave);
|
|
917
|
+
i0.ɵɵadvance();
|
|
918
|
+
i0.ɵɵproperty("ngIf", ctx_r1.showAddFromViewLoader && ctx_r1.addFromViewTotal > 0 && !ctx_r1.fetchingRecordsToSave);
|
|
919
|
+
i0.ɵɵadvance();
|
|
920
|
+
i0.ɵɵproperty("ngIf", ctx_r1.showAddFromViewLoader && !ctx_r1.fetchingRecordsToSave && ctx_r1.addFromViewTotal === 0);
|
|
921
|
+
i0.ɵɵadvance();
|
|
922
|
+
i0.ɵɵproperty("ngIf", !ctx_r1.showAddFromViewLoader);
|
|
923
|
+
i0.ɵɵadvance(2);
|
|
924
|
+
i0.ɵɵproperty("disabled", ctx_r1.showAddFromViewLoader || ctx_r1.userViewsToAdd.length === 0);
|
|
925
|
+
i0.ɵɵadvance();
|
|
926
|
+
i0.ɵɵtextInterpolate2(" Add from ", ctx_r1.userViewsToAdd.length, " View", ctx_r1.userViewsToAdd.length !== 1 ? "s" : "", " ");
|
|
927
|
+
i0.ɵɵadvance();
|
|
928
|
+
i0.ɵɵproperty("disabled", ctx_r1.showAddFromViewLoader);
|
|
929
|
+
} }
|
|
930
|
+
function ListFormComponentExtended_mj_list_share_dialog_39_Template(rf, ctx) { if (rf & 1) {
|
|
931
|
+
const _r30 = i0.ɵɵgetCurrentView();
|
|
932
|
+
i0.ɵɵelementStart(0, "mj-list-share-dialog", 206);
|
|
933
|
+
i0.ɵɵlistener("complete", function ListFormComponentExtended_mj_list_share_dialog_39_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 ListFormComponentExtended_mj_list_share_dialog_39_Template_mj_list_share_dialog_cancel_0_listener() { i0.ɵɵrestoreView(_r30); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onShareDialogCancel()); });
|
|
934
|
+
i0.ɵɵelementEnd();
|
|
935
|
+
} if (rf & 2) {
|
|
936
|
+
const ctx_r1 = i0.ɵɵnextContext();
|
|
937
|
+
i0.ɵɵproperty("config", ctx_r1.shareDialogConfig)("visible", ctx_r1.showShareDialog);
|
|
938
|
+
} }
|
|
529
939
|
/**
|
|
530
940
|
* World-class List form component that provides a rich exploration experience
|
|
531
941
|
* for managing lists in the MemberJunction system.
|
|
@@ -572,11 +982,36 @@ let ListFormComponentExtended = class ListFormComponentExtended extends ListForm
|
|
|
572
982
|
this.isEditingDescription = false;
|
|
573
983
|
this.editingName = '';
|
|
574
984
|
this.editingDescription = '';
|
|
985
|
+
// Add Records dialog
|
|
986
|
+
this.showAddRecordsDialog = false;
|
|
987
|
+
this.addDialogLoading = false;
|
|
988
|
+
this.addDialogSaving = false;
|
|
989
|
+
this.addableRecords = [];
|
|
990
|
+
this.addRecordsSearchFilter = '';
|
|
991
|
+
this.existingListDetailIds = new Set();
|
|
992
|
+
this.addProgress = 0;
|
|
993
|
+
this.addTotal = 0;
|
|
994
|
+
this.searchSubject = new Subject();
|
|
995
|
+
// Add From View dialog
|
|
996
|
+
this.showAddFromViewDialog = false;
|
|
997
|
+
this.showAddFromViewLoader = false;
|
|
998
|
+
this.userViews = null;
|
|
999
|
+
this.userViewsToAdd = [];
|
|
1000
|
+
this.addFromViewProgress = 0;
|
|
1001
|
+
this.addFromViewTotal = 0;
|
|
1002
|
+
this.fetchingRecordsToSave = false;
|
|
1003
|
+
// Share dialog
|
|
1004
|
+
this.showShareDialog = false;
|
|
1005
|
+
this.shareDialogConfig = null;
|
|
575
1006
|
this.destroy$ = new Subject();
|
|
576
1007
|
this.metadata = new Metadata();
|
|
577
1008
|
}
|
|
578
1009
|
async ngOnInit() {
|
|
579
1010
|
await super.ngOnInit();
|
|
1011
|
+
// Set up search debounce
|
|
1012
|
+
this.searchSubject
|
|
1013
|
+
.pipe(debounceTime(300))
|
|
1014
|
+
.subscribe((searchText) => this.searchRecords(searchText));
|
|
580
1015
|
await this.loadExplorerData();
|
|
581
1016
|
}
|
|
582
1017
|
// Helper to show notifications using SharedService's deprecated method
|
|
@@ -906,8 +1341,283 @@ let ListFormComponentExtended = class ListFormComponentExtended extends ListForm
|
|
|
906
1341
|
await this.loadStats();
|
|
907
1342
|
this.updateNavBadges();
|
|
908
1343
|
}
|
|
909
|
-
|
|
910
|
-
|
|
1344
|
+
// ==========================================
|
|
1345
|
+
// Add Records Dialog
|
|
1346
|
+
// ==========================================
|
|
1347
|
+
async openAddRecordsDialog() {
|
|
1348
|
+
this.showAddRecordsDialog = true;
|
|
1349
|
+
this.addableRecords = [];
|
|
1350
|
+
this.addRecordsSearchFilter = '';
|
|
1351
|
+
this.addDialogLoading = true;
|
|
1352
|
+
this.addDialogSaving = false;
|
|
1353
|
+
// Load existing list detail IDs to mark which records are already in the list
|
|
1354
|
+
await this.loadExistingListDetailIds();
|
|
1355
|
+
this.addDialogLoading = false;
|
|
1356
|
+
this.cdr.markForCheck();
|
|
1357
|
+
}
|
|
1358
|
+
closeAddRecordsDialog() {
|
|
1359
|
+
this.showAddRecordsDialog = false;
|
|
1360
|
+
this.addableRecords = [];
|
|
1361
|
+
this.addRecordsSearchFilter = '';
|
|
1362
|
+
this.existingListDetailIds.clear();
|
|
1363
|
+
this.addDialogSaving = false;
|
|
1364
|
+
this.addProgress = 0;
|
|
1365
|
+
this.addTotal = 0;
|
|
1366
|
+
this.cdr.markForCheck();
|
|
1367
|
+
}
|
|
1368
|
+
async loadExistingListDetailIds() {
|
|
1369
|
+
if (!this.record)
|
|
1370
|
+
return;
|
|
1371
|
+
const rv = new RunView();
|
|
1372
|
+
const result = await rv.RunView({
|
|
1373
|
+
EntityName: 'List Details',
|
|
1374
|
+
ExtraFilter: `ListID = '${this.record.ID}'`,
|
|
1375
|
+
Fields: ['RecordID'],
|
|
1376
|
+
ResultType: 'simple'
|
|
1377
|
+
}, this.metadata.CurrentUser);
|
|
1378
|
+
if (result.Success) {
|
|
1379
|
+
this.existingListDetailIds = new Set(result.Results.map(r => r.RecordID));
|
|
1380
|
+
}
|
|
1381
|
+
}
|
|
1382
|
+
onAddRecordsSearchChange(value) {
|
|
1383
|
+
this.addRecordsSearchFilter = value;
|
|
1384
|
+
this.searchSubject.next(value);
|
|
1385
|
+
}
|
|
1386
|
+
async searchRecords(searchText) {
|
|
1387
|
+
if (!this.record || !searchText || searchText.length < 2) {
|
|
1388
|
+
this.addableRecords = [];
|
|
1389
|
+
this.cdr.markForCheck();
|
|
1390
|
+
return;
|
|
1391
|
+
}
|
|
1392
|
+
this.addDialogLoading = true;
|
|
1393
|
+
this.cdr.markForCheck();
|
|
1394
|
+
const sourceEntityInfo = this.metadata.EntityByID(this.record.EntityID);
|
|
1395
|
+
if (!sourceEntityInfo) {
|
|
1396
|
+
this.addDialogLoading = false;
|
|
1397
|
+
this.cdr.markForCheck();
|
|
1398
|
+
return;
|
|
1399
|
+
}
|
|
1400
|
+
const nameField = sourceEntityInfo.Fields.find(field => field.IsNameField);
|
|
1401
|
+
const pkField = sourceEntityInfo.FirstPrimaryKey?.Name || 'ID';
|
|
1402
|
+
let filter;
|
|
1403
|
+
if (nameField) {
|
|
1404
|
+
filter = `${nameField.Name} LIKE '%${searchText}%'`;
|
|
1405
|
+
}
|
|
1406
|
+
const rv = new RunView();
|
|
1407
|
+
const result = await rv.RunView({
|
|
1408
|
+
EntityName: this.record.Entity,
|
|
1409
|
+
ExtraFilter: filter,
|
|
1410
|
+
MaxRows: 100,
|
|
1411
|
+
ResultType: 'simple'
|
|
1412
|
+
});
|
|
1413
|
+
if (result.Success) {
|
|
1414
|
+
this.addableRecords = result.Results.map((record) => {
|
|
1415
|
+
const recordId = String(record[pkField]);
|
|
1416
|
+
return {
|
|
1417
|
+
ID: recordId,
|
|
1418
|
+
Name: nameField ? String(record[nameField.Name]) : recordId,
|
|
1419
|
+
isInList: this.existingListDetailIds.has(recordId),
|
|
1420
|
+
isSelected: false
|
|
1421
|
+
};
|
|
1422
|
+
});
|
|
1423
|
+
}
|
|
1424
|
+
this.addDialogLoading = false;
|
|
1425
|
+
this.cdr.markForCheck();
|
|
1426
|
+
}
|
|
1427
|
+
toggleRecordSelection(record) {
|
|
1428
|
+
if (record.isInList)
|
|
1429
|
+
return; // Can't select records already in list
|
|
1430
|
+
record.isSelected = !record.isSelected;
|
|
1431
|
+
this.cdr.markForCheck();
|
|
1432
|
+
}
|
|
1433
|
+
get selectedAddableRecords() {
|
|
1434
|
+
return this.addableRecords.filter(r => r.isSelected);
|
|
1435
|
+
}
|
|
1436
|
+
selectAllAddable() {
|
|
1437
|
+
this.addableRecords.forEach(r => {
|
|
1438
|
+
if (!r.isInList)
|
|
1439
|
+
r.isSelected = true;
|
|
1440
|
+
});
|
|
1441
|
+
this.cdr.markForCheck();
|
|
1442
|
+
}
|
|
1443
|
+
deselectAllAddable() {
|
|
1444
|
+
this.addableRecords.forEach(r => r.isSelected = false);
|
|
1445
|
+
this.cdr.markForCheck();
|
|
1446
|
+
}
|
|
1447
|
+
async confirmAddRecords() {
|
|
1448
|
+
const recordsToAdd = this.selectedAddableRecords;
|
|
1449
|
+
if (recordsToAdd.length === 0 || !this.record)
|
|
1450
|
+
return;
|
|
1451
|
+
this.addDialogSaving = true;
|
|
1452
|
+
this.addTotal = recordsToAdd.length;
|
|
1453
|
+
this.addProgress = 0;
|
|
1454
|
+
this.cdr.markForCheck();
|
|
1455
|
+
// Use transaction group for bulk insert
|
|
1456
|
+
const tg = await this.metadata.CreateTransactionGroup();
|
|
1457
|
+
for (const record of recordsToAdd) {
|
|
1458
|
+
const listDetail = await this.metadata.GetEntityObject('List Details');
|
|
1459
|
+
listDetail.ListID = this.record.ID;
|
|
1460
|
+
listDetail.RecordID = record.ID;
|
|
1461
|
+
listDetail.TransactionGroup = tg;
|
|
1462
|
+
await listDetail.Save();
|
|
1463
|
+
}
|
|
1464
|
+
const success = await tg.Submit();
|
|
1465
|
+
if (success) {
|
|
1466
|
+
this.addProgress = this.addTotal;
|
|
1467
|
+
this.showNotification(`Added ${recordsToAdd.length} record${recordsToAdd.length !== 1 ? 's' : ''} to list`, 'success', 2500);
|
|
1468
|
+
this.closeAddRecordsDialog();
|
|
1469
|
+
await this.refreshItems();
|
|
1470
|
+
}
|
|
1471
|
+
else {
|
|
1472
|
+
LogError('Error adding records to list');
|
|
1473
|
+
this.showNotification('Failed to add some records', 'error', 2500);
|
|
1474
|
+
this.addDialogSaving = false;
|
|
1475
|
+
this.cdr.markForCheck();
|
|
1476
|
+
}
|
|
1477
|
+
}
|
|
1478
|
+
// ==========================================
|
|
1479
|
+
// Add From View Dialog
|
|
1480
|
+
// ==========================================
|
|
1481
|
+
async openAddFromViewDialog() {
|
|
1482
|
+
this.showAddFromViewDialog = true;
|
|
1483
|
+
this.userViewsToAdd = [];
|
|
1484
|
+
this.cdr.markForCheck();
|
|
1485
|
+
if (!this.userViews) {
|
|
1486
|
+
await this.loadEntityViews();
|
|
1487
|
+
}
|
|
1488
|
+
}
|
|
1489
|
+
closeAddFromViewDialog() {
|
|
1490
|
+
this.showAddFromViewDialog = false;
|
|
1491
|
+
this.userViewsToAdd = [];
|
|
1492
|
+
this.showAddFromViewLoader = false;
|
|
1493
|
+
this.addFromViewProgress = 0;
|
|
1494
|
+
this.addFromViewTotal = 0;
|
|
1495
|
+
this.cdr.markForCheck();
|
|
1496
|
+
}
|
|
1497
|
+
async loadEntityViews() {
|
|
1498
|
+
if (!this.record || !this.record.Entity)
|
|
1499
|
+
return;
|
|
1500
|
+
this.showAddFromViewLoader = true;
|
|
1501
|
+
this.cdr.markForCheck();
|
|
1502
|
+
const rv = new RunView();
|
|
1503
|
+
const runViewResult = await rv.RunView({
|
|
1504
|
+
EntityName: 'User Views',
|
|
1505
|
+
ExtraFilter: `UserID = '${this.metadata.CurrentUser.ID}' AND EntityID = '${this.record.EntityID}'`,
|
|
1506
|
+
ResultType: 'entity_object'
|
|
1507
|
+
}, this.metadata.CurrentUser);
|
|
1508
|
+
if (!runViewResult.Success) {
|
|
1509
|
+
LogError(`Error loading User Views for entity ${this.record.Entity}`);
|
|
1510
|
+
}
|
|
1511
|
+
else {
|
|
1512
|
+
this.userViews = runViewResult.Results;
|
|
1513
|
+
}
|
|
1514
|
+
this.showAddFromViewLoader = false;
|
|
1515
|
+
this.cdr.markForCheck();
|
|
1516
|
+
}
|
|
1517
|
+
toggleViewSelection(view) {
|
|
1518
|
+
const index = this.userViewsToAdd.findIndex(v => v.ID === view.ID);
|
|
1519
|
+
if (index >= 0) {
|
|
1520
|
+
this.userViewsToAdd.splice(index, 1);
|
|
1521
|
+
}
|
|
1522
|
+
else {
|
|
1523
|
+
this.userViewsToAdd.push(view);
|
|
1524
|
+
}
|
|
1525
|
+
this.cdr.markForCheck();
|
|
1526
|
+
}
|
|
1527
|
+
isViewSelected(view) {
|
|
1528
|
+
return this.userViewsToAdd.some(v => v.ID === view.ID);
|
|
1529
|
+
}
|
|
1530
|
+
async confirmAddFromView() {
|
|
1531
|
+
if (!this.record || this.userViewsToAdd.length === 0)
|
|
1532
|
+
return;
|
|
1533
|
+
this.showAddFromViewLoader = true;
|
|
1534
|
+
this.fetchingRecordsToSave = true;
|
|
1535
|
+
this.cdr.markForCheck();
|
|
1536
|
+
const rv = new RunView();
|
|
1537
|
+
// Collect all unique record IDs from selected views
|
|
1538
|
+
const recordIdSet = new Set();
|
|
1539
|
+
for (const userView of this.userViewsToAdd) {
|
|
1540
|
+
const runViewResult = await rv.RunView({
|
|
1541
|
+
EntityName: 'User Views',
|
|
1542
|
+
ViewEntity: userView,
|
|
1543
|
+
Fields: ['ID']
|
|
1544
|
+
}, this.metadata.CurrentUser);
|
|
1545
|
+
if (runViewResult.Success) {
|
|
1546
|
+
const records = runViewResult.Results;
|
|
1547
|
+
records.forEach(r => recordIdSet.add(r.ID));
|
|
1548
|
+
}
|
|
1549
|
+
}
|
|
1550
|
+
// Filter out records already in the list
|
|
1551
|
+
await this.loadExistingListDetailIds();
|
|
1552
|
+
const recordsToAdd = [...recordIdSet].filter(id => !this.existingListDetailIds.has(id));
|
|
1553
|
+
this.addFromViewTotal = recordsToAdd.length;
|
|
1554
|
+
this.addFromViewProgress = 0;
|
|
1555
|
+
this.fetchingRecordsToSave = false;
|
|
1556
|
+
this.cdr.markForCheck();
|
|
1557
|
+
if (recordsToAdd.length === 0) {
|
|
1558
|
+
this.showNotification('All records already in list', 'info', 2500);
|
|
1559
|
+
this.showAddFromViewLoader = false;
|
|
1560
|
+
this.cdr.markForCheck();
|
|
1561
|
+
return;
|
|
1562
|
+
}
|
|
1563
|
+
LogStatus(`Adding ${recordsToAdd.length} records to list`);
|
|
1564
|
+
// Use transaction group for bulk insert
|
|
1565
|
+
const tg = await this.metadata.CreateTransactionGroup();
|
|
1566
|
+
for (const recordID of recordsToAdd) {
|
|
1567
|
+
const listDetail = await this.metadata.GetEntityObject('List Details');
|
|
1568
|
+
listDetail.ListID = this.record.ID;
|
|
1569
|
+
listDetail.RecordID = recordID;
|
|
1570
|
+
listDetail.TransactionGroup = tg;
|
|
1571
|
+
await listDetail.Save();
|
|
1572
|
+
}
|
|
1573
|
+
const success = await tg.Submit();
|
|
1574
|
+
if (success) {
|
|
1575
|
+
this.addFromViewProgress = this.addFromViewTotal;
|
|
1576
|
+
this.showNotification(`Added ${recordsToAdd.length} record${recordsToAdd.length !== 1 ? 's' : ''} to list`, 'success', 2500);
|
|
1577
|
+
this.closeAddFromViewDialog();
|
|
1578
|
+
await this.refreshItems();
|
|
1579
|
+
}
|
|
1580
|
+
else {
|
|
1581
|
+
LogError('Error adding records from view to list');
|
|
1582
|
+
this.showNotification('Failed to add some records', 'error', 2500);
|
|
1583
|
+
this.showAddFromViewLoader = false;
|
|
1584
|
+
this.cdr.markForCheck();
|
|
1585
|
+
}
|
|
1586
|
+
}
|
|
1587
|
+
// ==========================================
|
|
1588
|
+
// Share Dialog
|
|
1589
|
+
// ==========================================
|
|
1590
|
+
openShareDialog() {
|
|
1591
|
+
if (!this.record?.IsSaved)
|
|
1592
|
+
return;
|
|
1593
|
+
this.shareDialogConfig = {
|
|
1594
|
+
listId: this.record.ID,
|
|
1595
|
+
listName: this.record.Name,
|
|
1596
|
+
currentUserId: this.metadata.CurrentUser.ID,
|
|
1597
|
+
isOwner: this.isCurrentUserOwner()
|
|
1598
|
+
};
|
|
1599
|
+
this.showShareDialog = true;
|
|
1600
|
+
this.cdr.markForCheck();
|
|
1601
|
+
}
|
|
1602
|
+
onShareDialogComplete(result) {
|
|
1603
|
+
this.showShareDialog = false;
|
|
1604
|
+
this.shareDialogConfig = null;
|
|
1605
|
+
if (result.action === 'apply') {
|
|
1606
|
+
// Refresh stats to update share counts
|
|
1607
|
+
this.loadStats().then(() => {
|
|
1608
|
+
this.updateNavBadges();
|
|
1609
|
+
this.cdr.markForCheck();
|
|
1610
|
+
});
|
|
1611
|
+
}
|
|
1612
|
+
this.cdr.markForCheck();
|
|
1613
|
+
}
|
|
1614
|
+
onShareDialogCancel() {
|
|
1615
|
+
this.showShareDialog = false;
|
|
1616
|
+
this.shareDialogConfig = null;
|
|
1617
|
+
this.cdr.markForCheck();
|
|
1618
|
+
}
|
|
1619
|
+
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵListFormComponentExtended_BaseFactory; return function ListFormComponentExtended_Factory(__ngFactoryType__) { return (ɵListFormComponentExtended_BaseFactory || (ɵListFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(ListFormComponentExtended)))(__ngFactoryType__ || ListFormComponentExtended); }; })(); }
|
|
1620
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ListFormComponentExtended, selectors: [["mj-list-form-extended"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 40, vars: 21, consts: [["nameInput", ""], [1, "list-form-explorer"], [1, "list-header"], [1, "header-content"], [1, "header-icon"], [1, "header-info"], [1, "name-row"], [4, "ngIf"], [1, "entity-badge"], [1, "header-stats"], [1, "stat-item"], [1, "stat-value"], [1, "stat-label"], [1, "nav-rail"], ["class", "nav-item", 3, "active", "disabled", "title", "click", 4, "ngFor", "ngForOf"], [1, "main-content"], ["class", "section overview-section", 4, "ngIf"], ["class", "section items-section", 4, "ngIf"], ["class", "section sharing-section", 4, "ngIf"], ["class", "section activity-section", 4, "ngIf"], ["class", "section settings-section", 4, "ngIf"], [3, "title", "minWidth", "width", "height", "close", 4, "ngIf"], ["title", "Add Records from Views", 3, "minWidth", "width", "height", "close", 4, "ngIf"], [3, "config", "visible", "complete", "cancel", 4, "ngIf"], [1, "list-name"], ["class", "edit-btn", "title", "Edit name", 3, "click", 4, "ngIf"], ["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"], ["class", "nav-badge", 4, "ngIf"], [1, "nav-badge"], [1, "section", "overview-section"], [1, "overview-grid"], [1, "overview-card", "description-card"], [1, "card-header"], [1, "fa-solid", "fa-align-left"], ["class", "edit-btn", 3, "click", 4, "ngIf"], [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"], ["class", "detail-value", 4, "ngIf"], ["class", "category-select", 3, "ngModel", "ngModelChange", 4, "ngIf"], [1, "fa-solid", "fa-user", "detail-icon"], ["class", "owner-badge", 4, "ngIf"], [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"], ["class", "action-btn", 3, "click", 4, "ngIf"], ["title", "Coming soon", 1, "action-btn", 3, "disabled"], [1, "fa-solid", "fa-file-export"], [1, "coming-soon"], [1, "edit-btn", 3, "click"], ["class", "description-text", 4, "ngIf"], ["class", "description-empty", 4, "ngIf"], [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"], [3, "ngValue", 4, "ngFor", "ngForOf"], [1, "owner-badge"], [1, "fa-solid", "fa-share-nodes"], ["class", "action-count", 4, "ngIf"], [1, "section", "items-section"], [1, "section-header"], [1, "section-actions"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search items...", 3, "ngModelChange", "ngModel"], ["class", "add-buttons", 4, "ngIf"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-refresh"], ["class", "loading-state", 4, "ngIf"], ["class", "empty-state", 4, "ngIf"], ["class", "items-table-container", 4, "ngIf"], [1, "add-buttons"], ["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"], [1, "loading-state"], ["text", "Loading items...", "size", "medium"], [1, "empty-state"], [1, "empty-icon"], [1, "fa-solid", "fa-inbox"], [1, "items-table-container"], ["class", "items-toolbar", 4, "ngIf"], [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", 4, "ngFor", "ngForOf"], [1, "items-footer"], [1, "items-count"], [1, "items-toolbar"], [1, "selection-count"], [1, "btn-danger", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "item-name"], [1, "item-icon"], ["class", "fa-solid fa-spinner fa-spin", 4, "ngIf"], [1, "record-id"], ["title", "Open record", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "section", "sharing-section"], ["class", "section-actions", 4, "ngIf"], ["class", "sharing-summary", 4, "ngIf"], ["class", "readonly-notice", 4, "ngIf"], [1, "fa-solid", "fa-user-plus"], [1, "sharing-summary"], [1, "summary-card"], [1, "summary-icon"], [1, "fa-solid", "fa-users"], [1, "summary-content"], [1, "summary-value"], [1, "summary-label"], ["class", "summary-card", 4, "ngIf"], [1, "summary-icon", "pending"], [1, "fa-solid", "fa-envelope"], ["class", "btn-primary", 3, "click", 4, "ngIf"], [1, "readonly-notice"], [1, "section", "activity-section"], [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, "section", "settings-section"], [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", "minWidth", "width", "height"], [1, "dialog-content", "add-records-dialog"], ["kendoButton", "", "themeColor", "primary", 3, "click", "disabled"], ["kendoButton", "", "fillMode", "outline", 3, "click", "disabled"], [1, "dialog-loading"], ["size", "small", 3, "text"], [1, "search-section"], [1, "search-input", 3, "valueChange", "placeholder", "clearButton", "value"], ["kendoTextBoxPrefixTemplate", ""], [1, "search-hint"], [1, "records-list"], [1, "fa-solid", "fa-search", "search-icon"], [1, "list-loading"], ["size", "small", 3, "showText"], [1, "empty-results"], [1, "fa-solid", "fa-search", "empty-icon"], [1, "fa-solid", "fa-list", "empty-icon"], [1, "selection-controls"], ["kendoButton", "", "fillMode", "flat", "size", "small", 3, "click"], [1, "selection-info"], [1, "records-scroll"], ["class", "record-item", 3, "in-list", "selected", "click", 4, "ngFor", "ngForOf"], [1, "record-item", 3, "click"], [1, "record-checkbox"], ["class", "fa-solid fa-check in-list-icon", "title", "Already in list", 4, "ngIf"], ["type", "checkbox", 3, "checked", "click", "change", 4, "ngIf"], [1, "record-name"], ["class", "in-list-badge", 4, "ngIf"], ["title", "Already in list", 1, "fa-solid", "fa-check", "in-list-icon"], ["type", "checkbox", 3, "click", "change", "checked"], [1, "in-list-badge"], ["title", "Add Records from Views", 3, "close", "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"], ["class", "view-item", 3, "selected", "click", 4, "ngFor", "ngForOf"], [1, "view-item", 3, "click"], [1, "fa-solid", "fa-table-list", "view-icon"], [1, "view-name"], [3, "complete", "cancel", "config", "visible"]], template: function ListFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
911
1621
|
i0.ɵɵelementStart(0, "div", 1)(1, "header", 2)(2, "div", 3)(3, "div", 4);
|
|
912
1622
|
i0.ɵɵelement(4, "i");
|
|
913
1623
|
i0.ɵɵelementEnd();
|
|
@@ -941,8 +1651,9 @@ let ListFormComponentExtended = class ListFormComponentExtended extends ListForm
|
|
|
941
1651
|
i0.ɵɵtemplate(30, ListFormComponentExtended_button_30_Template, 5, 9, "button", 14);
|
|
942
1652
|
i0.ɵɵelementEnd();
|
|
943
1653
|
i0.ɵɵelementStart(31, "main", 15);
|
|
944
|
-
i0.ɵɵtemplate(32, ListFormComponentExtended_section_32_Template,
|
|
1654
|
+
i0.ɵɵtemplate(32, ListFormComponentExtended_section_32_Template, 62, 18, "section", 16)(33, ListFormComponentExtended_section_33_Template, 14, 5, "section", 17)(34, ListFormComponentExtended_section_34_Template, 8, 4, "section", 18)(35, ListFormComponentExtended_section_35_Template, 26, 8, "section", 19)(36, ListFormComponentExtended_section_36_Template, 16, 32, "section", 20);
|
|
945
1655
|
i0.ɵɵelementEnd()();
|
|
1656
|
+
i0.ɵɵtemplate(37, ListFormComponentExtended_kendo_dialog_37_Template, 9, 10, "kendo-dialog", 21)(38, ListFormComponentExtended_kendo_dialog_38_Template, 11, 11, "kendo-dialog", 22)(39, ListFormComponentExtended_mj_list_share_dialog_39_Template, 1, 2, "mj-list-share-dialog", 23);
|
|
946
1657
|
} if (rf & 2) {
|
|
947
1658
|
i0.ɵɵadvance(3);
|
|
948
1659
|
i0.ɵɵstyleProp("background-color", "#2196F3");
|
|
@@ -974,7 +1685,13 @@ let ListFormComponentExtended = class ListFormComponentExtended extends ListForm
|
|
|
974
1685
|
i0.ɵɵproperty("ngIf", ctx.activeSection === "activity");
|
|
975
1686
|
i0.ɵɵadvance();
|
|
976
1687
|
i0.ɵɵproperty("ngIf", ctx.activeSection === "settings");
|
|
977
|
-
} }, dependencies: [i1.NgForOf, i1.NgIf, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.UserViewGridComponent, i4.MJFormField, i4.CollapsiblePanelComponent, i5.LoadingComponent, i1.DatePipe], styles: ["\n\n\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 min-height: 100vh;\n background: #f5f7fa;\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: white;\n border-bottom: 1px solid #e0e0e0;\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: #1a1a2e;\n}\n\n.edit-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 6px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn[_ngcontent-%COMP%]:hover {\n background: #f0f0f0;\n color: #666;\n}\n\n.inline-edit-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 2px solid #2196F3;\n border-radius: 6px;\n font-size: inherit;\n background: white;\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: #4CAF50;\n}\n\n.save-btn[_ngcontent-%COMP%]:hover {\n background: #e8f5e9;\n}\n\n.cancel-btn[_ngcontent-%COMP%] {\n color: #f44336;\n}\n\n.cancel-btn[_ngcontent-%COMP%]:hover {\n background: #ffebee;\n}\n\n.entity-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: #e3f2fd;\n border-radius: 16px;\n font-size: 13px;\n color: #1976D2;\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: #333;\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #999;\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: #1a1a2e;\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: rgba(33, 150, 243, 0.2);\n color: #64b5f6;\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: #2196F3;\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: #2196F3;\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: #333;\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: #999;\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n padding: 10px 12px 10px 36px;\n border: 1px solid #ddd;\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: #2196F3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\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: white;\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 #f0f0f0;\n}\n\n.card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #666;\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: #999;\n}\n\n.card-body[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.description-text[_ngcontent-%COMP%] {\n margin: 0;\n color: #333;\n line-height: 1.6;\n}\n\n.description-empty[_ngcontent-%COMP%] {\n margin: 0;\n color: #999;\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: #2196F3;\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: #1976D2;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: white;\n color: #666;\n border: 1px solid #ddd;\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: #f5f5f5;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid #ddd;\n padding: 8px 12px;\n border-radius: 6px;\n color: #666;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n border-color: #ccc;\n}\n\n.btn-danger[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: #f44336;\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: #d32f2f;\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 #f5f5f5;\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: #999;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n color: #999;\n font-size: 12px;\n}\n\n.owner-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #e8f5e9;\n color: #388E3C;\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 #ddd;\n border-radius: 6px;\n font-size: 14px;\n background: white;\n cursor: pointer;\n}\n\n.category-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #2196F3;\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: #f9fafb;\n border: 1px solid #e5e7eb;\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: #f3f4f6;\n border-color: #d1d5db;\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: #2196F3;\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: #333;\n}\n\n.action-count[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #e3f2fd;\n color: #1976D2;\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: #fff3e0;\n color: #f57c00;\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: linear-gradient(135deg, #e3f2fd, #f3e5f5);\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: #7c4dff;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 12px;\n font-size: 20px;\n color: #333;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #666;\n max-width: 400px;\n}\n\n.items-table-container[_ngcontent-%COMP%] {\n background: white;\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: #e3f2fd;\n border-bottom: 1px solid #bbdefb;\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #1976D2;\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: #666;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: #fafafa;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.items-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid #f0f0f0;\n font-size: 14px;\n color: #333;\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: #e3f2fd;\n}\n\n.items-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover:not(.selected) {\n background: #fafafa;\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: #999;\n}\n\n.item-icon[_ngcontent-%COMP%] {\n color: #999;\n}\n\n.record-id[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: #f5f5f5;\n padding: 4px 8px;\n border-radius: 4px;\n color: #666;\n}\n\n.items-footer[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: #fafafa;\n border-top: 1px solid #f0f0f0;\n}\n\n.items-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #666;\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: linear-gradient(135deg, #e3f2fd 0%, #f3e5f5 100%);\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: #7c4dff;\n}\n\n.banner-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px;\n color: #333;\n}\n\n.banner-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #666;\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: white;\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 #f0f0f0;\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: #e3f2fd;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #2196F3;\n flex-shrink: 0;\n}\n\n.timeline-icon.create[_ngcontent-%COMP%] {\n background: #e8f5e9;\n color: #4CAF50;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.timeline-text[_ngcontent-%COMP%] {\n margin: 0 0 4px;\n color: #333;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #999;\n}\n\n.activity-info[_ngcontent-%COMP%] {\n background: #fff8e1;\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #f57c00;\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@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: #F5F6FA;\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: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: #F5F6FA;\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\n\n\n\n\n\n\n\n\n\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 \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: #F5F6FA;\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: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\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: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\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: #667eea;\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: #6b7280;\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: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3b82f6;\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\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 #d1d5db;\n background: white;\n color: #374151;\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: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\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 #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6b7280;\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: #667eea;\n color: white;\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: #fef08a;\n color: #854d0e;\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: #10b981;\n color: white;\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: #9ca3af;\n}"], changeDetection: 0 }); }
|
|
1688
|
+
i0.ɵɵadvance();
|
|
1689
|
+
i0.ɵɵproperty("ngIf", ctx.showAddRecordsDialog);
|
|
1690
|
+
i0.ɵɵadvance();
|
|
1691
|
+
i0.ɵɵproperty("ngIf", ctx.showAddFromViewDialog);
|
|
1692
|
+
i0.ɵɵadvance();
|
|
1693
|
+
i0.ɵɵproperty("ngIf", ctx.showShareDialog && ctx.shareDialogConfig);
|
|
1694
|
+
} }, dependencies: [i1.NgForOf, i1.NgIf, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgModel, i3.DialogComponent, i3.DialogActionsComponent, i4.TextBoxComponent, i4.TextBoxPrefixTemplateDirective, i5.ButtonComponent, i6.MJFormField, i6.CollapsiblePanelComponent, i7.LoadingComponent, i8.ListShareDialogComponent, i1.DatePipe], styles: ["\n\n\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 min-height: 100vh;\n background: #f5f7fa;\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: white;\n border-bottom: 1px solid #e0e0e0;\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: #1a1a2e;\n}\n\n.edit-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 6px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn[_ngcontent-%COMP%]:hover {\n background: #f0f0f0;\n color: #666;\n}\n\n.inline-edit-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 2px solid #2196F3;\n border-radius: 6px;\n font-size: inherit;\n background: white;\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: #4CAF50;\n}\n\n.save-btn[_ngcontent-%COMP%]:hover {\n background: #e8f5e9;\n}\n\n.cancel-btn[_ngcontent-%COMP%] {\n color: #f44336;\n}\n\n.cancel-btn[_ngcontent-%COMP%]:hover {\n background: #ffebee;\n}\n\n.entity-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: #e3f2fd;\n border-radius: 16px;\n font-size: 13px;\n color: #1976D2;\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: #333;\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: #999;\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: #1a1a2e;\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: rgba(33, 150, 243, 0.2);\n color: #64b5f6;\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: #2196F3;\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: #2196F3;\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: #333;\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: #999;\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n padding: 10px 12px 10px 36px;\n border: 1px solid #ddd;\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: #2196F3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\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: white;\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 #f0f0f0;\n}\n\n.card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #666;\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: #999;\n}\n\n.card-body[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.description-text[_ngcontent-%COMP%] {\n margin: 0;\n color: #333;\n line-height: 1.6;\n}\n\n.description-empty[_ngcontent-%COMP%] {\n margin: 0;\n color: #999;\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: #2196F3;\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: #1976D2;\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: white;\n color: #666;\n border: 1px solid #ddd;\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: #f5f5f5;\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid #ddd;\n padding: 8px 12px;\n border-radius: 6px;\n color: #666;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: #f5f5f5;\n border-color: #ccc;\n}\n\n.btn-danger[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: #f44336;\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: #d32f2f;\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 #f5f5f5;\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: #999;\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n color: #999;\n font-size: 12px;\n}\n\n.owner-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #e8f5e9;\n color: #388E3C;\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 #ddd;\n border-radius: 6px;\n font-size: 14px;\n background: white;\n cursor: pointer;\n}\n\n.category-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #2196F3;\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: #f9fafb;\n border: 1px solid #e5e7eb;\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: #f3f4f6;\n border-color: #d1d5db;\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: #2196F3;\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: #333;\n}\n\n.action-count[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: #e3f2fd;\n color: #1976D2;\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: #fff3e0;\n color: #f57c00;\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: linear-gradient(135deg, #e3f2fd, #f3e5f5);\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: #7c4dff;\n}\n\n.empty-state[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 12px;\n font-size: 20px;\n color: #333;\n}\n\n.empty-state[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #666;\n max-width: 400px;\n}\n\n.items-table-container[_ngcontent-%COMP%] {\n background: white;\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: #e3f2fd;\n border-bottom: 1px solid #bbdefb;\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 14px;\n color: #1976D2;\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: #666;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: #fafafa;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.items-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid #f0f0f0;\n font-size: 14px;\n color: #333;\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: #e3f2fd;\n}\n\n.items-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover:not(.selected) {\n background: #fafafa;\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: #999;\n}\n\n.item-icon[_ngcontent-%COMP%] {\n color: #999;\n}\n\n.record-id[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: #f5f5f5;\n padding: 4px 8px;\n border-radius: 4px;\n color: #666;\n}\n\n.items-footer[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: #fafafa;\n border-top: 1px solid #f0f0f0;\n}\n\n.items-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #666;\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: linear-gradient(135deg, #e3f2fd 0%, #f3e5f5 100%);\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: #7c4dff;\n}\n\n.banner-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px;\n color: #333;\n}\n\n.banner-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #666;\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: white;\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 #f0f0f0;\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: #e3f2fd;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #2196F3;\n flex-shrink: 0;\n}\n\n.timeline-icon.create[_ngcontent-%COMP%] {\n background: #e8f5e9;\n color: #4CAF50;\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.timeline-text[_ngcontent-%COMP%] {\n margin: 0 0 4px;\n color: #333;\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #999;\n}\n\n.activity-info[_ngcontent-%COMP%] {\n background: #fff8e1;\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: #f57c00;\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: white;\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: #e3f2fd;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #2196F3;\n font-size: 20px;\n}\n\n.summary-icon.pending[_ngcontent-%COMP%] {\n background: #fff3e0;\n color: #f57c00;\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: #333;\n line-height: 1;\n}\n\n.summary-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #666;\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: #f5f5f5;\n border-radius: 8px;\n color: #666;\n font-size: 14px;\n}\n\n.readonly-notice[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #999;\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: #666;\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: #999;\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 #e0e0e0;\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: #666;\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: #f5f5f5;\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: #f5f5f5;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .selection-info[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 12px;\n color: #666;\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 #f0f0f0;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item[_ngcontent-%COMP%]:hover {\n background: #f9f9f9;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item.selected[_ngcontent-%COMP%] {\n background: #e3f2fd;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item.in-list[_ngcontent-%COMP%] {\n background: #f5f5f5;\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: #4CAF50;\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: #e8f5e9;\n color: #388E3C;\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 #e0e0e0;\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: #666;\n}\n\n.views-list[_ngcontent-%COMP%] .empty-results[_ngcontent-%COMP%] .empty-icon[_ngcontent-%COMP%] {\n font-size: 36px;\n color: #ccc;\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 #f0f0f0;\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: #f9f9f9;\n}\n\n.view-item.selected[_ngcontent-%COMP%] {\n background: #e3f2fd;\n}\n\n.view-item[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: #2196F3;\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: #F5F6FA;\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: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: #F5F6FA;\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\n\n\n\n\n\n\n\n\n\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 \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: #F5F6FA;\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: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\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: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\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: #667eea;\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: #6b7280;\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: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: #3b82f6;\n}\n\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\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 #d1d5db;\n background: white;\n color: #374151;\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: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\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 #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: #6b7280;\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: #667eea;\n color: white;\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: #fef08a;\n color: #854d0e;\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: #10b981;\n color: white;\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: #9ca3af;\n}"], changeDetection: 0 }); }
|
|
978
1695
|
};
|
|
979
1696
|
ListFormComponentExtended = __decorate([
|
|
980
1697
|
RegisterClass(BaseFormComponent, 'Lists')
|
|
@@ -982,9 +1699,9 @@ ListFormComponentExtended = __decorate([
|
|
|
982
1699
|
export { ListFormComponentExtended };
|
|
983
1700
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ListFormComponentExtended, [{
|
|
984
1701
|
type: Component,
|
|
985
|
-
args: [{ 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]=\"'#2196F3'\">\n <i [class]=\"entityIcon\"></i>\n </div>\n <div class=\"header-info\">\n <div class=\"name-row\">\n <ng-container *ngIf=\"!isEditingName\">\n <h1 class=\"list-name\">{{record?.Name || 'Untitled List'}}</h1>\n <button\n class=\"edit-btn\"\n (click)=\"startEditingName()\"\n title=\"Edit name\"\n *ngIf=\"isCurrentUserOwner()\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\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 <button\n *ngFor=\"let nav of navItems\"\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 <span class=\"nav-badge\" *ngIf=\"nav.badge && nav.badge > 0\">{{nav.badge}}</span>\n </button>\n </nav>\n\n <!-- Main Content -->\n <main class=\"main-content\">\n <!-- Overview Section -->\n <section class=\"section overview-section\" *ngIf=\"activeSection === 'overview'\">\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 <button\n class=\"edit-btn\"\n (click)=\"startEditingDescription()\"\n *ngIf=\"isCurrentUserOwner() && !isEditingDescription\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n </div>\n <div class=\"card-body\">\n <ng-container *ngIf=\"!isEditingDescription\">\n <p *ngIf=\"record?.Description\" class=\"description-text\">{{record.Description}}</p>\n <p *ngIf=\"!record?.Description\" class=\"description-empty\">No description provided</p>\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\n </div>\n </div>\n\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 <span class=\"detail-value\" *ngIf=\"!isCurrentUserOwner()\">\n <i class=\"fa-solid fa-folder detail-icon\"></i>\n {{categoryName}}\n </span>\n <select\n *ngIf=\"isCurrentUserOwner()\"\n class=\"category-select\"\n [ngModel]=\"record?.CategoryID\"\n (ngModelChange)=\"onCategoryChange($event)\">\n <option [ngValue]=\"null\">Uncategorized</option>\n <option *ngFor=\"let cat of categories\" [ngValue]=\"cat.ID\">{{cat.Name}}</option>\n </select>\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 <span class=\"owner-badge\" *ngIf=\"isCurrentUserOwner()\">You</span>\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\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 <button class=\"action-btn\" [disabled]=\"true\" title=\"Coming soon\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>Share List</span>\n <span class=\"coming-soon\">Soon</span>\n </button>\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 <!-- Items Section -->\n <section class=\"section items-section\" *ngIf=\"activeSection === 'items'\">\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 <button class=\"btn-icon\" (click)=\"refreshItems()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n\n <!-- Loading State -->\n <div class=\"loading-state\" *ngIf=\"isLoadingItems\">\n <mj-loading text=\"Loading items...\" size=\"medium\"></mj-loading>\n </div>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"!isLoadingItems && listItems.length === 0\">\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 <div class=\"items-table-container\" *ngIf=\"!isLoadingItems && listItems.length > 0\">\n <div class=\"items-toolbar\" *ngIf=\"selectedItems.size > 0\">\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 <tr\n *ngFor=\"let item of filteredItems\"\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 <i *ngIf=\"item.isLoading\" class=\"fa-solid fa-spinner fa-spin\"></i>\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 </tbody>\n </table>\n\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 </section>\n\n <!-- Sharing Section -->\n <section class=\"section sharing-section\" *ngIf=\"activeSection === 'sharing'\">\n <div class=\"coming-soon-banner\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <div class=\"banner-content\">\n <h3>Sharing Coming Soon</h3>\n <p>You'll soon be able to share lists with other users, manage permissions, and collaborate on list contents.</p>\n </div>\n </div>\n\n <!-- Show existing shares/invitations using standard grids -->\n <div class=\"shares-grid\" *ngIf=\"record?.IsSaved\">\n <mj-collapsible-panel\n sectionKey=\"shares\"\n sectionName=\"Current Shares\"\n icon=\"fa fa-users\"\n [form]=\"this\"\n [formContext]=\"formContext\"\n [badgeCount]=\"stats.shareCount\">\n <mj-user-view-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: List Shares','ListID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: List Shares')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\">\n </mj-user-view-grid>\n </mj-collapsible-panel>\n\n <mj-collapsible-panel\n sectionKey=\"invitations\"\n sectionName=\"Pending Invitations\"\n icon=\"fa fa-envelope\"\n [form]=\"this\"\n [formContext]=\"formContext\"\n [badgeCount]=\"stats.invitationCount\">\n <mj-user-view-grid\n [Params]=\"BuildRelationshipViewParamsByEntityName('MJ: List Invitations','ListID')\"\n [NewRecordValues]=\"NewRecordValues('MJ: List Invitations')\"\n [AllowLoad]=\"true\"\n [EditMode]=\"GridEditMode()\">\n </mj-user-view-grid>\n </mj-collapsible-panel>\n </div>\n </section>\n\n <!-- Activity Section -->\n <section class=\"section activity-section\" *ngIf=\"activeSection === 'activity'\">\n <div class=\"section-header\">\n <h2>Activity</h2>\n </div>\n\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\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 <!-- Settings Section -->\n <section class=\"section settings-section\" *ngIf=\"activeSection === 'settings'\">\n <div class=\"section-header\">\n <h2>Settings</h2>\n </div>\n\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\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 </main>\n</div>\n", styles: ["/* ============================================\n WORLD-CLASS LIST FORM STYLES\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 min-height: 100vh;\n background: #f5f7fa;\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: white;\n border-bottom: 1px solid #e0e0e0;\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: #1a1a2e;\n}\n\n.edit-btn {\n background: none;\n border: none;\n padding: 6px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn:hover {\n background: #f0f0f0;\n color: #666;\n}\n\n.inline-edit-input {\n padding: 8px 12px;\n border: 2px solid #2196F3;\n border-radius: 6px;\n font-size: inherit;\n background: white;\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: #4CAF50;\n}\n\n.save-btn:hover {\n background: #e8f5e9;\n}\n\n.cancel-btn {\n color: #f44336;\n}\n\n.cancel-btn:hover {\n background: #ffebee;\n}\n\n.entity-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: #e3f2fd;\n border-radius: 16px;\n font-size: 13px;\n color: #1976D2;\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: #333;\n}\n\n.stat-label {\n font-size: 12px;\n color: #999;\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: #1a1a2e;\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: rgba(33, 150, 243, 0.2);\n color: #64b5f6;\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: #2196F3;\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: #2196F3;\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: #333;\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: #999;\n}\n\n.search-box input {\n padding: 10px 12px 10px 36px;\n border: 1px solid #ddd;\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: #2196F3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\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: white;\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 #f0f0f0;\n}\n\n.card-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #666;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.card-header h3 i {\n color: #999;\n}\n\n.card-body {\n padding: 20px;\n}\n\n.description-text {\n margin: 0;\n color: #333;\n line-height: 1.6;\n}\n\n.description-empty {\n margin: 0;\n color: #999;\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: #2196F3;\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: #1976D2;\n}\n\n.btn-secondary {\n padding: 8px 16px;\n background: white;\n color: #666;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-secondary:hover {\n background: #f5f5f5;\n}\n\n.btn-icon {\n background: none;\n border: 1px solid #ddd;\n padding: 8px 12px;\n border-radius: 6px;\n color: #666;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon:hover {\n background: #f5f5f5;\n border-color: #ccc;\n}\n\n.btn-danger {\n padding: 8px 16px;\n background: #f44336;\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: #d32f2f;\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 #f5f5f5;\n}\n\n.detail-row:last-child {\n border-bottom: none;\n}\n\n.detail-label {\n font-size: 13px;\n color: #999;\n}\n\n.detail-value {\n font-size: 14px;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon {\n color: #999;\n font-size: 12px;\n}\n\n.owner-badge {\n padding: 2px 8px;\n background: #e8f5e9;\n color: #388E3C;\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 #ddd;\n border-radius: 6px;\n font-size: 14px;\n background: white;\n cursor: pointer;\n}\n\n.category-select:focus {\n outline: none;\n border-color: #2196F3;\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: #f9fafb;\n border: 1px solid #e5e7eb;\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: #f3f4f6;\n border-color: #d1d5db;\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: #2196F3;\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: #333;\n}\n\n.action-count {\n padding: 2px 8px;\n background: #e3f2fd;\n color: #1976D2;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.coming-soon {\n padding: 2px 8px;\n background: #fff3e0;\n color: #f57c00;\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: linear-gradient(135deg, #e3f2fd, #f3e5f5);\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: #7c4dff;\n}\n\n.empty-state h3 {\n margin: 0 0 12px;\n font-size: 20px;\n color: #333;\n}\n\n.empty-state p {\n margin: 0;\n color: #666;\n max-width: 400px;\n}\n\n.items-table-container {\n background: white;\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: #e3f2fd;\n border-bottom: 1px solid #bbdefb;\n}\n\n.selection-count {\n font-size: 14px;\n color: #1976D2;\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: #666;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: #fafafa;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.items-table td {\n padding: 14px 16px;\n border-bottom: 1px solid #f0f0f0;\n font-size: 14px;\n color: #333;\n}\n\n.items-table tr:last-child td {\n border-bottom: none;\n}\n\n.items-table tr.selected {\n background: #e3f2fd;\n}\n\n.items-table tr:hover:not(.selected) {\n background: #fafafa;\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: #999;\n}\n\n.item-icon {\n color: #999;\n}\n\n.record-id {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: #f5f5f5;\n padding: 4px 8px;\n border-radius: 4px;\n color: #666;\n}\n\n.items-footer {\n padding: 12px 16px;\n background: #fafafa;\n border-top: 1px solid #f0f0f0;\n}\n\n.items-count {\n font-size: 13px;\n color: #666;\n}\n\n/* Sharing Section */\n.coming-soon-banner {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 24px;\n background: linear-gradient(135deg, #e3f2fd 0%, #f3e5f5 100%);\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.coming-soon-banner > i {\n font-size: 48px;\n color: #7c4dff;\n}\n\n.banner-content h3 {\n margin: 0 0 8px;\n color: #333;\n}\n\n.banner-content p {\n margin: 0;\n color: #666;\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: white;\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 #f0f0f0;\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: #e3f2fd;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #2196F3;\n flex-shrink: 0;\n}\n\n.timeline-icon.create {\n background: #e8f5e9;\n color: #4CAF50;\n}\n\n.timeline-content {\n flex: 1;\n}\n\n.timeline-text {\n margin: 0 0 4px;\n color: #333;\n}\n\n.timeline-date {\n font-size: 13px;\n color: #999;\n}\n\n.activity-info {\n background: #fff8e1;\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info p {\n margin: 0;\n color: #f57c00;\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/* 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: #F5F6FA;\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: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: #F5F6FA;\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\n/* .record-form .record-form-row:nth-child(odd) {\n background-color: #f2f2f2; \n} */\n\n/* \n.record-form .record-form-row:nth-child(even) {\n background-color: #ffffff; \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 \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: #F5F6FA;\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: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\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: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\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: #667eea;\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header .collapse-icon {\n color: #6b7280;\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: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity .collapsible-header {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity .collapsible-title i {\n color: #3b82f6;\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\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 #d1d5db;\n background: white;\n color: #374151;\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: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\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 #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls .section-search::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: #6b7280;\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: #667eea;\n color: white;\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: #fef08a;\n color: #854d0e;\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: #10b981;\n color: white;\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: #9ca3af;\n}\n"] }]
|
|
1702
|
+
args: [{ 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]=\"'#2196F3'\">\n <i [class]=\"entityIcon\"></i>\n </div>\n <div class=\"header-info\">\n <div class=\"name-row\">\n <ng-container *ngIf=\"!isEditingName\">\n <h1 class=\"list-name\">{{record.Name || 'Untitled List'}}</h1>\n <button\n class=\"edit-btn\"\n (click)=\"startEditingName()\"\n title=\"Edit name\"\n *ngIf=\"isCurrentUserOwner()\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\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 <button\n *ngFor=\"let nav of navItems\"\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 <span class=\"nav-badge\" *ngIf=\"nav.badge && nav.badge > 0\">{{nav.badge}}</span>\n </button>\n </nav>\n\n <!-- Main Content -->\n <main class=\"main-content\">\n <!-- Overview Section -->\n <section class=\"section overview-section\" *ngIf=\"activeSection === 'overview'\">\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 <button\n class=\"edit-btn\"\n (click)=\"startEditingDescription()\"\n *ngIf=\"isCurrentUserOwner() && !isEditingDescription\">\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n </div>\n <div class=\"card-body\">\n <ng-container *ngIf=\"!isEditingDescription\">\n <p *ngIf=\"record.Description\" class=\"description-text\">{{record.Description}}</p>\n <p *ngIf=\"!record.Description\" class=\"description-empty\">No description provided</p>\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\n </div>\n </div>\n\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 <span class=\"detail-value\" *ngIf=\"!isCurrentUserOwner()\">\n <i class=\"fa-solid fa-folder detail-icon\"></i>\n {{categoryName}}\n </span>\n <select\n *ngIf=\"isCurrentUserOwner()\"\n class=\"category-select\"\n [ngModel]=\"record.CategoryID\"\n (ngModelChange)=\"onCategoryChange($event)\">\n <option [ngValue]=\"null\">Uncategorized</option>\n <option *ngFor=\"let cat of categories\" [ngValue]=\"cat.ID\">{{cat.Name}}</option>\n </select>\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 <span class=\"owner-badge\" *ngIf=\"isCurrentUserOwner()\">You</span>\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\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 <button class=\"action-btn\" (click)=\"openShareDialog()\" *ngIf=\"isCurrentUserOwner()\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>Share List</span>\n <span class=\"action-count\" *ngIf=\"stats.shareCount > 0\">{{stats.shareCount}}</span>\n </button>\n <button class=\"action-btn\" (click)=\"setActiveSection('sharing')\" *ngIf=\"!isCurrentUserOwner()\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>View Sharing</span>\n </button>\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 <!-- Items Section -->\n <section class=\"section items-section\" *ngIf=\"activeSection === 'items'\">\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 <div class=\"add-buttons\" *ngIf=\"isCurrentUserOwner()\">\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 <button class=\"btn-icon\" (click)=\"refreshItems()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n\n <!-- Loading State -->\n <div class=\"loading-state\" *ngIf=\"isLoadingItems\">\n <mj-loading text=\"Loading items...\" size=\"medium\"></mj-loading>\n </div>\n\n <!-- Empty State -->\n <div class=\"empty-state\" *ngIf=\"!isLoadingItems && listItems.length === 0\">\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 <div class=\"items-table-container\" *ngIf=\"!isLoadingItems && listItems.length > 0\">\n <div class=\"items-toolbar\" *ngIf=\"selectedItems.size > 0\">\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 <tr\n *ngFor=\"let item of filteredItems\"\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 <i *ngIf=\"item.isLoading\" class=\"fa-solid fa-spinner fa-spin\"></i>\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 </tbody>\n </table>\n\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 </section>\n\n <!-- Sharing Section -->\n <section class=\"section sharing-section\" *ngIf=\"activeSection === 'sharing'\">\n <div class=\"section-header\">\n <h2>Sharing</h2>\n <div class=\"section-actions\" *ngIf=\"isCurrentUserOwner()\">\n <button class=\"btn-primary\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-user-plus\"></i> Manage Sharing\n </button>\n </div>\n </div>\n\n <!-- Sharing summary -->\n <div class=\"sharing-summary\" *ngIf=\"stats.shareCount > 0 || stats.invitationCount > 0\">\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 <div class=\"summary-card\" *ngIf=\"stats.invitationCount > 0\">\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 </div>\n\n <!-- Empty state for no shares -->\n <div class=\"empty-state\" *ngIf=\"stats.shareCount === 0 && stats.invitationCount === 0\">\n <div class=\"empty-icon\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n </div>\n <h3>Not Shared Yet</h3>\n <p *ngIf=\"isCurrentUserOwner()\">This list is private. Click \"Manage Sharing\" to share it with other users or roles.</p>\n <p *ngIf=\"!isCurrentUserOwner()\">This list hasn't been shared with anyone else.</p>\n <button class=\"btn-primary\" (click)=\"openShareDialog()\" *ngIf=\"isCurrentUserOwner()\">\n <i class=\"fa-solid fa-user-plus\"></i> Share This List\n </button>\n </div>\n\n <!-- Read-only notice for non-owners -->\n <div class=\"readonly-notice\" *ngIf=\"!isCurrentUserOwner() && (stats.shareCount > 0 || stats.invitationCount > 0)\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>Only the list owner can manage sharing settings.</span>\n </div>\n </section>\n\n <!-- Activity Section -->\n <section class=\"section activity-section\" *ngIf=\"activeSection === 'activity'\">\n <div class=\"section-header\">\n <h2>Activity</h2>\n </div>\n\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\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 <!-- Settings Section -->\n <section class=\"section settings-section\" *ngIf=\"activeSection === 'settings'\">\n <div class=\"section-header\">\n <h2>Settings</h2>\n </div>\n\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\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 </main>\n</div>\n\n<!-- Add Records Dialog -->\n<kendo-dialog\n *ngIf=\"showAddRecordsDialog\"\n [title]=\"'Add ' + entityDisplayName + ' to List'\"\n (close)=\"closeAddRecordsDialog()\"\n [minWidth]=\"400\"\n [width]=\"600\"\n [height]=\"550\">\n <div class=\"dialog-content add-records-dialog\">\n <ng-container *ngIf=\"addDialogSaving\">\n <div class=\"dialog-loading\">\n <mj-loading [text]=\"'Adding ' + addTotal + ' records to list...'\" size=\"small\"></mj-loading>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!addDialogSaving\">\n <!-- Search Input -->\n <div class=\"search-section\">\n <kendo-textbox\n [placeholder]=\"'Search ' + entityDisplayName + '...'\"\n [clearButton]=\"true\"\n (valueChange)=\"onAddRecordsSearchChange($event)\"\n [value]=\"addRecordsSearchFilter\"\n class=\"search-input\">\n <ng-template kendoTextBoxPrefixTemplate>\n <span class=\"fa-solid fa-search search-icon\"></span>\n </ng-template>\n </kendo-textbox>\n <span class=\"search-hint\">Type at least 2 characters to search</span>\n </div>\n\n <!-- Records List -->\n <div class=\"records-list\">\n <ng-container *ngIf=\"addDialogLoading\">\n <div class=\"list-loading\">\n <mj-loading [showText]=\"false\" size=\"small\"></mj-loading>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!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 </ng-container>\n <ng-container *ngIf=\"!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 </ng-container>\n <ng-container *ngIf=\"!addDialogLoading && addableRecords.length > 0\">\n <!-- Selection controls -->\n <div class=\"selection-controls\">\n <button kendoButton fillMode=\"flat\" size=\"small\" (click)=\"selectAllAddable()\">Select All</button>\n <button kendoButton fillMode=\"flat\" size=\"small\" (click)=\"deselectAllAddable()\">Deselect All</button>\n <span class=\"selection-info\">{{ selectedAddableRecords.length }} selected</span>\n </div>\n\n <!-- Records -->\n <div class=\"records-scroll\">\n <div class=\"record-item\"\n *ngFor=\"let record of addableRecords\"\n [class.in-list]=\"record.isInList\"\n [class.selected]=\"record.isSelected\"\n (click)=\"toggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n <span class=\"fa-solid fa-check in-list-icon\" *ngIf=\"record.isInList\" title=\"Already in list\"></span>\n <input type=\"checkbox\"\n *ngIf=\"!record.isInList\"\n [checked]=\"record.isSelected\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRecordSelection(record)\">\n </div>\n <div class=\"record-name\">{{ record.Name }}</div>\n <span class=\"in-list-badge\" *ngIf=\"record.isInList\">In List</span>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n <kendo-dialog-actions>\n <button kendoButton\n (click)=\"confirmAddRecords()\"\n [disabled]=\"addDialogSaving || selectedAddableRecords.length === 0\"\n themeColor=\"primary\">\n Add {{ selectedAddableRecords.length > 0 ? selectedAddableRecords.length : '' }} Record{{ selectedAddableRecords.length !== 1 ? 's' : '' }}\n </button>\n <button kendoButton\n (click)=\"closeAddRecordsDialog()\"\n [disabled]=\"addDialogSaving\"\n fillMode=\"outline\">\n Cancel\n </button>\n </kendo-dialog-actions>\n</kendo-dialog>\n\n<!-- Add From View Dialog -->\n<kendo-dialog\n *ngIf=\"showAddFromViewDialog\"\n title=\"Add Records from Views\"\n (close)=\"closeAddFromViewDialog()\"\n [minWidth]=\"400\"\n [width]=\"600\"\n [height]=\"500\">\n <div class=\"dialog-content\">\n <ng-container *ngIf=\"showAddFromViewLoader && fetchingRecordsToSave\">\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading records from views...\" size=\"small\"></mj-loading>\n </div>\n </ng-container>\n <ng-container *ngIf=\"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 </ng-container>\n <ng-container *ngIf=\"showAddFromViewLoader && !fetchingRecordsToSave && addFromViewTotal === 0\">\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading views...\" size=\"small\"></mj-loading>\n </div>\n </ng-container>\n <ng-container *ngIf=\"!showAddFromViewLoader\">\n <p class=\"dialog-instruction\">Select views to add their records to this list:</p>\n\n <div class=\"views-list\">\n <ng-container *ngIf=\"!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 </ng-container>\n <ng-container *ngIf=\"userViews && userViews.length > 0\">\n <div class=\"view-item\"\n *ngFor=\"let view of userViews\"\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 </ng-container>\n </div>\n </ng-container>\n </div>\n <kendo-dialog-actions>\n <button kendoButton\n (click)=\"confirmAddFromView()\"\n [disabled]=\"showAddFromViewLoader || userViewsToAdd.length === 0\"\n themeColor=\"primary\">\n Add from {{ userViewsToAdd.length }} View{{ userViewsToAdd.length !== 1 ? 's' : '' }}\n </button>\n <button kendoButton\n (click)=\"closeAddFromViewDialog()\"\n [disabled]=\"showAddFromViewLoader\"\n fillMode=\"outline\">\n Cancel\n </button>\n </kendo-dialog-actions>\n</kendo-dialog>\n\n<!-- Share Dialog -->\n<mj-list-share-dialog\n *ngIf=\"showShareDialog && shareDialogConfig\"\n [config]=\"shareDialogConfig\"\n [visible]=\"showShareDialog\"\n (complete)=\"onShareDialogComplete($event)\"\n (cancel)=\"onShareDialogCancel()\">\n</mj-list-share-dialog>\n", styles: ["/* ============================================\n WORLD-CLASS LIST FORM STYLES\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 min-height: 100vh;\n background: #f5f7fa;\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: white;\n border-bottom: 1px solid #e0e0e0;\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: #1a1a2e;\n}\n\n.edit-btn {\n background: none;\n border: none;\n padding: 6px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn:hover {\n background: #f0f0f0;\n color: #666;\n}\n\n.inline-edit-input {\n padding: 8px 12px;\n border: 2px solid #2196F3;\n border-radius: 6px;\n font-size: inherit;\n background: white;\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: #4CAF50;\n}\n\n.save-btn:hover {\n background: #e8f5e9;\n}\n\n.cancel-btn {\n color: #f44336;\n}\n\n.cancel-btn:hover {\n background: #ffebee;\n}\n\n.entity-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: #e3f2fd;\n border-radius: 16px;\n font-size: 13px;\n color: #1976D2;\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: #333;\n}\n\n.stat-label {\n font-size: 12px;\n color: #999;\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: #1a1a2e;\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: rgba(33, 150, 243, 0.2);\n color: #64b5f6;\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: #2196F3;\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: #2196F3;\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: #333;\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: #999;\n}\n\n.search-box input {\n padding: 10px 12px 10px 36px;\n border: 1px solid #ddd;\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: #2196F3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\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: white;\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 #f0f0f0;\n}\n\n.card-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: #666;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.card-header h3 i {\n color: #999;\n}\n\n.card-body {\n padding: 20px;\n}\n\n.description-text {\n margin: 0;\n color: #333;\n line-height: 1.6;\n}\n\n.description-empty {\n margin: 0;\n color: #999;\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: #2196F3;\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: #1976D2;\n}\n\n.btn-secondary {\n padding: 8px 16px;\n background: white;\n color: #666;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-secondary:hover {\n background: #f5f5f5;\n}\n\n.btn-icon {\n background: none;\n border: 1px solid #ddd;\n padding: 8px 12px;\n border-radius: 6px;\n color: #666;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon:hover {\n background: #f5f5f5;\n border-color: #ccc;\n}\n\n.btn-danger {\n padding: 8px 16px;\n background: #f44336;\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: #d32f2f;\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 #f5f5f5;\n}\n\n.detail-row:last-child {\n border-bottom: none;\n}\n\n.detail-label {\n font-size: 13px;\n color: #999;\n}\n\n.detail-value {\n font-size: 14px;\n color: #333;\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon {\n color: #999;\n font-size: 12px;\n}\n\n.owner-badge {\n padding: 2px 8px;\n background: #e8f5e9;\n color: #388E3C;\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 #ddd;\n border-radius: 6px;\n font-size: 14px;\n background: white;\n cursor: pointer;\n}\n\n.category-select:focus {\n outline: none;\n border-color: #2196F3;\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: #f9fafb;\n border: 1px solid #e5e7eb;\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: #f3f4f6;\n border-color: #d1d5db;\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: #2196F3;\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: #333;\n}\n\n.action-count {\n padding: 2px 8px;\n background: #e3f2fd;\n color: #1976D2;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.coming-soon {\n padding: 2px 8px;\n background: #fff3e0;\n color: #f57c00;\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: linear-gradient(135deg, #e3f2fd, #f3e5f5);\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: #7c4dff;\n}\n\n.empty-state h3 {\n margin: 0 0 12px;\n font-size: 20px;\n color: #333;\n}\n\n.empty-state p {\n margin: 0;\n color: #666;\n max-width: 400px;\n}\n\n.items-table-container {\n background: white;\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: #e3f2fd;\n border-bottom: 1px solid #bbdefb;\n}\n\n.selection-count {\n font-size: 14px;\n color: #1976D2;\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: #666;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: #fafafa;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.items-table td {\n padding: 14px 16px;\n border-bottom: 1px solid #f0f0f0;\n font-size: 14px;\n color: #333;\n}\n\n.items-table tr:last-child td {\n border-bottom: none;\n}\n\n.items-table tr.selected {\n background: #e3f2fd;\n}\n\n.items-table tr:hover:not(.selected) {\n background: #fafafa;\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: #999;\n}\n\n.item-icon {\n color: #999;\n}\n\n.record-id {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: #f5f5f5;\n padding: 4px 8px;\n border-radius: 4px;\n color: #666;\n}\n\n.items-footer {\n padding: 12px 16px;\n background: #fafafa;\n border-top: 1px solid #f0f0f0;\n}\n\n.items-count {\n font-size: 13px;\n color: #666;\n}\n\n/* Sharing Section */\n.coming-soon-banner {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 24px;\n background: linear-gradient(135deg, #e3f2fd 0%, #f3e5f5 100%);\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.coming-soon-banner > i {\n font-size: 48px;\n color: #7c4dff;\n}\n\n.banner-content h3 {\n margin: 0 0 8px;\n color: #333;\n}\n\n.banner-content p {\n margin: 0;\n color: #666;\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: white;\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 #f0f0f0;\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: #e3f2fd;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #2196F3;\n flex-shrink: 0;\n}\n\n.timeline-icon.create {\n background: #e8f5e9;\n color: #4CAF50;\n}\n\n.timeline-content {\n flex: 1;\n}\n\n.timeline-text {\n margin: 0 0 4px;\n color: #333;\n}\n\n.timeline-date {\n font-size: 13px;\n color: #999;\n}\n\n.activity-info {\n background: #fff8e1;\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info p {\n margin: 0;\n color: #f57c00;\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: white;\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: #e3f2fd;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #2196F3;\n font-size: 20px;\n}\n\n.summary-icon.pending {\n background: #fff3e0;\n color: #f57c00;\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: #333;\n line-height: 1;\n}\n\n.summary-label {\n font-size: 13px;\n color: #666;\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: #f5f5f5;\n border-radius: 8px;\n color: #666;\n font-size: 14px;\n}\n\n.readonly-notice i {\n color: #999;\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: #666;\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: #999;\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 #e0e0e0;\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: #666;\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: #f5f5f5;\n}\n\n.add-records-dialog .selection-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: #f5f5f5;\n border-bottom: 1px solid #e0e0e0;\n}\n\n.add-records-dialog .selection-info {\n margin-left: auto;\n font-size: 12px;\n color: #666;\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 #f0f0f0;\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.add-records-dialog .record-item:hover {\n background: #f9f9f9;\n}\n\n.add-records-dialog .record-item.selected {\n background: #e3f2fd;\n}\n\n.add-records-dialog .record-item.in-list {\n background: #f5f5f5;\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: #4CAF50;\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: #e8f5e9;\n color: #388E3C;\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 #e0e0e0;\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: #666;\n}\n\n.views-list .empty-results .empty-icon {\n font-size: 36px;\n color: #ccc;\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 #f0f0f0;\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: #f9f9f9;\n}\n\n.view-item.selected {\n background: #e3f2fd;\n}\n\n.view-item .view-icon {\n color: #2196F3;\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: #F5F6FA;\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: #F5F6FA;\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: #F5F6FA;\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\n/* .record-form .record-form-row:nth-child(odd) {\n background-color: #f2f2f2; \n} */\n\n/* \n.record-form .record-form-row:nth-child(even) {\n background-color: #ffffff; \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 \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: #F5F6FA;\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: white;\n border-radius: 8px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\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: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: linear-gradient(135deg, #f3f4f6 0%, #f9fafb 100%);\n border-bottom-color: #667eea;\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: #667eea;\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #1f2937;\n}\n\n.collapsible-header .collapse-icon {\n color: #6b7280;\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: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);\n border-left: 3px solid #3b82f6;\n}\n\n.form-card.related-entity .collapsible-header {\n background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: linear-gradient(135deg, #bfdbfe 0%, #e0f2fe 100%);\n border-bottom-color: #3b82f6;\n}\n\n.form-card.related-entity .collapsible-title i {\n color: #3b82f6;\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: linear-gradient(135deg, #f9fafb 0%, #ffffff 100%);\n border-bottom: 2px solid #e5e7eb;\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\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 #d1d5db;\n background: white;\n color: #374151;\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: #667eea;\n color: white;\n border-color: #667eea;\n transform: translateY(-1px);\n box-shadow: 0 2px 4px rgba(102, 126, 234, 0.2);\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 #d1d5db;\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: white;\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: #667eea;\n box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.1);\n}\n\n.form-section-controls .section-search::placeholder {\n color: #9ca3af;\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: #6b7280;\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: #667eea;\n color: white;\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: #fef08a;\n color: #854d0e;\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: #10b981;\n color: white;\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: #9ca3af;\n}\n"] }]
|
|
986
1703
|
}], null, null); })();
|
|
987
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ListFormComponentExtended, { className: "ListFormComponentExtended", filePath: "src/lib/custom/Lists/list-form.component.ts", lineNumber:
|
|
1704
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ListFormComponentExtended, { className: "ListFormComponentExtended", filePath: "src/lib/custom/Lists/list-form.component.ts", lineNumber: 53 }); })();
|
|
988
1705
|
export function LoadListFormComponentExtended() {
|
|
989
1706
|
// Prevents tree-shaking
|
|
990
1707
|
}
|