@memberjunction/ng-dashboards 5.48.0 → 5.50.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.
Files changed (62) hide show
  1. package/dist/AI/components/autotagging/tabs/sources-tab.component.js +1 -1
  2. package/dist/AI/components/autotagging/tabs/sources-tab.component.js.map +1 -1
  3. package/dist/AI/components/tags/tags-resource.component.js +1 -1
  4. package/dist/AI/components/tags/tags-resource.component.js.map +1 -1
  5. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.js +2 -2
  6. package/dist/KnowledgeHub/components/feature-pipelines/feature-pipelines-resource.component.js.map +1 -1
  7. package/dist/Lists/components/lists-browse-resource.component.d.ts +7 -0
  8. package/dist/Lists/components/lists-browse-resource.component.d.ts.map +1 -1
  9. package/dist/Lists/components/lists-browse-resource.component.js +25 -5
  10. package/dist/Lists/components/lists-browse-resource.component.js.map +1 -1
  11. package/dist/Lists/components/lists-my-lists-resource.component.d.ts +7 -0
  12. package/dist/Lists/components/lists-my-lists-resource.component.d.ts.map +1 -1
  13. package/dist/Lists/components/lists-my-lists-resource.component.js +66 -37
  14. package/dist/Lists/components/lists-my-lists-resource.component.js.map +1 -1
  15. package/dist/Lists/services/list-set-operations.service.d.ts.map +1 -1
  16. package/dist/Lists/services/list-set-operations.service.js +29 -12
  17. package/dist/Lists/services/list-set-operations.service.js.map +1 -1
  18. package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts +7 -1
  19. package/dist/PredictiveStudio/components/ps-pipelines.component.d.ts.map +1 -1
  20. package/dist/PredictiveStudio/components/ps-pipelines.component.js +11 -4
  21. package/dist/PredictiveStudio/components/ps-pipelines.component.js.map +1 -1
  22. package/dist/QueryBrowser/query-browser-resource.component.js +2 -2
  23. package/dist/Testing/components/testing-runs.component.d.ts.map +1 -1
  24. package/dist/Testing/components/testing-runs.component.js +35 -25
  25. package/dist/Testing/components/testing-runs.component.js.map +1 -1
  26. package/dist/Testing/services/testing-instrumentation.service.d.ts +5 -0
  27. package/dist/Testing/services/testing-instrumentation.service.d.ts.map +1 -1
  28. package/dist/Testing/services/testing-instrumentation.service.js +8 -2
  29. package/dist/Testing/services/testing-instrumentation.service.js.map +1 -1
  30. package/dist/ThemeStudio/theme-agent-context.d.ts +64 -0
  31. package/dist/ThemeStudio/theme-agent-context.d.ts.map +1 -0
  32. package/dist/ThemeStudio/theme-agent-context.js +129 -0
  33. package/dist/ThemeStudio/theme-agent-context.js.map +1 -0
  34. package/dist/ThemeStudio/theme-manager-dashboard.component.d.ts +62 -0
  35. package/dist/ThemeStudio/theme-manager-dashboard.component.d.ts.map +1 -0
  36. package/dist/ThemeStudio/theme-manager-dashboard.component.js +464 -0
  37. package/dist/ThemeStudio/theme-manager-dashboard.component.js.map +1 -0
  38. package/dist/ThemeStudio/theme-manager-resource.component.d.ts +31 -0
  39. package/dist/ThemeStudio/theme-manager-resource.component.d.ts.map +1 -0
  40. package/dist/ThemeStudio/theme-manager-resource.component.js +97 -0
  41. package/dist/ThemeStudio/theme-manager-resource.component.js.map +1 -0
  42. package/dist/ThemeStudio/theme-studio-dashboard.component.d.ts +351 -0
  43. package/dist/ThemeStudio/theme-studio-dashboard.component.d.ts.map +1 -0
  44. package/dist/ThemeStudio/theme-studio-dashboard.component.js +2931 -0
  45. package/dist/ThemeStudio/theme-studio-dashboard.component.js.map +1 -0
  46. package/dist/ThemeStudio/theme-studio-resource.component.d.ts +28 -0
  47. package/dist/ThemeStudio/theme-studio-resource.component.d.ts.map +1 -0
  48. package/dist/ThemeStudio/theme-studio-resource.component.js +96 -0
  49. package/dist/ThemeStudio/theme-studio-resource.component.js.map +1 -0
  50. package/dist/ThemeStudio/theme-studio.constants.d.ts +79 -0
  51. package/dist/ThemeStudio/theme-studio.constants.d.ts.map +1 -0
  52. package/dist/ThemeStudio/theme-studio.constants.js +217 -0
  53. package/dist/ThemeStudio/theme-studio.constants.js.map +1 -0
  54. package/dist/core-dashboards.module.d.ts +56 -52
  55. package/dist/core-dashboards.module.d.ts.map +1 -1
  56. package/dist/core-dashboards.module.js +24 -1
  57. package/dist/core-dashboards.module.js.map +1 -1
  58. package/dist/public-api.d.ts +4 -0
  59. package/dist/public-api.d.ts.map +1 -1
  60. package/dist/public-api.js +4 -0
  61. package/dist/public-api.js.map +1 -1
  62. package/package.json +63 -60
