@memberjunction/ng-explorer-core 4.0.0 → 4.2.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 (142) hide show
  1. package/README.md +117 -726
  2. package/dist/lib/resource-wrappers/record-resource.component.d.ts.map +1 -1
  3. package/dist/lib/resource-wrappers/record-resource.component.js +11 -29
  4. package/dist/lib/resource-wrappers/record-resource.component.js.map +1 -1
  5. package/dist/lib/shell/components/header/app-nav.component.d.ts +71 -14
  6. package/dist/lib/shell/components/header/app-nav.component.d.ts.map +1 -1
  7. package/dist/lib/shell/components/header/app-nav.component.js +195 -54
  8. package/dist/lib/shell/components/header/app-nav.component.js.map +1 -1
  9. package/dist/lib/shell/components/tabs/component-cache-manager.d.ts.map +1 -1
  10. package/dist/lib/shell/components/tabs/component-cache-manager.js +0 -6
  11. package/dist/lib/shell/components/tabs/component-cache-manager.js.map +1 -1
  12. package/dist/lib/shell/shell.component.d.ts +5 -1
  13. package/dist/lib/shell/shell.component.d.ts.map +1 -1
  14. package/dist/lib/shell/shell.component.js +28 -17
  15. package/dist/lib/shell/shell.component.js.map +1 -1
  16. package/dist/lib/single-dashboard/Components/add-item/add-item.component.js +1 -1
  17. package/dist/lib/single-dashboard/Components/delete-item/delete-item.component.js +1 -1
  18. package/dist/lib/single-dashboard/Components/edit-dashboard/edit-dashboard.component.js +1 -1
  19. package/dist/lib/single-record/single-record.component.d.ts +9 -0
  20. package/dist/lib/single-record/single-record.component.d.ts.map +1 -1
  21. package/dist/lib/single-record/single-record.component.js +43 -2
  22. package/dist/lib/single-record/single-record.component.js.map +1 -1
  23. package/dist/lib/user-menu/base-user-menu.d.ts.map +1 -1
  24. package/dist/lib/user-menu/base-user-menu.js +2 -13
  25. package/dist/lib/user-menu/base-user-menu.js.map +1 -1
  26. package/package.json +35 -35
  27. package/dist/generic/Events.types.d.ts +0 -174
  28. package/dist/generic/Events.types.d.ts.map +0 -1
  29. package/dist/generic/Events.types.js +0 -220
  30. package/dist/generic/Events.types.js.map +0 -1
  31. package/dist/lib/app-view/application-view.component.d.ts +0 -65
  32. package/dist/lib/app-view/application-view.component.d.ts.map +0 -1
  33. package/dist/lib/app-view/application-view.component.js +0 -611
  34. package/dist/lib/app-view/application-view.component.js.map +0 -1
  35. package/dist/lib/auth-button/auth-button.component.d.ts +0 -13
  36. package/dist/lib/auth-button/auth-button.component.d.ts.map +0 -1
  37. package/dist/lib/auth-button/auth-button.component.js +0 -36
  38. package/dist/lib/auth-button/auth-button.component.js.map +0 -1
  39. package/dist/lib/base-browser-component/base-browser-component.d.ts +0 -44
  40. package/dist/lib/base-browser-component/base-browser-component.d.ts.map +0 -1
  41. package/dist/lib/base-browser-component/base-browser-component.js +0 -195
  42. package/dist/lib/base-browser-component/base-browser-component.js.map +0 -1
  43. package/dist/lib/chat-wrapper/chat-wrapper.component.d.ts +0 -54
  44. package/dist/lib/chat-wrapper/chat-wrapper.component.d.ts.map +0 -1
  45. package/dist/lib/chat-wrapper/chat-wrapper.component.js +0 -257
  46. package/dist/lib/chat-wrapper/chat-wrapper.component.js.map +0 -1
  47. package/dist/lib/dashboard-browser-component/dashboard-browser.component.d.ts +0 -32
  48. package/dist/lib/dashboard-browser-component/dashboard-browser.component.d.ts.map +0 -1
  49. package/dist/lib/dashboard-browser-component/dashboard-browser.component.js +0 -244
  50. package/dist/lib/dashboard-browser-component/dashboard-browser.component.js.map +0 -1
  51. package/dist/lib/data-browser-component/data-browser.component.d.ts +0 -23
  52. package/dist/lib/data-browser-component/data-browser.component.d.ts.map +0 -1
  53. package/dist/lib/data-browser-component/data-browser.component.js +0 -267
  54. package/dist/lib/data-browser-component/data-browser.component.js.map +0 -1
  55. package/dist/lib/expansion-panel-component/expansion-panel-component.d.ts +0 -21
  56. package/dist/lib/expansion-panel-component/expansion-panel-component.d.ts.map +0 -1
  57. package/dist/lib/expansion-panel-component/expansion-panel-component.js +0 -158
  58. package/dist/lib/expansion-panel-component/expansion-panel-component.js.map +0 -1
  59. package/dist/lib/favorites/favorites.component.d.ts +0 -15
  60. package/dist/lib/favorites/favorites.component.d.ts.map +0 -1
  61. package/dist/lib/favorites/favorites.component.js +0 -135
  62. package/dist/lib/favorites/favorites.component.js.map +0 -1
  63. package/dist/lib/files/files.component.d.ts +0 -10
  64. package/dist/lib/files/files.component.d.ts.map +0 -1
  65. package/dist/lib/files/files.component.js +0 -41
  66. package/dist/lib/files/files.component.js.map +0 -1
  67. package/dist/lib/generic-browse-list/generic-browse-list.component.d.ts +0 -30
  68. package/dist/lib/generic-browse-list/generic-browse-list.component.d.ts.map +0 -1
  69. package/dist/lib/generic-browse-list/generic-browse-list.component.js +0 -171
  70. package/dist/lib/generic-browse-list/generic-browse-list.component.js.map +0 -1
  71. package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts +0 -120
  72. package/dist/lib/generic-browser-list/generic-browser-list.component.d.ts.map +0 -1
  73. package/dist/lib/generic-browser-list/generic-browser-list.component.js +0 -1093
  74. package/dist/lib/generic-browser-list/generic-browser-list.component.js.map +0 -1
  75. package/dist/lib/header/MSFT_UserImageService.d.ts +0 -12
  76. package/dist/lib/header/MSFT_UserImageService.d.ts.map +0 -1
  77. package/dist/lib/header/MSFT_UserImageService.js +0 -25
  78. package/dist/lib/header/MSFT_UserImageService.js.map +0 -1
  79. package/dist/lib/header/header.component.d.ts +0 -69
  80. package/dist/lib/header/header.component.d.ts.map +0 -1
  81. package/dist/lib/header/header.component.js +0 -342
  82. package/dist/lib/header/header.component.js.map +0 -1
  83. package/dist/lib/home-component/home.component.d.ts +0 -22
  84. package/dist/lib/home-component/home.component.d.ts.map +0 -1
  85. package/dist/lib/home-component/home.component.js +0 -194
  86. package/dist/lib/home-component/home.component.js.map +0 -1
  87. package/dist/lib/home-wrapper/home-wrapper.component.d.ts +0 -7
  88. package/dist/lib/home-wrapper/home-wrapper.component.d.ts.map +0 -1
  89. package/dist/lib/home-wrapper/home-wrapper.component.js +0 -30
  90. package/dist/lib/home-wrapper/home-wrapper.component.js.map +0 -1
  91. package/dist/lib/list-view/list-view.component.d.ts +0 -45
  92. package/dist/lib/list-view/list-view.component.d.ts.map +0 -1
  93. package/dist/lib/list-view/list-view.component.js +0 -329
  94. package/dist/lib/list-view/list-view.component.js.map +0 -1
  95. package/dist/lib/navigation/navigation.component.d.ts +0 -142
  96. package/dist/lib/navigation/navigation.component.d.ts.map +0 -1
  97. package/dist/lib/navigation/navigation.component.js +0 -1212
  98. package/dist/lib/navigation/navigation.component.js.map +0 -1
  99. package/dist/lib/query-browser-component/query-browser.component.d.ts +0 -75
  100. package/dist/lib/query-browser-component/query-browser.component.d.ts.map +0 -1
  101. package/dist/lib/query-browser-component/query-browser.component.js +0 -908
  102. package/dist/lib/query-browser-component/query-browser.component.js.map +0 -1
  103. package/dist/lib/report-browser-component/report-browser.component.d.ts +0 -22
  104. package/dist/lib/report-browser-component/report-browser.component.d.ts.map +0 -1
  105. package/dist/lib/report-browser-component/report-browser.component.js +0 -80
  106. package/dist/lib/report-browser-component/report-browser.component.js.map +0 -1
  107. package/dist/lib/resource-browser/resource-browser.component.d.ts +0 -178
  108. package/dist/lib/resource-browser/resource-browser.component.d.ts.map +0 -1
  109. package/dist/lib/resource-browser/resource-browser.component.js +0 -1012
  110. package/dist/lib/resource-browser/resource-browser.component.js.map +0 -1
  111. package/dist/lib/resource-wrappers/report-resource.component.d.ts +0 -13
  112. package/dist/lib/resource-wrappers/report-resource.component.d.ts.map +0 -1
  113. package/dist/lib/resource-wrappers/report-resource.component.js +0 -49
  114. package/dist/lib/resource-wrappers/report-resource.component.js.map +0 -1
  115. package/dist/lib/shared/custom-icon/custom-icon.component.d.ts +0 -11
  116. package/dist/lib/shared/custom-icon/custom-icon.component.d.ts.map +0 -1
  117. package/dist/lib/shared/custom-icon/custom-icon.component.js +0 -44
  118. package/dist/lib/shared/custom-icon/custom-icon.component.js.map +0 -1
  119. package/dist/lib/single-application/single-application.component.d.ts +0 -24
  120. package/dist/lib/single-application/single-application.component.d.ts.map +0 -1
  121. package/dist/lib/single-application/single-application.component.js +0 -122
  122. package/dist/lib/single-application/single-application.component.js.map +0 -1
  123. package/dist/lib/single-entity/single-entity.component.d.ts +0 -34
  124. package/dist/lib/single-entity/single-entity.component.d.ts.map +0 -1
  125. package/dist/lib/single-entity/single-entity.component.js +0 -245
  126. package/dist/lib/single-entity/single-entity.component.js.map +0 -1
  127. package/dist/lib/single-report/single-report.component.d.ts +0 -17
  128. package/dist/lib/single-report/single-report.component.d.ts.map +0 -1
  129. package/dist/lib/single-report/single-report.component.js +0 -55
  130. package/dist/lib/single-report/single-report.component.js.map +0 -1
  131. package/dist/lib/single-view/single-view.component.d.ts +0 -43
  132. package/dist/lib/single-view/single-view.component.d.ts.map +0 -1
  133. package/dist/lib/single-view/single-view.component.js +0 -207
  134. package/dist/lib/single-view/single-view.component.js.map +0 -1
  135. package/dist/lib/style-guide-test/style-guide-test.component.d.ts +0 -70
  136. package/dist/lib/style-guide-test/style-guide-test.component.d.ts.map +0 -1
  137. package/dist/lib/style-guide-test/style-guide-test.component.js +0 -1024
  138. package/dist/lib/style-guide-test/style-guide-test.component.js.map +0 -1
  139. package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.d.ts +0 -46
  140. package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.d.ts.map +0 -1
  141. package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.js +0 -547
  142. package/dist/lib/tabbed-dashboard/tabbed-dashboard.component.js.map +0 -1
