@memberjunction/ng-explorer-core 2.9.0 → 2.10.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 (30) hide show
  1. package/dist/generic/Item.types.d.ts +12 -0
  2. package/dist/generic/Item.types.d.ts.map +1 -1
  3. package/dist/generic/Item.types.js +7 -0
  4. package/dist/generic/Item.types.js.map +1 -1
  5. package/dist/lib/app-view/application-view.component.d.ts +4 -6
  6. package/dist/lib/app-view/application-view.component.d.ts.map +1 -1
  7. package/dist/lib/app-view/application-view.component.js +23 -16
  8. package/dist/lib/app-view/application-view.component.js.map +1 -1
  9. package/dist/lib/base-browser-component/base-browser-component.d.ts.map +1 -1
  10. package/dist/lib/dashboard-browser-component/dashboard-browser.component.d.ts +16 -5
  11. package/dist/lib/dashboard-browser-component/dashboard-browser.component.d.ts.map +1 -1
  12. package/dist/lib/dashboard-browser-component/dashboard-browser.component.js +172 -17
  13. package/dist/lib/dashboard-browser-component/dashboard-browser.component.js.map +1 -1
  14. package/dist/lib/list-view/list-view.component.d.ts +4 -1
  15. package/dist/lib/list-view/list-view.component.d.ts.map +1 -1
  16. package/dist/lib/list-view/list-view.component.js +63 -43
  17. package/dist/lib/list-view/list-view.component.js.map +1 -1
  18. package/dist/lib/query-browser-component/query-browser.component.d.ts +2 -1
  19. package/dist/lib/query-browser-component/query-browser.component.d.ts.map +1 -1
  20. package/dist/lib/query-browser-component/query-browser.component.js +12 -9
  21. package/dist/lib/query-browser-component/query-browser.component.js.map +1 -1
  22. package/dist/lib/report-browser-component/report-browser.component.d.ts +2 -1
  23. package/dist/lib/report-browser-component/report-browser.component.d.ts.map +1 -1
  24. package/dist/lib/report-browser-component/report-browser.component.js +9 -7
  25. package/dist/lib/report-browser-component/report-browser.component.js.map +1 -1
  26. package/dist/lib/resource-browser/resource-browser.component.d.ts +37 -33
  27. package/dist/lib/resource-browser/resource-browser.component.d.ts.map +1 -1
  28. package/dist/lib/resource-browser/resource-browser.component.js +466 -432
  29. package/dist/lib/resource-browser/resource-browser.component.js.map +1 -1
  30. package/package.json +22 -22
@@ -8,9 +8,10 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
8
8
  });
9
9
  };
10
10
  import { Component, EventEmitter, Input, Output } from '@angular/core';
11
- import { Item, ItemType } from '../../generic/Item.types';
11
+ import { Folder, Item, ItemType } from '../../generic/Item.types';
12
12
  import { Subject, debounceTime } from 'rxjs';
13
13
  import { LogError, Metadata, RunView } from '@memberjunction/core';
14
+ import { BeforeUpdateItemEvent } from '../../generic/Events.types';
14
15
  import * as i0 from "@angular/core";
15
16
  import * as i1 from "@memberjunction/ng-shared";
16
17
  import * as i2 from "@angular/common";
@@ -19,110 +20,123 @@ import * as i4 from "@progress/kendo-angular-dialog";
19
20
  import * as i5 from "@progress/kendo-angular-indicators";
20
21
  import * as i6 from "@progress/kendo-angular-buttons";
21
22
  import * as i7 from "@progress/kendo-angular-inputs";
22
- import * as i8 from "@progress/kendo-angular-layout";
23
- import * as i9 from "@memberjunction/ng-entity-form-dialog";
23
+ import * as i8 from "@progress/kendo-angular-label";
24
+ import * as i9 from "@progress/kendo-angular-layout";
25
+ import * as i10 from "@memberjunction/ng-entity-form-dialog";
24
26
  function ResourceBrowserComponent_Conditional_4_Template(rf, ctx) { if (rf & 1) {
25
27
  const _r2 = i0.ɵɵgetCurrentView();
26
- i0.ɵɵelementStart(0, "span", 21);
28
+ i0.ɵɵelementStart(0, "span", 20);
27
29
  i0.ɵɵlistener("click", function ResourceBrowserComponent_Conditional_4_Template_span_click_0_listener() { i0.ɵɵrestoreView(_r2); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.goToParent()); });
28
30
  i0.ɵɵelementEnd();
29
- i0.ɵɵelement(1, "span", 22);
31
+ i0.ɵɵelement(1, "span", 21);
30
32
  } }
31
- function ResourceBrowserComponent_ng_template_14_Template(rf, ctx) { if (rf & 1) {
32
- i0.ɵɵelement(0, "span", 23);
33
+ function ResourceBrowserComponent_Conditional_7_Template(rf, ctx) { if (rf & 1) {
34
+ const _r4 = i0.ɵɵgetCurrentView();
35
+ i0.ɵɵelementStart(0, "kendo-dropdownbutton", 22);
36
+ i0.ɵɵlistener("itemClick", function ResourceBrowserComponent_Conditional_7_Template_kendo_dropdownbutton_itemClick_0_listener($event) { i0.ɵɵrestoreView(_r4); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onDropdownItemClick($event)); });
37
+ i0.ɵɵelement(1, "span", 23);
38
+ i0.ɵɵtext(2, " Create New ");
39
+ i0.ɵɵelementEnd();
40
+ } if (rf & 2) {
41
+ const ctx_r2 = i0.ɵɵnextContext();
42
+ i0.ɵɵproperty("data", ctx_r2.ItemOptions);
33
43
  } }
34
- function ResourceBrowserComponent_Conditional_21_Template(rf, ctx) { if (rf & 1) {
35
- i0.ɵɵelement(0, "kendo-loader", 17);
44
+ function ResourceBrowserComponent_ng_template_12_Template(rf, ctx) { if (rf & 1) {
45
+ i0.ɵɵelement(0, "span", 24);
36
46
  } }
37
- function ResourceBrowserComponent_Conditional_22_Conditional_0_ng_template_6_Conditional_1_Template(rf, ctx) { if (rf & 1) {
38
- const _r6 = i0.ɵɵgetCurrentView();
47
+ function ResourceBrowserComponent_Conditional_19_Template(rf, ctx) { if (rf & 1) {
48
+ i0.ɵɵelement(0, "kendo-loader", 16);
49
+ } }
50
+ function ResourceBrowserComponent_Conditional_20_Conditional_0_ng_template_5_Conditional_1_Template(rf, ctx) { if (rf & 1) {
51
+ const _r7 = i0.ɵɵgetCurrentView();
39
52
  i0.ɵɵelementStart(0, "button", 36);
40
- i0.ɵɵlistener("click", function ResourceBrowserComponent_Conditional_22_Conditional_0_ng_template_6_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r6); const dataItem_r7 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.editItem(dataItem_r7)); });
53
+ i0.ɵɵlistener("click", function ResourceBrowserComponent_Conditional_20_Conditional_0_ng_template_5_Conditional_1_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r7); const dataItem_r8 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.editItem(dataItem_r8)); });
41
54
  i0.ɵɵelement(1, "span", 37);
42
55
  i0.ɵɵelementEnd();
43
56
  } }
44
- function ResourceBrowserComponent_Conditional_22_Conditional_0_ng_template_6_Conditional_2_Template(rf, ctx) { if (rf & 1) {
45
- const _r8 = i0.ɵɵgetCurrentView();
57
+ function ResourceBrowserComponent_Conditional_20_Conditional_0_ng_template_5_Conditional_2_Template(rf, ctx) { if (rf & 1) {
58
+ const _r9 = i0.ɵɵgetCurrentView();
46
59
  i0.ɵɵelementStart(0, "button", 36);
47
- i0.ɵɵlistener("click", function ResourceBrowserComponent_Conditional_22_Conditional_0_ng_template_6_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r8); const dataItem_r7 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.deleteItem(dataItem_r7)); });
60
+ i0.ɵɵlistener("click", function ResourceBrowserComponent_Conditional_20_Conditional_0_ng_template_5_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const dataItem_r8 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.deleteItem(dataItem_r8)); });
48
61
  i0.ɵɵelement(1, "span", 38);
49
62
  i0.ɵɵelementEnd();
50
63
  } }
51
- function ResourceBrowserComponent_Conditional_22_Conditional_0_ng_template_6_Conditional_3_Template(rf, ctx) { if (rf & 1) {
52
- const _r9 = i0.ɵɵgetCurrentView();
64
+ function ResourceBrowserComponent_Conditional_20_Conditional_0_ng_template_5_Conditional_3_Template(rf, ctx) { if (rf & 1) {
65
+ const _r10 = i0.ɵɵgetCurrentView();
53
66
  i0.ɵɵelementStart(0, "button", 39);
54
- i0.ɵɵlistener("click", function ResourceBrowserComponent_Conditional_22_Conditional_0_ng_template_6_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r9); const dataItem_r7 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.unlinkItem(dataItem_r7)); });
67
+ i0.ɵɵlistener("click", function ResourceBrowserComponent_Conditional_20_Conditional_0_ng_template_5_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r10); const dataItem_r8 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.unlinkItem(dataItem_r8)); });
55
68
  i0.ɵɵelement(1, "span", 40);
56
69
  i0.ɵɵelementEnd();
57
70
  } }
58
- function ResourceBrowserComponent_Conditional_22_Conditional_0_ng_template_6_Template(rf, ctx) { if (rf & 1) {
71
+ function ResourceBrowserComponent_Conditional_20_Conditional_0_ng_template_5_Template(rf, ctx) { if (rf & 1) {
59
72
  i0.ɵɵelementStart(0, "div", 33);
60
- i0.ɵɵtemplate(1, ResourceBrowserComponent_Conditional_22_Conditional_0_ng_template_6_Conditional_1_Template, 2, 0, "button", 34)(2, ResourceBrowserComponent_Conditional_22_Conditional_0_ng_template_6_Conditional_2_Template, 2, 0, "button", 34)(3, ResourceBrowserComponent_Conditional_22_Conditional_0_ng_template_6_Conditional_3_Template, 2, 0, "button", 35);
73
+ i0.ɵɵtemplate(1, ResourceBrowserComponent_Conditional_20_Conditional_0_ng_template_5_Conditional_1_Template, 2, 0, "button", 34)(2, ResourceBrowserComponent_Conditional_20_Conditional_0_ng_template_5_Conditional_2_Template, 2, 0, "button", 34)(3, ResourceBrowserComponent_Conditional_20_Conditional_0_ng_template_5_Conditional_3_Template, 2, 0, "button", 35);
61
74
  i0.ɵɵelementEnd();
62
75
  } if (rf & 2) {
76
+ const dataItem_r8 = ctx.$implicit;
63
77
  const ctx_r2 = i0.ɵɵnextContext(3);
64
78
  i0.ɵɵadvance();
65
- i0.ɵɵconditional(ctx_r2.EnableItemEdit ? 1 : -1);
79
+ i0.ɵɵconditional(ctx_r2.EnableItemEdit && (!dataItem_r8.IsLink || dataItem_r8.LinkPermissionLevel === "Owner" || dataItem_r8.LinkPermissionLevel === "Edit") ? 1 : -1);
66
80
  i0.ɵɵadvance();
67
- i0.ɵɵconditional(ctx_r2.EnableItemDelete ? 2 : -1);
81
+ i0.ɵɵconditional(ctx_r2.EnableItemDelete && (!dataItem_r8.IsLike || dataItem_r8.LinkPermissionLevel === "Owner") ? 2 : -1);
68
82
  i0.ɵɵadvance();
69
- i0.ɵɵconditional(ctx_r2.EnableRemoveLink ? 3 : -1);
83
+ i0.ɵɵconditional(ctx_r2.EnableRemoveLink && dataItem_r8.IsLink ? 3 : -1);
70
84
  } }
71
- function ResourceBrowserComponent_Conditional_22_Conditional_0_Template(rf, ctx) { if (rf & 1) {
72
- const _r5 = i0.ɵɵgetCurrentView();
73
- i0.ɵɵelementStart(0, "kendo-grid", 26);
74
- i0.ɵɵlistener("cellClick", function ResourceBrowserComponent_Conditional_22_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)); });
75
- i0.ɵɵelement(1, "kendo-grid-column", 27)(2, "kendo-grid-column", 28)(3, "kendo-grid-column", 29)(4, "kendo-grid-column", 30);
76
- i0.ɵɵelementStart(5, "kendo-grid-column", 31);
77
- i0.ɵɵtemplate(6, ResourceBrowserComponent_Conditional_22_Conditional_0_ng_template_6_Template, 4, 3, "ng-template", 32);
85
+ function ResourceBrowserComponent_Conditional_20_Conditional_0_Template(rf, ctx) { if (rf & 1) {
86
+ const _r6 = i0.ɵɵgetCurrentView();
87
+ i0.ɵɵelementStart(0, "kendo-grid", 27);
88
+ i0.ɵɵlistener("cellClick", function ResourceBrowserComponent_Conditional_20_Conditional_0_Template_kendo_grid_cellClick_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCellItemClicked($event)); });
89
+ i0.ɵɵelement(1, "kendo-grid-column", 28)(2, "kendo-grid-column", 29)(3, "kendo-grid-column", 30);
90
+ i0.ɵɵelementStart(4, "kendo-grid-column", 31);
91
+ i0.ɵɵtemplate(5, ResourceBrowserComponent_Conditional_20_Conditional_0_ng_template_5_Template, 4, 3, "ng-template", 32);
78
92
  i0.ɵɵelementEnd()();
79
93
  } if (rf & 2) {
80
94
  const ctx_r2 = i0.ɵɵnextContext(2);
81
95
  i0.ɵɵproperty("kendoGridBinding", ctx_r2.Items);
82
96
  } }
83
- function ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
84
- const _r11 = i0.ɵɵgetCurrentView();
97
+ function ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Conditional_2_Template(rf, ctx) { if (rf & 1) {
98
+ const _r12 = i0.ɵɵgetCurrentView();
85
99
  i0.ɵɵelementStart(0, "button", 51);
86
- i0.ɵɵlistener("click", function ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r11); const item_r12 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.editItem(item_r12)); });
100
+ i0.ɵɵlistener("click", function ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Conditional_2_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r12); const item_r13 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.editItem(item_r13)); });
87
101
  i0.ɵɵelement(1, "span", 37);
88
102
  i0.ɵɵelementEnd();
89
103
  } }
90
- function ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
91
- const _r13 = i0.ɵɵgetCurrentView();
104
+ function ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Conditional_3_Template(rf, ctx) { if (rf & 1) {
105
+ const _r14 = i0.ɵɵgetCurrentView();
92
106
  i0.ɵɵelementStart(0, "button", 52);
93
- i0.ɵɵlistener("click", function ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r13); const item_r12 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.deleteItem(item_r12)); });
107
+ i0.ɵɵlistener("click", function ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Conditional_3_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const item_r13 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.deleteItem(item_r13)); });
94
108
  i0.ɵɵelement(1, "span", 38);
95
109
  i0.ɵɵelementEnd();
96
110
  } }
97
- function ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
98
- const _r14 = i0.ɵɵgetCurrentView();
111
+ function ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Conditional_4_Template(rf, ctx) { if (rf & 1) {
112
+ const _r15 = i0.ɵɵgetCurrentView();
99
113
  i0.ɵɵelementStart(0, "button", 39);
100
- i0.ɵɵlistener("click", function ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r14); const item_r12 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.unlinkItem(item_r12)); });
114
+ i0.ɵɵlistener("click", function ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Conditional_4_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r15); const item_r13 = i0.ɵɵnextContext().$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.unlinkItem(item_r13)); });
101
115
  i0.ɵɵelement(1, "span", 40);
102
116
  i0.ɵɵelementEnd();
103
117
  } }
104
- function ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
118
+ function ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Conditional_6_Template(rf, ctx) { if (rf & 1) {
105
119
  i0.ɵɵelement(0, "i", 46);
106
120
  } if (rf & 2) {
107
- const item_r12 = i0.ɵɵnextContext().$implicit;
121
+ const item_r13 = i0.ɵɵnextContext().$implicit;
108
122
  const ctx_r2 = i0.ɵɵnextContext(3);
109
- i0.ɵɵproperty("title", item_r12.Name + "(Shared)")("ngClass", ctx_r2.getIconForResourceType(item_r12));
123
+ i0.ɵɵproperty("title", item_r13.Name + "(Shared)")("ngClass", ctx_r2.getIconForResourceType(item_r13));
110
124
  } }