@@ -46,6 +46,13 @@ export declare class ListsMyListsResource extends BaseResourceComponent implemen
46
46
  contextMenuX: number;
47
47
  contextMenuY: number;
48
48
  selectedContextList: MJListEntity | null;
49
+ /**
50
+ * Whether the current user may DELETE the context-menu's list — the same shared ownership rule
51
+ * the server enforces (owner, or a Developer/Integration user). This "My Lists" view is
52
+ * owner-scoped, so for the standard case it's the owner and resolves true; the gate makes it
53
+ * correct-by-construction (and consistent with the Browse view) rather than an unconditional button.
54
+ */
55
+ get CanDeleteSelectedList(): boolean;
49
56
  showCreateDialog: boolean;
50
57
  editingList: MJListEntity | null;
51
58
  newListName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"lists-my-lists-resource.component.d.ts","sourceRoot":"","sources":["../../../src/Lists/components/lists-my-lists-resource.component.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lists-my-lists-resource.component.d.ts","sourceRoot":"","sources":["../../../src/Lists/components/lists-my-lists-resource.component.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import { Component, ViewEncapsulation, HostListener } from '@angular/core';
8
8
  import { RegisterClass, UUIDsEqual } from '@memberjunction/global';
9
9
  import { BaseResourceComponent } from '@memberjunction/ng-shared';
10
+ import { MJListEntityExtended } from '@memberjunction/core-entities';
10
11
  import { RunView } from '@memberjunction/core';
11
12
  import { Subject } from 'rxjs';
12
13
  import { validateEnumParam, validateStringParam } from '../../shared/agent-tool-validation';
@@ -309,6 +310,15 @@ function ListsMyListsResource_Conditional_18_Template(rf, ctx) { if (rf & 1) {
309
310
  i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_18_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeContextMenu()); });
310
311
  i0.ɵɵelementEnd();
311
312
  } }
313
+ function ListsMyListsResource_Conditional_19_Conditional_7_Template(rf, ctx) { if (rf & 1) {
314
+ const _r19 = i0.ɵɵgetCurrentView();
315
+ i0.ɵɵelement(0, "div", 76);
316
+ i0.ɵɵelementStart(1, "button", 77);
317
+ i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_19_Conditional_7_Template_button_click_1_listener() { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.confirmDeleteList()); });
318
+ i0.ɵɵelement(2, "i", 78);
319
+ i0.ɵɵtext(3, " Delete ");
320
+ i0.ɵɵelementEnd();
321
+ } }
312
322
  function ListsMyListsResource_Conditional_19_Template(rf, ctx) { if (rf & 1) {
313
323
  const _r18 = i0.ɵɵgetCurrentView();
314
324
  i0.ɵɵelementStart(0, "div", 72)(1, "button", 73);
@@ -321,20 +331,18 @@ function ListsMyListsResource_Conditional_19_Template(rf, ctx) { if (rf & 1) {
321
331
  i0.ɵɵelement(5, "i", 75);
322
332
  i0.ɵɵtext(6, " Duplicate ");
323
333
  i0.ɵɵelementEnd();
324
- i0.ɵɵelement(7, "div", 76);
325
- i0.ɵɵelementStart(8, "button", 77);
326
- i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_19_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.confirmDeleteList()); });
327
- i0.ɵɵelement(9, "i", 78);
328
- i0.ɵɵtext(10, " Delete ");
329
- i0.ɵɵelementEnd()();
334
+ i0.ɵɵconditionalCreate(7, ListsMyListsResource_Conditional_19_Conditional_7_Template, 4, 0);
335
+ i0.ɵɵelementEnd();
330
336
  } if (rf & 2) {
331
337
  const ctx_r2 = i0.ɵɵnextContext();
332
338
  i0.ɵɵstyleProp("top", ctx_r2.contextMenuY, "px")("left", ctx_r2.contextMenuX, "px");
339
+ i0.ɵɵadvance(7);
340
+ i0.ɵɵconditional(ctx_r2.CanDeleteSelectedList ? 7 : -1);
333
341
  } }
