@memberjunction/ng-dashboards 5.11.0 → 5.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AI/components/agents/agent-configuration.component.d.ts +34 -2
- package/dist/AI/components/agents/agent-configuration.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-configuration.component.js +586 -223
- package/dist/AI/components/agents/agent-configuration.component.js.map +1 -1
- package/dist/AI/components/agents/agent-editor.component.js +2 -2
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts +8 -0
- package/dist/AI/components/agents/agent-filter-panel.component.d.ts.map +1 -1
- package/dist/AI/components/agents/agent-filter-panel.component.js +85 -52
- package/dist/AI/components/agents/agent-filter-panel.component.js.map +1 -1
- package/dist/AI/components/charts/performance-heatmap.component.d.ts +1 -0
- package/dist/AI/components/charts/performance-heatmap.component.d.ts.map +1 -1
- package/dist/AI/components/charts/performance-heatmap.component.js +27 -5
- package/dist/AI/components/charts/performance-heatmap.component.js.map +1 -1
- package/dist/AI/components/charts/time-series-chart.component.d.ts +5 -0
- package/dist/AI/components/charts/time-series-chart.component.d.ts.map +1 -1
- package/dist/AI/components/charts/time-series-chart.component.js +23 -8
- package/dist/AI/components/charts/time-series-chart.component.js.map +1 -1
- package/dist/AI/components/execution-monitoring.component.js +2 -2
- package/dist/AI/components/execution-monitoring.component.js.map +1 -1
- package/dist/AI/components/models/model-management.component.js +2 -2
- package/dist/AI/components/prompts/model-prompt-priority-matrix.component.js +2 -2
- package/dist/AI/components/prompts/prompt-filter-panel.component.js +2 -2
- package/dist/AI/components/prompts/prompt-management.component.js +3 -3
- package/dist/AI/components/prompts/prompt-management.component.js.map +1 -1
- package/dist/AI/components/prompts/prompt-version-control.component.js +2 -2
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts +83 -0
- package/dist/AI/components/requests/agent-requests-resource.component.d.ts.map +1 -0
- package/dist/AI/components/requests/agent-requests-resource.component.js +547 -0
- package/dist/AI/components/requests/agent-requests-resource.component.js.map +1 -0
- package/dist/AI/components/system/system-config-filter-panel.component.js +2 -2
- package/dist/AI/components/system/system-configuration.component.js +2 -2
- package/dist/AI/components/widgets/kpi-card.component.js +7 -7
- package/dist/AI/components/widgets/kpi-card.component.js.map +1 -1
- package/dist/AI/components/widgets/live-execution-widget.component.d.ts.map +1 -1
- package/dist/AI/components/widgets/live-execution-widget.component.js +6 -6
- package/dist/AI/components/widgets/live-execution-widget.component.js.map +1 -1
- package/dist/AI/index.d.ts +1 -0
- package/dist/AI/index.d.ts.map +1 -1
- package/dist/AI/index.js +2 -0
- package/dist/AI/index.js.map +1 -1
- package/dist/APIKeys/api-applications-panel.component.js +3 -3
- package/dist/APIKeys/api-applications-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-create-dialog.component.js +3 -3
- package/dist/APIKeys/api-key-create-dialog.component.js.map +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.js +1 -1
- package/dist/APIKeys/api-key-edit-panel.component.js.map +1 -1
- package/dist/APIKeys/api-key-list.component.js +3 -3
- package/dist/APIKeys/api-key-list.component.js.map +1 -1
- package/dist/APIKeys/api-keys-resource.component.js +1 -1
- package/dist/APIKeys/api-keys-resource.component.js.map +1 -1
- package/dist/APIKeys/api-scopes-panel.component.js +2 -2
- package/dist/APIKeys/api-usage-panel.component.js +2 -2
- package/dist/Actions/components/actions-overview.component.js +2 -2
- package/dist/Actions/components/execution-monitoring.component.js +2 -2
- package/dist/Actions/components/explorer/action-breadcrumb.component.js +2 -2
- package/dist/Actions/components/explorer/action-card.component.js +2 -2
- package/dist/Actions/components/explorer/action-explorer.component.js +2 -2
- package/dist/Actions/components/explorer/action-list-item.component.js +2 -2
- package/dist/Actions/components/explorer/action-toolbar.component.js +2 -2
- package/dist/Actions/components/explorer/action-tree-panel.component.js +2 -2
- package/dist/Actions/components/explorer/new-action-panel.component.js +2 -2
- package/dist/Actions/components/explorer/new-action-panel.component.js.map +1 -1
- package/dist/Actions/components/explorer/new-category-panel.component.js +2 -2
- package/dist/Actions/components/explorer/new-category-panel.component.js.map +1 -1
- package/dist/Communication/communication-dashboard.component.js +2 -2
- package/dist/Communication/communication-logs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-logs-resource.component.js +3 -3
- package/dist/Communication/communication-logs-resource.component.js.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-monitor-resource.component.js +5 -5
- package/dist/Communication/communication-monitor-resource.component.js.map +1 -1
- package/dist/Communication/communication-providers-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-providers-resource.component.js +3 -3
- package/dist/Communication/communication-providers-resource.component.js.map +1 -1
- package/dist/Communication/communication-runs-resource.component.d.ts.map +1 -1
- package/dist/Communication/communication-runs-resource.component.js +3 -3
- package/dist/Communication/communication-runs-resource.component.js.map +1 -1
- package/dist/Communication/communication-templates-resource.component.js +2 -2
- package/dist/Communication/communication-templates-resource.component.js.map +1 -1
- package/dist/ComponentStudio/component-studio-dashboard.component.js +2 -2
- package/dist/ComponentStudio/components/ai-assistant/ai-assistant-panel.component.js +2 -2
- package/dist/ComponentStudio/components/artifact-load-dialog.component.js +2 -2
- package/dist/ComponentStudio/components/artifact-selection-dialog.component.js +2 -2
- package/dist/ComponentStudio/components/browser/component-browser.component.js +2 -2
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js +2 -2
- package/dist/ComponentStudio/components/editors/code-editor-panel.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js +2 -2
- package/dist/ComponentStudio/components/editors/data-requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js +2 -2
- package/dist/ComponentStudio/components/editors/requirements-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/editors/spec-editor.component.js +2 -2
- package/dist/ComponentStudio/components/editors/spec-editor.component.js.map +1 -1
- package/dist/ComponentStudio/components/new-component-dialog/new-component-dialog.component.js +2 -2
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js +2 -2
- package/dist/ComponentStudio/components/save-version-dialog/save-version-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/text-import-dialog.component.js +2 -2
- package/dist/ComponentStudio/components/text-import-dialog.component.js.map +1 -1
- package/dist/ComponentStudio/components/workspace/component-preview.component.js +2 -2
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.js +2 -2
- package/dist/ComponentStudio/components/workspace/editor-tabs.component.js.map +1 -1
- package/dist/Credentials/components/credentials-audit-resource.component.js +9 -9
- package/dist/Credentials/components/credentials-audit-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-categories-resource.component.js +11 -3
- package/dist/Credentials/components/credentials-categories-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-list-resource.component.js +2 -2
- package/dist/Credentials/components/credentials-overview-resource.component.d.ts.map +1 -1
- package/dist/Credentials/components/credentials-overview-resource.component.js +12 -11
- package/dist/Credentials/components/credentials-overview-resource.component.js.map +1 -1
- package/dist/Credentials/components/credentials-types-resource.component.js +9 -9
- package/dist/Credentials/components/credentials-types-resource.component.js.map +1 -1
- package/dist/Credentials/credentials-dashboard.component.js +2 -2
- package/dist/DashboardBrowser/dashboard-browser-resource.component.js +2 -2
- package/dist/DashboardBrowser/dashboard-share-dialog.component.js +2 -2
- package/dist/DataExplorer/components/filter-dialog/filter-dialog.component.js +2 -2
- package/dist/DataExplorer/components/navigation-panel/navigation-panel.component.js +2 -2
- package/dist/DataExplorer/components/view-selector/view-selector.component.js +2 -2
- package/dist/DataExplorer/data-explorer-dashboard.component.js +4 -4
- package/dist/DataExplorer/data-explorer-dashboard.component.js.map +1 -1
- package/dist/Home/home-dashboard.component.js +2 -2
- package/dist/Integration/components/activity/activity.component.d.ts +1 -1
- package/dist/Integration/components/activity/activity.component.d.ts.map +1 -1
- package/dist/Integration/components/activity/activity.component.js +5 -5
- package/dist/Integration/components/activity/activity.component.js.map +1 -1
- package/dist/Integration/components/connections/connections.component.d.ts +31 -2
- package/dist/Integration/components/connections/connections.component.d.ts.map +1 -1
- package/dist/Integration/components/connections/connections.component.js +753 -412
- package/dist/Integration/components/connections/connections.component.js.map +1 -1
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js +3 -3
- package/dist/Integration/components/mapping-workspace/mapping-workspace.component.js.map +1 -1
- package/dist/Integration/components/overview/overview.component.d.ts +0 -1
- package/dist/Integration/components/overview/overview.component.d.ts.map +1 -1
- package/dist/Integration/components/overview/overview.component.js +3 -6
- package/dist/Integration/components/overview/overview.component.js.map +1 -1
- package/dist/Integration/components/pipelines/pipelines.component.js +3 -3
- package/dist/Integration/components/pipelines/pipelines.component.js.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.d.ts +20 -0
- package/dist/Integration/components/schedules/schedules.component.d.ts.map +1 -1
- package/dist/Integration/components/schedules/schedules.component.js +97 -5
- package/dist/Integration/components/schedules/schedules.component.js.map +1 -1
- package/dist/Integration/components/visual-editor/visual-editor.component.js +2 -2
- package/dist/Integration/components/widgets/integration-card.component.d.ts.map +1 -1
- package/dist/Integration/components/widgets/integration-card.component.js +5 -1
- package/dist/Integration/components/widgets/integration-card.component.js.map +1 -1
- package/dist/Integration/components/widgets/run-history-panel.component.js +2 -2
- package/dist/Integration/components/widgets/run-history-panel.component.js.map +1 -1
- package/dist/Integration/integration.module.d.ts +2 -1
- package/dist/Integration/integration.module.d.ts.map +1 -1
- package/dist/Integration/integration.module.js +7 -3
- package/dist/Integration/integration.module.js.map +1 -1
- package/dist/Integration/services/integration-data.service.d.ts +27 -2
- package/dist/Integration/services/integration-data.service.d.ts.map +1 -1
- package/dist/Integration/services/integration-data.service.js +107 -4
- package/dist/Integration/services/integration-data.service.js.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-browse-resource.component.js +25 -24
- package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-categories-resource.component.js +2 -2
- package/dist/Lists/components/lists-categories-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
- package/dist/Lists/components/lists-my-lists-resource.component.js +26 -25
- package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
- package/dist/Lists/components/lists-operations-resource.component.js +2 -2
- package/dist/Lists/components/lists-operations-resource.component.js.map +1 -1
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js +3 -3
- package/dist/Lists/components/venn-diagram/venn-diagram.component.js.map +1 -1
- package/dist/MCP/components/mcp-connection-dialog.component.js +2 -2
- package/dist/MCP/components/mcp-log-detail-panel.component.js +2 -2
- package/dist/MCP/components/mcp-log-detail-panel.component.js.map +1 -1
- package/dist/MCP/components/mcp-server-dialog.component.js +2 -2
- package/dist/MCP/components/mcp-test-tool-dialog.component.js +2 -2
- package/dist/MCP/components/mcp-test-tool-dialog.component.js.map +1 -1
- package/dist/MCP/mcp-dashboard.component.js +2 -2
- package/dist/MCP/mcp-filter-panel.component.js +2 -2
- package/dist/QueryBrowser/query-browser-resource.component.js +7 -7
- package/dist/QueryBrowser/query-browser-resource.component.js.map +1 -1
- package/dist/Scheduling/components/index.d.ts +0 -1
- package/dist/Scheduling/components/index.d.ts.map +1 -1
- package/dist/Scheduling/components/index.js +0 -1
- package/dist/Scheduling/components/index.js.map +1 -1
- package/dist/Scheduling/components/scheduling-activity.component.js +2 -2
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts +6 -9
- package/dist/Scheduling/components/scheduling-jobs.component.d.ts.map +1 -1
- package/dist/Scheduling/components/scheduling-jobs.component.js +118 -110
- package/dist/Scheduling/components/scheduling-jobs.component.js.map +1 -1
- package/dist/Scheduling/components/scheduling-overview.component.js +3 -3
- package/dist/Scheduling/components/scheduling-overview.component.js.map +1 -1
- package/dist/Scheduling/scheduling-dashboard.component.js +2 -2
- package/dist/SystemDiagnostics/system-diagnostics.component.js +4 -4
- package/dist/SystemDiagnostics/system-diagnostics.component.js.map +1 -1
- package/dist/Testing/components/testing-analytics.component.js +2 -2
- package/dist/Testing/components/testing-analytics.component.js.map +1 -1
- package/dist/Testing/components/testing-dashboard-tab.component.js +4 -4
- package/dist/Testing/components/testing-dashboard-tab.component.js.map +1 -1
- package/dist/Testing/components/testing-explorer.component.js +2 -2
- package/dist/Testing/components/testing-explorer.component.js.map +1 -1
- package/dist/Testing/components/testing-review.component.d.ts.map +1 -1
- package/dist/Testing/components/testing-review.component.js +5 -5
- package/dist/Testing/components/testing-review.component.js.map +1 -1
- package/dist/Testing/components/testing-runs.component.js +2 -2
- package/dist/Testing/components/testing-runs.component.js.map +1 -1
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.js +2 -2
- package/dist/Testing/components/widgets/oracle-breakdown-table.component.js.map +1 -1
- package/dist/Testing/components/widgets/suite-tree.component.js +4 -4
- package/dist/Testing/components/widgets/suite-tree.component.js.map +1 -1
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js +2 -2
- package/dist/Testing/components/widgets/test-run-detail-panel.component.js.map +1 -1
- package/dist/Testing/testing-dashboard.component.js +2 -2
- package/dist/VersionHistory/components/diff-resource.component.js +2 -2
- package/dist/VersionHistory/components/graph-resource.component.js +2 -2
- package/dist/VersionHistory/components/labels-resource.component.js +3 -3
- package/dist/VersionHistory/components/labels-resource.component.js.map +1 -1
- package/dist/VersionHistory/components/restore-resource.component.js +3 -3
- package/dist/VersionHistory/components/restore-resource.component.js.map +1 -1
- package/dist/__tests__/integration-data-service.test.js +1 -0
- package/dist/__tests__/integration-data-service.test.js.map +1 -1
- package/dist/module.d.ts +52 -49
- package/dist/module.d.ts.map +1 -1
- package/dist/module.js +25 -6
- package/dist/module.js.map +1 -1
- package/dist/public-api.d.ts +1 -1
- package/dist/public-api.d.ts.map +1 -1
- package/dist/public-api.js +1 -1
- package/dist/public-api.js.map +1 -1
- package/package.json +42 -40
- package/dist/Scheduling/components/job-slideout.component.d.ts +0 -45
- package/dist/Scheduling/components/job-slideout.component.d.ts.map +0 -1
- package/dist/Scheduling/components/job-slideout.component.js +0 -459
- package/dist/Scheduling/components/job-slideout.component.js.map +0 -1
|
@@ -503,41 +503,37 @@ function ListsMyListsResource_Conditional_26_Template(rf, ctx) { if (rf & 1) {
|
|
|
503
503
|
i0.ɵɵadvance();
|
|
504
504
|
i0.ɵɵtextInterpolate1(" ", ctx_r2.isDeleting ? "Deleting..." : "Delete", " ");
|
|
505
505
|
} }
|
|
506
|
-
function
|
|
507
|
-
const
|
|
508
|
-
i0.ɵɵelementStart(0, "div",
|
|
509
|
-
i0.ɵɵlistener("
|
|
506
|
+
function ListsMyListsResource_Conditional_27_For_3_Template(rf, ctx) { if (rf & 1) {
|
|
507
|
+
const _r26 = i0.ɵɵgetCurrentView();
|
|
508
|
+
i0.ɵɵelementStart(0, "div", 109);
|
|
509
|
+
i0.ɵɵlistener("mousedown", function ListsMyListsResource_Conditional_27_For_3_Template_div_mousedown_0_listener($event) { const entity_r27 = i0.ɵɵrestoreView(_r26).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.selectEntity(entity_r27); return i0.ɵɵresetView($event.preventDefault()); });
|
|
510
510
|
i0.ɵɵtext(1);
|
|
511
511
|
i0.ɵɵelementEnd();
|
|
512
512
|
} if (rf & 2) {
|
|
513
|
-
const
|
|
513
|
+
const entity_r27 = ctx.$implicit;
|
|
514
514
|
i0.ɵɵadvance();
|
|
515
|
-
i0.ɵɵtextInterpolate1(" ",
|
|
515
|
+
i0.ɵɵtextInterpolate1(" ", entity_r27.Name, " ");
|
|
516
516
|
} }
|
|
517
|
-
function
|
|
518
|
-
i0.ɵɵelementStart(0, "div",
|
|
517
|
+
function ListsMyListsResource_Conditional_27_Conditional_4_Template(rf, ctx) { if (rf & 1) {
|
|
518
|
+
i0.ɵɵelementStart(0, "div", 108);
|
|
519
519
|
i0.ɵɵtext(1, " No entities found ");
|
|
520
520
|
i0.ɵɵelementEnd();
|
|
521
521
|
} }
|
|
522
522
|
function ListsMyListsResource_Conditional_27_Template(rf, ctx) { if (rf & 1) {
|
|
523
|
-
const _r26 = i0.ɵɵgetCurrentView();
|
|
524
523
|
i0.ɵɵelementStart(0, "div", 105)(1, "div", 106);
|
|
525
|
-
i0.ɵɵ
|
|
526
|
-
i0.ɵɵ
|
|
527
|
-
i0.ɵɵelementStart(2, "div", 107);
|
|
528
|
-
i0.ɵɵrepeaterCreate(3, ListsMyListsResource_Conditional_27_For_4_Template, 2, 1, "div", 108, i0.ɵɵrepeaterTrackByIdentity);
|
|
529
|
-
i0.ɵɵconditionalCreate(5, ListsMyListsResource_Conditional_27_Conditional_5_Template, 2, 0, "div", 109);
|
|
524
|
+
i0.ɵɵrepeaterCreate(2, ListsMyListsResource_Conditional_27_For_3_Template, 2, 1, "div", 107, i0.ɵɵrepeaterTrackByIdentity);
|
|
525
|
+
i0.ɵɵconditionalCreate(4, ListsMyListsResource_Conditional_27_Conditional_4_Template, 2, 0, "div", 108);
|
|
530
526
|
i0.ɵɵelementEnd()();
|
|
531
527
|
} if (rf & 2) {
|
|
532
528
|
const ctx_r2 = i0.ɵɵnextContext();
|
|
533
529
|
i0.ɵɵstyleProp("top", ctx_r2.entityDropdownPosition.top, "px")("left", ctx_r2.entityDropdownPosition.left, "px")("width", ctx_r2.entityDropdownPosition.width, "px");
|
|
534
530
|
i0.ɵɵclassProp("dropdown-above", ctx_r2.entityDropdownPosition.openAbove);
|
|
535
|
-
i0.ɵɵadvance(
|
|
531
|
+
i0.ɵɵadvance();
|
|
536
532
|
i0.ɵɵclassProp("open-above", ctx_r2.entityDropdownPosition.openAbove);
|
|
537
533
|
i0.ɵɵadvance();
|
|
538
534
|
i0.ɵɵrepeater(ctx_r2.filteredEntities);
|
|
539
535
|
i0.ɵɵadvance(2);
|
|
540
|
-
i0.ɵɵconditional(ctx_r2.filteredEntities.length === 0 ?
|
|
536
|
+
i0.ɵɵconditional(ctx_r2.filteredEntities.length === 0 ? 4 : -1);
|
|
541
537
|
} }
|
|
542
538
|
let ListsMyListsResource = class ListsMyListsResource extends BaseResourceComponent {
|
|
543
539
|
cdr;
|
|
@@ -588,10 +584,10 @@ let ListsMyListsResource = class ListsMyListsResource extends BaseResourceCompon
|
|
|
588
584
|
this.elementRef = elementRef;
|
|
589
585
|
}
|
|
590
586
|
onDocumentClick(event) {
|
|
591
|
-
// Close entity dropdown when clicking outside
|
|
587
|
+
// Close entity dropdown when clicking outside the input or dropdown
|
|
592
588
|
if (this.showEntityDropdown) {
|
|
593
589
|
const target = event.target;
|
|
594
|
-
if (!target.closest('.custom-select-wrapper')) {
|
|
590
|
+
if (!target.closest('.custom-select-wrapper') && !target.closest('.entity-dropdown-portal')) {
|
|
595
591
|
this.showEntityDropdown = false;
|
|
596
592
|
}
|
|
597
593
|
}
|
|
@@ -865,6 +861,12 @@ let ListsMyListsResource = class ListsMyListsResource extends BaseResourceCompon
|
|
|
865
861
|
filterEntities(term) {
|
|
866
862
|
const lowerTerm = term.toLowerCase();
|
|
867
863
|
this.filteredEntities = this.availableEntities.filter(e => e.Name.toLowerCase().includes(lowerTerm));
|
|
864
|
+
// Ensure dropdown is visible while typing
|
|
865
|
+
if (!this.showEntityDropdown && term) {
|
|
866
|
+
this.showEntityDropdown = true;
|
|
867
|
+
}
|
|
868
|
+
// Clear selection when user modifies the search text
|
|
869
|
+
this.selectedEntityId = '';
|
|
868
870
|
}
|
|
869
871
|
openEntityDropdown(inputElement) {
|
|
870
872
|
const rect = inputElement.getBoundingClientRect();
|
|
@@ -1038,7 +1040,7 @@ let ListsMyListsResource = class ListsMyListsResource extends BaseResourceCompon
|
|
|
1038
1040
|
static ɵfac = function ListsMyListsResource_Factory(__ngFactoryType__) { return new (__ngFactoryType__ || ListsMyListsResource)(i0.ɵɵdirectiveInject(i0.ChangeDetectorRef), i0.ɵɵdirectiveInject(i1.TabService), i0.ɵɵdirectiveInject(i2.MJNotificationService), i0.ɵɵdirectiveInject(i0.ElementRef)); };
|
|
1039
1041
|
static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ListsMyListsResource, selectors: [["mj-lists-my-lists-resource"]], hostBindings: function ListsMyListsResource_HostBindings(rf, ctx) { if (rf & 1) {
|
|
1040
1042
|
i0.ɵɵlistener("click", function ListsMyListsResource_click_HostBindingHandler($event) { return ctx.onDocumentClick($event); }, i0.ɵɵresolveDocument)("keydown.escape", function ListsMyListsResource_keydown_escape_HostBindingHandler() { return ctx.onEscapeKey(); }, i0.ɵɵresolveDocument);
|
|
1041
|
-
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 28, vars: 13, consts: [["categoryNodeTemplate", ""], ["entityInput", ""], [1, "lists-my-lists-container"], [1, "lists-header"], [1, "header-title"], [1, "fa-solid", "fa-list-check"], [1, "header-actions"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search lists...", 3, "ngModelChange", "ngModel"], [1, "clear-search"], [1, "btn-create", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "loading-container"], [1, "empty-state"], [1, "empty-state", "search-empty"], [1, "lists-content"], [1, "context-menu-overlay"], [1, "context-menu", 3, "top", "left"], [1, "modal-overlay"], [1, "modal-dialog"], [1, "modal-dialog", "confirm-dialog"], [1, "entity-dropdown-portal", 3, "top", "left", "width", "dropdown-above"], [1, "clear-search", 3, "click"], [1, "fa-solid", "fa-times"], ["text", "Loading lists...", "size", "medium"], [1, "empty-state-icon-wrapper"], [1, "icon-bg"], [1, "empty-state-features"], [1, "feature-item"], [1, "fa-solid", "fa-check-circle"], [1, "btn-create-large", 3, "click"], [1, "empty-state-icon-wrapper", "search"], [1, "empty-hint"], [1, "btn-clear", 3, "click"], [1, "view-controls"], ["title", "Grid view", 1, "view-toggle", 3, "click"], [1, "fa-solid", "fa-grip"], ["title", "List view", 1, "view-toggle", 3, "click"], [1, "fa-solid", "fa-list"], [1, "list-count"], [1, "category-tree"], ["role", "list", "aria-label", "My Lists", 1, "lists-grid"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["tabindex", "0", "role", "listitem", 1, "list-card"], ["tabindex", "0", "role", "listitem", 1, "list-card", 3, "click", "keydown.enter", "keydown.space"], [1, "card-header"], ["aria-hidden", "true", 1, "card-icon"], [1, "card-menu"], [1, "menu-btn", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-ellipsis-v"], [1, "card-body"], [1, "card-title"], [1, "card-description"], [1, "card-meta"], [1, "meta-item"], [1, "fa-solid", "fa-database"], [1, "fa-solid", "fa-hashtag"], [1, "card-footer"], [1, "category-tag"], [1, "date-info"], [1, "fa-solid", "fa-folder"], [1, "category-section"], [1, "category-header"], [1, "category-header", "uncategorized"], ["role", "list", 1, "category-lists"], [1, "category-header", 3, "click"], [1, "category-name"], [1, "category-count"], [1, "category-header", "uncategorized", 3, "click"], [1, "fa-solid", "fa-inbox"], ["tabindex", "0", "role", "listitem", 1, "list-row"], ["tabindex", "0", "role", "listitem", 1, "list-row", 3, "click", "keydown.enter", "keydown.space"], ["aria-hidden", "true", 1, "list-icon"], [1, "list-info"], [1, "list-name"], [1, "list-meta"], [1, "list-actions"], [1, "action-btn", 3, "click"], [1, "context-menu-overlay", 3, "click"], [1, "context-menu"], [1, "menu-item", 3, "click"], [1, "fa-solid", "fa-pen"], [1, "fa-solid", "fa-copy"], [1, "menu-divider"], [1, "menu-item", "danger", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "modal-overlay", 3, "click"], [1, "modal-header"], [1, "modal-close", 3, "click"], [1, "modal-body"], [1, "form-group"], ["type", "text", "placeholder", "Enter list name", 1, "form-input", 3, "ngModelChange", "ngModel"], ["placeholder", "Optional description", "rows", "3", 1, "form-input", 3, "ngModelChange", "ngModel"], [1, "custom-select-wrapper"], ["type", "text", "placeholder", "Search and select an entity", 1, "form-input", 3, "ngModelChange", "focus", "ngModel", "disabled"], [1, "form-input", 3, "ngModelChange", "ngModel"], [3, "ngValue"], [1, "modal-footer"], [1, "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "btn-secondary", 3, "click", "disabled"], [1, "warning-text"], [1, "btn-danger", 3, "click"], [1, "btn-secondary", 3, "click"], [1, "entity-dropdown-portal"], [1, "entity-dropdown-
|
|
1043
|
+
} }, standalone: false, features: [i0.ɵɵInheritDefinitionFeature], decls: 28, vars: 13, consts: [["categoryNodeTemplate", ""], ["entityInput", ""], [1, "lists-my-lists-container"], [1, "lists-header"], [1, "header-title"], [1, "fa-solid", "fa-list-check"], [1, "header-actions"], [1, "search-box"], [1, "fa-solid", "fa-search"], ["type", "text", "placeholder", "Search lists...", 3, "ngModelChange", "ngModel"], [1, "clear-search"], [1, "btn-create", 3, "click"], [1, "fa-solid", "fa-plus"], [1, "loading-container"], [1, "empty-state"], [1, "empty-state", "search-empty"], [1, "lists-content"], [1, "context-menu-overlay"], [1, "context-menu", 3, "top", "left"], [1, "modal-overlay"], [1, "modal-dialog"], [1, "modal-dialog", "confirm-dialog"], [1, "entity-dropdown-portal", 3, "top", "left", "width", "dropdown-above"], [1, "clear-search", 3, "click"], [1, "fa-solid", "fa-times"], ["text", "Loading lists...", "size", "medium"], [1, "empty-state-icon-wrapper"], [1, "icon-bg"], [1, "empty-state-features"], [1, "feature-item"], [1, "fa-solid", "fa-check-circle"], [1, "btn-create-large", 3, "click"], [1, "empty-state-icon-wrapper", "search"], [1, "empty-hint"], [1, "btn-clear", 3, "click"], [1, "view-controls"], ["title", "Grid view", 1, "view-toggle", 3, "click"], [1, "fa-solid", "fa-grip"], ["title", "List view", 1, "view-toggle", 3, "click"], [1, "fa-solid", "fa-list"], [1, "list-count"], [1, "category-tree"], ["role", "list", "aria-label", "My Lists", 1, "lists-grid"], [4, "ngTemplateOutlet", "ngTemplateOutletContext"], ["tabindex", "0", "role", "listitem", 1, "list-card"], ["tabindex", "0", "role", "listitem", 1, "list-card", 3, "click", "keydown.enter", "keydown.space"], [1, "card-header"], ["aria-hidden", "true", 1, "card-icon"], [1, "card-menu"], [1, "menu-btn", 3, "click"], ["aria-hidden", "true", 1, "fa-solid", "fa-ellipsis-v"], [1, "card-body"], [1, "card-title"], [1, "card-description"], [1, "card-meta"], [1, "meta-item"], [1, "fa-solid", "fa-database"], [1, "fa-solid", "fa-hashtag"], [1, "card-footer"], [1, "category-tag"], [1, "date-info"], [1, "fa-solid", "fa-folder"], [1, "category-section"], [1, "category-header"], [1, "category-header", "uncategorized"], ["role", "list", 1, "category-lists"], [1, "category-header", 3, "click"], [1, "category-name"], [1, "category-count"], [1, "category-header", "uncategorized", 3, "click"], [1, "fa-solid", "fa-inbox"], ["tabindex", "0", "role", "listitem", 1, "list-row"], ["tabindex", "0", "role", "listitem", 1, "list-row", 3, "click", "keydown.enter", "keydown.space"], ["aria-hidden", "true", 1, "list-icon"], [1, "list-info"], [1, "list-name"], [1, "list-meta"], [1, "list-actions"], [1, "action-btn", 3, "click"], [1, "context-menu-overlay", 3, "click"], [1, "context-menu"], [1, "menu-item", 3, "click"], [1, "fa-solid", "fa-pen"], [1, "fa-solid", "fa-copy"], [1, "menu-divider"], [1, "menu-item", "danger", 3, "click"], [1, "fa-solid", "fa-trash"], [1, "modal-overlay", 3, "click"], [1, "modal-header"], [1, "modal-close", 3, "click"], [1, "modal-body"], [1, "form-group"], ["type", "text", "placeholder", "Enter list name", 1, "form-input", 3, "ngModelChange", "ngModel"], ["placeholder", "Optional description", "rows", "3", 1, "form-input", 3, "ngModelChange", "ngModel"], [1, "custom-select-wrapper"], ["type", "text", "placeholder", "Search and select an entity", 1, "form-input", 3, "ngModelChange", "focus", "ngModel", "disabled"], [1, "form-input", 3, "ngModelChange", "ngModel"], [3, "ngValue"], [1, "modal-footer"], [1, "btn-primary", 3, "click", "disabled"], [1, "fa-solid", "fa-spinner", "fa-spin"], [1, "btn-secondary", 3, "click", "disabled"], [1, "warning-text"], [1, "btn-danger", 3, "click"], [1, "btn-secondary", 3, "click"], [1, "entity-dropdown-portal"], [1, "entity-dropdown-content"], [1, "dropdown-item"], [1, "dropdown-empty"], [1, "dropdown-item", 3, "mousedown"]], template: function ListsMyListsResource_Template(rf, ctx) { if (rf & 1) {
|
|
1042
1044
|
const _r1 = i0.ɵɵgetCurrentView();
|
|
1043
1045
|
i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "div", 4);
|
|
1044
1046
|
i0.ɵɵelement(3, "i", 5);
|
|
@@ -1070,7 +1072,7 @@ let ListsMyListsResource = class ListsMyListsResource extends BaseResourceCompon
|
|
|
1070
1072
|
i0.ɵɵconditionalCreate(24, ListsMyListsResource_Conditional_24_Template, 35, 11, "div", 20);
|
|
1071
1073
|
i0.ɵɵconditionalCreate(25, ListsMyListsResource_Conditional_25_Template, 1, 0, "div", 19);
|
|
1072
1074
|
i0.ɵɵconditionalCreate(26, ListsMyListsResource_Conditional_26_Template, 20, 3, "div", 21);
|
|
1073
|
-
i0.ɵɵconditionalCreate(27, ListsMyListsResource_Conditional_27_Template,
|
|
1075
|
+
i0.ɵɵconditionalCreate(27, ListsMyListsResource_Conditional_27_Template, 5, 11, "div", 22);
|
|
1074
1076
|
i0.ɵɵelementEnd();
|
|
1075
1077
|
} if (rf & 2) {
|
|
1076
1078
|
i0.ɵɵadvance(9);
|
|
@@ -1099,7 +1101,7 @@ let ListsMyListsResource = class ListsMyListsResource extends BaseResourceCompon
|
|
|
1099
1101
|
i0.ɵɵconditional(ctx.showDeleteConfirm ? 26 : -1);
|
|
1100
1102
|
i0.ɵɵadvance();
|
|
1101
1103
|
i0.ɵɵconditional(ctx.showEntityDropdown && !ctx.editingList ? 27 : -1);
|
|
1102
|
-
} }, dependencies: [i3.NgTemplateOutlet, i4.NgSelectOption, i4.ɵNgSelectMultipleOption, i4.DefaultValueAccessor, i4.SelectControlValueAccessor, i4.NgControlStatus, i4.NgModel, i5.LoadingComponent], styles: ["\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n }\n\n .lists-my-lists-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f5f7fa;\n overflow: hidden;\n }\n\n /* Header */\n .lists-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n background: white;\n border-bottom: 1px solid #e0e0e0;\n flex-shrink: 0;\n }\n\n .header-title {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .header-title i {\n font-size: 24px;\n color: #2196F3;\n }\n\n .header-title h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n }\n\n .header-actions {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .search-box {\n position: relative;\n display: flex;\n align-items: center;\n }\n\n .search-box i.fa-search {\n position: absolute;\n left: 12px;\n color: #999;\n }\n\n .search-box input {\n padding: 8px 36px 8px 36px;\n border: 1px solid #ddd;\n border-radius: 20px;\n font-size: 14px;\n width: 250px;\n transition: border-color 0.2s, box-shadow 0.2s;\n }\n\n .search-box input:focus {\n outline: none;\n border-color: #2196F3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n }\n\n .clear-search {\n position: absolute;\n right: 8px;\n background: none;\n border: none;\n color: #999;\n cursor: pointer;\n padding: 4px;\n }\n\n .clear-search:hover {\n color: #666;\n }\n\n .btn-create {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #2196F3;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-create:hover {\n background: #1976D2;\n }\n\n /* Loading */\n .loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n }\n\n /* Empty State */\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding: 48px 40px;\n text-align: center;\n max-width: 480px;\n margin: 0 auto;\n }\n\n .empty-state-icon-wrapper {\n position: relative;\n margin-bottom: 24px;\n }\n\n .empty-state-icon-wrapper .icon-bg {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 120px;\n height: 120px;\n border-radius: 50%;\n background: linear-gradient(135deg, rgba(33, 150, 243, 0.1) 0%, rgba(33, 150, 243, 0.05) 100%);\n }\n\n .empty-state-icon-wrapper > i {\n position: relative;\n font-size: 56px;\n color: #2196F3;\n z-index: 1;\n }\n\n .empty-state-icon-wrapper.search > i {\n font-size: 48px;\n color: #9e9e9e;\n }\n\n .empty-state h3 {\n margin: 0 0 12px;\n font-size: 22px;\n font-weight: 600;\n color: #333;\n }\n\n .empty-state p {\n margin: 0 0 8px;\n color: #666;\n font-size: 15px;\n line-height: 1.5;\n }\n\n .empty-state p:last-of-type {\n margin-bottom: 24px;\n }\n\n .empty-hint {\n color: #999 !important;\n font-size: 13px !important;\n }\n\n .empty-state-features {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 28px;\n text-align: left;\n }\n\n .feature-item {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n color: #555;\n }\n\n .feature-item i {\n font-size: 14px !important;\n color: #4CAF50 !important;\n }\n\n .search-empty .empty-state-icon-wrapper {\n margin-bottom: 20px;\n }\n\n .btn-create-large {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 28px;\n background: linear-gradient(135deg, #2196F3 0%, #1976D2 100%);\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.3);\n }\n\n .btn-create-large:hover {\n background: linear-gradient(135deg, #1976D2 0%, #1565C0 100%);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.4);\n }\n\n .btn-clear {\n padding: 10px 20px;\n background: #f0f0f0;\n border: none;\n border-radius: 6px;\n color: #666;\n cursor: pointer;\n }\n\n .btn-clear:hover {\n background: #e0e0e0;\n }\n\n /* Content */\n .lists-content {\n flex: 1;\n overflow-y: auto;\n padding: 16px 24px;\n }\n\n .view-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 16px;\n }\n\n .view-toggle {\n padding: 8px;\n background: white;\n border: 1px solid #ddd;\n border-radius: 4px;\n color: #666;\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .view-toggle:hover {\n background: #f5f5f5;\n }\n\n .view-toggle.active {\n background: #2196F3;\n border-color: #2196F3;\n color: white;\n }\n\n .list-count {\n margin-left: auto;\n color: #999;\n font-size: 14px;\n }\n\n /* Grid View */\n .lists-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n gap: 16px;\n }\n\n .list-card {\n background: white;\n border-radius: 8px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.08);\n overflow: hidden;\n cursor: pointer;\n transition: transform 0.2s, box-shadow 0.2s, outline 0.1s;\n outline: 2px solid transparent;\n }\n\n .list-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(0,0,0,0.12);\n }\n\n .list-card:focus {\n outline: 2px solid #2196F3;\n outline-offset: 2px;\n }\n\n .list-card:focus:not(:focus-visible) {\n outline: none;\n }\n\n .list-card:focus-visible {\n outline: 2px solid #2196F3;\n outline-offset: 2px;\n }\n\n .card-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 16px 16px 0;\n }\n\n .card-icon {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 18px;\n }\n\n .menu-btn {\n background: none;\n border: none;\n padding: 4px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n }\n\n .menu-btn:hover {\n background: #f5f5f5;\n color: #666;\n }\n\n .card-body {\n padding: 12px 16px;\n }\n\n .card-title {\n margin: 0 0 4px;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n }\n\n .card-description {\n margin: 0 0 12px;\n font-size: 13px;\n color: #666;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .card-meta {\n display: flex;\n gap: 16px;\n }\n\n .meta-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #999;\n }\n\n .card-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n border-top: 1px solid #f0f0f0;\n background: #fafafa;\n }\n\n .category-tag {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #666;\n background: #e8f4fd;\n padding: 2px 8px;\n border-radius: 4px;\n }\n\n .date-info {\n font-size: 12px;\n color: #999;\n }\n\n /* Category Tree */\n .category-tree {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .category-section {\n background: white;\n border-radius: 8px;\n overflow: hidden;\n }\n\n .category-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .category-header:hover {\n background: #f5f5f5;\n }\n\n .category-header i:first-child {\n width: 16px;\n text-align: center;\n color: #999;\n }\n\n .category-header .fa-folder,\n .category-header .fa-folder-open {\n color: #ffc107;\n }\n\n .category-header.uncategorized .fa-inbox {\n color: #999;\n }\n\n .category-name {\n flex: 1;\n font-weight: 500;\n color: #333;\n }\n\n .category-count {\n font-size: 12px;\n color: #999;\n background: #f0f0f0;\n padding: 2px 8px;\n border-radius: 10px;\n }\n\n .category-lists {\n border-top: 1px solid #f0f0f0;\n }\n\n .list-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px 12px 40px;\n cursor: pointer;\n transition: background 0.2s;\n outline: none;\n }\n\n .list-row:hover {\n background: #f5f5f5;\n }\n\n .list-row:focus {\n background: #e3f2fd;\n }\n\n .list-row:focus-visible {\n background: #e3f2fd;\n box-shadow: inset 3px 0 0 #2196F3;\n }\n\n .list-icon {\n width: 32px;\n height: 32px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 14px;\n flex-shrink: 0;\n }\n\n .list-info {\n flex: 1;\n min-width: 0;\n }\n\n .list-name {\n display: block;\n font-weight: 500;\n color: #333;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .list-meta {\n font-size: 12px;\n color: #999;\n }\n\n .list-actions {\n display: flex;\n gap: 4px;\n }\n\n .action-btn {\n background: none;\n border: none;\n padding: 4px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n opacity: 0;\n transition: opacity 0.2s;\n }\n\n .list-row:hover .action-btn {\n opacity: 1;\n }\n\n .action-btn:hover {\n background: #e0e0e0;\n color: #666;\n }\n\n /* Context Menu (native) */\n .context-menu-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 999;\n }\n\n .context-menu {\n position: fixed;\n background: white;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0,0,0,0.15);\n min-width: 160px;\n padding: 4px 0;\n z-index: 1000;\n }\n\n .menu-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 10px 16px;\n background: none;\n border: none;\n text-align: left;\n font-size: 14px;\n color: #333;\n cursor: pointer;\n transition: background 0.15s;\n }\n\n .menu-item:hover {\n background: #f5f5f5;\n }\n\n .menu-item.danger {\n color: #d32f2f;\n }\n\n .menu-item.danger:hover {\n background: #ffebee;\n }\n\n .menu-divider {\n height: 1px;\n background: #e0e0e0;\n margin: 4px 0;\n }\n\n /* Modal Styles */\n .modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: 1000;\n }\n\n .modal-dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background: white;\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\n width: 500px;\n max-width: 90vw;\n max-height: 90vh;\n overflow: hidden;\n z-index: 1001;\n }\n\n .confirm-dialog {\n width: 400px;\n }\n\n .modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .modal-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #333;\n }\n\n .modal-close {\n background: none;\n border: none;\n padding: 4px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n }\n\n .modal-close:hover {\n background: #f0f0f0;\n color: #666;\n }\n\n .modal-body {\n padding: 20px;\n max-height: 60vh;\n overflow-y: auto;\n }\n\n .modal-body p {\n margin: 0 0 8px;\n color: #333;\n }\n\n .warning-text {\n color: #d32f2f !important;\n font-size: 13px;\n }\n\n .modal-footer {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 16px 20px;\n border-top: 1px solid #e0e0e0;\n background: #fafafa;\n }\n\n .btn-primary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: #2196F3;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-primary:hover:not(:disabled) {\n background: #1976D2;\n }\n\n .btn-primary:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .btn-secondary {\n padding: 10px 20px;\n background: white;\n color: #666;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-secondary:hover:not(:disabled) {\n background: #f5f5f5;\n }\n\n .btn-danger {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: #d32f2f;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-danger:hover:not(:disabled) {\n background: #c62828;\n }\n\n /* Form Styles */\n .form-group {\n margin-bottom: 16px;\n }\n\n .form-group:last-child {\n margin-bottom: 0;\n }\n\n .form-group label {\n display: block;\n margin-bottom: 6px;\n font-size: 13px;\n font-weight: 500;\n color: #666;\n }\n\n .form-input {\n width: 100%;\n padding: 10px 12px;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n }\n\n .form-input:focus {\n outline: none;\n border-color: #2196F3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n }\n\n .form-input:disabled {\n background: #f5f5f5;\n color: #999;\n }\n\n textarea.form-input {\n resize: vertical;\n min-height: 80px;\n }\n\n select.form-input {\n cursor: pointer;\n }\n\n .custom-select-wrapper {\n position: relative;\n }\n\n /* Portal Dropdown - Fixed positioning to escape modal z-index */\n .entity-dropdown-portal {\n position: fixed;\n z-index: 10002; /* Above modal (1001) */\n }\n\n .entity-dropdown-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: -1;\n }\n\n .entity-dropdown-content {\n max-height: 200px;\n overflow-y: auto;\n background: white;\n border: 1px solid #ddd;\n border-radius: 6px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);\n }\n\n .entity-dropdown-content.open-above {\n position: absolute;\n bottom: 0;\n }\n\n .dropdown-item {\n padding: 10px 12px;\n cursor: pointer;\n transition: background 0.15s;\n font-size: 14px;\n color: #333;\n }\n\n .dropdown-item:hover {\n background: #e3f2fd;\n }\n\n .dropdown-item:first-child {\n border-radius: 6px 6px 0 0;\n }\n\n .dropdown-item:last-child {\n border-radius: 0 0 6px 6px;\n }\n\n .dropdown-empty {\n padding: 10px 12px;\n color: #999;\n font-style: italic;\n }\n\n /* Responsive */\n @media (max-width: 768px) {\n .lists-header {\n flex-direction: column;\n gap: 16px;\n align-items: stretch;\n }\n\n .header-actions {\n flex-direction: column;\n }\n\n .search-box input {\n width: 100%;\n }\n\n .btn-create {\n width: 100%;\n justify-content: center;\n }\n\n .lists-grid {\n grid-template-columns: 1fr;\n }\n\n .modal-dialog {\n width: 95vw;\n }\n }\n "], encapsulation: 2 });
|
|
1104
|
+
} }, dependencies: [i3.NgTemplateOutlet, i4.NgSelectOption, i4.ɵNgSelectMultipleOption, i4.DefaultValueAccessor, i4.SelectControlValueAccessor, i4.NgControlStatus, i4.NgModel, i5.LoadingComponent], styles: ["\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n }\n\n .lists-my-lists-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface);\n overflow: hidden;\n }\n\n /* Header */\n .lists-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n .header-title {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .header-title i {\n font-size: 24px;\n color: var(--mj-brand-primary);\n }\n\n .header-title h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .header-actions {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .search-box {\n position: relative;\n display: flex;\n align-items: center;\n }\n\n .search-box i.fa-search {\n position: absolute;\n left: 12px;\n color: var(--mj-text-muted);\n }\n\n .search-box input {\n padding: 8px 36px 8px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 20px;\n font-size: 14px;\n width: 250px;\n transition: border-color 0.2s, box-shadow 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 .clear-search {\n position: absolute;\n right: 8px;\n background: none;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px;\n }\n\n .clear-search:hover {\n color: var(--mj-text-secondary);\n }\n\n .btn-create {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-create:hover {\n background: var(--mj-brand-primary-hover);\n }\n\n /* Loading */\n .loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n }\n\n /* Empty State */\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding: 48px 40px;\n text-align: center;\n max-width: 480px;\n margin: 0 auto;\n }\n\n .empty-state-icon-wrapper {\n position: relative;\n margin-bottom: 24px;\n }\n\n .empty-state-icon-wrapper .icon-bg {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 120px;\n height: 120px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n }\n\n .empty-state-icon-wrapper > i {\n position: relative;\n font-size: 56px;\n color: var(--mj-brand-primary);\n z-index: 1;\n }\n\n .empty-state-icon-wrapper.search > i {\n font-size: 48px;\n color: var(--mj-text-disabled);\n }\n\n .empty-state h3 {\n margin: 0 0 12px;\n font-size: 22px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .empty-state p {\n margin: 0 0 8px;\n color: var(--mj-text-secondary);\n font-size: 15px;\n line-height: 1.5;\n }\n\n .empty-state p:last-of-type {\n margin-bottom: 24px;\n }\n\n .empty-hint {\n color: var(--mj-text-muted) !important;\n font-size: 13px !important;\n }\n\n .empty-state-features {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 28px;\n text-align: left;\n }\n\n .feature-item {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n }\n\n .feature-item i {\n font-size: 14px !important;\n color: var(--mj-status-success) !important;\n }\n\n .search-empty .empty-state-icon-wrapper {\n margin-bottom: 20px;\n }\n\n .btn-create-large {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 28px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n }\n\n .btn-create-large:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n }\n\n .btn-clear {\n padding: 10px 20px;\n background: var(--mj-bg-surface-sunken);\n border: none;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n }\n\n .btn-clear:hover {\n background: var(--mj-border-default);\n }\n\n /* Content */\n .lists-content {\n flex: 1;\n overflow-y: auto;\n padding: 16px 24px;\n }\n\n .view-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 16px;\n }\n\n .view-toggle {\n padding: 8px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .view-toggle:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .view-toggle.active {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .list-count {\n margin-left: auto;\n color: var(--mj-text-muted);\n font-size: 14px;\n }\n\n /* Grid View */\n .lists-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n gap: 16px;\n }\n\n .list-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-sm);\n overflow: hidden;\n cursor: pointer;\n transition: transform 0.2s, box-shadow 0.2s, outline 0.1s;\n outline: 2px solid transparent;\n }\n\n .list-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-md);\n }\n\n .list-card:focus {\n outline: 2px solid var(--mj-brand-primary);\n outline-offset: 2px;\n }\n\n .list-card:focus:not(:focus-visible) {\n outline: none;\n }\n\n .list-card:focus-visible {\n outline: 2px solid var(--mj-brand-primary);\n outline-offset: 2px;\n }\n\n .card-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 16px 16px 0;\n }\n\n .card-icon {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 18px;\n }\n\n .menu-btn {\n background: none;\n border: none;\n padding: 4px 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n border-radius: 4px;\n }\n\n .menu-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n }\n\n .card-body {\n padding: 12px 16px;\n }\n\n .card-title {\n margin: 0 0 4px;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .card-description {\n margin: 0 0 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .card-meta {\n display: flex;\n gap: 16px;\n }\n\n .meta-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n .card-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n }\n\n .category-tag {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n padding: 2px 8px;\n border-radius: 4px;\n }\n\n .date-info {\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n /* Category Tree */\n .category-tree {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .category-section {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n overflow: hidden;\n }\n\n .category-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .category-header:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .category-header i:first-child {\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n }\n\n .category-header .fa-folder,\n .category-header .fa-folder-open {\n color: var(--mj-status-warning);\n }\n\n .category-header.uncategorized .fa-inbox {\n color: var(--mj-text-muted);\n }\n\n .category-name {\n flex: 1;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .category-count {\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 10px;\n }\n\n .category-lists {\n border-top: 1px solid var(--mj-border-default);\n }\n\n .list-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px 12px 40px;\n cursor: pointer;\n transition: background 0.2s;\n outline: none;\n }\n\n .list-row:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .list-row:focus {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n }\n\n .list-row:focus-visible {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n box-shadow: inset 3px 0 0 var(--mj-brand-primary);\n }\n\n .list-icon {\n width: 32px;\n height: 32px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 14px;\n flex-shrink: 0;\n }\n\n .list-info {\n flex: 1;\n min-width: 0;\n }\n\n .list-name {\n display: block;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .list-meta {\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n .list-actions {\n display: flex;\n gap: 4px;\n }\n\n .action-btn {\n background: none;\n border: none;\n padding: 4px 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n border-radius: 4px;\n opacity: 0;\n transition: opacity 0.2s;\n }\n\n .list-row:hover .action-btn {\n opacity: 1;\n }\n\n .action-btn:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n }\n\n /* Context Menu (native) */\n .context-menu-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 999;\n }\n\n .context-menu {\n position: fixed;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-md);\n min-width: 160px;\n padding: 4px 0;\n z-index: 1000;\n }\n\n .menu-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 10px 16px;\n background: none;\n border: none;\n text-align: left;\n font-size: 14px;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: background 0.15s;\n }\n\n .menu-item:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .menu-item.danger {\n color: var(--mj-status-error);\n }\n\n .menu-item.danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n }\n\n .menu-divider {\n height: 1px;\n background: var(--mj-border-default);\n margin: 4px 0;\n }\n\n /* Modal Styles */\n .modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 1000;\n }\n\n .modal-dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-lg);\n width: 500px;\n max-width: 90vw;\n max-height: 90vh;\n overflow: hidden;\n z-index: 1001;\n }\n\n .confirm-dialog {\n width: 400px;\n }\n\n .modal-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 .modal-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .modal-close {\n background: none;\n border: none;\n padding: 4px 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n border-radius: 4px;\n }\n\n .modal-close:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n }\n\n .modal-body {\n padding: 20px;\n max-height: 60vh;\n overflow-y: auto;\n }\n\n .modal-body p {\n margin: 0 0 8px;\n color: var(--mj-text-primary);\n }\n\n .warning-text {\n color: var(--mj-status-error) !important;\n font-size: 13px;\n }\n\n .modal-footer {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n }\n\n .btn-primary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-primary:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n }\n\n .btn-primary:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .btn-secondary {\n padding: 10px 20px;\n background: var(--mj-bg-surface-card);\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: background 0.2s;\n }\n\n .btn-secondary:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n }\n\n .btn-danger {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-danger:hover:not(:disabled) {\n background: color-mix(in srgb, var(--mj-status-error) 85%, black);\n }\n\n /* Form Styles */\n .form-group {\n margin-bottom: 16px;\n }\n\n .form-group:last-child {\n margin-bottom: 0;\n }\n\n .form-group label {\n display: block;\n margin-bottom: 6px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n }\n\n .form-input {\n width: 100%;\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n }\n\n .form-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 .form-input:disabled {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n textarea.form-input {\n resize: vertical;\n min-height: 80px;\n }\n\n select.form-input {\n cursor: pointer;\n }\n\n .custom-select-wrapper {\n position: relative;\n }\n\n /* Portal Dropdown - Fixed positioning to escape modal z-index */\n .entity-dropdown-portal {\n position: fixed;\n z-index: 10002; /* Above modal (1001) */\n }\n\n .entity-dropdown-content {\n max-height: 200px;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n box-shadow: var(--mj-shadow-md);\n }\n\n .entity-dropdown-content.open-above {\n position: absolute;\n bottom: 0;\n }\n\n .dropdown-item {\n padding: 10px 12px;\n cursor: pointer;\n transition: background 0.15s;\n font-size: 14px;\n color: var(--mj-text-primary);\n }\n\n .dropdown-item:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n }\n\n .dropdown-item:first-child {\n border-radius: 6px 6px 0 0;\n }\n\n .dropdown-item:last-child {\n border-radius: 0 0 6px 6px;\n }\n\n .dropdown-empty {\n padding: 10px 12px;\n color: var(--mj-text-muted);\n font-style: italic;\n }\n\n /* Responsive */\n @media (max-width: 768px) {\n .lists-header {\n flex-direction: column;\n gap: 16px;\n align-items: stretch;\n }\n\n .header-actions {\n flex-direction: column;\n }\n\n .search-box input {\n width: 100%;\n }\n\n .btn-create {\n width: 100%;\n justify-content: center;\n }\n\n .lists-grid {\n grid-template-columns: 1fr;\n }\n\n .modal-dialog {\n width: 95vw;\n }\n }\n "], encapsulation: 2 });
|
|
1103
1105
|
};
|
|
1104
1106
|
ListsMyListsResource = __decorate([
|
|
1105
1107
|
RegisterClass(BaseResourceComponent, 'ListsMyListsResource')
|
|
@@ -1460,12 +1462,11 @@ export { ListsMyListsResource };
|
|
|
1460
1462
|
[style.left.px]="entityDropdownPosition.left"
|
|
1461
1463
|
[style.width.px]="entityDropdownPosition.width"
|
|
1462
1464
|
[class.dropdown-above]="entityDropdownPosition.openAbove">
|
|
1463
|
-
<div class="entity-dropdown-backdrop" (click)="closeEntityDropdown()"></div>
|
|
1464
1465
|
<div class="entity-dropdown-content" [class.open-above]="entityDropdownPosition.openAbove">
|
|
1465
1466
|
@for (entity of filteredEntities; track entity) {
|
|
1466
1467
|
<div
|
|
1467
1468
|
class="dropdown-item"
|
|
1468
|
-
(
|
|
1469
|
+
(mousedown)="selectEntity(entity); $event.preventDefault()">
|
|
1469
1470
|
{{entity.Name}}
|
|
1470
1471
|
</div>
|
|
1471
1472
|
}
|
|
@@ -1478,7 +1479,7 @@ export { ListsMyListsResource };
|
|
|
1478
1479
|
</div>
|
|
1479
1480
|
}
|
|
1480
1481
|
</div>
|
|
1481
|
-
`, encapsulation: ViewEncapsulation.None, styles: ["\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n }\n\n .lists-my-lists-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #f5f7fa;\n overflow: hidden;\n }\n\n /* Header */\n .lists-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n background: white;\n border-bottom: 1px solid #e0e0e0;\n flex-shrink: 0;\n }\n\n .header-title {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .header-title i {\n font-size: 24px;\n color: #2196F3;\n }\n\n .header-title h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: #333;\n }\n\n .header-actions {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .search-box {\n position: relative;\n display: flex;\n align-items: center;\n }\n\n .search-box i.fa-search {\n position: absolute;\n left: 12px;\n color: #999;\n }\n\n .search-box input {\n padding: 8px 36px 8px 36px;\n border: 1px solid #ddd;\n border-radius: 20px;\n font-size: 14px;\n width: 250px;\n transition: border-color 0.2s, box-shadow 0.2s;\n }\n\n .search-box input:focus {\n outline: none;\n border-color: #2196F3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n }\n\n .clear-search {\n position: absolute;\n right: 8px;\n background: none;\n border: none;\n color: #999;\n cursor: pointer;\n padding: 4px;\n }\n\n .clear-search:hover {\n color: #666;\n }\n\n .btn-create {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: #2196F3;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-create:hover {\n background: #1976D2;\n }\n\n /* Loading */\n .loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n }\n\n /* Empty State */\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding: 48px 40px;\n text-align: center;\n max-width: 480px;\n margin: 0 auto;\n }\n\n .empty-state-icon-wrapper {\n position: relative;\n margin-bottom: 24px;\n }\n\n .empty-state-icon-wrapper .icon-bg {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 120px;\n height: 120px;\n border-radius: 50%;\n background: linear-gradient(135deg, rgba(33, 150, 243, 0.1) 0%, rgba(33, 150, 243, 0.05) 100%);\n }\n\n .empty-state-icon-wrapper > i {\n position: relative;\n font-size: 56px;\n color: #2196F3;\n z-index: 1;\n }\n\n .empty-state-icon-wrapper.search > i {\n font-size: 48px;\n color: #9e9e9e;\n }\n\n .empty-state h3 {\n margin: 0 0 12px;\n font-size: 22px;\n font-weight: 600;\n color: #333;\n }\n\n .empty-state p {\n margin: 0 0 8px;\n color: #666;\n font-size: 15px;\n line-height: 1.5;\n }\n\n .empty-state p:last-of-type {\n margin-bottom: 24px;\n }\n\n .empty-hint {\n color: #999 !important;\n font-size: 13px !important;\n }\n\n .empty-state-features {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 28px;\n text-align: left;\n }\n\n .feature-item {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n color: #555;\n }\n\n .feature-item i {\n font-size: 14px !important;\n color: #4CAF50 !important;\n }\n\n .search-empty .empty-state-icon-wrapper {\n margin-bottom: 20px;\n }\n\n .btn-create-large {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 28px;\n background: linear-gradient(135deg, #2196F3 0%, #1976D2 100%);\n color: white;\n border: none;\n border-radius: 8px;\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n box-shadow: 0 2px 8px rgba(33, 150, 243, 0.3);\n }\n\n .btn-create-large:hover {\n background: linear-gradient(135deg, #1976D2 0%, #1565C0 100%);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px rgba(33, 150, 243, 0.4);\n }\n\n .btn-clear {\n padding: 10px 20px;\n background: #f0f0f0;\n border: none;\n border-radius: 6px;\n color: #666;\n cursor: pointer;\n }\n\n .btn-clear:hover {\n background: #e0e0e0;\n }\n\n /* Content */\n .lists-content {\n flex: 1;\n overflow-y: auto;\n padding: 16px 24px;\n }\n\n .view-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 16px;\n }\n\n .view-toggle {\n padding: 8px;\n background: white;\n border: 1px solid #ddd;\n border-radius: 4px;\n color: #666;\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .view-toggle:hover {\n background: #f5f5f5;\n }\n\n .view-toggle.active {\n background: #2196F3;\n border-color: #2196F3;\n color: white;\n }\n\n .list-count {\n margin-left: auto;\n color: #999;\n font-size: 14px;\n }\n\n /* Grid View */\n .lists-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n gap: 16px;\n }\n\n .list-card {\n background: white;\n border-radius: 8px;\n box-shadow: 0 1px 3px rgba(0,0,0,0.08);\n overflow: hidden;\n cursor: pointer;\n transition: transform 0.2s, box-shadow 0.2s, outline 0.1s;\n outline: 2px solid transparent;\n }\n\n .list-card:hover {\n transform: translateY(-2px);\n box-shadow: 0 4px 12px rgba(0,0,0,0.12);\n }\n\n .list-card:focus {\n outline: 2px solid #2196F3;\n outline-offset: 2px;\n }\n\n .list-card:focus:not(:focus-visible) {\n outline: none;\n }\n\n .list-card:focus-visible {\n outline: 2px solid #2196F3;\n outline-offset: 2px;\n }\n\n .card-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 16px 16px 0;\n }\n\n .card-icon {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 18px;\n }\n\n .menu-btn {\n background: none;\n border: none;\n padding: 4px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n }\n\n .menu-btn:hover {\n background: #f5f5f5;\n color: #666;\n }\n\n .card-body {\n padding: 12px 16px;\n }\n\n .card-title {\n margin: 0 0 4px;\n font-size: 16px;\n font-weight: 600;\n color: #333;\n }\n\n .card-description {\n margin: 0 0 12px;\n font-size: 13px;\n color: #666;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .card-meta {\n display: flex;\n gap: 16px;\n }\n\n .meta-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: #999;\n }\n\n .card-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n border-top: 1px solid #f0f0f0;\n background: #fafafa;\n }\n\n .category-tag {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: #666;\n background: #e8f4fd;\n padding: 2px 8px;\n border-radius: 4px;\n }\n\n .date-info {\n font-size: 12px;\n color: #999;\n }\n\n /* Category Tree */\n .category-tree {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .category-section {\n background: white;\n border-radius: 8px;\n overflow: hidden;\n }\n\n .category-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .category-header:hover {\n background: #f5f5f5;\n }\n\n .category-header i:first-child {\n width: 16px;\n text-align: center;\n color: #999;\n }\n\n .category-header .fa-folder,\n .category-header .fa-folder-open {\n color: #ffc107;\n }\n\n .category-header.uncategorized .fa-inbox {\n color: #999;\n }\n\n .category-name {\n flex: 1;\n font-weight: 500;\n color: #333;\n }\n\n .category-count {\n font-size: 12px;\n color: #999;\n background: #f0f0f0;\n padding: 2px 8px;\n border-radius: 10px;\n }\n\n .category-lists {\n border-top: 1px solid #f0f0f0;\n }\n\n .list-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px 12px 40px;\n cursor: pointer;\n transition: background 0.2s;\n outline: none;\n }\n\n .list-row:hover {\n background: #f5f5f5;\n }\n\n .list-row:focus {\n background: #e3f2fd;\n }\n\n .list-row:focus-visible {\n background: #e3f2fd;\n box-shadow: inset 3px 0 0 #2196F3;\n }\n\n .list-icon {\n width: 32px;\n height: 32px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: white;\n font-size: 14px;\n flex-shrink: 0;\n }\n\n .list-info {\n flex: 1;\n min-width: 0;\n }\n\n .list-name {\n display: block;\n font-weight: 500;\n color: #333;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .list-meta {\n font-size: 12px;\n color: #999;\n }\n\n .list-actions {\n display: flex;\n gap: 4px;\n }\n\n .action-btn {\n background: none;\n border: none;\n padding: 4px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n opacity: 0;\n transition: opacity 0.2s;\n }\n\n .list-row:hover .action-btn {\n opacity: 1;\n }\n\n .action-btn:hover {\n background: #e0e0e0;\n color: #666;\n }\n\n /* Context Menu (native) */\n .context-menu-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 999;\n }\n\n .context-menu {\n position: fixed;\n background: white;\n border-radius: 8px;\n box-shadow: 0 4px 16px rgba(0,0,0,0.15);\n min-width: 160px;\n padding: 4px 0;\n z-index: 1000;\n }\n\n .menu-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 10px 16px;\n background: none;\n border: none;\n text-align: left;\n font-size: 14px;\n color: #333;\n cursor: pointer;\n transition: background 0.15s;\n }\n\n .menu-item:hover {\n background: #f5f5f5;\n }\n\n .menu-item.danger {\n color: #d32f2f;\n }\n\n .menu-item.danger:hover {\n background: #ffebee;\n }\n\n .menu-divider {\n height: 1px;\n background: #e0e0e0;\n margin: 4px 0;\n }\n\n /* Modal Styles */\n .modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.5);\n z-index: 1000;\n }\n\n .modal-dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background: white;\n border-radius: 12px;\n box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2);\n width: 500px;\n max-width: 90vw;\n max-height: 90vh;\n overflow: hidden;\n z-index: 1001;\n }\n\n .confirm-dialog {\n width: 400px;\n }\n\n .modal-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 20px;\n border-bottom: 1px solid #e0e0e0;\n }\n\n .modal-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: #333;\n }\n\n .modal-close {\n background: none;\n border: none;\n padding: 4px 8px;\n color: #999;\n cursor: pointer;\n border-radius: 4px;\n }\n\n .modal-close:hover {\n background: #f0f0f0;\n color: #666;\n }\n\n .modal-body {\n padding: 20px;\n max-height: 60vh;\n overflow-y: auto;\n }\n\n .modal-body p {\n margin: 0 0 8px;\n color: #333;\n }\n\n .warning-text {\n color: #d32f2f !important;\n font-size: 13px;\n }\n\n .modal-footer {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 16px 20px;\n border-top: 1px solid #e0e0e0;\n background: #fafafa;\n }\n\n .btn-primary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: #2196F3;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-primary:hover:not(:disabled) {\n background: #1976D2;\n }\n\n .btn-primary:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .btn-secondary {\n padding: 10px 20px;\n background: white;\n color: #666;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-secondary:hover:not(:disabled) {\n background: #f5f5f5;\n }\n\n .btn-danger {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: #d32f2f;\n color: white;\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-danger:hover:not(:disabled) {\n background: #c62828;\n }\n\n /* Form Styles */\n .form-group {\n margin-bottom: 16px;\n }\n\n .form-group:last-child {\n margin-bottom: 0;\n }\n\n .form-group label {\n display: block;\n margin-bottom: 6px;\n font-size: 13px;\n font-weight: 500;\n color: #666;\n }\n\n .form-input {\n width: 100%;\n padding: 10px 12px;\n border: 1px solid #ddd;\n border-radius: 6px;\n font-size: 14px;\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n }\n\n .form-input:focus {\n outline: none;\n border-color: #2196F3;\n box-shadow: 0 0 0 3px rgba(33, 150, 243, 0.1);\n }\n\n .form-input:disabled {\n background: #f5f5f5;\n color: #999;\n }\n\n textarea.form-input {\n resize: vertical;\n min-height: 80px;\n }\n\n select.form-input {\n cursor: pointer;\n }\n\n .custom-select-wrapper {\n position: relative;\n }\n\n /* Portal Dropdown - Fixed positioning to escape modal z-index */\n .entity-dropdown-portal {\n position: fixed;\n z-index: 10002; /* Above modal (1001) */\n }\n\n .entity-dropdown-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: -1;\n }\n\n .entity-dropdown-content {\n max-height: 200px;\n overflow-y: auto;\n background: white;\n border: 1px solid #ddd;\n border-radius: 6px;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);\n }\n\n .entity-dropdown-content.open-above {\n position: absolute;\n bottom: 0;\n }\n\n .dropdown-item {\n padding: 10px 12px;\n cursor: pointer;\n transition: background 0.15s;\n font-size: 14px;\n color: #333;\n }\n\n .dropdown-item:hover {\n background: #e3f2fd;\n }\n\n .dropdown-item:first-child {\n border-radius: 6px 6px 0 0;\n }\n\n .dropdown-item:last-child {\n border-radius: 0 0 6px 6px;\n }\n\n .dropdown-empty {\n padding: 10px 12px;\n color: #999;\n font-style: italic;\n }\n\n /* Responsive */\n @media (max-width: 768px) {\n .lists-header {\n flex-direction: column;\n gap: 16px;\n align-items: stretch;\n }\n\n .header-actions {\n flex-direction: column;\n }\n\n .search-box input {\n width: 100%;\n }\n\n .btn-create {\n width: 100%;\n justify-content: center;\n }\n\n .lists-grid {\n grid-template-columns: 1fr;\n }\n\n .modal-dialog {\n width: 95vw;\n }\n }\n "] }]
|
|
1482
|
+
`, encapsulation: ViewEncapsulation.None, styles: ["\n :host {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n }\n\n .lists-my-lists-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: var(--mj-bg-surface);\n overflow: hidden;\n }\n\n /* Header */\n .lists-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 24px;\n background: var(--mj-bg-surface-card);\n border-bottom: 1px solid var(--mj-border-default);\n flex-shrink: 0;\n }\n\n .header-title {\n display: flex;\n align-items: center;\n gap: 12px;\n }\n\n .header-title i {\n font-size: 24px;\n color: var(--mj-brand-primary);\n }\n\n .header-title h2 {\n margin: 0;\n font-size: 20px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .header-actions {\n display: flex;\n align-items: center;\n gap: 16px;\n }\n\n .search-box {\n position: relative;\n display: flex;\n align-items: center;\n }\n\n .search-box i.fa-search {\n position: absolute;\n left: 12px;\n color: var(--mj-text-muted);\n }\n\n .search-box input {\n padding: 8px 36px 8px 36px;\n border: 1px solid var(--mj-border-default);\n border-radius: 20px;\n font-size: 14px;\n width: 250px;\n transition: border-color 0.2s, box-shadow 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 .clear-search {\n position: absolute;\n right: 8px;\n background: none;\n border: none;\n color: var(--mj-text-muted);\n cursor: pointer;\n padding: 4px;\n }\n\n .clear-search:hover {\n color: var(--mj-text-secondary);\n }\n\n .btn-create {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 16px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-create:hover {\n background: var(--mj-brand-primary-hover);\n }\n\n /* Loading */\n .loading-container {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n }\n\n /* Empty State */\n .empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding: 48px 40px;\n text-align: center;\n max-width: 480px;\n margin: 0 auto;\n }\n\n .empty-state-icon-wrapper {\n position: relative;\n margin-bottom: 24px;\n }\n\n .empty-state-icon-wrapper .icon-bg {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 120px;\n height: 120px;\n border-radius: 50%;\n background: color-mix(in srgb, var(--mj-brand-primary) 10%, var(--mj-bg-surface));\n }\n\n .empty-state-icon-wrapper > i {\n position: relative;\n font-size: 56px;\n color: var(--mj-brand-primary);\n z-index: 1;\n }\n\n .empty-state-icon-wrapper.search > i {\n font-size: 48px;\n color: var(--mj-text-disabled);\n }\n\n .empty-state h3 {\n margin: 0 0 12px;\n font-size: 22px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .empty-state p {\n margin: 0 0 8px;\n color: var(--mj-text-secondary);\n font-size: 15px;\n line-height: 1.5;\n }\n\n .empty-state p:last-of-type {\n margin-bottom: 24px;\n }\n\n .empty-hint {\n color: var(--mj-text-muted) !important;\n font-size: 13px !important;\n }\n\n .empty-state-features {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-bottom: 28px;\n text-align: left;\n }\n\n .feature-item {\n display: flex;\n align-items: center;\n gap: 10px;\n font-size: 14px;\n color: var(--mj-text-secondary);\n }\n\n .feature-item i {\n font-size: 14px !important;\n color: var(--mj-status-success) !important;\n }\n\n .search-empty .empty-state-icon-wrapper {\n margin-bottom: 20px;\n }\n\n .btn-create-large {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 14px 28px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 8px;\n font-size: 15px;\n font-weight: 500;\n cursor: pointer;\n transition: all 0.2s;\n box-shadow: 0 2px 8px color-mix(in srgb, var(--mj-brand-primary) 30%, transparent);\n }\n\n .btn-create-large:hover {\n background: var(--mj-brand-primary-hover);\n transform: translateY(-1px);\n box-shadow: 0 4px 12px color-mix(in srgb, var(--mj-brand-primary) 40%, transparent);\n }\n\n .btn-clear {\n padding: 10px 20px;\n background: var(--mj-bg-surface-sunken);\n border: none;\n border-radius: 6px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n }\n\n .btn-clear:hover {\n background: var(--mj-border-default);\n }\n\n /* Content */\n .lists-content {\n flex: 1;\n overflow-y: auto;\n padding: 16px 24px;\n }\n\n .view-controls {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 16px;\n }\n\n .view-toggle {\n padding: 8px;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 4px;\n color: var(--mj-text-secondary);\n cursor: pointer;\n transition: all 0.2s;\n }\n\n .view-toggle:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .view-toggle.active {\n background: var(--mj-brand-primary);\n border-color: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n }\n\n .list-count {\n margin-left: auto;\n color: var(--mj-text-muted);\n font-size: 14px;\n }\n\n /* Grid View */\n .lists-grid {\n display: grid;\n grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));\n gap: 16px;\n }\n\n .list-card {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-sm);\n overflow: hidden;\n cursor: pointer;\n transition: transform 0.2s, box-shadow 0.2s, outline 0.1s;\n outline: 2px solid transparent;\n }\n\n .list-card:hover {\n transform: translateY(-2px);\n box-shadow: var(--mj-shadow-md);\n }\n\n .list-card:focus {\n outline: 2px solid var(--mj-brand-primary);\n outline-offset: 2px;\n }\n\n .list-card:focus:not(:focus-visible) {\n outline: none;\n }\n\n .list-card:focus-visible {\n outline: 2px solid var(--mj-brand-primary);\n outline-offset: 2px;\n }\n\n .card-header {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding: 16px 16px 0;\n }\n\n .card-icon {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 18px;\n }\n\n .menu-btn {\n background: none;\n border: none;\n padding: 4px 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n border-radius: 4px;\n }\n\n .menu-btn:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n }\n\n .card-body {\n padding: 12px 16px;\n }\n\n .card-title {\n margin: 0 0 4px;\n font-size: 16px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .card-description {\n margin: 0 0 12px;\n font-size: 13px;\n color: var(--mj-text-secondary);\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n }\n\n .card-meta {\n display: flex;\n gap: 16px;\n }\n\n .meta-item {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n .card-footer {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 12px 16px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n }\n\n .category-tag {\n display: flex;\n align-items: center;\n gap: 4px;\n font-size: 12px;\n color: var(--mj-text-secondary);\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n padding: 2px 8px;\n border-radius: 4px;\n }\n\n .date-info {\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n /* Category Tree */\n .category-tree {\n display: flex;\n flex-direction: column;\n gap: 8px;\n }\n\n .category-section {\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n overflow: hidden;\n }\n\n .category-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 16px;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .category-header:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .category-header i:first-child {\n width: 16px;\n text-align: center;\n color: var(--mj-text-muted);\n }\n\n .category-header .fa-folder,\n .category-header .fa-folder-open {\n color: var(--mj-status-warning);\n }\n\n .category-header.uncategorized .fa-inbox {\n color: var(--mj-text-muted);\n }\n\n .category-name {\n flex: 1;\n font-weight: 500;\n color: var(--mj-text-primary);\n }\n\n .category-count {\n font-size: 12px;\n color: var(--mj-text-muted);\n background: var(--mj-bg-surface-sunken);\n padding: 2px 8px;\n border-radius: 10px;\n }\n\n .category-lists {\n border-top: 1px solid var(--mj-border-default);\n }\n\n .list-row {\n display: flex;\n align-items: center;\n gap: 12px;\n padding: 12px 16px 12px 40px;\n cursor: pointer;\n transition: background 0.2s;\n outline: none;\n }\n\n .list-row:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .list-row:focus {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n }\n\n .list-row:focus-visible {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n box-shadow: inset 3px 0 0 var(--mj-brand-primary);\n }\n\n .list-icon {\n width: 32px;\n height: 32px;\n border-radius: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--mj-text-inverse);\n font-size: 14px;\n flex-shrink: 0;\n }\n\n .list-info {\n flex: 1;\n min-width: 0;\n }\n\n .list-name {\n display: block;\n font-weight: 500;\n color: var(--mj-text-primary);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n\n .list-meta {\n font-size: 12px;\n color: var(--mj-text-muted);\n }\n\n .list-actions {\n display: flex;\n gap: 4px;\n }\n\n .action-btn {\n background: none;\n border: none;\n padding: 4px 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n border-radius: 4px;\n opacity: 0;\n transition: opacity 0.2s;\n }\n\n .list-row:hover .action-btn {\n opacity: 1;\n }\n\n .action-btn:hover {\n background: var(--mj-border-default);\n color: var(--mj-text-secondary);\n }\n\n /* Context Menu (native) */\n .context-menu-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 999;\n }\n\n .context-menu {\n position: fixed;\n background: var(--mj-bg-surface-card);\n border-radius: 8px;\n box-shadow: var(--mj-shadow-md);\n min-width: 160px;\n padding: 4px 0;\n z-index: 1000;\n }\n\n .menu-item {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n padding: 10px 16px;\n background: none;\n border: none;\n text-align: left;\n font-size: 14px;\n color: var(--mj-text-primary);\n cursor: pointer;\n transition: background 0.15s;\n }\n\n .menu-item:hover {\n background: var(--mj-bg-surface-sunken);\n }\n\n .menu-item.danger {\n color: var(--mj-status-error);\n }\n\n .menu-item.danger:hover {\n background: color-mix(in srgb, var(--mj-status-error) 15%, var(--mj-bg-surface));\n }\n\n .menu-divider {\n height: 1px;\n background: var(--mj-border-default);\n margin: 4px 0;\n }\n\n /* Modal Styles */\n .modal-overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: var(--mj-bg-overlay);\n z-index: 1000;\n }\n\n .modal-dialog {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n background: var(--mj-bg-surface-card);\n border-radius: 12px;\n box-shadow: var(--mj-shadow-lg);\n width: 500px;\n max-width: 90vw;\n max-height: 90vh;\n overflow: hidden;\n z-index: 1001;\n }\n\n .confirm-dialog {\n width: 400px;\n }\n\n .modal-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 .modal-header h3 {\n margin: 0;\n font-size: 18px;\n font-weight: 600;\n color: var(--mj-text-primary);\n }\n\n .modal-close {\n background: none;\n border: none;\n padding: 4px 8px;\n color: var(--mj-text-muted);\n cursor: pointer;\n border-radius: 4px;\n }\n\n .modal-close:hover {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-secondary);\n }\n\n .modal-body {\n padding: 20px;\n max-height: 60vh;\n overflow-y: auto;\n }\n\n .modal-body p {\n margin: 0 0 8px;\n color: var(--mj-text-primary);\n }\n\n .warning-text {\n color: var(--mj-status-error) !important;\n font-size: 13px;\n }\n\n .modal-footer {\n display: flex;\n justify-content: flex-end;\n gap: 12px;\n padding: 16px 20px;\n border-top: 1px solid var(--mj-border-default);\n background: var(--mj-bg-surface-sunken);\n }\n\n .btn-primary {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-brand-primary);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-primary:hover:not(:disabled) {\n background: var(--mj-brand-primary-hover);\n }\n\n .btn-primary:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n }\n\n .btn-secondary {\n padding: 10px 20px;\n background: var(--mj-bg-surface-card);\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: background 0.2s;\n }\n\n .btn-secondary:hover:not(:disabled) {\n background: var(--mj-bg-surface-sunken);\n }\n\n .btn-danger {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 10px 20px;\n background: var(--mj-status-error);\n color: var(--mj-text-inverse);\n border: none;\n border-radius: 6px;\n font-size: 14px;\n font-weight: 500;\n cursor: pointer;\n transition: background 0.2s;\n }\n\n .btn-danger:hover:not(:disabled) {\n background: color-mix(in srgb, var(--mj-status-error) 85%, black);\n }\n\n /* Form Styles */\n .form-group {\n margin-bottom: 16px;\n }\n\n .form-group:last-child {\n margin-bottom: 0;\n }\n\n .form-group label {\n display: block;\n margin-bottom: 6px;\n font-size: 13px;\n font-weight: 500;\n color: var(--mj-text-secondary);\n }\n\n .form-input {\n width: 100%;\n padding: 10px 12px;\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n font-size: 14px;\n transition: border-color 0.2s, box-shadow 0.2s;\n box-sizing: border-box;\n }\n\n .form-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 .form-input:disabled {\n background: var(--mj-bg-surface-sunken);\n color: var(--mj-text-muted);\n }\n\n textarea.form-input {\n resize: vertical;\n min-height: 80px;\n }\n\n select.form-input {\n cursor: pointer;\n }\n\n .custom-select-wrapper {\n position: relative;\n }\n\n /* Portal Dropdown - Fixed positioning to escape modal z-index */\n .entity-dropdown-portal {\n position: fixed;\n z-index: 10002; /* Above modal (1001) */\n }\n\n .entity-dropdown-content {\n max-height: 200px;\n overflow-y: auto;\n background: var(--mj-bg-surface-card);\n border: 1px solid var(--mj-border-default);\n border-radius: 6px;\n box-shadow: var(--mj-shadow-md);\n }\n\n .entity-dropdown-content.open-above {\n position: absolute;\n bottom: 0;\n }\n\n .dropdown-item {\n padding: 10px 12px;\n cursor: pointer;\n transition: background 0.15s;\n font-size: 14px;\n color: var(--mj-text-primary);\n }\n\n .dropdown-item:hover {\n background: color-mix(in srgb, var(--mj-brand-primary) 15%, var(--mj-bg-surface));\n }\n\n .dropdown-item:first-child {\n border-radius: 6px 6px 0 0;\n }\n\n .dropdown-item:last-child {\n border-radius: 0 0 6px 6px;\n }\n\n .dropdown-empty {\n padding: 10px 12px;\n color: var(--mj-text-muted);\n font-style: italic;\n }\n\n /* Responsive */\n @media (max-width: 768px) {\n .lists-header {\n flex-direction: column;\n gap: 16px;\n align-items: stretch;\n }\n\n .header-actions {\n flex-direction: column;\n }\n\n .search-box input {\n width: 100%;\n }\n\n .btn-create {\n width: 100%;\n justify-content: center;\n }\n\n .lists-grid {\n grid-template-columns: 1fr;\n }\n\n .modal-dialog {\n width: 95vw;\n }\n }\n "] }]
|
|
1482
1483
|
}], () => [{ type: i0.ChangeDetectorRef }, { type: i1.TabService }, { type: i2.MJNotificationService }, { type: i0.ElementRef }], { onDocumentClick: [{
|
|
1483
1484
|
type: HostListener,
|
|
1484
1485
|
args: ['document:click', ['$event']]
|
|
@@ -1486,5 +1487,5 @@ export { ListsMyListsResource };
|
|
|
1486
1487
|
type: HostListener,
|
|
1487
1488
|
args: ['document:keydown.escape']
|
|
1488
1489
|
}] }); })();
|
|
1489
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ListsMyListsResource, { className: "ListsMyListsResource", filePath: "src/Lists/components/lists-my-lists-resource.component.ts", lineNumber:
|
|
1490
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ListsMyListsResource, { className: "ListsMyListsResource", filePath: "src/Lists/components/lists-my-lists-resource.component.ts", lineNumber: 1270 }); })();
|
|
1490
1491
|
//# sourceMappingURL=lists-my-lists-resource.component.js.map
|