111
- function ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
125
+ function ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Conditional_7_Template(rf, ctx) { if (rf & 1) {
112
126
  i0.ɵɵelement(0, "span", 47);
113
127
  } if (rf & 2) {
114
- const item_r12 = i0.ɵɵnextContext().$implicit;
128
+ const item_r13 = i0.ɵɵnextContext().$implicit;
115
129
  const ctx_r2 = i0.ɵɵnextContext(3);
116
- i0.ɵɵproperty("title", item_r12.Name)("ngClass", ctx_r2.getIconForResourceType(item_r12));
130
+ i0.ɵɵproperty("title", item_r13.Name)("ngClass", ctx_r2.getIconForResourceType(item_r13));
117
131
  } }
118
- function ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
119
- const _r10 = i0.ɵɵgetCurrentView();
132
+ function ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Template(rf, ctx) { if (rf & 1) {
133
+ const _r11 = i0.ɵɵgetCurrentView();
120
134
  i0.ɵɵelementStart(0, "kendo-card", 41)(1, "div", 42);
121
- i0.ɵɵtemplate(2, ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Conditional_2_Template, 2, 0, "button", 43)(3, ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Conditional_3_Template, 2, 0, "button", 44)(4, ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Conditional_4_Template, 2, 0, "button", 35);
135
+ i0.ɵɵtemplate(2, ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Conditional_2_Template, 2, 0, "button", 43)(3, ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Conditional_3_Template, 2, 0, "button", 44)(4, ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Conditional_4_Template, 2, 0, "button", 35);
122
136
  i0.ɵɵelementEnd();
123
137
  i0.ɵɵelementStart(5, "kendo-card-body", 45);
124
- i0.ɵɵlistener("click", function ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Template_kendo_card_body_click_5_listener() { const item_r12 = i0.ɵɵrestoreView(_r10).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.itemClick(item_r12)); });
125
- i0.ɵɵtemplate(6, ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Conditional_6_Template, 1, 2, "i", 46)(7, ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Conditional_7_Template, 1, 2, "span", 47);
138
+ i0.ɵɵlistener("click", function ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Template_kendo_card_body_click_5_listener() { const item_r13 = i0.ɵɵrestoreView(_r11).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.itemClick(item_r13)); });
139
+ i0.ɵɵtemplate(6, ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Conditional_6_Template, 1, 2, "i", 46)(7, ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Conditional_7_Template, 1, 2, "span", 47);
126
140
  i0.ɵɵelementStart(8, "div", 48)(9, "h5", 49);
127
141
  i0.ɵɵtext(10);
128
142
  i0.ɵɵelementEnd();
@@ -130,49 +144,49 @@ function ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Template(rf
130
144
  i0.ɵɵtext(12);
131
145
  i0.ɵɵelementEnd()()()();
132
146
  } if (rf & 2) {
133
- const item_r12 = ctx.$implicit;
147
+ const item_r13 = ctx.$implicit;
134
148
  const ctx_r2 = i0.ɵɵnextContext(3);
135
149
  i0.ɵɵadvance(2);
136
- i0.ɵɵconditional(ctx_r2.EnableItemEdit && (!item_r12.IsLink || item_r12.LinkPermissionLevel === "Owner" || item_r12.LinkPermissionLevel === "Edit") ? 2 : -1);
150
+ i0.ɵɵconditional(ctx_r2.EnableItemEdit && (!item_r13.IsLink || item_r13.LinkPermissionLevel === "Owner" || item_r13.LinkPermissionLevel === "Edit") ? 2 : -1);
137
151
  i0.ɵɵadvance();
138
- i0.ɵɵconditional(ctx_r2.EnableItemDelete && (!item_r12.IsLink || item_r12.LinkPermissionLevel === "Owner") ? 3 : ctx_r2.EnableRemoveLink && item_r12.IsLink ? 4 : -1);
152
+ i0.ɵɵconditional(ctx_r2.EnableItemDelete && (!item_r13.IsLink || item_r13.LinkPermissionLevel === "Owner") ? 3 : ctx_r2.EnableRemoveLink && item_r13.IsLink ? 4 : -1);
139
153
  i0.ɵɵadvance(3);
140
- i0.ɵɵconditional(item_r12.IsLink ? 6 : 7);
154
+ i0.ɵɵconditional(item_r13.IsLink ? 6 : 7);
141
155
  i0.ɵɵadvance(4);
142
- i0.ɵɵtextInterpolate(item_r12.Name);
156
+ i0.ɵɵtextInterpolate(item_r13.Name);
143
157
  i0.ɵɵadvance(2);
144
- i0.ɵɵtextInterpolate(item_r12.Description);
158
+ i0.ɵɵtextInterpolate(item_r13.Description);
145
159
  } }
146
- function ResourceBrowserComponent_Conditional_22_Conditional_1_Template(rf, ctx) { if (rf & 1) {
147
- i0.ɵɵelementStart(0, "div", 25);
148
- i0.ɵɵrepeaterCreate(1, ResourceBrowserComponent_Conditional_22_Conditional_1_For_2_Template, 13, 5, "kendo-card", 41, i0.ɵɵrepeaterTrackByIdentity);
160
+ function ResourceBrowserComponent_Conditional_20_Conditional_1_Template(rf, ctx) { if (rf & 1) {
161
+ i0.ɵɵelementStart(0, "div", 26);
162
+ i0.ɵɵrepeaterCreate(1, ResourceBrowserComponent_Conditional_20_Conditional_1_For_2_Template, 13, 5, "kendo-card", 41, i0.ɵɵrepeaterTrackByIdentity);
149
163
  i0.ɵɵelementEnd();
150
164
  } if (rf & 2) {
151
165
  const ctx_r2 = i0.ɵɵnextContext(2);
152
166
  i0.ɵɵadvance();
153
167
  i0.ɵɵrepeater(ctx_r2.Items);
154
168
  } }
155
- function ResourceBrowserComponent_Conditional_22_Template(rf, ctx) { if (rf & 1) {
156
- i0.ɵɵtemplate(0, ResourceBrowserComponent_Conditional_22_Conditional_0_Template, 7, 1, "kendo-grid", 24)(1, ResourceBrowserComponent_Conditional_22_Conditional_1_Template, 3, 0, "div", 25);
169
+ function ResourceBrowserComponent_Conditional_20_Template(rf, ctx) { if (rf & 1) {
170
+ i0.ɵɵtemplate(0, ResourceBrowserComponent_Conditional_20_Conditional_0_Template, 6, 1, "kendo-grid", 25)(1, ResourceBrowserComponent_Conditional_20_Conditional_1_Template, 3, 0, "div", 26);
157
171
  } if (rf & 2) {
158
172
  const ctx_r2 = i0.ɵɵnextContext();
159
173
  i0.ɵɵconditional(ctx_r2.DisplayMode === "List" ? 0 : 1);
160
174
  } }
161
- function ResourceBrowserComponent_kendo_dialog_23_Template(rf, ctx) { if (rf & 1) {
162
- const _r15 = i0.ɵɵgetCurrentView();
175
+ function ResourceBrowserComponent_kendo_dialog_21_Template(rf, ctx) { if (rf & 1) {
176
+ const _r16 = i0.ɵɵgetCurrentView();
163
177
  i0.ɵɵelementStart(0, "kendo-dialog", 53);
164
- i0.ɵɵlistener("close", function ResourceBrowserComponent_kendo_dialog_23_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onConfirmDeleteItem(false)); });
178
+ i0.ɵɵlistener("close", function ResourceBrowserComponent_kendo_dialog_21_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onConfirmDeleteItem(false)); });
165
179
  i0.ɵɵelementStart(1, "p", 54);
166
180
  i0.ɵɵtext(2);
167
181
  i0.ɵɵelementStart(3, "b");
168
182
  i0.ɵɵtext(4);
169
183
  i0.ɵɵelementEnd()();
170
184
  i0.ɵɵelementStart(5, "kendo-dialog-actions", 55)(6, "button", 56);
171
- i0.ɵɵlistener("click", function ResourceBrowserComponent_kendo_dialog_23_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onConfirmDeleteItem(true)); });
185
+ i0.ɵɵlistener("click", function ResourceBrowserComponent_kendo_dialog_21_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onConfirmDeleteItem(true)); });
172
186
  i0.ɵɵtext(7, " Yes ");
173
187
  i0.ɵɵelementEnd();
174
188
  i0.ɵɵelementStart(8, "button", 57);
175
- i0.ɵɵlistener("click", function ResourceBrowserComponent_kendo_dialog_23_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r15); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onConfirmDeleteItem(false)); });
189
+ i0.ɵɵlistener("click", function ResourceBrowserComponent_kendo_dialog_21_Template_button_click_8_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onConfirmDeleteItem(false)); });
176
190
  i0.ɵɵtext(9, " No ");
177
191
  i0.ɵɵelementEnd()()();
178
192
  } if (rf & 2) {
@@ -183,26 +197,47 @@ function ResourceBrowserComponent_kendo_dialog_23_Template(rf, ctx) { if (rf & 1
183
197
  i0.ɵɵadvance(2);
184
198
  i0.ɵɵtextInterpolate1("", ctx_r2.selectedItem == null ? null : ctx_r2.selectedItem.Name, "?");
185
199
  } }
186
- function ResourceBrowserComponent_kendo_dialog_24_Template(rf, ctx) { if (rf & 1) {
187
- const _r16 = i0.ɵɵgetCurrentView();
188
- i0.ɵɵelementStart(0, "kendo-dialog", 58);
189
- i0.ɵɵlistener("close", function ResourceBrowserComponent_kendo_dialog_24_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleCreateFolderView()); });
190
- i0.ɵɵelementStart(1, "div", 8)(2, "kendo-textbox", 59);
191
- i0.ɵɵlistener("valueChange", function ResourceBrowserComponent_kendo_dialog_24_Template_kendo_textbox_valueChange_2_listener($event) { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onCreateFolderKeyup($event)); });
192
- i0.ɵɵelementEnd()();
193
- i0.ɵɵelementStart(3, "kendo-dialog-actions", 55)(4, "button", 56);
194
- i0.ɵɵlistener("click", function ResourceBrowserComponent_kendo_dialog_24_Template_button_click_4_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.createFolder()); });
195
- i0.ɵɵtext(5, " Create ");
200
+ function ResourceBrowserComponent_kendo_dialog_22_Conditional_9_Template(rf, ctx) { if (rf & 1) {
201
+ const _r18 = i0.ɵɵgetCurrentView();
202
+ i0.ɵɵelementStart(0, "button", 56);
203
+ i0.ɵɵlistener("click", function ResourceBrowserComponent_kendo_dialog_22_Conditional_9_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r18); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.updateFolder()); });
204
+ i0.ɵɵtext(1, " Update ");
196
205
  i0.ɵɵelementEnd();
197
- i0.ɵɵelementStart(6, "button", 57);
198
- i0.ɵɵlistener("click", function ResourceBrowserComponent_kendo_dialog_24_Template_button_click_6_listener() { i0.ɵɵrestoreView(_r16); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleCreateFolderView()); });
199
- i0.ɵɵtext(7, " Cancel ");
206
+ } }
207
+ function ResourceBrowserComponent_kendo_dialog_22_Conditional_10_Template(rf, ctx) { if (rf & 1) {
208
+ const _r19 = i0.ɵɵgetCurrentView();
209
+ i0.ɵɵelementStart(0, "button", 56);
210
+ i0.ɵɵlistener("click", function ResourceBrowserComponent_kendo_dialog_22_Conditional_10_Template_button_click_0_listener() { i0.ɵɵrestoreView(_r19); const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.createFolder()); });
211
+ i0.ɵɵtext(1, " Create ");
212
+ i0.ɵɵelementEnd();
213
+ } }
214
+ function ResourceBrowserComponent_kendo_dialog_22_Template(rf, ctx) { if (rf & 1) {
215
+ const _r17 = i0.ɵɵgetCurrentView();
216
+ i0.ɵɵelementStart(0, "kendo-dialog", 58);
217
+ i0.ɵɵlistener("close", function ResourceBrowserComponent_kendo_dialog_22_Template_kendo_dialog_close_0_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleUpsertFolderView(false, false)); });
218
+ i0.ɵɵelementStart(1, "div", 7)(2, "kendo-label", 59)(3, "kendo-textbox", 60);
219
+ i0.ɵɵlistener("valueChange", function ResourceBrowserComponent_kendo_dialog_22_Template_kendo_textbox_valueChange_3_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onUpsertFolderNameKeyup($event)); });
220
+ i0.ɵɵelementEnd()()();
221
+ i0.ɵɵelement(4, "br");
222
+ i0.ɵɵelementStart(5, "div", 7)(6, "kendo-label", 61)(7, "kendo-textbox", 62);
223
+ i0.ɵɵlistener("valueChange", function ResourceBrowserComponent_kendo_dialog_22_Template_kendo_textbox_valueChange_7_listener($event) { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.onUpsertFolderDescriptionKeyup($event)); });
224
+ i0.ɵɵelementEnd()()();
225
+ i0.ɵɵelementStart(8, "kendo-dialog-actions", 55);
226
+ i0.ɵɵtemplate(9, ResourceBrowserComponent_kendo_dialog_22_Conditional_9_Template, 2, 0, "button", 63)(10, ResourceBrowserComponent_kendo_dialog_22_Conditional_10_Template, 2, 0, "button", 63);
227
+ i0.ɵɵelementStart(11, "button", 57);
228
+ i0.ɵɵlistener("click", function ResourceBrowserComponent_kendo_dialog_22_Template_button_click_11_listener() { i0.ɵɵrestoreView(_r17); const ctx_r2 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r2.toggleUpsertFolderView(false, false)); });
229
+ i0.ɵɵtext(12, " Cancel ");
200
230
  i0.ɵɵelementEnd()()();
201
231
  } if (rf & 2) {
202
- i0.ɵɵproperty("minWidth", 250)("width", 450);
232
+ const ctx_r2 = i0.ɵɵnextContext();
233
+ i0.ɵɵproperty("title", ctx_r2.selectedFolder ? "Edit Folder" : "Create new folder")("minWidth", 250)("width", 450);
234
+ i0.ɵɵadvance(3);
235
+ i0.ɵɵproperty("value", ctx_r2.upsertNewFolderName);
236
+ i0.ɵɵadvance(4);
237
+ i0.ɵɵproperty("value", ctx_r2.upsertNewFolderDescription);
238
+ i0.ɵɵadvance(2);
239
+ i0.ɵɵconditional(ctx_r2.selectedFolder ? 9 : 10);
203
240
  } }