334
342
  function ListsMyListsResource_Conditional_20_Template(rf, ctx) { if (rf & 1) {
335
- const _r19 = i0.ɵɵgetCurrentView();
343
+ const _r20 = i0.ɵɵgetCurrentView();
336
344
  i0.ɵɵelementStart(0, "div", 79);
337
- i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_20_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeCreateDialog()); });
345
+ i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_20_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r20); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeCreateDialog()); });
338
346
  i0.ɵɵelementEnd();
339
347
  } }
340
348
  function ListsMyListsResource_Conditional_21_For_28_Template(rf, ctx) { if (rf & 1) {
@@ -342,59 +350,59 @@ function ListsMyListsResource_Conditional_21_For_28_Template(rf, ctx) { if (rf &
342
350
  i0.ɵɵtext(1);
343
351
  i0.ɵɵelementEnd();
344
352
  } if (rf & 2) {
345
- const cat_r22 = ctx.$implicit;
346
- i0.ɵɵproperty("ngValue", cat_r22.ID);
353
+ const cat_r23 = ctx.$implicit;
354
+ i0.ɵɵproperty("ngValue", cat_r23.ID);
347
355
  i0.ɵɵadvance();
348
- i0.ɵɵtextInterpolate(cat_r22.displayName);
356
+ i0.ɵɵtextInterpolate(cat_r23.displayName);
349
357
  } }
350
358
  function ListsMyListsResource_Conditional_21_Conditional_31_Template(rf, ctx) { if (rf & 1) {
351
359
  i0.ɵɵelement(0, "i", 93);
352
360
  } }
353
361
  function ListsMyListsResource_Conditional_21_Template(rf, ctx) { if (rf & 1) {
354
- const _r20 = i0.ɵɵgetCurrentView();
362
+ const _r21 = i0.ɵɵgetCurrentView();
355
363
  i0.ɵɵelementStart(0, "div", 18)(1, "div", 80)(2, "h3");
356
364
  i0.ɵɵtext(3);
357
365
  i0.ɵɵelementEnd();
358
366
  i0.ɵɵelementStart(4, "button", 81);
359
- i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_21_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r20); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeCreateDialog()); });
367
+ i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_21_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r21); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeCreateDialog()); });
360
368
  i0.ɵɵelement(5, "i", 82);
361
369
  i0.ɵɵelementEnd()();
362
370
  i0.ɵɵelementStart(6, "div", 83)(7, "div", 84)(8, "label");
363
371
  i0.ɵɵtext(9, "Name *");
364
372
  i0.ɵɵelementEnd();
365
373
  i0.ɵɵelementStart(10, "input", 85);
366
- i0.ɵɵtwoWayListener("ngModelChange", function ListsMyListsResource_Conditional_21_Template_input_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.newListName, $event) || (ctx_r2.newListName = $event); return i0.ɵɵresetView($event); });
374
+ i0.ɵɵtwoWayListener("ngModelChange", function ListsMyListsResource_Conditional_21_Template_input_ngModelChange_10_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.newListName, $event) || (ctx_r2.newListName = $event); return i0.ɵɵresetView($event); });
367
375
  i0.ɵɵelementEnd()();
368
376
  i0.ɵɵelementStart(11, "div", 84)(12, "label");
369
377
  i0.ɵɵtext(13, "Description");
370
378
  i0.ɵɵelementEnd();
371
379
  i0.ɵɵelementStart(14, "textarea", 86);
372
- i0.ɵɵtwoWayListener("ngModelChange", function ListsMyListsResource_Conditional_21_Template_textarea_ngModelChange_14_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.newListDescription, $event) || (ctx_r2.newListDescription = $event); return i0.ɵɵresetView($event); });
380
+ i0.ɵɵtwoWayListener("ngModelChange", function ListsMyListsResource_Conditional_21_Template_textarea_ngModelChange_14_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.newListDescription, $event) || (ctx_r2.newListDescription = $event); return i0.ɵɵresetView($event); });
373
381
  i0.ɵɵelementEnd()();
374
382
  i0.ɵɵelementStart(15, "div", 84)(16, "label");
