@memberjunction/ng-core-entity-forms 6.2.1 → 6.3.0-edge.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +5 -6
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js +3 -3
- package/dist/lib/custom/AIAgentCategories/ai-agent-category-header.panel.js.map +1 -1
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts +12 -0
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js +293 -230
- package/dist/lib/custom/AIAgentSessions/ai-agent-session-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/add-action-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/agent-prompt-advanced-settings-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts +11 -0
- package/dist/lib/custom/AIAgents/ai-agent-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js +862 -812
- package/dist/lib/custom/AIAgents/ai-agent-form.component.js.map +1 -1
- package/dist/lib/custom/AIAgents/create-prompt-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/create-sub-agent-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/new-agent-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/prompt-selector-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/sub-agent-advanced-settings-dialog.component.js +2 -2
- package/dist/lib/custom/AIAgents/sub-agent-selector-dialog.component.js +2 -2
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts +12 -0
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js +821 -763
- package/dist/lib/custom/AIPromptRuns/ai-prompt-run-form.component.js.map +1 -1
- package/dist/lib/custom/AIPromptRuns/chat-message-viewer.component.js +2 -2
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts +10 -0
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.d.ts.map +1 -1
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js +700 -605
- package/dist/lib/custom/AIPrompts/ai-prompt-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts +10 -0
- package/dist/lib/custom/Actions/action-execution-log-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-execution-log-form.component.js +223 -175
- package/dist/lib/custom/Actions/action-execution-log-form.component.js.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.d.ts +10 -0
- package/dist/lib/custom/Actions/action-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Actions/action-form.component.js +502 -453
- package/dist/lib/custom/Actions/action-form.component.js.map +1 -1
- package/dist/lib/custom/Companies/company-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Companies/company-header.panel.js +3 -3
- package/dist/lib/custom/Companies/company-header.panel.js.map +1 -1
- package/dist/lib/custom/Conversations/conversation-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Conversations/conversation-header.panel.js +3 -3
- package/dist/lib/custom/Conversations/conversation-header.panel.js.map +1 -1
- package/dist/lib/custom/Employees/employee-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Employees/employee-header.panel.js +3 -3
- package/dist/lib/custom/Employees/employee-header.panel.js.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.d.ts +15 -0
- package/dist/lib/custom/Entities/entity-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Entities/entity-form.component.js +836 -801
- package/dist/lib/custom/Entities/entity-form.component.js.map +1 -1
- package/dist/lib/custom/EntityActions/entityaction.form.component.js +2 -2
- package/dist/lib/custom/Files/file-form.component.js +2 -2
- package/dist/lib/custom/Lists/list-form.component.d.ts +5 -0
- package/dist/lib/custom/Lists/list-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Lists/list-form.component.js +355 -338
- package/dist/lib/custom/Lists/list-form.component.js.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-form.component.js +3 -3
- package/dist/lib/custom/MLModels/ml-model-form.component.js.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts +17 -35
- package/dist/lib/custom/MLModels/ml-model-view-models.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ml-model-view-models.js +55 -54
- package/dist/lib/custom/MLModels/ml-model-view-models.js.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts +7 -99
- package/dist/lib/custom/MLModels/ps-model-detail.component.d.ts.map +1 -1
- package/dist/lib/custom/MLModels/ps-model-detail.component.js +124 -303
- package/dist/lib/custom/MLModels/ps-model-detail.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.d.ts +9 -0
- package/dist/lib/custom/Queries/query-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Queries/query-form.component.js +493 -444
- package/dist/lib/custom/Queries/query-form.component.js.map +1 -1
- package/dist/lib/custom/Queries/query-run-dialog.component.js +2 -2
- package/dist/lib/custom/Templates/template-param-dialog.component.js +2 -2
- package/dist/lib/custom/Templates/templates-form.component.d.ts +9 -0
- package/dist/lib/custom/Templates/templates-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Templates/templates-form.component.js +118 -74
- package/dist/lib/custom/Templates/templates-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-form.component.js +471 -451
- package/dist/lib/custom/Tests/test-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-run-form.component.js +312 -289
- package/dist/lib/custom/Tests/test-run-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-suite-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-form.component.js +697 -677
- package/dist/lib/custom/Tests/test-suite-form.component.js.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts +5 -0
- package/dist/lib/custom/Tests/test-suite-run-form.component.d.ts.map +1 -1
- package/dist/lib/custom/Tests/test-suite-run-form.component.js +453 -433
- package/dist/lib/custom/Tests/test-suite-run-form.component.js.map +1 -1
- package/dist/lib/custom/Users/user-header.panel.d.ts.map +1 -1
- package/dist/lib/custom/Users/user-header.panel.js +3 -3
- package/dist/lib/custom/Users/user-header.panel.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts +2 -2
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.d.ts.map +1 -1
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js +30 -13
- package/dist/lib/custom/ai-agent-run/agent-run-cost-split.js.map +1 -1
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.d.ts +23 -0
- 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 +276 -216
- package/dist/lib/custom/ai-agent-run/ai-agent-run.component.js.map +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts +1 -1
- package/dist/lib/custom/custom-forms.module.d.ts.map +1 -1
- package/dist/lib/custom/custom-forms.module.js +7 -1
- package/dist/lib/custom/custom-forms.module.js.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js +32 -14
- package/dist/lib/generated/Entities/MJAIPromptRun/mjaipromptrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js +119 -95
- package/dist/lib/generated/Entities/MJAction/mjaction.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.js +124 -0
- package/dist/lib/generated/Entities/MJComment/mjcomment.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.js +99 -0
- package/dist/lib/generated/Entities/MJCommentType/mjcommenttype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js +2 -2
- package/dist/lib/generated/Entities/MJConversation/mjconversation.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.js +95 -0
- package/dist/lib/generated/Entities/MJConversationType/mjconversationtype.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.js +60 -0
- package/dist/lib/generated/Entities/MJDocumentSequenceCounter/mjdocumentsequencecounter.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js +124 -106
- package/dist/lib/generated/Entities/MJEntity/mjentity.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.js +12 -4
- package/dist/lib/generated/Entities/MJEntityFieldValue/mjentityfieldvalue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js +19 -11
- package/dist/lib/generated/Entities/MJEntityOrganicKey/mjentityorganickey.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.js +62 -0
- package/dist/lib/generated/Entities/MJEntityUniqueKey/mjentityuniquekey.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js +26 -12
- package/dist/lib/generated/Entities/MJFeatureValue/mjfeaturevalue.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.js +140 -0
- package/dist/lib/generated/Entities/MJFieldSuggestion/mjfieldsuggestion.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js +69 -15
- package/dist/lib/generated/Entities/MJFile/mjfile.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js +31 -13
- package/dist/lib/generated/Entities/MJFileStorageProvider/mjfilestorageprovider.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.js +205 -0
- package/dist/lib/generated/Entities/MJMLEvaluationProtocol/mjmlevaluationprotocol.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js +24 -6
- package/dist/lib/generated/Entities/MJMLModel/mjmlmodel.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.js +173 -0
- package/dist/lib/generated/Entities/MJMLPredictionUnit/mjmlpredictionunit.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js +46 -24
- package/dist/lib/generated/Entities/MJMLTrainingPipeline/mjmltrainingpipeline.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js +22 -14
- package/dist/lib/generated/Entities/MJMLTrainingRun/mjmltrainingrun.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.d.ts +10 -0
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.d.ts.map +1 -0
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.js +175 -0
- package/dist/lib/generated/Entities/MJMLTrainingSnapshot/mjmltrainingsnapshot.form.component.js.map +1 -0
- package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.form.component.js +8 -6
- package/dist/lib/generated/Entities/MJQueryField/mjqueryfield.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js +44 -36
- package/dist/lib/generated/Entities/MJRecordProcess/mjrecordprocess.form.component.js.map +1 -1
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.d.ts.map +1 -1
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js +54 -32
- package/dist/lib/generated/Entities/MJTask/mjtask.form.component.js.map +1 -1
- package/dist/lib/generated/generated-forms.module.d.ts +452 -443
- package/dist/lib/generated/generated-forms.module.d.ts.map +1 -1
- package/dist/lib/generated/generated-forms.module.js +27 -0
- package/dist/lib/generated/generated-forms.module.js.map +1 -1
- package/dist/lib/panels/feature-values/feature-values.panel.js +1 -1
- package/dist/lib/panels/feature-values/feature-values.panel.js.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.d.ts.map +1 -1
- package/dist/lib/panels/model-predictions/model-prediction.logic.js.map +1 -1
- package/dist/lib/shared/components/template-editor.component.js +2 -2
- package/dist/lib/shared/phone-hero.d.ts +17 -0
- package/dist/lib/shared/phone-hero.d.ts.map +1 -0
- package/dist/lib/shared/phone-hero.js +30 -0
- package/dist/lib/shared/phone-hero.js.map +1 -0
- package/dist/lib/shared/phone-sections-state.d.ts +28 -0
- package/dist/lib/shared/phone-sections-state.d.ts.map +1 -0
- package/dist/lib/shared/phone-sections-state.js +38 -0
- package/dist/lib/shared/phone-sections-state.js.map +1 -0
- package/package.json +50 -50
|
@@ -22,16 +22,16 @@ import * as i5 from "@memberjunction/ng-list-management";
|
|
|
22
22
|
import * as i6 from "@angular/common";
|
|
23
23
|
function MJListFormComponentExtended_Conditional_7_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
24
24
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
25
|
-
i0.ɵɵelementStart(0, "button",
|
|
25
|
+
i0.ɵɵelementStart(0, "button", 27);
|
|
26
26
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_7_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r1); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.startEditingName()); });
|
|
27
|
-
i0.ɵɵelement(1, "i",
|
|
27
|
+
i0.ɵɵelement(1, "i", 28);
|
|
28
28
|
i0.ɵɵelementEnd();
|
|
29
29
|
} }
|
|
30
30
|
function MJListFormComponentExtended_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
31
|
-
i0.ɵɵelementStart(0, "h1",
|
|
31
|
+
i0.ɵɵelementStart(0, "h1", 25);
|
|
32
32
|
i0.ɵɵtext(1);
|
|
33
33
|
i0.ɵɵelementEnd();
|
|
34
|
-
i0.ɵɵconditionalCreate(2, MJListFormComponentExtended_Conditional_7_Conditional_2_Template, 2, 0, "button",
|
|
34
|
+
i0.ɵɵconditionalCreate(2, MJListFormComponentExtended_Conditional_7_Conditional_2_Template, 2, 0, "button", 26);
|
|
35
35
|
} if (rf & 2) {
|
|
36
36
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
37
37
|
i0.ɵɵadvance();
|
|
@@ -41,24 +41,24 @@ function MJListFormComponentExtended_Conditional_7_Template(rf, ctx) { if (rf &
|
|
|
41
41
|
} }
|
|
42
42
|
function MJListFormComponentExtended_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
43
43
|
const _r3 = i0.ɵɵgetCurrentView();
|
|
44
|
-
i0.ɵɵelementStart(0, "input",
|
|
44
|
+
i0.ɵɵelementStart(0, "input", 29, 0);
|
|
45
45
|
i0.ɵɵtwoWayListener("ngModelChange", function MJListFormComponentExtended_Conditional_8_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r1.editingName, $event) || (ctx_r1.editingName = $event); return i0.ɵɵresetView($event); });
|
|
46
46
|
i0.ɵɵlistener("keydown.enter", function MJListFormComponentExtended_Conditional_8_Template_input_keydown_enter_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.saveNameEdit()); })("keydown.escape", function MJListFormComponentExtended_Conditional_8_Template_input_keydown_escape_0_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancelNameEdit()); });
|
|
47
47
|
i0.ɵɵelementEnd();
|
|
48
|
-
i0.ɵɵelementStart(2, "button",
|
|
48
|
+
i0.ɵɵelementStart(2, "button", 30);
|
|
49
49
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_8_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.saveNameEdit()); });
|
|
50
|
-
i0.ɵɵelement(3, "i",
|
|
50
|
+
i0.ɵɵelement(3, "i", 31);
|
|
51
51
|
i0.ɵɵelementEnd();
|
|
52
|
-
i0.ɵɵelementStart(4, "button",
|
|
52
|
+
i0.ɵɵelementStart(4, "button", 32);
|
|
53
53
|
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_8_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r3); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.cancelNameEdit()); });
|
|
54
|
-
i0.ɵɵelement(5, "i",
|
|
54
|
+
i0.ɵɵelement(5, "i", 33);
|
|
55
55
|
i0.ɵɵelementEnd();
|
|
56
56
|
} if (rf & 2) {
|
|
57
57
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
58
58
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.editingName);
|
|
59
59
|
} }
|
|
60
|
-
function
|
|
61
|
-
i0.ɵɵelementStart(0, "span",
|
|
60
|
+
function MJListFormComponentExtended_For_32_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
61
|
+
i0.ɵɵelementStart(0, "span", 36);
|
|
62
62
|
i0.ɵɵtext(1);
|
|
63
63
|
i0.ɵɵelementEnd();
|
|
64
64
|
} if (rf & 2) {
|
|
@@ -66,15 +66,15 @@ function MJListFormComponentExtended_For_31_Conditional_4_Template(rf, ctx) { if
|
|
|
66
66
|
i0.ɵɵadvance();
|
|
67
67
|
i0.ɵɵtextInterpolate(nav_r5.badge);
|
|
68
68
|
} }
|
|
69
|
-
function
|
|
69
|
+
function MJListFormComponentExtended_For_32_Template(rf, ctx) { if (rf & 1) {
|
|
70
70
|
const _r4 = i0.ɵɵgetCurrentView();
|
|
71
|
-
i0.ɵɵelementStart(0, "button",
|
|
72
|
-
i0.ɵɵlistener("click", function
|
|
71
|
+
i0.ɵɵelementStart(0, "button", 34);
|
|
72
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_For_32_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)); });
|
|
73
73
|
i0.ɵɵelement(1, "i");
|
|
74
|
-
i0.ɵɵelementStart(2, "span",
|
|
74
|
+
i0.ɵɵelementStart(2, "span", 35);
|
|
75
75
|
i0.ɵɵtext(3);
|
|
76
76
|
i0.ɵɵelementEnd();
|
|
77
|
-
i0.ɵɵconditionalCreate(4,
|
|
77
|
+
i0.ɵɵconditionalCreate(4, MJListFormComponentExtended_For_32_Conditional_4_Template, 2, 1, "span", 36);
|
|
78
78
|
i0.ɵɵelementEnd();
|
|
79
79
|
} if (rf & 2) {
|
|
80
80
|
const nav_r5 = ctx.$implicit;
|
|
@@ -88,15 +88,15 @@ function MJListFormComponentExtended_For_31_Template(rf, ctx) { if (rf & 1) {
|
|
|
88
88
|
i0.ɵɵadvance();
|
|
89
89
|
i0.ɵɵconditional(nav_r5.badge && nav_r5.badge > 0 ? 4 : -1);
|
|
90
90
|
} }
|
|
91
|
-
function
|
|
91
|
+
function MJListFormComponentExtended_Conditional_34_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
92
92
|
const _r7 = i0.ɵɵgetCurrentView();
|
|
93
|
-
i0.ɵɵelementStart(0, "button",
|
|
94
|
-
i0.ɵɵlistener("click", function
|
|
95
|
-
i0.ɵɵelement(1, "i",
|
|
93
|
+
i0.ɵɵelementStart(0, "button", 62);
|
|
94
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_34_Conditional_7_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.startEditingDescription()); });
|
|
95
|
+
i0.ɵɵelement(1, "i", 28);
|
|
96
96
|
i0.ɵɵelementEnd();
|
|
97
97
|
} }
|
|
98
|
-
function
|
|
99
|
-
i0.ɵɵelementStart(0, "p",
|
|
98
|
+
function MJListFormComponentExtended_Conditional_34_Conditional_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
|
|
99
|
+
i0.ɵɵelementStart(0, "p", 63);
|
|
100
100
|
i0.ɵɵtext(1);
|
|
101
101
|
i0.ɵɵelementEnd();
|
|
102
102
|
} if (rf & 2) {
|
|
@@ -104,41 +104,41 @@ function MJListFormComponentExtended_Conditional_33_Conditional_9_Conditional_0_
|
|
|
104
104
|
i0.ɵɵadvance();
|
|
105
105
|
i0.ɵɵtextInterpolate(ctx_r1.record.Description);
|
|
106
106
|
} }
|
|
107
|
-
function
|
|
108
|
-
i0.ɵɵelementStart(0, "p",
|
|
107
|
+
function MJListFormComponentExtended_Conditional_34_Conditional_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
108
|
+
i0.ɵɵelementStart(0, "p", 64);
|
|
109
109
|
i0.ɵɵtext(1, "No description provided");
|
|
110
110
|
i0.ɵɵelementEnd();
|
|
111
111
|
} }
|
|
112
|
-
function
|
|
113
|
-
i0.ɵɵconditionalCreate(0,
|
|
114
|
-
i0.ɵɵconditionalCreate(1,
|
|
112
|
+
function MJListFormComponentExtended_Conditional_34_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
113
|
+
i0.ɵɵconditionalCreate(0, MJListFormComponentExtended_Conditional_34_Conditional_9_Conditional_0_Template, 2, 1, "p", 63);
|
|
114
|
+
i0.ɵɵconditionalCreate(1, MJListFormComponentExtended_Conditional_34_Conditional_9_Conditional_1_Template, 2, 0, "p", 64);
|
|
115
115
|
} if (rf & 2) {
|
|
116
116
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
117
117
|
i0.ɵɵconditional(ctx_r1.record.Description ? 0 : -1);
|
|
118
118
|
i0.ɵɵadvance();
|
|
119
119
|
i0.ɵɵconditional(!ctx_r1.record.Description ? 1 : -1);
|
|
120
120
|
} }
|
|
121
|
-
function
|
|
121
|
+
function MJListFormComponentExtended_Conditional_34_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
122
122
|
const _r8 = i0.ɵɵgetCurrentView();
|
|
123
|
-
i0.ɵɵelementStart(0, "textarea",
|
|
124
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
125
|
-
i0.ɵɵlistener("keydown.escape", function
|
|
123
|
+
i0.ɵɵelementStart(0, "textarea", 65);
|
|
124
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJListFormComponentExtended_Conditional_34_Conditional_10_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.editingDescription, $event) || (ctx_r1.editingDescription = $event); return i0.ɵɵresetView($event); });
|
|
125
|
+
i0.ɵɵlistener("keydown.escape", function MJListFormComponentExtended_Conditional_34_Conditional_10_Template_textarea_keydown_escape_0_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.cancelDescriptionEdit()); });
|
|
126
126
|
i0.ɵɵelementEnd();
|
|
127
|
-
i0.ɵɵelementStart(1, "div",
|
|
128
|
-
i0.ɵɵlistener("click", function
|
|
127
|
+
i0.ɵɵelementStart(1, "div", 66)(2, "button", 67);
|
|
128
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_34_Conditional_10_Template_button_click_2_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.saveDescriptionEdit()); });
|
|
129
129
|
i0.ɵɵtext(3, "Save");
|
|
130
130
|
i0.ɵɵelementEnd();
|
|
131
|
-
i0.ɵɵelementStart(4, "button",
|
|
132
|
-
i0.ɵɵlistener("click", function
|
|
131
|
+
i0.ɵɵelementStart(4, "button", 68);
|
|
132
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_34_Conditional_10_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r8); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.cancelDescriptionEdit()); });
|
|
133
133
|
i0.ɵɵtext(5, "Cancel");
|
|
134
134
|
i0.ɵɵelementEnd()();
|
|
135
135
|
} if (rf & 2) {
|
|
136
136
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
137
137
|
i0.ɵɵtwoWayProperty("ngModel", ctx_r1.editingDescription);
|
|
138
138
|
} }
|
|
139
|
-
function
|
|
140
|
-
i0.ɵɵelementStart(0, "span",
|
|
141
|
-
i0.ɵɵelement(1, "i",
|
|
139
|
+
function MJListFormComponentExtended_Conditional_34_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
140
|
+
i0.ɵɵelementStart(0, "span", 47);
|
|
141
|
+
i0.ɵɵelement(1, "i", 69);
|
|
142
142
|
i0.ɵɵtext(2);
|
|
143
143
|
i0.ɵɵelementEnd();
|
|
144
144
|
} if (rf & 2) {
|
|
@@ -146,8 +146,8 @@ function MJListFormComponentExtended_Conditional_33_Conditional_26_Template(rf,
|
|
|
146
146
|
i0.ɵɵadvance(2);
|
|
147
147
|
i0.ɵɵtextInterpolate1(" ", ctx_r1.categoryName, " ");
|
|
148
148
|
} }
|
|
149
|
-
function
|
|
150
|
-
i0.ɵɵelementStart(0, "option",
|
|
149
|
+
function MJListFormComponentExtended_Conditional_34_Conditional_27_For_4_Template(rf, ctx) { if (rf & 1) {
|
|
150
|
+
i0.ɵɵelementStart(0, "option", 71);
|
|
151
151
|
i0.ɵɵtext(1);
|
|
152
152
|
i0.ɵɵelementEnd();
|
|
153
153
|
} if (rf & 2) {
|
|
@@ -156,14 +156,14 @@ function MJListFormComponentExtended_Conditional_33_Conditional_27_For_4_Templat
|
|
|
156
156
|
i0.ɵɵadvance();
|
|
157
157
|
i0.ɵɵtextInterpolate(cat_r10.Name);
|
|
158
158
|
} }
|
|
159
|
-
function
|
|
159
|
+
function MJListFormComponentExtended_Conditional_34_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
160
160
|
const _r9 = i0.ɵɵgetCurrentView();
|
|
161
|
-
i0.ɵɵelementStart(0, "select",
|
|
162
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
163
|
-
i0.ɵɵelementStart(1, "option",
|
|
161
|
+
i0.ɵɵelementStart(0, "select", 70);
|
|
162
|
+
i0.ɵɵlistener("ngModelChange", function MJListFormComponentExtended_Conditional_34_Conditional_27_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r9); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onCategoryChange($event)); });
|
|
163
|
+
i0.ɵɵelementStart(1, "option", 71);
|
|
164
164
|
i0.ɵɵtext(2, "Uncategorized");
|
|
165
165
|
i0.ɵɵelementEnd();
|
|
166
|
-
i0.ɵɵrepeaterCreate(3,
|
|
166
|
+
i0.ɵɵrepeaterCreate(3, MJListFormComponentExtended_Conditional_34_Conditional_27_For_4_Template, 2, 2, "option", 71, i0.ɵɵrepeaterTrackByIdentity);
|
|
167
167
|
i0.ɵɵelementEnd();
|
|
168
168
|
} if (rf & 2) {
|
|
169
169
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -173,13 +173,13 @@ function MJListFormComponentExtended_Conditional_33_Conditional_27_Template(rf,
|
|
|
173
173
|
i0.ɵɵadvance(2);
|
|
174
174
|
i0.ɵɵrepeater(ctx_r1.categories);
|
|
175
175
|
} }
|
|
176
|
-
function
|
|
177
|
-
i0.ɵɵelementStart(0, "span",
|
|
176
|
+
function MJListFormComponentExtended_Conditional_34_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
177
|
+
i0.ɵɵelementStart(0, "span", 51);
|
|
178
178
|
i0.ɵɵtext(1, "You");
|
|
179
179
|
i0.ɵɵelementEnd();
|
|
180
180
|
} }
|
|
181
|
-
function
|
|
182
|
-
i0.ɵɵelementStart(0, "span",
|
|
181
|
+
function MJListFormComponentExtended_Conditional_34_Conditional_54_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
182
|
+
i0.ɵɵelementStart(0, "span", 57);
|
|
183
183
|
i0.ɵɵtext(1);
|
|
184
184
|
i0.ɵɵelementEnd();
|
|
185
185
|
} if (rf & 2) {
|
|
@@ -187,96 +187,96 @@ function MJListFormComponentExtended_Conditional_33_Conditional_54_Conditional_4
|
|
|
187
187
|
i0.ɵɵadvance();
|
|
188
188
|
i0.ɵɵtextInterpolate(ctx_r1.stats.shareCount);
|
|
189
189
|
} }
|
|
190
|
-
function
|
|
190
|
+
function MJListFormComponentExtended_Conditional_34_Conditional_54_Template(rf, ctx) { if (rf & 1) {
|
|
191
191
|
const _r11 = i0.ɵɵgetCurrentView();
|
|
192
|
-
i0.ɵɵelementStart(0, "button",
|
|
193
|
-
i0.ɵɵlistener("click", function
|
|
194
|
-
i0.ɵɵelement(1, "i",
|
|
192
|
+
i0.ɵɵelementStart(0, "button", 55);
|
|
193
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_34_Conditional_54_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openShareDialog()); });
|
|
194
|
+
i0.ɵɵelement(1, "i", 72);
|
|
195
195
|
i0.ɵɵelementStart(2, "span");
|
|
196
196
|
i0.ɵɵtext(3, "Share List");
|
|
197
197
|
i0.ɵɵelementEnd();
|
|
198
|
-
i0.ɵɵconditionalCreate(4,
|
|
198
|
+
i0.ɵɵconditionalCreate(4, MJListFormComponentExtended_Conditional_34_Conditional_54_Conditional_4_Template, 2, 1, "span", 57);
|
|
199
199
|
i0.ɵɵelementEnd();
|
|
200
200
|
} if (rf & 2) {
|
|
201
201
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
202
202
|
i0.ɵɵadvance(4);
|
|
203
203
|
i0.ɵɵconditional(ctx_r1.stats.shareCount > 0 ? 4 : -1);
|
|
204
204
|
} }
|
|
205
|
-
function
|
|
205
|
+
function MJListFormComponentExtended_Conditional_34_Conditional_55_Template(rf, ctx) { if (rf & 1) {
|
|
206
206
|
const _r12 = i0.ɵɵgetCurrentView();
|
|
207
|
-
i0.ɵɵelementStart(0, "button",
|
|
208
|
-
i0.ɵɵlistener("click", function
|
|
209
|
-
i0.ɵɵelement(1, "i",
|
|
207
|
+
i0.ɵɵelementStart(0, "button", 55);
|
|
208
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_34_Conditional_55_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.setActiveSection("sharing")); });
|
|
209
|
+
i0.ɵɵelement(1, "i", 72);
|
|
210
210
|
i0.ɵɵelementStart(2, "span");
|
|
211
211
|
i0.ɵɵtext(3, "View Sharing");
|
|
212
212
|
i0.ɵɵelementEnd()();
|
|
213
213
|
} }
|
|
214
|
-
function
|
|
214
|
+
function MJListFormComponentExtended_Conditional_34_Template(rf, ctx) { if (rf & 1) {
|
|
215
215
|
const _r6 = i0.ɵɵgetCurrentView();
|
|
216
|
-
i0.ɵɵelementStart(0, "section",
|
|
217
|
-
i0.ɵɵelement(5, "i",
|
|
216
|
+
i0.ɵɵelementStart(0, "section", 16)(1, "div", 37)(2, "div", 38)(3, "div", 39)(4, "h3");
|
|
217
|
+
i0.ɵɵelement(5, "i", 40);
|
|
218
218
|
i0.ɵɵtext(6, " Description");
|
|
219
219
|
i0.ɵɵelementEnd();
|
|
220
|
-
i0.ɵɵconditionalCreate(7,
|
|
220
|
+
i0.ɵɵconditionalCreate(7, MJListFormComponentExtended_Conditional_34_Conditional_7_Template, 2, 0, "button", 41);
|
|
221
221
|
i0.ɵɵelementEnd();
|
|
222
|
-
i0.ɵɵelementStart(8, "div",
|
|
223
|
-
i0.ɵɵconditionalCreate(9,
|
|
224
|
-
i0.ɵɵconditionalCreate(10,
|
|
222
|
+
i0.ɵɵelementStart(8, "div", 42);
|
|
223
|
+
i0.ɵɵconditionalCreate(9, MJListFormComponentExtended_Conditional_34_Conditional_9_Template, 2, 2);
|
|
224
|
+
i0.ɵɵconditionalCreate(10, MJListFormComponentExtended_Conditional_34_Conditional_10_Template, 6, 1);
|
|
225
225
|
i0.ɵɵelementEnd()();
|
|
226
|
-
i0.ɵɵelementStart(11, "div",
|
|
227
|
-
i0.ɵɵelement(14, "i",
|
|
226
|
+
i0.ɵɵelementStart(11, "div", 43)(12, "div", 39)(13, "h3");
|
|
227
|
+
i0.ɵɵelement(14, "i", 44);
|
|
228
228
|
i0.ɵɵtext(15, " Details");
|
|
229
229
|
i0.ɵɵelementEnd()();
|
|
230
|
-
i0.ɵɵelementStart(16, "div",
|
|
230
|
+
i0.ɵɵelementStart(16, "div", 42)(17, "div", 45)(18, "span", 46);
|
|
231
231
|
i0.ɵɵtext(19, "Entity");
|
|
232
232
|
i0.ɵɵelementEnd();
|
|
233
|
-
i0.ɵɵelementStart(20, "span",
|
|
234
|
-
i0.ɵɵelement(21, "i",
|
|
233
|
+
i0.ɵɵelementStart(20, "span", 47);
|
|
234
|
+
i0.ɵɵelement(21, "i", 48);
|
|
235
235
|
i0.ɵɵtext(22);
|
|
236
236
|
i0.ɵɵelementEnd()();
|
|
237
|
-
i0.ɵɵelementStart(23, "div",
|
|
237
|
+
i0.ɵɵelementStart(23, "div", 45)(24, "span", 46);
|
|
238
238
|
i0.ɵɵtext(25, "Category");
|
|
239
239
|
i0.ɵɵelementEnd();
|
|
240
|
-
i0.ɵɵconditionalCreate(26,
|
|
241
|
-
i0.ɵɵconditionalCreate(27,
|
|
240
|
+
i0.ɵɵconditionalCreate(26, MJListFormComponentExtended_Conditional_34_Conditional_26_Template, 3, 1, "span", 47);
|
|
241
|
+
i0.ɵɵconditionalCreate(27, MJListFormComponentExtended_Conditional_34_Conditional_27_Template, 5, 2, "select", 49);
|
|
242
242
|
i0.ɵɵelementEnd();
|
|
243
|
-
i0.ɵɵelementStart(28, "div",
|
|
243
|
+
i0.ɵɵelementStart(28, "div", 45)(29, "span", 46);
|
|
244
244
|
i0.ɵɵtext(30, "Owner");
|
|
245
245
|
i0.ɵɵelementEnd();
|
|
246
|
-
i0.ɵɵelementStart(31, "span",
|
|
247
|
-
i0.ɵɵelement(32, "i",
|
|
246
|
+
i0.ɵɵelementStart(31, "span", 47);
|
|
247
|
+
i0.ɵɵelement(32, "i", 50);
|
|
248
248
|
i0.ɵɵtext(33);
|
|
249
|
-
i0.ɵɵconditionalCreate(34,
|
|
249
|
+
i0.ɵɵconditionalCreate(34, MJListFormComponentExtended_Conditional_34_Conditional_34_Template, 2, 0, "span", 51);
|
|
250
250
|
i0.ɵɵelementEnd()();
|
|
251
|
-
i0.ɵɵelementStart(35, "div",
|
|
251
|
+
i0.ɵɵelementStart(35, "div", 45)(36, "span", 46);
|
|
252
252
|
i0.ɵɵtext(37, "Created");
|
|
253
253
|
i0.ɵɵelementEnd();
|
|
254
|
-
i0.ɵɵelementStart(38, "span",
|
|
255
|
-
i0.ɵɵelement(39, "i",
|
|
254
|
+
i0.ɵɵelementStart(38, "span", 47);
|
|
255
|
+
i0.ɵɵelement(39, "i", 52);
|
|
256
256
|
i0.ɵɵtext(40);
|
|
257
257
|
i0.ɵɵpipe(41, "date");
|
|
258
258
|
i0.ɵɵelementEnd()()()();
|
|
259
|
-
i0.ɵɵelementStart(42, "div",
|
|
260
|
-
i0.ɵɵelement(45, "i",
|
|
259
|
+
i0.ɵɵelementStart(42, "div", 53)(43, "div", 39)(44, "h3");
|
|
260
|
+
i0.ɵɵelement(45, "i", 54);
|
|
261
261
|
i0.ɵɵtext(46, " Quick Actions");
|
|
262
262
|
i0.ɵɵelementEnd()();
|
|
263
|
-
i0.ɵɵelementStart(47, "div",
|
|
264
|
-
i0.ɵɵlistener("click", function
|
|
265
|
-
i0.ɵɵelement(49, "i",
|
|
263
|
+
i0.ɵɵelementStart(47, "div", 42)(48, "button", 55);
|
|
264
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_34_Template_button_click_48_listener() { i0.ɵɵrestoreView(_r6); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.setActiveSection("items")); });
|
|
265
|
+
i0.ɵɵelement(49, "i", 56);
|
|
266
266
|
i0.ɵɵelementStart(50, "span");
|
|
267
267
|
i0.ɵɵtext(51, "View Items");
|
|
268
268
|
i0.ɵɵelementEnd();
|
|
269
|
-
i0.ɵɵelementStart(52, "span",
|
|
269
|
+
i0.ɵɵelementStart(52, "span", 57);
|
|
270
270
|
i0.ɵɵtext(53);
|
|
271
271
|
i0.ɵɵelementEnd()();
|
|
272
|
-
i0.ɵɵconditionalCreate(54,
|
|
273
|
-
i0.ɵɵconditionalCreate(55,
|
|
274
|
-
i0.ɵɵelementStart(56, "button",
|
|
275
|
-
i0.ɵɵelement(57, "i",
|
|
272
|
+
i0.ɵɵconditionalCreate(54, MJListFormComponentExtended_Conditional_34_Conditional_54_Template, 5, 1, "button", 58);
|
|
273
|
+
i0.ɵɵconditionalCreate(55, MJListFormComponentExtended_Conditional_34_Conditional_55_Template, 4, 0, "button", 58);
|
|
274
|
+
i0.ɵɵelementStart(56, "button", 59);
|
|
275
|
+
i0.ɵɵelement(57, "i", 60);
|
|
276
276
|
i0.ɵɵelementStart(58, "span");
|
|
277
277
|
i0.ɵɵtext(59, "Export Data");
|
|
278
278
|
i0.ɵɵelementEnd();
|
|
279
|
-
i0.ɵɵelementStart(60, "span",
|
|
279
|
+
i0.ɵɵelementStart(60, "span", 61);
|
|
280
280
|
i0.ɵɵtext(61, "Soon");
|
|
281
281
|
i0.ɵɵelementEnd()()()()()();
|
|
282
282
|
} if (rf & 2) {
|
|
@@ -310,38 +310,38 @@ function MJListFormComponentExtended_Conditional_33_Template(rf, ctx) { if (rf &
|
|
|
310
310
|
i0.ɵɵadvance();
|
|
311
311
|
i0.ɵɵproperty("disabled", true);
|
|
312
312
|
} }
|
|
313
|
-
function
|
|
313
|
+
function MJListFormComponentExtended_Conditional_35_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
314
314
|
const _r14 = i0.ɵɵgetCurrentView();
|
|
315
|
-
i0.ɵɵelementStart(0, "div",
|
|
316
|
-
i0.ɵɵlistener("click", function
|
|
317
|
-
i0.ɵɵelement(2, "i",
|
|
315
|
+
i0.ɵɵelementStart(0, "div", 78)(1, "button", 84);
|
|
316
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_35_Conditional_8_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openAddRecordsDialog()); });
|
|
317
|
+
i0.ɵɵelement(2, "i", 85);
|
|
318
318
|
i0.ɵɵtext(3, " Add Records ");
|
|
319
319
|
i0.ɵɵelementEnd();
|
|
320
|
-
i0.ɵɵelementStart(4, "button",
|
|
321
|
-
i0.ɵɵlistener("click", function
|
|
322
|
-
i0.ɵɵelement(5, "i",
|
|
320
|
+
i0.ɵɵelementStart(4, "button", 86);
|
|
321
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_35_Conditional_8_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r14); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openAddFromViewDialog()); });
|
|
322
|
+
i0.ɵɵelement(5, "i", 87);
|
|
323
323
|
i0.ɵɵtext(6, " Add From View ");
|
|
324
324
|
i0.ɵɵelementEnd()();
|
|
325
325
|
} }
|
|
326
|
-
function
|
|
327
|
-
i0.ɵɵelementStart(0, "div",
|
|
328
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
326
|
+
function MJListFormComponentExtended_Conditional_35_Conditional_11_Template(rf, ctx) { if (rf & 1) {
|
|
327
|
+
i0.ɵɵelementStart(0, "div", 81);
|
|
328
|
+
i0.ɵɵelement(1, "mj-loading", 88);
|
|
329
329
|
i0.ɵɵelementEnd();
|
|
330
330
|
} }
|
|
331
|
-
function
|
|
332
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
331
|
+
function MJListFormComponentExtended_Conditional_35_Conditional_12_Template(rf, ctx) { if (rf & 1) {
|
|
332
|
+
i0.ɵɵelement(0, "mj-empty-state", 82);
|
|
333
333
|
} if (rf & 2) {
|
|
334
334
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
335
335
|
i0.ɵɵproperty("Message", "This list doesn't have any items. Add records from the " + ctx_r1.entityDisplayName + " entity.");
|
|
336
336
|
} }
|
|
337
|
-
function
|
|
337
|
+
function MJListFormComponentExtended_Conditional_35_Conditional_13_Conditional_1_Template(rf, ctx) { if (rf & 1) {
|
|
338
338
|
const _r16 = i0.ɵɵgetCurrentView();
|
|
339
|
-
i0.ɵɵelementStart(0, "div",
|
|
339
|
+
i0.ɵɵelementStart(0, "div", 89)(1, "span", 101);
|
|
340
340
|
i0.ɵɵtext(2);
|
|
341
341
|
i0.ɵɵelementEnd();
|
|
342
|
-
i0.ɵɵelementStart(3, "button",
|
|
343
|
-
i0.ɵɵlistener("click", function
|
|
344
|
-
i0.ɵɵelement(4, "i",
|
|
342
|
+
i0.ɵɵelementStart(3, "button", 102);
|
|
343
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_35_Conditional_13_Conditional_1_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r16); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.removeSelectedItems()); });
|
|
344
|
+
i0.ɵɵelement(4, "i", 103);
|
|
345
345
|
i0.ɵɵtext(5, " Remove from List ");
|
|
346
346
|
i0.ɵɵelementEnd()();
|
|
347
347
|
} if (rf & 2) {
|
|
@@ -349,31 +349,31 @@ function MJListFormComponentExtended_Conditional_34_Conditional_13_Conditional_1
|
|
|
349
349
|
i0.ɵɵadvance(2);
|
|
350
350
|
i0.ɵɵtextInterpolate1("", ctx_r1.selectedItems.size, " selected");
|
|
351
351
|
} }
|
|
352
|
-
function
|
|
353
|
-
i0.ɵɵelement(0, "i",
|
|
352
|
+
function MJListFormComponentExtended_Conditional_35_Conditional_13_For_16_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
353
|
+
i0.ɵɵelement(0, "i", 106);
|
|
354
354
|
} }
|
|
355
|
-
function
|
|
355
|
+
function MJListFormComponentExtended_Conditional_35_Conditional_13_For_16_Template(rf, ctx) { if (rf & 1) {
|
|
356
356
|
const _r17 = i0.ɵɵgetCurrentView();
|
|
357
|
-
i0.ɵɵelementStart(0, "tr")(1, "td",
|
|
358
|
-
i0.ɵɵlistener("change", function
|
|
357
|
+
i0.ɵɵelementStart(0, "tr")(1, "td", 91)(2, "input", 92);
|
|
358
|
+
i0.ɵɵlistener("change", function MJListFormComponentExtended_Conditional_35_Conditional_13_For_16_Template_input_change_2_listener() { const item_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.toggleItemSelection(item_r18)); });
|
|
359
359
|
i0.ɵɵelementEnd()();
|
|
360
|
-
i0.ɵɵelementStart(3, "td",
|
|
361
|
-
i0.ɵɵelement(5, "i",
|
|
360
|
+
i0.ɵɵelementStart(3, "td", 93)(4, "div", 104);
|
|
361
|
+
i0.ɵɵelement(5, "i", 105);
|
|
362
362
|
i0.ɵɵelementStart(6, "span");
|
|
363
363
|
i0.ɵɵtext(7);
|
|
364
364
|
i0.ɵɵelementEnd();
|
|
365
|
-
i0.ɵɵconditionalCreate(8,
|
|
365
|
+
i0.ɵɵconditionalCreate(8, MJListFormComponentExtended_Conditional_35_Conditional_13_For_16_Conditional_8_Template, 1, 0, "i", 106);
|
|
366
366
|
i0.ɵɵelementEnd()();
|
|
367
|
-
i0.ɵɵelementStart(9, "td",
|
|
367
|
+
i0.ɵɵelementStart(9, "td", 94)(10, "code", 107);
|
|
368
368
|
i0.ɵɵtext(11);
|
|
369
369
|
i0.ɵɵelementEnd()();
|
|
370
|
-
i0.ɵɵelementStart(12, "td",
|
|
370
|
+
i0.ɵɵelementStart(12, "td", 95);
|
|
371
371
|
i0.ɵɵtext(13);
|
|
372
372
|
i0.ɵɵpipe(14, "date");
|
|
373
373
|
i0.ɵɵelementEnd();
|
|
374
|
-
i0.ɵɵelementStart(15, "td",
|
|
375
|
-
i0.ɵɵlistener("click", function
|
|
376
|
-
i0.ɵɵelement(17, "i",
|
|
374
|
+
i0.ɵɵelementStart(15, "td", 96)(16, "button", 108);
|
|
375
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_35_Conditional_13_For_16_Template_button_click_16_listener() { const item_r18 = i0.ɵɵrestoreView(_r17).$implicit; const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.openRecord(item_r18)); });
|
|
376
|
+
i0.ɵɵelement(17, "i", 109);
|
|
377
377
|
i0.ɵɵelementEnd()()();
|
|
378
378
|
} if (rf & 2) {
|
|
379
379
|
const item_r18 = ctx.$implicit;
|
|
@@ -394,18 +394,18 @@ function MJListFormComponentExtended_Conditional_34_Conditional_13_For_16_Templa
|
|
|
394
394
|
i0.ɵɵadvance(2);
|
|
395
395
|
i0.ɵɵtextInterpolate1(" ", i0.ɵɵpipeBind2(14, 11, item_r18.detail.__mj_CreatedAt, "shortDate"), " ");
|
|
396
396
|
} }
|
|
397
|
-
function
|
|
397
|
+
function MJListFormComponentExtended_Conditional_35_Conditional_13_Conditional_20_Template(rf, ctx) { if (rf & 1) {
|
|
398
398
|
const _r19 = i0.ɵɵgetCurrentView();
|
|
399
|
-
i0.ɵɵelementStart(0, "div",
|
|
400
|
-
i0.ɵɵlistener("click", function
|
|
401
|
-
i0.ɵɵelement(2, "i",
|
|
399
|
+
i0.ɵɵelementStart(0, "div", 100)(1, "button", 110);
|
|
400
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_35_Conditional_13_Conditional_20_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.goToPage(ctx_r1.itemsPage - 1)); });
|
|
401
|
+
i0.ɵɵelement(2, "i", 111);
|
|
402
402
|
i0.ɵɵelementEnd();
|
|
403
|
-
i0.ɵɵelementStart(3, "span",
|
|
403
|
+
i0.ɵɵelementStart(3, "span", 112);
|
|
404
404
|
i0.ɵɵtext(4);
|
|
405
405
|
i0.ɵɵelementEnd();
|
|
406
|
-
i0.ɵɵelementStart(5, "button",
|
|
407
|
-
i0.ɵɵlistener("click", function
|
|
408
|
-
i0.ɵɵelement(6, "i",
|
|
406
|
+
i0.ɵɵelementStart(5, "button", 113);
|
|
407
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_35_Conditional_13_Conditional_20_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r19); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.goToPage(ctx_r1.itemsPage + 1)); });
|
|
408
|
+
i0.ɵɵelement(6, "i", 114);
|
|
409
409
|
i0.ɵɵelementEnd()();
|
|
410
410
|
} if (rf & 2) {
|
|
411
411
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -416,31 +416,31 @@ function MJListFormComponentExtended_Conditional_34_Conditional_13_Conditional_2
|
|
|
416
416
|
i0.ɵɵadvance();
|
|
417
417
|
i0.ɵɵproperty("disabled", ctx_r1.itemsPage >= ctx_r1.totalPages - 1);
|
|
418
418
|
} }
|
|
419
|
-
function
|
|
419
|
+
function MJListFormComponentExtended_Conditional_35_Conditional_13_Template(rf, ctx) { if (rf & 1) {
|
|
420
420
|
const _r15 = i0.ɵɵgetCurrentView();
|
|
421
|
-
i0.ɵɵelementStart(0, "div",
|
|
422
|
-
i0.ɵɵconditionalCreate(1,
|
|
423
|
-
i0.ɵɵelementStart(2, "table",
|
|
424
|
-
i0.ɵɵlistener("change", function
|
|
421
|
+
i0.ɵɵelementStart(0, "div", 83);
|
|
422
|
+
i0.ɵɵconditionalCreate(1, MJListFormComponentExtended_Conditional_35_Conditional_13_Conditional_1_Template, 6, 1, "div", 89);
|
|
423
|
+
i0.ɵɵelementStart(2, "table", 90)(3, "thead")(4, "tr")(5, "th", 91)(6, "input", 92);
|
|
424
|
+
i0.ɵɵlistener("change", function MJListFormComponentExtended_Conditional_35_Conditional_13_Template_input_change_6_listener() { i0.ɵɵrestoreView(_r15); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.toggleSelectAll()); });
|
|
425
425
|
i0.ɵɵelementEnd()();
|
|
426
|
-
i0.ɵɵelementStart(7, "th",
|
|
426
|
+
i0.ɵɵelementStart(7, "th", 93);
|
|
427
427
|
i0.ɵɵtext(8, "Name");
|
|
428
428
|
i0.ɵɵelementEnd();
|
|
429
|
-
i0.ɵɵelementStart(9, "th",
|
|
429
|
+
i0.ɵɵelementStart(9, "th", 94);
|
|
430
430
|
i0.ɵɵtext(10, "Record ID");
|
|
431
431
|
i0.ɵɵelementEnd();
|
|
432
|
-
i0.ɵɵelementStart(11, "th",
|
|
432
|
+
i0.ɵɵelementStart(11, "th", 95);
|
|
433
433
|
i0.ɵɵtext(12, "Added");
|
|
434
434
|
i0.ɵɵelementEnd();
|
|
435
|
-
i0.ɵɵelement(13, "th",
|
|
435
|
+
i0.ɵɵelement(13, "th", 96);
|
|
436
436
|
i0.ɵɵelementEnd()();
|
|
437
437
|
i0.ɵɵelementStart(14, "tbody");
|
|
438
|
-
i0.ɵɵrepeaterCreate(15,
|
|
438
|
+
i0.ɵɵrepeaterCreate(15, MJListFormComponentExtended_Conditional_35_Conditional_13_For_16_Template, 18, 14, "tr", 97, i0.ɵɵrepeaterTrackByIdentity);
|
|
439
439
|
i0.ɵɵelementEnd()();
|
|
440
|
-
i0.ɵɵelementStart(17, "div",
|
|
440
|
+
i0.ɵɵelementStart(17, "div", 98)(18, "span", 99);
|
|
441
441
|
i0.ɵɵtext(19);
|
|
442
442
|
i0.ɵɵelementEnd();
|
|
443
|
-
i0.ɵɵconditionalCreate(20,
|
|
443
|
+
i0.ɵɵconditionalCreate(20, MJListFormComponentExtended_Conditional_35_Conditional_13_Conditional_20_Template, 7, 4, "div", 100);
|
|
444
444
|
i0.ɵɵelementEnd()();
|
|
445
445
|
} if (rf & 2) {
|
|
446
446
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -455,24 +455,24 @@ function MJListFormComponentExtended_Conditional_34_Conditional_13_Template(rf,
|
|
|
455
455
|
i0.ɵɵadvance();
|
|
456
456
|
i0.ɵɵconditional(ctx_r1.totalPages > 1 ? 20 : -1);
|
|
457
457
|
} }
|
|
458
|
-
function
|
|
458
|
+
function MJListFormComponentExtended_Conditional_35_Template(rf, ctx) { if (rf & 1) {
|
|
459
459
|
const _r13 = i0.ɵɵgetCurrentView();
|
|
460
|
-
i0.ɵɵelementStart(0, "section",
|
|
460
|
+
i0.ɵɵelementStart(0, "section", 17)(1, "div", 73)(2, "h2");
|
|
461
461
|
i0.ɵɵtext(3, "List Items");
|
|
462
462
|
i0.ɵɵelementEnd();
|
|
463
|
-
i0.ɵɵelementStart(4, "div",
|
|
464
|
-
i0.ɵɵelement(6, "i",
|
|
465
|
-
i0.ɵɵelementStart(7, "input",
|
|
466
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
463
|
+
i0.ɵɵelementStart(4, "div", 74)(5, "div", 75);
|
|
464
|
+
i0.ɵɵelement(6, "i", 76);
|
|
465
|
+
i0.ɵɵelementStart(7, "input", 77);
|
|
466
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJListFormComponentExtended_Conditional_35_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); });
|
|
467
467
|
i0.ɵɵelementEnd()();
|
|
468
|
-
i0.ɵɵconditionalCreate(8,
|
|
469
|
-
i0.ɵɵelementStart(9, "button",
|
|
470
|
-
i0.ɵɵlistener("click", function
|
|
471
|
-
i0.ɵɵelement(10, "i",
|
|
468
|
+
i0.ɵɵconditionalCreate(8, MJListFormComponentExtended_Conditional_35_Conditional_8_Template, 7, 0, "div", 78);
|
|
469
|
+
i0.ɵɵelementStart(9, "button", 79);
|
|
470
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_35_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r13); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.refreshItems()); });
|
|
471
|
+
i0.ɵɵelement(10, "i", 80);
|
|
472
472
|
i0.ɵɵelementEnd()()();
|
|
473
|
-
i0.ɵɵconditionalCreate(11,
|
|
474
|
-
i0.ɵɵconditionalCreate(12,
|
|
475
|
-
i0.ɵɵconditionalCreate(13,
|
|
473
|
+
i0.ɵɵconditionalCreate(11, MJListFormComponentExtended_Conditional_35_Conditional_11_Template, 2, 0, "div", 81);
|
|
474
|
+
i0.ɵɵconditionalCreate(12, MJListFormComponentExtended_Conditional_35_Conditional_12_Template, 1, 1, "mj-empty-state", 82);
|
|
475
|
+
i0.ɵɵconditionalCreate(13, MJListFormComponentExtended_Conditional_35_Conditional_13_Template, 21, 5, "div", 83);
|
|
476
476
|
i0.ɵɵelementEnd();
|
|
477
477
|
} if (rf & 2) {
|
|
478
478
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -487,22 +487,22 @@ function MJListFormComponentExtended_Conditional_34_Template(rf, ctx) { if (rf &
|
|
|
487
487
|
i0.ɵɵadvance();
|
|
488
488
|
i0.ɵɵconditional(!ctx_r1.isLoadingItems && ctx_r1.listItems.length > 0 ? 13 : -1);
|
|
489
489
|
} }
|
|
490
|
-
function
|
|
490
|
+
function MJListFormComponentExtended_Conditional_36_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
491
491
|
const _r20 = i0.ɵɵgetCurrentView();
|
|
492
|
-
i0.ɵɵelementStart(0, "div",
|
|
493
|
-
i0.ɵɵlistener("click", function
|
|
494
|
-
i0.ɵɵelement(2, "i",
|
|
492
|
+
i0.ɵɵelementStart(0, "div", 74)(1, "button", 67);
|
|
493
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_36_Conditional_4_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r20); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openShareDialog()); });
|
|
494
|
+
i0.ɵɵelement(2, "i", 118);
|
|
495
495
|
i0.ɵɵtext(3, " Manage Sharing ");
|
|
496
496
|
i0.ɵɵelementEnd()();
|
|
497
497
|
} }
|
|
498
|
-
function
|
|
499
|
-
i0.ɵɵelementStart(0, "div",
|
|
500
|
-
i0.ɵɵelement(2, "i",
|
|
498
|
+
function MJListFormComponentExtended_Conditional_36_Conditional_5_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
499
|
+
i0.ɵɵelementStart(0, "div", 119)(1, "div", 125);
|
|
500
|
+
i0.ɵɵelement(2, "i", 126);
|
|
501
501
|
i0.ɵɵelementEnd();
|
|
502
|
-
i0.ɵɵelementStart(3, "div",
|
|
502
|
+
i0.ɵɵelementStart(3, "div", 122)(4, "span", 123);
|
|
503
503
|
i0.ɵɵtext(5);
|
|
504
504
|
i0.ɵɵelementEnd();
|
|
505
|
-
i0.ɵɵelementStart(6, "span",
|
|
505
|
+
i0.ɵɵelementStart(6, "span", 124);
|
|
506
506
|
i0.ɵɵtext(7);
|
|
507
507
|
i0.ɵɵelementEnd()()();
|
|
508
508
|
} if (rf & 2) {
|
|
@@ -512,17 +512,17 @@ function MJListFormComponentExtended_Conditional_35_Conditional_5_Conditional_9_
|
|
|
512
512
|
i0.ɵɵadvance(2);
|
|
513
513
|
i0.ɵɵtextInterpolate1("Pending Invitation", ctx_r1.stats.invitationCount !== 1 ? "s" : "");
|
|
514
514
|
} }
|
|
515
|
-
function
|
|
516
|
-
i0.ɵɵelementStart(0, "div",
|
|
517
|
-
i0.ɵɵelement(3, "i",
|
|
515
|
+
function MJListFormComponentExtended_Conditional_36_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
516
|
+
i0.ɵɵelementStart(0, "div", 115)(1, "div", 119)(2, "div", 120);
|
|
517
|
+
i0.ɵɵelement(3, "i", 121);
|
|
518
518
|
i0.ɵɵelementEnd();
|
|
519
|
-
i0.ɵɵelementStart(4, "div",
|
|
519
|
+
i0.ɵɵelementStart(4, "div", 122)(5, "span", 123);
|
|
520
520
|
i0.ɵɵtext(6);
|
|
521
521
|
i0.ɵɵelementEnd();
|
|
522
|
-
i0.ɵɵelementStart(7, "span",
|
|
522
|
+
i0.ɵɵelementStart(7, "span", 124);
|
|
523
523
|
i0.ɵɵtext(8);
|
|
524
524
|
i0.ɵɵelementEnd()()();
|
|
525
|
-
i0.ɵɵconditionalCreate(9,
|
|
525
|
+
i0.ɵɵconditionalCreate(9, MJListFormComponentExtended_Conditional_36_Conditional_5_Conditional_9_Template, 8, 2, "div", 119);
|
|
526
526
|
i0.ɵɵelementEnd();
|
|
527
527
|
} if (rf & 2) {
|
|
528
528
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -533,31 +533,31 @@ function MJListFormComponentExtended_Conditional_35_Conditional_5_Template(rf, c
|
|
|
533
533
|
i0.ɵɵadvance();
|
|
534
534
|
i0.ɵɵconditional(ctx_r1.stats.invitationCount > 0 ? 9 : -1);
|
|
535
535
|
} }
|
|
536
|
-
function
|
|
536
|
+
function MJListFormComponentExtended_Conditional_36_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
537
537
|
const _r21 = i0.ɵɵgetCurrentView();
|
|
538
|
-
i0.ɵɵelementStart(0, "mj-empty-state",
|
|
539
|
-
i0.ɵɵlistener("Action", function
|
|
538
|
+
i0.ɵɵelementStart(0, "mj-empty-state", 127);
|
|
539
|
+
i0.ɵɵlistener("Action", function MJListFormComponentExtended_Conditional_36_Conditional_6_Template_mj_empty_state_Action_0_listener() { i0.ɵɵrestoreView(_r21); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.openShareDialog()); });
|
|
540
540
|
i0.ɵɵelementEnd();
|
|
541
541
|
} if (rf & 2) {
|
|
542
542
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
543
543
|
i0.ɵɵproperty("Message", ctx_r1.isCurrentUserOwner() ? "This list is private. Click \"Manage Sharing\" to share it with other users or roles." : "This list hasn't been shared with anyone else.")("ActionText", ctx_r1.isCurrentUserOwner() ? "Share This List" : "");
|
|
544
544
|
} }
|
|
545
|
-
function
|
|
546
|
-
i0.ɵɵelementStart(0, "div",
|
|
547
|
-
i0.ɵɵelement(1, "i",
|
|
545
|
+
function MJListFormComponentExtended_Conditional_36_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
546
|
+
i0.ɵɵelementStart(0, "div", 117);
|
|
547
|
+
i0.ɵɵelement(1, "i", 44);
|
|
548
548
|
i0.ɵɵelementStart(2, "span");
|
|
549
549
|
i0.ɵɵtext(3, "Only the list owner can manage sharing settings.");
|
|
550
550
|
i0.ɵɵelementEnd()();
|
|
551
551
|
} }
|
|
552
|
-
function
|
|
553
|
-
i0.ɵɵelementStart(0, "section",
|
|
552
|
+
function MJListFormComponentExtended_Conditional_36_Template(rf, ctx) { if (rf & 1) {
|
|
553
|
+
i0.ɵɵelementStart(0, "section", 18)(1, "div", 73)(2, "h2");
|
|
554
554
|
i0.ɵɵtext(3, "Sharing");
|
|
555
555
|
i0.ɵɵelementEnd();
|
|
556
|
-
i0.ɵɵconditionalCreate(4,
|
|
556
|
+
i0.ɵɵconditionalCreate(4, MJListFormComponentExtended_Conditional_36_Conditional_4_Template, 4, 0, "div", 74);
|
|
557
557
|
i0.ɵɵelementEnd();
|
|
558
|
-
i0.ɵɵconditionalCreate(5,
|
|
559
|
-
i0.ɵɵconditionalCreate(6,
|
|
560
|
-
i0.ɵɵconditionalCreate(7,
|
|
558
|
+
i0.ɵɵconditionalCreate(5, MJListFormComponentExtended_Conditional_36_Conditional_5_Template, 10, 3, "div", 115);
|
|
559
|
+
i0.ɵɵconditionalCreate(6, MJListFormComponentExtended_Conditional_36_Conditional_6_Template, 1, 2, "mj-empty-state", 116);
|
|
560
|
+
i0.ɵɵconditionalCreate(7, MJListFormComponentExtended_Conditional_36_Conditional_7_Template, 4, 0, "div", 117);
|
|
561
561
|
i0.ɵɵelementEnd();
|
|
562
562
|
} if (rf & 2) {
|
|
563
563
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -570,31 +570,31 @@ function MJListFormComponentExtended_Conditional_35_Template(rf, ctx) { if (rf &
|
|
|
570
570
|
i0.ɵɵadvance();
|
|
571
571
|
i0.ɵɵconditional(!ctx_r1.isCurrentUserOwner() && (ctx_r1.stats.shareCount > 0 || ctx_r1.stats.invitationCount > 0) ? 7 : -1);
|
|
572
572
|
} }
|
|
573
|
-
function
|
|
574
|
-
i0.ɵɵelementStart(0, "section",
|
|
573
|
+
function MJListFormComponentExtended_Conditional_37_Template(rf, ctx) { if (rf & 1) {
|
|
574
|
+
i0.ɵɵelementStart(0, "section", 19)(1, "div", 73)(2, "h2");
|
|
575
575
|
i0.ɵɵtext(3, "Activity");
|
|
576
576
|
i0.ɵɵelementEnd()();
|
|
577
|
-
i0.ɵɵelementStart(4, "div",
|
|
578
|
-
i0.ɵɵelement(7, "i",
|
|
577
|
+
i0.ɵɵelementStart(4, "div", 128)(5, "div", 129)(6, "div", 130);
|
|
578
|
+
i0.ɵɵelement(7, "i", 131);
|
|
579
579
|
i0.ɵɵelementEnd();
|
|
580
|
-
i0.ɵɵelementStart(8, "div",
|
|
580
|
+
i0.ɵɵelementStart(8, "div", 132)(9, "p", 133);
|
|
581
581
|
i0.ɵɵtext(10, "List updated");
|
|
582
582
|
i0.ɵɵelementEnd();
|
|
583
|
-
i0.ɵɵelementStart(11, "span",
|
|
583
|
+
i0.ɵɵelementStart(11, "span", 134);
|
|
584
584
|
i0.ɵɵtext(12);
|
|
585
585
|
i0.ɵɵpipe(13, "date");
|
|
586
586
|
i0.ɵɵelementEnd()()();
|
|
587
|
-
i0.ɵɵelementStart(14, "div",
|
|
588
|
-
i0.ɵɵelement(16, "i",
|
|
587
|
+
i0.ɵɵelementStart(14, "div", 129)(15, "div", 135);
|
|
588
|
+
i0.ɵɵelement(16, "i", 85);
|
|
589
589
|
i0.ɵɵelementEnd();
|
|
590
|
-
i0.ɵɵelementStart(17, "div",
|
|
590
|
+
i0.ɵɵelementStart(17, "div", 132)(18, "p", 133);
|
|
591
591
|
i0.ɵɵtext(19, "List created");
|
|
592
592
|
i0.ɵɵelementEnd();
|
|
593
|
-
i0.ɵɵelementStart(20, "span",
|
|
593
|
+
i0.ɵɵelementStart(20, "span", 134);
|
|
594
594
|
i0.ɵɵtext(21);
|
|
595
595
|
i0.ɵɵpipe(22, "date");
|
|
596
596
|
i0.ɵɵelementEnd()()()();
|
|
597
|
-
i0.ɵɵelementStart(23, "div",
|
|
597
|
+
i0.ɵɵelementStart(23, "div", 136)(24, "p");
|
|
598
598
|
i0.ɵɵtext(25, "Detailed activity tracking coming soon. You'll be able to see who added items, when shares were created, and more.");
|
|
599
599
|
i0.ɵɵelementEnd()()();
|
|
600
600
|
} if (rf & 2) {
|
|
@@ -604,15 +604,15 @@ function MJListFormComponentExtended_Conditional_36_Template(rf, ctx) { if (rf &
|
|
|
604
604
|
i0.ɵɵadvance(9);
|
|
605
605
|
i0.ɵɵtextInterpolate(i0.ɵɵpipeBind2(22, 5, ctx_r1.record.__mj_CreatedAt, "medium"));
|
|
606
606
|
} }
|
|
607
|
-
function
|
|
608
|
-
i0.ɵɵelementStart(0, "section",
|
|
607
|
+
function MJListFormComponentExtended_Conditional_38_Template(rf, ctx) { if (rf & 1) {
|
|
608
|
+
i0.ɵɵelementStart(0, "section", 20)(1, "div", 73)(2, "h2");
|
|
609
609
|
i0.ɵɵtext(3, "Settings");
|
|
610
610
|
i0.ɵɵelementEnd()();
|
|
611
|
-
i0.ɵɵelementStart(4, "div",
|
|
612
|
-
i0.ɵɵelement(7, "mj-form-field",
|
|
611
|
+
i0.ɵɵelementStart(4, "div", 137)(5, "mj-collapsible-panel", 138)(6, "div", 139);
|
|
612
|
+
i0.ɵɵelement(7, "mj-form-field", 140)(8, "mj-form-field", 141)(9, "mj-form-field", 142);
|
|
613
613
|
i0.ɵɵelementEnd()();
|
|
614
|
-
i0.ɵɵelementStart(10, "mj-collapsible-panel",
|
|
615
|
-
i0.ɵɵelement(12, "mj-form-field",
|
|
614
|
+
i0.ɵɵelementStart(10, "mj-collapsible-panel", 143)(11, "div", 139);
|
|
615
|
+
i0.ɵɵelement(12, "mj-form-field", 144)(13, "mj-form-field", 145)(14, "mj-form-field", 146)(15, "mj-form-field", 147);
|
|
616
616
|
i0.ɵɵelementEnd()()()();
|
|
617
617
|
} if (rf & 2) {
|
|
618
618
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
@@ -635,61 +635,61 @@ function MJListFormComponentExtended_Conditional_37_Template(rf, ctx) { if (rf &
|
|
|
635
635
|
i0.ɵɵadvance();
|
|
636
636
|
i0.ɵɵproperty("Record", ctx_r1.record)("ShowLabel", true)("EditMode", false)("FormContext", ctx_r1.formContext);
|
|
637
637
|
} }
|
|
638
|
-
function
|
|
639
|
-
i0.ɵɵelementStart(0, "div",
|
|
640
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
638
|
+
function MJListFormComponentExtended_Conditional_39_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
639
|
+
i0.ɵɵelementStart(0, "div", 150);
|
|
640
|
+
i0.ɵɵelement(1, "mj-loading", 153);
|
|
641
641
|
i0.ɵɵelementEnd();
|
|
642
642
|
} if (rf & 2) {
|
|
643
643
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
644
644
|
i0.ɵɵadvance();
|
|
645
645
|
i0.ɵɵproperty("text", "Adding " + ctx_r1.addTotal + " records to list...");
|
|
646
646
|
} }
|
|
647
|
-
function
|
|
648
|
-
i0.ɵɵelementStart(0, "div",
|
|
649
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
647
|
+
function MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_7_Template(rf, ctx) { if (rf & 1) {
|
|
648
|
+
i0.ɵɵelementStart(0, "div", 160);
|
|
649
|
+
i0.ɵɵelement(1, "mj-loading", 163);
|
|
650
650
|
i0.ɵɵelementEnd();
|
|
651
651
|
} if (rf & 2) {
|
|
652
652
|
i0.ɵɵadvance();
|
|
653
653
|
i0.ɵɵproperty("showText", false);
|
|
654
654
|
} }
|
|
655
|
-
function
|
|
656
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
655
|
+
function MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_8_Template(rf, ctx) { if (rf & 1) {
|
|
656
|
+
i0.ɵɵelement(0, "mj-empty-state", 161);
|
|
657
657
|
} if (rf & 2) {
|
|
658
658
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
659
659
|
i0.ɵɵproperty("Title", "No records found matching \"" + ctx_r1.addRecordsSearchFilter + "\"");
|
|
660
660
|
} }
|
|
661
|
-
function
|
|
662
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
661
|
+
function MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_9_Template(rf, ctx) { if (rf & 1) {
|
|
662
|
+
i0.ɵɵelement(0, "mj-empty-state", 162);
|
|
663
663
|
} }
|
|
664
|
-
function
|
|
665
|
-
i0.ɵɵelement(0, "span",
|
|
664
|
+
function MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_10_For_9_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
665
|
+
i0.ɵɵelement(0, "span", 171);
|
|
666
666
|
} }
|
|
667
|
-
function
|
|
667
|
+
function MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_10_For_9_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
668
668
|
const _r27 = i0.ɵɵgetCurrentView();
|
|
669
|
-
i0.ɵɵelementStart(0, "input",
|
|
670
|
-
i0.ɵɵlistener("click", function
|
|
669
|
+
i0.ɵɵelementStart(0, "input", 175);
|
|
670
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_10_For_9_Conditional_3_Template_input_click_0_listener($event) { return $event.stopPropagation(); })("change", function MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_10_For_9_Conditional_3_Template_input_change_0_listener() { i0.ɵɵrestoreView(_r27); const record_r26 = i0.ɵɵnextContext().$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleRecordSelection(record_r26)); });
|
|
671
671
|
i0.ɵɵelementEnd();
|
|
672
672
|
} if (rf & 2) {
|
|
673
673
|
const record_r26 = i0.ɵɵnextContext().$implicit;
|
|
674
674
|
i0.ɵɵproperty("checked", record_r26.isSelected);
|
|
675
675
|
} }
|
|
676
|
-
function
|
|
677
|
-
i0.ɵɵelementStart(0, "span",
|
|
676
|
+
function MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_10_For_9_Conditional_6_Template(rf, ctx) { if (rf & 1) {
|
|
677
|
+
i0.ɵɵelementStart(0, "span", 174);
|
|
678
678
|
i0.ɵɵtext(1, "In List");
|
|
679
679
|
i0.ɵɵelementEnd();
|
|
680
680
|
} }
|
|
681
|
-
function
|
|
681
|
+
function MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_10_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
682
682
|
const _r25 = i0.ɵɵgetCurrentView();
|
|
683
|
-
i0.ɵɵelementStart(0, "div",
|
|
684
|
-
i0.ɵɵlistener("click", function
|
|
685
|
-
i0.ɵɵelementStart(1, "div",
|
|
686
|
-
i0.ɵɵconditionalCreate(2,
|
|
687
|
-
i0.ɵɵconditionalCreate(3,
|
|
683
|
+
i0.ɵɵelementStart(0, "div", 169);
|
|
684
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_10_For_9_Template_div_click_0_listener() { const record_r26 = i0.ɵɵrestoreView(_r25).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleRecordSelection(record_r26)); });
|
|
685
|
+
i0.ɵɵelementStart(1, "div", 170);
|
|
686
|
+
i0.ɵɵconditionalCreate(2, MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_10_For_9_Conditional_2_Template, 1, 0, "span", 171);
|
|
687
|
+
i0.ɵɵconditionalCreate(3, MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_10_For_9_Conditional_3_Template, 1, 1, "input", 172);
|
|
688
688
|
i0.ɵɵelementEnd();
|
|
689
|
-
i0.ɵɵelementStart(4, "div",
|
|
689
|
+
i0.ɵɵelementStart(4, "div", 173);
|
|
690
690
|
i0.ɵɵtext(5);
|
|
691
691
|
i0.ɵɵelementEnd();
|
|
692
|
-
i0.ɵɵconditionalCreate(6,
|
|
692
|
+
i0.ɵɵconditionalCreate(6, MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_10_For_9_Conditional_6_Template, 2, 0, "span", 174);
|
|
693
693
|
i0.ɵɵelementEnd();
|
|
694
694
|
} if (rf & 2) {
|
|
695
695
|
const record_r26 = ctx.$implicit;
|
|
@@ -703,21 +703,21 @@ function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10
|
|
|
703
703
|
i0.ɵɵadvance();
|
|
704
704
|
i0.ɵɵconditional(record_r26.isInList ? 6 : -1);
|
|
705
705
|
} }
|
|
706
|
-
function
|
|
706
|
+
function MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_10_Template(rf, ctx) { if (rf & 1) {
|
|
707
707
|
const _r24 = i0.ɵɵgetCurrentView();
|
|
708
|
-
i0.ɵɵelementStart(0, "div",
|
|
709
|
-
i0.ɵɵlistener("click", function
|
|
708
|
+
i0.ɵɵelementStart(0, "div", 164)(1, "button", 165);
|
|
709
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_10_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.selectAllAddable()); });
|
|
710
710
|
i0.ɵɵtext(2, "Select All");
|
|
711
711
|
i0.ɵɵelementEnd();
|
|
712
|
-
i0.ɵɵelementStart(3, "button",
|
|
713
|
-
i0.ɵɵlistener("click", function
|
|
712
|
+
i0.ɵɵelementStart(3, "button", 165);
|
|
713
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_10_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r24); const ctx_r1 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r1.deselectAllAddable()); });
|
|
714
714
|
i0.ɵɵtext(4, "Deselect All");
|
|
715
715
|
i0.ɵɵelementEnd();
|
|
716
|
-
i0.ɵɵelementStart(5, "span",
|
|
716
|
+
i0.ɵɵelementStart(5, "span", 166);
|
|
717
717
|
i0.ɵɵtext(6);
|
|
718
718
|
i0.ɵɵelementEnd()();
|
|
719
|
-
i0.ɵɵelementStart(7, "div",
|
|
720
|
-
i0.ɵɵrepeaterCreate(8,
|
|
719
|
+
i0.ɵɵelementStart(7, "div", 167);
|
|
720
|
+
i0.ɵɵrepeaterCreate(8, MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_10_For_9_Template, 7, 8, "div", 168, i0.ɵɵrepeaterTrackByIdentity);
|
|
721
721
|
i0.ɵɵelementEnd();
|
|
722
722
|
} if (rf & 2) {
|
|
723
723
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
@@ -726,22 +726,22 @@ function MJListFormComponentExtended_Conditional_38_Conditional_3_Conditional_10
|
|
|
726
726
|
i0.ɵɵadvance(2);
|
|
727
727
|
i0.ɵɵrepeater(ctx_r1.addableRecords);
|
|
728
728
|
} }
|
|
729
|
-
function
|
|
729
|
+
function MJListFormComponentExtended_Conditional_39_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
730
730
|
const _r23 = i0.ɵɵgetCurrentView();
|
|
731
|
-
i0.ɵɵelementStart(0, "div",
|
|
732
|
-
i0.ɵɵelement(2, "span",
|
|
733
|
-
i0.ɵɵelementStart(3, "input",
|
|
734
|
-
i0.ɵɵtwoWayListener("ngModelChange", function
|
|
735
|
-
i0.ɵɵlistener("ngModelChange", function
|
|
731
|
+
i0.ɵɵelementStart(0, "div", 154)(1, "div", 155);
|
|
732
|
+
i0.ɵɵelement(2, "span", 156);
|
|
733
|
+
i0.ɵɵelementStart(3, "input", 157);
|
|
734
|
+
i0.ɵɵtwoWayListener("ngModelChange", function MJListFormComponentExtended_Conditional_39_Conditional_3_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(2); i0.ɵɵtwoWayBindingSet(ctx_r1.addRecordsSearchFilter, $event) || (ctx_r1.addRecordsSearchFilter = $event); return i0.ɵɵresetView($event); });
|
|
735
|
+
i0.ɵɵlistener("ngModelChange", function MJListFormComponentExtended_Conditional_39_Conditional_3_Template_input_ngModelChange_3_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r1 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r1.onAddRecordsSearchChange($event)); });
|
|
736
736
|
i0.ɵɵelementEnd()();
|
|
737
|
-
i0.ɵɵelementStart(4, "span",
|
|
737
|
+
i0.ɵɵelementStart(4, "span", 158);
|
|
738
738
|
i0.ɵɵtext(5, "Type at least 2 characters to search");
|
|
739
739
|
i0.ɵɵelementEnd()();
|
|
740
|
-
i0.ɵɵelementStart(6, "div",
|
|
741
|
-
i0.ɵɵconditionalCreate(7,
|
|
742
|
-
i0.ɵɵconditionalCreate(8,
|
|
743
|
-
i0.ɵɵconditionalCreate(9,
|
|
744
|
-
i0.ɵɵconditionalCreate(10,
|
|
740
|
+
i0.ɵɵelementStart(6, "div", 159);
|
|
741
|
+
i0.ɵɵconditionalCreate(7, MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_7_Template, 2, 1, "div", 160);
|
|
742
|
+
i0.ɵɵconditionalCreate(8, MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_8_Template, 1, 1, "mj-empty-state", 161);
|
|
743
|
+
i0.ɵɵconditionalCreate(9, MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_9_Template, 1, 0, "mj-empty-state", 162);
|
|
744
|
+
i0.ɵɵconditionalCreate(10, MJListFormComponentExtended_Conditional_39_Conditional_3_Conditional_10_Template, 10, 1);
|
|
745
745
|
i0.ɵɵelementEnd();
|
|
746
746
|
} if (rf & 2) {
|
|
747
747
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -757,20 +757,20 @@ function MJListFormComponentExtended_Conditional_38_Conditional_3_Template(rf, c
|
|
|
757
757
|
i0.ɵɵadvance();
|
|
758
758
|
i0.ɵɵconditional(!ctx_r1.addDialogLoading && ctx_r1.addableRecords.length > 0 ? 10 : -1);
|
|
759
759
|
} }
|
|
760
|
-
function
|
|
760
|
+
function MJListFormComponentExtended_Conditional_39_Template(rf, ctx) { if (rf & 1) {
|
|
761
761
|
const _r22 = i0.ɵɵgetCurrentView();
|
|
762
|
-
i0.ɵɵelementStart(0, "mj-dialog",
|
|
763
|
-
i0.ɵɵlistener("Close", function
|
|
764
|
-
i0.ɵɵelementStart(1, "div",
|
|
765
|
-
i0.ɵɵconditionalCreate(2,
|
|
766
|
-
i0.ɵɵconditionalCreate(3,
|
|
767
|
-
i0.ɵɵelementEnd();
|
|
768
|
-
i0.ɵɵelementStart(4, "mj-dialog-actions")(5, "button",
|
|
769
|
-
i0.ɵɵlistener("click", function
|
|
762
|
+
i0.ɵɵelementStart(0, "mj-dialog", 148);
|
|
763
|
+
i0.ɵɵlistener("Close", function MJListFormComponentExtended_Conditional_39_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddRecordsDialog()); });
|
|
764
|
+
i0.ɵɵelementStart(1, "div", 149);
|
|
765
|
+
i0.ɵɵconditionalCreate(2, MJListFormComponentExtended_Conditional_39_Conditional_2_Template, 2, 1, "div", 150);
|
|
766
|
+
i0.ɵɵconditionalCreate(3, MJListFormComponentExtended_Conditional_39_Conditional_3_Template, 11, 6);
|
|
767
|
+
i0.ɵɵelementEnd();
|
|
768
|
+
i0.ɵɵelementStart(4, "mj-dialog-actions")(5, "button", 151);
|
|
769
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_39_Template_button_click_5_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.confirmAddRecords()); });
|
|
770
770
|
i0.ɵɵtext(6);
|
|
771
771
|
i0.ɵɵelementEnd();
|
|
772
|
-
i0.ɵɵelementStart(7, "button",
|
|
773
|
-
i0.ɵɵlistener("click", function
|
|
772
|
+
i0.ɵɵelementStart(7, "button", 152);
|
|
773
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_39_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r22); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddRecordsDialog()); });
|
|
774
774
|
i0.ɵɵtext(8, " Cancel ");
|
|
775
775
|
i0.ɵɵelementEnd()()();
|
|
776
776
|
} if (rf & 2) {
|
|
@@ -787,37 +787,37 @@ function MJListFormComponentExtended_Conditional_38_Template(rf, ctx) { if (rf &
|
|
|
787
787
|
i0.ɵɵadvance();
|
|
788
788
|
i0.ɵɵproperty("disabled", ctx_r1.addDialogSaving);
|
|
789
789
|
} }
|
|
790
|
-
function
|
|
791
|
-
i0.ɵɵelementStart(0, "div",
|
|
792
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
790
|
+
function MJListFormComponentExtended_Conditional_40_Conditional_2_Template(rf, ctx) { if (rf & 1) {
|
|
791
|
+
i0.ɵɵelementStart(0, "div", 150);
|
|
792
|
+
i0.ɵɵelement(1, "mj-loading", 178);
|
|
793
793
|
i0.ɵɵelementEnd();
|
|
794
794
|
} }
|
|
795
|
-
function
|
|
796
|
-
i0.ɵɵelementStart(0, "div",
|
|
797
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
795
|
+
function MJListFormComponentExtended_Conditional_40_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
796
|
+
i0.ɵɵelementStart(0, "div", 150);
|
|
797
|
+
i0.ɵɵelement(1, "mj-loading", 153);
|
|
798
798
|
i0.ɵɵelementEnd();
|
|
799
799
|
} if (rf & 2) {
|
|
800
800
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
801
801
|
i0.ɵɵadvance();
|
|
802
802
|
i0.ɵɵproperty("text", "Adding " + ctx_r1.addFromViewTotal + " records to list...");
|
|
803
803
|
} }
|
|
804
|
-
function
|
|
805
|
-
i0.ɵɵelementStart(0, "div",
|
|
806
|
-
i0.ɵɵelement(1, "mj-loading",
|
|
804
|
+
function MJListFormComponentExtended_Conditional_40_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
805
|
+
i0.ɵɵelementStart(0, "div", 150);
|
|
806
|
+
i0.ɵɵelement(1, "mj-loading", 179);
|
|
807
807
|
i0.ɵɵelementEnd();
|
|
808
808
|
} }
|
|
809
|
-
function
|
|
810
|
-
i0.ɵɵelement(0, "mj-empty-state",
|
|
809
|
+
function MJListFormComponentExtended_Conditional_40_Conditional_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
|
|
810
|
+
i0.ɵɵelement(0, "mj-empty-state", 182);
|
|
811
811
|
} }
|
|
812
|
-
function
|
|
812
|
+
function MJListFormComponentExtended_Conditional_40_Conditional_5_Conditional_4_For_1_Template(rf, ctx) { if (rf & 1) {
|
|
813
813
|
const _r29 = i0.ɵɵgetCurrentView();
|
|
814
|
-
i0.ɵɵelementStart(0, "div",
|
|
815
|
-
i0.ɵɵlistener("click", function
|
|
816
|
-
i0.ɵɵelementStart(1, "input",
|
|
817
|
-
i0.ɵɵlistener("click", function
|
|
814
|
+
i0.ɵɵelementStart(0, "div", 184);
|
|
815
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_40_Conditional_5_Conditional_4_For_1_Template_div_click_0_listener() { const view_r30 = i0.ɵɵrestoreView(_r29).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleViewSelection(view_r30)); });
|
|
816
|
+
i0.ɵɵelementStart(1, "input", 175);
|
|
817
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_40_Conditional_5_Conditional_4_For_1_Template_input_click_1_listener($event) { return $event.stopPropagation(); })("change", function MJListFormComponentExtended_Conditional_40_Conditional_5_Conditional_4_For_1_Template_input_change_1_listener() { const view_r30 = i0.ɵɵrestoreView(_r29).$implicit; const ctx_r1 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r1.toggleViewSelection(view_r30)); });
|
|
818
818
|
i0.ɵɵelementEnd();
|
|
819
|
-
i0.ɵɵelement(2, "span",
|
|
820
|
-
i0.ɵɵelementStart(3, "span",
|
|
819
|
+
i0.ɵɵelement(2, "span", 185);
|
|
820
|
+
i0.ɵɵelementStart(3, "span", 186);
|
|
821
821
|
i0.ɵɵtext(4);
|
|
822
822
|
i0.ɵɵelementEnd()();
|
|
823
823
|
} if (rf & 2) {
|
|
@@ -829,19 +829,19 @@ function MJListFormComponentExtended_Conditional_39_Conditional_5_Conditional_4_
|
|
|
829
829
|
i0.ɵɵadvance(3);
|
|
830
830
|
i0.ɵɵtextInterpolate(view_r30.Name);
|
|
831
831
|
} }
|
|
832
|
-
function
|
|
833
|
-
i0.ɵɵrepeaterCreate(0,
|
|
832
|
+
function MJListFormComponentExtended_Conditional_40_Conditional_5_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
833
|
+
i0.ɵɵrepeaterCreate(0, MJListFormComponentExtended_Conditional_40_Conditional_5_Conditional_4_For_1_Template, 5, 4, "div", 183, i0.ɵɵrepeaterTrackByIdentity);
|
|
834
834
|
} if (rf & 2) {
|
|
835
835
|
const ctx_r1 = i0.ɵɵnextContext(3);
|
|
836
836
|
i0.ɵɵrepeater(ctx_r1.userViews);
|
|
837
837
|
} }
|
|
838
|
-
function
|
|
839
|
-
i0.ɵɵelementStart(0, "p",
|
|
838
|
+
function MJListFormComponentExtended_Conditional_40_Conditional_5_Template(rf, ctx) { if (rf & 1) {
|
|
839
|
+
i0.ɵɵelementStart(0, "p", 180);
|
|
840
840
|
i0.ɵɵtext(1, "Select views to add their records to this list:");
|
|
841
841
|
i0.ɵɵelementEnd();
|
|
842
|
-
i0.ɵɵelementStart(2, "div",
|
|
843
|
-
i0.ɵɵconditionalCreate(3,
|
|
844
|
-
i0.ɵɵconditionalCreate(4,
|
|
842
|
+
i0.ɵɵelementStart(2, "div", 181);
|
|
843
|
+
i0.ɵɵconditionalCreate(3, MJListFormComponentExtended_Conditional_40_Conditional_5_Conditional_3_Template, 1, 0, "mj-empty-state", 182);
|
|
844
|
+
i0.ɵɵconditionalCreate(4, MJListFormComponentExtended_Conditional_40_Conditional_5_Conditional_4_Template, 2, 0);
|
|
845
845
|
i0.ɵɵelementEnd();
|
|
846
846
|
} if (rf & 2) {
|
|
847
847
|
const ctx_r1 = i0.ɵɵnextContext(2);
|
|
@@ -850,22 +850,22 @@ function MJListFormComponentExtended_Conditional_39_Conditional_5_Template(rf, c
|
|
|
850
850
|
i0.ɵɵadvance();
|
|
851
851
|
i0.ɵɵconditional(ctx_r1.userViews && ctx_r1.userViews.length > 0 ? 4 : -1);
|
|
852
852
|
} }
|
|
853
|
-
function
|
|
853
|
+
function MJListFormComponentExtended_Conditional_40_Template(rf, ctx) { if (rf & 1) {
|
|
854
854
|
const _r28 = i0.ɵɵgetCurrentView();
|
|
855
|
-
i0.ɵɵelementStart(0, "mj-dialog",
|
|
856
|
-
i0.ɵɵlistener("Close", function
|
|
857
|
-
i0.ɵɵelementStart(1, "div",
|
|
858
|
-
i0.ɵɵconditionalCreate(2,
|
|
859
|
-
i0.ɵɵconditionalCreate(3,
|
|
860
|
-
i0.ɵɵconditionalCreate(4,
|
|
861
|
-
i0.ɵɵconditionalCreate(5,
|
|
862
|
-
i0.ɵɵelementEnd();
|
|
863
|
-
i0.ɵɵelementStart(6, "mj-dialog-actions")(7, "button",
|
|
864
|
-
i0.ɵɵlistener("click", function
|
|
855
|
+
i0.ɵɵelementStart(0, "mj-dialog", 176);
|
|
856
|
+
i0.ɵɵlistener("Close", function MJListFormComponentExtended_Conditional_40_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r28); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddFromViewDialog()); });
|
|
857
|
+
i0.ɵɵelementStart(1, "div", 177);
|
|
858
|
+
i0.ɵɵconditionalCreate(2, MJListFormComponentExtended_Conditional_40_Conditional_2_Template, 2, 0, "div", 150);
|
|
859
|
+
i0.ɵɵconditionalCreate(3, MJListFormComponentExtended_Conditional_40_Conditional_3_Template, 2, 1, "div", 150);
|
|
860
|
+
i0.ɵɵconditionalCreate(4, MJListFormComponentExtended_Conditional_40_Conditional_4_Template, 2, 0, "div", 150);
|
|
861
|
+
i0.ɵɵconditionalCreate(5, MJListFormComponentExtended_Conditional_40_Conditional_5_Template, 5, 2);
|
|
862
|
+
i0.ɵɵelementEnd();
|
|
863
|
+
i0.ɵɵelementStart(6, "mj-dialog-actions")(7, "button", 151);
|
|
864
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_40_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r28); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.confirmAddFromView()); });
|
|
865
865
|
i0.ɵɵtext(8);
|
|
866
866
|
i0.ɵɵelementEnd();
|
|
867
|
-
i0.ɵɵelementStart(9, "button",
|
|
868
|
-
i0.ɵɵlistener("click", function
|
|
867
|
+
i0.ɵɵelementStart(9, "button", 152);
|
|
868
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_40_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r28); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAddFromViewDialog()); });
|
|
869
869
|
i0.ɵɵtext(10, " Cancel ");
|
|
870
870
|
i0.ɵɵelementEnd()()();
|
|
871
871
|
} if (rf & 2) {
|
|
@@ -886,24 +886,24 @@ function MJListFormComponentExtended_Conditional_39_Template(rf, ctx) { if (rf &
|
|
|
886
886
|
i0.ɵɵadvance();
|
|
887
887
|
i0.ɵɵproperty("disabled", ctx_r1.showAddFromViewLoader);
|
|
888
888
|
} }
|
|
889
|
-
function
|
|
889
|
+
function MJListFormComponentExtended_Conditional_41_Template(rf, ctx) { if (rf & 1) {
|
|
890
890
|
const _r31 = i0.ɵɵgetCurrentView();
|
|
891
|
-
i0.ɵɵelementStart(0, "mj-list-share-dialog",
|
|
892
|
-
i0.ɵɵlistener("complete", function
|
|
891
|
+
i0.ɵɵelementStart(0, "mj-list-share-dialog", 187);
|
|
892
|
+
i0.ɵɵlistener("complete", function MJListFormComponentExtended_Conditional_41_Template_mj_list_share_dialog_complete_0_listener($event) { i0.ɵɵrestoreView(_r31); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onShareDialogComplete($event)); })("cancel", function MJListFormComponentExtended_Conditional_41_Template_mj_list_share_dialog_cancel_0_listener() { i0.ɵɵrestoreView(_r31); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.onShareDialogCancel()); })("manageInvitations", function MJListFormComponentExtended_Conditional_41_Template_mj_list_share_dialog_manageInvitations_0_listener() { i0.ɵɵrestoreView(_r31); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openInvitationsDialog()); })("viewAuditLog", function MJListFormComponentExtended_Conditional_41_Template_mj_list_share_dialog_viewAuditLog_0_listener() { i0.ɵɵrestoreView(_r31); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.openAuditLogDialog()); });
|
|
893
893
|
i0.ɵɵelementEnd();
|
|
894
894
|
} if (rf & 2) {
|
|
895
895
|
const ctx_r1 = i0.ɵɵnextContext();
|
|
896
896
|
i0.ɵɵproperty("config", ctx_r1.shareDialogConfig)("visible", ctx_r1.showShareDialog);
|
|
897
897
|
} }
|
|
898
|
-
function
|
|
898
|
+
function MJListFormComponentExtended_Conditional_42_Template(rf, ctx) { if (rf & 1) {
|
|
899
899
|
const _r32 = i0.ɵɵgetCurrentView();
|
|
900
|
-
i0.ɵɵelementStart(0, "mj-dialog",
|
|
901
|
-
i0.ɵɵlistener("Close", function
|
|
902
|
-
i0.ɵɵelementStart(1, "div",
|
|
903
|
-
i0.ɵɵelement(2, "mj-list-invitations",
|
|
900
|
+
i0.ɵɵelementStart(0, "mj-dialog", 188);
|
|
901
|
+
i0.ɵɵlistener("Close", function MJListFormComponentExtended_Conditional_42_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeInvitationsDialog()); });
|
|
902
|
+
i0.ɵɵelementStart(1, "div", 189);
|
|
903
|
+
i0.ɵɵelement(2, "mj-list-invitations", 190);
|
|
904
904
|
i0.ɵɵelementEnd();
|
|
905
|
-
i0.ɵɵelementStart(3, "mj-dialog-actions")(4, "button",
|
|
906
|
-
i0.ɵɵlistener("click", function
|
|
905
|
+
i0.ɵɵelementStart(3, "mj-dialog-actions")(4, "button", 191);
|
|
906
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_42_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r32); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeInvitationsDialog()); });
|
|
907
907
|
i0.ɵɵtext(5, "Close");
|
|
908
908
|
i0.ɵɵelementEnd()()();
|
|
909
909
|
} if (rf & 2) {
|
|
@@ -912,15 +912,15 @@ function MJListFormComponentExtended_Conditional_41_Template(rf, ctx) { if (rf &
|
|
|
912
912
|
i0.ɵɵadvance(2);
|
|
913
913
|
i0.ɵɵproperty("Provider", ctx_r1.ProviderToUse)("ListID", ctx_r1.record.ID)("ListName", ctx_r1.record.Name);
|
|
914
914
|
} }
|
|
915
|
-
function
|
|
915
|
+
function MJListFormComponentExtended_Conditional_43_Template(rf, ctx) { if (rf & 1) {
|
|
916
916
|
const _r33 = i0.ɵɵgetCurrentView();
|
|
917
|
-
i0.ɵɵelementStart(0, "mj-dialog",
|
|
918
|
-
i0.ɵɵlistener("Close", function
|
|
919
|
-
i0.ɵɵelementStart(1, "div",
|
|
920
|
-
i0.ɵɵelement(2, "mj-list-audit-log",
|
|
917
|
+
i0.ɵɵelementStart(0, "mj-dialog", 188);
|
|
918
|
+
i0.ɵɵlistener("Close", function MJListFormComponentExtended_Conditional_43_Template_mj_dialog_Close_0_listener() { i0.ɵɵrestoreView(_r33); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAuditLogDialog()); });
|
|
919
|
+
i0.ɵɵelementStart(1, "div", 192);
|
|
920
|
+
i0.ɵɵelement(2, "mj-list-audit-log", 193);
|
|
921
921
|
i0.ɵɵelementEnd();
|
|
922
|
-
i0.ɵɵelementStart(3, "mj-dialog-actions")(4, "button",
|
|
923
|
-
i0.ɵɵlistener("click", function
|
|
922
|
+
i0.ɵɵelementStart(3, "mj-dialog-actions")(4, "button", 191);
|
|
923
|
+
i0.ɵɵlistener("click", function MJListFormComponentExtended_Conditional_43_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r33); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.closeAuditLogDialog()); });
|
|
924
924
|
i0.ɵɵtext(5, "Close");
|
|
925
925
|
i0.ɵɵelementEnd()()();
|
|
926
926
|
} if (rf & 2) {
|
|
@@ -1530,6 +1530,18 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
|
|
|
1530
1530
|
});
|
|
1531
1531
|
}
|
|
1532
1532
|
// === Navigation ===
|
|
1533
|
+
/** The enabled rail items as `mj-section-picker` items: same order, the badge as the count. */
|
|
1534
|
+
get SectionPickerItems() {
|
|
1535
|
+
return this.NavItems
|
|
1536
|
+
.filter((item) => !item.disabled)
|
|
1537
|
+
.map((item) => ({ Key: item.id, Title: item.label, Icon: item.icon, Count: item.badge ?? null }));
|
|
1538
|
+
}
|
|
1539
|
+
/** A pick from the phone section sheet; a key that names no rail item is ignored. */
|
|
1540
|
+
OnSectionPicked(key) {
|
|
1541
|
+
const item = this.NavItems.find((i) => i.id === key);
|
|
1542
|
+
if (item)
|
|
1543
|
+
this.SetActiveSection(item.id);
|
|
1544
|
+
}
|
|
1533
1545
|
SetActiveSection(section) {
|
|
1534
1546
|
const navItem = this.NavItems.find(n => n.id === section);
|
|
1535
1547
|
if (navItem?.disabled)
|
|
@@ -1896,7 +1908,7 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
|
|
|
1896
1908
|
}
|
|
1897
1909
|
const rv = RunView.FromMetadataProvider(this.ProviderToUse);
|
|
1898
1910
|
const result = await rv.RunView({
|
|
1899
|
-
EntityName:
|
|
1911
|
+
EntityName: sourceEntityInfo.Name,
|
|
1900
1912
|
ExtraFilter: filter,
|
|
1901
1913
|
MaxRows: 100,
|
|
1902
1914
|
ResultType: 'simple'
|
|
@@ -2207,7 +2219,7 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
|
|
|
2207
2219
|
return this.CloseAuditLogDialog();
|
|
2208
2220
|
}
|
|
2209
2221
|
static { this.ɵfac = /*@__PURE__*/ (() => { let ɵMJListFormComponentExtended_BaseFactory; return function MJListFormComponentExtended_Factory(__ngFactoryType__) { return (ɵMJListFormComponentExtended_BaseFactory || (ɵMJListFormComponentExtended_BaseFactory = i0.ɵɵgetInheritedFactory(MJListFormComponentExtended)))(__ngFactoryType__ || MJListFormComponentExtended); }; })(); }
|
|
2210
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJListFormComponentExtended, selectors: [["mj-list-form-extended"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls:
|
|
2222
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: MJListFormComponentExtended, selectors: [["mj-list-form-extended"]], standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 44, vars: 24, consts: [["nameInput", ""], [1, "list-form-explorer"], [1, "list-header"], [1, "header-content"], [1, "header-icon"], [1, "header-info"], [1, "name-row"], [1, "entity-badge"], [1, "header-stats"], [1, "stat-item"], [1, "stat-value"], [1, "stat-label"], [1, "phone-section-picker", 3, "ActiveKeyChange", "Items", "ActiveKey"], [1, "nav-rail"], [1, "nav-item", 3, "active", "disabled", "title"], [1, "main-content"], [1, "section", "overview-section"], [1, "section", "items-section"], [1, "section", "sharing-section"], [1, "section", "activity-section"], [1, "section", "settings-section"], [3, "Title", "Visible", "MinWidth", "Width", "Height"], ["Title", "Add Records from Views", 3, "Visible", "MinWidth", "Width", "Height"], [3, "config", "visible"], [3, "Visible", "Title", "MinWidth", "Width", "Height"], [1, "list-name"], ["title", "Edit name", 1, "edit-btn"], ["title", "Edit name", 1, "edit-btn", 3, "click"], [1, "fa-solid", "fa-pen"], ["type", "text", 1, "inline-edit-input", "name-input", 3, "ngModelChange", "keydown.enter", "keydown.escape", "ngModel"], [1, "save-btn", 3, "click"], [1, "fa-solid", "fa-check"], [1, "cancel-btn", 3, "click"], [1, "fa-solid", "fa-times"], [1, "nav-item", 3, "click", "title"], [1, "nav-label"], [1, "nav-badge"], [1, "overview-grid"], [1, "overview-card", "description-card"], [1, "card-header"], [1, "fa-solid", "fa-align-left"], [1, "edit-btn"], [1, "card-body"], [1, "overview-card", "details-card"], [1, "fa-solid", "fa-info-circle"], [1, "detail-row"], [1, "detail-label"], [1, "detail-value"], [1, "detail-icon"], [1, "category-select", 3, "ngModel"], [1, "fa-solid", "fa-user", "detail-icon"], [1, "owner-badge"], [1, "fa-solid", "fa-calendar", "detail-icon"], [1, "overview-card", "actions-card"], [1, "fa-solid", "fa-bolt"], [1, "action-btn", 3, "click"], [1, "fa-solid", "fa-list"], [1, "action-count"], [1, "action-btn"], ["title", "Coming soon", 1, "action-btn", 3, "disabled"], [1, "fa-solid", "fa-file-export"], [1, "coming-soon"], [1, "edit-btn", 3, "click"], [1, "description-text"], [1, "description-empty"], ["placeholder", "Add a description...", "rows", "3", 1, "inline-edit-input", "description-input", 3, "ngModelChange", "keydown.escape", "ngModel"], [1, "edit-actions"], [1, "btn-primary", 3, "click"], [1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-folder", "detail-icon"], [1, "category-select", 3, "ngModelChange", "ngModel"], [3, "ngValue"], [1, "fa-solid", "fa-share-nodes"], [1, "section-header"], [1, "section-actions"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search this page...", 3, "ngModelChange", "ngModel"], [1, "add-buttons"], ["title", "Refresh", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-refresh"], [1, "loading-state"], ["Icon", "fa-solid fa-inbox", "Title", "No Items Yet", 3, "Message"], [1, "items-table-container"], ["title", "Add individual records", 1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-plus"], ["title", "Add records from a saved view", 1, "btn-secondary", 3, "click"], [1, "fa-solid", "fa-table-list"], ["text", "Loading items...", "size", "medium"], [1, "items-toolbar"], [1, "items-table"], [1, "col-checkbox"], ["type", "checkbox", 3, "change", "checked"], [1, "col-name"], [1, "col-id"], [1, "col-added"], [1, "col-actions"], [3, "selected"], [1, "items-footer"], [1, "items-count"], [1, "items-pager"], [1, "selection-count"], [1, "btn-danger", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "item-name"], [1, "item-icon"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "record-id"], ["title", "Open record", 1, "btn-icon", 3, "click"], [1, "fa-solid", "fa-arrow-up-right-from-square"], ["title", "Previous page", 1, "btn-icon", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-left"], [1, "page-label"], ["title", "Next page", 1, "btn-icon", 3, "click", "disabled"], [1, "fa-solid", "fa-chevron-right"], [1, "sharing-summary"], ["Icon", "fa-solid fa-share-nodes", "Title", "Not Shared Yet", "ActionIcon", "fa-solid fa-user-plus", 3, "Message", "ActionText"], [1, "readonly-notice"], [1, "fa-solid", "fa-user-plus"], [1, "summary-card"], [1, "summary-icon"], [1, "fa-solid", "fa-users"], [1, "summary-content"], [1, "summary-value"], [1, "summary-label"], [1, "summary-icon", "pending"], [1, "fa-solid", "fa-envelope"], ["Icon", "fa-solid fa-share-nodes", "Title", "Not Shared Yet", "ActionIcon", "fa-solid fa-user-plus", 3, "Action", "Message", "ActionText"], [1, "activity-timeline"], [1, "timeline-item"], [1, "timeline-icon"], [1, "fa-solid", "fa-edit"], [1, "timeline-content"], [1, "timeline-text"], [1, "timeline-date"], [1, "timeline-icon", "create"], [1, "activity-info"], [1, "settings-form"], ["SectionKey", "listSettings", "SectionName", "List Settings", "Icon", "fa fa-cog", 3, "Form", "FormContext"], [1, "form-body"], ["FieldName", "Name", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "Description", "Type", "textarea", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "CategoryID", "Type", "textbox", "LinkType", "Record", "LinkComponentType", "Search", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["SectionKey", "systemInfo", "SectionName", "System Information", "Icon", "fa fa-info-circle", 3, "Form", "FormContext"], ["FieldName", "EntityID", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "UserID", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "__mj_CreatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], ["FieldName", "__mj_UpdatedAt", "Type", "textbox", 3, "Record", "ShowLabel", "EditMode", "FormContext"], [3, "Close", "Title", "Visible", "MinWidth", "Width", "Height"], [1, "dialog-content", "add-records-dialog"], [1, "dialog-loading"], ["mjButton", "", "variant", "primary", 3, "click", "disabled"], ["mjButton", "", 3, "click", "disabled"], ["size", "small", 3, "text"], [1, "search-section"], [1, "search-input-wrapper"], [1, "fa-solid", "fa-search", "search-icon"], ["type", "text", 1, "mj-input", "search-input", 3, "ngModelChange", "placeholder", "ngModel"], [1, "search-hint"], [1, "records-list"], [1, "list-loading"], ["Variant", "no-results", "Size", "compact", 3, "Title"], ["Size", "compact", "Icon", "fa-solid fa-list", "Title", "Search for records to add to this list"], ["size", "small", 3, "showText"], [1, "selection-controls"], ["mjButton", "", "variant", "flat", 3, "click"], [1, "selection-info"], [1, "records-scroll"], [1, "record-item", 3, "in-list", "selected"], [1, "record-item", 3, "click"], [1, "record-checkbox"], ["title", "Already in list", 1, "fa-solid", "fa-check", "in-list-icon"], ["type", "checkbox", 3, "checked"], [1, "record-name"], [1, "in-list-badge"], ["type", "checkbox", 3, "click", "change", "checked"], ["Title", "Add Records from Views", 3, "Close", "Visible", "MinWidth", "Width", "Height"], [1, "dialog-content"], ["text", "Loading records from views...", "size", "small"], ["text", "Loading views...", "size", "small"], [1, "dialog-instruction"], [1, "views-list"], ["Size", "compact", "Icon", "fa-solid fa-folder-open", "Title", "No saved views found for this entity"], [1, "view-item", 3, "selected"], [1, "view-item", 3, "click"], [1, "fa-solid", "fa-table-list", "view-icon"], [1, "view-name"], [3, "complete", "cancel", "manageInvitations", "viewAuditLog", "config", "visible"], [3, "Close", "Visible", "Title", "MinWidth", "Width", "Height"], [1, "dialog-content", "invitations-dialog"], [3, "Provider", "ListID", "ListName"], ["mjButton", "", "variant", "outline", 3, "click"], [1, "dialog-content", "audit-log-dialog"], [3, "Provider", "ListID"]], template: function MJListFormComponentExtended_Template(rf, ctx) { if (rf & 1) {
|
|
2211
2223
|
i0.ɵɵelementStart(0, "div", 1)(1, "header", 2)(2, "div", 3)(3, "div", 4);
|
|
2212
2224
|
i0.ɵɵelement(4, "i");
|
|
2213
2225
|
i0.ɵɵelementEnd();
|
|
@@ -2238,21 +2250,24 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
|
|
|
2238
2250
|
i0.ɵɵelementStart(27, "span", 11);
|
|
2239
2251
|
i0.ɵɵtext(28, "Updated");
|
|
2240
2252
|
i0.ɵɵelementEnd()()()();
|
|
2241
|
-
i0.ɵɵelementStart(29, "
|
|
2242
|
-
i0.ɵɵ
|
|
2253
|
+
i0.ɵɵelementStart(29, "mj-section-picker", 12);
|
|
2254
|
+
i0.ɵɵlistener("ActiveKeyChange", function MJListFormComponentExtended_Template_mj_section_picker_ActiveKeyChange_29_listener($event) { return ctx.OnSectionPicked($event); });
|
|
2243
2255
|
i0.ɵɵelementEnd();
|
|
2244
|
-
i0.ɵɵelementStart(
|
|
2245
|
-
i0.ɵɵ
|
|
2246
|
-
i0.ɵɵ
|
|
2247
|
-
i0.ɵɵ
|
|
2248
|
-
i0.ɵɵconditionalCreate(
|
|
2249
|
-
i0.ɵɵconditionalCreate(
|
|
2256
|
+
i0.ɵɵelementStart(30, "nav", 13);
|
|
2257
|
+
i0.ɵɵrepeaterCreate(31, MJListFormComponentExtended_For_32_Template, 5, 9, "button", 14, i0.ɵɵrepeaterTrackByIdentity);
|
|
2258
|
+
i0.ɵɵelementEnd();
|
|
2259
|
+
i0.ɵɵelementStart(33, "main", 15);
|
|
2260
|
+
i0.ɵɵconditionalCreate(34, MJListFormComponentExtended_Conditional_34_Template, 62, 18, "section", 16);
|
|
2261
|
+
i0.ɵɵconditionalCreate(35, MJListFormComponentExtended_Conditional_35_Template, 14, 5, "section", 17);
|
|
2262
|
+
i0.ɵɵconditionalCreate(36, MJListFormComponentExtended_Conditional_36_Template, 8, 4, "section", 18);
|
|
2263
|
+
i0.ɵɵconditionalCreate(37, MJListFormComponentExtended_Conditional_37_Template, 26, 8, "section", 19);
|
|
2264
|
+
i0.ɵɵconditionalCreate(38, MJListFormComponentExtended_Conditional_38_Template, 16, 32, "section", 20);
|
|
2250
2265
|
i0.ɵɵelementEnd()();
|
|
2251
|
-
i0.ɵɵconditionalCreate(
|
|
2252
|
-
i0.ɵɵconditionalCreate(
|
|
2253
|
-
i0.ɵɵconditionalCreate(
|
|
2254
|
-
i0.ɵɵconditionalCreate(
|
|
2255
|
-
i0.ɵɵconditionalCreate(
|
|
2266
|
+
i0.ɵɵconditionalCreate(39, MJListFormComponentExtended_Conditional_39_Template, 9, 11, "mj-dialog", 21);
|
|
2267
|
+
i0.ɵɵconditionalCreate(40, MJListFormComponentExtended_Conditional_40_Template, 11, 12, "mj-dialog", 22);
|
|
2268
|
+
i0.ɵɵconditionalCreate(41, MJListFormComponentExtended_Conditional_41_Template, 1, 2, "mj-list-share-dialog", 23);
|
|
2269
|
+
i0.ɵɵconditionalCreate(42, MJListFormComponentExtended_Conditional_42_Template, 6, 8, "mj-dialog", 24);
|
|
2270
|
+
i0.ɵɵconditionalCreate(43, MJListFormComponentExtended_Conditional_43_Template, 6, 7, "mj-dialog", 24);
|
|
2256
2271
|
} if (rf & 2) {
|
|
2257
2272
|
i0.ɵɵadvance(3);
|
|
2258
2273
|
i0.ɵɵstyleProp("background-color", "var(--mj-brand-primary)");
|
|
@@ -2272,29 +2287,31 @@ let MJListFormComponentExtended = class MJListFormComponentExtended extends MJLi
|
|
|
2272
2287
|
i0.ɵɵtextInterpolate(ctx.stats.shareCount);
|
|
2273
2288
|
i0.ɵɵadvance(5);
|
|
2274
2289
|
i0.ɵɵtextInterpolate(ctx.formattedLastUpdated);
|
|
2275
|
-
i0.ɵɵadvance(
|
|
2290
|
+
i0.ɵɵadvance(3);
|
|
2291
|
+
i0.ɵɵproperty("Items", ctx.SectionPickerItems)("ActiveKey", ctx.ActiveSection);
|
|
2292
|
+
i0.ɵɵadvance(2);
|
|
2276
2293
|
i0.ɵɵrepeater(ctx.navItems);
|
|
2277
2294
|
i0.ɵɵadvance(3);
|
|
2278
|
-
i0.ɵɵconditional(ctx.activeSection === "overview" ?
|
|
2295
|
+
i0.ɵɵconditional(ctx.activeSection === "overview" ? 34 : -1);
|
|
2279
2296
|
i0.ɵɵadvance();
|
|
2280
|
-
i0.ɵɵconditional(ctx.activeSection === "items" ?
|
|
2297
|
+
i0.ɵɵconditional(ctx.activeSection === "items" ? 35 : -1);
|
|
2281
2298
|
i0.ɵɵadvance();
|
|
2282
|
-
i0.ɵɵconditional(ctx.activeSection === "sharing" ?
|
|
2299
|
+
i0.ɵɵconditional(ctx.activeSection === "sharing" ? 36 : -1);
|
|
2283
2300
|
i0.ɵɵadvance();
|
|
2284
|
-
i0.ɵɵconditional(ctx.activeSection === "activity" ?
|
|
2301
|
+
i0.ɵɵconditional(ctx.activeSection === "activity" ? 37 : -1);
|
|
2285
2302
|
i0.ɵɵadvance();
|
|
2286
|
-
i0.ɵɵconditional(ctx.activeSection === "settings" ?
|
|
2303
|
+
i0.ɵɵconditional(ctx.activeSection === "settings" ? 38 : -1);
|
|
2287
2304
|
i0.ɵɵadvance();
|
|
2288
|
-
i0.ɵɵconditional(ctx.showAddRecordsDialog ?
|
|
2305
|
+
i0.ɵɵconditional(ctx.showAddRecordsDialog ? 39 : -1);
|
|
2289
2306
|
i0.ɵɵadvance();
|
|
2290
|
-
i0.ɵɵconditional(ctx.showAddFromViewDialog ?
|
|
2307
|
+
i0.ɵɵconditional(ctx.showAddFromViewDialog ? 40 : -1);
|
|
2291
2308
|
i0.ɵɵadvance();
|
|
2292
|
-
i0.ɵɵconditional(ctx.showShareDialog && ctx.shareDialogConfig ?
|
|
2309
|
+
i0.ɵɵconditional(ctx.showShareDialog && ctx.shareDialogConfig ? 41 : -1);
|
|
2293
2310
|
i0.ɵɵadvance();
|
|
2294
|
-
i0.ɵɵconditional(ctx.showInvitationsDialog && (ctx.record == null ? null : ctx.record.IsSaved) ?
|
|
2311
|
+
i0.ɵɵconditional(ctx.showInvitationsDialog && (ctx.record == null ? null : ctx.record.IsSaved) ? 42 : -1);
|
|
2295
2312
|
i0.ɵɵadvance();
|
|
2296
|
-
i0.ɵɵconditional(ctx.showAuditLogDialog && (ctx.record == null ? null : ctx.record.IsSaved) ?
|
|
2297
|
-
} }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJEmptyStateComponent, i2.MJButtonDirective, i2.MJDialogComponent, i2.MJDialogActionsComponent, i3.MjFormFieldComponent, i3.MjCollapsiblePanelComponent, i4.LoadingComponent, i5.ListAuditLogComponent, i5.ListInvitationsComponent, i5.ListShareDialogComponent, i6.DatePipe], styles: ["\n\n\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n.list-form-explorer[_ngcontent-%COMP%] {\n display: grid;\n grid-template-areas:\n \"header header\"\n \"nav main\";\n grid-template-columns: 64px 1fr;\n grid-template-rows: auto 1fr;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\n}\n\n\n.list-header[_ngcontent-%COMP%] {\n grid-area: header;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.header-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-on-primary);\n font-size: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.name-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.list-name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.inline-edit-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 2px solid var(--mj-brand-primary);\n border-radius: 6px;\n font-size: inherit;\n background: var(--mj-bg-surface);\n outline: none;\n}\n\n.name-input[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 600;\n min-width: 300px;\n}\n\n.save-btn[_ngcontent-%COMP%], .cancel-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.save-btn[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.save-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.cancel-btn[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.cancel-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.entity-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 16px;\n font-size: 13px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.entity-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 32px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 80px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n.nav-rail[_ngcontent-%COMP%] {\n grid-area: nav;\n display: flex;\n flex-direction: column;\n padding: 16px 8px;\n background: var(--mj-text-primary);\n gap: 4px;\n}\n\n.nav-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 12px 8px;\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s;\n position: relative;\n}\n\n.nav-item[_ngcontent-%COMP%]:hover:not(.disabled) {\n background: rgba(255, 255, 255, 0.1);\n color: var(--mj-text-inverse);\n}\n\n.nav-item.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n color: color-mix(in srgb, var(--mj-brand-primary) 60%, white);\n}\n\n.nav-item.active[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 24px;\n background: var(--mj-brand-primary);\n border-radius: 0 3px 3px 0;\n}\n\n.nav-item.disabled[_ngcontent-%COMP%] {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n}\n\n.nav-label[_ngcontent-%COMP%] {\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.nav-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 6px;\n right: 6px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: var(--mj-brand-primary);\n border-radius: 9px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-brand-on-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n\n.main-content[_ngcontent-%COMP%] {\n grid-area: main;\n padding: 24px;\n overflow-y: auto;\n}\n\n.section[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n}\n\n.section-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n\n.search-box[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: var(--mj-text-disabled);\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n padding: 10px 12px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n width: 250px;\n transition: all 0.2s;\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n\n.overview-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 20px;\n}\n\n.overview-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.card-body[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.description-text[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-primary);\n line-height: 1.6;\n}\n\n.description-empty[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.description-input[_ngcontent-%COMP%] {\n width: 100%;\n resize: vertical;\n font-family: inherit;\n}\n\n.edit-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-brand-on-primary);\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n}\n\n.btn-danger[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s;\n}\n\n.btn-danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 85%, black);\n}\n\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-bg-surface-card);\n}\n\n.detail-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.owner-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-select[_ngcontent-%COMP%] {\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n}\n\n.category-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n\n.action-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 14px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n margin-bottom: 8px;\n text-align: left;\n}\n\n.action-btn[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-brand-primary);\n width: 24px;\n text-align: center;\n}\n\n.action-btn[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.action-count[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.coming-soon[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.items-table-container[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.items-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.items-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.items-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 12px 16px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.items-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.items-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.items-table[_ngcontent-%COMP%] tr.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.items-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover:not(.selected) {\n background: var(--mj-bg-surface-card);\n}\n\n.col-checkbox[_ngcontent-%COMP%] {\n width: 40px;\n}\n\n.col-name[_ngcontent-%COMP%] {\n width: 35%;\n}\n\n.col-id[_ngcontent-%COMP%] {\n width: 25%;\n}\n\n.col-added[_ngcontent-%COMP%] {\n width: 20%;\n}\n\n.col-actions[_ngcontent-%COMP%] {\n width: 60px;\n text-align: right;\n}\n\n.item-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.item-name.loading[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.item-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.record-id[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 4px;\n color: var(--mj-text-secondary);\n}\n\n.items-footer[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.items-pager[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.items-pager[_ngcontent-%COMP%] .page-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.items-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n\n.coming-soon-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 24px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.coming-soon-banner[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-brand-primary);\n}\n\n.banner-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px;\n color: var(--mj-text-primary);\n}\n\n.banner-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n.shares-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n\n.activity-timeline[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n padding: 20px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n margin-bottom: 20px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n padding: 16px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.timeline-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.timeline-icon.create[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.timeline-text[_ngcontent-%COMP%] {\n margin: 0 0 4px;\n color: var(--mj-text-primary);\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.activity-info[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-status-warning);\n font-size: 14px;\n}\n\n\n.settings-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\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.sharing-summary[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n flex: 1;\n max-width: 280px;\n}\n\n.summary-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n font-size: 20px;\n}\n\n.summary-icon.pending[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.summary-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.summary-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 600;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.summary-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.readonly-notice[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n font-size: 14px;\n}\n\n.readonly-notice[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n\n.dialog-content[_ngcontent-%COMP%] {\n padding: 16px 0;\n}\n\n.dialog-loading[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n gap: 16px;\n}\n\n.dialog-instruction[_ngcontent-%COMP%] {\n margin: 0 0 16px;\n color: var(--mj-text-secondary);\n}\n\n\n.add-records-dialog[_ngcontent-%COMP%] .search-section[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .search-input[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .search-hint[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .records-list[_ngcontent-%COMP%] {\n min-height: 280px;\n max-height: 320px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .list-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 40px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .selection-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .selection-info[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .records-scroll[_ngcontent-%COMP%] {\n max-height: 260px;\n overflow-y: auto;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item.in-list[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n cursor: default;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-checkbox[_ngcontent-%COMP%] {\n width: 20px;\n display: flex;\n justify-content: center;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .in-list-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .in-list-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n}\n\n\n.views-list[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n max-height: 320px;\n overflow-y: auto;\n}\n\n.view-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.view-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.view-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.view-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.view-item[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.view-item[_ngcontent-%COMP%] .view-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n}\n\n\n@media (max-width: 1024px) {\n .list-form-explorer[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n grid-template-areas:\n \"header\"\n \"nav\"\n \"main\";\n }\n\n .nav-rail[_ngcontent-%COMP%] {\n flex-direction: row;\n padding: 8px 16px;\n overflow-x: auto;\n }\n\n .nav-item[_ngcontent-%COMP%] {\n flex-direction: row;\n padding: 10px 16px;\n gap: 8px;\n }\n\n .nav-item[_ngcontent-%COMP%]::before {\n display: none;\n }\n\n .header-stats[_ngcontent-%COMP%] {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .list-header[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .overview-grid[_ngcontent-%COMP%] {\n grid-template-columns: 1fr;\n }\n\n .search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n }\n\n .section-actions[_ngcontent-%COMP%] {\n flex-direction: column;\n align-items: stretch;\n width: 100%;\n }\n}", ".k-pane[_ngcontent-%COMP%] {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n}\n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.k-splitter[_ngcontent-%COMP%] {\n border-width: 0px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\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@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}"], changeDetection: 0 }); }
|
|
2313
|
+
i0.ɵɵconditional(ctx.showAuditLogDialog && (ctx.record == null ? null : ctx.record.IsSaved) ? 43 : -1);
|
|
2314
|
+
} }, dependencies: [i1.NgSelectOption, i1.ɵNgSelectMultipleOption, i1.DefaultValueAccessor, i1.SelectControlValueAccessor, i1.NgControlStatus, i1.NgModel, i2.MJEmptyStateComponent, i2.MJSectionPickerComponent, i2.MJButtonDirective, i2.MJDialogComponent, i2.MJDialogActionsComponent, i3.MjFormFieldComponent, i3.MjCollapsiblePanelComponent, i4.LoadingComponent, i5.ListAuditLogComponent, i5.ListInvitationsComponent, i5.ListShareDialogComponent, i6.DatePipe], styles: ["\n\n\n\n[_nghost-%COMP%] {\n display: block;\n height: 100%;\n}\n\n\n.list-form-explorer[_ngcontent-%COMP%] {\n display: grid;\n grid-template-areas:\n \"header header\"\n \"nav main\";\n grid-template-columns: 64px 1fr;\n grid-template-rows: auto 1fr;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\n}\n\n\n.list-header[_ngcontent-%COMP%] {\n grid-area: header;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.header-content[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.header-icon[_ngcontent-%COMP%] {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-on-primary);\n font-size: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.header-info[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.name-row[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.list-name[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.inline-edit-input[_ngcontent-%COMP%] {\n padding: 8px 12px;\n border: 2px solid var(--mj-brand-primary);\n border-radius: 6px;\n font-size: inherit;\n background: var(--mj-bg-surface);\n outline: none;\n}\n\n.name-input[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 600;\n min-width: 300px;\n}\n\n.save-btn[_ngcontent-%COMP%], .cancel-btn[_ngcontent-%COMP%] {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.save-btn[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.save-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.cancel-btn[_ngcontent-%COMP%] {\n color: var(--mj-status-error);\n}\n\n.cancel-btn[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.entity-badge[_ngcontent-%COMP%] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 16px;\n font-size: 13px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.entity-badge[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 12px;\n}\n\n.header-stats[_ngcontent-%COMP%] {\n display: flex;\n gap: 32px;\n}\n\n.stat-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 80px;\n}\n\n.stat-value[_ngcontent-%COMP%] {\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.stat-label[_ngcontent-%COMP%] {\n font-size: 12px;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n\n.phone-section-picker[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n.nav-rail[_ngcontent-%COMP%] {\n grid-area: nav;\n display: flex;\n flex-direction: column;\n padding: 16px 8px;\n background: var(--mj-text-primary);\n gap: 4px;\n}\n\n.nav-item[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 12px 8px;\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s;\n position: relative;\n}\n\n.nav-item[_ngcontent-%COMP%]:hover:not(.disabled) {\n background: rgba(255, 255, 255, 0.1);\n color: var(--mj-text-inverse);\n}\n\n.nav-item.active[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n color: color-mix(in srgb, var(--mj-brand-primary) 60%, white);\n}\n\n.nav-item.active[_ngcontent-%COMP%]::before {\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 24px;\n background: var(--mj-brand-primary);\n border-radius: 0 3px 3px 0;\n}\n\n.nav-item.disabled[_ngcontent-%COMP%] {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.nav-item[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n}\n\n.nav-label[_ngcontent-%COMP%] {\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.nav-badge[_ngcontent-%COMP%] {\n position: absolute;\n top: 6px;\n right: 6px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: var(--mj-brand-primary);\n border-radius: 9px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-brand-on-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n\n.main-content[_ngcontent-%COMP%] {\n grid-area: main;\n padding: 24px;\n overflow-y: auto;\n}\n\n.section[_ngcontent-%COMP%] {\n animation: _ngcontent-%COMP%_fadeIn 0.2s ease-out;\n}\n\n@keyframes _ngcontent-%COMP%_fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.section-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n}\n\n.section-header[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n\n.search-box[_ngcontent-%COMP%] {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n position: absolute;\n left: 12px;\n color: var(--mj-text-disabled);\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n padding: 10px 12px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n width: 250px;\n transition: all 0.2s;\n}\n\n.search-box[_ngcontent-%COMP%] input[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n\n.overview-grid[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 20px;\n}\n\n.overview-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.card-header[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.card-header[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.card-body[_ngcontent-%COMP%] {\n padding: 20px;\n}\n\n.description-text[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-primary);\n line-height: 1.6;\n}\n\n.description-empty[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.description-input[_ngcontent-%COMP%] {\n width: 100%;\n resize: vertical;\n font-family: inherit;\n}\n\n.edit-actions[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.btn-primary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-brand-on-primary);\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.btn-primary[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n}\n\n.btn-secondary[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-secondary[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.btn-icon[_ngcontent-%COMP%] {\n background: none;\n border: 1px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n}\n\n.btn-danger[_ngcontent-%COMP%] {\n padding: 8px 16px;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s;\n}\n\n.btn-danger[_ngcontent-%COMP%]:hover {\n background: color-mix(in srgb, var(--mj-status-error) 85%, black);\n}\n\n\n.detail-row[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-bg-surface-card);\n}\n\n.detail-row[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.detail-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.detail-value[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.owner-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-select[_ngcontent-%COMP%] {\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n}\n\n.category-select[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n\n.action-btn[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 14px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n margin-bottom: 8px;\n text-align: left;\n}\n\n.action-btn[_ngcontent-%COMP%]:last-child {\n margin-bottom: 0;\n}\n\n.action-btn[_ngcontent-%COMP%]:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.action-btn[_ngcontent-%COMP%]:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.action-btn[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 18px;\n color: var(--mj-brand-primary);\n width: 24px;\n text-align: center;\n}\n\n.action-btn[_ngcontent-%COMP%] span[_ngcontent-%COMP%]:first-of-type {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.action-count[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.coming-soon[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n\n.loading-state[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.items-table-container[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.items-toolbar[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.selection-count[_ngcontent-%COMP%] {\n font-size: 14px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.items-table[_ngcontent-%COMP%] {\n width: 100%;\n border-collapse: collapse;\n}\n\n.items-table[_ngcontent-%COMP%] th[_ngcontent-%COMP%] {\n text-align: left;\n padding: 12px 16px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.items-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%] {\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.items-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:last-child td[_ngcontent-%COMP%] {\n border-bottom: none;\n}\n\n.items-table[_ngcontent-%COMP%] tr.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.items-table[_ngcontent-%COMP%] tr[_ngcontent-%COMP%]:hover:not(.selected) {\n background: var(--mj-bg-surface-card);\n}\n\n.col-checkbox[_ngcontent-%COMP%] {\n width: 40px;\n}\n\n.col-name[_ngcontent-%COMP%] {\n width: 35%;\n}\n\n.col-id[_ngcontent-%COMP%] {\n width: 25%;\n}\n\n.col-added[_ngcontent-%COMP%] {\n width: 20%;\n}\n\n.col-actions[_ngcontent-%COMP%] {\n width: 60px;\n text-align: right;\n}\n\n.item-name[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.item-name.loading[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.item-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n.record-id[_ngcontent-%COMP%] {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 4px;\n color: var(--mj-text-secondary);\n}\n\n.items-footer[_ngcontent-%COMP%] {\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.items-pager[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.items-pager[_ngcontent-%COMP%] .page-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.items-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n\n.coming-soon-banner[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 24px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.coming-soon-banner[_ngcontent-%COMP%] > i[_ngcontent-%COMP%] {\n font-size: 48px;\n color: var(--mj-brand-primary);\n}\n\n.banner-content[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0 0 8px;\n color: var(--mj-text-primary);\n}\n\n.banner-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n.shares-grid[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n\n.activity-timeline[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n padding: 20px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n margin-bottom: 20px;\n}\n\n.timeline-item[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n padding: 16px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.timeline-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.timeline-icon[_ngcontent-%COMP%] {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.timeline-icon.create[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-content[_ngcontent-%COMP%] {\n flex: 1;\n}\n\n.timeline-text[_ngcontent-%COMP%] {\n margin: 0 0 4px;\n color: var(--mj-text-primary);\n}\n\n.timeline-date[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.activity-info[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n color: var(--mj-status-warning);\n font-size: 14px;\n}\n\n\n.settings-form[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\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.sharing-summary[_ngcontent-%COMP%] {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n flex: 1;\n max-width: 280px;\n}\n\n.summary-icon[_ngcontent-%COMP%] {\n width: 48px;\n height: 48px;\n border-radius: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n font-size: 20px;\n}\n\n.summary-icon.pending[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.summary-content[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n\n.summary-value[_ngcontent-%COMP%] {\n font-size: 28px;\n font-weight: 600;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.summary-label[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.readonly-notice[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n font-size: 14px;\n}\n\n.readonly-notice[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-text-disabled);\n}\n\n\n.dialog-content[_ngcontent-%COMP%] {\n padding: 16px 0;\n}\n\n.dialog-loading[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n gap: 16px;\n}\n\n.dialog-instruction[_ngcontent-%COMP%] {\n margin: 0 0 16px;\n color: var(--mj-text-secondary);\n}\n\n\n.add-records-dialog[_ngcontent-%COMP%] .search-section[_ngcontent-%COMP%] {\n margin-bottom: 16px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .search-input[_ngcontent-%COMP%] {\n width: 100%;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .search-hint[_ngcontent-%COMP%] {\n display: block;\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .records-list[_ngcontent-%COMP%] {\n min-height: 280px;\n max-height: 320px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .list-loading[_ngcontent-%COMP%] {\n display: flex;\n justify-content: center;\n padding: 40px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .selection-controls[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .selection-info[_ngcontent-%COMP%] {\n margin-left: auto;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .records-scroll[_ngcontent-%COMP%] {\n max-height: 260px;\n overflow-y: auto;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-item.in-list[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n cursor: default;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-checkbox[_ngcontent-%COMP%] {\n width: 20px;\n display: flex;\n justify-content: center;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .in-list-icon[_ngcontent-%COMP%] {\n color: var(--mj-status-success);\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .record-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n}\n\n.add-records-dialog[_ngcontent-%COMP%] .in-list-badge[_ngcontent-%COMP%] {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n}\n\n\n.views-list[_ngcontent-%COMP%] {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n max-height: 320px;\n overflow-y: auto;\n}\n\n.view-item[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.view-item[_ngcontent-%COMP%]:last-child {\n border-bottom: none;\n}\n\n.view-item[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.view-item.selected[_ngcontent-%COMP%] {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.view-item[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n.view-item[_ngcontent-%COMP%] .view-name[_ngcontent-%COMP%] {\n flex: 1;\n font-size: 14px;\n}\n\n\n@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 \n\n .nav-rail[_ngcontent-%COMP%] {\n display: none;\n }\n\n .phone-section-picker[_ngcontent-%COMP%] {\n grid-area: nav;\n display: block;\n padding: 4px 8px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n }\n\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}", ".content-margin[_ngcontent-%COMP%] {\n margin: 10px;\n}\n\n\na[_ngcontent-%COMP%] {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group[_ngcontent-%COMP%] {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton[_ngcontent-%COMP%] {\n margin-right: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] h2[_ngcontent-%COMP%] {\n margin-bottom: 10px;\n}\n\n.record-form-row[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > [_ngcontent-%COMP%]:first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form[_ngcontent-%COMP%] .record-form-row[_ngcontent-%COMP%] > span[_ngcontent-%COMP%] {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row[_ngcontent-%COMP%] {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row[_ngcontent-%COMP%] label[_ngcontent-%COMP%] {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n\n.form-panels-container[_ngcontent-%COMP%] > .form-card[_ngcontent-%COMP%] {\n width: 100%;\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@media (min-width: 1400px) {\n .form-panels-container[_ngcontent-%COMP%] .related-entity-grid[_ngcontent-%COMP%] {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card[_ngcontent-%COMP%] {\n overflow: hidden;\n}\n\n.collapsible-header[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header[_ngcontent-%COMP%] .collapse-icon[_ngcontent-%COMP%] {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body[_ngcontent-%COMP%] {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed[_ngcontent-%COMP%] {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body[_ngcontent-%COMP%] {\n padding: 24px;\n}\n\n\n.form-card.related-entity[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%] {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-header[_ngcontent-%COMP%]:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity[_ngcontent-%COMP%] .collapsible-title[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n color: var(--mj-brand-primary);\n}\n\n\n.form-section-controls[_ngcontent-%COMP%] {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .control-group[_ngcontent-%COMP%] {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%]:active {\n transform: translateY(0);\n}\n\n.form-section-controls[_ngcontent-%COMP%] button[_ngcontent-%COMP%] i[_ngcontent-%COMP%] {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%] {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-search[_ngcontent-%COMP%]::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls[_ngcontent-%COMP%] .section-count[_ngcontent-%COMP%] {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n\n.form-card.search-hidden[_ngcontent-%COMP%] {\n display: none;\n}\n\n\n.section-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] h3[_ngcontent-%COMP%] .search-highlight[_ngcontent-%COMP%] {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge[_ngcontent-%COMP%] {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n\n.collapsible-title[_ngcontent-%COMP%] .row-count-badge.zero-rows[_ngcontent-%COMP%] {\n background: var(--mj-text-muted);\n}"], changeDetection: 0 }); }
|
|
2298
2315
|
};
|
|
2299
2316
|
MJListFormComponentExtended = __decorate([
|
|
2300
2317
|
RegisterClass(BaseFormComponent, 'MJ: Lists')
|
|
@@ -2302,7 +2319,7 @@ MJListFormComponentExtended = __decorate([
|
|
|
2302
2319
|
export { MJListFormComponentExtended };
|
|
2303
2320
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(MJListFormComponentExtended, [{
|
|
2304
2321
|
type: Component,
|
|
2305
|
-
args: [{ standalone: false, selector: 'mj-list-form-extended', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- World-Class List Form -->\n<div class=\"list-form-explorer\">\n <!-- Header -->\n <header class=\"list-header\">\n <div class=\"header-content\">\n <div class=\"header-icon\" [style.background-color]=\"'var(--mj-brand-primary)'\">\n <i [class]=\"entityIcon\"></i>\n </div>\n <div class=\"header-info\">\n <div class=\"name-row\">\n @if (!isEditingName) {\n <h1 class=\"list-name\">{{record.Name || 'Untitled List'}}</h1>\n @if (isCurrentUserOwner()) {\n <button\n class=\"edit-btn\"\n (click)=\"startEditingName()\"\n title=\"Edit name\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n }\n @if (isEditingName) {\n <input\n type=\"text\"\n class=\"inline-edit-input name-input\"\n [(ngModel)]=\"editingName\"\n (keydown.enter)=\"saveNameEdit()\"\n (keydown.escape)=\"cancelNameEdit()\"\n #nameInput />\n <button class=\"save-btn\" (click)=\"saveNameEdit()\">\n <i class=\"fa-solid fa-check\"></i>\n </button>\n <button class=\"cancel-btn\" (click)=\"cancelNameEdit()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n <div class=\"entity-badge\">\n <i [class]=\"entityIcon\"></i>\n <span>{{entityDisplayName}}</span>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{formattedItemCount}}</span>\n <span class=\"stat-label\">Items</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{stats.shareCount}}</span>\n <span class=\"stat-label\">Shares</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{formattedLastUpdated}}</span>\n <span class=\"stat-label\">Updated</span>\n </div>\n </div>\n </header>\n\n <!-- Navigation Rail -->\n <nav class=\"nav-rail\">\n @for (nav of navItems; track nav) {\n <button\n class=\"nav-item\"\n [class.active]=\"activeSection === nav.id\"\n [class.disabled]=\"nav.disabled\"\n (click)=\"setActiveSection(nav.id)\"\n [title]=\"nav.label\">\n <i [class]=\"nav.icon\"></i>\n <span class=\"nav-label\">{{nav.label}}</span>\n @if (nav.badge && nav.badge > 0) {\n <span class=\"nav-badge\">{{nav.badge}}</span>\n }\n </button>\n }\n </nav>\n\n <!-- Main Content -->\n <main class=\"main-content\">\n <!-- Overview Section -->\n @if (activeSection === 'overview') {\n <section class=\"section overview-section\">\n <div class=\"overview-grid\">\n <!-- Description Card -->\n <div class=\"overview-card description-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-align-left\"></i> Description</h3>\n @if (isCurrentUserOwner() && !isEditingDescription) {\n <button\n class=\"edit-btn\"\n (click)=\"startEditingDescription()\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n </div>\n <div class=\"card-body\">\n @if (!isEditingDescription) {\n @if (record.Description) {\n <p class=\"description-text\">{{record.Description}}</p>\n }\n @if (!record.Description) {\n <p class=\"description-empty\">No description provided</p>\n }\n }\n @if (isEditingDescription) {\n <textarea\n class=\"inline-edit-input description-input\"\n [(ngModel)]=\"editingDescription\"\n placeholder=\"Add a description...\"\n rows=\"3\"\n (keydown.escape)=\"cancelDescriptionEdit()\"></textarea>\n <div class=\"edit-actions\">\n <button class=\"btn-primary\" (click)=\"saveDescriptionEdit()\">Save</button>\n <button class=\"btn-secondary\" (click)=\"cancelDescriptionEdit()\">Cancel</button>\n </div>\n }\n </div>\n </div>\n <!-- Details Card -->\n <div class=\"overview-card details-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-info-circle\"></i> Details</h3>\n </div>\n <div class=\"card-body\">\n <div class=\"detail-row\">\n <span class=\"detail-label\">Entity</span>\n <span class=\"detail-value\">\n <i [class]=\"entityIcon\" class=\"detail-icon\"></i>\n {{entityDisplayName}}\n </span>\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Category</span>\n @if (!isCurrentUserOwner()) {\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-folder detail-icon\"></i>\n {{categoryName}}\n </span>\n }\n @if (isCurrentUserOwner()) {\n <select\n class=\"category-select\"\n [ngModel]=\"record.CategoryID\"\n (ngModelChange)=\"onCategoryChange($event)\">\n <option [ngValue]=\"null\">Uncategorized</option>\n @for (cat of categories; track cat) {\n <option [ngValue]=\"cat.ID\">{{cat.Name}}</option>\n }\n </select>\n }\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Owner</span>\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-user detail-icon\"></i>\n {{getOwnerName()}}\n @if (isCurrentUserOwner()) {\n <span class=\"owner-badge\">You</span>\n }\n </span>\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Created</span>\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-calendar detail-icon\"></i>\n {{record.__mj_CreatedAt | date:'mediumDate'}}\n </span>\n </div>\n </div>\n </div>\n <!-- Quick Actions Card -->\n <div class=\"overview-card actions-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-bolt\"></i> Quick Actions</h3>\n </div>\n <div class=\"card-body\">\n <button class=\"action-btn\" (click)=\"setActiveSection('items')\">\n <i class=\"fa-solid fa-list\"></i>\n <span>View Items</span>\n <span class=\"action-count\">{{stats.itemCount}}</span>\n </button>\n @if (isCurrentUserOwner()) {\n <button class=\"action-btn\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>Share List</span>\n @if (stats.shareCount > 0) {\n <span class=\"action-count\">{{stats.shareCount}}</span>\n }\n </button>\n }\n @if (!isCurrentUserOwner()) {\n <button class=\"action-btn\" (click)=\"setActiveSection('sharing')\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>View Sharing</span>\n </button>\n }\n <button class=\"action-btn\" [disabled]=\"true\" title=\"Coming soon\">\n <i class=\"fa-solid fa-file-export\"></i>\n <span>Export Data</span>\n <span class=\"coming-soon\">Soon</span>\n </button>\n </div>\n </div>\n </div>\n </section>\n }\n\n <!-- Items Section -->\n @if (activeSection === 'items') {\n <section class=\"section items-section\">\n <div class=\"section-header\">\n <h2>List Items</h2>\n <div class=\"section-actions\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Search this page...\"\n [(ngModel)]=\"itemSearchTerm\" />\n </div>\n @if (isCurrentUserOwner()) {\n <div class=\"add-buttons\">\n <button class=\"btn-secondary\" (click)=\"openAddRecordsDialog()\" title=\"Add individual records\">\n <i class=\"fa-solid fa-plus\"></i> Add Records\n </button>\n <button class=\"btn-secondary\" (click)=\"openAddFromViewDialog()\" title=\"Add records from a saved view\">\n <i class=\"fa-solid fa-table-list\"></i> Add From View\n </button>\n </div>\n }\n <button class=\"btn-icon\" (click)=\"refreshItems()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n <!-- Loading State -->\n @if (isLoadingItems) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading items...\" size=\"medium\"></mj-loading>\n </div>\n }\n <!-- Empty State -->\n @if (!isLoadingItems && listItems.length === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-inbox\"\n Title=\"No Items Yet\"\n [Message]=\"'This list doesn\\'t have any items. Add records from the ' + entityDisplayName + ' entity.'\" />\n }\n <!-- Items Table -->\n @if (!isLoadingItems && listItems.length > 0) {\n <div class=\"items-table-container\">\n @if (selectedItems.size > 0) {\n <div class=\"items-toolbar\">\n <span class=\"selection-count\">{{selectedItems.size}} selected</span>\n <button class=\"btn-danger\" (click)=\"removeSelectedItems()\">\n <i class=\"fa-solid fa-trash\"></i>\n Remove from List\n </button>\n </div>\n }\n <table class=\"items-table\">\n <thead>\n <tr>\n <th class=\"col-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelectAllChecked\"\n (change)=\"toggleSelectAll()\" />\n </th>\n <th class=\"col-name\">Name</th>\n <th class=\"col-id\">Record ID</th>\n <th class=\"col-added\">Added</th>\n <th class=\"col-actions\"></th>\n </tr>\n </thead>\n <tbody>\n @for (item of filteredItems; track item) {\n <tr\n [class.selected]=\"selectedItems.has(item.detail.ID)\">\n <td class=\"col-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"selectedItems.has(item.detail.ID)\"\n (change)=\"toggleItemSelection(item)\" />\n </td>\n <td class=\"col-name\">\n <div class=\"item-name\" [class.loading]=\"item.isLoading\">\n <i [class]=\"entityIcon\" class=\"item-icon\"></i>\n <span>{{item.recordName}}</span>\n @if (item.isLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n </div>\n </td>\n <td class=\"col-id\">\n <code class=\"record-id\">{{item.detail.RecordID}}</code>\n </td>\n <td class=\"col-added\">\n {{item.detail.__mj_CreatedAt | date:'shortDate'}}\n </td>\n <td class=\"col-actions\">\n <button\n class=\"btn-icon\"\n (click)=\"openRecord(item)\"\n title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n <div class=\"items-footer\">\n <span class=\"items-count\">\n Showing {{filteredItems.length}} of {{stats.itemCount}} items\n </span>\n @if (totalPages > 1) {\n <div class=\"items-pager\">\n <button class=\"btn-icon\" [disabled]=\"itemsPage === 0\" (click)=\"goToPage(itemsPage - 1)\" title=\"Previous page\">\n <i class=\"fa-solid fa-chevron-left\"></i>\n </button>\n <span class=\"page-label\">Page {{itemsPage + 1}} of {{totalPages}}</span>\n <button class=\"btn-icon\" [disabled]=\"itemsPage >= totalPages - 1\" (click)=\"goToPage(itemsPage + 1)\" title=\"Next page\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n </div>\n }\n </section>\n }\n\n <!-- Sharing Section -->\n @if (activeSection === 'sharing') {\n <section class=\"section sharing-section\">\n <div class=\"section-header\">\n <h2>Sharing</h2>\n @if (isCurrentUserOwner()) {\n <div class=\"section-actions\">\n <button class=\"btn-primary\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-user-plus\"></i> Manage Sharing\n </button>\n </div>\n }\n </div>\n <!-- Sharing summary -->\n @if (stats.shareCount > 0 || stats.invitationCount > 0) {\n <div class=\"sharing-summary\">\n <div class=\"summary-card\">\n <div class=\"summary-icon\">\n <i class=\"fa-solid fa-users\"></i>\n </div>\n <div class=\"summary-content\">\n <span class=\"summary-value\">{{stats.shareCount}}</span>\n <span class=\"summary-label\">Active Share{{stats.shareCount !== 1 ? 's' : ''}}</span>\n </div>\n </div>\n @if (stats.invitationCount > 0) {\n <div class=\"summary-card\">\n <div class=\"summary-icon pending\">\n <i class=\"fa-solid fa-envelope\"></i>\n </div>\n <div class=\"summary-content\">\n <span class=\"summary-value\">{{stats.invitationCount}}</span>\n <span class=\"summary-label\">Pending Invitation{{stats.invitationCount !== 1 ? 's' : ''}}</span>\n </div>\n </div>\n }\n </div>\n }\n <!-- Empty state for no shares -->\n @if (stats.shareCount === 0 && stats.invitationCount === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-share-nodes\"\n Title=\"Not Shared Yet\"\n [Message]=\"isCurrentUserOwner() ? 'This list is private. Click "Manage Sharing" to share it with other users or roles.' : 'This list hasn\\'t been shared with anyone else.'\"\n [ActionText]=\"isCurrentUserOwner() ? 'Share This List' : ''\"\n ActionIcon=\"fa-solid fa-user-plus\"\n (Action)=\"openShareDialog()\" />\n }\n <!-- Read-only notice for non-owners -->\n @if (!isCurrentUserOwner() && (stats.shareCount > 0 || stats.invitationCount > 0)) {\n <div class=\"readonly-notice\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>Only the list owner can manage sharing settings.</span>\n </div>\n }\n </section>\n }\n\n <!-- Activity Section -->\n @if (activeSection === 'activity') {\n <section class=\"section activity-section\">\n <div class=\"section-header\">\n <h2>Activity</h2>\n </div>\n <div class=\"activity-timeline\">\n <div class=\"timeline-item\">\n <div class=\"timeline-icon\">\n <i class=\"fa-solid fa-edit\"></i>\n </div>\n <div class=\"timeline-content\">\n <p class=\"timeline-text\">List updated</p>\n <span class=\"timeline-date\">{{record.__mj_UpdatedAt | date:'medium'}}</span>\n </div>\n </div>\n <div class=\"timeline-item\">\n <div class=\"timeline-icon create\">\n <i class=\"fa-solid fa-plus\"></i>\n </div>\n <div class=\"timeline-content\">\n <p class=\"timeline-text\">List created</p>\n <span class=\"timeline-date\">{{record.__mj_CreatedAt | date:'medium'}}</span>\n </div>\n </div>\n </div>\n <div class=\"activity-info\">\n <p>Detailed activity tracking coming soon. You'll be able to see who added items, when shares were created, and more.</p>\n </div>\n </section>\n }\n\n <!-- Settings Section -->\n @if (activeSection === 'settings') {\n <section class=\"section settings-section\">\n <div class=\"section-header\">\n <h2>Settings</h2>\n </div>\n <div class=\"settings-form\">\n <mj-collapsible-panel\n SectionKey=\"listSettings\"\n SectionName=\"List Settings\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"form-body\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Name\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Description\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"CategoryID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n LinkComponentType=\"Search\">\n </mj-form-field>\n </div>\n </mj-collapsible-panel>\n <mj-collapsible-panel\n SectionKey=\"systemInfo\"\n SectionName=\"System Information\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"form-body\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EntityID\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserID\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n </div>\n </mj-collapsible-panel>\n </div>\n </section>\n }\n </main>\n</div>\n\n<!-- Add Records Dialog -->\n@if (showAddRecordsDialog) {\n <mj-dialog\n [Title]=\"'Add ' + entityDisplayName + ' to List'\"\n (Close)=\"closeAddRecordsDialog()\"\n [Visible]=\"showAddRecordsDialog\"\n [MinWidth]=\"400\"\n [Width]=\"600\"\n [Height]=\"550\">\n <div class=\"dialog-content add-records-dialog\">\n @if (addDialogSaving) {\n <div class=\"dialog-loading\">\n <mj-loading [text]=\"'Adding ' + addTotal + ' records to list...'\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!addDialogSaving) {\n <!-- Search Input -->\n <div class=\"search-section\">\n <div class=\"search-input-wrapper\">\n <span class=\"fa-solid fa-search search-icon\"></span>\n <input\n type=\"text\"\n class=\"mj-input search-input\"\n [placeholder]=\"'Search ' + entityDisplayName + '...'\"\n [(ngModel)]=\"addRecordsSearchFilter\"\n (ngModelChange)=\"onAddRecordsSearchChange($event)\" />\n </div>\n <span class=\"search-hint\">Type at least 2 characters to search</span>\n </div>\n <!-- Records List -->\n <div class=\"records-list\">\n @if (addDialogLoading) {\n <div class=\"list-loading\">\n <mj-loading [showText]=\"false\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!addDialogLoading && addableRecords.length === 0 && addRecordsSearchFilter.length >= 2) {\n <mj-empty-state\n Variant=\"no-results\"\n Size=\"compact\"\n [Title]=\"'No records found matching "' + addRecordsSearchFilter + '"'\" />\n }\n @if (!addDialogLoading && addableRecords.length === 0 && addRecordsSearchFilter.length < 2) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-list\"\n Title=\"Search for records to add to this list\" />\n }\n @if (!addDialogLoading && addableRecords.length > 0) {\n <!-- Selection controls -->\n <div class=\"selection-controls\">\n <button mjButton variant=\"flat\" (click)=\"selectAllAddable()\">Select All</button>\n <button mjButton variant=\"flat\" (click)=\"deselectAllAddable()\">Deselect All</button>\n <span class=\"selection-info\">{{ selectedAddableRecords.length }} selected</span>\n </div>\n <!-- Records -->\n <div class=\"records-scroll\">\n @for (record of addableRecords; track record) {\n <div class=\"record-item\"\n [class.in-list]=\"record.isInList\"\n [class.selected]=\"record.isSelected\"\n (click)=\"toggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.isInList) {\n <span class=\"fa-solid fa-check in-list-icon\" title=\"Already in list\"></span>\n }\n @if (!record.isInList) {\n <input type=\"checkbox\"\n [checked]=\"record.isSelected\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRecordSelection(record)\">\n }\n </div>\n <div class=\"record-name\">{{ record.Name }}</div>\n @if (record.isInList) {\n <span class=\"in-list-badge\">In List</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton\n (click)=\"confirmAddRecords()\"\n [disabled]=\"addDialogSaving || selectedAddableRecords.length === 0\"\n variant=\"primary\">\n Add {{ selectedAddableRecords.length > 0 ? selectedAddableRecords.length : '' }} Record{{ selectedAddableRecords.length !== 1 ? 's' : '' }}\n </button>\n <button mjButton\n (click)=\"closeAddRecordsDialog()\"\n [disabled]=\"addDialogSaving\">\n Cancel\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n\n<!-- Add From View Dialog -->\n@if (showAddFromViewDialog) {\n <mj-dialog\n Title=\"Add Records from Views\"\n (Close)=\"closeAddFromViewDialog()\"\n [Visible]=\"showAddFromViewDialog\"\n [MinWidth]=\"400\"\n [Width]=\"600\"\n [Height]=\"500\">\n <div class=\"dialog-content\">\n @if (showAddFromViewLoader && fetchingRecordsToSave) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading records from views...\" size=\"small\"></mj-loading>\n </div>\n }\n @if (showAddFromViewLoader && addFromViewTotal > 0 && !fetchingRecordsToSave) {\n <div class=\"dialog-loading\">\n <mj-loading [text]=\"'Adding ' + addFromViewTotal + ' records to list...'\" size=\"small\"></mj-loading>\n </div>\n }\n @if (showAddFromViewLoader && !fetchingRecordsToSave && addFromViewTotal === 0) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading views...\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!showAddFromViewLoader) {\n <p class=\"dialog-instruction\">Select views to add their records to this list:</p>\n <div class=\"views-list\">\n @if (!userViews || userViews.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-folder-open\"\n Title=\"No saved views found for this entity\" />\n }\n @if (userViews && userViews.length > 0) {\n @for (view of userViews; track view) {\n <div class=\"view-item\"\n [class.selected]=\"isViewSelected(view)\"\n (click)=\"toggleViewSelection(view)\">\n <input type=\"checkbox\"\n [checked]=\"isViewSelected(view)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleViewSelection(view)\">\n <span class=\"fa-solid fa-table-list view-icon\"></span>\n <span class=\"view-name\">{{ view.Name }}</span>\n </div>\n }\n }\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton\n (click)=\"confirmAddFromView()\"\n [disabled]=\"showAddFromViewLoader || userViewsToAdd.length === 0\"\n variant=\"primary\">\n Add from {{ userViewsToAdd.length }} View{{ userViewsToAdd.length !== 1 ? 's' : '' }}\n </button>\n <button mjButton\n (click)=\"closeAddFromViewDialog()\"\n [disabled]=\"showAddFromViewLoader\">\n Cancel\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n\n<!-- Share Dialog -->\n@if (showShareDialog && shareDialogConfig) {\n <mj-list-share-dialog\n [config]=\"shareDialogConfig\"\n [visible]=\"showShareDialog\"\n (complete)=\"onShareDialogComplete($event)\"\n (cancel)=\"onShareDialogCancel()\"\n (manageInvitations)=\"openInvitationsDialog()\"\n (viewAuditLog)=\"openAuditLogDialog()\">\n </mj-list-share-dialog>\n}\n\n<!-- Invitations Dialog (mockup 16). Opened from the share dialog's\n \"Manage Invitations\" button. Per-list \u2014 bound to record.ID. -->\n@if (showInvitationsDialog && record?.IsSaved) {\n <mj-dialog\n [Visible]=\"true\"\n [Title]=\"'Invitations \u2014 ' + record.Name\"\n (Close)=\"closeInvitationsDialog()\"\n [MinWidth]=\"640\"\n [Width]=\"900\"\n [Height]=\"640\">\n <div class=\"dialog-content invitations-dialog\">\n <mj-list-invitations\n [Provider]=\"ProviderToUse\"\n [ListID]=\"record.ID\"\n [ListName]=\"record.Name\">\n </mj-list-invitations>\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"closeInvitationsDialog()\" variant=\"outline\">Close</button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n\n<!-- Audit Log Dialog (mockup 18). Opened from the share dialog's\n \"View audit log\" link. Per-list \u2014 bound to record.ID. -->\n@if (showAuditLogDialog && record?.IsSaved) {\n <mj-dialog\n [Visible]=\"true\"\n [Title]=\"'Audit Log \u2014 ' + record.Name\"\n (Close)=\"closeAuditLogDialog()\"\n [MinWidth]=\"720\"\n [Width]=\"980\"\n [Height]=\"680\">\n <div class=\"dialog-content audit-log-dialog\">\n <mj-list-audit-log\n [Provider]=\"ProviderToUse\"\n [ListID]=\"record.ID\">\n </mj-list-audit-log>\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"closeAuditLogDialog()\" variant=\"outline\">Close</button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n", styles: ["/* ============================================\n WORLD-CLASS LIST FORM STYLES\n ============================================ */\n\n:host {\n display: block;\n height: 100%;\n}\n\n/* Layout */\n.list-form-explorer {\n display: grid;\n grid-template-areas:\n \"header header\"\n \"nav main\";\n grid-template-columns: 64px 1fr;\n grid-template-rows: auto 1fr;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\n}\n\n/* Header */\n.list-header {\n grid-area: header;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.header-content {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.header-icon {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-on-primary);\n font-size: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.header-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.name-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.list-name {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-btn {\n background: none;\n border: none;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.inline-edit-input {\n padding: 8px 12px;\n border: 2px solid var(--mj-brand-primary);\n border-radius: 6px;\n font-size: inherit;\n background: var(--mj-bg-surface);\n outline: none;\n}\n\n.name-input {\n font-size: 24px;\n font-weight: 600;\n min-width: 300px;\n}\n\n.save-btn, .cancel-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.save-btn {\n color: var(--mj-status-success);\n}\n\n.save-btn:hover {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.cancel-btn {\n color: var(--mj-status-error);\n}\n\n.cancel-btn:hover {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.entity-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 16px;\n font-size: 13px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.entity-badge i {\n font-size: 12px;\n}\n\n.header-stats {\n display: flex;\n gap: 32px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 80px;\n}\n\n.stat-value {\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.stat-label {\n font-size: 12px;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Navigation Rail */\n.nav-rail {\n grid-area: nav;\n display: flex;\n flex-direction: column;\n padding: 16px 8px;\n background: var(--mj-text-primary);\n gap: 4px;\n}\n\n.nav-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 12px 8px;\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s;\n position: relative;\n}\n\n.nav-item:hover:not(.disabled) {\n background: rgba(255, 255, 255, 0.1);\n color: var(--mj-text-inverse);\n}\n\n.nav-item.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n color: color-mix(in srgb, var(--mj-brand-primary) 60%, white);\n}\n\n.nav-item.active::before {\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 24px;\n background: var(--mj-brand-primary);\n border-radius: 0 3px 3px 0;\n}\n\n.nav-item.disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.nav-item i {\n font-size: 18px;\n}\n\n.nav-label {\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.nav-badge {\n position: absolute;\n top: 6px;\n right: 6px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: var(--mj-brand-primary);\n border-radius: 9px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-brand-on-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Main Content */\n.main-content {\n grid-area: main;\n padding: 24px;\n overflow-y: auto;\n}\n\n.section {\n animation: fadeIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n}\n\n.section-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-actions {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n/* Search Box */\n.search-box {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box i {\n position: absolute;\n left: 12px;\n color: var(--mj-text-disabled);\n}\n\n.search-box input {\n padding: 10px 12px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n width: 250px;\n transition: all 0.2s;\n}\n\n.search-box input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n/* Overview Section */\n.overview-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 20px;\n}\n\n.overview-card {\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.card-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.card-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.card-header h3 i {\n color: var(--mj-text-disabled);\n}\n\n.card-body {\n padding: 20px;\n}\n\n.description-text {\n margin: 0;\n color: var(--mj-text-primary);\n line-height: 1.6;\n}\n\n.description-empty {\n margin: 0;\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.description-input {\n width: 100%;\n resize: vertical;\n font-family: inherit;\n}\n\n.edit-actions {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.btn-primary {\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-brand-on-primary);\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.btn-primary:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n}\n\n.btn-secondary {\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-secondary:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.btn-icon {\n background: none;\n border: 1px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n}\n\n.btn-danger {\n padding: 8px 16px;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s;\n}\n\n.btn-danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 85%, black);\n}\n\n/* Details Card */\n.detail-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-bg-surface-card);\n}\n\n.detail-row:last-child {\n border-bottom: none;\n}\n\n.detail-label {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.detail-value {\n font-size: 14px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.owner-badge {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-select {\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n}\n\n.category-select:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n/* Actions Card */\n.action-btn {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 14px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n margin-bottom: 8px;\n text-align: left;\n}\n\n.action-btn:last-child {\n margin-bottom: 0;\n}\n\n.action-btn:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.action-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.action-btn i {\n font-size: 18px;\n color: var(--mj-brand-primary);\n width: 24px;\n text-align: center;\n}\n\n.action-btn span:first-of-type {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.action-count {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.coming-soon {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n/* Items Section */\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.items-table-container {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.items-toolbar {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.selection-count {\n font-size: 14px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.items-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.items-table th {\n text-align: left;\n padding: 12px 16px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.items-table td {\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.items-table tr:last-child td {\n border-bottom: none;\n}\n\n.items-table tr.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.items-table tr:hover:not(.selected) {\n background: var(--mj-bg-surface-card);\n}\n\n.col-checkbox {\n width: 40px;\n}\n\n.col-name {\n width: 35%;\n}\n\n.col-id {\n width: 25%;\n}\n\n.col-added {\n width: 20%;\n}\n\n.col-actions {\n width: 60px;\n text-align: right;\n}\n\n.item-name {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.item-name.loading {\n color: var(--mj-text-disabled);\n}\n\n.item-icon {\n color: var(--mj-text-disabled);\n}\n\n.record-id {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 4px;\n color: var(--mj-text-secondary);\n}\n\n.items-footer {\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.items-pager {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.items-pager .page-label {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.items-count {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n/* Sharing Section */\n.coming-soon-banner {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 24px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.coming-soon-banner > i {\n font-size: 48px;\n color: var(--mj-brand-primary);\n}\n\n.banner-content h3 {\n margin: 0 0 8px;\n color: var(--mj-text-primary);\n}\n\n.banner-content p {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n.shares-grid {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n/* Activity Section */\n.activity-timeline {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n padding: 20px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n margin-bottom: 20px;\n}\n\n.timeline-item {\n display: flex;\n gap: 16px;\n padding: 16px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.timeline-item:last-child {\n border-bottom: none;\n}\n\n.timeline-icon {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.timeline-icon.create {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-content {\n flex: 1;\n}\n\n.timeline-text {\n margin: 0 0 4px;\n color: var(--mj-text-primary);\n}\n\n.timeline-date {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.activity-info {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info p {\n margin: 0;\n color: var(--mj-status-warning);\n font-size: 14px;\n}\n\n/* Settings Section */\n.settings-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n/* Add Buttons in Items Section */\n.add-buttons {\n display: flex;\n gap: 8px;\n}\n\n.add-buttons .btn-secondary {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Sharing Summary */\n.sharing-summary {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n flex: 1;\n max-width: 280px;\n}\n\n.summary-icon {\n width: 48px;\n height: 48px;\n border-radius: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n font-size: 20px;\n}\n\n.summary-icon.pending {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.summary-content {\n display: flex;\n flex-direction: column;\n}\n\n.summary-value {\n font-size: 28px;\n font-weight: 600;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.summary-label {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.readonly-notice {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n font-size: 14px;\n}\n\n.readonly-notice i {\n color: var(--mj-text-disabled);\n}\n\n/* Dialog Styles */\n.dialog-content {\n padding: 16px 0;\n}\n\n.dialog-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n gap: 16px;\n}\n\n.dialog-instruction {\n margin: 0 0 16px;\n color: var(--mj-text-secondary);\n}\n\n/* Add Records Dialog */\n.add-records-dialog .search-section {\n margin-bottom: 16px;\n}\n\n.add-records-dialog .search-input {\n width: 100%;\n}\n\n.add-records-dialog .search-hint {\n display: block;\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n}\n\n.add-records-dialog .records-list {\n min-height: 280px;\n max-height: 320px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n}\n\n.add-records-dialog .list-loading {\n display: flex;\n justify-content: center;\n padding: 40px;\n}\n\n.add-records-dialog .selection-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.add-records-dialog .selection-info {\n margin-left: auto;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.add-records-dialog .records-scroll {\n max-height: 260px;\n overflow-y: auto;\n}\n\n.add-records-dialog .record-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.add-records-dialog .record-item:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.add-records-dialog .record-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.add-records-dialog .record-item.in-list {\n background: var(--mj-bg-surface-card);\n cursor: default;\n}\n\n.add-records-dialog .record-checkbox {\n width: 20px;\n display: flex;\n justify-content: center;\n}\n\n.add-records-dialog .in-list-icon {\n color: var(--mj-status-success);\n}\n\n.add-records-dialog .record-name {\n flex: 1;\n font-size: 14px;\n}\n\n.add-records-dialog .in-list-badge {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n}\n\n/* Add From View Dialog */\n.views-list {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n max-height: 320px;\n overflow-y: auto;\n}\n\n.view-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.view-item:last-child {\n border-bottom: none;\n}\n\n.view-item:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.view-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.view-item .view-icon {\n color: var(--mj-brand-primary);\n}\n\n.view-item .view-name {\n flex: 1;\n font-size: 14px;\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .list-form-explorer {\n grid-template-columns: 1fr;\n grid-template-areas:\n \"header\"\n \"nav\"\n \"main\";\n }\n\n .nav-rail {\n flex-direction: row;\n padding: 8px 16px;\n overflow-x: auto;\n }\n\n .nav-item {\n flex-direction: row;\n padding: 10px 16px;\n gap: 8px;\n }\n\n .nav-item::before {\n display: none;\n }\n\n .header-stats {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n .list-header {\n flex-direction: column;\n align-items: flex-start;\n gap: 16px;\n }\n\n .overview-grid {\n grid-template-columns: 1fr;\n }\n\n .search-box input {\n width: 100%;\n }\n\n .section-actions {\n flex-direction: column;\n align-items: stretch;\n width: 100%;\n }\n}\n", ".k-pane {\n background-color: var(--mj-bg-surface);\n}\n\n.content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.k-splitter {\n border-width: 0px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n"] }]
|
|
2322
|
+
args: [{ standalone: false, selector: 'mj-list-form-extended', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- World-Class List Form -->\n<div class=\"list-form-explorer\">\n <!-- Header -->\n <header class=\"list-header\">\n <div class=\"header-content\">\n <div class=\"header-icon\" [style.background-color]=\"'var(--mj-brand-primary)'\">\n <i [class]=\"entityIcon\"></i>\n </div>\n <div class=\"header-info\">\n <div class=\"name-row\">\n @if (!isEditingName) {\n <h1 class=\"list-name\">{{record.Name || 'Untitled List'}}</h1>\n @if (isCurrentUserOwner()) {\n <button\n class=\"edit-btn\"\n (click)=\"startEditingName()\"\n title=\"Edit name\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n }\n @if (isEditingName) {\n <input\n type=\"text\"\n class=\"inline-edit-input name-input\"\n [(ngModel)]=\"editingName\"\n (keydown.enter)=\"saveNameEdit()\"\n (keydown.escape)=\"cancelNameEdit()\"\n #nameInput />\n <button class=\"save-btn\" (click)=\"saveNameEdit()\">\n <i class=\"fa-solid fa-check\"></i>\n </button>\n <button class=\"cancel-btn\" (click)=\"cancelNameEdit()\">\n <i class=\"fa-solid fa-times\"></i>\n </button>\n }\n </div>\n <div class=\"entity-badge\">\n <i [class]=\"entityIcon\"></i>\n <span>{{entityDisplayName}}</span>\n </div>\n </div>\n </div>\n <div class=\"header-stats\">\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{formattedItemCount}}</span>\n <span class=\"stat-label\">Items</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{stats.shareCount}}</span>\n <span class=\"stat-label\">Shares</span>\n </div>\n <div class=\"stat-item\">\n <span class=\"stat-value\">{{formattedLastUpdated}}</span>\n <span class=\"stat-label\">Updated</span>\n </div>\n </div>\n </header>\n\n <!-- Phone: the rail becomes one button that opens the Sections sheet -->\n <mj-section-picker class=\"phone-section-picker\"\n [Items]=\"SectionPickerItems\"\n [ActiveKey]=\"ActiveSection\"\n (ActiveKeyChange)=\"OnSectionPicked($event)\"></mj-section-picker>\n\n <!-- Navigation Rail -->\n <nav class=\"nav-rail\">\n @for (nav of navItems; track nav) {\n <button\n class=\"nav-item\"\n [class.active]=\"activeSection === nav.id\"\n [class.disabled]=\"nav.disabled\"\n (click)=\"setActiveSection(nav.id)\"\n [title]=\"nav.label\">\n <i [class]=\"nav.icon\"></i>\n <span class=\"nav-label\">{{nav.label}}</span>\n @if (nav.badge && nav.badge > 0) {\n <span class=\"nav-badge\">{{nav.badge}}</span>\n }\n </button>\n }\n </nav>\n\n <!-- Main Content -->\n <main class=\"main-content\">\n <!-- Overview Section -->\n @if (activeSection === 'overview') {\n <section class=\"section overview-section\">\n <div class=\"overview-grid\">\n <!-- Description Card -->\n <div class=\"overview-card description-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-align-left\"></i> Description</h3>\n @if (isCurrentUserOwner() && !isEditingDescription) {\n <button\n class=\"edit-btn\"\n (click)=\"startEditingDescription()\"\n >\n <i class=\"fa-solid fa-pen\"></i>\n </button>\n }\n </div>\n <div class=\"card-body\">\n @if (!isEditingDescription) {\n @if (record.Description) {\n <p class=\"description-text\">{{record.Description}}</p>\n }\n @if (!record.Description) {\n <p class=\"description-empty\">No description provided</p>\n }\n }\n @if (isEditingDescription) {\n <textarea\n class=\"inline-edit-input description-input\"\n [(ngModel)]=\"editingDescription\"\n placeholder=\"Add a description...\"\n rows=\"3\"\n (keydown.escape)=\"cancelDescriptionEdit()\"></textarea>\n <div class=\"edit-actions\">\n <button class=\"btn-primary\" (click)=\"saveDescriptionEdit()\">Save</button>\n <button class=\"btn-secondary\" (click)=\"cancelDescriptionEdit()\">Cancel</button>\n </div>\n }\n </div>\n </div>\n <!-- Details Card -->\n <div class=\"overview-card details-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-info-circle\"></i> Details</h3>\n </div>\n <div class=\"card-body\">\n <div class=\"detail-row\">\n <span class=\"detail-label\">Entity</span>\n <span class=\"detail-value\">\n <i [class]=\"entityIcon\" class=\"detail-icon\"></i>\n {{entityDisplayName}}\n </span>\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Category</span>\n @if (!isCurrentUserOwner()) {\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-folder detail-icon\"></i>\n {{categoryName}}\n </span>\n }\n @if (isCurrentUserOwner()) {\n <select\n class=\"category-select\"\n [ngModel]=\"record.CategoryID\"\n (ngModelChange)=\"onCategoryChange($event)\">\n <option [ngValue]=\"null\">Uncategorized</option>\n @for (cat of categories; track cat) {\n <option [ngValue]=\"cat.ID\">{{cat.Name}}</option>\n }\n </select>\n }\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Owner</span>\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-user detail-icon\"></i>\n {{getOwnerName()}}\n @if (isCurrentUserOwner()) {\n <span class=\"owner-badge\">You</span>\n }\n </span>\n </div>\n <div class=\"detail-row\">\n <span class=\"detail-label\">Created</span>\n <span class=\"detail-value\">\n <i class=\"fa-solid fa-calendar detail-icon\"></i>\n {{record.__mj_CreatedAt | date:'mediumDate'}}\n </span>\n </div>\n </div>\n </div>\n <!-- Quick Actions Card -->\n <div class=\"overview-card actions-card\">\n <div class=\"card-header\">\n <h3><i class=\"fa-solid fa-bolt\"></i> Quick Actions</h3>\n </div>\n <div class=\"card-body\">\n <button class=\"action-btn\" (click)=\"setActiveSection('items')\">\n <i class=\"fa-solid fa-list\"></i>\n <span>View Items</span>\n <span class=\"action-count\">{{stats.itemCount}}</span>\n </button>\n @if (isCurrentUserOwner()) {\n <button class=\"action-btn\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>Share List</span>\n @if (stats.shareCount > 0) {\n <span class=\"action-count\">{{stats.shareCount}}</span>\n }\n </button>\n }\n @if (!isCurrentUserOwner()) {\n <button class=\"action-btn\" (click)=\"setActiveSection('sharing')\">\n <i class=\"fa-solid fa-share-nodes\"></i>\n <span>View Sharing</span>\n </button>\n }\n <button class=\"action-btn\" [disabled]=\"true\" title=\"Coming soon\">\n <i class=\"fa-solid fa-file-export\"></i>\n <span>Export Data</span>\n <span class=\"coming-soon\">Soon</span>\n </button>\n </div>\n </div>\n </div>\n </section>\n }\n\n <!-- Items Section -->\n @if (activeSection === 'items') {\n <section class=\"section items-section\">\n <div class=\"section-header\">\n <h2>List Items</h2>\n <div class=\"section-actions\">\n <div class=\"search-box\">\n <i class=\"fa-solid fa-search\"></i>\n <input\n type=\"text\"\n placeholder=\"Search this page...\"\n [(ngModel)]=\"itemSearchTerm\" />\n </div>\n @if (isCurrentUserOwner()) {\n <div class=\"add-buttons\">\n <button class=\"btn-secondary\" (click)=\"openAddRecordsDialog()\" title=\"Add individual records\">\n <i class=\"fa-solid fa-plus\"></i> Add Records\n </button>\n <button class=\"btn-secondary\" (click)=\"openAddFromViewDialog()\" title=\"Add records from a saved view\">\n <i class=\"fa-solid fa-table-list\"></i> Add From View\n </button>\n </div>\n }\n <button class=\"btn-icon\" (click)=\"refreshItems()\" title=\"Refresh\">\n <i class=\"fa-solid fa-refresh\"></i>\n </button>\n </div>\n </div>\n <!-- Loading State -->\n @if (isLoadingItems) {\n <div class=\"loading-state\">\n <mj-loading text=\"Loading items...\" size=\"medium\"></mj-loading>\n </div>\n }\n <!-- Empty State -->\n @if (!isLoadingItems && listItems.length === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-inbox\"\n Title=\"No Items Yet\"\n [Message]=\"'This list doesn\\'t have any items. Add records from the ' + entityDisplayName + ' entity.'\" />\n }\n <!-- Items Table -->\n @if (!isLoadingItems && listItems.length > 0) {\n <div class=\"items-table-container\">\n @if (selectedItems.size > 0) {\n <div class=\"items-toolbar\">\n <span class=\"selection-count\">{{selectedItems.size}} selected</span>\n <button class=\"btn-danger\" (click)=\"removeSelectedItems()\">\n <i class=\"fa-solid fa-trash\"></i>\n Remove from List\n </button>\n </div>\n }\n <table class=\"items-table\">\n <thead>\n <tr>\n <th class=\"col-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"isSelectAllChecked\"\n (change)=\"toggleSelectAll()\" />\n </th>\n <th class=\"col-name\">Name</th>\n <th class=\"col-id\">Record ID</th>\n <th class=\"col-added\">Added</th>\n <th class=\"col-actions\"></th>\n </tr>\n </thead>\n <tbody>\n @for (item of filteredItems; track item) {\n <tr\n [class.selected]=\"selectedItems.has(item.detail.ID)\">\n <td class=\"col-checkbox\">\n <input\n type=\"checkbox\"\n [checked]=\"selectedItems.has(item.detail.ID)\"\n (change)=\"toggleItemSelection(item)\" />\n </td>\n <td class=\"col-name\">\n <div class=\"item-name\" [class.loading]=\"item.isLoading\">\n <i [class]=\"entityIcon\" class=\"item-icon\"></i>\n <span>{{item.recordName}}</span>\n @if (item.isLoading) {\n <i class=\"fa-solid fa-spinner fa-spin\"></i>\n }\n </div>\n </td>\n <td class=\"col-id\">\n <code class=\"record-id\">{{item.detail.RecordID}}</code>\n </td>\n <td class=\"col-added\">\n {{item.detail.__mj_CreatedAt | date:'shortDate'}}\n </td>\n <td class=\"col-actions\">\n <button\n class=\"btn-icon\"\n (click)=\"openRecord(item)\"\n title=\"Open record\">\n <i class=\"fa-solid fa-arrow-up-right-from-square\"></i>\n </button>\n </td>\n </tr>\n }\n </tbody>\n </table>\n <div class=\"items-footer\">\n <span class=\"items-count\">\n Showing {{filteredItems.length}} of {{stats.itemCount}} items\n </span>\n @if (totalPages > 1) {\n <div class=\"items-pager\">\n <button class=\"btn-icon\" [disabled]=\"itemsPage === 0\" (click)=\"goToPage(itemsPage - 1)\" title=\"Previous page\">\n <i class=\"fa-solid fa-chevron-left\"></i>\n </button>\n <span class=\"page-label\">Page {{itemsPage + 1}} of {{totalPages}}</span>\n <button class=\"btn-icon\" [disabled]=\"itemsPage >= totalPages - 1\" (click)=\"goToPage(itemsPage + 1)\" title=\"Next page\">\n <i class=\"fa-solid fa-chevron-right\"></i>\n </button>\n </div>\n }\n </div>\n </div>\n }\n </section>\n }\n\n <!-- Sharing Section -->\n @if (activeSection === 'sharing') {\n <section class=\"section sharing-section\">\n <div class=\"section-header\">\n <h2>Sharing</h2>\n @if (isCurrentUserOwner()) {\n <div class=\"section-actions\">\n <button class=\"btn-primary\" (click)=\"openShareDialog()\">\n <i class=\"fa-solid fa-user-plus\"></i> Manage Sharing\n </button>\n </div>\n }\n </div>\n <!-- Sharing summary -->\n @if (stats.shareCount > 0 || stats.invitationCount > 0) {\n <div class=\"sharing-summary\">\n <div class=\"summary-card\">\n <div class=\"summary-icon\">\n <i class=\"fa-solid fa-users\"></i>\n </div>\n <div class=\"summary-content\">\n <span class=\"summary-value\">{{stats.shareCount}}</span>\n <span class=\"summary-label\">Active Share{{stats.shareCount !== 1 ? 's' : ''}}</span>\n </div>\n </div>\n @if (stats.invitationCount > 0) {\n <div class=\"summary-card\">\n <div class=\"summary-icon pending\">\n <i class=\"fa-solid fa-envelope\"></i>\n </div>\n <div class=\"summary-content\">\n <span class=\"summary-value\">{{stats.invitationCount}}</span>\n <span class=\"summary-label\">Pending Invitation{{stats.invitationCount !== 1 ? 's' : ''}}</span>\n </div>\n </div>\n }\n </div>\n }\n <!-- Empty state for no shares -->\n @if (stats.shareCount === 0 && stats.invitationCount === 0) {\n <mj-empty-state\n Icon=\"fa-solid fa-share-nodes\"\n Title=\"Not Shared Yet\"\n [Message]=\"isCurrentUserOwner() ? 'This list is private. Click "Manage Sharing" to share it with other users or roles.' : 'This list hasn\\'t been shared with anyone else.'\"\n [ActionText]=\"isCurrentUserOwner() ? 'Share This List' : ''\"\n ActionIcon=\"fa-solid fa-user-plus\"\n (Action)=\"openShareDialog()\" />\n }\n <!-- Read-only notice for non-owners -->\n @if (!isCurrentUserOwner() && (stats.shareCount > 0 || stats.invitationCount > 0)) {\n <div class=\"readonly-notice\">\n <i class=\"fa-solid fa-info-circle\"></i>\n <span>Only the list owner can manage sharing settings.</span>\n </div>\n }\n </section>\n }\n\n <!-- Activity Section -->\n @if (activeSection === 'activity') {\n <section class=\"section activity-section\">\n <div class=\"section-header\">\n <h2>Activity</h2>\n </div>\n <div class=\"activity-timeline\">\n <div class=\"timeline-item\">\n <div class=\"timeline-icon\">\n <i class=\"fa-solid fa-edit\"></i>\n </div>\n <div class=\"timeline-content\">\n <p class=\"timeline-text\">List updated</p>\n <span class=\"timeline-date\">{{record.__mj_UpdatedAt | date:'medium'}}</span>\n </div>\n </div>\n <div class=\"timeline-item\">\n <div class=\"timeline-icon create\">\n <i class=\"fa-solid fa-plus\"></i>\n </div>\n <div class=\"timeline-content\">\n <p class=\"timeline-text\">List created</p>\n <span class=\"timeline-date\">{{record.__mj_CreatedAt | date:'medium'}}</span>\n </div>\n </div>\n </div>\n <div class=\"activity-info\">\n <p>Detailed activity tracking coming soon. You'll be able to see who added items, when shares were created, and more.</p>\n </div>\n </section>\n }\n\n <!-- Settings Section -->\n @if (activeSection === 'settings') {\n <section class=\"section settings-section\">\n <div class=\"section-header\">\n <h2>Settings</h2>\n </div>\n <div class=\"settings-form\">\n <mj-collapsible-panel\n SectionKey=\"listSettings\"\n SectionName=\"List Settings\"\n Icon=\"fa fa-cog\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"form-body\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Name\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"Description\"\n Type=\"textarea\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"CategoryID\"\n Type=\"textbox\"\n [EditMode]=\"EditMode\"\n [FormContext]=\"formContext\"\n LinkType=\"Record\"\n LinkComponentType=\"Search\">\n </mj-form-field>\n </div>\n </mj-collapsible-panel>\n <mj-collapsible-panel\n SectionKey=\"systemInfo\"\n SectionName=\"System Information\"\n Icon=\"fa fa-info-circle\"\n [Form]=\"this\"\n [FormContext]=\"formContext\">\n <div class=\"form-body\">\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"EntityID\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"UserID\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_CreatedAt\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n <mj-form-field\n [Record]=\"record\"\n [ShowLabel]=\"true\"\n FieldName=\"__mj_UpdatedAt\"\n Type=\"textbox\"\n [EditMode]=\"false\"\n [FormContext]=\"formContext\">\n </mj-form-field>\n </div>\n </mj-collapsible-panel>\n </div>\n </section>\n }\n </main>\n</div>\n\n<!-- Add Records Dialog -->\n@if (showAddRecordsDialog) {\n <mj-dialog\n [Title]=\"'Add ' + entityDisplayName + ' to List'\"\n (Close)=\"closeAddRecordsDialog()\"\n [Visible]=\"showAddRecordsDialog\"\n [MinWidth]=\"400\"\n [Width]=\"600\"\n [Height]=\"550\">\n <div class=\"dialog-content add-records-dialog\">\n @if (addDialogSaving) {\n <div class=\"dialog-loading\">\n <mj-loading [text]=\"'Adding ' + addTotal + ' records to list...'\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!addDialogSaving) {\n <!-- Search Input -->\n <div class=\"search-section\">\n <div class=\"search-input-wrapper\">\n <span class=\"fa-solid fa-search search-icon\"></span>\n <input\n type=\"text\"\n class=\"mj-input search-input\"\n [placeholder]=\"'Search ' + entityDisplayName + '...'\"\n [(ngModel)]=\"addRecordsSearchFilter\"\n (ngModelChange)=\"onAddRecordsSearchChange($event)\" />\n </div>\n <span class=\"search-hint\">Type at least 2 characters to search</span>\n </div>\n <!-- Records List -->\n <div class=\"records-list\">\n @if (addDialogLoading) {\n <div class=\"list-loading\">\n <mj-loading [showText]=\"false\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!addDialogLoading && addableRecords.length === 0 && addRecordsSearchFilter.length >= 2) {\n <mj-empty-state\n Variant=\"no-results\"\n Size=\"compact\"\n [Title]=\"'No records found matching "' + addRecordsSearchFilter + '"'\" />\n }\n @if (!addDialogLoading && addableRecords.length === 0 && addRecordsSearchFilter.length < 2) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-list\"\n Title=\"Search for records to add to this list\" />\n }\n @if (!addDialogLoading && addableRecords.length > 0) {\n <!-- Selection controls -->\n <div class=\"selection-controls\">\n <button mjButton variant=\"flat\" (click)=\"selectAllAddable()\">Select All</button>\n <button mjButton variant=\"flat\" (click)=\"deselectAllAddable()\">Deselect All</button>\n <span class=\"selection-info\">{{ selectedAddableRecords.length }} selected</span>\n </div>\n <!-- Records -->\n <div class=\"records-scroll\">\n @for (record of addableRecords; track record) {\n <div class=\"record-item\"\n [class.in-list]=\"record.isInList\"\n [class.selected]=\"record.isSelected\"\n (click)=\"toggleRecordSelection(record)\">\n <div class=\"record-checkbox\">\n @if (record.isInList) {\n <span class=\"fa-solid fa-check in-list-icon\" title=\"Already in list\"></span>\n }\n @if (!record.isInList) {\n <input type=\"checkbox\"\n [checked]=\"record.isSelected\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleRecordSelection(record)\">\n }\n </div>\n <div class=\"record-name\">{{ record.Name }}</div>\n @if (record.isInList) {\n <span class=\"in-list-badge\">In List</span>\n }\n </div>\n }\n </div>\n }\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton\n (click)=\"confirmAddRecords()\"\n [disabled]=\"addDialogSaving || selectedAddableRecords.length === 0\"\n variant=\"primary\">\n Add {{ selectedAddableRecords.length > 0 ? selectedAddableRecords.length : '' }} Record{{ selectedAddableRecords.length !== 1 ? 's' : '' }}\n </button>\n <button mjButton\n (click)=\"closeAddRecordsDialog()\"\n [disabled]=\"addDialogSaving\">\n Cancel\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n\n<!-- Add From View Dialog -->\n@if (showAddFromViewDialog) {\n <mj-dialog\n Title=\"Add Records from Views\"\n (Close)=\"closeAddFromViewDialog()\"\n [Visible]=\"showAddFromViewDialog\"\n [MinWidth]=\"400\"\n [Width]=\"600\"\n [Height]=\"500\">\n <div class=\"dialog-content\">\n @if (showAddFromViewLoader && fetchingRecordsToSave) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading records from views...\" size=\"small\"></mj-loading>\n </div>\n }\n @if (showAddFromViewLoader && addFromViewTotal > 0 && !fetchingRecordsToSave) {\n <div class=\"dialog-loading\">\n <mj-loading [text]=\"'Adding ' + addFromViewTotal + ' records to list...'\" size=\"small\"></mj-loading>\n </div>\n }\n @if (showAddFromViewLoader && !fetchingRecordsToSave && addFromViewTotal === 0) {\n <div class=\"dialog-loading\">\n <mj-loading text=\"Loading views...\" size=\"small\"></mj-loading>\n </div>\n }\n @if (!showAddFromViewLoader) {\n <p class=\"dialog-instruction\">Select views to add their records to this list:</p>\n <div class=\"views-list\">\n @if (!userViews || userViews.length === 0) {\n <mj-empty-state\n Size=\"compact\"\n Icon=\"fa-solid fa-folder-open\"\n Title=\"No saved views found for this entity\" />\n }\n @if (userViews && userViews.length > 0) {\n @for (view of userViews; track view) {\n <div class=\"view-item\"\n [class.selected]=\"isViewSelected(view)\"\n (click)=\"toggleViewSelection(view)\">\n <input type=\"checkbox\"\n [checked]=\"isViewSelected(view)\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"toggleViewSelection(view)\">\n <span class=\"fa-solid fa-table-list view-icon\"></span>\n <span class=\"view-name\">{{ view.Name }}</span>\n </div>\n }\n }\n </div>\n }\n </div>\n <mj-dialog-actions>\n <button mjButton\n (click)=\"confirmAddFromView()\"\n [disabled]=\"showAddFromViewLoader || userViewsToAdd.length === 0\"\n variant=\"primary\">\n Add from {{ userViewsToAdd.length }} View{{ userViewsToAdd.length !== 1 ? 's' : '' }}\n </button>\n <button mjButton\n (click)=\"closeAddFromViewDialog()\"\n [disabled]=\"showAddFromViewLoader\">\n Cancel\n </button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n\n<!-- Share Dialog -->\n@if (showShareDialog && shareDialogConfig) {\n <mj-list-share-dialog\n [config]=\"shareDialogConfig\"\n [visible]=\"showShareDialog\"\n (complete)=\"onShareDialogComplete($event)\"\n (cancel)=\"onShareDialogCancel()\"\n (manageInvitations)=\"openInvitationsDialog()\"\n (viewAuditLog)=\"openAuditLogDialog()\">\n </mj-list-share-dialog>\n}\n\n<!-- Invitations Dialog (mockup 16). Opened from the share dialog's\n \"Manage Invitations\" button. Per-list \u2014 bound to record.ID. -->\n@if (showInvitationsDialog && record?.IsSaved) {\n <mj-dialog\n [Visible]=\"true\"\n [Title]=\"'Invitations \u2014 ' + record.Name\"\n (Close)=\"closeInvitationsDialog()\"\n [MinWidth]=\"640\"\n [Width]=\"900\"\n [Height]=\"640\">\n <div class=\"dialog-content invitations-dialog\">\n <mj-list-invitations\n [Provider]=\"ProviderToUse\"\n [ListID]=\"record.ID\"\n [ListName]=\"record.Name\">\n </mj-list-invitations>\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"closeInvitationsDialog()\" variant=\"outline\">Close</button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n\n<!-- Audit Log Dialog (mockup 18). Opened from the share dialog's\n \"View audit log\" link. Per-list \u2014 bound to record.ID. -->\n@if (showAuditLogDialog && record?.IsSaved) {\n <mj-dialog\n [Visible]=\"true\"\n [Title]=\"'Audit Log \u2014 ' + record.Name\"\n (Close)=\"closeAuditLogDialog()\"\n [MinWidth]=\"720\"\n [Width]=\"980\"\n [Height]=\"680\">\n <div class=\"dialog-content audit-log-dialog\">\n <mj-list-audit-log\n [Provider]=\"ProviderToUse\"\n [ListID]=\"record.ID\">\n </mj-list-audit-log>\n </div>\n <mj-dialog-actions>\n <button mjButton (click)=\"closeAuditLogDialog()\" variant=\"outline\">Close</button>\n </mj-dialog-actions>\n </mj-dialog>\n}\n", styles: ["/* ============================================\n WORLD-CLASS LIST FORM STYLES\n ============================================ */\n\n:host {\n display: block;\n height: 100%;\n}\n\n/* Layout */\n.list-form-explorer {\n display: grid;\n grid-template-areas:\n \"header header\"\n \"nav main\";\n grid-template-columns: 64px 1fr;\n grid-template-rows: auto 1fr;\n height: 100%;\n background: var(--mj-bg-surface-sunken);\n}\n\n/* Header */\n.list-header {\n grid-area: header;\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 24px;\n background: var(--mj-bg-surface);\n border-bottom: 1px solid var(--mj-border-default);\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05);\n}\n\n.header-content {\n display: flex;\n align-items: center;\n gap: 16px;\n}\n\n.header-icon {\n width: 56px;\n height: 56px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-on-primary);\n font-size: 24px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);\n}\n\n.header-info {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.name-row {\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.list-name {\n margin: 0;\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.edit-btn {\n background: none;\n border: none;\n padding: 6px 8px;\n color: var(--mj-text-disabled);\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.edit-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n}\n\n.inline-edit-input {\n padding: 8px 12px;\n border: 2px solid var(--mj-brand-primary);\n border-radius: 6px;\n font-size: inherit;\n background: var(--mj-bg-surface);\n outline: none;\n}\n\n.name-input {\n font-size: 24px;\n font-weight: 600;\n min-width: 300px;\n}\n\n.save-btn, .cancel-btn {\n background: none;\n border: none;\n padding: 8px;\n cursor: pointer;\n border-radius: 4px;\n transition: all 0.15s;\n}\n\n.save-btn {\n color: var(--mj-status-success);\n}\n\n.save-btn:hover {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n}\n\n.cancel-btn {\n color: var(--mj-status-error);\n}\n\n.cancel-btn:hover {\n background: color-mix(in srgb, var(--mj-status-error) 10%, var(--mj-bg-surface));\n}\n\n.entity-badge {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 16px;\n font-size: 13px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.entity-badge i {\n font-size: 12px;\n}\n\n.header-stats {\n display: flex;\n gap: 32px;\n}\n\n.stat-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n min-width: 80px;\n}\n\n.stat-value {\n font-size: 24px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.stat-label {\n font-size: 12px;\n color: var(--mj-text-disabled);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n/* Phone section picker: hidden until the 768px rule below swaps it in for the rail */\n.phone-section-picker {\n display: none;\n}\n\n/* Navigation Rail */\n.nav-rail {\n grid-area: nav;\n display: flex;\n flex-direction: column;\n padding: 16px 8px;\n background: var(--mj-text-primary);\n gap: 4px;\n}\n\n.nav-item {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 4px;\n padding: 12px 8px;\n background: none;\n border: none;\n color: rgba(255, 255, 255, 0.6);\n cursor: pointer;\n border-radius: 8px;\n transition: all 0.2s;\n position: relative;\n}\n\n.nav-item:hover:not(.disabled) {\n background: rgba(255, 255, 255, 0.1);\n color: var(--mj-text-inverse);\n}\n\n.nav-item.active {\n background: color-mix(in srgb, var(--mj-brand-primary) 20%, transparent);\n color: color-mix(in srgb, var(--mj-brand-primary) 60%, white);\n}\n\n.nav-item.active::before {\n content: '';\n position: absolute;\n left: 0;\n top: 50%;\n transform: translateY(-50%);\n width: 3px;\n height: 24px;\n background: var(--mj-brand-primary);\n border-radius: 0 3px 3px 0;\n}\n\n.nav-item.disabled {\n opacity: 0.4;\n cursor: not-allowed;\n}\n\n.nav-item i {\n font-size: 18px;\n}\n\n.nav-label {\n font-size: 10px;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n}\n\n.nav-badge {\n position: absolute;\n top: 6px;\n right: 6px;\n min-width: 18px;\n height: 18px;\n padding: 0 5px;\n background: var(--mj-brand-primary);\n border-radius: 9px;\n font-size: 10px;\n font-weight: 600;\n color: var(--mj-brand-on-primary);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Main Content */\n.main-content {\n grid-area: main;\n padding: 24px;\n overflow-y: auto;\n}\n\n.section {\n animation: fadeIn 0.2s ease-out;\n}\n\n@keyframes fadeIn {\n from { opacity: 0; transform: translateY(10px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.section-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 20px;\n}\n\n.section-header h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.section-actions {\n display: flex;\n gap: 12px;\n align-items: center;\n}\n\n/* Search Box */\n.search-box {\n position: relative;\n display: flex;\n align-items: center;\n}\n\n.search-box i {\n position: absolute;\n left: 12px;\n color: var(--mj-text-disabled);\n}\n\n.search-box input {\n padding: 10px 12px 10px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n font-size: 14px;\n width: 250px;\n transition: all 0.2s;\n}\n\n.search-box input:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n/* Overview Section */\n.overview-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 20px;\n}\n\n.overview-card {\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.card-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.card-header h3 {\n margin: 0;\n font-size: 14px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.card-header h3 i {\n color: var(--mj-text-disabled);\n}\n\n.card-body {\n padding: 20px;\n}\n\n.description-text {\n margin: 0;\n color: var(--mj-text-primary);\n line-height: 1.6;\n}\n\n.description-empty {\n margin: 0;\n color: var(--mj-text-disabled);\n font-style: italic;\n}\n\n.description-input {\n width: 100%;\n resize: vertical;\n font-family: inherit;\n}\n\n.edit-actions {\n display: flex;\n gap: 8px;\n margin-top: 12px;\n}\n\n.btn-primary {\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-brand-on-primary);\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: background 0.2s;\n}\n\n.btn-primary:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 85%, black);\n}\n\n.btn-secondary {\n padding: 8px 16px;\n background: var(--mj-bg-surface);\n color: var(--mj-text-secondary);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-secondary:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.btn-icon {\n background: none;\n border: 1px solid var(--mj-border-default);\n padding: 8px 12px;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s;\n}\n\n.btn-icon:hover {\n background: var(--mj-bg-surface-card);\n border-color: var(--mj-border-strong);\n}\n\n.btn-danger {\n padding: 8px 16px;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n display: flex;\n align-items: center;\n gap: 8px;\n transition: background 0.2s;\n}\n\n.btn-danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 85%, black);\n}\n\n/* Details Card */\n.detail-row {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 0;\n border-bottom: 1px solid var(--mj-bg-surface-card);\n}\n\n.detail-row:last-child {\n border-bottom: none;\n}\n\n.detail-label {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.detail-value {\n font-size: 14px;\n color: var(--mj-text-primary);\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.detail-icon {\n color: var(--mj-text-disabled);\n font-size: 12px;\n}\n\n.owner-badge {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.category-select {\n padding: 6px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n background: var(--mj-bg-surface);\n cursor: pointer;\n}\n\n.category-select:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n}\n\n/* Actions Card */\n.action-btn {\n display: flex;\n align-items: center;\n gap: 12px;\n width: 100%;\n padding: 14px 16px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n cursor: pointer;\n transition: all 0.2s;\n margin-bottom: 8px;\n text-align: left;\n}\n\n.action-btn:last-child {\n margin-bottom: 0;\n}\n\n.action-btn:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n border-color: var(--mj-border-strong);\n}\n\n.action-btn:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n\n.action-btn i {\n font-size: 18px;\n color: var(--mj-brand-primary);\n width: 24px;\n text-align: center;\n}\n\n.action-btn span:first-of-type {\n flex: 1;\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.action-count {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n color: var(--mj-brand-primary);\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.coming-soon {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 600;\n}\n\n/* Items Section */\n.loading-state {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 60px 20px;\n}\n\n.items-table-container {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n overflow: hidden;\n}\n\n.items-toolbar {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 12px 16px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-bottom: 1px solid color-mix(in srgb, var(--mj-brand-primary) 20%, var(--mj-bg-surface));\n}\n\n.selection-count {\n font-size: 14px;\n color: var(--mj-brand-primary);\n font-weight: 500;\n}\n\n.items-table {\n width: 100%;\n border-collapse: collapse;\n}\n\n.items-table th {\n text-align: left;\n padding: 12px 16px;\n font-size: 12px;\n font-weight: 600;\n color: var(--mj-text-secondary);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.items-table td {\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n font-size: 14px;\n color: var(--mj-text-primary);\n}\n\n.items-table tr:last-child td {\n border-bottom: none;\n}\n\n.items-table tr.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.items-table tr:hover:not(.selected) {\n background: var(--mj-bg-surface-card);\n}\n\n.col-checkbox {\n width: 40px;\n}\n\n.col-name {\n width: 35%;\n}\n\n.col-id {\n width: 25%;\n}\n\n.col-added {\n width: 20%;\n}\n\n.col-actions {\n width: 60px;\n text-align: right;\n}\n\n.item-name {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n\n.item-name.loading {\n color: var(--mj-text-disabled);\n}\n\n.item-icon {\n color: var(--mj-text-disabled);\n}\n\n.record-id {\n font-family: 'SF Mono', Monaco, monospace;\n font-size: 12px;\n background: var(--mj-bg-surface-card);\n padding: 4px 8px;\n border-radius: 4px;\n color: var(--mj-text-secondary);\n}\n\n.items-footer {\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-top: 1px solid var(--mj-border-default);\n display: flex;\n align-items: center;\n justify-content: space-between;\n}\n\n.items-pager {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n\n.items-pager .page-label {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n.items-count {\n font-size: 13px;\n color: var(--mj-text-secondary);\n}\n\n/* Sharing Section */\n.coming-soon-banner {\n display: flex;\n align-items: center;\n gap: 20px;\n padding: 24px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n border-radius: 12px;\n margin-bottom: 24px;\n}\n\n.coming-soon-banner > i {\n font-size: 48px;\n color: var(--mj-brand-primary);\n}\n\n.banner-content h3 {\n margin: 0 0 8px;\n color: var(--mj-text-primary);\n}\n\n.banner-content p {\n margin: 0;\n color: var(--mj-text-secondary);\n}\n\n.shares-grid {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n/* Activity Section */\n.activity-timeline {\n background: var(--mj-bg-surface);\n border-radius: 12px;\n padding: 20px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n margin-bottom: 20px;\n}\n\n.timeline-item {\n display: flex;\n gap: 16px;\n padding: 16px 0;\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.timeline-item:last-child {\n border-bottom: none;\n}\n\n.timeline-icon {\n width: 36px;\n height: 36px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n flex-shrink: 0;\n}\n\n.timeline-icon.create {\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n}\n\n.timeline-content {\n flex: 1;\n}\n\n.timeline-text {\n margin: 0 0 4px;\n color: var(--mj-text-primary);\n}\n\n.timeline-date {\n font-size: 13px;\n color: var(--mj-text-disabled);\n}\n\n.activity-info {\n background: color-mix(in srgb, var(--mj-status-warning) 10%, var(--mj-bg-surface));\n border-radius: 8px;\n padding: 16px;\n}\n\n.activity-info p {\n margin: 0;\n color: var(--mj-status-warning);\n font-size: 14px;\n}\n\n/* Settings Section */\n.settings-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n}\n\n/* Add Buttons in Items Section */\n.add-buttons {\n display: flex;\n gap: 8px;\n}\n\n.add-buttons .btn-secondary {\n display: flex;\n align-items: center;\n gap: 6px;\n}\n\n/* Sharing Summary */\n.sharing-summary {\n display: flex;\n gap: 16px;\n margin-bottom: 24px;\n}\n\n.summary-card {\n display: flex;\n align-items: center;\n gap: 16px;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);\n flex: 1;\n max-width: 280px;\n}\n\n.summary-icon {\n width: 48px;\n height: 48px;\n border-radius: 12px;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-brand-primary);\n font-size: 20px;\n}\n\n.summary-icon.pending {\n background: color-mix(in srgb, var(--mj-status-warning) 15%, var(--mj-bg-surface));\n color: var(--mj-status-warning);\n}\n\n.summary-content {\n display: flex;\n flex-direction: column;\n}\n\n.summary-value {\n font-size: 28px;\n font-weight: 600;\n color: var(--mj-text-primary);\n line-height: 1;\n}\n\n.summary-label {\n font-size: 13px;\n color: var(--mj-text-secondary);\n margin-top: 4px;\n}\n\n.readonly-notice {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n color: var(--mj-text-secondary);\n font-size: 14px;\n}\n\n.readonly-notice i {\n color: var(--mj-text-disabled);\n}\n\n/* Dialog Styles */\n.dialog-content {\n padding: 16px 0;\n}\n\n.dialog-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n min-height: 200px;\n gap: 16px;\n}\n\n.dialog-instruction {\n margin: 0 0 16px;\n color: var(--mj-text-secondary);\n}\n\n/* Add Records Dialog */\n.add-records-dialog .search-section {\n margin-bottom: 16px;\n}\n\n.add-records-dialog .search-input {\n width: 100%;\n}\n\n.add-records-dialog .search-hint {\n display: block;\n font-size: 12px;\n color: var(--mj-text-disabled);\n margin-top: 4px;\n}\n\n.add-records-dialog .records-list {\n min-height: 280px;\n max-height: 320px;\n overflow-y: auto;\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n}\n\n.add-records-dialog .list-loading {\n display: flex;\n justify-content: center;\n padding: 40px;\n}\n\n.add-records-dialog .selection-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n}\n\n.add-records-dialog .selection-info {\n margin-left: auto;\n font-size: 12px;\n color: var(--mj-text-secondary);\n}\n\n.add-records-dialog .records-scroll {\n max-height: 260px;\n overflow-y: auto;\n}\n\n.add-records-dialog .record-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.add-records-dialog .record-item:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.add-records-dialog .record-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.add-records-dialog .record-item.in-list {\n background: var(--mj-bg-surface-card);\n cursor: default;\n}\n\n.add-records-dialog .record-checkbox {\n width: 20px;\n display: flex;\n justify-content: center;\n}\n\n.add-records-dialog .in-list-icon {\n color: var(--mj-status-success);\n}\n\n.add-records-dialog .record-name {\n flex: 1;\n font-size: 14px;\n}\n\n.add-records-dialog .in-list-badge {\n padding: 2px 8px;\n background: color-mix(in srgb, var(--mj-status-success) 10%, var(--mj-bg-surface));\n color: var(--mj-status-success);\n border-radius: 4px;\n font-size: 11px;\n font-weight: 500;\n}\n\n/* Add From View Dialog */\n.views-list {\n border: 1px solid var(--mj-border-default);\n border-radius: 8px;\n max-height: 320px;\n overflow-y: auto;\n}\n\n.view-item {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 14px 16px;\n border-bottom: 1px solid var(--mj-border-default);\n cursor: pointer;\n transition: background 0.15s;\n}\n\n.view-item:last-child {\n border-bottom: none;\n}\n\n.view-item:hover {\n background: var(--mj-bg-surface-card);\n}\n\n.view-item.selected {\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n}\n\n.view-item .view-icon {\n color: var(--mj-brand-primary);\n}\n\n.view-item .view-name {\n flex: 1;\n font-size: 14px;\n}\n\n/* Responsive */\n@media (max-width: 1024px) {\n .list-form-explorer {\n grid-template-columns: 1fr;\n grid-template-areas:\n \"header\"\n \"nav\"\n \"main\";\n }\n\n .nav-rail {\n flex-direction: row;\n padding: 8px 16px;\n overflow-x: auto;\n }\n\n .nav-item {\n flex-direction: row;\n padding: 10px 16px;\n gap: 8px;\n }\n\n .nav-item::before {\n display: none;\n }\n\n .header-stats {\n display: none;\n }\n}\n\n@media (max-width: 768px) {\n /* The rail becomes one section-picker button in the nav grid area (same pattern as the\n standard record form). */\n .nav-rail {\n display: none;\n }\n\n .phone-section-picker {\n grid-area: nav;\n display: block;\n padding: 4px 8px;\n border-bottom: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface);\n }\n\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", ".content-margin {\n margin: 10px;\n}\n\n\na {\n font-size: 14px;\n font-weight: bolder;\n}\n\n.tab-header-icon {\n margin-right: 5px;\n}\n\n.record-form {\n display: block;\n flex-direction: column;\n background-color: var(--mj-bg-surface);\n padding: 0;\n min-height: 100vh;\n}\n\n.record-form-group {\n margin-top: 0px;\n background-color: var(--mj-bg-surface);\n}\n\nbutton {\n margin-right: 5px;\n}\n\n.record-form h2 {\n margin-bottom: 10px;\n}\n\n.record-form-row {\n display: grid;\n grid-template-columns: auto 1fr;\n align-items: start;\n gap: 10px;\n margin-bottom: 12px;\n padding-top: 5px;\n padding-bottom: 5px;\n}\n\n.record-form .record-form-row > :first-child {\n font-weight: bold;\n padding-right: 10px;\n}\n\n.record-form .record-form-row > span {\n white-space: pre-line;\n max-height: 300px;\n overflow: auto;\n}\n\n@media (min-width: 768px) {\n .record-form-row {\n flex-direction: row;\n align-items: center;\n }\n\n .record-form-row label {\n width: 240px;\n margin-bottom: 0;\n }\n}\n\n/* Collapsible Panel Styles */\n.form-panels-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n padding: 16px;\n background-color: var(--mj-bg-surface);\n}\n\n/* All field sections take full width */\n.form-panels-container > .form-card {\n width: 100%;\n}\n\n/* Related entity grid container - responsive layout */\n.form-panels-container .related-entity-grid {\n display: grid;\n grid-template-columns: 1fr;\n gap: 16px;\n width: 100%;\n}\n\n/* Responsive multi-column layout for related entities on wider screens */\n@media (min-width: 1400px) {\n .form-panels-container .related-entity-grid {\n grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));\n }\n}\n\n.form-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: 0 2px 4px var(--mj-shadow-sm);\n overflow: hidden;\n}\n\n.collapsible-card {\n overflow: hidden;\n}\n\n.collapsible-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 20px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n cursor: pointer;\n user-select: none;\n transition: all 0.3s ease;\n}\n\n.collapsible-header:hover {\n background: var(--mj-bg-surface-sunken);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.collapsible-title {\n display: flex;\n align-items: center;\n gap: 12px;\n flex: 1;\n}\n\n.collapsible-title i {\n font-size: 20px;\n color: var(--mj-brand-primary);\n}\n\n.collapsible-title h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n}\n\n.collapsible-header .collapse-icon {\n color: var(--mj-text-muted);\n transition: transform 0.3s ease;\n}\n\n.collapsible-body {\n max-height: 2000px;\n overflow: hidden;\n transition: max-height 0.4s ease, padding 0.4s ease, opacity 0.3s ease;\n opacity: 1;\n}\n\n.collapsible-body.collapsed {\n max-height: 0;\n padding: 0;\n opacity: 0;\n}\n\n.form-body {\n padding: 24px;\n}\n\n/* Related Entity Sections - Visual Distinction */\n.form-card.related-entity {\n background: var(--mj-bg-surface-card);\n border-left: 3px solid var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-header {\n background: var(--mj-bg-surface-sunken);\n}\n\n.form-card.related-entity .collapsible-header:hover {\n background: var(--mj-bg-surface-card);\n border-bottom-color: var(--mj-brand-primary);\n}\n\n.form-card.related-entity .collapsible-title i {\n color: var(--mj-brand-primary);\n}\n\n/* Section Controls */\n.form-section-controls {\n display: flex;\n gap: 10px;\n padding: 14px 18px;\n background: var(--mj-bg-surface-card);\n border-bottom: 2px solid var(--mj-border-default);\n align-items: center;\n flex-wrap: wrap;\n box-shadow: 0 1px 3px var(--mj-shadow-sm);\n}\n\n.form-section-controls .control-group {\n display: flex;\n gap: 8px;\n align-items: center;\n}\n\n.form-section-controls button {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n background: var(--mj-bg-surface-card);\n color: var(--mj-text-secondary);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.2s;\n margin-right: 0;\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-weight: 500;\n}\n\n.form-section-controls button:hover {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border-color: var(--mj-brand-primary);\n transform: translateY(-1px);\n box-shadow: 0 2px 4px var(--mj-shadow-md);\n}\n\n.form-section-controls button:active {\n transform: translateY(0);\n}\n\n.form-section-controls button i {\n margin-right: 0;\n font-size: 14px;\n}\n\n.form-section-controls .section-search {\n padding: 8px 14px;\n font-size: 13px;\n border: 1px solid var(--mj-border-strong);\n border-radius: 6px;\n width: 240px;\n transition: all 0.2s;\n background: var(--mj-bg-surface);\n color: var(--mj-text-primary);\n}\n\n.form-section-controls .section-search:focus {\n outline: none;\n border-color: var(--mj-brand-primary);\n box-shadow: 0 0 0 3px color-mix(in srgb, var(--mj-brand-primary) 10%, transparent);\n}\n\n.form-section-controls .section-search::placeholder {\n color: var(--mj-text-muted);\n font-style: italic;\n}\n\n.form-section-controls .section-count {\n font-size: 13px;\n color: var(--mj-text-muted);\n margin-left: auto;\n font-weight: 500;\n}\n\n/* Hidden sections for search filter */\n.form-card.search-hidden {\n display: none;\n}\n\n/* Section count badge */\n.section-count-badge {\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n padding: 2px 8px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n/* Search highlighting in section names */\n.collapsible-title h3 .search-highlight {\n background-color: var(--mj-status-warning);\n color: var(--mj-text-primary);\n padding: 2px 4px;\n border-radius: 3px;\n font-weight: 700;\n}\n\n/* Row count badge in section headers */\n.collapsible-title .row-count-badge {\n background: var(--mj-status-success);\n color: var(--mj-text-inverse);\n padding: 3px 6px 2px 6px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n margin-left: 8px;\n vertical-align: middle;\n position: relative;\n top: -2px;\n display: inline-block;\n line-height: 1;\n}\n\n/* Gray badge for zero rows (loaded but empty) */\n.collapsible-title .row-count-badge.zero-rows {\n background: var(--mj-text-muted);\n}\n"] }]
|
|
2306
2323
|
}], null, null); })();
|
|
2307
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJListFormComponentExtended, { className: "MJListFormComponentExtended", filePath: "src/lib/custom/Lists/list-form.component.ts", lineNumber:
|
|
2324
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(MJListFormComponentExtended, { className: "MJListFormComponentExtended", filePath: "src/lib/custom/Lists/list-form.component.ts", lineNumber: 57 }); })();
|
|
2308
2325
|
//# sourceMappingURL=list-form.component.js.map
|