204
- export class NewItemOption {
205
- }
206
241
  export class ResourceBrowserComponent {
207
242
  /**
208
243
  * The name of the type of resource to display, cannot be changed after it is initially set
@@ -253,6 +288,9 @@ export class ResourceBrowserComponent {
253
288
  get Items() {
254
289
  return this._items;
255
290
  }
291
+ get ItemOptions() {
292
+ return this._DefaultNewItemOptions;
293
+ }
256
294
  constructor(sharedService) {
257
295
  this.sharedService = sharedService;
258
296
  /*******************************************************************************************
@@ -260,9 +298,19 @@ export class ResourceBrowserComponent {
260
298
  *******************************************************************************************/
261
299
  this._ResourceTypeName = null;
262
300
  /**
263
- * Whether or not to enable categories, if set to false, categories will be ignored and not displayed
301
+ * Whether or not to enable categories. If enabled, Categories will be displayed
302
+ * and the option to create new categories will be available. Default is true.
264
303
  */
265
304
  this.EnableCategories = true;
305
+ /**
306
+ * If Categories are enabled, then the categories fetched will be filtered to return only those whoses EntityID
307
+ * matches this value.
308
+ */
309
+ this.CategoryEntityID = null;
310
+ /**
311
+ * If set, this will set the current Category/Folder for the display. Not all Resource Types support Categories, so if the Resource Type in question does not have a CategoryEntityID specified, this property will be ignored.
312
+ */
313
+ this.CurrentCategoryID = null;
266
314
  /**
267
315
  * This property determines if the UI will include a button on items in the display to edit. The button will only be shown if the user has edit permissions, but this is a global setting to turn on/off the button even if the user has permissions. Default is true.
268
316
  */
@@ -279,14 +327,7 @@ export class ResourceBrowserComponent {
279
327
  /**
280
328
  * Array of NewItemOption objects that will be displayed in the Create New dropdown. Defaults to having a single entry for creating a new folder, you can remove this or add to it.
281
329
  */
282
- this.NewItemOptions = [{
283
- Text: 'New Folder',
284
- Description: 'Create a new folder',
285
- Icon: 'folder',
286
- Action: () => {
287
- console.log('New Folder');
288
- }
289
- }];
330
+ this.NewItemOptions = [];
290
331
  /**
291
332
  * The visual display mode for this component, tile will show the contents in tiles that are spaced and wrapped based on the viewport, list will show the details of the items in a list, and tree will show the items in a tree view - tree view NOT implemented yet
292
333
  */
@@ -306,10 +347,33 @@ export class ResourceBrowserComponent {
306
347
  * Fires whenever the user changes the display mode of the component
307
348
  */
308
349
  this.DisplayModeChanged = new EventEmitter();
350
+ /**
351
+ * Fires whenever the user clicks the back button to view the parent folder
352
+ */
353
+ this.NavigateToParentEvent = new EventEmitter();
354
+ /**
355
+ * Fires whenever the users clicks to edit an Item that is not a folder
356
+ */
357
+ this.EditItemEvent = new EventEmitter();
309
358
  this._isLoading = false;
310
359
  this._CategoryParentIDFieldName = undefined;
311
360
  this._UserIDFieldName = undefined;
312
361
  this._items = [];
362
+ this._DefaultNewItemOptions = [
363
+ {
364
+ Text: 'New Folder',
365
+ Description: 'Create a new Folder',
366
+ Icon: 'folder',
367
+ Action: () => {
368
+ if (this.EnableCategories) {
369
+ this.toggleUpsertFolderView(true, true);
370
+ }
371
+ }
372
+ }
373
+ ];
374
+ this.upsertNewFolderName = "";
375
+ this.upsertNewFolderDescription = "";
376
+ this.selectedFolder = null;
313
377
  // JS code here and below from old component....
314
378
  this._filterDebounceTime = 250;
315
379
  this.filterItemsSubject = new Subject();
@@ -318,17 +382,9 @@ export class ResourceBrowserComponent {
318
382
  this.selectedItem = null;
319
383
  this.deleteDialogOpened = false;
320
384
  this.copyFromDialogOpened = false;
321
- this.createFolderDialogOpened = false;
322
- this.newFolderText = "Sample Folder";
385
+ this.upsertFolderDialogVisible = false;
323
386
  this._allResourceTypes = [];
324
- this.createNewRecordName = "Record";
325
387
  this.entityObjectName = "";
326
- /**
327
- * Options for the create button dropdown
328
- */
329
- this.dropdownOptions = [
330
- { text: "Folder" }
331
- ];
332
388
  this._currentDeleteOrUnlinkState = false;
333
389
  this.filterItemsSubject
334
390
  .pipe(debounceTime(this._filterDebounceTime))
@@ -337,14 +393,26 @@ export class ResourceBrowserComponent {
337
393
  ngOnInit() {
338
394
  return __awaiter(this, void 0, void 0, function* () {
339
395
  var _a, _b, _c;
396
+ /**
397
+ * Hide the create folder option is EnableCategories is false
398
+ */
399
+ if (this.EnableCategories) {
400
+ this._DefaultNewItemOptions.push(...this.NewItemOptions);
401
+ }
402
+ else {
403
+ this._DefaultNewItemOptions = this.NewItemOptions;
404
+ }
340
405
  this._allResourceTypes = this.sharedService.ResourceTypes;
341
- const rt = this._allResourceTypes.find(rt => rt.Entity === this.ResourceTypeName);
342
- if (!rt)
406
+ const resourceType = this._allResourceTypes.find(rt => {
407
+ return rt.Entity === this.ResourceTypeName;
408
+ });
409
+ if (!resourceType) {
343
410
  throw new Error(`Resource Type ${this.ResourceTypeName} not found`);
344
- else if (!rt.EntityID)
411
+ }
412
+ this.ResourceType = resourceType;
413
+ if (!this.ResourceType.EntityID) {
345
414
  throw new Error(`Resource Type ${this.ResourceTypeName} does not have an EntityID specified. EntityID is required for any Resource Type to be used with this component.`);
346
- else
347
- this.ResourceType = rt;
415
+ }
348
416
  // now get the entity info for the resource type and for its category entity, if one is specified.
349
417
  const md = new Metadata();
350
418
  const resourceTypeEntity = md.EntityByID(this.ResourceType.EntityID);
@@ -364,30 +432,102 @@ export class ResourceBrowserComponent {
364
432
  */
365
433
  Refresh() {
366
434
  return __awaiter(this, void 0, void 0, function* () {
367
- try {
368
- const md = new Metadata();
369
- if (!this.ResourceType || !this.ResourceType.Entity)
370
- throw new Error('Resource Type not set, or Resource Type does not have an Entity specified');
371
- const rv = new RunView();
372
- // create a combined filter for the SQL query that combines the user's provided ItemFilter, if provided, with a user filter that only includes items that are OWNED by the current user
373
- // and finally filter on the current category, if one is set and we have a category entity
374
- const combinedFilter = `${this.ItemFilter ? '(' + this.ItemFilter + ') AND' : ''}
375
- ([${this.UserIDFieldName}] = '${md.CurrentUser.ID}')
376
- ${this.CurrentCategoryID && this.CategoryIDFieldName ? `AND ([${this.CategoryIDFieldName}] = '${this.CurrentCategoryID}')` : ''}`;
377
- const itemResult = yield rv.RunView({
378
- EntityName: this.ResourceType.Entity,
379
- ExtraFilter: combinedFilter,
380
- OrderBy: this.OrderBy
381
- });
382
- if (!itemResult || !itemResult.Success)
383
- throw new Error(`Failed to load items for ${this.ResourceType.Entity}`);
384
- this._items = itemResult.Results.map(r => new Item(r, ItemType.Resource));
385
- }
386
- catch (error) {
387
- LogError(error);
388
- console.error(error);
435
+ const views = yield this.LoadResources();
436
+ const categories = yield this.LoadCategories();
437
+ const items = [...categories, ...views];
438
+ const sortedItems = this.sortItems(items);
439
+ this._items = sortedItems;
440
+ });
441
+ }
442
+ LoadResources() {
443
+ return __awaiter(this, void 0, void 0, function* () {
444
+ let results = [];
445
+ if (!this.ResourceType || !this.ResourceType.Entity) {
446
+ return results;
447
+ }
448
+ const md = new Metadata();
449
+ const rv = new RunView();
450
+ // create a combined filter for the SQL query that combines the user's provided ItemFilter, if provided, with a user filter that only includes items that are OWNED by the current user
451
+ // and finally filter on the current category, if one is set and we have a category entity
452
+ let filter = "";
453
+ if (this.ItemFilter) {
454
+ filter += `(${this.ItemFilter})`;
455
+ }
456
+ if (this.UserIDFieldName) {
457
+ let base = this.ItemFilter ? "AND" : "";
458
+ filter += `${base}([${this.UserIDFieldName}] = '${md.CurrentUser.ID}')`;
459
+ }
460
+ if (this.CurrentCategoryID && this.CategoryIDFieldName) {
461
+ let base = (this.ItemFilter || this.UserIDFieldName) ? "AND" : "";
462
+ filter += `${base}([${this.CategoryIDFieldName}] = '${this.CurrentCategoryID}')`;
463
+ }
464
+ const itemResult = yield rv.RunView({
465
+ EntityName: this.ResourceType.Entity,
466
+ ExtraFilter: filter,
467
+ OrderBy: this.OrderBy,
468
+ ResultType: 'entity_object'
469
+ });
470
+ if (!itemResult.Success) {
471
+ LogError(`Unable to load views for ${this.ResourceType.Entity}. Reason: ${itemResult.ErrorMessage}`);
472
+ return results;
473
+ ;
474
+ }
475
+ const views = itemResult.Results;
476
+ const items = views.map(view => new Item(view, ItemType.Resource));
477
+ return items;
478
+ });
479
+ }
480
+ LoadCategories() {
481
+ return __awaiter(this, void 0, void 0, function* () {
482
+ if (!this.EnableCategories || !this.CategoryEntityID) {
483
+ return [];
484
+ }
485
+ if (!this.ResourceType || !this.ResourceType.CategoryEntity) {
486
+ return [];
487
+ }
488
+ const md = new Metadata();
489
+ let filter = `UserID = '${md.CurrentUser.ID}' AND EntityID = '${this.CategoryEntityID}'`;
490
+ if (this.CurrentCategoryID) {
491
+ filter += ` AND ParentID = '${this.CurrentCategoryID}'`;
492
+ }
493
+ const rv = new RunView();
494
+ const rvResult = yield rv.RunView({
495
+ EntityName: this.ResourceType.CategoryEntity,
496
+ ExtraFilter: filter,
497
+ ResultType: 'entity_object'
498
+ });
499
+ if (!rvResult.Success) {
500
+ LogError(`Unable to load categories for ${this.ResourceType.CategoryEntity}. Reason: ${rvResult.ErrorMessage}`);
501
+ return [];
502
+ }
503
+ const categories = rvResult.Results;
504
+ const folders = categories.map((category) => {
505
+ const folderID = category.FirstPrimaryKey.Value;
506
+ const NameEntityField = category.Fields.find(field => field.EntityFieldInfo.IsNameField);
507
+ const folderName = NameEntityField ? NameEntityField.Value : "Folder";
508
+ const folder = new Folder(folderID, folderName);
509
+ folder.CategoryEntity = category;
510
+ folder.Description = category.Get("Description");
511
+ return folder;
512
+ });
513
+ const items = folders.map(folder => new Item(folder, ItemType.Folder));
514
+ return items;
515
+ });
516
+ }
517
+ //maybe pass in a sort function for custom sorting?
518
+ sortItems(items) {
519
+ items.sort(function (a, b) {
520
+ const aName = a.Name.toLowerCase();
521
+ const bName = b.Name.toLowerCase();
522
+ if (aName < bName) {
523
+ return -1;
389
524
  }
525
+ if (aName > bName) {
526
+ return 1;
527
+ }
528
+ return 0;
390
529
  });
530
+ return items;
391
531
  }
392
532
  //wrapper function for the grid view
393
533
  onCellItemClicked(event) {
@@ -399,74 +539,63 @@ export class ResourceBrowserComponent {
399
539
  }
400
540
  this.ResourceSelected.emit(item);
401
541
  }
402
- backButtonClicked() {
403
- // this.backButtonClickEvent.emit();
404
- }
405
- addResourceButtonClicked() {
542
+ updateFolder() {
406
543
  return __awaiter(this, void 0, void 0, function* () {
407
- // let event: BeforeAddItemEvent = new BeforeAddItemEvent("");
408
- // this.BeforeAddItemEvent.emit(event);
409
- // if(event.Cancel){
410
- // return;
411
- // }
412
- // const resourceName: string = `Sample ${this.ItemEntityName}`;
413
- // const md: Metadata = new Metadata();
414
- // const entity: BaseEntity = await md.GetEntityObject<BaseEntity>(this.ItemEntityName);
415
- // entity.NewRecord();
416
- // //some entities, like resources, have common fields
417
- // //we can try to set here
418
- // entity.Set("Name", resourceName);
419
- // entity.Set("UserID", md.CurrentUser.ID);
420
- // let saveResult: boolean = await entity.Save();
421
- // if(saveResult){
422
- // this.showNotification(`successfully created ${resourceName}`, "info");
423
- // let item: Item = new Item(entity, ItemType.Entity);
424
- // item.Name = resourceName;
425
- // this.AfterAddItemEvent.emit(new AfterAddItemEvent(item));
426
- // }
427
- // else{
428
- // this.showNotification(`Unable to create ${resourceName}`, "error");
429
- // }
544
+ const folder = this.selectedFolder;
545
+ if (!folder || !folder.CategoryEntity) {
546
+ LogError("Folder or CategoryEntity is not set, cannot update folder");
547
+ this.sharedService.CreateSimpleNotification("Unable to update folder", "error", 2500);
548
+ return;
549
+ }
550
+ const categoryEntity = folder.CategoryEntity;
551
+ categoryEntity.Set("Name", this.upsertNewFolderName);
552
+ categoryEntity.Set("Description", this.upsertNewFolderDescription);
553
+ const saveResult = yield categoryEntity.Save();
554
+ if (!saveResult) {
555
+ LogError(`Unable to update folder ${folder.Name}`, undefined, categoryEntity.LatestResult);
556
+ this.sharedService.CreateSimpleNotification(`Unable to update folder ${folder.Name}`, "error", 2500);
557
+ }
558
+ else {
559
+ this.sharedService.CreateSimpleNotification(`Successfully updated folder ${folder.Name}`, "info", 2500);
560
+ yield this.Refresh();
561
+ }
562
+ this.toggleUpsertFolderView(false, false);
430
563
  });
431
564
  }
432
565
  createFolder() {
433
566
  return __awaiter(this, void 0, void 0, function* () {
434
- // this.toggleCreateFolderView(false);
435
- // let event: BeforeAddFolderEvent = new BeforeAddFolderEvent(this.newFolderText);
436
- // if(event.Cancel){
437
- // return;
438
- // }
439
- // let folderName: string = this.newFolderText;
440
- // let description: string = "";
441
- // const md: Metadata = new Metadata();
442
- // const folderEntity: BaseEntity = await md.GetEntityObject<BaseEntity>(this.CategoryEntityName);
443
- // folderEntity.NewRecord();
444
- // folderEntity.Set("Name", folderName);
445
- // folderEntity.Set("ParentID", this.selectedFolderID);
446
- // folderEntity.Set("Description", description);
447
- // folderEntity.Set("UserID", md.CurrentUser.ID);
448
- // if(this.categoryEntityID){
449
- // folderEntity.Set("EntityID", this.categoryEntityID);
450
- // }
451
- // let saveResult: boolean = await folderEntity.Save();
452
- // if(saveResult){
453
- // this.showNotification(`successfully created folder ${folderName}`, "info");
454
- // let folder: Folder = new Folder(folderEntity.Get("ID"), folderEntity.Get("Name"));
455
- // folder.Description = folderEntity.Get("Description");
456
- // let item: Item = new Item(folder, ItemType.Folder);
457
- // let event: AfterAddFolderEvent = new AfterAddFolderEvent(item);
458
- // this.AfterAddFolderEvent.emit(event);
459
- // if(event.Cancel){
460
- // return;
461
- // }
462
- // //navigate to the newly created folder
463
- // //by raising an item click event
464
- // this.itemClick(item);
465
- // }
466
- // else{
467
- // this.sharedService.CreateSimpleNotification(`Unable to create folder ${folderName}`, "error", 3500);
468
- // }
469
- // this.newFolderText = "Sample Folder";
567
+ if (!this.ResourceType.CategoryEntity) {
568
+ LogError("ResourceType.CategoryEntity is not set, cannot create folder");
569
+ this.sharedService.CreateSimpleNotification("Unable to create folder", "error", 1500);
570
+ return;
571
+ }
572
+ if (!this.CategoryEntityID) {
573
+ LogError("CategoryEntityID is not set, cannot create folder");
574
+ this.sharedService.CreateSimpleNotification("Unable to create folder", "error", 1500);
575
+ return;
576
+ }
577
+ const md = new Metadata();
578
+ const folderEntity = yield md.GetEntityObject(this.ResourceType.CategoryEntity);
579
+ folderEntity.NewRecord();
580
+ folderEntity.Set("Name", this.upsertNewFolderName);
581
+ folderEntity.Set("Description", this.upsertNewFolderDescription);
582
+ folderEntity.Set("ParentID", this.CurrentCategoryID);
583
+ folderEntity.Set("UserID", md.CurrentUser.ID);
584
+ folderEntity.Set("EntityID", this.CategoryEntityID);
585
+ let saveResult = yield folderEntity.Save();
586
+ if (!saveResult) {
587
+ this.sharedService.CreateSimpleNotification(`Unable to create folder ${this.upsertNewFolderName}`, "error", 1500);
588
+ LogError(`Unable to create folder ${this.upsertNewFolderName}`, undefined, folderEntity.LatestResult);
589
+ }
590
+ this.toggleUpsertFolderView(false, false);
591
+ this.sharedService.CreateSimpleNotification(`successfully created folder ${this.upsertNewFolderName}`, 'success', 1500);
592
+ let folder = new Folder(folderEntity.Get("ID"), folderEntity.Get("Name"));
593
+ folder.ParentFolderID = folderEntity.Get("ParentID");
594
+ folder.Description = folderEntity.Get("Description");
595
+ let item = new Item(folder, ItemType.Folder);
596
+ //navigate to the newly created folder
597
+ //by raising an item click event
598
+ this.itemClick(item);
470
599
  });
471
600
  }
472
601
  unlinkItem(item) {
@@ -476,39 +605,24 @@ export class ResourceBrowserComponent {
476
605
  }
477
606
  deleteOrUnlink(item, bDelete) {
478
607
  return __awaiter(this, void 0, void 0, function* () {
479
- // this._currentDeleteOrUnlinkState = bDelete;
480
- // if(!item){
481
- // return;
482
- // }
483
- // this.selectedItem = item;
484
- // if(item.Type === ItemType.Folder && bDelete){
485
- // let event: BeforeDeleteFolderEvent = new BeforeDeleteFolderEvent(item);
486
- // this.BeforeDeleteFolderEvent.emit(event);
487
- // if(event.Cancel){
488
- // return;
489
- // }
490
- // this.deleteDialogOpened = true;
491
- // }
492
- // else if(item.Type === ItemType.Entity && bDelete){
493
- // let event: BeforeDeleteItemEvent = new BeforeDeleteItemEvent(item);
494
- // this.BeforeDeleteItemEvent.emit(event);
495
- // if(event.Cancel){
496
- // return;
497
- // }
498
- // this.deleteDialogOpened = true;
499
- // }
500
- // else if (item.Type === ItemType.Entity && !bDelete) {
501
- // let event: BeforeUnlinkItemEvent = new BeforeUnlinkItemEvent(item);
502
- // this.BeforeUnlinkItemEvent.emit(event);
503
- // if(event.Cancel){
504
- // return;
505
- // }
506
- // this.deleteDialogOpened = true;
507
- // }
608
+ if (!item) {
609
+ return;
610
+ }
611
+ this._currentDeleteOrUnlinkState = bDelete;
612
+ this.selectedItem = item;
613
+ if (item.Type === ItemType.Folder && bDelete) {
614
+ this.deleteDialogOpened = true;
615
+ }
616
+ else if (item.Type === ItemType.Resource && bDelete) {
617
+ this.deleteDialogOpened = true;
618
+ }
619
+ else if (item.Type === ItemType.Resource && !bDelete) {
620
+ this.deleteDialogOpened = true;
621
+ }
508
622
  });
509
623
  }
510
624
  goToParent() {
511
- //this.NavigateToParentEvent.emit();
625
+ this.NavigateToParentEvent.emit();
512
626
  }
513
627
  deleteItem(item) {
514
628
  return __awaiter(this, void 0, void 0, function* () {
@@ -517,105 +631,58 @@ export class ResourceBrowserComponent {
517
631
  }
518
632
  onConfirmDeleteItem(shouldDelete) {
519
633
  return __awaiter(this, void 0, void 0, function* () {
520
- // this.deleteDialogOpened = false;
521
- // if(!this.selectedItem || !shouldDelete){
522
- // return;
523
- // }
524
- // let item: Item = this.selectedItem;
525
- // if(item.Type === ItemType.Folder && this._currentDeleteOrUnlinkState){
526
- // let deleteResult = await this.deleteFolder(item);
527
- // if(deleteResult){
528
- // let deleteFolderEvent: AfterDeleteFolderEvent = new AfterDeleteFolderEvent(item);
529
- // this.AfterDeleteFolderEvent.emit(deleteFolderEvent);
530
- // }
531
- // }
532
- // else if(item.Type === ItemType.Entity && this._currentDeleteOrUnlinkState){
533
- // await this.deleteResource(item);
534
- // let deleteItemEvent: AfterDeleteItemEvent = new AfterDeleteItemEvent(item);
535
- // this.AfterDeleteItemEvent.emit(deleteItemEvent);
536
- // }
537
- // else if(item.Type === ItemType.Entity && !this._currentDeleteOrUnlinkState){
538
- // await this.unlinkResource(item);
539
- // let unlinkItemEvent: AfterUnlinkItemEvent = new AfterUnlinkItemEvent(item);
540
- // this.AfterUnlinkItemEvent.emit(unlinkItemEvent);
541
- // }
542
- // this.selectedItem = null;
634
+ if (!this.selectedItem || !shouldDelete) {
635
+ return;
636
+ }
637
+ this.deleteDialogOpened = false;
638
+ let item = this.selectedItem;
639
+ let success = false;
640
+ if (item.Type === ItemType.Folder && this._currentDeleteOrUnlinkState) {
641
+ success = yield this.deleteFolder(item);
642
+ }
643
+ else if (item.Type === ItemType.Resource && this._currentDeleteOrUnlinkState) {
644
+ success = yield this.deleteResource(item);
645
+ }
646
+ else if (item.Type === ItemType.Resource && !this._currentDeleteOrUnlinkState) {
647
+ success = yield this.unlinkResource(item);
648
+ }
649
+ this.selectedItem = null;
650
+ if (success) {
651
+ yield this.Refresh();
652
+ }
543
653
  });
544
654
  }
545
655
  deleteFolder(item) {
546
656
  return __awaiter(this, void 0, void 0, function* () {
657
+ const folder = item.Data;
658
+ if (!folder || !folder.CategoryEntity) {
659
+ LogError("Folder or CategoryEntity is not set, cannot delete folder");
660
+ this.sharedService.CreateSimpleNotification("Unable to delete folder", "error", 2500);
661
+ return false;
662
+ }
663
+ const hasChildren = yield this.doesFolderHaveChildren(folder.ID);
664
+ if (hasChildren) {
665
+ this.sharedService.CreateSimpleNotification(`Unable to delete Folder ${folder.Name} because it has children`, "error", 2500);
666
+ return false;
667
+ }
668
+ const categoryEntity = folder.CategoryEntity;
669
+ const deleteResult = yield categoryEntity.Delete();
670
+ if (!deleteResult) {
671
+ LogError(`Unable to delete folder ${folder.Name}`, undefined, categoryEntity.LatestResult);
672
+ this.sharedService.CreateSimpleNotification(`unable to delete folder ${folder.Name}.`, "error", 2500);
673
+ return false;
674
+ }
675
+ this.sharedService.CreateSimpleNotification(`Successfully deleted folder ${folder.Name}`, "info", 2500);
547
676
  return true;
548
- // const folder: Folder = <Folder>item.Data;
549
- // //the DB will throw an error if we attempt to delete a folder that has children
550
- // //i.e. sub folders or resources
551
- // //so the default behavior is to notify the user that the delete operation cannot
552
- // //go through
553
- // const folderHasChildren: boolean = await this.doesFolderHaveChildren(folder.ID);
554
- // if(folderHasChildren){
555
- // this.showNotification(`unable to delete folder ${folder.Name} because it has children`, "error");
556
- // return false;
557
- // }
558
- // this.showLoader = true;
559
- // const md = new Metadata();
560
- // let folderEntity: BaseEntity = await md.GetEntityObject<BaseEntity>(this.CategoryEntityName);
561
- // let pkv: KeyValuePair = new KeyValuePair();
562
- // pkv.FieldName = "ID";
563
- // pkv.Value = folder.ID;
564
- // let compositeKey: CompositeKey = new CompositeKey([pkv]);
565
- // //create view browser component - this will be used to display views
566
- // //then create a new component for applications that wraps around the view browser component
567
- // let loadResult = await folderEntity.InnerLoad(compositeKey);
568
- // if(!loadResult){
569
- // this.sharedService.CreateSimpleNotification(`Unable to fetch folder ${folder.Name}`, "error", 3500);
570
- // this.showLoader = false;
571
- // return false;
572
- // }
573
- // let deleteResult = await folderEntity.Delete();
574
- // if(!deleteResult){
575
- // this.sharedService.CreateSimpleNotification(`Unable to delete folder ${folder.Name}`, "error", 3500);
576
- // this.showLoader = false;
577
- // return false;
578
- // }
579
- // else{
580
- // this.sharedService.CreateSimpleNotification(`Successfully deleted folder ${folder.Name}`, "info", 2000);
581
- // this.showLoader = false;
582
- // }
583
- // return true;
584
677
  });
585
678
  }
586
679
  deleteResource(item) {
587
680
  return __awaiter(this, void 0, void 0, function* () {
681
+ let genericEntity = item.Data;
682
+ if (!genericEntity) {
683
+ return false;
684
+ }
588
685
  return true;
589
- // let genericEntity: BaseEntity = <BaseEntity>item.Data;
590
- // if(!genericEntity){
591
- // return false;
592
- // }
593
- // //the only assumption we are making here is that the entityID
594
- // //is a number
595
- // const entityID = this.TryGetID(genericEntity);
596
- // if (entityID && entityID.length > 0) {
597
- // const md = new Metadata();
598
- // let entityObject = await md.GetEntityObject(this.ItemEntityName);
599
- // let pkv: KeyValuePair = new KeyValuePair();
600
- // pkv.FieldName = "ID";
601
- // pkv.Value = entityID;
602
- // let compositeKey: CompositeKey = new CompositeKey([pkv]);
603
- // let loadResult = await entityObject.InnerLoad(compositeKey);
604
- // if(loadResult){
605
- // let deleteResult = await entityObject.Delete();
606
- // if(deleteResult){
607
- // this.showNotification(`successfully deleted`, "info");
608
- // return true;
609
- // }
610
- // else{
611
- // this.showNotification(`Unable to delete`, "error");
612
- // }
613
- // }
614
- // else{
615
- // this.showNotification(`unable to fetch`, "error");
616
- // }
617
- // }
618
- // return false;
619
686
  });
620
687
  }
621
688
  unlinkResource(item) {
@@ -636,39 +703,32 @@ export class ResourceBrowserComponent {
636
703
  }
637
704
  doesFolderHaveChildren(folderID) {
638
705
  return __awaiter(this, void 0, void 0, function* () {
639
- return true;
640
- // const md: Metadata = new Metadata();
641
- // const rv: RunView = new RunView();
642
- // const folderResult = await rv.RunView({
643
- // EntityName:this.CategoryEntity,
644
- // ExtraFilter: `ParentID ='${folderID}'`
645
- // });
646
- // return folderResult && folderResult.Success && folderResult.Results.length > 0;
706
+ if (!this.ResourceType.CategoryEntity) {
707
+ throw new Error("ResourceType.CategoryEntity is not set, cannot check for children");
708
+ }
709
+ const rv = new RunView();
710
+ const folderResult = yield rv.RunView({
711
+ EntityName: this.ResourceType.CategoryEntity,
712
+ ExtraFilter: `ParentID ='${folderID}'`
713
+ });
714
+ if (!folderResult.Success) {
715
+ throw new Error(`Unable to fetch children for folder ${folderID}. Reason: ${folderResult.ErrorMessage}`);
716
+ }
717
+ return folderResult.Results.length > 0;
647
718
  });
648
719
  }
649
- showNotification(message, type) {
650
- // if(this.showNotifications){
651
- // this.sharedService.CreateSimpleNotification(message, type, 1000);
652
- // }
653
- }
654
- TryGetID(data) {
655
- if (data && data.ID) {
656
- return data.ID;
657
- }
658
- else if (typeof data.Get === "function") {
659
- return data.Get("ID");
660
- }
661
- }
662
720
  changeViewMode(mode) {
663
- // this.displayAsGrid = mode === 'grid';
664
- // this.viewModeChangeEvent.emit(mode);
721
+ this.DisplayMode = mode;
665
722
  }
666
723
  onKeyup(Value) {
667
724
  this.filter = Value;
668
725
  this.filterItemsSubject.next(true);
669
726
  }
670
- onCreateFolderKeyup(value) {
671
- this.newFolderText = value;
727
+ onUpsertFolderNameKeyup(value) {
728
+ this.upsertNewFolderName = value;
729
+ }
730
+ onUpsertFolderDescriptionKeyup(value) {
731
+ this.upsertNewFolderDescription = value;
672
732
  }
673
733
  filterItems(filter) {
674
734
  if (!this.sourceItems) {
@@ -682,61 +742,29 @@ export class ResourceBrowserComponent {
682
742
  return item.Name.toLowerCase().includes(filter.toLowerCase());
683
743
  });
684
744
  }
685
- SetFavoriteStatus(item) {
686
- return __awaiter(this, void 0, void 0, function* () {
687
- // if(!item){
688
- // return;
689
- // }
690
- // item.Favorite = !item.Favorite;
691
- // const md: Metadata = new Metadata();
692
- // let entityName: string = item.Type === ItemType.Folder ? this.CategoryEntityName : this.ItemEntityName;
693
- // let compositeKey: CompositeKey = new CompositeKey([{FieldName: "ID", Value: item.Data.ID}]);
694
- // await md.SetRecordFavoriteStatus(md.CurrentUser.ID, entityName, compositeKey, item.Favorite);
695
- });
696
- }
697
745
  editItem(item) {
698
- // if(!item){
699
- // return;
700
- // }
701
- // if(item.Type === ItemType.Folder){
702
- // let event: BeforeUpdateFolderEvent = new BeforeUpdateFolderEvent(item);
703
- // this.BeforeUpdateFolderEvent.emit(event);
704
- // if(event.Cancel){
705
- // return;
706
- // }
707
- // }
708
- // else{
709
- // let event: BeforeUpdateItemEvent = new BeforeUpdateItemEvent(item);
710
- // this.BeforeUpdateItemEvent.emit(event);
711
- // if(event.Cancel){
712
- // return;
713
- // }
714
- // }
715
- }
716
- onDropdownItemClick(data) {
746
+ if (!item || !item.Data) {
747
+ LogError("Item or item data is not set");
748
+ this.sharedService.CreateSimpleNotification("Unable to edit item", "error", 2500);
749
+ return;
750
+ }
751
+ if (item.Type === ItemType.Folder) {
752
+ const folder = item.Data;
753
+ this.selectedFolder = folder;
754
+ this.toggleUpsertFolderView(true, false);
755
+ }
756
+ else {
757
+ const event = new BeforeUpdateItemEvent(item);
758
+ this.EditItemEvent.emit(event);
759
+ }
760
+ }
761
+ onDropdownItemClick(dropdownItem) {
717
762
  return __awaiter(this, void 0, void 0, function* () {
718
- // if(!data || !data.text){
719
- // return;
720
- // }
721
- // if(data.text === "Folder"){
722
- // this.toggleCreateFolderView();
723
- // }
724
- // else if(data.text === this.resourceName){
725
- // this.addResourceButtonClicked();
726
- // }
727
- // else if(data.text === this.createNewRecordName){
728
- // if(this.entityFormDialogRef){
729
- // // create a new record for the given entity
730
- // const md = new Metadata();
731
- // const newRecord = await md.GetEntityObject(this.entityObjectName);
732
- // this.entityFormDialogRef.Record = newRecord;
733
- // this.entityFormDialogRef.ShowForm();
734
- // }
735
- // }
736
- // else{
737
- // let event: DropdownOptionClickEvent = new DropdownOptionClickEvent(data.text);
738
- // this.dropdownOptionClickEvent.emit(event);
739
- // }
763
+ if (!dropdownItem || !dropdownItem.Action) {
764
+ LogError("Dropdown item or action is not set");
765
+ return;
766
+ }
767
+ dropdownItem.Action();
740
768
  });
741
769
  }
742
770
  toggleCopyFromView() {
@@ -745,60 +773,60 @@ export class ResourceBrowserComponent {
745
773
  getCopyFromTitle() {
746
774
  return `Select ${this.ResourceTypeName} to Copy`;
747
775
  }
748
- toggleCreateFolderView(visible) {
749
- if (visible !== undefined) {
750
- this.createFolderDialogOpened = visible;
776
+ toggleUpsertFolderView(visible, createNew) {
777
+ this.upsertFolderDialogVisible = visible;
778
+ if (createNew) {
779
+ this.upsertNewFolderName = "";
780
+ this.upsertNewFolderDescription = "";
781
+ this.selectedFolder = null;
751
782
  }
752
- else {
753
- this.createFolderDialogOpened = !this.createFolderDialogOpened;
783
+ else if (visible && this.selectedFolder) {
784
+ this.upsertNewFolderName = this.selectedFolder.Name;
785
+ this.upsertNewFolderDescription = this.selectedFolder.Description || "";
754
786
  }
755
787
  }
756
788
  getIconForResourceType(item) {
789
+ if (!item) {
790
+ return "";
791
+ }
792
+ const LargeClass = "fa-3x ";
793
+ if (item.Type === ItemType.Folder) {
794
+ return LargeClass + "fa-regular fa-folder";
795
+ }
796
+ const resourceType = this._allResourceTypes.find(rt => rt.ID === this.ResourceType.ID);
797
+ if (resourceType) {
798
+ return LargeClass + resourceType.Icon; // + rotateStyle;
799
+ }
757
800
  return "";
758
- // if(!item){
759
- // return "";
760
- // }
761
- // const LargeClass: string = "fa-3x ";
762
- // if(item.Type === ItemType.Folder){
763
- // return LargeClass + "fa-regular fa-folder";
764
- // }
765
- // const resourceType = this._allResourceTypes.find(rt => rt.Entity === this.Resource);
766
- // if(resourceType){
767
- // return LargeClass + resourceType.Icon;// + rotateStyle;
768
- // }
769
- // return "";
770
801
  }
771
802
  }
772
803
  ResourceBrowserComponent.ɵfac = function ResourceBrowserComponent_Factory(t) { return new (t || ResourceBrowserComponent)(i0.ɵɵdirectiveInject(i1.SharedService)); };
773
- ResourceBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ResourceBrowserComponent, selectors: [["mj-resource-browser"]], inputs: { ResourceTypeName: "ResourceTypeName", EnableCategories: "EnableCategories", EnableItemEdit: "EnableItemEdit", EnableItemDelete: "EnableItemDelete", EnableRemoveLink: "EnableRemoveLink", Title: "Title", ItemFilter: "ItemFilter", OrderBy: "OrderBy", NewItemOptions: "NewItemOptions", CurrentCategoryID: "CurrentCategoryID", DisplayMode: "DisplayMode" }, outputs: { ResourceSelected: "ResourceSelected", CategoryChanged: "CategoryChanged", DisplayModeChanged: "DisplayModeChanged" }, decls: 27, vars: 8, consts: [["searchInput", ""], ["entityFormDialog", ""], [1, "generic-browser-list-container"], [1, "main-fav-wrapper"], [1, "title-wrapper"], [1, "title-flex-display"], ["themeColor", "info", 1, "custom-dropdwn", 3, "itemClick", "data"], [1, "fa-solid", "fa-plus"], [1, "search"], ["type", "text", "placeholder", "Search", "size", "large", "rounded", "large", "fillMode", "solid", 3, "keyup", "clearButton"], ["kendoTextBoxPrefixTemplate", "", 3, "showSeparator"], [1, "filter-wrapper"], ["kendobutton", "", 1, "cursor-pointer", "grid-btn", "btn-cmn", 3, "click"], [1, "fa-solid", "fa-bars"], ["kendobutton", "", 1, "cursor-pointer", "active", "btn-cmn", 3, "click"], [1, "fa-solid", "fa-table-cells-large"], [1, "main-area"], ["type", "converging-spinner"], ["class", "dialog-wrapper", "title", "Confirm", 3, "minWidth", "width", "close", 4, "ngIf"], ["title", "Create new folder", "class", "dialog-wrapper", 3, "minWidth", "width", "close", 4, "ngIf"], ["Mode", "complete"], ["title", "Parent", 1, "title-folder", "fa-solid", "fa-arrow-left", "fa-2xl", "breadcrumb-icon", 3, "click"], ["title", "Folder", 1, "title-folder", "fa-regular", "fa-folder", "fa-2xl"], [1, "fa-solid", "fa-magnifying-glass", "margin-left-small"], [3, "kendoGridBinding"], [1, "card-list", "k-d-flex", "k-flex-row", "k-h-full", "k-flex-wrap"], [3, "cellClick", "kendoGridBinding"], ["field", "Name", "title", "Name"], ["field", "Size", "title", "Size"], ["field", "LastOpened", "title", "Last Opened"], ["field", "ModifiedBy", "title", "Modified By"], ["title", ""], ["kendoGridCellTemplate", ""], [1, "grid-wrapper"], [1, "list-btn"], ["title", "Remove Link to Shared Item", 1, "list-btn"], [1, "list-btn", 3, "click"], [1, "fa-regular", "fa-pen-to-square"], [1, "fa-regular", "fa-trash-can"], ["title", "Remove Link to Shared Item", 1, "list-btn", 3, "click"], [1, "fa-solid", "fa-link-slash", 2, "color", "rgb(19, 92, 201)"], [1, "card-wrapper", "cursor-pointer"], [1, "list-item-icon"], ["title", "Edit Item", 1, "list-btn"], ["title", "Delete Item", 1, "list-btn"], [3, "click"], [2, "color", "rgb(19, 92, 201)", 3, "title", "ngClass"], [3, "title", "ngClass"], [1, "padding-top-small"], ["kendoCardTitle", ""], ["kendoCardSubtitle", ""], ["title", "Edit Item", 1, "list-btn", 3, "click"], ["title", "Delete Item", 1, "list-btn", 3, "click"], ["title", "Confirm", 1, "dialog-wrapper", 3, "close", "minWidth", "width"], [1, "k-m-7.5", "k-text-center"], [1, "popup-actions-btn"], ["kendoButton", "", "themeColor", "info", 1, "cancel-btn", 3, "click"], ["kendoButton", "", "fillMode", "outline", "themeColor", "info", 1, "yes-btn", 3, "click"], ["title", "Create new folder", 1, "dialog-wrapper", 3, "close", "minWidth", "width"], ["placeholder", "Enter a folder name", 3, "valueChange"]], template: function ResourceBrowserComponent_Template(rf, ctx) { if (rf & 1) {
804
+ ResourceBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ResourceBrowserComponent, selectors: [["mj-resource-browser"]], inputs: { ResourceTypeName: "ResourceTypeName", EnableCategories: "EnableCategories", CategoryEntityID: "CategoryEntityID", CurrentCategoryID: "CurrentCategoryID", EnableItemEdit: "EnableItemEdit", EnableItemDelete: "EnableItemDelete", EnableRemoveLink: "EnableRemoveLink", Title: "Title", ItemFilter: "ItemFilter", OrderBy: "OrderBy", NewItemOptions: "NewItemOptions", DisplayMode: "DisplayMode" }, outputs: { ResourceSelected: "ResourceSelected", CategoryChanged: "CategoryChanged", DisplayModeChanged: "DisplayModeChanged", NavigateToParentEvent: "NavigateToParentEvent", EditItemEvent: "EditItemEvent" }, decls: 25, vars: 8, consts: [["searchInput", ""], ["entityFormDialog", ""], [1, "generic-browser-list-container"], [1, "main-fav-wrapper"], [1, "title-wrapper"], [1, "title-flex-display"], ["textField", "Text", "themeColor", "info", 1, "custom-dropdwn", 3, "data"], [1, "search"], ["type", "text", "placeholder", "Search", "size", "large", "rounded", "large", "fillMode", "solid", 3, "keyup", "clearButton"], ["kendoTextBoxPrefixTemplate", "", 3, "showSeparator"], [1, "filter-wrapper"], ["kendobutton", "", 1, "cursor-pointer", "grid-btn", "btn-cmn", 3, "click"], [1, "fa-solid", "fa-bars"], ["kendobutton", "", 1, "cursor-pointer", "active", "btn-cmn", 3, "click"], [1, "fa-solid", "fa-table-cells-large"], [1, "main-area"], ["type", "converging-spinner"], ["class", "dialog-wrapper", "title", "Confirm", 3, "minWidth", "width", "close", 4, "ngIf"], ["class", "dialog-wrapper", 3, "title", "minWidth", "width", "close", 4, "ngIf"], ["Mode", "complete"], ["title", "Parent", 1, "title-folder", "fa-solid", "fa-arrow-left", "fa-2xl", "breadcrumb-icon", 3, "click"], ["title", "Folder", 1, "title-folder", "fa-regular", "fa-folder", "fa-2xl"], ["textField", "Text", "themeColor", "info", 1, "custom-dropdwn", 3, "itemClick", "data"], [1, "fa-solid", "fa-plus"], [1, "fa-solid", "fa-magnifying-glass", "margin-left-small"], [3, "kendoGridBinding"], [1, "card-list", "k-d-flex", "k-flex-row", "k-h-full", "k-flex-wrap"], [3, "cellClick", "kendoGridBinding"], ["field", "Name", "title", "Name"], ["field", "Description", "title", "Description"], ["field", "Type", "title", "Type"], ["title", ""], ["kendoGridCellTemplate", ""], [1, "grid-wrapper"], [1, "list-btn"], ["title", "Remove Link to Shared Item", 1, "list-btn"], [1, "list-btn", 3, "click"], [1, "fa-regular", "fa-pen-to-square"], [1, "fa-regular", "fa-trash-can"], ["title", "Remove Link to Shared Item", 1, "list-btn", 3, "click"], [1, "fa-solid", "fa-link-slash", 2, "color", "rgb(19, 92, 201)"], [1, "card-wrapper", "cursor-pointer"], [1, "list-item-icon"], ["title", "Edit Item", 1, "list-btn"], ["title", "Delete Item", 1, "list-btn"], [3, "click"], [2, "color", "rgb(19, 92, 201)", 3, "title", "ngClass"], [3, "title", "ngClass"], [1, "padding-top-small"], ["kendoCardTitle", ""], ["kendoCardSubtitle", ""], ["title", "Edit Item", 1, "list-btn", 3, "click"], ["title", "Delete Item", 1, "list-btn", 3, "click"], ["title", "Confirm", 1, "dialog-wrapper", 3, "close", "minWidth", "width"], [1, "k-m-7.5", "k-text-center"], [1, "popup-actions-btn"], ["kendoButton", "", "themeColor", "info", 1, "cancel-btn", 3, "click"], ["kendoButton", "", "fillMode", "outline", "themeColor", "info", 1, "yes-btn", 3, "click"], [1, "dialog-wrapper", 3, "close", "title", "minWidth", "width"], ["text", "Name"], ["placeholder", "Enter a folder name", 3, "valueChange", "value"], ["text", "Description"], ["placeholder", "Enter a Description", 3, "valueChange", "value"], ["kendoButton", "", "themeColor", "info", 1, "cancel-btn"]], template: function ResourceBrowserComponent_Template(rf, ctx) { if (rf & 1) {
774
805
  const _r1 = i0.ɵɵgetCurrentView();
775
806
  i0.ɵɵelementStart(0, "div", 2)(1, "div", 3)(2, "div", 4)(3, "div", 5);
776
807
  i0.ɵɵtemplate(4, ResourceBrowserComponent_Conditional_4_Template, 2, 0);
777
808
  i0.ɵɵelementStart(5, "h4");
778
809
  i0.ɵɵtext(6);
779
810
  i0.ɵɵelementEnd()();
780
- i0.ɵɵelementStart(7, "kendo-dropdownbutton", 6);
781
- i0.ɵɵlistener("itemClick", function ResourceBrowserComponent_Template_kendo_dropdownbutton_itemClick_7_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onDropdownItemClick($event)); });
782
- i0.ɵɵelement(8, "span", 7);
783
- i0.ɵɵtext(9, " Create New ");
784
- i0.ɵɵelementEnd()();
785
- i0.ɵɵelementStart(10, "div", 4)(11, "div", 8)(12, "kendo-textbox", 9, 0);
786
- i0.ɵɵlistener("keyup", function ResourceBrowserComponent_Template_kendo_textbox_keyup_12_listener() { i0.ɵɵrestoreView(_r1); const searchInput_r4 = i0.ɵɵreference(13); return i0.ɵɵresetView(ctx.onKeyup(searchInput_r4.value)); });
787
- i0.ɵɵtemplate(14, ResourceBrowserComponent_ng_template_14_Template, 1, 0, "ng-template", 10);
811
+ i0.ɵɵtemplate(7, ResourceBrowserComponent_Conditional_7_Template, 3, 1, "kendo-dropdownbutton", 6);
812
+ i0.ɵɵelementEnd();
813
+ i0.ɵɵelementStart(8, "div", 4)(9, "div", 7)(10, "kendo-textbox", 8, 0);
814
+ i0.ɵɵlistener("keyup", function ResourceBrowserComponent_Template_kendo_textbox_keyup_10_listener() { i0.ɵɵrestoreView(_r1); const searchInput_r5 = i0.ɵɵreference(11); return i0.ɵɵresetView(ctx.onKeyup(searchInput_r5.value)); });
815
+ i0.ɵɵtemplate(12, ResourceBrowserComponent_ng_template_12_Template, 1, 0, "ng-template", 9);
788
816
  i0.ɵɵelementEnd()();
789
- i0.ɵɵelementStart(15, "div", 11)(16, "button", 12);
790
- i0.ɵɵlistener("click", function ResourceBrowserComponent_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.changeViewMode("grid")); });
791
- i0.ɵɵelement(17, "span", 13);
817
+ i0.ɵɵelementStart(13, "div", 10)(14, "button", 11);
818
+ i0.ɵɵlistener("click", function ResourceBrowserComponent_Template_button_click_14_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.changeViewMode("List")); });
819
+ i0.ɵɵelement(15, "span", 12);
792
820
  i0.ɵɵelementEnd();
793
- i0.ɵɵelementStart(18, "button", 14);
794
- i0.ɵɵlistener("click", function ResourceBrowserComponent_Template_button_click_18_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.changeViewMode("list")); });
795
- i0.ɵɵelement(19, "span", 15);
821
+ i0.ɵɵelementStart(16, "button", 13);
822
+ i0.ɵɵlistener("click", function ResourceBrowserComponent_Template_button_click_16_listener() { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.changeViewMode("Tile")); });
823
+ i0.ɵɵelement(17, "span", 14);
796
824
  i0.ɵɵelementEnd()()();
797
- i0.ɵɵelementStart(20, "div", 16);
798
- i0.ɵɵtemplate(21, ResourceBrowserComponent_Conditional_21_Template, 1, 0, "kendo-loader", 17)(22, ResourceBrowserComponent_Conditional_22_Template, 2, 1);
825
+ i0.ɵɵelementStart(18, "div", 15);
826
+ i0.ɵɵtemplate(19, ResourceBrowserComponent_Conditional_19_Template, 1, 0, "kendo-loader", 16)(20, ResourceBrowserComponent_Conditional_20_Template, 2, 1);
799
827
  i0.ɵɵelementEnd()();
800
- i0.ɵɵtemplate(23, ResourceBrowserComponent_kendo_dialog_23_Template, 10, 4, "kendo-dialog", 18)(24, ResourceBrowserComponent_kendo_dialog_24_Template, 8, 2, "kendo-dialog", 19);
801
- i0.ɵɵelement(25, "mj-entity-form-dialog", 20, 1);
828
+ i0.ɵɵtemplate(21, ResourceBrowserComponent_kendo_dialog_21_Template, 10, 4, "kendo-dialog", 17)(22, ResourceBrowserComponent_kendo_dialog_22_Template, 13, 6, "kendo-dialog", 18);
829
+ i0.ɵɵelement(23, "mj-entity-form-dialog", 19, 1);
802
830
  i0.ɵɵelementEnd();
803
831
  } if (rf & 2) {
804
832
  i0.ɵɵadvance(4);
@@ -806,26 +834,30 @@ ResourceBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Re
806
834
  i0.ɵɵadvance(2);
807
835
  i0.ɵɵtextInterpolate(ctx.Title);
808
836
  i0.ɵɵadvance();
809
- i0.ɵɵproperty("data", ctx.dropdownOptions);
810
- i0.ɵɵadvance(5);
837
+ i0.ɵɵconditional(ctx.ItemOptions.length > 0 ? 7 : -1);
838
+ i0.ɵɵadvance(3);
811
839
  i0.ɵɵproperty("clearButton", true);
812
840
  i0.ɵɵadvance(2);
813
841
  i0.ɵɵproperty("showSeparator", true);
814
842
  i0.ɵɵadvance(7);
815
- i0.ɵɵconditional(ctx.IsLoading ? 21 : 22);
843
+ i0.ɵɵconditional(ctx.IsLoading ? 19 : 20);
816
844
  i0.ɵɵadvance(2);
817
845
  i0.ɵɵproperty("ngIf", ctx.deleteDialogOpened);
818
846
  i0.ɵɵadvance();
819
- i0.ɵɵproperty("ngIf", ctx.createFolderDialogOpened);
820
- } }, dependencies: [i2.NgClass, i2.NgIf, i3.GridComponent, i3.DataBindingDirective, i3.ColumnComponent, i3.CellTemplateDirective, i4.DialogComponent, i4.DialogActionsComponent, i5.LoaderComponent, i6.ButtonComponent, i6.DropDownButtonComponent, i7.TextBoxComponent, i7.TextBoxPrefixTemplateDirective, i8.CardComponent, i8.CardBodyComponent, i8.CardTitleDirective, i8.CardSubtitleDirective, i9.EntityFormDialogComponent], styles: [".card-header-entity .title-wrap h1 {\n margin: 0 !important;\n font-size: 36px !important;\n line-height: 42px !important;\n color: var(--black) !important;\n}\n .card-header-entity .add-item .k-button {\n border: 1px solid var(--border-blue) !important;\n background: var(--white-color) !important;\n color: var(--border-blue);\n font-weight: 500 ;\n font-size: 16px ;\n border-radius: 10px;\n line-height: 34px;\n}\n .card-header-entity .add-item .k-button:hover {\n background: var(--border-blue) !important;\n color: var(--white-color);\n}\n .card-header-entity .add-item .k-button:hover .k-button-text svg path {\n fill: var(--white-color) !important;\n}\n .title-wrapper[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 0;\n border-bottom: 1px solid var(--med-gray);\n}\n .title-wrapper[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n }\n .main-fav-wrapper[_ngcontent-%COMP%] {\n background: #fff;\n padding: 20px;\n }\n .filter-wrapper[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-start;\n gap: 14px;\n align-items: center;\n}\n .title-wrapper[_ngcontent-%COMP%] .search[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n font-size: 16px;\n background: transparent;\n border: none;\n box-sizing: border-box;\n padding-left: 40px;\n\n }\n .title-wrapper[_ngcontent-%COMP%] .search[_ngcontent-%COMP%] {\n background: var(--light-shade);\n width: 360px;\n height: 44px;\n position: relative;\n border-radius: 10px;\n }\n .title-wrapper[_ngcontent-%COMP%] .search[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 12px;\n}\n .main-fav-wrapper .title-wrapper .k-dropdown-button .k-button {\n background: var(--border-blue);\n color: var(--white-color);\n font-size: 16px;\n border: none;\n padding: 8px 25px;\n border-radius: 10px;\n}\n .main-fav-wrapper .title-wrapper .k-dropdown-button .k-button .k-button-text, .card-header-entity .add-item .k-button .k-button-text {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.btn-cmn[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n min-width: 44px;\n background: transparent;\n border-radius: 8px;\n border: 1px solid var(--gray-color);\n}\n.btn-cmn.active[_ngcontent-%COMP%] {\n border: 1px solid var(--border-blue);\n}\n .main-fav-wrapper .title-wrapper .filter-wrapper .k-dropdown-button .k-button {\n border: 1px solid var(--gray-color);\n border-radius: 8px; padding: 10px 25px;\n background: var(--white-color);\n color: var(--sideNav);\n}\n .main-area .card-list .card-wrapper .k-card-body {\n padding: 16px !important;\n position: relative;\n}\n .main-fav-wrapper .main-area .card-list .card-wrapper .list-item-icon {\n position: absolute;\n display: flex;\n align-items: center;\n gap: 8px;\n top:12px;\n right: 12px;\n z-index: 9;\n}\n.grid-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n .main-fav-wrapper .main-area .card-list .card-wrapper .list-item-icon .common-btn, .list-btn[_ngcontent-%COMP%] {\n width: 38px;\n height: 38px;\n background: #000;\n min-width: 38px;\n border: 1px solid var(--gray-color);\n border-radius: 8px; \n display: flex;\n justify-content: center;\n align-items: center;\n background: transparent;\n cursor: pointer;\n}\n .main-fav-wrapper .main-area .card-list .card-wrapper .k-card-body .list-item-icon:hover, .list-btn[_ngcontent-%COMP%]:hover {\n border: 1px solid var(--border-active);\n}\n\n\n .main-area .card-list .card-wrapper:hover {\n box-shadow: 0px 0px 20px 0px rgba(60, 73, 99, 0.2);\n border: 1px solid var(--border-active);\n}\n .main-area .card-list .card-wrapper:hover .k-card-body .view-card-content-list h5 {\n color: var(--border-blue);\n}\n .main-area .card-list .card-wrapper .k-card-body .view-card-content-list p {\n color: var(--sideNav);\n font-size: 14px;\n line-height: 16px;\n height: auto;\n text-overflow: ellipsis;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n\n}\n .main-area .card-list .card-wrapper .k-card-body .view-card-content-list h5 {\n font-size: 18px;\n line-height: 21px;\n color: var(--text-darked);\n font-weight: 600;\n}\n.breadcrumb-wrap[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 0;\n}\n.breadcrumb-wrap[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 16px;\n line-height: 18px;\n font-weight: 400;\n color: var(--black);\n}\n .k-menu-popup {\n box-shadow: 0px 0px 20px 0px rgba(60, 73, 99, 0.2);\n border-radius: 10px;\n padding: 16px;\n}\n\n .k-menu-popup kendo-button-list ul li .k-menu-link {\n box-shadow: none !important;\n} \n .k-menu-popup kendo-button-list ul li .k-menu-link:active {\n background: transparent !important;\n}\n .k-menu-popup kendo-button-list ul li .k-menu-link .k-menu-link-text:hover {\n color: var(--primary-color);\n background: transparent !important;\n\n}\n .dialog-wrapper .popup-actions-btn button {\n flex: 1;\n}\n .dialog-wrapper .popup-actions-btn {\n display: flex;\n}\n .dialog-wrapper .popup-actions-btn .cancel-btn {\n background: var(--primary-color);\n color: var(--white-color);\n font-size: 16px;\n font-weight: 700;\n line-height: 34px;\n text-align: center;\n border-radius: 10px;\n border: 1px solid transparent;\n\n}\n .dialog-wrapper .popup-actions-btn .yes-btn {\n border:1px solid var(--primary-color);\n background: transparent;\n color: var(--primary-color);\n font-size: 16px;\n font-weight: 700;\n line-height: 34px;\n text-align: center;\n border-radius: 10px;\n box-shadow: none;\n}\n .dialog-wrapper .popup-actions-btn .yes-btn:focus {\n box-shadow: none !important;\n}\n .dialog-wrapper .k-window-title {\n font-size: 30px;\n font-weight: 500;\n line-height: 36px;\n text-align: left;\n color: var(--text-darked);\n}\n .dialog-wrapper p {\n font-size: 16px;\n font-weight: 500;\n line-height: 20px;\n text-align: left;\n color: var(--black);\n}\n\n.margin-left-small[_ngcontent-%COMP%] {\n margin-left: 10px;\n}\n\n.card-wrapper[_ngcontent-%COMP%] {\n min-width: 230px;\n height: 150px;\n min-height: 125px;\n}\n\n.padding-top-small[_ngcontent-%COMP%] {\n padding-top: 10px;\n}\n\n.cursor-pointer[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.title-folder[_ngcontent-%COMP%] {\n padding-right: 20px;\n margin: auto;\n}\n\n.title-flex-display[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: row;\n}\n\n.breadcrumb-icon[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n.breacrumb-icon[_ngcontent-%COMP%]:hover {\n color: var(--primary-color);\n}", ".main-area[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view[_ngcontent-%COMP%] {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n .list-view .k-listview-header, \n .list-view .k-listview-footer {\n border: none;\n}\n .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header[_ngcontent-%COMP%], \n.footer[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header[_ngcontent-%COMP%] {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header[_ngcontent-%COMP%] .head-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer[_ngcontent-%COMP%] {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container[_ngcontent-%COMP%] {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: var(--sideNav);\n}\n.card-wrapper[_ngcontent-%COMP%] {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper[_ngcontent-%COMP%] .k-card-body[_ngcontent-%COMP%] {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper[_ngcontent-%COMP%] .view-card[_ngcontent-%COMP%] {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card[_ngcontent-%COMP%] .btn-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container[_ngcontent-%COMP%] {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}"] });
847
+ i0.ɵɵproperty("ngIf", ctx.upsertFolderDialogVisible);
848
+ } }, dependencies: [i2.NgClass, i2.NgIf, i3.GridComponent, i3.DataBindingDirective, i3.ColumnComponent, i3.CellTemplateDirective, i4.DialogComponent, i4.DialogActionsComponent, i5.LoaderComponent, i6.ButtonComponent, i6.DropDownButtonComponent, i7.TextBoxComponent, i7.TextBoxPrefixTemplateDirective, i8.LabelComponent, i9.CardComponent, i9.CardBodyComponent, i9.CardTitleDirective, i9.CardSubtitleDirective, i10.EntityFormDialogComponent], styles: [".card-header-entity .title-wrap h1 {\n margin: 0 !important;\n font-size: 36px !important;\n line-height: 42px !important;\n color: var(--black) !important;\n}\n .card-header-entity .add-item .k-button {\n border: 1px solid var(--border-blue) !important;\n background: var(--white-color) !important;\n color: var(--border-blue);\n font-weight: 500 ;\n font-size: 16px ;\n border-radius: 10px;\n line-height: 34px;\n}\n .card-header-entity .add-item .k-button:hover {\n background: var(--border-blue) !important;\n color: var(--white-color);\n}\n .card-header-entity .add-item .k-button:hover .k-button-text svg path {\n fill: var(--white-color) !important;\n}\n .title-wrapper[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 0;\n border-bottom: 1px solid var(--med-gray);\n}\n .title-wrapper[_ngcontent-%COMP%] h4[_ngcontent-%COMP%] {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n }\n .main-fav-wrapper[_ngcontent-%COMP%] {\n background: #fff;\n padding: 20px;\n }\n .filter-wrapper[_ngcontent-%COMP%] {\n display: flex;\n justify-content: flex-start;\n gap: 14px;\n align-items: center;\n}\n .title-wrapper[_ngcontent-%COMP%] .search[_ngcontent-%COMP%] input[_ngcontent-%COMP%] {\n width: 100%;\n height: 100%;\n font-size: 16px;\n background: transparent;\n border: none;\n box-sizing: border-box;\n padding-left: 40px;\n\n }\n .title-wrapper[_ngcontent-%COMP%] .search[_ngcontent-%COMP%] {\n background: var(--light-shade);\n width: 360px;\n height: 44px;\n position: relative;\n border-radius: 10px;\n }\n .title-wrapper[_ngcontent-%COMP%] .search[_ngcontent-%COMP%] svg[_ngcontent-%COMP%] {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 12px;\n}\n .main-fav-wrapper .title-wrapper .k-dropdown-button .k-button {\n background: var(--border-blue);\n color: var(--white-color);\n font-size: 16px;\n border: none;\n padding: 8px 25px;\n border-radius: 10px;\n}\n .main-fav-wrapper .title-wrapper .k-dropdown-button .k-button .k-button-text, .card-header-entity .add-item .k-button .k-button-text {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.btn-cmn[_ngcontent-%COMP%] {\n width: 44px;\n height: 44px;\n min-width: 44px;\n background: transparent;\n border-radius: 8px;\n border: 1px solid var(--gray-color);\n}\n.btn-cmn.active[_ngcontent-%COMP%] {\n border: 1px solid var(--border-blue);\n}\n .main-fav-wrapper .title-wrapper .filter-wrapper .k-dropdown-button .k-button {\n border: 1px solid var(--gray-color);\n border-radius: 8px; padding: 10px 25px;\n background: var(--white-color);\n color: var(--sideNav);\n}\n .main-area .card-list .card-wrapper .k-card-body {\n padding: 16px !important;\n position: relative;\n}\n .main-fav-wrapper .main-area .card-list .card-wrapper .list-item-icon {\n position: absolute;\n display: flex;\n align-items: center;\n gap: 8px;\n top:12px;\n right: 12px;\n z-index: 9;\n}\n.grid-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n .main-fav-wrapper .main-area .card-list .card-wrapper .list-item-icon .common-btn, .list-btn[_ngcontent-%COMP%] {\n width: 38px;\n height: 38px;\n background: #000;\n min-width: 38px;\n border: 1px solid var(--gray-color);\n border-radius: 8px; \n display: flex;\n justify-content: center;\n align-items: center;\n background: transparent;\n cursor: pointer;\n}\n .main-fav-wrapper .main-area .card-list .card-wrapper .k-card-body .list-item-icon:hover, .list-btn[_ngcontent-%COMP%]:hover {\n border: 1px solid var(--border-active);\n}\n\n\n .main-area .card-list .card-wrapper:hover {\n box-shadow: 0px 0px 20px 0px rgba(60, 73, 99, 0.2);\n border: 1px solid var(--border-active);\n}\n .main-area .card-list .card-wrapper:hover .k-card-body .view-card-content-list h5 {\n color: var(--border-blue);\n}\n .main-area .card-list .card-wrapper .k-card-body .view-card-content-list p {\n color: var(--sideNav);\n font-size: 14px;\n line-height: 16px;\n height: auto;\n text-overflow: ellipsis;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n\n}\n .main-area .card-list .card-wrapper .k-card-body .view-card-content-list h5 {\n font-size: 18px;\n line-height: 21px;\n color: var(--text-darked);\n font-weight: 600;\n}\n.breadcrumb-wrap[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 0;\n}\n.breadcrumb-wrap[_ngcontent-%COMP%] span[_ngcontent-%COMP%] {\n font-size: 16px;\n line-height: 18px;\n font-weight: 400;\n color: var(--black);\n}\n .k-menu-popup {\n box-shadow: 0px 0px 20px 0px rgba(60, 73, 99, 0.2);\n border-radius: 10px;\n padding: 16px;\n}\n\n .k-menu-popup kendo-button-list ul li .k-menu-link {\n box-shadow: none !important;\n} \n .k-menu-popup kendo-button-list ul li .k-menu-link:active {\n background: transparent !important;\n}\n .k-menu-popup kendo-button-list ul li .k-menu-link .k-menu-link-text:hover {\n color: var(--primary-color);\n background: transparent !important;\n\n}\n .dialog-wrapper .popup-actions-btn button {\n flex: 1;\n}\n .dialog-wrapper .popup-actions-btn {\n display: flex;\n}\n .dialog-wrapper .popup-actions-btn .cancel-btn {\n background: var(--primary-color);\n color: var(--white-color);\n font-size: 16px;\n font-weight: 700;\n line-height: 34px;\n text-align: center;\n border-radius: 10px;\n border: 1px solid transparent;\n\n}\n .dialog-wrapper .popup-actions-btn .yes-btn {\n border:1px solid var(--primary-color);\n background: transparent;\n color: var(--primary-color);\n font-size: 16px;\n font-weight: 700;\n line-height: 34px;\n text-align: center;\n border-radius: 10px;\n box-shadow: none;\n}\n .dialog-wrapper .popup-actions-btn .yes-btn:focus {\n box-shadow: none !important;\n}\n .dialog-wrapper .k-window-title {\n font-size: 30px;\n font-weight: 500;\n line-height: 36px;\n text-align: left;\n color: var(--text-darked);\n}\n .dialog-wrapper p {\n font-size: 16px;\n font-weight: 500;\n line-height: 20px;\n text-align: left;\n color: var(--black);\n}\n\n.margin-left-small[_ngcontent-%COMP%] {\n margin-left: 10px;\n}\n\n.card-wrapper[_ngcontent-%COMP%] {\n min-width: 230px;\n height: 150px;\n min-height: 125px;\n}\n\n.padding-top-small[_ngcontent-%COMP%] {\n padding-top: 10px;\n}\n\n.cursor-pointer[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n\n.title-folder[_ngcontent-%COMP%] {\n padding-right: 20px;\n margin: auto;\n}\n\n.title-flex-display[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: row;\n}\n\n.breadcrumb-icon[_ngcontent-%COMP%] {\n cursor: pointer;\n}\n.breacrumb-icon[_ngcontent-%COMP%]:hover {\n color: var(--primary-color);\n}", ".main-area[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view[_ngcontent-%COMP%] {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n .list-view .k-listview-header, \n .list-view .k-listview-footer {\n border: none;\n}\n .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header[_ngcontent-%COMP%], \n.footer[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header[_ngcontent-%COMP%] {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header[_ngcontent-%COMP%] .head-tag[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header[_ngcontent-%COMP%] .count[_ngcontent-%COMP%] {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer[_ngcontent-%COMP%] {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container[_ngcontent-%COMP%] {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card[_ngcontent-%COMP%] .view-icon[_ngcontent-%COMP%] {\n color: var(--sideNav);\n}\n.card-wrapper[_ngcontent-%COMP%] {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper[_ngcontent-%COMP%] .k-card-body[_ngcontent-%COMP%] {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper[_ngcontent-%COMP%] .view-card[_ngcontent-%COMP%] {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card[_ngcontent-%COMP%] .btn-wrapper[_ngcontent-%COMP%] {\n display: flex;\n align-items: center;\n}\n\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] h5[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body[_ngcontent-%COMP%] .view-card-content[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container[_ngcontent-%COMP%] {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity[_ngcontent-%COMP%] {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] h1[_ngcontent-%COMP%] {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity[_ngcontent-%COMP%] .title-wrap[_ngcontent-%COMP%] p[_ngcontent-%COMP%] {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area[_ngcontent-%COMP%] .card-list[_ngcontent-%COMP%] {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}"] });
821
849
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ResourceBrowserComponent, [{
822
850
  type: Component,
823
- args: [{ selector: 'mj-resource-browser', template: "\n<div class=\"generic-browser-list-container\">\n <div class=\"main-fav-wrapper\">\n <div class=\"title-wrapper\">\n <div class=\"title-flex-display\">\n @if(CurrentCategoryID){\n <span title=\"Parent\" class=\"title-folder fa-solid fa-arrow-left fa-2xl breadcrumb-icon\" (click)=\"goToParent()\"></span> \n <span title=\"Folder\" class=\"title-folder fa-regular fa-folder fa-2xl\"></span>\n }\n <h4>{{Title}}</h4>\n </div>\n <kendo-dropdownbutton class=\"custom-dropdwn\" (itemClick)=\"onDropdownItemClick($event)\" [data]=\"dropdownOptions\" themeColor=\"info\">\n <span class=\"fa-solid fa-plus\"></span>\n Create New\n </kendo-dropdownbutton>\n </div>\n <div class=\"title-wrapper\">\n <div class=\"search\">\n <kendo-textbox \n type=\"text\" \n #searchInput \n placeholder=\"Search\" \n (keyup)=\"onKeyup(searchInput.value)\"\n [clearButton]=\"true\"\n size=\"large\"\n rounded=\"large\"\n fillMode=\"solid\"\n >\n <ng-template kendoTextBoxPrefixTemplate [showSeparator]=\"true\">\n <span class=\"fa-solid fa-magnifying-glass margin-left-small\"></span>\n </ng-template>\n </kendo-textbox>\n </div>\n <div class=\"filter-wrapper\">\n <!--\n <kendo-dropdownbutton [data]=\"data\" themeColor=\"primary\">\n Sort By Recents\n </kendo-dropdownbutton>\n -->\n <button kendobutton (click)=\"changeViewMode('grid')\" class=\"cursor-pointer grid-btn btn-cmn\">\n <span class=\"fa-solid fa-bars\"></span>\n </button>\n <button kendobutton (click)=\"changeViewMode('list')\" class=\"cursor-pointer active btn-cmn\">\n <span class=\"fa-solid fa-table-cells-large\"></span>\n </button>\n </div>\n </div>\n\n <div class=\"main-area\">\n @if (IsLoading) {\n <kendo-loader type=\"converging-spinner\"></kendo-loader>\n }\n @else {\n @if(DisplayMode === 'List'){\n <kendo-grid (cellClick)=\"onCellItemClicked($event)\" [kendoGridBinding]=\"Items\">\n <kendo-grid-column field=\"Name\" title=\"Name\"></kendo-grid-column>\n <kendo-grid-column field=\"Size\" title=\"Size\"></kendo-grid-column>\n <kendo-grid-column field=\"LastOpened\" title=\"Last Opened\"></kendo-grid-column>\n <kendo-grid-column field=\"ModifiedBy\" title=\"Modified By\"></kendo-grid-column>\n <kendo-grid-column title=\"\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <div class=\"grid-wrapper\">\n @if(EnableItemEdit){\n <button class=\"list-btn\" (click)=\"editItem(dataItem)\">\n <span class=\"fa-regular fa-pen-to-square\"></span>\n </button>\n }\n @if(EnableItemDelete) {\n <button class=\"list-btn\" (click)=\"deleteItem(dataItem)\">\n <span class=\"fa-regular fa-trash-can\"></span>\n </button> \n }\n @if(EnableRemoveLink) {\n <button (click)=\"unlinkItem(dataItem)\" class=\"list-btn\" title=\"Remove Link to Shared Item\" >\n <span class=\"fa-solid fa-link-slash\" style=\"color: rgb(19, 92, 201);\"></span>\n </button> \n }\n </div>\n </ng-template>\n </kendo-grid-column>\n </kendo-grid>\n }\n @else {\n <div class=\"card-list k-d-flex k-flex-row k-h-full k-flex-wrap\">\n @for(item of Items; track item) {\n <kendo-card class=\"card-wrapper cursor-pointer\">\n <div class=\"list-item-icon\">\n @if(EnableItemEdit && (!item.IsLink || item.LinkPermissionLevel === 'Owner' || item.LinkPermissionLevel === 'Edit')) {\n <button (click)=\"editItem(item)\" class=\"list-btn\" title=\"Edit Item\">\n <span class=\"fa-regular fa-pen-to-square\"></span>\n </button>\n }\n @if(EnableItemDelete && (!item.IsLink || item.LinkPermissionLevel === 'Owner') ) {\n <button (click)=\"deleteItem(item)\" class=\"list-btn\" title=\"Delete Item\">\n <span class=\"fa-regular fa-trash-can\"></span>\n </button> \n }\n @else if (EnableRemoveLink && item.IsLink) {\n <button (click)=\"unlinkItem(item)\" class=\"list-btn\" title=\"Remove Link to Shared Item\" >\n <span class=\"fa-solid fa-link-slash\" style=\"color: rgb(19, 92, 201);\"></span>\n </button> \n }\n </div>\n <kendo-card-body (click)=\"itemClick(item)\">\n @if(item.IsLink) {\n <i [title]=\"item.Name + '(Shared)'\" [ngClass]=\"getIconForResourceType(item)\" style=\"color: rgb(19, 92, 201);\"></i>\n }\n @else {\n <span [title]=\"item.Name\" [ngClass]=\"getIconForResourceType(item)\"></span>\n }\n <div class=\"padding-top-small\">\n <h5 kendoCardTitle>{{ item.Name }}</h5>\n <p kendoCardSubtitle>{{ item.Description }}</p>\n </div>\n </kendo-card-body>\n </kendo-card>\n }\n </div>\n }\n }\n </div>\n </div>\n\n <kendo-dialog \n [minWidth]=\"450\"\n [width]=\"650\"\n class=\"dialog-wrapper\" \n title=\"Confirm\" \n *ngIf=\"deleteDialogOpened\" \n (close)=\"onConfirmDeleteItem(false)\">\n <p class=\"k-m-7.5 k-text-center\">\n Are you sure you want to {{(selectedItem?.IsLink && selectedItem?.LinkPermissionLevel === 'Owner') || !selectedItem?.IsLink ? 'delete' : 'unlink'}} <b>{{selectedItem?.Name}}?</b>\n </p>\n <kendo-dialog-actions class=\"popup-actions-btn\">\n <button class=\"cancel-btn\" (click)=\"onConfirmDeleteItem(true)\" kendoButton themeColor=\"info\">\n Yes\n </button>\n <button class=\"yes-btn\" (click)=\"onConfirmDeleteItem(false)\" kendoButton fillMode=\"outline\" themeColor=\"info\">\n No \n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n\n <kendo-dialog \n title=\"Create new folder\" \n *ngIf=\"createFolderDialogOpened\" \n (close)=\"toggleCreateFolderView()\"\n [minWidth]=\"250\"\n [width]=\"450\"\n class=\"dialog-wrapper\"\n >\n <div class=\"search\">\n <kendo-textbox placeholder=\"Enter a folder name\" (valueChange)=\"onCreateFolderKeyup($event)\"/>\n </div>\n <kendo-dialog-actions class=\"popup-actions-btn\">\n <button class=\"cancel-btn\" (click)=\"createFolder()\" kendoButton themeColor=\"info\">\n Create\n </button>\n <button class=\"yes-btn\" (click)=\"toggleCreateFolderView()\" kendoButton fillMode=\"outline\" themeColor=\"info\">\n Cancel\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n <mj-entity-form-dialog\n #entityFormDialog\n Mode=\"complete\"\n >\n </mj-entity-form-dialog>\n</div>\n", styles: ["::ng-deep .card-header-entity .title-wrap h1 {\n margin: 0 !important;\n font-size: 36px !important;\n line-height: 42px !important;\n color: var(--black) !important;\n}\n ::ng-deep .card-header-entity .add-item .k-button {\n border: 1px solid var(--border-blue) !important;\n background: var(--white-color) !important;\n color: var(--border-blue);\n font-weight: 500 ;\n font-size: 16px ;\n border-radius: 10px;\n line-height: 34px;\n}\n::ng-deep .card-header-entity .add-item .k-button:hover {\n background: var(--border-blue) !important;\n color: var(--white-color);\n}\n::ng-deep .card-header-entity .add-item .k-button:hover .k-button-text svg path {\n fill: var(--white-color) !important;\n}\n .title-wrapper {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 0;\n border-bottom: 1px solid var(--med-gray);\n}\n .title-wrapper h4 {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n }\n .main-fav-wrapper {\n background: #fff;\n padding: 20px;\n }\n .filter-wrapper {\n display: flex;\n justify-content: flex-start;\n gap: 14px;\n align-items: center;\n}\n .title-wrapper .search input {\n width: 100%;\n height: 100%;\n font-size: 16px;\n background: transparent;\n border: none;\n box-sizing: border-box;\n padding-left: 40px;\n\n }\n .title-wrapper .search {\n background: var(--light-shade);\n width: 360px;\n height: 44px;\n position: relative;\n border-radius: 10px;\n }\n .title-wrapper .search svg {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 12px;\n}\n::ng-deep .main-fav-wrapper .title-wrapper .k-dropdown-button .k-button {\n background: var(--border-blue);\n color: var(--white-color);\n font-size: 16px;\n border: none;\n padding: 8px 25px;\n border-radius: 10px;\n}\n::ng-deep .main-fav-wrapper .title-wrapper .k-dropdown-button .k-button .k-button-text, ::ng-deep .card-header-entity .add-item .k-button .k-button-text {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.btn-cmn {\n width: 44px;\n height: 44px;\n min-width: 44px;\n background: transparent;\n border-radius: 8px;\n border: 1px solid var(--gray-color);\n}\n.btn-cmn.active {\n border: 1px solid var(--border-blue);\n}\n::ng-deep .main-fav-wrapper .title-wrapper .filter-wrapper .k-dropdown-button .k-button {\n border: 1px solid var(--gray-color);\n border-radius: 8px; padding: 10px 25px;\n background: var(--white-color);\n color: var(--sideNav);\n}\n::ng-deep .main-area .card-list .card-wrapper .k-card-body {\n padding: 16px !important;\n position: relative;\n}\n::ng-deep .main-fav-wrapper .main-area .card-list .card-wrapper .list-item-icon {\n position: absolute;\n display: flex;\n align-items: center;\n gap: 8px;\n top:12px;\n right: 12px;\n z-index: 9;\n}\n.grid-wrapper {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n::ng-deep .main-fav-wrapper .main-area .card-list .card-wrapper .list-item-icon .common-btn, .list-btn {\n width: 38px;\n height: 38px;\n background: #000;\n min-width: 38px;\n border: 1px solid var(--gray-color);\n border-radius: 8px; \n display: flex;\n justify-content: center;\n align-items: center;\n background: transparent;\n cursor: pointer;\n}\n::ng-deep .main-fav-wrapper .main-area .card-list .card-wrapper .k-card-body .list-item-icon:hover, .list-btn:hover {\n border: 1px solid var(--border-active);\n}\n\n\n::ng-deep .main-area .card-list .card-wrapper:hover {\n box-shadow: 0px 0px 20px 0px rgba(60, 73, 99, 0.2);\n border: 1px solid var(--border-active);\n}\n::ng-deep .main-area .card-list .card-wrapper:hover .k-card-body .view-card-content-list h5 {\n color: var(--border-blue);\n}\n::ng-deep .main-area .card-list .card-wrapper .k-card-body .view-card-content-list p {\n color: var(--sideNav);\n font-size: 14px;\n line-height: 16px;\n height: auto;\n text-overflow: ellipsis;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n\n}\n::ng-deep .main-area .card-list .card-wrapper .k-card-body .view-card-content-list h5 {\n font-size: 18px;\n line-height: 21px;\n color: var(--text-darked);\n font-weight: 600;\n}\n.breadcrumb-wrap {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 0;\n}\n.breadcrumb-wrap span {\n font-size: 16px;\n line-height: 18px;\n font-weight: 400;\n color: var(--black);\n}\n::ng-deep .k-menu-popup {\n box-shadow: 0px 0px 20px 0px rgba(60, 73, 99, 0.2);\n border-radius: 10px;\n padding: 16px;\n}\n\n::ng-deep .k-menu-popup kendo-button-list ul li .k-menu-link {\n box-shadow: none !important;\n} \n::ng-deep .k-menu-popup kendo-button-list ul li .k-menu-link:active {\n background: transparent !important;\n}\n::ng-deep .k-menu-popup kendo-button-list ul li .k-menu-link .k-menu-link-text:hover {\n color: var(--primary-color);\n background: transparent !important;\n\n}\n::ng-deep .dialog-wrapper .popup-actions-btn button {\n flex: 1;\n}\n::ng-deep .dialog-wrapper .popup-actions-btn {\n display: flex;\n}\n::ng-deep .dialog-wrapper .popup-actions-btn .cancel-btn {\n background: var(--primary-color);\n color: var(--white-color);\n font-size: 16px;\n font-weight: 700;\n line-height: 34px;\n text-align: center;\n border-radius: 10px;\n border: 1px solid transparent;\n\n}\n::ng-deep .dialog-wrapper .popup-actions-btn .yes-btn {\n border:1px solid var(--primary-color);\n background: transparent;\n color: var(--primary-color);\n font-size: 16px;\n font-weight: 700;\n line-height: 34px;\n text-align: center;\n border-radius: 10px;\n box-shadow: none;\n}\n::ng-deep .dialog-wrapper .popup-actions-btn .yes-btn:focus {\n box-shadow: none !important;\n}\n::ng-deep .dialog-wrapper .k-window-title {\n font-size: 30px;\n font-weight: 500;\n line-height: 36px;\n text-align: left;\n color: var(--text-darked);\n}\n::ng-deep .dialog-wrapper p {\n font-size: 16px;\n font-weight: 500;\n line-height: 20px;\n text-align: left;\n color: var(--black);\n}\n\n.margin-left-small {\n margin-left: 10px;\n}\n\n.card-wrapper {\n min-width: 230px;\n height: 150px;\n min-height: 125px;\n}\n\n.padding-top-small {\n padding-top: 10px;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.title-folder {\n padding-right: 20px;\n margin: auto;\n}\n\n.title-flex-display {\n display: flex;\n flex-direction: row;\n}\n\n.breadcrumb-icon {\n cursor: pointer;\n}\n.breacrumb-icon:hover {\n color: var(--primary-color);\n}", "\n.main-area {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n::ng-deep .list-view .k-listview-header, \n::ng-deep .list-view .k-listview-footer {\n border: none;\n}\n::ng-deep .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header,\n.footer {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header .head-tag {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header .count {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity .title-wrap h1 {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity .title-wrap {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity .title-wrap p {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card .view-icon {\n color: var(--sideNav);\n}\n.card-wrapper {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper .k-card-body {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper .view-card {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card .btn-wrapper {\n display: flex;\n align-items: center;\n}\n\n.k-card-body .view-card-content h5 {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body .view-card-content p {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity .title-wrap h1 {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity .title-wrap {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity .title-wrap p {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area .card-list {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}\n"] }]
851
+ args: [{ selector: 'mj-resource-browser', template: "\n<div class=\"generic-browser-list-container\">\n <div class=\"main-fav-wrapper\">\n <div class=\"title-wrapper\">\n <div class=\"title-flex-display\">\n @if(CurrentCategoryID){\n <span title=\"Parent\" class=\"title-folder fa-solid fa-arrow-left fa-2xl breadcrumb-icon\" (click)=\"goToParent()\"></span> \n <span title=\"Folder\" class=\"title-folder fa-regular fa-folder fa-2xl\"></span>\n }\n <h4>{{Title}}</h4>\n </div>\n @if(ItemOptions.length > 0){\n <kendo-dropdownbutton \n class=\"custom-dropdwn\" \n (itemClick)=\"onDropdownItemClick($event)\" \n [data]=\"ItemOptions\" \n textField=\"Text\"\n themeColor=\"info\">\n <span class=\"fa-solid fa-plus\"></span>\n Create New\n </kendo-dropdownbutton> \n }\n </div>\n <div class=\"title-wrapper\">\n <div class=\"search\">\n <kendo-textbox \n type=\"text\" \n #searchInput \n placeholder=\"Search\" \n (keyup)=\"onKeyup(searchInput.value)\"\n [clearButton]=\"true\"\n size=\"large\"\n rounded=\"large\"\n fillMode=\"solid\"\n >\n <ng-template kendoTextBoxPrefixTemplate [showSeparator]=\"true\">\n <span class=\"fa-solid fa-magnifying-glass margin-left-small\"></span>\n </ng-template>\n </kendo-textbox>\n </div>\n <div class=\"filter-wrapper\">\n <!--\n <kendo-dropdownbutton [data]=\"data\" themeColor=\"primary\">\n Sort By Recents\n </kendo-dropdownbutton>\n -->\n <button kendobutton (click)=\"changeViewMode('List')\" class=\"cursor-pointer grid-btn btn-cmn\">\n <span class=\"fa-solid fa-bars\"></span>\n </button>\n <button kendobutton (click)=\"changeViewMode('Tile')\" class=\"cursor-pointer active btn-cmn\">\n <span class=\"fa-solid fa-table-cells-large\"></span>\n </button>\n </div>\n </div>\n\n <div class=\"main-area\">\n @if (IsLoading) {\n <kendo-loader type=\"converging-spinner\"></kendo-loader>\n }\n @else {\n @if(DisplayMode === 'List'){\n <kendo-grid (cellClick)=\"onCellItemClicked($event)\" [kendoGridBinding]=\"Items\">\n <kendo-grid-column field=\"Name\" title=\"Name\"></kendo-grid-column>\n <kendo-grid-column field=\"Description\" title=\"Description\"></kendo-grid-column>\n <kendo-grid-column field=\"Type\" title=\"Type\"></kendo-grid-column>\n <kendo-grid-column title=\"\">\n <ng-template kendoGridCellTemplate let-dataItem>\n <div class=\"grid-wrapper\">\n @if(EnableItemEdit && (!dataItem.IsLink || dataItem.LinkPermissionLevel === 'Owner' || dataItem.LinkPermissionLevel === 'Edit')) {\n <button class=\"list-btn\" (click)=\"editItem(dataItem)\">\n <span class=\"fa-regular fa-pen-to-square\"></span>\n </button>\n }\n @if(EnableItemDelete && (!dataItem.IsLike || dataItem.LinkPermissionLevel === 'Owner')) {\n <button class=\"list-btn\" (click)=\"deleteItem(dataItem)\">\n <span class=\"fa-regular fa-trash-can\"></span>\n </button> \n }\n @if(EnableRemoveLink && dataItem.IsLink) {\n <button (click)=\"unlinkItem(dataItem)\" class=\"list-btn\" title=\"Remove Link to Shared Item\" >\n <span class=\"fa-solid fa-link-slash\" style=\"color: rgb(19, 92, 201);\"></span>\n </button> \n }\n </div>\n </ng-template>\n </kendo-grid-column>\n </kendo-grid>\n }\n @else {\n <div class=\"card-list k-d-flex k-flex-row k-h-full k-flex-wrap\">\n @for(item of Items; track item) {\n <kendo-card class=\"card-wrapper cursor-pointer\">\n <div class=\"list-item-icon\">\n @if(EnableItemEdit && (!item.IsLink || item.LinkPermissionLevel === 'Owner' || item.LinkPermissionLevel === 'Edit')) {\n <button (click)=\"editItem(item)\" class=\"list-btn\" title=\"Edit Item\">\n <span class=\"fa-regular fa-pen-to-square\"></span>\n </button>\n }\n @if(EnableItemDelete && (!item.IsLink || item.LinkPermissionLevel === 'Owner') ) {\n <button (click)=\"deleteItem(item)\" class=\"list-btn\" title=\"Delete Item\">\n <span class=\"fa-regular fa-trash-can\"></span>\n </button> \n }\n @else if (EnableRemoveLink && item.IsLink) {\n <button (click)=\"unlinkItem(item)\" class=\"list-btn\" title=\"Remove Link to Shared Item\" >\n <span class=\"fa-solid fa-link-slash\" style=\"color: rgb(19, 92, 201);\"></span>\n </button> \n }\n </div>\n <kendo-card-body (click)=\"itemClick(item)\">\n @if(item.IsLink) {\n <i [title]=\"item.Name + '(Shared)'\" [ngClass]=\"getIconForResourceType(item)\" style=\"color: rgb(19, 92, 201);\"></i>\n }\n @else {\n <span [title]=\"item.Name\" [ngClass]=\"getIconForResourceType(item)\"></span>\n }\n <div class=\"padding-top-small\">\n <h5 kendoCardTitle>{{ item.Name }}</h5>\n <p kendoCardSubtitle>{{ item.Description }}</p>\n </div>\n </kendo-card-body>\n </kendo-card>\n }\n </div>\n }\n }\n </div>\n </div>\n\n <kendo-dialog \n [minWidth]=\"450\"\n [width]=\"650\"\n class=\"dialog-wrapper\" \n title=\"Confirm\" \n *ngIf=\"deleteDialogOpened\" \n (close)=\"onConfirmDeleteItem(false)\">\n <p class=\"k-m-7.5 k-text-center\">\n Are you sure you want to {{(selectedItem?.IsLink && selectedItem?.LinkPermissionLevel === 'Owner') || !selectedItem?.IsLink ? 'delete' : 'unlink'}} <b>{{selectedItem?.Name}}?</b>\n </p>\n <kendo-dialog-actions class=\"popup-actions-btn\">\n <button class=\"cancel-btn\" (click)=\"onConfirmDeleteItem(true)\" kendoButton themeColor=\"info\">\n Yes\n </button>\n <button class=\"yes-btn\" (click)=\"onConfirmDeleteItem(false)\" kendoButton fillMode=\"outline\" themeColor=\"info\">\n No \n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n\n <kendo-dialog \n [title]=\"selectedFolder ? 'Edit Folder' : 'Create new folder'\" \n *ngIf=\"upsertFolderDialogVisible\" \n (close)=\"toggleUpsertFolderView(false, false)\"\n [minWidth]=\"250\"\n [width]=\"450\"\n class=\"dialog-wrapper\"\n >\n <div class=\"search\">\n <kendo-label text=\"Name\">\n <kendo-textbox [value]=\"upsertNewFolderName\" placeholder=\"Enter a folder name\" (valueChange)=\"onUpsertFolderNameKeyup($event)\"/>\n </kendo-label>\n </div>\n <br>\n <div class=\"search\">\n <kendo-label text=\"Description\">\n <kendo-textbox [value]=\"upsertNewFolderDescription\" placeholder=\"Enter a Description\" (valueChange)=\"onUpsertFolderDescriptionKeyup($event)\"/>\n </kendo-label>\n </div>\n <kendo-dialog-actions class=\"popup-actions-btn\">\n @if(selectedFolder){\n <button class=\"cancel-btn\" (click)=\"updateFolder()\" kendoButton themeColor=\"info\">\n Update\n </button>\n }\n @else {\n <button class=\"cancel-btn\" (click)=\"createFolder()\" kendoButton themeColor=\"info\">\n Create\n </button>\n }\n <button class=\"yes-btn\" (click)=\"toggleUpsertFolderView(false, false)\" kendoButton fillMode=\"outline\" themeColor=\"info\">\n Cancel\n </button>\n </kendo-dialog-actions>\n </kendo-dialog>\n <mj-entity-form-dialog\n #entityFormDialog\n Mode=\"complete\"\n >\n </mj-entity-form-dialog>\n</div>\n", styles: ["::ng-deep .card-header-entity .title-wrap h1 {\n margin: 0 !important;\n font-size: 36px !important;\n line-height: 42px !important;\n color: var(--black) !important;\n}\n ::ng-deep .card-header-entity .add-item .k-button {\n border: 1px solid var(--border-blue) !important;\n background: var(--white-color) !important;\n color: var(--border-blue);\n font-weight: 500 ;\n font-size: 16px ;\n border-radius: 10px;\n line-height: 34px;\n}\n::ng-deep .card-header-entity .add-item .k-button:hover {\n background: var(--border-blue) !important;\n color: var(--white-color);\n}\n::ng-deep .card-header-entity .add-item .k-button:hover .k-button-text svg path {\n fill: var(--white-color) !important;\n}\n .title-wrapper {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 14px 0;\n border-bottom: 1px solid var(--med-gray);\n}\n .title-wrapper h4 {\n margin: 0;\n font-size: 24px;\n line-height: 28px;\n }\n .main-fav-wrapper {\n background: #fff;\n padding: 20px;\n }\n .filter-wrapper {\n display: flex;\n justify-content: flex-start;\n gap: 14px;\n align-items: center;\n}\n .title-wrapper .search input {\n width: 100%;\n height: 100%;\n font-size: 16px;\n background: transparent;\n border: none;\n box-sizing: border-box;\n padding-left: 40px;\n\n }\n .title-wrapper .search {\n background: var(--light-shade);\n width: 360px;\n height: 44px;\n position: relative;\n border-radius: 10px;\n }\n .title-wrapper .search svg {\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 12px;\n}\n::ng-deep .main-fav-wrapper .title-wrapper .k-dropdown-button .k-button {\n background: var(--border-blue);\n color: var(--white-color);\n font-size: 16px;\n border: none;\n padding: 8px 25px;\n border-radius: 10px;\n}\n::ng-deep .main-fav-wrapper .title-wrapper .k-dropdown-button .k-button .k-button-text, ::ng-deep .card-header-entity .add-item .k-button .k-button-text {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.btn-cmn {\n width: 44px;\n height: 44px;\n min-width: 44px;\n background: transparent;\n border-radius: 8px;\n border: 1px solid var(--gray-color);\n}\n.btn-cmn.active {\n border: 1px solid var(--border-blue);\n}\n::ng-deep .main-fav-wrapper .title-wrapper .filter-wrapper .k-dropdown-button .k-button {\n border: 1px solid var(--gray-color);\n border-radius: 8px; padding: 10px 25px;\n background: var(--white-color);\n color: var(--sideNav);\n}\n::ng-deep .main-area .card-list .card-wrapper .k-card-body {\n padding: 16px !important;\n position: relative;\n}\n::ng-deep .main-fav-wrapper .main-area .card-list .card-wrapper .list-item-icon {\n position: absolute;\n display: flex;\n align-items: center;\n gap: 8px;\n top:12px;\n right: 12px;\n z-index: 9;\n}\n.grid-wrapper {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n::ng-deep .main-fav-wrapper .main-area .card-list .card-wrapper .list-item-icon .common-btn, .list-btn {\n width: 38px;\n height: 38px;\n background: #000;\n min-width: 38px;\n border: 1px solid var(--gray-color);\n border-radius: 8px; \n display: flex;\n justify-content: center;\n align-items: center;\n background: transparent;\n cursor: pointer;\n}\n::ng-deep .main-fav-wrapper .main-area .card-list .card-wrapper .k-card-body .list-item-icon:hover, .list-btn:hover {\n border: 1px solid var(--border-active);\n}\n\n\n::ng-deep .main-area .card-list .card-wrapper:hover {\n box-shadow: 0px 0px 20px 0px rgba(60, 73, 99, 0.2);\n border: 1px solid var(--border-active);\n}\n::ng-deep .main-area .card-list .card-wrapper:hover .k-card-body .view-card-content-list h5 {\n color: var(--border-blue);\n}\n::ng-deep .main-area .card-list .card-wrapper .k-card-body .view-card-content-list p {\n color: var(--sideNav);\n font-size: 14px;\n line-height: 16px;\n height: auto;\n text-overflow: ellipsis;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n\n}\n::ng-deep .main-area .card-list .card-wrapper .k-card-body .view-card-content-list h5 {\n font-size: 18px;\n line-height: 21px;\n color: var(--text-darked);\n font-weight: 600;\n}\n.breadcrumb-wrap {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 0;\n}\n.breadcrumb-wrap span {\n font-size: 16px;\n line-height: 18px;\n font-weight: 400;\n color: var(--black);\n}\n::ng-deep .k-menu-popup {\n box-shadow: 0px 0px 20px 0px rgba(60, 73, 99, 0.2);\n border-radius: 10px;\n padding: 16px;\n}\n\n::ng-deep .k-menu-popup kendo-button-list ul li .k-menu-link {\n box-shadow: none !important;\n} \n::ng-deep .k-menu-popup kendo-button-list ul li .k-menu-link:active {\n background: transparent !important;\n}\n::ng-deep .k-menu-popup kendo-button-list ul li .k-menu-link .k-menu-link-text:hover {\n color: var(--primary-color);\n background: transparent !important;\n\n}\n::ng-deep .dialog-wrapper .popup-actions-btn button {\n flex: 1;\n}\n::ng-deep .dialog-wrapper .popup-actions-btn {\n display: flex;\n}\n::ng-deep .dialog-wrapper .popup-actions-btn .cancel-btn {\n background: var(--primary-color);\n color: var(--white-color);\n font-size: 16px;\n font-weight: 700;\n line-height: 34px;\n text-align: center;\n border-radius: 10px;\n border: 1px solid transparent;\n\n}\n::ng-deep .dialog-wrapper .popup-actions-btn .yes-btn {\n border:1px solid var(--primary-color);\n background: transparent;\n color: var(--primary-color);\n font-size: 16px;\n font-weight: 700;\n line-height: 34px;\n text-align: center;\n border-radius: 10px;\n box-shadow: none;\n}\n::ng-deep .dialog-wrapper .popup-actions-btn .yes-btn:focus {\n box-shadow: none !important;\n}\n::ng-deep .dialog-wrapper .k-window-title {\n font-size: 30px;\n font-weight: 500;\n line-height: 36px;\n text-align: left;\n color: var(--text-darked);\n}\n::ng-deep .dialog-wrapper p {\n font-size: 16px;\n font-weight: 500;\n line-height: 20px;\n text-align: left;\n color: var(--black);\n}\n\n.margin-left-small {\n margin-left: 10px;\n}\n\n.card-wrapper {\n min-width: 230px;\n height: 150px;\n min-height: 125px;\n}\n\n.padding-top-small {\n padding-top: 10px;\n}\n\n.cursor-pointer {\n cursor: pointer;\n}\n\n.title-folder {\n padding-right: 20px;\n margin: auto;\n}\n\n.title-flex-display {\n display: flex;\n flex-direction: row;\n}\n\n.breadcrumb-icon {\n cursor: pointer;\n}\n.breacrumb-icon:hover {\n color: var(--primary-color);\n}", "\n.main-area {\n display: flex;\n flex-direction: column;\n height: 100%;\n width: 100%;\n gap: 24px;\n padding: 24px 0;\n}\n.list-view {\n padding: 16px;\n min-width: 300px;\n border-radius: 4px;\n background: #FAFAFA;\n border: none;\n}\n::ng-deep .list-view .k-listview-header, \n::ng-deep .list-view .k-listview-footer {\n border: none;\n}\n::ng-deep .list-view .k-listview-content {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 4px;\n background: #fff;\n padding: 16px;\n}\n\n.header,\n.footer {\n color: #424242;\n font-size: 16px;\n height: auto;\n margin:0;\n}\n\n.header {\n color: #424242;\n margin-bottom: 16px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.header .head-tag {\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\nfont-size: 16px;\nfont-style: normal;\nfont-weight: 400;\nline-height: 20px;\n}\n\n.header .count {\n width: 24px;\n height: 24px;\n min-width: 24px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-size: 10px;\n background: rgba(0, 0, 0, 0.08);\n border-radius: 50%;\n}\n.footer {\n font-size: 14px;\n margin-top: 16px;\n}\n\n.list-item {\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 30px;\n cursor: pointer;\n margin: 4px;\n}\n.card-container {\n margin: 0;\n padding: 0;\n box-shadow: none;\n}\n.card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n.card-header-entity .title-wrap h1 {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity .title-wrap {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity .title-wrap p {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n\n\n\n\n \n.view-card .view-icon {\n color: var(--sideNav);\n}\n.card-wrapper {\n border: 1px solid rgba(0, 0, 0, 0.08);\n border-radius: 6px;\n width: 100% !important;\n}\n.card-wrapper .k-card-body {\n background: #fff;\n padding: 12px 20px;\n}\n.card-wrapper .view-card {\n overflow: auto;\n display: flex;\n justify-content: space-between;\n align-items: center;\n background: #fafafa;\n padding: 4px 15px;\n}\n.view-card .btn-wrapper {\n display: flex;\n align-items: center;\n}\n\n.k-card-body .view-card-content h5 {\n color: #424242;\n font-size: 16px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n margin-bottom: 0;\n letter-spacing: 0.18px;\n}\n.k-card-body .view-card-content p {\n color: #666;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n height: 48px;\n margin-bottom: 0;\n}\n.card-container {\n padding: 0;\n margin: 0;\n box-shadow: none;\n}\n.card-header-entity {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(0, 0, 0, 0.08);\n}\n\n.card-header-entity .title-wrap h1 {\n color: #424242;\n font-size: 28px;\n font-style: normal;\n font-weight: 300;\n line-height: 28px;\n margin-bottom: 15px;\n}\n.card-header-entity .title-wrap {\n display: flex;\n flex-direction: column;\n}\n.card-header-entity .title-wrap p {\n margin: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n color: #424242;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n}\n.main-area .card-list {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 20px;\n}\n"] }]
824
852
  }], () => [{ type: i1.SharedService }], { ResourceTypeName: [{
825
853
  type: Input,
826
854
  args: [{ required: true }]
827
855
  }], EnableCategories: [{
828
856
  type: Input
857
+ }], CategoryEntityID: [{
858
+ type: Input
859
+ }], CurrentCategoryID: [{
860
+ type: Input
829
861
  }], EnableItemEdit: [{
830
862
  type: Input
831
863
  }], EnableItemDelete: [{
@@ -840,8 +872,6 @@ ResourceBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Re
840
872
  type: Input
841
873
  }], NewItemOptions: [{
842
874
  type: Input
843
- }], CurrentCategoryID: [{
844
- type: Input
845
875
  }], DisplayMode: [{
846
876
  type: Input
847
877
  }], ResourceSelected: [{
@@ -850,6 +880,10 @@ ResourceBrowserComponent.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: Re
850
880
  type: Output
851
881
  }], DisplayModeChanged: [{
852
882
  type: Output
883
+ }], NavigateToParentEvent: [{
884
+ type: Output
885
+ }], EditItemEvent: [{
886
+ type: Output
853
887
  }] }); })();
854
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ResourceBrowserComponent, { className: "ResourceBrowserComponent", filePath: "src/lib/resource-browser/resource-browser.component.ts", lineNumber: 21 }); })();
888
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ResourceBrowserComponent, { className: "ResourceBrowserComponent", filePath: "src/lib/resource-browser/resource-browser.component.ts", lineNumber: 15 }); })();
855
889
  //# sourceMappingURL=resource-browser.component.js.map