375
383
  i0.ɵɵtext(17, "Entity *");
376
384
  i0.ɵɵelementEnd();
377
385
  i0.ɵɵelementStart(18, "div", 87)(19, "input", 88, 1);
378
- i0.ɵɵtwoWayListener("ngModelChange", function ListsMyListsResource_Conditional_21_Template_input_ngModelChange_19_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.entitySearchTerm, $event) || (ctx_r2.entitySearchTerm = $event); return i0.ɵɵresetView($event); });
379
- i0.ɵɵlistener("ngModelChange", function ListsMyListsResource_Conditional_21_Template_input_ngModelChange_19_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.filterEntities($event)); })("focus", function ListsMyListsResource_Conditional_21_Template_input_focus_19_listener() { i0.ɵɵrestoreView(_r20); const entityInput_r21 = i0.ɵɵreference(20); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.openEntityDropdown(entityInput_r21)); });
386
+ i0.ɵɵtwoWayListener("ngModelChange", function ListsMyListsResource_Conditional_21_Template_input_ngModelChange_19_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.entitySearchTerm, $event) || (ctx_r2.entitySearchTerm = $event); return i0.ɵɵresetView($event); });
387
+ i0.ɵɵlistener("ngModelChange", function ListsMyListsResource_Conditional_21_Template_input_ngModelChange_19_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.filterEntities($event)); })("focus", function ListsMyListsResource_Conditional_21_Template_input_focus_19_listener() { i0.ɵɵrestoreView(_r21); const entityInput_r22 = i0.ɵɵreference(20); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.openEntityDropdown(entityInput_r22)); });
380
388
  i0.ɵɵelementEnd()()();
381
389
  i0.ɵɵelementStart(21, "div", 84)(22, "label");
382
390
  i0.ɵɵtext(23, "Category");
383
391
  i0.ɵɵelementEnd();
384
392
  i0.ɵɵelementStart(24, "select", 89);
385
- i0.ɵɵtwoWayListener("ngModelChange", function ListsMyListsResource_Conditional_21_Template_select_ngModelChange_24_listener($event) { i0.ɵɵrestoreView(_r20); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.selectedCategoryId, $event) || (ctx_r2.selectedCategoryId = $event); return i0.ɵɵresetView($event); });
393
+ i0.ɵɵtwoWayListener("ngModelChange", function ListsMyListsResource_Conditional_21_Template_select_ngModelChange_24_listener($event) { i0.ɵɵrestoreView(_r21); const ctx_r2 = i0.ɵɵnextContext(); i0.ɵɵtwoWayBindingSet(ctx_r2.selectedCategoryId, $event) || (ctx_r2.selectedCategoryId = $event); return i0.ɵɵresetView($event); });
386
394
  i0.ɵɵelementStart(25, "option", 90);
387
395
  i0.ɵɵtext(26, "No category");
388
396
  i0.ɵɵelementEnd();
389
397
  i0.ɵɵrepeaterCreate(27, ListsMyListsResource_Conditional_21_For_28_Template, 2, 2, "option", 90, i0.ɵɵrepeaterTrackByIdentity);
390
398
  i0.ɵɵelementEnd()()();
391
399
  i0.ɵɵelementStart(29, "div", 91)(30, "button", 92);
392
- i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_21_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r20); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.saveList()); });
400
+ i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_21_Template_button_click_30_listener() { i0.ɵɵrestoreView(_r21); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.saveList()); });
393
401
  i0.ɵɵconditionalCreate(31, ListsMyListsResource_Conditional_21_Conditional_31_Template, 1, 0, "i", 93);
394
402
  i0.ɵɵtext(32);
395
403
  i0.ɵɵelementEnd();
396
404
  i0.ɵɵelementStart(33, "button", 94);
397
- i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_21_Template_button_click_33_listener() { i0.ɵɵrestoreView(_r20); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeCreateDialog()); });
405
+ i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_21_Template_button_click_33_listener() { i0.ɵɵrestoreView(_r21); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.closeCreateDialog()); });
398
406
  i0.ɵɵtext(34, "Cancel");
399
407
  i0.ɵɵelementEnd()()();