@@ -1,1093 +0,0 @@
1
- import { Component, EventEmitter, Input, Output, ViewChild } from '@angular/core';
2
- import { SharedService } from '@memberjunction/ng-shared';
3
- import { Folder, Item, ItemType } from '../../generic/Item.types';
4
- import { Metadata, KeyValuePair, RunView, CompositeKey } from '@memberjunction/core';
5
- import { AfterAddFolderEvent, AfterAddItemEvent, AfterDeleteFolderEvent, AfterDeleteItemEvent, AfterUnlinkItemEvent, BeforeAddFolderEvent, BeforeAddItemEvent, BeforeDeleteFolderEvent, BeforeDeleteItemEvent, BeforeUnlinkItemEvent, BeforeUpdateFolderEvent, BeforeUpdateItemEvent, DropdownOptionClickEvent } from '../../generic/Events.types';
6
- import { Subject, debounceTime } from 'rxjs';
7
- import * as i0 from "@angular/core";
8
- import * as i1 from "@memberjunction/ng-shared";
9
- import * as i2 from "@angular/common";
10
- import * as i3 from "@progress/kendo-angular-grid";
11
- import * as i4 from "@progress/kendo-angular-dialog";
12
- import * as i5 from "@progress/kendo-angular-buttons";
13
- import * as i6 from "@progress/kendo-angular-inputs";
14
- import * as i7 from "@progress/kendo-angular-label";
15
- import * as i8 from "@progress/kendo-angular-layout";
16
- import * as i9 from "@memberjunction/ng-entity-form-dialog";
17
- import * as i10 from "@memberjunction/ng-shared-generic";
18
- const _c0 = ["entityFormDialog"];
19
- function GenericBrowserListComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
20
- const _r2 = i0.ɵɵgetCurrentView();
21
- i0.ɵɵelementStart(0, "span", 28);
22
- i0.ɵɵlistener("click", function GenericBrowserListComponent_Conditional_4_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.goToParent()); });
23
- i0.ɵɵelement(1, "span", 29);
24
- i0.ɵɵelementEnd();
25
- } }
26
- function GenericBrowserListComponent_Conditional_10_Template(rf, ctx) { if (rf & 1) {
27
- i0.ɵɵelementStart(0, "div", 9);
28
- i0.ɵɵelement(1, "span", 30);
29
- i0.ɵɵtext(2, " Current Folder ");
30
- i0.ɵɵelementEnd();
31
- } }
32
- function GenericBrowserListComponent_ng_template_20_Template(rf, ctx) { if (rf & 1) {
33
- i0.ɵɵelement(0, "i", 31);
34
- } }
35
- function GenericBrowserListComponent_div_28_Template(rf, ctx) { if (rf & 1) {
36
- i0.ɵɵelementStart(0, "div", 32);
37
- i0.ɵɵelement(1, "mj-loading", 33);
38
- i0.ɵɵelementEnd();
39
- } if (rf & 2) {
40
- i0.ɵɵadvance();
41
- i0.ɵɵproperty("showText", false);
42
- } }
43
- function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_2_Template(rf, ctx) { if (rf & 1) {
44
- i0.ɵɵelementStart(0, "div", 43)(1, "span", 44);
45
- i0.ɵɵtext(2);
46
- i0.ɵɵelementEnd()();
47
- } if (rf & 2) {
48
- const dataItem_r6 = ctx.$implicit;
49
- i0.ɵɵadvance(2);
50
- i0.ɵɵtextInterpolate(dataItem_r6.Name);
51
- } }
52
- function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_5_Conditional_0_Template(rf, ctx) { if (rf & 1) {
53
- i0.ɵɵelementStart(0, "span", 45);
54
- i0.ɵɵtext(1);
55
- i0.ɵɵelementEnd();
56
- } if (rf & 2) {
57
- const dataItem_r7 = i0.ɵɵnextContext().$implicit;
58
- const ctx_r2 = i0.ɵɵnextContext(3);
59
- i0.ɵɵadvance();
60
- i0.ɵɵtextInterpolate(ctx_r2.getFormattedDate(ctx_r2.getItemProperty(dataItem_r7, "LastOpened")));
61
- } }
62
- function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_5_Template(rf, ctx) { if (rf & 1) {
63
- i0.ɵɵtemplate(0, GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_5_Conditional_0_Template, 2, 1, "span", 45);
64
- } if (rf & 2) {
65
- const dataItem_r7 = ctx.$implicit;
66
- const ctx_r2 = i0.ɵɵnextContext(3);
67
- i0.ɵɵconditional(ctx_r2.getItemProperty(dataItem_r7, "LastOpened") ? 0 : -1);
68
- } }
69
- function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_7_Template(rf, ctx) { if (rf & 1) {
70
- i0.ɵɵtext(0);
71
- } if (rf & 2) {
72
- const dataItem_r8 = ctx.$implicit;
73
- const ctx_r2 = i0.ɵɵnextContext(3);
74
- i0.ɵɵtextInterpolate1(" ", ctx_r2.getItemProperty(dataItem_r8, "ModifiedBy") || "", " ");
75
- } }
76
- function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_9_Conditional_0_Template(rf, ctx) { if (rf & 1) {
77
- i0.ɵɵelement(0, "kendo-chip", 46);
78
- } }
79
- function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_9_Conditional_1_Template(rf, ctx) { if (rf & 1) {
80
- i0.ɵɵelement(0, "kendo-chip", 47);
81
- } if (rf & 2) {
82
- const dataItem_r9 = i0.ɵɵnextContext().$implicit;
83
- const ctx_r2 = i0.ɵɵnextContext(3);
84
- i0.ɵɵproperty("label", ctx_r2.getResourceTypeLabel(dataItem_r9));
85
- } }
86
- function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_9_Template(rf, ctx) { if (rf & 1) {
87
- i0.ɵɵtemplate(0, GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_9_Conditional_0_Template, 1, 0, "kendo-chip", 46)(1, GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_9_Conditional_1_Template, 1, 1, "kendo-chip", 47);
88
- } if (rf & 2) {
89
- const dataItem_r9 = ctx.$implicit;
90
- i0.ɵɵconditional(dataItem_r9.Type === "Folder" ? 0 : dataItem_r9.Type === "Resource" ? 1 : -1);
91
- } }
92
- function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_11_Conditional_1_Template(rf, ctx) { if (rf & 1) {
93
- const _r10 = i0.ɵɵgetCurrentView();
94
- i0.ɵɵelementStart(0, "button", 52);
95
- i0.ɵɵlistener("click", function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_11_Conditional_1_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r10); const dataItem_r11 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); ctx_r2.SetFavoriteStatus(dataItem_r11); return i0.ɵɵresetView($event.stopPropagation()); });
96
- i0.ɵɵelement(1, "span", 8);
97
- i0.ɵɵelementEnd();
98
- } if (rf & 2) {
99
- const dataItem_r11 = i0.ɵɵnextContext().$implicit;
100
- i0.ɵɵproperty("title", dataItem_r11.Favorite ? "Remove from favorites" : "Add to favorites");
101
- i0.ɵɵadvance();
102
- i0.ɵɵproperty("ngClass", dataItem_r11.Favorite ? "fa-solid fa-star" : "fa-regular fa-star");
103
- } }
104
- function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_11_Conditional_2_Template(rf, ctx) { if (rf & 1) {
105
- const _r12 = i0.ɵɵgetCurrentView();
106
- i0.ɵɵelementStart(0, "button", 53);
107
- i0.ɵɵlistener("click", function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_11_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const dataItem_r11 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.editItem(dataItem_r11)); });
108
- i0.ɵɵelement(1, "span", 54);
109
- i0.ɵɵelementEnd();
110
- } }
111
- function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_11_Conditional_3_Template(rf, ctx) { if (rf & 1) {
112
- const _r13 = i0.ɵɵgetCurrentView();
113
- i0.ɵɵelementStart(0, "button", 55);
114
- i0.ɵɵlistener("click", function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_11_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const dataItem_r11 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.deleteItem(dataItem_r11)); });
115
- i0.ɵɵelement(1, "span", 56);
116
- i0.ɵɵelementEnd();
117
- } }
118
- function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_11_Conditional_4_Template(rf, ctx) { if (rf & 1) {
119
- const _r14 = i0.ɵɵgetCurrentView();
120
- i0.ɵɵelementStart(0, "button", 57);
121
- i0.ɵɵlistener("click", function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_11_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const dataItem_r11 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.unlinkItem(dataItem_r11)); });
122
- i0.ɵɵelement(1, "span", 58);
123
- i0.ɵɵelementEnd();
124
- } }
125
- function GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_11_Template(rf, ctx) { if (rf & 1) {
126
- i0.ɵɵelementStart(0, "div", 18);
127
- i0.ɵɵtemplate(1, GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_11_Conditional_1_Template, 2, 2, "button", 48)(2, GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_11_Conditional_2_Template, 2, 0, "button", 49)(3, GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_11_Conditional_3_Template, 2, 0, "button", 50)(4, GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_11_Conditional_4_Template, 2, 0, "button", 51);
128
- i0.ɵɵelementEnd();
129
- } if (rf & 2) {
130
- const dataItem_r11 = ctx.$implicit;
131
- const ctx_r2 = i0.ɵɵnextContext(3);
132
- i0.ɵɵadvance();
133
- i0.ɵɵconditional(dataItem_r11.Favorite !== undefined ? 1 : -1);
134
- i0.ɵɵadvance();
135
- i0.ɵɵconditional(!ctx_r2.disableEditButton && (!dataItem_r11.IsLink || dataItem_r11.LinkPermissionLevel === "Owner" || dataItem_r11.LinkPermissionLevel === "Edit") ? 2 : -1);
136
- i0.ɵɵadvance();
137
- i0.ɵɵconditional(!dataItem_r11.IsLink || dataItem_r11.LinkPermissionLevel === "Owner" ? 3 : dataItem_r11.IsLink ? 4 : -1);
138
- } }
139
- function GenericBrowserListComponent_Conditional_29_Conditional_0_Template(rf, ctx) { if (rf & 1) {
140
- const _r5 = i0.ɵɵgetCurrentView();
141
- i0.ɵɵelementStart(0, "kendo-grid", 35);
142
- i0.ɵɵlistener("cellClick", function GenericBrowserListComponent_Conditional_29_Conditional_0_Template_kendo_grid_cellClick_0_listener($event) { i0.ɵɵrestoreView(_r5); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCellItemClicked($event)); });
143
- i0.ɵɵelementStart(1, "kendo-grid-column", 36);
144
- i0.ɵɵtemplate(2, GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_2_Template, 3, 1, "ng-template", 37);
145
- i0.ɵɵelementEnd();
146
- i0.ɵɵelement(3, "kendo-grid-column", 38);
147
- i0.ɵɵelementStart(4, "kendo-grid-column", 39);
148
- i0.ɵɵtemplate(5, GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_5_Template, 1, 1, "ng-template", 37);
149
- i0.ɵɵelementEnd();
150
- i0.ɵɵelementStart(6, "kendo-grid-column", 40);
151
- i0.ɵɵtemplate(7, GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_7_Template, 1, 1, "ng-template", 37);
152
- i0.ɵɵelementEnd();
153
- i0.ɵɵelementStart(8, "kendo-grid-column", 41);
154
- i0.ɵɵtemplate(9, GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_9_Template, 2, 1, "ng-template", 37);
155
- i0.ɵɵelementEnd();
156
- i0.ɵɵelementStart(10, "kendo-grid-column", 42);
157
- i0.ɵɵtemplate(11, GenericBrowserListComponent_Conditional_29_Conditional_0_ng_template_11_Template, 5, 3, "ng-template", 37);
158
- i0.ɵɵelementEnd()();
159
- } if (rf & 2) {
160
- const ctx_r2 = i0.ɵɵnextContext(2);
161
- i0.ɵɵproperty("kendoGridBinding", ctx_r2.items);
162
- } }
163
- function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_0_Template(rf, ctx) { if (rf & 1) {
164
- const _r15 = i0.ɵɵgetCurrentView();
165
- i0.ɵɵelementStart(0, "div", 59)(1, "div", 61);
166
- i0.ɵɵelement(2, "span", 62);
167
- i0.ɵɵelementEnd();
168
- i0.ɵɵelementStart(3, "h3");
169
- i0.ɵɵtext(4, "No items found");
170
- i0.ɵɵelementEnd();
171
- i0.ɵɵelementStart(5, "p");
172
- i0.ɵɵtext(6, "This folder is empty or no items match your search criteria.");
173
- i0.ɵɵelementEnd();
174
- i0.ɵɵelementStart(7, "button", 63);
175
- i0.ɵɵlistener("click", function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_0_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onDropdownItemClick({ text: "Folder" })); });
176
- i0.ɵɵelementStart(8, "span", 64);
177
- i0.ɵɵelement(9, "i", 65);
178
- i0.ɵɵtext(10, " Create Your First Item ");
179
- i0.ɵɵelementEnd()()();
180
- } }
181
- function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
182
- const _r18 = i0.ɵɵgetCurrentView();
183
- i0.ɵɵelementStart(0, "button", 52);
184
- i0.ɵɵlistener("click", function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_2_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r18); const item_r17 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(4); ctx_r2.SetFavoriteStatus(item_r17); return i0.ɵɵresetView($event.stopPropagation()); });
185
- i0.ɵɵelement(1, "span", 8);
186
- i0.ɵɵelementEnd();
187
- } if (rf & 2) {
188
- const item_r17 = i0.ɵɵnextContext().$implicit;
189
- i0.ɵɵproperty("title", item_r17.Favorite ? "Remove from favorites" : "Add to favorites");
190
- i0.ɵɵadvance();
191
- i0.ɵɵproperty("ngClass", item_r17.Favorite ? "fa-solid fa-star" : "fa-regular fa-star");
192
- } }
193
- function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
194
- const _r19 = i0.ɵɵgetCurrentView();
195
- i0.ɵɵelementStart(0, "button", 53);
196
- i0.ɵɵlistener("click", function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_3_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r19); const item_r17 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(4); ctx_r2.editItem(item_r17); return i0.ɵɵresetView($event.stopPropagation()); });
197
- i0.ɵɵelement(1, "span", 54);
198
- i0.ɵɵelementEnd();
199
- } }
200
- function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
201
- const _r20 = i0.ɵɵgetCurrentView();
202
- i0.ɵɵelementStart(0, "button", 55);
203
- i0.ɵɵlistener("click", function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_4_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r20); const item_r17 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(4); ctx_r2.deleteItem(item_r17); return i0.ɵɵresetView($event.stopPropagation()); });
204
- i0.ɵɵelement(1, "span", 56);
205
- i0.ɵɵelementEnd();
206
- } }
207
- function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_5_Template(rf, ctx) { if (rf & 1) {
208
- const _r21 = i0.ɵɵgetCurrentView();
209
- i0.ɵɵelementStart(0, "button", 57);
210
- i0.ɵɵlistener("click", function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_5_Template_button_click_0_listener($event) { i0.ɵɵrestoreView(_r21); const item_r17 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(4); ctx_r2.unlinkItem(item_r17); return i0.ɵɵresetView($event.stopPropagation()); });
211
- i0.ɵɵelement(1, "span", 58);
212
- i0.ɵɵelementEnd();
213
- } }
214
- function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
215
- i0.ɵɵelementStart(0, "div", 69);
216
- i0.ɵɵelement(1, "span", 72)(2, "span", 73);
217
- i0.ɵɵelementEnd();
218
- } if (rf & 2) {
219
- const item_r17 = i0.ɵɵnextContext().$implicit;
220
- const ctx_r2 = i0.ɵɵnextContext(4);
221
- i0.ɵɵproperty("title", item_r17.Name + " (Shared)");
222
- i0.ɵɵadvance();
223
- i0.ɵɵproperty("ngClass", ctx_r2.getIconForResourceType(item_r17));
224
- } }
225
- function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_8_Template(rf, ctx) { if (rf & 1) {
226
- i0.ɵɵelement(0, "span", 70);
227
- } if (rf & 2) {
228
- const item_r17 = i0.ɵɵnextContext().$implicit;
229
- const ctx_r2 = i0.ɵɵnextContext(4);
230
- i0.ɵɵproperty("ngClass", ctx_r2.getIconForResourceType(item_r17))("title", item_r17.Name);
231
- } }
232
- function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_13_Conditional_1_Template(rf, ctx) { if (rf & 1) {
233
- i0.ɵɵelementStart(0, "div", 74);
234
- i0.ɵɵelement(1, "span", 75);
235
- i0.ɵɵelementStart(2, "span");
236
- i0.ɵɵtext(3);
237
- i0.ɵɵelementEnd()();
238
- } if (rf & 2) {
239
- const item_r17 = i0.ɵɵnextContext(2).$implicit;
240
- const ctx_r2 = i0.ɵɵnextContext(4);
241
- i0.ɵɵadvance(3);
242
- i0.ɵɵtextInterpolate(ctx_r2.getFormattedDate(ctx_r2.getItemProperty(item_r17, "LastOpened")));
243
- } }
244
- function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_13_Conditional_2_Template(rf, ctx) { if (rf & 1) {
245
- i0.ɵɵelementStart(0, "div", 74);
246
- i0.ɵɵelement(1, "span", 76);
247
- i0.ɵɵelementStart(2, "span");
248
- i0.ɵɵtext(3);
249
- i0.ɵɵelementEnd()();
250
- } if (rf & 2) {
251
- const item_r17 = i0.ɵɵnextContext(2).$implicit;
252
- const ctx_r2 = i0.ɵɵnextContext(4);
253
- i0.ɵɵadvance(3);
254
- i0.ɵɵtextInterpolate(ctx_r2.getItemProperty(item_r17, "ModifiedBy"));
255
- } }
256
- function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_13_Template(rf, ctx) { if (rf & 1) {
257
- i0.ɵɵelementStart(0, "div", 71);
258
- i0.ɵɵtemplate(1, GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_13_Conditional_1_Template, 4, 1, "div", 74)(2, GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_13_Conditional_2_Template, 4, 1, "div", 74);
259
- i0.ɵɵelementEnd();
260
- } if (rf & 2) {
261
- const item_r17 = i0.ɵɵnextContext().$implicit;
262
- const ctx_r2 = i0.ɵɵnextContext(4);
263
- i0.ɵɵadvance();
264
- i0.ɵɵconditional(ctx_r2.getItemProperty(item_r17, "LastOpened") ? 1 : -1);
265
- i0.ɵɵadvance();
266
- i0.ɵɵconditional(ctx_r2.getItemProperty(item_r17, "ModifiedBy") ? 2 : -1);
267
- } }
268
- function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_14_Template(rf, ctx) { if (rf & 1) {
269
- i0.ɵɵelement(0, "kendo-chip", 46);
270
- } }
271
- function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_15_Template(rf, ctx) { if (rf & 1) {
272
- i0.ɵɵelement(0, "kendo-chip", 47);
273
- } if (rf & 2) {
274
- const item_r17 = i0.ɵɵnextContext().$implicit;
275
- const ctx_r2 = i0.ɵɵnextContext(4);
276
- i0.ɵɵproperty("label", ctx_r2.getResourceTypeLabel(item_r17));
277
- } }
278
- function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
279
- const _r16 = i0.ɵɵgetCurrentView();
280
- i0.ɵɵelementStart(0, "kendo-card", 67);
281
- i0.ɵɵlistener("click", function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Template_kendo_card_click_0_listener() { const item_r17 = i0.ɵɵrestoreView(_r16).$implicit; const ctx_r2 = i0.ɵɵnextContext(4); return i0.ɵɵresetView(ctx_r2.itemClick(item_r17)); });
282
- i0.ɵɵelementStart(1, "div", 68);
283
- i0.ɵɵtemplate(2, GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_2_Template, 2, 2, "button", 48)(3, GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_3_Template, 2, 0, "button", 49)(4, GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_4_Template, 2, 0, "button", 50)(5, GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_5_Template, 2, 0, "button", 51);
284
- i0.ɵɵelementEnd();
285
- i0.ɵɵelementStart(6, "kendo-card-body");
286
- i0.ɵɵtemplate(7, GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_7_Template, 3, 2, "div", 69)(8, GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_8_Template, 1, 2, "span", 70);
287
- i0.ɵɵelementStart(9, "h3");
288
- i0.ɵɵtext(10);
289
- i0.ɵɵelementEnd();
290
- i0.ɵɵelementStart(11, "p");
291
- i0.ɵɵtext(12);
292
- i0.ɵɵelementEnd();
293
- i0.ɵɵtemplate(13, GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_13_Template, 3, 2, "div", 71)(14, GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_14_Template, 1, 0, "kendo-chip", 46)(15, GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Conditional_15_Template, 1, 1, "kendo-chip", 47);
294
- i0.ɵɵelementEnd()();
295
- } if (rf & 2) {
296
- const item_r17 = ctx.$implicit;
297
- const ctx_r2 = i0.ɵɵnextContext(4);
298
- i0.ɵɵadvance(2);
299
- i0.ɵɵconditional(item_r17.Favorite !== undefined ? 2 : -1);
300
- i0.ɵɵadvance();
301
- i0.ɵɵconditional(!ctx_r2.disableEditButton && (!item_r17.IsLink || item_r17.LinkPermissionLevel === "Owner" || item_r17.LinkPermissionLevel === "Edit") ? 3 : -1);
302
- i0.ɵɵadvance();
303
- i0.ɵɵconditional(!item_r17.IsLink || item_r17.LinkPermissionLevel === "Owner" ? 4 : item_r17.IsLink ? 5 : -1);
304
- i0.ɵɵadvance(3);
305
- i0.ɵɵconditional(item_r17.IsLink ? 7 : 8);
306
- i0.ɵɵadvance(3);
307
- i0.ɵɵtextInterpolate(item_r17.Name);
308
- i0.ɵɵadvance(2);
309
- i0.ɵɵtextInterpolate(item_r17.Description || "No description available");
310
- i0.ɵɵadvance();
311
- i0.ɵɵconditional(ctx_r2.getItemProperty(item_r17, "LastOpened") || ctx_r2.getItemProperty(item_r17, "ModifiedBy") ? 13 : -1);
312
- i0.ɵɵadvance();
313
- i0.ɵɵconditional(item_r17.Type === "Folder" ? 14 : item_r17.Type === "Resource" ? 15 : -1);
314
- } }
315
- function GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_Template(rf, ctx) { if (rf & 1) {
316
- i0.ɵɵelementStart(0, "div", 60);
317
- i0.ɵɵrepeaterCreate(1, GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_For_2_Template, 16, 8, "kendo-card", 66, i0.ɵɵrepeaterTrackByIdentity);
318
- i0.ɵɵelementEnd();
319
- } if (rf & 2) {
320
- const ctx_r2 = i0.ɵɵnextContext(3);
321
- i0.ɵɵadvance();
322
- i0.ɵɵrepeater(ctx_r2.items);
323
- } }
324
- function GenericBrowserListComponent_Conditional_29_Conditional_1_Template(rf, ctx) { if (rf & 1) {
325
- i0.ɵɵtemplate(0, GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_0_Template, 11, 0, "div", 59)(1, GenericBrowserListComponent_Conditional_29_Conditional_1_Conditional_1_Template, 3, 0, "div", 60);
326
- } if (rf & 2) {
327
- const ctx_r2 = i0.ɵɵnextContext(2);
328
- i0.ɵɵconditional(ctx_r2.items.length === 0 ? 0 : 1);
329
- } }
330
- function GenericBrowserListComponent_Conditional_29_Template(rf, ctx) { if (rf & 1) {
331
- i0.ɵɵtemplate(0, GenericBrowserListComponent_Conditional_29_Conditional_0_Template, 12, 1, "kendo-grid", 34)(1, GenericBrowserListComponent_Conditional_29_Conditional_1_Template, 2, 1);
332
- } if (rf & 2) {
333
- const ctx_r2 = i0.ɵɵnextContext();
334
- i0.ɵɵconditional(ctx_r2.displayAsGrid ? 0 : 1);
335
- } }
336
- function GenericBrowserListComponent_kendo_dialog_30_Conditional_11_Template(rf, ctx) { if (rf & 1) {
337
- i0.ɵɵelementStart(0, "p", 81);
338
- i0.ɵɵtext(1, "This action cannot be undone.");
339
- i0.ɵɵelementEnd();
340
- } }
341
- function GenericBrowserListComponent_kendo_dialog_30_Template(rf, ctx) { if (rf & 1) {
342
- const _r22 = i0.ɵɵgetCurrentView();
343
- i0.ɵɵelementStart(0, "kendo-dialog", 77);
344
- i0.ɵɵlistener("close", function GenericBrowserListComponent_kendo_dialog_30_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r22); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onConfirmDeleteItem(false)); });
345
- i0.ɵɵelementStart(1, "div", 78)(2, "div", 79);
346
- i0.ɵɵelement(3, "span", 80);
347
- i0.ɵɵelementEnd();
348
- i0.ɵɵelementStart(4, "p");
349
- i0.ɵɵtext(5, " Are you sure you want to ");
350
- i0.ɵɵelementStart(6, "strong");
351
- i0.ɵɵtext(7);
352
- i0.ɵɵelementEnd();
353
- i0.ɵɵelementStart(8, "strong");
354
- i0.ɵɵtext(9);
355
- i0.ɵɵelementEnd();
356
- i0.ɵɵtext(10, "? ");
357
- i0.ɵɵelementEnd();
358
- i0.ɵɵtemplate(11, GenericBrowserListComponent_kendo_dialog_30_Conditional_11_Template, 2, 0, "p", 81);
359
- i0.ɵɵelementEnd();
360
- i0.ɵɵelementStart(12, "kendo-dialog-actions", 82)(13, "button", 83);
361
- i0.ɵɵlistener("click", function GenericBrowserListComponent_kendo_dialog_30_Template_button_click_13_listener() { i0.ɵɵrestoreView(_r22); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onConfirmDeleteItem(false)); });
362
- i0.ɵɵtext(14, " Cancel ");
363
- i0.ɵɵelementEnd();
364
- i0.ɵɵelementStart(15, "button", 84);
365
- i0.ɵɵlistener("click", function GenericBrowserListComponent_kendo_dialog_30_Template_button_click_15_listener() { i0.ɵɵrestoreView(_r22); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onConfirmDeleteItem(true)); });
366
- i0.ɵɵelementStart(16, "span", 64);
367
- i0.ɵɵelement(17, "i", 8);
368
- i0.ɵɵtext(18);
369
- i0.ɵɵelementEnd()()()();
370
- } if (rf & 2) {
371
- const ctx_r2 = i0.ɵɵnextContext();
372
- i0.ɵɵproperty("minWidth", 400)("width", 500);
373
- i0.ɵɵadvance(7);
374
- i0.ɵɵtextInterpolate((ctx_r2.selectedItem == null ? null : ctx_r2.selectedItem.IsLink) && (ctx_r2.selectedItem == null ? null : ctx_r2.selectedItem.LinkPermissionLevel) === "Owner" || !(ctx_r2.selectedItem == null ? null : ctx_r2.selectedItem.IsLink) ? "delete" : "unlink");
375
- i0.ɵɵadvance(2);
376
- i0.ɵɵtextInterpolate(ctx_r2.selectedItem == null ? null : ctx_r2.selectedItem.Name);
377
- i0.ɵɵadvance(2);
378
- i0.ɵɵconditional((ctx_r2.selectedItem == null ? null : ctx_r2.selectedItem.IsLink) && (ctx_r2.selectedItem == null ? null : ctx_r2.selectedItem.LinkPermissionLevel) === "Owner" || !(ctx_r2.selectedItem == null ? null : ctx_r2.selectedItem.IsLink) ? 11 : -1);
379
- i0.ɵɵadvance(6);
380
- i0.ɵɵproperty("ngClass", (ctx_r2.selectedItem == null ? null : ctx_r2.selectedItem.IsLink) && (ctx_r2.selectedItem == null ? null : ctx_r2.selectedItem.LinkPermissionLevel) === "Owner" || !(ctx_r2.selectedItem == null ? null : ctx_r2.selectedItem.IsLink) ? "fas fa-trash" : "fas fa-link-slash");
381
- i0.ɵɵadvance();
382
- i0.ɵɵtextInterpolate1(" ", (ctx_r2.selectedItem == null ? null : ctx_r2.selectedItem.IsLink) && (ctx_r2.selectedItem == null ? null : ctx_r2.selectedItem.LinkPermissionLevel) === "Owner" || !(ctx_r2.selectedItem == null ? null : ctx_r2.selectedItem.IsLink) ? "Delete" : "Unlink", " ");
383
- } }
384
- function GenericBrowserListComponent_kendo_dialog_31_ng_template_5_Template(rf, ctx) { if (rf & 1) {
385
- i0.ɵɵelement(0, "i", 90);
386
- } }
387
- function GenericBrowserListComponent_kendo_dialog_31_Template(rf, ctx) { if (rf & 1) {
388
- const _r23 = i0.ɵɵgetCurrentView();
389
- i0.ɵɵelementStart(0, "kendo-dialog", 85);
390
- i0.ɵɵlistener("close", function GenericBrowserListComponent_kendo_dialog_31_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r23); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleCreateFolderView()); });
391
- i0.ɵɵelementStart(1, "div", 78)(2, "kendo-formfield", 86);
392
- i0.ɵɵelement(3, "kendo-label", 87);
393
- i0.ɵɵelementStart(4, "kendo-textbox", 88);
394
- i0.ɵɵlistener("valueChange", function GenericBrowserListComponent_kendo_dialog_31_Template_kendo_textbox_valueChange_4_listener($event) { i0.ɵɵrestoreView(_r23); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onCreateFolderKeyup($event)); });
395
- i0.ɵɵtemplate(5, GenericBrowserListComponent_kendo_dialog_31_ng_template_5_Template, 1, 0, "ng-template", 17);
396
- i0.ɵɵelementEnd()()();
397
- i0.ɵɵelementStart(6, "kendo-dialog-actions", 82)(7, "button", 83);
398
- i0.ɵɵlistener("click", function GenericBrowserListComponent_kendo_dialog_31_Template_button_click_7_listener() { i0.ɵɵrestoreView(_r23); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleCreateFolderView()); });
399
- i0.ɵɵtext(8, " Cancel ");
400
- i0.ɵɵelementEnd();
401
- i0.ɵɵelementStart(9, "button", 63);
402
- i0.ɵɵlistener("click", function GenericBrowserListComponent_kendo_dialog_31_Template_button_click_9_listener() { i0.ɵɵrestoreView(_r23); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.createFolder()); });
403
- i0.ɵɵelementStart(10, "span", 64);
404
- i0.ɵɵelement(11, "i", 89);
405
- i0.ɵɵtext(12, " Create Folder ");
406
- i0.ɵɵelementEnd()()()();
407
- } if (rf & 2) {
408
- i0.ɵɵproperty("minWidth", 350)("width", 450);
409
- i0.ɵɵadvance(4);
410
- i0.ɵɵproperty("clearButton", true);
411
- } }
412
- export class GenericBrowserListComponent {
413
- sharedService;
414
- entityFormDialogRef;
415
- showLoader = true;
416
- itemType = '';
417
- title = '';
418
- items = [];
419
- iconName = 'view';
420
- disableEditButton = false;
421
- addText = 'Create New';
422
- backText = 'Go Back';
423
- ItemEntityName = '';
424
- CategoryEntityName = '';
425
- selectedFolderID = null;
426
- showNotifications = true;
427
- categoryEntityID = null;
428
- displayAsGrid = false;
429
- resourceName = "Resource";
430
- /**
431
- * If we are viewing a reesource, such as dashboards, reports, queries, etc
432
- * then the UI will need to change abit to accomodate this like
433
- * showing the name of the resouce as a header
434
- */
435
- viewingResource = false;
436
- /**
437
- * Indicates if the items should be displayed as a list
438
- * or as a grid of icons
439
- */
440
- displayItemsAsList = false;
441
- extraDropdownOptions = [];
442
- //Before Evewnts
443
- BeforeAddFolderEvent = new EventEmitter();
444
- BeforeAddItemEvent = new EventEmitter();
445
- BeforeDeleteFolderEvent = new EventEmitter();
446
- BeforeDeleteItemEvent = new EventEmitter();
447
- BeforeUnlinkItemEvent = new EventEmitter();
448
- BeforeUpdateFolderEvent = new EventEmitter();
449
- BeforeUpdateItemEvent = new EventEmitter();
450
- //After Events
451
- AfterAddFolderEvent = new EventEmitter();
452
- AfterAddItemEvent = new EventEmitter();
453
- AfterDeleteFolderEvent = new EventEmitter();
454
- AfterDeleteItemEvent = new EventEmitter();
455
- AfterUnlinkItemEvent = new EventEmitter();
456
- AfterUpdateFolderEvent = new EventEmitter();
457
- AfterUpdateItemEvent = new EventEmitter();
458
- NavigateToParentEvent = new EventEmitter();
459
- itemClickEvent = new EventEmitter();
460
- backButtonClickEvent = new EventEmitter();
461
- dropdownOptionClickEvent = new EventEmitter();
462
- viewModeChangeEvent = new EventEmitter();
463
- _resizeDebounceTime = 250;
464
- _resizeEndDebounceTime = 500;
465
- filterItemsSubject = new Subject();
466
- filter = '';
467
- sourceItems = null;
468
- selectedItem = null;
469
- deleteDialogOpened = false;
470
- copyFromDialogOpened = false;
471
- createFolderDialogOpened = false;
472
- newFolderText = "Sample Folder";
473
- resourceTypes = [];
474
- createNewRecordName = "Record";
475
- entityObjectName = "";
476
- /**
477
- * Options for the create button dropdown
478
- */
479
- dropdownOptions = [
480
- { text: "Folder" }
481
- ];
482
- constructor(sharedService) {
483
- this.sharedService = sharedService;
484
- this.filterItemsSubject
485
- .pipe(debounceTime(this._resizeDebounceTime))
486
- .subscribe(() => this.filterItems(this.filter));
487
- }
488
- async ngOnInit() {
489
- const md = new Metadata();
490
- if (this.extraDropdownOptions && this.extraDropdownOptions.length > 0) {
491
- this.dropdownOptions.push(...this.extraDropdownOptions);
492
- }
493
- const view = new RunView();
494
- this.resourceTypes = SharedService.Instance.ResourceTypes;
495
- }
496
- //wrapper function for the grid view
497
- onCellItemClicked(event) {
498
- this.itemClick(event.dataItem);
499
- }
500
- itemClick(item) {
501
- if (!item) {
502
- return;
503
- }
504
- this.itemClickEvent.emit(item);
505
- }
506
- backButtonClicked() {
507
- this.backButtonClickEvent.emit();
508
- }
509
- async addResourceButtonClicked() {
510
- let event = new BeforeAddItemEvent("");
511
- this.BeforeAddItemEvent.emit(event);
512
- if (event.Cancel) {
513
- return;
514
- }
515
- const resourceName = `Sample ${this.ItemEntityName}`;
516
- const md = new Metadata();
517
- const entity = await md.GetEntityObject(this.ItemEntityName);
518
- entity.NewRecord();
519
- //some entities, like resources, have common fields
520
- //we can try to set here
521
- entity.Set("Name", resourceName);
522
- entity.Set("UserID", md.CurrentUser.ID);
523
- let saveResult = await entity.Save();
524
- if (saveResult) {
525
- this.showNotification(`successfully created ${resourceName}`, "info");
526
- let item = new Item(entity, ItemType.Resource);
527
- item.Name = resourceName;
528
- this.AfterAddItemEvent.emit(new AfterAddItemEvent(item));
529
- }
530
- else {
531
- this.showNotification(`Unable to create ${resourceName}`, "error");
532
- }
533
- }
534
- async createFolder() {
535
- this.toggleCreateFolderView(false);
536
- let event = new BeforeAddFolderEvent(this.newFolderText);
537
- if (event.Cancel) {
538
- return;
539
- }
540
- let folderName = this.newFolderText;
541
- let description = "";
542
- const md = new Metadata();
543
- const folderEntity = await md.GetEntityObject(this.CategoryEntityName);
544
- folderEntity.NewRecord();
545
- folderEntity.Set("Name", folderName);
546
- folderEntity.Set("ParentID", this.selectedFolderID);
547
- folderEntity.Set("Description", description);
548
- folderEntity.Set("UserID", md.CurrentUser.ID);
549
- if (this.categoryEntityID) {
550
- folderEntity.Set("EntityID", this.categoryEntityID);
551
- }
552
- let saveResult = await folderEntity.Save();
553
- if (saveResult) {
554
- this.showNotification(`successfully created folder ${folderName}`, "info");
555
- let folder = new Folder(folderEntity.Get("ID"), folderEntity.Get("Name"));
556
- folder.Description = folderEntity.Get("Description");
557
- let item = new Item(folder, ItemType.Folder);
558
- let event = new AfterAddFolderEvent(item);
559
- this.AfterAddFolderEvent.emit(event);
560
- if (event.Cancel) {
561
- return;
562
- }
563
- //navigate to the newly created folder
564
- //by raising an item click event
565
- this.itemClick(item);
566
- }
567
- else {
568
- this.sharedService.CreateSimpleNotification(`Unable to create folder ${folderName}`, "error", 3500);
569
- }
570
- this.newFolderText = "Sample Folder";
571
- }
572
- async unlinkItem(item) {
573
- await this.deleteOrUnlink(item, false);
574
- }
575
- _currentDeleteOrUnlinkState = false;
576
- async deleteOrUnlink(item, bDelete) {
577
- this._currentDeleteOrUnlinkState = bDelete;
578
- if (!item) {
579
- return;
580
- }
581
- this.selectedItem = item;
582
- if (item.Type === ItemType.Folder && bDelete) {
583
- let event = new BeforeDeleteFolderEvent(item);
584
- this.BeforeDeleteFolderEvent.emit(event);
585
- if (event.Cancel) {
586
- return;
587
- }
588
- this.deleteDialogOpened = true;
589
- }
590
- else if (item.Type === ItemType.Resource && bDelete) {
591
- let event = new BeforeDeleteItemEvent(item);
592
- this.BeforeDeleteItemEvent.emit(event);
593
- if (event.Cancel) {
594
- return;
595
- }
596
- this.deleteDialogOpened = true;
597
- }
598
- else if (item.Type === ItemType.Resource && !bDelete) {
599
- let event = new BeforeUnlinkItemEvent(item);
600
- this.BeforeUnlinkItemEvent.emit(event);
601
- if (event.Cancel) {
602
- return;
603
- }
604
- this.deleteDialogOpened = true;
605
- }
606
- }
607
- goToParent() {
608
- this.NavigateToParentEvent.emit();
609
- }
610
- async deleteItem(item) {
611
- await this.deleteOrUnlink(item, true);
612
- }
613
- async onConfirmDeleteItem(shouldDelete) {
614
- this.deleteDialogOpened = false;
615
- if (!this.selectedItem || !shouldDelete) {
616
- return;
617
- }
618
- let item = this.selectedItem;
619
- if (item.Type === ItemType.Folder && this._currentDeleteOrUnlinkState) {
620
- let deleteResult = await this.deleteFolder(item);
621
- if (deleteResult) {
622
- let deleteFolderEvent = new AfterDeleteFolderEvent(item);
623
- this.AfterDeleteFolderEvent.emit(deleteFolderEvent);
624
- }
625
- }
626
- else if (item.Type === ItemType.Resource && this._currentDeleteOrUnlinkState) {
627
- await this.deleteResource(item);
628
- let deleteItemEvent = new AfterDeleteItemEvent(item);
629
- this.AfterDeleteItemEvent.emit(deleteItemEvent);
630
- }
631
- else if (item.Type === ItemType.Resource && !this._currentDeleteOrUnlinkState) {
632
- await this.unlinkResource(item);
633
- let unlinkItemEvent = new AfterUnlinkItemEvent(item);
634
- this.AfterUnlinkItemEvent.emit(unlinkItemEvent);
635
- }
636
- this.selectedItem = null;
637
- }
638
- async deleteFolder(item) {
639
- const folder = item.Data;
640
- //the DB will throw an error if we attempt to delete a folder that has children
641
- //i.e. sub folders or resources
642
- //so the default behavior is to notify the user that the delete operation cannot
643
- //go through
644
- const folderHasChildren = await this.doesFolderHaveChildren(folder.ID);
645
- if (folderHasChildren) {
646
- this.showNotification(`unable to delete folder ${folder.Name} because it has children`, "error");
647
- return false;
648
- }
649
- this.showLoader = true;
650
- const md = new Metadata();
651
- let folderEntity = await md.GetEntityObject(this.CategoryEntityName);
652
- let pkv = new KeyValuePair();
653
- pkv.FieldName = "ID";
654
- pkv.Value = folder.ID;
655
- let compositeKey = new CompositeKey([pkv]);
656
- //create view browser component - this will be used to display views
657
- //then create a new component for applications that wraps around the view browser component
658
- let loadResult = await folderEntity.InnerLoad(compositeKey);
659
- if (!loadResult) {
660
- this.sharedService.CreateSimpleNotification(`Unable to fetch folder ${folder.Name}`, "error", 3500);
661
- this.showLoader = false;
662
- return false;
663
- }
664
- let deleteResult = await folderEntity.Delete();
665
- if (!deleteResult) {
666
- this.sharedService.CreateSimpleNotification(`Unable to delete folder ${folder.Name}`, "error", 3500);
667
- this.showLoader = false;
668
- return false;
669
- }
670
- else {
671
- this.sharedService.CreateSimpleNotification(`Successfully deleted folder ${folder.Name}`, "info", 2000);
672
- this.showLoader = false;
673
- }
674
- return true;
675
- }
676
- async deleteResource(item) {
677
- let genericEntity = item.Data;
678
- if (!genericEntity) {
679
- return false;
680
- }
681
- //the only assumption we are making here is that the entityID
682
- //is a number
683
- const entityID = this.TryGetID(genericEntity);
684
- if (entityID && entityID.length > 0) {
685
- const md = new Metadata();
686
- let entityObject = await md.GetEntityObject(this.ItemEntityName);
687
- let pkv = new KeyValuePair();
688
- pkv.FieldName = "ID";
689
- pkv.Value = entityID;
690
- let compositeKey = new CompositeKey([pkv]);
691
- let loadResult = await entityObject.InnerLoad(compositeKey);
692
- if (loadResult) {
693
- let deleteResult = await entityObject.Delete();
694
- if (deleteResult) {
695
- this.showNotification(`successfully deleted`, "info");
696
- return true;
697
- }
698
- else {
699
- this.showNotification(`Unable to delete`, "error");
700
- }
701
- }
702
- else {
703
- this.showNotification(`unable to fetch`, "error");
704
- }
705
- }
706
- return false;
707
- }
708
- async unlinkResource(item) {
709
- // remove the link by removing the Resource Link record
710
- if (item.ResourceLinkID) {
711
- const md = new Metadata();
712
- const link = await md.GetEntityObject("Resource Links");
713
- if (await link.Load(item.ResourceLinkID))
714
- return await link.Delete();
715
- else
716
- return false;
717
- }
718
- else
719
- return false;
720
- }
721
- async doesFolderHaveChildren(folderID) {
722
- const md = new Metadata();
723
- const rv = new RunView();
724
- const folderResult = await rv.RunView({
725
- EntityName: this.CategoryEntityName,
726
- ExtraFilter: `ParentID ='${folderID}'`
727
- });
728
- return folderResult && folderResult.Success && folderResult.Results.length > 0;
729
- }
730
- showNotification(message, type) {
731
- if (this.showNotifications) {
732
- this.sharedService.CreateSimpleNotification(message, type, 1000);
733
- }
734
- }
735
- TryGetID(data) {
736
- if (data && data.ID) {
737
- return data.ID;
738
- }
739
- else if (typeof data.Get === "function") {
740
- return data.Get("ID");
741
- }
742
- }
743
- changeViewMode(mode) {
744
- this.displayAsGrid = mode === 'grid';
745
- this.viewModeChangeEvent.emit(mode);
746
- }
747
- onKeyup(Value) {
748
- this.filter = Value;
749
- this.filterItemsSubject.next(true);
750
- }
751
- onCreateFolderKeyup(value) {
752
- this.newFolderText = value;
753
- }
754
- filterItems(filter) {
755
- if (!this.sourceItems) {
756
- this.sourceItems = [...this.items];
757
- }
758
- if (!filter) {
759
- this.items = [...this.sourceItems];
760
- return;
761
- }
762
- this.items = this.sourceItems.filter(item => {
763
- return item.Name.toLowerCase().includes(filter.toLowerCase());
764
- });
765
- }
766
- async SetFavoriteStatus(item) {
767
- if (!item) {
768
- return;
769
- }
770
- item.Favorite = !item.Favorite;
771
- const md = new Metadata();
772
- let entityName = item.Type === ItemType.Folder ? this.CategoryEntityName : this.ItemEntityName;
773
- let compositeKey = new CompositeKey([{ FieldName: "ID", Value: item.Data.ID }]);
774
- await md.SetRecordFavoriteStatus(md.CurrentUser.ID, entityName, compositeKey, item.Favorite);
775
- }
776
- editItem(item) {
777
- if (!item) {
778
- return;
779
- }
780
- if (item.Type === ItemType.Folder) {
781
- let event = new BeforeUpdateFolderEvent(item);
782
- this.BeforeUpdateFolderEvent.emit(event);
783
- if (event.Cancel) {
784
- return;
785
- }
786
- }
787
- else {
788
- let event = new BeforeUpdateItemEvent(item);
789
- this.BeforeUpdateItemEvent.emit(event);
790
- if (event.Cancel) {
791
- return;
792
- }
793
- }
794
- }
795
- async onDropdownItemClick(data) {
796
- if (!data || !data.text) {
797
- return;
798
- }
799
- if (data.text === "Folder") {
800
- this.toggleCreateFolderView();
801
- }
802
- else if (data.text === this.resourceName) {
803
- this.addResourceButtonClicked();
804
- }
805
- else if (data.text === this.createNewRecordName) {
806
- if (this.entityFormDialogRef) {
807
- // create a new record for the given entity
808
- const md = new Metadata();
809
- const newRecord = await md.GetEntityObject(this.entityObjectName);
810
- this.entityFormDialogRef.Record = newRecord;
811
- this.entityFormDialogRef.ShowForm();
812
- }
813
- }
814
- else {
815
- let event = new DropdownOptionClickEvent(data.text);
816
- this.dropdownOptionClickEvent.emit(event);
817
- }
818
- }
819
- toggleCopyFromView() {
820
- this.copyFromDialogOpened = !this.copyFromDialogOpened;
821
- }
822
- getCopyFromTitle() {
823
- return `Select ${this.resourceName} to Copy`;
824
- }
825
- toggleCreateFolderView(visible) {
826
- if (visible !== undefined) {
827
- this.createFolderDialogOpened = visible;
828
- }
829
- else {
830
- this.createFolderDialogOpened = !this.createFolderDialogOpened;
831
- }
832
- }
833
- getIconForResourceType(item) {
834
- if (!item) {
835
- return "";
836
- }
837
- if (item.Type === ItemType.Folder) {
838
- return "fa-regular fa-folder";
839
- }
840
- const resourceType = this.resourceTypes.find(rt => rt.Entity === this.ItemEntityName);
841
- if (resourceType && resourceType.Icon) {
842
- return resourceType.Icon;
843
- }
844
- // Default icon if no resource type found
845
- return "fa-solid fa-file";
846
- }
847
- getHeaderIconClass() {
848
- // If viewing a specific folder
849
- if (this.selectedFolderID) {
850
- return "fa-regular fa-folder-open";
851
- }
852
- // Try to get icon from resource type
853
- const resourceType = this.resourceTypes.find(rt => rt.Entity === this.ItemEntityName);
854
- if (resourceType && resourceType.Icon) {
855
- return resourceType.Icon;
856
- }
857
- // Default icons based on common types
858
- switch (this.itemType?.toLowerCase()) {
859
- case 'dashboard':
860
- case 'dashboards':
861
- return "fa-solid fa-chart-line";
862
- case 'report':
863
- case 'reports':
864
- return "fa-solid fa-file-chart-column";
865
- case 'query':
866
- case 'queries':
867
- return "fa-solid fa-database";
868
- case 'view':
869
- case 'views':
870
- return "fa-solid fa-table";
871
- case 'application':
872
- case 'applications':
873
- return "fa-solid fa-window-restore";
874
- default:
875
- return this.iconName || "fa-solid fa-th";
876
- }
877
- }
878
- getResourceTypeLabel(item) {
879
- if (item.Type === ItemType.Folder) {
880
- return "Folder";
881
- }
882
- const resourceType = this.resourceTypes.find(rt => rt.Entity === this.ItemEntityName);
883
- if (resourceType) {
884
- return resourceType.Name;
885
- }
886
- // Return a formatted version of the item type or entity name
887
- return this.itemType || "Resource";
888
- }
889
- getFormattedDate(date) {
890
- if (!date)
891
- return '';
892
- const d = new Date(date);
893
- const now = new Date();
894
- const diffTime = Math.abs(now.getTime() - d.getTime());
895
- const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24));
896
- if (diffDays === 0) {
897
- return 'Today';
898
- }
899
- else if (diffDays === 1) {
900
- return 'Yesterday';
901
- }
902
- else if (diffDays < 7) {
903
- return `${diffDays} days ago`;
904
- }
905
- else if (diffDays < 30) {
906
- const weeks = Math.floor(diffDays / 7);
907
- return `${weeks} week${weeks > 1 ? 's' : ''} ago`;
908
- }
909
- else if (diffDays < 365) {
910
- const months = Math.floor(diffDays / 30);
911
- return `${months} month${months > 1 ? 's' : ''} ago`;
912
- }
913
- else {
914
- return d.toLocaleDateString();
915
- }
916
- }
917
- /**
918
- * Safely gets a property from an item, checking both the item itself and its Data property
919
- */
920
- getItemProperty(item, propertyName) {
921
- // First check if the property exists directly on the item
922
- // We need to cast to any to avoid TypeScript index signature errors
923
- const itemAsAny = item;
924
- if (itemAsAny && itemAsAny[propertyName] !== undefined) {
925
- return itemAsAny[propertyName];
926
- }
927
- // Then check if it exists on the Data property
928
- if (item && item.Data && item.Data[propertyName] !== undefined) {
929
- return item.Data[propertyName];
930
- }
931
- // If Data is a BaseEntity, try using the Get method
932
- if (item && item.Data && typeof item.Data.Get === 'function') {
933
- try {
934
- return item.Data.Get(propertyName);
935
- }
936
- catch (e) {
937
- // Property doesn't exist
938
- }
939
- }
940
- return null;
941
- }
942
- static ɵfac = function GenericBrowserListComponent_Factory(t) { return new (t || GenericBrowserListComponent)(i0.ɵɵdirectiveInject(i1.SharedService)); };
943
- static ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: GenericBrowserListComponent, selectors: [["app-generic-browser-list"]], viewQuery: function GenericBrowserListComponent_Query(rf, ctx) { if (rf & 1) {
944
- i0.ɵɵviewQuery(_c0, 5);
945
- } if (rf & 2) {
946
- let _t;
947
- i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.entityFormDialogRef = _t.first);
948
- } }, inputs: { showLoader: "showLoader", itemType: "itemType", title: "title", items: "items", iconName: "iconName", disableEditButton: "disableEditButton", addText: "addText", backText: "backText", ItemEntityName: "ItemEntityName", CategoryEntityName: "CategoryEntityName", selectedFolderID: "selectedFolderID", showNotifications: "showNotifications", categoryEntityID: "categoryEntityID", displayAsGrid: "displayAsGrid", resourceName: "resourceName", viewingResource: "viewingResource", displayItemsAsList: "displayItemsAsList", extraDropdownOptions: "extraDropdownOptions" }, outputs: { BeforeAddFolderEvent: "BeforeAddFolderEvent", BeforeAddItemEvent: "BeforeAddItemEvent", BeforeDeleteFolderEvent: "BeforeDeleteFolderEvent", BeforeDeleteItemEvent: "BeforeDeleteItemEvent", BeforeUnlinkItemEvent: "BeforeUnlinkItemEvent", BeforeUpdateFolderEvent: "BeforeUpdateFolderEvent", BeforeUpdateItemEvent: "BeforeUpdateItemEvent", AfterAddFolderEvent: "AfterAddFolderEvent", AfterAddItemEvent: "AfterAddItemEvent", AfterDeleteFolderEvent: "AfterDeleteFolderEvent", AfterDeleteItemEvent: "AfterDeleteItemEvent", AfterUnlinkItemEvent: "AfterUnlinkItemEvent", AfterUpdateFolderEvent: "AfterUpdateFolderEvent", AfterUpdateItemEvent: "AfterUpdateItemEvent", NavigateToParentEvent: "NavigateToParentEvent", itemClickEvent: "itemClickEvent", backButtonClickEvent: "backButtonClickEvent", dropdownOptionClickEvent: "dropdownOptionClickEvent", viewModeChangeEvent: "viewModeChangeEvent" }, decls: 34, vars: 14, consts: [["searchInput", ""], ["entityFormDialog", ""], [1, "mj-page-container"], [1, "mj-content-container"], [1, "mj-header"], [1, "mj-header-title"], ["title", "Back to Parent", 1, "mj-btn-icon-only"], [1, "mj-header-icon"], [3, "ngClass"], [1, "mj-header-subtitle"], [1, "mj-header-actions"], ["themeColor", "primary", 1, "mj-btn-primary", 3, "itemClick", "data"], [1, "fa-solid", "fa-plus", "mj-btn-icon"], [1, "mj-btn-text"], [1, "mj-toolbar"], [1, "mj-search"], ["type", "text", "placeholder", "Search items...", "size", "medium", "rounded", "medium", "fillMode", "outline", 1, "mj-search-input", 3, "keyup", "clearButton"], ["kendoTextBoxPrefixTemplate", ""], [1, "mj-toolbar-actions"], ["kendoButton", "", "title", "Table View", "fillMode", "outline", "themeColor", "base", 3, "click", "toggleable", "selected"], [1, "fa-solid", "fa-table"], ["kendoButton", "", "title", "Card View", "fillMode", "outline", "themeColor", "base", 3, "click", "toggleable", "selected"], [1, "fa-solid", "fa-grip"], [1, "main-area"], ["class", "mj-loading", 4, "ngIf"], ["class", "mj-dialog-confirm", "title", "Confirm Action", 3, "minWidth", "width", "close", 4, "ngIf"], ["title", "Create New Folder", "class", "mj-dialog-form", 3, "minWidth", "width", "close", 4, "ngIf"], ["Mode", "complete"], ["title", "Back to Parent", 1, "mj-btn-icon-only", 3, "click"], [1, "fa-solid", "fa-arrow-left"], [1, "fa-solid", "fa-folder-open"], [1, "fas", "fa-search", "search-prefix-icon"], [1, "mj-loading"], ["size", "large", 3, "showText"], [1, "mj-grid-table", 3, "kendoGridBinding"], [1, "mj-grid-table", 3, "cellClick", "kendoGridBinding"], ["field", "Name", "title", "Name"], ["kendoGridCellTemplate", ""], ["field", "Size", "title", "Size"], ["field", "LastOpened", "title", "Last Opened"], ["field", "ModifiedBy", "title", "Modified By"], ["field", "Type", "title", "Type"], ["title", "Actions"], [1, "mj-grid-name-cell"], [1, "mj-grid-name"], [1, "mj-grid-date"], ["label", "Folder", "rounded", "full", "themeColor", "info", "size", "small"], ["rounded", "full", "themeColor", "base", "size", "small", 3, "label"], [1, "mj-btn-icon-only", "mj-btn-sm", 3, "title"], ["title", "Edit Item", 1, "mj-btn-icon-only", "mj-btn-sm"], ["title", "Delete Item", 1, "mj-btn-icon-only", "mj-btn-sm"], ["title", "Remove Link", 1, "mj-btn-icon-only", "mj-btn-sm"], [1, "mj-btn-icon-only", "mj-btn-sm", 3, "click", "title"], ["title", "Edit Item", 1, "mj-btn-icon-only", "mj-btn-sm", 3, "click"], [1, "fa-regular", "fa-pen-to-square"], ["title", "Delete Item", 1, "mj-btn-icon-only", "mj-btn-sm", 3, "click"], [1, "fa-regular", "fa-trash-can"], ["title", "Remove Link", 1, "mj-btn-icon-only", "mj-btn-sm", 3, "click"], [1, "fa-solid", "fa-link-slash"], [1, "mj-empty-state"], [1, "mj-grid-responsive"], [1, "mj-empty-icon"], [1, "fa-regular", "fa-folder-open"], ["kendoButton", "", "themeColor", "primary", "rounded", "medium", 3, "click"], [1, "button-content"], [1, "fas", "fa-plus"], [1, "mj-kendo-icon-card", "mj-kendo-icon-card-clickable"], [1, "mj-kendo-icon-card", "mj-kendo-icon-card-clickable", 3, "click"], [1, "mj-card-actions"], [1, "mj-icon-wrapper-linked", 3, "title"], [1, "mj-card-icon-large", 3, "ngClass", "title"], [1, "mj-card-metadata"], [1, "mj-card-icon-large", 3, "ngClass"], [1, "fa-solid", "fa-link", "mj-link-indicator"], [1, "mj-metadata-item"], [1, "fa-regular", "fa-clock"], [1, "fa-regular", "fa-user"], ["title", "Confirm Action", 1, "mj-dialog-confirm", 3, "close", "minWidth", "width"], [1, "mj-dialog-content"], [1, "mj-dialog-icon"], [1, "fa-solid", "fa-triangle-exclamation"], [1, "mj-dialog-warning"], [1, "mj-dialog-actions"], ["kendoButton", "", "fillMode", "outline", "rounded", "medium", 3, "click"], ["kendoButton", "", "themeColor", "error", "rounded", "medium", 3, "click"], ["title", "Create New Folder", 1, "mj-dialog-form", 3, "close", "minWidth", "width"], ["orientation", "vertical"], ["text", "Folder Name"], ["placeholder", "Enter folder name...", "rounded", "medium", "fillMode", "outline", 3, "valueChange", "clearButton"], [1, "fas", "fa-folder-plus"], [1, "fas", "fa-folder", "search-prefix-icon"]], template: function GenericBrowserListComponent_Template(rf, ctx) { if (rf & 1) {
949
- const _r1 = i0.ɵɵgetCurrentView();
950
- i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "div", 4)(3, "div", 5);
951
- i0.ɵɵtemplate(4, GenericBrowserListComponent_Conditional_4_Template, 2, 0, "span", 6);
952
- i0.ɵɵelementStart(5, "div", 7);
953
- i0.ɵɵelement(6, "span", 8);
954
- i0.ɵɵelementEnd();
955
- i0.ɵɵelementStart(7, "div")(8, "h1");
956
- i0.ɵɵtext(9);
957
- i0.ɵɵelementEnd();
958
- i0.ɵɵtemplate(10, GenericBrowserListComponent_Conditional_10_Template, 3, 0, "div", 9);
959
- i0.ɵɵelementEnd()();
960
- i0.ɵɵelementStart(11, "div", 10)(12, "kendo-dropdownbutton", 11);
961
- i0.ɵɵlistener("itemClick", function GenericBrowserListComponent_Template_kendo_dropdownbutton_itemClick_12_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onDropdownItemClick($event)); });
962
- i0.ɵɵelement(13, "span", 12);
963
- i0.ɵɵelementStart(14, "span", 13);
964
- i0.ɵɵtext(15, "Create New");
965
- i0.ɵɵelementEnd()()()();
966
- i0.ɵɵelementStart(16, "div", 14)(17, "div", 15)(18, "kendo-textbox", 16, 0);
967
- i0.ɵɵlistener("keyup", function GenericBrowserListComponent_Template_kendo_textbox_keyup_18_listener() { i0.ɵɵrestoreView(_r1); const searchInput_r4 = i0.ɵɵreference(19); return i0.ɵɵresetView(ctx.onKeyup(searchInput_r4.value)); });
968
- i0.ɵɵtemplate(20, GenericBrowserListComponent_ng_template_20_Template, 1, 0, "ng-template", 17);
969
- i0.ɵɵelementEnd()();
970
- i0.ɵɵelementStart(21, "div", 18)(22, "kendo-buttongroup")(23, "button", 19);
971
- i0.ɵɵlistener("click", function GenericBrowserListComponent_Template_button_click_23_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.changeViewMode("grid")); });
972
- i0.ɵɵelement(24, "span", 20);
973
- i0.ɵɵelementEnd();
974
- i0.ɵɵelementStart(25, "button", 21);
975
- i0.ɵɵlistener("click", function GenericBrowserListComponent_Template_button_click_25_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.changeViewMode("list")); });
976
- i0.ɵɵelement(26, "span", 22);
977
- i0.ɵɵelementEnd()()()();
978
- i0.ɵɵelementStart(27, "div", 23);
979
- i0.ɵɵtemplate(28, GenericBrowserListComponent_div_28_Template, 2, 1, "div", 24)(29, GenericBrowserListComponent_Conditional_29_Template, 2, 1);
980
- i0.ɵɵelementEnd()();
981
- i0.ɵɵtemplate(30, GenericBrowserListComponent_kendo_dialog_30_Template, 19, 7, "kendo-dialog", 25)(31, GenericBrowserListComponent_kendo_dialog_31_Template, 13, 3, "kendo-dialog", 26);
982
- i0.ɵɵelement(32, "mj-entity-form-dialog", 27, 1);
983
- i0.ɵɵelementEnd();
984
- } if (rf & 2) {
985
- i0.ɵɵadvance(4);
986
- i0.ɵɵconditional(ctx.selectedFolderID ? 4 : -1);
987
- i0.ɵɵadvance(2);
988
- i0.ɵɵproperty("ngClass", ctx.getHeaderIconClass());
989
- i0.ɵɵadvance(3);
990
- i0.ɵɵtextInterpolate(ctx.title);
991
- i0.ɵɵadvance();
992
- i0.ɵɵconditional(ctx.selectedFolderID ? 10 : -1);
993
- i0.ɵɵadvance(2);
994
- i0.ɵɵproperty("data", ctx.dropdownOptions);
995
- i0.ɵɵadvance(6);
996
- i0.ɵɵproperty("clearButton", true);
997
- i0.ɵɵadvance(5);
998
- i0.ɵɵproperty("toggleable", true)("selected", ctx.displayAsGrid);
999
- i0.ɵɵadvance(2);
1000
- i0.ɵɵproperty("toggleable", true)("selected", !ctx.displayAsGrid);
1001
- i0.ɵɵadvance(3);
1002
- i0.ɵɵproperty("ngIf", ctx.showLoader);
1003
- i0.ɵɵadvance();
1004
- i0.ɵɵconditional(!ctx.showLoader ? 29 : -1);
1005
- i0.ɵɵadvance();
1006
- i0.ɵɵproperty("ngIf", ctx.deleteDialogOpened);
1007
- i0.ɵɵadvance();
1008
- i0.ɵɵproperty("ngIf", ctx.createFolderDialogOpened);
1009
- } }, dependencies: [i2.NgClass, i2.NgIf, i3.GridComponent, i3.DataBindingDirective, i3.ColumnComponent, i3.CellTemplateDirective, i4.DialogComponent, i4.DialogActionsComponent, i5.ButtonGroupComponent, i5.ButtonComponent, i5.DropDownButtonComponent, i5.ChipComponent, i6.TextBoxComponent, i6.TextBoxPrefixTemplateDirective, i6.FormFieldComponent, i7.LabelComponent, i8.CardComponent, i8.CardBodyComponent, i9.EntityFormDialogComponent, i10.LoadingComponent], styles: ["\n\n\n\n\n\n\n.mj-icon-wrapper-linked[_ngcontent-%COMP%] {\n position: relative;\n display: inline-block;\n}\n\n.mj-link-indicator[_ngcontent-%COMP%] {\n position: absolute;\n bottom: -5px;\n right: -5px;\n font-size: 1.5rem;\n color: var(--mj-blue);\n background: var(--white-color);\n border-radius: 50%;\n padding: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n\n\n.mj-grid-name-cell[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 10px;\n \n .mj-grid-icon {\n font-size: 1.25rem;\n color: var(--mj-blue);\n flex-shrink: 0;\n }\n \n .mj-grid-name {\n font-weight: 500;\n color: var(--navy);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n \n .mj-grid-link-indicator {\n position: absolute;\n bottom: -4px;\n right: -4px;\n font-size: 0.75rem;\n color: var(--mj-blue);\n background: var(--white-color);\n border-radius: 50%;\n padding: 1px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n }\n}\n\n.mj-grid-date[_ngcontent-%COMP%] {\n color: var(--gray-800);\n font-size: 0.875rem;\n}\n\n\n\n.mj-card-metadata[_ngcontent-%COMP%] {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n justify-content: center;\n margin: 12px 0;\n font-size: 0.875rem;\n color: var(--gray-800);\n \n .mj-metadata-item {\n display: flex;\n align-items: center;\n gap: 6px;\n \n span:first-child {\n font-size: 0.875rem;\n color: var(--mj-blue);\n }\n }\n}\n\n\n\n.mj-card-actions[_ngcontent-%COMP%] {\n .fa-star {\n transition: all 0.2s ease;\n \n &.fa-solid {\n color: #ffc107;\n }\n \n &.fa-regular {\n color: var(--gray-800);\n }\n }\n \n button:hover .fa-star.fa-regular {\n color: #ffc107;\n }\n}\n\n\n\n .mj-grid-table {\n .mj-toolbar-actions {\n .mj-btn-icon-only {\n width: 32px;\n height: 32px;\n padding: 0;\n font-size: 14px;\n }\n }\n}"] });
1010
- }
1011
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(GenericBrowserListComponent, [{
1012
- type: Component,
1013
- args: [{ selector: 'app-generic-browser-list', template: "<div class=\"mj-page-container\">\n <div class=\"mj-content-container\">\n \n <!-- Header Section -->\n <div class=\"mj-header\">\n <div class=\"mj-header-title\">\n @if(selectedFolderID){\n <span title=\"Back to Parent\" class=\"mj-btn-icon-only\" (click)=\"goToParent()\">\n <span class=\"fa-solid fa-arrow-left\"></span>\n </span>\n }\n <div class=\"mj-header-icon\">\n <span [ngClass]=\"getHeaderIconClass()\"></span>\n </div>\n <div>\n <h1>{{title}}</h1>\n @if(selectedFolderID){\n <div class=\"mj-header-subtitle\">\n <span class=\"fa-solid fa-folder-open\"></span>\n Current Folder\n </div>\n }\n </div>\n </div>\n \n <div class=\"mj-header-actions\">\n <kendo-dropdownbutton \n class=\"mj-btn-primary\" \n (itemClick)=\"onDropdownItemClick($event)\" \n [data]=\"dropdownOptions\" \n themeColor=\"primary\">\n <span class=\"fa-solid fa-plus mj-btn-icon\"></span>\n <span class=\"mj-btn-text\">Create New</span>\n </kendo-dropdownbutton>\n </div>\n </div>\n\n <!-- Toolbar Section -->\n <div class=\"mj-toolbar\">\n <div class=\"mj-search\">\n <kendo-textbox \n class=\"mj-search-input\"\n type=\"text\" \n #searchInput \n placeholder=\"Search items...\" \n (keyup)=\"onKeyup(searchInput.value)\"\n [clearButton]=\"true\"\n size=\"medium\"\n rounded=\"medium\"\n fillMode=\"outline\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fas fa-search search-prefix-icon\"></i>\n </ng-template>\n </kendo-textbox>\n </div>\n \n <div class=\"mj-toolbar-actions\">\n <kendo-buttongroup>\n <button kendoButton \n [toggleable]=\"true\" \n [selected]=\"displayAsGrid\"\n (click)=\"changeViewMode('grid')\" \n title=\"Table View\"\n fillMode=\"outline\"\n themeColor=\"base\">\n <span class=\"fa-solid fa-table\"></span>\n </button>\n <button kendoButton \n [toggleable]=\"true\" \n [selected]=\"!displayAsGrid\"\n (click)=\"changeViewMode('list')\" \n title=\"Card View\"\n fillMode=\"outline\"\n themeColor=\"base\">\n <span class=\"fa-solid fa-grip\"></span>\n </button>\n </kendo-buttongroup>\n </div>\n </div>\n\n <!-- Main Content Area -->\n <div class=\"main-area\">\n <!-- Loading State -->\n <div class=\"mj-loading\" *ngIf=\"showLoader\">\n <mj-loading [showText]=\"false\" size=\"large\"></mj-loading>\n </div>\n \n @if(!showLoader){\n <!-- Grid View -->\n @if(displayAsGrid){\n <kendo-grid \n class=\"mj-grid-table\"\n (cellClick)=\"onCellItemClicked($event)\" \n [kendoGridBinding]=\"items\">\n <kendo-grid-column field=\"Name\" title=\"Name\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <div class=\"mj-grid-name-cell\"> \n <span class=\"mj-grid-name\">{{ dataItem.Name }}</span>\n </div>\n </ng-template>\n </kendo-grid-column>\n <kendo-grid-column field=\"Size\" title=\"Size\"></kendo-grid-column>\n <kendo-grid-column field=\"LastOpened\" title=\"Last Opened\">\n <ng-template kendoGridCellTemplate let-dataItem>\n @if(getItemProperty(dataItem, 'LastOpened')) {\n <span class=\"mj-grid-date\">{{ getFormattedDate(getItemProperty(dataItem, 'LastOpened')) }}</span>\n }\n </ng-template>\n </kendo-grid-column>\n <kendo-grid-column field=\"ModifiedBy\" title=\"Modified By\">\n <ng-template kendoGridCellTemplate let-dataItem>\n {{ getItemProperty(dataItem, 'ModifiedBy') || '' }}\n </ng-template>\n </kendo-grid-column>\n <kendo-grid-column field=\"Type\" title=\"Type\">\n <ng-template kendoGridCellTemplate let-dataItem>\n @if(dataItem.Type === 'Folder') {\n <kendo-chip \n label=\"Folder\" \n rounded=\"full\"\n themeColor=\"info\"\n size=\"small\">\n </kendo-chip>\n }\n @else if(dataItem.Type === 'Resource') {\n <kendo-chip \n [label]=\"getResourceTypeLabel(dataItem)\" \n rounded=\"full\"\n themeColor=\"base\"\n size=\"small\">\n </kendo-chip>\n }\n </ng-template>\n </kendo-grid-column>\n <kendo-grid-column title=\"Actions\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <div class=\"mj-toolbar-actions\">\n @if(dataItem.Favorite !== undefined) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" \n (click)=\"SetFavoriteStatus(dataItem); $event.stopPropagation()\" \n [title]=\"dataItem.Favorite ? 'Remove from favorites' : 'Add to favorites'\">\n <span [ngClass]=\"dataItem.Favorite ? 'fa-solid fa-star' : 'fa-regular fa-star'\"></span>\n </button>\n }\n @if(!disableEditButton && (!dataItem.IsLink || dataItem.LinkPermissionLevel === 'Owner' || dataItem.LinkPermissionLevel === 'Edit')) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"editItem(dataItem)\" title=\"Edit Item\">\n <span class=\"fa-regular fa-pen-to-square\"></span>\n </button>\n }\n @if(!dataItem.IsLink || dataItem.LinkPermissionLevel === 'Owner') {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"deleteItem(dataItem)\" title=\"Delete Item\">\n <span class=\"fa-regular fa-trash-can\"></span>\n </button>\n }\n @else if (dataItem.IsLink) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"unlinkItem(dataItem)\" title=\"Remove Link\">\n <span class=\"fa-solid fa-link-slash\"></span>\n </button>\n }\n </div>\n </ng-template>\n </kendo-grid-column>\n </kendo-grid>\n }\n \n <!-- Card View -->\n @else{\n <!-- Empty State -->\n @if(items.length === 0){\n <div class=\"mj-empty-state\">\n <div class=\"mj-empty-icon\">\n <span class=\"fa-regular fa-folder-open\"></span>\n </div>\n <h3>No items found</h3>\n <p>This folder is empty or no items match your search criteria.</p>\n <button kendoButton themeColor=\"primary\" rounded=\"medium\" (click)=\"onDropdownItemClick({text: 'Folder'})\">\n <span class=\"button-content\">\n <i class=\"fas fa-plus\"></i>\n Create Your First Item\n </span>\n </button>\n </div>\n }\n \n <!-- Cards Grid -->\n @else{\n <div class=\"mj-grid-responsive\">\n @for(item of items; track item){\n <kendo-card class=\"mj-kendo-icon-card mj-kendo-icon-card-clickable\" (click)=\"itemClick(item)\">\n <!-- Card Actions -->\n <div class=\"mj-card-actions\">\n @if(item.Favorite !== undefined) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" \n (click)=\"SetFavoriteStatus(item); $event.stopPropagation()\" \n [title]=\"item.Favorite ? 'Remove from favorites' : 'Add to favorites'\">\n <span [ngClass]=\"item.Favorite ? 'fa-solid fa-star' : 'fa-regular fa-star'\"></span>\n </button>\n }\n @if(!disableEditButton && (!item.IsLink || item.LinkPermissionLevel === 'Owner' || item.LinkPermissionLevel === 'Edit')) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"editItem(item); $event.stopPropagation()\" title=\"Edit Item\">\n <span class=\"fa-regular fa-pen-to-square\"></span>\n </button>\n }\n @if(!item.IsLink || item.LinkPermissionLevel === 'Owner') {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"deleteItem(item); $event.stopPropagation()\" title=\"Delete Item\">\n <span class=\"fa-regular fa-trash-can\"></span>\n </button>\n }\n @else if (item.IsLink) {\n <button class=\"mj-btn-icon-only mj-btn-sm\" (click)=\"unlinkItem(item); $event.stopPropagation()\" title=\"Remove Link\">\n <span class=\"fa-solid fa-link-slash\"></span>\n </button>\n }\n </div>\n \n <!-- Card Body -->\n <kendo-card-body>\n @if(item.IsLink) {\n <div class=\"mj-icon-wrapper-linked\" [title]=\"item.Name + ' (Shared)'\">\n <span [ngClass]=\"getIconForResourceType(item)\" class=\"mj-card-icon-large\"></span>\n <span class=\"fa-solid fa-link mj-link-indicator\"></span>\n </div>\n }\n @else {\n <span [ngClass]=\"getIconForResourceType(item)\" class=\"mj-card-icon-large\" [title]=\"item.Name\"></span>\n }\n \n <h3>{{ item.Name }}</h3>\n <p>{{ item.Description || 'No description available' }}</p>\n \n <!-- Resource metadata -->\n @if(getItemProperty(item, 'LastOpened') || getItemProperty(item, 'ModifiedBy')) {\n <div class=\"mj-card-metadata\">\n @if(getItemProperty(item, 'LastOpened')) {\n <div class=\"mj-metadata-item\">\n <span class=\"fa-regular fa-clock\"></span>\n <span>{{ getFormattedDate(getItemProperty(item, 'LastOpened')) }}</span>\n </div>\n }\n @if(getItemProperty(item, 'ModifiedBy')) {\n <div class=\"mj-metadata-item\">\n <span class=\"fa-regular fa-user\"></span>\n <span>{{ getItemProperty(item, 'ModifiedBy') }}</span>\n </div>\n }\n </div>\n }\n \n <!-- Type chip -->\n @if(item.Type === 'Folder') {\n <kendo-chip \n label=\"Folder\" \n rounded=\"full\"\n themeColor=\"info\"\n size=\"small\">\n </kendo-chip>\n }\n @else if(item.Type === 'Resource') {\n <kendo-chip \n [label]=\"getResourceTypeLabel(item)\" \n rounded=\"full\"\n themeColor=\"base\"\n size=\"small\">\n </kendo-chip>\n }\n </kendo-card-body>\n </kendo-card>\n }\n </div>\n }\n }\n }\n </div>\n </div>\n\n <!-- Delete Confirmation Dialog -->\n <kendo-dialog \n [minWidth]=\"400\"\n [width]=\"500\"\n class=\"mj-dialog-confirm\" \n title=\"Confirm Action\" \n *ngIf=\"deleteDialogOpened\" \n (close)=\"onConfirmDeleteItem(false)\">\n \n <div class=\"mj-dialog-content\">\n <div class=\"mj-dialog-icon\">\n <span class=\"fa-solid fa-triangle-exclamation\"></span>\n </div>\n <p>\n Are you sure you want to \n <strong>{{(selectedItem?.IsLink && selectedItem?.LinkPermissionLevel === 'Owner') || !selectedItem?.IsLink ? 'delete' : 'unlink'}}</strong> \n <strong>{{selectedItem?.Name}}</strong>?\n </p>\n @if((selectedItem?.IsLink && selectedItem?.LinkPermissionLevel === 'Owner') || !selectedItem?.IsLink){\n <p class=\"mj-dialog-warning\">This action cannot be undone.</p>\n }\n </div>\n \n <kendo-dialog-actions class=\"mj-dialog-actions\">\n <button kendoButton fillMode=\"outline\" rounded=\"medium\" (click)=\"onConfirmDeleteItem(false)\">\n Cancel\n </button>\n <button kendoButton themeColor=\"error\" rounded=\"medium\" (click)=\"onConfirmDeleteItem(true)\">\n <span class=\"button-content\">\n <i [ngClass]=\"(selectedItem?.IsLink && selectedItem?.LinkPermissionLevel === 'Owner') || !selectedItem?.IsLink ? 'fas fa-trash' : 'fas fa-link-slash'\"></i>\n {{(selectedItem?.IsLink && selectedItem?.LinkPermissionLevel === 'Owner') || !selectedItem?.IsLink ? 'Delete' : 'Unlink'}}\n </span>\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n\n <!-- Create Folder Dialog -->\n <kendo-dialog \n title=\"Create New Folder\" \n *ngIf=\"createFolderDialogOpened\" \n (close)=\"toggleCreateFolderView()\"\n [minWidth]=\"350\"\n [width]=\"450\"\n class=\"mj-dialog-form\">\n \n <div class=\"mj-dialog-content\">\n <kendo-formfield orientation=\"vertical\">\n <kendo-label text=\"Folder Name\"></kendo-label>\n <kendo-textbox \n placeholder=\"Enter folder name...\" \n (valueChange)=\"onCreateFolderKeyup($event)\"\n rounded=\"medium\"\n fillMode=\"outline\"\n [clearButton]=\"true\">\n <ng-template kendoTextBoxPrefixTemplate>\n <i class=\"fas fa-folder search-prefix-icon\"></i>\n </ng-template>\n </kendo-textbox>\n </kendo-formfield>\n </div>\n \n <kendo-dialog-actions class=\"mj-dialog-actions\">\n <button kendoButton fillMode=\"outline\" rounded=\"medium\" (click)=\"toggleCreateFolderView()\">\n Cancel\n </button>\n <button kendoButton themeColor=\"primary\" rounded=\"medium\" (click)=\"createFolder()\">\n <span class=\"button-content\">\n <i class=\"fas fa-folder-plus\"></i>\n Create Folder\n </span>\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n\n <!-- Entity Form Dialog -->\n <mj-entity-form-dialog\n #entityFormDialog\n Mode=\"complete\">\n </mj-entity-form-dialog>\n</div>", styles: ["/* ===================================\n GENERIC BROWSER LIST SPECIFIC STYLES\n =================================== */\n\n/* Link indicator for shared items */\n.mj-icon-wrapper-linked {\n position: relative;\n display: inline-block;\n}\n\n.mj-link-indicator {\n position: absolute;\n bottom: -5px;\n right: -5px;\n font-size: 1.5rem;\n color: var(--mj-blue);\n background: var(--white-color);\n border-radius: 50%;\n padding: 2px;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\n}\n\n/* Grid specific cells for this component */\n.mj-grid-name-cell {\n display: flex;\n align-items: center;\n gap: 10px;\n \n .mj-grid-icon {\n font-size: 1.25rem;\n color: var(--mj-blue);\n flex-shrink: 0;\n }\n \n .mj-grid-name {\n font-weight: 500;\n color: var(--navy);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n \n .mj-grid-link-indicator {\n position: absolute;\n bottom: -4px;\n right: -4px;\n font-size: 0.75rem;\n color: var(--mj-blue);\n background: var(--white-color);\n border-radius: 50%;\n padding: 1px;\n box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);\n }\n}\n\n.mj-grid-date {\n color: var(--gray-800);\n font-size: 0.875rem;\n}\n\n/* Card metadata section specific to this component */\n.mj-card-metadata {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n justify-content: center;\n margin: 12px 0;\n font-size: 0.875rem;\n color: var(--gray-800);\n \n .mj-metadata-item {\n display: flex;\n align-items: center;\n gap: 6px;\n \n span:first-child {\n font-size: 0.875rem;\n color: var(--mj-blue);\n }\n }\n}\n\n/* Favorite star specific styling */\n.mj-card-actions {\n .fa-star {\n transition: all 0.2s ease;\n \n &.fa-solid {\n color: #ffc107;\n }\n \n &.fa-regular {\n color: var(--gray-800);\n }\n }\n \n button:hover .fa-star.fa-regular {\n color: #ffc107;\n }\n}\n\n/* Action buttons in grid cells - specific sizing for this component */\n::ng-deep .mj-grid-table {\n .mj-toolbar-actions {\n .mj-btn-icon-only {\n width: 32px;\n height: 32px;\n padding: 0;\n font-size: 14px;\n }\n }\n}\n"] }]
1014
- }], () => [{ type: i1.SharedService }], { entityFormDialogRef: [{
1015
- type: ViewChild,
1016
- args: ['entityFormDialog']
1017
- }], showLoader: [{
1018
- type: Input
1019
- }], itemType: [{
1020
- type: Input
1021
- }], title: [{
1022
- type: Input
1023
- }], items: [{
1024
- type: Input
1025
- }], iconName: [{
1026
- type: Input
1027
- }], disableEditButton: [{
1028
- type: Input
1029
- }], addText: [{
1030
- type: Input
1031
- }], backText: [{
1032
- type: Input
1033
- }], ItemEntityName: [{
1034
- type: Input
1035
- }], CategoryEntityName: [{
1036
- type: Input
1037
- }], selectedFolderID: [{
1038
- type: Input
1039
- }], showNotifications: [{
1040
- type: Input
1041
- }], categoryEntityID: [{
1042
- type: Input
1043
- }], displayAsGrid: [{
1044
- type: Input
1045
- }], resourceName: [{
1046
- type: Input
1047
- }], viewingResource: [{
1048
- type: Input
1049
- }], displayItemsAsList: [{
1050
- type: Input
1051
- }], extraDropdownOptions: [{
1052
- type: Input
1053
- }], BeforeAddFolderEvent: [{
1054
- type: Output
1055
- }], BeforeAddItemEvent: [{
1056
- type: Output
1057
- }], BeforeDeleteFolderEvent: [{
1058
- type: Output
1059
- }], BeforeDeleteItemEvent: [{
1060
- type: Output
1061
- }], BeforeUnlinkItemEvent: [{
1062
- type: Output
1063
- }], BeforeUpdateFolderEvent: [{
1064
- type: Output
1065
- }], BeforeUpdateItemEvent: [{
1066
- type: Output
1067
- }], AfterAddFolderEvent: [{
1068
- type: Output
1069
- }], AfterAddItemEvent: [{
1070
- type: Output
1071
- }], AfterDeleteFolderEvent: [{
1072
- type: Output
1073
- }], AfterDeleteItemEvent: [{
1074
- type: Output
1075
- }], AfterUnlinkItemEvent: [{
1076
- type: Output
1077
- }], AfterUpdateFolderEvent: [{
1078
- type: Output
1079
- }], AfterUpdateItemEvent: [{
1080
- type: Output
1081
- }], NavigateToParentEvent: [{
1082
- type: Output
1083
- }], itemClickEvent: [{
1084
- type: Output
1085
- }], backButtonClickEvent: [{
1086
- type: Output
1087
- }], dropdownOptionClickEvent: [{
1088
- type: Output
1089
- }], viewModeChangeEvent: [{
1090
- type: Output
1091
- }] }); })();
1092
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(GenericBrowserListComponent, { className: "GenericBrowserListComponent" }); })();
1093
- //# sourceMappingURL=generic-browser-list.component.js.map