400
408
  } if (rf & 2) {
@@ -424,21 +432,21 @@ function ListsMyListsResource_Conditional_21_Template(rf, ctx) { if (rf & 1) {
424
432
  i0.ɵɵproperty("disabled", ctx_r2.isSaving);
425
433
  } }
426
434
  function ListsMyListsResource_Conditional_22_Template(rf, ctx) { if (rf & 1) {
427
- const _r23 = i0.ɵɵgetCurrentView();
435
+ const _r24 = i0.ɵɵgetCurrentView();
428
436
  i0.ɵɵelementStart(0, "div", 79);
429
- i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_22_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r23); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.cancelDelete()); });
437
+ i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_22_Template_div_click_0_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.cancelDelete()); });
430
438
  i0.ɵɵelementEnd();
431
439
  } }
432
440
  function ListsMyListsResource_Conditional_23_Conditional_16_Template(rf, ctx) { if (rf & 1) {
433
441
  i0.ɵɵelement(0, "i", 93);
434
442
  } }
435
443
  function ListsMyListsResource_Conditional_23_Template(rf, ctx) { if (rf & 1) {
436
- const _r24 = i0.ɵɵgetCurrentView();
444
+ const _r25 = i0.ɵɵgetCurrentView();
437
445
  i0.ɵɵelementStart(0, "div", 19)(1, "div", 80)(2, "h3");
438
446
  i0.ɵɵtext(3, "Delete List");
439
447
  i0.ɵɵelementEnd();
440
448
  i0.ɵɵelementStart(4, "button", 81);
441
- i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_23_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.cancelDelete()); });
449
+ i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_23_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.cancelDelete()); });
442
450
  i0.ɵɵelement(5, "i", 82);
443
451
  i0.ɵɵelementEnd()();
444
452
  i0.ɵɵelementStart(6, "div", 83)(7, "p");
@@ -452,12 +460,12 @@ function ListsMyListsResource_Conditional_23_Template(rf, ctx) { if (rf & 1) {
452
460
  i0.ɵɵtext(13, "This will also remove all items in the list.");
453
461
  i0.ɵɵelementEnd()();
454
462
  i0.ɵɵelementStart(14, "div", 91)(15, "button", 96);
455
- i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_23_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.deleteList()); });
463
+ i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_23_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.deleteList()); });
456
464
  i0.ɵɵconditionalCreate(16, ListsMyListsResource_Conditional_23_Conditional_16_Template, 1, 0, "i", 93);
457
465
  i0.ɵɵtext(17);
458
466
  i0.ɵɵelementEnd();
459
467
  i0.ɵɵelementStart(18, "button", 97);
460
- i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_23_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r24); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.cancelDelete()); });
468
+ i0.ɵɵlistener("click", function ListsMyListsResource_Conditional_23_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r25); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.cancelDelete()); });
461
469
  i0.ɵɵtext(19, "Cancel");
462
470
  i0.ɵɵelementEnd()()();
463
471
  } if (rf & 2) {
@@ -470,15 +478,15 @@ function ListsMyListsResource_Conditional_23_Template(rf, ctx) { if (rf & 1) {
470
478
  i0.ɵɵtextInterpolate1(" ", ctx_r2.isDeleting ? "Deleting..." : "Delete", " ");
471
479
  } }
472
480
  function ListsMyListsResource_Conditional_24_For_3_Template(rf, ctx) { if (rf & 1) {
473
- const _r25 = i0.ɵɵgetCurrentView();
481
+ const _r26 = i0.ɵɵgetCurrentView();
474
482
  i0.ɵɵelementStart(0, "div", 102);
475
- i0.ɵɵlistener("mousedown", function ListsMyListsResource_Conditional_24_For_3_Template_div_mousedown_0_listener($event) { const entity_r26 = i0.ɵɵrestoreView(_r25).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); ctx_r2.selectEntity(entity_r26); return i0.ɵɵresetView($event.preventDefault()); });
483
+ i0.ɵɵlistener("mousedown", function ListsMyListsResource_Conditional_24_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()); });
476
484
  i0.ɵɵtext(1);
477
485
  i0.ɵɵelementEnd();
478
486
  } if (rf & 2) {
479
- const entity_r26 = ctx.$implicit;
487
+ const entity_r27 = ctx.$implicit;
480
488
  i0.ɵɵadvance();
481
- i0.ɵɵtextInterpolate1(" ", entity_r26.Name, " ");
489
+ i0.ɵɵtextInterpolate1(" ", entity_r27.Name, " ");
482
490
  } }
483
491
  function ListsMyListsResource_Conditional_24_Conditional_4_Template(rf, ctx) { if (rf & 1) {
484
492
  i0.ɵɵelementStart(0, "div", 101);
@@ -522,6 +530,19 @@ let ListsMyListsResource = class ListsMyListsResource extends BaseResourceCompon
522
530
  contextMenuX = 0;
523
531
  contextMenuY = 0;
524
532
  selectedContextList = null;
533
+ /**
534
+ * Whether the current user may DELETE the context-menu's list — the same shared ownership rule
535
+ * the server enforces (owner, or a Developer/Integration user). This "My Lists" view is
536
+ * owner-scoped, so for the standard case it's the owner and resolves true; the gate makes it
537
+ * correct-by-construction (and consistent with the Browse view) rather than an unconditional button.
538
+ */
539
+ get CanDeleteSelectedList() {
540
+ const list = this.selectedContextList;
541
+ if (!list) {
542
+ return false;
543
+ }
544
+ return MJListEntityExtended.UserCanDelete(list.UserID, this.ProviderToUse.CurrentUser);
545
+ }
525
546
  // Create/Edit dialog
526
547
  showCreateDialog = false;
527
548
  editingList = null;
@@ -1027,6 +1048,12 @@ let ListsMyListsResource = class ListsMyListsResource extends BaseResourceCompon
1027
1048
  return;
1028
1049
  const listToDelete = this.listToDelete;
1029
1050
  const listName = listToDelete.Name;
1051
+ // Defense-in-depth: re-check the shared ownership rule before deleting (the server is the true
1052
+ // enforcement point, but this fails fast with a clean message).
1053
+ if (!MJListEntityExtended.UserCanDelete(listToDelete.UserID, this.ProviderToUse.CurrentUser)) {
1054
+ this.notificationService.CreateSimpleNotification(`You don't have permission to delete "${listName}".`, 'error', 6000);
1055
+ return;
1056
+ }
1030
1057
  this.isDeleting = true;
1031
1058
  this.cdr.detectChanges();
1032
1059
  try {
@@ -1131,7 +1158,7 @@ let ListsMyListsResource = class ListsMyListsResource extends BaseResourceCompon
1131
1158
  i0.ɵɵconditionalCreate(15, ListsMyListsResource_Conditional_15_Template, 10, 8, "div", 14);
1132
1159
  i0.ɵɵtemplate(16, ListsMyListsResource_ng_template_16_Template, 5, 6, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
1133
1160
  i0.ɵɵconditionalCreate(18, ListsMyListsResource_Conditional_18_Template, 1, 0, "div", 15);
1134
- i0.ɵɵconditionalCreate(19, ListsMyListsResource_Conditional_19_Template, 11, 4, "div", 16);
1161
+ i0.ɵɵconditionalCreate(19, ListsMyListsResource_Conditional_19_Template, 8, 5, "div", 16);
1135
1162
  i0.ɵɵconditionalCreate(20, ListsMyListsResource_Conditional_20_Template, 1, 0, "div", 17);
1136
1163
  i0.ɵɵconditionalCreate(21, ListsMyListsResource_Conditional_21_Template, 35, 11, "div", 18);
1137
1164
  i0.ɵɵconditionalCreate(22, ListsMyListsResource_Conditional_22_Template, 1, 0, "div", 17);
@@ -1403,11 +1430,13 @@ export { ListsMyListsResource };
1403
1430
  <i class="fa-solid fa-copy"></i>
1404
1431
  Duplicate
1405
1432
  </button>
1406
- <div class="menu-divider"></div>
1407
- <button class="menu-item danger" (click)="confirmDeleteList()">
1408
- <i class="fa-solid fa-trash"></i>
1409
- Delete
1410
- </button>
1433
+ @if (CanDeleteSelectedList) {
1434
+ <div class="menu-divider"></div>
1435
+ <button class="menu-item danger" (click)="confirmDeleteList()">
1436
+ <i class="fa-solid fa-trash"></i>
1437
+ Delete
1438
+ </button>
1439
+ }
1411
1440
  </div>
1412
1441
  }
1413
1442
 
@@ -1541,5 +1570,5 @@ export { ListsMyListsResource };
1541
1570
  type: HostListener,
1542
1571
  args: ['document:keydown.escape']
1543
1572
  }] }); })();
1544
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ListsMyListsResource, { className: "ListsMyListsResource", filePath: "src/Lists/components/lists-my-lists-resource.component.ts", lineNumber: 1057 }); })();
1573
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ListsMyListsResource, { className: "ListsMyListsResource", filePath: "src/Lists/components/lists-my-lists-resource.component.ts", lineNumber: 1059 }); })();
1545
1574
  //# sourceMappingURL=lists-my-lists-resource.component.js.map